feenox-1.1/0000755000175000017500000000000014773607300007647 500000000000000feenox-1.1/AUTHORS0000644000175000017500000000017014773607165010646 00000000000000Main author is Jeremy Theler. Contributions from Esteban Pellegrino Juan Pablo Gomez Omil Ramiro Vignolo Pablo Camusso feenox-1.1/README4hackers0000644000175000017500000004351414773607201012103 00000000000000FeenoX for Hackers - 1 Why - 2 How - 3 What - 3.1 Design - 3.2 Performance [1 Why]: #why [2 How]: #how [3 What]: #what [3.1 Design]: #design [3.2 Performance]: #performance Why Why is FeenoX different from other “similar” tools? To better illustrate FeenoX’s unfair advantage (in the entrepreneurial sense), let us first consider what the options are when we need to write a technical report, paper or document: ----------------------------------------------------------------------------- Feature Microsoft Google Markdown[1] (La)TeX Word Docs --------------------------- ----------- ---------- ------------- ------------ Aesthetics ❌ ❌ ✅ ✅ Convertibility (to other 😐 😐 ✅ 😐 formats) Traceability ❌ 😐 ✅ ✅ Mobile-friendliness ❌ ✅ ✅ ❌ Collaborativeness ❌ ✅ ✅ 😐 Licensing/openness ❌ ❌ ✅ ✅ Non-nerd friendliness ✅ ✅ 😐 ❌ ----------------------------------------------------------------------------- After analyzing the pros and cons of each alternative, at some point it should be evident that Markdown (plus friends) gives the best trade off. We can then perform a similar analysis for the options available in order to solve an engineering problem casted as a partial differential equation, say by using a finite-element formulation: ---------------------------------------------------------------------------- Feature Desktop Web FeenoX[2] Libraries GUIs frontends --------------------------- ----------- ----------- ----------- ------------ Flexibility ❌/😐 ❌/😐 ✅ ✅ Scalability ❌ 😐 ✅ ✅ Traceability ❌ 😐 ✅ ✅ Cloud-friendliness ❌ ✅ ✅ ✅ Collaborativeness ❌ ✅ ✅ 😐 Licensing/openness ✅/😐/❌ ❌ ✅ ✅ Non-nerd friendliness ✅ ✅ 😐 ❌ ---------------------------------------------------------------------------- Therefore, FeenoX is—in a certain sense—to desktop FEA programs like - Code_Aster with Salome-Meca, or - CalculiX with PrePoMax and to libraries like - MoFEM or - Sparselizard what Markdown is to Word and (La)TeX, respectively and deliberately. Unlike these other FEA tools, FeenoX provides… - a ready-to-run executable (which uses Autotools and friends to compile) that reads the problem to be solved from an input file at run time (i.e. it is a program not a library) designed an implemented following the Unix programming philosophy: $ feenox FeenoX v0.3.317-g893dcd9 a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Run with --help for further explanations. $ - a parser for a syntactically-sugared self-explanatory ASCII file (passed as the first non-optional argument to the feenox executable) with keywords that completely define the problem without requiring further human actions. Since the there is no need to recompile the binary for each problem, this allows efficient cloud-first workflows using containerized images or even provisioning by downloading binary tarballs or .deb packages. - a few supported PROBLEM types and a mechanism to allow hacker and academics to add new PDEs (as explained in the next bullet). This bullet is about the fact that a regular user wanting to solve heat conduction (even with multi-material non-uniform conductivities) just needs to do PROBLEM thermal and does not need to know nor write the weak form of the Poisson equation in the input file, since the vast majority of users will not know what a weak form is (even though other “similar” tools ask their users for that). - a Git repository with GPL sources (and CC-BY SA documentation) where contributions are welcome. In particular, each partial differential equation that FeenoX can solve correspondens to one of the subdirectories of src/pdes that provide C entry points that the main mathematical framework calls as function pointer to build the elemental objects. The autogen.sh step (prior to ./configure and make) detects the directory structure and includes all the subdirectories it finds as available problem types. They can be queried at runtime with the --pdes option: $ feenox --pdes laplace mechanical modal neutron_diffusion neutron_sn thermal $ The decision of extensibility through compiled code is, as the choice of making FeenoX a program and not a library, a thoughtful one. See FeenoX for academics for more details about how the extensibility mechanism works. - continuous integration (using Github actions), an issue tracker (using Github issues and a discussion page (using Github discussions) - a mechanism to expand command-line arguments as literal strings in the input file so as to allow parametric (and/or optimization) loops. For instance, if an input file print.fee looks like PRINT 2*${1} then $ for i in $(seq 1 5); do feenox print.fee $i; done 2 4 6 8 10 $ - the possibility to provide the input from stdin (so as to use it as a Unix pipe) by passing - as the input file path: $ for i in $(seq 1 5); do echo "PRINT 2*\${1}" | feenox - $i; done 2 4 6 8 10 $ - flexibility to handle many workflows, including web-based interfaces and thin command-line clients. The input file… - has a one-to-one correspondence with the human description of the problem - is Git-traceable (the mesh is defined in a separate file created by Gmsh, which may or may not be tracked) - allows the user to enter algebraic expressions whenever a numerical value is needed (everything is an expression) - understands definitions (nouns) and instructions (verbs). FeenoX has an actual instruction pointer that loops over the instruction set (there might even be conditional blocks). - is simple for simple files (but might get more complicated for more complex problems). Remember Alan Kay’s quote: “simple things should be simple and complex things should be possible.” Following the Unix rule of silence, the output is 100% user-defined: if there are not explicit output instructions, FeenoX will not write anything. And probably nothing will be computed (because FeenoX is smart and will not compute things that are not actually needed). [1] Here “Markdown” means (Pandoc + Git + Github / Gitlab / Gitea) [2] Here “FeenoX” means (FeenoX + Gmsh + Paraview + Git + Github / Gitlab / Gitea) [FeenoX]: https://www.seamplex.com/feenox [Markdown]: https://en.wikipedia.org/wiki/Markdown [Code_Aster]: https://www.code-aster.org/spip.php?rubrique2 [Salome-Meca]: https://www.code-aster.org/V2/spip.php?article303 [CalculiX]: http://www.calculix.de/ [PrePoMax]: https://prepomax.fs.um.si/ [MoFEM]: http://mofem.eng.gla.ac.uk/mofem/html/ [Sparselizard]: http://sparselizard.org/ [1]: https://commonmark.org/ [(La)TeX]: https://en.wikipedia.org/wiki/LaTeX [ready-to-run executable]: https://www.seamplex.com/feenox/doc/sds.html#sec:execution [reads the problem to be solved from an input file]: https://www.seamplex.com/feenox/doc/sds.html#sec:input [Unix programming philosophy]: https://www.seamplex.com/feenox/doc/sds.html#sec:unix [syntactically-sugared]: https://seamplex.com/feenox/doc/sds.html#sec:syntactic [self-explanatory ASCII file]: https://seamplex.com/feenox/doc/sds.html#sec:input [cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [academics]: ./README4academics.md [regular user]: ./README4engineers.md [multi-material non-uniform conductivities]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal/ [users]: README4engineers.md [Git repository]: https://github.com/seamplex/feenox [GPL sources]: https://github.com/seamplex/feenox/tree/main/src [CC-BY SA documentation]: https://github.com/seamplex/feenox/tree/main/doc [contributions are welcome]: https://www.seamplex.com/feenox/doc/#contributing [C entry points that the main mathematical framework calls as function pointer to build the elemental objects]: https://seamplex.com/feenox/doc/sds.html#sec:extensibility [Github actions]: https://github.com/seamplex/feenox/actions [Github issues]: https://github.com/seamplex/feenox/issues [Github discussions]: https://github.com/seamplex/feenox/discussions [expand command-line arguments as literal strings in the input file]: https://www.seamplex.com/feenox/doc/sds.html#sec:run-time-arguments [parametric]: https://www.seamplex.com/feenox/doc/sds.html#sec:parametric [optimization]: https://www.seamplex.com/feenox/doc/sds.html#sec:optimization [web-based interfaces]: https://www.caeplex.com [thin command-line clients]: https://www.seamplex.com/feenox/doc/sds.html#cloud-first [one-to-one correspondence with the human description of the problem]: https://seamplex.com/feenox/doc/sds.html#sec:matching-formulations [Gmsh]: http://gmsh.info/ [algebraic expressions whenever a numerical value is needed]: https://seamplex.com/feenox/doc/sds.html#sec:expression [definitions (nouns) and instructions (verbs)]: https://seamplex.com/feenox/doc/sds.html#sec:nouns_verbs [conditional blocks]: https://www.seamplex.com/feenox/doc/feenox-manual.html#if [simple for simple files]: https://seamplex.com/feenox/doc/sds.html#sec:simple [more complicated for more complex problems]: https://seamplex.com/feenox/doc/sds.html#sec:complex [Alan Kay]: https://en.wikipedia.org/wiki/Alan_Kay [“simple things should be simple and complex things should be possible.”]: https://www.quora.com/What-is-the-story-behind-Alan-Kay-s-adage-Simple-things-should-be-simple-complex-things-should-be-possible [the output is 100% user-defined]: https://seamplex.com/feenox/doc/sds.html#sec:output [Pandoc]: https://pandoc.org/ [Git]: https://git-scm.com/ [Github]: https://github.com/ [Gitlab]: https://about.gitlab.com/ [Gitea]: https://gitea.com/%7D%7BGitea%7D [2]: https://seamplex.com/feenox [3]: http://gmsh.info [Paraview]: https://www.paraview.org/ How Feenox is a computational tool designed to be run on Unix servers as a part of a cloud-first workflow, optionally involving MPI communication among different servers to handle arbitrarily-large problems: Check out the section about invocation in the FeenoX manual. It has been written in C and designed under the Unix programming philosophy as quoted by Eric Raymond. Following the rule of composition, when solving PDEs FeenoX works very much as a Unix pipe between a mesher (such as Gmsh) and a post-processing tool (such as Paraview): +------------+ mesh (*.msh) } | | { terminal data (*.dat) } input ----> | FeenoX |----> output { data files input (*.fee) } | | { post (vtk/msh) +------------+ FeenoX consists of a binary executable which is compiled using GNU Autotools (i.e. ./autogen.sh && ./configure && make) and uses three well-established and open source libraries: a. The GNU Scientific Library for basic numerical computations b. SUNDIALS IDA for solving systems of ODEs/DAEs c. PETSc and SLEPc for solving PDEs So even more, considering the NAFEMS LE10 Benchmark problem, it works as two “glue layers,” 1. between the mesher Gmsh and the PETSc library 2. between the PETSc library and the post-processor Paraview []  The stock packages provided in most GNU/Linux distributions work perfectly well, but custom configured and compiled versions (e.g. with particular optimization flags or linked with non-standard MPI implementations) can be used as well. An empty Debian-based GNU/Linux server (either amd64 or arm) can be provisioned with a working FeenoX binary at /usr/local/bin ready to solve arbitrary problems by doing sudo apt-get install -y libgsl-dev libsundials-dev petsc-dev slepc-dev git clone https://github.com/seamplex/feenox cd feenox ./autogen.sh ./configure make make install Heads up! If we wanted to be sure everything went smooth, we would need to take some time to install Gmsh and run the test suite: sudo apt-get install gmsh make check These steps are flexible enough so as to be integrated into containerization technologies (e.g. Docker files), continuous integration schemes (e.g. Github actions) or to suit any other particular needs (e.g. servers with custom PETSc installations or clusters multi-node MPI communication schemes). For instance, it is also possible to generate custom .deb (or .rpm) packages and make the server’s apt manager to fetch and install them without needing to compile the source code at all. Following the Unix rule of diversity, different compilers, both for the C code part of FeenoX as for the code in the dependencies (and their dependencies) can be used. So far there were tested - GCC (free) - Clang (free) - Intel OneAPI (privative) Also, different MPI implementations have been tested: - OpenMPI (free, not to confuse with OpenMP) - MPICH (free) - Intel MPI (privative) Feel free to raise any concerns you might have in our discussions forum. [cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first [involving MPI communication among different servers]: https://seamplex.com/feenox/doc/sds.html#sec:scalability [invocation]: https://www.seamplex.com/feenox/doc/feenox-manual.html#running-feenox [FeenoX manual]: https://www.seamplex.com/feenox/doc/feenox-manual.html [written in C]: https://seamplex.com/feenox/doc/programming.html#languages [GNU Scientific Library]: https://www.gnu.org/software/gsl/ [SUNDIALS IDA]: https://computing.llnl.gov/projects/sundials/ida [PETSc]: https://petsc.org/ [SLEPc]: http://slepc.upv.es/ [NAFEMS LE10 Benchmark problem]: https://seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [“glue layers,”]: https://www.linuxtopia.org/online_books/programming_books/art_of_unix_programming/ch04s03_1.html [Gmsh]: http://gmsh.info/ [PETSc library]: https://petsc.org/release/ [Paraview]: https://www.paraview.org/ [4]: doc/transfer-le10-zoom.svg [discussions forum]: https://github.com/seamplex/feenox/discussions What FeenoX is a cloud-first back end for generic computational workflows to solve engineering-related problems: - Basic mathematics - Systems of ODEs/DAEs - Laplace’s equation - Heat conduction - Linear elasticity - Modal analysis - Neutron diffusion - Neutron SN [cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first [back end]: https://en.wikipedia.org/wiki/Frontend_and_backend [engineering-related problems]: ./README4engineers.md [Basic mathematics]: https://seamplex.com/feenox/examples/basic.html [Systems of ODEs/DAEs]: https://seamplex.com/feenox/examples/daes.html [Laplace’s equation]: https://seamplex.com/feenox/examples/laplace.html [Heat conduction]: https://seamplex.com/feenox/examples/thermal.html [Linear elasticity]: https://seamplex.com/feenox/examples/mechanical.html [Modal analysis]: https://seamplex.com/feenox/examples/modal.html [Neutron diffusion]: https://seamplex.com/feenox/examples/neutron_diffusion.html [Neutron SN]: https://seamplex.com/feenox/examples/neutron_sn.html Design - FeenoX follows a fictitious (yet plausible) Software Design Requirements. - The explanation of how FeenoX addresses the requirements can be found in the Software Design Specification. [fictitious (yet plausible) Software Design Requirements]: https://www.seamplex.com/feenox/doc/srs.html [Software Design Specification]: https://www.seamplex.com/feenox/doc/sds.html Performance - FeenoX’s performance can be profiled and analyzed with the Google Benchmark library using this repository. - A rough comparison of FeenoX’s performance (and differences with respect to problem set up and execution) with respect to other similar tools can be found in this link: https://seamplex.com/feenox/tests/nafems/le10/ Check out FeenoX for Engineers and FeenoX for Academics for complementary information. [this repository]: https://github.com/seamplex/feenox-benchmark [FeenoX for Engineers]: README4engineers.md [FeenoX for Academics]: README4academics.md feenox-1.1/NEWS0000644000175000017500000000006114773607165010274 00000000000000See for news. feenox-1.1/config.guess0000755000175000017500000014051214773607171012120 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2022 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2022-01-09' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # Just in case it came from the environment. GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #else #include /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case $UNAME_VERSION in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; sun4*:SunOS:*:*) case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case `/bin/arch` in sun3) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_X32 >/dev/null then LIBCABI=${LIBC}x32 fi fi GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. GUESS=i386-sequent-sysv4 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; x86_64:Haiku:*:*) GUESS=x86_64-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "${cputype-}" = 386; then UNAME_MACHINE=i386 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: feenox-1.1/depcomp0000755000175000017500000005602014773607171011155 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2021 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: feenox-1.1/README4academics0000644000175000017500000004477614773607202012410 00000000000000FeenoX for Academics - 1 What - 2 How - 3 Why [1 What]: #what [2 How]: #how [3 Why]: #why What FeenoX is a cloud-first Unix stand-alone program (i.e. something your run, not something you have to link existing code against) that reads an engineering-related problem in a plain-text file containing definitions and instructions. That is to say, it reads the problem to be solved at run time and does not require the user (most of the time these will be industry engineers and not hackers nor PhDs) to compile and link custom code in order to solve a problem because it is not a library. It does not require the users to write a weak form of the PDE they want to solve, because most of them will not even know what a weak form is (and they certainly do not need to know that). The user chooses from a set of built-in PDEs using the PROBLEM definition which internally resolves (at run time) a set of function pointers to the appropriate locations which will build the elemental objects which correspond the to chosen PDE. The list of available PDEs can be peeked by executing the feenox binary with the --pdes option: $ feenox --pdes laplace mechanical modal neutron_diffusion neutron_sn thermal $ During the compilation procedure (based on Autotools), the source tree in src/pdes is parsed. For each subdirectory, a new PDE is embedded into the compiled binary. See below for further details about this extensibility mechanism. This program then solves the problem and, eventually, writes the outputs which the input file requests with explicit instructions (and nothing if nothing is asked for) and returns back to the Unix shell: # NAFEMS Benchmark LE-10: thick plate pressure PROBLEM mechanical DIMENSIONS 3 READ_MESH nafems-le10.msh # mesh in millimeters # LOADING: uniform normal pressure on the upper surface BC upper p=1 # 1 Mpa # BOUNDARY CONDITIONS: BC DCD'C' v=0 # Face DCD'C' zero y-displacement BC ABA'B' u=0 # Face ABA'B' zero x-displacement BC BCB'C' u=0 v=0 # Face BCB'C' x and y displ. fixed BC midplane w=0 # z displacements fixed along mid-plane # MATERIAL PROPERTIES: isotropic single-material properties E = 210e3 # Young modulus in MPa nu = 0.3 # Poisson's ratio SOLVE_PROBLEM # solve! # print the direct stress y at D (and nothing more) PRINT "σ_y @ D = " sigmay(2000,0,300) "MPa" It can be seen as a Unix filter (or as a transfer function) +------------+ mesh (*.msh) } | | { terminal data (*.dat) } input ----> | FeenoX |----> output { data files input (*.fee) } | | { post (vtk/msh) +------------+ which, when zoomed in, acts as a “glue layer” between a mesher (Gmsh) and a library for solving large sparse problems (PETSc) which for linear elastic looks as follows: []  Further discussion can be found in the tensile test tutorial. Check out the section about invocation in the FeenoX manual. The design responds to a Software Requirements Specification document that acts as a “request for quotations” of a computational engineering tool that should satisfy some fictitious (but plausible) requirements. The Software Design Specification document explains how FeenoX addresses each requirement of the SRS. In principle, even though FeenoX can solve generic numerical problems and systems of ordinary differential/algebraic equations, its main objective is to solve partial differential equations using the finite element method—eventually in parallel using the MPI standard. The current version can solve - Basic mathematics - Systems of ODEs/DAEs - Laplace’s equation - Heat conduction - Linear elasticity - Modal analysis - Neutron diffusion - Neutron SN Heads up! The background of FeenoX’s main author is Nuclear Engineering. Hence, - Two of the supported PDEs are related to neutron diffusion and transport. - There is a PhD thesis (in Spanish only) that discusses the design and implementation of FeenoX in view of core-level neutronics. As mentioned in the previous section, FeenoX provides a mechanism to add new types of PDEs by adding a new subdirectory to the src/pdes directory of the source tree and then re-bootstrapping, re-configuring and re-compiling the code. Since in FeenoX’s input file everything is an expression, the code is especially suited for verification using the method of manufactured solutions. - See FeenoX for Engineers for links to further examples and tutorials. - See FeenoX for Hackers for more details about the implementation and the code. [FeenoX]: https://www.seamplex.com/feenox/ [cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first [Unix]: ./README4hackers.md [run]: https://www.seamplex.com/feenox/doc/feenox-manual.html#running-feenox [engineering-related problem]: ./README4engineers.md [plain-text file containing definitions and instructions]: https://seamplex.com/feenox/doc/sds.html#sec:input [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [src/pdes]: https://github.com/seamplex/feenox/tree/main/src/pdes [extensibility mechanism]: https://www.seamplex.com/feenox/doc/sds.html#sec:extensibility [explicit instructions]: https://www.seamplex.com/feenox/doc/sds.html#sec:output [Gmsh]: http://gmsh.info/ [PETSc]: https://petsc.org/release/ [1]: doc/transfer-le10-zoom.svg [tensile test tutorial]: https://www.seamplex.com/feenox/doc/tutorials/110-tensile-test/ [FeenoX manual]: https://www.seamplex.com/feenox/doc/feenox-manual.html [Software Requirements Specification]: https://www.seamplex.com/feenox/doc/srs.html [Software Design Specification]: https://www.seamplex.com/feenox/doc/sds.html [generic numerical problems]: https://seamplex.com/feenox/examples/basic.html [systems of ordinary differential/algebraic equations]: https://seamplex.com/feenox/examples/daes.html [in parallel using the MPI standard]: https://seamplex.com/feenox/doc/sds.html#sec:scalability [Laplace’s equation]: https://seamplex.com/feenox/examples/laplace.html [Heat conduction]: https://seamplex.com/feenox/examples/thermal.html [Linear elasticity]: https://seamplex.com/feenox/examples/mechanical.html [Modal analysis]: https://seamplex.com/feenox/examples/modal.html [Neutron diffusion]: https://seamplex.com/feenox/examples/neutron_diffusion.html [Neutron SN]: https://seamplex.com/feenox/examples/neutron_sn.html [diffusion]: https://www.seamplex.com/feenox/examples/neutron_diffusion.html [transport]: https://www.seamplex.com/feenox/examples/neutron_sn.html [PhD thesis (in Spanish only)]: https://seamplex.com/thesis/html/ [directory of the source tree and then re-bootstrapping, re-configuring and re-compiling the code]: https://seamplex.com/feenox/doc/sds.html#sec:extensibility [everything is an expression]: https://seamplex.com/feenox/doc/sds.html#sec:expression [verification using the method of manufactured solutions]: https://github.com/seamplex/feenox/tree/main/tests/mms How FeenoX tries to achieve its goals by… - standing on both ethical (since it is free) and technical (since it is open source) ground while interacting with other free and open specimens such as - operating systems - libraries - compilers - pre and post-processing tools thus encouraging science and engineering to shift from privative environments into the free world. - leveraging the Unix programming philosophy to come up with a cloud-first tool suitable to be automatically deployed and serve as the back end of web-based interfaces (fig. ). - providing a ready-to-run program that reads an input file at run time (and not a library that has to be linked for each particular problem to be solved) as deliberate decision discussed in the Software Design Specification. - designing and implementing an extensibility mechanism to allow hackers and/or academics to add new PDE formulations by adding a new subdirectory to src/pdes in the repository and then a. re-bootstrapping with autogen.sh, b. re-configuring with configure, and c. re-compiling with make In effect, FeenoX provides a general mathematical framework to solve PDEs with a bunch of entry points (as C functions) where new types of PDEs (e.g. electromagnetism, fluid mechanics, etc.) can be added to the set of what FeenoX can solve. This general framework provides means to - parse the input file, handle command-line arguments, read mesh files, assign variables, evaluate conditionals, write results, etc. PROBLEM laplace 2D READ_MESH square-$1.msh [...] WRITE_RESULTS FORMAT vtk - handle material properties given as algebraic expressions involving pointwise-defined functions of space, temperature, time, etc. MATERIAL steel E=210e3*(1-1e-3*(T(x,y,z)-20)) nu=0.3 MATERIAL aluminum E=69e3 nu=7/25 - read problem-specific boundary conditions as algebraic expressions sigma = 5.670374419e-8 # W m^2 / K^4 as in wikipedia e = 0.98 # non-dimensional T0 = 1000 # K Tinf = 300 # K BC left T=T0 BC right q=sigma*e*(Tinf^4-T(x,y,z)^4) - access shape functions and its derivatives evaluated either at Gauss points or at arbitrary locations for computing elementary contributions to - stiffness matrix - mass matrix - right-hand side vector For example, this snippet would build the elemental stiffness matrix for the Laplace problem: int build_laplace_Ki(element_t *e, unsigned int q) { double wdet = feenox_fem_compute_w_det_at_gauss(e, q); gsl_matrix *B = feenox_fem_compute_B_at_gauss(e, q); feenox_call(feenox_blas_BtB_accum(B, wdet, feenox.fem.Ki)); return FEENOX_OK; } The calls for computing the weights and the matrices with the shape functions and/or their derivatives currently support first and second-order iso-geometric elements, but other element types can be added as well. More complex cases involving non-uniform material properties, volumetric sources, etc. can be found in the actual source. - solve the discretized equations using the appropriate PETSc/SLEPc objects, i.e. - KSP for linear static problems - SNES for non-linear static problems - TS for transient problems - EPS for eigenvalue problems The particular functions that implement each problem type are located in subdirectories src/pdes, namely - laplace - thermal - mechanical - modal - neutron_diffusion - neutron_sn Researchers with both knowledge of mathematical theory of finite elements and programming skills might, with the aid of the community, add support for other PDES. They might do that by using one of these directories (say laplace) as a template and 1. replace every occurrence of laplace in symbol names with the name of the new PDE 2. modify the initialization functions in init.c and set - the names of the unknowns - the names of the materials - the mathematical type and properties of problem - etc. 3. modify the contents of the elemental matrices in bulk.c in the FEM formulation of the problem being added 4. modify the contents of how the boundary conditions are parsed and set in bc.c 5. re-run autogen.sh, ./configure and make to get a FeenoX executable with support for the new PDE. As we mentioned in FeenoX for hackers, Alan Kay’s says: “simple things should be simple and complex things should be possible.” Of course, the addition of non-trivial PDEs is not straightforward, but possible (at that time we were discussing the first half of the quote, now we refer to the second part). The programming guide contains further details about how to contribute to the code base. - See FeenoX for engineers for more details about the problem types FeenoX can solve and how to solve them. - See FeenoX for hackers for more technical details about how FeenoX works. [both ethical (since it is free) and technical (since it is open source) ground]: https://www.seamplex.com/feenox/doc/sds.html#sec:architecture [Unix programming philosophy]: https://seamplex.com/feenox/doc/sds.html#sec:unix [cloud-first tool]: https://seamplex.com/feenox/doc/sds.html#cloud-first [automatically deployed]: https://seamplex.com/feenox/doc/sds.html#sec:deployment [ready-to-run program]: https://seamplex.com/feenox/doc/sds.html#sec:execution [an input file at run time]: https://seamplex.com/feenox/doc/sds.html#sec:input [Software Design Specification]: https://www.seamplex.com/feenox/doc/sds.html [2]: [C functions]: https://www.seamplex.com/feenox/doc/programming.html#languages [parse the input file]: https://seamplex.com/feenox/doc/sds.html#sec:nouns_verbs [handle command-line arguments]: https://seamplex.com/feenox/doc/sds.html#sec:run-time-arguments [read mesh files]: https://seamplex.com/feenox/doc/feenox-manual.html#read_mesh [assign variables]: https://seamplex.com/feenox/doc/feenox-manual.html#description [evaluate conditionals]: https://seamplex.com/feenox/doc/feenox-manual.html#if [write results]: https://seamplex.com/feenox/doc/sds.html#sec:output [material properties]: https://seamplex.com/feenox/doc/sds.html#sec:flexibility [algebraic expressions]: https://seamplex.com/feenox/doc/sds.html#sec:expression [space]: https://seamplex.com/feenox/doc/tutorials/320-thermal/#sec:mms [temperature]: https://www.seamplex.com/feenox/examples/mechanical.html#temperature-dependent-material-properties [time]: https://seamplex.com/feenox/doc/tutorials/320-thermal/#from-a-steady-state [boundary conditions as algebraic expressions]: https://seamplex.com/feenox/doc/tutorials/320-thermal/#temperature-dependent-heat-flux-radiation [stiffness matrix]: https://github.com/seamplex/feenox/blob/main/src/pdes/laplace/bulk.c#L33 [mass matrix]: https://github.com/seamplex/feenox/blob/main/src/pdes/modal/bulk.c#L98 [right-hand side vector]: https://github.com/seamplex/feenox/blob/main/src/pdes/thermal/bulk.c#L41 [Laplace problem]: https://github.com/seamplex/feenox/tree/main/src/pdes/laplace [3]: https://petsc.org/ [SLEPc]: https://slepc.upv.es/ [KSP]: https://petsc.org/release/manual/ksp/ [linear static problems]: https://seamplex.com/feenox/doc/tutorials/320-thermal/#linear-steady-state-problems [SNES]: https://petsc.org/release/manual/snes/ [non-linear static problems]: https://seamplex.com/feenox/doc/tutorials/320-thermal/#non-linear-state-state-problems [TS]: https://petsc.org/release/manual/ts/ [transient problems]: https://seamplex.com/feenox/doc/tutorials/320-thermal/#sec:transient [EPS]: https://slepc.upv.es/documentation/current/docs/manualpages/EPS/index.html [eigenvalue problems]: https://seamplex.com/feenox/examples/neutron_diffusion.html#iaea-3d-pwr-benchmark [src/pdes]: https://github.com/seamplex/feenox/tree/main/src/pdes [thermal]: https://github.com/seamplex/feenox/tree/main/src/pdes/thermal [mechanical]: https://github.com/seamplex/feenox/tree/main/src/pdes/mechanical [modal]: https://github.com/seamplex/feenox/tree/main/src/pdes/modal [neutron_diffusion]: https://github.com/seamplex/feenox/tree/main/src/pdes/neutron_difussion [neutron_sn]: https://github.com/seamplex/feenox/tree/main/src/pdes/neutron_sn [the community]: https://github.com/seamplex/feenox/discussions [FeenoX for hackers]: ./README4hackers.md [Alan Kay]: https://en.wikipedia.org/wiki/Alan_Kay [“simple things should be simple and complex things should be possible.”]: https://www.quora.com/What-is-the-story-behind-Alan-Kay-s-adage-Simple-things-should-be-simple-complex-things-should-be-possible [programming guide]: doc/programming.md [FeenoX for engineers]: ./README4engineers.md Why The world is already full of finite-element programs, and every day a grad student creates a new one from scratch. So why adding FeenoX to the already-crowded space of FEA tools? Because there are either a. libraries which need code to use them such as - Sparselizard - MoFEM - FEniCS - MFEM b. end-user programs which need a GUI such as - CalculiX - CodeAster FeenoX sits in the middle. It is the only free and open-source tool that satisfies the Software Requirements Specification, including that… - in order to solve a problem one needs to prepare an input file (not a script) which is read at run-time (not code which calls a library) - these input files can expand generic command-line options using Bash syntax as $1, $2, etc., which allow parametric or optimization loops driven by higher-level scripts - for solving PDEs, the input file has to refer to at least one Gmsh .msh file that defines the domain where the PDE is solved - the material properties and boundary conditions are defined using physical groups and not individual nodes nor elements, so the input file is independent of the mesh and thus can be tracked with Git to increase traceability and repeatability. - it uses the Unix philosophy which, among others, separates policy from mechanism and thus FeenoX is a natural choice for web-based interfaces like CAEplex. See FeenoX for hackers for another explanation about why FeenoX is different from other computational tools. [Software Requirements Specification]: https://www.seamplex.com/feenox/doc/srs.html [input file]: https://seamplex.com/feenox/doc/sds.html#sec:input [read at run-time]: https://seamplex.com/feenox/doc/sds.html#sec:execution [expand generic command-line options using Bash syntax as $1, $2, etc.]: https://seamplex.com/feenox/doc/sds.html#sec:run-time-arguments [parametric]: https://seamplex.com/feenox/doc/sds.html#sec:parametric [optimization loops]: https://seamplex.com/feenox/doc/sds.html#sec:optimization [one Gmsh .msh file]: https://seamplex.com/feenox/doc/sds.html#sec:interoperability [material properties and boundary conditions]: https://seamplex.com/feenox/doc/sds.html#nafems-le10-benchmark [tracked with Git]: https://seamplex.com/feenox/doc/sds.html#sec:git-friendliness [traceability and repeatability]: https://seamplex.com/feenox/doc/sds.html#sec:traceability [Unix philosophy]: https://seamplex.com/feenox/doc/sds.html#sec:unix [separates policy from mechanism]: https://seamplex.com/feenox/doc/sds.html#sec:unix-separation [CAEplex]: https://www.caeplex.com [FeenoX for hackers]: ./README4hackers.md feenox-1.1/missing0000755000175000017500000001533614773607171011204 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=https://www.perl.org/ flex_URL=https://github.com/westes/flex gnu_software_URL=https://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: feenox-1.1/aclocal.m40000644000175000017500000012251214773607170011437 00000000000000# generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, [m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR feenox-1.1/doc/0000755000175000017500000000000014773607277010431 500000000000000feenox-1.1/doc/CODE_OF_CONDUCT0000644000175000017500000001501014773607243012537 00000000000000FeenoX Code of Conduct Jeremy Theler 2025-04-03 - 1 Our Pledge - 2 Our Standards - 3 Enforcement Responsibilities - 4 Scope - 5 Enforcement - 6 Enforcement Guidelines - 6.1 1. Correction - 6.2 2. Warning - 6.3 3. Temporary Ban - 6.4 4. Permanent Ban - 7 Attribution - Be kind to others. Do not insult or put down others. Behave professionally. Remember that harassment and sexist, racist, or exclusionary jokes are not appropriate for FeenoX. - All communication should be appropriate for a professional audience including people of many different backgrounds. Sexual language and imagery is not appropriate. - FeenoX is dedicated to providing a harassment-free community for everyone, regardless of gender, sexual orientation, gender identity and expression, disability, physical appearance, body size, race, or religion. We do not tolerate harassment of community members in any form. - Help to make this a welcoming, friendly community for all. [1 Our Pledge]: #our-pledge [2 Our Standards]: #our-standards [3 Enforcement Responsibilities]: #enforcement-responsibilities [4 Scope]: #scope [5 Enforcement]: #enforcement [6 Enforcement Guidelines]: #enforcement-guidelines [6.1 1. Correction]: #correction [6.2 2. Warning]: #warning [6.3 3. Temporary Ban]: #temporary-ban [6.4 4. Permanent Ban]: #permanent-ban [7 Attribution]: #attribution Our Pledge We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. Our Standards Examples of behavior that contributes to a positive environment for our community include: - Demonstrating empathy and kindness toward other people - Being respectful of differing opinions, viewpoints, and experiences - Giving and gracefully accepting constructive feedback - Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience - Focusing on what is best not just for us as individuals, but for thea overall community Examples of unacceptable behavior include: - The use of sexualized language or imagery, and sexual attention or advances of any kind - Trolling, insulting or derogatory comments, and personal or political attacks - Public or private harassment - Publishing others’ private information, such as a physical or email address, without their explicit permission - Other conduct which could reasonably be considered inappropriate in a professional setting Enforcement Responsibilities Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. Scope This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at jeremy@seamplex.com. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the reporter of any incident. Enforcement Guidelines Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: 1. Correction Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. 2. Warning Community Impact: A violation through a single incident or series of actions. Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. 3. Temporary Ban Community Impact: A serious violation of community standards, including sustained inappropriate behavior. Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. 4. Permanent Ban Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. Consequence: A permanent ban from any sort of public interaction within the community. Attribution This Code of Conduct is adapted from the Contributor Covenant, version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. Community Impact Guidelines were inspired by Mozilla’s code of conduct enforcement ladder. For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations. [Contributor Covenant]: https://www.contributor-covenant.org [Mozilla’s code of conduct enforcement ladder]: https://github.com/mozilla/diversity feenox-1.1/doc/feenox-manual0000644000175000017500000060101214773607261013024 00000000000000FeenoX manual Jeremy Theler 2025-04-03 - 1 Overview - 2 Introduction - 3 Running feenox - 3.1 Invocation - 3.2 Compilation - 3.2.1 Quickstart - 3.2.2 Detailed configuration and compilation - 3.2.2.1 Mandatory dependencies - 3.2.2.2 Optional dependencies - 3.2.2.3 FeenoX source code - 3.2.2.4 Configuration - 3.2.2.5 Source code compilation - 3.2.2.6 Test suite - 3.2.2.7 Installation - 3.2.3 Advanced settings - 3.2.3.1 Compiling with debug symbols - 3.2.3.2 Using a different compiler - 3.2.3.3 Compiling PETSc - 4 Examples - 5 Tutorials - 5.1 General tutorials - 5.2 Detailed functionality - 5.3 Physics tutorials - 6 Description - 6.1 Algebraic expressions - 6.2 Initial conditions - 6.3 Expansions of command line arguments - 7 Reference - 7.1 Differential-Algebraic Equations subsystem - 7.1.1 DAE keywords - 7.1.1.1 INITIAL_CONDITIONS - 7.1.1.2 PHASE_SPACE - 7.1.1.3 TIME_PATH - 7.1.2 DAE variables - 7.1.2.1 dae_rtol - 7.2 Partial Differential Equations subsystem - 7.2.1 PDE keywords - 7.2.1.1 BC - 7.2.1.2 COMPUTE_REACTION - 7.2.1.3 DUMP - 7.2.1.4 FIND_EXTREMA - 7.2.1.5 INTEGRATE - 7.2.1.6 MATERIAL - 7.2.1.7 PETSC_OPTIONS - 7.2.1.8 PHYSICAL_GROUP - 7.2.1.9 PROBLEM - 7.2.1.10 READ_MESH - 7.2.1.11 SOLVE_PROBLEM - 7.2.1.12 WRITE_MESH - 7.2.1.13 WRITE_RESULTS - 7.2.2 PDE variables - 7.3 Laplace’s equation - 7.3.1 Laplace results - 7.3.1.1 phi - 7.3.2 Laplace properties - 7.3.2.1 alpha - 7.3.2.2 f - 7.3.3 Laplace boundary conditions - 7.3.3.1 dphidn - 7.3.3.2 phi - 7.3.3.3 phi' - 7.3.4 Laplace keywords - 7.3.5 Laplace variables - 7.4 The heat conduction equation - 7.4.1 Thermal results - 7.4.1.1 qx - 7.4.1.2 qy - 7.4.1.3 qz - 7.4.1.4 T - 7.4.2 Thermal properties - 7.4.2.1 cp - 7.4.2.2 k - 7.4.2.3 kappa - 7.4.2.4 q - 7.4.2.5 q''' - 7.4.2.6 rho - 7.4.2.7 rhocp - 7.4.2.8 T_0 - 7.4.2.9 T_guess - 7.4.3 Thermal boundary conditions - 7.4.4 Thermal keywords - 7.4.5 Thermal variables - 7.4.5.1 T_max - 7.4.5.2 T_min - 7.5 Linear elasticity - 7.5.1 Elasticity results - 7.5.2 Elasticity properties - 7.5.3 Elasticity boundary conditions - 7.5.4 Elasticity keywords - 7.5.4.1 LINEARIZE_STRESS - 7.5.5 Elasticity variables - 7.6 Neutron transport with discrete ordinates - 7.6.1 Neutron transport results - 7.6.2 Neutron transport properties - 7.6.3 Neutron transport boundary conditions - 7.6.4 Neutron transport keywords - 7.6.5 Neutron transport variables - 7.6.5.1 chi - 7.6.5.2 keff - 7.6.5.3 sn_alpha - 7.7 General & “standalone” mathematics - 7.7.1 Keywords - 7.7.1.1 ABORT - 7.7.1.2 ALIAS - 7.7.1.3 CLOSE - 7.7.1.4 DEFAULT_ARGUMENT_VALUE - 7.7.1.5 FILE - 7.7.1.6 FIT - 7.7.1.7 FUNCTION - 7.7.1.8 IF - 7.7.1.9 IMPLICIT - 7.7.1.10 INCLUDE - 7.7.1.11 MATRIX - 7.7.1.12 OPEN - 7.7.1.13 PRINT - 7.7.1.14 PRINTF - 7.7.1.15 PRINT_FUNCTION - 7.7.1.16 PRINT_VECTOR - 7.7.1.17 SOLVE - 7.7.1.18 SORT_VECTOR - 7.7.1.19 VAR - 7.7.1.20 VECTOR - 7.7.2 Variables - 7.7.2.1 done - 7.7.2.2 done_static - 7.7.2.3 done_transient - 7.7.2.4 dt - 7.7.2.5 end_time - 7.7.2.6 i - 7.7.2.7 infinite - 7.7.2.8 in_static - 7.7.2.9 in_static_first - 7.7.2.10 in_static_last - 7.7.2.11 in_time_path - 7.7.2.12 in_transient - 7.7.2.13 in_transient_first - 7.7.2.14 in_transient_last - 7.7.2.15 j - 7.7.2.16 max_dt - 7.7.2.17 min_dt - 7.7.2.18 mpi_rank - 7.7.2.19 mpi_size - 7.7.2.20 on_gsl_error - 7.7.2.21 on_ida_error - 7.7.2.22 on_nan - 7.7.2.23 pi - 7.7.2.24 pid - 7.7.2.25 static_steps - 7.7.2.26 step_static - 7.7.2.27 step_transient - 7.7.2.28 t - 7.7.2.29 zero - 7.8 Functions - 7.8.1 abs - 7.8.2 acos - 7.8.3 asin - 7.8.4 atan - 7.8.5 atan2 - 7.8.6 ceil - 7.8.7 clock - 7.8.8 cos - 7.8.9 cosh - 7.8.10 cpu_time - 7.8.11 d_dt - 7.8.12 deadband - 7.8.13 equal - 7.8.14 exp - 7.8.15 expint1 - 7.8.16 expint2 - 7.8.17 expint3 - 7.8.18 expintn - 7.8.19 floor - 7.8.20 gammaf - 7.8.21 heaviside - 7.8.22 if - 7.8.23 integral_dt - 7.8.24 integral_euler_dt - 7.8.25 is_even - 7.8.26 is_in_interval - 7.8.27 is_odd - 7.8.28 j0 - 7.8.29 lag - 7.8.30 lag_bilinear - 7.8.31 lag_euler - 7.8.32 last - 7.8.33 limit - 7.8.34 limit_dt - 7.8.35 log - 7.8.36 mark_max - 7.8.37 mark_min - 7.8.38 max - 7.8.39 memory - 7.8.40 min - 7.8.41 mod - 7.8.42 mpi_memory_local - 7.8.43 not - 7.8.44 random - 7.8.45 random_gauss - 7.8.46 round - 7.8.47 sawtooth_wave - 7.8.48 sech - 7.8.49 sgn - 7.8.50 sin - 7.8.51 sinh - 7.8.52 sqrt - 7.8.53 square_wave - 7.8.54 tan - 7.8.55 tanh - 7.8.56 threshold_max - 7.8.57 threshold_min - 7.8.58 triangular_wave - 7.8.59 wall_time - 7.9 Functionals - 7.9.1 derivative - 7.9.2 func_min - 7.9.3 gauss_kronrod - 7.9.4 gauss_legendre - 7.9.5 integral - 7.9.6 prod - 7.9.7 root - 7.9.8 sum - 7.10 Vector functions - 7.10.1 vecdot - 7.10.2 vecmax - 7.10.3 vecmaxindex - 7.10.4 vecmin - 7.10.5 vecminindex - 7.10.6 vecnorm - 7.10.7 vecsize - 7.10.8 vecsum - 8 FeenoX & the Unix Philospohy - 8.1 Rule of Modularity - 8.2 Rule of Clarity - 8.3 Rule of Composition - 8.4 Rule of Separation - 8.5 Rule of Simplicity - 8.6 Rule of Parsimony - 8.7 Rule of Transparency - 8.8 Rule of Robustness - 8.9 Rule of Representation - 8.10 Rule of Least Surprise - 8.11 Rule of Silence - 8.12 Rule of Repair - 8.13 Rule of Economy - 8.14 Rule of Generation - 8.15 Rule of Optimization - 8.16 Rule of Diversity - 8.17 Rule of Extensibility - 9 History [1 Overview]: #overview [2 Introduction]: #introduction [3 Running feenox]: #running-feenox [3.1 Invocation]: #invocation [3.2 Compilation]: #compilation [3.2.1 Quickstart]: #quickstart [3.2.2 Detailed configuration and compilation]: #sec:details [3.2.2.1 Mandatory dependencies]: #mandatory-dependencies [3.2.2.2 Optional dependencies]: #optional-dependencies [3.2.2.3 FeenoX source code]: #feenox-source-code [3.2.2.4 Configuration]: #configuration [3.2.2.5 Source code compilation]: #sec:compilation [3.2.2.6 Test suite]: #sec:test-suite [3.2.2.7 Installation]: #installation [3.2.3 Advanced settings]: #advanced-settings [3.2.3.1 Compiling with debug symbols]: #compiling-with-debug-symbols [3.2.3.2 Using a different compiler]: #using-a-different-compiler [3.2.3.3 Compiling PETSc]: #compiling-petsc [4 Examples]: #examples [5 Tutorials]: #tutorials [5.1 General tutorials]: #general-tutorials [5.2 Detailed functionality]: #detailed-functionality [5.3 Physics tutorials]: #physics-tutorials [6 Description]: #description [6.1 Algebraic expressions]: #algebraic-expressions [6.2 Initial conditions]: #initial-conditions [6.3 Expansions of command line arguments]: #expansions-of-command-line-arguments [7 Reference]: #reference [7.1 Differential-Algebraic Equations subsystem]: #differential-algebraic-equations-subsystem [7.1.1 DAE keywords]: #dae-keywords [7.1.1.1 INITIAL_CONDITIONS]: #initial_conditions [7.1.1.2 PHASE_SPACE]: #phase_space [7.1.1.3 TIME_PATH]: #time_path [7.1.2 DAE variables]: #dae-variables [7.1.2.1 dae_rtol]: #dae_rtol [7.2 Partial Differential Equations subsystem]: #partial-differential-equations-subsystem [7.2.1 PDE keywords]: #pde-keywords [7.2.1.1 BC]: #bc [7.2.1.2 COMPUTE_REACTION]: #compute_reaction [7.2.1.3 DUMP]: #dump [7.2.1.4 FIND_EXTREMA]: #find_extrema [7.2.1.5 INTEGRATE]: #integrate [7.2.1.6 MATERIAL]: #material [7.2.1.7 PETSC_OPTIONS]: #petsc_options [7.2.1.8 PHYSICAL_GROUP]: #physical_group [7.2.1.9 PROBLEM]: #problem [7.2.1.10 READ_MESH]: #read_mesh [7.2.1.11 SOLVE_PROBLEM]: #solve_problem [7.2.1.12 WRITE_MESH]: #write_mesh [7.2.1.13 WRITE_RESULTS]: #write_results [7.2.2 PDE variables]: #pde-variables [7.3 Laplace’s equation]: #laplaces-equation [7.3.1 Laplace results]: #laplace-results [7.3.1.1 phi]: #phi [7.3.2 Laplace properties]: #laplace-properties [7.3.2.1 alpha]: #alpha [7.3.2.2 f]: #f [7.3.3 Laplace boundary conditions]: #laplace-boundary-conditions [7.3.3.1 dphidn]: #dphidn [7.3.3.3 phi']: #phi-1 [7.3.4 Laplace keywords]: #laplace-keywords [7.3.5 Laplace variables]: #laplace-variables [7.4 The heat conduction equation]: #thermal [7.4.1 Thermal results]: #thermal-results [7.4.1.1 qx]: #qx [7.4.1.2 qy]: #qy [7.4.1.3 qz]: #qz [7.4.1.4 T]: #t [7.4.2 Thermal properties]: #thermal-properties [7.4.2.1 cp]: #cp [7.4.2.2 k]: #k [7.4.2.3 kappa]: #kappa [7.4.2.4 q]: #q [7.4.2.5 q''']: #q-1 [7.4.2.6 rho]: #rho [7.4.2.7 rhocp]: #rhocp [7.4.2.8 T_0]: #t_0 [7.4.2.9 T_guess]: #t_guess [7.4.3 Thermal boundary conditions]: #thermal-boundary-conditions [7.4.4 Thermal keywords]: #thermal-keywords [7.4.5 Thermal variables]: #thermal-variables [7.4.5.1 T_max]: #t_max [7.4.5.2 T_min]: #t_min [7.5 Linear elasticity]: #mechanical [7.5.1 Elasticity results]: #elasticity-results [7.5.2 Elasticity properties]: #elasticity-properties [7.5.3 Elasticity boundary conditions]: #elasticity-boundary-conditions [7.5.4 Elasticity keywords]: #elasticity-keywords [7.5.4.1 LINEARIZE_STRESS]: #linearize_stress [7.5.5 Elasticity variables]: #elasticity-variables [7.6 Neutron transport with discrete ordinates]: #neutron-transport-with-discrete-ordinates [7.6.1 Neutron transport results]: #neutron-transport-results [7.6.2 Neutron transport properties]: #neutron-transport-properties [7.6.3 Neutron transport boundary conditions]: #neutron-transport-boundary-conditions [7.6.4 Neutron transport keywords]: #neutron-transport-keywords [7.6.5 Neutron transport variables]: #neutron-transport-variables [7.6.5.1 chi]: #chi [7.6.5.2 keff]: #keff [7.6.5.3 sn_alpha]: #sn_alpha [7.7 General & “standalone” mathematics]: #general-standalone-mathematics [7.7.1 Keywords]: #keywords [7.7.1.1 ABORT]: #abort [7.7.1.2 ALIAS]: #alias [7.7.1.3 CLOSE]: #close [7.7.1.4 DEFAULT_ARGUMENT_VALUE]: #default_argument_value [7.7.1.5 FILE]: #file [7.7.1.6 FIT]: #fit [7.7.1.7 FUNCTION]: #function [7.7.1.8 IF]: #if [7.7.1.9 IMPLICIT]: #implicit [7.7.1.10 INCLUDE]: #include [7.7.1.11 MATRIX]: #matrix [7.7.1.12 OPEN]: #open [7.7.1.13 PRINT]: #print [7.7.1.14 PRINTF]: #printf [7.7.1.15 PRINT_FUNCTION]: #print_function [7.7.1.16 PRINT_VECTOR]: #print_vector [7.7.1.17 SOLVE]: #solve [7.7.1.18 SORT_VECTOR]: #sort_vector [7.7.1.19 VAR]: #var [7.7.1.20 VECTOR]: #vector [7.7.2 Variables]: #variables [7.7.2.1 done]: #done [7.7.2.2 done_static]: #done_static [7.7.2.3 done_transient]: #done_transient [7.7.2.4 dt]: #dt [7.7.2.5 end_time]: #end_time [7.7.2.6 i]: #i [7.7.2.7 infinite]: #infinite [7.7.2.8 in_static]: #in_static [7.7.2.9 in_static_first]: #in_static_first [7.7.2.10 in_static_last]: #in_static_last [7.7.2.11 in_time_path]: #in_time_path [7.7.2.12 in_transient]: #in_transient [7.7.2.13 in_transient_first]: #in_transient_first [7.7.2.14 in_transient_last]: #in_transient_last [7.7.2.15 j]: #j [7.7.2.16 max_dt]: #max_dt [7.7.2.17 min_dt]: #min_dt [7.7.2.18 mpi_rank]: #mpi_rank [7.7.2.19 mpi_size]: #mpi_size [7.7.2.20 on_gsl_error]: #on_gsl_error [7.7.2.21 on_ida_error]: #on_ida_error [7.7.2.22 on_nan]: #on_nan [7.7.2.23 pi]: #pi [7.7.2.24 pid]: #pid [7.7.2.25 static_steps]: #static_steps [7.7.2.26 step_static]: #step_static [7.7.2.27 step_transient]: #step_transient [7.7.2.29 zero]: #zero [7.8 Functions]: #functions [7.8.1 abs]: #abs [7.8.2 acos]: #acos [7.8.3 asin]: #asin [7.8.4 atan]: #atan [7.8.5 atan2]: #atan2 [7.8.6 ceil]: #ceil [7.8.7 clock]: #clock [7.8.8 cos]: #cos [7.8.9 cosh]: #cosh [7.8.10 cpu_time]: #cpu_time [7.8.11 d_dt]: #d_dt [7.8.12 deadband]: #deadband [7.8.13 equal]: #equal [7.8.14 exp]: #exp [7.8.15 expint1]: #expint1 [7.8.16 expint2]: #expint2 [7.8.17 expint3]: #expint3 [7.8.18 expintn]: #expintn [7.8.19 floor]: #floor [7.8.20 gammaf]: #gammaf [7.8.21 heaviside]: #heaviside [7.8.23 integral_dt]: #integral_dt [7.8.24 integral_euler_dt]: #integral_euler_dt [7.8.25 is_even]: #is_even [7.8.26 is_in_interval]: #is_in_interval [7.8.27 is_odd]: #is_odd [7.8.28 j0]: #j0 [7.8.29 lag]: #lag [7.8.30 lag_bilinear]: #lag_bilinear [7.8.31 lag_euler]: #lag_euler [7.8.32 last]: #last [7.8.33 limit]: #limit [7.8.34 limit_dt]: #limit_dt [7.8.35 log]: #log [7.8.36 mark_max]: #mark_max [7.8.37 mark_min]: #mark_min [7.8.38 max]: #max [7.8.39 memory]: #memory [7.8.40 min]: #min [7.8.41 mod]: #mod [7.8.42 mpi_memory_local]: #mpi_memory_local [7.8.43 not]: #not [7.8.44 random]: #random [7.8.45 random_gauss]: #random_gauss [7.8.46 round]: #round [7.8.47 sawtooth_wave]: #sawtooth_wave [7.8.48 sech]: #sech [7.8.49 sgn]: #sgn [7.8.50 sin]: #sin [7.8.51 sinh]: #sinh [7.8.52 sqrt]: #sqrt [7.8.53 square_wave]: #square_wave [7.8.54 tan]: #tan [7.8.55 tanh]: #tanh [7.8.56 threshold_max]: #threshold_max [7.8.57 threshold_min]: #threshold_min [7.8.58 triangular_wave]: #triangular_wave [7.8.59 wall_time]: #wall_time [7.9 Functionals]: #functionals [7.9.1 derivative]: #derivative [7.9.2 func_min]: #func_min [7.9.3 gauss_kronrod]: #gauss_kronrod [7.9.4 gauss_legendre]: #gauss_legendre [7.9.5 integral]: #integral [7.9.6 prod]: #prod [7.9.7 root]: #root [7.9.8 sum]: #sum [7.10 Vector functions]: #vector-functions [7.10.1 vecdot]: #vecdot [7.10.2 vecmax]: #vecmax [7.10.3 vecmaxindex]: #vecmaxindex [7.10.4 vecmin]: #vecmin [7.10.5 vecminindex]: #vecminindex [7.10.6 vecnorm]: #vecnorm [7.10.7 vecsize]: #vecsize [7.10.8 vecsum]: #vecsum [8 FeenoX & the Unix Philospohy]: #feenox-the-unix-philospohy [8.1 Rule of Modularity]: #sec:unix-modularity [8.2 Rule of Clarity]: #sec:unix-clarity [8.3 Rule of Composition]: #sec:unix-composition [8.4 Rule of Separation]: #sec:unix-separation [8.5 Rule of Simplicity]: #sec:unix-simplicity [8.6 Rule of Parsimony]: #sec:unix-parsimony [8.7 Rule of Transparency]: #sec:unix-transparency [8.8 Rule of Robustness]: #sec:unix-robustness [8.9 Rule of Representation]: #sec:unix-representation [8.10 Rule of Least Surprise]: #sec:unix-least-surprise [8.11 Rule of Silence]: #sec:unix-silence [8.12 Rule of Repair]: #sec:unix-repair [8.13 Rule of Economy]: #sec:unix-economy [8.14 Rule of Generation]: #sec:unix-generation [8.15 Rule of Optimization]: #sec:unix-optimization [8.16 Rule of Diversity]: #sec:unix-diversity [8.17 Rule of Extensibility]: #sec:unix-extensibility [9 History]: #history Overview FeenoX is a computational tool that can solve engineering problems which are usually casted as differential-algebraic equations (DAEs) or partial differential equations (PDEs). It is to finite elements programs and libraries what Markdown is to Word and TeX, respectively. In particular, it can solve - dynamical systems defined by a set of user-provided DAEs (such as plant control dynamics for example) - mechanical elasticity - heat conduction - structural modal analysis - neutron diffusion - neutron transport FeenoX reads a plain-text input file which contains the problem definition and writes 100%-user defined results in ASCII (through PRINT or other user-defined output instructions within the input file). For PDE problems, it needs a reference to at least one Gmsh mesh file for the discretization of the domain. It can write post-processing views in either .msh, .vtu or .vtk formats. Keep in mind that FeenoX is just a back end reading a set of input files and writing a set of output files following the design philosophy of Unix (separation, composition, representation, economy, extensibility, etc). Think of it as a transfer function (or a filter in computer-science jargon) between input files and output files: +------------+ mesh (*.msh) } | | { terminal data (*.dat) } input ----> | FeenoX |----> output { data files input (*.fee) } | | { post (vtk/msh) +------------+ Following the Unix programming philosophy, there are no graphical interfaces attached to the FeenoX core, although a wide variety of pre and post-processors can be used with FeenoX. To illustrate the transfer-function approach, consider the following input file that solves Laplace’s equation ∇²ϕ = 0 on a square with some space-dependent boundary conditions: $$ \begin{cases} \phi(x,y) = +y & \text{for $x=-1$ (left)} \\ \phi(x,y) = -y & \text{for $x=+1$ (right)} \\ \nabla \phi \cdot \hat{\vec{n}} = \sin\left(\frac{\pi}{2} \cdot x\right) & \text{for $y=-1$ (bottom)} \\ \nabla \phi \cdot \hat{\vec{n}} =0 & \text{for $y=+1$ (top)} \\ \end{cases} $$ PROBLEM laplace 2d READ_MESH square-centered.msh # [-1:+1]x[-1:+1] # boundary conditions BC left phi=+y BC right phi=-y BC bottom dphidn=sin(pi/2*x) BC top dphidn=0 SOLVE_PROBLEM # same output in .msh and in .vtk formats WRITE_MESH laplace-square.msh phi VECTOR dphidx dphidy 0 WRITE_MESH laplace-square.vtk phi VECTOR dphidx dphidy 0 [a] [b] Figure 1: Laplace’s equation solved with FeenoX. a — Post-processed with Gmsh, b — Post-processed with Paraview The .msh file can be post-processed with Gmsh, and the .vtu/.vtk file can be post-processed with Paraview. See https://www.caeplex.com for a mobile-friendly web-based interface for solving finite elements in the cloud directly from the browser. [Gmsh]: http://gmsh.info/ [a]: laplace-square-gmsh [b]: laplace-square-paraview [Paraview]: https://www.paraview.org/ Introduction FeenoX can be seen either as - a syntactically-sweetened way of asking the computer to solve engineering-related mathematical problems, and/or - a finite-element(ish) tool with a particular design basis. Note that some of the problems solved with FeenoX might not actually rely on the finite element method, but on general mathematical models and even on the finite volumes method. That is why we say it is a finite-element(ish) tool. In other words, FeenoX is a computational tool to solve - dynamical systems written as sets of ODEs/DAEs, or - steady or transient heat conduction problems, or - steady or quasi-static thermo-mechanical problems, or - modal analysis problems, or - core-level steady-state neutronics, or - community-contributed problems in such a way that the input is a near-English text file that defines the problem to be solved. One of the main features of this allegedly particular design basis is that simple problems ought to have simple inputs (rule of simplicity) or, quoting Alan Kay, “simple things should be simple, complex things should be possible.” For instance, to solve one-dimensional heat conduction over the domain x ∈ [0, 1] (which is indeed one of the most simple engineering problems we can find) the following input file is enough: PROBLEM thermal 1D # tell FeenoX what we want to solve READ_MESH slab.msh # read mesh in Gmsh's v4.1 format k = 1 # set uniform conductivity BC left T=0 # set fixed temperatures as BCs BC right T=1 # "left" and "right" are defined in the mesh SOLVE_PROBLEM # tell FeenoX we are ready to solve the problem PRINT T(0.5) # ask for the temperature at x=0.5 $ feenox thermal-1d-dirichlet-constant-k.fee 0.5 $ The mesh is assumed to have been already created with Gmsh (or any other pre-processing tool and converted to .msh format with Meshio for example). This assumption follows the rule of composition and prevents the actual input file from being polluted with mesh-dependent data (such as node coordinates and/or nodal loads) so as to keep it simple and make it Git-friendly (rule of generation). The only link between the mesh and the FeenoX input file is through physical groups (in the case above left and right) used to set boundary conditions and/or material properties. Another design-basis decision is that similar problems ought to have similar inputs (rule of least surprise). So in order to have a space-dependent conductivity, we only have to replace one line in the input above: instead of defining a scalar k we define a function of x (we also update the output to show the analytical solution as well): PROBLEM thermal 1D READ_MESH slab.msh k(x) = 1+x # space-dependent conductivity BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT T(1/2) log(1+1/2)/log(2) # print numerical and analytical solutions $ feenox thermal-1d-dirichlet-space-k.fee 0.584959 0.584963 $ The other main decision in FeenoX design is an everything is an expression design principle, meaning that any numerical input can be an algebraic expression (e.g. T(1/2) is the same as T(0.5)). If we want to have a temperature-dependent conductivity (which renders the problem non-linear) we can take advantage of the fact that T(x) is available not only as an argument to PRINT but also for the definition of algebraic functions: PROBLEM thermal 1D READ_MESH slab.msh k(x) = 1+T(x) # temperature-dependent conductivity BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT T(1/2) sqrt(1+(3*0.5))-1 # print numerical and analytical solutions $ feenox thermal-1d-dirichlet-temperature-k.fee 0.581139 0.581139 $ Let us consider the famous chaotic Lorenz’s dynamical system. Here is one way of getting an image of the butterfly-shaped attractor using FeenoX to compute it and Gnuplot to draw it. Solve ẋ = σ ⋅ (y − x) ẏ = x ⋅ (r − z) − y ż = xy − bz for 0 < t < 40 with initial conditions x(0) = −11 y(0) = −16 z(0) = 22.5 and σ = 10, r = 28 and b = 8/3, which are the classical parameters that generate the butterfly as presented by Edward Lorenz back in his seminal 1963 paper Deterministic non-periodic flow. The following ASCII input file resembles the parameters, initial conditions and differential equations of the problem as naturally as possible: PHASE_SPACE x y z # Lorenz attractor’s phase space is x-y-z end_time = 40 # we go from t=0 to 40 non-dimensional units sigma = 10 # the original parameters from the 1963 paper r = 28 b = 8/3 x_0 = -11 # initial conditions y_0 = -16 z_0 = 22.5 # the dynamical system's equations written as naturally as possible x_dot = sigma*(y - x) y_dot = x*(r - z) - y z_dot = x*y - b*z PRINT t x y z # four-column plain-ASCII output [Figure 2: The Lorenz attractor solved with FeenoX and drawn with Gnuplot] Figure 2: The Lorenz attractor solved with FeenoX and drawn with Gnuplot Indeed, when executing FeenoX with this input file, we get four ASCII columns (t, x, y and z) which we can then redirect to a file and plot it with a standard tool such as Gnuplot. Note the importance of relying on plain ASCII text formats both for input and output, as recommended by the Unix philosophy and the rule of composition: other programs can easily create inputs for FeenoX and other programs can easily understand FeenoX’s outputs. This is essentially how Unix filters and pipes work. Note the one-to-one correspondence between the human-friendly differential equations (written in TeX and rendered as typesetted mathematical symbols) and the computer-friendly input file that FeenoX reads. Let us solve the linear elasticity benchmark problem NAFEMS LE10 “Thick plate pressure.” with FeenoX. Note the one-to-one correspondence between the human-friendly problem statement from fig. 3 and the FeenoX input file: [Figure 3: The NAFEMS LE10 problem statement and the corresponding FeenoX input] Figure 3: The NAFEMS LE10 problem statement and the corresponding FeenoX input # NAFEMS Benchmark LE-10: thick plate pressure PROBLEM mechanical DIMENSIONS 3 READ_MESH nafems-le10.msh # mesh in millimeters # LOADING: uniform normal pressure on the upper surface BC upper p=1 # 1 Mpa # BOUNDARY CONDITIONS: BC DCD'C' v=0 # Face DCD'C' zero y-displacement BC ABA'B' u=0 # Face ABA'B' zero x-displacement BC BCB'C' u=0 v=0 # Face BCB'C' x and y displ. fixed BC midplane w=0 # z displacements fixed along mid-plane # MATERIAL PROPERTIES: isotropic single-material properties E = 210e3 # Young modulus in MPa nu = 0.3 # Poisson's ratio SOLVE_PROBLEM # solve! # print the direct stress y at D (and nothing more) PRINT "σ_y @ D = " sigmay(2000,0,300) "MPa" Here, “one-to-one” means that the input file does not need any extra definition which is not part of the problem formulation. Of course the cognizant engineer can give further definitions such as - the linear solver and pre-conditioner - the tolerances for iterative solvers - options for computing stresses out of displacements - etc. However, she is not obliged to as–at least for simple problems—the defaults are reasonable. This is akin to writing a text in Markdown where one does not need to care if the page is A4 or letter (as, in most cases, the output will not be printed but rendered in a web browser). The problem asks for the normal stress in the y direction σ_(y) at point “D,” which is what FeenoX writes (and nothing else, rule of economy): $ feenox nafems-le10.fee sigma_y @ D = -5.38016 MPa $ Also note that since there is only one material, there is no need to do an explicit link between material properties and physical volumes in the mesh (rule of simplicity). And since the properties are uniform and isotropic, a single global scalar for E and a global single scalar for ν are enough. [Figure 4: Normal stress σ_(y) refined around point D over 5,000x-warped displacements for LE10 created with Paraview] Figure 4: Normal stress σ_(y) refined around point D over 5,000x-warped displacements for LE10 created with Paraview For the sake of visual completeness, post-processing data with the scalar distribution of σ_(y) and the vector field of displacements [u, v, w] can be created by adding one line to the input file: WRITE_MESH nafems-le10.vtk sigmay VECTOR u v w This VTK file can then be post-processed to create interactive 3D views, still screenshots, browser and mobile-friendly webGL models, etc. In particular, using Paraview one can get a colorful bitmapped PNG (the displacements are far more interesting than the stresses in this problem). [Figure 5: See also https://caeplex.com/r/f1a82f to see this very same LE10 problem solved in the mobile-friendly web-based interface CAEplex that uses FeenoX as the back end] Figure 5: See also https://caeplex.com/r/f1a82f to see this very same LE10 problem solved in the mobile-friendly web-based interface CAEplex that uses FeenoX as the back end Please note the following two points about both cases above: 1. The input files are very similar to the statements of each problem in plain English words (rule of clarity). Those with some experience may want to compare them to the inputs decks (sic) needed for other common FEA programs. 2. By design, 100% of FeenoX’s output is controlled by the user. Had there not been any PRINT or WRITE_MESH instructions, the output would have been empty, following the rule of silence. This is a significant change with respect to traditional engineering codes that date back from times when one CPU hour was worth dozens (or even hundreds) of engineering hours. At that time, cognizant engineers had to dig into thousands of lines of data to search for a single individual result. Nowadays, following the rule of economy, it is actually far easier to ask the code to write only what is needed in the particular format that suits the user. Some basic rules are - FeenoX is just a solver working as a transfer function between input and output files. +------------+ mesh (*.msh) } | | { terminal data (*.dat) } input ----> | FeenoX |----> output { data files input (*.fee) } | | { post (vtk/msh) +------------+ Following the rules of separation, parsimony and diversity, there is no embedded graphical interface but means of using generic pre and post processing tools—in particular, Gmsh and Paraview respectively. See also CAEplex for a web-based interface. - The input files should be syntactically sugared so as to be as self-describing as possible. - Simple problems ought to need simple input files. - Similar problems ought to need similar input files. - Everything is an expression. Whenever a number is expected, an algebraic expression can be entered as well. Variables, vectors, matrices and functions are supported. Here is how to replace the boundary condition on the right side of the slab above with a radiation condition: sigma = 1 # non-dimensional stefan-boltzmann constant e = 0.8 # emissivity Tinf=1 # non-dimensional reference temperature BC right q=sigma*e*(Tinf^4-T(x)^4) This “everything is an expression” principle directly allows the application of the Method of Manufactured Solutions for code verification. - FeenoX should run natively in the cloud and be able to massively scale in parallel. See the Software Requirements Specification and the Software Development Specification for details. Since it is free (as in freedom) and open source, contributions to add features (and to fix bugs) are welcome. In particular, each kind of problem supported by FeenoX (thermal, mechanical, modal, etc.) has a subdirectory of source files which can be used as a template to add new problems, as implied in the “community-contributed problems” bullet above (rules of modularity and extensibility). See the documentation for details about how to contribute. [dynamical systems written as sets of ODEs/DAEs]: https://seamplex.com/feenox/examples/daes.html [steady or transient heat conduction problems]: https://seamplex.com/feenox/examples/thermal.html [steady or quasi-static thermo-mechanical problems]: https://seamplex.com/feenox/examples/mechanical.html [modal analysis problems]: https://seamplex.com/feenox/examples/modal.html [core-level steady-state neutronics]: https://seamplex.com/feenox/examples/neutron_diffusion.html [Gmsh]: http://gmsh.info/ [Meshio]: https://github.com/nschloe/meshio [Git]: https://git-scm.com/ [Lorenz’s dynamical system]: https://www.seamplex.com/feenox/examples/daes.html#lorenz-attractorthe-one-with-the-butterfly [Gnuplot]: http://www.gnuplot.info/ [Deterministic non-periodic flow]: http://journals.ametsoc.org/doi/abs/10.1175/1520-0469%281963%29020%3C0130%3ADNF%3E2.0.CO%3B2 [Figure 2: The Lorenz attractor solved with FeenoX and drawn with Gnuplot]: lorenz.svg [1]: (http://www.gnuplot.info/) [NAFEMS LE10 “Thick plate pressure.”]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [Figure 3: The NAFEMS LE10 problem statement and the corresponding FeenoX input]: nafems-le10-problem-input.svg [Figure 4: Normal stress σ_(y) refined around point D over 5,000x-warped displacements for LE10 created with Paraview]: nafems-le10.png [2]: https://www.paraview.org [Figure 5: See also https://caeplex.com/r/f1a82f to see this very same LE10 problem solved in the mobile-friendly web-based interface CAEplex that uses FeenoX as the back end]: nafems-le10-caeplex.png [Paraview]: https://www.paraview.org/ [CAEplex]: www.caeplex.com [syntactically sugared]: https://en.wikipedia.org/wiki/Syntactic_sugar [Software Requirements Specification]: doc/sds.md [as in freedom]: https://www.gnu.org/philosophy/free-sw.en.html [documentation]: doc Running feenox Invocation The format for running the feenox program is: feenox [options] inputfile [optional_extra_arguments] ... The feenox executable supports the following options: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information -c, --check validates if the input file is sane or not --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --ast dump an abstract syntax tree of the input --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear --progress print ASCII progress bars when solving PDEs --mumps ask PETSc to use the direct linear solver MUMPS Instructions will be read from standard input if “-” is passed as inputfile, i.e. $ echo 'PRINT 2+2' | feenox - 4 The optional [replacement arguments] part of the command line mean that each argument after the input file that does not start with an hyphen will be expanded verbatim in the input file in each occurrence of $1, $2, etc. For example $ echo 'PRINT $1+$2' | feenox - 3 4 7 PETSc and SLEPc options can be passed in [petsc options] (or [options]) as well, with the difference that two hyphens have to be used instead of only once. For example, to pass the PETSc option -ksp_view the actual FeenoX invocation should be $ feenox input.fee --ksp_view For PETSc options that take values, en equal sign has to be used: $ feenox input.fee --mg_levels_pc_type=sor See https://www.seamplex.com/feenox/examples for annotated examples. Compilation These detailed compilation instructions are aimed at amd64 Debian-based GNU/Linux distributions. The compilation procedure follows the POSIX standard, so it should work in other operating systems and architectures as well. Distributions not using apt for packages (i.e. yum) should change the package installation commands (and possibly the package names). The instructions should also work for in MacOS, although the apt-get commands should be replaced by brew or similar. Same for Windows under Cygwin, the packages should be installed through the Cygwin installer. WSL was not tested, but should work as well. [POSIX standard]: https://en.wikipedia.org/wiki/POSIX [Cygwin]: https://www.cygwin.com/ Quickstart Note that the quickest way to get started is to download an already-compiled statically-linked binary executable. Note that getting a binary is the quickest and easiest way to go but it is the less flexible one. Mind the following instructions if a binary-only option is not suitable for your workflow and/or you do need to compile the source code from scratch. On a GNU/Linux box (preferably Debian-based), follow these quick steps. See sec. 3.2.2 for the actual detailed explanations. To compile the Git repository, proceed as follows. This procedure does need git and autoconf but new versions can be pulled and recompiled easily. If something goes wrong and you get an error, do not hesitate to ask in FeenoX’s discussion page. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install git build-essential make automake autoconf libgsl-dev If you cannot install libgsl-dev but still have git and the build toolchain, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Clone Github repository git clone https://github.com/seamplex/feenox 4. Bootstrap, configure, compile & make cd feenox ./autogen.sh ./configure make -j4 If you cannot (or do not want to) use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. See the detailed compilation instructions for an explanation. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install To stay up to date, pull and then autogen, configure and make (and optionally install): git pull ./autogen.sh; ./configure; make -j4 sudo make install [download]: https://www.seamplex.com/feenox/#download [discussion page]: https://github.com/seamplex/feenox/discussions [detailed compilation instructions]: compilation.md Detailed configuration and compilation The main target and development environment is Debian GNU/Linux, although it should be possible to compile FeenoX in any free GNU/Linux variant (and even the in non-free MacOS and/or Windows platforms) running in virtually any hardware platform. FeenoX can run be run either in HPC cloud servers or a Raspberry Pi, and almost everything that sits in the middle. Following the Unix philosophy discussed in the SDS, FeenoX re-uses a lot of already-existing high-quality free and open source libraries that implement a wide variety of mathematical operations. This leads to a number of dependencies that FeenoX needs in order to implement certain features. There is only one dependency that is mandatory, namely GNU GSL (see sec. 3.2.2.1.1), which if it not found then FeenoX cannot be compiled. All other dependencies are optional, meaning that FeenoX can be compiled but its capabilities will be partially reduced. As per the SRS, all dependencies have to be available on mainstream GNU/Linux distributions and have to be free and open source software. But they can also be compiled from source in case the package repositories are not available or customized compilation flags are needed (i.e. optimization or debugging settings). In particular, PETSc (and SLEPc) also depend on other mathematical libraries to perform particular operations such as low-level linear algebra operations. These extra dependencies can be either free (such as LAPACK) or non-free (such as Intel’s MKL), but there is always at least one combination of a working setup that involves only free and open source software which is compatible with FeenoX licensing terms (GPLv3+). See the documentation of each package for licensing details. [Debian GNU/Linux]: https://www.debian.org/ [SDS]: SDS.md [GNU GSL]: https://www.gnu.org/software/gsl/ [SRS]: SRS.md [PETSc]: https://petsc.org/release/ [SLEPc]: https://slepc.upv.es/ [LAPACK]: http://www.netlib.org/lapack/ [Intel’s MKL]: https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html Mandatory dependencies FeenoX has one mandatory dependency for run-time execution and the standard build toolchain for compilation. It is written in C99 so only a C compiler is needed, although make is also required. Free and open source compilers are favored. The usual C compiler is gcc but clang or Intel’s icc and the newer icx can also be used. Note that there is no need to have a Fortran nor a C++ compiler to build FeenoX. They might be needed to build other dependencies (such as PETSc and its dependencies), but not to compile FeenoX if all the dependencies are installed from the operating system’s package repositories. In case the build toolchain is not already installed, do so with sudo apt-get install gcc make If the source is to be fetched from the Git repository then not only is git needed but also autoconf and automake since the configure script is not stored in the Git repository but the autogen.sh script that bootstraps the tree and creates it. So if instead of compiling a source tarball one wants to clone from GitHub, these packages are also mandatory: sudo apt-get install git automake autoconf Again, chances are that any existing GNU/Linux box has all these tools already installed. [Git repository]: https://github.com/seamplex/feenox/ The GNU Scientific Library The only run-time dependency is GNU GSL (not to be confused with Microsoft GSL). It can be installed with sudo apt-get install libgsl-dev In case this package is not available or you do not have enough permissions to install system-wide packages, there are two options. 1. Pass the option --enable-download-gsl to the configure script below. 2. Manually download, compile and install GNU GSL If the configure script cannot find both the headers and the actual library, it will refuse to proceed. Note that the FeenoX binaries already contain a static version of the GSL so it is not needed to have it installed in order to run the statically-linked binaries. [GNU GSL]: https://www.gnu.org/software/gsl/ [Microsoft GSL]: https://github.com/microsoft/GSL Optional dependencies FeenoX has three optional run-time dependencies. It can be compiled without any of these, but functionality will be reduced: - SUNDIALS provides support for solving systems of ordinary differential equations (ODEs) or differential-algebraic equations (DAEs). This dependency is needed when running inputs with the PHASE_SPACE keyword. - PETSc provides support for solving partial differential equations (PDEs). This dependency is needed when running inputs with the PROBLEM keyword. - SLEPc provides support for solving eigen-value problems in partial differential equations (PDEs). This dependency is needed for inputs with PROBLEM types with eigen-value formulations such as modal and neutron_sn. In absence of all these, FeenoX can still be used to - solve general mathematical problems such as the ones to compute the Fibonacci sequence or the Logistic map, - operate on functions, either algebraically or point-wise interpolated such as Computing the derivative of a function as a Unix filter - read, operate over and write meshes, - etc. These optional dependencies have to be installed separately. There is no option to have configure to download them as with --enable-download-gsl. When running the test suite (sec. 3.2.2.6), those tests that need an optional dependency which was not found at compile time will be skipped. [SUNDIALS]: https://computing.llnl.gov/projects/sundials [3]: https://petsc.org/ [SLEPc]: https://slepc.upv.es/ [Fibonacci sequence]: https://www.seamplex.com/feenox/examples/#the-fibonacci-sequence [Logistic map]: https://www.seamplex.com/feenox/examples/#the-logistic-map [Computing the derivative of a function as a Unix filter]: https://www.seamplex.com/feenox/examples/#computing-the-derivative-of-a-function-as-a-unix-filter SUNDIALS SUNDIALS is a SUite of Nonlinear and DIfferential/ALgebraic equation Solvers. It is used by FeenoX to solve dynamical systems casted as DAEs with the keyword PHASE_SPACE, like the Lorenz system. Install either by doing sudo apt-get install libsundials-dev or by following the instructions in the documentation. [SUNDIALS]: https://computing.llnl.gov/projects/sundials [PHASE_SPACE]: https://www.seamplex.com/feenox/doc/feenox-manual.html#phase_space [the Lorenz system]: https://www.seamplex.com/feenox/examples/#lorenz-attractor-the-one-with-the-butterfly PETSc The Portable, Extensible Toolkit for Scientific Computation, pronounced PET-see (/ˈpɛt-siː/), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It is used by FeenoX to solve PDEs with the keyword PROBLEM, like the NAFEMS LE10 benchmark problem. Install either by doing sudo apt-get install petsc-dev or by following the instructions in the documentation. Note that - Configuring and compiling PETSc from scratch might be difficult the first time. It has a lot of dependencies and options. Read the official documentation for a detailed explanation. - There is a huge difference in efficiency between using PETSc compiled with debugging symbols and with optimization flags. Make sure to configure --with-debugging=0 for FeenoX production runs and leave the debugging symbols (which is the default) for development and debugging only. - FeenoX needs PETSc to be configured with real double-precision scalars. It will compile but will complain at run-time when using complex and/or single or quad-precision scalars. - FeenoX honors the PETSC_DIR and PETSC_ARCH environment variables when executing configure. If these two do not exist or are empty, it will try to use the default system-wide locations (i.e. the petsc-dev package). [Portable, Extensible Toolkit for Scientific Computation]: (https://petsc.org/) [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [NAFEMS LE10 benchmark problem]: https://www.seamplex.com/feenox/examples/#nafems-le10-thick-plate-pressure-benchmark [4]: https://petsc.org/release/install/ SLEPc The Scalable Library for Eigenvalue Problem Computations, is a software library for the solution of large scale sparse eigenvalue problems on parallel computers. It is used by FeenoX to solve PDEs with the keyword PROBLEM that need eigen-value computations, such as modal analysis of a cantilevered beam. Install either by doing sudo apt-get install slepc-dev or by following the instructions in the documentation. Note that - SLEPc is an extension of PETSc so the latter has to be already installed and configured. - FeenoX honors the SLEPC_DIR environment variable when executing configure. If it does not exist or is empty it will try to use the default system-wide locations (i.e. the slepc-dev package). - If PETSc was configured with --download-slepc then the SLEPC_DIR variable has to be set to the directory inside PETSC_DIR where SLEPc was cloned and compiled. [Scalable Library for Eigenvalue Problem Computations]: https://slepc.upv.es/ [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [modal analysis of a cantilevered beam]: https://www.seamplex.com/feenox/examples/#five-natural-modes-of-a-cantilevered-wire FeenoX source code There are two ways of getting FeenoX’s source code: 1. Cloning the GitHub repository at https://github.com/seamplex/feenox 2. Downloading a source tarball from https://seamplex.com/feenox/dist/src/ Git repository The main Git repository is hosted on GitHub at https://github.com/seamplex/feenox. It is public so it can be cloned either through HTTPS or SSH without needing any particular credentials. It can also be forked freely. See the Programming Guide for details about pull requests and/or write access to the main repository. Ideally, the main branch should have a usable snapshot. All other branches can contain code that might not compile or might not run or might not be tested. If you find a commit in the main branch that does not pass the tests, please report it in the issue tracker ASAP. After cloning the repository git clone https://github.com/seamplex/feenox the autogen.sh script has to be called to bootstrap the working tree, since the configure script is not stored in the repository but created from configure.ac (which is in the repository) by autogen.sh. Similarly, after updating the working tree with git pull it is recommended to re-run the autogen.sh script. It will do a make clean and re-compute the version string. [Programming Guide]: programming.md Source tarballs When downloading a source tarball, there is no need to run autogen.sh since the configure script is already included in the tarball. This method cannot update the working tree. For each new FeenoX release, the whole source tarball has to be downloaded again. Configuration To create a proper Makefile for the particular architecture, dependencies and compilation options, the script configure has to be executed. This procedure follows the GNU Coding Standards. ./configure Without any particular options, configure will check if the mandatory GNU Scientific Library is available (both its headers and run-time library). If it is not, then the option --enable-download-gsl can be used. This option will try to use wget (which should be installed) to download a source tarball, uncompress, configure and compile it. If these steps are successful, this GSL will be statically linked into the resulting FeenoX executable. If there is no internet connection, the configure script will say that the download failed. In that case, get the indicated tarball file manually, copy it into the current directory and re-run ./configure. The script will also check for the availability of optional dependencies. At the end of the execution, a summary of what was found (or not) is printed in the standard output: $ ./configure [...] ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS IDA yes PETSc yes /usr/lib/petsc SLEPc no [...] If for some reason one of the optional dependencies is available but FeenoX should not use it, then pass --without-sundials, --without-petsc and/or --without-slepc as arguments. For example $ ./configure --without-sundials --without-petsc [...] ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS no PETSc no SLEPc no [...] If configure complains about contradicting values from the cached ones, run autogen.sh again before configure and/or clone/uncompress the source tarball in a fresh location. To see all the available options run ./configure --help [GNU Coding Standards]: https://www.gnu.org/prep/standards/ [GNU Scientific Library]: https://www.gnu.org/software/gsl/ Source code compilation After the successful execution of configure, a Makefile is created. To compile FeenoX, just execute make Compilation should take a dozen of seconds. It can be even sped up by using the -j option make -j8 The binary executable will be located in the src directory but a copy will be made in the base directory as well. Test it by running without any arguments $ ./feenox FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information Run with --help for further explanations. $ The -v (or --version) option shows the version and a copyright notice: $ ./feenox -v FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Copyright © 2009--2022 https://seamplex.com/feenox GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ The -V (or --versions) option shows the dates of the last commits, the compiler options and the versions of the linked libraries: $ ./feenox -V FeenoX v0.1.24-g6cfe063 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Last commit date : Sun Aug 29 11:34:04 2021 -0300 Build date : Sun Aug 29 11:44:50 2021 -0300 Build architecture : linux-gnu x86_64 Compiler version : gcc (Debian 10.2.1-6) 10.2.1 20210110 Compiler expansion : gcc -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich Compiler flags : -O3 Builder : gtheler@chalmers GSL version : 2.6 SUNDIALS version : 4.1.0 PETSc version : Petsc Release Version 3.14.5, Mar 03, 2021 PETSc arch : PETSc options : --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --with-option-checking=0 --with-silent-rules=0 --libdir=${prefix}/lib/x86_64-linux-gnu --runstatedir=/run --with-maintainer-mode=0 --with-dependency-tracking=0 --with-debugging=0 --shared-library-extension=_real --with-shared-libraries --with-pic=1 --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --with-cxx-dialect=C++11 --with-opencl=1 --with-blas-lib=-lblas --with-lapack-lib=-llapack --with-scalapack=1 --with-scalapack-lib=-lscalapack-openmpi --with-ptscotch=1 --with-ptscotch-include=/usr/include/scotch --with-ptscotch-lib="-lptesmumps -lptscotch -lptscotcherr" --with-fftw=1 --with-fftw-include="[]" --with-fftw-lib="-lfftw3 -lfftw3_mpi" --with-superlu_dist=1 --with-superlu_dist-include=/usr/include/superlu-dist --with-superlu_dist-lib=-lsuperlu_dist --with-hdf5-include=/usr/include/hdf5/openmpi --with-hdf5-lib="-L/usr/lib/x86_64-linux-gnu/hdf5/openmpi -L/usr/lib/x86_64-linux-gnu/openmpi/lib -lhdf5 -lmpi" --CXX_LINKER_FLAGS=-Wl,--no-as-needed --with-hypre=1 --with-hypre-include=/usr/include/hypre --with-hypre-lib=-lHYPRE_core --with-mumps=1 --with-mumps-include="[]" --with-mumps-lib="-ldmumps -lzmumps -lsmumps -lcmumps -lmumps_common -lpord" --with-suitesparse=1 --with-suitesparse-include=/usr/include/suitesparse --with-suitesparse-lib="-lumfpack -lamd -lcholmod -lklu" --with-superlu=1 --with-superlu-include=/usr/include/superlu --with-superlu-lib=-lsuperlu --prefix=/usr/lib/petscdir/petsc3.14/x86_64-linux-gnu-real --PETSC_ARCH=x86_64-linux-gnu-real CFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC" CXXFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC" FCFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fPIC -ffree-line-length-0" FFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fPIC -ffree-line-length-0" CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2" LDFLAGS="-Wl,-Bsymbolic-functions -flto=auto -Wl,-z,relro -fPIC" MAKEFLAGS=w SLEPc version : SLEPc Release Version 3.14.2, Feb 01, 2021 $ Test suite The test directory contains a set of test cases whose output is known so that unintended regressions can be detected quickly (see the programming guide for more information). The test suite ought to be run after each modification in FeenoX’s source code. It consists of a set of scripts and input files needed to solve dozens of cases. The output of each execution is compared to a reference solution. In case the output does not match the reference, the test suite fails. After compiling FeenoX as explained in sec. 3.2.2.5, the test suite can be run with make check. Ideally everything should be green meaning the tests passed: $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh PASS: tests/beam-modal.sh PASS: tests/beam-ortho.sh PASS: tests/builtin.sh PASS: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh PASS: tests/i-beam-euler-bernoulli.sh PASS: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh PASS: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh PASS: tests/nafems-le1.sh PASS: tests/nafems-le10.sh PASS: tests/nafems-le11.sh PASS: tests/nafems-t1-4.sh PASS: tests/nafems-t2-3.sh PASS: tests/neutron_diffusion_src.sh PASS: tests/neutron_diffusion_keff.sh PASS: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh PASS: tests/thermal-1d.sh PASS: tests/thermal-2d.sh PASS: tests/trig.sh PASS: tests/two-cubes-isotropic.sh PASS: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh XFAIL: tests/xfail-few-properties-ortho-young.sh XFAIL: tests/xfail-few-properties-ortho-poisson.sh XFAIL: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 39 # SKIP: 0 # XFAIL: 4 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ The XFAIL result means that those cases are expected to fail (they are there to test if FeenoX can handle errors). Failure would mean they passed. In case FeenoX was not compiled with any optional dependency, the corresponding tests will be skipped. Skipped tests do not mean any failure, but that the compiled FeenoX executable does not have the full capabilities. For example, when configuring with ./configure --without-petsc (but with SUNDIALS), the test suite output should be a mixture of green and blue: $ ./configure --without-petsc [...] configure: creating ./src/version.h ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS yes PETSc no SLEPc no Compiler gcc checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating doc/Makefile config.status: executing depfiles commands $ make [...] $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh SKIP: tests/beam-modal.sh SKIP: tests/beam-ortho.sh PASS: tests/builtin.sh SKIP: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh SKIP: tests/i-beam-euler-bernoulli.sh SKIP: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh SKIP: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh SKIP: tests/nafems-le1.sh SKIP: tests/nafems-le10.sh SKIP: tests/nafems-le11.sh SKIP: tests/nafems-t1-4.sh SKIP: tests/nafems-t2-3.sh SKIP: tests/neutron_diffusion_src.sh SKIP: tests/neutron_diffusion_keff.sh SKIP: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh SKIP: tests/thermal-1d.sh SKIP: tests/thermal-2d.sh PASS: tests/trig.sh SKIP: tests/two-cubes-isotropic.sh SKIP: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh SKIP: tests/xfail-few-properties-ortho-young.sh SKIP: tests/xfail-few-properties-ortho-poisson.sh SKIP: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 21 # SKIP: 21 # XFAIL: 1 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ To illustrate how regressions can be detected, let us add a bug deliberately and re-run the test suite. Edit the source file that contains the shape functions of the second-order tetrahedra src/mesh/tet10.c, find the function feenox_mesh_tet10_h() and randomly change a sign, i.e. replace return t*(2*t-1); with return t*(2*t+1); Save, recompile, and re-run the test suite to obtain some red: $ git diff src/mesh/ diff --git a/src/mesh/tet10.c b/src/mesh/tet10.c index 72bc838..293c290 100644 --- a/src/mesh/tet10.c +++ b/src/mesh/tet10.c @@ -227,7 +227,7 @@ double feenox_mesh_tet10_h(int j, double *vec_r) { return s*(2*s-1); break; case 3: - return t*(2*t-1); + return t*(2*t+1); break; case 4: $ make [...] $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh FAIL: tests/beam-modal.sh PASS: tests/beam-ortho.sh PASS: tests/builtin.sh PASS: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh PASS: tests/i-beam-euler-bernoulli.sh PASS: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh PASS: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh PASS: tests/nafems-le1.sh FAIL: tests/nafems-le10.sh FAIL: tests/nafems-le11.sh PASS: tests/nafems-t1-4.sh PASS: tests/nafems-t2-3.sh PASS: tests/neutron_diffusion_src.sh PASS: tests/neutron_diffusion_keff.sh FAIL: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh PASS: tests/thermal-1d.sh PASS: tests/thermal-2d.sh PASS: tests/trig.sh PASS: tests/two-cubes-isotropic.sh PASS: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh XFAIL: tests/xfail-few-properties-ortho-young.sh XFAIL: tests/xfail-few-properties-ortho-poisson.sh XFAIL: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 35 # SKIP: 0 # XFAIL: 4 # FAIL: 4 # XPASS: 0 # ERROR: 0 ============================================================================ See ./test-suite.log Please report to jeremy@seamplex.com ============================================================================ make[3]: *** [Makefile:1152: test-suite.log] Error 1 make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: *** [Makefile:1260: check-TESTS] Error 2 make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: *** [Makefile:1791: check-am] Error 2 make[1]: Leaving directory '/home/gtheler/codigos/feenox' make: *** [Makefile:1037: check-recursive] Error 1 $ [test]: https://github.com/seamplex/feenox/tree/main/tests [programming guide]: programming.md Installation To be able to execute FeenoX from any directory, the binary has to be copied to a directory available in the PATH environment variable. If you have root access, the easiest and cleanest way of doing this is by calling make install with sudo or su: $ sudo make install Making install in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' gmake[2]: Entering directory '/home/gtheler/codigos/feenox/src' /usr/bin/mkdir -p '/usr/local/bin' /usr/bin/install -c feenox '/usr/local/bin' gmake[2]: Nothing to be done for 'install-data-am'. gmake[2]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make[2]: Entering directory '/home/gtheler/codigos/feenox' make[2]: Nothing to be done for 'install-exec-am'. make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ If you do not have root access or do not want to populate /usr/local/bin, you can either - Configure with a different prefix (not covered here), or - Copy (or symlink) the feenox executable to $HOME/bin: mkdir -p ${HOME}/bin cp feenox ${HOME}/bin If you plan to regularly update FeenoX (which you should), you might want to symlink instead of copy so you do not need to update the binary in $HOME/bin each time you recompile: mkdir -p ${HOME}/bin ln -sf feenox ${HOME}/bin Check that FeenoX is now available from any directory (note the command is feenox and not ./feenox): $ cd $ feenox -v FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Copyright © 2009--2022 https://seamplex.com/feenox GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ If it is not and you went through the $HOME/bin path, make sure it is in the PATH (pun). Add export PATH=${PATH}:${HOME}/bin to your .bashrc in your home directory and re-login. Advanced settings Compiling with debug symbols By default the C flags are -O3, without debugging. To add the -g flag, just use CFLAGS when configuring: ./configure CFLAGS="-g -O0" Using a different compiler FeenoX uses the CC environment variable to set the compiler. So configure like export CC=clang; ./configure Note that the CC variable has to be exported and not passed to configure. That is to say, don’t configure like ./configure CC=clang Mind also the following environment variables when using MPI-enabled PETSc: - MPICH_CC - OMPI_CC - I_MPI_CC Depending on how your system is configured, this last command might show clang but not actually use it. The FeenoX executable will show the configured compiler and flags when invoked with the --versions option: $ feenox --versions FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Last commit date : Sat Feb 12 15:35:05 2022 -0300 Build date : Sat Feb 12 15:35:44 2022 -0300 Build architecture : linux-gnu x86_64 Compiler version : gcc (Debian 10.2.1-6) 10.2.1 20210110 Compiler expansion : gcc -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich Compiler flags : -O3 Builder : gtheler@tom GSL version : 2.6 SUNDIALS version : 5.7.0 PETSc version : Petsc Release Version 3.16.3, Jan 05, 2022 PETSc arch : arch-linux-c-debug PETSc options : --download-eigen --download-hdf5 --download-hypre --download-metis --download-mumps --download-parmetis --download-pragmatic --download-scalapack SLEPc version : SLEPc Release Version 3.16.1, Nov 17, 2021 $ You can check which compiler was actually used by analyzing the feenox binary as $ objdump -s --section .comment ./feenox ./feenox: file format elf64-x86-64 Contents of section .comment: 0000 4743433a 20284465 6269616e 2031322e GCC: (Debian 12. 0010 322e302d 31342920 31322e32 2e300044 2.0-14) 12.2.0.D 0020 65626961 6e20636c 616e6720 76657273 ebian clang vers 0030 696f6e20 31342e30 2e3600 ion 14.0.6. $ It should be noted that the MPI implementation used to compile FeenoX has to match the one used to compile PETSc. Therefore, if you compiled PETSc on your own, it is up to you to ensure MPI compatibility. If you are using PETSc as provided by your distribution’s repositories, you will have to find out which one was used (it is usually OpenMPI) and use the same one when compiling FeenoX. FeenoX has been tested using PETSc compiled with - MPICH - OpenMPI - Intel MPI Compiling PETSc Particular explanation for FeenoX is to be done. For now, follow the general explanation from PETSc’s website. export PETSC_DIR=$PWD export PETSC_ARCH=arch-linux-c-opt ./configure --with-debugging=0 --download-mumps --download-scalapack --with-cxx=0 --COPTFLAGS=-O3 --FOPTFLAGS=-O3 export PETSC_DIR=$PWD ./configure --with-debugging=0 --with-openmp=0 --with-x=0 --with-cxx=0 --COPTFLAGS=-O3 --FOPTFLAGS=-O3 make PETSC_DIR=/home/ubuntu/reflex-deps/petsc-3.17.2 PETSC_ARCH=arch-linux-c-opt all [general explanation from PETSc’s website]: https://petsc.org/release/install/ Examples See https://www.seamplex.com/feenox/examples for updated information. - Basic mathematics - Hello World (and Universe)! - Ten ways of computing π - Financial decisions under inflation - The logistic map - The Fibonacci sequence - Using the closed-form formula as a function - Using a vector - Solving an iterative problem - Computing the derivative of a function as a Unix filter - On the evaluation of thermal expansion coefficients - Buffon’s needle - Ordinary Differential Equations & Differential-Algebraic Equations - Lorenz’ attractor—the one with the butterfly - The double pendulum - Vertical boiling channel - Original Clausse-Lahey formulation with uniform power distribution - Arbitrary power distribution - Reactor point kinetics - Cinética puntual directa con reactividad vs. tiempo - Cinética inversa - Control de inestabilidades de xenón - Mapas de diseño - Laplace’s equation - How to solve a maze without AI - Transient top-down - Transient bottom-up - Potential flow around an airfoil profile - Heat conduction - Thermal slabs - One-dimensional linear - Transient heat conduction from steady-state by “turning off” BCs - Non-dimensional transient heat conduction on a cylinder - Non-dimensional transient heat conduction with time-dependent properties - Linear elasticity - NAFEMS LE10 “Thick plate pressure” benchmark - NAFEMS LE11 “Solid Cylinder/Taper/Sphere-Temperature” benchmark - NAFEMS LE1 “Elliptical membrane” plane-stress benchmark - Parametric study on a cantilevered beam - Parallelepiped whose Young’s modulus is a function of the temperature - Thermal problem - Mechanical problem - Orthotropic free expansion of a cube - Thermo-elastic expansion of finite cylinders - Temperature-dependent material properties - Two cubes compressing each other - Mechanical modal analysis - Optimizing the length of a tuning fork - Five natural modes of a cantilevered wire - Neutron diffusion - IAEA 2D PWR Benchmark - IAEA 3D PWR Benchmark - Cube-spherical bare reactor - Illustration of the XS dilution & smearing effect - Neutron transport using S_(N) - Reed’s problem - Azmy’s problem - Second-order complete structured rectangular grid - Fist-order locally-refined unstructured triangular grid - Flux profiles with ray effect [Hello World (and Universe)!]: https://seamplex.com/feenox/examples/basic.html#hello-world-and-universe [Ten ways of computing π]: https://seamplex.com/feenox/examples/basic.html#ten-ways-of-computing-pi [Financial decisions under inflation]: https://seamplex.com/feenox/examples/basic.html#financial-decisions-under-inflation [The logistic map]: https://seamplex.com/feenox/examples/basic.html#the-logistic-map [The Fibonacci sequence]: https://seamplex.com/feenox/examples/basic.html#the-fibonacci-sequence [Using the closed-form formula as a function]: https://seamplex.com/feenox/examples/basic.html#using-the-closed-form-formula-as-a-function [Using a vector]: https://seamplex.com/feenox/examples/basic.html#using-a-vector [Solving an iterative problem]: https://seamplex.com/feenox/examples/basic.html#solving-an-iterative-problem [5]: https://seamplex.com/feenox/examples/basic.html#computing-the-derivative-of-a-function-as-a-unix-filter [On the evaluation of thermal expansion coefficients]: https://seamplex.com/feenox/examples/basic.html#on-the-evaluation-of-thermal-expansion-coefficients [Buffon’s needle]: https://seamplex.com/feenox/examples/basic.html#buffons-needle [Lorenz’ attractor—the one with the butterfly]: https://seamplex.com/feenox/examples/daes.html#lorenz-attractorthe-one-with-the-butterfly [The double pendulum]: https://seamplex.com/feenox/examples/daes.html#the-double-pendulum [Vertical boiling channel]: https://seamplex.com/feenox/examples/daes.html#vertical-boiling-channel [Original Clausse-Lahey formulation with uniform power distribution]: https://seamplex.com/feenox/examples/daes.html#original-clausse-lahey-formulation-with-uniform-power-distribution [Arbitrary power distribution]: https://seamplex.com/feenox/examples/daes.html#arbitrary-power-distribution [Reactor point kinetics]: https://seamplex.com/feenox/examples/daes.html#reactor-point-kinetics [Cinética puntual directa con reactividad vs. tiempo]: https://seamplex.com/feenox/examples/daes.html#cinética-puntual-directa-con-reactividad-vs.-tiempo [Cinética inversa]: https://seamplex.com/feenox/examples/daes.html#cinética-inversa [Control de inestabilidades de xenón]: https://seamplex.com/feenox/examples/daes.html#control-de-inestabilidades-de-xenón [Mapas de diseño]: https://seamplex.com/feenox/examples/daes.html#mapas-de-diseño [How to solve a maze without AI]: https://seamplex.com/feenox/examples/laplace.html#how-to-solve-a-maze-without-ai [Transient top-down]: https://seamplex.com/feenox/examples/laplace.html#transient-top-down [Transient bottom-up]: https://seamplex.com/feenox/examples/laplace.html#transient-bottom-up [Potential flow around an airfoil profile]: https://seamplex.com/feenox/examples/laplace.html#potential-flow-around-an-airfoil-profile [Thermal slabs]: https://seamplex.com/feenox/examples/thermal.html#thermal-slabs [One-dimensional linear]: https://seamplex.com/feenox/examples/thermal.html#one-dimensional-linear [Transient heat conduction from steady-state by “turning off” BCs]: https://seamplex.com/feenox/examples/thermal.html#transient-heat-conduction-from-steady-state-by-turning-off-bcs [Non-dimensional transient heat conduction on a cylinder]: https://seamplex.com/feenox/examples/thermal.html#non-dimensional-transient-heat-conduction-on-a-cylinder [Non-dimensional transient heat conduction with time-dependent properties]: https://seamplex.com/feenox/examples/thermal.html#non-dimensional-transient-heat-conduction-with-time-dependent-properties [NAFEMS LE10 “Thick plate pressure” benchmark]: https://seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [NAFEMS LE11 “Solid Cylinder/Taper/Sphere-Temperature” benchmark]: https://seamplex.com/feenox/examples/mechanical.html#nafems-le11-solid-cylindertapersphere-temperature-benchmark [NAFEMS LE1 “Elliptical membrane” plane-stress benchmark]: https://seamplex.com/feenox/examples/mechanical.html#nafems-le1-elliptical-membrane-plane-stress-benchmark [Parametric study on a cantilevered beam]: https://seamplex.com/feenox/examples/mechanical.html#parametric-study-on-a-cantilevered-beam [Parallelepiped whose Young’s modulus is a function of the temperature]: https://seamplex.com/feenox/examples/mechanical.html#parallelepiped-whose-youngs-modulus-is-a-function-of-the-temperature [Thermal problem]: https://seamplex.com/feenox/examples/mechanical.html#thermal-problem [Mechanical problem]: https://seamplex.com/feenox/examples/mechanical.html#mechanical-problem [Orthotropic free expansion of a cube]: https://seamplex.com/feenox/examples/mechanical.html#orthotropic-free-expansion-of-a-cube [Thermo-elastic expansion of finite cylinders]: https://seamplex.com/feenox/examples/mechanical.html#thermo-elastic-expansion-of-finite-cylinders [Temperature-dependent material properties]: https://seamplex.com/feenox/examples/mechanical.html#temperature-dependent-material-properties [Two cubes compressing each other]: https://seamplex.com/feenox/examples/mechanical.html#two-cubes-compressing-each-other [Optimizing the length of a tuning fork]: https://seamplex.com/feenox/examples/modal.html#optimizing-the-length-of-a-tuning-fork [Five natural modes of a cantilevered wire]: https://seamplex.com/feenox/examples/modal.html#five-natural-modes-of-a-cantilevered-wire [IAEA 2D PWR Benchmark]: https://seamplex.com/feenox/examples/neutron_diffusion.html#iaea-2d-pwr-benchmark [IAEA 3D PWR Benchmark]: https://seamplex.com/feenox/examples/neutron_diffusion.html#iaea-3d-pwr-benchmark [Cube-spherical bare reactor]: https://seamplex.com/feenox/examples/neutron_diffusion.html#cube-spherical-bare-reactor [Illustration of the XS dilution & smearing effect]: https://seamplex.com/feenox/examples/neutron_diffusion.html#illustration-of-the-xs-dilution-smearing-effect [Reed’s problem]: https://seamplex.com/feenox/examples/neutron_sn.html#reeds-problem [Azmy’s problem]: https://seamplex.com/feenox/examples/neutron_sn.html#azmys-problem [Second-order complete structured rectangular grid]: https://seamplex.com/feenox/examples/neutron_sn.html#second-order-complete-structured-rectangular-grid [Fist-order locally-refined unstructured triangular grid]: https://seamplex.com/feenox/examples/neutron_sn.html#fist-order-locally-refined-unstructured-triangular-grid [Flux profiles with ray effect]: https://seamplex.com/feenox/examples/neutron_sn.html#flux-profiles-with-ray-effect Tutorials See https://www.seamplex.com/feenox/doc/tutorials for updated information. 1. Setting up your workspace [Setting up your workspace]: https://www.seamplex.com/feenox/doc/tutorials/000-setup General tutorials 1. Overview: the tensile test case 2. Fun & games: solving mazes with PDES instead of AI [Overview: the tensile test case]: https://www.seamplex.com/feenox/doc/tutorials/110-tensile-test [Fun & games: solving mazes with PDES instead of AI]: https://www.seamplex.com/feenox/doc/tutorials/120-mazes Detailed functionality 1. Input files, expressions and command-line arguments 2. Static & transient cases 3. Functions & functionals 4. Vectors & matrices 5. Differential-algebraic equations 6. Meshes & distributions Physics tutorials 1. The Laplace equation 2. Heat conduction 3. Linear elasticity 4. Modal analysis 5. Thermo-mechanical analysis 6. Neutron diffusion 7. Neutron transport [Heat conduction]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal Description FeenoX solves a problem defined in an plain-text input file and writes user-defined outputs to the standard output and/or files, either also plain-text or with a particular format for further post-processing. The syntax of this input file is designed to be as self-describing as possible, using English keywords that explains FeenoX what problem it has to solve in a way is understandable by both humans and computers. Keywords can work either as 1. Definitions, for instance ”define function f(x) and read its data from file f.dat”), or as 2. Instructions, such as “write the stress at point D into the standard output”. A person can tell if a keyword is a definition or an instruction because the former are nouns (FUNCTION) and the latter verbs (PRINT). The equal sign = is a special keyword that is neither a verb nor a noun, and its meaning changes depending on what is on the left hand side of the assignment. a. If there is a function, then it is a definition: define an algebraic function to be equal to the expression on the right-hand side, e.g.: f(x,y) = exp(-x^2)*cos(pi*y) b. If there is a variable, vector or matrix, it is an instruction: evaluate the expression on the right-hand side and assign it to the variable or vector (or matrix) element indicated in the left-hand side. Strictly speaking, if the variable has not already been defined (and implicit declaration is allowed), then the variable is also defined as well, e.g: VAR a VECTOR b[3] a = sqrt(2) b[i] = a*i^2 There is no need to explicitly define the scalar variable a with VAR since the first assignment also defines it implicitly (if this is allowed by the keyword IMPLICIT). An input file can define its own variables as needed, such as my_var or flag. But there are some reserved names that are special in the sense that they either 1. can be set to modify the behavior of FeenoX, such as max_dt or dae_tol 2. can be read to get the internal status or results back from FeenoX, such as nodes or keff 3. can be either set or read, such as dt or done The problem being solved can be static or transient, depending on whether the special variable end_time is zero (default) or not. If it is zero and static_steps is equal to one (default), the instructions in the input file are executed once and then FeenoX quits. For example VAR x PRINT %.7f func_min(cos(x)+1,x,0,6) If static_steps is larger than one, the special variable step_static is increased and they are repeated the number of time indicated by static_steps: static_steps = 10 f(n) = n^2 - n + 41 PRINT f(step_static^2-1) If the special variable end_time is set to a non-zero value, after computing the static part a transient problem is solved. There are three kinds of transient problems: 1. Plain “standalone” transients 2. Differential-Algebraic equations (DAE) transients 3. Partial Differential equations (PDE) transients In the first case, after all the instruction in the input file were executed, the special variable t is increased by the value of dt and then the instructions are executed all over again, until t reaches end_time: end_time = 2*pi dt = 1/10 y = lag(heaviside(t-1), 1) z = random_gauss(0, sqrt(2)/10) PRINT t sin(t) cos(t) y z HEADER In the second case, the keyword PHASE_SPACE sets up DAE system. Then, one initial condition and one differential-algebraic equation has to be given for each element in the phase space. The instructions before the DAE block executed, then the DAE timestep is advanced and finally the instructions after DAE block are executed (there cannot be any instruction between the first and the last DAE): PHASE_SPACE x end_time = 1 x_0 = 1 x_dot = -x PRINT t x exp(-t) HEADER The timestep is chosen by the SUNDIALS library in order to keep an estimate of the residual error below dae_tol (default is 10⁻⁶), although min_dt and max_dt can be used to control it. See the section of the [Differential-Algebraic Equations subsystem] for more information. In the third cae, the type of PDE being solved is given by the keyword PROBLEM. Some types of PDEs do support transient problems (such as thermal) but some others do not (such as modal). See the detailed explanation of each problem type for details. Now the transient problem is handled by the TS framework of the PETSc library. In general transient PDEs involve a mesh, material properties, initial conditions, transient boundary conditions, etc. And they create a lot of data since results mean spatial and temporal distributions of one or more scalar fields: # example of a 1D heat transient problem # from https://www.mcs.anl.gov/petsc/petsc-current/src/ts/tutorials/ex3.c.html # a non-dimensional slab 0 < x < 1 is kept at T(0) = T(1) = 0 # there is an initial non-trivial T(x) # the steady-state is T(x) = 0 PROBLEM thermal 1d READ_MESH slab60.msh end_time = 1e-1 # initial condition T_0(x) := sin(6*pi*x) + 3*sin(2*pi*x) # analytical solution T_a(x,t) := exp(-36*pi^2*t)*sin(6*pi*x) + 3*exp(-4*pi^2*t)*sin(2*pi*x) # unitary non-dimensional properties k = 1 rho = 1 cp = 1 # boundary conditions BC left T=0 BC right T=0 SOLVE_PROBLEM PRINT %e t dt T(0.1) T_a(0.1,t) T(0.7) T_a(0.7,t) WRITE_MESH temp-slab.msh T IF done PRINT "\# open temp-anim-slab.geo in Gmsh to see the result!" ENDIF PETSc’s TS also honors the min_dt and max_dt variables, but the time step is controlled by the allowed relative error with the special variable ts_rtol. Again, see the section of the [Partial Differential Equations subsystem] for more information. Algebraic expressions To be done. - Everything is an expression. Initial conditions Expansions of command line arguments Reference This chapter contains a detailed reference of keywords, variables, functions and functionals available in FeenoX. These are used essentially to define the problem that FeenoX needs to solve and to define what the output should be. It should be noted that this chapter is to be used, indeed, as a reference and not as a tutorial. Differential-Algebraic Equations subsystem DAE keywords INITIAL_CONDITIONS Define how initial conditions of DAE problems are computed. INITIAL_CONDITIONS { AS_PROVIDED | FROM_VARIABLES | FROM_DERIVATIVES } In DAE problems, initial conditions may be either: - equal to the provided expressions (AS_PROVIDED) - the derivatives computed from the provided phase-space variables (FROM_VARIABLES) - the phase-space variables computed from the provided derivatives (FROM_DERIVATIVES) In the first case, it is up to the user to fulfill the DAE system at t = 0. If the residuals are not small enough, a convergence error will occur. The FROM_VARIABLES option means calling IDA’s IDACalcIC routine with the parameter IDA_YA_YDP_INIT. The FROM_DERIVATIVES option means calling IDA’s IDACalcIC routine with the parameter IDA_Y_INIT. Wasora should be able to automatically detect which variables in phase-space are differential and which are purely algebraic. However, the DIFFERENTIAL keyword may be used to explicitly define them. See the SUNDIALS documentation for further information. [SUNDIALS documentation]: https://computation.llnl.gov/casc/sundials/documentation/ida_guide.pdf PHASE_SPACE Ask FeenoX to solve a set of algebraic-differntial equations and define the variables, vectors and/or matrices that span the phase space. PHASE_SPACE PHASE_SPACE ... ... ... TIME_PATH Force time-dependent problems to pass through specific instants of time. TIME_PATH [ [ ... ] ] The time step dt will be reduced whenever the distance between the current time t and the next expression in the list is greater than dt so as to force t to coincide with the expressions given. The list of expressions should evaluate to a sorted list of values for all times. DAE variables dae_rtol Maximum allowed relative error for the solution of DAE systems. Default value is is 1 × 10⁻⁶. If a fine per-variable error control is needed, special vector abs_error should be used. Partial Differential Equations subsystem PDE keywords BC Define a boundary condition to be applied to faces, edges and/or vertices. BC [ MESH ] [ GROUP GROUP ... ] [ ... ] [ GROUPS ... ] If the name of the boundary condition matches a physical group in the mesh, and neither GROUP nor GROUPS are given, it is automatically linked to that physical group. If there are many meshes, the mesh this keyword refers to has to be given with MESH. If the boundary condition applies to more than one physical group in the mesh, they can be added using as many GROUP keywords as needed. Each argument is a single string whose meaning depends on the type of problem being solved. For instance T=150*sin(x/pi) prescribes the temperature to depend on space as the provided expression in a thermal problem and fixed fixes the displacements in all the directions in a mechanical or modal problem. See the particular section on boundary conditions for further details. If the keyword GROUPS is given, then the rest of the tokens are parsed as group names where the boundary condition is applied. If either GROUP or GROUPS are given explicitly, then the BC name is not used to try to implicitly link it to a physical group in the mesh. COMPUTE_REACTION Compute the reaction (force, moment, power, etc.) at selected face, edge or vertex. COMPUTE_REACTION [ MOMENT [ X0 ] [ Y0 ] [ Z0 ] ] RESULT { | } If the MOMENT keyword is not given, the zero-th order reaction is computed, i.e. force in elasticity and power in thermal. If the MOMENT keyword is given, then the coordinates of the center can be given with X0, Y0 and Z0. If they are not, the moment is computed about the barycenter of the physical group. The resulting reaction will be stored in the variable (thermal) or vector (elasticity) provided. If the variable or vector does not exist, it will be created. DUMP Dump raw PETSc objects used to solve PDEs into files. DUMP [ FORMAT { binary | ascii | octave } ] [ K | K_bc | b | b_bc | M | M_bc | FIND_EXTREMA Find and/or compute the absolute extrema of a function or expression over a mesh (or a subset of it). FIND_EXTREMA { | } [ OVER ] [ MESH ] [ NODES | CELLS | GAUSS ] [ MIN ] [ MAX ] [ X_MIN ] [ X_MAX ] [ Y_MIN ] [ Y_MAX ] [ Z_MIN ] [ Z_MAX ] [ I_MIN ] [ I_MAX ] Either an expression or a function of space x, y and/or z should be given. By default the search is performed over the highest-dimensional elements of the mesh, i.e. over the whole volume, area or length for three, two and one-dimensional meshes, respectively. If the search is to be carried out over just a physical group, it has to be given in OVER. If there are more than one mesh defined, an explicit one has to be given with MESH. If neither NODES, CELLS or GAUSS is given then the search is performed over the three of them. With NODES only the function or expression is evalauted at the mesh nodes. With CELLS only the function or expression is evalauted at the element centers. With GAUSS only the function or expression is evalauted at the Gauss points. The value of the absolute minimum (maximum) is stored in the variable indicated by MIN (MAX). If the variable does not exist, it is created. The value of the x-y-z coordinate of the absolute minimum (maximum) is stored in the variable indicated by X_MIN-Y_MIN-Z_MIN (X_MAX-Y_MAX-Z_MAX). If the variable does not exist, it is created. The index (either node or cell) where the absolute minimum (maximum) is found is stored in the variable indicated by I_MIN (I_MAX). INTEGRATE Spatially integrate a function or expression over a mesh (or a subset of it). INTEGRATE { | } [ OVER ] [ MESH ] [ GAUSS | CELLS ] RESULT Either an expression or a function of space x, y and/or z should be given. If the integrand is a function, do not include the arguments, i.e. instead of f(x,y,z) just write f. The results should be the same but efficiency will be different (faster for pure functions). By default the integration is performed over the highest-dimensional elements of the mesh, i.e. over the whole volume, area or length for three, two and one-dimensional meshes, respectively. If the integration is to be carried out over just a physical group, it has to be given in OVER. If there are more than one mesh defined, an explicit one has to be given with MESH. Either GAUSS or CELLS define how the integration is to be performed. With GAUSS the integration is performed using the Gauss points and weights associated to each element type. With CELLS the integral is computed as the sum of the product of the integrand at the center of each cell (element) and the cell’s volume. Do expect differences in the results and efficiency between these two approaches depending on the nature of the integrand. The scalar result of the integration is stored in the variable given by the mandatory keyword RESULT. If the variable does not exist, it is created. MATERIAL Define a material its and properties to be used in volumes. MATERIAL [ MESH ] [ LABEL [ LABEL [ ... ] ] ] [ = [ = [ ... ] ] ] If the name of the material matches a physical group in the mesh, it is automatically linked to that physical group. If there are many meshes, the mesh this keyword refers to has to be given with MESH. If the material applies to more than one physical group in the mesh, they can be added using as many LABEL keywords as needed. The names of the properties in principle can be arbitrary, but each problem type needs a minimum set of properties defined with particular names. For example, steady-state thermal problems need at least the conductivity which should be named k. If the problem is transient, it will also need heat capacity rhocp or diffusivity alpha. Mechanical problems need Young modulus E and Poisson’s ratio nu. Modal also needs density rho. Check the particular documentation for each problem type. Besides these mandatory properties, any other one can be defined. For instance, if one mandatory property depended on the concentration of boron in the material, a new per-material property can be added named boron and then the function boron(x,y,z) can be used in the expression that defines the mandatory property. PETSC_OPTIONS Pass verbatim options to PETSc. PETSC_OPTIONS "command-line options for PETSc" Options for PETSc can be passed either in at run time in the command line (run with -h to see how) or they can be set in the input file with PETSC_OPTIONS. This is handy when a particular problem is best suited to be solved using a particular set of options which can the be embedded into the problem definition. @ The string is passed verbatim to PETSc as if the options were set in the command line. Note that in this case, the string is passed verbatim to PETSc. This means that they are non-POSIX options but they have to be in the native PETSc format. That is to say, while in the command line one would give --ksp_view, here one has to give -ksp_view. Conversely, instead of --mg_levels_pc_type=sor one has to give -mg_levels_pc_type sor. PHYSICAL_GROUP Explicitly defines a physical group of elements on a mesh. PHYSICAL_GROUP [ MESH ] [ DIMENSION ] [ ID ] [ MATERIAL | | BC [ BC ... ] ] This keyword should seldom be needed. Most of the times, a combination of MATERIAL and BC ought to be enough for most purposes. The name of the PHYSICAL_GROUP keyword should match the name of the physical group defined within the input file. If there is no physical group with the provided name in the mesh, this instruction has no effect. If there are many meshes, an explicit mesh can be given with MESH. Otherwise, the physical group is defined on the main mesh. An explicit dimension of the physical group can be provided with DIMENSION. An explicit id can be given with ID. Both dimension and id should match the values in the mesh. For volumetric elements, physical groups can be linked to materials using MATERIAL. Note that if a material is created with the same name as a physical group in the mesh, they will be linked automatically, so there is no need to use PHYSCAL_GROUP for this. The MATERIAL keyword in PHYSICAL_GROUP is used to link a physical group in a mesh file and a material in the feenox input file with different names. Likewise, for non-volumetric elements, physical groups can be linked to boundary using BC. As in the preceding case, if a boundary condition is created with the same name as a physical group in the mesh, they will be linked automatically, so there is no need to use PHYSCAL_GROUP for this. The BC keyword in PHYSICAL_GROUP is used to link a physical group in a mesh file and a boundary condition in the feenox input file with different names. Note that while there can be only one MATERIAL associated to a physical group, there can be many BCs associated to a physical group. PROBLEM Ask FeenoX to solve a partial differential equation problem. PROBLEM { laplace | mechanical | modal | neutron_diffusion | neutron_sn | thermal } [ 1D | 2D | 3D | DIM ] [ AXISYMMETRIC { x | y } ] [ MESH ] [ PROGRESS ] [ DO_NOT_DETECT_HANGING_NODES | DETECT_HANGING_NODES | HANDLE_HANGING_NODES ] [ DETECT_UNRESOLVED_BCS | ALLOW_UNRESOLVED_BCS ] [ PREALLOCATE ] [ ALLOW_NEW_NONZEROS ] [ CACHE_J ] [ CACHE_B ] [ TRANSIENT | QUASISTATIC ] [ LINEAR | NON_LINEAR ] [ MODES ] [ PRECONDITIONER { gamg | mumps | lu | hypre | sor | bjacobi | cholesky | ... } ] [ LINEAR_SOLVER { gmres | mumps | bcgs | bicg | richardson | chebyshev | ... } ] [ NONLINEAR_SOLVER { newtonls | newtontr | nrichardson | ngmres | qn | ngs | ... } ] [ TRANSIENT_SOLVER { bdf | beuler | arkimex | rosw | glee | ... } ] [ TIME_ADAPTATION { basic | none | dsp | cfl | glee | ... } ] [ EIGEN_SOLVER { krylovschur | lanczos | arnoldi | power | gd | ... } ] [ SPECTRAL_TRANSFORMATION { shift | sinvert | cayley | ... } ] [ EIGEN_FORMULATION { omega | lambda } ] [ DIRICHLET_SCALING { absolute | relative } ] Currently, FeenoX can solve the following types of PDE-casted problems: - neutron_diffusion multi-group core-level neutron diffusion with a FEM formulation - neutron_sn multi-group core-level neutron transport using - discrete ordinates S_(N) for angular discretization, and - isoparametric finite elements for spatial discretization. If you are a programmer and want to contribute with another problem type, please do so! Check out the programming guide in the FeenoX repository. The number of spatial dimensions of the problem needs to be given either as 1d, 2d, 3d or after the keyword DIM. Alternatively, one can define a MESH with an explicit DIMENSIONS keyword before PROBLEM. Default is 3D. If the AXISYMMETRIC keyword is given, the mesh is expected to be two-dimensional in the x-y plane and the problem is assumed to be axi-symmetric around the given axis. If there are more than one MESHes defined, the one over which the problem is to be solved can be defined by giving the explicit mesh name with MESH. By default, the first mesh to be defined in the input file with READ_MESH (which can be defined after the PROBLEM keyword) is the one over which the problem is solved. If the keyword PROGRESS is given, three ASCII lines will show in the terminal the progress of the ensamble of the stiffness matrix (or matrices), the solution of the system of equations and the computation of gradients (stresses, heat fluxes, etc.), if applicable. If either DETECT_HANGING_NODES or HANDLE_HANGING_NODES are given, an intermediate check for nodes without any associated elements will be performed. For well-behaved meshes this check is redundant so by default it is not done (DO_NOT_DETEC_HANGING_NODES). With DETECT_HANGING_NODES, FeenoX will report the tag of the hanging nodes and stop. With HANDLE_HANGING_NODES, FeenoX will fix those nodes and try to solve the problem anyway. By default, FeenoX checks that all physical groups referred to in the BC keywords exists (DETECT_UNRESOLVED_BCS). If ALLOW_UNRESOLVED_BCS is given, FeenoX will ignore unresolved boundary conditions instead of complaining. This is handy when using the same input for different meshes which might have different groups, for example solving the same problem using a full geometry or a symmetric geometry. The latter should have at least one symmetry BC whilst the former does not. If the special variable end_time is zero, FeenoX solves a static problem—although the variable static_steps is still honored. If end_time is non-zero, FeenoX solves a transient or quasi-static problem. This can be controlled by TRANSIENT or QUASISTATIC. By default FeenoX tries to detect whether the computation should be linear or non-linear. An explicit mode can be set with either LINEAR on NON_LINEAR. The number of modes to be computed when solving eigenvalue problems is given by MODES. The default value is problem dependent. The preconditioner (PC), linear (KSP), non-linear (SNES) and time-stepper (TS) solver types be any of those available in PETSc (first option is the default): - List of PRECONDITIONERs https://petsc.org/release/manualpages/PC/PCType/. - List of LINEAR_SOLVERs https://petsc.org/release/manualpages/KSP/KSPType/. - List of NONLINEAR_SOLVERs https://petsc.org/release/manualpages/SNES/SNESType/. - List of TRANSIENT_SOLVERs http://petsc.org/release/docs/manualpages/TS/TSType.html. - List of TIME_ADAPTATIONs https://petsc.org/release/manualpages/TS/TSType/. - List of EIGEN_SOLVERs https://slepc.upv.es/documentation/current/docs/manualpages/EPS/EPSType.html. - List of SPECTRAL_TRANSFORMATIONs https://slepc.upv.es/documentation/current/docs/manualpages/ST/STType.html. If the EIGEN_FORMULATION is omega then Kϕ = ω²Mϕ is solved, and Mϕ = λKϕ if it is lambda. Default is lambda, although some particular PDEs might change it (for example free-free modal switches to omega). The EIGEN_DIRICHLET_ZERO keyword controls which of the matrices has a zero and which one has a non-zero in the diagonal when setting Dirichlet boundary conditions. Default is M, i.e. matrix K has a non-zero and matrix M has a zero. This setting, along with EIGEN_FORMULATION determines which spectral transforms can a cannot be used: you cannot invert the matrix with the zero in the diagonal. The DIRICHLET_SCALING keyword controls the way Dirichlet boundary conditions are scaled when computing the residual. Roughly, it defines how to compute the parameter α.[1] If absolute, then α is equal to the given expression. If relative, then α is equal to the given fraction of the average diagonal entries in the stiffness matrix. Default is α = 1. [1] https://scicomp.stackexchange.com/questions/3298/appropriate-space-for-weak-solutions-to-an-elliptical-pde-with-mixed-inhomogeneo/3300#3300 [programming guide in the FeenoX repository]: https://github.com/seamplex/feenox/blob/main/doc/programming.md READ_MESH Read an unstructured mesh and (optionally) functions of space-time from a file. READ_MESH { | } [ DIM ] [ SCALE ] [ OFFSET ] [ INTEGRATION { full | reduced } ] [ MAIN ] [ UPDATE_EACH_STEP ] [ READ_FIELD AS ] [ READ_FIELD ... ] [ READ_FUNCTION ] [READ_FUNCTION ...] Either a file identifier (defined previously with a FILE keyword) or a file path should be given. The format is read from the extension, which should be either - .msh, .msh2 or .msh4 Gmsh ASCII format, versions 2.2, 4.0 or 4.1 - .vtk ASCII legacy VTK - .frd CalculiX’s FRD ASCII output Note than only MSH is suitable for defining PDE domains, as it is the only one that provides physical groups (a.k.a labels) which are needed in order to define materials and boundary conditions. The other formats are primarily supported to read function data contained in the file and eventually, to operate over these functions (i.e. take differences with other functions contained in other files to compare results). The file path or file id can be used to refer to a particular mesh when reading more than one, for instance in a WRITE_MESH or INTEGRATE keyword. If a file path is given such as cool_mesh.msh, it can be later referred to as either cool_mesh.msh or just cool_mesh. The spatial dimensions can be given with DIM. If material properties are uniform and given with variables, the number of dimensions are not needed and will be read from the file at runtime. But if either properties are given by spatial functions or if functions are to be read from the mesh with READ_DATA or READ_FUNCTION, then the number of dimensions ought to be given explicitly because FeenoX needs to know how many arguments these functions take. If either OFFSET and/or SCALE are given, the node locations are first shifted and then scaled by the provided values. When defining several meshes and solving a PDE problem, the mesh used as the PDE domain is the one marked with MAIN. If none of the meshes is explicitly marked as main, the first one is used. If UPDATE_EACH_STEP is given, then the mesh data is re-read from the file at each time step. Default is to read the mesh once, except if the file path changes with time. For each READ_FIELD keyword, a point-wise defined scalar function of space named is defined and filled with the scalar data named contained in the mesh file. The READ_FUNCTION keyword is a shortcut when the scalar name and the to-be-defined function are the same. If no mesh is marked as MAIN, the first one is the main one. [Gmsh ASCII format]: http://gmsh.info/doc/texinfo/gmsh.html#MSH-file-format [ASCII legacy VTK]: https://lorensen.github.io/VTKExamples/site/VTKFileFormats/ [CalculiX’s FRD ASCII output]: https://web.mit.edu/calculix_v2.7/CalculiX/cgx_2.7/doc/cgx/node4.html SOLVE_PROBLEM Explicitly solve the PDE problem. SOLVE_PROBLEM Whenever the instruction SOLVE_PROBLEM is executed, FeenoX solves the PDE problem. For static problems, that means solving the equations and filling in the result functions. For transient or quasisstatic problems, that means advancing one time step. WRITE_MESH Write a mesh and/or generic functions of space-time to a post-processing file. WRITE_MESH [ MESH ] [ FILE_FORMAT { gmsh | vtk } ] [ NO_MESH ] [ NO_PHYSICAL_NAMES ] [ NODE | CELL ] [ ] [ ] [ ] [...] [ VECTOR [ NAME ] ] [...] [ SYMMETRIC_TENSOR [ NAME ] ] [...] The format is automatically detected from the extension, which should be either msh (version 2.2 ASCII) or vtk (legacy ASCII). Otherwise, the keyword FILE_FORMAT has to be given to set the format explicitly. If there are several meshes defined by READ_MESH, the mesh used to write the data has be given explicitly with MESH. If the NO_MESH keyword is given, only the results are written into the output file without any mesh data. Depending on the output format, this can be used to avoid repeating data and/or creating partial output files which can the be latter assembled by post-processing scripts. When targeting the .msh output format, if NO_PHYSICAL_NAMES is given then the section that sets the actual names of the physical entities is not written. This might be needed in some cases to avoid name clashes when dealing with multiple .msh files. The output is node-based by default. This can be controlled with both the NODE and CELL keywords. All fields that come after a NODE (CELL) keyword will be written at the node (cells). These keywords can be used several times and mixed with fields. For example CELL k(x,y,z) NODE T sqrt(x^2+y^2) CELL 1+z will write the conductivity and the expression 1 + z as cell-based and the temperature T(x, y, z) and the expression $\sqrt{x^2+y^2}$ as a node-based fields. If a printf-like format specifier starting with % is given, that format is used for the fields that follow. Make sure the format reads floating-point data, i.e. do not use %d. Default is %g. The data to be written has to be given as a list of fields, i.e. distributions (such as k or E), functions of space (such as T) and/or expressions (such as T(x,y,z)*sqrt(x^2+y^2+z^2)). Each field is written as a scalar, unless either the keywords VECTOR or SYMMETRIC_TENSOR are given. In the first case, the next three fields following the VECTOR keyword are taken as the vector elements. In the latter, the next six fields following the SYMMETRIC_TENSOR keyword are taken as the tensor elements. WRITE_RESULTS Write the problem mesh and problem results to a file for post-processing. WRITE_RESULTS [ FORMAT { gmsh | vtu | vtk } ] [ FILE ] [ NO_PHYSICAL_NAMES ] [ ] Default format is gmsh. If no FILE is provided, the output file is the same as the input file replacing the .fee extension with the format extension, i.e. $0.msh. If there are further optional command line arguments, they are added prepending a dash, i.e. $0-[$1-[$2...]].msh Otherwise the given FILE is used. If no explicit FORMAT is given, the format is read from the FILE extension. When targeting the .msh output format, if NO_PHYSICAL_NAMES is given then the section that sets the actual names of the physical entities is not written. This might be needed in some cases to avoid name clashes when dealing with multiple .msh files. If a printf-like format specifier starting with % is given, that format is used for the fields that follow. Make sure the format reads floating-point data, i.e. do not use %d. Default is %g. PDE variables Laplace’s equation Set PROBLEM to laplace to solve Laplace’s equation ∇²ϕ = 0 If end_time is set, then the transient problem is solved $$ \alpha(\vec{x}) \frac{\partial \phi}{\partial t} + \nabla^2 \phi = 0 $$ Laplace results phi The scalar field ϕ(x⃗) whose Laplacian is equal to zero or to f(x⃗). Laplace properties alpha The coefficient of the temporal derivative for the transient equation  $\alpha \frac{\partial \phi}{\partial t} + \nabla^2 \phi=f(\vec{x})$. If not given, default is one. f The right hand side of the equation ∇²ϕ = f(x⃗). If not given, default is zero (i.e. Laplace). Laplace boundary conditions dphidn Alias for phi'. dphidn= phi Dirichlet essential boundary condition in which the value of ϕ is prescribed. phi= phi' Neumann natural boundary condition in which the value of the normal outward derivative $\frac{\partial \phi}{\partial n}$ is prescribed. phi'= Laplace keywords Laplace variables The heat conduction equation Set PROBLEM to thermal to solve the heat conduction equation: $$ \rho(\vec{x},T) c_p(\vec{x},T) \cdot \frac{\partial T}{\partial t} + \text{div} \left[ k(\vec{x}, T) \cdot \text{grad}{T} \right] = q'''(\vec{x}, T) $$ - If end_time is zero, only the steady-state problem is solved. - If end_time > zero, then a transient problem is solved. - If either a. k, and/or b. `q’’’$, and/or c. any Neumann boundary condition depends on T, the problem is set to non-linear automatically. Check out the heat conduction tutorial as well. [6]: #problem [end_time]: #end_time [k]: #k [`q’’’]: #q-1 [T]: #t [heat conduction tutorial]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal/ Thermal results qx The heat flux field $q_x(\vec{x}) = -k(\vec{x}) \cdot \frac{\partial T}{\partial x}$ in the x direction. This is a secondary unknown of the problem. qy The heat flux field $q_y(\vec{x}) = -k(\vec{x}) \cdot \frac{\partial T}{\partial y}$ in the x direction. This is a secondary unknown of the problem. Only available for two and three-dimensional problems. qz The heat flux field $q_z(\vec{x}) = -k(\vec{x}) \cdot \frac{\partial T}{\partial z}$ in the x direction. This is a secondary unknown of the problem. Only available for three-dimensional problems. T The temperature field T(x⃗). This is the primary unknown of the problem. Thermal properties cp Specific heat in units of energy per unit of mass per degree of temperature. Either kappa, rhocp or both rho and cp are needed for transient cp k The thermal conductivity in units of power per length per degree of temperature. This property is mandatory. k kappa Thermal diffusivity in units of area per unit of time. Equal to k/(ρc_(p)), the thermal conductivity k divided by the density rho and specific heat capacity cp. Either kappa, rhocp or both rho and cp are needed for transient kappa q Alias for q''' q q''' The volumetric power dissipated in the material in units of power per unit of volume. Default is zero (i.e. no power). q''' rho Density in units of mass per unit of volume. Either kappa, rhocp or both rho and cp are needed for transient rho rhocp Product of the density rho times the specific heat capacity cp, in units of energy per unit of volume per degree of temperature. Either kappa, rhocp or both rho and cp are needed for transient rhocp T_0 The initial condition for the temperature in transient problems. If not given, a steady-steady computation at t = 0 is performed. T_guess The initial guess for the temperature in steady-state problems. If not given, a uniform distribution equal to the the average of all the temperature appearing in boundary conditions is used. Thermal boundary conditions Thermal keywords Thermal variables T_max The maximum temperature T_(max). T_min The minimum temperature T_(min). Linear elasticity Set PROBLEM to mechanical to solve linear elasticity. Check out the tensile test tutorial as well. [PROBLEM6]: #problem [tensile test tutorial]: https://www.seamplex.com/feenox/doc/tutorials/110-tensile-test/ Elasticity results Elasticity properties Elasticity boundary conditions Elasticity keywords LINEARIZE_STRESS Compute linearized membrane and/or bending stresses according to ASME VIII Div 2 Sec 5. LINEARIZE_STRESS FROM TO [ M ] [ MB ] [ P ] [ Mt ] [ MBt ] [ Pt ] [ M1 ] [ MB1 ] [ P1 ] [ M2 ] [ MB2 ] [ P2 ] [ M3 ] [ MB3 ] [ P3 ] [ FILE ] The stress classification line (SCL) defined by the coordinates of the points [x₁, y₁, z₁] and [x₂, y₂, z₂]. For two-dimensional problems, the z coordinate has to be given as well. The linearized membrane, membrane plus bending and peak total stresses are stored in the variables given by the keywords M, MB and P, respectively. These three variables use the von Mises stress intensity. Variables Mt, MBt and Pt use the Tresca stress intensity. Variables M1 (or 2 or 3), MB1 (or 2 or 3) and P1 (or 2 or 3) use the principal stress 1 (or 2 or 3). If the FILE keyword is given, the total, membrane and membrane plus bending Elasticity variables Neutron transport with discrete ordinates Neutron transport results Neutron transport properties Neutron transport boundary conditions Neutron transport keywords Neutron transport variables chi A vector of size groups with the fission spectrum. Default is one in the first group and zero in the rest. keff The effective multiplication factor k_(eff). sn_alpha The stabilization parameter α for S_(N). General & “standalone” mathematics Keywords ABORT Catastrophically abort the execution and quit FeenoX. ABORT Whenever the instruction ABORT is executed, FeenoX quits with a non-zero error leve. It does not close files nor unlock shared memory objects. The objective of this instruction is to either debug complex input files by using only parts of them or to conditionally abort the execution using IF clauses. ALIAS Define a scalar alias of an already-defined identifier. ALIAS { IS | AS } The existing object can be a variable, a vector element or a matrix element. In the first case, the name of the variable should be given as the existing object. In the second case, to alias the second element of vector v to the new name new, v(2) should be given as the existing object. In the third case, to alias second element (2,3) of matrix M to the new name new, M(2,3) should be given as the existing object. CLOSE Explicitly close a file after input/output. CLOSE The given can be either a fixed-string path or an already-defined FILE. DEFAULT_ARGUMENT_VALUE Give a default value for an optional commandline argument. DEFAULT_ARGUMENT_VALUE If a $n construction is found in the input file but the commandline argument was not given, the default behavior is to fail complaining that an extra argument has to be given in the commandline. With this keyword, a default value can be assigned if no argument is given, thus avoiding the failure and making the argument optional. The should be 1, 2, 3, etc. and will be expanded character-by-character where the $n construction is. Whether the resulting expression is to be interpreted as a string or as a numerical expression will depend on the context. FILE Define a file with a particularly formatted name to be used either as input or as output. < FILE | OUTPUT_FILE | INPUT_FILE > PATH expr_1 expr_2 ... expr_n [ INPUT | OUTPUT | APPEND | MODE ] For reading or writing into files with a fixed path, this instruction is usually not needed as the FILE keyword of other instructions (such as PRINT or MESH) can take a fixed-string path as an argument. However, if the file name changes as the execution progresses (say because one file for each step is needed), then an explicit FILE needs to be defined with this keyword and later referenced by the given name. The path should be given as a printf-like format string followed by the expressions which should be evaluated in order to obtain the actual file path. The expressions will always be floating-point expressions, but the particular integer specifier %d is allowed and internally transformed to %.0f. The file can be explicitly defined and INPUT, OUTPUT or a certain fopen() mode can be given (i.e. “a”). If not explicitly given, the nature of the file will be taken from context, i.e. FILEs in PRINT will be OUTPUT and FILEs in FUNCTION will be INPUT. This keyword just defines the FILE, it does not open it. The file will be actually opened (and eventually closed) automatically. In the rare case where the automated opening and closing does not fit the expected workflow, the file can be explicitly opened or closed with the instructions FILE_OPEN and FILE_CLOSE. FIT Find parameters to fit an analytical function to a pointwise-defined function. FIT TO VIA ... [ GRADIENT ... ] [ RANGE_MIN ... ] [ RANGE_MAX ... ] [ TOL_REL ] [ TOL_ABS ] [ MAX_ITER ] [ VERBOSE ] The function with the data has to be point-wise defined (i.e. a FUNCTION read from a file, with inline DATA or defined over a mesh). The function to be fitted has to be parametrized with at least one of the variables provided after the USING keyword. For example to fit f(x, y) = ax² + bsqrt(y) to a pointwise-defined function g(x, y) one gives FIT f TO g VIA a b. Only the names of the functions have to be given, not the arguments. Both functions have to have the same number of arguments. The initial guess of the solution is given by the initial value of the variables after the VIA keyword. Analytical expressions for the gradient of the function to be fitted with respect to the parameters to be fitted can be optionally given with the GRADIENT keyword. If none is provided, the gradient will be computed numerically using finite differences. A range over which the residuals are to be minimized can be given with RANGE_MIN and RANGE_MAX. The expressions give the range of the arguments of the functions, not of the parameters. For multidimensional fits, the range is an hypercube. If no range is given, all the definition points of the function with the data are used for the fit. Convergence can be controlled by giving the relative and absolute tolreances with TOL_REL (default DEFAULT_NLIN_FIT_EPSREL) and TOL_ABS (default DEFAULT_NLIN_FIT_EPSABS), and with the maximum number of iterations MAX_ITER (default DEFAULT_NLIN_FIT_MAX_ITER). If the optional keyword VERBOSE is given, some data of the intermediate steps is written in the standard output. FUNCTION Define a scalar function of one or more variables. FUNCTION ([,var2,...,var_n]) { = | FILE { } | VECTORS ... | MESH | DATA ... } [ COLUMNS ... ] [ INTERPOLATION { linear | polynomial | spline | spline_periodic | akima | akima_periodic | steffen | nearest | shepard | shepard_kd | bilinear } ] [ INTERPOLATION_THRESHOLD ] [ SHEPARD_RADIUS ] [ SHEPARD_EXPONENT ] The number of variables n is given by the number of arguments given between parenthesis after the function name. The arguments are defined as new variables if they had not been already defined explicitly as scalar variables. If the function is given as an algebraic expression, the short-hand operator = (or := for compatibility with Maxima) can be used. That is to say, FUNCTION f(x) = x^2 is equivalent to f(x) = x^2 (or f(x) := x^2). If a FILE is given, an ASCII file containing at least n + 1 columns is expected. By default, the first n columns are the values of the arguments and the last column is the value of the function at those points. The order of the columns can be changed with the keyword COLUMNS, which expects n + 1 expressions corresponding to the column numbers. If VECTORS is given, a set of n + 1 vectors of the same size is expected. The first n correspond to the arguments and the last one to the function values. If MESH is given, the function is point-wise defined over the mesh topology. That is to say, the independent variables (i.e. the spatial coordinates) coincide with the mesh nodes. The dependent variable (i.e. the function value) is set by “filling” a vector named vec_f (where f has to be replaced with the function name) of size equal to the number of nodes. The function can be pointwise-defined inline in the input using DATA. This should be the last keyword of the line, followed by N = k ⋅ (n + 1) expressions giving k definition points: n arguments and the value of the function. Multiline continuation using brackets { and } can be used for a clean data organization. Interpolation schemes can be given for either one or multi-dimensional functions with INTERPOLATION. Available schemes for n = 1 are: - linear - polynomial, the grade is equal to the number of data minus one - spline, cubic (needs at least 3 points) - spline_periodic - akima (needs at least 5 points) - akima_periodic (needs at least 5 points) - steffen, always-monotonic splines-like interpolator Default interpolation scheme for one-dimensional functions is DEFAULT_INTERPOLATION. Available schemes for n > 1 are: - nearest, f(x⃗) is equal to the value of the closest definition point - shepard, inverse distance weighted average definition points (might lead to inefficient evaluation) - shepard_kd, average of definition points within a kd-tree (more efficient evaluation provided SHEPARD_RADIUS is set to a proper value) - bilinear, only available if the definition points configure an structured hypercube-like grid. If n > 3, SIZES should be given. For n > 1, if the euclidean distance between the arguments and the definition points is smaller than INTERPOLATION_THRESHOLD, the definition point is returned and no interpolation is performed. Default value is square root of DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD. The initial radius of points to take into account in shepard_kd is given by SHEPARD_RADIUS. If no points are found, the radius is double until at least one definition point is found. The radius is doubled until at least one point is found. Default is DEFAULT_SHEPARD_RADIUS. The exponent of the shepard method is given by SHEPARD_EXPONENT. Default is DEFAULT_SHEPARD_EXPONENT. [inverse distance weighted average definition points]: https://en.wikipedia.org/wiki/Inverse_distance_weighting [average of definition points within a kd-tree]: https://en.wikipedia.org/wiki/Inverse_distance_weighting#Modified_Shepard's_method IF Execute a set of instructions if a condition is met. IF expr [ ELSE ] ENDIF IMPLICIT Define whether implicit definition of variables is allowed or not. IMPLICIT { NONE | ALLOWED } By default, FeenoX allows variables (but not vectors nor matrices) to be implicitly declared. To avoid introducing errors due to typos, explicit declaration of variables can be forced by giving IMPLICIT NONE. Whether implicit declaration is allowed or explicit declaration is required depends on the last IMPLICIT keyword given, which by default is ALLOWED. INCLUDE Include another FeenoX input file. INCLUDE [ FROM ] [ TO ] Includes the input file located in the string file_path at the current location. The effect is the same as copying and pasting the contents of the included file at the location of the INCLUDE keyword. The path can be relative or absolute. Note, however, that when including files inside IF blocks that instructions are conditionally-executed but all definitions (such as function definitions) are processed at parse-time independently from the evaluation of the conditional. The included file has to be an actual file path (i.e. it cannot be a FeenoX FILE) because it needs to be resolved at parse time. Yet, the name can contain a commandline replacement argument such as $1 so INCLUDE $1.fee will include the file specified after the main input file in the command line. The optional FROM and TO keywords can be used to include only portions of a file. MATRIX Define a matrix. MATRIX ROWS COLS [ DATA ... | A new matrix of the prescribed size is defined. The number of rows and columns can be an expression which will be evaluated the very first time the matrix is used and then kept at those constant values. All elements will be initialized to zero unless DATA is given (which should be the last keyword of the line), in which case the expressions will be evaluated the very first time the matrix is used and row-major-assigned to each of the elements. If there are less elements than the matrix size, the remaining values will be zero. If there are more elements than the matrix size, the values will be ignored. OPEN Explicitly open a file for input/output. OPEN [ MODE ] The given can be either a fixed-string path or an already-defined FILE. The mode is only taken into account if the file is not already defined. Default is write w. PRINT Write plain-text and/or formatted data to the standard output or into an output file. PRINT [ ... ] [ TEXT ... TEXT ] [ FILE { | } ] [ HEADER ] [ NONEWLINE ] [ SEP ] [ SKIP_STEP ] [ SKIP_STATIC_STEP ] [ SKIP_TIME ] [ SKIP_HEADER_STEP ] Each argument object which is not a keyword of the PRINT instruction will be part of the output. Objects can be either a matrix, a vector or any valid scalar algebraic expression. If the given object cannot be solved into a valid matrix, vector or expression, it is treated as a string literal if IMPLICIT is ALLOWED, otherwise a parser error is raised. To explicitly interpret an object as a literal string even if it resolves to a valid numerical expression, it should be prefixed with the TEXT keyword such as PRINT TEXT 1+1 that would print 1+1 instead of 2. Objects and string literals can be mixed and given in any order. Hashes # appearing literal in text strings have to be quoted to prevent the parser to treat them as comments within the FeenoX input file and thus ignoring the rest of the line, like PRINT "\# this is a printed comment". Whenever an argument starts with a porcentage sign %, it is treated as a C printf-compatible format specifier and all the objects that follow it are printed using the given format until a new format definition is found. The objects are treated as double-precision floating point numbers, so only floating point formats should be given. See the printf(3) man page for further details. The default format is DEFAULT_PRINT_FORMAT. Matrices, vectors, scalar expressions, format modifiers and string literals can be given in any desired order, and are processed from left to right. Vectors are printed element-by-element in a single row. See PRINT_VECTOR to print one or more vectors with one element per line (i.e. vertically). Matrices are printed element-by-element in a single line using row-major ordering if mixed with other objects but in the natural row and column fashion if it is the only given object in the PRINT instruction. If the FILE keyword is not provided, default is to write to stdout. If the HEADER keyword is given, a single line containing the literal text given for each object is printed at the very first time the PRINT instruction is processed, starting with a hash # character. If the NONEWLINE keyword is not provided, default is to write a newline \n character after all the objects are processed. Otherwise, if the last token to be printed is a numerical value, a separator string will be printed but not the newline \n character. If the last token is a string, neither the separator nor the newline will be printed. The SEP keyword expects a string used to separate printed objects. To print objects without any separation in between give an empty string like SEP "". The default is a tabulator character ‘DEFAULT_PRINT_SEPARATOR’ character. To print an empty line write PRINT without arguments. By default the PRINT instruction is evaluated every step. If the SKIP_STEP (SKIP_STATIC_STEP) keyword is given, the instruction is processed only every the number of transient (static) steps that results in evaluating the expression, which may not be constant. The SKIP_HEADER_STEP keyword works similarly for the optional HEADER but by default it is only printed once. The SKIP_TIME keyword use time advancements to choose how to skip printing and may be useful for non-constant time-step problems. PRINTF Instruction akin to C’s printf. Instruction akin to C’s printf executed locally from all MPI ranks. PRINTF PRINTF_ALL format_string [ expr_1 [ expr_2 [ ... ] ] ] The format_string should be a printf-like string containing double-precision format specifiers. A matching number of expressions should be given. No newline is written if not explicitly asked for in the format string with \n. Do not ask for string literals %s. As always, to get a literal % use %% in the format string. PRINT_FUNCTION Print one or more functions as a table of values of dependent and independent variables. PRINT_FUNCTION [ { function | expr } ... { function | expr } ] [ FILE { | } ] [ HEADER ] [ MIN ... ] [ MAX ... ] [ STEP ... ] [ NSTEPs ... ] [ FORMAT ] [ { vector | expr } ... { vector | expr } ] Each argument should be either a function or an expression. The output of this instruction consists of n + k columns, where n is the number of arguments of the first function of the list and k is the number of functions and expressions given. The first n columns are the arguments (independent variables) and the last k one has the evaluated functions and expressions. The columns are separated by a tabulator, which is the format that most plotting tools understand. Only function names without arguments are expected. All functions should have the same number of arguments. Expressions can involve the arguments of the first function. If the FILE keyword is not provided, default is to write to stdout. If HEADER is given, the output is prepended with a single line containing the names of the arguments and the names of the functions, separated by tabs. The header starts with a hash # that usually acts as a comment and is ignored by most plotting tools. If there is no explicit range where to evaluate the functions and the first function is point-wise defined, they are evalauted at the points of definition of the first one. The range can be explicitly given as a product of n ranges [x_(i, min ), x_(i, max )] for i = 1, …, n. The values x_(i, min ) and x_(i, max ) are given with the MIN and MAX keywords. The discretization steps of the ranges are given by either STEP that gives δx or NSTEPS that gives the number of steps. If the first function is not point-wise defined, the ranges are mandatory. PRINT_VECTOR Print the elements of one or more vectors, one element per line. PRINT_VECTOR [ FILE { | } ] [ HEADER ] [ SEP ] Each argument should be either a vector or an expression of the integer i. If the FILE keyword is not provided, default is to write to stdout. If HEADER is given, the output is prepended with a single line containing the names of the arguments and the names of the functions, separated by tabs. The header starts with a hash # that usually acts as a comment and is ignored by most plotting tools. The SEP keyword expects a string used to separate printed objects. To print objects without any separation in between give an empty string like SEP "". The default is a tabulator character ‘DEFAULT_PRINT_SEPARATOR’ character. SOLVE Solve a (small) system of non-linear equations. SOLVE FOR UNKNOWNS ... [ METHOD { dnewton | hybrid | hybrids | broyden } ] [ EPSABS ] [ EPSREL ] [ MAX_ITER ] SORT_VECTOR Sort the elements of a vector, optionally making the same rearrangement in another vector. SORT_VECTOR [ ASCENDING | DESCENDING ] [ ] This instruction sorts the elements of into either ascending or descending numerical order. If is given, the same rearrangement is made on it. Default is ascending order. VAR Explicitly define one or more scalar variables. VAR [ ] ... [ ] When implicit definition is allowed (see IMPLICIT), scalar variables need not to be defined before being used if from the context FeenoX can tell that an scalar variable is needed. For instance, when defining a function like f(x) = x^2 it is not needed to declare x explicitly as a scalar variable. But if one wants to define a function like g(x) = integral(f(x'), x', 0, x) then the variable x' needs to be explicitly defined as VAR x' before the integral. [IMPLICIT]: #implicit VECTOR Define a vector. VECTOR SIZE [ FUNCTION_DATA ] [ DATA ... | A new vector of the prescribed size is defined. The size can be an expression which will be evaluated the very first time the vector is used and then kept at that constant value. If the keyword FUNCTION_DATA is given, the elements of the vector will be synchronized with the inpedendent values of the function, which should be point-wise defined. The sizes of both the function and the vector should match. All elements will be initialized to zero unless DATA is given (which should be the last keyword of the line), in which case the expressions will be evaluated the very first time the vector is used and assigned to each of the elements. If there are less elements than the vector size, the remaining values will be zero. If there are more elements than the vector size, the values will be ignored. Variables done Flag that indicates whether the overall calculation is over. This variable is set to true by FeenoX when the computation finished so it can be checked in an IF block to do something only in the last step. But this variable can also be set to true from the input file, indicating that the current step should also be the last one. For example, one can set end_time = infinite and then finish the computation at t = 10 by setting done = t > 10. This done variable can also come from (and sent to) other sources, like a shared memory object for coupled calculations. done_static Flag that indicates whether the static calculation is over or not. It is set to true (i.e.  ≠ 0) by feenox if step_static ≥ static_steps. If the user sets it to true, the current step is marked as the last static step and the static calculation ends after finishing the step. It can be used in IF blocks to check if the static step is finished or not. done_transient Flag that indicates whether the transient calculation is over or not. It is set to true (i.e.  ≠ 0) by feenox if t ≥ end_time. If the user sets it to true, the current step is marked as the last transient step and the transient calculation ends after finishing the step. It can be used in IF blocks to check if the transient steps are finished or not. dt Actual value of the time step for transient calculations. When solving DAE systems, this variable is set by feenox. It can be written by the user for example by importing it from another transient code by means of shared-memory objects. Care should be taken when solving DAE systems and overwriting t. Default value is DEFAULT_DT, which is a power of two and roundoff errors are thus reduced. end_time Final time of the transient calculation, to be set by the user. The default value is zero, meaning no transient calculation. i Dummy index, used mainly in vector and matrix row subindex expressions. infinite A very big positive number. It can be used as end_time = infinite or to define improper integrals with infinite limits. Default is 2⁵⁰ ≈ 1 × 10¹⁵. in_static Flag that indicates if FeenoX is solving the iterative static calculation. This is a read-only variable that is non zero if the static calculation. in_static_first Flag that indicates if feenox is in the first step of the iterative static calculation. in_static_last Flag that indicates if feenox is in the last step of the iterative static calculation. in_time_path Flag that indicates if feenox is in a time belonging to a TIME_PATH keyword. in_transient Flag that indicates if feenox is solving transient calculation. in_transient_first Flag that indicates if feenox is in the first step of the transient calculation. in_transient_last Flag that indicates if feenox is in the last step of the transient calculation. j Dummy index, used mainly in matrix column subindex expressions. max_dt Maximum bound for the time step that feenox should take when solving DAE systems. min_dt Minimum bound for the time step that feenox should take when solving DAE systems. mpi_rank The current rank in an MPI execution. Mind the PRINTF_ALL instruction. mpi_size The number of total ranks in an MPI execution. on_gsl_error This should be set to a mask that indicates how to proceed if an error ir raised in any routine of the GNU Scientific Library. on_ida_error This should be set to a mask that indicates how to proceed if an error ir raised in any routine of the SUNDIALS Library. on_nan This should be set to a mask that indicates how to proceed if Not-A-Number signal (such as a division by zero) is generated when evaluating any expression within feenox. pi A double-precision floating point representation of the number π It is equal to the M_PI constant in math.h . pid The Unix process id of the FeenoX instance. static_steps Number of steps that ought to be taken during the static calculation, to be set by the user. The default value is one, meaning only one static step. step_static Indicates the current step number of the iterative static calculation. This is a read-only variable that contains the current step of the static calculation. step_transient Indicates the current step number of the transient static calculation. This is a read-only variable that contains the current step of the transient calculation. t Actual value of the time for transient calculations. This variable is set by FeenoX, but can be written by the user for example by importing it from another transient code by means of shared-memory objects. Care should be taken when solving DAE systems and overwriting t. zero A very small positive number. It is taken to avoid roundoff errors when comparing floating point numbers such as replacing a ≤ a_(max) with a < a_(max)+ zero. Default is (1/2)⁻⁵⁰ ≈ 9 × 10⁻¹⁶ . Functions abs Returns the absolute value of the argument x. abs(x) |x| [abs]  [abs]: figures/abs.svg acos Computes the arc in radians whose cosine is equal to the argument x. A NaN error is raised if |x| > 1. acos(x) arccos (x) [acos]  [acos]: figures/acos.svg asin Computes the arc in radians whose sine is equal to the argument x. A NaN error is raised if |x| > 1. asin(x) arcsin (x) [asin]  [asin]: figures/asin.svg atan Computes, in radians, the arc tangent of the argument x. atan(x) arctan (x) [atan]  [atan]: figures/atan.svg atan2 Computes, in radians, the arc tangent of quotient y/x, using the signs of the two arguments to determine the quadrant of the result, which is in the range [−π, π]. atan2(y,x) arctan (y/x) ceil Returns the smallest integral value not less than the argument x. ceil(x) ⌈x⌉ [ceil]  [ceil]: figures/ceil.svg clock Returns the value of a certain clock in seconds measured from a certain (but specific) milestone. The kind of clock and the initial milestone depend on the optional integer argument f. It defaults to one, meaning CLOCK_MONOTONIC. The list and the meanings of the other available values for f can be checked in the clock_gettime (2) system call manual page. clock([f]) cos Computes the cosine of the argument x, where x is in radians. A cosine wave can be generated by passing as the argument x a linear function of time such as ωt + ϕ, where ω controls the frequency of the wave and ϕ controls its phase. cos(x) cos (x) [cos]  [cos]: figures/cos.svg cosh Computes the hyperbolic cosine of the argument x, where x is in radians. cosh(x) cosh (x) [cosh]  [cosh]: figures/cosh.svg cpu_time Returns the CPU time used by the local FeenoX rank, in seconds. If the optional argument f is not provided or it is zero (default), the sum of times for both user-space and kernel-space usage is returned. For f=1 only user time is returned. For f=2 only system time is returned. cpu_time([f]) d_dt Computes the time derivative of the expression given in the argument x during a transient problem using the difference between the value of the signal in the previous time step and the actual value divided by the time step δt stored in dt. The argument x does not need to be a variable, it can be an expression involving one or more variables that change in time. For t = 0, the return value is zero. Unlike the functional derivative, the full dependence of these variables with time does not need to be known beforehand, i.e. the expression x might involve variables read from a shared-memory object at each time step. d_dt(x) $$\frac{x(t) - x(t-\Delta t)}{\Delta t} \approx \frac{d}{dt} \Big( x (t) \Big)$$ deadband Filters the first argument x with a deadband centered at zero with an amplitude given by the second argument a. deadband(x, a) $$\begin{cases} 0 & \text{if $| x | \leq a$} \\ x + a & \text{if $x < a$} \\ x - a & \text{if $x > a$} \end{cases}$$ equal Checks if the two first expressions a and b are equal, up to the tolerance given by the third optional argument ϵ. If either |a| > 1 or |b| > 1, the arguments are compared using GSL’s gsl_fcmp, otherwise the absolute value of their difference is compared against ϵ. This function returns zero if the arguments are not equal and one otherwise. Default value for ϵ = 10⁻⁹. equal(a, b, [eps]) $$\begin{cases} 1 & \text{if $a = b$} \\ 0 & \text{if $a \neq b$} \end{cases}$$ exp Computes the exponential function the argument x, i.e. the base of the natural logarithm e raised to the x-th power. exp(x) e^(x) [exp]  [exp]: figures/exp.svg expint1 Computes the first exponential integral function of the argument x. If x is zero, a NaN error is issued. expint1(x) $$\text{Re} \left[ \int_1^{\infty}\! \frac{\exp(-xt)}{t} \, dt \right]$$ [expint1]  [expint1]: figures/expint1.svg expint2 Computes the second exponential integral function of the argument x. expint2(x) $$\text{Re} \left[ \int_1^{\infty}\! \frac{\exp(-xt)}{t^2} \, dt \right]$$ [expint2]  [expint2]: figures/expint2.svg expint3 Computes the third exponential integral function of the argument x. expint3(x) $$\text{Re} \left[ \int_1^{\infty}\! \frac{\exp(-xt)}{t^3} \, dt \right]$$ [expint3]  [expint3]: figures/expint3.svg expintn Computes the n-th exponential integral function of the argument x. If n is zero or one and x is zero, a NaN error is issued. expintn(n,x) $$\text{Re} \left[ \int_1^{\infty}\! \frac{\exp(-xt)}{t^n} \, dt \right]$$ floor Returns the largest integral value not greater than the argument x. floor(x) ⌊x⌋ [floor]  [floor]: figures/floor.svg gammaf Computes the Gamma function Γ(x). gammaf(x) ∫₀^(∞)t^(x − 1) ⋅ e^(−t) dt [gammaf]  [gammaf]: figures/gammaf.svg heaviside Computes the zero-centered Heaviside step function of the argument x. If the optional second argument δ is provided, the discontinuous step at x = 0 is replaced by a ramp starting at x = 0 and finishing at x = δ. heaviside(x, [delta]) $$\begin{cases} 0 & \text{if $x < 0$} \\ x / \delta & \text{if $0 < x < \delta$} \\ 1 & \text{if $x > \delta$} \end{cases}$$ [heaviside]  [heaviside]: figures/heaviside.svg if Performs a conditional testing of the first argument a, and returns either the second optional argument b if a is different from zero or the third optional argument c if a evaluates to zero. The comparison of the condition a with zero is performed within the precision given by the optional fourth argument ϵ. If the second argument c is not given and a is not zero, the function returns one. If the third argument c is not given and a is zero, the function returns zero. The default precision is ϵ = 10⁻⁹. Even though if is a logical operation, all the arguments and the returned value are double-precision floating point numbers. if(a, [b], [c], [eps]) $$\begin{cases} b & \text{if $|a|<\epsilon$} \\ c & \text{otherwise} \end{cases}$$ integral_dt Computes the time integral of the expression given in the argument x during a transient problem with the trapezoidal rule using the value of the signal in the previous time step and the current value. At t = 0 the integral is initialized to zero. Unlike the functional integral, the full dependence of these variables with time does not need to be known beforehand, i.e. the expression x might involve variables read from a shared-memory object at each time step. integral_dt(x) $$z^{-1}\left[ \int_0^{t-\Delta t} x(t') \, dt' \right] + \frac{x(t) + x(t-\Delta t)}{2} \, \Delta t \approx \int_0^{t} x(t') \, dt'$$ integral_euler_dt Idem as integral_dt but uses the backward Euler rule to update the instantaenous integral value. This function is provided in case this particular way of approximating time integrals is needed, for instance to compare FeenoX solutions with other computer codes. In general, it is recommended to use integral_dt. integral_euler_dt(x) z⁻¹[∫₀^(t − Δt)x(t′) dt′] + x(t) Δt ≈ ∫₀^(t)x(t′) dt′ is_even Returns one if the argument x rounded to the nearest integer is even. is_even(x) $$ \begin{cases}1 &\text{if $x$ is even} \\ 0 &\text{if $x$ is odd} \end{cases}$$ is_in_interval Returns true if the argument x is in the interval [a, b), i.e. including a but excluding b. is_in_interval(x, a, b) $$\begin{cases} 1 & \text{if $a \leq x < b$} \\ 0 & \text{otherwise} \end{cases}$$ is_odd Returns one if the argument x rounded to the nearest integer is odd. is_odd(x) $$ \begin{cases}1 &\text{if $x$ is odd} \\ 0 &\text{if $x$ is even} \end{cases}$$ j0 Computes the regular cylindrical Bessel function of zeroth order evaluated at the argument x. j0(x) J₀(x) [j0]  [j0]: figures/j0.svg lag Filters the first argument x(t) with a first-order lag of characteristic time τ, i.e. this function applies the transfer function $G(s) = \frac{1}{1 + s\tau}$ to the time-dependent signal x(t) to obtain a filtered signal y(t), by assuming that it is constant during the time interval [t − Δt, t] and using the analytical solution of the differential equation for that case at t = Δt with the initial condition y(0) = y(t − Δt). lag(x, tau) $$x(t) - \Big[ x(t) - y(t-\Delta t) \Big] \cdot \exp\left(-\frac{\Delta t}{\tau}\right)$$ lag_bilinear Filters the first argument x(t) with a first-order lag of characteristic time τ to the time-dependent signal x(t) by using the bilinear transformation formula. lag_bilinear(x, tau) $$x(t-\Delta t) \cdot \left[ 1 - \frac{\Delta t}{2\tau} \right] + \left[ \frac{x(t) + x(t - \Delta t)}{1 + \frac{\Delta t}{2\tau}}\right] \cdot \frac{\Delta t}{2\tau}$$ lag_euler Filters the first argument x(t) with a first-order lag of characteristic time τ to the time-dependent signal x(t) by using the Euler forward rule. lag_euler(x, tau) $$x(t-\Delta t) + \Big[ x(t) - x(t - \Delta t) \Big] \cdot \frac{\Delta t}{\tau}$$ last Returns the value the variable x had in the previous time step. This function is equivalent to the Z-transform operator “delay” denoted by z⁻¹[x]. For t = 0 the function returns the actual value of x. The optional flag p should be set to one if the reference to last is done in an assignment over a variable that already appears inside expression x such as x = last(x). See example number 2. last(x,[p]) z⁻¹[x] = x(t − Δt) limit Limits the first argument x to the interval [a, b]. The second argument a should be less than the third argument b. limit(x, a, b) $$\begin{cases} a & \text{if $x < a$} \\ x & \text{if $a \leq x \leq b$} \\ b & \text{if $x > b$} \end{cases}$$ limit_dt Limits the value of the first argument x(t) so to that its time derivative is bounded to the interval [a, b]. The second argument a should be less than the third argument b. limit_dt(x, a, b) $$\begin{cases} x(t) & \text{if $a \leq dx/dt \leq b$} \\ x(t-\Delta t) + a \cdot \Delta t & \text{if $dx/dt < a$} \\ x(t-\Delta t) + b \cdot \Delta t & \text{if $dx/dt > b$} \end{cases}$$ log Computes the natural logarithm of the argument x. If x is zero or negative, a NaN error is issued. log(x) ln (x) [log]  [log]: figures/log.svg mark_max Returns the integer index i of the maximum of the arguments x_(i) provided. Currently only maximum of ten arguments can be provided. mark_max(x1, x2, [...], [x10]) i/max (x₁, x₂, …, x₁₀) = x_(i) mark_min Returns the integer index i of the minimum of the arguments x_(i) provided. Currently only maximum of ten arguments can be provided. mark_max(x1, x2, [...], [x10]) i/min (x₁, x₂, …, x₁₀) = x_(i) max Returns the maximum of the arguments x_(i) provided. Currently only maximum of ten arguments can be given. max(x1, x2, [...], [x10]) max (x₁, x₂, …, x₁₀) memory Returns the maximum memory (resident set size) used by FeenoX, in Gigabytes. memory() min Returns the minimum of the arguments x_(i) provided. Currently only maximum of ten arguments can be given. min(x1, x2, [...], [x10]) min (x₁, x₂, …, x₁₀) mod Returns the remainder of the division between the first argument a and the second one b. Both arguments may be non-integral. mod(a, b) $$a - \left\lfloor \frac{a}{b} \right\rfloor \cdot b$$ mpi_memory_local Returns the memory usage as reported by PETSc in the give rank, in Gigabytes. If no rank is given, each rank returns a local value which should be printed with PRINTF_ALL. Returns the memory global usage as reported by PETSc summing over all ranks, in Gigabytes. mpi_memory_local([rank]) mpi_memory_global() not Returns one if the first argument x is zero and zero otherwise. The second optional argument ϵ gives the precision of the “zero” evaluation. If not given, default is ϵ = 10⁻⁹. not(x, [eps]) $$ \begin{cases}1 &\text{if $|x| < \epsilon$} \\ 0 &\text{otherwise} \end{cases}$$ random Returns a random real number uniformly distributed between the first real argument x₁ and the second one x₂. If the third integer argument s is given, it is used as the seed and thus repetitive sequences can be obtained. If no seed is provided, the current time (in seconds) plus the internal address of the expression is used. Therefore, two successive calls to the function without seed (hopefully) do not give the same result. This function uses a second-order multiple recursive generator described by Knuth in Seminumerical Algorithms, 3rd Ed., Section 3.6. random(x1, x2, [s]) x₁ + r ⋅ (x₂ − x₁)    0 ≤ r < 1 random_gauss Returns a random real number with a Gaussian distribution with a mean equal to the first argument x₁ and a standard deviation equatl to the second one x₂. If the third integer argument s is given, it is used as the seed and thus repetitive sequences can be obtained. If no seed is provided, the current time (in seconds) plus the internal address of the expression is used. Therefore, two successive calls to the function without seed (hopefully) do not give the same result. This function uses a second-order multiple recursive generator described by Knuth in Seminumerical Algorithms, 3rd Ed., Section 3.6. random_gauss(x1, x2, [s]) round Rounds the argument x to the nearest integer. Halfway cases are rounded away from zero. round(x) $$\begin{cases} \lceil x \rceil & \text{if $\lceil x \rceil - x < 0.5$} \\ \lceil x \rceil & \text{if $\lceil x \rceil - x = 0.5 \wedge x > 0$} \\ \lfloor x \rfloor & \text{if $x-\lfloor x \rfloor < 0.5$} \\ \lfloor x \rfloor & \text{if $x-\lfloor x \rfloor = 0.5 \wedge x < 0$} \end{cases}$$ [round]  [round]: figures/round.svg sawtooth_wave Computes a sawtooth wave between zero and one with a period equal to one. As with the sine wave, a sawtooh wave can be generated by passing as the argument x a linear function of time such as ωt + ϕ, where ω controls the frequency of the wave and ϕ controls its phase. sawtooth_wave(x) x − ⌊x⌋ [sawtooth_wave]  [sawtooth_wave]: figures/sawtooth_wave.svg sech Computes the hyperbolic secant of the argument x, where x is in radians. sech(x) sech(x) [sech]  [sech]: figures/sech.svg sgn Returns minus one, zero or plus one depending on the sign of the first argument x. The second optional argument ϵ gives the precision of the “zero” evaluation. If not given, default is ϵ = 10⁻⁹. sgn(x, [eps]) $$ \begin{cases}-1 &\text{if $x \le -\epsilon$} \\ 0 &\text{if $|x| < \epsilon$} \\ +1 &\text{if $x \ge +\epsilon$} \end{cases}$$ [sgn]  [sgn]: figures/sgn.svg sin Computes the sine of the argument x, where x is in radians. A sine wave can be generated by passing as the argument x a linear function of time such as ωt + ϕ, where ω controls the frequency of the wave and ϕ controls its phase. sin(x) sin (x) [sin]  [sin]: figures/sin.svg sinh Computes the hyperbolic sine of the argument x, where x is in radians. sinh(x) sinh (x) [sinh]  [sinh]: figures/sinh.svg sqrt Computes the positive square root of the argument x. If x is negative, a NaN error is issued. sqrt(x) $$+\sqrt{x}$$ [sqrt]  [sqrt]: figures/sqrt.svg square_wave Computes a square function between zero and one with a period equal to one. The output is one for 0 < x < 1/2 and zero for 1/2 ≤ x < 1. As with the sine wave, a square wave can be generated by passing as the argument x a linear function of time such as ωt + ϕ, where ω controls the frequency of the wave and ϕ controls its phase. square_wave(x) $$\begin{cases} 1 & \text{if $x - \lfloor x \rfloor < 0.5$} \\ 0 & \text{otherwise} \end{cases}$$ [square_wave]  [square_wave]: figures/square_wave.svg tan Computes the tangent of the argument x, where x is in radians. tan(x) tan (x) [tan]  [tan]: figures/tan.svg tanh Computes the hyperbolic tangent of the argument x, where x is in radians. tanh(x) tanh (x) [tanh]  [tanh]: figures/tanh.svg threshold_max Returns one if the first argument x is greater than the threshold given by the second argument a, and zero otherwise. If the optional third argument b is provided, an hysteresis of width b is needed in order to reset the function value. Default is no hysteresis, i.e. b = 0. threshold_max(x, a, [b]) $$\begin{cases} 1 & \text{if $x > a$} \\ 0 & \text{if $x < a-b$} \\ \text{last value of $y$} & \text{otherwise} \end{cases}$$ threshold_min Returns one if the first argument x is less than the threshold given by the second argument a, and zero otherwise. If the optional third argument b is provided, an hysteresis of width b is needed in order to reset the function value. Default is no hysteresis, i.e. b = 0. threshold_min(x, a, [b]) $$\begin{cases} 1 & \text{if $x < a$} \\ 0 & \text{if $x > a+b$} \\ \text{last value of $y$} & \text{otherwise} \end{cases}$$ triangular_wave Computes a triangular wave between zero and one with a period equal to one. As with the sine wave, a triangular wave can be generated by passing as the argument x a linear function of time such as ωt + ϕ, where ω controls the frequency of the wave and ϕ controls its phase. triangular_wave(x) $$\begin{cases} 2 (x - \lfloor x \rfloor) & \text{if $x - \lfloor x \rfloor < 0.5$} \\ 2 [1-(x - \lfloor x \rfloor)] & \text{otherwise} \end{cases}$$ [triangular_wave]  [triangular_wave]: figures/triangular_wave.svg wall_time Returns the time elapsed since the invocation of FeenoX, in seconds. wall_time() Functionals derivative Computes the derivative of the expression f(x) given in the first argument with respect to the variable x given in the second argument at the point x = a given in the third argument using an adaptive scheme. The fourth optional argument h is the initial width of the range the adaptive derivation method starts with. The fifth optional argument p is a flag that indicates whether a backward (p < 0), centered (p = 0) or forward (p > 0) stencil is to be used. This functional calls the GSL functions gsl_deriv_backward, gsl_deriv_central or gsl_deriv_forward according to the indicated flag p. Defaults are h = (1/2)⁻¹⁰ ≈ 9.8 × 10⁻⁴ and p = 0. derivative(f(x), x, a, [h], [p]) $$\left. \frac{d}{dx} \Big[ f(x) \Big] \right|_{x = a} $$ func_min Finds the value of the variable x given in the second argument which makes the expression f(x) given in the first argument to be local a minimum in the in the range [a, b] given by the third and fourth arguments. If there are many local minima, which one is returned cannot be known beforehand. The optional fifth argument ϵ gives a relative tolerance for testing convergence, corresponding to GSL epsrel (note that epsabs is set also to ϵ). The sixth optional argument is an integer which indicates the algorithm to use: 0 (default) is quad_golden, 1 is brent and 2 is goldensection. See the GSL documentation for further information on the algorithms: https://www.gnu.org/software/gsl/doc/html/min.html Default is ϵ = (1/2)⁻²⁰ ≈ 9.6 × 10⁻⁷. y = func_min(f(x), x, a, b, [eps], [alg]) y = {x ∈ [a, b]/f(x) = min_([a, b])f(x)} gauss_kronrod Computes the integral of the expression f(x) given in the first argument with respect to variable x given in the second argument over the interval [a, b] given in the third and fourth arguments respectively using a non-adaptive procedure which uses fixed Gauss-Kronrod-Patterson abscissae to sample the integrand at a maximum of 87 points. It is provided for fast integration of smooth functions. The algorithm applies the Gauss-Kronrod 10-point, 21-point, 43-point and 87-point integration rules in succession until an estimate of the integral is achieved within the relative tolerance given in the fifth optional argument ϵ It corresponds to GSL’s epsrel parameter (epsabs is set to zero). The rules are designed in such a way that each rule uses all the results of its predecessors, in order to minimize the total number of function evaluations. Defaults are ϵ = (1/2)⁻¹⁰ ≈ 10⁻³. See GSL reference for further information. gauss_kronrod(f(x), x, a, b, [eps]) ∫_(a)^(b)f(x) dx gauss_legendre Computes the integral of the expression f(x) given in the first argument with respect to variable x given in the second argument over the interval [a, b] given in the third and fourth arguments respectively using the n-point Gauss-Legendre rule, where n is given in the optional fourth argument. It is provided for fast integration of smooth functions with known polynomic order (it is exact for polynomials of order 2n − 1). This functional calls GSL function gsl_integration_glfixedp. Default is n = 12. See GSL reference for further information. gauss_legendre(f(x), x, a, b, [n]) ∫_(a)^(b)f(x) dx integral Computes the integral of the expression f(x) given in the first argument with respect to variable x given in the second argument over the interval [a, b] given in the third and fourth arguments respectively using an adaptive scheme, in which the domain is divided into a number of maximum number of subintervals and a fixed-point Gauss-Kronrod-Patterson scheme is applied to each quadrature subinterval. Based on an estimation of the error committed, one or more of these subintervals may be split to repeat the numerical integration algorithm with a refined division. The fifth optional argument ϵ is is a relative tolerance used to check for convergence. It corresponds to GSL’s epsrel parameter (epsabs is set to zero). The sixth optional argument 1 ≤ k ≤ 6 is an integer key that indicates the integration rule to apply in each interval. It corresponds to GSL’s parameter key. The seventh optional argument gives the maximum number of subdivisions, which defaults to 1024. If the integration interval [a, b] if finite, this functional calls the GSL function gsl_integration_qag. If a is less that minus the internal variable infinite, b is greater that infinite or both conditions hold, GSL functions gsl_integration_qagil, gsl_integration_qagiu or gsl_integration_qagi are called. The condition of finiteness of a fixed range [a, b] can thus be changed by modifying the internal variable infinite. Defaults are ϵ = (1/2)⁻¹⁰ ≈ 10⁻³ and k = 3. The maximum numbers of subintervals is limited to 1024. Due to the adaptivity nature of the integration method, this function gives good results with arbitrary integrands, even for infinite and semi-infinite integration ranges. However, for certain integrands, the adaptive algorithm may be too expensive or even fail to converge. In these cases, non-adaptive quadrature functionals ought to be used instead. See GSL reference for further information. integral(f(x), x, a, b, [eps], [k], [max_subdivisions]) ∫_(a)^(b)f(x) dx prod Computes product of the N = b − a expressions f(i) given in the first argument by varying the variable~i given in the second argument between~a given in the third argument and~b given in the fourth argument,~i = a, a + 1, …, b − 1, b. prod(f(i), i, a, b) $$\prod_{i=a}^b f_i $$ root Computes the value of the variable x given in the second argument which makes the expression f(x) given in the first argument to be equal to zero by using a root bracketing algorithm. The root should be in the range [a, b] given by the third and fourth arguments. The optional fifth argument ϵ gives a relative tolerance for testing convergence, corresponding to GSL epsrel (note that epsabs is set also to ϵ). The sixth optional argument is an integer which indicates the algorithm to use: 0 (default) is brent, 1 is falsepos and 2 is bisection. See the GSL documentation for further information on the algorithms. The seventh optional argument p is a flag that indicates how to proceed if the sign of f(a) is equal to the sign of f(b). If p = 0 (default) an error is raised, otherwise it is not. If more than one root is contained in the specified range, the first one to be found is returned. The initial guess is x₀ = (a + b)/2. If no roots are contained in the range and p ≠ 0, the returned value can be any value. Default is ϵ = (1/2)⁻¹⁰ ≈ 10³. root(f(x), x, a, b, [eps], [alg], [p]) {x ∈ [a, b]/f(x) = 0} sum Computes sum of the N = b − a expressions f_(i) given in the first argument by varying the variable i given in the second argument between a given in the third argument and b given in the fourth argument, i = a, a + 1, …, b − 1, b. sum(f_i, i, a, b) $$\sum_{i=a}^b f_i $$ Vector functions vecdot Computes the dot product between vectors a⃗ and b⃗, which should have the same size. vecdot(a,b) $$\vec{a} \cdot \vec{b} = \sum_{i=1}^{\text{vecsize}(\vec{a})} a_i \cdot b_i$$ vecmax Returns the biggest element of vector b⃗, taking into account its sign (i.e. 1 > −2). vecmax(b) max_(i)b_(i) vecmaxindex Returns the index of the biggest element of vector b⃗, taking into account its sign (i.e. 2 > −1). vecmaxindex(b) i/b_(i) = max_(i)b_(i) vecmin Returns the smallest element of vector b⃗, taking into account its sign (i.e. −2 < 1). vecmin(b) min_(i)b_(i) vecminindex Returns the index of the smallest element of vector b⃗, taking into account its sign (i.e. −2 < 1). vecminindex(b) i/b_(i) = min_(i)b_(i) vecnorm Computes euclidean norm of vector b⃗. Other norms can be computed explicitly using the sum functional. vecnorm(b) $$\sqrt{\sum_{i=1}^{\text{vecsize}(\vec{b})} b^2_i}$$ vecsize Returns the size of vector b⃗. vecsize(b) vecsum Computes the sum of all the components of vector b⃗. vecsum(b) $$\sum_{i=1}^{\text{vecsize}(\vec{b})} b_i$$ FeenoX & the Unix Philospohy In 1978, Doug McIlroy—the inventor of Unix pipes and one of the founders of the Unix tradition—stated: i. Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features. ii. Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input. iii. Design and build software, even operating systems, to be tried early, ideally within weeks. Don’t hesitate to throw away the clumsy parts and rebuild them. iv. Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you’ve finished using them. He later summarized it this way: This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. FeenoX explicitly followed the above ideas from scratch, especially the for sentences in bullet ii. It is even, like Unix itself, a third-system effect where clumsy parts of previous attempts were thrown away and rebuilt from scratch. The following sections explain how each of the seventeen rules was taken into account when designing and implementing FeenoX. Rule of Modularity Developers should build a program out of simple parts connected by well defined interfaces, so problems are local, and parts of the program can be replaced in future versions to support new features. This rule aims to save time on debugging code that is complex, long, and unreadable. FeenoX is designed to be as lightweight as possible. On the one hand, it relies on third-party high-quality libraries to do the heavy mathematical weightlifting such as - GNU Scientific Library for general mathematics, - SUNDIALS IDA for ODEs and DAEs, - PETSc for linear, non-linear and transient PDEs, and - SLEPc for PDEs involving eigen problems because these libraries were written by professional programmers using algorithms designed by professional mathematicians. Yet-to-be-discovered improved mathematical schemes and/or coding algorithms can be eventually used by FeenoX by just updating those dependencies, which for sure will keep their well-defined interfaces (because they are programmed by professional programmers). Moreover, the extensibility feature (sec. 8.17) of having each PDE in separate directories which can be added or removed at compile time without changing any line of the source code goes into this direction as well. Relying of C function pointers allows (in principle) to replace these “virtual” methods with other ones using the same interface. Note that our (human) languages in general and words in particular shape and limit the way we think. Fortran’s concept of “modules” is not the same as Unix’s concept of “modularity.” I wish two different words had been used. [GNU Scientific Library]: https://www.gnu.org/software/gsl/ [SUNDIALS IDA]: https://computing.llnl.gov/projects/sundials/ida [PETSc3]: https://petsc.org/ [7]: http://slepc.upv.es/ Rule of Clarity Developers should write programs as if the most important communication is to the developer who will read and maintain the program, rather than the computer. This rule aims to make code as readable and comprehensible as possible for whoever works on the code in the future. Of course there might be a confirmation bias in this section because every programmer thinks their code is clear (and everybody else’s is not). But the first design decision to fulfill this rule is the programming language: there is little change to fulfill it with Fortran. One might argue that C++ can be clearer than C in some points, but for the vast majority of the source code they are equally clear. Besides, C is far simpler than C++ (see rule of simplicity). The second decision is not about the FeenoX source code but about FeenoX inputs: clear human-readable input files without any extra unneeded computer-level nonsense. The two illustrative cases are the NAFEMS LE10 & LE11 benchmarks, where there is a clear one-to-one correspondence between the “engineering” formulation and the input file FeenoX understands. [LE10]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [LE11]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le11-solid-cylindertapersphere-temperature-benchmark Rule of Composition Developers should write programs that can communicate easily with other programs. This rule aims to allow developers to break down projects into small, simple programs rather than overly complex monolithic programs. Previous designs of FeenoX’ predecessors used to include instructions to perform parametric sweeps( and even optimization loops), non-trivial macro expansions using M4 and even execution of arbitrary shell commands. These non-trivial operations were removed from FeenoX to focus on the rule of composition, paying especially attention to easing the inclusion of calling the feenox binary from shell scripts, enforcing the composition with other Unix-like tools. Emphasis has been put on adding flexibility to programmatic generation of input files (see also rule of generation in sec. 8.14) and the handling and expansion of command-line arguments to increase the composition with other programs. Moreover, the output is 100% controlled by the user at run-time so it can be tailored to suit any other programs’ input needs as well. An illustrative example is creating professional-looking tables with results using AWK & LaTeX. [creating professional-looking tables with results using AWK & LaTeX]: https://www.seamplex.com/feenox/doc/sds.html#sec:interoperability Rule of Separation Developers should separate the mechanisms of the programs from the policies of the programs; one method is to divide a program into a front-end interface and a back-end engine with which that interface communicates. This rule aims to prevent bug introduction by allowing policies to be changed with minimum likelihood of destabilizing operational mechanisms. FeenoX relies of the rule of separation (which also links to the next two rules of simplicity and parsimony) from the very beginning of its design phase. It was explicitly designed as a glue layer between a mesher like Gmsh and a post-processor like Gnuplot, Gmsh or Paraview. This way, not only flexibility and diversity (see #sec:unix-diversity) can be boosted, but also technological changes can be embraced with little or no effort. For example, CAEplex provides a web-based platform for performing thermo-mechanical analysis on the cloud running from the browser. Had FeenoX been designed as a traditional desktop-GUI program, this would have been impossible. If in the future CAD/CAE interfaces migrate into virtual and/or augmented reality with interactive 3D holographic input/output devices, the development effort needed to use FeenoX as the back end is negligible. [8]: https://www.caeplex.com Rule of Simplicity Developers should design for simplicity by looking for ways to break up program systems into small, straightforward cooperating pieces. This rule aims to discourage developers’ affection for writing “intricate and beautiful complexities” that are in reality bug prone programs. The main source of simplicity comes from the design of the syntax of the input files, discussed in detail in the SDS: - English-like self-evident input files matching as close as possible the problem text. - Simple problems need simple input. - Similar problems need similar inputs. - If there is a single material there is no need to link volumes to properties. [9]: https://www.seamplex.com/feenox/doc/sds.html#sec:input Rule of Parsimony Developers should avoid writing big programs. This rule aims to prevent overinvestment of development time in failed or suboptimal approaches caused by the owners of the program’s reluctance to throw away visibly large pieces of work. Smaller programs are not only easier to write, optimize, and maintain; they are easier to delete when deprecated. We already said that FeenoX is a glue layer between a mesher and a post-processing tool. Even more, at another level, it acts as two glue layers between the mesher and PETSc, and PETSc and the post-processor. On the other hand, we also already stated that FeenoX was written from scratch after throwing away clumsy code from two previous attempts. For instance, these previous versions used to implement parametric and optimization schemes. Instead, in FeenoX, these type of runs have to be driven from an outer script (Bash, Python, etc.) Rule of Transparency Developers should design for visibility and discoverability by writing in a way that their thought process can lucidly be seen by future developers working on the project and using input and output formats that make it easy to identify valid input and correct output. This rule aims to reduce debugging time and extend the lifespan of programs. As with the rule of clarity (sec. 8.2), there is a risk of falling into the confirmation bias because every programmer thinks its code is transparent. Anyway, FeenoX is written in C99 which is way easier to debug than both Fortran and C++. Yet, very much like PETSc, FeenoX makes use of structures and function pointers to give the same functionality as C++’s virtual methods without needing to introduce other complexities that make the code base harder to maintain and to debug. Regarding identification of valid inputs and correct outputs, 1. The build system includes a make check target that runs hundreds of regressions tests. 2. The code supports verification using the Method of Manufactured Solutions [regressions tests]: https://github.com/seamplex/feenox/tree/main/tests [Method of Manufactured Solutions]: https://github.com/seamplex/feenox/tree/main/tests/mms Rule of Robustness Developers should design robust programs by designing for transparency and discoverability, because code that is easy to understand is easier to stress test for unexpected conditions that may not be foreseeable in complex programs. This rule aims to help developers build robust, reliable products. Robustness is the child of transparency and simplicity. Rule of Representation Developers should choose to make data more complicated rather than the procedural logic of the program when faced with the choice, because it is easier for humans to understand complex data compared with complex logic. This rule aims to make programs more readable for any developer working on the project, which allows the program to be maintained. There is a trade off between clarity and efficiency. However, avoiding Fortran should already fulfill this rule. FeenoX uses C structures with function pointers, which make it far simple to understand than similar Fortran-based FEM tools. Just compare the source directories of FeenoX and CalculiX. Take for instance the file stress.c from src/pdes/mechanical (which if deleted, will remove support for mechanical problems but it will not prevent the compilation of feenox) from the former and calcstress.f (buried inside 2,400 files in src) from the latter. There might be more illustrative examples showing how FeenoX’ design is more representative than of CalculiX, but it is way too hard to understand the source code of the latter (even though the license is supposed to be GPL). [stress.c]: https://github.com/seamplex/feenox/blob/main/src/pdes/mechanical/stress.c [calcstress.f]: https://github.com/calculix/ccx_prool/blob/master/CalculiX/ccx_2.21/src/calcstress.f [src]: https://github.com/calculix/ccx_prool/tree/master/CalculiX/ccx_2.21/src Rule of Least Surprise Developers should design programs that build on top of the potential users’ expected knowledge; for example, ‘+’ in a calculator program should always mean ‘addition’. This rule aims to encourage developers to build intuitive products that are easy to use. The rules of input syntax have been designed with this rule in mind. Just note a couple of them: - The command-line arguments after the input file are available to be expanded verbatim in the input file as $1, $2, etc. (or ${1}, ${2}, etc. if they appear in the middle of strings). This syntax matches Bash’ syntax for expanding command-line arguments, so any person reading an input file with this syntax already knows what it does. ´ - If one needs a problem where the conductivity depends on x as k(x) = 1 + x then the input is k(x) = 1+x - If a problem needs a temperature distribution given by an algebraic expression $T(x,y,z)=\sqrt{x^2+y^2}+z$ then do T(x,y,z) = sqrt(x^2+y^2) + z - This syntax for (basic) algebraic expressions matches the common syntax found in Gmsh, Maxima and many other scientific tools. More complex expressions (e.g. involving hyperbolic tangents) might differ slightly. Rule of Silence Developers should design programs so that they do not print unnecessary output. This rule aims to allow other programs and developers to pick out the information they need from a program’s output without having to parse verbosity. TL;DR: no PRINT (or WRITE_RESULTS), no output. Rule of Repair Developers should design programs that fail in a manner that is easy to localize and diagnose or in other words “fail noisily”. This rule aims to prevent incorrect output from a program from becoming an input and corrupting the output of other code undetected. Input errors are detected before the computation is started: $ feenox thermal-error.fee error: undefined thermal conductivity 'k' $ Run-time errors (even inside the numerical libraries) are caught with custom handlers. Rule of Economy Developers should value developer time over machine time, because machine cycles today are relatively inexpensive compared to prices in the 1970s. This rule aims to reduce development costs of projects. As explained in the SDS, output is 100% user-defined so only the desired results are directly obtained instead of needing further digging into tons of undesired data. The approach of “compute and write everything you can in one single run” made sense in 1970 where CPU time was more expensive than human time, but not anymore. Once again, the iconic examples are the NAFEMS LE10 & LE11 benchmarks, where just the required scalar stress at the required location is written into the standard output. [10]: https://www.seamplex.com/feenox/doc/sds.html#sec:output [LE10]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [LE11]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le11-solid-cylindertapersphere-temperature-benchmark Rule of Generation Developers should avoid writing code by hand and instead write abstract high-level programs that generate code. This rule aims to reduce human errors and save time. Some key points: - Input files are M4-like-macro friendly. - Parametric runs can be done from scripts through expansion of command line arguments. - Documentation is created out of simple Markdown sources and assembled as needed. More saliently, the automatic detection of the available PDEs in src/pdes is an example of this rule. The autogen.sh would loop over each subdirectory and create a source file src/pdes/parser.c with a function feenox_pde_parse_problem_type() which then will be part of the actual FeenoX source base as the entry point for parsing the PROBLEM keyword. Rule of Optimization Developers should prototype software before polishing it. This rule aims to prevent developers from spending too much time for marginal gains. FeenoX is still “premature” for heavy optimization. Yet, it is (relatively) faster than other alternatives. It does use link-time optimization to allow for inlining of small routines. There is even a FeenoX benchmarking repository that uses Google’s Benchmark library to prototype code optimization: https://github.com/seamplex/feenox-benchmark. Rule of Diversity Developers should design their programs to be flexible and open. This rule aims to make programs flexible, allowing them to be used in ways other than those their developers intended. FeenoX can read Gmsh files, but they need not necessarily be created by Gmsh. Other meshing formats (VTK with group names?) are planned to be implemented. Also, either Gmsh or Paraview can be used to post-process results. But also other formats are planned. See sec. 8.17. Diversity is embraced from the bottom up! Rule of Extensibility Developers should design for the future by making their protocols extensible, allowing for easy plugins without modification to the program’s architecture by other developers, noting the version of the program, and more. This rule aims to extend the lifespan and enhance the utility of the code the developer writes. The main extensibility feature is that each PDE has a separate source directory. Any of them can be used as as template to add new PDEs, which are detected at compile time by the Autotools bootstrapping script. A final note is that FeenoX is GPLv3+. First, this means that extensions and contributions are welcome. Each author retains the copyright on the contributed code (as long as it is free software). Second, the + is there for the future. History Very much like Unix in the late 1960s and C in the early 1970s, FeenoX is a third-system effect: I wrote a first hack that seemed to work better than I had expected. Then I tried to add a lot of features and complexities which I felt the code needed. After ten years of actual usage, I then realized 1. what was worth keeping, 2. what needed to be rewritten and 3. what had to be discarded. The first version was called wasora, the second was “The wasora suite” (i.e. a generic framework plus a bunch of “plugins”, including a thermo-mechanical one named Fino) and then finally FeenoX. The story that follows explains why I wrote the first hack to begin with. ------------------------------------------------------------------------ It was at the movies when I first heard about dynamical systems, non-linear equations and chaos theory. The year was 1993, I was ten years old and the movie was Jurassic Park. Dr. Ian Malcolm (the character portrayed by Jeff Goldblum) explained sensitivity to initial conditions in a memorable scene, which is worth watching again and again. Since then, the fact that tiny variations may lead to unexpected results has always fascinated me. During high school I attended a very interesting course on fractals and chaos that made me think further about complexity and its mathematical description. Nevertheless, it was not not until college that I was able to really model and solve the differential equations that give rise to chaotic behavior. [Dr. Ian Malcolm (Jeff Goldblum) explains sensitivity to initial conditions.] In fact, initial-value ordinary differential equations arise in a great variety of subjects in science and engineering. Classical mechanics, chemical kinetics, structural dynamics, heat transfer analysis and dynamical systems, among other disciplines, heavily rely on equations of the form $$ \dot{\mathbf{x}} = F(\mathbf{x},t) $$ During my years of undergraduate student (circa 2004–2007), whenever I had to solve these kind of equations I had to choose one of the following three options: 1. to program an ad-hoc numerical method such as Euler or Runge-Kutta, matching the requirements of the system of equations to solve, or 2. to use a standard numerical library such as the GNU Scientific Library and code the equations to solve into a C program (or maybe in Python), or 3. to use a high-level system such as Octave, Maxima, or some non-free (and worse, see below) programs. Of course, each option had its pros and its cons. But none provided the combination of advantages I was looking for, namely flexibility (option one), efficiency (option two) and reduced input work (partially given by option three). Back in those days I ended up wandering between options one and two, depending on the type of problem I had to solve. However, even though one can, with some effort, make the code read some parameters from a text file, any other drastic change usually requires a modification in the source code—some times involving a substantial amount of work—and a further recompilation of the code. This was what I most disliked about this way of working, but I could nevertheless live with it. Regardless of this situation, during my last year of Nuclear Engineering, the tipping point came along. Here’s a slightly-fictionalized of a dialog between myself and the teacher at the computer lab (Dr E.), as it might have happened (or not): — (Prof.) Open MATLAB.™ — (Me) It’s not installed here. I type mathlab and it does not work. — (Prof.) It’s spelled matlab. — (Me) Ok, working. (A screen with blocks and lines connecting them appears) — (Me) What’s this? — (Prof.) The point reactor equations. — (Me) It’s not. These are the point reactor equations: $$ \begin{cases} \dot{\phi}(t) = \displaystyle \frac{\rho(t) - \beta}{\Lambda} \cdot \phi(t) + \sum_{i=1}^{N} \lambda_i \cdot c_i \\ \dot{c}_i(t) = \displaystyle \frac{\beta_i}{\Lambda} \cdot \phi(t) - \lambda_i \cdot c_i \end{cases} $$ — (Me) And in any case, I’d write them like this in a computer: phi_dot = (rho-Beta)/Lambda * phi + sum(lambda[i], c[i], i, 1, N) c_dot[i] = beta[i]/Lambda * phi - lambda[i]*c[i] This conversation forced me to re-think the ODE-solving issue. I could not (and still cannot) understand why somebody would prefer to solve a very simple set of differential equations by drawing blocks and connecting them with a mouse with no mathematical sense whatsoever. Fast forward fifteen years, and what I wrote above is essentially how one would solve the point kinetics equations with FeenoX. [FeenoX]: https://www.seamplex.com/feenox [Dr. Ian Malcolm]: https://en.wikipedia.org/wiki/Ian_Malcolm_(character) [Jeff Goldblum]: https://en.wikipedia.org/wiki/Jeff_Goldblum [memorable scene]: https://www.youtube.com/watch?v=n-mpifTiPV4 [Dr. Ian Malcolm (Jeff Goldblum) explains sensitivity to initial conditions.]: jurassicpark.jpg [Euler]: https://en.wikipedia.org/wiki/Euler_method [Runge-Kutta]: https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods [GNU Scientific Library]: https://www.gnu.org/software/gsl/ [Octave]: https://www.gnu.org/software/octave/index [Maxima]: https://maxima.sourceforge.io/ feenox-1.1/doc/srs0000644000175000017500000006146514773607262011111 00000000000000Software Requirements Specification for an Engineering Computational Tool 2025-04-03 - 1 Introduction - 1.1 Objective - 1.2 Scope - 2 Architecture - 2.1 Deployment - 2.2 Execution - 2.3 Efficiency - 2.4 Scalability - 2.5 Flexibility - 2.6 Extensibility - 2.7 Interoperability - 3 Interfaces - 3.1 Problem input - 3.2 Results output - 4 Quality assurance - 4.1 Reproducibility and traceability - 4.2 Automated testing - 4.3 Bug reporting and tracking - 4.4 Verification - 4.5 Validation - 4.6 Documentation [1 Introduction]: #sec:introduction [1.1 Objective]: #sec:objective [1.2 Scope]: #sec:scope [2 Architecture]: #sec:architecture [2.1 Deployment]: #sec:deployment [2.2 Execution]: #sec:execution [2.3 Efficiency]: #sec:efficiency [2.4 Scalability]: #sec:scalability [2.5 Flexibility]: #flexibility [2.6 Extensibility]: #sec:extensibility [2.7 Interoperability]: #sec:interoperability [3 Interfaces]: #sec:interfaces [3.1 Problem input]: #sec:input [3.2 Results output]: #sec:output [4 Quality assurance]: #sec:qa [4.1 Reproducibility and traceability]: #reproducibility-and-traceability [4.2 Automated testing]: #sec:testing [4.3 Bug reporting and tracking]: #sec:bug-reporting [4.4 Verification]: #sec:verification [4.5 Validation]: #validation [4.6 Documentation]: #sec:documentation Introduction A computational tool (herein after referred to as the tool) specifically designed to be executed in arbitrarily-scalable remote servers (i.e. in the cloud) is required in order to solve engineering problems following the current state-of-the-art methods and technologies impacting the high-performance computing world. This (imaginary but plausible) Software Requirements Specification document describes the mandatory features this tool ought to have and lists some features which would be nice the tool had. Also it contains requirements and guidelines about architecture, execution and interfaces in order to fulfill the needs of cognizant engineers as of the 2020s. On the one hand, the tool should allow to solve industrial problems under stringent efficiency (sec. 2.3) and quality (sec. 4) requirements. It is therefore mandatory to be able to assess the source code for - independent verification, and/or - performance profiling, and/or - quality control by qualified third parties from all around the world. Hence, it has to be open source according to the definition of the Open Source Initiative. On the other hand, the initial version of the tool is expected to provide a basic functionality which might be extended (sec. 1.1 and sec. 2.6) by academic researchers and/or professional programmers. It thus should also be free—in the sense of freedom, not in the sense of price—as defined by the Free Software Foundation. There is no requirement on the pricing scheme, which is up to the vendor to define in the offer along with the detailed licensing terms. These should allow users to solve their problems the way they need and, eventually, to modify and improve the tool to suit their needs. If they cannot program themselves, they should have the freedom to hire somebody to do it for them. Objective The main objective of the tool is to be able to solve engineering problems which are usually casted as differential-algebraic equations (DAEs) or partial differential equations (PDEs), such as - heat conduction - mechanical elasticity - structural modal analysis - mechanical frequency studies - electromagnetism - chemical diffusion - process control dynamics - computational fluid dynamics - … on one or more mainstream cloud servers, i.e. computers with hardware and operating systems (further discussed in sec. 2) that allows them to be available online and accessed remotely either interactively or automatically by other computers as well. Other architectures such as high-end desktop personal computers or even low-end laptops might be supported but they should not the main target (i.e. the tool has to be cloud-first but laptop-friendly). The initial version of the tool must be able to handle a subset of the above list of problem types. Afterward, the set of supported problem types, models, equations and features of the tool should grow to include other models as well, as required in sec. 2.6. Scope The tool should allow users to define the problem to be solved programmatically. That is to say, the problem should be completely defined using one or more files either… a. specifically formatted for the tool to read such as JSON or a particular input format (historically called input decks in punched-card days), and/or b. written in an high-level interpreted language such as Python or Julia. Once the problem has been defined and passed on to the solver, no further human intervention should be required. It should be noted that a graphical user interface is not required. The tool may include one, but it should be able to run without needing any interactive user intervention rather than the preparation of a set of input files. Nevertheless, the tool might allow a GUI to be used. For example, for a basic usage involving simple cases, a user interface engine should be able to create these problem-definition files in order to give access to less advanced users to the tool using a desktop, mobile and/or web-based interface in order to run the actual tool without needing to manually prepare the actual input files. However, for general usage, users should be able to completely define the problem (or set of problems, i.e. a parametric study) they want to solve in one or more input files and to obtain one or more output files containing the desired results, either a set of scalar outputs (such as maximum stresses or mean temperatures), and/or a detailed time and/or spatial distribution. If needed, a discretization of the domain may to be taken as a known input, i.e. the tool is not required to create the mesh as long as a suitable mesher can be employed using a similar workflow as the one specified in this SRS. The tool should define and document (sec. 4.6) the way the input files for a solving particular problem are to be prepared (sec. 3.1) and how the results are to be written (sec. 3.2). Any GUI, pre-processor, post-processor or other related graphical tool used to provide a graphical interface for the user should integrate in the workflow described in the preceding paragraph: a pre-processor should create the input files needed for the tool and a post-processor should read the output files created by the tool. Architecture The tool must be aimed at being executed unattended on remote servers which are expected to have a mainstream (as of the 2020s) architecture regarding operating system (GNU/Linux variants and other Unix-like OSes) and hardware stack, such as - a few Intel-compatible or ARM-like CPUs per host - a few levels of memory caches - a few gigabytes of random-access memory - several gigabytes of solid-state storage It should successfully run on - bare-metal - virtual servers - containerized images using standard compilers, dependencies and libraries already available in the repositories of most current operating systems distributions. Preference should be given to open source compilers, dependencies and libraries. Small problems might be executed in a single host but large problems ought to be split through several server instances depending on the processing and memory requirements. The computational implementation should adhere to open and well-established parallelization standards. Ability to run on local desktop personal computers and/laptops is not required but suggested as a mean of giving the opportunity to users to test and debug small coarse computational models before launching the large computation on a HPC cluster or on a set of scalable cloud instances. Support for non-GNU/Linux operating systems is not required but also suggested. Mobile platforms such as tablets and phones are not suitable to run engineering simulations due to their lack of proper electronic cooling mechanisms. They are suggested to be used to control one (or more) instances of the tool running on the cloud, and even to pre and post process results through mobile and/or web interfaces. Deployment The tool should be easily deployed to production servers. Both a. an automated method for compiling the sources from scratch aiming at obtaining optimized binaries for a particular host architecture should be provided using a well-established procedures, and b. one (or more) generic binary version aiming at common server architectures should be provided. Either option should be available to be downloaded from suitable online sources, either by real people and/or automated deployment scripts. Execution It is mandatory to be able to execute the tool remotely, either with a direct action from the user or from a high-level workflow which could be triggered by a human or by an automated script. Since it is required for the tool to be able to be run distributed among different servers, proper means to perform this kind of remote executions should be provided. The calling party should be able to monitor the status during run time and get the returned error level after finishing the execution. The tool shall provide means to perform parametric computations by varying one or more problem parameters in a certain prescribed way such that it can be used as an inner solver for an outer-loop optimization tool. In this regard, it is desirable that the tool could compute scalar values such that the figure of merit being optimized (maximum temperature, total weight, total heat flux, minimum natural frequency, maximum displacement, maximum von Mises stress, etc.) is already available without needing further post-processing. Efficiency As required in the previous section, it is mandatory to be able to execute the tool on one or more remote servers. The computational resources needed from this server, i.e. costs measured in - CPU/GPU time - random-access memory - long-term storage - etc. needed to solve a problem should be comparable to other similar state-of-the-art cloud-based script-friendly finite-element tools. Scalability The tool ought to be able to start solving small problems first to check the inputs and outputs behave as expected and then allow increasing the problem size up in order to achieve to the desired accuracy of the results. As mentioned in sec. 2, large problem should be split among different computers to be able to solve them using a finite amount of per-host computational power (RAM and CPU). Flexibility The tool should be able to handle engineering problems involving different materials with potential spatial and time-dependent properties, such as temperature-dependent thermal expansion coefficients and/or non-constant densities. Boundary conditions must be allowed to depend on both space and time as well, like non-uniform pressure loads and/or transient heat fluxes. Extensibility It should be possible to add other problem types casted as PDEs (such as the Schröedinger equation) to the tool using a reasonable amount of time by one or more skilled programmers. The tool should also allow new models (such as non-linear stress-strain constitutive relationships) to be added as well. Interoperability A mean of exchanging data with other computational tools complying to requirements similar to the ones outlined in this document. This includes pre and post-processors but also other computational programs so that coupled calculations can be eventually performed by efficiently exchanging information between calculation codes. Interfaces The tool should be able to allow remote execution without any user intervention after the tool is launched. To achieve this goal it is required that the problem should be completely defined in one or more input files and the output should be complete and useful after the tool finishes its execution, as already required. The tool should be able to report the status of the execution (i.e. progress, errors, etc.) and to make this information available to the user or process that launched the execution, possibly from a remote location. Problem input The problem should be completely defined by one or more input files. These input files might be a. particularly formatted files to be read by the tool in an ad-hoc way, and/or b. source files for interpreted languages which can call the tool through and API or equivalent method, and/or c. any other method that can fulfill the requirements described so far. Preferably, these input files should be plain ASCII files in order to allow to manage changes using distributed version control systems such as Git. If the tool provides an API for an interpreted language such as Python, then the Python source used to solve a particular problem should be Git-friendly. It is recommended not to track revisions of mesh data files but of the source input files, i.e. to track the mesher’s input and not the mesher’s output. Therefore, it is recommended not to mix the problem definition with the problem mesh data. It is not mandatory to include a GUI in the main distribution, but the input/output scheme should be such that graphical pre and post-processing tools can create the input files and read the output files so as to allow third parties to develop interfaces. It is recommended to design the workflow as to make it possible for the interfaces to be accessible from mobile devices and web browsers. It is expected that 80% of the problems need 20% of the functionality. It is acceptable if only basic usage can be achieved through the usage of graphical interfaces to ease basic usage at first. Complex problems involving non-trivial material properties and boundary conditions not be treated by a GUI and only available by needing access to the input files. Results output The output ought to contain useful results and should not be cluttered up with non-mandatory information such as ASCII art, notices, explanations or copyright notices. Since the time of cognizant engineers is far more expensive than CPU time, output should be easily interpreted by either a human or, even better, by other programs or interfaces—especially those based in mobile and/or web platforms. Open-source formats and standards should be preferred over privative and ad-hoc formatting to encourage the possibility of using different workflows and/or interfaces. Quality assurance Since the results obtained with the tool might be used in verifying existing equipment or in designing new mechanical parts in sensitive industries, a certain level of software quality assurance is needed. Not only are best-practices for developing generic software such as - employment of a version control system, - automated testing suites, - user-reported bug tracking support. - etc. required, but also since the tool falls in the category of engineering computational software, verification and validation procedures are also mandatory, as discussed below. Design should be such that governance of engineering data including problem definition, results and documentation can be efficiently performed using state-of-the-art methodologies, such as distributed control version systems Reproducibility and traceability The full source code and the documentation of the tool ought to be maintained under a control version system. Whether access to the repository is public or not is up to the vendor, as long as the copying conditions are compatible with the definitions of both free and open source software from the FSF and the OSI, respectively as required in sec. 1. In order to be able to track results obtained with different version of the tools, there should be a clear release procedure. There should be periodical releases of stable versions that are required - not to raise any warnings when compiled using modern versions of common compilers (e.g. GNU, Clang, Intel, etc.) - not to raise any errors when assessed with dynamic memory analysis tools (e.g. Valgrind) for a wide variety of test cases - to pass all the automated test suites as specified in sec. 4.2 These stable releases should follow a common versioning scheme, and either the tarballs with the sources and/or the version control system commits should be digitally signed by a cognizant responsible. Other unstable versions with partial and/or limited features might be released either in the form of tarballs or made available in a code repository. The requirement is that unstable tarballs and main (a.k.a. trunk) branches on the repositories have to be compilable. Any feature that does not work as expected or that does not even compile has to be committed into develop branches before being merge into trunk. If the tool has an executable binary, it should be able to report which version of the code the executable corresponds to. If there is a library callable through an API, there should be a call which returns the version of the code the library corresponds to. It is recommended not to mix mesh data like nodes and element definition with problem data like material properties and boundary conditions so as to ease governance and tracking of computational models and the results associated with them. All the information needed to solve a particular problem (i.e. meshes, boundary conditions, spatially-distributed material properties, etc.) should be generated from a very simple set of files which ought to be susceptible of being tracked with current state-of-the-art version control systems. In order to comply with this suggestion, ASCII formats should be favored when possible. Automated testing A mean to automatically test the code works as expected is mandatory. A set of problems with known solutions should be solved with the tool after each modification of the code to make sure these changes still give the right answers for the right questions and no regressions are introduced. Unit software testing practices like continuous integration and test coverage are recommended but not mandatory. The tests contained in the test suite should be - varied, - diverse, and - independent Due to efficiency issues, there can be different sets of tests (e.g. unit and integration tests, quick and thorough tests, etc.) Development versions stored in non-main branches can have temporarily-failing tests, but stable versions have to pass all the test suites. Bug reporting and tracking A system to allow developers and users to report bugs and errors and to suggest improvements should be provided. If applicable, bug reports should be tracked, addressed and documented. User-provided suggestions might go into the back log or TO-DO list if appropriate. Here, “bug and errors” mean failure to - compile on supported architectures, - run (unexpected run-time errors, segmentation faults, etc.) - return a correct result Verification Verification, defined as The process of determining that a model implementation accurately represents the developer’s conceptual description of the model and the solution to the model. i.e. checking if the tool is solving right the equations, should be performed before applying the code to solve any industrial problem. Depending on the nature and regulation of the industry, the verification guidelines and requirements may vary. Since it is expected that code verification tasks could be performed by arbitrary individuals or organizations not necessarily affiliated with the tool vendor, the source code should be available to independent third parties. In this regard, changes in the source code should be controllable, traceable and well documented. Even though the verification requirements may vary among problem types, industries and particular applications, a common method to verify the code is to compare solutions obtained with the tool with known exact solutions or benchmarks. It is thus mandatory to be able to compare the results with analytical solutions, either internally in the tool or through external libraries or tools. This approach is called the Method of Exact Solutions and it is the most widespread scheme for verifying computational software, although it does not provide a comprehensive method to verify the whole spectrum of features. In any case, the tool’s output should be susceptible of being post-processed and analyzed in such a way to be able to determine the order of convergence of the numerical solution as compared to the exact one. Another possibility is to follow the Method of Manufactured Solutions, which does address all the shortcomings of MES. It is highly encouraged that the tool allows the application of MMS for software verification. Indeed, this method needs a full explanation of the equations solved by the tool, up to the point that a report from Sandia National Labs says that Difficulties in determination of the governing equations arises frequently with commercial software, where some information is regarded as proprietary. If the governing equations cannot be determined, we would question the validity of using the code. To enforce the availability of the governing equations, the tool has to be open source as required in sec. 1 and well documented as required in sec. 4.6. A report following either the MES and/or MMS procedures has to be prepared for each type of equation that the tool can solve. The report should show how the numerical results converge to the exact or manufactured results with respect to the mesh size or number of degrees of freedom. This rate should then be compared to the theoretical expected order. Whenever a verification task is performed and documented, at least one of the cases should be added to the test suite. Even though the verification report must contain a parametric mesh study, a single-mesh case is enough to be added to the test suite. The objective of the tests defined in sec. 4.2 is to be able to detect regressions which might have been inadvertently introduced in the code and not to do any actual verification. Therefore a single-mesh case is enough for the test suites. Validation As with verification, for each industrial application of the tool there should be a documented procedure to perform a set of validation tests, defined as The process of determining the degree to which a model is an accurate representation of the real world from the perspective of the intended uses of the model. i.e. checking that the right equations are being solved by the tool. This procedure should be based on existing industry standards regarding verification and validation such as ASME, AIAA, IAEA, etc. There should be a procedure for each type of physical problem (thermal, mechanical, thermomechanical, nuclear, etc.) and for each problem type when a new - geometry, - mesh type, - material model, - boundary condition, - data interpolation scheme or any other particular application-dependent feature is needed. A report following the validation procedure defined above should be prepared and signed by a responsible engineer in a case-by-case basis for each particular field of application of the tool. Verification can be performed against - known analytical results, and/or - other already-validated tools following the same standards, and/or - experimental results. Documentation Documentation should be complete and cover both the user and the developer point of view. It should include a user manual adequate for both reference and tutorial purposes. Other forms of simplified documentation such as quick reference cards or video tutorials are not mandatory but highly recommended. Since the tool should be extendable (sec. 2.6), there should be a separate development manual covering the programming design and implementation, explaining how to extend the code and how to add new features. Also, as non-trivial mathematics which should be verified are expected, a thorough explanation of what equations are taken into account and how they are solved is required. It should be possible to make the full documentation available online in a way that it can be both printed in hard copy and accessed easily from a mobile device. Users modifying the tool to suit their own needs should be able to modify the associated documentation as well, so a clear notice about the licensing terms of the documentation itself (which might be different from the licensing terms of the source code itself) is mandatory. Tracking changes in the documentation should be similar to tracking changes in the code base. Each individual document ought to explicitly state to which version of the tool applies. Plain ASCII formats should be preferred. It is forbidden to submit documentation in a non-free format. The documentation shall also include procedures for - reporting errors and bugs - releasing stable versions - performing verification and validation studies - contributing to the code base, including - code of conduct - coding styles - variable and function naming conventions feenox-1.1/doc/programming0000644000175000017500000004457514773607237012631 00000000000000FeenoX programming guide - 1 Why we program FeenoX - 2 Compiling and debugging - 3 How we program FeenoX - 3.1 Operating systems - 3.2 Languages - 3.3 Programming IDEs - 3.3.1 Netbeans - 3.4 Makefiles - 3.5 Test suite - 3.6 Coding style - 3.7 Virtual methods - 3.8 Memory management - 3.9 Naming conventions - 3.10 Comments - 3.11 Indices in PDEs - 3.12 Git workflow - 3.13 Standards - 3.14 Mentioning other libraries, programs, codes, etc. - 3.15 Documentation - 4 What we program in FeenoX - 5 Code of conduct - 6 Release plans [1 Why we program FeenoX]: #why-we-program-feenox [2 Compiling and debugging]: #compiling-and-debugging [3 How we program FeenoX]: #how-we-program-feenox [3.1 Operating systems]: #operating-systems [3.2 Languages]: #languages [3.3 Programming IDEs]: #programming-ides [3.3.1 Netbeans]: #netbeans [3.4 Makefiles]: #makefiles [3.5 Test suite]: #sec:test-suite [3.6 Coding style]: #coding-style [3.7 Virtual methods]: #virtual-methods [3.8 Memory management]: #memory-management [3.9 Naming conventions]: #naming-conventions [3.10 Comments]: #comments [3.11 Indices in PDEs]: #indices-in-pdes [3.12 Git workflow]: #git-workflow [3.13 Standards]: #standards [3.14 Mentioning other libraries, programs, codes, etc.]: #mentioning-other-libraries-programs-codes-etc. [3.15 Documentation]: #documentation [4 What we program in FeenoX]: #what-we-program-in-feenox [5 Code of conduct]: #code-of-conduct [6 Release plans]: #release-plans Why we program FeenoX The main objective is to comply with the Software Requirements Specification. Within this goal, there are three levels of importance: 1. FeenoX is Free Software as defined by the Free Software Foundation. The four essential freedoms ought to be assured. Feenox is GPLv3+ so make sure you understand what “free-as-in-free-speech” means and all the details that the license implies regarding using other libraries and code copyright. 2. FeenoX is Open Source as defined by The Open Source initiative. Stick to open standards, formats, practices, etc. Make sure you understand what the difference between “free software” and “open source” is. 3. Only after making sure every piece of code meets the two criteria above, the technical and/or efficiency aspects mentioned in the SRS are to be considered. Compiling and debugging See the compilation instructions. [compilation instructions]: compilation.md How we program FeenoX Operating systems - The main target operating system is GNU/Linux, particularly linux-x86_64. - The reference distribution is Debian stable. All the required dependencies should be available in any decently-modern Debian repositories. - Support for other architectures (mainly the other two non-server end-user mainstream OSes which are non-free and we do not want to mention explicitly) is encouraged but not required. Languages Rule of Simplicity: Design for simplicity; add complexity only where you must. C++ is a great language when used to solve problems it solves naturally well without being forced to solve it (see LibreBlackjack). C++ is a terrible language whenever else. It is messy, overwhelming, complicated, not robust and hard to debug (especially when using templates and this nightmare called smart pointers). The cons are far more than the pros. There is no need to add complexity. Fortran is a terrible language. Fortran90+ is a patched FORTRAN 77. The assumptions that the language had over the kind of computers it has to run on worked in the early days but are now widely outdated. That’s it. Go & Rust, I think still nobody knows for sure right now. But Rust’s automatic memory handling is not a point strong enough for CAE/DAE/FEA software. C is the best language for FeenoX. Its assumptions still hold, especially in i. bare-metal servers, ii. virtualized machines, and iii. dockerized containers. In the late 1990s, Gerrit Blaauw and Fred Brooks observed in Computer Architecture: Concepts and Evolution [BlaauwBrooks] that the architectures in every generation of computers, from early mainframes through minicomputers through workstations through PCs, had tended to converge. The later a design was in its technology generation, the more closely it approximated what Blaauw & Brooks called the “classical architecture”: binary representation, flat address space, a distinction between memory and working store (registers), general-purpose registers, address resolution to fixed-length bytes, two-address instructions, big-endianness,[46] and data types a consistent set with sizes a multiple of either 4 or 6 bits (the 6-bit families are now extinct). Thompson and Ritchie designed C to be a sort of structured assembler for an idealized processor and memory architecture that they expected could be efficiently modeled on most conventional computers. By happy accident, their model for the idealized processor was the PDP-11, a particularly mature and elegant minicomputer design that closely approximated Blaauw & Brooks’s classical architecture. By good judgment, Thompson and Ritchie declined to wire into their language most of the few traits (such as little-endian byte order) where the PDP-11 didn’t match it.[47] The PDP-11 became an important model for the following generations of microprocessor architectures. The basic abstractions of C turned out to capture the classical architecture rather neatly. Thus, C started out as a good fit for microprocessors and, rather than becoming irrelevant as its assumptions fell out of date, actually became a better fit as hardware converged more closely on the classical architecture. One notable example of this convergence was when Intel’s 386, with its large flat memory-address space, replaced the 286’s awkward segmented-memory addressing after 1985; pure C was actually a better fit for the 386 than it had been for the 286. It is not a coincidence that the experimental era in computer architectures ended in the mid-1980s at the same time that C (and its close descendant C++) were sweeping all before them as general-purpose programming languages. C, designed as a thin but flexible layer over the classical architecture, looks with two decades’ additional perspective like almost the best possible design for the structured-assembler niche it was intended to fill. In addition to compactness, orthogonality, and detachment (from the machine architecture on which it was originally designed), it also has the important quality of transparency that we will discuss in Chapter 6. The few language designs since that are arguably better have needed to make large changes (like introducing garbage collection) in order to get enough functional distance from C not to be swamped by it. This history is worth recalling and understanding because C shows us how powerful a clean, minimalist design can be. If Thompson and Ritchie had been less wise, they would have designed a language that did much more, relied on stronger assumptions, never ported satisfactorily off its original hardware platform, and withered away as the world changed out from under it. Instead, C has flourished — and the example Thompson and Ritchie set has influenced the style of Unix development ever since. As the writer, adventurer, artist, and aeronautical engineer Antoine de Saint-Exupéry once put it, writing about the design of airplanes: «La perfection est atteinte non quand il ne reste rien à ajouter, mais quand il ne reste rien à enlever». (“Perfection is attained not when there is nothing more to add, but when there is nothing more to remove”.) Therefore: - Stick to plain C. C enables us to build data structures for storing sparse matrices, solver information, etc. in ways that Fortran simply does not allow. ANSI C is a complete standard that all modern C compilers support. The language is identical on all machines. C++ is still evolving and compilers on different machines are not identical. Using C function pointers to provide data encapsulation and polymorphism allows us to get many of the advantages of C++ without using such a large and more complicated language. PETSc FAQs https://www.mcs.anl.gov/petsc/documentation/faq.html#why-c - Keep C++ away. C++ is a horrible language. It’s made more horrible by the fact that a lot of substandard programmers use it, to the point where it’s much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do nothing but keep the C++ programmers out, that in itself would be a huge reason to use C. Linus Torvalds about why Git is written in C http://harmful.cat-v.org/software/c++/linus Libraries written in C++ are allowed as long as they provide C wrappers and do not meddle with stuff we do not need nor want. - Keep Fortran even farther away. It is allowed only for existing libraries dating from ancient well-tested and optimized code, but for nothing else. - Modern high-level languages like Python or Julia are targets and not sources of FeenoX. - For documentation and comments within the code, American English should be used. [LibreBlackjack]: https://seamplex.com/blackjack/ Programming IDEs Netbeans To work on FeenoX using NetBeans, first make sure you have the C/C++ module working. If you don’t, do this: In Netbeans go to Tools->Plugins->Settings. Entry NetBeans 8.2 Plugin Portal is already present. Click the checkbox next to this entry. Switch to Available Plugins tab, click Check for Newest. C/C++ is now on the list. Then create a new C/C++ project File->New Project… choose C/C++ Project with Existing Sources click Next, browse to find the root directory of your local FeenoX sources. It is important to have the configure script already created there, so make sure you have run ./autogen.sh. Make sure the configuration mode is set to Automatic and that NetBeans detected the configure script by adding “using configure” next to “Automatic.” Click to create the project. This will create a directory nbproject which will be ignored by .gitignore. [NetBeans]: https://netbeans.apache.org/ Makefiles - FeenoX uses the GNU Autools (i.e. Autoconf and Automake). - If you really feel that you have to use CMake for your contributions, feel free to do so (Unix rule of diversity) but make sure that at the end of the day ./configure && make still works. [GNU Autools]: https://en.wikipedia.org/wiki/GNU_Autotools [Autoconf]: https://www.gnu.org/software/autoconf/ [Automake]: https://www.gnu.org/software/automake/ [CMake]: https://cmake.org/ Test suite - The directory tests contains the test suite with shell scripts that return appropriate errorlevels according to Automake’s generic test scripts. In a nutshell: When no test protocol is in use, an exit status of 0 from a test script will denote a success, an exit status of 77 a skipped test, an exit status of 99 a hard error, and any other exit status will denote a failure. - If you add a new feature please also write a test script not just to check your feature works but to prevent further changes by other people (or even by yourself) from breaking the feature. - Try to make the check results meaningful and not just check for random results. Try to create tests cases with analytical solution or use benchmarks with known results. - We will eventually add some code coverage tools to have as most lines covered by at least one test. [Automake’s generic test scripts]: https://www.gnu.org/software/automake/manual/html_node/Scripts_002dbased-Testsuites.html Coding style - K&R 1TBS with no tabs and two spaces per indent https://en.wikipedia.org/wiki/Indentation_style#Variant:_1TBS_(OTBS) void checknegative(x) { if (x < 0) { puts("Negative"); } else { nonnegative(x); } } - Do not worry about long lines. Only wrap lines when it makes sense to from a logic point of view not because “it looks bad on screen” because “screen” can be anything from a mobile phone to a desktop with many 24” LED monitors. - Make sure you understand and follow the 17 rules of Unix philosophy https://en.wikipedia.org/wiki/Unix_philosophy 1. modularity 2. clarity 3. composition 4. separation 5. simplicity 6. parsimony 7. transparency 8. robustness 9. representation 10. least surprise 11. silence 12. repair 13. economy 14. generation 15. optimization 16. diversity 17. extensibility Virtual methods Even though we use C, we can still have some “virtual methods” by using function pointers. So in a FEM formulation, the routines that build the stiffness matrix are mostly independent of the problem type (for the same family, say elliptic problems) but in the integrands. So a good practice is to have a common set of routines that loop over elements and over gauss points and then at the inner loop a virtual method is called which depends on the particular problem (thermal, mechanical, etc). This is accomplished by using function pointers so all problems have to provide more or less the same sets of routines: initialization, integrands, BCs, etc. See the basic problems to see how this idea works. Reading and writing mesh/post-processing files work the same way. Each format has to provide a virtual reader/writer method. Memory management - Check all malloc() calls for NULL. You can use the feenox_check_alloc()/feenox_check_alloc_null() macros. - Use the macro feenox_free() instead of plain free(). The former explicitly makes the pointer equal to NULL after freeing it, which is handy. - Use valgrind to check for invalid memory access and leaks Memory analysis tools such as valgrind can be useful, but don’t complicate a program merely to avoid their false alarms. For example, if memory is used until just before a process exits, don’t free it simply to silence such a tool. GNU Coding Standards https://www.gnu.org/prep/standards/html_node/Memory-Usage.html Mind that FeenoX might be used in parametric or minimization mode which would re-allocate some stuff so make sure you know which alarms you ignore. Naming conventions - Use snake case such as in this_is_a_long_name. - All functions ought to start with feenox_. This is the small price we need to pay in order to keep a magnificent beast like C++ away from our lives (those who can). The names of functions should go from general to particular such as feenox_expression_parse() and feenox_expression_eval() (and not feenox_parse_expression()/feenox_eval_expression()) so all function related with expressions can be easily found. There are exceptions, like functions which do similar tasks such as feenox_add_assignemnt() and feenox_add_instructions(). Here the add part is the common one. - In a similar way, “virtual” methods should add the particularity at the end, like - feenox_build_element_volumetric_gauss_point()—the function pointer which is invoked in the code - feenox_build_element_volumetric_gauss_point_thermal()—the particular function the pointer will point to and which is actually called Comments - Use single-line comments // to add comments to the code so we can easily comment out certain parts of code using multi-line comments /*—*/ while developing new features. - Explain any non-trivial block or flag that needs to be set. Example switch (c = fgetc(file_ptr)) { case '"': // if there's an escaped quote, we take away the escape char // and put a magic marker 0x1e, afterwards in get_next_token() // we change back the 0x1e with the unescaped quote feenox_parser.line[i++] = 0x1e; - Focus on the why and not on the how, except for very complex loops. - All nice-to-have things that are welcome to be done should be written as // TODO: allow refreshing file data before each transit step - Features that might or might not be added should be written as questions // TODO: should we allow unquoted names in the $PhysicalNames section? Indices in PDEs ----------------------------------------------------------------------- Index Loop over… ---------- ------------------------------------------------------------ i elements or cells j nodes, either global or local. If there are loops which need both, use j_local and j_global. k dummy index d dimensions g degree of freedoms (from groups of energy actually) q Gauss (quadrature) points ----------------------------------------------------------------------- Git workflow - Of course, use git. This may seem obvious but predecessors of this project have used Subversion, Bazaar and Mercurial in that order. I have myself used CVS (in the past century). - Only team members are allowed to commit directly to the main branch. - All contributions ought to come from pull/merge requests either from forked repositories and/or non-main branches. - Issues can be opened forked for - bug reporting - feature requests - development discussion - general questions (installation, usage, etc) Standards - Try to adhere to POSIX as much as possible. Eventually all operating systems will adopt it. Mentioning other libraries, programs, codes, etc. - Try no to mention any piece of software which is not free and open source. Documentation - See the README in the doc directory. - TLDR; 1. Use Pandoc-flavored Markdown as the main source. 2. Knock yourself out with LaTeX math. 3. Bitmaps are off the table for figures. What we program in FeenoX - The features described in the SRS. Code of conduct - See the code of conduct. [code of conduct]: CODE_OF_CONDUCT.md Release plans - v1.x first stable release meaning: - usable features - full documentation matching the code features (PhD thesis) - v2.x further features and improvements feenox-1.1/doc/FAQ0000644000175000017500000004337514773607242010707 00000000000000Frequently Asked Questions about FeenoX Jeremy Theler 2025-04-03 - 1 What is FeenoX? - 2 How should I cite FeenoX? - 3 What does FeenoX mean? - 4 How should FeenoX be pronounced? - 5 Why nothing happens when I double click on feenox.exe? - 6 How do I create input decks for FeenoX? - 7 Does FeenoX support beam and/or shell elements? - 8 What license does FeenoX have? - 9 Why is FeenoX written in C and not in… - 9.1 C++? - 9.2 Fortran? - 9.3 Python or R? - 9.4 Go, Rust or Julia? [1 What is FeenoX?]: #what-is-feenox [2 How should I cite FeenoX?]: #how-should-i-cite-feenox [3 What does FeenoX mean?]: #what-does-feenox-mean [4 How should FeenoX be pronounced?]: #how-should-feenox-be-pronounced [5 Why nothing happens when I double click on feenox.exe?]: #why-nothing-happens-when-i-double-click-on-feenox.exe [6 How do I create input decks for FeenoX?]: #how-do-i-create-input-decks-for-feenox [7 Does FeenoX support beam and/or shell elements?]: #does-feenox-support-beam-andor-shell-elements [8 What license does FeenoX have?]: #what-license-does-feenox-have [9 Why is FeenoX written in C and not in…]: #why-is-feenox-written-in-c-and-not-in [9.1 C++?]: #c [9.2 Fortran?]: #fortran [9.3 Python or R?]: #python-or-r [9.4 Go, Rust or Julia?]: #go-rust-or-julia What is FeenoX? It is “cloud-first a free no-fee no-X uniX-like finite-element(ish) computational engineering tool.” Essentially, a finite-element program with a particular design basis: FeenoX is to finite-element programs and libraries what Markdown is to word processors (like Word) and typesetting systems (like TeX), respectively. In increasing order of complexity and comprehensiveness, these resources explain what FeenoX is: - The examples will give a brief overview of what FeenoX can do. - The tutorials will walk your through how to use FeenoX to solve problems. - The README in the GitHub repository has a brief introduction (after explaining why). - Theler, J. (2024). FeenoX: a cloud-first finite-element(ish) computational engineering tool. Journal of Open Source Software, 9(95), 5846. https://doi.org/10.21105/joss.05846 [DOI] - There is also a description in the documentation. - FeenoX is an “offer” to a fictitious “tender” for a computational tool. The RFQ is the Software Requirements Specification and the explanation of how FeenoX addresses each requirement is the Software Design Specification. - This presentation from August 2021 explains the SRS/SDS pair. The sources and the examples can be found in this Github repository. There is a recording of the presentation (audio is in Spanish). - Finally the manual will be the ultimate guide. [FeenoX]: https://www.seamplex.com/feenox [examples]: https://www.seamplex.com/feenox/examples [tutorials]: https://www.seamplex.com/feenox/doc/tutorials [README]: https://www.seamplex.com/feenox/ [GitHub repository]: https://github.com/seamplex/feenox/ [DOI]: https://joss.theoj.org/papers/10.21105/joss.05846/status.svg [1]: https://doi.org/10.21105/joss.05846 [description]: https://www.seamplex.com/feenox/doc/feenox-desc.html [documentation]: https://seamplex.com/feenox/doc/ [Software Requirements Specification]: https://www.seamplex.com/feenox/doc/srs.pdf [presentation from August 2021]: (https://www.seamplex.com/feenox/doc/2021-feenox.pdf) [this Github repository]: https://github.com/gtheler/2021-presentation [recording of the presentation]: (https://youtu.be/-RJ5qn7E9uE) [manual]: https://www.seamplex.com/feenox/doc/feenox-manual.pdf How should I cite FeenoX? If you use FeenoX and need to cite it, use this BiBTeX entry that points to the 2024 paper in JOSS: @article{feenox-2024, author = {Theler, Jeremy}, doi = {10.21105/joss.05846}, journal = {Journal of Open Source Software}, month = mar, number = {95}, pages = {5846}, title = {{FeenoX: a cloud-first finite-element(ish) computational engineering tool}}, url = {https://joss.theoj.org/papers/10.21105/joss.05846}, volume = {9}, year = {2024} } If you are not using BiBTeX (which you should), just use the plain-text APA format: Theler, J. (2024). FeenoX: a cloud-first finite-element(ish) computational engineering tool. Journal of Open Source Software, 9(95), 5846. https://doi.org/10.21105/joss.05846 [BiBTeX]: https://www.bibtex.org/ [the 2024 paper in JOSS]: https://joss.theoj.org/papers/10.21105/joss.05846 What does FeenoX mean? It does not mean anything particular, but - The last X makes it rhyme with Unix and Linux. - “noX” means that there is no graphical (i.e. X) interface - Fee-no means that there are no fees involved (free as in “free beer”) - FeenoX is the successor of the now-superseded FEA program Fino - It rhymes with FEniCS - With some luck one can read “Finite ElEments NO-X” - With mode luck, “FrEE” (as in “free speech”) How should FeenoX be pronounced? It would be something like fee-naaks: /fiːnɒks/ But whatever works for you is fine. Why nothing happens when I double click on feenox.exe? Because by design, FeenoX does not have a Graphical User Interface. Instead, it works like a transfer function between one or more input files and zero or more output files: +------------+ mesh (*.msh) } | | { terminal data (*.dat) } input ----> | FeenoX |----> output { data files input (*.fee) } | | { post (vtk/msh) +------------+ Recall that FeenoX is designed as a cloud-first tool, and “the cloud” runs on Unix (essentially GNU/Linux) so FeenoX is based on the Unix philosophy. In this world, programs act like filters (i.e. transfer functions). They are executed from a command-line terminal. So instead of “double clicking” the executable, one has to open a terminal and execute it there. Without any arguments it says how to use it: > feenox.exe FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information Run with --help for further explanations. > With -h it gives more information: > feenox.exe -h usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information --progress print ASCII progress bars when solving PDEs --mumps ask PETSc to use the direct linear solver MUMPS --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Instructions will be read from standard input if “-” is passed as inputfile, i.e. $ echo 'PRINT 2+2' | feenox - 4 The optional [replacement arguments] part of the command line mean that each argument after the input file that does not start with an hyphen will be expanded verbatim in the input file in each occurrence of $1, $2, etc. For example $ echo 'PRINT $1+$2' | feenox - 3 4 7 PETSc and SLEPc options can be passed in [petsc options] as well, with the difference that two hyphens have to be used instead of only once. For example, to pass the PETSc option -ksp_view the actual FeenoX invocation should be $ feenox input.fee --ksp_view See https://www.seamplex.com/feenox/examples for annotated examples. Report bugs at https://github.com/seamplex/feenox/issues Ask questions at https://github.com/seamplex/feenox/discussions Feenox home page: https://www.seamplex.com/feenox/ > It is explained there that the main input file has to be given as the first argument. So go to the tests or examples directory, find a test you like and run it: > cd tests > feenox parallelepiped.fee 0.000295443 > In any case, recall once again that FeenoX is a cloud-first tool, and Windows is not cloud-friendly, let alone cloud-first. It is time to re-think what you expect from a finite-element(ish) tool. If you still need a GUI, please check CAEplex. Try to avoid Windows as much as you can. The binaries are provided as transitional packages for people that for some reason still use such an outdated, anachronous, awful and invasive operating system. They are compiled with Cygwin and have no support whatsoever. Really, really, get rid of Windows ASAP. “It is really worth any amount of time and effort to get away from Windows if you are doing computational science.” https://lists.mcs.anl.gov/pipermail/petsc-users/2015-July/026388.html [Unix philosophy]: ./unix.md [CAEplex]: https://www.caeplex.com [Cygwin]: http://cygwin.com/ How do I create input decks for FeenoX? FeenoX does not have “input decks.” It has “input files,” which are syntactically-sugared English-like plain-text ASCII files that describe the problem to be solved. First see the examples and the test directory. Then read the documentation. There are syntax highlighting files for Kate and for Vim that helps the edition of input files. Contributions for other editors (emacs?) are welcome. [The Kate Text Editor can be used to prepare input files with syntax highlighting.] [2]: https://www.seamplex.com/feenox/examples/ [test directory]: https://github.com/seamplex/feenox/tree/main/tests [3]: https://www.seamplex.com/feenox/doc/ [for Kate]: https://github.com/seamplex/feenox/blob/main/doc/feenox.xml [for Vim]: https://github.com/seamplex/feenox/blob/main/doc/fee.vim [The Kate Text Editor can be used to prepare input files with syntax highlighting.]: nafems-le10-problem-input.svg Does FeenoX support beam and/or shell elements? No, it currently supports solid elements only. Therefore, three-dimensional problems need to have tetrahedra, hexahedra, prisms and/or pyramids; and two-dimensional problems need to have triangles or quadrangles. It might support non-solid elements for elasticity in future versions, though. Contributions are welcome. Check out the contributing guidelines. [contributing guidelines]: https://www.seamplex.com/feenox/doc/#contributing-guidelines What license does FeenoX have? TL;DR: - The code is GPLv3+: you can use it, modify it and re-distribute it freely (as in free speech) as long as you keep the same licensing terms. - The documentation is released under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0) FeenoX is licensed under the terms of the GNU General Public License version 3 or, at the user convenience, any later version. This means that users get the four essential freedoms:[1] 0. The freedom to run the program as they wish, for any purpose. 1. The freedom to study how the program works, and change it so it does their computing as they wish. 2. The freedom to redistribute copies so they can help others. 3. The freedom to distribute copies of their modified versions to others. So a free program has to be open source, but it also has to explicitly provide the four freedoms above both through the written license and through appropriate mechanisms to get, modify, compile, run and document these modifications using well-established and/or reasonable straightforward procedures. That is why licensing FeenoX as GPLv3+ also implies that the source code and all the scripts and makefiles needed to compile and run it are available for anyone that requires it (i.e. it is compiled with ./configure && make). Anyone wanting to modify the program either to fix bugs, improve it or add new features is free to do so. And if they do not know how to program, the have the freedom to hire a programmer to do it without needing to ask permission to the original authors. Even more, the documentation is released under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License so these new (or modified) features can be properly documented as well. Nevertheless, since these original authors are the copyright holders, they still can use it to either enforce or prevent further actions from the users that receive FeenoX under the GPLv3+. In particular, the license allows re-distribution of modified versions only if a. they are clearly marked as different from the original, and b. they are distributed under the same terms of the GPLv3+. There are also some other subtle technicalities that need not be discussed here such as - what constitutes a modified version (which cannot be redistributed under a different license) - what is an aggregate (in which each part be distributed under different licenses) - usage over a network and the possibility of using AGPL instead of GPL to further enforce freedom These issues are already taken into account in the FeenoX licensing scheme. It should be noted that not only is FeenoX free and open source, but also all of the libraries it depends on (and their dependencies) also are. It can also be compiled using free and open source build tool chains running over free and open source operating systems. [1] There are some examples of pieces of computational software which are described as “open source” in which even the first of the four freedoms is denied. The most iconic case is that of Android, whose sources are readily available online but there is no straightforward way of updating one’s mobile phone firmware with a customized version, not to mention vendor and hardware lock ins and the possibility of bricking devices if something unexpected happens. In the nuclear industry, it is the case of a Monte Carlo particle-transport program that requests users to sign an agreement about the objective of its usage before allowing its execution. The software itself might be open source because the source code is provided after signing the agreement, but it is not free (as in freedom) at all. [GNU General Public License]: https://www.gnu.org/licenses/gpl-3.0 [the documentation]: https://seamplex.com/feenox/doc/ [Creative Commons Attribution-ShareAlike 4.0 International License]: https://creativecommons.org/licenses/by-sa/4.0/ [AGPL]: https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License Why is FeenoX written in C and not in… See the programming guide for further discussion. [programming guide]: https://seamplex.com/feenox/doc/programming.html C++? Let us first start with some generalities Why is C still in use even though we have C++? https://www.quora.com/Why-is-C-still-in-use-even-though-we-have-C++-Is-there-anything-that-C-can-do-but-C++-cant-or-maybe-something-that-is-easier-to-do-in-C-rather-than-C++ As a C programmer, why didn’t you switch to C++ in your career? https://qr.ae/pGzfAO Why is PETSc programmed in C, instead of Fortran or C++? C enables us to build data structures for storing sparse matrices, solver information, etc. in ways that Fortran simply does not allow. ANSI C is a complete standard that all modern C compilers support. The language is identical on all machines. C++ is still evolving and compilers on different machines are not identical. Using C function pointers to provide data encapsulation and polymorphism allows us to get many of the advantages of C++ without using such a large and more complicated language. It would be natural and reasonable to have coded PETSc in C++; we opted to use C instead. https://www.mcs.anl.gov/petsc/documentation/faq.html#why-c Why Git is written in C and not in C++, by Linus Torvalds C++ is a horrible language. It’s made more horrible by the fact that a lot of substandard programmers use it, to the point where it’s much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do nothing but keep the C++ programmers out, that in itself would be a huge reason to use C. http://harmful.cat-v.org/software/c++/linus In particular, I think that even though object-oriented programming does provide a heck of a paradigm (hey, I actually rewrote my Blackjack engine in C++ from its first version in C), it might subtly “force” people to do stuff that is either way too - convoluted - artificial - hard to debug - long to compile I nevertheless think that - std containers are pretty cool - templating can give and edge on some cases - sometimes OOP may be a better approach to the Unix rule of representation (sometimes) However, the pros of C++ do not outweigh its cons for a cloud-first finite-elementish tool. Also, the name C++ is lame. [Blackjack engine]: https://www.seamplex.com/blackjack/ Fortran? Because I am not insane (yet). I do not know any sane person that would start writing a piece of software from scratch using Fortran in the 21st century AD. Python or R? Python was not designed to perform actual computations but to add another layer so as to ease some (and only some) tasks. The actual computations are written in low-level languages, not in Python (nor Octave, R, etc.) And even if it was, I would not choose a language where scope depends on the indentation. Go, Rust or Julia? I don’t know them in detail so I cannot tell if any of these languages would be a good fit for FeenoX. Keep in mind that it took me a while to know why not Fortran nor C++ even though there are people that would choose them over C. Maybe something of the sort happens with these new ideas (or not, I don’t know). feenox-1.1/doc/feenox.10000644000175000017500000023512414773607235011720 00000000000000.\" Automatically generated by Pandoc 3.2 .\" .TH "FEENOX" "1" "2025\-04\-03" "FeenoX" "FeenoX User Manual" .SH NAME FeenoX \- a cloud\-first free no\-X uniX\-like finite\-element(ish) computational engineering tool .SH SYNOPSIS The basic usage is to execute the \f[B]feenox\f[R] binary passing a path to an input file that defines the problem, along with other options and command\-line replacement arguments which are explained below: .PP \f[B]feenox\f[R] [\f[I]options\f[R] \&...] \f[I]input\-file\f[R] [\f[I]optional_commandline_replacement_arguments\f[R] \&...] .PP For large problems that do not fit in a single computer, a parallel run using \f[B]mpirun\f[R]\f[CR](1)\f[R] will be needed: .PP \f[B]mpirun\f[R] \f[B]\-n\f[R] \f[I]number_of_threads\f[R] \f[B]feenox\f[R] [\f[I]options\f[R] \&...] \f[I]input\-file\f[R] [\f[I]optional_commandline_replacement_arguments\f[R] \&...] .SH DESCRIPTION FeenoX is a computational tool that can solve engineering problems which are usually casted as differential\-algebraic equations (DAEs) or partial differential equations (PDEs). It is to finite elements programs and libraries what Markdown is to Word and TeX, respectively. In particular, it can solve .IP \[bu] 2 dynamical systems defined by a set of user\-provided DAEs (such as plant control dynamics for example) .IP \[bu] 2 mechanical elasticity .IP \[bu] 2 heat conduction .IP \[bu] 2 structural modal analysis .IP \[bu] 2 neutron diffusion .IP \[bu] 2 neutron transport .PP FeenoX reads a plain\-text input file which contains the problem definition and writes 100%\-user defined results in ASCII (through \f[CR]PRINT\f[R] or other user\-defined output instructions within the input file). For PDE problems, it needs a reference to at least one Gmsh mesh file for the discretization of the domain. It can write post\-processing views in either \f[CR].msh\f[R], \f[CR].vtu\f[R] or \f[CR].vtk\f[R] formats. .PP Keep in mind that FeenoX is just a back end reading a set of input files and writing a set of output files following the design philosophy of Unix (separation, composition, representation, economy, extensibility, etc). Think of it as a transfer function (or a filter in computer\-science jargon) between input files and output files: .IP .EX +\-\-\-\-\-\-\-\-\-\-\-\-+ mesh (*.msh) } | | { terminal data (*.dat) } input \-\-\-\-> | FeenoX |\-\-\-\-> output { data files input (*.fee) } | | { post (vtk/msh) +\-\-\-\-\-\-\-\-\-\-\-\-+ .EE .PP Following the Unix programming philosophy, there are no graphical interfaces attached to the FeenoX core, although a wide variety of pre and post\-processors can be used with FeenoX. To illustrate the transfer\-function approach, consider the following input file that solves Laplace\[cq]s equation ∇^2^\f[I]ϕ\f[R] = 0 on a square with some space\-dependent boundary conditions: .PP \f[I]ϕ\f[R](\f[I]x\f[R], \f[I]y\f[R]) = +\f[I]y\f[R]   for \f[I]x\f[R] = −1 (left) .PP \f[I]ϕ\f[R](\f[I]x\f[R], \f[I]y\f[R]) = −\f[I]y\f[R]   for \f[I]x\f[R] = +1 (right) .PP ∇\f[I]ϕ\f[R] ⋅ \f[I]n̂\f[R] = sin (\f[I]π\f[R]/2\f[I]x\f[R])   for \f[I]y\f[R] = −1 (bottom) .PP ∇\f[I]ϕ\f[R] ⋅ \f[I]n̂\f[R] = 0   for \f[I]y\f[R] = +1 (top) .IP .EX PROBLEM laplace 2d READ_MESH square\-centered.msh # [\-1:+1]x[\-1:+1] # boundary conditions BC left phi=+y BC right phi=\-y BC bottom dphidn=sin(pi/2*x) BC top dphidn=0 SOLVE_PROBLEM # same output in .msh and in .vtk formats WRITE_MESH laplace\-square.msh phi VECTOR dphidx dphidy 0 WRITE_MESH laplace\-square.vtk phi VECTOR dphidx dphidy 0 .EE .PP \ .PP Laplace\[cq]s equation solved with FeenoX .PP The \f[CR].msh\f[R] file can be post\-processed with Gmsh, and the \f[CR].vtu\f[R]/\f[CR].vtk\f[R] file can be post\-processed with Paraview. See https://www.caeplex.com for a mobile\-friendly web\-based interface for solving finite elements in the cloud directly from the browser. .SH OPTIONS .IP .EX feenox [options] inputfile [replacement arguments] [petsc options] .EE .TP \f[CR]\-h\f[R], \f[CR]\-\-help\f[R] display options and detailed explanations of command\-line usage .TP \f[CR]\-v\f[R], \f[CR]\-\-version\f[R] display brief version information and exit .TP \f[CR]\-V\f[R], \f[CR]\-\-versions\f[R] display detailed version information .TP \f[CR]\-c\f[R], \f[CR]\-\-check\f[R] validates if the input file is sane or not .TP \f[CR]\-\-pdes\f[R] list the types of \f[CR]PROBLEM\f[R]s that FeenoX can solve, one per line .TP \f[CR]\-\-elements_info\f[R] output a document with information about the supported element types .TP \f[CR]\-\-ast\f[R] dump an abstract syntax tree of the input .TP \f[CR]\-\-linear\f[R] force FeenoX to solve the PDE problem as linear .TP \f[CR]\-\-non\-linear\f[R] force FeenoX to solve the PDE problem as non\-linear .TP \f[CR]\-\-progress\f[R] print ASCII progress bars when solving PDEs .TP \f[CR]\-\-mumps\f[R] ask PETSc to use the direct linear solver MUMPS .PP Instructions will be read from standard input if \[lq]\-\[rq] is passed as \f[CR]inputfile\f[R], i.e. .IP .EX $ echo \[aq]PRINT 2+2\[aq] | feenox \- 4 .EE .PP The optional \f[CR][replacement arguments]\f[R] part of the command line mean that each argument after the input file that does not start with an hyphen will be expanded verbatim in the input file in each occurrence of \f[CR]$1\f[R], \f[CR]$2\f[R], etc. For example .IP .EX $ echo \[aq]PRINT $1+$2\[aq] | feenox \- 3 4 7 .EE .PP PETSc and SLEPc options can be passed in \f[CR][petsc options]\f[R] (or \f[CR][options]\f[R]) as well, with the difference that two hyphens have to be used instead of only once. For example, to pass the PETSc option \f[CR]\-ksp_view\f[R] the actual FeenoX invocation should be .IP .EX $ feenox input.fee \-\-ksp_view .EE .PP For PETSc options that take values, en equal sign has to be used: .IP .EX $ feenox input.fee \-\-mg_levels_pc_type=sor .EE .PP See https://www.seamplex.com/feenox/examples for annotated examples. .SH EXAMPLES .SH EXIT STATUS .SH ENVIRONMENT .SH FILES .SH CONFORMING TO .SH INPUT\-FILE KEYWORDS .SS GENERIC KEYWORDS .SS \f[CR]ABORT\f[R] .PP Catastrophically abort the execution and quit FeenoX. .IP .EX ABORT .EE .PP Whenever the instruction \f[CR]ABORT\f[R] is executed, FeenoX quits with a non\-zero error leve. It does not close files nor unlock shared memory objects. The objective of this instruction is to either debug complex input files by using only parts of them or to conditionally abort the execution using \f[CR]IF\f[R] clauses. .SS \f[CR]ALIAS\f[R] .PP Define a scalar alias of an already\-defined identifier. .IP .EX ALIAS { IS | AS } .EE .PP The existing object can be a variable, a vector element or a matrix element. In the first case, the name of the variable should be given as the existing object. In the second case, to alias the second element of vector \f[CR]v\f[R] to the new name \f[CR]new\f[R], \f[CR]v(2)\f[R] should be given as the existing object. In the third case, to alias second element (2,3) of matrix \f[CR]M\f[R] to the new name \f[CR]new\f[R], \f[CR]M(2,3)\f[R] should be given as the existing object. .SS \f[CR]CLOSE\f[R] .PP Explicitly close a file after input/output. .IP .EX CLOSE .EE .PP The given \f[CR]\f[R] can be either a fixed\-string path or an already\-defined \f[CR]FILE\f[R]. .SS \f[CR]DEFAULT_ARGUMENT_VALUE\f[R] .PP Give a default value for an optional commandline argument. .IP .EX DEFAULT_ARGUMENT_VALUE .EE .PP If a \f[CR]$n\f[R] construction is found in the input file but the commandline argument was not given, the default behavior is to fail complaining that an extra argument has to be given in the commandline. With this keyword, a default value can be assigned if no argument is given, thus avoiding the failure and making the argument optional. The \f[CR]\f[R] should be 1, 2, 3, etc. and \f[CR]\f[R] will be expanded character\-by\-character where the \f[CR]$n\f[R] construction is. Whether the resulting expression is to be interpreted as a string or as a numerical expression will depend on the context. .SS \f[CR]FILE\f[R] .PP Define a file with a particularly formatted name to be used either as input or as output. .IP .EX < FILE | OUTPUT_FILE | INPUT_FILE > PATH expr_1 expr_2 ... expr_n [ INPUT | OUTPUT | APPEND | MODE ] .EE .PP For reading or writing into files with a fixed path, this instruction is usually not needed as the \f[CR]FILE\f[R] keyword of other instructions (such as \f[CR]PRINT\f[R] or \f[CR]MESH\f[R]) can take a fixed\-string path as an argument. However, if the file name changes as the execution progresses (say because one file for each step is needed), then an explicit \f[CR]FILE\f[R] needs to be defined with this keyword and later referenced by the given name. .PD 0 .P .PD The path should be given as a \f[CR]printf\f[R]\-like format string followed by the expressions which should be evaluated in order to obtain the actual file path. The expressions will always be floating\-point expressions, but the particular integer specifier \f[CR]%d\f[R] is allowed and internally transformed to \f[CR]%.0f\f[R]. The file can be explicitly defined and \f[CR]INPUT\f[R], \f[CR]OUTPUT\f[R] or a certain \f[CR]fopen()\f[R] mode can be given (i.e.\ \[lq]a\[rq]). If not explicitly given, the nature of the file will be taken from context, i.e.\ \f[CR]FILE\f[R]s in \f[CR]PRINT\f[R] will be \f[CR]OUTPUT\f[R] and \f[CR]FILE\f[R]s in \f[CR]FUNCTION\f[R] will be \f[CR]INPUT\f[R]. This keyword just defines the \f[CR]FILE\f[R], it does not open it. The file will be actually opened (and eventually closed) automatically. In the rare case where the automated opening and closing does not fit the expected workflow, the file can be explicitly opened or closed with the instructions \f[CR]FILE_OPEN\f[R] and \f[CR]FILE_CLOSE\f[R]. .SS \f[CR]FIT\f[R] .PP Find parameters to fit an analytical function to a pointwise\-defined function. .IP .EX FIT TO VIA ... [ GRADIENT ... ] [ RANGE_MIN ... ] [ RANGE_MAX ... ] [ TOL_REL ] [ TOL_ABS ] [ MAX_ITER ] [ VERBOSE ] .EE .PP The function with the data has to be point\-wise defined (i.e.\ a \f[CR]FUNCTION\f[R] read from a file, with inline \f[CR]DATA\f[R] or defined over a mesh). The function to be fitted has to be parametrized with at least one of the variables provided after the \f[CR]USING\f[R] keyword. For example to fit\ \f[I]f\f[R](\f[I]x\f[R], \f[I]y\f[R]) = \f[I]a\f[R]\f[I]x\f[R]^2^ + \f[I]b\f[R]\f[I]s\f[R]\f[I]q\f[R]\f[I]r\f[R]\f[I]t\f[R](\f[I]y\f[R]) to a pointwise\-defined function\ \f[I]g\f[R](\f[I]x\f[R], \f[I]y\f[R]) one gives \f[CR]FIT f TO g VIA a b\f[R]. Only the names of the functions have to be given, not the arguments. Both functions have to have the same number of arguments. The initial guess of the solution is given by the initial value of the variables after the \f[CR]VIA\f[R] keyword. Analytical expressions for the gradient of the function to be fitted with respect to the parameters to be fitted can be optionally given with the \f[CR]GRADIENT\f[R] keyword. If none is provided, the gradient will be computed numerically using finite differences. A range over which the residuals are to be minimized can be given with \f[CR]RANGE_MIN\f[R] and \f[CR]RANGE_MAX\f[R]. The expressions give the range of the arguments of the functions, not of the parameters. For multidimensional fits, the range is an hypercube. If no range is given, all the definition points of the function with the data are used for the fit. Convergence can be controlled by giving the relative and absolute tolreances with \f[CR]TOL_REL\f[R] (default \f[CR]DEFAULT_NLIN_FIT_EPSREL\f[R]) and \f[CR]TOL_ABS\f[R] (default \f[CR]DEFAULT_NLIN_FIT_EPSABS\f[R]), and with the maximum number of iterations \f[CR]MAX_ITER\f[R] (default DEFAULT_NLIN_FIT_MAX_ITER). If the optional keyword \f[CR]VERBOSE\f[R] is given, some data of the intermediate steps is written in the standard output. .SS \f[CR]FUNCTION\f[R] .PP Define a scalar function of one or more variables. .IP .EX FUNCTION ([,var2,...,var_n]) { = | FILE { } | VECTORS ... | MESH | DATA ... } [ COLUMNS ... ] [ INTERPOLATION { linear | polynomial | spline | spline_periodic | akima | akima_periodic | steffen | nearest | shepard | shepard_kd | bilinear } ] [ INTERPOLATION_THRESHOLD ] [ SHEPARD_RADIUS ] [ SHEPARD_EXPONENT ] .EE .PP The number of variables \f[I]n\f[R] is given by the number of arguments given between parenthesis after the function name. The arguments are defined as new variables if they had not been already defined explicitly as scalar variables. If the function is given as an algebraic expression, the short\-hand operator \f[CR]=\f[R] (or \f[CR]:=\f[R] for compatibility with Maxima) can be used. That is to say, \f[CR]FUNCTION f(x) = x\[ha]2\f[R] is equivalent to \f[CR]f(x) = x\[ha]2\f[R] (or \f[CR]f(x) := x\[ha]2\f[R]). If a \f[CR]FILE\f[R] is given, an ASCII file containing at least \f[I]n\f[R] + 1 columns is expected. By default, the first \f[I]n\f[R] columns are the values of the arguments and the last column is the value of the function at those points. The order of the columns can be changed with the keyword \f[CR]COLUMNS\f[R], which expects \f[I]n\f[R] + 1 expressions corresponding to the column numbers. If \f[CR]VECTORS\f[R] is given, a set of \f[I]n\f[R] + 1 vectors of the same size is expected. The first \f[I]n\f[R] correspond to the arguments and the last one to the function values. If \f[CR]MESH\f[R] is given, the function is point\-wise defined over the mesh topology. That is to say, the independent variables (i.e.\ the spatial coordinates) coincide with the mesh nodes. The dependent variable (i.e.\ the function value) is set by \[lq]filling\[rq] a vector named \f[CR]vec_f\f[R] (where \f[CR]f\f[R] has to be replaced with the function name) of size equal to the number of nodes. .PD 0 .P .PD The function can be pointwise\-defined inline in the input using \f[CR]DATA\f[R]. This should be the last keyword of the line, followed by \f[I]N\f[R] = \f[I]k\f[R] ⋅ (\f[I]n\f[R] + 1) expressions giving\ \f[I]k\f[R] definition points: \f[I]n\f[R] arguments and the value of the function. Multiline continuation using brackets \f[CR]{\f[R] and \f[CR]}\f[R] can be used for a clean data organization. Interpolation schemes can be given for either one or multi\-dimensional functions with \f[CR]INTERPOLATION\f[R]. Available schemes for \f[I]n\f[R] = 1 are: .IP \[bu] 2 linear .IP \[bu] 2 polynomial, the grade is equal to the number of data minus one .IP \[bu] 2 spline, cubic (needs at least 3 points) .IP \[bu] 2 spline_periodic .IP \[bu] 2 akima (needs at least 5 points) .IP \[bu] 2 akima_periodic (needs at least 5 points) .IP \[bu] 2 steffen, always\-monotonic splines\-like interpolator .PP Default interpolation scheme for one\-dimensional functions is \f[CR]DEFAULT_INTERPOLATION\f[R]. .PP Available schemes for \f[I]n\f[R] > 1 are: .IP \[bu] 2 nearest, \f[I]f\f[R](\f[I]x⃗\f[R]) is equal to the value of the closest definition point .IP \[bu] 2 shepard, inverse distance weighted average definition points (might lead to inefficient evaluation) .IP \[bu] 2 shepard_kd, average of definition points within a kd\-tree (more efficient evaluation provided \f[CR]SHEPARD_RADIUS\f[R] is set to a proper value) .IP \[bu] 2 bilinear, only available if the definition points configure an structured hypercube\-like grid. If \f[I]n\f[R] > 3, \f[CR]SIZES\f[R] should be given. .PP For \f[I]n\f[R] > 1, if the euclidean distance between the arguments and the definition points is smaller than \f[CR]INTERPOLATION_THRESHOLD\f[R], the definition point is returned and no interpolation is performed. Default value is square root of \f[CR]DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD\f[R]. .PP The initial radius of points to take into account in \f[CR]shepard_kd\f[R] is given by \f[CR]SHEPARD_RADIUS\f[R]. If no points are found, the radius is double until at least one definition point is found. The radius is doubled until at least one point is found. Default is \f[CR]DEFAULT_SHEPARD_RADIUS\f[R]. The exponent of the \f[CR]shepard\f[R] method is given by \f[CR]SHEPARD_EXPONENT\f[R]. Default is \f[CR]DEFAULT_SHEPARD_EXPONENT\f[R]. .SS \f[CR]IF\f[R] .PP Execute a set of instructions if a condition is met. .IP .EX IF expr [ ELSE ] ENDIF .EE .SS \f[CR]IMPLICIT\f[R] .PP Define whether implicit definition of variables is allowed or not. .IP .EX IMPLICIT { NONE | ALLOWED } .EE .PP By default, FeenoX allows variables (but not vectors nor matrices) to be implicitly declared. To avoid introducing errors due to typos, explicit declaration of variables can be forced by giving \f[CR]IMPLICIT NONE\f[R]. Whether implicit declaration is allowed or explicit declaration is required depends on the last \f[CR]IMPLICIT\f[R] keyword given, which by default is \f[CR]ALLOWED\f[R]. .SS \f[CR]INCLUDE\f[R] .PP Include another FeenoX input file. .IP .EX INCLUDE [ FROM ] [ TO ] .EE .PP Includes the input file located in the string \f[CR]file_path\f[R] at the current location. The effect is the same as copying and pasting the contents of the included file at the location of the \f[CR]INCLUDE\f[R] keyword. The path can be relative or absolute. Note, however, that when including files inside \f[CR]IF\f[R] blocks that instructions are conditionally\-executed but all definitions (such as function definitions) are processed at parse\-time independently from the evaluation of the conditional. The included file has to be an actual file path (i.e.\ it cannot be a FeenoX \f[CR]FILE\f[R]) because it needs to be resolved at parse time. Yet, the name can contain a commandline replacement argument such as \f[CR]$1\f[R] so \f[CR]INCLUDE $1.fee\f[R] will include the file specified after the main input file in the command line. The optional \f[CR]FROM\f[R] and \f[CR]TO\f[R] keywords can be used to include only portions of a file. .SS \f[CR]MATRIX\f[R] .PP Define a matrix. .IP .EX MATRIX ROWS COLS [ DATA ... | .EE .PP A new matrix of the prescribed size is defined. The number of rows and columns can be an expression which will be evaluated the very first time the matrix is used and then kept at those constant values. All elements will be initialized to zero unless \f[CR]DATA\f[R] is given (which should be the last keyword of the line), in which case the expressions will be evaluated the very first time the matrix is used and row\-major\-assigned to each of the elements. If there are less elements than the matrix size, the remaining values will be zero. If there are more elements than the matrix size, the values will be ignored. .SS \f[CR]OPEN\f[R] .PP Explicitly open a file for input/output. .IP .EX OPEN [ MODE ] .EE .PP The given \f[CR]\f[R] can be either a fixed\-string path or an already\-defined \f[CR]FILE\f[R]. The mode is only taken into account if the file is not already defined. Default is write \f[CR]w\f[R]. .SS \f[CR]PRINT\f[R] .PP Write plain\-text and/or formatted data to the standard output or into an output file. .IP .EX PRINT [ ... ] [ TEXT ... TEXT ] [ FILE { | } ] [ HEADER ] [ NONEWLINE ] [ SEP ] [ SKIP_STEP ] [ SKIP_STATIC_STEP ] [ SKIP_TIME ] [ SKIP_HEADER_STEP ] .EE .PP Each argument \f[CR]object\f[R] which is not a keyword of the \f[CR]PRINT\f[R] instruction will be part of the output. Objects can be either a matrix, a vector or any valid scalar algebraic expression. If the given object cannot be solved into a valid matrix, vector or expression, it is treated as a string literal if \f[CR]IMPLICIT\f[R] is \f[CR]ALLOWED\f[R], otherwise a parser error is raised. To explicitly interpret an object as a literal string even if it resolves to a valid numerical expression, it should be prefixed with the \f[CR]TEXT\f[R] keyword such as \f[CR]PRINT TEXT 1+1\f[R] that would print \f[CR]1+1\f[R] instead of \f[CR]2\f[R]. Objects and string literals can be mixed and given in any order. Hashes \f[CR]#\f[R] appearing literal in text strings have to be quoted to prevent the parser to treat them as comments within the FeenoX input file and thus ignoring the rest of the line, like \f[CR]PRINT \[dq]\[rs]# this is a printed comment\[dq]\f[R]. Whenever an argument starts with a porcentage sign \f[CR]%\f[R], it is treated as a C \f[CR]printf\f[R]\-compatible format specifier and all the objects that follow it are printed using the given format until a new format definition is found. The objects are treated as double\-precision floating point numbers, so only floating point formats should be given. See the \f[CR]printf(3)\f[R] man page for further details. The default format is \f[CR]DEFAULT_PRINT_FORMAT\f[R]. Matrices, vectors, scalar expressions, format modifiers and string literals can be given in any desired order, and are processed from left to right. Vectors are printed element\-by\-element in a single row. See \f[CR]PRINT_VECTOR\f[R] to print one or more vectors with one element per line (i.e.\ vertically). Matrices are printed element\-by\-element in a single line using row\-major ordering if mixed with other objects but in the natural row and column fashion if it is the only given object in the \f[CR]PRINT\f[R] instruction. If the \f[CR]FILE\f[R] keyword is not provided, default is to write to \f[CR]stdout\f[R]. If the \f[CR]HEADER\f[R] keyword is given, a single line containing the literal text given for each object is printed at the very first time the \f[CR]PRINT\f[R] instruction is processed, starting with a hash \f[CR]#\f[R] character. .PD 0 .P .PD If the \f[CR]NONEWLINE\f[R] keyword is not provided, default is to write a newline \f[CR]\[rs]n\f[R] character after all the objects are processed. Otherwise, if the last token to be printed is a numerical value, a separator string will be printed but not the newline \f[CR]\[rs]n\f[R] character. If the last token is a string, neither the separator nor the newline will be printed. The \f[CR]SEP\f[R] keyword expects a string used to separate printed objects. To print objects without any separation in between give an empty string like \f[CR]SEP \[dq]\[dq]\f[R]. The default is a tabulator character `DEFAULT_PRINT_SEPARATOR' character. To print an empty line write \f[CR]PRINT\f[R] without arguments. By default the \f[CR]PRINT\f[R] instruction is evaluated every step. If the \f[CR]SKIP_STEP\f[R] (\f[CR]SKIP_STATIC_STEP\f[R]) keyword is given, the instruction is processed only every the number of transient (static) steps that results in evaluating the expression, which may not be constant. The \f[CR]SKIP_HEADER_STEP\f[R] keyword works similarly for the optional \f[CR]HEADER\f[R] but by default it is only printed once. The \f[CR]SKIP_TIME\f[R] keyword use time advancements to choose how to skip printing and may be useful for non\-constant time\-step problems. .SS \f[CR]PRINTF\f[R] .PP Instruction akin to C\[cq]s \f[CR]printf\f[R]. Instruction akin to C\[cq]s \f[CR]printf\f[R] executed locally from all MPI ranks. .IP .EX PRINTF PRINTF_ALL format_string [ expr_1 [ expr_2 [ ... ] ] ] .EE .PP The \f[CR]format_string\f[R] should be a \f[CR]printf\f[R]\-like string containing double\-precision format specifiers. A matching number of expressions should be given. No newline is written if not explicitly asked for in the format string with \f[CR]\[rs]n\f[R]. .PD 0 .P .PD Do not ask for string literals \f[CR]%s\f[R]. .PD 0 .P .PD As always, to get a literal \f[CR]%\f[R] use \f[CR]%%\f[R] in the format string. .SS \f[CR]PRINT_FUNCTION\f[R] .PP Print one or more functions as a table of values of dependent and independent variables. .IP .EX PRINT_FUNCTION [ { function | expr } ... { function | expr } ] [ FILE { | } ] [ HEADER ] [ MIN ... ] [ MAX ... ] [ STEP ... ] [ NSTEPs ... ] [ FORMAT ] [ { vector | expr } ... { vector | expr } ] .EE .PP Each argument should be either a function or an expression. The output of this instruction consists of\ \f[I]n\f[R] + \f[I]k\f[R] columns, where\ \f[I]n\f[R] is the number of arguments of the first function of the list and\ \f[I]k\f[R] is the number of functions and expressions given. The first\ \f[I]n\f[R] columns are the arguments (independent variables) and the last\ \f[I]k\f[R] one has the evaluated functions and expressions. The columns are separated by a tabulator, which is the format that most plotting tools understand. Only function names without arguments are expected. All functions should have the same number of arguments. Expressions can involve the arguments of the first function. If the \f[CR]FILE\f[R] keyword is not provided, default is to write to \f[CR]stdout\f[R]. If \f[CR]HEADER\f[R] is given, the output is prepended with a single line containing the names of the arguments and the names of the functions, separated by tabs. The header starts with a hash\ \f[CR]#\f[R] that usually acts as a comment and is ignored by most plotting tools. If there is no explicit range where to evaluate the functions and the first function is point\-wise defined, they are evalauted at the points of definition of the first one. The range can be explicitly given as a product of\ \f[I]n\f[R] ranges\ [\f[I]x\f[R]~\f[I]i\f[R], min ~, \f[I]x\f[R]~\f[I]i\f[R], max ~] for \f[I]i\f[R] = 1, \&..., \f[I]n\f[R]. .PD 0 .P .PD The values \f[I]x\f[R]~\f[I]i\f[R], min ~ and \f[I]x\f[R]~\f[I]i\f[R], max ~ are given with the \f[CR]MIN\f[R] \f[I]and\f[R] \f[CR]MAX\f[R] keywords. The discretization steps of the ranges are given by either \f[CR]STEP\f[R] that gives\ \f[I]δ\f[R]\f[I]x\f[R] \f[I]or\f[R] \f[CR]NSTEPS\f[R] that gives the number of steps. If the first function is not point\-wise defined, the ranges are mandatory. .SS \f[CR]PRINT_VECTOR\f[R] .PP Print the elements of one or more vectors, one element per line. .IP .EX PRINT_VECTOR [ FILE { | } ] [ HEADER ] [ SEP ] .EE .PP Each argument should be either a vector or an expression of the integer\ \f[CR]i\f[R]. If the \f[CR]FILE\f[R] keyword is not provided, default is to write to \f[CR]stdout\f[R]. If \f[CR]HEADER\f[R] is given, the output is prepended with a single line containing the names of the arguments and the names of the functions, separated by tabs. The header starts with a hash\ \f[CR]#\f[R] that usually acts as a comment and is ignored by most plotting tools. The \f[CR]SEP\f[R] keyword expects a string used to separate printed objects. To print objects without any separation in between give an empty string like \f[CR]SEP \[dq]\[dq]\f[R]. The default is a tabulator character `DEFAULT_PRINT_SEPARATOR' character. .SS \f[CR]SOLVE\f[R] .PP Solve a (small) system of non\-linear equations. .IP .EX SOLVE FOR UNKNOWNS ... [ METHOD { dnewton | hybrid | hybrids | broyden } ] [ EPSABS ] [ EPSREL ] [ MAX_ITER ] .EE .SS \f[CR]SORT_VECTOR\f[R] .PP Sort the elements of a vector, optionally making the same rearrangement in another vector. .IP .EX SORT_VECTOR [ ASCENDING | DESCENDING ] [ ] .EE .PP This instruction sorts the elements of \f[CR]\f[R] into either ascending or descending numerical order. If \f[CR]\f[R] is given, the same rearrangement is made on it. Default is ascending order. .SS \f[CR]VAR\f[R] .PP Explicitly define one or more scalar variables. .IP .EX VAR [ ] ... [ ] .EE .PP When implicit definition is allowed (see \f[CR]IMPLICIT\f[R]), scalar variables need not to be defined before being used if from the context FeenoX can tell that an scalar variable is needed. For instance, when defining a function like \f[CR]f(x) = x\[ha]2\f[R] it is not needed to declare \f[CR]x\f[R] explicitly as a scalar variable. But if one wants to define a function like \f[CR]g(x) = integral(f(x\[aq]), x\[aq], 0, x)\f[R] then the variable \f[CR]x\[aq]\f[R] needs to be explicitly defined as \f[CR]VAR x\[aq]\f[R] before the integral. .SS \f[CR]VECTOR\f[R] .PP Define a vector. .IP .EX VECTOR SIZE [ FUNCTION_DATA ] [ DATA ... | .EE .PP A new vector of the prescribed size is defined. The size can be an expression which will be evaluated the very first time the vector is used and then kept at that constant value. If the keyword \f[CR]FUNCTION_DATA\f[R] is given, the elements of the vector will be synchronized with the inpedendent values of the function, which should be point\-wise defined. The sizes of both the function and the vector should match. All elements will be initialized to zero unless \f[CR]DATA\f[R] is given (which should be the last keyword of the line), in which case the expressions will be evaluated the very first time the vector is used and assigned to each of the elements. If there are less elements than the vector size, the remaining values will be zero. If there are more elements than the vector size, the values will be ignored. .SS DAE\-RELATED KEYWORDS .SS \f[CR]INITIAL_CONDITIONS\f[R] .PP Define how initial conditions of DAE problems are computed. .IP .EX INITIAL_CONDITIONS { AS_PROVIDED | FROM_VARIABLES | FROM_DERIVATIVES } .EE .PP In DAE problems, initial conditions may be either: .IP \[bu] 2 equal to the provided expressions (\f[CR]AS_PROVIDED\f[R]) .IP \[bu] 2 the derivatives computed from the provided phase\-space variables (\f[CR]FROM_VARIABLES\f[R]) .IP \[bu] 2 the phase\-space variables computed from the provided derivatives (\f[CR]FROM_DERIVATIVES\f[R]) .PP In the first case, it is up to the user to fulfill the DAE system at\ \f[I]t\f[R] = 0. If the residuals are not small enough, a convergence error will occur. The \f[CR]FROM_VARIABLES\f[R] option means calling IDA\[cq]s \f[CR]IDACalcIC\f[R] routine with the parameter \f[CR]IDA_YA_YDP_INIT\f[R]. The \f[CR]FROM_DERIVATIVES\f[R] option means calling IDA\[cq]s \f[CR]IDACalcIC\f[R] routine with the parameter IDA_Y_INIT. Wasora should be able to automatically detect which variables in phase\-space are differential and which are purely algebraic. However, the \f[CR]DIFFERENTIAL\f[R] keyword may be used to explicitly define them. See the SUNDIALS documentation for further information. .SS \f[CR]PHASE_SPACE\f[R] .PP Ask FeenoX to solve a set of algebraic\-differntial equations and define the variables, vectors and/or matrices that span the phase space. .IP .EX PHASE_SPACE PHASE_SPACE ... ... ... .EE .SS \f[CR]TIME_PATH\f[R] .PP Force time\-dependent problems to pass through specific instants of time. .IP .EX TIME_PATH [ [ ... ] ] .EE .PP The time step \f[CR]dt\f[R] will be reduced whenever the distance between the current time \f[CR]t\f[R] and the next expression in the list is greater than \f[CR]dt\f[R] so as to force \f[CR]t\f[R] to coincide with the expressions given. The list of expressions should evaluate to a sorted list of values for all times. .SS PDE\-RELATED KEYWORDS .SS \f[CR]BC\f[R] .PP Define a boundary condition to be applied to faces, edges and/or vertices. .IP .EX BC [ MESH ] [ GROUP GROUP ... ] [ ... ] [ GROUPS ... ] .EE .PP If the name of the boundary condition matches a physical group in the mesh, and neither \f[CR]GROUP\f[R] nor \f[CR]GROUPS\f[R] are given, it is automatically linked to that physical group. If there are many meshes, the mesh this keyword refers to has to be given with \f[CR]MESH\f[R]. If the boundary condition applies to more than one physical group in the mesh, they can be added using as many \f[CR]GROUP\f[R] keywords as needed. Each \f[CR]\f[R] argument is a single string whose meaning depends on the type of problem being solved. For instance \f[CR]T=150*sin(x/pi)\f[R] prescribes the temperature to depend on space as the provided expression in a thermal problem and \f[CR]fixed\f[R] fixes the displacements in all the directions in a mechanical or modal problem. See the particular section on boundary conditions for further details. If the keyword \f[CR]GROUPS\f[R] is given, then the rest of the tokens are parsed as group names where the boundary condition is applied. If either \f[CR]GROUP\f[R] or \f[CR]GROUPS\f[R] are given explicitly, then the \f[CR]BC\f[R] name is not used to try to implicitly link it to a physical group in the mesh. .SS \f[CR]COMPUTE_REACTION\f[R] .PP Compute the reaction (force, moment, power, etc.) at selected face, edge or vertex. .IP .EX COMPUTE_REACTION [ MOMENT [ X0 ] [ Y0 ] [ Z0 ] ] RESULT { | } .EE .PP If the \f[CR]MOMENT\f[R] keyword is not given, the zero\-th order reaction is computed, i.e.\ force in elasticity and power in thermal. If the \f[CR]MOMENT\f[R] keyword is given, then the coordinates of the center can be given with \f[CR]X0\f[R], \f[CR]Y0\f[R] and \f[CR]Z0\f[R]. If they are not, the moment is computed about the barycenter of the physical group. The resulting reaction will be stored in the variable (thermal) or vector (elasticity) provided. If the variable or vector does not exist, it will be created. .SS \f[CR]DUMP\f[R] .PP Dump raw PETSc objects used to solve PDEs into files. .IP .EX DUMP [ FORMAT { binary | ascii | octave } ] [ K | K_bc | b | b_bc | M | M_bc | .EE .SS \f[CR]FIND_EXTREMA\f[R] .PP Find and/or compute the absolute extrema of a function or expression over a mesh (or a subset of it). .IP .EX FIND_EXTREMA { | } [ OVER ] [ MESH ] [ NODES | CELLS | GAUSS ] [ MIN ] [ MAX ] [ X_MIN ] [ X_MAX ] [ Y_MIN ] [ Y_MAX ] [ Z_MIN ] [ Z_MAX ] [ I_MIN ] [ I_MAX ] .EE .PP Either an expression or a function of space \f[I]x\f[R], \f[I]y\f[R] and/or \f[I]z\f[R] should be given. By default the search is performed over the highest\-dimensional elements of the mesh, i.e.\ over the whole volume, area or length for three, two and one\-dimensional meshes, respectively. If the search is to be carried out over just a physical group, it has to be given in \f[CR]OVER\f[R]. If there are more than one mesh defined, an explicit one has to be given with \f[CR]MESH\f[R]. If neither \f[CR]NODES\f[R], \f[CR]CELLS\f[R] or \f[CR]GAUSS\f[R] is given then the search is performed over the three of them. With \f[CR]NODES\f[R] only the function or expression is evalauted at the mesh nodes. With \f[CR]CELLS\f[R] only the function or expression is evalauted at the element centers. With \f[CR]GAUSS\f[R] only the function or expression is evalauted at the Gauss points. The value of the absolute minimum (maximum) is stored in the variable indicated by \f[CR]MIN\f[R] (\f[CR]MAX\f[R]). If the variable does not exist, it is created. The value of the \f[I]x\f[R]\-\f[I]y\f[R]\-\f[I]z\f[R]\ coordinate of the absolute minimum (maximum) is stored in the variable indicated by \f[CR]X_MIN\f[R]\-\f[CR]Y_MIN\f[R]\-\f[CR]Z_MIN\f[R] (\f[CR]X_MAX\f[R]\-\f[CR]Y_MAX\f[R]\-\f[CR]Z_MAX\f[R]). If the variable does not exist, it is created. The index (either node or cell) where the absolute minimum (maximum) is found is stored in the variable indicated by \f[CR]I_MIN\f[R] (\f[CR]I_MAX\f[R]). .SS \f[CR]INTEGRATE\f[R] .PP Spatially integrate a function or expression over a mesh (or a subset of it). .IP .EX INTEGRATE { | } [ OVER ] [ MESH ] [ GAUSS | CELLS ] RESULT .EE .PP Either an expression or a function of space \f[I]x\f[R], \f[I]y\f[R] and/or \f[I]z\f[R] should be given. If the integrand is a function, do not include the arguments, i.e.\ instead of \f[CR]f(x,y,z)\f[R] just write \f[CR]f\f[R]. The results should be the same but efficiency will be different (faster for pure functions). By default the integration is performed over the highest\-dimensional elements of the mesh, i.e.\ over the whole volume, area or length for three, two and one\-dimensional meshes, respectively. If the integration is to be carried out over just a physical group, it has to be given in \f[CR]OVER\f[R]. If there are more than one mesh defined, an explicit one has to be given with \f[CR]MESH\f[R]. Either \f[CR]GAUSS\f[R] or \f[CR]CELLS\f[R] define how the integration is to be performed. With \f[CR]GAUSS\f[R] the integration is performed using the Gauss points and weights associated to each element type. With \f[CR]CELLS\f[R] the integral is computed as the sum of the product of the integrand at the center of each cell (element) and the cell\[cq]s volume. Do expect differences in the results and efficiency between these two approaches depending on the nature of the integrand. The scalar result of the integration is stored in the variable given by the mandatory keyword \f[CR]RESULT\f[R]. If the variable does not exist, it is created. .SS \f[CR]MATERIAL\f[R] .PP Define a material its and properties to be used in volumes. .IP .EX MATERIAL [ MESH ] [ LABEL [ LABEL [ ... ] ] ] [ = [ = [ ... ] ] ] .EE .PP If the name of the material matches a physical group in the mesh, it is automatically linked to that physical group. If there are many meshes, the mesh this keyword refers to has to be given with \f[CR]MESH\f[R]. If the material applies to more than one physical group in the mesh, they can be added using as many \f[CR]LABEL\f[R] keywords as needed. The names of the properties in principle can be arbitrary, but each problem type needs a minimum set of properties defined with particular names. For example, steady\-state thermal problems need at least the conductivity which should be named\ \f[CR]k\f[R]. If the problem is transient, it will also need heat capacity\ \f[CR]rhocp\f[R] or diffusivity\ \f[CR]alpha\f[R]. Mechanical problems need Young modulus\ \f[CR]E\f[R] and Poisson\[cq]s ratio\ \f[CR]nu\f[R]. Modal also needs density\ \f[CR]rho\f[R]. Check the particular documentation for each problem type. Besides these mandatory properties, any other one can be defined. For instance, if one mandatory property depended on the concentration of boron in the material, a new per\-material property can be added named \f[CR]boron\f[R] and then the function \f[CR]boron(x,y,z)\f[R] can be used in the expression that defines the mandatory property. .SS \f[CR]PETSC_OPTIONS\f[R] .PP Pass verbatim options to PETSc. .IP .EX PETSC_OPTIONS \[dq]command\-line options for PETSc\[dq] .EE .PP Options for PETSc can be passed either in at run time in the command line (run with \f[CR]\-h\f[R] to see how) or they can be set in the input file with \f[CR]PETSC_OPTIONS\f[R]. This is handy when a particular problem is best suited to be solved using a particular set of options which can the be embedded into the problem definition. \[at] .PD 0 .P .PD The string is passed verbatim to PETSc as if the options were set in the command line. Note that in this case, the string is passed verbatim to PETSc. This means that they are non\-POSIX options but they have to be in the native PETSc format. That is to say, while in the command line one would give \f[CR]\-\-ksp_view\f[R], here one has to give \f[CR]\-ksp_view\f[R]. Conversely, instead of \f[CR]\-\-mg_levels_pc_type=sor\f[R] one has to give \f[CR]\-mg_levels_pc_type sor\f[R]. .SS \f[CR]PHYSICAL_GROUP\f[R] .PP Explicitly defines a physical group of elements on a mesh. .IP .EX PHYSICAL_GROUP [ MESH ] [ DIMENSION ] [ ID ] [ MATERIAL | | BC [ BC ... ] ] .EE .PP This keyword should seldom be needed. Most of the times, a combination of \f[CR]MATERIAL\f[R] and \f[CR]BC\f[R] ought to be enough for most purposes. The name of the \f[CR]PHYSICAL_GROUP\f[R] keyword should match the name of the physical group defined within the input file. If there is no physical group with the provided name in the mesh, this instruction has no effect. If there are many meshes, an explicit mesh can be given with \f[CR]MESH\f[R]. Otherwise, the physical group is defined on the main mesh. An explicit dimension of the physical group can be provided with \f[CR]DIMENSION\f[R]. An explicit id can be given with \f[CR]ID\f[R]. Both dimension and id should match the values in the mesh. For volumetric elements, physical groups can be linked to materials using \f[CR]MATERIAL\f[R]. Note that if a material is created with the same name as a physical group in the mesh, they will be linked automatically, so there is no need to use \f[CR]PHYSCAL_GROUP\f[R] for this. The \f[CR]MATERIAL\f[R] keyword in \f[CR]PHYSICAL_GROUP\f[R] is used to link a physical group in a mesh file and a material in the feenox input file with different names. .PP Likewise, for non\-volumetric elements, physical groups can be linked to boundary using \f[CR]BC\f[R]. As in the preceding case, if a boundary condition is created with the same name as a physical group in the mesh, they will be linked automatically, so there is no need to use \f[CR]PHYSCAL_GROUP\f[R] for this. The \f[CR]BC\f[R] keyword in \f[CR]PHYSICAL_GROUP\f[R] is used to link a physical group in a mesh file and a boundary condition in the feenox input file with different names. Note that while there can be only one \f[CR]MATERIAL\f[R] associated to a physical group, there can be many \f[CR]BC\f[R]s associated to a physical group. .SS \f[CR]PROBLEM\f[R] .PP Ask FeenoX to solve a partial differential equation problem. .IP .EX PROBLEM { laplace | mechanical | modal | neutron_diffusion | neutron_sn | thermal } [ 1D | 2D | 3D | DIM ] [ AXISYMMETRIC { x | y } ] [ MESH ] [ PROGRESS ] [ DO_NOT_DETECT_HANGING_NODES | DETECT_HANGING_NODES | HANDLE_HANGING_NODES ] [ DETECT_UNRESOLVED_BCS | ALLOW_UNRESOLVED_BCS ] [ PREALLOCATE ] [ ALLOW_NEW_NONZEROS ] [ CACHE_J ] [ CACHE_B ] [ TRANSIENT | QUASISTATIC ] [ LINEAR | NON_LINEAR ] [ MODES ] [ PRECONDITIONER { gamg | mumps | lu | hypre | sor | bjacobi | cholesky | ... } ] [ LINEAR_SOLVER { gmres | mumps | bcgs | bicg | richardson | chebyshev | ... } ] [ NONLINEAR_SOLVER { newtonls | newtontr | nrichardson | ngmres | qn | ngs | ... } ] [ TRANSIENT_SOLVER { bdf | beuler | arkimex | rosw | glee | ... } ] [ TIME_ADAPTATION { basic | none | dsp | cfl | glee | ... } ] [ EIGEN_SOLVER { krylovschur | lanczos | arnoldi | power | gd | ... } ] [ SPECTRAL_TRANSFORMATION { shift | sinvert | cayley | ... } ] [ EIGEN_FORMULATION { omega | lambda } ] [ DIRICHLET_SCALING { absolute | relative } ] .EE .PP Currently, FeenoX can solve the following types of PDE\-casted problems: .IP \[bu] 2 \f[CR]neutron_diffusion\f[R] multi\-group core\-level neutron diffusion with a FEM formulation .IP \[bu] 2 \f[CR]neutron_sn\f[R] multi\-group core\-level neutron transport using .RS 2 .IP \[bu] 2 discrete ordinates \f[I]S\f[R]~\f[I]N\f[R]~ for angular discretization, and .IP \[bu] 2 isoparametric finite elements for spatial discretization. .RE .RS .PP If you are a programmer and want to contribute with another problem type, please do so! Check out the programming guide in the FeenoX repository. .RE .PP The number of spatial dimensions of the problem needs to be given either as \f[CR]1d\f[R], \f[CR]2d\f[R], \f[CR]3d\f[R] or after the keyword \f[CR]DIM\f[R]. Alternatively, one can define a \f[CR]MESH\f[R] with an explicit \f[CR]DIMENSIONS\f[R] keyword before \f[CR]PROBLEM\f[R]. Default is 3D. If the \f[CR]AXISYMMETRIC\f[R] keyword is given, the mesh is expected to be two\-dimensional in the \f[I]x\f[R]\-\f[I]y\f[R] plane and the problem is assumed to be axi\-symmetric around the given axis. If there are more than one \f[CR]MESH\f[R]es defined, the one over which the problem is to be solved can be defined by giving the explicit mesh name with \f[CR]MESH\f[R]. By default, the first mesh to be defined in the input file with \f[CR]READ_MESH\f[R] (which can be defined after the \f[CR]PROBLEM\f[R] keyword) is the one over which the problem is solved. If the keyword \f[CR]PROGRESS\f[R] is given, three ASCII lines will show in the terminal the progress of the ensamble of the stiffness matrix (or matrices), the solution of the system of equations and the computation of gradients (stresses, heat fluxes, etc.), if applicable. If either \f[CR]DETECT_HANGING_NODES\f[R] or \f[CR]HANDLE_HANGING_NODES\f[R] are given, an intermediate check for nodes without any associated elements will be performed. For well\-behaved meshes this check is redundant so by default it is not done (\f[CR]DO_NOT_DETEC_HANGING_NODES\f[R]). With \f[CR]DETECT_HANGING_NODES\f[R], FeenoX will report the tag of the hanging nodes and stop. With \f[CR]HANDLE_HANGING_NODES\f[R], FeenoX will fix those nodes and try to solve the problem anyway. By default, FeenoX checks that all physical groups referred to in the \f[CR]BC\f[R] keywords exists (\f[CR]DETECT_UNRESOLVED_BCS\f[R]). If \f[CR]ALLOW_UNRESOLVED_BCS\f[R] is given, FeenoX will ignore unresolved boundary conditions instead of complaining. This is handy when using the same input for different meshes which might have different groups, for example solving the same problem using a full geometry or a symmetric geometry. The latter should have at least one symmetry BC whilst the former does not. If the special variable \f[CR]end_time\f[R] is zero, FeenoX solves a static problem\[em]although the variable \f[CR]static_steps\f[R] is still honored. If \f[CR]end_time\f[R] is non\-zero, FeenoX solves a transient or quasi\-static problem. This can be controlled by \f[CR]TRANSIENT\f[R] or \f[CR]QUASISTATIC\f[R]. By default FeenoX tries to detect whether the computation should be linear or non\-linear. An explicit mode can be set with either \f[CR]LINEAR\f[R] on \f[CR]NON_LINEAR\f[R]. The number of modes to be computed when solving eigenvalue problems is given by \f[CR]MODES\f[R]. The default value is problem dependent. The preconditioner (\f[CR]PC\f[R]), linear (\f[CR]KSP\f[R]), non\-linear (\f[CR]SNES\f[R]) and time\-stepper (\f[CR]TS\f[R]) solver types be any of those available in PETSc (first option is the default): .IP \[bu] 2 List of \f[CR]PRECONDITIONER\f[R]s https://petsc.org/release/manualpages/PC/PCType/. .IP \[bu] 2 List of \f[CR]LINEAR_SOLVER\f[R]s https://petsc.org/release/manualpages/KSP/KSPType/. .IP \[bu] 2 List of \f[CR]NONLINEAR_SOLVER\f[R]s https://petsc.org/release/manualpages/SNES/SNESType/. .IP \[bu] 2 List of \f[CR]TRANSIENT_SOLVER\f[R]s http://petsc.org/release/docs/manualpages/TS/TSType.html. .IP \[bu] 2 List of \f[CR]TIME_ADAPTATION\f[R]s https://petsc.org/release/manualpages/TS/TSType/. .IP \[bu] 2 List of \f[CR]EIGEN_SOLVER\f[R]s https://slepc.upv.es/documentation/current/docs/manualpages/EPS/EPSType.html. .IP \[bu] 2 List of \f[CR]SPECTRAL_TRANSFORMATION\f[R]s https://slepc.upv.es/documentation/current/docs/manualpages/ST/STType.html. .PP If the \f[CR]EIGEN_FORMULATION\f[R] is \f[CR]omega\f[R] then \f[I]K\f[R]\f[I]ϕ\f[R] = \f[I]ω\f[R]^2^\f[I]M\f[R]\f[I]ϕ\f[R] is solved, and \f[I]M\f[R]\f[I]ϕ\f[R] = \f[I]λ\f[R]\f[I]K\f[R]\f[I]ϕ\f[R] if it is \f[CR]lambda\f[R]. Default is \f[CR]lambda\f[R], although some particular PDEs might change it (for example free\-free modal switches to \f[CR]omega\f[R]). The \f[CR]EIGEN_DIRICHLET_ZERO\f[R] keyword controls which of the matrices has a zero and which one has a non\-zero in the diagonal when setting Dirichlet boundary conditions. Default is \f[CR]M\f[R], i.e.\ matrix\ \f[I]K\f[R] has a non\-zero and matrix\ \f[I]M\f[R] has a zero. This setting, along with \f[CR]EIGEN_FORMULATION\f[R] determines which spectral transforms can a cannot be used: you cannot invert the matrix with the zero in the diagonal. The \f[CR]DIRICHLET_SCALING\f[R] keyword controls the way Dirichlet boundary conditions are scaled when computing the residual. Roughly, it defines how to compute the parameter\ \f[I]α\f[R]. If \f[CR]absolute\f[R], then \f[I]α\f[R] is equal to the given expression. If \f[CR]relative\f[R], then \f[I]α\f[R] is equal to the given fraction of the average diagonal entries in the stiffness matrix. Default is\ \f[I]α\f[R] = 1. .SS \f[CR]READ_MESH\f[R] .PP Read an unstructured mesh and (optionally) functions of space\-time from a file. .IP .EX READ_MESH { | } [ DIM ] [ SCALE ] [ OFFSET ] [ INTEGRATION { full | reduced } ] [ MAIN ] [ UPDATE_EACH_STEP ] [ READ_FIELD AS ] [ READ_FIELD ... ] [ READ_FUNCTION ] [READ_FUNCTION ...] .EE .PP Either a file identifier (defined previously with a \f[CR]FILE\f[R] keyword) or a file path should be given. The format is read from the extension, which should be either .IP \[bu] 2 \f[CR].msh\f[R], \f[CR].msh2\f[R] or \f[CR].msh4\f[R] Gmsh ASCII format, versions 2.2, 4.0 or 4.1 .IP \[bu] 2 \f[CR].vtk\f[R] ASCII legacy VTK .IP \[bu] 2 \f[CR].frd\f[R] CalculiX\[cq]s FRD ASCII output .PP Note than only MSH is suitable for defining PDE domains, as it is the only one that provides physical groups (a.k.a labels) which are needed in order to define materials and boundary conditions. The other formats are primarily supported to read function data contained in the file and eventually, to operate over these functions (i.e.\ take differences with other functions contained in other files to compare results). The file path or file id can be used to refer to a particular mesh when reading more than one, for instance in a \f[CR]WRITE_MESH\f[R] or \f[CR]INTEGRATE\f[R] keyword. If a file path is given such as \f[CR]cool_mesh.msh\f[R], it can be later referred to as either \f[CR]cool_mesh.msh\f[R] or just \f[CR]cool_mesh\f[R]. .PD 0 .P .PD The spatial dimensions can be given with \f[CR]DIM\f[R]. If material properties are uniform and given with variables, the number of dimensions are not needed and will be read from the file at runtime. But if either properties are given by spatial functions or if functions are to be read from the mesh with \f[CR]READ_DATA\f[R] or \f[CR]READ_FUNCTION\f[R], then the number of dimensions ought to be given explicitly because FeenoX needs to know how many arguments these functions take. If either \f[CR]OFFSET\f[R] and/or \f[CR]SCALE\f[R] are given, the node locations are first shifted and then scaled by the provided values. When defining several meshes and solving a PDE problem, the mesh used as the PDE domain is the one marked with \f[CR]MAIN\f[R]. If none of the meshes is explicitly marked as main, the first one is used. If \f[CR]UPDATE_EACH_STEP\f[R] is given, then the mesh data is re\-read from the file at each time step. Default is to read the mesh once, except if the file path changes with time. For each \f[CR]READ_FIELD\f[R] keyword, a point\-wise defined scalar function of space named \f[CR]\f[R] is defined and filled with the scalar data named \f[CR]\f[R] contained in the mesh file. The \f[CR]READ_FUNCTION\f[R] keyword is a shortcut when the scalar name and the to\-be\-defined function are the same. If no mesh is marked as \f[CR]MAIN\f[R], the first one is the main one. .SS \f[CR]SOLVE_PROBLEM\f[R] .PP Explicitly solve the PDE problem. .IP .EX SOLVE_PROBLEM .EE .PP Whenever the instruction \f[CR]SOLVE_PROBLEM\f[R] is executed, FeenoX solves the PDE problem. For static problems, that means solving the equations and filling in the result functions. For transient or quasisstatic problems, that means advancing one time step. .SS \f[CR]WRITE_MESH\f[R] .PP Write a mesh and/or generic functions of space\-time to a post\-processing file. .IP .EX WRITE_MESH [ MESH ] [ FILE_FORMAT { gmsh | vtk } ] [ NO_MESH ] [ NO_PHYSICAL_NAMES ] [ NODE | CELL ] [ ] [ ] [ ] [...] [ VECTOR [ NAME ] ] [...] [ SYMMETRIC_TENSOR [ NAME ] ] [...] .EE .PP The format is automatically detected from the extension, which should be either \f[CR]msh\f[R] (version 2.2 ASCII) or \f[CR]vtk\f[R] (legacy ASCII). Otherwise, the keyword \f[CR]FILE_FORMAT\f[R] has to be given to set the format explicitly. If there are several meshes defined by \f[CR]READ_MESH\f[R], the mesh used to write the data has be given explicitly with \f[CR]MESH\f[R]. If the \f[CR]NO_MESH\f[R] keyword is given, only the results are written into the output file without any mesh data. Depending on the output format, this can be used to avoid repeating data and/or creating partial output files which can the be latter assembled by post\-processing scripts. When targeting the \f[CR].msh\f[R] output format, if \f[CR]NO_PHYSICAL_NAMES\f[R] is given then the section that sets the actual names of the physical entities is not written. .PD 0 .P .PD This might be needed in some cases to avoid name clashes when dealing with multiple \f[CR].msh\f[R] files. The output is node\-based by default. This can be controlled with both the \f[CR]NODE\f[R] and \f[CR]CELL\f[R] keywords. All fields that come after a \f[CR]NODE\f[R] (\f[CR]CELL\f[R]) keyword will be written at the node (cells). These keywords can be used several times and mixed with fields. For example \f[CR]CELL k(x,y,z) NODE T sqrt(x\[ha]2+y\[ha]2) CELL 1+z\f[R] will write the conductivity and the expression 1 + \f[I]z\f[R] as cell\-based and the temperature \f[I]T\f[R](\f[I]x\f[R], \f[I]y\f[R], \f[I]z\f[R]) and the expression $\[rs]sqrt{x\[ha]2+y\[ha]2}$ as a node\-based fields. If a printf\-like format specifier starting with \f[CR]%\f[R] is given, that format is used for the fields that follow. Make sure the format reads floating\-point data, i.e.\ do not use \f[CR]%d\f[R]. Default is \f[CR]%g\f[R]. The data to be written has to be given as a list of fields, i.e.\ distributions (such as \f[CR]k\f[R] or \f[CR]E\f[R]), functions of space (such as \f[CR]T\f[R]) and/or expressions (such as \f[CR]T(x,y,z)*sqrt(x\[ha]2+y\[ha]2+z\[ha]2)\f[R]). Each field is written as a scalar, unless either the keywords \f[CR]VECTOR\f[R] or \f[CR]SYMMETRIC_TENSOR\f[R] are given. In the first case, the next three fields following the \f[CR]VECTOR\f[R] keyword are taken as the vector elements. In the latter, the next six fields following the \f[CR]SYMMETRIC_TENSOR\f[R] keyword are taken as the tensor elements. .SS \f[CR]WRITE_RESULTS\f[R] .PP Write the problem mesh and problem results to a file for post\-processing. .IP .EX WRITE_RESULTS [ FORMAT { gmsh | vtu | vtk } ] [ FILE ] [ NO_PHYSICAL_NAMES ] [ ] .EE .PP Default format is \f[CR]gmsh\f[R]. If no \f[CR]FILE\f[R] is provided, the output file is the same as the input file replacing the \f[CR].fee\f[R] extension with the format extension, i.e.\ \f[CR]$0.msh\f[R]. If there are further optional command line arguments, they are added prepending a dash, i.e.\ \f[CR]$0\-[$1\-[$2...]].msh\f[R] Otherwise the given \f[CR]FILE\f[R] is used. If no explicit \f[CR]FORMAT\f[R] is given, the format is read from the \f[CR]FILE\f[R] extension. When targeting the \f[CR].msh\f[R] output format, if \f[CR]NO_PHYSICAL_NAMES\f[R] is given then the section that sets the actual names of the physical entities is not written. .PD 0 .P .PD This might be needed in some cases to avoid name clashes when dealing with multiple \f[CR].msh\f[R] files. If a printf\-like format specifier starting with \f[CR]%\f[R] is given, that format is used for the fields that follow. Make sure the format reads floating\-point data, i.e.\ do not use \f[CR]%d\f[R]. Default is \f[CR]%g\f[R]. .SH SPECIAL VARIABLES .SS \f[CR]done\f[R] .PP Flag that indicates whether the overall calculation is over. .PP This variable is set to true by FeenoX when the computation finished so it can be checked in an \f[CR]IF\f[R] block to do something only in the last step. But this variable can also be set to true from the input file, indicating that the current step should also be the last one. For example, one can set \f[CR]end_time = infinite\f[R] and then finish the computation at \f[I]t\f[R] = 10 by setting \f[CR]done = t > 10\f[R]. This \f[CR]done\f[R] variable can also come from (and sent to) other sources, like a shared memory object for coupled calculations. .SS \f[CR]done_static\f[R] .PP Flag that indicates whether the static calculation is over or not. .PP It is set to true (i.e.\  ≠ 0) by feenox if \f[CR]step_static\f[R] ≥ \f[CR]static_steps\f[R]. If the user sets it to true, the current step is marked as the last static step and the static calculation ends after finishing the step. It can be used in \f[CR]IF\f[R] blocks to check if the static step is finished or not. .SS \f[CR]done_transient\f[R] .PP Flag that indicates whether the transient calculation is over or not. .PP It is set to true (i.e.\  ≠ 0) by feenox if \f[CR]t\f[R] ≥ \f[CR]end_time\f[R]. If the user sets it to true, the current step is marked as the last transient step and the transient calculation ends after finishing the step. It can be used in \f[CR]IF\f[R] blocks to check if the transient steps are finished or not. .SS \f[CR]dt\f[R] .PP Actual value of the time step for transient calculations. .PP When solving DAE systems, this variable is set by feenox. It can be written by the user for example by importing it from another transient code by means of shared\-memory objects. Care should be taken when solving DAE systems and overwriting \f[CR]t\f[R]. Default value is DEFAULT_DT, which is a power of two and roundoff errors are thus reduced. .SS \f[CR]end_time\f[R] .PP Final time of the transient calculation, to be set by the user. .PP The default value is zero, meaning no transient calculation. .SS \f[CR]i\f[R] .PP Dummy index, used mainly in vector and matrix row subindex expressions. .SS \f[CR]infinite\f[R] .PP A very big positive number. .PP It can be used as \f[CR]end_time = infinite\f[R] or to define improper integrals with infinite limits. Default is 2^50^ ≈ 1 × 10^15^. .SS \f[CR]in_static\f[R] .PP Flag that indicates if FeenoX is solving the iterative static calculation. .PP This is a read\-only variable that is non zero if the static calculation. .SS \f[CR]in_static_first\f[R] .PP Flag that indicates if feenox is in the first step of the iterative static calculation. .SS \f[CR]in_static_last\f[R] .PP Flag that indicates if feenox is in the last step of the iterative static calculation. .SS \f[CR]in_time_path\f[R] .PP Flag that indicates if feenox is in a time belonging to a \f[CR]TIME_PATH\f[R] keyword. .SS \f[CR]in_transient\f[R] .PP Flag that indicates if feenox is solving transient calculation. .SS \f[CR]in_transient_first\f[R] .PP Flag that indicates if feenox is in the first step of the transient calculation. .SS \f[CR]in_transient_last\f[R] .PP Flag that indicates if feenox is in the last step of the transient calculation. .SS \f[CR]j\f[R] .PP Dummy index, used mainly in matrix column subindex expressions. .SS \f[CR]max_dt\f[R] .PP Maximum bound for the time step that feenox should take when solving DAE systems. .SS \f[CR]min_dt\f[R] .PP Minimum bound for the time step that feenox should take when solving DAE systems. .SS \f[CR]mpi_rank\f[R] .PP The current rank in an MPI execution. Mind the \f[CR]PRINTF_ALL\f[R] instruction. .SS \f[CR]mpi_size\f[R] .PP The number of total ranks in an MPI execution. .SS \f[CR]on_gsl_error\f[R] .PP This should be set to a mask that indicates how to proceed if an error ir raised in any routine of the GNU Scientific Library. .SS \f[CR]on_ida_error\f[R] .PP This should be set to a mask that indicates how to proceed if an error ir raised in any routine of the SUNDIALS Library. .SS \f[CR]on_nan\f[R] .PP This should be set to a mask that indicates how to proceed if Not\-A\-Number signal (such as a division by zero) is generated when evaluating any expression within feenox. .SS \f[CR]pi\f[R] .PP A double\-precision floating point representation of the number \f[I]π\f[R] .PP It is equal to the \f[CR]M_PI\f[R] constant in \f[CR]math.h\f[R] . .SS \f[CR]pid\f[R] .PP The Unix process id of the FeenoX instance. .SS \f[CR]static_steps\f[R] .PP Number of steps that ought to be taken during the static calculation, to be set by the user. .PP The default value is one, meaning only one static step. .SS \f[CR]step_static\f[R] .PP Indicates the current step number of the iterative static calculation. .PP This is a read\-only variable that contains the current step of the static calculation. .SS \f[CR]step_transient\f[R] .PP Indicates the current step number of the transient static calculation. .PP This is a read\-only variable that contains the current step of the transient calculation. .SS \f[CR]t\f[R] .PP Actual value of the time for transient calculations. .PP This variable is set by FeenoX, but can be written by the user for example by importing it from another transient code by means of shared\-memory objects. Care should be taken when solving DAE systems and overwriting \f[CR]t\f[R]. .SS \f[CR]zero\f[R] .PP A very small positive number. .PP It is taken to avoid roundoff errors when comparing floating point numbers such as replacing \f[I]a\f[R] ≤ \f[I]a\f[R]~max~ with \f[I]a\f[R] < \f[I]a\f[R]~max~+ \f[CR]zero\f[R]. Default is (1/2)^−50^ ≈ 9 × 10^−16^ . .SH MATERIAL PROPERTIES TBD. .SH BOUNDARY CONDITIONS TBD. .SH RESULTING DISTRIBUTIONS TBD. .SH BUILT\-IN FUNCTIONS .SS \f[CR]abs\f[R] .PP Returns the absolute value of the argument\ \f[I]x\f[R]. .IP .EX abs(x) .EE .PP \ .SS \f[CR]acos\f[R] .PP Computes the arc in radians whose cosine is equal to the argument\ \f[I]x\f[R]. A NaN error is raised if\ |\f[I]x\f[R]| > 1. .IP .EX acos(x) .EE .PP \ .SS \f[CR]asin\f[R] .PP Computes the arc in radians whose sine is equal to the argument\ \f[I]x\f[R]. A NaN error is raised if\ |\f[I]x\f[R]| > 1. .IP .EX asin(x) .EE .PP \ .SS \f[CR]atan\f[R] .PP Computes, in radians, the arc tangent of the argument\ \f[I]x\f[R]. .IP .EX atan(x) .EE .PP \ .SS \f[CR]atan2\f[R] .PP Computes, in radians, the arc tangent of quotient\ \f[I]y\f[R]/\f[I]x\f[R], using the signs of the two arguments to determine the quadrant of the result, which is in the range [−\f[I]π\f[R], \f[I]π\f[R]]. .IP .EX atan2(y,x) .EE .SS \f[CR]ceil\f[R] .PP Returns the smallest integral value not less than the argument\ \f[I]x\f[R]. .IP .EX ceil(x) .EE .PP \ .SS \f[CR]clock\f[R] .PP Returns the value of a certain clock in seconds measured from a certain (but specific) milestone. The kind of clock and the initial milestone depend on the optional integer argument\ \f[I]f\f[R]. It defaults to one, meaning \f[CR]CLOCK_MONOTONIC\f[R]. The list and the meanings of the other available values for\ \f[I]f\f[R] can be checked in the \f[CR]clock_gettime (2)\f[R] system call manual page. .IP .EX clock([f]) .EE .SS \f[CR]cos\f[R] .PP Computes the cosine of the argument\ \f[I]x\f[R], where\ \f[I]x\f[R] is in radians. A cosine wave can be generated by passing as the argument\ \f[I]x\f[R] a linear function of time such as\ \f[I]ω\f[R]\f[I]t\f[R] + \f[I]ϕ\f[R], where \f[I]ω\f[R] controls the frequency of the wave and \f[I]ϕ\f[R] controls its phase. .IP .EX cos(x) .EE .PP \ .SS \f[CR]cosh\f[R] .PP Computes the hyperbolic cosine of the argument\ \f[I]x\f[R], where\ \f[I]x\f[R] is in radians. .IP .EX cosh(x) .EE .PP \ .SS \f[CR]cpu_time\f[R] .PP Returns the CPU time used by the local FeenoX rank, in seconds. If the optional argument \f[CR]f\f[R] is not provided or it is zero (default), the sum of times for both user\-space and kernel\-space usage is returned. For \f[CR]f=1\f[R] only user time is returned. For \f[CR]f=2\f[R] only system time is returned. .IP .EX cpu_time([f]) .EE .SS \f[CR]d_dt\f[R] .PP Computes the time derivative of the expression given in the argument\ \f[I]x\f[R] during a transient problem using the difference between the value of the signal in the previous time step and the actual value divided by the time step\ \f[I]δ\f[R]\f[I]t\f[R] stored in \f[CR]dt\f[R]. The argument\ \f[I]x\f[R] does not need to be a variable, it can be an expression involving one or more variables that change in time. For \f[I]t\f[R] = 0, the return value is zero. Unlike the functional \f[CR]derivative\f[R], the full dependence of these variables with time does not need to be known beforehand, i.e.\ the expression \f[CR]x\f[R] might involve variables read from a shared\-memory object at each time step. .IP .EX d_dt(x) .EE .SS \f[CR]deadband\f[R] .PP Filters the first argument\ \f[I]x\f[R] with a deadband centered at zero with an amplitude given by the second argument \f[I]a\f[R]. .IP .EX deadband(x, a) .EE .SS \f[CR]equal\f[R] .PP Checks if the two first expressions \f[I]a\f[R] and \f[I]b\f[R] are equal, up to the tolerance given by the third optional argument \f[I]ϵ\f[R]. If either |\f[I]a\f[R]| > 1 or |\f[I]b\f[R]| > 1, the arguments are compared using GSL\[cq]s \f[CR]gsl_fcmp\f[R], otherwise the absolute value of their difference is compared against \f[I]ϵ\f[R]. This function returns zero if the arguments are not equal and one otherwise. Default value for \f[I]ϵ\f[R] = 10^−9^. .IP .EX equal(a, b, [eps]) .EE .SS \f[CR]exp\f[R] .PP Computes the exponential function the argument\ \f[I]x\f[R], i.e.\ the base of the natural logarithm\ \f[I]e\f[R] raised to the\ \f[I]x\f[R]\-th power. .IP .EX exp(x) .EE .PP \ .SS \f[CR]expint1\f[R] .PP Computes the first exponential integral function of the argument\ \f[I]x\f[R]. If\ \f[I]x\f[R] is zero, a NaN error is issued. .IP .EX expint1(x) .EE .PP \ .SS \f[CR]expint2\f[R] .PP Computes the second exponential integral function of the argument\ \f[I]x\f[R]. .IP .EX expint2(x) .EE .PP \ .SS \f[CR]expint3\f[R] .PP Computes the third exponential integral function of the argument\ \f[I]x\f[R]. .IP .EX expint3(x) .EE .PP \ .SS \f[CR]expintn\f[R] .PP Computes the \f[I]n\f[R]\-th exponential integral function of the argument\ \f[I]x\f[R]. If\ \f[I]n\f[R] is zero or one and\ \f[I]x\f[R] is zero, a NaN error is issued. .IP .EX expintn(n,x) .EE .SS \f[CR]floor\f[R] .PP Returns the largest integral value not greater than the argument\ \f[I]x\f[R]. .IP .EX floor(x) .EE .PP \ .SS \f[CR]gammaf\f[R] .PP Computes the Gamma function\ \f[I]Γ\f[R](\f[I]x\f[R]). .IP .EX gammaf(x) .EE .PP \ .SS \f[CR]heaviside\f[R] .PP Computes the zero\-centered Heaviside step function of the argument\ \f[I]x\f[R]. If the optional second argument \f[I]δ\f[R] is provided, the discontinuous step at\ \f[I]x\f[R] = 0 is replaced by a ramp starting at\ \f[I]x\f[R] = 0 and finishing at\ \f[I]x\f[R] = \f[I]δ\f[R]. .IP .EX heaviside(x, [delta]) .EE .PP \ .SS \f[CR]if\f[R] .PP Performs a conditional testing of the first argument \f[I]a\f[R], and returns either the second optional argument \f[I]b\f[R] if \f[I]a\f[R] is different from zero or the third optional argument \f[I]c\f[R] if \f[I]a\f[R] evaluates to zero. The comparison of the condition \f[I]a\f[R] with zero is performed within the precision given by the optional fourth argument \f[I]ϵ\f[R]. If the second argument \f[I]c\f[R] is not given and \f[I]a\f[R] is not zero, the function returns one. If the third argument \f[I]c\f[R] is not given and \f[I]a\f[R] is zero, the function returns zero. The default precision is \f[I]ϵ\f[R] = 10^−9^. Even though \f[CR]if\f[R] is a logical operation, all the arguments and the returned value are double\-precision floating point numbers. .IP .EX if(a, [b], [c], [eps]) .EE .SS \f[CR]integral_dt\f[R] .PP Computes the time integral of the expression given in the argument\ \f[I]x\f[R] during a transient problem with the trapezoidal rule using the value of the signal in the previous time step and the current value. At \f[I]t\f[R] = 0 the integral is initialized to zero. Unlike the functional \f[CR]integral\f[R], the full dependence of these variables with time does not need to be known beforehand, i.e.\ the expression \f[CR]x\f[R] might involve variables read from a shared\-memory object at each time step. .IP .EX integral_dt(x) .EE .SS \f[CR]integral_euler_dt\f[R] .PP Idem as \f[CR]integral_dt\f[R] but uses the backward Euler rule to update the instantaenous integral value. This function is provided in case this particular way of approximating time integrals is needed, for instance to compare FeenoX solutions with other computer codes. In general, it is recommended to use \f[CR]integral_dt\f[R]. .IP .EX integral_euler_dt(x) .EE .SS \f[CR]is_even\f[R] .PP Returns one if the argument\ \f[I]x\f[R] rounded to the nearest integer is even. .IP .EX is_even(x) .EE .SS \f[CR]is_in_interval\f[R] .PP Returns true if the argument\ \f[I]x\f[R] is in the interval\ [\f[I]a\f[R], \f[I]b\f[R]), i.e.\ including\ \f[I]a\f[R] but excluding\ \f[I]b\f[R]. .IP .EX is_in_interval(x, a, b) .EE .SS \f[CR]is_odd\f[R] .PP Returns one if the argument\ \f[I]x\f[R] rounded to the nearest integer is odd. .IP .EX is_odd(x) .EE .SS \f[CR]j0\f[R] .PP Computes the regular cylindrical Bessel function of zeroth order evaluated at the argument\ \f[I]x\f[R]. .IP .EX j0(x) .EE .PP \ .SS \f[CR]lag\f[R] .PP Filters the first argument\ \f[I]x\f[R](\f[I]t\f[R]) with a first\-order lag of characteristic time \f[I]τ\f[R], i.e.\ this function applies the transfer function\ $G(s) = \[rs]frac{1}{1 + s\[rs]tau}$ to the time\-dependent signal\ \f[I]x\f[R](\f[I]t\f[R]) to obtain a filtered signal\ \f[I]y\f[R](\f[I]t\f[R]), by assuming that it is constant during the time interval\ [\f[I]t\f[R] − \f[I]Δ\f[R]\f[I]t\f[R], \f[I]t\f[R]] and using the analytical solution of the differential equation for that case at\ \f[I]t\f[R] = \f[I]Δ\f[R]\f[I]t\f[R] with the initial condition\ \f[I]y\f[R](0) = \f[I]y\f[R](\f[I]t\f[R] − \f[I]Δ\f[R]\f[I]t\f[R]). .IP .EX lag(x, tau) .EE .SS \f[CR]lag_bilinear\f[R] .PP Filters the first argument\ \f[I]x\f[R](\f[I]t\f[R]) with a first\-order lag of characteristic time \f[I]τ\f[R] to the time\-dependent signal\ \f[I]x\f[R](\f[I]t\f[R]) by using the bilinear transformation formula. .IP .EX lag_bilinear(x, tau) .EE .SS \f[CR]lag_euler\f[R] .PP Filters the first argument\ \f[I]x\f[R](\f[I]t\f[R]) with a first\-order lag of characteristic time \f[I]τ\f[R] to the time\-dependent signal\ \f[I]x\f[R](\f[I]t\f[R]) by using the Euler forward rule. .IP .EX lag_euler(x, tau) .EE .SS \f[CR]last\f[R] .PP Returns the value the variable\ \f[I]x\f[R] had in the previous time step. This function is equivalent to the\ \f[I]Z\f[R]\-transform operator \[lq]delay\[rq] denoted by\ \f[I]z\f[R]^−1^[\f[I]x\f[R]]. For\ \f[I]t\f[R] = 0 the function returns the actual value of\ \f[I]x\f[R]. The optional flag\ \f[I]p\f[R] should be set to one if the reference to \f[CR]last\f[R] is done in an assignment over a variable that already appears inside expression\ \f[I]x\f[R] such as \f[CR]x = last(x)\f[R]. See example number 2. .IP .EX last(x,[p]) .EE .SS \f[CR]limit\f[R] .PP Limits the first argument\ \f[I]x\f[R] to the interval [\f[I]a\f[R], \f[I]b\f[R]]. The second argument \f[I]a\f[R] should be less than the third argument \f[I]b\f[R]. .IP .EX limit(x, a, b) .EE .SS \f[CR]limit_dt\f[R] .PP Limits the value of the first argument\ \f[I]x\f[R](\f[I]t\f[R]) so to that its time derivative is bounded to the interval [\f[I]a\f[R], \f[I]b\f[R]]. The second argument \f[I]a\f[R] should be less than the third argument \f[I]b\f[R]. .IP .EX limit_dt(x, a, b) .EE .SS \f[CR]log\f[R] .PP Computes the natural logarithm of the argument\ \f[I]x\f[R]. If\ \f[I]x\f[R] is zero or negative, a NaN error is issued. .IP .EX log(x) .EE .PP \ .SS \f[CR]mark_max\f[R] .PP Returns the integer index \f[I]i\f[R] of the maximum of the arguments\ \f[I]x\f[R]~\f[I]i\f[R]~ provided. Currently only maximum of ten arguments can be provided. .IP .EX mark_max(x1, x2, [...], [x10]) .EE .SS \f[CR]mark_min\f[R] .PP Returns the integer index \f[I]i\f[R] of the minimum of the arguments\ \f[I]x\f[R]~\f[I]i\f[R]~ provided. Currently only maximum of ten arguments can be provided. .IP .EX mark_max(x1, x2, [...], [x10]) .EE .SS \f[CR]max\f[R] .PP Returns the maximum of the arguments\ \f[I]x\f[R]~\f[I]i\f[R]~ provided. Currently only maximum of ten arguments can be given. .IP .EX max(x1, x2, [...], [x10]) .EE .SS \f[CR]memory\f[R] .PP Returns the maximum memory (resident set size) used by FeenoX, in Gigabytes. .IP .EX memory() .EE .SS \f[CR]min\f[R] .PP Returns the minimum of the arguments\ \f[I]x\f[R]~\f[I]i\f[R]~ provided. Currently only maximum of ten arguments can be given. .IP .EX min(x1, x2, [...], [x10]) .EE .SS \f[CR]mod\f[R] .PP Returns the remainder of the division between the first argument\ \f[I]a\f[R] and the second one\ \f[I]b\f[R]. Both arguments may be non\-integral. .IP .EX mod(a, b) .EE .SS \f[CR]mpi_memory_local\f[R] .PP Returns the memory usage as reported by PETSc in the give rank, in Gigabytes. If no rank is given, each rank returns a local value which should be printed with \f[CR]PRINTF_ALL\f[R]. Returns the memory global usage as reported by PETSc summing over all ranks, in Gigabytes. .IP .EX mpi_memory_local([rank]) mpi_memory_global() .EE .SS \f[CR]not\f[R] .PP Returns one if the first argument\ \f[I]x\f[R] is zero and zero otherwise. The second optional argument \f[I]ϵ\f[R] gives the precision of the \[lq]zero\[rq] evaluation. If not given, default is \f[I]ϵ\f[R] = 10^−9^. .IP .EX not(x, [eps]) .EE .SS \f[CR]random\f[R] .PP Returns a random real number uniformly distributed between the first real argument\ \f[I]x\f[R]~1~ and the second one\ \f[I]x\f[R]~2~. If the third integer argument \f[I]s\f[R] is given, it is used as the seed and thus repetitive sequences can be obtained. If no seed is provided, the current time (in seconds) plus the internal address of the expression is used. Therefore, two successive calls to the function without seed (hopefully) do not give the same result. This function uses a second\-order multiple recursive generator described by Knuth in Seminumerical Algorithms, 3rd Ed., Section 3.6. .IP .EX random(x1, x2, [s]) .EE .SS \f[CR]random_gauss\f[R] .PP Returns a random real number with a Gaussian distribution with a mean equal to the first argument\ \f[I]x\f[R]~1~ and a standard deviation equatl to the second one\ \f[I]x\f[R]~2~. If the third integer argument \f[I]s\f[R] is given, it is used as the seed and thus repetitive sequences can be obtained. If no seed is provided, the current time (in seconds) plus the internal address of the expression is used. Therefore, two successive calls to the function without seed (hopefully) do not give the same result. This function uses a second\-order multiple recursive generator described by Knuth in Seminumerical Algorithms, 3rd Ed., Section 3.6. .IP .EX random_gauss(x1, x2, [s]) .EE .SS \f[CR]round\f[R] .PP Rounds the argument\ \f[I]x\f[R] to the nearest integer. Halfway cases are rounded away from zero. .IP .EX round(x) .EE .PP \ .SS \f[CR]sawtooth_wave\f[R] .PP Computes a sawtooth wave between zero and one with a period equal to one. As with the sine wave, a sawtooh wave can be generated by passing as the argument\ \f[I]x\f[R] a linear function of time such as\ \f[I]ω\f[R]\f[I]t\f[R] + \f[I]ϕ\f[R], where\ \f[I]ω\f[R] controls the frequency of the wave and \f[I]ϕ\f[R] controls its phase. .IP .EX sawtooth_wave(x) .EE .PP \ .SS \f[CR]sech\f[R] .PP Computes the hyperbolic secant of the argument\ \f[I]x\f[R], where\ \f[I]x\f[R] is in radians. .IP .EX sech(x) .EE .PP \ .SS \f[CR]sgn\f[R] .PP Returns minus one, zero or plus one depending on the sign of the first argument\ \f[I]x\f[R]. The second optional argument \f[I]ϵ\f[R] gives the precision of the \[lq]zero\[rq] evaluation. If not given, default is \f[I]ϵ\f[R] = 10^−9^. .IP .EX sgn(x, [eps]) .EE .PP \ .SS \f[CR]sin\f[R] .PP Computes the sine of the argument\ \f[I]x\f[R], where\ \f[I]x\f[R] is in radians. A sine wave can be generated by passing as the argument\ \f[I]x\f[R] a linear function of time such as\ \f[I]ω\f[R]\f[I]t\f[R] + \f[I]ϕ\f[R], where\ \f[I]ω\f[R] controls the frequency of the wave and\ \f[I]ϕ\f[R] controls its phase. .IP .EX sin(x) .EE .PP \ .SS \f[CR]sinh\f[R] .PP Computes the hyperbolic sine of the argument\ \f[I]x\f[R], where\ \f[I]x\f[R] is in radians. .IP .EX sinh(x) .EE .PP \ .SS \f[CR]sqrt\f[R] .PP Computes the positive square root of the argument\ \f[I]x\f[R]. If\ \f[I]x\f[R] is negative, a NaN error is issued. .IP .EX sqrt(x) .EE .PP \ .SS \f[CR]square_wave\f[R] .PP Computes a square function between zero and one with a period equal to one. The output is one for 0 < \f[I]x\f[R] < 1/2 and zero for 1/2 ≤ \f[I]x\f[R] < 1. As with the sine wave, a square wave can be generated by passing as the argument\ \f[I]x\f[R] a linear function of time such as\ \f[I]ω\f[R]\f[I]t\f[R] + \f[I]ϕ\f[R], where\ \f[I]ω\f[R] controls the frequency of the wave and\ \f[I]ϕ\f[R] controls its phase. .IP .EX square_wave(x) .EE .PP \ .SS \f[CR]tan\f[R] .PP Computes the tangent of the argument\ \f[I]x\f[R], where\ \f[I]x\f[R] is in radians. .IP .EX tan(x) .EE .PP \ .SS \f[CR]tanh\f[R] .PP Computes the hyperbolic tangent of the argument\ \f[I]x\f[R], where\ \f[I]x\f[R] is in radians. .IP .EX tanh(x) .EE .PP \ .SS \f[CR]threshold_max\f[R] .PP Returns one if the first argument\ \f[I]x\f[R] is greater than the threshold given by the second argument \f[I]a\f[R], and zero otherwise. If the optional third argument \f[I]b\f[R] is provided, an hysteresis of width \f[I]b\f[R] is needed in order to reset the function value. Default is no hysteresis, i.e.\ \f[I]b\f[R] = 0. .IP .EX threshold_max(x, a, [b]) .EE .SS \f[CR]threshold_min\f[R] .PP Returns one if the first argument\ \f[I]x\f[R] is less than the threshold given by the second argument \f[I]a\f[R], and zero otherwise. If the optional third argument \f[I]b\f[R] is provided, an hysteresis of width \f[I]b\f[R] is needed in order to reset the function value. Default is no hysteresis, i.e.\ \f[I]b\f[R] = 0. .IP .EX threshold_min(x, a, [b]) .EE .SS \f[CR]triangular_wave\f[R] .PP Computes a triangular wave between zero and one with a period equal to one. As with the sine wave, a triangular wave can be generated by passing as the argument\ \f[I]x\f[R] a linear function of time such as\ \f[I]ω\f[R]\f[I]t\f[R] + \f[I]ϕ\f[R], where\ \f[I]ω\f[R] controls the frequency of the wave and\ \f[I]ϕ\f[R] controls its phase. .IP .EX triangular_wave(x) .EE .PP \ .SS \f[CR]wall_time\f[R] .PP Returns the time elapsed since the invocation of FeenoX, in seconds. .IP .EX wall_time() .EE .SH BUILT\-IN FUNCTIONALS TBD. .SH BUILT\-IN VECTOR FUNCTIONS TBD. .SH NOTES TBD. .SH BUGS Report on GitHub https://github.com/seamplex/feenox or at jeremy\[at]seamplex.com .SH SEE ALSO \f[B]gmsh\f[R]\f[CR](1)\f[R], \f[B]mpirun\f[R]\f[CR](1)\f[R], \f[B]paraview\f[R]\f[CR](1)\f[R] .PP The FeenoX web page contains links to the full source code, binary versions, updates, examples, verification & validation cases and full documentation: https://www.seamplex.com/feenox. .SH AUTHORS Jeremy Theler jeremy\[at]seamplex.com. feenox-1.1/doc/feenox.xml0000644000175000017500000003610314773607165012356 00000000000000 ABORT ALIAS ALLOW_NEW_NONZEROS ALLOW_UNRESOLVED_BCS APPEND AS ASCENDING ASCENDING_ORDER ASCII_FILE ASCII_FILE_PATH AXISYMMETRIC BC BINARY_FILE BINARY_FILE_PATH BOUNDARY_CONDITION CACHE_B CACHE_J CELL CELLS CLOSE COLS COLUMNS COMPUTE_REACTION DATA DEFAULT_ARGUMENT_VALUE DESCENDING DESCENDING_ORDER DETECT_HANGING_NODES DETECT_UNRESOLVED_BCS DIM DIMENSION DIMENSIONS DIRICHLET_SCALING DUMP EIGEN_DIRICHLET_ZERO EIGEN_FORMULATION EIGEN_SOLVER ELSE ENDIF EPS EPSABS EPSREL EPS_TYPE FILE FILE_FORMAT FILE_PATH FIND_EXTREMA FIT FOR FORMAT FROM FUNCTION FUNCTION_DATA GAUSS GRADIENT GROUP GROUPS HANDLE_HANGING_NODES HEADER HISTORY ID IF IGNORE_NULL I_MAX I_MIN IMPLICIT INCLUDE INITIAL_CONDITIONS INITIAL_CONDITIONS_MODE INPUT INPUT_FILE INTEGRATE INTEGRATION INTERPOLATION INTERPOLATION_THRESHOLD IS K K_bc KSP KSP_TYPE LABEL LABELS LINEAR LINEARIZE_STRESS LINEAR_SOLVER M MAIN MATERIAL MATRIX MAX MAX_ITER M_bc MESH METHOD MIN MODE MODES MOMENT N NAME NODE NODES NO_MESH NOMESH NONEWLINE NON_LINEAR NON_LINEAR_SOLVER NONLINEAR_SOLVER NO_PHYSICAL_NAMES NSTEPS OFFSET OPEN OUTPUT OUTPUT_FILE OVER PATH PC PC_TYPE PETSC_OPTIONS PHASE_SPACE PHYSICAL_ENTITY PHYSICAL_GROUP PREALLOCATE PRECONDITIONER PRINT PRINTF PRINTF_ALL PRINT_FUNCTION PRINT_VECTOR PROBLEM PROGRESS PROGRESS_ASCII QUASISTATIC RANGE_MAX RANGE_MIN REACTION READ READ_FIELD READ_FUNCTION READ_MESH READ_SYMMETRIC_TENSOR READ_VECTOR RE_READ RESULT ROWS SCALE SEM SEMAPHORE SEP SEPARATOR SHEPARD_EXPONENT SHEPARD_RADIUS SHM SHM_OBJECT SIZE SIZES SN SNES SNES_TYPE SOLVE SOLVE_PROBLEM SORT_VECTOR SPECTRAL_TRANSFORMATION ST STEP STRING ST_TYPE SYMMETRIC_TENSOR SYMM_TENSOR TEXT TIME_ADAPTATION TIME_PATH TO TOL_ABS TOL_REL TRANSIENT TRANSIENT_SOLVER TS TS_ADAPT TS_ADAPT_TYPE TS_TYPE UNKNOWNS UPDATE_EACH_STEP VAR VARIABLE VARIABLES VARS VECTOR VECTORS VECTOR_SORT VERBOSE VIA WRITE WRITE_MESH WRITE_RESULTS X0 X_INCREASES_FIRST X_MAX X_MIN Y0 Y_MAX Y_MIN Z0 Z_MAX Z_MIN ALLOWED AS_PROVIDED K M NONE POST SKIP_HEADER_STEP SKIP_STATIC_STEP SKIP_STEP SKIP_TIME WAIT $ alpha alpha_x alphax alpha_y alphay alpha_z alphaz cp dae_rtol delta_sigma_max displ_max displ_max_x displ_max_y displ_max_z done done_static done_transient dont_quit dont_report dt E end_time eps_max_it eps_st_nu eps_st_sigma eps_tol E_x Ex E_y Ey E_z Ez f_x fx f_y fy f_z fz gamg_threshold G_xy Gxy G_yz Gyz G_zx Gzx i infinite in_static in_static_first in_static_last in_time_path in_transient in_transient_first in_transient_last j k kappa keff ksp_atol ksp_divtol ksp_max_it ksp_rtol max_dt memory_available min_dt mpi_rank mpi_size mumps_icntl_14 nodes_rough nu nu_xy nuxy nu_yz nuyz nu_zx nuzx on_gsl_error on_nan on_sundials_error penalty_weight pi pid q q''' quit realtime_scale report rho rhocp sigma_max sigma_max_x sigma_max_y sigma_max_z sn_alpha snes_atol snes_max_it snes_rtol snes_stol static_steps step_static step_transient strain_energy t T T_0 T0 T_guess thermal conductivity T_max T_min total_dofs ts_atol ts_rtol U u_at_displ_max u_at_sigma_max V v_at_displ_max v_at_sigma_max W w_at_displ_max w_at_sigma_max x y z zero abs acos asin atan atan2 ceil clock cos cosh cpu_time d_dt deadband derivative equal exp expint1 expint2 expint3 expintn floor func_min gammaf gauss_kronrod gauss_legendre heaviside if integral integral_dt integral_euler_dt is_even is_in_interval is_odd j0 lag lag_bilinear lag_euler last limit limit_dt log mark_max mark_min max memory min mod mpi_memory_global mpi_memory_local not prod qrng2d_halton qrng2d_niederreiter qrng2d_reversehalton qrng2d_sobol qrng_halton qrng_niederreiter qrng_reversehalton qrng_sobol quasi_random random random_gauss root round sawtooth_wave sech sgn sin sinh sqrt square_wave sum tan tanh threshold_max threshold_min triangular_wave vecdot vecmax vecmaxindex vecmin vecminindex vecnorm vecsize vecsum wall_time feenox-1.1/doc/fee.vim0000644000175000017500000001227714773607165011632 00000000000000" Vim syntax file " Language: FeenoX input file " Maintainer: jeremy Theler " Latest Revision: 19 March 2022 if exists("b:current_syntax") finish endif syn keyword feeKeyword ABORT ALIAS ALLOW_NEW_NONZEROS ALLOW_UNRESOLVED_BCS APPEND AS ASCENDING ASCENDING_ORDER ASCII_FILE ASCII_FILE_PATH AXISYMMETRIC BC BINARY_FILE BINARY_FILE_PATH BOUNDARY_CONDITION CACHE_B CACHE_J CELL CELLS CLOSE COLS COLUMNS COMPUTE_REACTION DATA DEFAULT_ARGUMENT_VALUE DESCENDING DESCENDING_ORDER DETECT_HANGING_NODES DETECT_UNRESOLVED_BCS DIM DIMENSION DIMENSIONS DIRICHLET_SCALING DUMP EIGEN_DIRICHLET_ZERO EIGEN_FORMULATION EIGEN_SOLVER ELSE ENDIF EPS EPSABS EPSREL EPS_TYPE FILE FILE_FORMAT FILE_PATH FIND_EXTREMA FIT FOR FORMAT FROM FUNCTION FUNCTION_DATA GAUSS GRADIENT GROUP GROUPS HANDLE_HANGING_NODES HEADER HISTORY ID IF IGNORE_NULL I_MAX I_MIN IMPLICIT INCLUDE INITIAL_CONDITIONS INITIAL_CONDITIONS_MODE INPUT INPUT_FILE INTEGRATE INTEGRATION INTERPOLATION INTERPOLATION_THRESHOLD IS K K_bc KSP KSP_TYPE LABEL LINEAR LINEARIZE_STRESS LINEAR_SOLVER M MAIN MATERIAL MATRIX MAX MAX_ITER M_bc MESH METHOD MIN MODE MODES MOMENT N NAME NODE NODES NO_MESH NOMESH NONEWLINE NON_LINEAR NON_LINEAR_SOLVER NONLINEAR_SOLVER NO_PHYSICAL_NAMES NSTEPS OFFSET OPEN OUTPUT OUTPUT_FILE OVER PATH PC PC_TYPE PETSC_OPTIONS PHASE_SPACE PHYSICAL_ENTITY PHYSICAL_GROUP PREALLOCATE PRECONDITIONER PRINT PRINTF PRINTF_ALL PRINT_FUNCTION PRINT_VECTOR PROBLEM PROGRESS PROGRESS_ASCII QUASISTATIC RANGE_MAX RANGE_MIN REACTION READ READ_FIELD READ_FUNCTION READ_MESH READ_SYMMETRIC_TENSOR READ_VECTOR RE_READ RESULT ROWS SCALE SEM SEMAPHORE SEP SEPARATOR SHEPARD_EXPONENT SHEPARD_RADIUS SHM SHM_OBJECT SIZE SIZES SN SNES SNES_TYPE SOLVE SOLVE_PROBLEM SORT_VECTOR SPECTRAL_TRANSFORMATION ST STEP STRING ST_TYPE SYMMETRIC_TENSOR SYMM_TENSOR TEXT TIME_ADAPTATION TIME_PATH TO TOL_ABS TOL_REL TRANSIENT TRANSIENT_SOLVER TS TS_ADAPT TS_ADAPT_TYPE TS_TYPE UNKNOWNS UPDATE_EACH_STEP VAR VARIABLE VARIABLES VARS VECTOR VECTORS VECTOR_SORT VERBOSE VIA WRITE WRITE_MESH WRITE_RESULTS X0 X_INCREASES_FIRST X_MAX X_MIN Y0 Y_MAX Y_MIN Z0 Z_MAX Z_MIN ALLOWED AS_PROVIDED K M NONE POST SKIP_HEADER_STEP SKIP_STATIC_STEP SKIP_STEP SKIP_TIME WAIT syn keyword feeVariable alpha alpha_x alphax alpha_y alphay alpha_z alphaz cp dae_rtol delta_sigma_max displ_max displ_max_x displ_max_y displ_max_z done done_static done_transient dont_quit dont_report dt E end_time eps_max_it eps_st_nu eps_st_sigma eps_tol E_x Ex E_y Ey E_z Ez f_x fx f_y fy f_z fz gamg_threshold G_xy Gxy G_yz Gyz G_zx Gzx i infinite in_static in_static_first in_static_last in_transient in_transient_first in_transient_last j k kappa keff ksp_atol ksp_divtol ksp_max_it ksp_rtol max_dt memory_available min_dt mpi_rank mpi_size mumps_icntl_14 nodes_rough nu nu_xy nuxy nu_yz nuyz nu_zx nuzx on_gsl_error on_nan on_sundials_error penalty_weight pi pid q q''' quit realtime_scale report rho rhocp sigma_max sigma_max_x sigma_max_y sigma_max_z sn_alpha snes_atol snes_max_it snes_rtol snes_stol static_steps step_static step_transient strain_energy t T T_0 T0 T_guess thermal conductivity T_max T_min total_dofs ts_atol ts_rtol U u_at_displ_max u_at_sigma_max V v_at_displ_max v_at_sigma_max W w_at_displ_max w_at_sigma_max x y z zero syn keyword feeFunction abs acos asin atan atan2 ceil clock cos cosh cpu_time d_dt deadband derivative equal exp expint1 expint2 expint3 expintn floor func_min gammaf gauss_kronrod gauss_legendre heaviside if integral integral_dt integral_euler_dt is_even is_in_interval is_odd j0 lag lag_bilinear lag_euler last limit limit_dt log mark_max mark_min max memory min mod mpi_memory_global mpi_memory_local not prod qrng2d_halton qrng2d_niederreiter qrng2d_reversehalton qrng2d_sobol qrng_halton qrng_niederreiter qrng_reversehalton qrng_sobol quasi_random random random_gauss root round sawtooth_wave sech sgn sin sinh sqrt square_wave sum tan tanh threshold_max threshold_min triangular_wave vecdot vecmax vecmaxindex vecmin vecminindex vecnorm vecsize vecsum wall_time " Numbers, allowing signs (both -, and +) " Integer number. syn match feeNumber display "[+-]\=\<\d\+\>" " Floating point number. syn match feeFloat display "[+-]\=\<\d\+\.\d+\>" " Floating point number, starting with a dot. syn match feeFloat display "[+-]\=\<.\d+\>" syn case ignore "floating point number, with dot, optional exponent syn match feeFloat display "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\>" "floating point number, starting with a dot, optional exponent syn match feeFloat display "\.\d\+\(e[-+]\=\d\+\)\=\>" "floating point number, without dot, with exponent syn match feeFloat display "\<\d\+e[-+]\=\d\+\>" syn case match syn match feeComment "#.*" " Expression separators: ';' and ',' syn match feeSemicolon ";" syn match feeComma "," syn match feeLineSkip "\\$" syn match feeOperator /+\||\|\.\.\|-\|(\|)\|{\|}\|\[\|\]\|=\|<\|>/ " Define the default highlighting. hi def link feeKeyword Statement hi def link feeFunction Function hi def link feeVariable Identifier hi def link feeComment Comment hi def link feeSemicolon Special hi def link feeComma Special hi def link feeLineSkip Special hi def link feeOperator Operator hi def link feeNumber Float hi def link feeFloat Float let b:current_syntax = "fee" feenox-1.1/doc/compilation0000644000175000017500000011367014773607240012610 00000000000000Compilation instructions - 1 Quickstart - 2 Detailed configuration and compilation - 2.1 Mandatory dependencies - 2.1.1 The GNU Scientific Library - 2.2 Optional dependencies - 2.2.1 SUNDIALS - 2.2.2 PETSc - 2.2.3 SLEPc - 2.3 FeenoX source code - 2.3.1 Git repository - 2.3.2 Source tarballs - 2.4 Configuration - 2.5 Source code compilation - 2.6 Test suite - 2.7 Installation - 3 Advanced settings - 3.1 Compiling with debug symbols - 3.2 Using a different compiler - 3.3 Compiling PETSc These detailed compilation instructions are aimed at amd64 Debian-based GNU/Linux distributions. The compilation procedure follows the POSIX standard, so it should work in other operating systems and architectures as well. Distributions not using apt for packages (i.e. yum) should change the package installation commands (and possibly the package names). The instructions should also work for in MacOS, although the apt-get commands should be replaced by brew or similar. Same for Windows under Cygwin, the packages should be installed through the Cygwin installer. WSL was not tested, but should work as well. [1 Quickstart]: #quickstart [2 Detailed configuration and compilation]: #sec:details [2.1 Mandatory dependencies]: #mandatory-dependencies [2.1.1 The GNU Scientific Library]: #sec:gsl [2.2 Optional dependencies]: #optional-dependencies [2.2.1 SUNDIALS]: #sundials [2.2.2 PETSc]: #petsc [2.2.3 SLEPc]: #slepc [2.3 FeenoX source code]: #feenox-source-code [2.3.1 Git repository]: #git-repository [2.3.2 Source tarballs]: #source-tarballs [2.4 Configuration]: #configuration [2.5 Source code compilation]: #sec:compilation [2.6 Test suite]: #sec:test-suite [2.7 Installation]: #installation [3 Advanced settings]: #advanced-settings [3.1 Compiling with debug symbols]: #compiling-with-debug-symbols [3.2 Using a different compiler]: #using-a-different-compiler [3.3 Compiling PETSc]: #compiling-petsc [POSIX standard]: https://en.wikipedia.org/wiki/POSIX [Cygwin]: https://www.cygwin.com/ Quickstart Note that the quickest way to get started is to download an already-compiled statically-linked binary executable. Note that getting a binary is the quickest and easiest way to go but it is the less flexible one. Mind the following instructions if a binary-only option is not suitable for your workflow and/or you do need to compile the source code from scratch. On a GNU/Linux box (preferably Debian-based), follow these quick steps. See sec. 2 for the actual detailed explanations. To compile the Git repository, proceed as follows. This procedure does need git and autoconf but new versions can be pulled and recompiled easily. If something goes wrong and you get an error, do not hesitate to ask in FeenoX’s discussion page. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install git build-essential make automake autoconf libgsl-dev If you cannot install libgsl-dev but still have git and the build toolchain, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Clone Github repository git clone https://github.com/seamplex/feenox 4. Bootstrap, configure, compile & make cd feenox ./autogen.sh ./configure make -j4 If you cannot (or do not want to) use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. See the detailed compilation instructions for an explanation. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install To stay up to date, pull and then autogen, configure and make (and optionally install): git pull ./autogen.sh; ./configure; make -j4 sudo make install [download]: https://www.seamplex.com/feenox/#download [discussion page]: https://github.com/seamplex/feenox/discussions [detailed compilation instructions]: compilation.md Detailed configuration and compilation The main target and development environment is Debian GNU/Linux, although it should be possible to compile FeenoX in any free GNU/Linux variant (and even the in non-free MacOS and/or Windows platforms) running in virtually any hardware platform. FeenoX can run be run either in HPC cloud servers or a Raspberry Pi, and almost everything that sits in the middle. Following the Unix philosophy discussed in the SDS, FeenoX re-uses a lot of already-existing high-quality free and open source libraries that implement a wide variety of mathematical operations. This leads to a number of dependencies that FeenoX needs in order to implement certain features. There is only one dependency that is mandatory, namely GNU GSL (see sec. 2.1.1), which if it not found then FeenoX cannot be compiled. All other dependencies are optional, meaning that FeenoX can be compiled but its capabilities will be partially reduced. As per the SRS, all dependencies have to be available on mainstream GNU/Linux distributions and have to be free and open source software. But they can also be compiled from source in case the package repositories are not available or customized compilation flags are needed (i.e. optimization or debugging settings). In particular, PETSc (and SLEPc) also depend on other mathematical libraries to perform particular operations such as low-level linear algebra operations. These extra dependencies can be either free (such as LAPACK) or non-free (such as Intel’s MKL), but there is always at least one combination of a working setup that involves only free and open source software which is compatible with FeenoX licensing terms (GPLv3+). See the documentation of each package for licensing details. [Debian GNU/Linux]: https://www.debian.org/ [SDS]: SDS.md [GNU GSL]: https://www.gnu.org/software/gsl/ [SRS]: SRS.md [PETSc]: https://petsc.org/release/ [SLEPc]: https://slepc.upv.es/ [LAPACK]: http://www.netlib.org/lapack/ [Intel’s MKL]: https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html Mandatory dependencies FeenoX has one mandatory dependency for run-time execution and the standard build toolchain for compilation. It is written in C99 so only a C compiler is needed, although make is also required. Free and open source compilers are favored. The usual C compiler is gcc but clang or Intel’s icc and the newer icx can also be used. Note that there is no need to have a Fortran nor a C++ compiler to build FeenoX. They might be needed to build other dependencies (such as PETSc and its dependencies), but not to compile FeenoX if all the dependencies are installed from the operating system’s package repositories. In case the build toolchain is not already installed, do so with sudo apt-get install gcc make If the source is to be fetched from the Git repository then not only is git needed but also autoconf and automake since the configure script is not stored in the Git repository but the autogen.sh script that bootstraps the tree and creates it. So if instead of compiling a source tarball one wants to clone from GitHub, these packages are also mandatory: sudo apt-get install git automake autoconf Again, chances are that any existing GNU/Linux box has all these tools already installed. [Git repository]: https://github.com/seamplex/feenox/ The GNU Scientific Library The only run-time dependency is GNU GSL (not to be confused with Microsoft GSL). It can be installed with sudo apt-get install libgsl-dev In case this package is not available or you do not have enough permissions to install system-wide packages, there are two options. 1. Pass the option --enable-download-gsl to the configure script below. 2. Manually download, compile and install GNU GSL If the configure script cannot find both the headers and the actual library, it will refuse to proceed. Note that the FeenoX binaries already contain a static version of the GSL so it is not needed to have it installed in order to run the statically-linked binaries. [GNU GSL]: https://www.gnu.org/software/gsl/ [Microsoft GSL]: https://github.com/microsoft/GSL Optional dependencies FeenoX has three optional run-time dependencies. It can be compiled without any of these, but functionality will be reduced: - SUNDIALS provides support for solving systems of ordinary differential equations (ODEs) or differential-algebraic equations (DAEs). This dependency is needed when running inputs with the PHASE_SPACE keyword. - PETSc provides support for solving partial differential equations (PDEs). This dependency is needed when running inputs with the PROBLEM keyword. - SLEPc provides support for solving eigen-value problems in partial differential equations (PDEs). This dependency is needed for inputs with PROBLEM types with eigen-value formulations such as modal and neutron_sn. In absence of all these, FeenoX can still be used to - solve general mathematical problems such as the ones to compute the Fibonacci sequence or the Logistic map, - operate on functions, either algebraically or point-wise interpolated such as Computing the derivative of a function as a Unix filter - read, operate over and write meshes, - etc. These optional dependencies have to be installed separately. There is no option to have configure to download them as with --enable-download-gsl. When running the test suite (sec. 2.6), those tests that need an optional dependency which was not found at compile time will be skipped. [SUNDIALS]: https://computing.llnl.gov/projects/sundials [1]: https://petsc.org/ [SLEPc]: https://slepc.upv.es/ [Fibonacci sequence]: https://www.seamplex.com/feenox/examples/#the-fibonacci-sequence [Logistic map]: https://www.seamplex.com/feenox/examples/#the-logistic-map [Computing the derivative of a function as a Unix filter]: https://www.seamplex.com/feenox/examples/#computing-the-derivative-of-a-function-as-a-unix-filter SUNDIALS SUNDIALS is a SUite of Nonlinear and DIfferential/ALgebraic equation Solvers. It is used by FeenoX to solve dynamical systems casted as DAEs with the keyword PHASE_SPACE, like the Lorenz system. Install either by doing sudo apt-get install libsundials-dev or by following the instructions in the documentation. [SUNDIALS]: https://computing.llnl.gov/projects/sundials [PHASE_SPACE]: https://www.seamplex.com/feenox/doc/feenox-manual.html#phase_space [the Lorenz system]: https://www.seamplex.com/feenox/examples/#lorenz-attractor-the-one-with-the-butterfly PETSc The Portable, Extensible Toolkit for Scientific Computation, pronounced PET-see (/ˈpɛt-siː/), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It is used by FeenoX to solve PDEs with the keyword PROBLEM, like the NAFEMS LE10 benchmark problem. Install either by doing sudo apt-get install petsc-dev or by following the instructions in the documentation. Note that - Configuring and compiling PETSc from scratch might be difficult the first time. It has a lot of dependencies and options. Read the official documentation for a detailed explanation. - There is a huge difference in efficiency between using PETSc compiled with debugging symbols and with optimization flags. Make sure to configure --with-debugging=0 for FeenoX production runs and leave the debugging symbols (which is the default) for development and debugging only. - FeenoX needs PETSc to be configured with real double-precision scalars. It will compile but will complain at run-time when using complex and/or single or quad-precision scalars. - FeenoX honors the PETSC_DIR and PETSC_ARCH environment variables when executing configure. If these two do not exist or are empty, it will try to use the default system-wide locations (i.e. the petsc-dev package). [Portable, Extensible Toolkit for Scientific Computation]: (https://petsc.org/) [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [NAFEMS LE10 benchmark problem]: https://www.seamplex.com/feenox/examples/#nafems-le10-thick-plate-pressure-benchmark [documentation]: https://petsc.org/release/install/ SLEPc The Scalable Library for Eigenvalue Problem Computations, is a software library for the solution of large scale sparse eigenvalue problems on parallel computers. It is used by FeenoX to solve PDEs with the keyword PROBLEM that need eigen-value computations, such as modal analysis of a cantilevered beam. Install either by doing sudo apt-get install slepc-dev or by following the instructions in the documentation. Note that - SLEPc is an extension of PETSc so the latter has to be already installed and configured. - FeenoX honors the SLEPC_DIR environment variable when executing configure. If it does not exist or is empty it will try to use the default system-wide locations (i.e. the slepc-dev package). - If PETSc was configured with --download-slepc then the SLEPC_DIR variable has to be set to the directory inside PETSC_DIR where SLEPc was cloned and compiled. [Scalable Library for Eigenvalue Problem Computations]: https://slepc.upv.es/ [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [modal analysis of a cantilevered beam]: https://www.seamplex.com/feenox/examples/#five-natural-modes-of-a-cantilevered-wire FeenoX source code There are two ways of getting FeenoX’s source code: 1. Cloning the GitHub repository at https://github.com/seamplex/feenox 2. Downloading a source tarball from https://seamplex.com/feenox/dist/src/ Git repository The main Git repository is hosted on GitHub at https://github.com/seamplex/feenox. It is public so it can be cloned either through HTTPS or SSH without needing any particular credentials. It can also be forked freely. See the Programming Guide for details about pull requests and/or write access to the main repository. Ideally, the main branch should have a usable snapshot. All other branches can contain code that might not compile or might not run or might not be tested. If you find a commit in the main branch that does not pass the tests, please report it in the issue tracker ASAP. After cloning the repository git clone https://github.com/seamplex/feenox the autogen.sh script has to be called to bootstrap the working tree, since the configure script is not stored in the repository but created from configure.ac (which is in the repository) by autogen.sh. Similarly, after updating the working tree with git pull it is recommended to re-run the autogen.sh script. It will do a make clean and re-compute the version string. [Programming Guide]: programming.md Source tarballs When downloading a source tarball, there is no need to run autogen.sh since the configure script is already included in the tarball. This method cannot update the working tree. For each new FeenoX release, the whole source tarball has to be downloaded again. Configuration To create a proper Makefile for the particular architecture, dependencies and compilation options, the script configure has to be executed. This procedure follows the GNU Coding Standards. ./configure Without any particular options, configure will check if the mandatory GNU Scientific Library is available (both its headers and run-time library). If it is not, then the option --enable-download-gsl can be used. This option will try to use wget (which should be installed) to download a source tarball, uncompress, configure and compile it. If these steps are successful, this GSL will be statically linked into the resulting FeenoX executable. If there is no internet connection, the configure script will say that the download failed. In that case, get the indicated tarball file manually, copy it into the current directory and re-run ./configure. The script will also check for the availability of optional dependencies. At the end of the execution, a summary of what was found (or not) is printed in the standard output: $ ./configure [...] ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS IDA yes PETSc yes /usr/lib/petsc SLEPc no [...] If for some reason one of the optional dependencies is available but FeenoX should not use it, then pass --without-sundials, --without-petsc and/or --without-slepc as arguments. For example $ ./configure --without-sundials --without-petsc [...] ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS no PETSc no SLEPc no [...] If configure complains about contradicting values from the cached ones, run autogen.sh again before configure and/or clone/uncompress the source tarball in a fresh location. To see all the available options run ./configure --help [GNU Coding Standards]: https://www.gnu.org/prep/standards/ [GNU Scientific Library]: https://www.gnu.org/software/gsl/ Source code compilation After the successful execution of configure, a Makefile is created. To compile FeenoX, just execute make Compilation should take a dozen of seconds. It can be even sped up by using the -j option make -j8 The binary executable will be located in the src directory but a copy will be made in the base directory as well. Test it by running without any arguments $ ./feenox FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information Run with --help for further explanations. $ The -v (or --version) option shows the version and a copyright notice: $ ./feenox -v FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Copyright © 2009--2022 https://seamplex.com/feenox GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ The -V (or --versions) option shows the dates of the last commits, the compiler options and the versions of the linked libraries: $ ./feenox -V FeenoX v0.1.24-g6cfe063 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Last commit date : Sun Aug 29 11:34:04 2021 -0300 Build date : Sun Aug 29 11:44:50 2021 -0300 Build architecture : linux-gnu x86_64 Compiler version : gcc (Debian 10.2.1-6) 10.2.1 20210110 Compiler expansion : gcc -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich Compiler flags : -O3 Builder : gtheler@chalmers GSL version : 2.6 SUNDIALS version : 4.1.0 PETSc version : Petsc Release Version 3.14.5, Mar 03, 2021 PETSc arch : PETSc options : --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --with-option-checking=0 --with-silent-rules=0 --libdir=${prefix}/lib/x86_64-linux-gnu --runstatedir=/run --with-maintainer-mode=0 --with-dependency-tracking=0 --with-debugging=0 --shared-library-extension=_real --with-shared-libraries --with-pic=1 --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --with-cxx-dialect=C++11 --with-opencl=1 --with-blas-lib=-lblas --with-lapack-lib=-llapack --with-scalapack=1 --with-scalapack-lib=-lscalapack-openmpi --with-ptscotch=1 --with-ptscotch-include=/usr/include/scotch --with-ptscotch-lib="-lptesmumps -lptscotch -lptscotcherr" --with-fftw=1 --with-fftw-include="[]" --with-fftw-lib="-lfftw3 -lfftw3_mpi" --with-superlu_dist=1 --with-superlu_dist-include=/usr/include/superlu-dist --with-superlu_dist-lib=-lsuperlu_dist --with-hdf5-include=/usr/include/hdf5/openmpi --with-hdf5-lib="-L/usr/lib/x86_64-linux-gnu/hdf5/openmpi -L/usr/lib/x86_64-linux-gnu/openmpi/lib -lhdf5 -lmpi" --CXX_LINKER_FLAGS=-Wl,--no-as-needed --with-hypre=1 --with-hypre-include=/usr/include/hypre --with-hypre-lib=-lHYPRE_core --with-mumps=1 --with-mumps-include="[]" --with-mumps-lib="-ldmumps -lzmumps -lsmumps -lcmumps -lmumps_common -lpord" --with-suitesparse=1 --with-suitesparse-include=/usr/include/suitesparse --with-suitesparse-lib="-lumfpack -lamd -lcholmod -lklu" --with-superlu=1 --with-superlu-include=/usr/include/superlu --with-superlu-lib=-lsuperlu --prefix=/usr/lib/petscdir/petsc3.14/x86_64-linux-gnu-real --PETSC_ARCH=x86_64-linux-gnu-real CFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC" CXXFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC" FCFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fPIC -ffree-line-length-0" FFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fPIC -ffree-line-length-0" CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2" LDFLAGS="-Wl,-Bsymbolic-functions -flto=auto -Wl,-z,relro -fPIC" MAKEFLAGS=w SLEPc version : SLEPc Release Version 3.14.2, Feb 01, 2021 $ Test suite The test directory contains a set of test cases whose output is known so that unintended regressions can be detected quickly (see the programming guide for more information). The test suite ought to be run after each modification in FeenoX’s source code. It consists of a set of scripts and input files needed to solve dozens of cases. The output of each execution is compared to a reference solution. In case the output does not match the reference, the test suite fails. After compiling FeenoX as explained in sec. 2.5, the test suite can be run with make check. Ideally everything should be green meaning the tests passed: $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh PASS: tests/beam-modal.sh PASS: tests/beam-ortho.sh PASS: tests/builtin.sh PASS: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh PASS: tests/i-beam-euler-bernoulli.sh PASS: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh PASS: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh PASS: tests/nafems-le1.sh PASS: tests/nafems-le10.sh PASS: tests/nafems-le11.sh PASS: tests/nafems-t1-4.sh PASS: tests/nafems-t2-3.sh PASS: tests/neutron_diffusion_src.sh PASS: tests/neutron_diffusion_keff.sh PASS: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh PASS: tests/thermal-1d.sh PASS: tests/thermal-2d.sh PASS: tests/trig.sh PASS: tests/two-cubes-isotropic.sh PASS: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh XFAIL: tests/xfail-few-properties-ortho-young.sh XFAIL: tests/xfail-few-properties-ortho-poisson.sh XFAIL: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 39 # SKIP: 0 # XFAIL: 4 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ The XFAIL result means that those cases are expected to fail (they are there to test if FeenoX can handle errors). Failure would mean they passed. In case FeenoX was not compiled with any optional dependency, the corresponding tests will be skipped. Skipped tests do not mean any failure, but that the compiled FeenoX executable does not have the full capabilities. For example, when configuring with ./configure --without-petsc (but with SUNDIALS), the test suite output should be a mixture of green and blue: $ ./configure --without-petsc [...] configure: creating ./src/version.h ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS yes PETSc no SLEPc no Compiler gcc checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating doc/Makefile config.status: executing depfiles commands $ make [...] $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh SKIP: tests/beam-modal.sh SKIP: tests/beam-ortho.sh PASS: tests/builtin.sh SKIP: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh SKIP: tests/i-beam-euler-bernoulli.sh SKIP: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh SKIP: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh SKIP: tests/nafems-le1.sh SKIP: tests/nafems-le10.sh SKIP: tests/nafems-le11.sh SKIP: tests/nafems-t1-4.sh SKIP: tests/nafems-t2-3.sh SKIP: tests/neutron_diffusion_src.sh SKIP: tests/neutron_diffusion_keff.sh SKIP: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh SKIP: tests/thermal-1d.sh SKIP: tests/thermal-2d.sh PASS: tests/trig.sh SKIP: tests/two-cubes-isotropic.sh SKIP: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh SKIP: tests/xfail-few-properties-ortho-young.sh SKIP: tests/xfail-few-properties-ortho-poisson.sh SKIP: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 21 # SKIP: 21 # XFAIL: 1 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ To illustrate how regressions can be detected, let us add a bug deliberately and re-run the test suite. Edit the source file that contains the shape functions of the second-order tetrahedra src/mesh/tet10.c, find the function feenox_mesh_tet10_h() and randomly change a sign, i.e. replace return t*(2*t-1); with return t*(2*t+1); Save, recompile, and re-run the test suite to obtain some red: $ git diff src/mesh/ diff --git a/src/mesh/tet10.c b/src/mesh/tet10.c index 72bc838..293c290 100644 --- a/src/mesh/tet10.c +++ b/src/mesh/tet10.c @@ -227,7 +227,7 @@ double feenox_mesh_tet10_h(int j, double *vec_r) { return s*(2*s-1); break; case 3: - return t*(2*t-1); + return t*(2*t+1); break; case 4: $ make [...] $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh FAIL: tests/beam-modal.sh PASS: tests/beam-ortho.sh PASS: tests/builtin.sh PASS: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh PASS: tests/i-beam-euler-bernoulli.sh PASS: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh PASS: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh PASS: tests/nafems-le1.sh FAIL: tests/nafems-le10.sh FAIL: tests/nafems-le11.sh PASS: tests/nafems-t1-4.sh PASS: tests/nafems-t2-3.sh PASS: tests/neutron_diffusion_src.sh PASS: tests/neutron_diffusion_keff.sh FAIL: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh PASS: tests/thermal-1d.sh PASS: tests/thermal-2d.sh PASS: tests/trig.sh PASS: tests/two-cubes-isotropic.sh PASS: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh XFAIL: tests/xfail-few-properties-ortho-young.sh XFAIL: tests/xfail-few-properties-ortho-poisson.sh XFAIL: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 35 # SKIP: 0 # XFAIL: 4 # FAIL: 4 # XPASS: 0 # ERROR: 0 ============================================================================ See ./test-suite.log Please report to jeremy@seamplex.com ============================================================================ make[3]: *** [Makefile:1152: test-suite.log] Error 1 make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: *** [Makefile:1260: check-TESTS] Error 2 make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: *** [Makefile:1791: check-am] Error 2 make[1]: Leaving directory '/home/gtheler/codigos/feenox' make: *** [Makefile:1037: check-recursive] Error 1 $ [test]: https://github.com/seamplex/feenox/tree/main/tests [programming guide]: programming.md Installation To be able to execute FeenoX from any directory, the binary has to be copied to a directory available in the PATH environment variable. If you have root access, the easiest and cleanest way of doing this is by calling make install with sudo or su: $ sudo make install Making install in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' gmake[2]: Entering directory '/home/gtheler/codigos/feenox/src' /usr/bin/mkdir -p '/usr/local/bin' /usr/bin/install -c feenox '/usr/local/bin' gmake[2]: Nothing to be done for 'install-data-am'. gmake[2]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make[2]: Entering directory '/home/gtheler/codigos/feenox' make[2]: Nothing to be done for 'install-exec-am'. make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ If you do not have root access or do not want to populate /usr/local/bin, you can either - Configure with a different prefix (not covered here), or - Copy (or symlink) the feenox executable to $HOME/bin: mkdir -p ${HOME}/bin cp feenox ${HOME}/bin If you plan to regularly update FeenoX (which you should), you might want to symlink instead of copy so you do not need to update the binary in $HOME/bin each time you recompile: mkdir -p ${HOME}/bin ln -sf feenox ${HOME}/bin Check that FeenoX is now available from any directory (note the command is feenox and not ./feenox): $ cd $ feenox -v FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Copyright © 2009--2022 https://seamplex.com/feenox GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ If it is not and you went through the $HOME/bin path, make sure it is in the PATH (pun). Add export PATH=${PATH}:${HOME}/bin to your .bashrc in your home directory and re-login. Advanced settings Compiling with debug symbols By default the C flags are -O3, without debugging. To add the -g flag, just use CFLAGS when configuring: ./configure CFLAGS="-g -O0" Using a different compiler FeenoX uses the CC environment variable to set the compiler. So configure like export CC=clang; ./configure Note that the CC variable has to be exported and not passed to configure. That is to say, don’t configure like ./configure CC=clang Mind also the following environment variables when using MPI-enabled PETSc: - MPICH_CC - OMPI_CC - I_MPI_CC Depending on how your system is configured, this last command might show clang but not actually use it. The FeenoX executable will show the configured compiler and flags when invoked with the --versions option: $ feenox --versions FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Last commit date : Sat Feb 12 15:35:05 2022 -0300 Build date : Sat Feb 12 15:35:44 2022 -0300 Build architecture : linux-gnu x86_64 Compiler version : gcc (Debian 10.2.1-6) 10.2.1 20210110 Compiler expansion : gcc -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich Compiler flags : -O3 Builder : gtheler@tom GSL version : 2.6 SUNDIALS version : 5.7.0 PETSc version : Petsc Release Version 3.16.3, Jan 05, 2022 PETSc arch : arch-linux-c-debug PETSc options : --download-eigen --download-hdf5 --download-hypre --download-metis --download-mumps --download-parmetis --download-pragmatic --download-scalapack SLEPc version : SLEPc Release Version 3.16.1, Nov 17, 2021 $ You can check which compiler was actually used by analyzing the feenox binary as $ objdump -s --section .comment ./feenox ./feenox: file format elf64-x86-64 Contents of section .comment: 0000 4743433a 20284465 6269616e 2031322e GCC: (Debian 12. 0010 322e302d 31342920 31322e32 2e300044 2.0-14) 12.2.0.D 0020 65626961 6e20636c 616e6720 76657273 ebian clang vers 0030 696f6e20 31342e30 2e3600 ion 14.0.6. $ It should be noted that the MPI implementation used to compile FeenoX has to match the one used to compile PETSc. Therefore, if you compiled PETSc on your own, it is up to you to ensure MPI compatibility. If you are using PETSc as provided by your distribution’s repositories, you will have to find out which one was used (it is usually OpenMPI) and use the same one when compiling FeenoX. FeenoX has been tested using PETSc compiled with - MPICH - OpenMPI - Intel MPI Compiling PETSc Particular explanation for FeenoX is to be done. For now, follow the general explanation from PETSc’s website. export PETSC_DIR=$PWD export PETSC_ARCH=arch-linux-c-opt ./configure --with-debugging=0 --download-mumps --download-scalapack --with-cxx=0 --COPTFLAGS=-O3 --FOPTFLAGS=-O3 export PETSC_DIR=$PWD ./configure --with-debugging=0 --with-openmp=0 --with-x=0 --with-cxx=0 --COPTFLAGS=-O3 --FOPTFLAGS=-O3 make PETSC_DIR=/home/ubuntu/reflex-deps/petsc-3.17.2 PETSC_ARCH=arch-linux-c-opt all [general explanation from PETSc’s website]: https://petsc.org/release/install/ feenox-1.1/doc/sds0000644000175000017500000135226114773607271011071 00000000000000FeenoX Software Design Specification 2025-04-03 - 1 Introduction - “Cloud first” vs. “cloud friendly” - Unfair advantage - Licensing - 1.1 Objective - 1.2 Scope - 1.2.1 NAFEMS LE10 benchmark - 1.2.2 The Lorenz chaotic system - 2 Architecture - 2.1 Deployment - 2.2 Execution - 2.2.1 Direct execution - 2.2.2 Parametric - 2.2.3 Optimization loops - 2.3 Efficiency - 2.4 Scalability - 2.5 Flexibility - 2.6 Extensibility - 2.7 Interoperability - 3 Interfaces - 3.1 Problem input - 3.1.1 Syntactic sugar & highlighting - 3.1.2 Definitions and instructions - 3.1.3 Simple inputs - 3.1.4 Complex things - 3.1.5 Everything is an expression - 3.1.6 Matching formulations - 3.1.7 Comparison of solutions - 3.1.8 Run-time arguments - 3.1.9 Git and macro-friendliness - 3.2 Results output - 3.2.1 Output formats - 3.2.2 Data exchange between non-conformal meshes - 4 Quality assurance - 4.1 Reproducibility and traceability - 4.2 Automated testing - 4.3 Bug reporting and tracking - 4.4 Documentation - 5 Appendix: Downloading and compiling FeenoX - 5.1 Binary executables - 5.2 Source tarballs - 5.3 Git repository - 6 Appendix: Rules of Unix philosophy - 6.1 Rule of Modularity - 6.2 Rule of Clarity - 6.3 Rule of Composition - 6.4 Rule of Separation - 6.5 Rule of Simplicity - 6.6 Rule of Parsimony - 6.7 Rule of Transparency - 6.8 Rule of Robustness - 6.9 Rule of Representation - 6.10 Rule of Least Surprise - 6.11 Rule of Silence - 6.12 Rule of Repair - 6.13 Rule of Economy - 6.14 Rule of Generation - 6.15 Rule of Optimization - 6.16 Rule of Diversity - 6.17 Rule of Extensibility - 7 Appendix: FeenoX history - 8 Appendix: Downloading & compiling - 8.1 Downloads - 8.1.1 Debian/Ubuntu packages - 8.1.2 Statically-linked binaries - 8.1.3 Compile from source - 8.1.4 Github repository - 8.2 Licensing - 8.3 Quickstart - 8.4 Detailed configuration and compilation - 8.4.1 Mandatory dependencies - 8.4.1.1 The GNU Scientific Library - 8.4.2 Optional dependencies - 8.4.2.1 SUNDIALS - 8.4.2.2 PETSc - 8.4.2.3 SLEPc - 8.4.3 FeenoX source code - 8.4.3.1 Git repository - 8.4.3.2 Source tarballs - 8.4.4 Configuration - 8.4.5 Source code compilation - 8.4.6 Test suite - 8.4.7 Installation - 8.5 Advanced settings - 8.5.1 Compiling with debug symbols - 8.5.2 Using a different compiler - 8.5.3 Compiling PETSc - 9 Appendix: Inputs for solving LE10 with other FEA programs - 9.1 CalculiX - 9.2 Code Aster - 9.3 Elmer - 10 Appendix: Downloading and compiling FeenoX - 10.1 Binary executables - 10.2 Source tarballs - 10.3 Git repository - 11 Appendix: Rules of Unix philosophy - 11.1 Rule of Modularity - 11.2 Rule of Clarity - 11.3 Rule of Composition - 11.4 Rule of Separation - 11.5 Rule of Simplicity - 11.6 Rule of Parsimony - 11.7 Rule of Transparency - 11.8 Rule of Robustness - 11.9 Rule of Representation - 11.10 Rule of Least Surprise - 11.11 Rule of Silence - 11.12 Rule of Repair - 11.13 Rule of Economy - 11.14 Rule of Generation - 11.15 Rule of Optimization - 11.16 Rule of Diversity - 11.17 Rule of Extensibility - 12 Appendix: FeenoX history - 13 Appendix: Downloading & compiling - 13.1 Downloads - 13.1.1 Debian/Ubuntu packages - 13.1.2 Statically-linked binaries - 13.1.3 Compile from source - 13.1.4 Github repository - 13.2 Licensing - 13.3 Quickstart - 13.4 Detailed configuration and compilation - 13.4.1 Mandatory dependencies - 13.4.1.1 The GNU Scientific Library - 13.4.2 Optional dependencies - 13.4.2.1 SUNDIALS - 13.4.2.2 PETSc - 13.4.2.3 SLEPc - 13.4.3 FeenoX source code - 13.4.3.1 Git repository - 13.4.3.2 Source tarballs - 13.4.4 Configuration - 13.4.5 Source code compilation - 13.4.6 Test suite - 13.4.7 Installation - 13.5 Advanced settings - 13.5.1 Compiling with debug symbols - 13.5.2 Using a different compiler - 13.5.3 Compiling PETSc - 14 Appendix: Inputs for solving LE10 with other FEA programs - 14.1 CalculiX - 14.2 Code Aster - 14.3 Elmer [1 Introduction]: #sec:introduction [“Cloud first” vs. “cloud friendly”]: #cloud-first [Unfair advantage]: #unfair-advantage [Licensing]: #licensing [1.1 Objective]: #sec:objective [1.2 Scope]: #sec:scope [1.2.1 NAFEMS LE10 benchmark]: #nafems-le10-benchmark [1.2.2 The Lorenz chaotic system]: #the-lorenz-chaotic-system [2 Architecture]: #sec:architecture [2.1 Deployment]: #sec:deployment [2.2 Execution]: #sec:execution [2.2.1 Direct execution]: #direct-execution [2.2.2 Parametric]: #sec:parametric [2.2.3 Optimization loops]: #sec:optimization [2.3 Efficiency]: #sec:efficiency [2.4 Scalability]: #sec:scalability [2.5 Flexibility]: #sec:flexibility [2.6 Extensibility]: #sec:extensibility [2.7 Interoperability]: #sec:interoperability [3 Interfaces]: #sec:interfaces [3.1 Problem input]: #sec:input [3.1.1 Syntactic sugar & highlighting]: #sec:sugar [3.1.2 Definitions and instructions]: #sec:nouns_verbs [3.1.3 Simple inputs]: #sec:simple [3.1.4 Complex things]: #sec:complex [3.1.5 Everything is an expression]: #sec:expression [3.1.6 Matching formulations]: #sec:matching-formulations [3.1.7 Comparison of solutions]: #sec:comparison-of-solutions [3.1.8 Run-time arguments]: #sec:run-time-arguments [3.1.9 Git and macro-friendliness]: #sec:git-friendliness [3.2 Results output]: #sec:output [3.2.1 Output formats]: #sec:output-formats [3.2.2 Data exchange between non-conformal meshes]: #sec:non-conformal [4 Quality assurance]: #sec:qa [4.1 Reproducibility and traceability]: #sec:traceability [4.2 Automated testing]: #sec:testing [4.3 Bug reporting and tracking]: #sec:bug-reporting [4.4 Documentation]: #sec:documentation [5 Appendix: Downloading and compiling FeenoX]: #appendix-downloading-and-compiling-feenox [5.1 Binary executables]: #binary-executables [5.2 Source tarballs]: #source-tarballs [5.3 Git repository]: #git-repository [6 Appendix: Rules of Unix philosophy]: #sec:unix [6.1 Rule of Modularity]: #sec:unix-modularity [6.2 Rule of Clarity]: #sec:unix-clarity [6.3 Rule of Composition]: #sec:unix-composition [6.4 Rule of Separation]: #sec:unix-separation [6.5 Rule of Simplicity]: #sec:unix-simplicity [6.6 Rule of Parsimony]: #sec:unix-parsimony [6.7 Rule of Transparency]: #sec:unix-transparency [6.8 Rule of Robustness]: #sec:unix-robustness [6.9 Rule of Representation]: #sec:unix-representation [6.10 Rule of Least Surprise]: #sec:unix-least-surprise [6.11 Rule of Silence]: #sec:unix-silence [6.12 Rule of Repair]: #sec:unix-repair [6.13 Rule of Economy]: #sec:unix-economy [6.14 Rule of Generation]: #sec:unix-generation [6.15 Rule of Optimization]: #sec:unix-optimization [6.16 Rule of Diversity]: #sec:unix-diversity [6.17 Rule of Extensibility]: #sec:unix-extensibility [7 Appendix: FeenoX history]: #sec:history [8 Appendix: Downloading & compiling]: #sec:download [8.1 Downloads]: #sec:downloads [8.1.1 Debian/Ubuntu packages]: #sec:debian [8.1.2 Statically-linked binaries]: #sec:binaries [8.1.3 Compile from source]: #sec:source [8.1.4 Github repository]: #sec:github [8.2 Licensing]: #sec:licensing [8.3 Quickstart]: #quickstart [8.4 Detailed configuration and compilation]: #sec:details [8.4.1 Mandatory dependencies]: #mandatory-dependencies [8.4.1.1 The GNU Scientific Library]: #sec:gsl [8.4.2 Optional dependencies]: #optional-dependencies [8.4.2.1 SUNDIALS]: #sundials [8.4.2.2 PETSc]: #petsc [8.4.2.3 SLEPc]: #slepc [8.4.3 FeenoX source code]: #feenox-source-code [8.4.4 Configuration]: #configuration [8.4.5 Source code compilation]: #sec:compilation [8.4.6 Test suite]: #sec:test-suite [8.4.7 Installation]: #installation [8.5 Advanced settings]: #advanced-settings [8.5.1 Compiling with debug symbols]: #compiling-with-debug-symbols [8.5.2 Using a different compiler]: #using-a-different-compiler [8.5.3 Compiling PETSc]: #compiling-petsc [9 Appendix: Inputs for solving LE10 with other FEA programs]: #sec:le10-other [9.1 CalculiX]: #calculix [9.2 Code Aster]: #code-aster [9.3 Elmer]: #elmer Introduction A computational tool (herein after referred to as the tool) specifically designed to be executed in arbitrarily-scalable remote servers (i.e. in the cloud) is required in order to solve engineering problems following the current state-of-the-art methods and technologies impacting the high-performance computing world. This (imaginary but plausible) Software Requirements Specification document describes the mandatory features this tool ought to have and lists some features which would be nice the tool had. Also it contains requirements and guidelines about architecture, execution and interfaces in order to fulfill the needs of cognizant engineers as of the 2020s. On the one hand, the tool should allow to solve industrial problems under stringent efficiency (sec. 2.3) and quality (sec. 4) requirements. It is therefore mandatory to be able to assess the source code for - independent verification, and/or - performance profiling, and/or - quality control by qualified third parties from all around the world. Hence, it has to be open source according to the definition of the Open Source Initiative. On the other hand, the initial version of the tool is expected to provide a basic functionality which might be extended (sec. 1.1 and sec. 2.6) by academic researchers and/or professional programmers. It thus should also be free—in the sense of freedom, not in the sense of price—as defined by the Free Software Foundation. There is no requirement on the pricing scheme, which is up to the vendor to define in the offer along with the detailed licensing terms. These should allow users to solve their problems the way they need and, eventually, to modify and improve the tool to suit their needs. If they cannot program themselves, they should have the freedom to hire somebody to do it for them. FeenoX is a cloud-first computational tool aimed at solving engineering problems with a particular design basis, as explained in - Theler, J. (2024). FeenoX: a cloud-first finite-element(ish) computational engineering tool. Journal of Open Source Software, 9(95), 5846. https://doi.org/10.21105/joss.05846 [FeenoX]: https://www.seamplex.com/feenox/ “Cloud first” vs. “cloud friendly” In web design theory, there is a difference between mobile-first and mobile-friendly interfaces. In the same sense, FeenoX is cloud first and not just cloud friendly. But what does this mean? Let us first start with the concept of “cloud friendliness,” meaning that it is possible to run something on the cloud without substantial effort. This implies that a computational tool is cloud friendly if it 1. can be executed remotely without any special care, i.e. a GNU/Linux binary ran on a server through SSH, 2. can exploit the (in principle) unbounded resources provided by a set of networked servers, and 3. does not need interactive input meaning that, once launched, it can finish without needing further human intervention. Yet, a cloud-first tool needs to take account other more profound concepts as well in early-stage design decisions. In software development, the modification of an existing desktop-based piece of software to allow remote execution is called “cloud-enabling.” In words of a senior manager, “cloud development is the opposite of desktop development.” So starting from scratch a cloud-first tool is a far better approach than refactoring an existing desktop program to make it cloud friendly. For instance, to make proper use of the computational resources available in remote servers launched on demand, it is needed to - have all the hosts in a particular network - configure a proper domain name service - design shared network file systems - etc. Instead of having to manually perform this set up each time a calculation is needed, one can automate the workflow with ad-hoc scripts acting as “thin clients” which would, for instance, - launch and configure the remote computing instances, optionally using containerization technology - send the input files needed by the computational tools - launch the actual computational tools (Gmsh, FeenoX, etc.) over the instances, e.g. using mpiexec or similar to be able to either a. to reduce the wall time needed to solve a problem, and/or b. to allow the solution of large problems that do not fit into a single computer - monitor and communicate with the solver as the calculation progresses - handle eventual errors - get back and process the results Furthermore, we could design and implement more complex clients able to handle things like - authentication - resource management (i.e. CPU hours) - estimation of the number and type of instances needed to solve a certain problem - parametric sweeps - optimization loops - conditionally-chained simulations - etc. Therefore, the computational tools that would perform the actual calculations should be designed in such a way not only to allow these kind of workflows but also to make them efficient. In fact, we say “clients” in plural because—as the Unix rule of diversity (sec. 11.16) asks for–depending on the particular problem type and requirements different clients might be needed. And since FeenoX itself is flexible enough to be able to solve not only different types of partial differential equations but also - different types of problems - coupled - parametric - optimization - etc. - in different environments - many small cases - a few big ones - only one but huge - etc. - under different conditions - in the industry by a single engineer - in the academy by several researchers - as a service in a public platform - etc. then it is expected nor to exist a one-size-fits-all solution able to handle all the combinations in an optimum way. However, if the underlying computational tool has been carefully designed to be able to handle all these details and to be flexible enough to accommodate other eventual and/or unexpected requirements by design, then we say that the tool is “cloud first.” Throughout this SDS we thoroughly explain the features of this particular cloud-first design. Indeed, FeenoX is essentially a back end which can work with a number of different front ends (fig. 1), including these thin clients and web-based interfaces (fig. 2) [Figure 1: Conceptual illustration of the difference between a front end and a back end ©bluecoders.] Figure 1: Conceptual illustration of the difference between a front end and a back end ©bluecoders. [Figure 2: The web-based platform CAEplex for FeenoX. https://www.youtube.com/watch?v=7KqiMbrSLDc] Figure 2: The web-based platform CAEplex for FeenoX. https://www.youtube.com/watch?v=7KqiMbrSLDc [Figure 1: Conceptual illustration of the difference between a front end and a back end ©bluecoders.]: front-back.png [CAEplex]: https://www.caeplex.com [Figure 2: The web-based platform CAEplex for FeenoX. https://www.youtube.com/watch?v=7KqiMbrSLDc]: caeplex-ipad.jpg Unfair advantage To better illustrate FeenoX’s unfair advantage (in the entrepreneurial sense), let us first consider what the options are when we need to write a technical report, paper or document: ----------------------------------------------------------------------------- Feature Microsoft Google Markdown[1] (La)TeX Word Docs --------------------------- ----------- ---------- ------------- ------------ Aesthetics ❌ ❌ ✅ ✅ Convertibility (to other 😐 😐 ✅ 😐 formats) Traceability ❌ 😐 ✅ ✅ Mobile-friendliness ❌ ✅ ✅ ❌ Collaborativeness ❌ ✅ ✅ 😐 Licensing/openness ❌ ❌ ✅ ✅ Non-nerd friendliness ✅ ✅ 😐 ❌ ----------------------------------------------------------------------------- After analyzing the pros and cons of each alternative, at some point it should be evident that Markdown (plus friends) gives the best trade off. We can then perform a similar analysis for the options available in order to solve an engineering problem casted as a partial differential equation, say by using a finite-element formulation: ---------------------------------------------------------------------------- Feature Desktop Web FeenoX[2] Libraries GUIs frontends --------------------------- ----------- ----------- ----------- ------------ Flexibility ❌/😐 ❌/😐 ✅ ✅ Scalability ❌ 😐 ✅ ✅ Traceability ❌ 😐 ✅ ✅ Cloud-friendliness ❌ ✅ ✅ ✅ Collaborativeness ❌ ✅ ✅ 😐 Licensing/openness ✅/😐/❌ ❌ ✅ ✅ Non-nerd friendliness ✅ ✅ 😐 ❌ ---------------------------------------------------------------------------- Therefore, FeenoX is—in a certain sense—to desktop FEA programs like - Code_Aster with Salome-Meca, or - CalculiX with PrePoMax and to libraries like - MoFEM or - Sparselizard what Markdown is to Word and (La)TeX, respectively and deliberately. [1] Here “Markdown” means (Pandoc + Git + Github / Gitlab / Gitea) [2] Here “FeenoX” means (FeenoX + Gmsh + Paraview + Git + Github / Gitlab / Gitea) [Markdown]: https://en.wikipedia.org/wiki/Markdown [Code_Aster]: https://www.code-aster.org/spip.php?rubrique2 [Salome-Meca]: https://www.code-aster.org/V2/spip.php?article303 [CalculiX]: http://www.calculix.de/ [PrePoMax]: https://prepomax.fs.um.si/ [MoFEM]: http://mofem.eng.gla.ac.uk/mofem/html/ [Sparselizard]: http://sparselizard.org/ [1]: https://commonmark.org/ [(La)TeX]: https://en.wikipedia.org/wiki/LaTeX [Pandoc]: https://pandoc.org/ [Git]: https://git-scm.com/ [Github]: https://github.com/ [Gitlab]: https://about.gitlab.com/ [Gitea]: https://gitea.com/%7D%7BGitea%7D [2]: https://seamplex.com/feenox [Gmsh]: http://gmsh.info [Paraview]: https://www.paraview.org/ Licensing FeenoX is licensed under the terms of the GNU General Public License version 3 or, at the user convenience, any later version. This means that users get the four essential freedoms:[3] 0. The freedom to run the program as they wish, for any purpose. 1. The freedom to study how the program works, and change it so it does their computing as they wish. 2. The freedom to redistribute copies so they can help others. 3. The freedom to distribute copies of their modified versions to others. So a free program has to be open source, but it also has to explicitly provide the four freedoms above both through the written license and through appropriate mechanisms to get, modify, compile, run and document these modifications using well-established and/or reasonable straightforward procedures. That is why licensing FeenoX as GPLv3+ also implies that the source code and all the scripts and makefiles needed to compile and run it are available for anyone that requires it (i.e. it is compiled with ./configure && make). Anyone wanting to modify the program either to fix bugs, improve it or add new features is free to do so. And if they do not know how to program, the have the freedom to hire a programmer to do it without needing to ask permission to the original authors. Even more, the documentation is released under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License so these new (or modified) features can be properly documented as well. Nevertheless, since these original authors are the copyright holders, they still can use it to either enforce or prevent further actions from the users that receive FeenoX under the GPLv3+. In particular, the license allows re-distribution of modified versions only if a. they are clearly marked as different from the original, and b. they are distributed under the same terms of the GPLv3+. There are also some other subtle technicalities that need not be discussed here such as - what constitutes a modified version (which cannot be redistributed under a different license) - what is an aggregate (in which each part be distributed under different licenses) - usage over a network and the possibility of using AGPL instead of GPL to further enforce freedom These issues are already taken into account in the FeenoX licensing scheme. It should be noted that not only is FeenoX free and open source, but also all of the libraries it depends on (and their dependencies) also are. It can also be compiled using free and open source build tool chains running over free and open source operating systems. To sum up this introduction, FeenoX is… 1. a cloud-first computational tool (not just cloud friendly, but cloud first). 2. to traditional computational software and to specialized libraries what Markdown is to Word and TeX, respectively. 3. both free (as in freedom) and open source. [3] There are some examples of pieces of computational software which are described as “open source” in which even the first of the four freedoms is denied. The most iconic case is that of Android, whose sources are readily available online but there is no straightforward way of updating one’s mobile phone firmware with a customized version, not to mention vendor and hardware lock ins and the possibility of bricking devices if something unexpected happens. In the nuclear industry, it is the case of a Monte Carlo particle-transport program that requests users to sign an agreement about the objective of its usage before allowing its execution. The software itself might be open source because the source code is provided after signing the agreement, but it is not free (as in freedom) at all. [GNU General Public License]: https://www.gnu.org/licenses/gpl-3.0 [the documentation]: https://seamplex.com/feenox/doc/ [Creative Commons Attribution-ShareAlike 4.0 International License]: https://creativecommons.org/licenses/by-sa/4.0/ [AGPL]: https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License [Markdown]: https://en.wikipedia.org/wiki/Markdown [Word]: https://en.wikipedia.org/wiki/Microsoft_Word [TeX]: https://en.wikipedia.org/wiki/TeX [as in freedom]: https://en.wikipedia.org/wiki/Free_as_in_Freedom Objective The main objective of the tool is to be able to solve engineering problems which are usually casted as differential-algebraic equations (DAEs) or partial differential equations (PDEs), such as - heat conduction - mechanical elasticity - structural modal analysis - mechanical frequency studies - electromagnetism - chemical diffusion - process control dynamics - computational fluid dynamics - … on one or more mainstream cloud servers, i.e. computers with hardware and operating systems (further discussed in sec. 2) that allows them to be available online and accessed remotely either interactively or automatically by other computers as well. Other architectures such as high-end desktop personal computers or even low-end laptops might be supported but they should not the main target (i.e. the tool has to be cloud-first but laptop-friendly). The initial version of the tool must be able to handle a subset of the above list of problem types. Afterward, the set of supported problem types, models, equations and features of the tool should grow to include other models as well, as required in sec. 2.6. The choice of the initial supported features is based on the types of problem that the FeenoX’s precursor codes (namely wasora, Fino and milonga, referred to as “previous versions” from now on) already have been supporting since more than ten years now. A subsequent road map and release plans can be designed as requested. FeenoX’s first version includes a subset of the required functionality, namely - open and closed-loop dynamical systems - Laplace/Poisson/Helmholtz equations - heat conduction - mechanical elasticity - structural modal analysis - multi-group neutron transport and diffusion Sec. 2.6 explains the mechanisms that FeenoX provides in order to add (or even remove) other types of problems to be solved. Recalling that FeenoX is a “cloud-first” tool as explained in sec. 1, it is designed to be developed and executed primarily on GNU/Linux hosts, which is the architecture of more than 90% of the internet servers which we collectively call “the public cloud.” It should be noted that GNU/Linux is a POSIX-compliant operating system which is compatible with Unix, and that FeenoX was designed and implemented following the rules of Unix philosophy which is further explained in sec. 11. Besides the POSIX standard, as explained below in sec. 2.4, FeenoX also uses MPI which is a well-known industry standard for massive execution of parallel processes following the distributed-systems parallelization paradigm. Finally, if performance and/or scalability are not important issues, FeenoX can be run in a (properly cooled) local PC, laptop or even in embedded systems such as Raspberry Pi (see sec. 2). [GNU/Linux]: https://www.gnu.org/gnu/linux-and-gnu.html [POSIX]: https://en.wikipedia.org/wiki/POSIX [Unix]: https://en.wikipedia.org/wiki/Unix [MPI]: https://en.wikipedia.org/wiki/Message_Passing_Interface [Raspberry Pi]: https://en.wikipedia.org/wiki/Raspberry_Pi Scope The tool should allow users to define the problem to be solved programmatically. That is to say, the problem should be completely defined using one or more files either… a. specifically formatted for the tool to read such as JSON or a particular input format (historically called input decks in punched-card days), and/or b. written in an high-level interpreted language such as Python or Julia. Once the problem has been defined and passed on to the solver, no further human intervention should be required. It should be noted that a graphical user interface is not required. The tool may include one, but it should be able to run without needing any interactive user intervention rather than the preparation of a set of input files. Nevertheless, the tool might allow a GUI to be used. For example, for a basic usage involving simple cases, a user interface engine should be able to create these problem-definition files in order to give access to less advanced users to the tool using a desktop, mobile and/or web-based interface in order to run the actual tool without needing to manually prepare the actual input files. However, for general usage, users should be able to completely define the problem (or set of problems, i.e. a parametric study) they want to solve in one or more input files and to obtain one or more output files containing the desired results, either a set of scalar outputs (such as maximum stresses or mean temperatures), and/or a detailed time and/or spatial distribution. If needed, a discretization of the domain may to be taken as a known input, i.e. the tool is not required to create the mesh as long as a suitable mesher can be employed using a similar workflow as the one specified in this SRS. The tool should define and document (sec. 4.4) the way the input files for a solving particular problem are to be prepared (sec. 3.1) and how the results are to be written (sec. 3.2). Any GUI, pre-processor, post-processor or other related graphical tool used to provide a graphical interface for the user should integrate in the workflow described in the preceding paragraph: a pre-processor should create the input files needed for the tool and a post-processor should read the output files created by the tool. Since FeenoX is designed to be executed in the cloud, it works very much like a transfer function between one (or more) files and zero or more output files: +------------+ mesh (*.msh) } | | { terminal data (*.dat) } input ----> | FeenoX |----> output { data files input (*.fee) } | | { post (vtk/msh) +------------+ Technically speaking, FeenoX can be seen as a Unix filter designed to read an ASCII-based stream of characters (i.e. the input file, which in turn can include other input files or contain instructions to read data from mesh and/or other data files) and to write ASCII-formatted data into the standard output and/or other files. The input file can be prepared either by a human or by another program. The output stream and/or files can be read by either a human and/or another programs. A quotation from Eric Raymond’s The Art of Unix Programming helps to illustrate this idea: Doug McIlroy, the inventor of Unix pipes and one of the founders of the Unix tradition, had this to say at the time: (i) Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features. (ii) Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input. […] He later summarized it this way (quoted in “A Quarter Century of Unix” in 1994): - This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. Keep in mind that even though both the quotes above and many finite-element programs that are still mainstream today date both from the early 1970s, fifty years later the latter still - do not make just only one thing well, - do complicate old programs by adding new features, - do not expect their output to become the input to another, - do clutter output with extraneous information, - do use stringently columnar and/or binary input (and output!) formats, and/or - do insist on interactive input. There are other FEA tools that, even though born closer in time, also follow the above bullets literally. But FeenoX does not, since it follows the Unix philosophy in general and Eric Raymond’s 17 Unix Rules (sec. 11) in particular. One of the main ideas is the rule of separation (sec. 11.4) that essentially asks to separate mechanism from policy, that in the computational engineering world translates into separating the front end from the back end as illustrated in fig. 1. When solving ordinary differential equations, the usual workflow involves solving them with FeenoX and plotting the results with Gnuplot or Pyxplot. When solving partial differential equations (PDEs), the mesh is created with Gmsh and the output can be post-processed with Gmsh, Paraview or any other post-processing system (even a web-based interface) that follows rule of separation. Even though most FEA programs eventually separate the interface from the solver up to some degree, there are cases in which they are still dependent such that changing the former needs updating the latter. This is the usual case with legacy programs designed back in the 1990s (or even one or two decades before) that are still around nowadays. They usually still fulfill almost all of the bullets above and are the ones which their owners are trying to convert from desktop to cloud-enabled programs instead of starting from scratch. From the very beginning, FeenoX is designed as a pure back end which should nevertheless provide appropriate mechanisms for different front ends to be able to communicate and to provide a friendly interface for the final user. Yet, the separation is complete in the sense that the nature of the front ends can radically change (say from a desktop-based point-and-click program to a web-based interface or an immersive augmented-reality application with goggles) without needing the modify the back end. Not only far more flexibility is given by following this path, but also develop efficiency and quality is encouraged since programmers working on the lower-level of an engineering tool usually do not have the skills needed to write good user-experience interfaces, and conversely. In the very same sense, FeenoX does not discretize continuous domains for PDE problems itself, but relies on separate tools for this end. Fortunately, there already exists one meshing tool which is FOSS (GPLv2) and shares most (if not all) of the design basis principles with FeenoX: the three-dimensional finite element mesh generator Gmsh. Strictly speaking, FeenoX does not need to be used along with Gmsh but with any other mesher able to write meshes in Gmsh’s format .msh. But since Gmsh also - is free and open source, - works also in a transfer-function-like fashion, - runs natively on GNU/Linux, - has a similar (but more comprehensive) API for Python/Julia, - etc. it is a perfect match for FeenoX. Even more, it provides suitable domain decomposition methods (through other open-source third-party libraries such as Metis) for scaling up large problems. [Unix filter]: https://en.wikipedia.org/wiki/Filter_(software) [ASCII]: https://en.wikipedia.org/wiki/ASCII [Eric Raymond]: http://www.catb.org/esr/ [The Art of Unix Programming]: http://www.catb.org/esr/writings/taoup/ [Doug McIlroy]: https://en.wikipedia.org/wiki/Douglas_McIlroy [Unix pipes]: https://en.wikipedia.org/wiki/Pipeline_%28Unix%29 [Unix tradition]: https://en.wikipedia.org/wiki/Unix_philosophy [3]: http://gmsh.info/ [Metis]: http://glaros.dtc.umn.edu/gkhome/metis/metis/overview NAFEMS LE10 benchmark Let us solve the linear elasticity benchmark problem NAFEMS LE10 “Thick plate pressure.” with FeenoX. Note the one-to-one correspondence between the human-friendly problem statement from fig. 3 and the FeenoX input file: [Figure 3: The NAFEMS LE10 problem statement and the corresponding FeenoX input] Figure 3: The NAFEMS LE10 problem statement and the corresponding FeenoX input # NAFEMS Benchmark LE-10: thick plate pressure PROBLEM mechanical DIMENSIONS 3 READ_MESH nafems-le10.msh # mesh in millimeters # LOADING: uniform normal pressure on the upper surface BC upper p=1 # 1 Mpa # BOUNDARY CONDITIONS: BC DCD'C' v=0 # Face DCD'C' zero y-displacement BC ABA'B' u=0 # Face ABA'B' zero x-displacement BC BCB'C' u=0 v=0 # Face BCB'C' x and y displ. fixed BC midplane w=0 # z displacements fixed along mid-plane # MATERIAL PROPERTIES: isotropic single-material properties E = 210e3 # Young modulus in MPa nu = 0.3 # Poisson's ratio SOLVE_PROBLEM # solve! # print the direct stress y at D (and nothing more) PRINT "σ_y @ D = " sigmay(2000,0,300) "MPa" Here, “one-to-one” means that the input file does not need any extra definition which is not part of the problem formulation. Of course the cognizant engineer can give further definitions such as - the linear solver and pre-conditioner - the tolerances for iterative solvers - options for computing stresses out of displacements - etc. However, she is not obliged to as–at least for simple problems—the defaults are reasonable. This is akin to writing a text in Markdown where one does not need to care if the page is A4 or letter (as, in most cases, the output will not be printed but rendered in a web browser). The problem asks for the normal stress in the y direction σ_(y) at point “D,” which is what FeenoX writes (and nothing else, rule of economy): $ feenox nafems-le10.fee sigma_y @ D = -5.38016 MPa $ Also note that since there is only one material, there is no need to do an explicit link between material properties and physical volumes in the mesh (rule of simplicity). And since the properties are uniform and isotropic, a single global scalar for E and a global single scalar for ν are enough. [Figure 4: Normal stress σ_(y) refined around point D over 5,000x-warped displacements for LE10 created with Paraview] Figure 4: Normal stress σ_(y) refined around point D over 5,000x-warped displacements for LE10 created with Paraview For the sake of visual completeness, post-processing data with the scalar distribution of σ_(y) and the vector field of displacements [u, v, w] can be created by adding one line to the input file: WRITE_MESH nafems-le10.vtk sigmay VECTOR u v w This VTK file can then be post-processed to create interactive 3D views, still screenshots, browser and mobile-friendly webGL models, etc. In particular, using Paraview one can get a colorful bitmapped PNG (the displacements are far more interesting than the stresses in this problem). [Figure 5: See also https://caeplex.com/r/f1a82f to see this very same LE10 problem solved in the mobile-friendly web-based interface CAEplex that uses FeenoX as the back end] Figure 5: See also https://caeplex.com/r/f1a82f to see this very same LE10 problem solved in the mobile-friendly web-based interface CAEplex that uses FeenoX as the back end [NAFEMS LE10 “Thick plate pressure.”]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [Figure 3: The NAFEMS LE10 problem statement and the corresponding FeenoX input]: nafems-le10-problem-input.svg [Figure 4: Normal stress σ_(y) refined around point D over 5,000x-warped displacements for LE10 created with Paraview]: nafems-le10.png [4]: https://www.paraview.org [Figure 5: See also https://caeplex.com/r/f1a82f to see this very same LE10 problem solved in the mobile-friendly web-based interface CAEplex that uses FeenoX as the back end]: nafems-le10-caeplex.png The Lorenz chaotic system Let us consider the famous chaotic Lorenz’s dynamical system. Here is one way of getting an image of the butterfly-shaped attractor using FeenoX to compute it and Gnuplot to draw it. Solve ẋ = σ ⋅ (y − x) ẏ = x ⋅ (r − z) − y ż = xy − bz for 0 < t < 40 with initial conditions x(0) = −11 y(0) = −16 z(0) = 22.5 and σ = 10, r = 28 and b = 8/3, which are the classical parameters that generate the butterfly as presented by Edward Lorenz back in his seminal 1963 paper Deterministic non-periodic flow. The following ASCII input file resembles the parameters, initial conditions and differential equations of the problem as naturally as possible: PHASE_SPACE x y z # Lorenz attractor’s phase space is x-y-z end_time = 40 # we go from t=0 to 40 non-dimensional units sigma = 10 # the original parameters from the 1963 paper r = 28 b = 8/3 x_0 = -11 # initial conditions y_0 = -16 z_0 = 22.5 # the dynamical system's equations written as naturally as possible x_dot = sigma*(y - x) y_dot = x*(r - z) - y z_dot = x*y - b*z PRINT t x y z # four-column plain-ASCII output [Figure 6: The Lorenz attractor solved with FeenoX and drawn with Gnuplot] Figure 6: The Lorenz attractor solved with FeenoX and drawn with Gnuplot Indeed, when executing FeenoX with this input file, we get four ASCII columns (t, x, y and z) which we can then redirect to a file and plot it with a standard tool such as Gnuplot. Note the importance of relying on plain ASCII text formats both for input and output, as recommended by the Unix philosophy and the rule of composition: other programs can easily create inputs for FeenoX and other programs can easily understand FeenoX’s outputs. This is essentially how Unix filters and pipes work. Note the one-to-one correspondence between the human-friendly differential equations (written in TeX and rendered as typesetted mathematical symbols) and the computer-friendly input file that FeenoX reads. Even though the initial version of FeenoX does not provide an API for high-level interpreted languages such as Python or Julia, the code is written in such a way that this feature can be added without needing a major refactoring. This will allow to fully define a problem in a procedural way, increasing also flexibility. [Lorenz’s dynamical system]: https://www.seamplex.com/feenox/examples/daes.html#lorenz-attractorthe-one-with-the-butterfly [Gnuplot]: http://www.gnuplot.info/ [Deterministic non-periodic flow]: http://journals.ametsoc.org/doi/abs/10.1175/1520-0469%281963%29020%3C0130%3ADNF%3E2.0.CO%3B2 [Figure 6: The Lorenz attractor solved with FeenoX and drawn with Gnuplot]: lorenz.svg [5]: (http://www.gnuplot.info/) Architecture The tool must be aimed at being executed unattended on remote servers which are expected to have a mainstream (as of the 2020s) architecture regarding operating system (GNU/Linux variants and other Unix-like OSes) and hardware stack, such as - a few Intel-compatible or ARM-like CPUs per host - a few levels of memory caches - a few gigabytes of random-access memory - several gigabytes of solid-state storage It should successfully run on - bare-metal - virtual servers - containerized images using standard compilers, dependencies and libraries already available in the repositories of most current operating systems distributions. Preference should be given to open source compilers, dependencies and libraries. Small problems might be executed in a single host but large problems ought to be split through several server instances depending on the processing and memory requirements. The computational implementation should adhere to open and well-established parallelization standards. Ability to run on local desktop personal computers and/laptops is not required but suggested as a mean of giving the opportunity to users to test and debug small coarse computational models before launching the large computation on a HPC cluster or on a set of scalable cloud instances. Support for non-GNU/Linux operating systems is not required but also suggested. Mobile platforms such as tablets and phones are not suitable to run engineering simulations due to their lack of proper electronic cooling mechanisms. They are suggested to be used to control one (or more) instances of the tool running on the cloud, and even to pre and post process results through mobile and/or web interfaces. Very much like the C language (after A & B) and Unix itself (after a first attempt and the failed MULTICS), FeenoX can be seen as a third-system effect: A notorious ‘second-system effect’ often afflicts the successors of small experimental prototypes. The urge to add everything that was left out the first time around all too frequently leads to huge and overcomplicated design. Less well known, because less common, is the ‘third-system effect’: sometimes, after the second system has collapsed of its own weight, there is a chance to go back to simplicity and get it right. From Eric Raymond’s The Art of Unix Programming Feenox is indeed the third version written from scratch after a first implementation in 2009 (different small components with different names) and a second one (named wasora that allowed dynamically-shared plugins to be linked at runtime to provide particular PDEs) which was far more complex and had far more features circa 2012–2015. The third attempt, FeenoX, explicitly addresses the “do one thing well” idea from Unix. Furthermore, not only is FeenoX itself both free and open-source software but, following the rule of composition (sec. 11.3), it also is designed to connect and to work with other free and open source software such as - Gmsh for pre and/or post-processing - ParaView for post-processing - Gnuplot for plotting 1D/2D results - Pyxplot for plotting 1D results - Pandoc for creating tables and documents - TeX for creating tables and documents and many others, which are readily available in all major GNU/Linux distributions. FeenoX also makes use of high-quality free and open source mathematical libraries which contain numerical methods designed by mathematicians and implemented by professional programmers. In particular, it depends on - GNU Scientific Library for general mathematics, - SUNDIALS IDA for ODEs and DAEs, - PETSc for linear, non-linear and transient PDEs, and - SLEPc for PDEs involving eigen problems Therefore, if one zooms in into the block of the transfer function above, FeenoX can also be seen as a glue layer between the input files defining a physical problem and the mathematical libraries used to solve the discretized equations. For example, when solving the linear elastic problem from the NAFEMS LE10 case discussed above, we can draw the following diagram: []  This way, FeenoX bounds its scope to do only one thing and to do it well: to build and solve finite-element formulations of physical problems. And it does so on high grounds, both ethical and technological: a. Ethical, since it is free software, all users can 0. run, 1. share, 2. modify, and/or 3. re-share their modifications. If a user cannot read or write code to make FeenoX suit her needs, at least she has the freedom to hire someone to do it for her. b. Technological, since it is open source, advanced users can detect and correct bugs and even improve the algorithms. Given enough eyeballs, all bugs are shallow. FeenoX’s main development architecture is Debian GNU/Linux running over 64-bits Intel-compatible processors (but binaries for ARM architectures can be compiled as well). All the dependencies are free and/or open source and already available in Debian’s latest stable official repositories, as explained in sec. 2.1. The POSIX standard is followed whenever possible, allowing thus FeenoX to be compiled in other operating systems and architectures such as Windows (using Cygwin) and MacOS. The build procedure is the well-known and mature ./configure && make command. FeenoX is written in C conforming to the ISO C99 specification (plus POSIX extensions), which is a standard, mature and widely supported language with compilers for a wide variety of architectures. As listed above, for its basic mathematical capabilities, FeenoX uses the GNU Scientific Library. For solving ODEs/DAEs, FeenoX relies on Lawrence Livermore’s SUNDIALS library. For PDEs, FeenoX uses Argonne’s PETSc library and Universitat Politècnica de València’s SLEPc library. All of them are - free and open source, - written in C (neither Fortran nor C++), - mature and stable, - actively developed and updated, - very well known both in the industry and academia. Moreover, PETSc and SLEPc are scalable through the MPI standard, further discussed in sec. 2.4. This means that programs using both these libraries can run on either large high-performance supercomputers or low-end laptops. FeenoX has been run on - Raspberry Pi - Laptop (GNU/Linux & Windows 10) - Macbook - Desktop PC - Bare-metal servers - Vagrant/Virtualbox virtual machines - Docker/Kubernetes containers - AWS/DigitalOcean/Contabo instances Due to the way that FeenoX is designed and the policy separated from the mechanism, it is possible to control a running instance remotely from a separate client which can eventually run on a mobile device (fig. 2,fig. 5). The following example illustrates how well FeenoX works as one of many links in a chain that goes from tracing a bitmap with the problem’s geometry down to creating a nice figure with the results of a computation. [Figure 7: Homer trying to solve a maze on a placemat during season four.] Figure 7: Homer trying to solve a maze on a placemat during season four. Say you are Homer J. Simpson and you want to solve a maze drawn in a restaurant’s placemat while driving to your wife’s aunt funeral. One where both the start and end points are known beforehand as show in fig. 7. In order to avoid falling into the alligator’s mouth, you can exploit the ellipticity of the Laplacian operator to solve any maze (even a hand-drawn one) without needing any fancy AI or ML algorithm. Just FeenoX and a bunch of standard open source tools to convert a bitmapped picture of the maze into an unstructured mesh. [a] a [b] b Figure 8: Bitmapped, meshed and solved mazes.. a — Bitmapped maze from https://www.mazegenerator.net (left) and 2D mesh (right), b — Solution to found by FeenoX (and drawn by Gmsh) 1. Go to http://www.mazegenerator.net/ 2. Create a maze 3. Download it in PNG (fig. 8 (a)) 4. Perform some conversions - PNG → PNM → SVG → DXF → GEO $ wget http://www.mazegenerator.net/static/orthogonal_maze_with_20_by_20_cells.png $ convert orthogonal_maze_with_20_by_20_cells.png -negate maze.png $ potrace maze.pnm --alphamax 0 --opttolerance 0 -b svg -o maze.svg $ ./svg2dxf maze.svg maze.dxf $ ./dxf2geo maze.dxf 0.1 5. Open it with Gmsh []  - Add a surface - Set physical curves for “start” and “end” 6. Mesh it (fig. 8 (a)) gmsh -2 maze.geo 7. Solve ∇²ϕ = 0 with BCs $$ \begin{cases} \phi=0 & \text{at “start”} \\ \phi=1 & \text{at “end”} \\ \nabla \phi \cdot \hat{\vec{n}} = 0 & \text{everywhere else} \\ \end{cases} $$ PROBLEM laplace 2D # pretty self-descriptive, isn't it? READ_MESH maze.msh # boundary conditions (default is homogeneous Neumann) BC start phi=0 BC end phi=1 SOLVE_PROBLEM # write the norm of gradient as a scalar field # and the gradient as a 2d vector into a .msh file WRITE_MESH maze-solved.msh \ sqrt(dphidx(x,y)^2+dphidy(x,y)^2) \ VECTOR dphidx dphidy 0 $ feenox maze.fee $ 8. Open maze-solved.msh, go to start and follow the gradient ∇ϕ! [a] [b] [c] [d] Figure 9: Any arbitrary maze (even hand-drawn) can be solved with FeenoX. [Eric Raymond]: http://www.catb.org/esr/ [The Art of Unix Programming]: http://www.catb.org/esr/writings/taoup/ [free]: https://www.gnu.org/philosophy/free-sw.en.html [open-source]: https://opensource.com/resources/what-open-source [Gmsh3]: http://gmsh.info/ [ParaView]: https://www.paraview.org/ [6]: http://gnuplot.info/ [Pyxplot]: http://www.pyxplot.org.uk/ [Pandoc]: https://pandoc.org/ [7]: https://tug.org/ [GNU Scientific Library]: https://www.gnu.org/software/gsl/ [SUNDIALS IDA]: https://computing.llnl.gov/projects/sundials/ida [PETSc]: https://petsc.org/ [SLEPc]: http://slepc.upv.es/ [glue layer]: https://www.linuxtopia.org/online_books/programming_books/art_of_unix_programming/ch04s03_1.html [NAFEMS LE10 case]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [8]: transfer-le10-zoom.svg [free software]: https://www.gnu.org/philosophy/open-source-misses-the-point.en.html [open source]: http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ [Given enough eyeballs, all bugs are shallow.]: https://en.wikipedia.org/wiki/Linus%27s_law [Debian GNU/Linux]: https://www.debian.org/ [Cygwin]: https://www.cygwin.com/ [C]: https://en.wikipedia.org/wiki/C_(programming_language) [ISO C99]: https://en.wikipedia.org/wiki/C99 [Argonne’s PETSc library]: https://www.mcs.anl.gov/petsc/ [Universitat Politècnica de València’s SLEPc library]: https://slepc.upv.es/ [MPI standard]: https://www.mcs.anl.gov/research/projects/mpi/standard.html [during season four]: https://en.wikipedia.org/wiki/Selma%27s_Choice [Figure 7: Homer trying to solve a maze on a placemat during season four.]: maze-homer.png [Homer J. Simpson]: https://en.wikipedia.org/wiki/Homer_Simpson [a]: maze12.png [b]: maze3.png [9]: gmsh-maze.png [10]: maze-sigma.png [11]: maze-delta.png [12]: maze-theta.png [d]: maze-big.png Deployment The tool should be easily deployed to production servers. Both a. an automated method for compiling the sources from scratch aiming at obtaining optimized binaries for a particular host architecture should be provided using a well-established procedures, and b. one (or more) generic binary version aiming at common server architectures should be provided. Either option should be available to be downloaded from suitable online sources, either by real people and/or automated deployment scripts. As already stated, FeenoX can be compiled from its sources using the well-established configure & make procedure. The code’s source tree is hosted on Github so cloning the repository is the preferred way to obtain FeenoX, but source tarballs are periodically released too according to the requirements in sec. 4.1. There are also non-official binary .deb packages which can be installed with apt using a custom package repository location. The configuration and compilation is based on GNU Autotools that has more than thirty years of maturity and it is the most portable way of compiling C code in a wide variety of Unix variants. It has been tested with - GNU C compiler (free) - LLVM Clang compiler (free) - Intel oneAPI C compiler (privative) FeenoX depends on the four open source libraries stated in sec. 2, although the last three of them are optional. The only mandatory library is the GNU Scientific Library which is part of the GNU/Linux operating system and as such is readily available in all distributions as libgsl-dev. The sources of the rest of the optional libraries are also widely available in most common GNU/Linux distributions. In effect, doing sudo apt-get install gcc make libgsl-dev libsundials-dev petsc-dev slepc-dev is enough to provision all the dependencies needed compile FeenoX from the source tarball with the full set of features. If using the Git repository as a source, then Git itself and the GNU Autoconf and Automake packages are also needed: sudo apt-get install git autoconf automake Even though compiling FeenoX from sources is the recommended way to obtain the tool—since the target binary can be compiled using particularly suited compilation options, flags and optimizations (especially those related to MPI, linear algebra kernels and direct and/or iterative sparse solvers)–there are also tarballs and .deb packages with usable binaries for some of the most common architectures—including some non-GNU/Linux variants. These binary distributions contain statically-linked executable files that do not need any other shared libraries to be installed on the target host. However, their flexibility and efficiency is generic and far from ideal. Yet the flexibility of having an execution-ready distribution package for users that do not know how to compile C source code outweighs the limited functionality and scalability of the tool. For example, first PETSc can be built with a -Ofast flag: $ cd $PETSC_DIR $ export PETSC_ARCH=linux-fast $ ./configure --with-debug=0 COPTFLAGS="-Ofast" $ make -j8 $ cd $HOME And then not only can FeenoX be configured to use that particular PETSc build but also to use a different compiler such as Clang instead of GNU GCC and to use the same -Ofast flag to compile FeenoX itself: $ git clone https://github.com/seamplex/feenox $ cd feenox $ ./autogen.sh $ export PETSC_ARCH=linux-fast $ ./configure MPICH_CC=clang CFLAGS=-Ofast $ make -j8 # make install If one does not care about the details of the compilation, then a pre-compiled statically-linked binary can be directly downloaded very much as when downloading Gmsh: $ wget http://gmsh.info/bin/Linux/gmsh-Linux64.tgz $ wget https://seamplex.com/feenox/dist/linux/feenox-linux-amd64.tar.gz Appendix sec. 13 has more details about how to download and compile FeenoX. The full online documentation contains a compilation guide with further detailed explanations of each of the steps involved. All the commands needed to either download a binary executable or to compile from source with customized optimization flags can be automated. The repository contains a subdirectory dist with instructions and scripts to build - source tarballs - binary tarballs - Debian-compatible .deb packages This way, deployment of the solver can be customized and tweaked as needed, including creating Docker containers with a working version of FeenoX. [GNU Autotools]: https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html [GNU C compiler]: https://gcc.gnu.org/ [LLVM Clang compiler]: http://clang.org/ [Intel oneAPI C compiler]: https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html [Git]: https://git-scm.com/ [GNU Autoconf]: https://www.gnu.org/software/autoconf/ [Automake]: https://www.gnu.org/software/automake/ [compilation guide]: https://seamplex.com/feenox/doc/compilation.html [dist]: https://github.com/seamplex/feenox/tree/main/dist Execution It is mandatory to be able to execute the tool remotely, either with a direct action from the user or from a high-level workflow which could be triggered by a human or by an automated script. Since it is required for the tool to be able to be run distributed among different servers, proper means to perform this kind of remote executions should be provided. The calling party should be able to monitor the status during run time and get the returned error level after finishing the execution. The tool shall provide means to perform parametric computations by varying one or more problem parameters in a certain prescribed way such that it can be used as an inner solver for an outer-loop optimization tool. In this regard, it is desirable that the tool could compute scalar values such that the figure of merit being optimized (maximum temperature, total weight, total heat flux, minimum natural frequency, maximum displacement, maximum von Mises stress, etc.) is already available without needing further post-processing. As requested by the SRS and explained in sec. 1.2, FeenoX is a program that reads the problem to be solved at run-time and not a library that has to be linked against code that defines the problem. Since FeenoX is designed to run as - a Unix filter, or - as a transfer function between input and output files and it explicitly avoids having a graphical interface, the binary executable works as any other Unix terminal command. Moreover, as discussed in sec. 2.4, FeenoX uses the MPI standard for parallelization among several hosts. Therefore, it can be launched through the command mpiexec (or mpirun). When invoked without arguments, it prints its version (a thorough explanation of the versioning scheme is given in sec. 4.1), a one-line description and the usage options: $ feenox FeenoX v1.0.8-g731ca5d a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information -c, --check validates if the input file is sane or not --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Run with --help for further explanations. $ The program can also be executed remotely either a. on a running server through a SSH session - in serial directly invoking the feenox binary - in parallel through the mpiexec wrapper, e.g. mpiexec -n 4 feenox input.fee b. spawned by a daemon listening to a network requests, c. in a container as part of a provisioning script, d. in many other ways. As explained in the help message, FeenoX can read the input from the standard input if - is specified as the input path. This is useful in scripts where small calculations are needed, e.g. $ a=3 $ echo "PRINT 1/$a" | feenox - 0.333333 $ FeenoX provides mechanisms to inform its progress by writing certain information to devices or files, which in turn can be monitored remotely or even trigger server actions. Progress can be as simple as an ASCII bar (triggered with --progress in the command line or with the keyword PROGRESS in the input file) to more complex mechanisms like writing the status in a shared memory segment. Fig. 10 shows how the CAEplex platform shows the progress interactively in its web-based interface. [Figure 10: ASCII progress bars parsed and converted into a web-based interface] Figure 10: ASCII progress bars parsed and converted into a web-based interface Regarding its execution, there are three ways of solving problems: 1. direct execution 2. parametric runs, and 3. optimization loops. [mpiexec]: https://www.mpich.org/static/docs/v3.0.x/www1/mpiexec.html [or mpirun]: https://stackoverflow.com/questions/25287981/mpiexec-vs-mpirun [SSH]: https://en.wikipedia.org/wiki/Secure_Shell [container]: https://en.wikipedia.org/wiki/OS-level_virtualization [PROGRESS]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [CAEplex]: https://www.caeplex.com [Figure 10: ASCII progress bars parsed and converted into a web-based interface]: caeplex-progress.png Direct execution When directly executing FeenoX, one gives a single argument to the executable with the path to the main input file. For example, the following input computes the first twenty numbers of the Fibonacci sequence using the closed-form formula $$ f(n) = \frac{\varphi^n - (1-\varphi)^n}{\sqrt{5}} $$ where $\varphi=(1+\sqrt{5})/2$ is the Golden ratio: # the Fibonacci sequence using the closed-form formula as a function phi = (1+sqrt(5))/2 f(n) = (phi^n - (1-phi)^n)/sqrt(5) PRINT_FUNCTION f MIN 1 MAX 20 STEP 1 FeenoX can be directly executed to print the function f(n) for n = 1, …, 20 both to the standard output and to a file named one (because it is the first way of solving Fibonacci with Feenox): $ feenox fibo_formula.fee | tee one 1 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21 9 34 10 55 11 89 12 144 13 233 14 377 15 610 16 987 17 1597 18 2584 19 4181 20 6765 $ Now, we could also have computed these twenty numbers by using the direct definition of the sequence into a vector f⃗ of size 20. This time we redirect the output to a file named two: # the fibonacci sequence as a vector VECTOR f SIZE 20 f[i]<1:2> = 1 f[i]<3:vecsize(f)> = f[i-2] + f[i-1] PRINT_VECTOR i f $ feenox fibo_vector.fee > two $ Finally, we print the sequence as an iterative problem and check that the three outputs are the same: # the fibonacci sequence as an iterative problem static_steps = 20 #static_iterations = 1476 # limit of doubles IF step_static=1|step_static=2 f_n = 1 f_nminus1 = 1 f_nminus2 = 1 ELSE f_n = f_nminus1 + f_nminus2 f_nminus2 = f_nminus1 f_nminus1 = f_n ENDIF PRINT step_static f_n $ feenox fibo_iterative.fee > three $ diff one two $ diff two three $ These three calls were examples of direct execution of FeenoX: a single call with a single argument to solve a single fixed problem. [Fibonacci sequence]: https://en.wikipedia.org/wiki/Fibonacci_number [Golden ratio]: https://en.wikipedia.org/wiki/Golden_ratio Parametric To use FeenoX in a parametric run, one has to successively call the executable passing the main input file path in the first argument followed by an arbitrary number of parameters. These extra parameters will be expanded as string literals $1, $2, etc. appearing in the input file. For example, if hello.fee is PRINT "Hello $1!" then $ feenox hello.fee World Hello World! $ feenox hello.fee Universe Hello Universe! $ To have an actual parametric run, an external loop has to successively call FeenoX with the parametric arguments. For example, say this file cantilever.fee fixes the face called “left” and sets a load in the negative z direction of a mesh called cantilever-$1-$2.msh. The output is a single line containing the number of nodes of the mesh and the displacement in the vertical direction w(500, 0, 0) at the center of the cantilever’s free face: PROBLEM elastic 3D READ_MESH cantilever-$1-$2.msh # in meters E = 2.1e11 # Young modulus in Pascals nu = 0.3 # Poisson's ratio BC left fixed BC right tz=-1e5 # traction in Pascals, negative z SOLVE_PROBLEM # z-displacement (components are u,v,w) at the tip vs. number of nodes PRINT nodes w(500,0,0) "\# $1 $2" [a] [b] Figure 11: Cantilevered beam meshed with structured tetrahedra and hexahedra. a — Tetrahedra, b — Hexahedra Now the following Bash script first calls Gmsh to create the meshes cantilever-${element}-${c}.msh where - ${element}: tet4, tet10, hex8, hex20, hex27 - ${c}: 1,2,,10 It then calls FeenoX with the input above and passes ${element} and ${c} as extra arguments, which then are expanded as $1 and $2 respectively. #!/bin/bash rm -f *.dat for element in tet4 tet10 hex8 hex20 hex27; do for c in $(seq 1 10); do # create mesh if not already cached mesh=cantilever-${element}-${c} if [ ! -e ${mesh}.msh ]; then scale=$(echo "PRINT 1/${c}" | feenox -) gmsh -3 -v 0 cantilever-${element}.geo -clscale ${scale} -o ${mesh}.msh fi # call FeenoX feenox cantilever.fee ${element} ${c} | tee -a cantilever-${element}.dat done done After the execution of the script, thanks to the design decision (explained in sec. 3.2) that output is 100% defined by the user (in this case with the PRINT instruction), one has several files cantilever-${element}.dat files. When plotted, these show the shear locking effect of fully-integrated first-order elements as illustrated in fig. 12. The theoretical Euler-Bernoulli result is just a reference as, among other things, it does not take into account the effect of the material’s Poisson’s ratio. Note that the abscissa shows the number of nodes, which are proportional to the number of degrees of freedom (i.e. the size of the problem matrix) and not the number of elements, which is irrelevant here and in most problems. [Figure 12: Displacement at the free tip of a cantilevered beam vs. number of nodes for different element types] Figure 12: Displacement at the free tip of a cantilevered beam vs. number of nodes for different element types [13]: cantilever-tet.png [14]: cantilever-hex.png [Bash]: https://en.wikipedia.org/wiki/Bash_(Unix_shell) [PRINT]: https://www.seamplex.com/feenox/doc/feenox-manual.html#print [Euler-Bernoulli]: https://en.wikipedia.org/wiki/Euler%E2%80%93Bernoulli_beam_theory [Poisson’s ratio]: https://en.wikipedia.org/wiki/Poisson%27s_ratio [Figure 12: Displacement at the free tip of a cantilevered beam vs. number of nodes for different element types]: cantilever-displacement.svg Optimization loops Optimization loops work very much like parametric runs from the FeenoX point of view. The difference is mainly on the calling script that has to implement a certain optimization algorithm such as conjugate gradients, Nelder-Mead, simulated annealing, genetic algorithms, etc. to choose which parameters to pass to FeenoX as command-line argument. The only particularity on FeenoX’s side is that since the next argument that the optimization loop will pass might depend on the result of the current step, care has to be taken in order to be able to return back to the calling script whatever results it needs in order to compute the next arguments. This is usually just the scalar being optimized for, but it can also include other results such as derivatives or other relevant data. To illustrate how to use FeenoX in an optimization loop, let us consider the problem of finding the length ℓ₁ of a tuning fork (fig. 13) such that the fundamental frequency on a free-free oscillation is equal to the base A frequency at 440 Hz. [Figure 13: What length ℓ₁ is needed so the fork vibrates at 440 Hz?] Figure 13: What length ℓ₁ is needed so the fork vibrates at 440 Hz? This extremely simple input file (rule of simplicity sec. 11.5) solves the free-free mechanical modal problem (i.e. without any Dirichlet boundary condition) and prints the fundamental frequency: PROBLEM modal 3D MODES 1 # only one mode needed READ_MESH fork.msh # in [m] E = 2.07e11 # in [Pa] nu = 0.33 rho = 7829 # in [kg/m^2] # no BCs! It is a free-free vibration problem SOLVE_PROBLEM # write back the fundamental frequency to stdout PRINT f(1) Note that in this particular case, the FeenoX input files does not expand any command-line argument. The trick is that the mesh file fork.msh is overwritten in each call of the optimization loop. Since this time the loop is slightly more complex than in the parametric run of the last section, we now use Python. The function create_mesh() first creates a CAD model of the fork with geometrical parameters r, w, ℓ₁ and ℓ₂. It then meshes the CAD using n structured hexahedra through the fork’s thickness. Both the CAD and the mesh are created using the Gmsh Python API. The detailed steps between gmsh.initialize() and gmsh.finalize() are not shown here, just the fact that this function overwrites the previous mesh and always writes it into the file called fork.msh which is the one that fork.fee reads. Hence, there is no need to pass command-liner arguments to FeenoX. The full implementation of the function is available in the examples directory of the FeenoX distribution. import math import gmsh import subprocess # to call FeenoX and read back def create_mesh(r, w, l1, l2, n): gmsh.initialize() ... gmsh.write("fork.msh") gmsh.finalize() return len(nodes) def main(): target = 440 # target frequency eps = 1e-2 # tolerance r = 4.2e-3 # geometric parameters w = 3e-3 l1 = 30e-3 l2 = 60e-3 for n in range(1,7): # mesh refinement level l1 = 60e-3 # restart l1 & error error = 60 while abs(error) > eps: # loop l1 = l1 - 1e-4*error # mesh with Gmsh Python API nodes = create_mesh(r, w, l1, l2, n) # call FeenoX and read scalar back # TODO: FeenoX Python API (like Gmsh) result = subprocess.run(['feenox', 'fork.fee'], stdout=subprocess.PIPE) freq = float(result.stdout.decode('utf-8')) error = target - freq print(nodes, l1, freq) Since the computed frequency depends both on the length ℓ₁ and on the mesh refinement level n, there are actually two nested loops: one parametric over n = 1, 2…, 7 and the optimization loop itself that tries to find ℓ₁ so as to obtain a frequency equal to 440 Hz within 0.01% of error. $ python fork.py > fork.dat $ [Figure 14: Estimated length ℓ₁ needed to get 440 Hz for different mesh refinement levels n] Figure 14: Estimated length ℓ₁ needed to get 440 Hz for different mesh refinement levels n Note that the approach used here is to use Gmsh Python API to build the mesh and then fork the FeenoX executable to solve the fork (no pun intended). There are plans to provide a Python API for FeenoX so the problem can be set up, solved and the results read back directly from the script instead of needing to do a fork+exec, read back the standard output as a string and then convert it to a Python float. Fig. 14 shows the results of the combination of the optimization loop over ℓ₁ and a parametric run over n. The difference for n = 6 and n = 7 is in the order of one hundredth of millimeter. [conjugate gradients]: https://en.wikipedia.org/wiki/Conjugate_gradient_method [Nelder-Mead]: https://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method [simulated annealing]: https://en.wikipedia.org/wiki/Simulated_annealing [genetic algorithms]: https://en.wikipedia.org/wiki/Genetic_algorithm [Figure 13: What length ℓ₁ is needed so the fork vibrates at 440 Hz?]: fork-meshed.svg [Figure 14: Estimated length ℓ₁ needed to get 440 Hz for different mesh refinement levels n]: fork.svg Efficiency As required in the previous section, it is mandatory to be able to execute the tool on one or more remote servers. The computational resources needed from this server, i.e. costs measured in - CPU/GPU time - random-access memory - long-term storage - etc. needed to solve a problem should be comparable to other similar state-of-the-art cloud-based script-friendly finite-element tools. One of the most widely known quotations in computer science is that one that says “premature optimization is the root of all evil.” that is an extremely over-simplified version of Donald E. Knuth’s analysis in his The Art of Computer Programming. Bottom line is that the programmer should not not spend too much time trying to optimize code based on hunches but based on profiling measurements. Yet a disciplined programmer can tell when an algorithm will be way too inefficient (say something that scales up like O(n²)) and how small changes can improve performance (say by understanding how caching levels work in order to implement faster nested loops). It is also true that usually an improvement in one aspect leads to a deterioration in another one (e.g. a decrease in CPU time by caching intermediate results in an increase of RAM usage). Even though FeenoX is still evolving so it could be premature in many cases, it is informative to compare running times and memory consumption when solving the same problem with different cloud-friendly FEA programs. In effect, a serial single-thread single-host comparison of resource usage when solving the NAFEMS LE10 problem introduced above was performed, using both unstructured tetrahedral and structured hexahedral meshes. Fig. 15 shows two figures of the many ones contained in the detailed report. In general, FeenoX using the iterative approach based on PETSc’s Geometric-Algebraic Multigrid Preconditioner and a conjugate gradients solver is faster for (relatively) large problems at the expense of a larger memory consumption. The curves that use MUMPS confirm the well-known theoretical result that direct linear solvers are robust but not scalable. [a] a [b] b Figure 15: Resource consumption when solving the NAFEMS LE10 problem in the cloud for tetrahedral meshes.. a — Wall time vs. number of degrees of freedom, b — Memory vs. number of degrees of freedom Regarding storage, FeenoX needs space to store the input file (negligible), the mesh file in .msh format (which can be either ASCII or binary) and the optional output files in .msh or .vtu/.vtk formats. All of these files can be stored gzip-compressed and un-compressed on demand by exploiting FeenoX’s script-friendliness using proper calls to gzip before and/or after calling the feenox binary. [Donald E. Knuth’s]: https://en.wikipedia.org/wiki/Donald_Knuth [The Art of Computer Programming]: https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming [serial single-thread single-host comparison of resource usage when solving the NAFEMS LE10 problem]: https://seamplex.com/feenox/tests/nafems/le10/ [unstructured tetrahedral]: https://www.seamplex.com/feenox/tests/nafems/le10/report-tet.html [structured hexahedral]: https://www.seamplex.com/feenox/tests/nafems/le10/report-hex.html [15]: wall-dofs-tet.svg [16]: memory-dofs-tet.svg Scalability The tool ought to be able to start solving small problems first to check the inputs and outputs behave as expected and then allow increasing the problem size up in order to achieve to the desired accuracy of the results. As mentioned in sec. 2, large problem should be split among different computers to be able to solve them using a finite amount of per-host computational power (RAM and CPU). When for a fixed problem the mesh is refined over and over, more and more computational resources are needed to solve it (and to obtain more accurate results, of course). Parallelization can help to a. reduce the wall time needed to solve a problem by using several processors at the same time b. allow to solve big problems that would not fit into a single computer by splitting them into smaller parts, each of them fitting in a single computer There are three types of parallelization schemes: Shared-memory systems (OpenMP) several processing units sharing a single memory address space Distributed systems (MPI) several computational units, each with their own processing units and memory, inter-connected with high-speed network hardware Graphical processing units (GPU) used as co-processors to solve numerically-intensive problems In principle, any of these three schemes can be used to reduce the wall time (a). But only the distributed systems scheme allows to solve arbitrarily big problems (b). It might seem that the most effective approach to solve a large problem is to use OpenMP (not to be confused with OpenMPI!) among threads running in processors that share the memory address space and to use MPI among processes running in different hosts. But even though this hybrid OpenMP+MPI scheme is possible, there are at least three main drawbacks with respect to a pure MPI approach: i. the overall performance is not be significantly better ii. the amount of lines of code that has to be maintained is more than doubled iii. the number of possible points of synchronization failure increases In many ways, the pure MPI mode has fewer synchronizations and thus should perform better. Hence, FeenoX uses MPI (mainly through PETSc and SLEPc) to handle large parallel problems. To illustrate FeenoX’s MPI features, let us consider the following input file (which is part of FeenoX’s tests suite): PRINTF_ALL "Hello MPI World!" The instruction PRINTF_ALL (at the end of the day, it is a verb) asks all the processes to write the printf-formatted arguments in the standard output. A prefix is added to each line with the process id and the name of the host. When running FeenoX with this input file through mpiexec in an AWS server which has already been properly configured to connect to another one and split the MPI processes, we get: ubuntu@ip-172-31-44-208:~/mpi/hello$ mpiexec --verbose --oversubscribe --hostfile hosts -np 4 ./feenox hello_mpi.fee [0/4 ip-172-31-44-208] Hello MPI World! [1/4 ip-172-31-44-208] Hello MPI World! [2/4 ip-172-31-34-195] Hello MPI World! [3/4 ip-172-31-34-195] Hello MPI World! ubuntu@ip-172-31-44-208:~/mpi/hello$ That is to say,host ip-172-31-44-208 spawns two local processes feenox and, at the same time, asks host ip-172-31-34-195 to create two new processes in it. This scheme would allow to solve a problem in parallel where the CPU and RAM loads are split into two different servers. [Figure 16: Gmsh’s tutorial t21: two squares decomposed in 6 partitions.] Figure 16: Gmsh’s tutorial t21: two squares decomposed in 6 partitions. We can used Gmsh’s tutorial t21 that illustrated the concept of domain decomposition (DDM) to show another aspect of how MPI parallelization works in FeenoX. In effect, let us consider the mesh from fig. 16 that consists of two non-dimensional squares of size 1 × 1 and let us say we want to compute the integral of the constant 1 over the surface to obtain the numerical result 2. READ_MESH t21.msh INTEGRATE 1 RESULT two PRINTF_ALL "%g" two In this case, the instruction INTEGRATE is executed in parallel where each process computes the local contribution and, before moving into the next instruction (PRINTF_ALL), all processes synchronize and sum up all these contributions (i.e. they perform a sum reduction) and all the processes obtain the global result in the variable two: $ mpiexec -n 2 feenox t21.fee [0/2 tom] 2 [1/2 tom] 2 $ mpiexec -n 4 feenox t21.fee [0/4 tom] 2 [1/4 tom] 2 [2/4 tom] 2 [3/4 tom] 2 $ mpiexec -n 6 feenox t21.fee [0/6 tom] 2 [1/6 tom] 2 [2/6 tom] 2 [3/6 tom] 2 [4/6 tom] 2 [5/6 tom] 2 $ To illustrate what is happening under the hood, let us temporarily modify the FeenoX source code so that each process shows the local contribution: $ mpiexec -n 2 feenox t21.fee [process 0] my local integral is 0.996699 [process 1] my local integral is 1.0033 [0/2 tom] 2 [1/2 tom] 2 $ mpiexec -n 3 feenox t21.fee [process 0] my local integral is 0.658438 [process 1] my local integral is 0.672813 [process 2] my local integral is 0.668749 [0/3 tom] 2 [1/3 tom] 2 [2/3 tom] 2 $ mpiexec -n 4 feenox t21.fee [process 0] my local integral is 0.505285 [process 1] my local integral is 0.496811 [process 2] my local integral is 0.500788 [process 3] my local integral is 0.497116 [0/4 tom] 2 [1/4 tom] 2 [2/4 tom] 2 [3/4 tom] 2 $ mpiexec -n 5 feenox t21.fee [process 0] my local integral is 0.403677 [process 1] my local integral is 0.401883 [process 2] my local integral is 0.399116 [process 3] my local integral is 0.400042 [process 4] my local integral is 0.395281 [0/5 tom] 2 [1/5 tom] 2 [2/5 tom] 2 [3/5 tom] 2 [4/5 tom] 2 $ mpiexec -n 6 feenox t21.fee [process 0] my local integral is 0.327539 [process 1] my local integral is 0.330899 [process 2] my local integral is 0.338261 [process 3] my local integral is 0.334552 [process 4] my local integral is 0.332716 [process 5] my local integral is 0.336033 [0/6 tom] 2 [1/6 tom] 2 [2/6 tom] 2 [3/6 tom] 2 [4/6 tom] 2 [5/6 tom] 2 $ Note that in the cases with 4 and 5 processes, the number of partitions P is not a multiple of the number of processes N. Anyway, FeenoX is able to distribute the load is able to distribute the load among the N processes, even though the efficiency is slightly less than in the other cases. ::: When solving PDEs, FeenoX builds the local matrices and vectors and then asks PETSc to assemble the global objects by sending non-local information as MPI messages. This way, all processes have contiguous rows as local data and the system of equations can be solved in parallel using the distributed system paradigm. We can show that both a. the wall time, and b. the per-process memory decrease when running a fixed-sized problem with MPI in parallel using the IAEA 3D PWR benchmark: PROBLEM neutron_diffusion 3D GROUPS 2 DEFAULT_ARGUMENT_VALUE 1 quarter READ_MESH iaea-3dpwr-$1.msh MATERIAL fuel1 D1=1.5 D2=0.4 Sigma_s1.2=0.02 Sigma_a1=0.01 Sigma_a2=0.08 nuSigma_f2=0.135 MATERIAL fuel2 D1=1.5 D2=0.4 Sigma_s1.2=0.02 Sigma_a1=0.01 Sigma_a2=0.085 nuSigma_f2=0.135 MATERIAL fuel2rod D1=1.5 D2=0.4 Sigma_s1.2=0.02 Sigma_a1=0.01 Sigma_a2=0.13 nuSigma_f2=0.135 MATERIAL reflector D1=2.0 D2=0.3 Sigma_s1.2=0.04 Sigma_a1=0 Sigma_a2=0.01 nuSigma_f2=0 MATERIAL reflrod D1=2.0 D2=0.3 Sigma_s1.2=0.04 Sigma_a1=0 Sigma_a2=0.055 nuSigma_f2=0 BC vacuum vacuum=0.4692 BC mirror mirror SOLVE_PROBLEM WRITE_RESULTS FORMAT vtk PRINT "geometry = $1" PRINTF " keff = %.5f" keff PRINTF " nodes = %g" nodes PRINTF " DOFs = %g" total_dofs PRINTF " memory = %.1f Gb (local) %.1f Gb (global)" mpi_memory_local() mpi_memory_global() PRINTF " wall = %.1f sec" wall_time() $ mpiexec -n 1 feenox iaea-3dpwr.fee quarter geometry = quarter keff = 1.02918 nodes = 70779 DOFs = 141558 [0/1 tux] memory = 2.3 Gb (local) 2.3 Gb (global) wall = 26.2 sec $ mpiexec -n 2 feenox iaea-3dpwr.fee quarter geometry = quarter keff = 1.02918 nodes = 70779 DOFs = 141558 [0/2 tux] memory = 1.5 Gb (local) 3.0 Gb (global) [1/2 tux] memory = 1.5 Gb (local) 3.0 Gb (global) wall = 17.0 sec $ mpiexec -n 4 feenox iaea-3dpwr.fee quarter geometry = quarter keff = 1.02918 nodes = 70779 DOFs = 141558 [0/4 tux] memory = 1.0 Gb (local) 3.9 Gb (global) [1/4 tux] memory = 0.9 Gb (local) 3.9 Gb (global) [2/4 tux] memory = 1.1 Gb (local) 3.9 Gb (global) [3/4 tux] memory = 0.9 Gb (local) 3.9 Gb (global) wall = 13.0 sec $ [Figure 16: Gmsh’s tutorial t21: two squares decomposed in 6 partitions.]: t21.svg Flexibility The tool should be able to handle engineering problems involving different materials with potential spatial and time-dependent properties, such as temperature-dependent thermal expansion coefficients and/or non-constant densities. Boundary conditions must be allowed to depend on both space and time as well, like non-uniform pressure loads and/or transient heat fluxes. The third-system effect mentioned in sec. 2 involves more than ten years of experience in the nuclear industry,[4] where complex dependencies of multiple material properties over space through intermediate distributions (temperature, neutronic poisons, etc.) and time (control rod positions, fuel burn-up, etc.) are mandatory. One of the cornerstone design decisions in FeenoX is that everything is an expression (sec. 3.1.5). Here, “everything” means any location in the input file where a numerical value is expected. The most common use case is in the PRINT keyword. For example, the Sophomore’s dream (in contrast to Freshman’s dream) identity $$ \int_{0}^{1} x^{-x} \, dx = \sum_{n=1}^{\infty} n^{-n} $$ can be illustrated like this: VAR x PRINT %.7f integral(x^(-x),x,0,1) VAR n PRINT %.7f sum(n^(-n),n,1,1000) $ feenox sophomore.fee 1.2912861 1.2912860 $ Of course most engineering problems will not need explicit integrals—although a few of them do—but some might need summation loops, so it is handy to have these functionals available inside the FEA tool. This might seem to go against the “keep it simple” and “do one thing good” Unix principle, but definitely follows Alan Kay’s idea that “simple things should be simple, complex things should be possible” (further discussion in sec. 3.1.4). Flexibility in defining non-trivial material properties is illustrated with the following example, where two squares made of different dimensionless materials are juxtaposed in thermal contact (glued?) and subject to different boundary conditions at each of the four sides (fig. 17). [Figure 17: Two non-dimensional 1 × 1 squares each in thermal contact made of different materials.] Figure 17: Two non-dimensional 1 × 1 squares each in thermal contact made of different materials. The yellow square is made of a certain material with a conductivity that depends algebraically (and fictitiously) the temperature like $$ k_\text{yellow}(x,y) = \frac{1}{2} + T(x,y) $$ The cyan square has a space-dependent temperature given by a table of scattered data as a function of the spatial coordinates x and y (origin is left bottom corner of the yellow square) without any particular structure on the definition points: x y k_(cyan)(x, y) ----- ----- ---------------- 1 0 1.0 1 1 1.5 2 0 1.3 2 1 1.8 1.5 0.5 1.7 The cyan square generates a temperature-dependent power density (per unit area) given by q_(cyan)^(′′)(x, y) = 0.2 ⋅ T(x, y) The yellow one does not generate any power so q_(yellow)^(′′) = 0. Boundary conditions are $$ \begin{cases} T(x,y) = y & \text{at the left edge $y=0$} \\ T(x,y) = 1-\cos\left(\frac{1}{2}\pi \cdot x\right) & \text{at the bottom edge $x=0$} \\ q'(x,y) = 2-y & \text{at the right edge $x=2$} \\ q'(x,y) = 1 & \text{at the top edge $y=1$} \\ \end{cases} $$ The input file illustrate how flexible FeenoX is and, again, how the problem definition in a format that the computer can understand resembles the humanly-written formulation of the original engineering problem: PROBLEM thermal 2d # heat conduction in two dimensions READ_MESH two-squares.msh k_yellow(x,y) = 1/2+T(x,y) # thermal conductivity FUNCTION k_cyan(x,y) INTERPOLATION shepard DATA { 1 0 1.0 1 1 1.5 2 0 1.3 2 1 1.8 1.5 0.5 1.7 } q_cyan(x,y) = 1-0.2*T(x,y) # dissipated power density q_yellow(x,y) = 0 BC left T=y # temperature (dirichlet) bc BC bottom T=1-cos(pi/2*x) BC right q=2-y # heat flux (neumann) bc BC top q=1 SOLVE_PROBLEM WRITE_MESH two-squares-results.msh T #CELLS k Note that FeenoX is flexible enough to… 1. handle mixed meshes (the yellow square is meshed with triangles and the other one with quadrangles) 2. use point-wise defined properties even though there is not underlying structure nor topology for the points where the data is defined (FeenoX could have read data from a .msh or .vtk file respecting the underlying topology) 3. understand that the problem is non-linear so as to use PETSc’s SNES framework automatically (the conductivity and power source depend on the temperature). [a] a [b] b Figure 18: Temperature (main result) and conductivity for the two-squares thermal problem.. a — Temperature defined at nodes, b — Conductivity defined at cells In the very same sense that variables x, y and z appearing in the input refer to the spatial coordinates x, y and z respectively, the special variable t refers to the time t. The requirement of allowing time-dependent boundary conditions can be illustrated by solving the NAFEMS T3 one-dimensional transient heat transfer benchmark. It consists of a slab of 0.1 meters long subject to a fixed homogeneous temperature on one side, i.e. T(x = 0) = 0 °C and to a transient temperature $$ T(x=0.1~\text{m},t)=100~\text{°C} \cdot \sin\left( \frac{\pi \cdot t}{40~\text{s}}\right) $$ at the other side. There is zero internal heat generation, at t = 0 all temperature is equal to 0°C (sic) and conductivity, specific heat and density are constant and uniform. The problem asks for the temperature at location x = 0.08 m at time t = 32 s. The reference result is T(0.08 m, 32 s) = 36.60 °C. PROBLEM thermal DIM 1 # NAFEMS-T3 benchmark: 1d transient heat conduction READ_MESH slab-0.1m.msh end_time = 32 # transient up to 32 seconds T_0(x) = 0 # initial condition "all temperature is equal to 0°C" # prescribed temperatures as boundary conditions BC left T=0 BC right T=100*sin(pi*t/40) # uniform and constant properties k = 35.0 # conductivity [W/(m K)] cp = 440.5 # heat capacity [J/(kg K)] rho = 7200 # density [kg/m^3] SOLVE_PROBLEM # print detailed evolution into an ASCII file PRINT FILE nafems-t3.dat %.3f t dt %.2f T(0.05) T(0.08) T(0.1) # print the asked result into the standard output IF done PRINT "T(0.08m,32s) = " T(0.08) "ºC" ENDIF $ gmsh -1 slab-0.1m.geo [...] Info : Done meshing 1D (Wall 0.000213023s, CPU 0.000836s) Info : 61 nodes 62 elements Info : Writing 'slab-0.1m.msh'... Info : Done writing 'slab-0.1m.msh' Info : Stopped on Sun Dec 12 19:41:18 2021 (From start: Wall 0.00293443s, CPU 0.02605s) $ feenox nafems-t3.fee T(0.08m,32s) = 36.5996 ºC $ pyxplot nafems-t3.ppl $ [Figure 19: Temperature vs. time at three axial locations for the NAFEMS T3 benchmark] Figure 19: Temperature vs. time at three axial locations for the NAFEMS T3 benchmark Besides “everything is an expression,” FeenoX follows another cornerstone rule: simple problems ought to have simple inputs, akin to Unix’ rule of simplicity—that addresses the first half of Alan Kay’s quote above. This rule is further discussed in sec. 3.1. [4] This experience also shaped many of the features that FeenoX has and most of the features is does deliberately not have. [PRINT]: https://www.seamplex.com/feenox/doc/feenox-manual.html#print [Sophomore’s dream]: https://en.wikipedia.org/wiki/Sophomore%27s_dream [Freshman’s dream]: https://en.wikipedia.org/wiki/Freshman%27s_dream [Alan Kay]: https://en.wikipedia.org/wiki/Alan_Kay [Figure 17: Two non-dimensional 1 × 1 squares each in thermal contact made of different materials.]: two-squares-mesh.svg [17]: two-squares-temperature.png [18]: two-squares-conductivity.png [Figure 19: Temperature vs. time at three axial locations for the NAFEMS T3 benchmark]: nafems-t3.svg Extensibility It should be possible to add other problem types casted as PDEs (such as the Schröedinger equation) to the tool using a reasonable amount of time by one or more skilled programmers. The tool should also allow new models (such as non-linear stress-strain constitutive relationships) to be added as well. When solving partial differential equations numerically, there are some steps that are independent of the type of PDE. For example, 1. read the mesh 2. evaluate the coefficients (i.e. material properties) 3. solve the discretized systems of algebraic equations 4. write the results Even though FeenoX is written in C, it makes extensive use of function pointers to mimic C++’s virtual methods. This way, depending on the problem type given with the PROBLEM keyword, particular PDE-specific routines are called to 1. initialize and set up solver options (steady-state/transient, linear/non-linear, regular/eigenproblem, etc.) 2. parse boundary conditions given in the BC keyword 3. build elemental contributions for a. volumetric stiffness and/or mass matrices b. natural boundary conditions 4. compute secondary fields (heat fluxes, strains and stresses, etc.) out of the gradients of the primary fields 5. compute per-problem key performance indicators (min/max temperature, displacement, stress, etc.) 6. write particular post-processing outputs Indeed, each of the supported problems, namely - laplace - thermal - mechanical - modal - neutron_diffusion - neutron_sn is a separate directory under src/pdes that implements these “virtual” methods (recall that they are function pointers) that are resolved at runtime when parsing the main input file. FeenoX was designed with separated common “mathematical” routines from the particular “physical” ones in such a way that any of these directories can be removed and the code would still compile. The autogen.sh is in charge of 1. parsing the source tree 2. detect which are the available PDEs 3. create appropriate snippets of code so the common mathematical framework can resolve the function pointers for the entry points 4. build the Makefile.am templates used by the configure script For example, if we removed the directory src/pdes/thermal from a temporary clone of the main Git repository then the whole bootstrapping, configuration and compilation procedure would produce a feenox executable without the ability to solve thermal problems: ~$ cd tmp/ ~/tmp$ git clone https://github.com/seamplex/feenox Cloning into 'feenox'... remote: Enumerating objects: 6908, done. remote: Counting objects: 100% (4399/4399), done. remote: Compressing objects: 100% (3208/3208), done. remote: Total 6908 (delta 3085), reused 2403 (delta 1126), pack-reused 2509 Receiving objects: 100% (6908/6908), 10.94 MiB | 6.14 MiB/s, done. Resolving deltas: 100% (4904/4904), done. ~/tmp$ cd feenox ~/tmp/feenox$ rm -rf src/pdes/thermal/ ~/tmp/feenox$ ./autogen.sh creating Makefile.am... ok creating src/Makefile.am... ok calling autoreconf... configure.ac:18: installing './compile' configure.ac:15: installing './config.guess' configure.ac:15: installing './config.sub' configure.ac:17: installing './install-sh' configure.ac:17: installing './missing' parallel-tests: installing './test-driver' src/Makefile.am: installing './depcomp' done ~/tmp/feenox$ ./configure.sh [...] configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating doc/Makefile config.status: executing depfiles commands ~/tmp/feenox$ make [...] make[1]: Leaving directory '/home/gtheler/tmp/feenox' ~/tmp/feenox$ Now if we wanted to run the thermal problem with the two juxtaposed squares from sec. 2.5 above, the “temporary” FeenoX would complain. But it would still be able solve the NAFEMS LE10 problem problem right away: ~/tmp/feenox$ cd doc/ ~/tmp/feenox/doc$ ../feenox two-squares.fee error: two-squares.fee: 1: unknown problem type 'thermal' ~/tmp/feenox/doc$ cd ../examples ~/tmp/feenox/examples$ ../feenox nafems-le10.fee sigma_y @ D = -5.38367 MPa ~/tmp/feenox/examples$ The list of available PDEs that a certain FeenoX binary has can be found by using the --pdes option. They are sorted alphabetically, one type per line: ~/tmp/feenox/examples$ feenox --pdes laplace mechanical modal neutron_diffusion ~/tmp/feenox/examples$ Besides removals, additions—which are also handled by autogen.sh as describe above—are far more interesting to discuss. Additional elliptic problems can be added by using the laplace directory as a template while using the other directories as examples about how to add further features (e.g. a Robin-type boundary condition in thermal and a vector-valued unknown in mechanical). More information can be found in the FeenoX programming & contributing section. As already discussed in sec. 1, FeenoX is free-as-in-freedom software licensed under the terms of the GNU General Public License version 3 or, at the user convenience, any later version. In the particular case of additions to the code base, this fact has two implications. i. Every person in the world is free to modify FeenoX to suit their needs, including adding a new problem type either by a. using one of the existing ones as a template, or b. creating a new directory from scratch without asking anybody for any kind of permission. In case this person does not how to program, he or she has the freedom to hire somebody else to do it. It is this the sense of the word “free” in the compound phrase “free software:” freedom to do what they think fit (except to make it non-free, see next bullet). ii. People adding code own the copyright of the additional code. Yet, if they want to distribute the modified version they have to do it also under the terms of the GPLv3+ and under a name that does not induce the users to think the modified version is the original FeenoX distribution.[5] That is to say, free software ought to remain free—a.k.a. as copyleft. Regarding additional material models, the virtual methods that compute the elemental contributions to the stiffness matrix also use function pointers to different material models (linear isotropic elastic, orthotropic elastic, etc.) and behaviors (isotropic thermal expansion, orthotropic thermal expansion, etc.) that are resolved at run time. Following the same principle, new models can be added by adding new routines and resolving them depending on the user’s input. [5] Even better, these authors should ask to merge their contributions into FeenoX’s main code base. [C]: https://en.wikipedia.org/wiki/C_(programming_language) [function pointers]: https://en.wikipedia.org/wiki/Function_pointer [C++]: https://en.wikipedia.org/wiki/C%2B%2B [virtual methods]: https://en.wikipedia.org/wiki/Virtual_function [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [laplace]: https://github.com/seamplex/feenox/tree/main/src/pdes/laplace [thermal]: https://github.com/seamplex/feenox/tree/main/src/pdes/thermal [mechanical]: https://github.com/seamplex/feenox/tree/main/src/pdes/mechanical [modal]: https://github.com/seamplex/feenox/tree/main/src/pdes/modal [neutron_diffusion]: https://github.com/seamplex/feenox/tree/main/src/pdes/neutron_difussion [neutron_sn]: https://github.com/seamplex/feenox/tree/main/src/pdes/neutron_sn [src/pdes]: https://github.com/seamplex/feenox/tree/main/src/pdes [NAFEMS LE10 problem]: https://www.seamplex.com/feenox/examples/#nafems-le10-thick-plate-pressure-benchmark [FeenoX programming & contributing]: https://www.seamplex.com/feenox/doc/#programming-and-contributing [free-as-in-freedom]: https://en.wikipedia.org/wiki/Free_as_in_Freedom [GNU General Public License]: https://www.gnu.org/licenses/gpl-3.0 [copyleft]: https://en.wikipedia.org/wiki/Copyleft Interoperability A mean of exchanging data with other computational tools complying to requirements similar to the ones outlined in this document. This includes pre and post-processors but also other computational programs so that coupled calculations can be eventually performed by efficiently exchanging information between calculation codes. Sec. 1.2 already introduced the ideas about interoperability behind the Unix philosophy which make up for most the the FeenoX design basis. Essentially, they sum up to “do only one thing but do it well.” Since FeenoX is filter (or a transfer-function), interoperability is a must. So far, this SDS has already shown examples of exchanging information with: - Kate (with syntax highlighting): fig. 3 - Gmsh (both as a mesher and a post-processor): figs. 8, 9, 11, 13, 17, 18 - Paraview: fig. 4 - Gnuplot: figs. 6, 15 - Pyxplot: figs. 12, 14, 19 To illustrate this approach, consider the following input file that solves Laplace’s equation ∇²ϕ = 0 on a square with some space-dependent boundary conditions. Either Gmsh or Paraview can be used to post-process the results: $$ \begin{cases} \phi(x,y) = +y & \text{for $x=-1$ (left)} \\ \phi(x,y) = -y & \text{for $x=+1$ (right)} \\ \nabla \phi \cdot \hat{\vec{n}} = \sin\left(\frac{\pi}{2} \cdot x\right) & \text{for $y=-1$ (bottom)} \\ \nabla \phi \cdot \hat{\vec{n}} =0 & \text{for $y=+1$ (top)} \\ \end{cases} $$ PROBLEM laplace 2d READ_MESH square-centered.msh # [-1:+1]x[-1:+1] # boundary conditions BC left phi=+y BC right phi=-y BC bottom dphidn=sin(pi/2*x) BC top dphidn=0 SOLVE_PROBLEM # same output in .msh and in .vtk formats WRITE_MESH laplace-square.msh phi VECTOR dphidx dphidy 0 WRITE_MESH laplace-square.vtk phi VECTOR dphidx dphidy 0 [a] [b] Figure 20: Laplace’s equation solved with FeenoX. a — Post-processed with Gmsh, b — Post-processed with Paraview A great deal of FeenoX interoperability capabilities comes from another design decision: output is 100% controlled by the user (further discussed in sec. 3.2), a.k.a. “no PRINT, no OUTPUT” whose corollary is the Unix rule of silence (sec. 11.11). The following input file computes the natural frequencies of oscillation of a cantilevered wire both using the Euler-Bernoulli theory and finite elements. It writes a Gihub-formatted markdown table into the standard output which is then piped to Pandoc and then converted to HTML: # compute the first five natural modes of a cantilever wire # see https://www.seamplex.com/docs/alambre.pdf (in Spanish) # (note that there is a systematic error of a factor of two in the measured values) # see https://www.seamplex.com/feenox/examples/modal.html#five-natural-modes-of-a-cantilevered-wire # for a slightly more complex example # wire geometry l = 0.5*303e-3 # [ m ] cantilever length d = 1.948e-3 # [ m ] diameter # material properties for copper mass = 0.5*8.02e-3 # [ kg ] total mass (half the measured because of the experimental disposition) volume = pi*(0.5*d)^2*l rho = mass/volume # [ kg / m^3 ] density = mass (measured) / volume E = 2*66.2e9 # [ Pa ] Young modulus (twice because the factor-two error) nu = 0 # Poisson’s ratio (does not appear in Euler-Bernoulli) # compute analytical solution # first compute the first five roots ok cosh(kl)*cos(kl)+1 VECTOR kl[5] kl[i] = root(cosh(t)*cos(t)+1, t, 3*i-2,3*i+1) # then compute the frequencies according to Euler-Bernoulli # note that we need to use SI inside the square root A = pi * (d/2)^2 I = pi/4 * (d/2)^4 VECTOR f_euler[5] f_euler[i] = 1/(2*pi) * kl(i)^2 * sqrt((E * I)/(rho * A * l^4)) # now compute the modes numerically with FEM # note that each mode is duplicated as it is degenerated PROBLEM modal 3D MODES 10 READ_MESH wire-hex.msh BC fixed fixed SOLVE_PROBLEM # write a github-formatted markdown table comparing the frequencies PRINT " \$n\$ | FEM | Euler | Relative difference [%]" PRINT ":----:+:------:+:-----:+:-----------------------:" PRINT_VECTOR SEP " | " %g i %.4g f(2*i-1) f_euler %.2f 100*(f_euler(i)-f(2*i-1))/f_euler(i) PRINT PRINT ": Comparison of analytical and numerical frequencies, in Hz" $ gmsh -3 wire-hex.geo [...] $ feenox wire.fee | pandoc
Comparison of analytical and numerical frequencies, in Hz
n FEM Euler Relative difference [%]
1 45.84 45.84 0.02
2 287.1 287.3 0.06
3 803.4 804.5 0.13
4 1573 1576 0.24
5 2596 2606 0.38
$ Of course these kind of FeenoX-generated tables can be inserted verbatim into Markdown documents (just like this one) and rendered as tbl. 1. n FEM Euler Relative difference [%] --- ------- ------- ------------------------- 1 45.84 45.84 0.02 2 287.1 287.3 0.06 3 803.4 804.5 0.13 4 1573 1576 0.24 5 2596 2606 0.38 : Table 1: Comparison of analytical and numerical frequencies, in Hz [a] a [b] b Figure 21: Results of the same fatigue problem solved using two different philosophies.. a — A multi-billion-dollar agency using the Windows philosophy (presumably mouse-based copy and pasted into Word), b — A small third-world consulting company using the Unix philosophy (FeenoX+AWK+LaTeX) It should be noted that all of the programs and tools mentioned to be interoperable with FeenoX are free and open source software. This is not a requirement from the SRS, but is indeed a nice-to-have feature. [Kate]: https://kate-editor.org/ [Gmsh3]: http://gmsh.info/ [Paraview]: https://www.paraview.org/ [Gnuplot6]: http://gnuplot.info/ [Pyxplot]: http://www.pyxplot.org.uk/ [19]: laplace-square-gmsh [20]: laplace-square-paraview [PRINT]: https://www.seamplex.com/feenox/doc/feenox-manual.html#print [Gihub-formatted markdown table]: https://github.github.com/gfm/#tables-extension- [Pandoc]: https://pandoc.org/ [21]: nureg.png [22]: cne.png [free and open source software]: https://en.wikipedia.org/wiki/Free_and_open-source_software Interfaces The tool should be able to allow remote execution without any user intervention after the tool is launched. To achieve this goal it is required that the problem should be completely defined in one or more input files and the output should be complete and useful after the tool finishes its execution, as already required. The tool should be able to report the status of the execution (i.e. progress, errors, etc.) and to make this information available to the user or process that launched the execution, possibly from a remote location. FeenoX is provided as a console-only executable (recall it is a program, not a library) which can be run remotely through the mechanisms discussed in sec. 2.2 without any requirement such as graphical servers or special input devices. As already explained, when executed without any arguments, FeenoX writes a brief message with the version (further discussed in sec. 4.1) and the basic usage on the standard output and return to the calling shell with a return errorlevel zero: $ feenox FeenoX v0.3.292-gc932cb5 a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Run with --help for further explanations. $ echo $? 0 $ The --version option follows the GNU Coding Standards guidelines: $ feenox --version FeenoX v0.3.292-gc932cb5 a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool Copyright © 2009--2024 https://seamplex.com/feenox GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ The --versions option shows more information about the FeenoX build and the libraries the binary was linked against: $ feenox -V FeenoX v1.0.8-g731ca5d a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool Last commit date : Wed Mar 20 08:11:05 2024 -0300 Build date : Wed Mar 20 16:38:10 2024 -0300 Build architecture : linux-gnu x86_64 Compiler version : gcc (Debian 12.2.0-14) 12.2.0 Compiler expansion : gcc -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich Compiler flags : -O3 -flto=auto -no-pie Builder : gtheler@tom GSL version : 2.7.1 SUNDIALS version : N/A PETSc version : Petsc Development GIT revision: v3.20.5-935-g78ad52f83fb GIT Date: 2024-03-25 05:31:58 +0000 PETSc arch : arch-linux-c-debug PETSc options : --download-eigen --download-hdf5 --download-hypre --download-metis --download-mumps --download-parmetis --download-scalapack --download-slepc --with-64-bit-indices=no --with-debugging=yes --with-precision=double --with-scalar-type=real PETSC_ARCH=arch-linux-c-debug SLEPc version : SLEPc Development GIT revision: v3.20.1-36-g7a35a7b97 GIT Date: 2023-12-02 02:30:03 -0600 $ The --help option gives a more detailed usage: $ feenox --help usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information -c, --check validates if the input file is sane or not --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear --progress print ASCII progress bars when solving PDEs --mumps ask PETSc to use the direct linear solver MUMPS Instructions will be read from standard input if “-” is passed as inputfile, i.e. $ echo 'PRINT 2+2' | feenox - 4 The optional [replacement arguments] part of the command line mean that each argument after the input file that does not start with an hyphen will be expanded verbatim in the input file in each occurrence of $1, $2, etc. For example $ echo 'PRINT $1+$2' | feenox - 3 4 7 PETSc and SLEPc options can be passed in [petsc options] (or [options]) as well, with the difference that two hyphens have to be used instead of only once. For example, to pass the PETSc option -ksp_view the actual FeenoX invocation should be $ feenox input.fee --ksp_view For PETSc options that take values, en equal sign has to be used: $ feenox input.fee --mg_levels_pc_type=sor See https://www.seamplex.com/feenox/examples for annotated examples. Report bugs at https://github.com/seamplex/feenox/issues Ask questions at https://github.com/seamplex/feenox/discussions Feenox home page: https://www.seamplex.com/feenox/ $ The input file provided as the first argument to the feenox binary contains all the information needed to solve the problem, so any further human intervention is not needed after execution begins, as requested by the SRS. If the execution finishes successfully, FeenoX returns a zero errorlevel to the calling shell (and follows the Unix rule of silence, i.e. no PRINT no output): $ feenox maze.fee $ echo $? 0 $ If there is problem during execution (including parsing and run-time errors), a line prefixed with error: is written into the standard error file descriptor and a non-zero errorlevel is returned: $ feenox hello.fee error: input file needs at least one more argument in commandline $ echo $? 1 $ feenox hello.fee world Hello world! $ echo $? 0 $ This way, the error line can easily be parsed with standard Unix tools like grep and cut or with a proper regular expression parser. Eventually, any error should be forwarded back to the initiating entity—which depending on the workflow can be a human or an automation script—in order for her/him/it to fix it. Following the rule of repair (sec. 11.12), ill-defined input files with missing material properties or inconsistent boundary conditions are detected before the actual assembly of the matrix begins: $ feenox thermal-1d-dirichlet-no-k.fee error: undefined thermal conductivity 'k' $ feenox thermal-1d-dirichlet-wrong-bc.fee error: boundary condition 'xxx' does not have a physical group in mesh file 'slab.msh' $ Error code are designed to be useful and helpful. An attempt to open a file might fail due to a wide variety of reasons. FeenoX clearly states which one caused the error so it can be remedied: $ cat test.fee READ_MESH cantilever.msh $ feenox test.fee $ chmod -r cantilever.msh $ feenox test.fee error: 'Permission denied' when opening file 'cantilever.msh' with mode 'r' $ rm cantilever.msh $ feenox test.fee error: 'No such file or directory' when opening file 'cantilever.msh' with mode 'r' $ If the command-line option --progress (or the PROGRESS keyword in PROBLEM) is used, then FeenoX writes into the standard output three “bars” showing the progress of 1. (.) the build and assembly of the problem matrices (stiffness and mass if applicable) 2. (-) the iterative solution of the problem (either linear or non-linear) 3. (=) the recovery of gradient-based (i.e. strains and stresses) out of the primary solution $ gmsh -3 nafems-le10.geo Info : Running 'gmsh -3 nafems-le10.geo' [Gmsh 4.9.4-git-10d6a15fd, 1 node, max. 1 thread] Info : Started on Sat Feb 5 11:26:39 2022 Info : Reading 'nafems-le10.geo'... Info : Reading 'nafems-le10.step'... Info : - Label 'Shapes/Open CASCADE STEP translator 7.6 1' (3D) Info : Done reading 'nafems-le10.step' Info : Done reading 'nafems-le10.geo' Info : Meshing 1D... [...] Info : Done optimizing mesh (0.106654 s) Info : Done optimizing high-order mesh (0.106654 s) Info : Done optimizing mesh (Wall 0.114461s, CPU 0.114465s) Info : 50580 nodes 40278 elements Info : Writing 'nafems-le10.msh'... Info : Done writing 'nafems-le10.msh' Info : Stopped on Sat Feb 5 11:26:40 2022 (From start: Wall 1.08693s, CPU 1.1709s) $ feenox nafems-le10.fee --progress ............................................................................................. --------------------------------------------------------------------------------------------- ============================================================================================= sigma_y @ D = -5.38228 MPa $ Once again, these ASCII-based progress bars can be parsed by the calling entity and then present it back to the user. For example, fig. 10 shows how the web-based GUI CAEplex shows progress inside an Onshape tab. Since FeenoX uses PETSc (and SLEPc), command-line options can be passed from FeenoX to PETSc. The only difference is that since FeenoX follows the POSIX standard regarding options and PETSc does not, double dashes are required instead of PETSc’ single-dash approach. That is to say, instead of -ksp_monitor one would have to pass --ksp_monitor (see sec. 3.1.3 for details about the input files): $ feenox thermal-1d-dirichlet-uniform-k.fee --ksp_monitor 0 KSP Residual norm 1.913149816332e+00 1 KSP Residual norm 2.897817223901e-02 2 KSP Residual norm 3.059845525572e-03 3 KSP Residual norm 1.943995979588e-04 4 KSP Residual norm 7.418444674938e-06 5 KSP Residual norm 1.233527903582e-07 0.5 $ Any PETSc command-line option takes precedence over the settings in the input file, so the pre-conditioner can be changed even if explicitly given with the PRECONDITIONER keyword: $ feenox thermal-1d-dirichlet-uniform-k.fee --ksp_monitor --pc_type=ilu 0 KSP Residual norm 2.678619047193e+00 1 KSP Residual norm 7.172418823644e-16 0.5 $ If PETSc is compiled with MUMPS, FeenoX provides a --mumps option: $ feenox thermal-1d-dirichlet-uniform-k.fee --ksp_monitor --mumps 0 KSP Residual norm 1.004987562109e+01 1 KSP Residual norm 4.699798436762e-15 0.5 $ An illustration of the usage of PETSc arguments and the fact that FeenoX automatically detects whether a problem is linear or not is given below. The case thermal-1d-dirichlet-uniform-k.fee is linear while the two-squares.fee from section sec. 2.5 is not. Therefore, an SNES monitor should give output for the latter but not for the former. In effect: $ feenox thermal-1d-dirichlet-uniform-k.fee --snes_monitor 0.5 $ feenox two-squares.fee --snes_monitor 0 SNES Function norm 9.658033489479e+00 1 SNES Function norm 1.616559951959e+00 2 SNES Function norm 1.879821597500e-01 3 SNES Function norm 2.972104258103e-02 4 SNES Function norm 2.624028350822e-03 5 SNES Function norm 1.823396478825e-04 6 SNES Function norm 2.574514225532e-05 7 SNES Function norm 2.511975376809e-06 8 SNES Function norm 4.230090605033e-07 9 SNES Function norm 5.154440365087e-08 $ As already explained in sec. 2.2.2, FeenoX supports run-time replacement arguments that get replaced verbatim in the input file. This feature is handy when the same problem has to be solved over different meshes, such as when investigating the h-convergence order over Gmsh’s element scale factor -clscale: PROBLEM thermal 1D READ_MESH slab-$1.msh k(x) = 1+T(x) BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT nodes %+.2e integral((T(x)-(sqrt(1+(3*x))-1))^2,x,0,1) $ for c in $(feenox steps.fee); do gmsh -v 0 -1 slab.geo -clscale ${c} -o slab-${c}.msh; feenox thermal-1d-dirichlet-temperature-k-parametric.fee ${c}; done | sort -g 11 +6.50e-07 13 +3.15e-07 14 +2.29e-07 15 +1.70e-07 17 +1.00e-07 20 +5.04e-08 24 +2.34e-08 32 +7.19e-09 39 +3.46e-09 49 +1.31e-09 $ Since the main input file is the first argument (not counting POSIX options starting with at least one dash), FeenoX might be invoked indirectly by adding a shebang line to the input file with the location of the system-wide executable and setting execution permissions on the input file itself. So if we modify the above hello.fee example as hello #!/usr/local/bin/feenox PRINT "Hello $1!" and then we can do $ chmod +x hello $ ./hello world Hello world! $ ./hello universe Hello universe! $ For example, the following she-banged input file can be used to compute the derivative of a column with respect to the other as a Unix filter: #!/usr/local/bin/feenox FUNCTION f(t) FILE - INTERPOLATION steffen a = vecmin(vec_f_t) b = vecmax(vec_f_t) # time step from arguments (or default 10 steps) DEFAULT_ARGUMENT_VALUE 1 (b-a)/10 h = $1 VAR t' f'(t) = derivative(f(t'),t',t) PRINT_FUNCTION f' MIN a+0.5*h MAX b-0.5*h STEP h $ feenox f.fee "sin(t)" 1 | ./derivative.fee 0.05 0.998725 0.15 0.989041 0.25 0.968288 0.35 0.939643 0.45 0.900427 0.55 0.852504 0.65 0.796311 0.75 0.731216 0.85 0.66018 0.95 0.574296 $ where f.fee is a “command-line function generator”: end_time = $2 PRINT t $1 [GNU Coding Standards guidelines]: https://www.gnu.org/prep/standards/standards.html#g_t_002d_002dversion [PRINT]: https://www.seamplex.com/feenox/doc/feenox-manual.html#print [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [shebang]: https://en.wikipedia.org/wiki/Shebang_%28Unix%29 [compute the derivative of a column with respect to the other as a Unix filter]: https://seamplex.com/feenox/examples/basic.html#computing-the-derivative-of-a-function-as-a-unix-filter Problem input The problem should be completely defined by one or more input files. These input files might be a. particularly formatted files to be read by the tool in an ad-hoc way, and/or b. source files for interpreted languages which can call the tool through and API or equivalent method, and/or c. any other method that can fulfill the requirements described so far. Preferably, these input files should be plain ASCII files in order to allow to manage changes using distributed version control systems such as Git. If the tool provides an API for an interpreted language such as Python, then the Python source used to solve a particular problem should be Git-friendly. It is recommended not to track revisions of mesh data files but of the source input files, i.e. to track the mesher’s input and not the mesher’s output. Therefore, it is recommended not to mix the problem definition with the problem mesh data. It is not mandatory to include a GUI in the main distribution, but the input/output scheme should be such that graphical pre and post-processing tools can create the input files and read the output files so as to allow third parties to develop interfaces. It is recommended to design the workflow as to make it possible for the interfaces to be accessible from mobile devices and web browsers. It is expected that 80% of the problems need 20% of the functionality. It is acceptable if only basic usage can be achieved through the usage of graphical interfaces to ease basic usage at first. Complex problems involving non-trivial material properties and boundary conditions not be treated by a GUI and only available by needing access to the input files. FeenoX currently works by reading an input file (which in turn can recursively INCLUDE further input files) with an ad-hoc format, whose rationale is described in this section. Therefore, it already does satisfy requirement a. but, eventually, could also satisfy requirement b. by adding a wrapper for high-level languages such as - Python - Julia - R that would either i. create an input file and run FeenoX in the back, or ii. successively call the FeenoX functions that define definitions and execute instructions (to be done). As already explained in sec. 1, the motto is “FeenoX is—in a certain sense—to desktop FEA programs and libraries what Markdown is to Word and (La)TeX, respectively and deliberately.” Hence, the input files act as the Markdown source: instructions about what to do but not how to do it. The input files are indeed plain-text ASCII files with English-like keywords that fully define the problem. The main features of the input format, thoroughly described below, are: 1. It is syntactically sugared by using English-like keywords. 2. Nouns are definitions and verbs are instructions. 3. Simple problems need simple inputs. 4. Simple things should be simple, complex things should be possible. 5. Whenever a numerical value is needed an expression can be given (i.e. “everything is an expression.”) 6. The input file should match as much as possible the paper (or blackboard) formulation of the problem. 7. It provides means to compare numerical solutions against analytical ones. 8. It should be possible to read run-time arguments from the command line. 9. Input files are distributed version control-friendly. [INCLUDE]: https://www.seamplex.com/feenox/doc/feenox-manual.html#include [syntactically sugared]: https://en.wikipedia.org/wiki/Syntactic_sugar [distributed version control]: https://en.wikipedia.org/wiki/Distributed_version_control Syntactic sugar & highlighting The ultimate goal of FeenoX is to solve mathematical equations that are hard to solve with pencil and paper. In particular, to integrate differential equations (recall that the first usable computer was named ENIAC, which stands for Electronic Numerical Integrator and Computer). The input file format was designed as to how to ask the computer what to compute. The syntax, based on keywords and alphanumerical arguments was chosen as to sit in the middle of the purely binary numerical system employed by digital computers[6] and the purely linguistical nature of human communication. The rationale behind its design is that an average user can peek a FeenoX input file and tell what it is asking the computer to compute, as already illustrated for the NAFEMS LE10 problem in fig. 3. Even if the input files are created by a computer and not by a human, the code used to create a human-friendly input file will be human-friendlier than a code that writes only zeroes and ones as its output (that will become the input of another one following the Unix rule of composition sec. 11.3). As an exercise, compare the input file in fig. 3 (or in fig. 22) with the inputs files used by other open source FEA solvers shown in appendix sec. 14. The first argument not starting with a dash to the feenox executable is the path to the main input file. This main input file can in turn include other FeenoX input files (with the INCLUDE keyword) and/or read data from other files (such as meshes with the READ_MESH instruction) or other resources (such as data files for point-wise data interpolation with FUNCTION or shared memory objects TBD). For instance, the test directory includes some spinning-disk cases that compare the analytical solution for the hoop and radial stresses with the numerical ones obtained with FeenoX. These cases read the radius R and thickness t from the .geo file used by Gmsh to build the mesh in the first place: # analytical solution INCLUDE spinning-disk-dimensions.geo S_h(r) = ((3+nu)*R^2 - (1+3*nu)*r^2) S_r(r) = (3+nu) * (R^2 - r^2) where spinning-disk-dimensions.geo is R = 0.1; t = 0.003; The input files are plain text files, either pure ASCII or UTF-8 (more details in sec. 3.1.9). In principle any extension (even no extension) can be used for the FeenoX input files. Throughout the FeenoX repository and documentation the extension .fee is used, which has a couple of advantages: 1. The .fee extension is detected by syntax-highlighting extensions for common editors (both graphical such as Kate and cloud-friendly such as Vim) as illustrated in fig. 22. 2. The expression $0 (or ${0}) is expanded to the base name of the input file, i.e. the directory part (if present) is removed and the .fee extension is removed. Therefore, READ_MESH $0.msh would read a mesh file whose name is the same as the FeenoX input file, without the .fee extension. [a] [b] Figure 22: Syntax highlighting of input files in GUI and cloud-friendly text editors. a — Kate, b — Vim [6] Analog and quantum computers are out of the scope. [ENIAC]: https://en.wikipedia.org/wiki/ENIAC [NAFEMS LE10 problem]: https://www.seamplex.com/feenox/examples/#nafems-le10-thick-plate-pressure-benchmark [INCLUDE]: https://www.seamplex.com/feenox/doc/feenox-manual.html#include [READ_MESH]: https://www.seamplex.com/feenox/doc/feenox-manual.html#read_mesh [FUNCTION]: https://www.seamplex.com/feenox/doc/feenox-manual.html#function [test directory]: https://github.com/seamplex/feenox/tree/main/tests [spinning-disk cases]: https://github.com/seamplex/feenox/blob/main/tests/spinning-disk-parallel-solid-half.fee [Kate]: https://kate-editor.org/ [Vim]: https://www.vim.org/ [23]: highlighting-kate.png [24]: highlighting-vim.png Definitions and instructions The way to tell the computer what problem it has to solve and how to solve it is by using keywords in the input file. Each non-commented line of the input file should start with either i. a primary keyword such as PROBLEM or READ_MESH, or ii. a variable such as end_time or a vector or matrix with the corresponding index(es) such as v[2] or A[i][j] followed by the = keyword, or iii. a function name with its arguments such as f(x,y) followed by the = keyword. A primary keyword usually is followed by arguments and/or secondary keywords, which in turn can take arguments as well. For example, in PROBLEM mechanical DIMENSIONS 3 READ_MESH $0.msh [...] # print the direct stress y at D (and nothing more) PRINT "σ_y @ D = " sigmay(2000,0,300) "MPa" we have PROBLEM acting as a primary keyword, taking mechanical as its first argument and then DIMENSIONS as a secondary keyword with 3 being an argument to the secondary keyword. Then READ_MESH is another primary keyword taking $0.msh (which would be expanded to something like nafems-le10.msh) as its argument. A primary keyword can be 1. a definition, 2. an instruction, or 3. both. Definitions are English nouns and instructions are English verbs. In the example above, PROBLEM is a definition because it tells FeenoX about something it has to do (i.e. that it has to solve a three-dimensional problem), but does not do anything actually. On the other hand, READ_MESH is both a definition and an instruction: it defines that there exists a mesh named nafems-le10.msh which might be referenced later (for example in an INTEGRATE or WRITE_MESH instructions), but it also asks FeenoX to read the mesh at that point of the instruction list (more details below). Finally, PRINT is a primary keyword taking different types and number or arguments. It is an instruction because it does not define anything, it just asks FeenoX to print the value of the function named sigmay evaluated at 2000, 0, 300. In this case, sigmay is a function which is implicitly defined when PROBLEM is set to mechanical. If sigmay was referenced before PROBLEM, FeenoX would not find it. And if the problem was of any other type, FeenoX would not find it even when referenced from the last line of the input file. The following example further illustrates the differences between definitions and instructions. It compares the result of (numerically but adaptively) integrating f(x, y, z) = sin (x³ + y² + z) over a unit cube against using a 3D Gauss integration scheme over a fixed set of quadrature points on the same unit cube meshes with two regular hexahedra in each direction (totaling 8 hexahedra). In one case hex20 are used and in the other one, hex27. Both cases use 27 quadrature points per element. # these two are instructions to read a two meshes # but they also define two mesh names that can be referred to later READ_MESH hex20.msh DIM 3 READ_MESH hex27.msh DIM 3 # these three lines are definitions, they define three functions # the first two also define four vectors for each function # 1. vec_f20_x and vec_f27_x with the x coordinates of the mesh' nodes # 2. vec_f20_y and vec_f27_y with the y coordinates of the mesh' nodes # 3. vec_f20_z and vec_f27_z with the z coordinates of the mesh' nodes # 4. vec_f20 and vec_f27 with the value of the function at the i-th node # these definitions do not evaluate the functions, but they fill vectors 1-3 # (we'll fill vectors 4 below) # note that these definitions refer to the meshes defined above in READ_MESH FUNCTION f20(x,y,z) MESH hex20.msh FUNCTION f27(x,y,z) MESH hex27.msh f(x,y,z) = sin(x^3 + y^2 + z) # these two lines are assignment instructions, they "fill" in # the vectors with the value of the functinos f20(x,y,z) and f27(x,y,z) # by evaluating f(x,y,z) at the nodes of the two meshes # (there is a implicit loop for the index i over the size of the vectors) vec_f20[i] = f(vec_f20_x[i], vec_f20_y[i], vec_f20_z[i]) vec_f27[i] = f(vec_f27_x[i], vec_f27_y[i], vec_f27_z[i]) # this line is an assignment, that first defines a variable If0 # and then calls the functional integral three times to perform a # "continuous" (in the sense that it is numeric but adaptive) triple integration If0 = integral(integral(integral(f(x,y,z), z, 0, 1), y, 0, 1), x, 0, 1) # these two lines are instructions, they integrate functions f20 and f27 over # each of the meshes and then they store the results in the (implicitly defined) # variables If20 and If27 INTEGRATE f20 MESH hex20.msh RESULT If20 INTEGRATE f27 MESH hex27.msh RESULT If27 # these lines are instructions, they print stuff to the standard output # nothing is defined PRINT %.10f If0 PRINT %.10f If20 %+.2e If20-If0 PRINT %.10f If27 %+.2e If27-If0 $ $ feenox integral_over_hex.fee 0.7752945175 0.7753714586 +7.69e-05 0.7739155101 -1.38e-03 $ [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [READ_MESH]: https://www.seamplex.com/feenox/doc/feenox-manual.html#read_mesh [end_time]: https://www.seamplex.com/feenox/doc/feenox-manual.html#end_time [INTEGRATE]: https://www.seamplex.com/feenox/doc/feenox-manual.html#integrate [WRITE_MESH]: https://www.seamplex.com/feenox/doc/feenox-manual.html#write_mesh [PRINT]: https://www.seamplex.com/feenox/doc/feenox-manual.html#print Simple inputs Consider solving heat conduction on a one-dimensional slab spanning the unitary range x ∈ [0, 1]. The slab has a uniform unitary conductivity k = 1 and Dirichlet boundary conditions $$ \begin{cases} T(0) &= 0 \\ T(1) &= 1 \end{cases} $$ This simple problem has the following simple input: PROBLEM thermal 1D # tell FeenoX what we want to solve READ_MESH slab.msh # read mesh in Gmsh's v4.1 format k = 1 # set uniform conductivity BC left T=0 # set fixed temperatures as BCs BC right T=1 # "left" and "right" are defined in the mesh SOLVE_PROBLEM # tell FeenoX we are ready to solve the problem PRINT T(0.5) # ask for the temperature at x=0.5 $ feenox thermal-1d-dirichlet-uniform-k.fee 0.5 $ Now, if instead of having a uniform conductivity the problem had a space-dependent k(x) = 1 + x then the input would read PROBLEM thermal 1D READ_MESH slab.msh k(x) = 1+x # space-dependent conductivity BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT T(1/2) log(1+1/2)/log(2) # print numerical and analytical solutions $ feenox thermal-1d-dirichlet-space-k.fee 0.584893 0.584963 $ Finally, if the conductivity depended on temperature (rendering the problem non-linear) say like k(x) = 1 + T(x) then PROBLEM thermal 1D READ_MESH slab.msh k(x) = 1+T(x) # temperature-dependent conductivity BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT T(1/2) sqrt(1+(3*0.5))-1 # print numerical and analytical solutions $ feenox thermal-1d-dirichlet-space-k.fee 0.581139 0.581139 $ Note that FeenoX could figure out by itself that the two first cases were linear while the last one was not. This can be verified by passing the extra argument --snes_view. In the first two cases, there will be no extra output. In the last one, the details of the non-linear solver used by PETSc will be written into the standard output. The experienced reader should take some time to compare the effort and level of complexity that other FEA solvers require in order to set up simple problems like these. A discussion of the difference between linear and non-linear problems can be found in the heat conduction tutorial. [non-linear]: https://seamplex.com/feenox/doc/tutorials/320-thermal/#non-linear-state-state-problems Complex things Alan Kay’s idea that “simple things should be simple, complex things should be possible” has already been mentioned in sec. 2.5. The first part of the quote was addressed in the previous section. Of course, complexity can scale up almost indefinitely so we cannot show an example right here. But the following repositories contain the scripts and input files (for Gmsh, FeenoX and other common Unix tools such as Sed and Awk) that solve non-trivial problems using FeenoX as the main tool and employing free and open source software only, both for the computation and for the creation of figures and result tables. - Convergence study on stress linearization of an infinite pipe according to ASME: a parametric study over the number of elements through the thickness of a pipe and the error committed when computing membrane and bending stresses according to ASME VIII Div 2 Sec 5. The study uses the following element types - unstructured tet4 - unstructured straight tet10 - unstructured curved tet10 - structured straight tet10 - structured curved tet10 - structured hex8 - structured straight hex20 - structured curved hex20 - structured straight hex27 - structured curved hex27 The linearized stresses for different number of elements through the pipe thickness are compared against the analytical solution. Figures with the meshes employed in each case and with plots of profiles vs. the radial coordinate and linearized stresses vs. number of elements through the thickness are created. - Environmentally-assisted fatigue analysis of dissimilar material interfaces in piping systems of a nuclear power plant: a case that studies environmentally-assisted fatigue using environment factors applied to traditional in-air ASME fatigue analysis for operational an incidental transients in nuclear power plant as propose by EPRI. A fictitious CAD geometry representing a section of a piping system is studied. Four operational transients are made up with time-dependent data for pressure and water temperature. 1. A transient heat conduction problem with temperature-dependent material properties (according to ASME property tables) are solved over a small region around a material interface between carbon and stainless steel. 2. Primary stresses according to ASME are computed for each of the operational transients. 3. The results of a modal analysis study are convoluted with a frequency spectrum of a design-basis earthquake using the SRSS method to obtain an equivalent static volumetric force distribution. 4. The time-dependent temperature distribution for each transient is then used in quasi-static mechanical problems to compute secondary stresses according to ASME, including the equivalent seismic loads at the moment of higher thermal stresses. 5. The history of linearized Tresca stresses are juxtaposed to compute the cumulative usage factors using the ASME peak-valley method. 6. Environmental data is used to affect each cumulative usage factors with an environment factor to account for in-water conditions. These repositories contain a run.sh that, when executed in a properly-set-up GNU/Linux host (either on premises or in the cloud), will perform a number of steps including - creation of appropriate meshes - execution FeenoX - generation post-processing views, plots or tables with the results - etc. Refer to the READMEs in each repository for further details about the mathematical models involved. [Alan Kay]: https://en.wikipedia.org/wiki/Alan_Kay [Convergence study on stress linearization of an infinite pipe according to ASME]: https://github.com/seamplex/pipe-linearize [Environmentally-assisted fatigue analysis of dissimilar material interfaces in piping systems of a nuclear power plant]: https://github.com/seamplex/piping-asme-fatigue Everything is an expression As explained in the history of FeenoX (sec. 12), the first objective of the code was to solve ODEs written in an ASCII file as human-friendly as possible. So even before any other feature, the first thing the FeenoX ancestors had was an algebraic parser and evaluator. This was back in 2009, and I performed an online search before writing the whole thing from scratch. I found a nice post in Slack Overflow[7] that discussed some cool ideas and even had some code published under the terms of the Creative Commons license. Besides ODEs, algebraic expressions are a must if one will be dealing with arbitrary functions in general and spatial distributions in particular—which is essentially what PDE solvers are for. If a piece of software wants to allow features ranging from comparing numerical results with analytical expression to converting material properties from a system of units to another one in a straightforward way for the user (either an actual human being or a computer creating an input file), it ought to be able to handle algebraic expressions. Appropriately handling algebraic expressions leads to fulfilling the Unix rule of least surprise (sec. 11.10). If the user needs to define a function f(x) = 1/2 ⋅ x², all she has to do is write f(x) = 1/2 * x^2 And conversely, if someone reads the line above, she can rest assure that there’s a function called f(x) that will evaluate to 1/2 ⋅ x² when needed. In effect, anyone can expect the output of this instruction PRINT integral(f(x), x, 0, 1) to be one third. Of course, expressions are needed to get 100%-user defined output (further discussed in sec. 3.2), as with the PRINT instruction above. But once an algebraic parser and evaluator is available, it does not make sense to keep force the user to write numerical data only. What if a the angular speed is in RPM and the model needs it in radians per second? Instead of having to write 104.72, FeenoX allows the user to write w = 1000 * 60*pi/180 This way, 1. it is easy to see what the speed in RPM is 2. precision is not lost 3. should the speed change, it is trivial to change the 1000 for anything else. Whenever an input keyword needs a numerical value, any expression will do: n = 3 VECTOR x SIZE 2+n x[i] = i^2 PRINT x $ feenox vector_size_one_plus_n.fee 1 4 9 16 25 $ It goes without saying that algebraic expressions are a must when defining transient and/or space-dependent boundary conditions for PDEs: PROBLEM thermal 1D READ_MESH slab.msh end_time = 10 k = 1 kappa = 0.1 FUNCTION f(t) DATA { 0 0 1 1 2 1 3 2 4 0 10 0 } BC left T=f(t) w = 0.5*pi BC right T=1+sin(w*t) SOLVE_PROBLEM PRINT t T(0) T(0.5) T(1) Besides purely algebraic expressions, FeenoX can handle point-wise defined functions which can then be used in algebraic expressions. A useful example is allowing material properties (e.g. Young modulus) to depend on temperature. Consider a simple plane-strain square [−1, +1] × [−1, +1] fixed on one side and with a uniform tension in the opposite one while leaving the other two free. The square’s Young modulus depends on temperature according to a one-dimensional point-wise defined function E_(carbon)(T) given by pairs stated according to one of the many material properties tables from ASME II and interpolated using Steffen’s method. Although in this example the temperature is given as an algebraic expression of space, in particular T(x, y) [ºC] = 200 + 350 ⋅ y PROBLEM mechanical plane_strain READ_MESH square-centered.msh # [-1:+1]x[-1:+1] # fixed at left, uniform traction in the x direction at right BC left fixed BC right tx=50 # ASME II Part D pag. 785 Carbon steels with C<=0.30% FUNCTION E_carbon(temp) INTERPOLATION steffen DATA { -200 216 -125 212 -75 209 25 202 100 198 150 195 200 192 250 189 300 185 350 179 400 171 450 162 500 151 550 137 } # known temperature distribution # (we could have read it from an output of a thermal problem) T(x,y) := 200 + 350*y # Young modulus is the function above evaluated at the local temperature E(x,y) := E_carbon(T(x,y)) # uniform Poisson's ratio nu = 0.3 SOLVE_PROBLEM WRITE_MESH mechanical-square-temperature.vtk E VECTOR u v 0 By replacing T(x,y) = 200 + 350*y with T(x,y) = 200 we can compare the results of the temperature-dependent case with the uniform-properties case (fig. 23): $ feenox mechanical-square-temperature.fee $ diff mechanical-square-temperature.fee mechanical-square-uniform.fee 29c29 < T(x,y) := 200 + 350*y --- > T(x,y) := 200 38c38 < WRITE_MESH mechanical-square-temperature.vtk E VECTOR u v 0 --- > WRITE_MESH mechanical-square-uniform.vtk E VECTOR u v 0 $ feenox mechanical-square-uniform.fee $ [a] [b] Figure 23: Mechanical plane-strain square with temperature-dependent Young modulus and comparison with uniform reference case.. a — Temperature-dependent E, b — Uniform E for reference In real applications this distribution T(x, y) can be read from the output of an actual heat conduction problem. See sec. 3.2.2 for a revisit of this case, reading the temperature from an unstructured triangular mesh instead of hard-coding it as an algebraic expression of space. So remember, in FeenoX everything is an expression—especially temperature, as also shown in the next section. [7] http://stackoverflow.com/questions/1384811/code-golf-mathematical-expression-evaluator-that-respects-pemdas [PRINT]: https://www.seamplex.com/feenox/doc/feenox-manual.html#print [25]: mechanical-square-temperature.png [26]: mechanical-square-uniform.png Matching formulations The Lorenz’ dynamical system system and the NAFEMS LE10 benchmark problem, both discussed earlier in sec. 1.2, illustrate how well the FeenoX input file matches the usual human-readable formulation of ODE or PDE problems. In effect, fig. 3 shows there is a trivial one-to-one correspondence between the sections of the problem formulated in a sheet of paper and the text file nafems-le10.fee. The same effect can be seen in the NAFEMS LE11 problem, which involves a temperature distribution given as an algebraic expression of x⃗: Let us consider the NAFEMS LE11 benchmark problem titled “Solid cylinder/taper/sphere-temperature” stated in fig. 24. It consists of an axi-symmetrical geometry subject to thermal loading by a temperature distribution given by an algebraic expression. The material properties are linear, orthotropic and uniform. The boundary conditions prescribe symmetries in all directions. [Figure 24: Formulation of the NAFEMS LE11 problem.] Figure 24: Formulation of the NAFEMS LE11 problem. - Loading - Linear temperature gradient in the radial an axial direction T(x, y, z) [ºC] = (x² + y²)^(1/2) + z - Boundary conditions - Symmetry on x-z plane, i.e. zero y-displacement - Symmetry on y-z plane, i.e. zero x-displacement - Face on x-y plane zero z-displacement - Face HIH′I′ zero z-displacement - Material properties - Isotropic, E = 210 × 10³ MPa, ν = 0.3 - Thermal expansion coefficient α = 2.3 × 10⁻⁴ ºC⁻¹ - Output - Direct stress σ_(zz) at point A To solve this problem, we can use the following FeenoX input file that exactly matches the human-readable formulation: PROBLEM mechanical READ_MESH $0.msh # linear temperature gradient in the radial and axial direction T(x,y,z) = (x^2 + y^2)^(1/2) + z # Boundary conditions BC xz symmetry BC yz symmetry BC xy w=0 BC HIH'I' w=0 # material properties (isotropic & uniform so we can use scalar constants) E = 210e3*1e6 # mesh is in meters, so E=210e3 MPa -> Pa nu = 0.3 # dimensionless alpha = 2.3e-4 # in 1/ºC as in the problem SOLVE_PROBLEM WRITE_RESULTS FORMAT vtk PRINT "sigma_z(A) =" sigmaz(0,1,0)/1e6 "MPa (target was -105 MPa)" SEP " " $ time feenox nafems-le11.fee sigma_z(A) = -105.041 MPa (target was -105 MPa) real 0m1.766s user 0m1.642s sys 0m0.125s [a] [b] Figure 25: The NAFEMS LE11 problem results. a — Problem statement, b — Structured hex mesh [Figure 26: The NAFEMS LE11 problem statement and the corresponding FeenoX input] Figure 26: The NAFEMS LE11 problem statement and the corresponding FeenoX input This feature can be better appreciated by comparing the input files needed to solve these kind of NAFEMS benchmarks with other finite-element tools. Sec. 14 gives a glimpse for the NAFEMS LE10 problem, where the input files are way too cryptic and cumbersome as compared to what FeenoX needs. [Lorenz’ dynamical system]: http://en.wikipedia.org/wiki/Lorenz_system [NAFEMS LE10]: https://www.nafems.org/publications/resource_center/p18/ [Figure 24: Formulation of the NAFEMS LE11 problem.]: nafems-le11-problem.png [27]: nafems-le11-temperature.png [28]: nafems-le11-sigmaz.png [Figure 26: The NAFEMS LE11 problem statement and the corresponding FeenoX input]: nafems-le11-problem-input.svg Comparison of solutions One cornerstone design feature is that FeenoX has to provide a way to compare its numerical results with other already-know solutions—either analytical or numerical—in order to verify their validity. Indeed, being able to take the difference between the numerical result and an algebraic expression evaluated at arbitrary locations (usually quadrature points to compute~L_(p) norms of the error) is a must if code verification is required. Let us consider a one-dimensional slab reactor with uniform macroscopic cross sections $$ \begin{aligned} \Sigma_t &= 0.54628~\text{cm}^{-1} \\ \Sigma_s &= 0.464338~\text{cm}^{-1} \\ \nu\Sigma_f &= 1.70 \cdot 0.054628~\text{cm}^{-1} \end{aligned} $$ such that, if computed with neutron transport theory, is exactly critical with a width of a = 2 ⋅ 10.371065 cm. Just to illustrate a simple case, we can solve it using the diffusion approximation with zero flux at both as. This case has an analytical solution for both the effective multiplication factor $$ k_\text{eff} = \frac{\nu\Sigma_f}{(\Sigma_t - \Sigma_s) + D \cdot \left(\frac{\pi}{a} \right)^2} $$ and the flux distribution $$ \phi(x) = \frac{\pi}{2} \cdot \sin\left(\frac{x}{a} \cdot \pi\right) $$ provided the diffusion coefficient D is defined as $$ D = \frac{1}{3 \cdot \Sigma_t} $$ We can solve both the numerical and analytical problems in FeenoX, and more importantly, we can subtract them at any point of space we want: PROBLEM neutron_diffusion 1D READ_MESH slab-UD20-1-0-SL.msh a = 2 * 10.371065 # critical size of the problem UD20-1-0-SL (number 22 report Los Alamos) Sigma_t1 = 0.54628 Sigma_s1.1 = 0.464338 nuSigma_f1 = 1.70*0.054628 D1 = 1/(3*Sigma_t1) # null scalar flux at both ends of the slab BC left null BC right null SOLVE_PROBLEM # analytical effective multiplication factor (diffusion approximation) keff_diff = nuSigma_f1/((Sigma_t1-Sigma_s1.1) + D1*(pi/a)^2) # analytical normalized flux distribution (diffusion approximation) phi_diff(x) = pi/2 * sin(x/a * pi) PRINT_FUNCTION FORMAT %+.3f phi1 phi_diff phi1(x)-phi_diff(x) HEADER PRINT TEXT "\# keff = " %.8f keff PRINT TEXT "\# kdiff = " %.8f keff_diff PRINT TEXT "\# rel error = " %+.2e (keff-keff_diff)/keff $ feenox neutron-diffusion-1d-null.fee # x phi1 phi_diff phi1(x)-phi_diff(x) +0.000 +0.000 +0.000 +0.000 +10.371 +1.574 +1.571 +0.003 +20.742 +0.000 +0.000 -0.000 +1.474 +0.348 +0.348 +0.001 +2.829 +0.654 +0.653 +0.001 +4.074 +0.911 +0.909 +0.002 +5.217 +1.118 +1.116 +0.002 +6.268 +1.280 +1.277 +0.002 +7.233 +1.399 +1.397 +0.003 +8.120 +1.483 +1.480 +0.003 +8.935 +1.537 +1.534 +0.003 +9.683 +1.565 +1.562 +0.003 +11.059 +1.565 +1.562 +0.003 +11.807 +1.537 +1.534 +0.003 +12.622 +1.483 +1.480 +0.003 +13.509 +1.399 +1.397 +0.003 +14.474 +1.280 +1.277 +0.002 +15.525 +1.118 +1.116 +0.002 +16.668 +0.911 +0.909 +0.002 +17.913 +0.654 +0.653 +0.001 +19.268 +0.348 +0.348 +0.001 # keff = 0.96774162 # kdiff = 0.96797891 # rel error = -2.45e-04 $ Something similar could have been done for two groups of energy, although the equations get a little bit more complex so we leave it as an example in the Git repository. A notable non-trivial thermo-mechanical problem that nevertheless has an analytical solution for the displacement field is the “Parallelepiped whose Young’s modulus is a function of the temperature” (fig. 27). The problem consists of finding the non-dimensional temperature T and displacements u, v and w distributions within a solid parallelepiped of length ℓ whose base is a square of h × h. The solid is subject to heat fluxes and to a traction pressure at the same time. The non-dimensional Young’s modulus E of the material depends on the temperature T in a know algebraically way, whilst both the Poisson coefficient ν and the thermal conductivity k are uniform and do not depend on the spatial coordinates: $$ \begin{aligned} E(T) &= \frac{1000}{800-T} \\ \nu &= 0.3 \\ k &= 1 \end{aligned} $$ [Figure 27: Parallelepiped whose Young’s modulus is a function of the temperature. Original figure from v7.03.100.pdf] Figure 27: Parallelepiped whose Young’s modulus is a function of the temperature. Original figure from v7.03.100.pdf The thermal boundary conditions are - Temperature at point A at (ℓ, 0, 0) is zero - Heat flux q^(′′) through x = ℓ is +2 - Heat flux q^(′′) through x = 0 is -2 - Heat flux q^(′′) through y = h/2 is +3 - Heat flux q^(′′) through y = −h/2 is -3 - Heat flux q^(′′) through z = h/2 is +4 - Heat flux q^(′′) through z = −h/2 is -4 The mechanical boundary conditions are - Point O at (0, 0, 0) is fixed - Point B at (0, h/2, 0) is restricted to move only in the y direction - Point C at (0, 0, /h2) cannot move in the x direction - Surfaces x = 0 and x = ℓ are subject to an uniform normal traction equal to one The analytical solution is $$ \begin{aligned} T(x,y,z) &= -2x -3y -4z + 40 \\ u(x,y,z) &= \frac{A}{2} \cdot\left[x^2 + \nu\cdot\left(y^2+z^2\right)\right] + B\cdot xy + C\cdot xz + D\cdot x - \nu\cdot \frac{Ah}{4} \cdot \left(y+z\right) \\ v(x,y,z) &= -\nu\cdot \left[A\cdot x y + \frac{B}{2} \cdot \left(y^2-z^2+\frac{x^2}{\nu}\right) + C\cdot y z + D\cdot y -A\cdot h/4\cdot x - C\cdot h/4\cdot z\right] \\ w(x,y,z) &= -\nu\cdot \left[A\cdot x z + B\cdot yz + C/2\cdot \left(z^2-y^2+\frac{x^2}{\nu}\right) + D\cdot z + \frac{Ch}{4} \cdot y - \frac{Ah}{4} \cdot x\right] \\ \end{aligned} $$ where~A = 0.002, B = 0.003, C = 0.004 and~D = 0.76. The reference results are the temperature at points O and D and the displacements at points A and D (tbl. 2}. Point Unknown Reference value ------- --------- ----------------- O T +40.0 D T -35.0 A u +15.6 v -0.57 w -0.77 D u +16.3 v -1.785 w -2.0075 : Table 2: Reference results the original benchmark problem First, the thermal problem is solved with FeenoX and the temperature distribution T(x, y, z) is written into a .msh file. PROBLEM neutron_diffusion 1D READ_MESH slab-UD20-1-0-SL.msh a = 2 * 10.371065 # critical size of the problem UD20-1-0-SL (number 22 report Los Alamos) Sigma_t1 = 0.54628 Sigma_s1.1 = 0.464338 nuSigma_f1 = 1.70*0.054628 D1 = 1/(3*Sigma_t1) # null scalar flux at both ends of the slab BC left null BC right null SOLVE_PROBLEM # analytical effective multiplication factor (diffusion approximation) keff_diff = nuSigma_f1/((Sigma_t1-Sigma_s1.1) + D1*(pi/a)^2) # analytical normalized flux distribution (diffusion approximation) phi_diff(x) = pi/2 * sin(x/a * pi) PRINT_FUNCTION FORMAT %+.3f phi1 phi_diff phi1(x)-phi_diff(x) HEADER PRINT TEXT "\# keff = " %.8f keff PRINT TEXT "\# kdiff = " %.8f keff_diff PRINT TEXT "\# rel error = " %+.2e (keff-keff_diff)/keff Then, the mechanical problem reads two meshes: one for solving the actual mechanical problem and another one for reading T(x, y, z) from the previous step. Note that the former contains second-order hexahedra and the latter first-order tetrahedra. After effectively solving the problem, it writes again tbl. 2 in Markdown. [“Parallelepiped whose Young’s modulus is a function of the temperature”]: https://www.seamplex.com/feenox/examples/#parallelepiped-whose-youngs-modulus-is-a-function-of-the-temperature [v7.03.100.pdf]: http://www.code-aster.org/V2/doc/default/fr/man_v/v7/v7.03.100.pdf [Figure 27: Parallelepiped whose Young’s modulus is a function of the temperature. Original figure from v7.03.100.pdf]: parallelepiped.svg Run-time arguments The usage of run-time command-line arguments was illustrated in sec. 2.2.2. The idea is that if the expression $n (or ${n}) is found in the input file, the FeenoX parser expands the expression literally as the n-th non-optional argument in the command line. The case n = 0 is particular in the sense that, as explained in sec. 3.1.1, expands to the name of the input file without the leading directory path and the trailing extension .fee. The definition DEFAULT_ARGUMENT_VALUE can be used to give a default value for arguments not provided. otherwise, FeenoX would complain: $ echo "PRINT \$1" | feenox - error: input file needs at least one more argument in commandline $ echo -e "DEFAULT_ARGUMENT_VALUE 1 hello\nPRINT \$1" | feenox - hello $ This feature is extensively used in parametric and optimization runs such as in the verification using the Method of Manufactured solutions: # MMS data, set T_mms(x) and k_mms(x) as desired T_mms(x,y) = 1 + sin(2*x)^2 * cos(3*y)^2 k_mms(x,y) = 1 + x - 0.5*y READ_MESH square-$2-$3-$4.msh DIMENSIONS 2 PROBLEM thermal DEFAULT_ARGUMENT_VALUE 1 dirichlet # BCs = dirichlet/neumann DEFAULT_ARGUMENT_VALUE 2 tri3 # shape = tri3/tri6/quad4/quad8/quad9 DEFAULT_ARGUMENT_VALUE 3 struct # algorithm = struct/frontal/delaunay DEFAULT_ARGUMENT_VALUE 4 8 # refinement factor = 1/2/3/4... DEFAULT_ARGUMENT_VALUE 5 0 # write vtk? = 0/1 # read the results of the symbolic derivatives INCLUDE thermal-square-q.fee # set the PDE coefficients and BCs we just read above k(x,y) = k_mms(x,y) q(x,y) = q_mms(x,y) # set the BCs (depending on $1) INCLUDE thermal-square-bc-$1.fee SOLVE_PROBLEM # this line should be self-explanatory # output PHYSICAL_GROUP bulk DIM 2 h = sqrt(bulk_area/cells) # L-2 error INTEGRATE (T(x,y)-T_mms(x,y))^2 RESULT e_2 error_2 = sqrt(e_2) # L-inf error FIND_EXTREMA abs(T(x,y)-T_mms(x,y)) MAX error_inf PRINT %.6f log(h) log(error_inf) log(error_2) %g $4 cells nodes %.2f 1024*memory() wall_time() IF $5 WRITE_MESH thermal-square_$1-$2-$3-$4.vtk T q T_mms T(x,y)-T_mms(x,y) ENDIF which is called from a Bash loop that looks like bcs="dirichlet neumann" elems="tri3 tri6 quad4 quad8 quad9" algos="struct frontal delaunay" cs="4 6 8 10 12 16 20 24 30 36 48" [...] for bc in ${bcs}; do for elem in ${elems}; do for algo in ${algos}; do [...] for c in ${cs}; do name="thermal_square_${bc}-${elem}-${algo}-${c}" # prepare mesh if [ ! -e square-${elem}-${algo}-${c}.msh ]; then lc=$(echo "PRINT 1/${c}" | feenox -) gmsh -v 0 -2 square.geo ${elem}.geo ${algo}.geo -clscale ${lc} -o square-${elem}-${algo}-${c}.msh fi # run feenox feenox thermal-square.fee ${bc} ${elem} ${algo} ${c} ${vtk} | tee -a ${dat}.dat done [...] done done done The full script can be found in tests/mms/thermal2d/2d/run.sh. In the input file above, the instruction WRITE_MESH with an explicit file name was given WRITE_MESH thermal-square_$1-$2-$3-$4.vtk T q T_mms T(x,y)-T_mms(x,y) because non-standard output fields are needed (namely T_mms and T(x,y)-T_mms(x,y)). If the WRITE_RESULTS is used without and explicit FILE keyword, the output file name is the basename of the input file and the expansion of all the arguments in the command line, i.e. $0-[$1-[$2...]].msh. The study “Comparison of resource consumption for different FEA programs” also performs a parametric run on the mesh size using similar ideas. [DEFAULT_ARGUMENT_VALUE]: https://www.seamplex.com/feenox/doc/feenox-manual.html#default_argument_value [verification using the Method of Manufactured solutions]: https://github.com/seamplex/feenox/tree/main/tests/mms [tests/mms/thermal2d/2d/run.sh]: https://github.com/seamplex/feenox/blob/main/tests/mms/thermal/2d/run.sh [WRITE_MESH]: https://www.seamplex.com/feenox/doc/feenox-manual.html#write_mesh [WRITE_RESULTS]: https://www.seamplex.com/feenox/doc/feenox-manual.html#write_results [“Comparison of resource consumption for different FEA programs”]: https://github.com/seamplex/feenox/tree/main/tests/nafems/le10 Git and macro-friendliness The FeenoX input files as plain ASCII files by design. This means that they can be tracked with Git or any other version control system so as to allow reliable traceability of computations. Along with the facts that FeenoX interacts well with a. Gmsh, that can either use ASCII input files as well or be used as an API from C, C++, Python and Julia, and b. Other scripting languages such as Bash, Python or even AWK, whose input files are ASCII files as well, makes it possible to track a whole computation using FeenoX as a Git repository, as already exemplified in sec. 3.1.4. It is important to note that what files that should be tracked in Git include 1. READMEs and documentation in Markdown 2. Shell scripts 3. Gmsh input files and/or scripts 4. FeenoX input files Files that should not be tracked include 1. Documentation in HTML or PDF 2. Mesh files 3. VTU/VTK and result files since in principle they could be generated from the files in the Git repository by executing the scripts, Gmsh and/or FeenoX. Even more, in some cases, the FeenoX input files—following the Unix rule of generation sec. 11.14–can be created out of generic macros that create particular cases. For example, say one has a mesh of a fin-based dissipator where all the surfaces are named surf_1_i for i = 1, ..., 26. All of them will have a convection boundary condition while surface number 6 is the one that is attached to the electronic part that has to be cooled. Instead of having to “manually” giving the list of surfaces that have the convection condition, we can use M4 to do it for us: PROBLEM thermal 3d READ_MESH fins.msh include(forloop.m4) BC convection h=10 Tref=-5 forloop(i, 1, 5, `PHYSICAL_GROUP "surf_1_`'i"' ) forloop(i, 7, 26, `PHYSICAL_GROUP "surf_1_`'i"' ) BC surf_1_6 q=1000 k = 237 SOLVE_PROBLEM WRITE_MESH fins.vtk T Note that since FeenoX was born in Unix, we can pipe the output of m4 to FeenoX directly by using - as the input file in the command line: $ m4 fins.fee.m4 | feenox - $ Fig. 28 confirms that all the faces have the right boundary conditions: face number six got the power BC and all the rest got the convection BC. [Figure 28: Temperature distribution in a fin dissipator where all the faces have a convection BC except one that has a fixed heat flux of q″ = 1, 000W ⋅ m⁻².] Figure 28: Temperature distribution in a fin dissipator where all the faces have a convection BC except one that has a fixed heat flux of q″ = 1, 000W ⋅ m⁻². Besides being ASCII files, should special characters be needed for any reason within a particular application of FeenoX, UTF-8 characters can be used natively as illustrated in fig. 29. [a] [b] Figure 29: Special characters in Kate and in Bash.. a — UTF-8 in Kate, b — UTF-8 in Bash (through Konsole) [Figure 28: Temperature distribution in a fin dissipator where all the faces have a convection BC except one that has a fixed heat flux of q″ = 1, 000W ⋅ m⁻².]: fins-temp.png [29]: utf8-kate.png [30]: utf8-shell.png Results output The output ought to contain useful results and should not be cluttered up with non-mandatory information such as ASCII art, notices, explanations or copyright notices. Since the time of cognizant engineers is far more expensive than CPU time, output should be easily interpreted by either a human or, even better, by other programs or interfaces—especially those based in mobile and/or web platforms. Open-source formats and standards should be preferred over privative and ad-hoc formatting to encourage the possibility of using different workflows and/or interfaces. The output in FeenoX is 100% user defined, i.e. everything that FeenoX writes comes from one of the following output instructions: - PRINT - PRINTF - PRINT_FUNCTION - PRINT_VECTOR - WRITE_MESH - WRITE_RESULTS - DUMP In the absence of any of these instructions, FeenoX will not write anything. Not in the standard output, not in any other file. Nothing (Unix rule of silence, sec. 11.11). ------------------------------------------------------------------------ Computer Monthly Rental Relative First Speed Delivery ----------------- -------------------------- ------------- ------------- CDC 3800 $ 50,000 1 Jan 66 CDC 6600 $ 80,000 6 Sep 64 CDC 6800 $ 85,000 20 Jul 67 GE 635 $ 55,000 1 Nov 64 IBM 360/62 $ 58,000 1 Nov 65 IBM 360/70 $ 80,000 2 Nov 65 IBM 360/92 $ 142,000 20 Nov 66 PHILCO 213 $ 78,000 2 Sep 65 UNIVAC 1108 $ 45,000 2 Aug 65 ------------------------------------------------------------------------ : Table 3: Relative speed is expressed with reference to IBM 7030. Data for computers expected to appear after 1965 was estimated. This is a sound design decision that follows the Unix rules of silence and, more importantly, of economy. In effect, more than fifty years ago CPU time was far more expensive than engineering time (tbl. 3). At that time, engineering programs had to write everything they computed because it was too expensive to re-run the calculation in case a single result was missing. Nowadays the engineering time is far more expensive than CPU time. Therefore, the time needed for the user to find and process a single result in a soup of megabytes of a cluttered output file far outweighs the cost of running a computation from scratch with the needed result as the only output. Especially if the expensive engineers are smart enough to set up the problem using a coarse mesh and run the actual fine execution only after having checked everything works as expected. The input file from the tensile-test tutorial illustrates this idea: only 8 lines are needed to define and solve the problem (including the instructions SOLVE_PROBLEM and COMPUTE_REACTION) and almost twice as much instructions for getting the required output as needed (mostly PRINTs and one WRITE_RESULTS): PROBLEM mechanical # self-descriptive READ_MESH tensile-test.msh # lengths are in mm # material properties, E and nu are "special" variables for the mechanical problem E = 200e3 # [ MPa = N / mm^2 ] nu = 0.3 # boundary conditions, fixed and Fx are "special" keywords for the mechanical problem # the names "left" and "right" should match the physical names in the .geo BC left fixed BC right Fx=10e3 # [ N ] # we can now solve the problem, after this keyword the results will be available for output SOLVE_PROBLEM # essentially we are done by now, we have to write the expected results # 1. a VTK file to be post-processed in ParaView with # a. the displacements [u,v,w] as a vector # b. the von Mises stress sigma as a scalar # c. the six components of the stress tensor as six scalars WRITE_MESH tensile-test.vtk VECTOR u v w sigma sigmax sigmay sigmaz tauxy tauyz tauzx PRINT "1. post-processing view written in tensile-test.vtk" # 2. the displacement vector at the center of the specimen PRINT "2. displacement in x at origin: " u(0,0,0) "[ mm ]" PRINT " displacement in y at (0,10,0): " v(0,10,0) "[ mm ]" PRINT " displacement in z at (0,0,2.5):" w(0,0,2.5) "[ mm ]" # 3. the principal stresses at the center PRINT "3. principal stresses at origin: " %.4f sigma1(0,0,0) sigma2(0,0,0) sigma3(0,0,0) "[ MPa ]" # 4. the reaction at the left surface COMPUTE_REACTION left RESULT R_left PRINT "4. reaction at left surface: " R_left "[ N ]" # 5. stress concentrations at a sharp edge PRINT "5. stress concentrations at x=55, y=10, z=2.5 mm" PRINT "von Mises stress:" sigma(55,10,2.5) "[ MPa ]" PRINT "Tresca stress:" sigma1(55,10,2.5)-sigma3(55,10,2.5) "[ MPa ]" PRINT "stress tensor:" PRINT %.1f sigmax(55,10,2.5) tauxy(55,10,2.5) tauzx(55,10,2.5) PRINT %.1f tauxy(55,10,2.5) sigmay(55,10,2.5) tauyz(55,10,2.5) PRINT %.1f tauzx(55,10,2.5) tauyz(55,10,2.5) sigmaz(55,10,2.5) Moreover, when solving PDEs, FeenoX will be also smart enough not to compute quantities which are not going to be written anywhere. For example, if the input file does not reference the principal stress sigma1 (or WRITE_RESULTS does not ask for it) then FeenoX will not compute it. [PRINT]: https://www.seamplex.com/feenox/doc/feenox-manual.html#print [PRINTF]: https://www.seamplex.com/feenox/doc/feenox-manual.html#printf [PRINT_FUNCTION]: https://www.seamplex.com/feenox/doc/feenox-manual.html#print_function [PRINT_VECTOR]: https://www.seamplex.com/feenox/doc/feenox-manual.html#print_vector [WRITE_MESH]: https://www.seamplex.com/feenox/doc/feenox-manual.html#write_mesh [WRITE_RESULTS]: https://www.seamplex.com/feenox/doc/feenox-manual.html#write_results [DUMP]: https://www.seamplex.com/feenox/doc/feenox-manual.html#dump [tensile-test tutorial]: https://www.seamplex.com/feenox/doc/tutorials/110-tensile-test/ [SOLVE_PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#solve_problem [COMPUTE_REACTION]: https://www.seamplex.com/feenox/doc/feenox-manual.html#compute_reaction Output formats With the ASCII output to standard output (and other text files) controlled with PRINT-like instructions, YAML or JSON outputs can be easily implemented within the input file itself. For example, DEFAULT_ARGUMENT_VALUE 1 "hello world" phi = (1+sqrt(5))/2 PRINTF "a: %.3f" 1/3 PRINT TEXT "phi:" phi SEP " " PRINT message: ${1} SEP " " would give $ feenox yaml.fee | tee test.yaml | yq . { "a": 0.333, "phi": 1.61803, "message": "hello world" } $ cat test.yaml a: 0.333 phi: 1.61803 message: hello world $ Now, JSON is more picky and care with quoted characters is needed: 1. Curly brackets { and } are used for multi-line input in FeenoX so they have to be quoted as \{ and \}. 2. Double quotes " are used to delimit keywords with blanks, so they also have to be quoted \" when appearing verbatim in an output token. DEFAULT_ARGUMENT_VALUE 1 "hello world" phi = (1+sqrt(5))/2 PRINTF "\{ \"a\": %.3f," 1/3 PRINT TEXT "\"phi\":" phi , PRINT "\"message\": \"${1}\" \}" $ feenox json.fee | jq . { "a": 0.333, "phi": 1.61803, "message": "hello world" } $ In the same sense, in principle any ASCII-based format can be implemented this way. Markdown output, which can then be converted to other formats as well (such as LaTeX which can then create professionally-looking tables as in fig. 21), has been already covered in sec. 2.7. Current version can write space and time-dependent distributions into Gmsh’s .msh and VTK’s vtu/.vtk formats. Both of them are open standard and have open-source readers. Other formats such .med should be easy to add, but in any case the mesh data converters such as Meshio can be used to convert FeenoX’s post-processing output to other formats as well. [Meshio]: https://github.com/nschloe/meshio Data exchange between non-conformal meshes To illustrate how the output of a FeenoX execution can be read by another FeenoX instance, let us revisit the plane-strain square from sec. 3.1.5. This time, instead of setting the temperature with an algebraic expression, we will solve a thermal problem that gives rise to the same temperature distribution but on a different mesh. First, we solve a thermal problem on the same square [−1, +1] × [−1, +1] such that the resulting temperature field is T(x, y) = 200 + 350 ⋅ y: PROBLEM thermal 2D READ_MESH square-centered-unstruct.msh # [-1:+1]x[-1:+1] BC bottom T=-150 BC top T=+550 k = 1 SOLVE_PROBLEM WRITE_MESH thermal-square-temperature.msh T Now, we read the temperature T(x, y) from the thermal output mesh file thermal-square-temperature.msh (which is a triangular unstructured grid) into the mechanical input mesh file square-centered.msh (which is a structured quadrangular grid): PROBLEM mechanical plane_strain READ_MESH square-centered.msh # [-1:+1]x[-1:+1] # fixed at left, uniform traction in the x direction at right BC left fixed BC right tx=50 # ASME II Part D pag. 785 Carbon steels with C<=0.30% FUNCTION E_carbon(temp) INTERPOLATION steffen DATA { -200 216 -125 212 -75 209 25 202 100 198 150 195 200 192 250 189 300 185 350 179 400 171 450 162 500 151 550 137 } # read the temperature from a previous result READ_MESH thermal-square-temperature.msh DIM 2 READ_FUNCTION T # Young modulus is the function above evaluated at the local temperature E(x,y) := E_carbon(T(x,y)) # uniform Poisson's ratio nu = 0.3 SOLVE_PROBLEM WRITE_MESH mechanical-square-temperature-from-msh.vtk E T VECTOR u v 0 Indeed, the terminal mimic shows the difference between the mechanical input from this section and the one that used an explicit algebraic expression. $ gmsh -2 square-centered-unstruct.geo [...] Info : Done meshing 2D (Wall 0.012013s, CPU 0.033112s) Info : 65 nodes 132 elements Info : Writing 'square-centered-unstruct.msh'... Info : Done writing 'square-centered-unstruct.msh' Info : Stopped on Wed Aug 3 17:47:39 2022 (From start: Wall 0.0208329s, CPU 0.064825s) $ feenox thermal-square.fee $ feenox mechanical-square-temperature-from-msh.fee $ diff mechanical-square-temperature-from-msh.fee mechanical-square-temperature.fee 26,27c26,29 < # read the temperature from a previous result < READ_MESH thermal-square-temperature.msh DIM 2 READ_FUNCTION T --- > > # known temperature distribution > # (we could have read it from an output of a thermal problem) > T(x,y) := 200 + 350*y 36c38 < WRITE_MESH mechanical-square-temperature-from-msh.vtk E T VECTOR u v 0 --- > WRITE_MESH mechanical-square-temperature.vtk E VECTOR u v 0 $ Quality assurance Since the results obtained with the tool might be used in verifying existing equipment or in designing new mechanical parts in sensitive industries, a certain level of software quality assurance is needed. Not only are best-practices for developing generic software such as - employment of a version control system, - automated testing suites, - user-reported bug tracking support. - etc. required, but also since the tool falls in the category of engineering computational software, verification and validation procedures are also mandatory, as discussed below. Design should be such that governance of engineering data including problem definition, results and documentation can be efficiently performed using state-of-the-art methodologies, such as distributed control version systems The development of FeenoX is tracked with the distributed version control system Git. The official repository is hosted on Github at https://github.com/seamplex/feenox/. New non-trivial features are added in new branches which are then eventually merged into the main branch. Note that nowadays mentioning that the source code of a piece of software is tracked with Git (why wouldn’t it?) is like saying a hotel has a private bathroom in each room (why wouldn’t it?). But the reader ought to keep in mind that there is a non-negligible fraction of production calculation codes (even nuclear-related) whose source code is not tracked with a DVCS, let alone features and bug fixes follow the branch-review-merge path. Reproducibility and traceability The full source code and the documentation of the tool ought to be maintained under a control version system. Whether access to the repository is public or not is up to the vendor, as long as the copying conditions are compatible with the definitions of both free and open source software from the FSF and the OSI, respectively as required in sec. 1. In order to be able to track results obtained with different version of the tools, there should be a clear release procedure. There should be periodical releases of stable versions that are required - not to raise any warnings when compiled using modern versions of common compilers (e.g. GNU, Clang, Intel, etc.) - not to raise any errors when assessed with dynamic memory analysis tools (e.g. Valgrind) for a wide variety of test cases - to pass all the automated test suites as specified in sec. 4.2 These stable releases should follow a common versioning scheme, and either the tarballs with the sources and/or the version control system commits should be digitally signed by a cognizant responsible. Other unstable versions with partial and/or limited features might be released either in the form of tarballs or made available in a code repository. The requirement is that unstable tarballs and main (a.k.a. trunk) branches on the repositories have to be compilable. Any feature that does not work as expected or that does not even compile has to be committed into develop branches before being merge into trunk. If the tool has an executable binary, it should be able to report which version of the code the executable corresponds to. If there is a library callable through an API, there should be a call which returns the version of the code the library corresponds to. It is recommended not to mix mesh data like nodes and element definition with problem data like material properties and boundary conditions so as to ease governance and tracking of computational models and the results associated with them. All the information needed to solve a particular problem (i.e. meshes, boundary conditions, spatially-distributed material properties, etc.) should be generated from a very simple set of files which ought to be susceptible of being tracked with current state-of-the-art version control systems. In order to comply with this suggestion, ASCII formats should be favored when possible. As stated in the previous section, the official repository is freely available on Github. As long as the copying conditions (GPLv3+) are met, the repository can be freely cloned and/or forked. Each binary executable feenox has embedded a literal string with the version of the source code used to build it. When running without arguments, it will print the version (which includes the hash of the last commit to the repository) and the usage: $ feenox FeenoX v1.0.7-g9b98430 a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information -c, --check validates if the input file is sane or not --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Run with --help for further explanations. $ As required by the GNU Standards, running with -v or --version will print copyright information as well: $ feenox -v FeenoX v1.0.7-g9b98430 a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool Copyright © 2009--2024 https://seamplex.com/feenox GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ And running with -V or --versions will print detailed versioning information about 1. the date and time of the last commit to the repository 2. the date and time of compilation 3. the architecture, compiler type, version and flags used to build the executable 4. the versions of the external numerical libraries used to link the executable $ feenox --versions FeenoX v1.0.7-g9b98430 a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool Last commit date : Tue Mar 19 16:17:30 2024 -0300 Build date : Wed Mar 20 07:40:34 2024 -0300 Build architecture : linux-gnu x86_64 Compiler version : gcc (Debian 12.2.0-14) 12.2.0 Compiler expansion : gcc -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich Compiler flags : -O3 -flto=auto -no-pie Builder : gtheler@tom GSL version : 2.7.1 SUNDIALS version : N/A PETSc version : Petsc Development GIT revision: v3.20.5-856-g0d3f65ad054 GIT Date: 2024-03-20 02:13:21 +0000 PETSc arch : arch-linux-c-debug PETSc options : --download-eigen --download-hdf5 --download-hypre --download-metis --download-mumps --download-parmetis --download-scalapack --download-slepc --with-64-bit-indices=no --with-debugging=yes --with-precision=double --with-scalar-type=real PETSC_ARCH=arch-linux-c-debug --force SLEPc version : SLEPc Development GIT revision: v3.20.1-36-g7a35a7b97 GIT Date: 2023-12-02 02:30:03 -0600 $ The version is composed of three dot-separated integers: 1. the major version (major changes) 2. the minor version (incompatible input changes) 3. the revision (individual commits from last tag) The autogen.sh script builds this string at compile time, which is stored in a header and finally embedded into the executable. The major m and minor n integers are read from the git tag formatted as vm.n, which is bumped manually by adding an annotated tag to a particular commit. The revision is computed automatically with git describe as the number of commits in the main branch from the tag to the last commit. The hash is also added to avoid ambiguities in case the repository is forked and diverged from the official one. Periodically, source and binary tarballs are built (using automated scripts in the dist subdirectory) and published online. Given the input-file scheme thoroughfully explained in sec. 3.1—especially the separation of the problem formulation from the mesh data–the input files can be tracked with Git (or any other VCS) as well, therefore enhancing traceability of results and data governance. Again, this might be obvious in the 2020s. But there are many FEM solvers which mix the mesh data with the problem definition (e.g. when external loads have to be given at the nodes instead of using expressions like p=rho*g*z or Fx=1e3). Automated testing A mean to automatically test the code works as expected is mandatory. A set of problems with known solutions should be solved with the tool after each modification of the code to make sure these changes still give the right answers for the right questions and no regressions are introduced. Unit software testing practices like continuous integration and test coverage are recommended but not mandatory. The tests contained in the test suite should be - varied, - diverse, and - independent Due to efficiency issues, there can be different sets of tests (e.g. unit and integration tests, quick and thorough tests, etc.) Development versions stored in non-main branches can have temporarily-failing tests, but stable versions have to pass all the test suites. The make check target will execute a set of Bash scripts which will run hundreds of cases and compare their solutions to reference values. These references might be i. analytical solutions, ii. known reference solutions, or iii. random reference solutions. Depending on the type of case being run, some of these tests might work as very simplified verification cases. But the bulk work as regressions tests so developers adding new features can check they do not break existing working code. For example, if by mistake a developer flips a sign of one term when setting convection boundary conditions in the heat-conduction PDE, i.e. from double rhs = h*Tref; to double rhs = -h*Tref; then the make check step will detect it. In effect, $ make check [...] XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh PASS: tests/annulus-modal.sh PASS: tests/uo2-pellet.sh [...] PASS: tests/t21.sh FAIL: tests/thermal-1d.sh PASS: tests/thermal-2d.sh FAIL: tests/thermal-3d.sh XFAIL: tests/thermal-slab-no-k.sh XFAIL: tests/thermal-slab-wrong-bc.sh FAIL: tests/thermal-radiation.sh PASS: tests/transient-mesh.sh PASS: tests/trig.sh [...] ============================================================================ Testsuite summary for feenox 1.0.7 ============================================================================ # TOTAL: 75 # PASS: 64 # SKIP: 2 # XFAIL: 6 # FAIL: 3 # XPASS: 0 # ERROR: 0 ============================================================================ See ./test-suite.log Please report to jeremy@seamplex.com ============================================================================ make[3]: *** [Makefile:1723: test-suite.log] Error 1 [...] make: *** [Makefile:1608: check-recursive] Error 1 $ Bug reporting and tracking A system to allow developers and users to report bugs and errors and to suggest improvements should be provided. If applicable, bug reports should be tracked, addressed and documented. User-provided suggestions might go into the back log or TO-DO list if appropriate. Here, “bug and errors” mean failure to - compile on supported architectures, - run (unexpected run-time errors, segmentation faults, etc.) - return a correct result The Github Issues feature at https://github.com/seamplex/feenox/issues is used to report and track bugs and errors (fig. 30). [Figure 30: Github Issues for FeenoX] Figure 30: Github Issues for FeenoX [Figure 30: Github Issues for FeenoX]: issues.png Documentation Documentation should be complete and cover both the user and the developer point of view. It should include a user manual adequate for both reference and tutorial purposes. Other forms of simplified documentation such as quick reference cards or video tutorials are not mandatory but highly recommended. Since the tool should be extendable (sec. 2.6), there should be a separate development manual covering the programming design and implementation, explaining how to extend the code and how to add new features. Also, as non-trivial mathematics which should be verified are expected, a thorough explanation of what equations are taken into account and how they are solved is required. It should be possible to make the full documentation available online in a way that it can be both printed in hard copy and accessed easily from a mobile device. Users modifying the tool to suit their own needs should be able to modify the associated documentation as well, so a clear notice about the licensing terms of the documentation itself (which might be different from the licensing terms of the source code itself) is mandatory. Tracking changes in the documentation should be similar to tracking changes in the code base. Each individual document ought to explicitly state to which version of the tool applies. Plain ASCII formats should be preferred. It is forbidden to submit documentation in a non-free format. The documentation shall also include procedures for - reporting errors and bugs - releasing stable versions - performing verification and validation studies - contributing to the code base, including - code of conduct - coding styles - variable and function naming conventions According to Eric Raymond’s book “The Art of Unix Programming”: Compactness is the property that a design can fit inside a human being’s head. A good practical test for compactness is this: Does an experienced user normally need a manual? If not, then the design (or at least the subset of it that covers normal use) is compact. Following to 20-80 rule, we could say that FeenoX is compact for 80% of its usage. But the most complex 20% of the cases might need users (even the author) to look up the syntax of the definition and instructions in the manual page (illustrated in fig. 31), which is accessible with man feenox after installing with make install: $ man -k feenox feenox (1) - a cloud-first free no-X uniX-like finite-element(ish) computational engineering tool $ man feenox $ [a] a [b] b Figure 31: The FeenoX Unix manpage in section 1 when running man feenox. a — Gnome Terminal, b — Konsole This man page is compiled into troff from a markdown source, which in turn has some sections involving the syntax and reference of the - definitions and instructions - special variables - internal built-in functions and functionals generated by a script that parses the actual source code. For instance, the code that parses the INTEGRATE function has three-forward-slash comments that tell this script that it has to prepare documentation: int feenox_parse_integrate(void) { mesh_integrate_t *mesh_integrate = NULL; feenox_check_alloc(mesh_integrate = calloc(1, sizeof(mesh_integrate_t))); ///kw_pde+INTEGRATE+usage { | } ///kw_pde+INTEGRATE+detail Either an expression or a function of space $x$, $y$ and/or $z$ should be given. ///kw_pde+INTEGRATE+detail If the integrand is a function, do not include the arguments, i.e. instead of `f(x,y,z)` just write `f`. ///kw_pde+INTEGRATE+detail The results should be the same but efficiency will be different (faster for pure functions). char *token = feenox_get_next_token(NULL); if ((mesh_integrate->function = feenox_get_function_ptr(token)) == NULL) { feenox_call(feenox_expression_parse(&mesh_integrate->expr, token)); } char *name_mesh = NULL; char *name_physical_group = NULL; char *name_result = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+INTEGRATE+usage [ OVER ] ///kw_pde+INTEGRATE+detail By default the integration is performed over the highest-dimensional elements of the mesh, ///kw_pde+INTEGRATE+detail i.e. over the whole volume, area or length for three, two and one-dimensional meshes, respectively. ///kw_pde+INTEGRATE+detail If the integration is to be carried out over just a physical group, it has to be given in `OVER`. if (strcasecmp(token, "OVER") == 0) { feenox_call(feenox_parser_string(&name_physical_group)); [...] The script doc/reference.sh would create the markdown snippet shown in fig. 32 (a), which then can be converted to other output formats (figs. 32 (b), 32 (c), 32 (d)) for the final user (and author) to look up the syntax of the input keywords. [a] a [b] b [c] c [d] d Figure 32: Reference for the keyword INTEGRATE in Markdown created out of special comments in the C source converted to different output formats.. a — Markdown, b — Manpage, c — HTML, d — PDF Other pieces of documentation in markdown which then are converted to HTML & PDF (with Pandoc and XeLaTeX) include: - The FeenoX manual - The FeenoX description (converted to Texinfo as well) - Software Requirements Specification - Software Design Specification - Frequently Asked Questions - FeenoX Unix man page - History - Compilation guide - Programming guide [31]: manpage-gnome.png [32]: manpage.png [33]: integrate-md [34]: integrate-man [35]: integrate-html [36]: integrate-pdf [The FeenoX manual]: https://github.com/seamplex/feenox/blob/main/doc/feenox-desc.md [37]: https://github.com/seamplex/feenox/blob/main/doc/srs.md [Software Design Specification]: https://github.com/seamplex/feenox/blob/main/doc/sds.md [Frequently Asked Questions]: https://github.com/seamplex/feenox/blob/main/doc/FAQ.md [FeenoX Unix man page]: https://github.com/seamplex/feenox/blob/main/doc/feenox.1.md [History]: https://github.com/seamplex/feenox/blob/main/doc/history.md [38]: https://github.com/seamplex/feenox/blob/main/doc/compilation.md [Programming guide]: https://github.com/seamplex/feenox/blob/main/doc/programming.md Appendix: Downloading and compiling FeenoX Binary executables Browse to https://www.seamplex.com/feenox/dist/ and check what the latest version for your architecture is. Then do feenox_version=1.0.8 wget -c https://www.seamplex.com/feenox/dist/linux/feenox-v${feenox_version}-linux-amd64.tar.gz tar xzf feenox-v${feenox_version}-linux-amd64.tar.gz sudo cp feenox-v${feenox_version}-linux-amd64/bin/feenox /usr/local/bin You’ll have the binary under bin and examples, documentation, manpage, etc under share. Copy bin/feenox into somewhere in the PATH and that will be it. If you are root, do sudo cp feenox-v${feenox_version}-linux-amd64/bin/feenox /usr/local/bin If you are not root, the usual way is to create a directory $HOME/bin and add it to your local path. If you have not done it already, do mkdir -p $HOME/bin echo 'expot PATH=$PATH:$HOME/bin' >> .bashrc Then finally copy bin/feenox to $HOME/bin cp feenox-v${feenox_version}-linux-amd64/bin/feenox $HOME/bin Check if it works by calling feenox from any directory (you might need to open a new terminal so .bashrc is re-read): $ feenox FeenoX v1.0.8-g731ca5d a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: ./feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information -c, --check validates if the input file is sane or not --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Run with --help for further explanations. $ Source tarballs To compile the source tarball, proceed as follows. This procedure does not need git nor autoconf but a new tarball has to be downloaded each time there is a new FeenoX version. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install gcc make libgsl-dev If you cannot install libgsl-dev, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Download and un-compress FeenoX source tarball. Browse to https://www.seamplex.com/feenox/dist/src/ and pick the latest version: wget https://www.seamplex.com/feenox/dist/src/feenox-v0.1.66-g1c4b17b.tar.gz tar xvzf feenox-v0.1.66-g1c4b17b.tar.gz 4. Configure, compile & make cd feenox-v0.1.66-g1c4b17b ./configure make -j4 If you cannot (or do not want) to use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install Git repository To compile the Git repository, proceed as follows. This procedure does need git and autoconf but new versions can be pulled and recompiled easily. If something goes wrong and you get an error, do not hesitate to ask in FeenoX’s discussion page. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install git build-essential make automake autoconf libgsl-dev If you cannot install libgsl-dev but still have git and the build toolchain, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Clone Github repository git clone https://github.com/seamplex/feenox 4. Bootstrap, configure, compile & make cd feenox ./autogen.sh ./configure make -j4 If you cannot (or do not want to) use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. See the detailed compilation instructions for an explanation. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install To stay up to date, pull and then autogen, configure and make (and optionally install): git pull ./autogen.sh; ./configure; make -j4 sudo make install [discussion page]: https://github.com/seamplex/feenox/discussions [detailed compilation instructions]: compilation.md Appendix: Rules of Unix philosophy In 1978, Doug McIlroy—the inventor of Unix pipes and one of the founders of the Unix tradition—stated: i. Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features. ii. Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input. iii. Design and build software, even operating systems, to be tried early, ideally within weeks. Don’t hesitate to throw away the clumsy parts and rebuild them. iv. Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you’ve finished using them. He later summarized it this way: This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. FeenoX explicitly followed the above ideas from scratch, especially the for sentences in bullet ii. It is even, like Unix itself, a third-system effect where clumsy parts of previous attempts were thrown away and rebuilt from scratch. The following sections explain how each of the seventeen rules was taken into account when designing and implementing FeenoX. Rule of Modularity Developers should build a program out of simple parts connected by well defined interfaces, so problems are local, and parts of the program can be replaced in future versions to support new features. This rule aims to save time on debugging code that is complex, long, and unreadable. FeenoX is designed to be as lightweight as possible. On the one hand, it relies on third-party high-quality libraries to do the heavy mathematical weightlifting such as - GNU Scientific Library for general mathematics, - SUNDIALS IDA for ODEs and DAEs, - PETSc for linear, non-linear and transient PDEs, and - SLEPc for PDEs involving eigen problems because these libraries were written by professional programmers using algorithms designed by professional mathematicians. Yet-to-be-discovered improved mathematical schemes and/or coding algorithms can be eventually used by FeenoX by just updating those dependencies, which for sure will keep their well-defined interfaces (because they are programmed by professional programmers). Moreover, the extensibility feature (sec. 11.17) of having each PDE in separate directories which can be added or removed at compile time without changing any line of the source code goes into this direction as well. Relying of C function pointers allows (in principle) to replace these “virtual” methods with other ones using the same interface. Note that our (human) languages in general and words in particular shape and limit the way we think. Fortran’s concept of “modules” is not the same as Unix’s concept of “modularity.” I wish two different words had been used. [GNU Scientific Library]: https://www.gnu.org/software/gsl/ [SUNDIALS IDA]: https://computing.llnl.gov/projects/sundials/ida [PETSc]: https://petsc.org/ [SLEPc]: http://slepc.upv.es/ Rule of Clarity Developers should write programs as if the most important communication is to the developer who will read and maintain the program, rather than the computer. This rule aims to make code as readable and comprehensible as possible for whoever works on the code in the future. Of course there might be a confirmation bias in this section because every programmer thinks their code is clear (and everybody else’s is not). But the first design decision to fulfill this rule is the programming language: there is little change to fulfill it with Fortran. One might argue that C++ can be clearer than C in some points, but for the vast majority of the source code they are equally clear. Besides, C is far simpler than C++ (see rule of simplicity). The second decision is not about the FeenoX source code but about FeenoX inputs: clear human-readable input files without any extra unneeded computer-level nonsense. The two illustrative cases are the NAFEMS LE10 & LE11 benchmarks, where there is a clear one-to-one correspondence between the “engineering” formulation and the input file FeenoX understands. [LE10]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [LE11]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le11-solid-cylindertapersphere-temperature-benchmark Rule of Composition Developers should write programs that can communicate easily with other programs. This rule aims to allow developers to break down projects into small, simple programs rather than overly complex monolithic programs. Previous designs of FeenoX’ predecessors used to include instructions to perform parametric sweeps( and even optimization loops), non-trivial macro expansions using M4 and even execution of arbitrary shell commands. These non-trivial operations were removed from FeenoX to focus on the rule of composition, paying especially attention to easing the inclusion of calling the feenox binary from shell scripts, enforcing the composition with other Unix-like tools. Emphasis has been put on adding flexibility to programmatic generation of input files (see also rule of generation in sec. 11.14) and the handling and expansion of command-line arguments to increase the composition with other programs. Moreover, the output is 100% controlled by the user at run-time so it can be tailored to suit any other programs’ input needs as well. An illustrative example is creating professional-looking tables with results using AWK & LaTeX. [creating professional-looking tables with results using AWK & LaTeX]: https://www.seamplex.com/feenox/doc/sds.html#sec:interoperability Rule of Separation Developers should separate the mechanisms of the programs from the policies of the programs; one method is to divide a program into a front-end interface and a back-end engine with which that interface communicates. This rule aims to prevent bug introduction by allowing policies to be changed with minimum likelihood of destabilizing operational mechanisms. FeenoX relies of the rule of separation (which also links to the next two rules of simplicity and parsimony) from the very beginning of its design phase. It was explicitly designed as a glue layer between a mesher like Gmsh and a post-processor like Gnuplot, Gmsh or Paraview. This way, not only flexibility and diversity (see #sec:unix-diversity) can be boosted, but also technological changes can be embraced with little or no effort. For example, CAEplex provides a web-based platform for performing thermo-mechanical analysis on the cloud running from the browser. Had FeenoX been designed as a traditional desktop-GUI program, this would have been impossible. If in the future CAD/CAE interfaces migrate into virtual and/or augmented reality with interactive 3D holographic input/output devices, the development effort needed to use FeenoX as the back end is negligible. [CAEplex]: https://www.caeplex.com Rule of Simplicity Developers should design for simplicity by looking for ways to break up program systems into small, straightforward cooperating pieces. This rule aims to discourage developers’ affection for writing “intricate and beautiful complexities” that are in reality bug prone programs. The main source of simplicity comes from the design of the syntax of the input files, discussed in detail in the SDS: - English-like self-evident input files matching as close as possible the problem text. - Simple problems need simple input. - Similar problems need similar inputs. - If there is a single material there is no need to link volumes to properties. [SDS]: https://www.seamplex.com/feenox/doc/sds.html#sec:input Rule of Parsimony Developers should avoid writing big programs. This rule aims to prevent overinvestment of development time in failed or suboptimal approaches caused by the owners of the program’s reluctance to throw away visibly large pieces of work. Smaller programs are not only easier to write, optimize, and maintain; they are easier to delete when deprecated. We already said that FeenoX is a glue layer between a mesher and a post-processing tool. Even more, at another level, it acts as two glue layers between the mesher and PETSc, and PETSc and the post-processor. On the other hand, we also already stated that FeenoX was written from scratch after throwing away clumsy code from two previous attempts. For instance, these previous versions used to implement parametric and optimization schemes. Instead, in FeenoX, these type of runs have to be driven from an outer script (Bash, Python, etc.) Rule of Transparency Developers should design for visibility and discoverability by writing in a way that their thought process can lucidly be seen by future developers working on the project and using input and output formats that make it easy to identify valid input and correct output. This rule aims to reduce debugging time and extend the lifespan of programs. As with the rule of clarity (sec. 11.2), there is a risk of falling into the confirmation bias because every programmer thinks its code is transparent. Anyway, FeenoX is written in C99 which is way easier to debug than both Fortran and C++. Yet, very much like PETSc, FeenoX makes use of structures and function pointers to give the same functionality as C++’s virtual methods without needing to introduce other complexities that make the code base harder to maintain and to debug. Regarding identification of valid inputs and correct outputs, 1. The build system includes a make check target that runs hundreds of regressions tests. 2. The code supports verification using the Method of Manufactured Solutions [regressions tests]: https://github.com/seamplex/feenox/tree/main/tests [Method of Manufactured Solutions]: https://github.com/seamplex/feenox/tree/main/tests/mms Rule of Robustness Developers should design robust programs by designing for transparency and discoverability, because code that is easy to understand is easier to stress test for unexpected conditions that may not be foreseeable in complex programs. This rule aims to help developers build robust, reliable products. Robustness is the child of transparency and simplicity. Rule of Representation Developers should choose to make data more complicated rather than the procedural logic of the program when faced with the choice, because it is easier for humans to understand complex data compared with complex logic. This rule aims to make programs more readable for any developer working on the project, which allows the program to be maintained. There is a trade off between clarity and efficiency. However, avoiding Fortran should already fulfill this rule. FeenoX uses C structures with function pointers, which make it far simple to understand than similar Fortran-based FEM tools. Just compare the source directories of FeenoX and CalculiX. Take for instance the file stress.c from src/pdes/mechanical (which if deleted, will remove support for mechanical problems but it will not prevent the compilation of feenox) from the former and calcstress.f (buried inside 2,400 files in src) from the latter. There might be more illustrative examples showing how FeenoX’ design is more representative than of CalculiX, but it is way too hard to understand the source code of the latter (even though the license is supposed to be GPL). [stress.c]: https://github.com/seamplex/feenox/blob/main/src/pdes/mechanical/stress.c [calcstress.f]: https://github.com/calculix/ccx_prool/blob/master/CalculiX/ccx_2.21/src/calcstress.f [src]: https://github.com/calculix/ccx_prool/tree/master/CalculiX/ccx_2.21/src Rule of Least Surprise Developers should design programs that build on top of the potential users’ expected knowledge; for example, ‘+’ in a calculator program should always mean ‘addition’. This rule aims to encourage developers to build intuitive products that are easy to use. The rules of input syntax have been designed with this rule in mind. Just note a couple of them: - The command-line arguments after the input file are available to be expanded verbatim in the input file as $1, $2, etc. (or ${1}, ${2}, etc. if they appear in the middle of strings). This syntax matches Bash’ syntax for expanding command-line arguments, so any person reading an input file with this syntax already knows what it does. ´ - If one needs a problem where the conductivity depends on x as k(x) = 1 + x then the input is k(x) = 1+x - If a problem needs a temperature distribution given by an algebraic expression $T(x,y,z)=\sqrt{x^2+y^2}+z$ then do T(x,y,z) = sqrt(x^2+y^2) + z - This syntax for (basic) algebraic expressions matches the common syntax found in Gmsh, Maxima and many other scientific tools. More complex expressions (e.g. involving hyperbolic tangents) might differ slightly. Rule of Silence Developers should design programs so that they do not print unnecessary output. This rule aims to allow other programs and developers to pick out the information they need from a program’s output without having to parse verbosity. TL;DR: no PRINT (or WRITE_RESULTS), no output. Rule of Repair Developers should design programs that fail in a manner that is easy to localize and diagnose or in other words “fail noisily”. This rule aims to prevent incorrect output from a program from becoming an input and corrupting the output of other code undetected. Input errors are detected before the computation is started: $ feenox thermal-error.fee error: undefined thermal conductivity 'k' $ Run-time errors (even inside the numerical libraries) are caught with custom handlers. Rule of Economy Developers should value developer time over machine time, because machine cycles today are relatively inexpensive compared to prices in the 1970s. This rule aims to reduce development costs of projects. As explained in the SDS, output is 100% user-defined so only the desired results are directly obtained instead of needing further digging into tons of undesired data. The approach of “compute and write everything you can in one single run” made sense in 1970 where CPU time was more expensive than human time, but not anymore. Once again, the iconic examples are the NAFEMS LE10 & LE11 benchmarks, where just the required scalar stress at the required location is written into the standard output. [39]: https://www.seamplex.com/feenox/doc/sds.html#sec:output [LE10]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [LE11]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le11-solid-cylindertapersphere-temperature-benchmark Rule of Generation Developers should avoid writing code by hand and instead write abstract high-level programs that generate code. This rule aims to reduce human errors and save time. Some key points: - Input files are M4-like-macro friendly. - Parametric runs can be done from scripts through expansion of command line arguments. - Documentation is created out of simple Markdown sources and assembled as needed. More saliently, the automatic detection of the available PDEs in src/pdes is an example of this rule. The autogen.sh would loop over each subdirectory and create a source file src/pdes/parser.c with a function feenox_pde_parse_problem_type() which then will be part of the actual FeenoX source base as the entry point for parsing the PROBLEM keyword. Rule of Optimization Developers should prototype software before polishing it. This rule aims to prevent developers from spending too much time for marginal gains. FeenoX is still “premature” for heavy optimization. Yet, it is (relatively) faster than other alternatives. It does use link-time optimization to allow for inlining of small routines. There is even a FeenoX benchmarking repository that uses Google’s Benchmark library to prototype code optimization: https://github.com/seamplex/feenox-benchmark. Rule of Diversity Developers should design their programs to be flexible and open. This rule aims to make programs flexible, allowing them to be used in ways other than those their developers intended. FeenoX can read Gmsh files, but they need not necessarily be created by Gmsh. Other meshing formats (VTK with group names?) are planned to be implemented. Also, either Gmsh or Paraview can be used to post-process results. But also other formats are planned. See sec. 11.17. Diversity is embraced from the bottom up! Rule of Extensibility Developers should design for the future by making their protocols extensible, allowing for easy plugins without modification to the program’s architecture by other developers, noting the version of the program, and more. This rule aims to extend the lifespan and enhance the utility of the code the developer writes. The main extensibility feature is that each PDE has a separate source directory. Any of them can be used as as template to add new PDEs, which are detected at compile time by the Autotools bootstrapping script. A final note is that FeenoX is GPLv3+. First, this means that extensions and contributions are welcome. Each author retains the copyright on the contributed code (as long as it is free software). Second, the + is there for the future. Appendix: FeenoX history Very much like Unix in the late 1960s and C in the early 1970s, FeenoX is a third-system effect: I wrote a first hack that seemed to work better than I had expected. Then I tried to add a lot of features and complexities which I felt the code needed. After ten years of actual usage, I then realized 1. what was worth keeping, 2. what needed to be rewritten and 3. what had to be discarded. The first version was called wasora, the second was “The wasora suite” (i.e. a generic framework plus a bunch of “plugins”, including a thermo-mechanical one named Fino) and then finally FeenoX. The story that follows explains why I wrote the first hack to begin with. ------------------------------------------------------------------------ It was at the movies when I first heard about dynamical systems, non-linear equations and chaos theory. The year was 1993, I was ten years old and the movie was Jurassic Park. Dr. Ian Malcolm (the character portrayed by Jeff Goldblum) explained sensitivity to initial conditions in a memorable scene, which is worth watching again and again. Since then, the fact that tiny variations may lead to unexpected results has always fascinated me. During high school I attended a very interesting course on fractals and chaos that made me think further about complexity and its mathematical description. Nevertheless, it was not not until college that I was able to really model and solve the differential equations that give rise to chaotic behavior. [Dr. Ian Malcolm (Jeff Goldblum) explains sensitivity to initial conditions.] In fact, initial-value ordinary differential equations arise in a great variety of subjects in science and engineering. Classical mechanics, chemical kinetics, structural dynamics, heat transfer analysis and dynamical systems, among other disciplines, heavily rely on equations of the form $$ \dot{\mathbf{x}} = F(\mathbf{x},t) $$ During my years of undergraduate student (circa 2004–2007), whenever I had to solve these kind of equations I had to choose one of the following three options: 1. to program an ad-hoc numerical method such as Euler or Runge-Kutta, matching the requirements of the system of equations to solve, or 2. to use a standard numerical library such as the GNU Scientific Library and code the equations to solve into a C program (or maybe in Python), or 3. to use a high-level system such as Octave, Maxima, or some non-free (and worse, see below) programs. Of course, each option had its pros and its cons. But none provided the combination of advantages I was looking for, namely flexibility (option one), efficiency (option two) and reduced input work (partially given by option three). Back in those days I ended up wandering between options one and two, depending on the type of problem I had to solve. However, even though one can, with some effort, make the code read some parameters from a text file, any other drastic change usually requires a modification in the source code—some times involving a substantial amount of work—and a further recompilation of the code. This was what I most disliked about this way of working, but I could nevertheless live with it. Regardless of this situation, during my last year of Nuclear Engineering, the tipping point came along. Here’s a slightly-fictionalized of a dialog between myself and the teacher at the computer lab (Dr E.), as it might have happened (or not): — (Prof.) Open MATLAB.™ — (Me) It’s not installed here. I type mathlab and it does not work. — (Prof.) It’s spelled matlab. — (Me) Ok, working. (A screen with blocks and lines connecting them appears) — (Me) What’s this? — (Prof.) The point reactor equations. — (Me) It’s not. These are the point reactor equations: $$ \begin{cases} \dot{\phi}(t) = \displaystyle \frac{\rho(t) - \beta}{\Lambda} \cdot \phi(t) + \sum_{i=1}^{N} \lambda_i \cdot c_i \\ \dot{c}_i(t) = \displaystyle \frac{\beta_i}{\Lambda} \cdot \phi(t) - \lambda_i \cdot c_i \end{cases} $$ — (Me) And in any case, I’d write them like this in a computer: phi_dot = (rho-Beta)/Lambda * phi + sum(lambda[i], c[i], i, 1, N) c_dot[i] = beta[i]/Lambda * phi - lambda[i]*c[i] This conversation forced me to re-think the ODE-solving issue. I could not (and still cannot) understand why somebody would prefer to solve a very simple set of differential equations by drawing blocks and connecting them with a mouse with no mathematical sense whatsoever. Fast forward fifteen years, and what I wrote above is essentially how one would solve the point kinetics equations with FeenoX. [40]: https://www.seamplex.com/feenox [Dr. Ian Malcolm]: https://en.wikipedia.org/wiki/Ian_Malcolm_(character) [Jeff Goldblum]: https://en.wikipedia.org/wiki/Jeff_Goldblum [memorable scene]: https://www.youtube.com/watch?v=n-mpifTiPV4 [Dr. Ian Malcolm (Jeff Goldblum) explains sensitivity to initial conditions.]: jurassicpark.jpg [Euler]: https://en.wikipedia.org/wiki/Euler_method [Runge-Kutta]: https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods [GNU Scientific Library]: https://www.gnu.org/software/gsl/ [Octave]: https://www.gnu.org/software/octave/index [Maxima]: https://maxima.sourceforge.io/ Appendix: Downloading & compiling Please note that FeenoX is a cloud-first back end aimed at advanced users. It does not include a graphical interface and it is not expected to run in Windows. See this 5-min explanation about why: For an easy-to-use web-based front end with FeenoX running in the cloud directly from your browser see CAEplex at https://www.caeplex.com. Any contribution to make desktop GUIs such as PrePoMax or FreeCAD to work with FeenoX are welcome. [back end]: https://en.wikipedia.org/wiki/Front_and_back_ends [CAEplex]: https://www.caeplex.com [PrePoMax]: https://prepomax.fs.um.si/ [FreeCAD]: http://https://www.freecadweb.org Downloads FeenoX is distributed under the terms of the GNU General Public License version 3 or (at your option) any later version. ----------------------------- ----------------------------------------------------- Debian packages https://packages.debian.org/unstable/science/feenox GNU/Linux binaries https://www.seamplex.com/feenox/dist/linux Source tarballs https://www.seamplex.com/feenox/dist/src Github repository https://github.com/seamplex/feenox/ ----------------------------- ----------------------------------------------------- - FeenoX is cloud-first. It was designed to run on servers. - Be aware that FeenoX does not have a GUI. Read the documentation, especially the description and the FAQs. Ask for help on the GitHub discussions page if you do now understand what this bullet means. - Debian/Ubuntu packages are unofficial, i.e. they are not available in apt repositories. They contain dynamically-linked binaries and their dependencies are hard-coded for each Debian/Ubuntu release. Make sure you get the right .deb for your release (i.e. bookworm/bullseye for Debian, kinetic/focal for Ubuntu). - Generic GNU/Linux binaries are provided as statically-linked executables for convenience. They do not support MUMPS nor MPI and have only basic optimization flags. Please compile from source for high-end applications. See detailed compilation instructions. - Try to avoid Windows as much as you can. The binaries are provided as transitional packages for people that for some reason still use such an outdated, anachronous, awful and invasive operating system. They are compiled with Cygwin and have no support whatsoever. Really, really, get rid of Windows ASAP. “It is really worth any amount of time and effort to get away from Windows if you are doing computational science.” https://lists.mcs.anl.gov/pipermail/petsc-users/2015-July/026388.html [GNU General Public License version 3]: https://www.gnu.org/licenses/gpl-3.0.en.html [cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first [documentation]: https://seamplex.com/feenox/doc/ [description]: https://www.seamplex.com/feenox/doc/feenox-desc.html [FAQs]: https://seamplex.com/feenox/doc/FAQ.html [GitHub discussions page]: https://github.com/seamplex/feenox/discussions [41]: https://seamplex.com/feenox/doc/compilation.html [42]: http://cygwin.com/ Debian/Ubuntu packages Debian/Ubuntu packages are available at https://www.seamplex.com/feenox/dist/. Find the directory for your Debian or Ubuntu release, i.e. - bookworm is Debian 12 - bullseye is Debian 11 - buster is Debian 10 - kinetic is Ubuntu 22.10 - jammy is Ubuntu 22.04 - focal is Ubuntu 20.04 If you know how to install .deb packages, feel free to use your method (i.e. gdebi or with the “Software Center” thing). You can can always use dpkg (as root): $ sudo dpkg -i feenox-0.3_1_amd64.deb Most likely, this step will fail due to failed dependencies. Just call apt to fix them for you: $ sudo apt-get --fix-broken install Now the command feenox should be globally available: $ feenox FeenoX v0.3 a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: ./feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information -c, --check validates if the input file is sane or not --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Run with --help for further explanations. $ If the execution fails, most likely the version of the .deb does not match your GNU/Linux release. Please try the statically-linked binaries below or ask in the FeenoX discussions page. The FeenoX Unix man page should be available in section one: $ man -k feenox feenox (1) - a cloud-first free no-X uniX-like finite-element(ish) computational engineering tool $ man feenox $ [bookworm]: https://www.seamplex.com/feenox/dist/deb/bookworm [bullseye]: https://www.seamplex.com/feenox/dist/deb/bullseye [buster]: https://www.seamplex.com/feenox/dist/deb/buster [kinetic]: https://www.seamplex.com/feenox/dist/deb/kinetic [jammy]: https://www.seamplex.com/feenox/dist/deb/jammy [focal]: https://www.seamplex.com/feenox/dist/deb/focal [FeenoX discussions]: https://github.com/seamplex/feenox/discussions Statically-linked binaries Browse to https://www.seamplex.com/feenox/dist/ and check what the latest version for your architecture is. Then do feenox_version=1.0.8 wget -c https://www.seamplex.com/feenox/dist/linux/feenox-v${feenox_version}-linux-amd64.tar.gz tar xzf feenox-v${feenox_version}-linux-amd64.tar.gz sudo cp feenox-v${feenox_version}-linux-amd64/bin/feenox /usr/local/bin You’ll have the binary under bin and examples, documentation, manpage, etc under share. Copy bin/feenox into somewhere in the PATH and that will be it. If you are root, do sudo cp feenox-v${feenox_version}-linux-amd64/bin/feenox /usr/local/bin If you are not root, the usual way is to create a directory $HOME/bin and add it to your local path. If you have not done it already, do mkdir -p $HOME/bin echo 'expot PATH=$PATH:$HOME/bin' >> .bashrc Then finally copy bin/feenox to $HOME/bin cp feenox-v${feenox_version}-linux-amd64/bin/feenox $HOME/bin Check if it works by calling feenox from any directory (you might need to open a new terminal so .bashrc is re-read): $ feenox FeenoX v1.0.8-g731ca5d a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: ./feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information -c, --check validates if the input file is sane or not --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Run with --help for further explanations. $ Compile from source To compile the source tarball, proceed as follows. This procedure does not need git nor autoconf but a new tarball has to be downloaded each time there is a new FeenoX version. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install gcc make libgsl-dev If you cannot install libgsl-dev, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Download and un-compress FeenoX source tarball. Browse to https://www.seamplex.com/feenox/dist/src/ and pick the latest version: wget https://www.seamplex.com/feenox/dist/src/feenox-v0.1.66-g1c4b17b.tar.gz tar xvzf feenox-v0.1.66-g1c4b17b.tar.gz 4. Configure, compile & make cd feenox-v0.1.66-g1c4b17b ./configure make -j4 If you cannot (or do not want) to use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install Github repository To compile the Git repository, proceed as follows. This procedure does need git and autoconf but new versions can be pulled and recompiled easily. If something goes wrong and you get an error, do not hesitate to ask in FeenoX’s discussion page. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install git build-essential make automake autoconf libgsl-dev If you cannot install libgsl-dev but still have git and the build toolchain, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Clone Github repository git clone https://github.com/seamplex/feenox 4. Bootstrap, configure, compile & make cd feenox ./autogen.sh ./configure make -j4 If you cannot (or do not want to) use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. See the detailed compilation instructions for an explanation. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install To stay up to date, pull and then autogen, configure and make (and optionally install): git pull ./autogen.sh; ./configure; make -j4 sudo make install See the Compilation Guide for details. Ask in the GitHub Discussions page for help. [discussion page]: https://github.com/seamplex/feenox/discussions [detailed compilation instructions]: compilation.md [43]: doc/compile.md Licensing FeenoX is distributed under the terms of the GNU General Public License version 3 or (at your option) any later version. The following text was borrowed from the Gmsh documentation. Replacing “Gmsh” with “FeenoX” gives: FeenoX is “free software”; this means that everyone is free to use it and to redistribute it on a free basis. FeenoX is not in the public domain; it is copyrighted and there are restrictions on its distribution, but these restrictions are designed to permit everything that a good cooperating citizen would want to do. What is not allowed is to try to prevent others from further sharing any version of FeenoX that they might get from you. Specifically, we want to make sure that you have the right to give away copies of FeenoX, that you receive source code or else can get it if you want it, that you can change FeenoX or use pieces of FeenoX in new free programs, and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute copies of FeenoX, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. Also, for our own protection, we must make certain that everyone finds out that there is no warranty for FeenoX. If FeenoX is modified by someone else and passed on, we want their recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation. The precise conditions of the license for FeenoX are found in the General Public License that accompanies the source code. Further information about this license is available from the GNU Project webpage http://www.gnu.org/copyleft/gpl-faq.html. FeenoX is licensed under the terms of the GNU General Public License version 3 or, at the user convenience, any later version. This means that users get the four essential freedoms:[8] 0. The freedom to run the program as they wish, for any purpose. 1. The freedom to study how the program works, and change it so it does their computing as they wish. 2. The freedom to redistribute copies so they can help others. 3. The freedom to distribute copies of their modified versions to others. So a free program has to be open source, but it also has to explicitly provide the four freedoms above both through the written license and through appropriate mechanisms to get, modify, compile, run and document these modifications using well-established and/or reasonable straightforward procedures. That is why licensing FeenoX as GPLv3+ also implies that the source code and all the scripts and makefiles needed to compile and run it are available for anyone that requires it (i.e. it is compiled with ./configure && make). Anyone wanting to modify the program either to fix bugs, improve it or add new features is free to do so. And if they do not know how to program, the have the freedom to hire a programmer to do it without needing to ask permission to the original authors. Even more, the documentation is released under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License so these new (or modified) features can be properly documented as well. Nevertheless, since these original authors are the copyright holders, they still can use it to either enforce or prevent further actions from the users that receive FeenoX under the GPLv3+. In particular, the license allows re-distribution of modified versions only if a. they are clearly marked as different from the original, and b. they are distributed under the same terms of the GPLv3+. There are also some other subtle technicalities that need not be discussed here such as - what constitutes a modified version (which cannot be redistributed under a different license) - what is an aggregate (in which each part be distributed under different licenses) - usage over a network and the possibility of using AGPL instead of GPL to further enforce freedom These issues are already taken into account in the FeenoX licensing scheme. It should be noted that not only is FeenoX free and open source, but also all of the libraries it depends on (and their dependencies) also are. It can also be compiled using free and open source build tool chains running over free and open source operating systems. These detailed compilation instructions are aimed at amd64 Debian-based GNU/Linux distributions. The compilation procedure follows the POSIX standard, so it should work in other operating systems and architectures as well. Distributions not using apt for packages (i.e. yum) should change the package installation commands (and possibly the package names). The instructions should also work for in MacOS, although the apt-get commands should be replaced by brew or similar. Same for Windows under Cygwin, the packages should be installed through the Cygwin installer. WSL was not tested, but should work as well. [8] There are some examples of pieces of computational software which are described as “open source” in which even the first of the four freedoms is denied. The most iconic case is that of Android, whose sources are readily available online but there is no straightforward way of updating one’s mobile phone firmware with a customized version, not to mention vendor and hardware lock ins and the possibility of bricking devices if something unexpected happens. In the nuclear industry, it is the case of a Monte Carlo particle-transport program that requests users to sign an agreement about the objective of its usage before allowing its execution. The software itself might be open source because the source code is provided after signing the agreement, but it is not free (as in freedom) at all. [44]: http://www.gnu.org/copyleft/gpl.html [Gmsh documentation]: http://gmsh.info/doc/texinfo/gmsh.html#Copying-conditions [General Public License]: https://github.com/seamplex/feenox/blob/master/COPYING [GNU General Public License]: https://www.gnu.org/licenses/gpl-3.0 [the documentation]: https://seamplex.com/feenox/doc/ [Creative Commons Attribution-ShareAlike 4.0 International License]: https://creativecommons.org/licenses/by-sa/4.0/ [AGPL]: https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License [POSIX standard]: https://en.wikipedia.org/wiki/POSIX [Cygwin]: https://www.cygwin.com/ Quickstart Note that the quickest way to get started is to download an already-compiled statically-linked binary executable. Note that getting a binary is the quickest and easiest way to go but it is the less flexible one. Mind the following instructions if a binary-only option is not suitable for your workflow and/or you do need to compile the source code from scratch. On a GNU/Linux box (preferably Debian-based), follow these quick steps. See sec. 13.4 for the actual detailed explanations. To compile the Git repository, proceed as follows. This procedure does need git and autoconf but new versions can be pulled and recompiled easily. If something goes wrong and you get an error, do not hesitate to ask in FeenoX’s discussion page. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install git build-essential make automake autoconf libgsl-dev If you cannot install libgsl-dev but still have git and the build toolchain, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Clone Github repository git clone https://github.com/seamplex/feenox 4. Bootstrap, configure, compile & make cd feenox ./autogen.sh ./configure make -j4 If you cannot (or do not want to) use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. See the detailed compilation instructions for an explanation. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install To stay up to date, pull and then autogen, configure and make (and optionally install): git pull ./autogen.sh; ./configure; make -j4 sudo make install [download]: https://www.seamplex.com/feenox/#download [discussion page]: https://github.com/seamplex/feenox/discussions [detailed compilation instructions]: compilation.md Detailed configuration and compilation The main target and development environment is Debian GNU/Linux, although it should be possible to compile FeenoX in any free GNU/Linux variant (and even the in non-free MacOS and/or Windows platforms) running in virtually any hardware platform. FeenoX can run be run either in HPC cloud servers or a Raspberry Pi, and almost everything that sits in the middle. Following the Unix philosophy discussed in the SDS, FeenoX re-uses a lot of already-existing high-quality free and open source libraries that implement a wide variety of mathematical operations. This leads to a number of dependencies that FeenoX needs in order to implement certain features. There is only one dependency that is mandatory, namely GNU GSL (see sec. 13.4.1.1), which if it not found then FeenoX cannot be compiled. All other dependencies are optional, meaning that FeenoX can be compiled but its capabilities will be partially reduced. As per the SRS, all dependencies have to be available on mainstream GNU/Linux distributions and have to be free and open source software. But they can also be compiled from source in case the package repositories are not available or customized compilation flags are needed (i.e. optimization or debugging settings). In particular, PETSc (and SLEPc) also depend on other mathematical libraries to perform particular operations such as low-level linear algebra operations. These extra dependencies can be either free (such as LAPACK) or non-free (such as Intel’s MKL), but there is always at least one combination of a working setup that involves only free and open source software which is compatible with FeenoX licensing terms (GPLv3+). See the documentation of each package for licensing details. [Debian GNU/Linux]: https://www.debian.org/ [45]: SDS.md [GNU GSL]: https://www.gnu.org/software/gsl/ [SRS]: SRS.md [46]: https://petsc.org/release/ [47]: https://slepc.upv.es/ [LAPACK]: http://www.netlib.org/lapack/ [Intel’s MKL]: https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html Mandatory dependencies FeenoX has one mandatory dependency for run-time execution and the standard build toolchain for compilation. It is written in C99 so only a C compiler is needed, although make is also required. Free and open source compilers are favored. The usual C compiler is gcc but clang or Intel’s icc and the newer icx can also be used. Note that there is no need to have a Fortran nor a C++ compiler to build FeenoX. They might be needed to build other dependencies (such as PETSc and its dependencies), but not to compile FeenoX if all the dependencies are installed from the operating system’s package repositories. In case the build toolchain is not already installed, do so with sudo apt-get install gcc make If the source is to be fetched from the Git repository then not only is git needed but also autoconf and automake since the configure script is not stored in the Git repository but the autogen.sh script that bootstraps the tree and creates it. So if instead of compiling a source tarball one wants to clone from GitHub, these packages are also mandatory: sudo apt-get install git automake autoconf Again, chances are that any existing GNU/Linux box has all these tools already installed. [Git repository]: https://github.com/seamplex/feenox/ The GNU Scientific Library The only run-time dependency is GNU GSL (not to be confused with Microsoft GSL). It can be installed with sudo apt-get install libgsl-dev In case this package is not available or you do not have enough permissions to install system-wide packages, there are two options. 1. Pass the option --enable-download-gsl to the configure script below. 2. Manually download, compile and install GNU GSL If the configure script cannot find both the headers and the actual library, it will refuse to proceed. Note that the FeenoX binaries already contain a static version of the GSL so it is not needed to have it installed in order to run the statically-linked binaries. [GNU GSL]: https://www.gnu.org/software/gsl/ [Microsoft GSL]: https://github.com/microsoft/GSL Optional dependencies FeenoX has three optional run-time dependencies. It can be compiled without any of these, but functionality will be reduced: - SUNDIALS provides support for solving systems of ordinary differential equations (ODEs) or differential-algebraic equations (DAEs). This dependency is needed when running inputs with the PHASE_SPACE keyword. - PETSc provides support for solving partial differential equations (PDEs). This dependency is needed when running inputs with the PROBLEM keyword. - SLEPc provides support for solving eigen-value problems in partial differential equations (PDEs). This dependency is needed for inputs with PROBLEM types with eigen-value formulations such as modal and neutron_sn. In absence of all these, FeenoX can still be used to - solve general mathematical problems such as the ones to compute the Fibonacci sequence or the Logistic map, - operate on functions, either algebraically or point-wise interpolated such as Computing the derivative of a function as a Unix filter - read, operate over and write meshes, - etc. These optional dependencies have to be installed separately. There is no option to have configure to download them as with --enable-download-gsl. When running the test suite (sec. 13.4.6), those tests that need an optional dependency which was not found at compile time will be skipped. [SUNDIALS]: https://computing.llnl.gov/projects/sundials [PETSc]: https://petsc.org/ [SLEPc47]: https://slepc.upv.es/ [48]: https://www.seamplex.com/feenox/examples/#the-fibonacci-sequence [Logistic map]: https://www.seamplex.com/feenox/examples/#the-logistic-map [Computing the derivative of a function as a Unix filter]: https://www.seamplex.com/feenox/examples/#computing-the-derivative-of-a-function-as-a-unix-filter SUNDIALS SUNDIALS is a SUite of Nonlinear and DIfferential/ALgebraic equation Solvers. It is used by FeenoX to solve dynamical systems casted as DAEs with the keyword PHASE_SPACE, like the Lorenz system. Install either by doing sudo apt-get install libsundials-dev or by following the instructions in the documentation. [SUNDIALS]: https://computing.llnl.gov/projects/sundials [PHASE_SPACE]: https://www.seamplex.com/feenox/doc/feenox-manual.html#phase_space [the Lorenz system]: https://www.seamplex.com/feenox/examples/#lorenz-attractor-the-one-with-the-butterfly PETSc The Portable, Extensible Toolkit for Scientific Computation, pronounced PET-see (/ˈpɛt-siː/), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It is used by FeenoX to solve PDEs with the keyword PROBLEM, like the NAFEMS LE10 benchmark problem. Install either by doing sudo apt-get install petsc-dev or by following the instructions in the documentation. Note that - Configuring and compiling PETSc from scratch might be difficult the first time. It has a lot of dependencies and options. Read the official documentation for a detailed explanation. - There is a huge difference in efficiency between using PETSc compiled with debugging symbols and with optimization flags. Make sure to configure --with-debugging=0 for FeenoX production runs and leave the debugging symbols (which is the default) for development and debugging only. - FeenoX needs PETSc to be configured with real double-precision scalars. It will compile but will complain at run-time when using complex and/or single or quad-precision scalars. - FeenoX honors the PETSC_DIR and PETSC_ARCH environment variables when executing configure. If these two do not exist or are empty, it will try to use the default system-wide locations (i.e. the petsc-dev package). [Portable, Extensible Toolkit for Scientific Computation]: (https://petsc.org/) [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [NAFEMS LE10 benchmark problem]: https://www.seamplex.com/feenox/examples/#nafems-le10-thick-plate-pressure-benchmark [49]: https://petsc.org/release/install/ SLEPc The Scalable Library for Eigenvalue Problem Computations, is a software library for the solution of large scale sparse eigenvalue problems on parallel computers. It is used by FeenoX to solve PDEs with the keyword PROBLEM that need eigen-value computations, such as modal analysis of a cantilevered beam. Install either by doing sudo apt-get install slepc-dev or by following the instructions in the documentation. Note that - SLEPc is an extension of PETSc so the latter has to be already installed and configured. - FeenoX honors the SLEPC_DIR environment variable when executing configure. If it does not exist or is empty it will try to use the default system-wide locations (i.e. the slepc-dev package). - If PETSc was configured with --download-slepc then the SLEPC_DIR variable has to be set to the directory inside PETSC_DIR where SLEPc was cloned and compiled. [Scalable Library for Eigenvalue Problem Computations]: https://slepc.upv.es/ [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [modal analysis of a cantilevered beam]: https://www.seamplex.com/feenox/examples/#five-natural-modes-of-a-cantilevered-wire FeenoX source code There are two ways of getting FeenoX’s source code: 1. Cloning the GitHub repository at https://github.com/seamplex/feenox 2. Downloading a source tarball from https://seamplex.com/feenox/dist/src/ Git repository The main Git repository is hosted on GitHub at https://github.com/seamplex/feenox. It is public so it can be cloned either through HTTPS or SSH without needing any particular credentials. It can also be forked freely. See the Programming Guide for details about pull requests and/or write access to the main repository. Ideally, the main branch should have a usable snapshot. All other branches can contain code that might not compile or might not run or might not be tested. If you find a commit in the main branch that does not pass the tests, please report it in the issue tracker ASAP. After cloning the repository git clone https://github.com/seamplex/feenox the autogen.sh script has to be called to bootstrap the working tree, since the configure script is not stored in the repository but created from configure.ac (which is in the repository) by autogen.sh. Similarly, after updating the working tree with git pull it is recommended to re-run the autogen.sh script. It will do a make clean and re-compute the version string. [50]: programming.md Source tarballs When downloading a source tarball, there is no need to run autogen.sh since the configure script is already included in the tarball. This method cannot update the working tree. For each new FeenoX release, the whole source tarball has to be downloaded again. Configuration To create a proper Makefile for the particular architecture, dependencies and compilation options, the script configure has to be executed. This procedure follows the GNU Coding Standards. ./configure Without any particular options, configure will check if the mandatory GNU Scientific Library is available (both its headers and run-time library). If it is not, then the option --enable-download-gsl can be used. This option will try to use wget (which should be installed) to download a source tarball, uncompress, configure and compile it. If these steps are successful, this GSL will be statically linked into the resulting FeenoX executable. If there is no internet connection, the configure script will say that the download failed. In that case, get the indicated tarball file manually, copy it into the current directory and re-run ./configure. The script will also check for the availability of optional dependencies. At the end of the execution, a summary of what was found (or not) is printed in the standard output: $ ./configure [...] ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS IDA yes PETSc yes /usr/lib/petsc SLEPc no [...] If for some reason one of the optional dependencies is available but FeenoX should not use it, then pass --without-sundials, --without-petsc and/or --without-slepc as arguments. For example $ ./configure --without-sundials --without-petsc [...] ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS no PETSc no SLEPc no [...] If configure complains about contradicting values from the cached ones, run autogen.sh again before configure and/or clone/uncompress the source tarball in a fresh location. To see all the available options run ./configure --help [GNU Coding Standards]: https://www.gnu.org/prep/standards/ [GNU Scientific Library]: https://www.gnu.org/software/gsl/ Source code compilation After the successful execution of configure, a Makefile is created. To compile FeenoX, just execute make Compilation should take a dozen of seconds. It can be even sped up by using the -j option make -j8 The binary executable will be located in the src directory but a copy will be made in the base directory as well. Test it by running without any arguments $ ./feenox FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information Run with --help for further explanations. $ The -v (or --version) option shows the version and a copyright notice: $ ./feenox -v FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Copyright © 2009--2022 https://seamplex.com/feenox GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ The -V (or --versions) option shows the dates of the last commits, the compiler options and the versions of the linked libraries: $ ./feenox -V FeenoX v0.1.24-g6cfe063 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Last commit date : Sun Aug 29 11:34:04 2021 -0300 Build date : Sun Aug 29 11:44:50 2021 -0300 Build architecture : linux-gnu x86_64 Compiler version : gcc (Debian 10.2.1-6) 10.2.1 20210110 Compiler expansion : gcc -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich Compiler flags : -O3 Builder : gtheler@chalmers GSL version : 2.6 SUNDIALS version : 4.1.0 PETSc version : Petsc Release Version 3.14.5, Mar 03, 2021 PETSc arch : PETSc options : --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --with-option-checking=0 --with-silent-rules=0 --libdir=${prefix}/lib/x86_64-linux-gnu --runstatedir=/run --with-maintainer-mode=0 --with-dependency-tracking=0 --with-debugging=0 --shared-library-extension=_real --with-shared-libraries --with-pic=1 --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --with-cxx-dialect=C++11 --with-opencl=1 --with-blas-lib=-lblas --with-lapack-lib=-llapack --with-scalapack=1 --with-scalapack-lib=-lscalapack-openmpi --with-ptscotch=1 --with-ptscotch-include=/usr/include/scotch --with-ptscotch-lib="-lptesmumps -lptscotch -lptscotcherr" --with-fftw=1 --with-fftw-include="[]" --with-fftw-lib="-lfftw3 -lfftw3_mpi" --with-superlu_dist=1 --with-superlu_dist-include=/usr/include/superlu-dist --with-superlu_dist-lib=-lsuperlu_dist --with-hdf5-include=/usr/include/hdf5/openmpi --with-hdf5-lib="-L/usr/lib/x86_64-linux-gnu/hdf5/openmpi -L/usr/lib/x86_64-linux-gnu/openmpi/lib -lhdf5 -lmpi" --CXX_LINKER_FLAGS=-Wl,--no-as-needed --with-hypre=1 --with-hypre-include=/usr/include/hypre --with-hypre-lib=-lHYPRE_core --with-mumps=1 --with-mumps-include="[]" --with-mumps-lib="-ldmumps -lzmumps -lsmumps -lcmumps -lmumps_common -lpord" --with-suitesparse=1 --with-suitesparse-include=/usr/include/suitesparse --with-suitesparse-lib="-lumfpack -lamd -lcholmod -lklu" --with-superlu=1 --with-superlu-include=/usr/include/superlu --with-superlu-lib=-lsuperlu --prefix=/usr/lib/petscdir/petsc3.14/x86_64-linux-gnu-real --PETSC_ARCH=x86_64-linux-gnu-real CFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC" CXXFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC" FCFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fPIC -ffree-line-length-0" FFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fPIC -ffree-line-length-0" CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2" LDFLAGS="-Wl,-Bsymbolic-functions -flto=auto -Wl,-z,relro -fPIC" MAKEFLAGS=w SLEPc version : SLEPc Release Version 3.14.2, Feb 01, 2021 $ Test suite The test directory contains a set of test cases whose output is known so that unintended regressions can be detected quickly (see the programming guide for more information). The test suite ought to be run after each modification in FeenoX’s source code. It consists of a set of scripts and input files needed to solve dozens of cases. The output of each execution is compared to a reference solution. In case the output does not match the reference, the test suite fails. After compiling FeenoX as explained in sec. 13.4.5, the test suite can be run with make check. Ideally everything should be green meaning the tests passed: $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh PASS: tests/beam-modal.sh PASS: tests/beam-ortho.sh PASS: tests/builtin.sh PASS: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh PASS: tests/i-beam-euler-bernoulli.sh PASS: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh PASS: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh PASS: tests/nafems-le1.sh PASS: tests/nafems-le10.sh PASS: tests/nafems-le11.sh PASS: tests/nafems-t1-4.sh PASS: tests/nafems-t2-3.sh PASS: tests/neutron_diffusion_src.sh PASS: tests/neutron_diffusion_keff.sh PASS: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh PASS: tests/thermal-1d.sh PASS: tests/thermal-2d.sh PASS: tests/trig.sh PASS: tests/two-cubes-isotropic.sh PASS: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh XFAIL: tests/xfail-few-properties-ortho-young.sh XFAIL: tests/xfail-few-properties-ortho-poisson.sh XFAIL: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 39 # SKIP: 0 # XFAIL: 4 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ The XFAIL result means that those cases are expected to fail (they are there to test if FeenoX can handle errors). Failure would mean they passed. In case FeenoX was not compiled with any optional dependency, the corresponding tests will be skipped. Skipped tests do not mean any failure, but that the compiled FeenoX executable does not have the full capabilities. For example, when configuring with ./configure --without-petsc (but with SUNDIALS), the test suite output should be a mixture of green and blue: $ ./configure --without-petsc [...] configure: creating ./src/version.h ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS yes PETSc no SLEPc no Compiler gcc checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating doc/Makefile config.status: executing depfiles commands $ make [...] $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh SKIP: tests/beam-modal.sh SKIP: tests/beam-ortho.sh PASS: tests/builtin.sh SKIP: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh SKIP: tests/i-beam-euler-bernoulli.sh SKIP: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh SKIP: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh SKIP: tests/nafems-le1.sh SKIP: tests/nafems-le10.sh SKIP: tests/nafems-le11.sh SKIP: tests/nafems-t1-4.sh SKIP: tests/nafems-t2-3.sh SKIP: tests/neutron_diffusion_src.sh SKIP: tests/neutron_diffusion_keff.sh SKIP: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh SKIP: tests/thermal-1d.sh SKIP: tests/thermal-2d.sh PASS: tests/trig.sh SKIP: tests/two-cubes-isotropic.sh SKIP: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh SKIP: tests/xfail-few-properties-ortho-young.sh SKIP: tests/xfail-few-properties-ortho-poisson.sh SKIP: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 21 # SKIP: 21 # XFAIL: 1 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ To illustrate how regressions can be detected, let us add a bug deliberately and re-run the test suite. Edit the source file that contains the shape functions of the second-order tetrahedra src/mesh/tet10.c, find the function feenox_mesh_tet10_h() and randomly change a sign, i.e. replace return t*(2*t-1); with return t*(2*t+1); Save, recompile, and re-run the test suite to obtain some red: $ git diff src/mesh/ diff --git a/src/mesh/tet10.c b/src/mesh/tet10.c index 72bc838..293c290 100644 --- a/src/mesh/tet10.c +++ b/src/mesh/tet10.c @@ -227,7 +227,7 @@ double feenox_mesh_tet10_h(int j, double *vec_r) { return s*(2*s-1); break; case 3: - return t*(2*t-1); + return t*(2*t+1); break; case 4: $ make [...] $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh FAIL: tests/beam-modal.sh PASS: tests/beam-ortho.sh PASS: tests/builtin.sh PASS: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh PASS: tests/i-beam-euler-bernoulli.sh PASS: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh PASS: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh PASS: tests/nafems-le1.sh FAIL: tests/nafems-le10.sh FAIL: tests/nafems-le11.sh PASS: tests/nafems-t1-4.sh PASS: tests/nafems-t2-3.sh PASS: tests/neutron_diffusion_src.sh PASS: tests/neutron_diffusion_keff.sh FAIL: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh PASS: tests/thermal-1d.sh PASS: tests/thermal-2d.sh PASS: tests/trig.sh PASS: tests/two-cubes-isotropic.sh PASS: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh XFAIL: tests/xfail-few-properties-ortho-young.sh XFAIL: tests/xfail-few-properties-ortho-poisson.sh XFAIL: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 35 # SKIP: 0 # XFAIL: 4 # FAIL: 4 # XPASS: 0 # ERROR: 0 ============================================================================ See ./test-suite.log Please report to jeremy@seamplex.com ============================================================================ make[3]: *** [Makefile:1152: test-suite.log] Error 1 make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: *** [Makefile:1260: check-TESTS] Error 2 make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: *** [Makefile:1791: check-am] Error 2 make[1]: Leaving directory '/home/gtheler/codigos/feenox' make: *** [Makefile:1037: check-recursive] Error 1 $ [test]: https://github.com/seamplex/feenox/tree/main/tests [programming guide50]: programming.md Installation To be able to execute FeenoX from any directory, the binary has to be copied to a directory available in the PATH environment variable. If you have root access, the easiest and cleanest way of doing this is by calling make install with sudo or su: $ sudo make install Making install in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' gmake[2]: Entering directory '/home/gtheler/codigos/feenox/src' /usr/bin/mkdir -p '/usr/local/bin' /usr/bin/install -c feenox '/usr/local/bin' gmake[2]: Nothing to be done for 'install-data-am'. gmake[2]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make[2]: Entering directory '/home/gtheler/codigos/feenox' make[2]: Nothing to be done for 'install-exec-am'. make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ If you do not have root access or do not want to populate /usr/local/bin, you can either - Configure with a different prefix (not covered here), or - Copy (or symlink) the feenox executable to $HOME/bin: mkdir -p ${HOME}/bin cp feenox ${HOME}/bin If you plan to regularly update FeenoX (which you should), you might want to symlink instead of copy so you do not need to update the binary in $HOME/bin each time you recompile: mkdir -p ${HOME}/bin ln -sf feenox ${HOME}/bin Check that FeenoX is now available from any directory (note the command is feenox and not ./feenox): $ cd $ feenox -v FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Copyright © 2009--2022 https://seamplex.com/feenox GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ If it is not and you went through the $HOME/bin path, make sure it is in the PATH (pun). Add export PATH=${PATH}:${HOME}/bin to your .bashrc in your home directory and re-login. Advanced settings Compiling with debug symbols By default the C flags are -O3, without debugging. To add the -g flag, just use CFLAGS when configuring: ./configure CFLAGS="-g -O0" Using a different compiler FeenoX uses the CC environment variable to set the compiler. So configure like export CC=clang; ./configure Note that the CC variable has to be exported and not passed to configure. That is to say, don’t configure like ./configure CC=clang Mind also the following environment variables when using MPI-enabled PETSc: - MPICH_CC - OMPI_CC - I_MPI_CC Depending on how your system is configured, this last command might show clang but not actually use it. The FeenoX executable will show the configured compiler and flags when invoked with the --versions option: $ feenox --versions FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Last commit date : Sat Feb 12 15:35:05 2022 -0300 Build date : Sat Feb 12 15:35:44 2022 -0300 Build architecture : linux-gnu x86_64 Compiler version : gcc (Debian 10.2.1-6) 10.2.1 20210110 Compiler expansion : gcc -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich Compiler flags : -O3 Builder : gtheler@tom GSL version : 2.6 SUNDIALS version : 5.7.0 PETSc version : Petsc Release Version 3.16.3, Jan 05, 2022 PETSc arch : arch-linux-c-debug PETSc options : --download-eigen --download-hdf5 --download-hypre --download-metis --download-mumps --download-parmetis --download-pragmatic --download-scalapack SLEPc version : SLEPc Release Version 3.16.1, Nov 17, 2021 $ You can check which compiler was actually used by analyzing the feenox binary as $ objdump -s --section .comment ./feenox ./feenox: file format elf64-x86-64 Contents of section .comment: 0000 4743433a 20284465 6269616e 2031322e GCC: (Debian 12. 0010 322e302d 31342920 31322e32 2e300044 2.0-14) 12.2.0.D 0020 65626961 6e20636c 616e6720 76657273 ebian clang vers 0030 696f6e20 31342e30 2e3600 ion 14.0.6. $ It should be noted that the MPI implementation used to compile FeenoX has to match the one used to compile PETSc. Therefore, if you compiled PETSc on your own, it is up to you to ensure MPI compatibility. If you are using PETSc as provided by your distribution’s repositories, you will have to find out which one was used (it is usually OpenMPI) and use the same one when compiling FeenoX. FeenoX has been tested using PETSc compiled with - MPICH - OpenMPI - Intel MPI Compiling PETSc Particular explanation for FeenoX is to be done. For now, follow the general explanation from PETSc’s website. export PETSC_DIR=$PWD export PETSC_ARCH=arch-linux-c-opt ./configure --with-debugging=0 --download-mumps --download-scalapack --with-cxx=0 --COPTFLAGS=-O3 --FOPTFLAGS=-O3 export PETSC_DIR=$PWD ./configure --with-debugging=0 --with-openmp=0 --with-x=0 --with-cxx=0 --COPTFLAGS=-O3 --FOPTFLAGS=-O3 make PETSC_DIR=/home/ubuntu/reflex-deps/petsc-3.17.2 PETSC_ARCH=arch-linux-c-opt all [general explanation from PETSc’s website]: https://petsc.org/release/install/ Appendix: Inputs for solving LE10 with other FEA programs This appendix illustrates the differences in the input file formats used by FeenoX and the ones used by other open source finite-element solvers. The problem being solved is the NAFEMS LE10 benchmark, first discussed in sec. 1.2: # NAFEMS Benchmark LE-10: thick plate pressure PROBLEM mechanical DIMENSIONS 3 READ_MESH nafems-le10.msh # mesh in millimeters # LOADING: uniform normal pressure on the upper surface BC upper p=1 # 1 Mpa # BOUNDARY CONDITIONS: BC DCD'C' v=0 # Face DCD'C' zero y-displacement BC ABA'B' u=0 # Face ABA'B' zero x-displacement BC BCB'C' u=0 v=0 # Face BCB'C' x and y displ. fixed BC midplane w=0 # z displacements fixed along mid-plane # MATERIAL PROPERTIES: isotropic single-material properties E = 210e3 # Young modulus in MPa nu = 0.3 # Poisson's ratio SOLVE_PROBLEM # solve! # print the direct stress y at D (and nothing more) PRINT "σ_y @ D = " sigmay(2000,0,300) "MPa" See the following URL and its links for further details about solving this problem with the other codes: https://cofea.readthedocs.io/en/latest/benchmarks/004-eliptic-membrane/tested-codes.html [NAFEMS LE10 benchmark]: https://www.seamplex.com/feenox/examples/#nafems-le10-thick-plate-pressure-benchmark CalculiX ** Mesh ++++++++++++++++++++++++++++++++++++++++++++++++++++ *INCLUDE, INPUT=Mesh/fine-lin-hex.inp # Path to mesh for ccx solver ** Mesh ++++++++++++++++++++++++++++++++++++++++++++++++++++ *MATERIAL, NAME=Steel # Defining a material *DENSITY 7800 # Defining a density *ELASTIC, 2.1e11, 0.3 # Defining Young modulus and Poisson's ratio ** Sections ++++++++++++++++++++++++++++++++++++++++++++++++ *SOLID SECTION, ELSET=ELIPSE, MATERIAL=Steel # Assigning material and plane stress elements 0.1, # to the elements sets in mesh and adding thickness ** Steps +++++++++++++++++++++++++++++++++++++++++++++++++++ *STEP # Begin of analysis *STATIC, SOLVER=SPOOLES # Selection of elastic analysis ** Field outputs +++++++++++++++++++++++++++++++++++++++++++ *EL FILE # Commands responsible for saving results E, S *NODE FILE U ** Boundary conditions +++++++++++++++++++++++++++++++++++++ *BOUNDARY, # Applying translation = 0 on desired nodes AB,1,1,0 *BOUNDARY CD,2,2,0 ** Boundary conditions(adding pressure) ++++++++++++++++++++ *DLOAD *INCLUDE, INPUT=Pressure/fine-lin-hex.dlo ** End step ++++++++++++++++++++++++++++++++++++++++++++++++ *END STEP # End on analysis Code Aster mesh = LIRE_MAILLAGE(identifier='0:1', # Reading a mesh FORMAT='IDEAS', UNITE=80) model = AFFE_MODELE(identifier='1:1', # Assignig plane stress AFFE=_F(MODELISATION=('C_PLAN', ), # elements to mesh PHENOMENE='MECANIQUE', TOUT='OUI'), MAILLAGE=mesh) mater = DEFI_MATERIAU(identifier='2:1', # Defining elastic material ELAS=_F(E=210000000000.0, NU=0.3)) materfl = AFFE_MATERIAU(identifier='3:1', # Assigning material to model AFFE=_F(MATER=(mater, ), TOUT='OUI'), MODELE=model) mecabc = AFFE_CHAR_MECA(identifier='4:1', # Applying boundary conditions DDL_IMPO=(_F(DX=0.0, # displacement = 0 GROUP_MA=('AB', )), # to the selected group of elements _F(DY=0.0, GROUP_MA=('CD', ))), MODELE=model) mecach = AFFE_CHAR_MECA(identifier='5:1', # Applying pressure to the MODELE=model, # group of elements PRES_REP=_F(GROUP_MA=('BC', ), PRES=-10000000.0)) result = MECA_STATIQUE(identifier='6:1', # Defining the results of CHAM_MATER=materfl, # simulation EXCIT=(_F(CHARGE=mecabc), _F(CHARGE=mecach)), MODELE=model) SYY = CALC_CHAMP(identifier='7:1', # Calculating stresses in CHAM_MATER=materfl, # computed domain CONTRAINTE=('SIGM_NOEU', ), MODELE=model, RESULTAT=result) IMPR_RESU(identifier='8:1', # Saving the results FORMAT='MED', RESU=(_F(RESULTAT=result), _F(RESULTAT=SYY)), UNITE=80) FIN() Elmer Header CHECK KEYWORDS Warn Mesh DB "." "." # Path to the mesh Include Path "" Results Directory "" # Path to results directory End Simulation # Settings and constants for simulation Max Output Level = 5 Coordinate System = Cartesian Coordinate Mapping(3) = 1 2 3 Simulation Type = Steady state Steady State Max Iterations = 1 Output Intervals = 1 Timestepping Method = BDF BDF Order = 1 Solver Input File = case.sif Post File = case.vtu End Constants Gravity(4) = 0 -1 0 9.82 Stefan Boltzmann = 5.67e-08 Permittivity of Vacuum = 8.8542e-12 Boltzmann Constant = 1.3807e-23 Unit Charge = 1.602e-19 End Body 1 # Assigning the material and equations to the mesh Target Bodies(1) = 10 Name = "Body Property 1" Equation = 1 Material = 1 End Solver 2 # Solver settings Equation = Linear elasticity Procedure = "StressSolve" "StressSolver" Calculate Stresses = True Variable = -dofs 2 Displacement Exec Solver = Always Stabilize = True Bubbles = False Lumped Mass Matrix = False Optimize Bandwidth = True Steady State Convergence Tolerance = 1.0e-5 Nonlinear System Convergence Tolerance = 1.0e-7 Nonlinear System Max Iterations = 20 Nonlinear System Newton After Iterations = 3 Nonlinear System Newton After Tolerance = 1.0e-3 Nonlinear System Relaxation Factor = 1 Linear System Solver = Direct Linear System Direct Method = Umfpack End Solver 1 # Saving the results from node at point D Equation = SaveScalars Save Points = 26 Procedure = "SaveData" "SaveScalars" Filename = file.dat Exec Solver = After Simulation End Equation 1 # Setting active solvers Name = "STRESS" Calculate Stresses = True Plane Stress = True # Turning on plane stress simulation Active Solvers(1) = 2 End Equation 2 Name = "DATA" Active Solvers(1) = 1 End Material 1 # Defining the material Name = "STEEL" Poisson ratio = 0.3 Porosity Model = Always saturated Youngs modulus = 2.1e11 End Boundary Condition 1 # Applying the boundary conditions Target Boundaries(1) = 12 Name = "AB" Displacement 1 = 0 End Boundary Condition 2 Target Boundaries(1) = 13 Name = "CD" Displacement 2 = 0 End Boundary Condition 3 Target Boundaries(1) = 14 Name = "BC" Normal Force = 10e6 End Appendix: Downloading and compiling FeenoX Binary executables Browse to https://www.seamplex.com/feenox/dist/ and check what the latest version for your architecture is. Then do feenox_version=1.0.8 wget -c https://www.seamplex.com/feenox/dist/linux/feenox-v${feenox_version}-linux-amd64.tar.gz tar xzf feenox-v${feenox_version}-linux-amd64.tar.gz sudo cp feenox-v${feenox_version}-linux-amd64/bin/feenox /usr/local/bin You’ll have the binary under bin and examples, documentation, manpage, etc under share. Copy bin/feenox into somewhere in the PATH and that will be it. If you are root, do sudo cp feenox-v${feenox_version}-linux-amd64/bin/feenox /usr/local/bin If you are not root, the usual way is to create a directory $HOME/bin and add it to your local path. If you have not done it already, do mkdir -p $HOME/bin echo 'expot PATH=$PATH:$HOME/bin' >> .bashrc Then finally copy bin/feenox to $HOME/bin cp feenox-v${feenox_version}-linux-amd64/bin/feenox $HOME/bin Check if it works by calling feenox from any directory (you might need to open a new terminal so .bashrc is re-read): $ feenox FeenoX v1.0.8-g731ca5d a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: ./feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information -c, --check validates if the input file is sane or not --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Run with --help for further explanations. $ Source tarballs To compile the source tarball, proceed as follows. This procedure does not need git nor autoconf but a new tarball has to be downloaded each time there is a new FeenoX version. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install gcc make libgsl-dev If you cannot install libgsl-dev, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Download and un-compress FeenoX source tarball. Browse to https://www.seamplex.com/feenox/dist/src/ and pick the latest version: wget https://www.seamplex.com/feenox/dist/src/feenox-v0.1.66-g1c4b17b.tar.gz tar xvzf feenox-v0.1.66-g1c4b17b.tar.gz 4. Configure, compile & make cd feenox-v0.1.66-g1c4b17b ./configure make -j4 If you cannot (or do not want) to use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install Git repository To compile the Git repository, proceed as follows. This procedure does need git and autoconf but new versions can be pulled and recompiled easily. If something goes wrong and you get an error, do not hesitate to ask in FeenoX’s discussion page. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install git build-essential make automake autoconf libgsl-dev If you cannot install libgsl-dev but still have git and the build toolchain, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Clone Github repository git clone https://github.com/seamplex/feenox 4. Bootstrap, configure, compile & make cd feenox ./autogen.sh ./configure make -j4 If you cannot (or do not want to) use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. See the detailed compilation instructions for an explanation. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install To stay up to date, pull and then autogen, configure and make (and optionally install): git pull ./autogen.sh; ./configure; make -j4 sudo make install [discussion page]: https://github.com/seamplex/feenox/discussions [detailed compilation instructions]: compilation.md Appendix: Rules of Unix philosophy In 1978, Doug McIlroy—the inventor of Unix pipes and one of the founders of the Unix tradition—stated: i. Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features. ii. Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input. iii. Design and build software, even operating systems, to be tried early, ideally within weeks. Don’t hesitate to throw away the clumsy parts and rebuild them. iv. Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you’ve finished using them. He later summarized it this way: This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. FeenoX explicitly followed the above ideas from scratch, especially the for sentences in bullet ii. It is even, like Unix itself, a third-system effect where clumsy parts of previous attempts were thrown away and rebuilt from scratch. The following sections explain how each of the seventeen rules was taken into account when designing and implementing FeenoX. Rule of Modularity Developers should build a program out of simple parts connected by well defined interfaces, so problems are local, and parts of the program can be replaced in future versions to support new features. This rule aims to save time on debugging code that is complex, long, and unreadable. FeenoX is designed to be as lightweight as possible. On the one hand, it relies on third-party high-quality libraries to do the heavy mathematical weightlifting such as - GNU Scientific Library for general mathematics, - SUNDIALS IDA for ODEs and DAEs, - PETSc for linear, non-linear and transient PDEs, and - SLEPc for PDEs involving eigen problems because these libraries were written by professional programmers using algorithms designed by professional mathematicians. Yet-to-be-discovered improved mathematical schemes and/or coding algorithms can be eventually used by FeenoX by just updating those dependencies, which for sure will keep their well-defined interfaces (because they are programmed by professional programmers). Moreover, the extensibility feature (sec. 11.17) of having each PDE in separate directories which can be added or removed at compile time without changing any line of the source code goes into this direction as well. Relying of C function pointers allows (in principle) to replace these “virtual” methods with other ones using the same interface. Note that our (human) languages in general and words in particular shape and limit the way we think. Fortran’s concept of “modules” is not the same as Unix’s concept of “modularity.” I wish two different words had been used. [GNU Scientific Library]: https://www.gnu.org/software/gsl/ [SUNDIALS IDA]: https://computing.llnl.gov/projects/sundials/ida [PETSc]: https://petsc.org/ [SLEPc]: http://slepc.upv.es/ Rule of Clarity Developers should write programs as if the most important communication is to the developer who will read and maintain the program, rather than the computer. This rule aims to make code as readable and comprehensible as possible for whoever works on the code in the future. Of course there might be a confirmation bias in this section because every programmer thinks their code is clear (and everybody else’s is not). But the first design decision to fulfill this rule is the programming language: there is little change to fulfill it with Fortran. One might argue that C++ can be clearer than C in some points, but for the vast majority of the source code they are equally clear. Besides, C is far simpler than C++ (see rule of simplicity). The second decision is not about the FeenoX source code but about FeenoX inputs: clear human-readable input files without any extra unneeded computer-level nonsense. The two illustrative cases are the NAFEMS LE10 & LE11 benchmarks, where there is a clear one-to-one correspondence between the “engineering” formulation and the input file FeenoX understands. [LE10]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [LE11]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le11-solid-cylindertapersphere-temperature-benchmark Rule of Composition Developers should write programs that can communicate easily with other programs. This rule aims to allow developers to break down projects into small, simple programs rather than overly complex monolithic programs. Previous designs of FeenoX’ predecessors used to include instructions to perform parametric sweeps( and even optimization loops), non-trivial macro expansions using M4 and even execution of arbitrary shell commands. These non-trivial operations were removed from FeenoX to focus on the rule of composition, paying especially attention to easing the inclusion of calling the feenox binary from shell scripts, enforcing the composition with other Unix-like tools. Emphasis has been put on adding flexibility to programmatic generation of input files (see also rule of generation in sec. 11.14) and the handling and expansion of command-line arguments to increase the composition with other programs. Moreover, the output is 100% controlled by the user at run-time so it can be tailored to suit any other programs’ input needs as well. An illustrative example is creating professional-looking tables with results using AWK & LaTeX. [creating professional-looking tables with results using AWK & LaTeX]: https://www.seamplex.com/feenox/doc/sds.html#sec:interoperability Rule of Separation Developers should separate the mechanisms of the programs from the policies of the programs; one method is to divide a program into a front-end interface and a back-end engine with which that interface communicates. This rule aims to prevent bug introduction by allowing policies to be changed with minimum likelihood of destabilizing operational mechanisms. FeenoX relies of the rule of separation (which also links to the next two rules of simplicity and parsimony) from the very beginning of its design phase. It was explicitly designed as a glue layer between a mesher like Gmsh and a post-processor like Gnuplot, Gmsh or Paraview. This way, not only flexibility and diversity (see #sec:unix-diversity) can be boosted, but also technological changes can be embraced with little or no effort. For example, CAEplex provides a web-based platform for performing thermo-mechanical analysis on the cloud running from the browser. Had FeenoX been designed as a traditional desktop-GUI program, this would have been impossible. If in the future CAD/CAE interfaces migrate into virtual and/or augmented reality with interactive 3D holographic input/output devices, the development effort needed to use FeenoX as the back end is negligible. [CAEplex]: https://www.caeplex.com Rule of Simplicity Developers should design for simplicity by looking for ways to break up program systems into small, straightforward cooperating pieces. This rule aims to discourage developers’ affection for writing “intricate and beautiful complexities” that are in reality bug prone programs. The main source of simplicity comes from the design of the syntax of the input files, discussed in detail in the SDS: - English-like self-evident input files matching as close as possible the problem text. - Simple problems need simple input. - Similar problems need similar inputs. - If there is a single material there is no need to link volumes to properties. [SDS]: https://www.seamplex.com/feenox/doc/sds.html#sec:input Rule of Parsimony Developers should avoid writing big programs. This rule aims to prevent overinvestment of development time in failed or suboptimal approaches caused by the owners of the program’s reluctance to throw away visibly large pieces of work. Smaller programs are not only easier to write, optimize, and maintain; they are easier to delete when deprecated. We already said that FeenoX is a glue layer between a mesher and a post-processing tool. Even more, at another level, it acts as two glue layers between the mesher and PETSc, and PETSc and the post-processor. On the other hand, we also already stated that FeenoX was written from scratch after throwing away clumsy code from two previous attempts. For instance, these previous versions used to implement parametric and optimization schemes. Instead, in FeenoX, these type of runs have to be driven from an outer script (Bash, Python, etc.) Rule of Transparency Developers should design for visibility and discoverability by writing in a way that their thought process can lucidly be seen by future developers working on the project and using input and output formats that make it easy to identify valid input and correct output. This rule aims to reduce debugging time and extend the lifespan of programs. As with the rule of clarity (sec. 11.2), there is a risk of falling into the confirmation bias because every programmer thinks its code is transparent. Anyway, FeenoX is written in C99 which is way easier to debug than both Fortran and C++. Yet, very much like PETSc, FeenoX makes use of structures and function pointers to give the same functionality as C++’s virtual methods without needing to introduce other complexities that make the code base harder to maintain and to debug. Regarding identification of valid inputs and correct outputs, 1. The build system includes a make check target that runs hundreds of regressions tests. 2. The code supports verification using the Method of Manufactured Solutions [regressions tests]: https://github.com/seamplex/feenox/tree/main/tests [Method of Manufactured Solutions]: https://github.com/seamplex/feenox/tree/main/tests/mms Rule of Robustness Developers should design robust programs by designing for transparency and discoverability, because code that is easy to understand is easier to stress test for unexpected conditions that may not be foreseeable in complex programs. This rule aims to help developers build robust, reliable products. Robustness is the child of transparency and simplicity. Rule of Representation Developers should choose to make data more complicated rather than the procedural logic of the program when faced with the choice, because it is easier for humans to understand complex data compared with complex logic. This rule aims to make programs more readable for any developer working on the project, which allows the program to be maintained. There is a trade off between clarity and efficiency. However, avoiding Fortran should already fulfill this rule. FeenoX uses C structures with function pointers, which make it far simple to understand than similar Fortran-based FEM tools. Just compare the source directories of FeenoX and CalculiX. Take for instance the file stress.c from src/pdes/mechanical (which if deleted, will remove support for mechanical problems but it will not prevent the compilation of feenox) from the former and calcstress.f (buried inside 2,400 files in src) from the latter. There might be more illustrative examples showing how FeenoX’ design is more representative than of CalculiX, but it is way too hard to understand the source code of the latter (even though the license is supposed to be GPL). [stress.c]: https://github.com/seamplex/feenox/blob/main/src/pdes/mechanical/stress.c [calcstress.f]: https://github.com/calculix/ccx_prool/blob/master/CalculiX/ccx_2.21/src/calcstress.f [src]: https://github.com/calculix/ccx_prool/tree/master/CalculiX/ccx_2.21/src Rule of Least Surprise Developers should design programs that build on top of the potential users’ expected knowledge; for example, ‘+’ in a calculator program should always mean ‘addition’. This rule aims to encourage developers to build intuitive products that are easy to use. The rules of input syntax have been designed with this rule in mind. Just note a couple of them: - The command-line arguments after the input file are available to be expanded verbatim in the input file as $1, $2, etc. (or ${1}, ${2}, etc. if they appear in the middle of strings). This syntax matches Bash’ syntax for expanding command-line arguments, so any person reading an input file with this syntax already knows what it does. ´ - If one needs a problem where the conductivity depends on x as k(x) = 1 + x then the input is k(x) = 1+x - If a problem needs a temperature distribution given by an algebraic expression $T(x,y,z)=\sqrt{x^2+y^2}+z$ then do T(x,y,z) = sqrt(x^2+y^2) + z - This syntax for (basic) algebraic expressions matches the common syntax found in Gmsh, Maxima and many other scientific tools. More complex expressions (e.g. involving hyperbolic tangents) might differ slightly. Rule of Silence Developers should design programs so that they do not print unnecessary output. This rule aims to allow other programs and developers to pick out the information they need from a program’s output without having to parse verbosity. TL;DR: no PRINT (or WRITE_RESULTS), no output. Rule of Repair Developers should design programs that fail in a manner that is easy to localize and diagnose or in other words “fail noisily”. This rule aims to prevent incorrect output from a program from becoming an input and corrupting the output of other code undetected. Input errors are detected before the computation is started: $ feenox thermal-error.fee error: undefined thermal conductivity 'k' $ Run-time errors (even inside the numerical libraries) are caught with custom handlers. Rule of Economy Developers should value developer time over machine time, because machine cycles today are relatively inexpensive compared to prices in the 1970s. This rule aims to reduce development costs of projects. As explained in the SDS, output is 100% user-defined so only the desired results are directly obtained instead of needing further digging into tons of undesired data. The approach of “compute and write everything you can in one single run” made sense in 1970 where CPU time was more expensive than human time, but not anymore. Once again, the iconic examples are the NAFEMS LE10 & LE11 benchmarks, where just the required scalar stress at the required location is written into the standard output. [SDS39]: https://www.seamplex.com/feenox/doc/sds.html#sec:output [LE10]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [LE11]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le11-solid-cylindertapersphere-temperature-benchmark Rule of Generation Developers should avoid writing code by hand and instead write abstract high-level programs that generate code. This rule aims to reduce human errors and save time. Some key points: - Input files are M4-like-macro friendly. - Parametric runs can be done from scripts through expansion of command line arguments. - Documentation is created out of simple Markdown sources and assembled as needed. More saliently, the automatic detection of the available PDEs in src/pdes is an example of this rule. The autogen.sh would loop over each subdirectory and create a source file src/pdes/parser.c with a function feenox_pde_parse_problem_type() which then will be part of the actual FeenoX source base as the entry point for parsing the PROBLEM keyword. Rule of Optimization Developers should prototype software before polishing it. This rule aims to prevent developers from spending too much time for marginal gains. FeenoX is still “premature” for heavy optimization. Yet, it is (relatively) faster than other alternatives. It does use link-time optimization to allow for inlining of small routines. There is even a FeenoX benchmarking repository that uses Google’s Benchmark library to prototype code optimization: https://github.com/seamplex/feenox-benchmark. Rule of Diversity Developers should design their programs to be flexible and open. This rule aims to make programs flexible, allowing them to be used in ways other than those their developers intended. FeenoX can read Gmsh files, but they need not necessarily be created by Gmsh. Other meshing formats (VTK with group names?) are planned to be implemented. Also, either Gmsh or Paraview can be used to post-process results. But also other formats are planned. See sec. 11.17. Diversity is embraced from the bottom up! Rule of Extensibility Developers should design for the future by making their protocols extensible, allowing for easy plugins without modification to the program’s architecture by other developers, noting the version of the program, and more. This rule aims to extend the lifespan and enhance the utility of the code the developer writes. The main extensibility feature is that each PDE has a separate source directory. Any of them can be used as as template to add new PDEs, which are detected at compile time by the Autotools bootstrapping script. A final note is that FeenoX is GPLv3+. First, this means that extensions and contributions are welcome. Each author retains the copyright on the contributed code (as long as it is free software). Second, the + is there for the future. Appendix: FeenoX history Very much like Unix in the late 1960s and C in the early 1970s, FeenoX is a third-system effect: I wrote a first hack that seemed to work better than I had expected. Then I tried to add a lot of features and complexities which I felt the code needed. After ten years of actual usage, I then realized 1. what was worth keeping, 2. what needed to be rewritten and 3. what had to be discarded. The first version was called wasora, the second was “The wasora suite” (i.e. a generic framework plus a bunch of “plugins”, including a thermo-mechanical one named Fino) and then finally FeenoX. The story that follows explains why I wrote the first hack to begin with. ------------------------------------------------------------------------ It was at the movies when I first heard about dynamical systems, non-linear equations and chaos theory. The year was 1993, I was ten years old and the movie was Jurassic Park. Dr. Ian Malcolm (the character portrayed by Jeff Goldblum) explained sensitivity to initial conditions in a memorable scene, which is worth watching again and again. Since then, the fact that tiny variations may lead to unexpected results has always fascinated me. During high school I attended a very interesting course on fractals and chaos that made me think further about complexity and its mathematical description. Nevertheless, it was not not until college that I was able to really model and solve the differential equations that give rise to chaotic behavior. [Dr. Ian Malcolm (Jeff Goldblum) explains sensitivity to initial conditions.] In fact, initial-value ordinary differential equations arise in a great variety of subjects in science and engineering. Classical mechanics, chemical kinetics, structural dynamics, heat transfer analysis and dynamical systems, among other disciplines, heavily rely on equations of the form $$ \dot{\mathbf{x}} = F(\mathbf{x},t) $$ During my years of undergraduate student (circa 2004–2007), whenever I had to solve these kind of equations I had to choose one of the following three options: 1. to program an ad-hoc numerical method such as Euler or Runge-Kutta, matching the requirements of the system of equations to solve, or 2. to use a standard numerical library such as the GNU Scientific Library and code the equations to solve into a C program (or maybe in Python), or 3. to use a high-level system such as Octave, Maxima, or some non-free (and worse, see below) programs. Of course, each option had its pros and its cons. But none provided the combination of advantages I was looking for, namely flexibility (option one), efficiency (option two) and reduced input work (partially given by option three). Back in those days I ended up wandering between options one and two, depending on the type of problem I had to solve. However, even though one can, with some effort, make the code read some parameters from a text file, any other drastic change usually requires a modification in the source code—some times involving a substantial amount of work—and a further recompilation of the code. This was what I most disliked about this way of working, but I could nevertheless live with it. Regardless of this situation, during my last year of Nuclear Engineering, the tipping point came along. Here’s a slightly-fictionalized of a dialog between myself and the teacher at the computer lab (Dr E.), as it might have happened (or not): — (Prof.) Open MATLAB.™ — (Me) It’s not installed here. I type mathlab and it does not work. — (Prof.) It’s spelled matlab. — (Me) Ok, working. (A screen with blocks and lines connecting them appears) — (Me) What’s this? — (Prof.) The point reactor equations. — (Me) It’s not. These are the point reactor equations: $$ \begin{cases} \dot{\phi}(t) = \displaystyle \frac{\rho(t) - \beta}{\Lambda} \cdot \phi(t) + \sum_{i=1}^{N} \lambda_i \cdot c_i \\ \dot{c}_i(t) = \displaystyle \frac{\beta_i}{\Lambda} \cdot \phi(t) - \lambda_i \cdot c_i \end{cases} $$ — (Me) And in any case, I’d write them like this in a computer: phi_dot = (rho-Beta)/Lambda * phi + sum(lambda[i], c[i], i, 1, N) c_dot[i] = beta[i]/Lambda * phi - lambda[i]*c[i] This conversation forced me to re-think the ODE-solving issue. I could not (and still cannot) understand why somebody would prefer to solve a very simple set of differential equations by drawing blocks and connecting them with a mouse with no mathematical sense whatsoever. Fast forward fifteen years, and what I wrote above is essentially how one would solve the point kinetics equations with FeenoX. [FeenoX40]: https://www.seamplex.com/feenox [Dr. Ian Malcolm]: https://en.wikipedia.org/wiki/Ian_Malcolm_(character) [Jeff Goldblum]: https://en.wikipedia.org/wiki/Jeff_Goldblum [memorable scene]: https://www.youtube.com/watch?v=n-mpifTiPV4 [Dr. Ian Malcolm (Jeff Goldblum) explains sensitivity to initial conditions.]: jurassicpark.jpg [Euler]: https://en.wikipedia.org/wiki/Euler_method [Runge-Kutta]: https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods [GNU Scientific Library]: https://www.gnu.org/software/gsl/ [Octave]: https://www.gnu.org/software/octave/index [Maxima]: https://maxima.sourceforge.io/ Appendix: Downloading & compiling Please note that FeenoX is a cloud-first back end aimed at advanced users. It does not include a graphical interface and it is not expected to run in Windows. See this 5-min explanation about why: For an easy-to-use web-based front end with FeenoX running in the cloud directly from your browser see CAEplex at https://www.caeplex.com. Any contribution to make desktop GUIs such as PrePoMax or FreeCAD to work with FeenoX are welcome. [back end]: https://en.wikipedia.org/wiki/Front_and_back_ends [CAEplex]: https://www.caeplex.com [PrePoMax]: https://prepomax.fs.um.si/ [FreeCAD]: http://https://www.freecadweb.org Downloads FeenoX is distributed under the terms of the GNU General Public License version 3 or (at your option) any later version. ----------------------------- ----------------------------------------------------- Debian packages https://packages.debian.org/unstable/science/feenox GNU/Linux binaries https://www.seamplex.com/feenox/dist/linux Source tarballs https://www.seamplex.com/feenox/dist/src Github repository https://github.com/seamplex/feenox/ ----------------------------- ----------------------------------------------------- - FeenoX is cloud-first. It was designed to run on servers. - Be aware that FeenoX does not have a GUI. Read the documentation, especially the description and the FAQs. Ask for help on the GitHub discussions page if you do now understand what this bullet means. - Debian/Ubuntu packages are unofficial, i.e. they are not available in apt repositories. They contain dynamically-linked binaries and their dependencies are hard-coded for each Debian/Ubuntu release. Make sure you get the right .deb for your release (i.e. bookworm/bullseye for Debian, kinetic/focal for Ubuntu). - Generic GNU/Linux binaries are provided as statically-linked executables for convenience. They do not support MUMPS nor MPI and have only basic optimization flags. Please compile from source for high-end applications. See detailed compilation instructions. - Try to avoid Windows as much as you can. The binaries are provided as transitional packages for people that for some reason still use such an outdated, anachronous, awful and invasive operating system. They are compiled with Cygwin and have no support whatsoever. Really, really, get rid of Windows ASAP. “It is really worth any amount of time and effort to get away from Windows if you are doing computational science.” https://lists.mcs.anl.gov/pipermail/petsc-users/2015-July/026388.html [GNU General Public License version 3]: https://www.gnu.org/licenses/gpl-3.0.en.html [cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first [documentation]: https://seamplex.com/feenox/doc/ [description]: https://www.seamplex.com/feenox/doc/feenox-desc.html [FAQs]: https://seamplex.com/feenox/doc/FAQ.html [GitHub discussions page]: https://github.com/seamplex/feenox/discussions [detailed compilation instructions41]: https://seamplex.com/feenox/doc/compilation.html [Cygwin42]: http://cygwin.com/ Debian/Ubuntu packages Debian/Ubuntu packages are available at https://www.seamplex.com/feenox/dist/. Find the directory for your Debian or Ubuntu release, i.e. - bookworm is Debian 12 - bullseye is Debian 11 - buster is Debian 10 - kinetic is Ubuntu 22.10 - jammy is Ubuntu 22.04 - focal is Ubuntu 20.04 If you know how to install .deb packages, feel free to use your method (i.e. gdebi or with the “Software Center” thing). You can can always use dpkg (as root): $ sudo dpkg -i feenox-0.3_1_amd64.deb Most likely, this step will fail due to failed dependencies. Just call apt to fix them for you: $ sudo apt-get --fix-broken install Now the command feenox should be globally available: $ feenox FeenoX v0.3 a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: ./feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information -c, --check validates if the input file is sane or not --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Run with --help for further explanations. $ If the execution fails, most likely the version of the .deb does not match your GNU/Linux release. Please try the statically-linked binaries below or ask in the FeenoX discussions page. The FeenoX Unix man page should be available in section one: $ man -k feenox feenox (1) - a cloud-first free no-X uniX-like finite-element(ish) computational engineering tool $ man feenox $ [bookworm]: https://www.seamplex.com/feenox/dist/deb/bookworm [bullseye]: https://www.seamplex.com/feenox/dist/deb/bullseye [buster]: https://www.seamplex.com/feenox/dist/deb/buster [kinetic]: https://www.seamplex.com/feenox/dist/deb/kinetic [jammy]: https://www.seamplex.com/feenox/dist/deb/jammy [focal]: https://www.seamplex.com/feenox/dist/deb/focal [FeenoX discussions]: https://github.com/seamplex/feenox/discussions Statically-linked binaries Browse to https://www.seamplex.com/feenox/dist/ and check what the latest version for your architecture is. Then do feenox_version=1.0.8 wget -c https://www.seamplex.com/feenox/dist/linux/feenox-v${feenox_version}-linux-amd64.tar.gz tar xzf feenox-v${feenox_version}-linux-amd64.tar.gz sudo cp feenox-v${feenox_version}-linux-amd64/bin/feenox /usr/local/bin You’ll have the binary under bin and examples, documentation, manpage, etc under share. Copy bin/feenox into somewhere in the PATH and that will be it. If you are root, do sudo cp feenox-v${feenox_version}-linux-amd64/bin/feenox /usr/local/bin If you are not root, the usual way is to create a directory $HOME/bin and add it to your local path. If you have not done it already, do mkdir -p $HOME/bin echo 'expot PATH=$PATH:$HOME/bin' >> .bashrc Then finally copy bin/feenox to $HOME/bin cp feenox-v${feenox_version}-linux-amd64/bin/feenox $HOME/bin Check if it works by calling feenox from any directory (you might need to open a new terminal so .bashrc is re-read): $ feenox FeenoX v1.0.8-g731ca5d a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: ./feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information -c, --check validates if the input file is sane or not --pdes list the types of PROBLEMs that FeenoX can solve, one per line --elements_info output a document with information about the supported element types --linear force FeenoX to solve the PDE problem as linear --non-linear force FeenoX to solve the PDE problem as non-linear Run with --help for further explanations. $ Compile from source To compile the source tarball, proceed as follows. This procedure does not need git nor autoconf but a new tarball has to be downloaded each time there is a new FeenoX version. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install gcc make libgsl-dev If you cannot install libgsl-dev, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Download and un-compress FeenoX source tarball. Browse to https://www.seamplex.com/feenox/dist/src/ and pick the latest version: wget https://www.seamplex.com/feenox/dist/src/feenox-v0.1.66-g1c4b17b.tar.gz tar xvzf feenox-v0.1.66-g1c4b17b.tar.gz 4. Configure, compile & make cd feenox-v0.1.66-g1c4b17b ./configure make -j4 If you cannot (or do not want) to use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install Github repository To compile the Git repository, proceed as follows. This procedure does need git and autoconf but new versions can be pulled and recompiled easily. If something goes wrong and you get an error, do not hesitate to ask in FeenoX’s discussion page. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install git build-essential make automake autoconf libgsl-dev If you cannot install libgsl-dev but still have git and the build toolchain, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Clone Github repository git clone https://github.com/seamplex/feenox 4. Bootstrap, configure, compile & make cd feenox ./autogen.sh ./configure make -j4 If you cannot (or do not want to) use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. See the detailed compilation instructions for an explanation. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install To stay up to date, pull and then autogen, configure and make (and optionally install): git pull ./autogen.sh; ./configure; make -j4 sudo make install See the Compilation Guide for details. Ask in the GitHub Discussions page for help. [discussion page]: https://github.com/seamplex/feenox/discussions [detailed compilation instructions]: compilation.md [Compilation Guide43]: doc/compile.md Licensing FeenoX is distributed under the terms of the GNU General Public License version 3 or (at your option) any later version. The following text was borrowed from the Gmsh documentation. Replacing “Gmsh” with “FeenoX” gives: FeenoX is “free software”; this means that everyone is free to use it and to redistribute it on a free basis. FeenoX is not in the public domain; it is copyrighted and there are restrictions on its distribution, but these restrictions are designed to permit everything that a good cooperating citizen would want to do. What is not allowed is to try to prevent others from further sharing any version of FeenoX that they might get from you. Specifically, we want to make sure that you have the right to give away copies of FeenoX, that you receive source code or else can get it if you want it, that you can change FeenoX or use pieces of FeenoX in new free programs, and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute copies of FeenoX, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. Also, for our own protection, we must make certain that everyone finds out that there is no warranty for FeenoX. If FeenoX is modified by someone else and passed on, we want their recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation. The precise conditions of the license for FeenoX are found in the General Public License that accompanies the source code. Further information about this license is available from the GNU Project webpage http://www.gnu.org/copyleft/gpl-faq.html. FeenoX is licensed under the terms of the GNU General Public License version 3 or, at the user convenience, any later version. This means that users get the four essential freedoms:[9] 0. The freedom to run the program as they wish, for any purpose. 1. The freedom to study how the program works, and change it so it does their computing as they wish. 2. The freedom to redistribute copies so they can help others. 3. The freedom to distribute copies of their modified versions to others. So a free program has to be open source, but it also has to explicitly provide the four freedoms above both through the written license and through appropriate mechanisms to get, modify, compile, run and document these modifications using well-established and/or reasonable straightforward procedures. That is why licensing FeenoX as GPLv3+ also implies that the source code and all the scripts and makefiles needed to compile and run it are available for anyone that requires it (i.e. it is compiled with ./configure && make). Anyone wanting to modify the program either to fix bugs, improve it or add new features is free to do so. And if they do not know how to program, the have the freedom to hire a programmer to do it without needing to ask permission to the original authors. Even more, the documentation is released under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License so these new (or modified) features can be properly documented as well. Nevertheless, since these original authors are the copyright holders, they still can use it to either enforce or prevent further actions from the users that receive FeenoX under the GPLv3+. In particular, the license allows re-distribution of modified versions only if a. they are clearly marked as different from the original, and b. they are distributed under the same terms of the GPLv3+. There are also some other subtle technicalities that need not be discussed here such as - what constitutes a modified version (which cannot be redistributed under a different license) - what is an aggregate (in which each part be distributed under different licenses) - usage over a network and the possibility of using AGPL instead of GPL to further enforce freedom These issues are already taken into account in the FeenoX licensing scheme. It should be noted that not only is FeenoX free and open source, but also all of the libraries it depends on (and their dependencies) also are. It can also be compiled using free and open source build tool chains running over free and open source operating systems. These detailed compilation instructions are aimed at amd64 Debian-based GNU/Linux distributions. The compilation procedure follows the POSIX standard, so it should work in other operating systems and architectures as well. Distributions not using apt for packages (i.e. yum) should change the package installation commands (and possibly the package names). The instructions should also work for in MacOS, although the apt-get commands should be replaced by brew or similar. Same for Windows under Cygwin, the packages should be installed through the Cygwin installer. WSL was not tested, but should work as well. [9] There are some examples of pieces of computational software which are described as “open source” in which even the first of the four freedoms is denied. The most iconic case is that of Android, whose sources are readily available online but there is no straightforward way of updating one’s mobile phone firmware with a customized version, not to mention vendor and hardware lock ins and the possibility of bricking devices if something unexpected happens. In the nuclear industry, it is the case of a Monte Carlo particle-transport program that requests users to sign an agreement about the objective of its usage before allowing its execution. The software itself might be open source because the source code is provided after signing the agreement, but it is not free (as in freedom) at all. [GNU General Public License44]: http://www.gnu.org/copyleft/gpl.html [Gmsh documentation]: http://gmsh.info/doc/texinfo/gmsh.html#Copying-conditions [General Public License]: https://github.com/seamplex/feenox/blob/master/COPYING [GNU General Public License]: https://www.gnu.org/licenses/gpl-3.0 [the documentation]: https://seamplex.com/feenox/doc/ [Creative Commons Attribution-ShareAlike 4.0 International License]: https://creativecommons.org/licenses/by-sa/4.0/ [AGPL]: https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License [POSIX standard]: https://en.wikipedia.org/wiki/POSIX [Cygwin]: https://www.cygwin.com/ Quickstart Note that the quickest way to get started is to download an already-compiled statically-linked binary executable. Note that getting a binary is the quickest and easiest way to go but it is the less flexible one. Mind the following instructions if a binary-only option is not suitable for your workflow and/or you do need to compile the source code from scratch. On a GNU/Linux box (preferably Debian-based), follow these quick steps. See sec. 13.4 for the actual detailed explanations. To compile the Git repository, proceed as follows. This procedure does need git and autoconf but new versions can be pulled and recompiled easily. If something goes wrong and you get an error, do not hesitate to ask in FeenoX’s discussion page. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install git build-essential make automake autoconf libgsl-dev If you cannot install libgsl-dev but still have git and the build toolchain, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Clone Github repository git clone https://github.com/seamplex/feenox 4. Bootstrap, configure, compile & make cd feenox ./autogen.sh ./configure make -j4 If you cannot (or do not want to) use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. See the detailed compilation instructions for an explanation. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install To stay up to date, pull and then autogen, configure and make (and optionally install): git pull ./autogen.sh; ./configure; make -j4 sudo make install [download]: https://www.seamplex.com/feenox/#download [discussion page]: https://github.com/seamplex/feenox/discussions [detailed compilation instructions]: compilation.md Detailed configuration and compilation The main target and development environment is Debian GNU/Linux, although it should be possible to compile FeenoX in any free GNU/Linux variant (and even the in non-free MacOS and/or Windows platforms) running in virtually any hardware platform. FeenoX can run be run either in HPC cloud servers or a Raspberry Pi, and almost everything that sits in the middle. Following the Unix philosophy discussed in the SDS, FeenoX re-uses a lot of already-existing high-quality free and open source libraries that implement a wide variety of mathematical operations. This leads to a number of dependencies that FeenoX needs in order to implement certain features. There is only one dependency that is mandatory, namely GNU GSL (see sec. 13.4.1.1), which if it not found then FeenoX cannot be compiled. All other dependencies are optional, meaning that FeenoX can be compiled but its capabilities will be partially reduced. As per the SRS, all dependencies have to be available on mainstream GNU/Linux distributions and have to be free and open source software. But they can also be compiled from source in case the package repositories are not available or customized compilation flags are needed (i.e. optimization or debugging settings). In particular, PETSc (and SLEPc) also depend on other mathematical libraries to perform particular operations such as low-level linear algebra operations. These extra dependencies can be either free (such as LAPACK) or non-free (such as Intel’s MKL), but there is always at least one combination of a working setup that involves only free and open source software which is compatible with FeenoX licensing terms (GPLv3+). See the documentation of each package for licensing details. [Debian GNU/Linux]: https://www.debian.org/ [SDS45]: SDS.md [GNU GSL]: https://www.gnu.org/software/gsl/ [SRS]: SRS.md [PETSc46]: https://petsc.org/release/ [SLEPc47]: https://slepc.upv.es/ [LAPACK]: http://www.netlib.org/lapack/ [Intel’s MKL]: https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html Mandatory dependencies FeenoX has one mandatory dependency for run-time execution and the standard build toolchain for compilation. It is written in C99 so only a C compiler is needed, although make is also required. Free and open source compilers are favored. The usual C compiler is gcc but clang or Intel’s icc and the newer icx can also be used. Note that there is no need to have a Fortran nor a C++ compiler to build FeenoX. They might be needed to build other dependencies (such as PETSc and its dependencies), but not to compile FeenoX if all the dependencies are installed from the operating system’s package repositories. In case the build toolchain is not already installed, do so with sudo apt-get install gcc make If the source is to be fetched from the Git repository then not only is git needed but also autoconf and automake since the configure script is not stored in the Git repository but the autogen.sh script that bootstraps the tree and creates it. So if instead of compiling a source tarball one wants to clone from GitHub, these packages are also mandatory: sudo apt-get install git automake autoconf Again, chances are that any existing GNU/Linux box has all these tools already installed. [Git repository]: https://github.com/seamplex/feenox/ The GNU Scientific Library The only run-time dependency is GNU GSL (not to be confused with Microsoft GSL). It can be installed with sudo apt-get install libgsl-dev In case this package is not available or you do not have enough permissions to install system-wide packages, there are two options. 1. Pass the option --enable-download-gsl to the configure script below. 2. Manually download, compile and install GNU GSL If the configure script cannot find both the headers and the actual library, it will refuse to proceed. Note that the FeenoX binaries already contain a static version of the GSL so it is not needed to have it installed in order to run the statically-linked binaries. [GNU GSL]: https://www.gnu.org/software/gsl/ [Microsoft GSL]: https://github.com/microsoft/GSL Optional dependencies FeenoX has three optional run-time dependencies. It can be compiled without any of these, but functionality will be reduced: - SUNDIALS provides support for solving systems of ordinary differential equations (ODEs) or differential-algebraic equations (DAEs). This dependency is needed when running inputs with the PHASE_SPACE keyword. - PETSc provides support for solving partial differential equations (PDEs). This dependency is needed when running inputs with the PROBLEM keyword. - SLEPc provides support for solving eigen-value problems in partial differential equations (PDEs). This dependency is needed for inputs with PROBLEM types with eigen-value formulations such as modal and neutron_sn. In absence of all these, FeenoX can still be used to - solve general mathematical problems such as the ones to compute the Fibonacci sequence or the Logistic map, - operate on functions, either algebraically or point-wise interpolated such as Computing the derivative of a function as a Unix filter - read, operate over and write meshes, - etc. These optional dependencies have to be installed separately. There is no option to have configure to download them as with --enable-download-gsl. When running the test suite (sec. 13.4.6), those tests that need an optional dependency which was not found at compile time will be skipped. [SUNDIALS]: https://computing.llnl.gov/projects/sundials [PETSc]: https://petsc.org/ [SLEPc47]: https://slepc.upv.es/ [Fibonacci sequence48]: https://www.seamplex.com/feenox/examples/#the-fibonacci-sequence [Logistic map]: https://www.seamplex.com/feenox/examples/#the-logistic-map [Computing the derivative of a function as a Unix filter]: https://www.seamplex.com/feenox/examples/#computing-the-derivative-of-a-function-as-a-unix-filter SUNDIALS SUNDIALS is a SUite of Nonlinear and DIfferential/ALgebraic equation Solvers. It is used by FeenoX to solve dynamical systems casted as DAEs with the keyword PHASE_SPACE, like the Lorenz system. Install either by doing sudo apt-get install libsundials-dev or by following the instructions in the documentation. [SUNDIALS]: https://computing.llnl.gov/projects/sundials [PHASE_SPACE]: https://www.seamplex.com/feenox/doc/feenox-manual.html#phase_space [the Lorenz system]: https://www.seamplex.com/feenox/examples/#lorenz-attractor-the-one-with-the-butterfly PETSc The Portable, Extensible Toolkit for Scientific Computation, pronounced PET-see (/ˈpɛt-siː/), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It is used by FeenoX to solve PDEs with the keyword PROBLEM, like the NAFEMS LE10 benchmark problem. Install either by doing sudo apt-get install petsc-dev or by following the instructions in the documentation. Note that - Configuring and compiling PETSc from scratch might be difficult the first time. It has a lot of dependencies and options. Read the official documentation for a detailed explanation. - There is a huge difference in efficiency between using PETSc compiled with debugging symbols and with optimization flags. Make sure to configure --with-debugging=0 for FeenoX production runs and leave the debugging symbols (which is the default) for development and debugging only. - FeenoX needs PETSc to be configured with real double-precision scalars. It will compile but will complain at run-time when using complex and/or single or quad-precision scalars. - FeenoX honors the PETSC_DIR and PETSC_ARCH environment variables when executing configure. If these two do not exist or are empty, it will try to use the default system-wide locations (i.e. the petsc-dev package). [Portable, Extensible Toolkit for Scientific Computation]: (https://petsc.org/) [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [NAFEMS LE10 benchmark problem]: https://www.seamplex.com/feenox/examples/#nafems-le10-thick-plate-pressure-benchmark [documentation49]: https://petsc.org/release/install/ SLEPc The Scalable Library for Eigenvalue Problem Computations, is a software library for the solution of large scale sparse eigenvalue problems on parallel computers. It is used by FeenoX to solve PDEs with the keyword PROBLEM that need eigen-value computations, such as modal analysis of a cantilevered beam. Install either by doing sudo apt-get install slepc-dev or by following the instructions in the documentation. Note that - SLEPc is an extension of PETSc so the latter has to be already installed and configured. - FeenoX honors the SLEPC_DIR environment variable when executing configure. If it does not exist or is empty it will try to use the default system-wide locations (i.e. the slepc-dev package). - If PETSc was configured with --download-slepc then the SLEPC_DIR variable has to be set to the directory inside PETSC_DIR where SLEPc was cloned and compiled. [Scalable Library for Eigenvalue Problem Computations]: https://slepc.upv.es/ [PROBLEM]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [modal analysis of a cantilevered beam]: https://www.seamplex.com/feenox/examples/#five-natural-modes-of-a-cantilevered-wire FeenoX source code There are two ways of getting FeenoX’s source code: 1. Cloning the GitHub repository at https://github.com/seamplex/feenox 2. Downloading a source tarball from https://seamplex.com/feenox/dist/src/ Git repository The main Git repository is hosted on GitHub at https://github.com/seamplex/feenox. It is public so it can be cloned either through HTTPS or SSH without needing any particular credentials. It can also be forked freely. See the Programming Guide for details about pull requests and/or write access to the main repository. Ideally, the main branch should have a usable snapshot. All other branches can contain code that might not compile or might not run or might not be tested. If you find a commit in the main branch that does not pass the tests, please report it in the issue tracker ASAP. After cloning the repository git clone https://github.com/seamplex/feenox the autogen.sh script has to be called to bootstrap the working tree, since the configure script is not stored in the repository but created from configure.ac (which is in the repository) by autogen.sh. Similarly, after updating the working tree with git pull it is recommended to re-run the autogen.sh script. It will do a make clean and re-compute the version string. [Programming Guide50]: programming.md Source tarballs When downloading a source tarball, there is no need to run autogen.sh since the configure script is already included in the tarball. This method cannot update the working tree. For each new FeenoX release, the whole source tarball has to be downloaded again. Configuration To create a proper Makefile for the particular architecture, dependencies and compilation options, the script configure has to be executed. This procedure follows the GNU Coding Standards. ./configure Without any particular options, configure will check if the mandatory GNU Scientific Library is available (both its headers and run-time library). If it is not, then the option --enable-download-gsl can be used. This option will try to use wget (which should be installed) to download a source tarball, uncompress, configure and compile it. If these steps are successful, this GSL will be statically linked into the resulting FeenoX executable. If there is no internet connection, the configure script will say that the download failed. In that case, get the indicated tarball file manually, copy it into the current directory and re-run ./configure. The script will also check for the availability of optional dependencies. At the end of the execution, a summary of what was found (or not) is printed in the standard output: $ ./configure [...] ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS IDA yes PETSc yes /usr/lib/petsc SLEPc no [...] If for some reason one of the optional dependencies is available but FeenoX should not use it, then pass --without-sundials, --without-petsc and/or --without-slepc as arguments. For example $ ./configure --without-sundials --without-petsc [...] ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS no PETSc no SLEPc no [...] If configure complains about contradicting values from the cached ones, run autogen.sh again before configure and/or clone/uncompress the source tarball in a fresh location. To see all the available options run ./configure --help [GNU Coding Standards]: https://www.gnu.org/prep/standards/ [GNU Scientific Library]: https://www.gnu.org/software/gsl/ Source code compilation After the successful execution of configure, a Makefile is created. To compile FeenoX, just execute make Compilation should take a dozen of seconds. It can be even sped up by using the -j option make -j8 The binary executable will be located in the src directory but a copy will be made in the base directory as well. Test it by running without any arguments $ ./feenox FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool usage: feenox [options] inputfile [replacement arguments] [petsc options] -h, --help display options and detailed explanations of command-line usage -v, --version display brief version information and exit -V, --versions display detailed version information Run with --help for further explanations. $ The -v (or --version) option shows the version and a copyright notice: $ ./feenox -v FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Copyright © 2009--2022 https://seamplex.com/feenox GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ The -V (or --versions) option shows the dates of the last commits, the compiler options and the versions of the linked libraries: $ ./feenox -V FeenoX v0.1.24-g6cfe063 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Last commit date : Sun Aug 29 11:34:04 2021 -0300 Build date : Sun Aug 29 11:44:50 2021 -0300 Build architecture : linux-gnu x86_64 Compiler version : gcc (Debian 10.2.1-6) 10.2.1 20210110 Compiler expansion : gcc -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich Compiler flags : -O3 Builder : gtheler@chalmers GSL version : 2.6 SUNDIALS version : 4.1.0 PETSc version : Petsc Release Version 3.14.5, Mar 03, 2021 PETSc arch : PETSc options : --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --with-option-checking=0 --with-silent-rules=0 --libdir=${prefix}/lib/x86_64-linux-gnu --runstatedir=/run --with-maintainer-mode=0 --with-dependency-tracking=0 --with-debugging=0 --shared-library-extension=_real --with-shared-libraries --with-pic=1 --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --with-cxx-dialect=C++11 --with-opencl=1 --with-blas-lib=-lblas --with-lapack-lib=-llapack --with-scalapack=1 --with-scalapack-lib=-lscalapack-openmpi --with-ptscotch=1 --with-ptscotch-include=/usr/include/scotch --with-ptscotch-lib="-lptesmumps -lptscotch -lptscotcherr" --with-fftw=1 --with-fftw-include="[]" --with-fftw-lib="-lfftw3 -lfftw3_mpi" --with-superlu_dist=1 --with-superlu_dist-include=/usr/include/superlu-dist --with-superlu_dist-lib=-lsuperlu_dist --with-hdf5-include=/usr/include/hdf5/openmpi --with-hdf5-lib="-L/usr/lib/x86_64-linux-gnu/hdf5/openmpi -L/usr/lib/x86_64-linux-gnu/openmpi/lib -lhdf5 -lmpi" --CXX_LINKER_FLAGS=-Wl,--no-as-needed --with-hypre=1 --with-hypre-include=/usr/include/hypre --with-hypre-lib=-lHYPRE_core --with-mumps=1 --with-mumps-include="[]" --with-mumps-lib="-ldmumps -lzmumps -lsmumps -lcmumps -lmumps_common -lpord" --with-suitesparse=1 --with-suitesparse-include=/usr/include/suitesparse --with-suitesparse-lib="-lumfpack -lamd -lcholmod -lklu" --with-superlu=1 --with-superlu-include=/usr/include/superlu --with-superlu-lib=-lsuperlu --prefix=/usr/lib/petscdir/petsc3.14/x86_64-linux-gnu-real --PETSC_ARCH=x86_64-linux-gnu-real CFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC" CXXFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC" FCFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fPIC -ffree-line-length-0" FFLAGS="-g -O2 -ffile-prefix-map=/build/petsc-pVufYp/petsc-3.14.5+dfsg1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fPIC -ffree-line-length-0" CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2" LDFLAGS="-Wl,-Bsymbolic-functions -flto=auto -Wl,-z,relro -fPIC" MAKEFLAGS=w SLEPc version : SLEPc Release Version 3.14.2, Feb 01, 2021 $ Test suite The test directory contains a set of test cases whose output is known so that unintended regressions can be detected quickly (see the programming guide for more information). The test suite ought to be run after each modification in FeenoX’s source code. It consists of a set of scripts and input files needed to solve dozens of cases. The output of each execution is compared to a reference solution. In case the output does not match the reference, the test suite fails. After compiling FeenoX as explained in sec. 13.4.5, the test suite can be run with make check. Ideally everything should be green meaning the tests passed: $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh PASS: tests/beam-modal.sh PASS: tests/beam-ortho.sh PASS: tests/builtin.sh PASS: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh PASS: tests/i-beam-euler-bernoulli.sh PASS: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh PASS: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh PASS: tests/nafems-le1.sh PASS: tests/nafems-le10.sh PASS: tests/nafems-le11.sh PASS: tests/nafems-t1-4.sh PASS: tests/nafems-t2-3.sh PASS: tests/neutron_diffusion_src.sh PASS: tests/neutron_diffusion_keff.sh PASS: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh PASS: tests/thermal-1d.sh PASS: tests/thermal-2d.sh PASS: tests/trig.sh PASS: tests/two-cubes-isotropic.sh PASS: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh XFAIL: tests/xfail-few-properties-ortho-young.sh XFAIL: tests/xfail-few-properties-ortho-poisson.sh XFAIL: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 39 # SKIP: 0 # XFAIL: 4 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ The XFAIL result means that those cases are expected to fail (they are there to test if FeenoX can handle errors). Failure would mean they passed. In case FeenoX was not compiled with any optional dependency, the corresponding tests will be skipped. Skipped tests do not mean any failure, but that the compiled FeenoX executable does not have the full capabilities. For example, when configuring with ./configure --without-petsc (but with SUNDIALS), the test suite output should be a mixture of green and blue: $ ./configure --without-petsc [...] configure: creating ./src/version.h ## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ## GNU Scientific Library from system SUNDIALS yes PETSc no SLEPc no Compiler gcc checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating doc/Makefile config.status: executing depfiles commands $ make [...] $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh SKIP: tests/beam-modal.sh SKIP: tests/beam-ortho.sh PASS: tests/builtin.sh SKIP: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh SKIP: tests/i-beam-euler-bernoulli.sh SKIP: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh SKIP: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh SKIP: tests/nafems-le1.sh SKIP: tests/nafems-le10.sh SKIP: tests/nafems-le11.sh SKIP: tests/nafems-t1-4.sh SKIP: tests/nafems-t2-3.sh SKIP: tests/neutron_diffusion_src.sh SKIP: tests/neutron_diffusion_keff.sh SKIP: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh SKIP: tests/thermal-1d.sh SKIP: tests/thermal-2d.sh PASS: tests/trig.sh SKIP: tests/two-cubes-isotropic.sh SKIP: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh SKIP: tests/xfail-few-properties-ortho-young.sh SKIP: tests/xfail-few-properties-ortho-poisson.sh SKIP: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 21 # SKIP: 21 # XFAIL: 1 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ To illustrate how regressions can be detected, let us add a bug deliberately and re-run the test suite. Edit the source file that contains the shape functions of the second-order tetrahedra src/mesh/tet10.c, find the function feenox_mesh_tet10_h() and randomly change a sign, i.e. replace return t*(2*t-1); with return t*(2*t+1); Save, recompile, and re-run the test suite to obtain some red: $ git diff src/mesh/ diff --git a/src/mesh/tet10.c b/src/mesh/tet10.c index 72bc838..293c290 100644 --- a/src/mesh/tet10.c +++ b/src/mesh/tet10.c @@ -227,7 +227,7 @@ double feenox_mesh_tet10_h(int j, double *vec_r) { return s*(2*s-1); break; case 3: - return t*(2*t-1); + return t*(2*t+1); break; case 4: $ make [...] $ make check Making check in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make check-TESTS make[2]: Entering directory '/home/gtheler/codigos/feenox' make[3]: Entering directory '/home/gtheler/codigos/feenox' XFAIL: tests/abort.sh PASS: tests/algebraic_expr.sh FAIL: tests/beam-modal.sh PASS: tests/beam-ortho.sh PASS: tests/builtin.sh PASS: tests/cylinder-traction-force.sh PASS: tests/default_argument_value.sh PASS: tests/expressions_constants.sh PASS: tests/expressions_variables.sh PASS: tests/expressions_functions.sh PASS: tests/exp.sh PASS: tests/i-beam-euler-bernoulli.sh PASS: tests/iaea-pwr.sh PASS: tests/iterative.sh PASS: tests/fit.sh PASS: tests/function_algebraic.sh PASS: tests/function_data.sh PASS: tests/function_file.sh PASS: tests/function_vectors.sh PASS: tests/integral.sh PASS: tests/laplace2d.sh PASS: tests/materials.sh PASS: tests/mesh.sh PASS: tests/moment-of-inertia.sh PASS: tests/nafems-le1.sh FAIL: tests/nafems-le10.sh FAIL: tests/nafems-le11.sh PASS: tests/nafems-t1-4.sh PASS: tests/nafems-t2-3.sh PASS: tests/neutron_diffusion_src.sh PASS: tests/neutron_diffusion_keff.sh FAIL: tests/parallelepiped.sh PASS: tests/point-kinetics.sh PASS: tests/print.sh PASS: tests/thermal-1d.sh PASS: tests/thermal-2d.sh PASS: tests/trig.sh PASS: tests/two-cubes-isotropic.sh PASS: tests/two-cubes-orthotropic.sh PASS: tests/vector.sh XFAIL: tests/xfail-few-properties-ortho-young.sh XFAIL: tests/xfail-few-properties-ortho-poisson.sh XFAIL: tests/xfail-few-properties-ortho-shear.sh ============================================================================ Testsuite summary for feenox v0.2.6-g3237ce9 ============================================================================ # TOTAL: 43 # PASS: 35 # SKIP: 0 # XFAIL: 4 # FAIL: 4 # XPASS: 0 # ERROR: 0 ============================================================================ See ./test-suite.log Please report to jeremy@seamplex.com ============================================================================ make[3]: *** [Makefile:1152: test-suite.log] Error 1 make[3]: Leaving directory '/home/gtheler/codigos/feenox' make[2]: *** [Makefile:1260: check-TESTS] Error 2 make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: *** [Makefile:1791: check-am] Error 2 make[1]: Leaving directory '/home/gtheler/codigos/feenox' make: *** [Makefile:1037: check-recursive] Error 1 $ [test]: https://github.com/seamplex/feenox/tree/main/tests [programming guide50]: programming.md Installation To be able to execute FeenoX from any directory, the binary has to be copied to a directory available in the PATH environment variable. If you have root access, the easiest and cleanest way of doing this is by calling make install with sudo or su: $ sudo make install Making install in src make[1]: Entering directory '/home/gtheler/codigos/feenox/src' gmake[2]: Entering directory '/home/gtheler/codigos/feenox/src' /usr/bin/mkdir -p '/usr/local/bin' /usr/bin/install -c feenox '/usr/local/bin' gmake[2]: Nothing to be done for 'install-data-am'. gmake[2]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Leaving directory '/home/gtheler/codigos/feenox/src' make[1]: Entering directory '/home/gtheler/codigos/feenox' cp -r src/feenox . make[2]: Entering directory '/home/gtheler/codigos/feenox' make[2]: Nothing to be done for 'install-exec-am'. make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/gtheler/codigos/feenox' make[1]: Leaving directory '/home/gtheler/codigos/feenox' $ If you do not have root access or do not want to populate /usr/local/bin, you can either - Configure with a different prefix (not covered here), or - Copy (or symlink) the feenox executable to $HOME/bin: mkdir -p ${HOME}/bin cp feenox ${HOME}/bin If you plan to regularly update FeenoX (which you should), you might want to symlink instead of copy so you do not need to update the binary in $HOME/bin each time you recompile: mkdir -p ${HOME}/bin ln -sf feenox ${HOME}/bin Check that FeenoX is now available from any directory (note the command is feenox and not ./feenox): $ cd $ feenox -v FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Copyright © 2009--2022 https://seamplex.com/feenox GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ If it is not and you went through the $HOME/bin path, make sure it is in the PATH (pun). Add export PATH=${PATH}:${HOME}/bin to your .bashrc in your home directory and re-login. Advanced settings Compiling with debug symbols By default the C flags are -O3, without debugging. To add the -g flag, just use CFLAGS when configuring: ./configure CFLAGS="-g -O0" Using a different compiler FeenoX uses the CC environment variable to set the compiler. So configure like export CC=clang; ./configure Note that the CC variable has to be exported and not passed to configure. That is to say, don’t configure like ./configure CC=clang Mind also the following environment variables when using MPI-enabled PETSc: - MPICH_CC - OMPI_CC - I_MPI_CC Depending on how your system is configured, this last command might show clang but not actually use it. The FeenoX executable will show the configured compiler and flags when invoked with the --versions option: $ feenox --versions FeenoX v0.2.14-gbbf48c9 a free no-fee no-X uniX-like finite-element(ish) computational engineering tool Last commit date : Sat Feb 12 15:35:05 2022 -0300 Build date : Sat Feb 12 15:35:44 2022 -0300 Build architecture : linux-gnu x86_64 Compiler version : gcc (Debian 10.2.1-6) 10.2.1 20210110 Compiler expansion : gcc -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich Compiler flags : -O3 Builder : gtheler@tom GSL version : 2.6 SUNDIALS version : 5.7.0 PETSc version : Petsc Release Version 3.16.3, Jan 05, 2022 PETSc arch : arch-linux-c-debug PETSc options : --download-eigen --download-hdf5 --download-hypre --download-metis --download-mumps --download-parmetis --download-pragmatic --download-scalapack SLEPc version : SLEPc Release Version 3.16.1, Nov 17, 2021 $ You can check which compiler was actually used by analyzing the feenox binary as $ objdump -s --section .comment ./feenox ./feenox: file format elf64-x86-64 Contents of section .comment: 0000 4743433a 20284465 6269616e 2031322e GCC: (Debian 12. 0010 322e302d 31342920 31322e32 2e300044 2.0-14) 12.2.0.D 0020 65626961 6e20636c 616e6720 76657273 ebian clang vers 0030 696f6e20 31342e30 2e3600 ion 14.0.6. $ It should be noted that the MPI implementation used to compile FeenoX has to match the one used to compile PETSc. Therefore, if you compiled PETSc on your own, it is up to you to ensure MPI compatibility. If you are using PETSc as provided by your distribution’s repositories, you will have to find out which one was used (it is usually OpenMPI) and use the same one when compiling FeenoX. FeenoX has been tested using PETSc compiled with - MPICH - OpenMPI - Intel MPI Compiling PETSc Particular explanation for FeenoX is to be done. For now, follow the general explanation from PETSc’s website. export PETSC_DIR=$PWD export PETSC_ARCH=arch-linux-c-opt ./configure --with-debugging=0 --download-mumps --download-scalapack --with-cxx=0 --COPTFLAGS=-O3 --FOPTFLAGS=-O3 export PETSC_DIR=$PWD ./configure --with-debugging=0 --with-openmp=0 --with-x=0 --with-cxx=0 --COPTFLAGS=-O3 --FOPTFLAGS=-O3 make PETSC_DIR=/home/ubuntu/reflex-deps/petsc-3.17.2 PETSC_ARCH=arch-linux-c-opt all [general explanation from PETSc’s website]: https://petsc.org/release/install/ Appendix: Inputs for solving LE10 with other FEA programs This appendix illustrates the differences in the input file formats used by FeenoX and the ones used by other open source finite-element solvers. The problem being solved is the NAFEMS LE10 benchmark, first discussed in sec. 1.2: # NAFEMS Benchmark LE-10: thick plate pressure PROBLEM mechanical DIMENSIONS 3 READ_MESH nafems-le10.msh # mesh in millimeters # LOADING: uniform normal pressure on the upper surface BC upper p=1 # 1 Mpa # BOUNDARY CONDITIONS: BC DCD'C' v=0 # Face DCD'C' zero y-displacement BC ABA'B' u=0 # Face ABA'B' zero x-displacement BC BCB'C' u=0 v=0 # Face BCB'C' x and y displ. fixed BC midplane w=0 # z displacements fixed along mid-plane # MATERIAL PROPERTIES: isotropic single-material properties E = 210e3 # Young modulus in MPa nu = 0.3 # Poisson's ratio SOLVE_PROBLEM # solve! # print the direct stress y at D (and nothing more) PRINT "σ_y @ D = " sigmay(2000,0,300) "MPa" See the following URL and its links for further details about solving this problem with the other codes: https://cofea.readthedocs.io/en/latest/benchmarks/004-eliptic-membrane/tested-codes.html [NAFEMS LE10 benchmark]: https://www.seamplex.com/feenox/examples/#nafems-le10-thick-plate-pressure-benchmark CalculiX ** Mesh ++++++++++++++++++++++++++++++++++++++++++++++++++++ *INCLUDE, INPUT=Mesh/fine-lin-hex.inp # Path to mesh for ccx solver ** Mesh ++++++++++++++++++++++++++++++++++++++++++++++++++++ *MATERIAL, NAME=Steel # Defining a material *DENSITY 7800 # Defining a density *ELASTIC, 2.1e11, 0.3 # Defining Young modulus and Poisson's ratio ** Sections ++++++++++++++++++++++++++++++++++++++++++++++++ *SOLID SECTION, ELSET=ELIPSE, MATERIAL=Steel # Assigning material and plane stress elements 0.1, # to the elements sets in mesh and adding thickness ** Steps +++++++++++++++++++++++++++++++++++++++++++++++++++ *STEP # Begin of analysis *STATIC, SOLVER=SPOOLES # Selection of elastic analysis ** Field outputs +++++++++++++++++++++++++++++++++++++++++++ *EL FILE # Commands responsible for saving results E, S *NODE FILE U ** Boundary conditions +++++++++++++++++++++++++++++++++++++ *BOUNDARY, # Applying translation = 0 on desired nodes AB,1,1,0 *BOUNDARY CD,2,2,0 ** Boundary conditions(adding pressure) ++++++++++++++++++++ *DLOAD *INCLUDE, INPUT=Pressure/fine-lin-hex.dlo ** End step ++++++++++++++++++++++++++++++++++++++++++++++++ *END STEP # End on analysis Code Aster mesh = LIRE_MAILLAGE(identifier='0:1', # Reading a mesh FORMAT='IDEAS', UNITE=80) model = AFFE_MODELE(identifier='1:1', # Assignig plane stress AFFE=_F(MODELISATION=('C_PLAN', ), # elements to mesh PHENOMENE='MECANIQUE', TOUT='OUI'), MAILLAGE=mesh) mater = DEFI_MATERIAU(identifier='2:1', # Defining elastic material ELAS=_F(E=210000000000.0, NU=0.3)) materfl = AFFE_MATERIAU(identifier='3:1', # Assigning material to model AFFE=_F(MATER=(mater, ), TOUT='OUI'), MODELE=model) mecabc = AFFE_CHAR_MECA(identifier='4:1', # Applying boundary conditions DDL_IMPO=(_F(DX=0.0, # displacement = 0 GROUP_MA=('AB', )), # to the selected group of elements _F(DY=0.0, GROUP_MA=('CD', ))), MODELE=model) mecach = AFFE_CHAR_MECA(identifier='5:1', # Applying pressure to the MODELE=model, # group of elements PRES_REP=_F(GROUP_MA=('BC', ), PRES=-10000000.0)) result = MECA_STATIQUE(identifier='6:1', # Defining the results of CHAM_MATER=materfl, # simulation EXCIT=(_F(CHARGE=mecabc), _F(CHARGE=mecach)), MODELE=model) SYY = CALC_CHAMP(identifier='7:1', # Calculating stresses in CHAM_MATER=materfl, # computed domain CONTRAINTE=('SIGM_NOEU', ), MODELE=model, RESULTAT=result) IMPR_RESU(identifier='8:1', # Saving the results FORMAT='MED', RESU=(_F(RESULTAT=result), _F(RESULTAT=SYY)), UNITE=80) FIN() Elmer Header CHECK KEYWORDS Warn Mesh DB "." "." # Path to the mesh Include Path "" Results Directory "" # Path to results directory End Simulation # Settings and constants for simulation Max Output Level = 5 Coordinate System = Cartesian Coordinate Mapping(3) = 1 2 3 Simulation Type = Steady state Steady State Max Iterations = 1 Output Intervals = 1 Timestepping Method = BDF BDF Order = 1 Solver Input File = case.sif Post File = case.vtu End Constants Gravity(4) = 0 -1 0 9.82 Stefan Boltzmann = 5.67e-08 Permittivity of Vacuum = 8.8542e-12 Boltzmann Constant = 1.3807e-23 Unit Charge = 1.602e-19 End Body 1 # Assigning the material and equations to the mesh Target Bodies(1) = 10 Name = "Body Property 1" Equation = 1 Material = 1 End Solver 2 # Solver settings Equation = Linear elasticity Procedure = "StressSolve" "StressSolver" Calculate Stresses = True Variable = -dofs 2 Displacement Exec Solver = Always Stabilize = True Bubbles = False Lumped Mass Matrix = False Optimize Bandwidth = True Steady State Convergence Tolerance = 1.0e-5 Nonlinear System Convergence Tolerance = 1.0e-7 Nonlinear System Max Iterations = 20 Nonlinear System Newton After Iterations = 3 Nonlinear System Newton After Tolerance = 1.0e-3 Nonlinear System Relaxation Factor = 1 Linear System Solver = Direct Linear System Direct Method = Umfpack End Solver 1 # Saving the results from node at point D Equation = SaveScalars Save Points = 26 Procedure = "SaveData" "SaveScalars" Filename = file.dat Exec Solver = After Simulation End Equation 1 # Setting active solvers Name = "STRESS" Calculate Stresses = True Plane Stress = True # Turning on plane stress simulation Active Solvers(1) = 2 End Equation 2 Name = "DATA" Active Solvers(1) = 1 End Material 1 # Defining the material Name = "STEEL" Poisson ratio = 0.3 Porosity Model = Always saturated Youngs modulus = 2.1e11 End Boundary Condition 1 # Applying the boundary conditions Target Boundaries(1) = 12 Name = "AB" Displacement 1 = 0 End Boundary Condition 2 Target Boundaries(1) = 13 Name = "CD" Displacement 2 = 0 End Boundary Condition 3 Target Boundaries(1) = 14 Name = "BC" Normal Force = 10e6 End feenox-1.1/auto_links.m40000644000175000017500000011312514773607166012216 00000000000000AC_CONFIG_LINKS([tests/abort.sh:tests/abort.sh]) AC_CONFIG_LINKS([tests/airfoil.sh:tests/airfoil.sh]) AC_CONFIG_LINKS([tests/algebraic_expr.sh:tests/algebraic_expr.sh]) AC_CONFIG_LINKS([tests/annulus-modal.sh:tests/annulus-modal.sh]) AC_CONFIG_LINKS([tests/arguments.sh:tests/arguments.sh]) AC_CONFIG_LINKS([tests/azmy.sh:tests/azmy.sh]) AC_CONFIG_LINKS([tests/barra.sh:tests/barra.sh]) AC_CONFIG_LINKS([tests/bc-groups.sh:tests/bc-groups.sh]) AC_CONFIG_LINKS([tests/beam-modal.sh:tests/beam-modal.sh]) AC_CONFIG_LINKS([tests/beam-ortho.sh:tests/beam-ortho.sh]) AC_CONFIG_LINKS([tests/bimetallic-strip.sh:tests/bimetallic-strip.sh]) AC_CONFIG_LINKS([tests/builtin.sh:tests/builtin.sh]) AC_CONFIG_LINKS([tests/bunny-diffusion.sh:tests/bunny-diffusion.sh]) AC_CONFIG_LINKS([tests/bunny-modal.sh:tests/bunny-modal.sh]) AC_CONFIG_LINKS([tests/bunny-sn.sh:tests/bunny-sn.sh]) AC_CONFIG_LINKS([tests/bunny-thermal-mpi.sh:tests/bunny-thermal-mpi.sh]) AC_CONFIG_LINKS([tests/bunny-thermal.sh:tests/bunny-thermal.sh]) AC_CONFIG_LINKS([tests/circle.sh:tests/circle.sh]) AC_CONFIG_LINKS([tests/clean.sh:tests/clean.sh]) AC_CONFIG_LINKS([tests/cog.sh:tests/cog.sh]) AC_CONFIG_LINKS([tests/cube-expansion.sh:tests/cube-expansion.sh]) AC_CONFIG_LINKS([tests/cylinder-traction-force.sh:tests/cylinder-traction-force.sh]) AC_CONFIG_LINKS([tests/encased_rod.sh:tests/encased_rod.sh]) AC_CONFIG_LINKS([tests/exp.sh:tests/exp.sh]) AC_CONFIG_LINKS([tests/expressions.sh:tests/expressions.sh]) AC_CONFIG_LINKS([tests/expressions_constants.sh:tests/expressions_constants.sh]) AC_CONFIG_LINKS([tests/file.sh:tests/file.sh]) AC_CONFIG_LINKS([tests/fit.sh:tests/fit.sh]) AC_CONFIG_LINKS([tests/func_min.sh:tests/func_min.sh]) AC_CONFIG_LINKS([tests/function_algebraic.sh:tests/function_algebraic.sh]) AC_CONFIG_LINKS([tests/function_data.sh:tests/function_data.sh]) AC_CONFIG_LINKS([tests/function_file.sh:tests/function_file.sh]) AC_CONFIG_LINKS([tests/function_mesh.sh:tests/function_mesh.sh]) AC_CONFIG_LINKS([tests/function_vectors.sh:tests/function_vectors.sh]) AC_CONFIG_LINKS([tests/functions.sh:tests/functions.sh]) AC_CONFIG_LINKS([tests/hello_mpi.sh:tests/hello_mpi.sh]) AC_CONFIG_LINKS([tests/i-beam-euler-bernoulli.sh:tests/i-beam-euler-bernoulli.sh]) AC_CONFIG_LINKS([tests/iaea-pwr.sh:tests/iaea-pwr.sh]) AC_CONFIG_LINKS([tests/integral.sh:tests/integral.sh]) AC_CONFIG_LINKS([tests/iterative.sh:tests/iterative.sh]) AC_CONFIG_LINKS([tests/lag.sh:tests/lag.sh]) AC_CONFIG_LINKS([tests/laplace2d.sh:tests/laplace2d.sh]) AC_CONFIG_LINKS([tests/lebesgue.sh:tests/lebesgue.sh]) AC_CONFIG_LINKS([tests/los-alamos.sh:tests/los-alamos.sh]) AC_CONFIG_LINKS([tests/map-cube.sh:tests/map-cube.sh]) AC_CONFIG_LINKS([tests/materials.sh:tests/materials.sh]) AC_CONFIG_LINKS([tests/mesh.sh:tests/mesh.sh]) AC_CONFIG_LINKS([tests/moment-of-inertia.sh:tests/moment-of-inertia.sh]) AC_CONFIG_LINKS([tests/nafems-le1.sh:tests/nafems-le1.sh]) AC_CONFIG_LINKS([tests/nafems-le10.sh:tests/nafems-le10.sh]) AC_CONFIG_LINKS([tests/nafems-le11.sh:tests/nafems-le11.sh]) AC_CONFIG_LINKS([tests/nafems-t1-4.sh:tests/nafems-t1-4.sh]) AC_CONFIG_LINKS([tests/nafems-t2-3.sh:tests/nafems-t2-3.sh]) AC_CONFIG_LINKS([tests/neutron-fully-mirrored.sh:tests/neutron-fully-mirrored.sh]) AC_CONFIG_LINKS([tests/neutron_diffusion_keff.sh:tests/neutron_diffusion_keff.sh]) AC_CONFIG_LINKS([tests/neutron_diffusion_src.sh:tests/neutron_diffusion_src.sh]) AC_CONFIG_LINKS([tests/ortho-expansion-alpha-of-space.sh:tests/ortho-expansion-alpha-of-space.sh]) AC_CONFIG_LINKS([tests/parallelepiped.sh:tests/parallelepiped.sh]) AC_CONFIG_LINKS([tests/petsc_options.sh:tests/petsc_options.sh]) AC_CONFIG_LINKS([tests/pipe.sh:tests/pipe.sh]) AC_CONFIG_LINKS([tests/point-kinetics.sh:tests/point-kinetics.sh]) AC_CONFIG_LINKS([tests/print.sh:tests/print.sh]) AC_CONFIG_LINKS([tests/qrng.sh:tests/qrng.sh]) AC_CONFIG_LINKS([tests/ray-effect.sh:tests/ray-effect.sh]) AC_CONFIG_LINKS([tests/reactions-elastic.sh:tests/reactions-elastic.sh]) AC_CONFIG_LINKS([tests/reactions.sh:tests/reactions.sh]) AC_CONFIG_LINKS([tests/reed.sh:tests/reed.sh]) AC_CONFIG_LINKS([tests/solve.sh:tests/solve.sh]) AC_CONFIG_LINKS([tests/spinning-disk.sh:tests/spinning-disk.sh]) AC_CONFIG_LINKS([tests/statically_indeterminate_reaction.sh:tests/statically_indeterminate_reaction.sh]) AC_CONFIG_LINKS([tests/symmetry.sh:tests/symmetry.sh]) AC_CONFIG_LINKS([tests/t21.sh:tests/t21.sh]) AC_CONFIG_LINKS([tests/thermal-1d.sh:tests/thermal-1d.sh]) AC_CONFIG_LINKS([tests/thermal-2d.sh:tests/thermal-2d.sh]) AC_CONFIG_LINKS([tests/thermal-3d.sh:tests/thermal-3d.sh]) AC_CONFIG_LINKS([tests/thermal-radiation.sh:tests/thermal-radiation.sh]) AC_CONFIG_LINKS([tests/thermal-slab-no-k.sh:tests/thermal-slab-no-k.sh]) AC_CONFIG_LINKS([tests/thermal-slab-wrong-bc.sh:tests/thermal-slab-wrong-bc.sh]) AC_CONFIG_LINKS([tests/transient-mesh.sh:tests/transient-mesh.sh]) AC_CONFIG_LINKS([tests/trig.sh:tests/trig.sh]) AC_CONFIG_LINKS([tests/two-cubes-isotropic.sh:tests/two-cubes-isotropic.sh]) AC_CONFIG_LINKS([tests/two-cubes-orthotropic.sh:tests/two-cubes-orthotropic.sh]) AC_CONFIG_LINKS([tests/uo2-pellet.sh:tests/uo2-pellet.sh]) AC_CONFIG_LINKS([tests/vector.sh:tests/vector.sh]) AC_CONFIG_LINKS([tests/wilson.sh:tests/wilson.sh]) AC_CONFIG_LINKS([tests/xfail-data-variable.sh:tests/xfail-data-variable.sh]) AC_CONFIG_LINKS([tests/xfail-few-properties-ortho-poisson.sh:tests/xfail-few-properties-ortho-poisson.sh]) AC_CONFIG_LINKS([tests/xfail-few-properties-ortho-shear.sh:tests/xfail-few-properties-ortho-shear.sh]) AC_CONFIG_LINKS([tests/xfail-few-properties-ortho-young.sh:tests/xfail-few-properties-ortho-young.sh]) AC_CONFIG_LINKS([tests/2dpwr.fee:tests/2dpwr.fee]) AC_CONFIG_LINKS([tests/Barra1D_a_Estac.fee:tests/Barra1D_a_Estac.fee]) AC_CONFIG_LINKS([tests/Barra1D_b_Trans.fee:tests/Barra1D_b_Trans.fee]) AC_CONFIG_LINKS([tests/H2O.fee:tests/H2O.fee]) AC_CONFIG_LINKS([tests/Pu-239a.fee:tests/Pu-239a.fee]) AC_CONFIG_LINKS([tests/Pu-239b.fee:tests/Pu-239b.fee]) AC_CONFIG_LINKS([tests/U-235.fee:tests/U-235.fee]) AC_CONFIG_LINKS([tests/U-Al.fee:tests/U-Al.fee]) AC_CONFIG_LINKS([tests/URRa.fee:tests/URRa.fee]) AC_CONFIG_LINKS([tests/abort.fee:tests/abort.fee]) AC_CONFIG_LINKS([tests/airfoil.fee:tests/airfoil.fee]) AC_CONFIG_LINKS([tests/algebraic_expr.fee:tests/algebraic_expr.fee]) AC_CONFIG_LINKS([tests/alias.fee:tests/alias.fee]) AC_CONFIG_LINKS([tests/annulus-modal.fee:tests/annulus-modal.fee]) AC_CONFIG_LINKS([tests/arguments_bracketed.fee:tests/arguments_bracketed.fee]) AC_CONFIG_LINKS([tests/arguments_quoted.fee:tests/arguments_quoted.fee]) AC_CONFIG_LINKS([tests/arguments_self.fee:tests/arguments_self.fee]) AC_CONFIG_LINKS([tests/assignment_scalar.fee:tests/assignment_scalar.fee]) AC_CONFIG_LINKS([tests/atan2.fee:tests/atan2.fee]) AC_CONFIG_LINKS([tests/azmy-structured.fee:tests/azmy-structured.fee]) AC_CONFIG_LINKS([tests/bc-groups1.fee:tests/bc-groups1.fee]) AC_CONFIG_LINKS([tests/bc-groups2.fee:tests/bc-groups2.fee]) AC_CONFIG_LINKS([tests/bc-groups3.fee:tests/bc-groups3.fee]) AC_CONFIG_LINKS([tests/bc-groups4.fee:tests/bc-groups4.fee]) AC_CONFIG_LINKS([tests/bc-groups6.fee:tests/bc-groups6.fee]) AC_CONFIG_LINKS([tests/beam-cantilever-modal-free-free.fee:tests/beam-cantilever-modal-free-free.fee]) AC_CONFIG_LINKS([tests/beam-cantilever-modal.fee:tests/beam-cantilever-modal.fee]) AC_CONFIG_LINKS([tests/bimetallic-strip.fee:tests/bimetallic-strip.fee]) AC_CONFIG_LINKS([tests/bunny-diffusion.fee:tests/bunny-diffusion.fee]) AC_CONFIG_LINKS([tests/bunny-modal-fixed.fee:tests/bunny-modal-fixed.fee]) AC_CONFIG_LINKS([tests/bunny-modal-free.fee:tests/bunny-modal-free.fee]) AC_CONFIG_LINKS([tests/bunny-modal-rest.fee:tests/bunny-modal-rest.fee]) AC_CONFIG_LINKS([tests/bunny-modal.fee:tests/bunny-modal.fee]) AC_CONFIG_LINKS([tests/bunny-sn-box.fee:tests/bunny-sn-box.fee]) AC_CONFIG_LINKS([tests/bunny-sn.fee:tests/bunny-sn.fee]) AC_CONFIG_LINKS([tests/bunny-thermal-mpi.fee:tests/bunny-thermal-mpi.fee]) AC_CONFIG_LINKS([tests/bunny-thermal.fee:tests/bunny-thermal.fee]) AC_CONFIG_LINKS([tests/circle_fit.fee:tests/circle_fit.fee]) AC_CONFIG_LINKS([tests/circle_perimeter.fee:tests/circle_perimeter.fee]) AC_CONFIG_LINKS([tests/circle_surface.fee:tests/circle_surface.fee]) AC_CONFIG_LINKS([tests/cmp-float.fee:tests/cmp-float.fee]) AC_CONFIG_LINKS([tests/cmp-zero.fee:tests/cmp-zero.fee]) AC_CONFIG_LINKS([tests/convectionNL.fee:tests/convectionNL.fee]) AC_CONFIG_LINKS([tests/cube-cog.fee:tests/cube-cog.fee]) AC_CONFIG_LINKS([tests/cube-free-expansion-alpha-of-space-orthotropic.fee:tests/cube-free-expansion-alpha-of-space-orthotropic.fee]) AC_CONFIG_LINKS([tests/cube-free-expansion-alpha-of-temperature-orthotropic.fee:tests/cube-free-expansion-alpha-of-temperature-orthotropic.fee]) AC_CONFIG_LINKS([tests/cube-free-expansion-uniform-isotropic.fee:tests/cube-free-expansion-uniform-isotropic.fee]) AC_CONFIG_LINKS([tests/cube-free-expansion-uniform-orthotropic.fee:tests/cube-free-expansion-uniform-orthotropic.fee]) AC_CONFIG_LINKS([tests/cube-radial.fee:tests/cube-radial.fee]) AC_CONFIG_LINKS([tests/cube-restrained-expansion-uniform-isotropic.fee:tests/cube-restrained-expansion-uniform-isotropic.fee]) AC_CONFIG_LINKS([tests/cube-restrained-expansion-uniform-orthotropic.fee:tests/cube-restrained-expansion-uniform-orthotropic.fee]) AC_CONFIG_LINKS([tests/cube-tangential.fee:tests/cube-tangential.fee]) AC_CONFIG_LINKS([tests/cylinder-force.fee:tests/cylinder-force.fee]) AC_CONFIG_LINKS([tests/cylinder-traction.fee:tests/cylinder-traction.fee]) AC_CONFIG_LINKS([tests/default_argument_value.fee:tests/default_argument_value.fee]) AC_CONFIG_LINKS([tests/diffusion-square-fully-mirrored.fee:tests/diffusion-square-fully-mirrored.fee]) AC_CONFIG_LINKS([tests/encased_rod_lr.fee:tests/encased_rod_lr.fee]) AC_CONFIG_LINKS([tests/encased_rod_tb.fee:tests/encased_rod_tb.fee]) AC_CONFIG_LINKS([tests/exp.fee:tests/exp.fee]) AC_CONFIG_LINKS([tests/expr.fee:tests/expr.fee]) AC_CONFIG_LINKS([tests/expressions_cumbersome.fee:tests/expressions_cumbersome.fee]) AC_CONFIG_LINKS([tests/expressions_functions.fee:tests/expressions_functions.fee]) AC_CONFIG_LINKS([tests/expressions_seven.fee:tests/expressions_seven.fee]) AC_CONFIG_LINKS([tests/expressions_sum.fee:tests/expressions_sum.fee]) AC_CONFIG_LINKS([tests/expressions_variables.fee:tests/expressions_variables.fee]) AC_CONFIG_LINKS([tests/fibo_formula.fee:tests/fibo_formula.fee]) AC_CONFIG_LINKS([tests/fibo_iterative.fee:tests/fibo_iterative.fee]) AC_CONFIG_LINKS([tests/fibo_vector.fee:tests/fibo_vector.fee]) AC_CONFIG_LINKS([tests/file-append.fee:tests/file-append.fee]) AC_CONFIG_LINKS([tests/file.fee:tests/file.fee]) AC_CONFIG_LINKS([tests/find_extrema2d.fee:tests/find_extrema2d.fee]) AC_CONFIG_LINKS([tests/fit1d.fee:tests/fit1d.fee]) AC_CONFIG_LINKS([tests/fit1d_gradient.fee:tests/fit1d_gradient.fee]) AC_CONFIG_LINKS([tests/fit1d_sigma.fee:tests/fit1d_sigma.fee]) AC_CONFIG_LINKS([tests/fit2d.fee:tests/fit2d.fee]) AC_CONFIG_LINKS([tests/func_min.fee:tests/func_min.fee]) AC_CONFIG_LINKS([tests/function_algebraic.fee:tests/function_algebraic.fee]) AC_CONFIG_LINKS([tests/function_data1d.fee:tests/function_data1d.fee]) AC_CONFIG_LINKS([tests/function_data1dlinear.fee:tests/function_data1dlinear.fee]) AC_CONFIG_LINKS([tests/function_data1dlinearchanged.fee:tests/function_data1dlinearchanged.fee]) AC_CONFIG_LINKS([tests/function_data2d.fee:tests/function_data2d.fee]) AC_CONFIG_LINKS([tests/function_file1d.fee:tests/function_file1d.fee]) AC_CONFIG_LINKS([tests/function_file1d_columns.fee:tests/function_file1d_columns.fee]) AC_CONFIG_LINKS([tests/function_over_mesh.fee:tests/function_over_mesh.fee]) AC_CONFIG_LINKS([tests/function_vectors1d.fee:tests/function_vectors1d.fee]) AC_CONFIG_LINKS([tests/geometric_series.fee:tests/geometric_series.fee]) AC_CONFIG_LINKS([tests/heater-cylinder-inches.fee:tests/heater-cylinder-inches.fee]) AC_CONFIG_LINKS([tests/hello.fee:tests/hello.fee]) AC_CONFIG_LINKS([tests/hello_mpi.fee:tests/hello_mpi.fee]) AC_CONFIG_LINKS([tests/hoc.fee:tests/hoc.fee]) AC_CONFIG_LINKS([tests/i-beam-euler-bernoulli.fee:tests/i-beam-euler-bernoulli.fee]) AC_CONFIG_LINKS([tests/if.fee:tests/if.fee]) AC_CONFIG_LINKS([tests/implicit.fee:tests/implicit.fee]) AC_CONFIG_LINKS([tests/include.fee:tests/include.fee]) AC_CONFIG_LINKS([tests/initial_conditions.fee:tests/initial_conditions.fee]) AC_CONFIG_LINKS([tests/integrate2d.fee:tests/integrate2d.fee]) AC_CONFIG_LINKS([tests/inverse-dae.fee:tests/inverse-dae.fee]) AC_CONFIG_LINKS([tests/inverse-integral.fee:tests/inverse-integral.fee]) AC_CONFIG_LINKS([tests/iterative.fee:tests/iterative.fee]) AC_CONFIG_LINKS([tests/la-p01-PUa-1-0-IN.fee:tests/la-p01-PUa-1-0-IN.fee]) AC_CONFIG_LINKS([tests/la-p02-PUa-1-0-SL.fee:tests/la-p02-PUa-1-0-SL.fee]) AC_CONFIG_LINKS([tests/la-p03-PUa-H2O_1-1-0-SL.fee:tests/la-p03-PUa-H2O_1-1-0-SL.fee]) AC_CONFIG_LINKS([tests/la-p04-PUa-H2O_0.5-1-0-SL.fee:tests/la-p04-PUa-H2O_0.5-1-0-SL.fee]) AC_CONFIG_LINKS([tests/la-p05-PUb-1-0-IN.fee:tests/la-p05-PUb-1-0-IN.fee]) AC_CONFIG_LINKS([tests/la-p06-PUb-1-0-SL.fee:tests/la-p06-PUb-1-0-SL.fee]) AC_CONFIG_LINKS([tests/la-p07-PUb-1-0-CY.fee:tests/la-p07-PUb-1-0-CY.fee]) AC_CONFIG_LINKS([tests/la-p08-PUb-1-0-SP.fee:tests/la-p08-PUb-1-0-SP.fee]) AC_CONFIG_LINKS([tests/la-p09-PUb-H2O_1-1-0-CY.fee:tests/la-p09-PUb-H2O_1-1-0-CY.fee]) AC_CONFIG_LINKS([tests/la-p10-PUb-H2O_10-1-0-CY.fee:tests/la-p10-PUb-H2O_10-1-0-CY.fee]) AC_CONFIG_LINKS([tests/la-p47-U-2-0-IN.fee:tests/la-p47-U-2-0-IN.fee]) AC_CONFIG_LINKS([tests/la-p48-U-2-0-SL.fee:tests/la-p48-U-2-0-SL.fee]) AC_CONFIG_LINKS([tests/la-p49-U-2-0-SP.fee:tests/la-p49-U-2-0-SP.fee]) AC_CONFIG_LINKS([tests/la-p50-UAl-2-0-IN.fee:tests/la-p50-UAl-2-0-IN.fee]) AC_CONFIG_LINKS([tests/la-p51-UAl-2-0-SL.fee:tests/la-p51-UAl-2-0-SL.fee]) AC_CONFIG_LINKS([tests/la-p52-UAl-2-0-SP.fee:tests/la-p52-UAl-2-0-SP.fee]) AC_CONFIG_LINKS([tests/la-p70-URRa-2-1-IN.fee:tests/la-p70-URRa-2-1-IN.fee]) AC_CONFIG_LINKS([tests/la-p71-URRa-2-1-SL.fee:tests/la-p71-URRa-2-1-SL.fee]) AC_CONFIG_LINKS([tests/lag.fee:tests/lag.fee]) AC_CONFIG_LINKS([tests/lag_compact.fee:tests/lag_compact.fee]) AC_CONFIG_LINKS([tests/laplace-square.fee:tests/laplace-square.fee]) AC_CONFIG_LINKS([tests/logphi.fee:tests/logphi.fee]) AC_CONFIG_LINKS([tests/long-bar-mechanical.fee:tests/long-bar-mechanical.fee]) AC_CONFIG_LINKS([tests/long-bar-thermal.fee:tests/long-bar-thermal.fee]) AC_CONFIG_LINKS([tests/map-cube-create.fee:tests/map-cube-create.fee]) AC_CONFIG_LINKS([tests/map-cube.fee:tests/map-cube.fee]) AC_CONFIG_LINKS([tests/map-function.fee:tests/map-function.fee]) AC_CONFIG_LINKS([tests/materials.fee:tests/materials.fee]) AC_CONFIG_LINKS([tests/matrix.fee:tests/matrix.fee]) AC_CONFIG_LINKS([tests/maze.fee:tests/maze.fee]) AC_CONFIG_LINKS([tests/mesh3d.fee:tests/mesh3d.fee]) AC_CONFIG_LINKS([tests/modal-beam-cantilever.fee:tests/modal-beam-cantilever.fee]) AC_CONFIG_LINKS([tests/modal-solidworks.fee:tests/modal-solidworks.fee]) AC_CONFIG_LINKS([tests/modal_rectangular_beam.fee:tests/modal_rectangular_beam.fee]) AC_CONFIG_LINKS([tests/moment-of-inertia.fee:tests/moment-of-inertia.fee]) AC_CONFIG_LINKS([tests/nafems-le1.fee:tests/nafems-le1.fee]) AC_CONFIG_LINKS([tests/nafems-le10.fee:tests/nafems-le10.fee]) AC_CONFIG_LINKS([tests/nafems-le11-alpha-of-T.fee:tests/nafems-le11-alpha-of-T.fee]) AC_CONFIG_LINKS([tests/nafems-le11-alpha-of-x.fee:tests/nafems-le11-alpha-of-x.fee]) AC_CONFIG_LINKS([tests/nafems-le11.fee:tests/nafems-le11.fee]) AC_CONFIG_LINKS([tests/nafems-t1.fee:tests/nafems-t1.fee]) AC_CONFIG_LINKS([tests/nafems-t2-1d.fee:tests/nafems-t2-1d.fee]) AC_CONFIG_LINKS([tests/nafems-t2-3d.fee:tests/nafems-t2-3d.fee]) AC_CONFIG_LINKS([tests/nafems-t3-1d.fee:tests/nafems-t3-1d.fee]) AC_CONFIG_LINKS([tests/nafems-t3-3d.fee:tests/nafems-t3-3d.fee]) AC_CONFIG_LINKS([tests/nafems-t4.fee:tests/nafems-t4.fee]) AC_CONFIG_LINKS([tests/open.fee:tests/open.fee]) AC_CONFIG_LINKS([tests/orthotropic-beam.fee:tests/orthotropic-beam.fee]) AC_CONFIG_LINKS([tests/parallelepiped-from-msh.fee:tests/parallelepiped-from-msh.fee]) AC_CONFIG_LINKS([tests/parallelepiped-thermal.fee:tests/parallelepiped-thermal.fee]) AC_CONFIG_LINKS([tests/parallelepiped.fee:tests/parallelepiped.fee]) AC_CONFIG_LINKS([tests/parameters.fee:tests/parameters.fee]) AC_CONFIG_LINKS([tests/peano.fee:tests/peano.fee]) AC_CONFIG_LINKS([tests/pellet-linear-guess.fee:tests/pellet-linear-guess.fee]) AC_CONFIG_LINKS([tests/pellet-linear-transient-from-initial.fee:tests/pellet-linear-transient-from-initial.fee]) AC_CONFIG_LINKS([tests/pellet-linear-transient-from-ss.fee:tests/pellet-linear-transient-from-ss.fee]) AC_CONFIG_LINKS([tests/pellet-linear.fee:tests/pellet-linear.fee]) AC_CONFIG_LINKS([tests/pellet-nonlinear-guess.fee:tests/pellet-nonlinear-guess.fee]) AC_CONFIG_LINKS([tests/pellet-nonlinear-linear-keyword.fee:tests/pellet-nonlinear-linear-keyword.fee]) AC_CONFIG_LINKS([tests/pellet-nonlinear-linear-option.fee:tests/pellet-nonlinear-linear-option.fee]) AC_CONFIG_LINKS([tests/pellet-nonlinear-q.fee:tests/pellet-nonlinear-q.fee]) AC_CONFIG_LINKS([tests/pellet-nonlinear-transient-from-initial.fee:tests/pellet-nonlinear-transient-from-initial.fee]) AC_CONFIG_LINKS([tests/pellet-nonlinear-transient-from-ss.fee:tests/pellet-nonlinear-transient-from-ss.fee]) AC_CONFIG_LINKS([tests/pellet-nonlinear.fee:tests/pellet-nonlinear.fee]) AC_CONFIG_LINKS([tests/pellet-nonuniform-q.fee:tests/pellet-nonuniform-q.fee]) AC_CONFIG_LINKS([tests/petsc_options.fee:tests/petsc_options.fee]) AC_CONFIG_LINKS([tests/pipe.fee:tests/pipe.fee]) AC_CONFIG_LINKS([tests/poisson-square.fee:tests/poisson-square.fee]) AC_CONFIG_LINKS([tests/powell.fee:tests/powell.fee]) AC_CONFIG_LINKS([tests/print.fee:tests/print.fee]) AC_CONFIG_LINKS([tests/print_function.fee:tests/print_function.fee]) AC_CONFIG_LINKS([tests/print_vector.fee:tests/print_vector.fee]) AC_CONFIG_LINKS([tests/printf.fee:tests/printf.fee]) AC_CONFIG_LINKS([tests/qrng.fee:tests/qrng.fee]) AC_CONFIG_LINKS([tests/qrng2d.fee:tests/qrng2d.fee]) AC_CONFIG_LINKS([tests/qrng2d_rhalton.fee:tests/qrng2d_rhalton.fee]) AC_CONFIG_LINKS([tests/qrng2d_sobol.fee:tests/qrng2d_sobol.fee]) AC_CONFIG_LINKS([tests/qrng2d_sobol_offset.fee:tests/qrng2d_sobol_offset.fee]) AC_CONFIG_LINKS([tests/qrng_others.fee:tests/qrng_others.fee]) AC_CONFIG_LINKS([tests/radiation-as-convection-celsius.fee:tests/radiation-as-convection-celsius.fee]) AC_CONFIG_LINKS([tests/radiation-as-convection-kelvin.fee:tests/radiation-as-convection-kelvin.fee]) AC_CONFIG_LINKS([tests/radiation-as-heatflux-celsius.fee:tests/radiation-as-heatflux-celsius.fee]) AC_CONFIG_LINKS([tests/radiation-as-heatflux-kelvin.fee:tests/radiation-as-heatflux-kelvin.fee]) AC_CONFIG_LINKS([tests/ray-effect-diffusion.fee:tests/ray-effect-diffusion.fee]) AC_CONFIG_LINKS([tests/ray-effect-full.fee:tests/ray-effect-full.fee]) AC_CONFIG_LINKS([tests/ray-effect.fee:tests/ray-effect.fee]) AC_CONFIG_LINKS([tests/reaction-displ.fee:tests/reaction-displ.fee]) AC_CONFIG_LINKS([tests/reaction-elastic-lr.fee:tests/reaction-elastic-lr.fee]) AC_CONFIG_LINKS([tests/reaction-elastic-lt.fee:tests/reaction-elastic-lt.fee]) AC_CONFIG_LINKS([tests/reaction-force.fee:tests/reaction-force.fee]) AC_CONFIG_LINKS([tests/reactivity-from-table.fee:tests/reactivity-from-table.fee]) AC_CONFIG_LINKS([tests/read_mesh2d.fee:tests/read_mesh2d.fee]) AC_CONFIG_LINKS([tests/read_vtk5.fee:tests/read_vtk5.fee]) AC_CONFIG_LINKS([tests/readmsh_writevtk_readbackvtk.fee:tests/readmsh_writevtk_readbackvtk.fee]) AC_CONFIG_LINKS([tests/rectangular_plate_with_hole.fee:tests/rectangular_plate_with_hole.fee]) AC_CONFIG_LINKS([tests/reed.fee:tests/reed.fee]) AC_CONFIG_LINKS([tests/reflected-src.fee:tests/reflected-src.fee]) AC_CONFIG_LINKS([tests/reflected.fee:tests/reflected.fee]) AC_CONFIG_LINKS([tests/rosenbrock.fee:tests/rosenbrock.fee]) AC_CONFIG_LINKS([tests/single-arc.fee:tests/single-arc.fee]) AC_CONFIG_LINKS([tests/sn-square-fully-mirrored.fee:tests/sn-square-fully-mirrored.fee]) AC_CONFIG_LINKS([tests/sort_vector.fee:tests/sort_vector.fee]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-plane.fee:tests/spinning-disk-parallel-plane.fee]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-solid-half.fee:tests/spinning-disk-parallel-solid-half.fee]) AC_CONFIG_LINKS([tests/sqrt.fee:tests/sqrt.fee]) AC_CONFIG_LINKS([tests/statically_indeterminate_reaction.fee:tests/statically_indeterminate_reaction.fee]) AC_CONFIG_LINKS([tests/steps.fee:tests/steps.fee]) AC_CONFIG_LINKS([tests/t21.fee:tests/t21.fee]) AC_CONFIG_LINKS([tests/thermal-slab-convection-as-heat-nosource.fee:tests/thermal-slab-convection-as-heat-nosource.fee]) AC_CONFIG_LINKS([tests/thermal-slab-convection-nosource.fee:tests/thermal-slab-convection-nosource.fee]) AC_CONFIG_LINKS([tests/thermal-slab-heat-nosource.fee:tests/thermal-slab-heat-nosource.fee]) AC_CONFIG_LINKS([tests/thermal-slab-no-k.fee:tests/thermal-slab-no-k.fee]) AC_CONFIG_LINKS([tests/thermal-slab-space-nosource.fee:tests/thermal-slab-space-nosource.fee]) AC_CONFIG_LINKS([tests/thermal-slab-temperature-nosource.fee:tests/thermal-slab-temperature-nosource.fee]) AC_CONFIG_LINKS([tests/thermal-slab-transient-mms-capacity-of-T.fee:tests/thermal-slab-transient-mms-capacity-of-T.fee]) AC_CONFIG_LINKS([tests/thermal-slab-transient-mms.fee:tests/thermal-slab-transient-mms.fee]) AC_CONFIG_LINKS([tests/thermal-slab-transient.fee:tests/thermal-slab-transient.fee]) AC_CONFIG_LINKS([tests/thermal-slab-uniform-nosource.fee:tests/thermal-slab-uniform-nosource.fee]) AC_CONFIG_LINKS([tests/thermal-slab-uniform-source-dirichlet-neumann.fee:tests/thermal-slab-uniform-source-dirichlet-neumann.fee]) AC_CONFIG_LINKS([tests/thermal-slab-uniform-source.fee:tests/thermal-slab-uniform-source.fee]) AC_CONFIG_LINKS([tests/thermal-slab-wrong-bc.fee:tests/thermal-slab-wrong-bc.fee]) AC_CONFIG_LINKS([tests/thermal-square.fee:tests/thermal-square.fee]) AC_CONFIG_LINKS([tests/thermal-two-squares-material-explicit-space.fee:tests/thermal-two-squares-material-explicit-space.fee]) AC_CONFIG_LINKS([tests/thermal-two-squares-material-explicit-temperature.fee:tests/thermal-two-squares-material-explicit-temperature.fee]) AC_CONFIG_LINKS([tests/thermal-two-squares-material-explicit-uniform.fee:tests/thermal-two-squares-material-explicit-uniform.fee]) AC_CONFIG_LINKS([tests/thermal-two-squares-material-implicit-space.fee:tests/thermal-two-squares-material-implicit-space.fee]) AC_CONFIG_LINKS([tests/thermal-two-squares-material-implicit-temperature.fee:tests/thermal-two-squares-material-implicit-temperature.fee]) AC_CONFIG_LINKS([tests/thermal-two-squares-material-implicit-uniform.fee:tests/thermal-two-squares-material-implicit-uniform.fee]) AC_CONFIG_LINKS([tests/time_path.fee:tests/time_path.fee]) AC_CONFIG_LINKS([tests/time_path_petsc.fee:tests/time_path_petsc.fee]) AC_CONFIG_LINKS([tests/time_path_raw.fee:tests/time_path_raw.fee]) AC_CONFIG_LINKS([tests/time_path_sundials.fee:tests/time_path_sundials.fee]) AC_CONFIG_LINKS([tests/transient-from-mesh-different-dt.fee:tests/transient-from-mesh-different-dt.fee]) AC_CONFIG_LINKS([tests/transient-from-mesh-same-dt.fee:tests/transient-from-mesh-same-dt.fee]) AC_CONFIG_LINKS([tests/transient-to-mesh.fee:tests/transient-to-mesh.fee]) AC_CONFIG_LINKS([tests/two-cubes-isotropic-functions.fee:tests/two-cubes-isotropic-functions.fee]) AC_CONFIG_LINKS([tests/two-cubes-isotropic-materials.fee:tests/two-cubes-isotropic-materials.fee]) AC_CONFIG_LINKS([tests/two-cubes-isotropic-variables.fee:tests/two-cubes-isotropic-variables.fee]) AC_CONFIG_LINKS([tests/two-cubes-orthotropic-functions.fee:tests/two-cubes-orthotropic-functions.fee]) AC_CONFIG_LINKS([tests/two-cubes-orthotropic-materials.fee:tests/two-cubes-orthotropic-materials.fee]) AC_CONFIG_LINKS([tests/two-cubes-orthotropic-variables.fee:tests/two-cubes-orthotropic-variables.fee]) AC_CONFIG_LINKS([tests/ud20-1-0-sl-src-vacuum.fee:tests/ud20-1-0-sl-src-vacuum.fee]) AC_CONFIG_LINKS([tests/ud20-1-0-sl-src.fee:tests/ud20-1-0-sl-src.fee]) AC_CONFIG_LINKS([tests/ud20-1-0-sl-vacuum.fee:tests/ud20-1-0-sl-vacuum.fee]) AC_CONFIG_LINKS([tests/ud20-1-0-sl.fee:tests/ud20-1-0-sl.fee]) AC_CONFIG_LINKS([tests/var.fee:tests/var.fee]) AC_CONFIG_LINKS([tests/vector.fee:tests/vector.fee]) AC_CONFIG_LINKS([tests/vector_init.fee:tests/vector_init.fee]) AC_CONFIG_LINKS([tests/warp.fee:tests/warp.fee]) AC_CONFIG_LINKS([tests/wilson-1d.fee:tests/wilson-1d.fee]) AC_CONFIG_LINKS([tests/wilson-2d.fee:tests/wilson-2d.fee]) AC_CONFIG_LINKS([tests/write_mesh2d.fee:tests/write_mesh2d.fee]) AC_CONFIG_LINKS([tests/xfail-data-variable.fee:tests/xfail-data-variable.fee]) AC_CONFIG_LINKS([tests/xfail-few-properties-ortho-good.fee:tests/xfail-few-properties-ortho-good.fee]) AC_CONFIG_LINKS([tests/xfail-few-properties-ortho-poisson.fee:tests/xfail-few-properties-ortho-poisson.fee]) AC_CONFIG_LINKS([tests/xfail-few-properties-ortho-shear.fee:tests/xfail-few-properties-ortho-shear.fee]) AC_CONFIG_LINKS([tests/xfail-few-properties-ortho-young.fee:tests/xfail-few-properties-ortho-young.fee]) AC_CONFIG_LINKS([tests/2dpwr-eighth.geo:tests/2dpwr-eighth.geo]) AC_CONFIG_LINKS([tests/2dpwr-quarter.geo:tests/2dpwr-quarter.geo]) AC_CONFIG_LINKS([tests/Barra1D.geo:tests/Barra1D.geo]) AC_CONFIG_LINKS([tests/PF.geo:tests/PF.geo]) AC_CONFIG_LINKS([tests/annulus.geo:tests/annulus.geo]) AC_CONFIG_LINKS([tests/azmy-structured.geo:tests/azmy-structured.geo]) AC_CONFIG_LINKS([tests/beam-cantilever-hex20.geo:tests/beam-cantilever-hex20.geo]) AC_CONFIG_LINKS([tests/beam-cantilever-hex27.geo:tests/beam-cantilever-hex27.geo]) AC_CONFIG_LINKS([tests/beam-cantilever-hex8.geo:tests/beam-cantilever-hex8.geo]) AC_CONFIG_LINKS([tests/beam-cantilever-tet10.geo:tests/beam-cantilever-tet10.geo]) AC_CONFIG_LINKS([tests/beam-cantilever-tet4.geo:tests/beam-cantilever-tet4.geo]) AC_CONFIG_LINKS([tests/beam-cantilever.geo:tests/beam-cantilever.geo]) AC_CONFIG_LINKS([tests/bimetallic-strip.geo:tests/bimetallic-strip.geo]) AC_CONFIG_LINKS([tests/bunny-box.geo:tests/bunny-box.geo]) AC_CONFIG_LINKS([tests/bunny.geo:tests/bunny.geo]) AC_CONFIG_LINKS([tests/circle.geo:tests/circle.geo]) AC_CONFIG_LINKS([tests/cube-hex.geo:tests/cube-hex.geo]) AC_CONFIG_LINKS([tests/cube.geo:tests/cube.geo]) AC_CONFIG_LINKS([tests/cylinder.geo:tests/cylinder.geo]) AC_CONFIG_LINKS([tests/encased_rod.geo:tests/encased_rod.geo]) AC_CONFIG_LINKS([tests/heater-cylinder-inches.geo:tests/heater-cylinder-inches.geo]) AC_CONFIG_LINKS([tests/i-beam-hex.geo:tests/i-beam-hex.geo]) AC_CONFIG_LINKS([tests/i-beam-tet.geo:tests/i-beam-tet.geo]) AC_CONFIG_LINKS([tests/la-IN.geo:tests/la-IN.geo]) AC_CONFIG_LINKS([tests/la-p02-PUa-1-0-SL.geo:tests/la-p02-PUa-1-0-SL.geo]) AC_CONFIG_LINKS([tests/la-p03-PUa-H2O_1-1-0-SL.geo:tests/la-p03-PUa-H2O_1-1-0-SL.geo]) AC_CONFIG_LINKS([tests/la-p04-PUa-H2O_0.5-1-0-SL.geo:tests/la-p04-PUa-H2O_0.5-1-0-SL.geo]) AC_CONFIG_LINKS([tests/la-p06-PUb-1-0-SL.geo:tests/la-p06-PUb-1-0-SL.geo]) AC_CONFIG_LINKS([tests/la-p07-PUb-1-0-CY.geo:tests/la-p07-PUb-1-0-CY.geo]) AC_CONFIG_LINKS([tests/la-p08-PUb-1-0-SP.geo:tests/la-p08-PUb-1-0-SP.geo]) AC_CONFIG_LINKS([tests/la-p09-PUb-H2O_1-1-0-CY.geo:tests/la-p09-PUb-H2O_1-1-0-CY.geo]) AC_CONFIG_LINKS([tests/la-p10-PUb-H2O_10-1-0-CY.geo:tests/la-p10-PUb-H2O_10-1-0-CY.geo]) AC_CONFIG_LINKS([tests/la-p48-U-2-0-SL.geo:tests/la-p48-U-2-0-SL.geo]) AC_CONFIG_LINKS([tests/la-p49-U-2-0-SP.geo:tests/la-p49-U-2-0-SP.geo]) AC_CONFIG_LINKS([tests/la-p51-UAl-2-0-SL.geo:tests/la-p51-UAl-2-0-SL.geo]) AC_CONFIG_LINKS([tests/la-p52-UAl-2-0-SP.geo:tests/la-p52-UAl-2-0-SP.geo]) AC_CONFIG_LINKS([tests/la-p71-URRa-2-1-SL.geo:tests/la-p71-URRa-2-1-SL.geo]) AC_CONFIG_LINKS([tests/long-bar-struct.geo:tests/long-bar-struct.geo]) AC_CONFIG_LINKS([tests/long-bar-unstruct.geo:tests/long-bar-unstruct.geo]) AC_CONFIG_LINKS([tests/map-cube.geo:tests/map-cube.geo]) AC_CONFIG_LINKS([tests/maze.geo:tests/maze.geo]) AC_CONFIG_LINKS([tests/nafems-le1.geo:tests/nafems-le1.geo]) AC_CONFIG_LINKS([tests/nafems-le10.geo:tests/nafems-le10.geo]) AC_CONFIG_LINKS([tests/nafems-le11-hex20.geo:tests/nafems-le11-hex20.geo]) AC_CONFIG_LINKS([tests/nafems-le11-hex27.geo:tests/nafems-le11-hex27.geo]) AC_CONFIG_LINKS([tests/nafems-le11-hex8.geo:tests/nafems-le11-hex8.geo]) AC_CONFIG_LINKS([tests/nafems-le11-tet10.geo:tests/nafems-le11-tet10.geo]) AC_CONFIG_LINKS([tests/nafems-le11-tet4.geo:tests/nafems-le11-tet4.geo]) AC_CONFIG_LINKS([tests/nafems-le11.geo:tests/nafems-le11.geo]) AC_CONFIG_LINKS([tests/nafems-t1-unstruct.geo:tests/nafems-t1-unstruct.geo]) AC_CONFIG_LINKS([tests/nafems-t1.geo:tests/nafems-t1.geo]) AC_CONFIG_LINKS([tests/nafems-t4.geo:tests/nafems-t4.geo]) AC_CONFIG_LINKS([tests/parallelepiped.geo:tests/parallelepiped.geo]) AC_CONFIG_LINKS([tests/pellet.geo:tests/pellet.geo]) AC_CONFIG_LINKS([tests/pipe-sch20-2-2.geo:tests/pipe-sch20-2-2.geo]) AC_CONFIG_LINKS([tests/pipe-sch27-2-2.geo:tests/pipe-sch27-2-2.geo]) AC_CONFIG_LINKS([tests/pipe-sct10-2-2.geo:tests/pipe-sct10-2-2.geo]) AC_CONFIG_LINKS([tests/pipe-ssh20-2-2.geo:tests/pipe-ssh20-2-2.geo]) AC_CONFIG_LINKS([tests/pipe-ssh27-2-2.geo:tests/pipe-ssh27-2-2.geo]) AC_CONFIG_LINKS([tests/pipe-sst10-2-2.geo:tests/pipe-sst10-2-2.geo]) AC_CONFIG_LINKS([tests/pipe-uct10-2-2.geo:tests/pipe-uct10-2-2.geo]) AC_CONFIG_LINKS([tests/pipe-ust10-2-2.geo:tests/pipe-ust10-2-2.geo]) AC_CONFIG_LINKS([tests/ray-effect-eighth.geo:tests/ray-effect-eighth.geo]) AC_CONFIG_LINKS([tests/ray-effect-full.geo:tests/ray-effect-full.geo]) AC_CONFIG_LINKS([tests/ray-effect-half.geo:tests/ray-effect-half.geo]) AC_CONFIG_LINKS([tests/ray-effect-quarter.geo:tests/ray-effect-quarter.geo]) AC_CONFIG_LINKS([tests/rectangular_beam.geo:tests/rectangular_beam.geo]) AC_CONFIG_LINKS([tests/rectangular_plate_with_hole.geo:tests/rectangular_plate_with_hole.geo]) AC_CONFIG_LINKS([tests/reed.geo:tests/reed.geo]) AC_CONFIG_LINKS([tests/reflected.geo:tests/reflected.geo]) AC_CONFIG_LINKS([tests/single-arc.geo:tests/single-arc.geo]) AC_CONFIG_LINKS([tests/slab-1d-0.1m.geo:tests/slab-1d-0.1m.geo]) AC_CONFIG_LINKS([tests/slab-3d-0.1m.geo:tests/slab-3d-0.1m.geo]) AC_CONFIG_LINKS([tests/slab.geo:tests/slab.geo]) AC_CONFIG_LINKS([tests/slab2.geo:tests/slab2.geo]) AC_CONFIG_LINKS([tests/spinning-disk-dimensions.geo:tests/spinning-disk-dimensions.geo]) AC_CONFIG_LINKS([tests/spinning-disk-holed-solid-full_unstruct.geo:tests/spinning-disk-holed-solid-full_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-holed-solid-halfquarter_unstruct.geo:tests/spinning-disk-holed-solid-halfquarter_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-axisymmetric-full_unstruct.geo:tests/spinning-disk-parallel-axisymmetric-full_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-axisymmetric-half_unstruct.geo:tests/spinning-disk-parallel-axisymmetric-half_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-plane-eighth_unstruct.geo:tests/spinning-disk-parallel-plane-eighth_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-plane-full_unstruct.geo:tests/spinning-disk-parallel-plane-full_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-plane-quarter_unstruct.geo:tests/spinning-disk-parallel-plane-quarter_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-plane-sixteenth_unstruct.geo:tests/spinning-disk-parallel-plane-sixteenth_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-solid-full_unstruct.geo:tests/spinning-disk-parallel-solid-full_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-solid-half_unstruct.geo:tests/spinning-disk-parallel-solid-half_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-solid-halfeighth_unstruct.geo:tests/spinning-disk-parallel-solid-halfeighth_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-solid-halfquarter_unstruct.geo:tests/spinning-disk-parallel-solid-halfquarter_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.geo:tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.geo]) AC_CONFIG_LINKS([tests/spinning-disk-unstruct.geo:tests/spinning-disk-unstruct.geo]) AC_CONFIG_LINKS([tests/square-centered.geo:tests/square-centered.geo]) AC_CONFIG_LINKS([tests/square-struct.geo:tests/square-struct.geo]) AC_CONFIG_LINKS([tests/square.geo:tests/square.geo]) AC_CONFIG_LINKS([tests/statically_indeterminate_reaction.geo:tests/statically_indeterminate_reaction.geo]) AC_CONFIG_LINKS([tests/t21.geo:tests/t21.geo]) AC_CONFIG_LINKS([tests/two-cubes.geo:tests/two-cubes.geo]) AC_CONFIG_LINKS([tests/two-squares-quad.geo:tests/two-squares-quad.geo]) AC_CONFIG_LINKS([tests/two-squares.geo:tests/two-squares.geo]) AC_CONFIG_LINKS([tests/ud20-1-0-sl.geo:tests/ud20-1-0-sl.geo]) AC_CONFIG_LINKS([tests/wilson-1d.geo:tests/wilson-1d.geo]) AC_CONFIG_LINKS([tests/wilson-2d.geo:tests/wilson-2d.geo]) AC_CONFIG_LINKS([tests/Barra1D.msh:tests/Barra1D.msh]) AC_CONFIG_LINKS([tests/airfoil.msh:tests/airfoil.msh]) AC_CONFIG_LINKS([tests/beam-cantilever-hex20.msh:tests/beam-cantilever-hex20.msh]) AC_CONFIG_LINKS([tests/beam-cantilever-hex27.msh:tests/beam-cantilever-hex27.msh]) AC_CONFIG_LINKS([tests/beam-cantilever-hex8.msh:tests/beam-cantilever-hex8.msh]) AC_CONFIG_LINKS([tests/beam-cantilever-tet10.msh:tests/beam-cantilever-tet10.msh]) AC_CONFIG_LINKS([tests/beam-cantilever-tet4.msh:tests/beam-cantilever-tet4.msh]) AC_CONFIG_LINKS([tests/convectionbc.msh:tests/convectionbc.msh]) AC_CONFIG_LINKS([tests/convectionbc2.msh:tests/convectionbc2.msh]) AC_CONFIG_LINKS([tests/cube-hex.msh:tests/cube-hex.msh]) AC_CONFIG_LINKS([tests/cylinder.msh:tests/cylinder.msh]) AC_CONFIG_LINKS([tests/mesh2d-bin.msh:tests/mesh2d-bin.msh]) AC_CONFIG_LINKS([tests/nafems-le1-1.msh:tests/nafems-le1-1.msh]) AC_CONFIG_LINKS([tests/nafems-le1-2.msh:tests/nafems-le1-2.msh]) AC_CONFIG_LINKS([tests/nafems-le1-3.msh:tests/nafems-le1-3.msh]) AC_CONFIG_LINKS([tests/nafems-le1-4.msh:tests/nafems-le1-4.msh]) AC_CONFIG_LINKS([tests/nafems-le1-5.msh:tests/nafems-le1-5.msh]) AC_CONFIG_LINKS([tests/nafems-le1-6.msh:tests/nafems-le1-6.msh]) AC_CONFIG_LINKS([tests/nafems-le1-7.msh:tests/nafems-le1-7.msh]) AC_CONFIG_LINKS([tests/nafems-le1-8.msh:tests/nafems-le1-8.msh]) AC_CONFIG_LINKS([tests/ray-effect-eighth.msh:tests/ray-effect-eighth.msh]) AC_CONFIG_LINKS([tests/ray-effect-full.msh:tests/ray-effect-full.msh]) AC_CONFIG_LINKS([tests/ray-effect-half.msh:tests/ray-effect-half.msh]) AC_CONFIG_LINKS([tests/ray-effect-quarter.msh:tests/ray-effect-quarter.msh]) AC_CONFIG_LINKS([tests/reaction.msh:tests/reaction.msh]) AC_CONFIG_LINKS([tests/reflected.msh:tests/reflected.msh]) AC_CONFIG_LINKS([tests/single-arc1.msh:tests/single-arc1.msh]) AC_CONFIG_LINKS([tests/single-arc2.msh:tests/single-arc2.msh]) AC_CONFIG_LINKS([tests/slab-1d-0.1m.msh:tests/slab-1d-0.1m.msh]) AC_CONFIG_LINKS([tests/slab-3d-0.1m.msh:tests/slab-3d-0.1m.msh]) AC_CONFIG_LINKS([tests/slab.msh:tests/slab.msh]) AC_CONFIG_LINKS([tests/slab2.msh:tests/slab2.msh]) AC_CONFIG_LINKS([tests/square.msh:tests/square.msh]) AC_CONFIG_LINKS([tests/square22.msh:tests/square22.msh]) AC_CONFIG_LINKS([tests/square40.msh:tests/square40.msh]) AC_CONFIG_LINKS([tests/square41.msh:tests/square41.msh]) AC_CONFIG_LINKS([tests/square41bin.msh:tests/square41bin.msh]) AC_CONFIG_LINKS([tests/t21.msh:tests/t21.msh]) AC_CONFIG_LINKS([tests/tet1.msh:tests/tet1.msh]) AC_CONFIG_LINKS([tests/two-squares-bin-gmsh.msh:tests/two-squares-bin-gmsh.msh]) AC_CONFIG_LINKS([tests/two-squares-bin-meshio.msh:tests/two-squares-bin-meshio.msh]) AC_CONFIG_LINKS([tests/two-squares.msh:tests/two-squares.msh]) AC_CONFIG_LINKS([tests/ud20-1-0-sl.msh:tests/ud20-1-0-sl.msh]) AC_CONFIG_LINKS([tests/Tini.dat:tests/Tini.dat]) AC_CONFIG_LINKS([tests/asme-expansion-table.dat:tests/asme-expansion-table.dat]) AC_CONFIG_LINKS([tests/data1d.dat:tests/data1d.dat]) AC_CONFIG_LINKS([tests/data1d_columns.dat:tests/data1d_columns.dat]) AC_CONFIG_LINKS([tests/data2d.dat:tests/data2d.dat]) AC_CONFIG_LINKS([tests/flux.dat:tests/flux.dat]) AC_CONFIG_LINKS([tests/algebraic_expr.ref:tests/algebraic_expr.ref]) AC_CONFIG_LINKS([tests/annulus-modal.ref:tests/annulus-modal.ref]) AC_CONFIG_LINKS([tests/bc-groups1.ref:tests/bc-groups1.ref]) AC_CONFIG_LINKS([tests/bc-groups2.ref:tests/bc-groups2.ref]) AC_CONFIG_LINKS([tests/bc-groups3.ref:tests/bc-groups3.ref]) AC_CONFIG_LINKS([tests/bc-groups4.ref:tests/bc-groups4.ref]) AC_CONFIG_LINKS([tests/expressions_cumbersome.ref:tests/expressions_cumbersome.ref]) AC_CONFIG_LINKS([tests/expressions_variables.ref:tests/expressions_variables.ref]) AC_CONFIG_LINKS([tests/fibo_formula.ref:tests/fibo_formula.ref]) AC_CONFIG_LINKS([tests/fibo_iterative.ref:tests/fibo_iterative.ref]) AC_CONFIG_LINKS([tests/fibo_vector.ref:tests/fibo_vector.ref]) AC_CONFIG_LINKS([tests/find_extrema2d.ref:tests/find_extrema2d.ref]) AC_CONFIG_LINKS([tests/fit1d_gradient.ref:tests/fit1d_gradient.ref]) AC_CONFIG_LINKS([tests/function_vectors1d.ref:tests/function_vectors1d.ref]) AC_CONFIG_LINKS([tests/iterative.ref:tests/iterative.ref]) AC_CONFIG_LINKS([tests/nafems-le10.ref:tests/nafems-le10.ref]) AC_CONFIG_LINKS([tests/print_function.ref:tests/print_function.ref]) AC_CONFIG_LINKS([tests/print_vector.ref:tests/print_vector.ref]) AC_CONFIG_LINKS([tests/printf.ref:tests/printf.ref]) AC_CONFIG_LINKS([tests/qrng.ref:tests/qrng.ref]) AC_CONFIG_LINKS([tests/qrng2d_rhalton.ref:tests/qrng2d_rhalton.ref]) AC_CONFIG_LINKS([tests/qrng2d_sobol.ref:tests/qrng2d_sobol.ref]) AC_CONFIG_LINKS([tests/qrng_others.ref:tests/qrng_others.ref]) AC_CONFIG_LINKS([tests/reaction-displ.ref:tests/reaction-displ.ref]) AC_CONFIG_LINKS([tests/reaction-elastic-lr.ref:tests/reaction-elastic-lr.ref]) AC_CONFIG_LINKS([tests/reaction-elastic-lt.ref:tests/reaction-elastic-lt.ref]) AC_CONFIG_LINKS([tests/reaction-force.ref:tests/reaction-force.ref]) AC_CONFIG_LINKS([tests/steps.ref:tests/steps.ref]) AC_CONFIG_LINKS([tests/thermal-slab-uniform-source-octave.ref:tests/thermal-slab-uniform-source-octave.ref]) AC_CONFIG_LINKS([tests/transient-from-mesh-different-dt.ref:tests/transient-from-mesh-different-dt.ref]) AC_CONFIG_LINKS([tests/transient-from-mesh-same-dt.ref:tests/transient-from-mesh-same-dt.ref]) AC_CONFIG_LINKS([tests/transient-to-mesh.ref:tests/transient-to-mesh.ref]) AC_CONFIG_LINKS([tests/two-is-2.ref:tests/two-is-2.ref]) AC_CONFIG_LINKS([tests/two-is-3.ref:tests/two-is-3.ref]) AC_CONFIG_LINKS([tests/mesh2d-v5.vtk:tests/mesh2d-v5.vtk]) AC_CONFIG_LINKS([tests/reaction-force-v5.vtk:tests/reaction-force-v5.vtk]) AC_CONFIG_LINKS([tests/square.vtk:tests/square.vtk]) AC_CONFIG_LINKS([tests/reed-ref.csv:tests/reed-ref.csv]) feenox-1.1/tests/0000755000175000017500000000000014773607300011011 500000000000000feenox-1.1/tests/function_algebraic.fee0000644000175000017500000000010014773607165015230 00000000000000FUNCTION f(x) = x^2 g(x,y) = f(x) + y^2 + x*y PRINT f(2) g(3,4) feenox-1.1/tests/two-cubes-orthotropic-functions.fee0000644000175000017500000000147714773607165017724 00000000000000PROBLEM mechanical READ_MESH two-cubes.msh Ex_soft(x,y,z) = 0.1*100000 Ey_soft(x,y,z) = 0.1*75000 Ez_soft(x,y,z) = 0.1*50000 Gxy_soft(x,y,z) = 0.1*30000.0 Gyz_soft(x,y,z) = 0.1*40000.0 Gzx_soft(x,y,z) = 0.1*35000.0 nuxy_soft(x,y,z) = 0.3 nuyz_soft(x,y,z) = 0.25 nu13_soft(x,y,z) = 0.4 nuzx_soft(x,y,z) = nu13_soft(x,y,z) * Ez_soft(x,y,z)/Ex_soft(x,y,z) Ex_hard(x,y,z) = 10*100000 Ey_hard(x,y,z) = 10*75000 Ez_hard(x,y,z) = 10*50000 Gxy_hard(x,y,z) = 10*30000.0 Gyz_hard(x,y,z) = 10*40000.0 Gzx_hard(x,y,z) = 10*35000.0 nuxy_hard(x,y,z) = 0.3 nuyz_hard(x,y,z) = 0.25 nu13_hard(x,y,z) = 0.4 nuzx_hard(x,y,z) = nu13_hard(x,y,z) * Ez_hard(x,y,z)/Ex_hard(x,y,z) BC left fixed BC right Fx=1000 SOLVE_PROBLEM WRITE_MESH two-cubes-orthotropic-functions.vtk VECTOR u v w sigmax sigmay sigmaz tauxy tauyz tauzx PRINT %.1f sigma(0,0,0) feenox-1.1/tests/circle_surface.fee0000644000175000017500000000020114773607165014365 00000000000000# gmsh -2 circle.geo -order ${1} -o circle1.msh READ_MESH circle${1}.msh PHYSICAL_GROUP surface DIM 2 PRINT %.1e surface_area-pi feenox-1.1/tests/time_path.fee0000644000175000017500000000000014773607165013363 00000000000000feenox-1.1/tests/spinning-disk-unstruct.geo0000644000175000017500000000030114773607165016072 00000000000000Mesh.Algorithm = 6; Mesh.Algorithm3D = 10; Mesh.MeshSizeMax = R/16; Mesh.ElementOrder = 2; Mesh.SecondOrderLinear = 0; Mesh.Optimize = 1; //Mesh.OptimizeNetgen = 1; Mesh.HighOrderOptimize = 1; feenox-1.1/tests/pellet-linear-guess.fee0000644000175000017500000000107714773607165015311 00000000000000# https://www.nuclear-power.com/nuclear-engineering/heat-transfer/heat-generation/temperature-profile-nuclear-fuel/ PROBLEM thermal 3D READ_MESH pellet.msh # pellet radius in m r = 4e-3 # uniform conductivity (i.e. linear problem) k = 2.8 # q is in W / m^3 = 300 W/cm * 100 cm/m / area q = 300 * 100 / (pi*r^2) BC symmetry q=0 BC external T=420 # initial guess for the temperature (default is the average of all dirichlet BCs) T_guess(x,y,z) = 700 # analytical solution T_ref = 420 + q/(4*k)*r^2 SOLVE_PROBLEM PRINT T_max-T_ref # WRITE_MESH pellet-linear-guess.vtk T feenox-1.1/tests/spinning-disk-parallel-plane-sixteenth_unstruct.geo0000644000175000017500000000062214773607165023062 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Point(1) = {0,0,0}; Point(2) = {R,0,0}; Point(3) = {R*Cos(2*Pi/16),R*Sin(2*Pi/16),0}; Circle(1) = {2, 1, 3}; Line(2) = {3, 1}; Line(3) = {1, 2}; Curve Loop(1) = {1, 2, 3}; Plane Surface(1) = {1}; Physical Surface("bulk") = {1}; Physical Curve("symmetry1") = {3}; Physical Curve("symmetry2") = {2}; feenox-1.1/tests/slab.geo0000644000175000017500000000032214773607165012354 00000000000000Point(1) = {0, 0, 0}; Point(2) = {1, 0, 0}; Line(1) = {1, 2}; Physical Point("left") = {1}; Physical Point("right") = {2}; Physical Line("bulk") = {1}; Transfinite Curve {1} = 10+1; // 11 nodes = 10 elements feenox-1.1/tests/la-p52-UAl-2-0-SP.geo0000644000175000017500000000052514773607165013733 00000000000000rc = 17.66738; n = 3; SetFactory("OpenCASCADE"); Sphere(1) = {0, 0, 0, rc, 0, Pi/2, Pi/2}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = rc/n; Mesh.ElementOrder = 1; Mesh.RecombineAll = 0; Mesh.Optimize = 1; //Mesh.OptimizeNetgen = 1; Physical Volume("fuel") = {1}; Physical Surface("mirror") = {4, 3, 2}; Physical Surface("vacuum") = {1}; feenox-1.1/tests/azmy-structured.fee0000644000175000017500000000111414773607165014602 00000000000000DEFAULT_ARGUMENT_VALUE 1 4 PROBLEM neutron_sn DIM 2 GROUPS 1 SN $1 READ_MESH $0.msh MATERIAL src S1=1 Sigma_t1=1 Sigma_s1.1=0.5 MATERIAL abs S1=0 Sigma_t1=2 Sigma_s1.1=0.1 PHYSICAL_GROUP llq MATERIAL src PHYSICAL_GROUP lrq MATERIAL abs PHYSICAL_GROUP urq MATERIAL abs PHYSICAL_GROUP ulq MATERIAL abs BC mirror mirror BC vacuum vacuum SOLVE_PROBLEM # compute mean values in each quadrant INTEGRATE phi1 OVER llq RESULT lower_left_quadrant INTEGRATE phi1 OVER lrq RESULT lower_right_quadrant INTEGRATE phi1 OVER urq RESULT upper_right_quadrant PRINT lower_left_quadrant/25-1.676 feenox-1.1/tests/H2O.fee0000644000175000017500000000051114773607165012010 00000000000000# material H2O nuSigma_f1_refl = 0 Sigma_s1.1_refl = 0.293760 Sigma_t1_refl = 0.32640 # these ones are not used by the problem but to check Sigma_c1_refl = 0.032640 c_refl = 0.9 IF equal(Sigma_t1_refl,Sigma_c1_refl+Sigma_s1.1_refl)=0|equal(c_refl,Sigma_s1.1_refl/Sigma_t1_refl)=0 PRINT "XS mismatch in $0" ABORT ENDIF feenox-1.1/tests/mesh2d-v5.vtk0000644000175000017500000000141714773607165013205 00000000000000# vtk DataFile Version 5.1 vtk output ASCII DATASET UNSTRUCTURED_GRID POINTS 12 double 0 0 0 1 0 0 1 1 0 0 1 0 0.5 0 0 1 0.5 0 0.5 1 0 0 0.5 0 0.25 0.25 0 0.625 0.375 0 0.71875 0.71875 0 0.345703 0.654297 0 METADATA INFORMATION 2 NAME L2_NORM_RANGE LOCATION vtkDataArray DATA 2 0 1.41421 NAME L2_NORM_FINITE_RANGE LOCATION vtkDataArray DATA 2 0 1.41421 CELLS 15 42 OFFSETS vtktypeint64 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 CONNECTIVITY vtktypeint64 1 9 4 5 9 1 3 11 6 7 11 3 2 10 5 6 10 2 4 8 0 0 8 7 9 11 8 8 11 7 4 9 8 10 11 9 6 11 10 5 10 9 CELL_TYPES 14 5 5 5 5 5 5 5 5 5 5 5 5 5 5 POINT_DATA 12 SCALARS f double LOOKUP_TABLE default 1 0.367879 0.198766 0.540302 0.606531 0.322845 0.32771 0.877583 0.75459 0.498065 0.366802 0.561561 METADATA INFORMATION 0 feenox-1.1/tests/expressions_variables.fee0000644000175000017500000000050614773607165016036 00000000000000x = -1 y = -(-1) z = -(-(-1)) a = -(-exp(-x)) b = -(+exp(+(-y))) c = -(+exp(-(+z))) k = -(-(-x))-(-(-(x))) l = -(-(-y))-(-(-(y))) m = -(-(-z))-(-(-(z))) o = -(-(-x))+(+(-(x))) p = -(-(-y))+(-(+(y))) q = -(+(-z))+(-(-(z))) PRINT x PRINT y PRINT z PRINT a PRINT b PRINT c PRINT k PRINT l PRINT m PRINT o PRINT p PRINT q feenox-1.1/tests/diffusion-square-fully-mirrored.fee0000644000175000017500000000046614773607165017667 00000000000000PROBLEM neutron_diffusion DIM 2 GROUPS 1 READ_MESH square-struct.msh S1 = 1 Sigma_t1 = 2 Sigma_s1.1 = 1 BC left mirror BC right mirror BC bottom mirror BC top mirror # DUMP K K_bc b b_bc FORMAT octave SOLVE_PROBLEM PRINT phi1(0.5,0.5)-1 # WRITE_RESULTS FORMAT vtk # PRINT_FUNCTION FORMAT %.4f phi1 feenox-1.1/tests/pellet-nonuniform-q.fee0000644000175000017500000000034314773607165015336 00000000000000PROBLEM thermal 3D READ_MESH pellet.msh k = 4 # q is in W / m^3 = 300 W/cm * 100 cm/m / area r = 4e-3 q0 = 300 * 100 / (pi*r^2) q(x,y,z) = q0 * (1+20*x) BC symmetry q=0 BC external T=420 SOLVE_PROBLEM PRINT %.0f T_max-1037 feenox-1.1/tests/circle_fit.fee0000644000175000017500000000023114773607165013522 00000000000000VAR log_a b fitted_log_e(log_h) := log_a + b*log_h FUNCTION log_e(log_h) FILE circle_perimeter${1}.dat FIT fitted_log_e TO log_e VIA log_a b PRINT b-$1 feenox-1.1/tests/la-p07-PUb-1-0-CY.geo0000644000175000017500000000066114773607165013731 00000000000000rc = 4.279960; n = 10; SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {rc, 0, 0}; Point(3) = {0, rc, 0}; Line(1) = {3, 1}; Line(2) = {1, 2}; Circle(3) = {2, 1, 3}; Curve Loop(1) = {3, 1, 2}; Plane Surface(1) = {1}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = rc/n; Mesh.ElementOrder = 2; Mesh.RecombineAll = 0; Physical Surface("fuel") = {1}; Physical Curve("mirror", 4) = {2, 1}; Physical Curve("vacuum", 5) = {3}; feenox-1.1/tests/pipe.fee0000644000175000017500000000636614773607165012373 00000000000000# from https://github.com/seamplex/pipe-linearize # convergence study of linearized stresses in an infinite pipe # with respect to the number of elements in the pipe thickness PROBLEM mechanical PC mumps # PETSC_OPTIONS -mg_levels_pc_type sor # t0 = wall_time() # initial wall time # read mesh according to shape $1, order $2 and number of elements through thickness $2 DEFAULT_ARGUMENT_VALUE 2 2 DEFAULT_ARGUMENT_VALUE 3 2 READ_MESH pipe-$1-$2-$3.msh # problem parameters for # 12"-inch schedule 100 b = 323.8/2 # external radius [ mm ] a = b-21.5 # internal radius [ mm ] l = 2*(b-a) # axial length [ mm ] E = 200e3 # Young modulus [ MPa ] nu = 0.3 # Poisson's ratio [ non-dimensional ] p = 10 # internal pressure [ MPa ] # ------------------------------------------------------------------------ # definition of analytical solutions for comparison from # ur(x,y,z) = (p*a^2*sqrt(y^2+z^2))/(E*(b^2-a^2)) * ((1-2*nu)*(1+nu) + (1+nu)*b^2/(y^2+z^2)) sigmal(x,y,z) = 2*nu*p*a^2/(b^2-a^2) sigmar(x,y,z) = p*a^2/(b^2-a^2) * (1 - b^2/(y^2+z^2)) sigmatheta(x,y,z) = p*a^2/(b^2-a^2) * (1 + b^2/(y^2+z^2)) # principal stresses along the radial coordinate (may be y or z) sigma1_anal(r) = sigmatheta(0,0,r) sigma2_anal(r) = sigmal(0,0,r) sigma3_anal(r) = sigmar(0,0,r) # computation of main membrane stresses M1 = 1/(b-a)*integral(sigma1_anal(r), r, a, b) M2 = 1/(b-a)*integral(sigma2_anal(r), r, a, b) M3 = 1/(b-a)*integral(sigma3_anal(r), r, a, b) # von mises and tresca membrane stresses Mt_anal = max(abs(M1-M2), abs(M2-M3), abs(M3-M1)) Mv_anal = sqrt(((M1-M2)^2 + (M2-M3)^2 + (M3-M1)^2)/2) # computation of membrane plus bending stresses MB1 = M1 + 6/(b-a)^2*integral(sigma1_anal(r)*((a+b)/2-r), r, a, b) MB2 = M2 + 6/(b-a)^2*integral(sigma2_anal(r)*((a+b)/2-r), r, a, b) MB3 = M3 + 6/(b-a)^2*integral(sigma3_anal(r)*((a+b)/2-r), r, a, b) # von mises and tresca MBv_anal = sqrt(((MB1-MB2)^2 + (MB2-MB3)^2 + (MB3-MB1)^2)/2) MBt_anal = max(abs(MB1-MB2), abs(MB2-MB3), abs(MB3-MB1)) # set boundary conditions BC pressure pressure=p BC front tangential radial BC back tangential radial SOLVE_PROBLEM # write distribution of results in gmsh format (optional) # WRITE_MESH pipe-out-$1-$2-$3.msh VECTOR u v w sigma1 sigma2 sigma3 sigmax sigmay sigmaz tauxy tauyz tauzx # write same thing as ASCII data # PRINT_FUNCTION v sigma1 sigma2 sigma3 MIN 0 a 0 MAX 0 b 0 NSTEPS 1 200 1 FILE pipe-dist-$1-$2-$3.dat # compute linearized stresses for both von Mises and Tresca LINEARIZE_STRESS FROM 0 a 0 TO 0 b 0 M Mv MB MBv Mt Mt MBt MBt # compute L2 errors volume = pi*(b^2-a^2)*l h = (volume/cells)^(1/3) ur_fea(x,y,z) = sqrt(v(x,y,z)^2+w(x,y,z)^2) INTEGRATE (ur_fea(x,y,z)-ur(x,y,z))^2 RESULT e2ur INTEGRATE (sigma1(x,y,z)-sigmatheta(x,y,z))^2 RESULT e2sigma1 INTEGRATE (sigma3(x,y,z)-sigmar(x,y,z))^2 RESULT e2sigma3 error_ur = sqrt(e2ur)/volume error_sigma1 = sqrt(e2sigma1)/volume error_sigma3 = sqrt(e2sigma3)/volume error_Mv = abs(Mv-Mv_anal)/Mv_anal error_MBv = abs(MBv-MBv_anal)/Mv_anal error_Mt = abs(Mt-Mt_anal)/Mv_anal error_MBt = abs(MBt-MBt_anal)/Mv_anal PRINT error_ur+error_sigma1+error_sigma3+error_Mv+error_MBv+error_Mt+error_MBt feenox-1.1/tests/steps.fee0000644000175000017500000000017014773607165012557 00000000000000DEFAULT_ARGUMENT_VALUE 1 0.5 DEFAULT_ARGUMENT_VALUE 2 10 static_steps = $2 PRINT if(step_static=1,1,quasi_random($1,1)) feenox-1.1/tests/cmp-zero.fee0000644000175000017500000000006114773607165013154 00000000000000DEFAULT_ARGUMENT_VALUE 2 1e-3 PRINT abs($1)<($2) feenox-1.1/tests/bc-groups3.ref0000644000175000017500000000032314773607165013422 00000000000000{ "bcs": [ { "name": "A", "groups": [ "left", "front", "bottom" ] }, { "name": "B", "groups": [ "right", "back", "top" ] } ] } feenox-1.1/tests/thermal-two-squares-material-implicit-temperature.fee0000644000175000017500000000025114773607165023304 00000000000000READ_MESH two-squares.msh DIMENSIONS 2 PROBLEM thermal k_soft(x,y) = 0.5+T(x,y) k_hard(x,y) = 2.0-T(x,y) BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT %.3f T(1,0.5) feenox-1.1/tests/single-arc2.msh0000644000175000017500000000053514773607165013564 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 1 1 2 "quarter" $EndPhysicalNames $Entities 3 1 0 0 1 0 0 0 0 2 1 0 0 0 3 0 1 0 0 1 5.551115123125783e-17 0 0 1 1 0 1 2 2 2 -3 $EndEntities $Nodes 3 3 1 3 0 2 0 1 1 1 0 0 0 3 0 1 2 0 1 0 1 1 0 1 3 0.7071067793544993 0.7071067830185958 0 $EndNodes $Elements 1 1 1 1 1 1 8 1 1 1 2 3 $EndElements feenox-1.1/tests/nafems-t2-3.sh0000755000175000017500000000062514773607165013240 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal answerzero nafems-t2-1d.fee exitifwrong $? answerzero nafems-t2-3d.fee exitifwrong $? answerfloat nafems-t3-1d.fee 36.6 0.05 exitifwrong $? answerfloat nafems-t3-3d.fee 36.6 0.05 exitifwrong $? feenox-1.1/tests/nafems-t2-3d.fee0000644000175000017500000000162714773607165013531 00000000000000# NAFEMS-T2 benchmark: 1d steady-state heat conduction with radiation READ_MESH slab-3d-0.1m.msh DIMENSIONS 3 PROBLEM thermal l = 0.1 # slab length in meters (used in the mesh) k = 55.6 # W/(m K) # sigma = 5.67e-8 # W m^2 / K^4 as in the problem sigma = 5.670374419e-8 # as in wikipedia e = 0.98 T0 = 1000 # K Tinf = 300 # K BC left T=T0 BC right q=sigma*e*(Tinf^4-T(x,y,z)^4) snes_rtol = 1e-9 SOLVE_PROBLEM VAR T' T_analytical = root((T'-T0)*k/l + sigma*e*(T'^4-Tinf^4), T', 0, 2000, 1e-12) # check the numerical temperature matches the analytical one IF abs(T_analytical-T(0.1,0,0))>1e-6 ABORT ENDIF # compute total heat fluxes REACTION left RESULT q_left REACTION right RESULT q_right # check left and right are equal IF abs(q_left+q_right)>1e-5 ABORT ENDIF # check the numerical heat flux is the same as the analytical one PRINT q_left+k*(T_analytical-T0)/l*(l/20)^2 feenox-1.1/tests/symmetry.sh0000755000175000017500000000054014773607165013171 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical answer cube-tangential.fee "0.234568 0.123457 -0.345679" exitifwrong $? answer cube-radial.fee "0.123457 0.000000 0.123457" exitifwrong $? feenox-1.1/tests/square-centered.geo0000644000175000017500000000045114773607165014525 00000000000000SetFactory("OpenCASCADE"); Rectangle(1) = {-1, -1, 0, 2, 2, 0}; Transfinite Curve "*" = 32+1; Transfinite Surface "*"; Mesh.RecombineAll = 1; Physical Curve("left") = {4}; Physical Curve("right") = {2}; Physical Curve("bottom") = {1}; Physical Curve("up") = {3}; Physical Surface("bulk") = {1}; feenox-1.1/tests/abort.sh0000755000175000017500000000034014773607165012405 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer abort.fee "before" exit $? feenox-1.1/tests/fibo_vector.fee0000644000175000017500000000017414773607165013726 00000000000000# the fibonacci sequence as a vector VECTOR f SIZE 25 f[i]<1:2> = 1 f[i]<3:vecsize(f)> = f[i-2] + f[i-1] PRINT_VECTOR i f feenox-1.1/tests/nafems-le10.geo0000644000175000017500000000317514773607165013454 00000000000000// NAFEMS LE10 benchmark geometry SetFactory("OpenCASCADE"); a = 1000; // geometric parameters (in mm) b = 2750; c = 3250; d = 2000; h = 600; Point(1) = {0, a, -h/2}; // the four points A', B', C' and D' Point(2) = {0, b, -h/2}; Point(3) = {c, 0, -h/2}; Point(4) = {d, 0, -h/2}; Line(1) = {1, 2}; // lower Ellipse (2) = {0,0,-h/2, c, b, 0, Pi/2}; Line(3) = {3, 4}; Ellipse (4) = {0,0,-h/2, d, a, 0, Pi/2}; Coherence; // merge the points Curve Loop(1) = {3, 4, 1, -2}; Plane Surface(1) = {1}; Extrude {0, 0, h} { Surface{1}; } Ellipse (13) = {0,0,0, c, b, 0, Pi/2}; // midplane BooleanFragments{ Volume{1}; Surface{5}; Delete; }{ Curve{13}; Delete; } // define physical names from the geometrical entity ids Physical Surface("upper") = {7}; Physical Surface("DCD'C'") = {3}; Physical Surface("ABA'B'") = {5}; Physical Surface("BCB'C'") = {1, 2}; Physical Curve("midplane") = {13}; Physical Volume("bulk") = {1}; Mesh.ElementOrder = 2; // use second-order tetrahedra Mesh.Algorithm = 6; // 2D mesh algorithm Mesh.Algorithm3D = 1 ; // 3D mesh algorithm Mesh.Optimize = 1; // Optimize the mesh Mesh.HighOrderOptimize = 2; // Optimize high-order meshes? 2: elastic+optimization Mesh.MeshSizeMax = h/2; // main element size Mesh.MeshSizeMin = h/6; // refined element size // local refinement around the point D (entity 8) Field[1] = Distance; Field[1].NodesList = {8}; Field[2] = Threshold; Field[2].IField = 1; Field[2].LcMin = Mesh.MeshSizeMin; Field[2].LcMax = Mesh.MeshSizeMax; Field[2].DistMin = 0.5 * Mesh.MeshSizeMax; Field[2].DistMax = 1.0 * Mesh.MeshSizeMax; Background Field = {2}; feenox-1.1/tests/heater-cylinder-inches.geo0000644000175000017500000000035514773607165015767 00000000000000SetFactory("OpenCASCADE"); Cylinder(1) = {0, 0, 0, 0, 0, 1, 3.937, Pi/12}; Physical Volume("liquid") = {1}; Physical Surface("front") = {3}; Physical Surface("adiabatic") = {1, 2, 4, 5}; Mesh.MeshSizeMax = 0.1; Mesh.ElementOrder = 2; feenox-1.1/tests/builtin.sh0000755000175000017500000000035214773607165012747 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer1 expr.fee "abs(-1)" 1 exitifwrong $? feenox-1.1/tests/powell.fee0000644000175000017500000000027314773607165012727 00000000000000# from https://www.gnu.org/software/gsl/doc/html/multiroots.html A = 1e4 x0 = 0.5 x1 = 1 SOLVE FOR 2 UNKNOWNS x0 x1 { A*x0*x1=1 exp(-x0)+exp(-x1)=(1+1/A) } PRINT %.6f x0 x1 SEP " " feenox-1.1/tests/Barra1D.msh0000644000175000017500000000173514773607165012675 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 0 1 "left" 0 2 "right" 1 3 "bulk" $EndPhysicalNames $Entities 2 1 0 0 1 0 0 0 1 1 2 1 0 0 1 2 1 0 0 0 1 0 0 1 3 2 1 -2 $EndEntities $Nodes 3 21 1 21 0 1 0 1 1 0 0 0 0 2 0 1 2 1 0 0 1 1 0 19 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 0.04999999999989965 0 0 0.09999999999981467 0 0 0.1499999999997036 0 0 0.1999999999995579 0 0 0.2499999999994121 0 0 0.2999999999992664 0 0 0.3499999999991206 0 0 0.3999999999989749 0 0 0.4499999999988292 0 0 0.4999999999986943 0 0 0.5499999999988151 0 0 0.5999999999989468 0 0 0.6499999999990784 0 0 0.69999999999921 0 0 0.7499999999993417 0 0 0.7999999999994734 0 0 0.8499999999996051 0 0 0.8999999999997368 0 0 0.9499999999998684 0 0 $EndNodes $Elements 3 22 1 22 0 1 15 1 1 1 0 2 15 1 2 2 1 1 1 20 3 1 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 8 9 10 9 10 11 10 11 12 11 12 13 12 13 14 13 14 15 14 15 16 15 16 17 16 17 18 17 18 19 18 19 20 19 20 21 20 21 22 21 2 $EndElements feenox-1.1/tests/beam-cantilever-hex20.msh0000644000175000017500000001235614773607165015444 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 2 1 "left" 2 2 "right" 3 3 "bulk" $EndPhysicalNames $Entities 8 12 6 1 1 0 -0.025 0.01 0 2 0 -0.025 -0.01 0 3 0 0.025 0.01 0 4 0 0.025 -0.01 0 5 0.5 -0.025 0.01 0 6 0.5 -0.025 -0.01 0 7 0.5 0.025 0.01 0 8 0.5 0.025 -0.01 0 1 -1e-07 -0.0250001 -0.0100001 1e-07 -0.0249999 0.0100001 0 2 2 -1 2 -1e-07 -0.0250001 0.009999900000000001 1e-07 0.0250001 0.0100001 0 2 1 -3 3 -1e-07 0.0249999 -0.0100001 1e-07 0.0250001 0.0100001 0 2 4 -3 4 -1e-07 -0.0250001 -0.0100001 1e-07 0.0250001 -0.009999900000000001 0 2 2 -4 5 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 0.0100001 0 2 6 -5 6 0.4999999 -0.0250001 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 2 5 -7 7 0.4999999 0.0249999 -0.0100001 0.5000000999999999 0.0250001 0.0100001 0 2 8 -7 8 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 2 6 -8 9 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 -0.009999900000000001 0 2 2 -6 10 -9.999999997511999e-08 -0.0250001 0.009999900000000001 0.5000000999999999 -0.0249999 0.0100001 0 2 1 -5 11 -9.999999997511999e-08 0.0249999 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 2 4 -8 12 -9.999999997511999e-08 0.0249999 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 2 3 -7 1 -1e-07 -0.0250001 -0.0100001 1e-07 0.0250001 0.0100001 1 1 4 -1 4 3 -2 2 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 0.0100001 1 2 4 -5 8 7 -6 3 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 0.0100001 0 4 -9 1 10 -5 4 -9.999999997511999e-08 0.0249999 -0.0100001 0.5000000999999999 0.0250001 0.0100001 0 4 -11 3 12 -7 5 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 4 -4 9 8 -11 6 -9.999999997511999e-08 -0.0250001 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 4 -2 10 6 -12 1 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 0.0100001 1 3 6 -1 2 -3 4 -5 6 $EndEntities $Nodes 27 89 1 89 0 1 0 1 1 0 -0.025 0.01 0 2 0 1 2 0 -0.025 -0.01 0 3 0 1 3 0 0.025 0.01 0 4 0 1 4 0 0.025 -0.01 0 5 0 1 5 0.5 -0.025 0.01 0 6 0 1 6 0.5 -0.025 -0.01 0 7 0 1 7 0.5 0.025 0.01 0 8 0 1 8 0.5 0.025 -0.01 1 1 0 1 9 0 -0.025 0 1 2 0 3 10 11 12 0 1.734723475976807e-17 0.01 0 -0.01249999999999999 0.01 0 0.01250000000000001 0.01 1 3 0 1 13 0 0.025 0 1 4 0 3 14 15 16 0 1.734723475976807e-17 -0.01 0 -0.01249999999999999 -0.01 0 0.01250000000000001 -0.01 1 5 0 1 17 0.5 -0.025 0 1 6 0 3 18 19 20 0.5 1.734723475976807e-17 0.01 0.5 -0.01249999999999999 0.01 0.5 0.01250000000000001 0.01 1 7 0 1 21 0.5 0.025 0 1 8 0 3 22 23 24 0.5 1.734723475976807e-17 -0.01 0.5 -0.01249999999999999 -0.01 0.5 0.01250000000000001 -0.01 1 9 0 7 25 26 27 28 29 30 31 0.125 -0.025 -0.01 0.25 -0.025 -0.01 0.375 -0.025 -0.01 0.06249999999999999 -0.025 -0.01 0.1875 -0.025 -0.01 0.3125 -0.025 -0.01 0.4375 -0.025 -0.01 1 10 0 7 32 33 34 35 36 37 38 0.125 -0.025 0.01 0.25 -0.025 0.01 0.375 -0.025 0.01 0.06249999999999999 -0.025 0.01 0.1875 -0.025 0.01 0.3125 -0.025 0.01 0.4375 -0.025 0.01 1 11 0 7 39 40 41 42 43 44 45 0.125 0.025 -0.01 0.25 0.025 -0.01 0.375 0.025 -0.01 0.06249999999999999 0.025 -0.01 0.1875 0.025 -0.01 0.3125 0.025 -0.01 0.4375 0.025 -0.01 1 12 0 7 46 47 48 49 50 51 52 0.125 0.025 0.01 0.25 0.025 0.01 0.375 0.025 0.01 0.06249999999999999 0.025 0.01 0.1875 0.025 0.01 0.3125 0.025 0.01 0.4375 0.025 0.01 2 1 0 1 53 0 1.734723475976807e-17 0 2 2 0 1 54 0.5 1.734723475976807e-17 0 2 3 0 3 55 56 57 0.125 -0.025 0 0.25 -0.025 0 0.375 -0.025 0 2 4 0 3 58 59 60 0.125 0.025 0 0.25 0.025 0 0.375 0.025 0 2 5 0 13 61 62 63 64 65 66 67 68 69 70 71 72 73 0.125 1.734723475976807e-17 -0.01 0.25 1.734723475976807e-17 -0.01 0.375 1.040834085586084e-17 -0.01 0.0625 1.734723475976807e-17 -0.01 0.125 -0.01249999999999999 -0.01 0.1875 1.734723475976807e-17 -0.01 0.25 -0.01249999999999999 -0.01 0.3125 1.387778780781446e-17 -0.01 0.375 -0.0125 -0.01 0.4375 1.387778780781446e-17 -0.01 0.125 0.01250000000000001 -0.01 0.25 0.01250000000000001 -0.01 0.375 0.0125 -0.01 2 6 0 13 74 75 76 77 78 79 80 81 82 83 84 85 86 0.125 1.734723475976807e-17 0.01 0.25 1.734723475976807e-17 0.01 0.375 1.040834085586084e-17 0.01 0.125 -0.01249999999999999 0.01 0.0625 1.734723475976807e-17 0.01 0.25 -0.01249999999999999 0.01 0.1875 1.734723475976807e-17 0.01 0.375 -0.0125 0.01 0.3125 1.387778780781446e-17 0.01 0.4375 1.387778780781446e-17 0.01 0.125 0.01250000000000001 0.01 0.25 0.01250000000000001 0.01 0.375 0.0125 0.01 3 1 0 3 87 88 89 0.125 1.734723475976807e-17 0 0.25 1.734723475976807e-17 0 0.375 1.040834085586084e-17 0 $EndNodes $Elements 3 12 1 12 2 1 16 2 1 2 1 10 14 9 11 53 15 2 14 10 3 4 53 12 13 16 2 2 16 2 3 6 22 18 5 23 54 19 17 4 22 8 7 18 24 21 20 54 3 1 17 8 5 10 1 2 14 74 32 25 61 11 53 78 9 35 15 28 64 77 87 55 65 6 74 32 25 61 75 33 26 62 77 87 80 55 36 65 29 66 79 88 56 67 7 75 33 26 62 76 34 27 63 79 88 82 56 37 67 30 68 81 89 57 69 8 76 34 27 63 18 5 6 22 81 89 83 57 38 69 31 70 19 54 17 23 9 3 10 14 4 46 74 61 39 12 13 49 53 78 16 64 42 84 58 87 71 10 46 74 61 39 47 75 62 40 84 58 50 87 80 71 66 43 85 59 88 72 11 47 75 62 40 48 76 63 41 85 59 51 88 82 72 68 44 86 60 89 73 12 48 76 63 41 7 18 22 8 86 60 52 89 83 73 70 45 20 21 54 24 $EndElements feenox-1.1/tests/reed.fee0000644000175000017500000000222214773607165012340 00000000000000# solve the reed 1d benchmark # # | | | | | | # m | src= 50 | 0 | 0 | 1 | 0 | v # i | | | | | | a # r | tot= 50 | 5 | 0 | 1 | 1 | c # r | | | | | | u # o | scat=0 | 0 | 0 | 0.9| 0.9 | u # r | | | | | | m # | | | | | | # | 1 | 2 | 3 | 4 | 5 | # | | | | | | # +---------+----+---------+----+---------+-------> x # x=0 x=2 x=3 x=5 x=6 x=8 DEFAULT_ARGUMENT_VALUE 1 2 PROBLEM neutron_sn DIM 1 GROUPS 1 SN $1 READ_MESH reed.msh MATERIAL source_abs S1=50 Sigma_t1=50 Sigma_s1.1=0 MATERIAL absorber S1=0 Sigma_t1=5 Sigma_s1.1=0 MATERIAL void S1=0 Sigma_t1=0 Sigma_s1.1=0 MATERIAL source_scat S1=1 Sigma_t1=1 Sigma_s1.1=0.9 MATERIAL reflector S1=0 Sigma_t1=1 Sigma_s1.1=0.9 BC left mirror BC right vacuum SOLVE_PROBLEM FUNCTION ref(x) FILE reed-ref.csv INTERPOLATION steffen PRINT sqrt(integral((ref(x)-phi1(x))^2,x,0,8))/8 feenox-1.1/tests/poisson-square.fee0000644000175000017500000000032214773607165014410 00000000000000PROBLEM laplace 2d READ_MESH square-centered.msh BC zero phi=0 GROUPS left right bottom up f = 1 gamg_threshold = 1e-4 SOLVE_PROBLEM WRITE_RESULTS PRINT %.4f phi(0,0) dphidx(-0.5,-0.5) dphidy(0.5,0.5) SEP " " feenox-1.1/tests/two-cubes-isotropic-materials.fee0000644000175000017500000000042014773607165017317 00000000000000PROBLEM mechanical READ_MESH two-cubes.msh MATERIAL soft E=1e3 nu=0.2 MATERIAL hard E=200e3 nu=0.3 BC left fixed BC right Fx=1000 SOLVE_PROBLEM WRITE_MESH two-cubes-isotropic-materials.vtk VECTOR u v w sigmax sigmay sigmaz tauxy tauyz tauzx PRINT %.1f sigma(0,0,0) feenox-1.1/tests/mesh3d.fee0000644000175000017500000000004614773607165012606 00000000000000READ_MESH cylinder.msh PRINT elements feenox-1.1/tests/beam-cantilever-tet10.msh0000644000175000017500000001755514773607165015461 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 2 1 "left" 2 2 "right" 3 3 "bulk" $EndPhysicalNames $Entities 8 12 6 1 1 0 -0.025 0.01 0 2 0 -0.025 -0.01 0 3 0 0.025 0.01 0 4 0 0.025 -0.01 0 5 0.5 -0.025 0.01 0 6 0.5 -0.025 -0.01 0 7 0.5 0.025 0.01 0 8 0.5 0.025 -0.01 0 1 -1e-07 -0.0250001 -0.0100001 1e-07 -0.0249999 0.0100001 0 2 2 -1 2 -1e-07 -0.0250001 0.009999900000000001 1e-07 0.0250001 0.0100001 0 2 1 -3 3 -1e-07 0.0249999 -0.0100001 1e-07 0.0250001 0.0100001 0 2 4 -3 4 -1e-07 -0.0250001 -0.0100001 1e-07 0.0250001 -0.009999900000000001 0 2 2 -4 5 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 0.0100001 0 2 6 -5 6 0.4999999 -0.0250001 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 2 5 -7 7 0.4999999 0.0249999 -0.0100001 0.5000000999999999 0.0250001 0.0100001 0 2 8 -7 8 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 2 6 -8 9 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 -0.009999900000000001 0 2 2 -6 10 -9.999999997511999e-08 -0.0250001 0.009999900000000001 0.5000000999999999 -0.0249999 0.0100001 0 2 1 -5 11 -9.999999997511999e-08 0.0249999 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 2 4 -8 12 -9.999999997511999e-08 0.0249999 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 2 3 -7 1 -1e-07 -0.0250001 -0.0100001 1e-07 0.0250001 0.0100001 1 1 4 -1 4 3 -2 2 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 0.0100001 1 2 4 -5 8 7 -6 3 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 0.0100001 0 4 -9 1 10 -5 4 -9.999999997511999e-08 0.0249999 -0.0100001 0.5000000999999999 0.0250001 0.0100001 0 4 -11 3 12 -7 5 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 4 -4 9 8 -11 6 -9.999999997511999e-08 -0.0250001 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 4 -2 10 6 -12 1 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 0.0100001 1 3 6 -1 2 -3 4 -5 6 $EndEntities $Nodes 27 135 1 135 0 1 0 1 1 0 -0.025 0.01 0 2 0 1 2 0 -0.025 -0.01 0 3 0 1 3 0 0.025 0.01 0 4 0 1 4 0 0.025 -0.01 0 5 0 1 5 0.5 -0.025 0.01 0 6 0 1 6 0.5 -0.025 -0.01 0 7 0 1 7 0.5 0.025 0.01 0 8 0 1 8 0.5 0.025 -0.01 1 1 0 1 9 0 -0.025 0 1 2 0 3 10 11 12 0 1.734723475976807e-17 0.01 0 -0.01249999999999999 0.01 0 0.01250000000000001 0.01 1 3 0 1 13 0 0.025 0 1 4 0 3 14 15 16 0 1.734723475976807e-17 -0.01 0 -0.01249999999999999 -0.01 0 0.01250000000000001 -0.01 1 5 0 1 17 0.5 -0.025 0 1 6 0 3 18 19 20 0.5 1.734723475976807e-17 0.01 0.5 -0.01249999999999999 0.01 0.5 0.01250000000000001 0.01 1 7 0 1 21 0.5 0.025 0 1 8 0 3 22 23 24 0.5 1.734723475976807e-17 -0.01 0.5 -0.01249999999999999 -0.01 0.5 0.01250000000000001 -0.01 1 9 0 7 25 26 27 28 29 30 31 0.125 -0.025 -0.01 0.25 -0.025 -0.01 0.375 -0.025 -0.01 0.06249999999999999 -0.025 -0.01 0.1875 -0.025 -0.01 0.3125 -0.025 -0.01 0.4375 -0.025 -0.01 1 10 0 7 32 33 34 35 36 37 38 0.125 -0.025 0.01 0.25 -0.025 0.01 0.375 -0.025 0.01 0.06249999999999999 -0.025 0.01 0.1875 -0.025 0.01 0.3125 -0.025 0.01 0.4375 -0.025 0.01 1 11 0 7 39 40 41 42 43 44 45 0.125 0.025 -0.01 0.25 0.025 -0.01 0.375 0.025 -0.01 0.06249999999999999 0.025 -0.01 0.1875 0.025 -0.01 0.3125 0.025 -0.01 0.4375 0.025 -0.01 1 12 0 7 46 47 48 49 50 51 52 0.125 0.025 0.01 0.25 0.025 0.01 0.375 0.025 0.01 0.06249999999999999 0.025 0.01 0.1875 0.025 0.01 0.3125 0.025 0.01 0.4375 0.025 0.01 2 1 0 3 53 54 55 0 -0.01249999999999999 0 0 1.734723475976807e-17 0 0 0.01250000000000001 0 2 2 0 3 56 57 58 0.5 -0.01249999999999999 0 0.5 1.734723475976807e-17 0 0.5 0.01250000000000001 0 2 3 0 7 59 60 61 62 63 64 65 0.0625 -0.025 0 0.125 -0.025 0 0.1875 -0.025 0 0.25 -0.025 0 0.3125 -0.025 0 0.375 -0.025 0 0.4375 -0.025 0 2 4 0 7 66 67 68 69 70 71 72 0.0625 0.025 0 0.125 0.025 0 0.1875 0.025 0 0.25 0.025 0 0.3125 0.025 0 0.375 0.025 0 0.4375 0.025 0 2 5 0 21 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 0.125 1.734723475976807e-17 -0.01 0.25 1.734723475976807e-17 -0.01 0.375 1.040834085586084e-17 -0.01 0.0625 -0.01249999999999999 -0.01 0.0625 1.734723475976807e-17 -0.01 0.125 -0.01249999999999999 -0.01 0.1875 -0.01249999999999999 -0.01 0.1875 1.734723475976807e-17 -0.01 0.25 -0.01249999999999999 -0.01 0.3125 -0.01249999999999999 -0.01 0.3125 1.387778780781446e-17 -0.01 0.375 -0.0125 -0.01 0.4375 -0.0125 -0.01 0.4375 1.387778780781446e-17 -0.01 0.0625 0.01250000000000001 -0.01 0.125 0.01250000000000001 -0.01 0.1875 0.01250000000000001 -0.01 0.25 0.01250000000000001 -0.01 0.3125 0.0125 -0.01 0.375 0.0125 -0.01 0.4375 0.01250000000000001 -0.01 2 6 0 21 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 0.125 1.734723475976807e-17 0.01 0.25 1.734723475976807e-17 0.01 0.375 1.040834085586084e-17 0.01 0.0625 -0.01249999999999999 0.01 0.125 -0.01249999999999999 0.01 0.0625 1.734723475976807e-17 0.01 0.1875 -0.01249999999999999 0.01 0.25 -0.01249999999999999 0.01 0.1875 1.734723475976807e-17 0.01 0.3125 -0.01249999999999999 0.01 0.375 -0.0125 0.01 0.3125 1.387778780781446e-17 0.01 0.4375 -0.0125 0.01 0.4375 1.387778780781446e-17 0.01 0.0625 0.01250000000000001 0.01 0.125 0.01250000000000001 0.01 0.1875 0.01250000000000001 0.01 0.25 0.01250000000000001 0.01 0.3125 0.0125 0.01 0.375 0.0125 0.01 0.4375 0.01250000000000001 0.01 3 1 0 21 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 0.0625 -0.01249999999999999 0 0.125 -0.01249999999999999 0 0.0625 1.734723475976807e-17 0 0.125 1.734723475976807e-17 0 0.1875 -0.01249999999999999 0 0.25 -0.01249999999999999 0 0.1875 1.734723475976807e-17 0 0.25 1.734723475976807e-17 0 0.3125 -0.01249999999999999 0 0.375 -0.0125 0 0.3125 1.387778780781446e-17 0 0.375 1.040834085586084e-17 0 0.4375 -0.0125 0 0.4375 1.387778780781446e-17 0 0.0625 0.01250000000000001 0 0.125 0.01250000000000001 0 0.1875 0.01250000000000001 0 0.25 0.01250000000000001 0 0.3125 0.01250000000000001 0 0.375 0.01250000000000001 0 0.4375 0.01250000000000001 0 $EndNodes $Elements 3 56 1 56 2 1 9 4 1 2 1 14 9 53 15 2 14 1 10 53 11 54 3 14 10 4 54 55 16 4 4 10 3 55 12 13 2 2 9 4 5 6 22 5 23 56 17 6 22 18 5 57 19 56 7 22 8 18 24 58 57 8 8 7 18 21 20 58 3 1 11 48 9 1 2 14 25 9 15 53 59 76 28 10 14 1 25 32 53 59 76 115 60 35 11 32 25 14 73 60 76 115 116 77 78 12 14 1 32 10 53 35 115 54 97 11 13 73 14 32 10 77 115 116 117 97 54 14 73 32 94 10 116 98 118 117 99 97 15 32 25 73 26 60 78 116 61 79 29 16 73 32 26 33 116 61 79 119 62 36 17 33 26 73 74 62 79 119 120 80 81 18 73 32 33 94 116 36 119 118 100 98 19 74 73 33 94 80 119 120 121 100 118 20 74 33 95 94 120 101 122 121 102 100 21 33 26 74 27 62 81 120 63 82 30 22 74 33 27 34 120 63 82 123 64 37 23 34 27 74 75 64 82 123 124 83 84 24 74 33 34 95 120 37 123 122 103 101 25 75 74 34 95 83 123 124 125 103 122 26 75 34 96 95 124 104 126 125 105 103 27 34 27 75 6 64 84 124 65 85 31 28 75 34 6 5 124 65 85 127 17 38 29 5 6 75 22 17 85 127 56 86 23 30 75 34 5 96 124 38 127 126 106 104 31 22 75 5 96 86 127 56 128 106 126 32 22 5 18 96 56 19 57 128 107 106 33 10 14 4 73 54 16 55 117 87 77 34 4 10 73 94 55 117 87 129 118 99 35 94 73 4 39 118 87 129 130 42 88 36 4 10 94 3 55 99 129 13 108 12 37 39 4 94 3 42 129 130 66 108 13 38 39 94 46 3 130 109 67 66 49 108 39 94 73 39 74 118 88 130 121 89 80 40 39 94 74 95 130 121 89 131 122 102 41 95 74 39 40 122 89 131 132 43 90 42 39 94 95 46 130 102 131 67 110 109 43 40 39 95 46 43 131 132 68 110 67 44 40 95 47 46 132 111 69 68 50 110 45 95 74 40 75 122 90 132 125 91 83 46 40 95 75 96 132 125 91 133 126 105 47 96 75 40 41 126 91 133 134 44 92 48 40 95 96 47 132 105 133 69 112 111 49 41 40 96 47 44 133 134 70 112 69 50 41 96 48 47 134 113 71 70 51 112 51 96 75 41 22 126 92 134 128 93 86 52 41 96 22 18 134 128 93 135 57 107 53 18 22 41 8 57 93 135 58 45 24 54 41 96 18 48 134 107 135 71 114 113 55 8 41 18 48 45 135 58 72 114 71 56 8 18 7 48 58 20 21 72 52 114 $EndElements feenox-1.1/tests/moment-of-inertia.sh0000755000175000017500000000075414773607165014641 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkgmsh if [ ! -e ${dir}/i-beam-hex.msh ]; then gmsh -v 0 -3 ${dir}/i-beam-hex.geo || exit $? fi answer1zero moment-of-inertia.fee hex exitifwrong $? if [ ! -e ${dir}/i-beam-tet.msh ]; then gmsh -v 0 -3 ${dir}/i-beam-tet.geo || exit $? fi answer1zero moment-of-inertia.fee tet exitifwrong $? feenox-1.1/tests/transient-from-mesh-same-dt.fee0000644000175000017500000000012314773607165016651 00000000000000READ_MESH square-f.msh DIM 2 READ_FUNCTION f end_time = 1 PRINT t %.5f f(0.5,0.5) feenox-1.1/tests/pellet-nonlinear-transient-from-initial.fee0000644000175000017500000000164414773607165021275 00000000000000PROBLEM thermal 3D READ_MESH pellet.msh end_time = 3 # small time to run the test faster [seconds] # https://www.nuclear-power.com/nuclear-engineering/heat-transfer/thermal-conduction/thermal-conductivity/thermal-conductivity-of-uranium-dioxide/ # T is in Celsius, T' is in Kelvin VAR T' tau(T') = (T'+273.15)/1000 cond(T') = 100/(7.5408 + 17.692*tau(T') + 3.614*tau(T')^2) + 6400/(tau(T')^(5/2))*exp(-16.35/tau(T')) # k is in W/(m K) k(x,y,z) = cond(T(x,y,z)) # both of these should depend on temperature rho = 10980 # kg / m^3 cp = 300 # J / (kg K) # q is in W / m^3 = 300 W/cm * 100 cm/m / area r = 4e-3 q = 300 * 100 / (pi*r^2) FUNCTION T_ext(t) DATA { 0 300 1 300 10 420 30 420 } BC symmetry q=0 BC external T=T_ext(t) T_0(x,y,z) = 300 SOLVE_PROBLEM # PRINT t T(0,0,0) T(0.5*r,0,0) T(0.85*r,0,0) IF done PRINT %.0f T(0,0,0)-708 ENDIF # WRITE_MESH pellet-nonlinear-transient-from-initial.msh T feenox-1.1/tests/pipe-sst10-2-2.geo0000644000175000017500000000320614773607165013642 00000000000000// structured straight tet10 Mesh.SecondOrderLinear = 1; Mesh.RecombineAll = 0; SetFactory("OpenCASCADE"); l = 2*(( 323.8/2 )-( ( 323.8/2 )-21.5 )); Point(1) = {-l/2, 0, 0}; Point(2) = {-l/2, ( ( 323.8/2 )-21.5 ), 0}; Point(3) = {-l/2, 0, ( ( 323.8/2 )-21.5 )}; Point(4) = {-l/2, -( ( 323.8/2 )-21.5 ), 0}; Point(5) = {-l/2, 0, -( ( 323.8/2 )-21.5 )}; Point(6) = {-l/2, ( 323.8/2 ), 0}; Point(7) = {-l/2, 0, ( 323.8/2 )}; Point(8) = {-l/2, -( 323.8/2 ), 0}; Point(9) = {-l/2, 0, -( 323.8/2 )}; Circle(1) = {3, 1, 2}; Circle(2) = {2, 1, 5}; Circle(3) = {5, 1, 4}; Circle(4) = {4, 1, 3}; Circle(5) = {7, 1, 6}; Circle(6) = {6, 1, 9}; Circle(7) = {9, 1, 8}; Circle(8) = {8, 1, 7}; Line(9) = {3, 7}; Line(10) = {2, 6}; Line(11) = {5, 9}; Line(12) = {4, 8}; Curve Loop(1) = {5, -10, -1, 9}; Plane Surface(1) = {1}; Curve Loop(2) = {6, -11, -2, 10}; Plane Surface(2) = {2}; Curve Loop(3) = {7, -12, -3, 11}; Plane Surface(3) = {3}; Curve Loop(4) = {8, -9, -4, 12}; Plane Surface(4) = {4}; Transfinite Curve {1, 2, 3, 4, 5, 6, 7, 8} = 1+Pi/4*((( 323.8/2 )+( ( 323.8/2 )-21.5 ))/(( 323.8/2 )-( ( 323.8/2 )-21.5 )))*2; Transfinite Curve {10, 11, 12, 9} = 1+2; Transfinite Surface {:}; If (Mesh.RecombineAll) Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; Recombine; } Else Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; } EndIf Physical Surface("front") = {1, 2, 3, 4}; Physical Surface("back") = {17, 13, 9, 20}; Physical Surface("pressure") = {12, 16, 19, 7}; Physical Volume("bulk") = {2, 3, 4, 1}; Mesh.ElementOrder = 2; feenox-1.1/tests/reaction-displ.fee0000644000175000017500000000114114773607165014335 00000000000000PROBLEM mechanical 3D READ_MESH reaction.msh SCALE 1e-3 E = 70e9 nu = 0.33 BC dummy_name symmetry GROUPS surf_1_1 surf_1_2 surf_1_3 surf_1_4 surf_1_6 BC surf_1_5 w=-5.35655e-08 SOLVE_PROBLEM REACTION surf_1_1 RESULT R1 REACTION surf_1_2 RESULT R2 REACTION surf_1_3 RESULT R3 REACTION surf_1_4 RESULT R4 REACTION surf_1_5 RESULT R5 REACTION surf_1_6 RESULT R6 PRINT 1 %.1f R1 PRINT 2 %.1f R2 PRINT 3 %.1f R3 PRINT 4 %.1f R4 PRINT 5 %.1f R5 # PRINT 6 %.1f R6 # PRINT "total" %.2e R1[1]+R2[1]+R3[1]+R4[1]+R5[1]+R6[1] R1[2]+R2[2]+R3[2]+R4[2]+R5[2]+R6[2] R1[3]+R2[3]+R3[3]+R4[3]+R5[3]+R6[3] feenox-1.1/tests/fibo_iterative.fee0000644000175000017500000000041414773607165014415 00000000000000# the fibonacci sequence as an iterative problem #static_iterations = 1476 static_steps = 25 IF step_static=1|step_static=2 f_n = 1 f_nminus1 = 1 f_nminus2 = 1 ELSE f_n = f_nminus1 + f_nminus2 f_nminus2 = f_nminus1 f_nminus1 = f_n ENDIF PRINT step_static f_n feenox-1.1/tests/thermal-two-squares-material-explicit-temperature.fee0000644000175000017500000000024314773607165023314 00000000000000PROBLEM thermal 2D READ_MESH two-squares.msh MATERIAL soft k=0.5+T(x,y) MATERIAL hard k=2.0-T(x,y) BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT %.3f T(1,0.5) feenox-1.1/tests/nafems-le11.geo0000644000175000017500000000323514773607165013452 00000000000000// NAFEMS LE11 benchmark structured curved hexahedral mesh SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {1.000, 0, 0}; // A Point(3) = {1.400, 0, 0}; // B Point(4) = {1.000*Sin(Pi/4), 0, 1.000*Sin(Pi/4)}; Point(5) = {Sqrt(1.400^2-(1.000*Sin(Pi/4))^2), 0, 1.000*Sin(Pi/4)}; Point(6) = {1.000*Sin(Pi/4), 0, 1.000*Sin(Pi/4)+.345+.345}; Point(7) = {1.000, 0, 1.000*Sin(Pi/4)+.345+.345}; Point(8) = {1.000*Sin(Pi/4), 0, 1.000*Sin(Pi/4)+.345+.345+.400}; Point(9) = {1.000, 0, 1.000*Sin(Pi/4)+.345+.345+.400}; Circle(1) = {2, 1, 4}; Circle(2) = {3, 1, 5}; Line(3) = {4, 6}; Line(4) = {6, 8}; Line(5) = {8, 9}; Line(6) = {9, 7}; Line(7) = {7, 5}; Line(8) = {3, 2}; Line(9) = {4, 5}; Line(10) = {6, 7}; Curve Loop(1) = {8, 1, 9, -2}; Plane Surface(1) = {1}; Curve Loop(2) = {7, -9, 3, 10}; Plane Surface(2) = {2}; Curve Loop(3) = {6, -10, 4, 5}; Plane Surface(3) = {3}; Transfinite Curve {8, 9, 10, 5} = 4/Mesh.ElementOrder + 1; Transfinite Curve {1, 2} = 8/Mesh.ElementOrder + 1; Transfinite Curve {3, 7} = 10/Mesh.ElementOrder + 1; Transfinite Curve {4, 6} = 4/Mesh.ElementOrder + 1; Transfinite Surface {1} = {2, 3, 5, 4}; Transfinite Surface {2} = {4, 5, 7, 6}; Transfinite Surface {3} = {6, 7, 9, 8}; If (Mesh.RecombineAll == 1) Extrude {{0, 0, 1}, {0, 0, 0}, Pi/2} { Surface{1}; Surface{2}; Surface{3}; Layers{8/Mesh.ElementOrder}; Recombine; } Else Extrude {{0, 0, 1}, {0, 0, 0}, Pi/2} { Surface{1}; Surface{2}; Surface{3}; Layers{8/Mesh.ElementOrder}; } EndIf Physical Surface("xz") = {3, 2, 1}; Physical Surface("yz") = {8, 12, 16}; Physical Surface("xy") = {4}; Physical Surface("HIH'I'") = {15}; Physical Volume("bulk") = {1, 2, 3}; feenox-1.1/tests/qrng2d_rhalton.ref0000644000175000017500000000016514773607165014366 000000000000000.5 0.666667 0.25 0.333333 0.75 0.222222 0.125 0.888889 0.625 0.555556 0.375 0.111111 0.875 0.777778 0.0625 0.444444 feenox-1.1/tests/la-p10-PUb-H2O_10-1-0-CY.fee0000644000175000017500000000046514773607165014600 00000000000000# Los Alamos LA-13511 Analytical Benchmakr Test Set for Criticallity Code Verification # problem 10 PROBLEM neutron_sn 2D GROUPS 1 SN 4 READ_MESH $0.msh INCLUDE Pu-239b.fee INCLUDE H2O.fee BC mirror mirror BC vacuum vacuum sn_alpha = 0.35 SOLVE_PROBLEM PRINT keff-0.997541 # WRITE_RESULTS FILE pepe.msh feenox-1.1/tests/inverse-integral.fee0000644000175000017500000000103714773607165014702 00000000000000INCLUDE parameters.fee # kinetic parameters FUNCTION flux(t) FILE flux.dat VAR t' # dummy integration variable # define a flux function that allows for negative times flux_a = vec_flux_t[1] flux_b = vec_flux_t[vecsize(vec_flux)] phi(t) := if(t /dev/null exitifwrong $? feenox-1.1/tests/ray-effect-diffusion.fee0000644000175000017500000000064114773607165015435 00000000000000# ray-effect case solved with diffusion DEFAULT_ARGUMENT_VALUE 1 quarter PROBLEM neutron_diffusion 2D ALLOW_UNRESOLVED_BCS READ_MESH ray-effect-$1.msh c = 1/3 Sigma_t = 0.75 Sigma_s = c*Sigma_t BC mirror mirror BC vacuum vacuum MATERIAL src Sigma_t1=Sigma_t Sigma_s1.1=Sigma_s S1=1 MATERIAL bulk Sigma_t1=Sigma_t Sigma_s1.1=Sigma_s S1=0 SOLVE_PROBLEM PRINT %.1f 10*phi1(0,1.875) WRITE_RESULTS FILE $0-$1.msh feenox-1.1/tests/fit1d_gradient.fee0000644000175000017500000000026014773607165014305 00000000000000FUNCTION g(x) DATA { 0 1 1 2^1 2 2^2 3 2^3 4 2^4 } a = 0.5 b = 0.5 f(x) = a*exp(b*x) FIT f TO g VIA a b GRADIENT exp(b*x) a*x*exp(b*x) #VERBOSE PRINT_FUNCTION g f feenox-1.1/tests/thermal-slab-temperature-nosource.fee0000644000175000017500000000021314773607165020160 00000000000000READ_MESH slab.msh PROBLEM thermal DIMENSIONS 1 BC left T=0 BC right T=1 k(x) = 1+T(x) SOLVE_PROBLEM PRINT T(0.5)-(sqrt(1+(3*0.5))-1) feenox-1.1/tests/function_file1d.fee0000644000175000017500000000005314773607165014472 00000000000000FUNCTION f(x) FILE data1d.dat PRINT f(2.5) feenox-1.1/tests/integral.sh0000755000175000017500000000034114773607165013104 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer logphi.fee 1 exitifwrong $? feenox-1.1/tests/reactivity-from-table.fee0000644000175000017500000000101214773607165015626 00000000000000INCLUDE parameters.fee PHASE_SPACE phi c rho end_time = 100 dae_rtol = 1e-7 rho_0 = 0 phi_0 = 1 c_0[i] = phi_0 * beta(i)/(Lambda*lambda(i)) FUNCTION react(t) DATA { 0 0 # in pcm 5 0 10 10 30 10 35 0 100 0 } rho = 1e-5*react(t) phi_dot = (rho-Beta)/Lambda * phi + vecdot(lambda, c) c_dot[i] = beta[i]/Lambda * phi - lambda[i]*c[i] IF done PRINT phi-1.03171 ENDIF feenox-1.1/tests/transient-mesh.sh0000755000175000017500000000055114773607165014243 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answerdiff transient-to-mesh.fee exitifwrong $? answerdiff transient-from-mesh-same-dt.fee exitifwrong $? answerdiff transient-from-mesh-different-dt.fee exitifwrong $? feenox-1.1/tests/i-beam-hex.geo0000644000175000017500000000440714773607165013357 00000000000000SetFactory("OpenCASCADE"); n = 1/Mesh.MeshSizeFactor; l = 500; h = 80; w = 60; t = 10; Point(1) = {0, +w/2, -h/2}; Point(2) = {0, -w/2, -h/2}; Point(3) = {0, +w/2, +h/2}; Point(4) = {0, -w/2, +h/2}; Point(5) = {0, +w/2, -h/2+t}; Point(6) = {0, -w/2, -h/2+t}; Point(7) = {0, +t, -h/2+t}; Point(8) = {0, -t, -h/2+t}; Point(9) = {0, +w/2, +h/2-t}; Point(10) = {0, -w/2, +h/2-t}; Point(11) = {0, +t, +h/2-t}; Point(12) = {0, -t, +h/2-t}; Point(13) = {0, +t, -h/2}; Point(14) = {0, +t, +h/2}; Point(15) = {0, -t, -h/2}; Point(16) = {0, -t, +h/2}; Line(1) = {2, 15}; Line(2) = {15, 13}; Line(3) = {13, 1}; Line(4) = {1, 5}; Line(5) = {5, 7}; Line(6) = {7, 8}; Line(7) = {8, 6}; Line(8) = {6, 2}; Line(9) = {9, 11}; Line(10) = {11, 12}; Line(11) = {12, 10}; Line(12) = {10, 4}; Line(13) = {4, 16}; Line(14) = {16, 14}; Line(15) = {14, 3}; Line(16) = {3, 9}; Line(17) = {13, 7}; Line(18) = {7, 11}; Line(19) = {11, 14}; Line(20) = {15, 8}; Line(21) = {8, 12}; Line(22) = {12, 16}; Curve Loop(1) = {3, 4, 5, -17}; Plane Surface(1) = {1}; Curve Loop(2) = {2, 17, 6, -20}; Plane Surface(2) = {2}; Curve Loop(3) = {1, 20, 7, 8}; Plane Surface(3) = {3}; Curve Loop(4) = {21, -10, -18, 6}; Plane Surface(4) = {4}; Curve Loop(5) = {11, 12, 13, -22}; Surface(5) = {5}; Curve Loop(7) = {14, -19, 10, 22}; Surface(6) = {7}; Curve Loop(9) = {15, 16, 9, 19}; Surface(7) = {9}; Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Surface{7}; Surface{6}; Surface{5}; Layers {16*n}; Recombine; } Physical Volume("bulk", 1) = {1,2,3,4,5,6,7}; Physical Surface("left", 2) = {1, 2, 3, 4, 5, 6, 7}; Physical Surface("right", 3) = {12, 16, 20, 24, 29, 32, 36}; Physical Surface("top", 4) = {33, 31, 28}; Mesh.ElementOrder = 2; Mesh.RecombineAll = 1; Mesh.SecondOrderIncomplete = 1; Transfinite Curve {1, 7, 3, 5, 9, 15, 11, 13} = 2*n+1; Transfinite Curve {8, 20, 17, 4, 12, 22, 19, 16} = 1*n+1; Transfinite Curve {2, 6, 10, 14} = 2*n+1; Transfinite Curve {21, 18} = 4*n+1; Transfinite Surface {1} = {13, 7, 5, 1}; Transfinite Surface {2} = {15, 8, 7, 13}; Transfinite Surface {3} = {2, 6, 8, 15}; Transfinite Surface {4} = {8, 12, 11, 7}; Transfinite Surface {5} = {10, 4, 16, 12}; Transfinite Surface {6} = {12, 16, 14, 11}; Transfinite Surface {7} = {11, 14, 3, 9}; feenox-1.1/tests/la-p10-PUb-H2O_10-1-0-CY.geo0000644000175000017500000000206014773607165014604 00000000000000rc = 3.077574; h_refl = 30.637255; n = 6; SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {rc, 0, 0}; Point(3) = {0, rc, 0}; Point(4) = {rc+h_refl, 0, 0}; Point(5) = {0, rc+h_refl, 0}; Line(1) = {3, 1}; Line(2) = {1, 2}; Circle(3) = {2, 1, 3}; Curve Loop(1) = {3, 1, 2}; Plane Surface(1) = {1}; Line(4) = {2, 4}; Line(5) = {5, 3}; Circle(6) = {4, 1, 5}; Curve Loop(2) = {4, 6, 5, -3}; Plane Surface(2) = {2}; Physical Surface("fuel") = {1}; Physical Surface("refl") = {2}; Physical Curve("mirror", 7) = {5, 1, 2, 4}; Physical Curve("vacuum", 8) = {6}; Mesh.MeshSizeMax = rc/(0.5*n); Mesh.MeshSizeMin = rc/(2*n); Mesh.Optimize = 1; //Mesh.OptimizeNetgen = 1; // 8 does not work in ubuntu (why not?) //Mesh.Algorithm = 8; Mesh.ElementOrder = 2; Mesh.RecombineAll = 0; // local refinements Field[1] = Distance; Field[1].EdgesList = {3}; Field[2] = Threshold; Field[2].IField = 1; Field[2].LcMin = Mesh.MeshSizeMin; Field[2].LcMax = Mesh.MeshSizeMax; Field[2].DistMin = 4*Mesh.MeshSizeMin; Field[2].DistMax = 8*Mesh.MeshSizeMin; Background Field = {2}; feenox-1.1/tests/function_vectors1d.ref0000644000175000017500000000020014773607165015247 000000000000000 0 0 0.375 0.375 0.1875 0.75 0.75 0.375 1.125 1.375 0.75 1.5 2.5 1.5 1.875 3.625 2.25 2.25 5.25 2.625 2.625 7.125 2.8125 3 9 3 feenox-1.1/tests/moment-of-inertia.fee0000644000175000017500000000026714773607165014762 00000000000000READ_MESH i-beam-$1.msh INTEGRATE z^2 OVER left RESULT I width = 60 thickness = 10 PRINT I-(2*thickness*width^3/12+2*(width*thickness^3/12+width*thickness*(0.5*(width+thickness))^2)) feenox-1.1/tests/function_data1d.fee0000644000175000017500000000025614773607165014471 00000000000000FUNCTION f(x) INTERPOLATION $1 DATA { 0 0 1 1 2 4 3 3 4 2 } f_a = vecmin(vec_f_x) f_b = vecmax(vec_f_x) PRINT f(1/3*(f_a+f_b)) #PRINT_FUNCTION f MIN f_a MAX f_b NSTEPS 20 feenox-1.1/tests/Barra1D_a_Estac.fee0000644000175000017500000000114314773607165014255 00000000000000PROBLEM thermal 1d READ_MESH Barra1D.msh # all units SI D = 0.02 Area = pi * D * D / 4 Perim = pi * D k = 50 #k = kv * Area q0 = 30 rho = 8000 cp = 400 h = 10 Tinf = 300 # fuente: dependiente de T (convección) q(x) = h * Perim * (Tinf - T(x)) / Area # boundary conditions: q=something means "prescribed heat flux" BC left q=q0/Area BC right q=q0/Area # PRINTF "\#Tinf: %g" Tinf # PRINTF "\#Perim: %g" Perim # PRINTF "\#q left, right: %g" q0/Area #PRINT "Source term:" #PRINT q(0.1) q(0.2) q(0.3) q(0.4) q(0.5) SOLVE_PROBLEM # PRINT_FUNCTION T q COMPUTE_REACTION left RESULT q_left PRINT q_left-81766.95 feenox-1.1/tests/ray-effect-eighth.geo0000644000175000017500000000141114773607165014726 00000000000000SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0, 1.0}; Point(2) = {0, 1, 0, 1.0}; Point(3) = {0, 2, 0, 1.0}; Point(4) = {1, 1, 0, 1.0}; Point(5) = {2, 2, 0, 1.0}; Line(1) = {1, 2}; Line(2) = {2, 3}; Line(3) = {3, 5}; Line(4) = {5, 4}; Line(5) = {4, 1}; Line(6) = {2, 4}; Curve Loop(1) = {1, 6, 5}; Plane Surface(1) = {1}; Curve Loop(2) = {2, 3, 4, -6}; Plane Surface(2) = {2}; n = 3; Transfinite Curve {1, 2, 3, 4, 5, 6} = 1+1.5*n; Transfinite Curve {1, 5} = 1+n; Transfinite Surface {1}; Transfinite Surface {2}; Mesh.TransfiniteTri = 1; Mesh.Algorithm = 6; Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 0; Physical Surface("src") = {1}; Physical Surface("bulk") = {2}; Physical Curve("mirror") = {1, 2, 4, 5}; Physical Curve("vacuum") = {3}; feenox-1.1/tests/la-IN.geo0000644000175000017500000000032414773607165012335 00000000000000SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {1, 0, 0}; Line(1) = {1, 2}; n = 10; Mesh.MeshSizeMax = 1/n; Mesh.MeshSizeMin = 1/n; Physical Curve("fuel") = {1}; Physical Point("mirror") = {1,2}; feenox-1.1/tests/spinning-disk-parallel-plane.fee0000644000175000017500000000154214773607165017071 00000000000000PROBLEM mechanical 2D plane_stress READ_MESH spinning-disk-parallel-plane-$1.msh # MKS E = 200e9 nu = 0.3 rho = 7800 omega = 1000 * 2*pi/60 f_x(x,y) = rho * omega^2* x f_y(x,y) = rho * omega^2* y penalty_weight = 100*E BC symmetry1 symmetry BC symmetry2 symmetry SOLVE_PROBLEM # non-dimensional numerical projection sigma_h(r) = sigmay(r,0) / (rho*omega^2/8) sigma_r(r) = sigmax(r,0) / (rho*omega^2/8) # analytical solution INCLUDE spinning-disk-dimensions.geo S_h(r) = ((3+nu)*R^2 - (1+3*nu)*r^2) S_r(r) = (3+nu) * (R^2 - r^2) WRITE_RESULTS FORMAT vtk displ vonmises # profiles along r # PRINT_FUNCTION S_h sigma_h S_r sigma_r MIN 0 MAX R NSTEPS 20 FILE spinning-disk-parallel-plane-$1.dat # integral errors error_h = sqrt(integral((S_h(r)-sigma_h(r))^2, r, 0, R)) / R; error_r = sqrt(integral((S_r(r)-sigma_r(r))^2, r, 0, R)) / R; PRINT error_h+error_r feenox-1.1/tests/nafems-le1.geo0000644000175000017500000000560414773607165013373 00000000000000// NAFEMS LE1 plane-stress benchmark geometry & mesh SetFactory("OpenCASCADE"); // create the geometry a = 1000; b = 2750; c = 3250; d = 2000; // define the four points Point(1) = {0, a, 0}; Point(2) = {0, b, 0}; Point(3) = {c, 0, 0}; Point(4) = {d, 0, 0}; // join them with the ellipses and straight edges Line(1) = {1, 2}; Ellipse (2) = {0,0,0, c, b, 0, Pi/2}; Line(3) = {3, 4}; Ellipse (4) = {0,0,0, d, a, 0, Pi/2}; // merge the points Coherence; // create the surface Curve Loop(1) = {-1, 2, -3, -4}; Plane Surface(1) = {1}; // define physical groups Physical Point("A",1) = {1}; Physical Point("B",2) = {2}; Physical Point("C",3) = {3}; Physical Point("D",4) = {4}; Physical Curve("AB",5) = {1}; Physical Curve("BC",6) = {2}; Physical Curve("CD",7) = {3}; Physical Curve("DA",8) = {4}; Physical Surface("bulk",9 ) = {1}; type = Mesh.NodeType; // If (type == "tri3") // Mesh.RecombineAll = 0; // Mesh.ElementOrder = 1; // ElseIf (type == "tri6s") // Mesh.RecombineAll = 0; // Mesh.ElementOrder = 2; // Mesh.SecondOrderLinear = 1; // ElseIf (type == "tri6c") // Mesh.RecombineAll = 0; // Mesh.ElementOrder = 2; // Mesh.SecondOrderLinear = 0; // ElseIf (type == "quad4") // Mesh.RecombineAll = 1; // Mesh.ElementOrder = 1; // ElseIf (type == "quad8s") // Mesh.RecombineAll = 1; // Mesh.ElementOrder = 2; // Mesh.SecondOrderIncomplete = 1; // Mesh.SecondOrderLinear = 1; // ElseIf (type == "quad8c") // Mesh.RecombineAll = 1; // Mesh.ElementOrder = 2; // Mesh.SecondOrderIncomplete = 1; // Mesh.SecondOrderLinear = 0; // ElseIf (type == "quad9s") // Mesh.RecombineAll = 1; // Mesh.ElementOrder = 2; // Mesh.SecondOrderIncomplete = 0; // Mesh.SecondOrderLinear = 1; // ElseIf (type == "quad9c") // Mesh.RecombineAll = 1; // Mesh.ElementOrder = 2; // Mesh.SecondOrderIncomplete = 0; // Mesh.SecondOrderLinear = 0; // EndIf If (type == 1) Mesh.RecombineAll = 0; Mesh.ElementOrder = 1; ElseIf (type == 2) Mesh.RecombineAll = 0; Mesh.ElementOrder = 2; Mesh.SecondOrderLinear = 1; ElseIf (type == 3) Mesh.RecombineAll = 0; Mesh.ElementOrder = 2; Mesh.SecondOrderLinear = 0; ElseIf (type == 4) Mesh.RecombineAll = 1; Mesh.ElementOrder = 1; ElseIf (type == 5) Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 1; Mesh.SecondOrderLinear = 1; ElseIf (type == 6) Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 1; Mesh.SecondOrderLinear = 0; ElseIf (type == 7) Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 0; Mesh.SecondOrderLinear = 1; ElseIf (type == 8) Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 0; Mesh.SecondOrderLinear = 0; EndIf // use transfinite algoritmh to obtain a structured grid Transfinite Curve{1,-3} = 4+1 Using Progression 1.005; Transfinite Curve{2,4} = 6+1 Using Progression 1.005; Transfinite Surface{1}; feenox-1.1/tests/pellet-linear-transient-from-initial.fee0000644000175000017500000000104314773607165020553 00000000000000PROBLEM thermal 3D PC_TYPE gamg KSP_TYPE cg READ_MESH pellet.msh end_time = 30 # seconds dt_0 = 5e-3 k = 2.8 # W / (m K) rho = 10980 # kg / m^3 cp = 300 # J / (kg K) # q is in W / m^3 = 300 W/cm * 100 cm/m / area r = 4e-3 q = 300 * 100 / (pi*r^2) FUNCTION T_ext(t) DATA { 0 300 1 300 10 420 30 420 } BC symmetry q=0 BC external T=T_ext(t) T_0(x,y,z) = 300 SOLVE_PROBLEM # PRINT t T(0,0,0) T(0.5*r,0,0) T(0.85*r,0,0) IF done PRINT %.0f T(0,0,0)-1272 ENDIF # WRITE_MESH pellet-linear-transient-from-initial.msh T feenox-1.1/tests/expressions_variables.ref0000644000175000017500000000006214773607165016050 00000000000000-1 1 -1 2.71828 -0.367879 -2.71828 2 -2 2 2 -2 -2 feenox-1.1/tests/abort.fee0000644000175000017500000000004314773607165012527 00000000000000PRINT "before" ABORT PRINT "after" feenox-1.1/tests/ray-effect-full.msh0000644000175000017500000007265414773607165014456 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 1 3 "vacuum" 2 1 "src" 2 2 "bulk" $EndPhysicalNames $Entities 8 8 2 0 1 -2 -2 0 0 2 2 -2 0 0 3 -2 2 0 0 4 2 2 0 0 5 -1 -1 0 0 6 1 -1 0 0 7 1 1 0 0 8 -1 1 0 0 1 -2.0000001 -2.0000001 -1e-07 2.0000001 -1.9999999 1e-07 1 3 2 1 -2 2 -2.0000001 -2.0000001 -1e-07 -1.9999999 2.0000001 1e-07 1 3 2 3 -1 3 1.9999999 -2.0000001 -1e-07 2.0000001 2.0000001 1e-07 1 3 2 2 -4 4 -2.0000001 1.9999999 -1e-07 2.0000001 2.0000001 1e-07 1 3 2 4 -3 5 -1.0000001 -1.0000001 -1e-07 1.0000001 -0.9999999000000001 1e-07 0 2 5 -6 6 0.9999999000000001 -1.0000001 -1e-07 1.0000001 1.0000001 1e-07 0 2 6 -7 7 -1.0000001 0.9999999000000001 -1e-07 1.0000001 1.0000001 1e-07 0 2 7 -8 8 -1.0000001 -1.0000001 -1e-07 -0.9999999000000001 1.0000001 1e-07 0 2 8 -5 1 -1.0000001 -1.0000001 -1e-07 1.0000001 1.0000001 1e-07 1 1 4 5 6 7 8 2 -2.0000001 -2.0000001 -1e-07 2.0000001 2.0000001 1e-07 1 2 8 1 3 4 2 -5 -8 -7 -6 $EndEntities $Nodes 18 625 1 625 0 1 0 1 1 -2 -2 0 0 2 0 1 2 2 -2 0 0 3 0 1 3 -2 2 0 0 4 0 1 4 2 2 0 0 5 0 1 5 -1 -1 0 0 6 0 1 6 1 -1 0 0 7 0 1 7 1 1 0 0 8 0 1 8 -1 1 0 1 1 0 23 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 -1.666666666666667 -2 0 -1.333333333333333 -2 0 -1 -2 0 -0.6666666666666667 -2 0 -0.3333333333333335 -2 0 0 -2 0 0.333333333333333 -2 0 0.6666666666666665 -2 0 1 -2 0 1.333333333333333 -2 0 1.666666666666667 -2 0 -1.833333333333333 -2 0 -1.5 -2 0 -1.166666666666667 -2 0 -0.8333333333333335 -2 0 -0.5 -2 0 -0.1666666666666667 -2 0 0.1666666666666665 -2 0 0.5 -2 0 0.833333333333333 -2 0 1.166666666666667 -2 0 1.5 -2 0 1.833333333333333 -2 0 1 2 0 23 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 -2 1.666666666666667 0 -2 1.333333333333333 0 -2 1 0 -2 0.6666666666666667 0 -2 0.3333333333333335 0 -2 0 0 -2 -0.333333333333333 0 -2 -0.6666666666666665 0 -2 -1 0 -2 -1.333333333333333 0 -2 -1.666666666666667 0 -2 1.833333333333333 0 -2 1.5 0 -2 1.166666666666667 0 -2 0.8333333333333335 0 -2 0.5 0 -2 0.1666666666666667 0 -2 -0.1666666666666665 0 -2 -0.5 0 -2 -0.833333333333333 0 -2 -1.166666666666667 0 -2 -1.5 0 -2 -1.833333333333333 0 1 3 0 23 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 2 -1.666666666666667 0 2 -1.333333333333333 0 2 -1 0 2 -0.6666666666666667 0 2 -0.3333333333333335 0 2 0 0 2 0.333333333333333 0 2 0.6666666666666665 0 2 1 0 2 1.333333333333333 0 2 1.666666666666667 0 2 -1.833333333333333 0 2 -1.5 0 2 -1.166666666666667 0 2 -0.8333333333333335 0 2 -0.5 0 2 -0.1666666666666667 0 2 0.1666666666666665 0 2 0.5 0 2 0.833333333333333 0 2 1.166666666666667 0 2 1.5 0 2 1.833333333333333 0 1 4 0 23 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1.666666666666667 2 0 1.333333333333333 2 0 1 2 0 0.6666666666666667 2 0 0.3333333333333335 2 0 0 2 0 -0.333333333333333 2 0 -0.6666666666666665 2 0 -1 2 0 -1.333333333333333 2 0 -1.666666666666667 2 0 1.833333333333333 2 0 1.5 2 0 1.166666666666667 2 0 0.8333333333333335 2 0 0.5 2 0 0.1666666666666667 2 0 -0.1666666666666665 2 0 -0.5 2 0 -0.833333333333333 2 0 -1.166666666666667 2 0 -1.5 2 0 -1.833333333333333 2 0 1 5 0 11 101 102 103 104 105 106 107 108 109 110 111 -0.6666666666666667 -1 0 -0.3333333333333334 -1 0 0 -1 0 0.3333333333333333 -1 0 0.6666666666666665 -1 0 -0.8333333333333334 -1 0 -0.5 -1 0 -0.1666666666666667 -1 0 0.1666666666666665 -1 0 0.5 -1 0 0.8333333333333333 -1 0 1 6 0 11 112 113 114 115 116 117 118 119 120 121 122 1 -0.6666666666666667 0 1 -0.3333333333333334 0 1 0 0 1 0.3333333333333333 0 1 0.6666666666666665 0 1 -0.8333333333333334 0 1 -0.5 0 1 -0.1666666666666667 0 1 0.1666666666666665 0 1 0.5 0 1 0.8333333333333333 0 1 7 0 11 123 124 125 126 127 128 129 130 131 132 133 0.6666666666666667 1 0 0.3333333333333334 1 0 0 1 0 -0.3333333333333333 1 0 -0.6666666666666665 1 0 0.8333333333333334 1 0 0.5 1 0 0.1666666666666667 1 0 -0.1666666666666665 1 0 -0.5 1 0 -0.8333333333333333 1 0 1 8 0 11 134 135 136 137 138 139 140 141 142 143 144 -1 0.6666666666666667 0 -1 0.3333333333333334 0 -1 0 0 -1 -0.3333333333333333 0 -1 -0.6666666666666665 0 -1 0.8333333333333334 0 -1 0.5 0 -1 0.1666666666666667 0 -1 -0.1666666666666665 0 -1 -0.5 0 -1 -0.8333333333333333 0 2 1 0 121 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 0.001618573121269111 -0.6604798956463052 0 0.6712370572565048 0.009108710686577386 0 -0.3329997753062747 0.6673178109177167 0 -0.6664279331936122 0.0007511207109088092 0 -0.666381654997652 -0.3323152640527177 0 0.6682515584658683 -0.6609823000604138 0 0.6696018357260901 0.3382373543418492 0 -0.3326216427580206 -0.6639911642515761 0 0.6677073862443265 0.668297858366645 0 -0.6665793244773791 0.6668541332699183 0 -0.6664473396947819 -0.6658492041611093 0 0.0009360635133317183 0.6683146683245174 0 0.3347351499569592 0.6690011849269061 0 -0.6664652312350468 0.333859407810748 0 -0.3319847104034596 0.003838956220296176 0 0.3386696528578342 0.01196195621009732 0 0.002997078059794746 -0.3238245373755731 0 -0.3323193226052036 0.3357081700409158 0 0.6696238988362767 -0.324874402886408 0 -0.3320211735126404 -0.3291311010127491 0 0.3354364810710024 -0.659231818972153 0 0.003210695036507678 0.00815923039617162 0 0.002272560937533221 0.3380592644604215 0 0.3370578854816637 -0.3225787308768028 0 0.3364508161001132 0.339355374280115 0 0.170940173947171 0.01006059330313447 0 0.003103886548151212 -0.1578326534897007 0 0.1700274817707292 -0.323201634126188 0 0.3378637691697489 -0.1553083873333527 0 0.1704838278589501 -0.1565705204115267 0 -0.1643870076834759 0.005999093308233897 0 0.00274162798702045 0.1731092474282966 0 -0.1650233808338352 0.3368837172506687 0 -0.3321520165043316 0.169773563130606 0 -0.1647051942586555 0.1714414052794513 0 0.3375602344789737 0.1756586652451061 0 0.1693616885188232 0.3387073193702682 0 0.1701509312329971 0.1743839563367013 0 -0.6665570031807243 -0.8329246020805546 0 -0.8332236698473909 -0.6662579354138879 0 -0.8332785015903622 -0.833128967706944 0 0.8341257792329342 -0.6638244833635403 0 0.6674591125662674 -0.8304911500302069 0 0.8337295562831337 -0.8319122416817701 0 0.8338536931221632 0.6674822625166558 0 0.6686546109852083 0.5032676063542471 0 0.8348009178630451 0.3357853438375912 0 0.8343273054926041 0.5016338031771235 0 0.6671870264554967 0.8341489291833225 0 0.8335935132277483 0.8337411312583278 0 -0.6666229955720229 0.8334270666349591 0 -0.4997895498918269 0.6670859720938175 0 -0.333166554319804 0.8336589054588583 0 -0.4998947749459134 0.8335429860469087 0 -0.6664144973462169 -0.4990822341069135 0 -0.833190827498826 -0.3328242986930255 0 -0.8332072486731085 -0.4995411170534568 0 0.3362471832763331 -0.4909052749244779 0 0.5018440197684353 -0.6601070595162835 0 0.6689377286510725 -0.4929283514734109 0 0.5033408921589702 -0.3237265668816054 0 0.5025924559637027 -0.4919168131989444 0 -0.666522277856213 0.5003567705403331 0 -0.4993922769201252 0.3347837889258319 0 -0.3326595489557391 0.5015129904793163 0 -0.4995909134059761 0.5009348805098247 0 0.8348119494181383 -0.3291038681098707 0 0.8344688643255362 -0.4964641757367054 0 0.8356185286282525 0.004554355343288693 0 0.6704304780463908 -0.1578828460999153 0 0.8352152390231954 -0.162274756383291 0 0.3340342416451463 0.834500592463453 0 0.5012212681006428 0.6686495216467756 0 0.5006106340503216 0.8343247608233879 0 0.0004680317566658591 0.8341573341622587 0 0.1678356067351455 0.6686579266257118 0 0.1672511367009061 0.8343289633128559 0 -0.8332326156175234 0.3335963705720407 0 -0.8332896622386896 0.6667603999682925 0 -0.8332611389281065 0.5001783852701664 0 -0.8332139665968061 0.0003755603554544046 0 -0.6664465822143295 0.1673052642608284 0 -0.8332232911071648 0.1669859654637476 0 0.002307825590531928 -0.4921522165109391 0 0.1685275270961358 -0.659855857309229 0 0.1692775044334325 -0.4915287457177084 0 -0.4992063217985359 0.002295038465602492 0 -0.4992992993593305 0.1685394136957172 0 -0.4995344912264013 -0.6649201842063427 0 -0.3323214081353305 -0.4965611326321626 0 -0.4992014142551462 -0.3307231825327334 0 -0.4993679527407737 -0.4978216833695381 0 0.3355929830285362 0.5041782796035106 0 0.5030263259131016 0.338796364310982 0 0.5021237970068723 0.5037229429788789 0 0.00160431222543247 0.5031869663924694 0 0.1685986476269843 0.5036826229979899 0 -0.1655015348183758 -0.6622355299489406 0 -0.332977488045677 -0.8319955821257881 0 0.0008092865606345555 -0.8302399478231526 0 -0.1660841007425213 -0.8311177649744703 0 -0.4997672456132006 -0.8324600921031714 0 -0.1645120477264228 -0.3264778191941611 0 -0.1650067912723993 -0.4943566745715509 0 -0.33200294195805 -0.1626460723962264 0 -0.1644495277049494 -0.1602393629429636 0 -0.8333114977860114 0.8333801999841461 0 0.3343849072021678 -0.8296159094860764 0 0.1675970968814011 -0.8299279286546145 0 0.5009220098842176 -0.8300535297581417 0 0.6704194464912975 0.1736730325142133 0 0.8352097232456488 0.1701698495904399 0 -0.1660318558964715 0.667816239621117 0 -0.166349261281569 0.8339081198105586 0 -0.6664047940956321 -0.1657820716709044 0 -0.8332023970478161 -0.1662243691687855 0 0.5049533550571695 0.01053533344833735 0 0.5039898404851355 0.1746658488796597 0 -0.1655276183651533 0.5023499784358929 0 -0.499203868026841 -0.1642140720335654 0 0.5041471236080698 -0.156595616716634 0 2 2 0 360 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 -1.666666666666667 -1 0 1.333333333333333 -1.666666666666667 0 1.666666666666667 0.9999999999999998 0 -1.333333333333333 1.666666666666667 0 0.3333333333333331 -1.666666666666667 0 -1.666666666666667 7.236371874982939e-17 0 1.666666666666667 -6.88400616892515e-17 0 -0.3333333333333331 1.666666666666667 0 1.07552855510562e-16 1.666666666666667 0 -1 -1.666666666666667 0 1.666666666666667 -1.333333333333333 0 0.9999999999999998 1.666666666666667 0 -1.666666666666667 1.333333333333333 0 -0.3333333333333334 -1.666666666666667 0 -1.666666666666667 0.6666666666666665 0 1.666666666666667 -0.9999999999999999 0 1.333333333333333 -0.3333333333333333 0 0.3333333333333333 1.666666666666667 0 -1.333333333333333 -0.6666666666666665 0 1.333333333333333 0.6666666666666665 0 -1.333333333333333 -1.666666666666667 0 1.666666666666667 1.666666666666667 0 0.6666666666666665 -1.333333333333333 0 -0.6666666666666664 1.333333333333333 0 1.333333333333333 0.3333333333333332 0 7.632783294297951e-17 1.333333333333333 0 -5.923131993559871e-17 -1.333333333333333 0 -1.333333333333333 -0.3333333333333332 0 1.666666666666667 -1.666666666666667 0 -1.666666666666667 1.666666666666667 0 -1.333333333333333 4.6681679789079e-17 0 -1 -1.333333333333333 0 1.333333333333333 -0.6666666666666666 0 1 1.333333333333333 0 -1.333333333333333 0.6666666666666665 0 0.9999999999999998 -1.666666666666667 0 -1.666666666666667 -0.3333333333333331 0 -1.666666666666667 -1.333333333333333 0 1.666666666666667 -0.6666666666666666 0 1.666666666666667 0.3333333333333331 0 -0.9999999999999998 1.666666666666667 0 -1.666666666666667 -1.666666666666667 0 -0.6666666666666667 -1.333333333333333 0 0.6666666666666667 1.333333333333333 0 -1.333333333333333 -1 0 1.333333333333333 -1.333333333333333 0 -1.333333333333333 1.333333333333333 0 1.333333333333333 -5.898059818321144e-17 0 -0.3333333333333331 1.333333333333333 0 1.333333333333333 1.333333333333333 0 0.3333333333333333 -1.333333333333333 0 1.333333333333333 0.9999999999999999 0 -1.333333333333333 0.9999999999999998 0 -1.040834085586084e-16 -1.666666666666667 0 1.666666666666667 -0.3333333333333334 0 -1.333333333333333 0.3333333333333333 0 1.333333333333333 -0.9999999999999998 0 0.9999999999999999 -1.333333333333333 0 -0.9999999999999998 1.333333333333333 0 -0.6666666666666666 -1.666666666666667 0 0.6666666666666665 -1.666666666666667 0 -1.666666666666667 0.9999999999999999 0 -1.666666666666667 -0.6666666666666664 0 1.666666666666667 0.6666666666666664 0 1.666666666666667 1.333333333333333 0 0.6666666666666666 1.666666666666667 0 -0.6666666666666664 1.666666666666667 0 0.3333333333333333 1.333333333333333 0 -1.333333333333333 -1.333333333333333 0 -0.3333333333333333 -1.333333333333333 0 1.333333333333333 1.666666666666667 0 -1.666666666666667 0.3333333333333334 0 -1.166666666666667 -0.6666666666666665 0 -1.333333333333333 -0.8333333333333333 0 -1.166666666666667 -1 0 -1.166666666666667 -0.8333333333333333 0 1.166666666666667 -1.666666666666667 0 1.333333333333333 -1.5 0 1.166666666666667 -1.333333333333333 0 0.9999999999999998 -1.5 0 1.166666666666667 -1.5 0 -1.166666666666667 1.666666666666667 0 -1.333333333333333 1.5 0 -1.166666666666667 1.333333333333333 0 -0.9999999999999998 1.5 0 -1.166666666666667 1.5 0 0.1666666666666666 -1.333333333333333 0 -8.165736424710357e-17 -1.5 0 0.1666666666666665 -1.666666666666667 0 0.3333333333333332 -1.5 0 0.1666666666666665 -1.5 0 -1.5 5.952269926945419e-17 0 -1.666666666666667 -0.1666666666666665 0 -1.5 -0.3333333333333331 0 -1.333333333333333 -0.1666666666666666 0 -1.5 -0.1666666666666665 0 -0.1666666666666665 1.333333333333333 0 9.194034422677078e-17 1.5 0 -0.1666666666666665 1.666666666666667 0 -0.3333333333333331 1.5 0 -0.1666666666666665 1.5 0 1.5 0.9999999999999998 0 1.666666666666667 1.166666666666667 0 1.5 1.333333333333333 0 1.333333333333333 1.166666666666667 0 1.5 1.166666666666667 0 -0.4999999999999998 1.666666666666667 0 -0.6666666666666664 1.5 0 -0.4999999999999998 1.333333333333333 0 -0.4999999999999998 1.5 0 0.4999999999999998 -1.666666666666667 0 0.6666666666666665 -1.5 0 0.4999999999999999 -1.333333333333333 0 0.4999999999999999 -1.5 0 -1.166666666666667 0.9999999999999999 0 -0.9999999999999999 1.166666666666667 0 -1.333333333333333 1.166666666666667 0 -1.166666666666667 1.166666666666667 0 1.666666666666667 -1.166666666666667 0 1.5 -0.9999999999999998 0 1.333333333333333 -1.166666666666667 0 1.5 -1.333333333333333 0 1.5 -1.166666666666667 0 -1.833333333333333 1 0 -1.666666666666667 1.166666666666667 0 -1.833333333333333 1.333333333333333 0 -1.833333333333333 1.166666666666667 0 -1.833333333333333 -0.3333333333333331 0 -1.833333333333333 -0.6666666666666665 0 -1.666666666666667 -0.4999999999999998 0 -1.833333333333333 -0.4999999999999999 0 1.833333333333333 -3.442003084462575e-17 0 1.666666666666667 -0.1666666666666667 0 1.833333333333333 -0.3333333333333334 0 1.833333333333333 -0.1666666666666667 0 1.833333333333333 0.3333333333333331 0 1.833333333333333 0.6666666666666665 0 1.666666666666667 0.4999999999999998 0 1.833333333333333 0.4999999999999999 0 1.666666666666667 1.5 0 1.5 1.666666666666667 0 1.333333333333333 1.5 0 1.5 1.5 0 -1.833333333333333 3.618185937491469e-17 0 -1.666666666666667 0.1666666666666667 0 -1.833333333333333 0.3333333333333334 0 -1.833333333333333 0.1666666666666667 0 -0.6666666666666665 1.833333333333333 0 -0.3333333333333331 1.833333333333333 0 -0.4999999999999999 1.833333333333333 0 1.5 0.6666666666666665 0 1.333333333333333 0.4999999999999999 0 1.5 0.3333333333333331 0 1.5 0.4999999999999998 0 -1.333333333333333 -1.166666666666667 0 -1.166666666666667 -1.333333333333333 0 -1 -1.166666666666667 0 -1.166666666666667 -1.166666666666667 0 1.166666666666667 -0.9999999999999999 0 1 -1.166666666666667 0 1.166666666666667 -1.166666666666667 0 0.6666666666666665 -1.833333333333333 0 0.3333333333333331 -1.833333333333333 0 0.4999999999999999 -1.833333333333333 0 1.666666666666667 -1.833333333333333 0 1.5 -1.666666666666667 0 1.333333333333333 -1.833333333333333 0 1.5 -1.833333333333333 0 -1.666666666666667 1.5 0 -1.833333333333333 1.666666666666667 0 -1.833333333333333 1.5 0 -1.833333333333333 -1 0 -1.666666666666667 -0.8333333333333333 0 -1.833333333333333 -0.8333333333333331 0 1.833333333333333 -1 0 1.833333333333333 -1.333333333333333 0 1.833333333333333 -1.166666666666667 0 1.666666666666667 -1.5 0 1.833333333333333 -1.666666666666667 0 1.833333333333333 -1.5 0 1.833333333333333 0.9999999999999999 0 1.666666666666667 0.833333333333333 0 1.833333333333333 0.833333333333333 0 0.9999999999999999 1.833333333333333 0 1.166666666666667 1.666666666666667 0 1.333333333333333 1.833333333333333 0 1.166666666666667 1.833333333333333 0 -1.666666666666667 1.833333333333333 0 -1.5 1.666666666666667 0 -1.333333333333333 1.833333333333333 0 -1.5 1.833333333333333 0 1.5 -1.5 0 0.9999999999999999 1.5 0 1.166666666666667 1.333333333333333 0 1.166666666666667 1.5 0 -1.5 1.333333333333333 0 -1.5 1.5 0 -1.5 0.9999999999999998 0 -1.5 1.166666666666667 0 -0.5 -1.666666666666667 0 -0.3333333333333334 -1.5 0 -0.5 -1.333333333333333 0 -0.6666666666666667 -1.5 0 -0.5 -1.5 0 -1.5 0.6666666666666665 0 -1.666666666666667 0.4999999999999999 0 -1.5 0.3333333333333333 0 -1.333333333333333 0.4999999999999999 0 -1.5 0.4999999999999999 0 0.5 1.666666666666667 0 0.3333333333333333 1.5 0 0.5 1.333333333333333 0 0.6666666666666667 1.5 0 0.5 1.5 0 -1.5 -0.6666666666666665 0 -1.333333333333333 -0.4999999999999999 0 -1.5 -0.4999999999999998 0 -1.5 -1 0 -1.5 -0.8333333333333333 0 1.333333333333333 0.8333333333333333 0 1.5 0.8333333333333331 0 0.8333333333333331 -1.666666666666667 0 0.8333333333333333 -1.333333333333333 0 0.8333333333333333 -1.5 0 -0.833333333333333 1.666666666666667 0 -0.833333333333333 1.333333333333333 0 -0.833333333333333 1.5 0 -0.1666666666666668 -1.666666666666667 0 -0.1666666666666667 -1.333333333333333 0 -0.1666666666666667 -1.5 0 -0.8333333333333333 -1.666666666666667 0 -0.8333333333333334 -1.333333333333333 0 -1 -1.5 0 -0.8333333333333335 -1.5 0 0.8333333333333333 1.666666666666667 0 0.8333333333333334 1.333333333333333 0 0.8333333333333334 1.5 0 -1.333333333333333 0.8333333333333331 0 -1.666666666666667 0.8333333333333333 0 -1.5 0.833333333333333 0 -1.833333333333333 1.833333333333333 0 1.666666666666667 1.833333333333333 0 1.833333333333333 1.666666666666667 0 1.833333333333333 1.833333333333333 0 -0.6666666666666667 -1.166666666666667 0 -0.8333333333333333 -1.166666666666667 0 1 1.166666666666667 0 0.6666666666666667 1.166666666666667 0 0.8333333333333333 1.166666666666667 0 -1.333333333333333 -1.833333333333333 0 -1.5 -1.666666666666667 0 -1.666666666666667 -1.833333333333333 0 -1.5 -1.833333333333333 0 -5.204170427930421e-17 -1.833333333333333 0 -0.3333333333333335 -1.833333333333333 0 -0.1666666666666668 -1.833333333333333 0 0.9999999999999999 -1.833333333333333 0 0.8333333333333331 -1.833333333333333 0 1.833333333333333 -1.833333333333333 0 -1.833333333333333 -1.333333333333333 0 -1.833333333333333 -1.666666666666667 0 -1.666666666666667 -1.5 0 -1.833333333333333 -1.5 0 5.377642775528102e-17 1.833333333333333 0 0.1666666666666667 1.666666666666667 0 0.3333333333333334 1.833333333333333 0 0.1666666666666667 1.833333333333333 0 -0.9999999999999999 1.833333333333333 0 -0.833333333333333 1.833333333333333 0 1.166666666666667 0.6666666666666665 0 1.166666666666667 1 0 1.166666666666667 0.8333333333333333 0 0.3333333333333334 1.166666666666667 0 0.5 1.166666666666667 0 0.1666666666666667 1.333333333333333 0 3.816391647148976e-17 1.166666666666667 0 0.1666666666666667 1.166666666666667 0 -0.6666666666666665 1.166666666666667 0 -0.3333333333333332 1.166666666666667 0 -0.4999999999999999 1.166666666666667 0 -1.166666666666667 0.3333333333333333 0 -1.166666666666667 0.6666666666666666 0 -1.166666666666667 0.4999999999999999 0 -1.333333333333333 0.1666666666666667 0 -1.166666666666667 2.33408398945395e-17 0 -1.166666666666667 0.1666666666666667 0 -1.666666666666667 -1.166666666666667 0 -1.5 -1.333333333333333 0 -1.5 -1.166666666666667 0 1.333333333333333 0.1666666666666666 0 1.5 -6.391032993623147e-17 0 1.666666666666667 0.1666666666666665 0 1.5 0.1666666666666665 0 1.5 -0.3333333333333334 0 1.333333333333333 -0.1666666666666667 0 1.5 -0.1666666666666667 0 1.333333333333333 -0.5 0 1.5 -0.6666666666666666 0 1.666666666666667 -0.5 0 1.5 -0.5 0 -1.333333333333333 -1.5 0 -1.5 -1.5 0 1.166666666666667 1.166666666666667 0 -1.833333333333333 -1.833333333333333 0 -0.3333333333333334 -1.166666666666667 0 -0.5 -1.166666666666667 0 -2.961565996779936e-17 -1.166666666666667 0 -0.1666666666666667 -1.166666666666667 0 1.166666666666667 -0.6666666666666667 0 1.166666666666667 -0.3333333333333334 0 1.166666666666667 -0.5000000000000001 0 1.166666666666667 -2.949029909160572e-17 0 1.166666666666667 -0.1666666666666667 0 -0.1666666666666665 1.166666666666667 0 -1.5 0.1666666666666667 0 1.333333333333333 -0.8333333333333333 0 1.166666666666667 -0.8333333333333334 0 0.6666666666666665 -1.166666666666667 0 0.8333333333333333 -1.166666666666667 0 -0.833333333333333 1.166666666666667 0 -1 -1.833333333333333 0 -1.166666666666667 -1.666666666666667 0 -1.166666666666667 -1.833333333333333 0 -0.6666666666666667 -1.833333333333333 0 -0.8333333333333334 -1.833333333333333 0 -0.5 -1.833333333333333 0 0.1666666666666665 -1.833333333333333 0 1.166666666666667 -1.833333333333333 0 -1.833333333333333 0.6666666666666666 0 -1.833333333333333 0.5 0 -1.833333333333333 0.8333333333333335 0 -1.833333333333333 -0.1666666666666665 0 -1.833333333333333 -1.166666666666667 0 1.833333333333333 -0.6666666666666667 0 1.666666666666667 -0.8333333333333333 0 1.833333333333333 -0.8333333333333334 0 1.833333333333333 -0.5000000000000001 0 1.833333333333333 0.1666666666666665 0 1.833333333333333 1.333333333333333 0 1.833333333333333 1.166666666666667 0 1.5 1.833333333333333 0 0.6666666666666667 1.833333333333333 0 0.8333333333333335 1.833333333333333 0 0.4999999999999999 1.833333333333333 0 -0.1666666666666665 1.833333333333333 0 -1.166666666666667 1.833333333333333 0 0.3333333333333333 -1.166666666666667 0 0.1666666666666665 -1.166666666666667 0 0.4999999999999999 -1.166666666666667 0 1.166666666666667 0.3333333333333333 0 1.166666666666667 0.1666666666666665 0 1.166666666666667 0.4999999999999999 0 -1.166666666666667 0.8333333333333333 0 -1.166666666666667 -0.3333333333333333 0 -1.166666666666667 -0.1666666666666666 0 -1.166666666666667 -0.4999999999999999 0 0.1666666666666667 1.5 0 -1.166666666666667 -1.5 0 1.5 -0.8333333333333333 0 1.833333333333333 1.5 0 $EndNodes $Elements 6 192 1 192 1 1 8 12 1 1 9 20 2 9 10 21 3 10 11 22 4 11 12 23 5 12 13 24 6 13 14 25 7 14 15 26 8 15 16 27 9 16 17 28 10 17 18 29 11 18 19 30 12 19 2 31 1 2 8 12 13 3 32 43 14 32 33 44 15 33 34 45 16 34 35 46 17 35 36 47 18 36 37 48 19 37 38 49 20 38 39 50 21 39 40 51 22 40 41 52 23 41 42 53 24 42 1 54 1 3 8 12 25 2 55 66 26 55 56 67 27 56 57 68 28 57 58 69 29 58 59 70 30 59 60 71 31 60 61 72 32 61 62 73 33 62 63 74 34 63 64 75 35 64 65 76 36 65 4 77 1 4 8 12 37 4 78 89 38 78 79 90 39 79 80 91 40 80 81 92 41 81 82 93 42 82 83 94 43 83 84 95 44 84 85 96 45 85 86 97 46 86 87 98 47 87 88 99 48 88 3 100 2 1 10 36 49 160 166 161 168 170 171 172 173 174 50 159 166 167 162 175 176 177 178 179 51 160 169 167 166 180 181 176 170 182 52 5 101 155 138 106 183 184 144 185 53 6 112 150 105 117 186 187 111 188 54 116 153 151 115 189 190 191 121 192 55 7 123 153 116 128 193 189 122 194 56 127 154 147 126 195 196 197 132 198 57 138 155 149 137 184 199 200 143 201 58 168 165 150 163 202 203 204 205 206 59 147 154 158 162 196 207 208 209 210 60 150 112 113 163 186 118 211 204 212 61 113 114 146 163 119 213 214 211 215 62 124 157 153 123 216 217 193 129 218 63 124 125 156 157 130 219 220 216 221 64 135 158 154 134 222 207 223 140 224 65 135 136 148 158 141 225 226 222 227 66 168 161 145 165 172 228 229 202 230 67 162 158 148 159 208 226 231 178 232 68 149 155 152 164 199 233 234 235 236 69 151 153 157 169 190 217 237 238 239 70 157 156 167 169 220 240 181 237 241 71 145 152 102 103 242 243 108 244 245 72 101 102 152 155 107 243 233 183 246 73 145 161 164 152 228 247 234 242 248 74 159 164 161 166 249 247 171 175 250 75 127 8 134 154 133 139 223 195 251 76 103 104 165 145 109 252 229 244 253 77 105 150 165 104 187 203 252 110 254 78 114 115 151 146 120 191 255 213 256 79 126 147 156 125 197 257 219 131 258 80 136 137 149 148 142 200 259 225 260 81 169 160 146 151 180 261 255 238 262 82 156 147 162 167 257 209 177 240 263 83 164 159 148 149 249 231 259 235 264 84 163 146 160 168 214 261 173 205 265 2 2 10 108 85 5 138 284 310 144 338 339 340 341 86 301 267 311 323 342 343 344 345 346 87 306 269 312 324 347 348 349 350 351 88 316 292 319 270 352 353 354 355 356 89 296 271 302 293 357 358 359 360 361 90 314 291 274 273 362 363 364 365 366 91 317 268 330 315 367 368 369 370 371 92 314 273 332 289 365 372 373 374 375 93 270 326 288 316 376 377 378 355 379 94 318 8 324 312 380 381 349 382 383 95 276 281 322 311 384 385 386 387 388 96 34 327 278 33 389 390 391 45 392 97 302 38 39 328 393 50 394 395 396 98 60 272 320 59 397 398 399 71 400 99 305 61 62 329 401 73 402 403 404 100 315 330 287 336 369 405 406 407 408 101 37 271 337 36 409 410 411 48 412 102 84 85 332 273 96 413 372 414 415 103 305 329 285 290 403 416 417 418 419 104 310 334 297 5 420 421 422 340 423 105 311 322 6 323 386 424 425 344 426 106 15 16 326 270 27 427 376 428 429 107 18 19 294 267 30 430 431 432 433 108 32 33 278 295 44 391 434 435 436 109 40 266 328 39 437 438 394 51 439 110 57 281 276 56 440 384 441 68 442 111 55 56 276 294 67 441 443 444 445 112 63 268 329 62 446 447 402 74 448 113 80 277 336 79 449 450 451 91 452 114 87 88 295 269 99 453 454 455 456 115 267 294 276 311 431 443 387 343 457 116 336 277 299 315 450 458 459 407 460 117 269 295 278 312 454 434 461 348 462 118 312 278 327 318 461 390 463 382 464 119 325 279 335 308 465 466 467 468 469 120 300 280 337 321 470 471 472 473 474 121 331 283 333 309 475 476 477 478 479 122 302 328 284 293 395 480 481 359 482 123 266 310 284 328 483 339 480 438 484 124 268 317 285 329 367 485 416 447 486 125 326 301 323 288 487 345 488 377 489 126 332 306 324 289 490 350 491 373 492 127 279 319 292 335 493 353 494 466 495 128 275 325 308 297 496 468 497 498 499 129 277 331 309 299 500 478 501 458 502 130 280 300 318 327 470 503 463 504 505 131 32 295 88 3 435 453 100 43 506 132 78 287 65 4 507 508 77 89 509 133 101 5 297 308 106 422 497 510 511 134 123 7 299 309 128 512 501 513 514 135 9 10 286 307 21 515 516 517 518 136 14 319 279 13 519 493 520 25 521 137 17 301 326 16 522 487 427 28 523 138 2 55 294 19 66 444 430 31 524 139 303 41 42 307 525 53 526 527 528 140 83 274 283 82 529 530 531 94 532 141 86 306 332 85 533 490 413 97 534 142 7 116 285 317 122 535 485 536 537 143 309 333 124 123 477 538 129 513 539 144 333 291 125 124 540 541 130 538 542 145 289 127 126 314 543 132 544 374 545 146 321 135 134 300 546 140 547 473 548 147 321 296 136 135 549 550 141 546 551 148 334 310 266 303 420 483 552 553 554 149 290 313 272 305 555 556 557 418 558 150 282 320 272 313 559 398 556 560 561 151 320 282 298 304 559 562 563 564 565 152 303 307 286 334 527 516 566 553 567 153 7 317 315 299 536 370 459 512 568 154 1 9 307 42 20 517 526 54 569 155 308 335 102 101 467 570 107 510 571 156 103 102 335 292 108 570 494 572 573 157 113 112 298 282 118 574 562 575 576 158 313 114 113 282 577 119 575 560 578 159 291 314 126 125 362 544 131 541 579 160 296 321 337 271 549 472 410 357 580 161 322 298 112 6 581 574 117 424 582 162 105 288 323 6 583 488 425 111 584 163 127 289 324 8 543 491 381 133 585 164 11 275 286 10 586 587 515 22 588 165 12 325 275 11 589 496 586 23 590 166 325 12 13 279 589 24 520 465 591 167 319 14 15 270 519 26 428 354 592 168 301 17 18 267 522 29 432 342 593 169 337 280 35 36 471 594 47 411 595 170 34 35 280 327 46 594 504 389 596 171 302 271 37 38 358 409 49 393 597 172 303 266 40 41 552 437 52 525 598 173 58 304 281 57 599 600 440 69 601 174 320 304 58 59 564 599 70 399 602 175 305 272 60 61 557 397 72 401 603 176 330 268 63 64 368 446 75 604 605 177 287 78 79 336 507 90 451 406 606 178 81 331 277 80 607 500 449 92 608 179 331 81 82 283 607 93 531 475 609 180 274 83 84 273 529 95 414 364 610 181 306 86 87 269 533 98 455 347 611 182 104 103 292 316 109 572 352 612 613 183 288 105 104 316 583 110 612 378 614 184 313 290 115 114 555 615 120 577 616 185 115 290 285 116 615 417 535 121 617 186 8 318 300 134 380 503 547 139 618 187 137 136 296 293 142 550 360 619 620 188 137 293 284 138 619 481 338 143 621 189 291 333 283 274 540 476 530 363 622 190 297 334 286 275 421 566 587 498 623 191 298 322 281 304 581 385 600 563 624 192 64 65 287 330 76 508 405 604 625 $EndElements feenox-1.1/tests/data1d_columns.dat0000644000175000017500000000012014773607165014323 00000000000000# comments are ignored # the second line is garbage 0 -1 0 1 +1 1 2 -1 4 3 +1 9 feenox-1.1/tests/reaction.msh0000644000175000017500000047450414773607165013275 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 31 1 17 "edge_1_5_17" 1 18 "edge_1_5_18" 1 19 "edge_1_5_19" 1 20 "edge_1_5_20" 1 1 "surf_1_1edge_1_1_1" 1 2 "surf_1_1edge_1_1_2" 1 3 "surf_1_1edge_1_1_3" 1 4 "surf_1_1edge_1_1_4" 1 5 "surf_1_2edge_1_2_1" 1 6 "surf_1_2edge_1_2_2" 1 7 "surf_1_2edge_1_2_3" 1 8 "surf_1_2edge_1_2_4" 1 9 "surf_1_3edge_1_3_1" 1 10 "surf_1_3edge_1_3_2" 1 11 "surf_1_3edge_1_3_3" 1 12 "surf_1_3edge_1_3_4" 1 13 "surf_1_4edge_1_4_1" 1 14 "surf_1_4edge_1_4_2" 1 15 "surf_1_4edge_1_4_3" 1 16 "surf_1_4edge_1_4_4" 1 21 "surf_1_6edge_1_6_1" 1 22 "surf_1_6edge_1_6_2" 1 23 "surf_1_6edge_1_6_3" 1 24 "surf_1_6edge_1_6_4" 2 29 "surf_1_5" 2 25 "surf_1_1" 2 26 "surf_1_2" 2 27 "surf_1_3" 2 28 "surf_1_4" 2 30 "surf_1_6" 3 31 "part_1" $EndPhysicalNames $Entities 0 24 6 1 17 0 0 0 0 0 0 1 17 0 18 0 0 0 0 0 0 1 18 0 19 0 0 0 0 0 0 1 19 0 20 0 0 0 0 0 0 1 20 0 1 0 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 1 2 0 3 0 0 0 0 0 0 1 3 0 4 0 0 0 0 0 0 1 4 0 5 0 0 0 0 0 0 1 5 0 6 0 0 0 0 0 0 1 6 0 7 0 0 0 0 0 0 1 7 0 8 0 0 0 0 0 0 1 8 0 9 0 0 0 0 0 0 1 9 0 10 0 0 0 0 0 0 1 10 0 11 0 0 0 0 0 0 1 11 0 12 0 0 0 0 0 0 1 12 0 13 0 0 0 0 0 0 1 13 0 14 0 0 0 0 0 0 1 14 0 15 0 0 0 0 0 0 1 15 0 16 0 0 0 0 0 0 1 16 0 21 0 0 0 0 0 0 1 21 0 22 0 0 0 0 0 0 1 22 0 23 0 0 0 0 0 0 1 23 0 24 0 0 0 0 0 0 1 24 0 29 0 0 0 0 0 0 1 29 0 25 0 0 0 0 0 0 1 25 0 26 0 0 0 0 0 0 1 26 0 27 0 0 0 0 0 0 1 27 0 28 0 0 0 0 0 0 1 28 0 30 0 0 0 0 0 0 1 30 0 31 0 0 0 0 0 0 1 31 0 $EndEntities $Nodes 1 1214 1 1214 3 1 0 1214 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 0 0 0 -1.04083e-14 60 0 0 0 200 -1.04083e-14 60 200 60 0 200 60 0 0 60 60 200 60 60 0 -1.04083e-14 60 190.909 -1.04083e-14 60 181.818 -1.04083e-14 60 172.727 -1.04083e-14 60 163.636 -1.04083e-14 60 154.545 -1.04083e-14 60 145.455 -1.04083e-14 60 136.364 -1.04083e-14 60 127.273 -1.04083e-14 60 118.182 -1.04083e-14 60 109.091 -1.04083e-14 60 100 -1.04083e-14 60 90.9091 -1.04083e-14 60 81.8182 -1.04083e-14 60 72.7273 -1.04083e-14 60 63.6364 -1.04083e-14 60 54.5455 -1.04083e-14 60 45.4545 -1.04083e-14 60 36.3636 -1.04083e-14 60 27.2727 -1.04083e-14 60 18.1818 -1.04083e-14 60 9.09091 0 8.57143 200 0 17.1429 200 0 25.7143 200 0 34.2857 200 4.28915e-17 42.8571 200 -4.46072e-15 51.4286 200 -4.46072e-15 51.4286 0 4.28915e-17 42.8571 0 0 34.2857 0 0 25.7143 0 0 17.1429 0 0 8.57143 0 0 0 9.09091 0 0 18.1818 0 0 27.2727 0 0 36.3636 0 0 45.4545 0 0 54.5455 0 0 63.6364 0 0 72.7273 0 0 81.8182 0 0 90.9091 0 0 100 0 0 109.091 0 0 118.182 0 0 127.273 0 0 136.364 0 0 145.455 0 0 154.545 0 0 163.636 0 0 172.727 0 0 181.818 0 0 190.909 51.4286 0 200 42.8571 0 200 34.2857 0 200 25.7143 0 200 17.1429 0 200 8.57143 0 200 60 0 9.09091 60 0 18.1818 60 0 27.2727 60 0 36.3636 60 0 45.4545 60 0 54.5455 60 0 63.6364 60 0 72.7273 60 0 81.8182 60 0 90.9091 60 0 100 60 0 109.091 60 0 118.182 60 0 127.273 60 0 136.364 60 0 145.455 60 0 154.545 60 0 163.636 60 0 172.727 60 0 181.818 60 0 190.909 8.57143 0 0 17.1429 0 0 25.7143 0 0 34.2857 0 0 42.8571 0 0 51.4286 0 0 60 51.4286 200 60 42.8571 200 60 34.2857 200 60 25.7143 200 60 17.1429 200 60 8.57143 200 60 8.57143 0 60 17.1429 0 60 25.7143 0 60 34.2857 0 60 42.8571 0 60 51.4286 0 60 60 9.09091 60 60 18.1818 60 60 27.2727 60 60 36.3636 60 60 45.4545 60 60 54.5455 60 60 63.6364 60 60 72.7273 60 60 81.8182 60 60 90.9091 60 60 100 60 60 109.091 60 60 118.182 60 60 127.273 60 60 136.364 60 60 145.455 60 60 154.545 60 60 163.636 60 60 172.727 60 60 181.818 60 60 190.909 8.57143 60 200 17.1429 60 200 25.7143 60 200 34.2857 60 200 42.8571 60 200 51.4286 60 200 51.4286 60 0 42.8571 60 0 34.2857 60 0 25.7143 60 0 17.1429 60 0 8.57143 60 0 0 19.5405 192.229 0 29.9332 191.926 0 40.3732 191.791 -5.35822e-15 52.722 177.181 -5.21988e-15 52.5226 168.174 -5.12181e-15 52.3813 159.123 -5.08765e-15 52.3321 150.024 -5.07613e-15 52.3155 140.923 -5.07105e-15 52.3081 131.823 -5.07088e-15 52.3079 122.728 -5.08354e-15 52.3262 113.633 -5.1542e-15 52.428 104.554 -5.0946e-15 52.3421 95.4555 -5.06742e-15 52.3029 86.3632 -5.05617e-15 52.2867 77.2692 -5.0689e-15 52.3051 68.1694 -5.08304e-15 52.3254 59.0517 -5.07616e-15 52.3155 49.9284 -5.10629e-15 52.3589 40.7648 -5.17765e-15 52.4618 31.5535 -5.2219e-15 52.5256 22.4071 0 40.4425 7.75031 0 29.969 8.05226 0 19.4886 8.15296 0 7.34462 22.7763 0 7.56236 31.7478 0 7.70117 40.8566 0 7.6852 49.9594 0 7.71577 59.077 0 7.71219 68.1793 0 7.71597 77.2719 0 7.63596 86.358 0 7.7289 95.4547 0 7.75085 104.547 0 7.72572 113.634 0 7.69983 122.725 0 7.6754 131.832 0 7.57557 140.943 0 7.68565 150.062 0 7.67337 159.2 0 7.57773 168.389 0 7.45083 177.567 0 6.20838 15.2501 -6.09752e-15 53.7874 184.744 0 6.41256 185.352 -5.96077e-15 53.5904 14.6237 0 25.3296 183.945 0 34.292 183.748 -6.35385e-17 45.0916 173.053 -2.22884e-16 45.3212 183.415 0 44.897 163.844 0 44.7548 154.644 0 44.6988 145.505 0 44.6898 136.388 0 44.6683 127.279 0 44.6915 118.177 0 44.5784 109.09 0 44.6899 100.003 0 44.6698 90.9078 0 44.6747 81.8108 0 44.6871 72.7061 0 44.675 63.5871 0 44.6717 54.4441 0 44.7215 45.2403 0 44.8795 35.8903 -1.54874e-16 45.2232 26.2743 -1.94615e-16 45.2805 15.5498 0 34.5969 16.0067 0 25.2827 16.1536 0 14.4842 16.4122 0 14.5892 26.5663 0 15.4009 36.2137 0 15.3566 45.3418 0 15.3331 54.4762 0 15.3103 63.6115 0 15.4212 72.7169 0 15.4798 81.8166 0 15.4182 90.9073 0 15.4505 99.9954 0 15.4772 109.091 0 15.4167 118.185 0 15.2757 127.281 0 15.3395 136.398 0 15.3937 145.528 0 15.3845 154.702 0 15.1718 164.014 0 14.6978 173.659 0 14.7206 184.346 0 37.1614 168.472 0 37.4749 159.31 0 37.3438 150.138 0 37.2919 140.973 0 37.2641 131.845 0 37.2459 122.735 0 37.0841 113.634 0 37.0884 104.538 0 37.2413 95.4532 0 37.2714 86.358 0 37.2589 77.2547 0 37.2887 68.1313 0 37.2517 58.9776 0 37.2848 49.7551 0 37.4566 40.4167 0 37.557 31.0645 0 22.6296 31.3538 0 22.772 40.5648 0 22.7688 49.815 0 22.7629 58.9981 0 22.921 68.1539 0 22.8858 77.2617 0 22.8956 86.3613 0 22.9018 95.4532 0 22.8897 104.546 0 22.8798 113.639 0 22.8934 122.736 0 22.7707 131.853 0 22.8022 140.984 0 22.9479 150.146 0 22.7591 159.488 0 22.3887 168.824 0 29.6833 174.889 0 30.1424 25.1066 0 21.6048 176.978 0 38.369 22.8541 0 37.699 176.318 0 21.642 23.2535 0 29.9903 109.096 0 30.0123 90.9081 0 30.0575 136.426 0 29.9917 118.19 0 30.0129 81.8231 0 30 127.292 0 30.0071 99.9986 0 30.0451 63.5444 0 30.0189 72.6948 0 30.1009 35.38 0 30.0832 145.604 0 30.0013 54.3478 0 29.8903 164.537 0 30.0634 45.073 0 30.0976 154.904 -4.31365e-15 51.2166 7.12309 0 8.7855 192.872 -4.31025e-15 51.2117 192.87 0 8.78341 7.12379 40.4607 0 192.234 30.0668 0 191.93 19.6268 0 191.791 7.27799 0 177.181 7.47736 0 168.174 7.61869 0 159.123 7.66791 0 150.024 7.68465 0 140.922 7.69206 0 131.823 7.69195 0 122.728 7.70768 0 113.63 7.71686 0 104.544 7.7072 0 95.4614 7.68683 0 86.3586 7.71485 0 77.265 7.69845 0 68.1641 7.67814 0 59.0463 7.68962 0 49.9236 7.64887 0 40.7625 7.5429 0 31.554 7.47445 0 22.4071 19.5575 0 7.75031 30.031 0 8.05226 40.5114 0 8.15296 52.6554 0 22.7763 52.4724 0 31.7201 52.3395 0 40.8309 52.3277 0 49.9574 52.3437 0 59.0696 52.4219 0 68.1551 52.3148 0 77.2608 52.3094 0 86.3591 52.2862 0 95.46 52.2643 0 104.546 52.2845 0 113.636 52.3176 0 122.72 52.48 0 131.835 52.2987 0 140.931 52.2867 0 150.055 52.3206 0 159.197 52.4207 0 168.389 52.5492 0 177.567 53.7916 0 15.2501 6.40962 0 14.6237 6.21255 0 184.744 53.5874 0 185.352 34.6693 0 183.961 25.708 0 183.748 14.9084 0 173.053 14.6788 0 183.415 15.103 0 163.844 15.2452 0 154.644 15.3012 0 145.504 15.3107 0 136.387 15.3322 0 127.278 15.3071 0 118.176 15.4185 0 109.09 15.4505 0 100.001 15.274 0 90.9064 15.3242 0 81.7999 15.3205 0 72.6888 15.3355 0 63.5736 15.3318 0 54.4321 15.297 0 45.2266 15.1432 0 35.8894 14.7768 0 26.2743 14.7195 0 15.5498 25.4031 0 16.0067 34.7173 0 16.1536 45.5158 0 16.4122 45.4169 0 26.5528 44.7546 0 36.0707 44.7111 0 45.3101 44.7549 0 54.503 44.5998 0 63.5867 44.656 0 72.696 44.6748 0 81.7992 44.6898 0 90.9069 44.5537 0 100.002 44.5884 0 109.09 44.5514 0 118.179 44.7581 0 127.271 44.6532 0 136.398 44.5652 0 145.516 44.586 0 154.69 44.829 0 164.013 45.3022 0 173.659 45.2794 0 184.346 22.8386 0 168.472 22.5251 0 159.31 22.656 0 150.138 22.708 0 140.973 22.738 0 131.843 22.7549 0 122.732 22.9164 0 113.632 22.8946 0 104.538 22.8958 0 95.4463 22.7506 0 86.3313 22.7358 0 77.2184 22.7489 0 68.0927 22.7571 0 58.9494 22.7026 0 49.7231 22.6683 0 40.4112 22.4423 0 31.0618 37.3736 0 31.3416 37.2667 0 40.5489 37.3667 0 49.8781 37.1064 0 58.9565 37.2671 0 68.095 37.2434 0 77.2198 37.2471 0 86.3342 37.1049 0 95.4465 37.1107 0 104.539 37.1096 0 113.636 37.1107 0 122.731 37.3311 0 131.852 37.0563 0 140.957 37.0518 0 150.145 37.2396 0 159.486 37.6186 0 168.818 30.3631 0 174.861 29.8576 0 25.1066 22.301 0 176.318 38.3865 0 176.993 38.358 0 23.2535 21.631 0 22.8541 29.943 0 136.424 30.006 0 109.081 30.0033 0 118.186 29.9978 0 81.7389 30.0003 0 90.8749 30.0038 0 127.286 30.0009 0 99.9766 29.8991 0 35.38 30.0139 0 63.4837 29.9888 0 72.6385 29.9166 0 145.603 29.9806 0 54.2972 30.1097 0 164.537 29.9782 0 45.0058 29.9015 0 154.903 51.2145 0 192.872 8.78828 0 192.87 51.2166 0 7.12379 8.78337 0 7.12309 60 40.4595 192.229 60 30.0668 191.926 60 19.6268 191.791 60 7.27799 177.181 60 7.47736 168.174 60 7.6187 159.123 60 7.66793 150.024 60 7.68467 140.922 60 7.69207 131.823 60 7.69195 122.728 60 7.70768 113.63 60 7.71686 104.544 60 7.7072 95.4614 60 7.68683 86.3586 60 7.71485 77.265 60 7.69845 68.1641 60 7.67814 59.0463 60 7.68962 49.9236 60 7.64887 40.7625 60 7.5429 31.554 60 7.47445 22.4071 60 19.5575 7.75031 60 30.031 8.05226 60 40.5114 8.15296 60 52.6554 22.7763 60 52.4724 31.7201 60 52.3395 40.8309 60 52.3277 49.9574 60 52.3437 59.0696 60 52.4219 68.1551 60 52.3148 77.2608 60 52.3094 86.3591 60 52.2862 95.46 60 52.2643 104.546 60 52.2845 113.636 60 52.3176 122.72 60 52.48 131.835 60 52.2987 140.931 60 52.2868 150.056 60 52.3206 159.198 60 52.4223 168.389 60 52.5492 177.567 60 53.7916 15.2501 60 6.40962 14.6237 60 53.5874 185.352 60 6.21255 184.744 60 34.6704 183.945 60 25.708 183.748 60 14.6788 183.415 60 14.9084 173.053 60 15.103 163.844 60 15.2452 154.644 60 15.3012 145.505 60 15.3107 136.387 60 15.3322 127.278 60 15.3071 118.176 60 15.4185 109.09 60 15.4505 100.001 60 15.274 90.9064 60 15.3242 81.7999 60 15.3205 72.6888 60 15.3355 63.5736 60 15.3318 54.4321 60 15.297 45.2266 60 15.1432 35.8894 60 14.7768 26.2743 60 14.7195 15.5498 60 25.4031 16.0067 60 34.7173 16.1536 60 45.5158 16.4122 60 45.4169 26.5528 60 44.7546 36.0707 60 44.7111 45.3101 60 44.7549 54.503 60 44.5998 63.5867 60 44.656 72.696 60 44.6748 81.7992 60 44.6898 90.9069 60 44.5537 100.002 60 44.5884 109.09 60 44.5514 118.179 60 44.7581 127.271 60 44.6532 136.398 60 44.5653 145.516 60 44.5862 154.691 60 44.8282 164.014 60 45.3022 173.659 60 45.2794 184.346 60 22.8386 168.472 60 22.5251 159.31 60 22.6562 150.138 60 22.7081 140.973 60 22.738 131.843 60 22.7549 122.732 60 22.9164 113.632 60 22.8946 104.538 60 22.8958 95.4463 60 22.7506 86.3313 60 22.7358 77.2184 60 22.7489 68.0927 60 22.7571 58.9494 60 22.7026 49.7231 60 22.6683 40.4112 60 22.4423 31.0618 60 37.3736 31.3416 60 37.2667 40.5489 60 37.3667 49.8781 60 37.1064 58.9565 60 37.2671 68.095 60 37.2434 77.2198 60 37.2471 86.3342 60 37.1049 95.4465 60 37.1107 104.539 60 37.1096 113.636 60 37.1107 122.731 60 37.3311 131.853 60 37.0563 140.957 60 37.0521 150.146 60 37.2409 159.488 60 37.6113 168.824 60 30.3167 174.889 60 29.8576 25.1066 60 38.3952 176.978 60 22.301 176.318 60 38.358 23.2535 60 21.631 22.8541 60 29.9431 136.424 60 30.006 109.081 60 30.0033 118.186 60 29.9978 81.7389 60 30.0003 90.8749 60 30.0038 127.286 60 30.0009 99.9766 60 29.8991 35.38 60 30.0139 63.4837 60 29.9888 72.6385 60 29.9168 145.604 60 29.9806 54.2972 60 30.1097 164.537 60 29.9782 45.0058 60 29.9024 154.904 60 51.2145 192.872 60 8.78828 192.87 60 51.2166 7.12379 60 8.78337 7.12309 19.5405 60 192.229 29.9332 60 191.926 40.3732 60 191.791 52.722 60 177.181 52.5226 60 168.174 52.3813 60 159.123 52.3321 60 150.024 52.3155 60 140.922 52.3083 60 131.823 52.3089 60 122.728 52.2937 60 113.63 52.2855 60 104.545 52.2958 60 95.4635 52.3159 60 86.3621 52.2878 60 77.2692 52.3053 60 68.1694 52.3255 60 59.0517 52.3155 60 49.9284 52.3589 60 40.7648 52.4618 60 31.5535 52.5256 60 22.4071 40.4425 60 7.75031 29.969 60 8.05226 19.4886 60 8.15296 7.34462 60 22.7763 7.56236 60 31.7478 7.70117 60 40.8566 7.68526 60 49.9594 7.71606 60 59.0771 7.71373 60 68.1797 7.6693 60 77.2629 7.541 60 86.365 7.70181 60 95.4577 7.73538 60 104.547 7.72584 60 113.635 7.70819 60 122.722 7.67731 60 131.831 7.57618 60 140.943 7.68575 60 150.062 7.67337 60 159.2 7.57773 60 168.389 7.45083 60 177.567 53.5904 60 14.6237 6.41256 60 185.352 53.7874 60 184.744 6.20838 60 15.2501 25.3296 60 183.945 34.292 60 183.748 45.0916 60 173.053 45.3212 60 183.415 44.897 60 163.844 44.7548 60 154.644 44.6988 60 145.505 44.6899 60 136.387 44.6693 60 127.278 44.6954 60 118.176 44.586 60 109.09 44.5545 60 100.002 44.734 60 90.9138 44.6801 60 81.8117 44.6876 60 72.7063 44.675 60 63.5871 44.6717 60 54.4441 44.7215 60 45.2403 44.8795 60 35.8903 45.2232 60 26.2743 45.2805 60 15.5498 34.5969 60 16.0067 25.2827 60 16.1536 14.4842 60 16.4122 14.5892 60 26.5663 15.4009 60 36.2137 15.3566 60 45.3418 15.3333 60 54.4763 15.3116 60 63.6119 15.4277 60 72.7177 15.2842 60 81.8035 15.3638 60 90.9084 15.4167 60 99.9978 15.4476 60 109.085 15.451 60 118.179 15.2838 60 127.276 15.3406 60 136.397 15.3938 60 145.528 15.3845 60 154.701 15.1718 60 164.014 14.6978 60 173.659 14.7206 60 184.346 37.1614 60 168.472 37.4749 60 159.31 37.3438 60 150.138 37.2919 60 140.973 37.2645 60 131.843 37.2487 60 122.732 37.0921 60 113.631 37.1156 60 104.539 37.1163 60 95.4479 37.2655 60 86.3545 37.2587 60 77.2546 37.2886 60 68.1313 37.2517 60 58.9776 37.2848 60 49.7551 37.4566 60 40.4167 37.557 60 31.0645 22.6296 60 31.3538 22.772 60 40.5648 22.7688 60 49.815 22.7629 60 58.9981 22.9209 60 68.1539 22.917 60 77.261 22.7815 60 86.3567 22.9073 60 95.4491 22.8971 60 104.543 22.8936 60 113.635 22.8969 60 122.731 22.7718 60 131.85 22.8024 60 140.983 22.9479 60 150.146 22.7591 60 159.488 22.3887 60 168.824 29.6833 60 174.889 30.1424 60 25.1066 37.699 60 176.318 21.642 60 23.2535 21.6048 60 176.978 38.369 60 22.8541 30.0102 60 109.08 30.0152 60 90.9009 30.0578 60 136.424 29.9978 60 118.184 30.043 60 81.8028 30.0014 60 127.286 30.0125 60 99.994 30.0451 60 63.5443 30.0187 60 72.6945 30.1009 60 35.38 30.0832 60 145.604 30.0013 60 54.3478 29.8903 60 164.537 30.0634 60 45.073 30.0976 60 154.904 51.2117 60 192.87 8.78341 60 7.12379 8.7855 60 192.872 51.2166 60 7.12309 52.0994 19.182 200 52.1393 29.3311 200 51.7817 37.7909 200 40.0757 52.497 200 30.5447 52.4401 200 22.2091 51.7817 200 7.68262 40.8118 200 7.75318 30.5789 200 7.44556 21.6775 200 19.245 7.97085 200 29.3806 7.61504 200 38.2878 7.03075 200 8.82686 6.79958 200 53.2004 8.82686 200 6.72154 51.1088 200 51.1088 53.2785 200 44.1006 14.9055 200 44.4295 25.1866 200 44.5771 34.4115 200 45.4898 45.0064 200 35.0516 45.3478 200 25.7314 45.0413 200 15.396 45.1867 200 15.7011 34.4809 200 15.4367 25.9561 200 14.9055 15.8994 200 24.9351 15.1202 200 34.0388 14.4967 200 45.7926 5.95825 200 53.027 45.5484 200 5.95825 14.2074 200 14.4516 53.027 200 35.6228 30.1661 200 30.2434 37.8616 200 29.8724 22.6087 200 24.5944 30.6015 200 22.3261 38.3322 200 38.1566 38.2961 200 37.5813 21.7 200 22.2048 22.3278 200 52.098 40.8171 0 52.1812 30.588 0 52.2543 21.8165 0 40.0466 7.61133 0 30.5467 7.64431 0 22.2091 8.2183 0 7.72632 19.3356 0 7.96545 30 0 7.96752 40.7462 0 21.4527 52.7848 0 29.9548 52.6091 0 38.3225 52.5544 0 6.72154 8.89125 0 51.1088 6.72154 0 6.79958 51.1731 0 53.2004 51.1731 0 44.1006 45.0945 0 44.2771 34.5077 0 44.5412 25.7944 0 35.116 14.7572 0 45.1343 15.7398 0 25.7672 15.2462 0 15.3887 14.7944 0 15.8219 26.1024 0 15.6801 34.899 0 15.8966 45.0563 0 25.6573 45.2777 0 34.3587 45.2709 0 14.1421 53.857 0 45.7926 54.0418 0 14.4516 6.97301 0 53.5081 14.1306 0 30.0559 37.4077 0 35.6451 29.9602 0 30.3186 22.4938 0 24.6777 30.0573 0 38.0778 21.862 0 37.5672 37.8804 0 22.6132 22.3295 0 22.4635 38.3966 0 7.83048 45.8281 193.874 8.51543 51.7115 188.571 16.5535 51.0378 191.525 10.5006 42.2474 178.293 8.23687 35.7429 193.073 12.3686 40.2298 188.008 21.8824 43.2791 190.915 27.1979 51.3764 189.644 31.5281 43.5763 193.241 25.2237 35.7704 191.641 16.6822 29.8961 190.757 7.64301 25.165 190.177 8.7252 29.5558 180.838 7.21571 43.5326 168.875 10.1238 36.1823 164.176 9.39311 19.8554 181.327 17.027 20.5628 189.551 26.4778 27.8295 189.82 34.3699 34.824 191.863 10.1611 52.2672 179.524 20.7752 49.1335 182.197 5.57978 53.9179 164.59 8.4006 38.6761 155.494 8.33174 31.2035 150.218 8.08736 10.4347 180.032 7.44239 12.7432 159.305 8.33529 15.4283 151.446 8.54085 30.9455 141.392 7.27936 40.1819 144.134 7.36054 47.2619 150.057 5.7931 54.135 155.539 19.2381 51.4156 173.717 20.6239 52.5155 164.069 5.81876 54.3999 146.804 6.29123 41.0969 134.326 12.8214 52.5902 150.097 21.2419 51.5245 154.919 43.0518 51.2011 169.825 52.8815 52.2827 172.095 52.6918 49.4764 189.678 33.6965 24.5868 191.61 42.5154 30.7786 190.926 51.8347 24.6669 191.651 40.7011 18.2483 191.292 26.9726 17.2125 188.95 8.19517 6.52939 172.4 7.50756 5.92067 163.743 7.38226 5.11968 154.603 7.19848 7.46813 145.034 9.36316 30.5787 132.495 7.72695 38.8684 126.066 10.7423 30.1708 122.611 5.72829 5.91649 135.88 7.11105 28.2465 114.202 28.4707 52.6012 150.392 43.4992 52.6336 159.585 50.4313 41.9024 182.591 52.4199 36.0402 190.469 41.745 8.17644 190.202 23.2582 7.37872 192.575 7.26936 8.34873 119.291 6.48544 23.0347 109.039 15.0521 7.89167 122.057 16.6659 8.76725 148.394 14.3204 6.95603 158.716 18.93 8.80875 166.439 18.2118 8.56569 113.34 5.62513 54.1304 118.162 13.6916 51.7692 131.896 35.1146 49.8709 146.227 42.2963 52.5151 150.092 43.5601 51.8793 141.001 34.6184 51.8702 138.041 19.8708 51.5759 126.784 7.2753 53.6269 108.929 9.69241 28.6041 97.6312 7.36805 19.0653 91.0159 19.172 6.60494 102.188 19.4367 7.20862 90.7854 27.3451 7.96901 106.372 24.6606 7.75634 122.96 28.2737 9.55394 131.378 29.5162 9.60003 140.581 27.9288 8.96688 170.997 32.6002 9.82024 179.275 34.8541 8.32367 163.61 34.6096 10.1434 154.413 36.0434 7.90426 135.328 37.1028 9.48937 125.968 35.7243 7.39812 116.835 42.2808 7.03812 150.482 43.2639 9.04505 158.531 42.6594 7.80891 168.834 43.2751 9.05211 179.907 52.8821 6.83161 184.423 51.1922 8.59778 173.496 49.9296 7.61874 163.845 49.2465 6.88086 136.699 42.3119 6.68226 94.8696 50.1638 7.09421 100.096 34.4679 9.45298 89.7464 13.8793 7.72094 77.246 5.90684 5.85422 74.9513 20.7131 7.17034 71.6136 42.9921 8.521 84.5348 53.4623 6.15358 90.0445 34.5288 8.44073 74.9498 47.4144 6.88712 75.2411 40.5522 8.95774 47.8263 7.37936 12.8723 77.2684 7.41802 20.4471 81.8137 9.04157 43.9406 93.6566 7.21716 50.1146 100.087 13.9499 51.0276 113.131 20.4393 52.5912 118.181 28.2524 49.6587 122.89 51.9218 39.2463 157.036 51.6699 32.1718 160.176 52.2274 31.7029 150.732 53.5038 40.5699 147.546 36.1389 51.769 117.276 16.1232 51.902 103.75 6.68142 45.5606 83.6721 6.63334 31.0806 75.7575 8.07284 21.2206 72.3527 12.8753 7.31872 49.2456 19.991 8.19556 45.0176 27.5962 7.79319 40.2851 40.4672 8.15393 36.2971 50.0743 7.08299 45.0408 53.4446 7.12086 64.0771 51.5366 25.2774 164.444 52.4213 38.0995 137.222 13.774 52.9641 95.7535 7.35646 40.7171 77.0409 7.63892 19.9247 62.9569 6.33734 6.33198 46.3809 13.0566 7.51636 40.0837 21.8275 7.15126 35.4107 7.87138 14.1532 49.9178 11.9579 42.2103 68.9608 20.586 51.2902 90.3914 50.9812 38.6866 127.533 50.3933 29.9183 132.412 51.6968 21.3191 137.435 53.3528 22.0686 146.032 51.5328 16.8215 168.703 51.5358 16.7472 179.008 53.99 14.0539 132.917 53.8005 22.0733 127.695 48.2735 28.7583 122.244 50.7572 37.9781 117.059 52.8371 45.9355 112.896 54.4435 54.0705 99.1391 45.6778 51.901 97.3486 37.8375 51.1306 92.1738 19.7723 54.0456 81.628 7.75715 42.7448 59.2178 7.60574 32.3135 56.8399 28.8265 10.7413 18.3595 51.8347 8.39641 35.9228 53.2568 13.53 123.374 52.0384 20.8316 118.921 53.1389 13.3615 113.364 51.9896 13.7064 104.372 52.5973 20.4328 109.087 52.4982 27.7187 113.632 52.4748 35.9822 108.721 52.833 45.2613 103.807 53.4928 54.1365 89.6488 45.4107 52.2578 86.0809 24.6226 51.3326 74.491 5.52863 52.7955 54.9949 7.52259 42.2578 49.8231 9.34409 33.7233 47.4819 9.61564 22.1831 34.2111 35.8561 10.3754 7.84613 41.3499 10.3574 18.5214 8.98926 17.0433 25.4382 7.68029 42.7189 40.595 6.2224 52.002 45.0312 33.2417 51.9584 69.1722 53.1534 53.7983 80.6315 51.9126 45.3533 94.7161 53.7513 37.5363 100.159 52.5041 27.7088 104.531 52.5933 20.4377 99.9956 52.1672 13.3474 94.1087 52.8501 15.4953 60.5683 50.971 11.8976 52.9321 52.9932 21.6387 89.8918 49.2624 28.4708 96.4304 51.9278 38.9302 81.1257 52.7938 46.3566 86.0536 49.657 46.6877 76.2693 52.5647 34.8672 72.6506 50.8132 19.142 18.538 49.1025 34.9315 63.7799 52.3222 43.9919 68.621 50.2186 43.8712 60.3175 50.8698 43.1717 31.405 51.3969 43.0528 21.4364 52.9069 36.4433 11.5404 49.9372 27.2879 9.734 41.8247 19.754 9.59991 6.3899 16.7406 6.27291 8.09936 20.6155 15.4227 13.0972 52.0831 50.3335 21.1952 52.4328 55.7035 53.3689 53.6784 71.9735 54.3092 52.8516 45.2017 51.6884 52.8298 28.0111 49.9555 52.3509 19.0195 53.0866 49.8072 10.1529 44.8761 39.2412 6.92549 15.2346 21.1597 6.9864 7.61766 25.5523 7.20298 9.89399 29.7757 14.897 8.32403 51.9116 26.1913 10.738 51.9729 37.623 21.0941 50.9778 45.786 36.7052 52.5306 43.8341 39.3027 50.8912 36.2503 32.9352 52.2001 31.1003 42.3043 51.2979 26.6254 35.3598 50.3808 20.0297 25.1159 50.0638 25.8963 31.695 50.8241 9.74554 36.8757 42.3949 6.46545 15.9881 51.3037 21.1453 16.8084 54.1678 30.3074 9.11493 51.7626 12.3492 26.7619 40.0615 8.24507 18.0779 30.901 8.40163 6.83914 35.7343 7.14248 6.90264 44.9099 7.21481 15.8238 40.5295 7.77253 21.5191 35.4368 180.683 18.1246 31.952 159.079 17.2166 41.2462 149.239 18.1784 17.4329 157.978 19.6446 21.7393 127.703 20.9024 40.5598 121.337 43.6899 42.1506 151.318 30.1764 36.6329 138.616 38.1376 31.2281 168.496 42.453 41.7661 138.785 16.6428 17.3275 84.8707 29.975 18.4806 119.76 31.7867 19.5329 134.966 39.359 18.3918 172.396 42.2846 18.7423 162.282 41.1694 18.3122 100.694 42.6784 19.6222 88.4732 31.8788 20.6967 81.0896 42.8399 16.5698 71.5621 41.3119 19.0478 56.7175 18.6856 17.7949 49.657 18.4798 41.3936 109.652 41.9817 30.0497 156.147 40.788 41.0589 118.353 19.1274 43.4973 80.9933 17.1528 25.3658 63.7428 29.1127 39.8002 91.5135 42.9621 41.8298 85.9235 24.3178 27.8442 44.549 19.4975 21.1537 18.0423 38.3261 28.8209 108.417 27.8938 38.6666 67.337 16.5175 41.5388 43.1766 22.7181 33.1366 33.2625 36.5909 30.8978 89.6051 40.8086 29.5351 73.3303 40.1132 39.5427 17.3936 37.9076 39.2543 29.6459 39.1444 42.3529 57.5918 30.0484 41.2925 41.3252 17.435 39.3116 134.57 41.3565 41.955 163.053 19.4445 23.6226 145.254 31.9572 8.54975 190.513 23.0492 36.3117 20.5638 30.2175 38.1335 151.37 21.4841 35.912 56.4261 21.1386 30.7131 77.9248 36.3509 24.6238 22.7916 29.5866 21.0285 161.277 19.6096 49.2329 11.8221 9.77875 51.665 170.847 37.6167 41.0258 73.6296 39.2938 30.8828 54.608 10.8241 51.5587 62.5047 9.80254 52.1877 74.8531 10.2177 16.1894 170.43 26.6549 10.0756 149.034 50.6878 12.2181 10.2005 42.7058 53.0864 76.9121 43.4914 51.5736 11.0345 51.0853 38.5646 169.806 51.3077 50.0789 123.004 52.4421 9.42279 153.061 13.4206 8.8173 12.1593 39.852 49.5599 187.532 8.78822 48.9146 125.1 19.2247 16.3015 72.1337 8.82343 8.25944 94.7351 30.2488 39.7204 108.558 50.4764 15.1595 189.287 51.1423 24.615 67.1773 51.141 30.9209 36.6005 52.0757 48.8088 163.19 18.8929 8.51001 178.772 51.7261 50.5299 134.944 41.8998 17.3461 114.202 46.2492 53.7067 192.836 43.1501 18.1891 131.347 26.6891 51.7935 97.388 45.6111 30.2093 142.335 25.4035 52.1254 38.4109 30.8561 20.2287 64.8023 7.87748 7.09098 23.4945 24.3406 7.55507 157.132 10.3989 30.0738 171.442 24.6896 49.369 133.486 37.3267 51.7829 103.546 24.8867 8.84835 82.1055 9.4285 16.7642 115.906 48.9511 53.1687 38.3245 11.6278 47.8461 159.873 22.9345 41.425 167.618 49.4729 19.9221 44.0449 51.763 10.614 82.4121 49.1949 19.1053 30.6397 49.9485 25.8084 80.1696 9.58233 39.4193 103.297 51.4412 31.159 47.0547 37.744 23.9347 182.088 21.1924 23.7495 174.254 44.7569 7.46329 63.5514 43.6948 42.5098 192.955 21.997 19.8424 97.2753 47.2592 52.1914 64.5461 51.1281 34.3881 89.267 23.3124 50.2684 143.454 51.4924 50.5784 144.636 48.2687 6.5629 110.963 50.8192 30.4329 24.6243 13.0743 29.0836 39.7239 50.7521 8.56877 23.9644 39.3691 49.7276 128.79 8.45562 40.3099 115.551 9.47306 29.672 25.633 43.7375 40.4278 103.282 7.95201 18.9416 141.989 17.4196 9.92401 138.227 48.3789 6.80219 129.227 38.8834 8.8805 143.018 35.2684 39.1911 180.931 52.3949 26.3039 56.2 23.5973 10.7118 7.64183 9.00428 53.2368 87.6278 7.74012 8.22263 84.7952 34.4041 33.1307 126.024 20.3522 50.1595 66.1434 19.2034 26.7298 110.826 37.8211 24.6893 39.246 9.62161 24.3775 51.528 33.0926 51.6382 158.843 7.73445 9.49489 34.0157 52.2118 39.9078 51.8548 9.15775 32.4008 86.3764 31.9677 51.1284 174.913 25.2477 51.0618 109.637 31.9099 51.395 82.7479 9.22538 16.5172 42.1269 33.6107 10.1275 29.2667 16.6112 7.92671 27.6733 52.7835 49.7684 153.204 28.9271 21.503 9.25556 13.2593 11.8451 190.043 18.0188 10.6117 59.2241 36.2371 54.783 194.095 8.66739 51.5925 138.398 48.6583 51.9205 52.4152 53.2686 14.9736 71.9222 8.31506 23.9724 160.31 7.85882 7.82334 56.7469 6.60018 31.0068 107.169 34.5061 30.2732 8.35459 12.9378 42.9117 30.8539 36.3999 8.08697 59.7854 18.6713 40.2981 97.5049 7.71198 19.4958 127.367 47.8563 42.9137 42.8553 49.7275 28.2991 177.505 7.98727 18.9342 102.629 50.7204 22.3212 155.235 31.3615 7.6581 97.9293 48.4049 7.3621 120.083 29.8633 14.3256 51.3787 8.4902 32.1362 66.5467 45.8972 5.39591 6.03485 10.9803 8.96871 130.06 48.6535 51.2036 179.889 8.61196 41.1984 18.2537 38.9316 19.3093 147.607 20.815 18.3289 34.6505 51.512 11.3465 143.169 33.5604 50.3648 55.8584 28.0315 7.3668 62.8493 9.98517 8.89411 106.799 8.03907 7.91492 65.7666 40.0485 7.47199 106.437 46.7627 51.7762 110.76 $EndNodes $Elements 31 6497 1 6497 1 17 1 7 1 3 30 2 30 31 3 31 32 4 32 33 5 33 34 6 34 35 7 35 4 1 18 1 7 8 5 63 9 63 64 10 64 65 11 65 66 12 66 67 13 67 68 14 68 3 1 19 1 7 15 7 96 16 96 97 17 97 98 18 98 99 19 99 100 20 100 101 21 101 5 1 20 1 7 22 4 129 23 129 130 24 130 131 25 131 132 26 132 133 27 133 134 28 134 7 1 1 1 7 29 2 36 30 36 37 31 37 38 32 38 39 33 39 40 34 40 41 35 41 1 1 2 1 22 36 1 42 37 42 43 38 43 44 39 44 45 40 45 46 41 46 47 42 47 48 43 48 49 44 49 50 45 50 51 46 51 52 47 52 53 48 53 54 49 54 55 50 55 56 51 56 57 52 57 58 53 58 59 54 59 60 55 60 61 56 61 62 57 62 3 1 3 1 7 58 3 30 59 30 31 60 31 32 61 32 33 62 33 34 63 34 35 64 35 4 1 4 1 22 65 4 9 66 9 10 67 10 11 68 11 12 69 12 13 70 13 14 71 14 15 72 15 16 73 16 17 74 17 18 75 18 19 76 19 20 77 20 21 78 21 22 79 22 23 80 23 24 81 24 25 82 25 26 83 26 27 84 27 28 85 28 29 86 29 2 1 5 1 7 87 1 90 88 90 91 89 91 92 90 92 93 91 93 94 92 94 95 93 95 6 1 6 1 22 94 6 69 95 69 70 96 70 71 97 71 72 98 72 73 99 73 74 100 74 75 101 75 76 102 76 77 103 77 78 104 78 79 105 79 80 106 80 81 107 81 82 108 82 83 109 83 84 110 84 85 111 85 86 112 86 87 113 87 88 114 88 89 115 89 5 1 7 1 7 116 5 63 117 63 64 118 64 65 119 65 66 120 66 67 121 67 68 122 68 3 1 8 1 22 123 1 42 124 42 43 125 43 44 126 44 45 127 45 46 128 46 47 129 47 48 130 48 49 131 49 50 132 50 51 133 51 52 134 52 53 135 53 54 136 54 55 137 55 56 138 56 57 139 57 58 140 58 59 141 59 60 142 60 61 143 61 62 144 62 3 1 9 1 7 145 6 102 146 102 103 147 103 104 148 104 105 149 105 106 150 106 107 151 107 8 1 10 1 22 152 8 108 153 108 109 154 109 110 155 110 111 156 111 112 157 112 113 158 113 114 159 114 115 160 115 116 161 116 117 162 117 118 163 118 119 164 119 120 165 120 121 166 121 122 167 122 123 168 123 124 169 124 125 170 125 126 171 126 127 172 127 128 173 128 7 1 11 1 7 174 7 96 175 96 97 176 97 98 177 98 99 178 99 100 179 100 101 180 101 5 1 12 1 22 181 6 69 182 69 70 183 70 71 184 71 72 185 72 73 186 73 74 187 74 75 188 75 76 189 76 77 190 77 78 191 78 79 192 79 80 193 80 81 194 81 82 195 82 83 196 83 84 197 84 85 198 85 86 199 86 87 200 87 88 201 88 89 202 89 5 1 13 1 7 203 8 135 204 135 136 205 136 137 206 137 138 207 138 139 208 139 140 209 140 2 1 14 1 22 210 4 9 211 9 10 212 10 11 213 11 12 214 12 13 215 13 14 216 14 15 217 15 16 218 16 17 219 17 18 220 18 19 221 19 20 222 20 21 223 21 22 224 22 23 225 23 24 226 24 25 227 25 26 228 26 27 229 27 28 230 28 29 231 29 2 1 15 1 7 232 4 129 233 129 130 234 130 131 235 131 132 236 132 133 237 133 134 238 134 7 1 16 1 22 239 8 108 240 108 109 241 109 110 242 110 111 243 111 112 244 112 113 245 113 114 246 114 115 247 115 116 248 116 117 249 117 118 250 118 119 251 119 120 252 120 121 253 121 122 254 122 123 255 123 124 256 124 125 257 125 126 258 126 127 259 127 128 260 128 7 1 21 1 7 261 2 36 262 36 37 263 37 38 264 38 39 265 39 40 266 40 41 267 41 1 1 22 1 7 268 8 135 269 135 136 270 136 137 271 137 138 272 138 139 273 139 140 274 140 2 1 23 1 7 275 6 102 276 102 103 277 103 104 278 104 105 279 105 106 280 106 107 281 107 8 1 24 1 7 282 1 90 283 90 91 284 91 92 285 92 93 286 93 94 287 94 95 288 95 6 2 29 2 106 289 68 733 3 290 134 736 7 291 734 101 100 292 721 100 99 293 724 133 132 294 63 5 734 295 750 96 736 296 722 99 98 297 733 68 67 298 738 737 721 299 736 134 133 300 30 3 733 301 742 725 726 302 747 731 748 303 751 31 30 304 35 735 4 305 728 33 32 306 101 734 5 307 723 98 97 308 725 132 131 309 727 33 728 310 744 727 728 311 725 131 726 312 730 67 66 313 751 729 31 314 726 131 130 315 730 733 67 316 735 35 34 317 744 743 727 318 734 100 721 319 749 64 63 320 727 34 33 321 742 726 743 322 732 65 64 323 746 733 730 324 729 32 31 325 729 728 32 326 129 4 735 327 746 730 747 328 722 98 723 329 752 130 129 330 752 726 130 331 722 721 99 332 751 30 733 333 96 7 736 334 736 133 724 335 759 755 748 336 747 730 731 337 749 732 64 338 731 65 732 339 750 97 96 340 750 723 97 341 731 730 66 342 731 66 65 343 738 721 722 344 748 731 732 345 737 734 721 346 757 743 744 347 760 746 747 348 745 729 746 349 724 132 725 350 741 724 725 351 735 34 727 352 739 738 722 353 752 129 735 354 745 728 729 355 741 725 742 356 741 740 724 357 759 748 737 358 749 63 734 359 737 748 732 360 758 739 740 361 739 722 723 362 743 735 727 363 749 737 732 364 749 734 737 365 740 723 750 366 739 723 740 367 740 736 724 368 740 750 736 369 745 744 728 370 759 737 738 371 753 738 739 372 756 755 753 373 756 753 754 374 755 747 748 375 752 735 743 376 752 743 726 377 751 733 746 378 751 746 729 379 757 742 743 380 754 741 742 381 758 740 741 382 757 744 756 383 760 756 745 384 760 745 746 385 757 754 742 386 757 756 754 387 758 753 739 388 758 754 753 389 759 738 753 390 759 753 755 391 760 747 755 392 756 744 745 393 760 755 756 394 758 741 754 2 25 2 346 395 172 50 51 396 146 12 13 397 149 15 16 398 158 25 159 399 153 19 20 400 229 189 191 401 172 51 173 402 30 283 3 403 185 61 62 404 284 34 35 405 9 284 4 406 145 144 11 407 184 9 10 408 147 13 14 409 141 31 32 410 181 59 60 411 144 10 11 412 177 56 178 413 148 15 149 414 154 153 20 415 278 241 242 416 168 167 46 417 36 282 2 418 186 28 29 419 163 39 164 420 207 161 186 421 282 37 162 422 165 43 44 423 166 165 44 424 42 285 1 425 162 37 38 426 163 162 38 427 166 44 45 428 164 39 40 429 264 207 208 430 282 162 207 431 159 25 26 432 167 45 46 433 157 23 24 434 169 47 48 435 200 199 154 436 168 46 47 437 201 155 156 438 173 51 52 439 151 17 18 440 156 23 157 441 150 149 16 442 181 180 59 443 192 191 146 444 178 56 57 445 146 13 147 446 196 150 151 447 196 151 197 448 180 58 59 449 185 182 61 450 182 60 61 451 210 183 165 452 163 38 39 453 282 207 186 454 282 36 37 455 183 43 165 456 285 210 164 457 283 228 185 458 283 30 31 459 183 42 43 460 285 183 210 461 260 226 227 462 192 146 147 463 227 181 182 464 188 142 143 465 285 40 41 466 285 164 40 467 197 151 152 468 222 177 223 469 170 48 49 470 156 22 23 471 184 10 144 472 284 190 143 473 174 52 53 474 174 173 52 475 209 163 164 476 166 45 167 477 283 31 141 478 191 145 146 479 214 169 215 480 216 215 170 481 237 198 199 482 155 154 21 483 152 18 19 484 152 151 18 485 176 54 55 486 175 174 53 487 153 152 19 488 154 20 21 489 143 33 34 490 284 143 34 491 179 178 57 492 181 60 182 493 158 24 25 494 158 157 24 495 211 165 166 496 212 211 166 497 227 182 228 498 228 182 185 499 187 141 142 500 187 228 141 501 236 197 198 502 223 177 178 503 213 167 168 504 204 203 158 505 150 16 17 506 150 17 151 507 161 27 28 508 161 28 186 509 169 48 170 510 169 168 47 511 148 14 15 512 148 147 14 513 219 173 174 514 253 219 220 515 225 179 180 516 231 193 232 517 283 141 228 518 142 33 143 519 216 170 171 520 237 236 198 521 177 55 56 522 177 176 55 523 179 57 58 524 179 58 180 525 160 159 26 526 211 210 165 527 155 21 22 528 155 22 156 529 171 50 172 530 201 200 155 531 142 32 33 532 142 141 32 533 171 49 50 534 171 170 49 535 145 11 12 536 145 12 146 537 175 53 54 538 175 54 176 539 160 26 27 540 160 27 161 541 215 169 170 542 204 158 159 543 210 209 164 544 205 159 160 545 221 175 176 546 196 195 150 547 200 154 155 548 218 173 219 549 190 188 143 550 284 184 190 551 203 157 158 552 246 213 247 553 256 222 223 554 257 256 223 555 265 188 190 556 226 225 180 557 214 168 169 558 214 213 168 559 217 216 171 560 217 171 172 561 208 162 163 562 208 207 162 563 220 219 174 564 267 235 236 565 266 209 210 566 212 166 167 567 199 153 154 568 238 199 200 569 252 218 219 570 249 215 216 571 232 193 194 572 224 223 178 573 252 219 253 574 198 197 152 575 218 172 173 576 218 217 172 577 198 152 153 578 198 153 199 579 263 228 187 580 187 142 188 581 195 149 150 582 269 232 233 583 189 144 145 584 189 145 191 585 263 227 228 586 261 187 188 587 205 204 159 588 212 167 213 589 193 147 148 590 193 192 147 591 208 163 209 592 206 161 207 593 226 180 181 594 226 181 227 595 272 233 234 596 194 193 148 597 247 213 214 598 242 203 204 599 245 211 212 600 276 245 246 601 276 244 262 602 202 157 203 603 240 201 202 604 248 215 249 605 265 261 188 606 263 187 261 607 202 156 157 608 202 201 156 609 206 160 161 610 206 205 160 611 222 176 177 612 222 221 176 613 255 221 222 614 234 195 196 615 194 148 149 616 194 149 195 617 262 209 266 618 264 206 207 619 190 144 189 620 278 247 248 621 262 244 264 622 220 174 175 623 220 175 221 624 224 178 179 625 224 179 225 626 268 252 273 627 259 225 226 628 235 197 236 629 255 222 256 630 190 184 144 631 251 218 252 632 250 217 251 633 244 205 206 634 244 206 264 635 241 202 203 636 254 220 221 637 274 248 249 638 273 236 237 639 275 239 240 640 267 253 254 641 266 211 245 642 266 210 211 643 229 265 189 644 229 261 265 645 231 192 193 646 277 257 258 647 262 208 209 648 262 264 208 649 272 255 256 650 233 195 234 651 265 190 189 652 259 226 260 653 269 272 256 654 230 229 191 655 251 217 218 656 268 237 238 657 248 214 215 658 248 247 214 659 235 196 197 660 235 234 196 661 258 224 225 662 269 256 257 663 258 225 259 664 258 257 224 665 263 261 260 666 263 260 227 667 250 216 217 668 250 249 216 669 230 191 192 670 230 192 231 671 257 223 224 672 229 279 261 673 246 212 213 674 275 271 239 675 240 202 241 676 275 249 250 677 279 260 261 678 254 221 255 679 254 253 220 680 243 204 205 681 242 241 203 682 270 254 255 683 269 233 272 684 262 266 245 685 262 245 276 686 243 242 204 687 239 200 201 688 243 205 244 689 279 259 260 690 246 245 212 691 276 243 244 692 281 258 259 693 239 201 240 694 268 251 252 695 233 194 195 696 233 232 194 697 238 200 239 698 238 237 199 699 271 250 251 700 268 273 237 701 278 274 241 702 280 246 247 703 280 242 243 704 270 234 235 705 279 229 230 706 272 270 255 707 275 250 271 708 271 238 239 709 267 273 253 710 272 234 270 711 281 230 231 712 278 248 274 713 277 231 232 714 274 240 241 715 281 231 277 716 281 277 258 717 267 236 273 718 273 252 253 719 269 257 277 720 269 277 232 721 278 242 280 722 278 280 247 723 268 238 271 724 268 271 251 725 275 240 274 726 275 274 249 727 276 246 280 728 276 280 243 729 267 270 235 730 279 230 281 731 279 281 259 732 267 254 270 733 29 2 282 734 282 186 29 735 62 3 283 736 283 185 62 737 284 9 184 738 41 1 285 739 285 42 183 740 35 4 284 2 26 2 346 741 317 77 78 742 291 59 58 743 322 83 323 744 327 88 331 745 376 337 338 746 292 58 57 747 303 46 304 748 298 52 51 749 294 56 55 750 325 85 86 751 317 78 318 752 63 427 5 753 427 373 331 754 288 66 67 755 62 428 3 756 290 289 60 757 330 62 61 758 331 88 89 759 289 61 60 760 299 298 51 761 420 385 386 762 313 312 73 763 90 430 1 764 430 352 329 765 352 306 329 766 308 92 93 767 310 70 71 768 69 429 6 769 308 307 92 770 307 91 92 771 311 71 72 772 311 310 71 773 309 93 94 774 411 352 353 775 430 90 91 776 304 46 45 777 314 74 75 778 345 344 299 779 329 43 42 780 313 73 74 781 346 300 301 782 318 78 79 783 296 54 53 784 301 48 302 785 295 294 55 786 326 325 86 787 337 336 291 788 312 72 73 789 302 48 47 790 323 83 84 791 291 58 292 792 341 295 296 793 293 56 294 794 427 63 64 795 427 64 286 796 327 87 88 797 308 93 309 798 326 86 87 799 430 91 307 800 328 70 310 801 373 327 331 802 341 296 342 803 429 355 309 804 286 64 65 805 328 69 70 806 337 291 292 807 372 326 327 808 372 327 373 809 429 94 95 810 429 309 94 811 342 296 297 812 367 322 368 813 315 75 76 814 301 49 48 815 428 335 288 816 333 287 288 817 429 328 355 818 319 318 79 819 354 308 309 820 311 72 312 821 355 328 310 822 430 307 352 823 359 314 360 824 422 376 377 825 361 360 315 826 382 343 344 827 300 299 50 828 297 53 52 829 297 296 53 830 319 79 80 831 298 297 52 832 299 51 50 833 330 61 289 834 336 290 291 835 321 81 82 836 324 323 84 837 326 87 327 838 303 47 46 839 303 302 47 840 356 310 311 841 320 319 80 842 357 356 311 843 428 288 67 844 332 373 286 845 332 286 287 846 381 342 343 847 368 322 323 848 358 312 313 849 428 67 68 850 295 55 54 851 349 348 303 852 295 54 296 853 306 44 43 854 306 43 329 855 314 75 315 856 314 313 74 857 293 57 56 858 293 292 57 859 364 318 319 860 398 364 365 861 370 324 325 862 376 338 377 863 427 286 373 864 287 66 288 865 361 315 316 866 382 381 343 867 322 82 83 868 322 321 82 869 324 85 325 870 305 304 45 871 324 84 85 872 300 50 49 873 300 49 301 874 316 77 317 875 346 345 300 876 287 65 66 877 287 286 65 878 356 355 310 879 316 315 76 880 290 60 59 881 290 59 291 882 320 80 81 883 316 76 77 884 320 81 321 885 305 45 44 886 305 44 306 887 360 314 315 888 349 303 304 889 355 354 309 890 341 340 295 891 345 299 300 892 363 318 364 893 428 330 335 894 350 304 305 895 335 333 288 896 348 302 303 897 366 320 321 898 402 401 368 899 408 333 335 900 371 370 325 901 359 313 314 902 359 358 313 903 389 350 351 904 362 316 317 905 353 307 308 906 353 352 307 907 365 364 319 908 413 380 381 909 401 367 368 910 410 354 355 911 357 311 312 912 344 298 299 913 383 344 345 914 397 363 364 915 394 360 361 916 377 338 339 917 369 368 323 918 397 364 398 919 343 342 297 920 363 317 318 921 363 362 317 922 343 297 298 923 343 298 344 924 409 372 373 925 332 287 333 926 340 294 295 927 412 377 378 928 334 289 290 929 334 290 336 930 409 373 332 931 406 332 333 932 350 349 304 933 357 312 358 934 362 361 316 935 338 337 292 936 351 306 352 937 371 325 326 938 371 326 372 939 414 399 400 940 339 338 293 941 392 358 359 942 387 348 349 943 410 356 390 944 391 358 392 945 419 389 407 946 385 346 347 947 393 360 394 948 408 406 333 949 338 292 293 950 347 301 302 951 404 371 405 952 347 346 301 953 351 305 306 954 347 302 348 955 367 321 322 956 351 350 305 957 353 308 354 958 367 366 321 959 379 340 341 960 339 293 294 961 400 366 367 962 407 411 353 963 335 330 289 964 335 289 334 965 339 294 340 966 390 356 357 967 410 355 356 968 407 353 354 969 365 319 320 970 365 320 366 971 369 323 324 972 369 324 370 973 413 381 418 974 404 370 371 975 399 365 366 976 400 367 401 977 413 398 399 978 395 362 396 979 380 342 381 980 396 363 397 981 408 335 334 982 406 409 332 983 418 381 382 984 420 393 394 985 374 334 336 986 386 347 348 987 421 384 385 988 405 409 406 989 407 389 411 990 423 386 387 991 411 351 352 992 407 354 410 993 405 371 372 994 389 351 411 995 419 390 391 996 405 372 409 997 378 340 379 998 417 378 379 999 412 401 402 1000 426 375 376 1001 374 424 406 1002 402 368 369 1003 393 359 360 1004 393 392 359 1005 396 362 363 1006 380 341 342 1007 380 379 341 1008 403 369 370 1009 418 397 398 1010 403 370 404 1011 403 402 369 1012 375 374 336 1013 374 406 408 1014 374 408 334 1015 395 361 362 1016 375 336 337 1017 375 337 376 1018 391 357 358 1019 395 394 361 1020 384 345 346 1021 385 347 386 1022 391 390 357 1023 421 394 395 1024 424 405 406 1025 399 366 400 1026 399 398 365 1027 388 349 350 1028 387 386 348 1029 414 379 380 1030 413 418 398 1031 424 404 405 1032 407 410 390 1033 407 390 419 1034 388 387 349 1035 388 350 389 1036 425 391 392 1037 424 374 375 1038 426 403 404 1039 384 346 385 1040 419 388 389 1041 416 382 383 1042 378 339 340 1043 378 377 339 1044 415 383 384 1045 383 345 384 1046 421 415 384 1047 383 382 344 1048 421 395 415 1049 425 387 388 1050 423 392 393 1051 416 396 397 1052 417 400 401 1053 412 378 417 1054 416 383 415 1055 415 395 396 1056 412 417 401 1057 422 402 403 1058 419 391 425 1059 419 425 388 1060 416 415 396 1061 426 376 422 1062 426 422 403 1063 418 416 397 1064 414 400 417 1065 418 382 416 1066 414 417 379 1067 423 387 425 1068 423 425 392 1069 413 399 414 1070 413 414 380 1071 420 386 423 1072 420 423 393 1073 421 420 394 1074 421 385 420 1075 424 375 426 1076 424 426 404 1077 89 5 427 1078 427 331 89 1079 68 3 428 1080 412 402 422 1081 428 62 330 1082 412 422 377 1083 429 69 328 1084 42 1 430 1085 430 329 42 1086 95 6 429 2 27 2 346 1087 462 116 117 1088 476 89 88 1089 434 476 88 1090 467 122 468 1091 471 125 126 1092 550 516 517 1093 572 96 97 1094 448 73 449 1095 462 117 463 1096 439 83 82 1097 443 79 78 1098 572 518 475 1099 572 97 431 1100 89 573 5 1101 475 127 128 1102 472 126 127 1103 444 443 78 1104 434 88 87 1105 565 530 531 1106 458 457 112 1107 102 575 6 1108 474 70 69 1109 96 572 7 1110 573 100 101 1111 575 497 474 1112 497 451 474 1113 453 104 105 1114 455 109 110 1115 456 455 110 1116 108 574 8 1117 453 452 104 1118 452 103 104 1119 456 110 111 1120 556 497 498 1121 575 102 103 1122 454 105 106 1123 457 111 112 1124 447 75 74 1125 459 113 114 1126 490 489 444 1127 458 112 113 1128 441 81 80 1129 491 445 446 1130 446 75 447 1131 440 439 82 1132 471 470 125 1133 482 481 436 1134 468 122 123 1135 436 85 437 1136 486 440 441 1137 435 434 87 1138 573 479 433 1139 475 472 127 1140 481 435 436 1141 575 103 452 1142 463 117 118 1143 453 105 454 1144 486 441 487 1145 470 124 125 1146 449 73 72 1147 473 109 455 1148 574 500 454 1149 437 85 84 1150 438 83 439 1151 574 473 500 1152 482 436 437 1153 517 471 472 1154 473 108 109 1155 516 515 470 1156 574 106 107 1157 574 454 106 1158 487 441 442 1159 512 467 513 1160 436 86 85 1161 446 76 75 1162 431 97 98 1163 464 118 119 1164 464 463 118 1165 499 453 454 1166 456 111 457 1167 478 432 433 1168 575 452 497 1169 504 459 505 1170 506 505 460 1171 527 488 489 1172 445 444 77 1173 442 80 79 1174 442 441 80 1175 466 120 121 1176 460 114 115 1177 443 442 79 1178 465 464 119 1179 444 78 77 1180 433 99 100 1181 573 433 100 1182 469 468 123 1183 448 74 73 1184 448 447 74 1185 501 455 456 1186 471 126 472 1187 502 501 456 1188 517 472 518 1189 518 472 475 1190 500 473 455 1191 477 518 431 1192 513 467 468 1193 526 487 488 1194 503 457 458 1195 477 431 432 1196 494 493 448 1197 440 82 81 1198 440 81 441 1199 451 71 70 1200 451 70 474 1201 459 114 460 1202 459 458 113 1203 438 84 83 1204 438 437 84 1205 509 463 464 1206 543 509 510 1207 521 483 522 1208 572 431 518 1209 432 99 433 1210 506 460 461 1211 467 121 122 1212 467 466 121 1213 469 123 124 1214 469 124 470 1215 515 469 470 1216 527 526 488 1217 450 449 72 1218 445 77 76 1219 445 76 446 1220 461 116 462 1221 491 490 445 1222 432 431 98 1223 461 115 116 1224 501 500 455 1225 432 98 99 1226 435 87 86 1227 435 86 436 1228 461 460 115 1229 465 120 466 1230 450 72 71 1231 450 71 451 1232 465 119 120 1233 494 448 449 1234 500 499 454 1235 505 459 460 1236 511 465 466 1237 486 485 440 1238 490 444 445 1239 508 463 509 1240 479 476 434 1241 573 476 479 1242 495 449 450 1243 493 447 448 1244 534 495 496 1245 546 512 513 1246 547 546 513 1247 479 478 433 1248 554 478 479 1249 504 503 458 1250 507 506 461 1251 504 458 459 1252 507 461 462 1253 498 452 453 1254 498 497 452 1255 510 509 464 1256 558 525 526 1257 555 499 500 1258 502 456 457 1259 489 443 444 1260 488 443 489 1261 542 508 509 1262 539 505 506 1263 522 483 484 1264 514 513 468 1265 488 487 442 1266 508 462 463 1267 508 507 462 1268 542 509 543 1269 488 442 443 1270 528 489 490 1271 519 551 554 1272 477 432 478 1273 485 439 440 1274 557 522 523 1275 480 434 435 1276 554 479 480 1277 495 494 449 1278 502 457 503 1279 483 437 438 1280 483 482 437 1281 498 453 499 1282 496 451 497 1283 480 479 434 1284 480 435 481 1285 516 471 517 1286 559 544 545 1287 484 483 438 1288 532 493 494 1289 555 501 535 1290 536 503 537 1291 564 534 552 1292 492 447 493 1293 530 491 492 1294 538 505 539 1295 551 478 554 1296 553 517 518 1297 492 446 447 1298 492 491 446 1299 496 450 451 1300 496 495 450 1301 512 466 467 1302 512 511 466 1303 545 511 512 1304 537 503 504 1305 524 485 486 1306 484 438 439 1307 516 470 471 1308 484 439 485 1309 535 501 502 1310 552 556 498 1311 553 477 551 1312 551 477 478 1313 555 500 501 1314 552 498 499 1315 510 464 465 1316 510 465 511 1317 514 468 469 1318 514 469 515 1319 558 526 563 1320 549 515 516 1321 525 487 526 1322 545 512 546 1323 544 510 511 1324 558 543 544 1325 541 508 542 1326 540 507 541 1327 553 518 477 1328 519 554 480 1329 531 492 493 1330 565 538 539 1331 563 542 543 1332 566 529 530 1333 567 547 548 1334 519 480 481 1335 552 534 556 1336 568 531 532 1337 556 496 497 1338 552 499 555 1339 521 482 483 1340 549 516 550 1341 562 523 524 1342 534 496 556 1343 523 485 524 1344 547 513 514 1345 557 546 547 1346 557 562 546 1347 520 519 481 1348 541 507 508 1349 563 526 527 1350 538 504 505 1351 564 535 536 1352 538 537 504 1353 525 486 487 1354 525 524 486 1355 548 514 515 1356 519 569 551 1357 548 515 549 1358 548 547 514 1359 553 551 550 1360 553 550 517 1361 540 539 506 1362 520 481 482 1363 540 506 507 1364 520 482 521 1365 566 560 529 1366 536 502 503 1367 529 490 491 1368 530 492 531 1369 536 535 502 1370 566 539 540 1371 569 550 551 1372 544 511 545 1373 544 543 510 1374 533 494 495 1375 569 549 550 1376 559 524 525 1377 558 563 543 1378 552 555 535 1379 552 535 564 1380 533 532 494 1381 533 495 534 1382 570 536 537 1383 564 533 534 1384 569 519 520 1385 529 491 530 1386 561 527 528 1387 523 484 485 1388 523 522 484 1389 528 490 529 1390 528 527 489 1391 560 528 529 1392 566 540 560 1393 568 537 538 1394 570 532 533 1395 560 540 541 1396 561 541 542 1397 562 545 546 1398 557 523 562 1399 561 528 560 1400 561 560 541 1401 567 521 522 1402 571 520 521 1403 564 536 570 1404 564 570 533 1405 571 521 567 1406 571 567 548 1407 563 527 561 1408 571 548 549 1409 559 545 562 1410 559 562 524 1411 568 532 570 1412 568 570 537 1413 558 544 559 1414 563 561 542 1415 558 559 525 1416 565 531 568 1417 565 568 538 1418 557 547 567 1419 557 567 522 1420 569 520 571 1421 569 571 549 1422 128 7 572 1423 572 475 128 1424 101 5 573 1425 573 89 476 1426 107 8 574 1427 566 530 565 1428 574 108 473 1429 69 6 575 1430 575 474 69 1431 566 565 539 1432 532 531 493 2 28 2 346 1433 607 21 20 1434 579 127 126 1435 581 125 124 1436 612 15 613 1437 616 12 11 1438 666 627 628 1439 583 122 584 1440 593 112 594 1441 607 20 608 1442 584 122 121 1443 588 118 117 1444 129 719 4 1445 619 10 9 1446 128 717 7 1447 580 579 126 1448 620 128 127 1449 582 124 123 1450 663 617 619 1451 589 588 117 1452 713 676 677 1453 603 602 25 1454 135 720 8 1455 618 109 108 1456 720 597 642 1457 598 137 138 1458 597 136 137 1459 599 138 139 1460 601 600 27 1461 29 718 2 1462 578 132 133 1463 645 621 600 1464 598 597 137 1465 718 599 139 1466 621 29 28 1467 701 642 643 1468 642 596 618 1469 594 112 111 1470 602 26 25 1471 592 114 113 1472 635 634 589 1473 603 25 24 1474 636 590 591 1475 608 20 19 1476 586 120 119 1477 591 114 592 1478 585 584 121 1479 616 615 12 1480 627 626 581 1481 613 15 14 1482 581 124 582 1483 631 585 586 1484 631 586 632 1485 615 13 12 1486 619 617 10 1487 617 11 10 1488 598 138 599 1489 604 24 23 1490 720 136 597 1491 718 139 140 1492 718 645 599 1493 601 27 26 1494 718 621 645 1495 719 129 130 1496 600 28 27 1497 719 663 619 1498 712 692 693 1499 662 616 617 1500 627 581 582 1501 662 617 663 1502 720 642 618 1503 600 621 28 1504 720 135 136 1505 632 586 587 1506 605 23 22 1507 591 115 114 1508 717 625 578 1509 576 130 131 1510 609 19 18 1511 609 608 19 1512 644 598 599 1513 601 26 602 1514 719 130 576 1515 657 612 658 1516 649 604 650 1517 623 577 578 1518 651 650 605 1519 672 633 634 1520 590 589 116 1521 587 119 118 1522 587 586 119 1523 611 17 16 1524 610 609 18 1525 588 587 118 1526 589 117 116 1527 620 127 579 1528 626 580 581 1529 614 613 14 1530 593 113 112 1531 593 592 113 1532 646 600 601 1533 647 646 601 1534 717 133 134 1535 717 578 133 1536 622 663 576 1537 671 632 633 1538 658 612 613 1539 648 602 603 1540 639 638 593 1541 585 121 120 1542 585 120 586 1543 596 110 109 1544 596 109 618 1545 604 23 605 1546 604 603 24 1547 583 123 122 1548 583 582 123 1549 654 608 609 1550 688 654 655 1551 660 614 615 1552 666 628 667 1553 719 576 663 1554 577 132 578 1555 651 605 606 1556 672 671 633 1557 612 16 15 1558 612 611 16 1559 614 14 13 1560 614 13 615 1561 595 594 111 1562 622 576 577 1563 646 645 600 1564 590 116 115 1565 616 11 617 1566 606 21 607 1567 577 131 132 1568 590 115 591 1569 577 576 131 1570 606 22 21 1571 606 605 22 1572 580 126 125 1573 580 125 581 1574 636 635 590 1575 610 17 611 1576 595 111 110 1577 595 110 596 1578 650 604 605 1579 639 593 594 1580 645 644 599 1581 610 18 17 1582 656 610 611 1583 640 594 595 1584 631 630 585 1585 635 589 590 1586 653 608 654 1587 717 620 625 1588 625 623 578 1589 638 592 593 1590 679 640 641 1591 691 657 658 1592 692 691 658 1593 698 623 625 1594 661 660 615 1595 649 648 603 1596 652 606 607 1597 643 597 598 1598 643 642 597 1599 655 654 609 1600 702 670 671 1601 652 651 606 1602 680 646 647 1603 647 601 602 1604 634 588 589 1605 633 588 634 1606 687 653 654 1607 684 650 651 1608 667 628 629 1609 659 658 613 1610 633 587 588 1611 653 607 608 1612 653 652 607 1613 673 634 635 1614 687 654 688 1615 700 663 622 1616 622 577 623 1617 630 584 585 1618 704 667 668 1619 624 579 580 1620 624 580 626 1621 700 662 663 1622 633 632 587 1623 649 603 604 1624 696 622 623 1625 640 639 594 1626 647 602 648 1627 628 582 583 1628 628 627 582 1629 643 598 644 1630 641 596 642 1631 661 615 616 1632 661 616 662 1633 707 668 669 1634 629 628 583 1635 682 648 649 1636 677 638 639 1637 697 644 699 1638 681 648 682 1639 711 679 697 1640 637 592 638 1641 675 636 637 1642 683 650 684 1643 698 696 623 1644 700 622 696 1645 637 591 592 1646 637 636 591 1647 641 595 596 1648 641 640 595 1649 657 611 612 1650 657 656 611 1651 669 630 631 1652 629 583 584 1653 690 656 657 1654 629 584 630 1655 697 701 643 1656 625 620 579 1657 625 579 624 1658 697 643 644 1659 701 641 642 1660 655 609 610 1661 655 610 656 1662 659 613 614 1663 659 614 660 1664 702 671 708 1665 689 655 656 1666 694 660 661 1667 680 699 646 1668 702 688 689 1669 670 632 671 1670 690 657 691 1671 685 652 686 1672 699 644 645 1673 699 645 646 1674 676 637 638 1675 709 683 684 1676 708 687 688 1677 710 674 675 1678 698 625 624 1679 664 624 626 1680 697 679 701 1681 713 682 683 1682 694 661 695 1683 695 700 696 1684 695 661 662 1685 695 662 700 1686 679 641 701 1687 711 680 681 1688 707 690 691 1689 668 630 669 1690 692 658 659 1691 704 691 692 1692 704 707 691 1693 686 653 687 1694 664 714 696 1695 683 649 650 1696 683 682 649 1697 670 631 632 1698 686 652 653 1699 703 672 673 1700 670 669 631 1701 693 659 660 1702 664 698 624 1703 693 660 694 1704 693 692 659 1705 665 664 626 1706 685 651 652 1707 685 684 651 1708 665 626 627 1709 664 696 698 1710 681 680 647 1711 710 706 674 1712 665 627 666 1713 681 647 648 1714 675 637 676 1715 710 684 685 1716 714 694 695 1717 714 695 696 1718 689 688 655 1719 678 639 640 1720 689 656 690 1721 705 689 690 1722 704 668 707 1723 697 699 680 1724 697 680 711 1725 678 677 639 1726 674 635 636 1727 677 676 638 1728 678 640 679 1729 715 681 682 1730 711 678 679 1731 714 664 665 1732 716 693 694 1733 674 636 675 1734 703 686 687 1735 668 629 630 1736 673 635 674 1737 668 667 629 1738 706 685 686 1739 703 708 672 1740 713 709 676 1741 715 677 678 1742 705 669 670 1743 673 672 634 1744 707 669 705 1745 707 705 690 1746 702 708 688 1747 710 685 706 1748 716 665 666 1749 713 683 709 1750 709 675 676 1751 716 666 712 1752 716 712 693 1753 708 671 672 1754 703 687 708 1755 704 692 712 1756 704 712 667 1757 713 677 715 1758 713 715 682 1759 703 673 706 1760 703 706 686 1761 710 675 709 1762 710 709 684 1763 712 666 667 1764 711 681 715 1765 702 689 705 1766 702 705 670 1767 714 665 716 1768 714 716 694 1769 706 673 674 1770 711 715 678 1771 134 7 717 1772 718 29 621 1773 9 4 719 1774 719 619 9 1775 108 8 720 1776 720 618 108 1777 717 128 620 1778 140 2 718 2 30 2 106 1779 140 775 2 1780 107 776 8 1781 95 774 6 1782 776 107 106 1783 761 106 105 1784 785 769 786 1785 135 8 776 1786 765 92 766 1787 765 93 92 1788 775 769 37 1789 41 773 1 1790 766 92 91 1791 778 777 761 1792 774 95 94 1793 36 2 775 1794 768 39 38 1795 791 766 91 1796 762 105 104 1797 791 91 90 1798 90 1 773 1799 763 104 103 1800 782 765 766 1801 773 41 40 1802 789 140 139 1803 764 94 93 1804 764 93 765 1805 784 783 767 1806 769 768 38 1807 769 38 37 1808 776 106 761 1809 790 136 135 1810 782 766 783 1811 767 773 40 1812 781 774 764 1813 787 771 788 1814 772 137 136 1815 767 40 39 1816 767 39 768 1817 786 770 787 1818 762 104 763 1819 786 769 775 1820 789 775 140 1821 775 37 36 1822 770 139 138 1823 789 139 770 1824 102 6 774 1825 762 761 105 1826 796 793 794 1827 787 770 771 1828 792 103 102 1829 792 763 103 1830 790 772 136 1831 771 137 772 1832 771 770 138 1833 771 138 137 1834 778 761 762 1835 788 771 772 1836 777 776 761 1837 790 135 776 1838 785 768 769 1839 780 764 765 1840 799 783 784 1841 774 94 764 1842 783 773 767 1843 784 767 768 1844 777 790 776 1845 791 90 773 1846 798 788 777 1847 777 788 772 1848 777 772 790 1849 779 762 763 1850 779 778 762 1851 789 770 786 1852 789 786 775 1853 797 779 781 1854 781 764 780 1855 780 765 782 1856 785 784 768 1857 795 780 782 1858 794 778 779 1859 800 796 785 1860 800 785 786 1861 792 102 774 1862 800 786 787 1863 781 779 763 1864 793 787 788 1865 792 774 781 1866 792 781 763 1867 796 784 785 1868 796 794 795 1869 798 778 794 1870 798 777 778 1871 797 780 795 1872 797 781 780 1873 799 784 796 1874 799 782 783 1875 797 794 779 1876 797 795 794 1877 798 793 788 1878 798 794 793 1879 799 795 782 1880 799 796 795 1881 800 787 793 1882 791 773 783 1883 800 793 796 1884 791 783 766 3 31 4 4613 1885 40 773 285 41 1886 971 1065 995 994 1887 733 751 283 30 1888 735 34 35 284 1889 923 155 935 200 1890 801 727 743 735 1891 831 13 615 614 1892 1147 498 556 997 1893 1012 455 110 456 1894 1028 1088 787 1033 1895 1051 1087 1052 886 1896 1138 1038 811 818 1897 805 33 143 142 1898 315 314 1139 931 1899 1102 307 1160 353 1900 860 845 1112 1180 1901 960 1160 308 353 1902 849 848 179 292 1903 849 827 864 1154 1904 834 613 1183 148 1905 949 485 523 484 1906 1152 245 976 276 1907 750 736 96 572 1908 356 311 961 357 1909 1004 1074 1015 1189 1910 931 315 75 446 1911 859 749 286 427 1912 127 579 1204 620 1913 1028 787 771 788 1914 642 643 1026 701 1915 866 336 375 374 1916 1192 1141 1165 876 1917 921 670 631 1214 1918 620 840 128 717 1919 808 577 131 725 1920 1026 1074 1028 1098 1921 972 710 684 685 1922 58 57 179 292 1923 834 147 14 148 1924 850 1193 256 272 1925 1157 1208 369 898 1926 978 355 354 309 1927 761 105 106 454 1928 1096 774 781 792 1929 861 295 296 341 1930 806 188 190 804 1931 1075 1110 1166 1147 1932 1162 903 910 902 1933 809 742 725 808 1934 802 284 735 719 1935 1149 355 328 310 1936 780 977 782 765 1937 1161 1093 923 155 1938 984 463 509 508 1939 812 187 816 141 1940 1158 810 819 809 1941 977 309 354 308 1942 1113 468 583 1145 1943 811 817 760 745 1944 447 74 75 314 1945 45 46 304 167 1946 1115 625 1204 1103 1947 53 54 296 175 1948 441 80 81 320 1949 1082 1033 1034 1037 1950 42 1102 183 329 1951 1160 783 799 782 1952 446 315 75 76 1953 763 103 452 792 1954 1132 906 77 444 1955 1092 604 23 605 1956 931 908 315 446 1957 238 912 1171 923 1958 1109 1185 492 530 1959 906 318 317 78 1960 986 558 526 563 1961 1073 1134 996 993 1962 959 1201 274 936 1963 930 990 359 313 1964 937 46 168 167 1965 711 1022 715 1119 1966 1144 704 692 712 1967 1072 1090 1065 1073 1968 914 1135 875 922 1969 125 126 580 471 1970 1048 879 1106 1162 1971 1162 910 171 217 1972 1203 295 340 294 1973 1158 1140 857 1103 1974 955 970 984 971 1975 815 230 279 229 1976 932 520 1197 918 1977 616 822 11 12 1978 834 614 613 14 1979 613 14 15 148 1980 735 35 4 284 1981 809 754 810 819 1982 619 9 184 802 1983 576 726 131 130 1984 132 131 577 725 1985 576 752 726 130 1986 818 756 755 753 1987 805 143 33 727 1988 807 742 743 757 1989 719 129 752 130 1990 719 4 284 735 1991 719 129 4 735 1992 719 735 752 129 1993 1212 1187 169 215 1994 184 802 9 284 1995 9 4 284 719 1996 1032 1030 645 600 1997 813 187 261 263 1998 10 619 9 184 1999 989 447 492 931 2000 870 666 855 1168 2001 727 33 34 143 2002 1105 925 936 1212 2003 801 284 190 143 2004 803 752 576 719 2005 696 1172 664 698 2006 821 622 663 576 2007 288 1180 67 860 2008 752 719 802 735 2009 1115 625 620 1204 2010 917 548 919 920 2011 809 758 754 819 2012 819 758 753 842 2013 820 663 619 802 2014 806 743 805 744 2015 819 753 841 842 2016 142 728 33 32 2017 1096 763 452 792 2018 811 745 744 728 2019 1079 838 1111 856 2020 812 32 729 728 2021 1172 623 696 622 2022 192 191 823 1129 2023 1033 796 793 1189 2024 1112 288 860 1180 2025 810 818 819 756 2026 875 18 610 609 2027 818 753 841 819 2028 1161 913 608 153 2029 880 381 418 413 2030 812 805 142 728 2031 979 1177 1102 1067 2032 805 188 142 143 2033 1112 335 288 1180 2034 812 188 805 813 2035 894 409 373 332 2036 729 32 141 31 2037 808 622 576 577 2038 813 188 265 261 2039 812 142 187 141 2040 812 729 32 141 2041 431 750 97 572 2042 1112 825 335 1180 2043 825 1112 846 1094 2044 803 821 663 576 2045 97 750 96 572 2046 576 719 752 130 2047 883 1095 377 422 2048 802 663 619 719 2049 801 190 806 143 2050 801 802 284 735 2051 802 663 803 821 2052 803 576 663 719 2053 619 820 10 617 2054 184 10 619 820 2055 804 190 189 265 2056 811 805 806 813 2057 11 10 144 617 2058 818 1038 1158 1137 2059 1046 1052 1051 1087 2060 1129 1089 661 822 2061 1094 1186 826 226 2062 918 569 520 571 2063 1081 731 65 732 2064 848 180 225 179 2065 816 263 228 187 2066 860 288 287 66 2067 1095 864 1041 1080 2068 884 424 405 406 2069 1138 1094 1112 816 2070 1138 884 885 1112 2071 283 31 30 751 2072 1137 819 841 842 2073 573 479 895 1108 2074 864 292 337 848 2075 859 286 749 732 2076 731 860 747 1081 2077 1087 1080 1206 1095 2078 1129 146 192 191 2079 828 258 824 277 2080 933 557 546 547 2081 848 291 58 292 2082 865 827 1041 864 2083 835 233 232 194 2084 831 12 13 146 2085 814 191 815 229 2086 835 233 269 232 2087 822 814 145 191 2088 1129 191 815 814 2089 1180 141 816 228 2090 1137 1108 1195 843 2091 930 312 449 73 2092 820 144 617 1089 2093 846 1094 227 825 2094 1107 1165 1068 1163 2095 1123 261 263 813 2096 844 843 842 738 2097 1172 838 1168 664 2098 805 728 744 727 2099 944 945 523 557 2100 1197 481 520 932 2101 1052 897 893 892 2102 808 131 726 725 2103 1137 844 885 894 2104 838 664 698 624 2105 1182 725 724 132 2106 190 189 820 804 2107 1115 134 133 736 2108 1163 951 1061 943 2109 1182 133 578 132 2110 1130 814 1089 1129 2111 1182 724 133 132 2112 839 472 579 1204 2113 803 726 576 752 2114 1087 1080 1041 1039 2115 1123 229 261 265 2116 757 810 744 807 2117 836 659 614 660 2118 808 131 577 576 2119 821 663 622 700 2120 1078 835 850 828 2121 1032 161 186 207 2122 1123 260 261 279 2123 426 886 887 1122 2124 802 184 190 284 2125 417 890 414 881 2126 1154 178 223 853 2127 615 13 831 12 2128 831 830 836 1129 2129 1158 1038 1046 1137 2130 822 1089 661 616 2131 1138 813 1038 1123 2132 831 147 192 146 2133 1100 466 512 511 2134 883 1155 377 1095 2135 230 815 823 191 2136 1105 1210 904 1181 2137 863 1203 861 295 2138 917 1178 1111 515 2139 918 549 569 571 2140 917 1099 918 549 2141 917 549 918 571 2142 837 693 660 694 2143 1182 577 725 132 2144 1042 1193 1127 863 2145 824 277 281 231 2146 1113 1100 584 467 2147 1214 632 670 631 2148 842 738 739 753 2149 1041 1122 865 864 2150 827 224 225 258 2151 896 435 480 434 2152 907 421 394 395 2153 1111 470 516 515 2154 124 581 470 125 2155 899 396 397 901 2156 1079 917 1111 1099 2157 840 736 717 1115 2158 431 750 723 97 2159 1195 477 478 551 2160 845 755 748 841 2161 230 823 192 191 2162 1140 758 809 819 2163 842 758 739 1140 2164 896 327 372 326 2165 554 1195 948 478 2166 839 580 579 126 2167 948 478 1195 1108 2168 1114 964 966 963 2169 1115 717 134 736 2170 1079 838 856 1168 2171 7 736 134 717 2172 847 291 180 848 2173 844 1108 721 737 2174 472 126 579 127 2175 870 666 871 667 2176 475 127 620 128 2177 840 750 431 572 2178 572 736 7 717 2179 572 7 128 717 2180 475 128 620 840 2181 622 808 623 577 2182 96 572 736 7 2183 1051 1052 947 893 2184 806 813 188 804 2185 1115 736 724 740 2186 1130 1083 1046 1087 2187 842 1140 739 858 2188 819 753 758 754 2189 810 1158 818 1038 2190 99 722 98 432 2191 858 432 843 478 2192 1172 623 698 696 2193 856 1178 581 1111 2194 1182 1103 724 741 2195 859 1108 894 844 2196 858 431 723 98 2197 859 1108 844 737 2198 1099 549 550 569 2199 893 885 409 894 2200 1204 1103 625 698 2201 858 722 432 98 2202 1204 475 518 472 2203 1140 750 1115 740 2204 431 723 98 97 2205 950 523 524 562 2206 801 190 284 802 2207 875 1151 197 1135 2208 1122 376 375 337 2209 837 693 694 716 2210 825 228 227 182 2211 805 33 142 728 2212 751 141 31 729 2213 811 744 805 728 2214 283 141 31 751 2215 857 1204 517 1099 2216 1081 65 286 732 2217 3 283 30 733 2218 283 185 1180 428 2219 845 755 760 747 2220 846 182 289 825 2221 330 61 185 825 2222 1203 177 222 176 2223 847 291 290 59 2224 848 180 179 58 2225 862 254 267 253 2226 825 228 263 227 2227 283 1180 733 428 2228 1006 1102 773 783 2229 851 233 835 195 2230 824 231 829 277 2231 1062 1171 935 1085 2232 828 850 269 835 2233 219 1196 877 252 2234 642 1026 1025 701 2235 871 627 628 666 2236 1154 257 223 224 2237 630 1150 631 1100 2238 1100 585 584 121 2239 992 991 527 987 2240 902 384 345 346 2241 892 897 1101 1197 2242 869 657 658 691 2243 150 16 1104 868 2244 1078 829 1183 835 2245 1028 1074 1082 1033 2246 1182 724 725 741 2247 871 628 1145 872 2248 1039 815 823 1186 2249 864 376 337 338 2250 657 656 915 1104 2251 864 377 376 338 2252 816 1123 263 813 2253 1122 1095 376 864 2254 982 1097 1142 675 2255 858 477 432 478 2256 944 546 557 562 2257 897 436 481 435 2258 801 34 284 143 2259 857 518 517 1204 2260 897 326 435 896 2261 884 893 405 886 2262 859 1081 286 732 2263 472 1204 127 579 2264 127 1204 475 620 2265 1204 838 839 1099 2266 731 1081 747 748 2267 1172 821 622 700 2268 1158 1204 1172 1103 2269 946 1101 1208 483 2270 839 517 472 1204 2271 1140 1103 809 741 2272 858 723 722 98 2273 857 518 858 477 2274 894 895 327 896 2275 1096 575 474 429 2276 859 427 286 373 2277 1108 427 573 734 2278 1108 895 948 479 2279 1195 478 858 843 2280 947 519 554 480 2281 847 226 826 180 2282 288 860 67 66 2283 330 289 61 825 2284 816 228 263 825 2285 1146 365 366 399 2286 813 187 188 261 2287 63 64 749 427 2288 289 182 60 61 2289 848 291 180 58 2290 846 290 60 181 2291 428 733 283 3 2292 428 62 283 185 2293 1180 816 825 228 2294 185 825 61 182 2295 330 185 61 62 2296 1112 1180 816 825 2297 67 428 68 733 2298 872 667 628 629 2299 404 886 426 424 2300 290 60 181 59 2301 291 59 180 58 2302 848 58 179 292 2303 1166 928 929 909 2304 936 1201 274 249 2305 1162 217 172 218 2306 826 226 225 180 2307 1196 253 219 220 2308 1212 169 170 215 2309 565 996 566 539 2310 1211 1106 878 343 2311 295 55 176 54 2312 1193 255 222 256 2313 1091 1077 1076 1194 2314 55 56 853 177 2315 979 266 1007 210 2316 861 54 295 176 2317 1095 422 426 376 2318 1050 1080 1155 883 2319 1214 632 631 586 2320 853 294 1203 339 2321 1155 853 1203 339 2322 294 853 55 56 2323 853 57 293 849 2324 1044 1060 1083 1118 2325 1138 845 817 1112 2326 67 66 860 730 2327 1046 1038 1138 1137 2328 1138 1137 1038 818 2329 826 848 225 827 2330 1041 1094 1138 1186 2331 431 840 858 750 2332 428 283 62 3 2333 1041 1094 866 1138 2334 811 805 744 806 2335 884 1122 424 866 2336 825 185 228 182 2337 428 330 62 185 2338 1112 884 408 866 2339 1060 919 1197 1118 2340 1041 1138 1087 1039 2341 68 428 3 733 2342 1180 185 330 428 2343 817 760 745 746 2344 1080 828 1154 824 2345 1180 283 141 228 2346 108 1014 720 574 2347 1180 428 330 335 2348 810 756 754 757 2349 866 846 336 334 2350 847 180 291 59 2351 61 825 289 182 2352 814 189 191 229 2353 812 32 142 141 2354 847 865 291 848 2355 1138 1186 1094 1123 2356 932 481 520 519 2357 1140 740 723 750 2358 1103 1172 623 698 2359 1168 694 714 716 2360 849 292 338 864 2361 933 547 546 513 2362 850 835 233 269 2363 1204 698 838 1172 2364 377 882 378 1155 2365 1154 853 223 1203 2366 1193 256 272 255 2367 1203 55 295 294 2368 1044 920 917 919 2369 910 216 171 217 2370 1097 635 590 636 2371 1085 1064 1192 1141 2372 1135 913 198 197 2373 861 175 54 176 2374 867 1211 296 861 2375 861 295 54 296 2376 938 926 937 349 2377 1196 876 862 1165 2378 1185 492 491 446 2379 1109 492 531 530 2380 415 901 416 396 2381 1196 253 862 876 2382 903 346 300 301 2383 1151 196 197 235 2384 1161 608 20 153 2385 253 876 252 273 2386 834 613 614 659 2387 1151 270 234 235 2388 913 608 153 19 2389 1059 1151 1165 1043 2390 869 149 612 1104 2391 832 695 662 700 2392 1060 932 1197 918 2393 1143 541 542 561 2394 1097 636 675 674 2395 830 829 193 1183 2396 687 922 688 654 2397 1204 620 579 625 2398 891 370 403 369 2399 823 230 231 281 2400 823 231 230 192 2401 1076 1170 1000 998 2402 1111 839 517 471 2403 695 833 832 661 2404 885 409 406 405 2405 1130 837 833 1168 2406 1115 736 133 724 2407 1094 260 1186 226 2408 1041 1186 827 826 2409 801 805 143 806 2410 884 406 408 374 2411 920 919 567 548 2412 1204 624 625 579 2413 1040 837 1083 1144 2414 839 472 517 471 2415 845 818 1137 1138 2416 856 664 665 1168 2417 919 548 571 567 2418 815 191 230 229 2419 1153 986 968 1068 2420 856 871 665 627 2421 988 527 987 488 2422 1111 470 581 125 2423 200 935 238 239 2424 876 237 268 273 2425 876 1171 877 268 2426 844 737 738 759 2427 630 1100 1113 1150 2428 1212 925 936 216 2429 1124 692 704 691 2430 1183 658 659 1144 2431 1183 869 658 1144 2432 1061 1107 1214 1153 2433 1044 1079 917 1111 2434 924 271 250 911 2435 855 666 716 1168 2436 915 705 690 916 2437 807 743 803 806 2438 1063 925 1085 1201 2439 897 86 436 435 2440 1043 1165 1107 1163 2441 1078 869 1104 835 2442 894 327 895 373 2443 278 975 959 1167 2444 1132 906 444 988 2445 875 18 609 152 2446 1163 943 944 951 2447 1062 1069 941 1164 2448 911 271 250 251 2449 963 962 486 524 2450 834 836 1183 659 2451 1170 568 537 538 2452 174 52 1211 53 2453 1141 1106 1211 1196 2454 952 545 559 544 2455 1211 174 53 175 2456 1211 174 175 220 2457 381 342 878 343 2458 1166 1176 1086 1133 2459 1084 1164 1092 941 2460 1065 971 1174 956 2461 1125 672 633 955 2462 296 1211 867 342 2463 1182 623 808 577 2464 1187 169 47 302 2465 911 217 910 1162 2466 1114 1146 890 1213 2467 862 876 253 1188 2468 868 1151 151 875 2469 1084 1021 1009 1209 2470 1057 990 1159 989 2471 1044 1168 871 870 2472 1126 416 383 415 2473 947 1197 481 897 2474 1153 953 952 968 2475 1104 611 16 612 2476 1165 1211 1196 1141 2477 1126 415 383 384 2478 989 931 1185 1139 2479 1053 987 992 986 2480 1089 662 661 616 2481 202 941 240 958 2482 513 943 512 546 2483 867 380 341 342 2484 849 1154 224 827 2485 949 1208 484 945 2486 1121 211 165 166 2487 1211 296 297 342 2488 1196 1211 220 174 2489 811 744 810 806 2490 1042 852 1078 1043 2491 1083 1118 1060 1206 2492 1140 740 741 758 2493 932 1051 1046 1052 2494 853 294 293 56 2495 1186 281 823 824 2496 1044 1168 856 871 2497 817 845 1138 818 2498 848 337 291 292 2499 848 225 827 179 2500 1042 863 1203 1193 2501 865 337 848 864 2502 820 821 663 802 2503 948 895 894 896 2504 808 1103 1158 1172 2505 1116 1157 898 1208 2506 860 287 731 66 2507 760 845 817 818 2508 816 263 187 813 2509 860 288 333 287 2510 889 1199 367 400 2511 812 142 32 728 2512 817 745 729 746 2513 1087 1083 1039 1130 2514 1051 1138 885 1137 2515 65 731 287 66 2516 427 749 286 64 2517 845 748 755 747 2518 801 34 727 735 2519 64 286 65 732 2520 64 749 286 732 2521 1108 573 100 734 2522 89 895 427 573 2523 858 722 723 739 2524 954 984 955 970 2525 412 378 377 882 2526 947 948 554 1195 2527 1180 733 751 283 2528 1183 612 658 869 2529 1172 695 696 714 2530 1137 841 844 842 2531 1182 578 577 132 2532 828 1154 850 1080 2533 1100 586 631 585 2534 808 726 131 576 2535 814 189 145 191 2536 1124 691 869 658 2537 1206 1116 1208 1157 2538 1116 951 963 1114 2539 949 485 484 439 2540 944 562 950 951 2541 1199 1146 320 366 2542 942 1174 703 1117 2543 659 1144 658 692 2544 888 412 401 402 2545 1211 296 53 297 2546 967 559 558 544 2547 1049 882 1042 881 2548 298 1106 299 51 2549 1032 1088 599 645 2550 933 943 513 546 2551 1053 965 987 966 2552 1141 1196 877 1106 2553 1174 706 686 703 2554 1213 365 1146 399 2555 1159 568 565 531 2556 1178 469 124 470 2557 906 899 988 905 2558 1091 1200 1120 1084 2559 1050 1080 883 1206 2560 871 1178 1145 582 2561 437 85 1101 84 2562 1197 1118 919 946 2563 1108 895 894 948 2564 438 84 323 83 2565 1081 65 731 287 2566 331 89 476 895 2567 896 327 87 434 2568 1182 1115 133 724 2569 327 895 88 434 2570 859 894 885 844 2571 895 331 373 327 2572 1180 330 825 335 2573 891 887 1157 403 2574 814 189 229 265 2575 883 882 377 1155 2576 1212 215 170 216 2577 1050 889 888 882 2578 1163 1047 1118 944 2579 584 629 630 1113 2580 1048 1055 1141 1126 2581 938 304 350 349 2582 890 881 880 414 2583 1134 993 560 996 2584 1188 235 236 267 2585 959 1201 241 274 2586 910 216 217 250 2587 1198 418 397 398 2588 702 1125 921 1173 2589 966 963 525 967 2590 1106 297 298 343 2591 903 49 301 300 2592 299 51 1106 1162 2593 50 51 1162 172 2594 911 217 250 910 2595 966 987 986 526 2596 363 899 905 396 2597 1090 998 1000 999 2598 955 970 634 588 2599 988 991 489 1132 2600 1109 531 565 530 2601 1011 458 457 112 2602 1092 650 604 605 2603 1139 990 931 314 2604 938 937 304 349 2605 1001 555 1002 501 2606 1169 305 45 166 2607 1128 640 639 594 2608 941 201 202 240 2609 978 309 354 977 2610 1142 114 460 459 2611 931 447 75 314 2612 1054 905 1056 1132 2613 980 1020 205 159 2614 1205 207 162 208 2615 908 316 315 76 2616 1187 47 169 168 2617 904 385 384 346 2618 878 418 381 382 2619 862 254 253 220 2620 1105 904 1212 1181 2621 1053 1213 1198 899 2622 1120 907 1210 1191 2623 995 540 507 993 2624 317 78 77 906 2625 936 249 248 215 2626 1134 529 490 1185 2627 1212 903 902 910 2628 638 1184 592 1142 2629 936 1212 215 1187 2630 882 378 417 412 2631 1007 210 209 164 2632 345 1126 879 383 2633 1183 835 829 194 2634 935 201 239 200 2635 658 1144 1124 692 2636 1071 1066 1070 1148 2637 1202 95 429 94 2638 709 1209 676 982 2639 1093 21 1161 606 2640 19 609 18 152 2641 1062 941 935 1093 2642 955 634 672 633 2643 1043 1151 852 851 2644 236 1151 1135 197 2645 1183 869 835 149 2646 547 933 514 513 2647 922 655 688 654 2648 868 875 18 610 2649 962 440 485 439 2650 1183 835 194 149 2651 905 1132 906 317 2652 829 231 193 232 2653 1056 1132 1185 1134 2654 122 583 468 123 2655 869 612 658 657 2656 1175 213 940 247 2657 837 660 693 836 2658 969 510 509 464 2659 883 412 888 402 2660 1049 867 1165 880 2661 913 875 1135 922 2662 257 258 828 277 2663 1183 194 148 149 2664 1021 682 648 1008 2665 953 465 464 1214 2666 589 970 983 116 2667 987 526 488 527 2668 150 17 16 868 2669 1191 394 420 393 2670 123 582 469 124 2671 919 567 571 521 2672 1178 124 581 470 2673 827 225 224 179 2674 1104 195 150 196 2675 838 664 624 626 2676 1044 917 920 1178 2677 842 739 758 753 2678 585 1100 120 121 2679 806 801 805 743 2680 856 665 626 627 2681 1113 1100 512 943 2682 1047 1150 872 1113 2683 918 520 1197 571 2684 1100 585 631 630 2685 1145 469 468 123 2686 1107 1125 1214 1153 2687 1100 584 585 630 2688 1078 1045 1124 1144 2689 872 873 667 629 2690 1163 1116 1114 951 2691 121 467 122 584 2692 1051 894 885 893 2693 889 367 401 400 2694 1061 953 1100 952 2695 1214 465 119 586 2696 925 275 924 1201 2697 1199 320 1146 441 2698 872 1150 873 629 2699 945 484 523 522 2700 1047 920 933 1145 2701 1123 263 261 260 2702 327 331 88 895 2703 1040 836 1144 1183 2704 830 834 193 147 2705 1173 702 688 689 2706 912 237 198 199 2707 1064 956 1117 1125 2708 934 913 1161 912 2709 20 153 608 19 2710 1117 687 934 922 2711 1192 922 1117 934 2712 1163 916 1150 1061 2713 1125 1117 672 956 2714 956 673 1174 703 2715 973 1008 604 1092 2716 1162 902 300 903 2717 706 710 972 685 2718 925 910 911 250 2719 908 76 446 445 2720 1196 220 219 174 2721 930 990 313 448 2722 50 903 171 1162 2723 903 49 171 170 2724 1162 903 171 910 2725 1212 1181 904 347 2726 1212 347 346 301 2727 937 167 168 213 2728 937 349 303 304 2729 977 308 1160 765 2730 1200 423 387 425 2731 961 449 930 312 2732 990 74 447 314 2733 990 74 313 448 2734 1109 996 565 998 2735 930 312 73 313 2736 448 74 313 73 2737 998 539 565 538 2738 1166 929 1176 1133 2739 908 315 446 76 2740 1048 1106 1141 877 2741 1105 1063 925 1085 2742 849 853 178 1154 2743 1067 1160 1016 1179 2744 952 967 559 951 2745 1137 894 948 1108 2746 369 898 1208 323 2747 943 545 512 546 2748 963 950 524 951 2749 521 482 1197 946 2750 587 955 1214 633 2751 885 409 332 406 2752 897 436 86 325 2753 896 435 87 326 2754 721 99 100 843 2755 734 749 427 63 2756 1108 734 749 427 2757 1108 737 734 721 2758 808 1172 821 622 2759 1060 919 918 1197 2760 479 478 948 1108 2761 895 476 434 479 2762 721 100 1108 843 2763 859 749 737 732 2764 894 372 327 373 2765 843 722 99 432 2766 1099 550 551 569 2767 5 89 427 573 2768 803 743 726 752 2769 144 820 184 190 2770 1089 11 144 617 2771 1099 1158 838 1079 2772 1180 141 812 816 2773 887 891 892 404 2774 802 803 663 719 2775 519 932 551 569 2776 1186 258 281 824 2777 1150 629 668 873 2778 13 834 147 14 2779 1138 811 817 818 2780 962 440 441 486 2781 1214 955 1153 1125 2782 1164 651 684 650 2783 828 269 257 277 2784 934 609 654 608 2785 1061 1150 1100 921 2786 872 1113 583 1145 2787 1149 1133 997 978 2788 1113 1100 467 512 2789 1116 1156 888 889 2790 119 586 465 120 2791 873 704 667 668 2792 1045 873 1047 1150 2793 1043 915 914 1104 2794 1061 1100 1150 943 2795 1211 342 297 343 2796 915 916 690 874 2797 954 1214 955 969 2798 955 672 634 956 2799 381 867 878 342 2800 851 234 852 272 2801 881 378 1203 340 2802 985 986 563 543 2803 899 364 363 318 2804 1169 167 45 304 2805 992 527 563 987 2806 1174 673 706 703 2807 913 198 152 153 2808 934 654 609 922 2809 809 754 758 741 2810 959 274 278 248 2811 154 1161 21 20 2812 155 1093 22 21 2813 954 969 955 984 2814 907 904 421 1126 2815 1165 852 1151 854 2816 1005 779 1004 763 2817 1186 827 258 824 2818 1093 1092 156 605 2819 1212 170 169 48 2820 990 493 448 494 2821 1142 1000 505 999 2822 1159 565 568 538 2823 1022 678 715 677 2824 1187 168 940 937 2825 47 169 48 302 2826 1209 709 713 683 2827 1006 164 285 210 2828 46 937 47 303 2829 1141 880 1053 1068 2830 1202 977 1096 781 2831 1077 1021 1119 1070 2832 938 350 304 1169 2833 1160 799 783 1016 2834 90 791 430 91 2835 211 210 1121 165 2836 1169 305 350 304 2837 1179 1160 782 977 2838 1166 1110 1194 1136 2839 1148 976 246 276 2840 1187 303 348 302 2841 1192 1141 1064 1107 2842 941 1164 1069 1084 2843 1102 353 411 352 2844 1090 998 1073 1091 2845 961 72 450 449 2846 1058 1200 1063 1181 2847 926 303 348 1187 2848 1148 276 246 280 2849 387 1200 1210 423 2850 1187 169 215 214 2851 651 652 957 685 2852 904 347 1181 385 2853 923 199 200 238 2854 1139 314 360 359 2855 899 1213 364 900 2856 1132 445 1185 490 2857 647 1021 1119 681 2858 1034 796 784 785 2859 23 156 605 22 2860 652 957 653 1161 2861 1079 918 917 1099 2862 956 634 673 672 2863 1190 1119 1020 1070 2864 999 505 460 506 2865 1059 1165 1192 1107 2866 859 1081 732 748 2867 880 414 380 413 2868 995 461 983 507 2869 237 1171 238 912 2870 1146 319 80 320 2871 1166 1110 1133 1147 2872 1017 39 768 767 2873 1135 875 913 197 2874 514 513 933 1145 2875 511 943 1100 952 2876 963 559 524 525 2877 917 515 549 548 2878 985 563 542 543 2879 1100 1214 586 465 2880 953 465 511 510 2881 545 943 511 952 2882 952 545 544 511 2883 1150 669 668 630 2884 868 196 151 1151 2885 1102 210 285 183 2886 915 690 705 689 2887 1162 911 217 877 2888 953 952 511 1100 2889 1097 1174 674 982 2890 988 488 987 965 2891 1095 377 864 1155 2892 665 871 666 627 2893 956 673 634 971 2894 1089 616 11 617 2895 1157 422 402 403 2896 1061 1153 1214 953 2897 804 814 189 1089 2898 1183 612 869 149 2899 1158 1137 1046 1195 2900 897 326 86 435 2901 1114 1116 889 1199 2902 812 188 142 805 2903 833 694 695 714 2904 476 895 573 479 2905 895 434 327 896 2906 1081 732 748 731 2907 1122 1087 1095 1041 2908 859 373 286 332 2909 814 229 1123 265 2910 893 886 892 371 2911 885 405 884 893 2912 886 405 404 371 2913 1206 1208 946 1101 2914 1113 513 1145 933 2915 893 326 371 897 2916 859 894 1108 895 2917 1165 1127 1196 1211 2918 1197 481 482 520 2919 893 371 326 372 2920 87 435 86 326 2921 1116 898 949 1208 2922 1156 322 82 439 2923 963 524 559 951 2924 826 827 259 1186 2925 281 815 279 1186 2926 1178 1145 514 920 2927 1132 988 444 489 2928 907 1126 421 415 2929 1156 82 440 439 2930 963 962 524 950 2931 900 79 319 318 2932 1076 1170 1194 1184 2933 880 1049 890 1114 2934 1199 441 81 320 2935 906 363 317 318 2936 1100 467 466 121 2937 1127 254 255 854 2938 1154 256 850 1193 2939 1178 469 1145 582 2940 952 559 545 951 2941 828 257 850 1154 2942 1083 1080 1045 1206 2943 299 1162 50 51 2944 512 1100 511 943 2945 909 392 358 359 2946 985 992 1153 1143 2947 921 670 705 669 2948 1160 307 791 766 2949 686 653 652 957 2950 931 75 447 446 2951 1152 208 1018 209 2952 155 1161 1093 21 2953 1165 854 1151 1188 2954 971 635 589 983 2955 1142 592 114 459 2956 925 275 249 250 2957 905 396 899 901 2958 1092 651 650 605 2959 298 344 299 1106 2960 1093 155 201 935 2961 1189 793 1033 1029 2962 1000 538 504 505 2963 1164 1009 683 1209 2964 1176 407 419 389 2965 603 604 973 1008 2966 1062 1161 957 1093 2967 931 75 315 314 2968 1075 1086 1074 1147 2969 1010 1142 995 1097 2970 942 686 1174 957 2971 52 1106 51 173 2972 1152 262 208 209 2973 1152 266 1007 979 2974 1207 976 1071 1152 2975 937 46 304 303 2976 1202 429 774 1096 2977 47 303 937 1187 2978 1102 210 1121 979 2979 602 25 26 981 2980 44 45 305 166 2981 1106 219 173 174 2982 1102 329 1121 183 2983 1127 254 220 221 2984 1207 927 939 928 2985 504 503 1011 458 2986 909 359 930 990 2987 1191 423 1200 392 2988 1146 319 442 80 2989 995 506 461 507 2990 931 446 447 492 2991 935 155 201 200 2992 905 363 396 362 2993 916 1150 669 707 2994 439 82 83 322 2995 1099 517 553 550 2996 440 81 82 321 2997 1124 668 704 873 2998 898 949 1208 438 2999 1047 1113 872 1145 3000 1100 466 511 465 3001 1037 800 1034 785 3002 883 377 412 422 3003 482 481 1101 436 3004 898 83 323 322 3005 900 319 1213 364 3006 898 322 323 368 3007 1150 668 669 707 3008 854 1188 267 235 3009 1131 494 533 532 3010 1131 533 1133 1110 3011 945 522 523 557 3012 898 439 83 322 3013 1157 369 403 402 3014 944 557 546 933 3015 1090 1073 1069 1091 3016 891 404 403 370 3017 1070 1077 1021 1084 3018 1135 1188 236 273 3019 949 962 485 439 3020 878 867 1141 1211 3021 962 485 440 486 3022 1116 949 950 945 3023 1142 636 637 675 3024 1208 84 324 323 3025 1117 1173 708 688 3026 890 1199 400 366 3027 442 80 319 79 3028 851 233 234 272 3029 1146 1213 319 365 3030 1050 1157 883 888 3031 963 525 524 486 3032 915 1173 914 689 3033 970 983 994 971 3034 1130 1046 1158 1038 3035 1134 993 1065 1143 3036 1107 1214 1125 921 3037 957 652 1093 1161 3038 1145 468 469 514 3039 1100 466 467 512 3040 955 634 970 971 3041 1139 1185 908 931 3042 118 587 464 119 3043 671 1125 702 708 3044 1057 1091 1109 1159 3045 1214 119 465 464 3046 971 589 635 634 3047 954 118 464 463 3048 993 541 560 540 3049 300 903 50 1162 3050 999 539 505 506 3051 1139 315 361 360 3052 970 588 589 634 3053 902 345 300 346 3054 1020 647 602 648 3055 1161 20 154 153 3056 1054 901 1053 1141 3057 922 655 654 609 3058 1034 799 784 796 3059 986 543 558 563 3060 1161 154 199 153 3061 852 270 234 1151 3062 650 1164 1009 683 3063 1207 979 976 1152 3064 23 973 1092 157 3065 973 157 24 158 3066 604 973 23 24 3067 1207 1177 1169 979 3068 940 168 213 937 3069 1016 784 799 783 3070 1020 1008 602 981 3071 674 675 982 710 3072 871 627 1178 582 3073 1005 997 1004 1086 3074 1018 163 209 208 3075 1035 1037 785 769 3076 925 911 924 250 3077 1169 212 211 166 3078 1035 162 38 163 3079 183 165 43 306 3080 1160 766 92 307 3081 979 1121 211 210 3082 939 389 1176 419 3083 1016 783 767 784 3084 1058 940 1181 1167 3085 450 1149 961 496 3086 766 307 91 92 3087 1149 356 310 311 3088 1032 789 775 718 3089 358 357 930 312 3090 1147 556 534 1133 3091 1096 997 1149 497 3092 794 1189 779 778 3093 1001 535 501 502 3094 1013 641 596 642 3095 70 451 310 71 3096 71 311 72 450 3097 1004 104 763 762 3098 977 308 93 309 3099 1147 555 1001 535 3100 764 93 309 977 3101 765 308 92 93 3102 1182 725 809 741 3103 41 773 285 1 3104 1082 1189 1179 1034 3105 165 43 306 44 3106 1074 1033 1189 1082 3107 1006 767 773 40 3108 1035 1205 162 208 3109 1148 243 244 276 3110 1169 937 167 304 3111 42 430 1102 329 3112 1102 783 1160 791 3113 1067 1102 1160 960 3114 997 452 498 497 3115 1153 984 985 1143 3116 1194 1091 1170 1076 3117 930 312 357 961 3118 980 243 242 204 3119 959 241 278 274 3120 172 1106 51 1162 3121 1013 500 1002 1014 3122 1097 982 674 675 3123 275 239 924 240 3124 923 155 1093 935 3125 958 1008 974 973 3126 1136 1170 1194 1091 3127 1142 1209 676 638 3128 1003 762 453 1004 3129 1097 635 971 983 3130 878 381 343 382 3131 1010 590 636 1097 3132 706 972 957 685 3133 925 249 275 1201 3134 1164 650 1092 651 3135 872 583 1113 629 3136 960 411 353 407 3137 1042 1078 1045 1163 3138 1184 458 459 504 3139 954 509 984 463 3140 463 117 954 118 3141 1062 1093 972 1164 3142 1061 1214 1107 921 3143 1207 1175 927 1058 3144 1148 244 1152 276 3145 1099 550 549 516 3146 1062 1174 972 957 3147 1106 344 343 298 3148 944 523 945 950 3149 962 485 486 524 3150 657 915 874 1104 3151 443 318 78 79 3152 560 996 993 540 3153 966 967 525 558 3154 963 951 559 967 3155 1174 972 706 710 3156 1035 163 1017 1018 3157 1090 1174 1097 982 3158 854 270 267 254 3159 970 508 994 462 3160 902 345 879 1162 3161 881 417 379 414 3162 363 397 899 396 3163 1132 905 988 1054 3164 317 77 1132 906 3165 1146 442 441 80 3166 900 318 443 79 3167 905 906 363 317 3168 1185 445 446 491 3169 1156 322 367 321 3170 992 542 563 561 3171 1132 1185 445 908 3172 988 488 443 489 3173 445 316 76 77 3174 1185 490 445 491 3175 991 561 527 528 3176 1057 1200 909 1191 3177 983 116 462 461 3178 1201 275 274 249 3179 1063 1105 925 936 3180 990 74 448 447 3181 990 313 74 314 3182 1133 1110 534 1147 3183 1090 1076 998 1091 3184 961 1133 1149 929 3185 449 312 72 73 3186 930 73 448 313 3187 961 72 312 311 3188 1207 1082 1071 1086 3189 1057 1131 1159 990 3190 1139 990 314 359 3191 930 312 313 358 3192 990 447 448 493 3193 420 385 1210 386 3194 1141 1211 867 1165 3195 560 566 996 540 3196 1023 640 679 678 3197 998 1170 1000 538 3198 1139 361 394 360 3199 1132 445 316 908 3200 906 443 900 318 3201 908 361 315 316 3202 1085 911 1048 1171 3203 1139 361 315 908 3204 1131 1091 1136 1166 3205 903 300 346 902 3206 1187 926 940 1181 3207 248 214 1167 936 3208 916 707 690 874 3209 444 489 988 443 3210 899 900 364 318 3211 900 443 442 79 3212 382 879 343 878 3213 989 931 492 1185 3214 972 684 651 685 3215 1192 934 1117 942 3216 873 629 668 667 3217 1132 490 1134 991 3218 900 318 319 364 3219 904 384 902 346 3220 880 418 1198 398 3221 1085 1090 1069 1062 3222 938 349 350 388 3223 1040 1144 1078 1183 3224 969 543 509 510 3225 1208 323 324 369 3226 1032 1037 1088 1205 3227 1191 359 1139 393 3228 828 232 269 277 3229 983 507 462 994 3230 1163 1107 916 1061 3231 934 1161 913 608 3232 1008 648 602 603 3233 989 1159 531 493 3234 952 559 967 544 3235 1105 1055 1126 907 3236 1102 1067 1177 960 3237 940 213 168 214 3238 1048 1162 877 911 3239 1105 907 904 1210 3240 1097 983 971 995 3241 670 705 702 921 3242 1062 912 1171 1192 3243 971 634 635 673 3244 924 271 275 250 3245 967 525 558 559 3246 464 509 954 463 3247 1054 1053 901 899 3248 970 971 994 984 3249 1125 708 672 1117 3250 992 563 986 987 3251 994 462 508 507 3252 904 384 385 421 3253 994 508 541 507 3254 1054 1072 1143 1134 3255 953 511 952 544 3256 1010 983 590 1097 3257 916 669 705 707 3258 970 463 508 462 3259 984 509 542 508 3260 1010 995 1142 999 3261 1165 1127 854 862 3262 910 171 216 903 3263 1010 460 461 506 3264 851 852 850 272 3265 1086 1005 1179 1189 3266 1000 459 505 504 3267 983 590 589 116 3268 1093 957 651 652 3269 1139 315 931 908 3270 1093 155 22 156 3271 1000 539 998 538 3272 1084 1209 1009 1164 3273 1012 1128 1001 456 3274 1213 890 399 1146 3275 908 316 76 445 3276 1062 942 912 1192 3277 1128 1022 639 678 3278 1033 787 793 800 3279 958 203 973 974 3280 1152 244 262 276 3281 494 961 495 449 3282 1139 1056 1191 907 3283 961 450 72 311 3284 343 878 879 1106 3285 534 1110 533 564 3286 1003 499 498 453 3287 792 102 575 774 3288 1075 1147 1001 1110 3289 1149 71 310 451 3290 1149 356 978 355 3291 990 493 532 1159 3292 328 70 451 310 3293 474 69 328 429 3294 927 926 938 349 3295 6 575 429 69 3296 1006 773 767 783 3297 575 69 474 429 3298 1205 1190 206 264 3299 1002 500 455 501 3300 1096 774 575 429 3301 1149 451 496 450 3302 474 451 328 70 3303 474 328 69 70 3304 1022 715 1209 677 3305 1004 452 453 498 3306 1011 458 503 457 3307 1021 1009 682 1008 3308 1207 938 927 1175 3309 1194 457 1011 503 3310 1031 646 601 647 3311 1207 1200 927 928 3312 990 532 493 494 3313 781 977 780 764 3314 1027 697 699 680 3315 1142 637 592 638 3316 1205 206 1190 1019 3317 1028 787 1088 770 3318 1023 679 711 678 3319 1166 1110 1075 1194 3320 1179 782 1160 799 3321 1194 502 1001 1128 3322 929 356 357 390 3323 1084 1069 1209 1164 3324 1191 392 359 393 3325 460 115 114 1010 3326 421 1126 904 384 3327 929 358 909 391 3328 1091 1069 1076 1084 3329 1090 993 996 995 3330 909 359 1139 1191 3331 1065 1090 995 993 3332 1010 995 983 1097 3333 939 388 389 419 3334 603 649 604 1008 3335 1161 923 154 155 3336 1166 1131 1110 1136 3337 594 1011 593 639 3338 990 494 448 930 3339 1004 452 104 453 3340 1074 1189 1004 1086 3341 997 496 497 556 3342 792 575 102 103 3343 1082 1028 1033 1088 3344 762 104 105 453 3345 774 6 429 95 3346 774 429 6 575 3347 102 575 774 6 3348 1038 807 821 806 3349 1027 699 1030 1031 3350 929 390 391 419 3351 1202 977 781 764 3352 1202 429 309 94 3353 1074 1086 1004 1147 3354 1096 977 1202 978 3355 792 452 575 103 3356 574 1014 720 776 3357 1149 450 961 311 3358 1121 1169 305 1177 3359 939 1176 928 419 3360 1147 499 552 498 3361 1087 1122 887 886 3362 1202 94 764 774 3363 104 103 452 763 3364 1096 474 497 1149 3365 1003 499 500 1002 3366 911 1171 271 251 3367 94 309 764 93 3368 1149 997 496 497 3369 977 780 764 765 3370 356 961 929 357 3371 1149 997 1096 978 3372 1091 1076 1077 1084 3373 1006 39 1017 767 3374 1071 1190 1027 1082 3375 1102 1121 329 352 3376 1179 780 795 797 3377 1179 782 795 780 3378 1017 767 768 784 3379 791 307 430 91 3380 40 39 1006 767 3381 791 766 307 91 3382 1160 791 783 766 3383 1196 862 253 220 3384 979 245 266 211 3385 183 43 329 306 3386 42 773 1102 430 3387 285 773 42 1 3388 183 42 329 43 3389 784 785 768 1034 3390 1121 306 329 352 3391 1017 1016 1006 767 3392 1077 1022 1119 1209 3393 939 389 1177 1176 3394 960 977 354 308 3395 928 425 388 419 3396 1207 976 1148 1071 3397 981 603 158 973 3398 1190 980 1070 1020 3399 1076 1184 1209 1142 3400 1009 649 683 682 3401 603 24 25 158 3402 1209 713 677 715 3403 602 26 1020 981 3404 1007 209 210 266 3405 1024 679 1023 1025 3406 1019 160 206 1190 3407 973 603 24 604 3408 534 1147 1110 564 3409 1008 603 649 648 3410 940 213 214 247 3411 1020 602 1008 648 3412 1054 1132 1056 1134 3413 23 24 973 157 3414 1189 796 793 794 3415 240 241 958 1201 3416 1126 1048 902 879 3417 930 359 358 313 3418 982 1209 1164 709 3419 974 981 973 1008 3420 1184 113 593 592 3421 1009 682 683 713 3422 1142 1209 638 1184 3423 909 391 425 928 3424 1064 942 1117 1174 3425 1184 113 459 458 3426 461 115 983 116 3427 970 116 117 462 3428 907 395 394 361 3429 1205 207 208 264 3430 1021 682 715 681 3431 983 462 507 461 3432 990 313 314 359 3433 589 117 970 116 3434 953 969 510 968 3435 983 635 589 590 3436 1164 709 683 684 3437 1191 1056 1057 1120 3438 1093 156 22 605 3439 1010 461 995 506 3440 1109 566 565 996 3441 1205 1032 207 161 3442 1211 297 1106 343 3443 1084 1063 1058 1200 3444 993 541 540 507 3445 1184 1000 1170 504 3446 1212 302 1187 347 3447 1077 1022 1194 1023 3448 1036 162 282 37 3449 901 397 416 396 3450 930 357 929 961 3451 1207 960 1086 1176 3452 457 112 111 1011 3453 1022 1209 1077 1194 3454 713 1021 715 1209 3455 27 601 26 160 3456 1069 1076 1084 1209 3457 1024 1023 679 711 3458 1147 997 556 1133 3459 768 1034 785 1035 3460 1098 597 642 720 3461 1207 938 1169 1177 3462 1086 1147 1133 997 3463 1004 762 763 779 3464 1098 790 597 720 3465 1065 1064 1174 1090 3466 1131 532 533 570 3467 1149 961 356 311 3468 997 556 497 498 3469 1032 775 282 718 3470 977 308 765 93 3471 1014 790 720 776 3472 1086 960 1005 978 3473 1160 766 783 782 3474 1194 1011 457 1128 3475 1005 781 763 1096 3476 1106 52 174 173 3477 1211 53 296 175 3478 1202 781 1096 774 3479 773 430 90 791 3480 773 430 1 90 3481 42 1 773 430 3482 1030 699 645 646 3483 978 354 355 410 3484 37 1035 769 1036 3485 164 1017 1006 39 3486 784 1034 768 1017 3487 1035 1034 785 1037 3488 1017 1018 1016 1034 3489 1017 1016 784 1034 3490 1147 564 534 552 3491 1070 980 975 974 3492 1035 162 163 208 3493 1096 328 429 474 3494 779 778 1189 1004 3495 1013 1025 641 642 3496 980 204 205 243 3497 927 938 939 388 3498 1082 1018 1152 1205 3499 1008 648 649 682 3500 26 981 25 159 3501 975 280 242 243 3502 1070 981 974 1008 3503 1114 964 965 966 3504 1132 489 490 991 3505 1059 1192 922 1173 3506 909 359 990 1139 3507 676 982 1209 1142 3508 992 561 527 991 3509 930 449 448 73 3510 961 357 311 312 3511 1090 982 972 1174 3512 713 1009 1021 1209 3513 981 603 1008 602 3514 1194 502 457 503 3515 1065 1174 1064 956 3516 113 592 459 114 3517 1090 1000 1076 1142 3518 1084 1009 1008 1092 3519 669 921 631 1150 3520 954 464 587 1214 3521 1090 1091 1069 1076 3522 1076 1194 1209 1184 3523 1022 1184 639 677 3524 457 111 1128 1011 3525 593 113 1184 1011 3526 1194 1022 1209 1184 3527 928 425 419 391 3528 879 1198 878 382 3529 1148 975 243 280 3530 1106 218 173 219 3531 1184 459 113 592 3532 1091 1166 1194 1136 3533 1075 1001 1023 1194 3534 1011 112 594 593 3535 1160 92 308 307 3536 1069 972 982 1164 3537 674 1097 673 1174 3538 1012 455 501 1002 3539 109 455 110 596 3540 595 111 456 110 3541 596 618 109 1013 3542 8 574 108 720 3543 598 597 643 1028 3544 618 108 473 1014 3545 1063 959 1201 1084 3546 1012 1025 1013 1002 3547 1170 536 1194 503 3548 1008 649 1009 682 3549 1190 1082 1152 1205 3550 958 203 241 202 3551 1121 1177 352 1102 3552 1036 1032 1205 1037 3553 682 715 713 1021 3554 1102 285 210 1006 3555 203 958 241 974 3556 1147 1110 564 535 3557 1149 496 451 497 3558 1147 1001 555 1002 3559 1019 600 1030 1032 3560 1147 499 1003 1002 3561 909 358 930 359 3562 939 928 388 419 3563 1020 1021 647 648 3564 1014 777 776 761 3565 1025 679 641 701 3566 1003 500 1014 1002 3567 1014 454 761 106 3568 1012 640 595 641 3569 618 720 108 1014 3570 1021 648 682 681 3571 1004 762 779 778 3572 165 210 1121 183 3573 1098 772 597 790 3574 1014 761 776 106 3575 109 1013 618 473 3576 109 455 1013 473 3577 596 1013 109 455 3578 1128 639 640 678 3579 1098 720 642 618 3580 473 1014 108 574 3581 618 473 108 109 3582 1190 1152 244 264 3583 1013 618 642 596 3584 1003 498 1004 453 3585 977 765 764 93 3586 1133 534 533 495 3587 1014 500 454 574 3588 1147 1004 498 997 3589 137 597 772 136 3590 1147 552 499 555 3591 718 1032 29 282 3592 1026 643 697 701 3593 1002 499 500 555 3594 772 597 790 136 3595 1019 601 1020 1031 3596 776 574 8 720 3597 1098 642 1026 1013 3598 790 720 136 597 3599 776 8 574 107 3600 776 107 574 106 3601 1110 570 533 564 3602 1176 1149 356 978 3603 1003 453 454 499 3604 1075 1002 1074 1025 3605 1003 105 453 762 3606 135 8 720 776 3607 770 138 599 598 3608 1005 780 781 977 3609 790 720 776 135 3610 790 136 720 135 3611 1067 1160 1179 960 3612 1035 1036 1037 769 3613 1003 761 1014 454 3614 1014 500 574 473 3615 978 1176 1133 1086 3616 1014 776 574 106 3617 1035 38 768 163 3618 597 1028 772 1098 3619 1028 771 787 770 3620 1149 310 71 311 3621 644 645 1030 699 3622 1082 1027 1028 1088 3623 1088 789 599 770 3624 1037 1034 800 1033 3625 1028 1033 787 788 3626 816 1112 817 1180 3627 598 1028 137 597 3628 348 347 1181 1187 3629 1172 623 622 808 3630 113 1011 112 458 3631 600 27 28 161 3632 1019 161 27 600 3633 1033 793 787 788 3634 981 158 159 204 3635 1001 1110 536 1194 3636 1032 1030 1088 645 3637 1082 1033 1037 1088 3638 1091 1170 1076 998 3639 981 25 159 158 3640 1019 646 1030 600 3641 1019 27 161 160 3642 974 204 242 203 3643 137 597 1028 772 3644 244 1190 980 1148 3645 1036 775 786 769 3646 789 140 775 718 3647 1207 1176 928 939 3648 1190 1119 1077 1027 3649 1002 500 501 555 3650 1088 599 1028 770 3651 1098 1013 1014 618 3652 957 652 686 685 3653 1028 771 770 598 3654 29 1032 621 186 3655 621 28 186 161 3656 621 600 28 161 3657 1190 244 206 264 3658 1027 680 1119 1024 3659 29 28 186 621 3660 1032 645 718 621 3661 775 282 718 2 3662 2 718 29 282 3663 981 603 973 1008 3664 1205 206 1019 161 3665 1148 980 243 975 3666 137 1028 771 772 3667 771 598 137 138 3668 1207 928 1176 1166 3669 1066 1148 1207 1058 3670 786 1088 1037 787 3671 1096 1004 997 452 3672 1121 305 1169 166 3673 1005 997 1096 1004 3674 1207 1071 1148 1066 3675 1017 39 163 768 3676 1067 1082 1086 1179 3677 939 350 389 388 3678 1098 1026 642 643 3679 1006 773 285 40 3680 1006 285 164 40 3681 1098 643 642 597 3682 1205 264 206 207 3683 1035 785 768 769 3684 768 163 38 39 3685 1017 1016 767 784 3686 140 718 2 775 3687 1017 1018 1007 1016 3688 1030 600 646 645 3689 1202 764 781 774 3690 1184 677 638 639 3691 1006 767 1016 783 3692 1037 786 800 785 3693 770 139 599 138 3694 162 1035 37 1036 3695 775 36 282 2 3696 1190 1119 1070 1077 3697 1035 768 38 769 3698 1167 247 248 278 3699 1166 1110 1131 1133 3700 1205 1034 1035 1037 3701 1149 496 997 1133 3702 1034 784 799 1016 3703 1202 978 977 309 3704 1036 775 769 37 3705 1205 1032 1019 1030 3706 937 304 46 167 3707 1136 568 537 1170 3708 1001 535 555 501 3709 1037 769 786 785 3710 775 282 36 37 3711 1147 564 552 535 3712 1160 1016 1179 799 3713 1036 1032 775 282 3714 1036 786 775 1032 3715 976 245 979 212 3716 770 771 138 598 3717 800 787 1037 1033 3718 789 139 140 718 3719 1088 1032 786 1037 3720 789 139 599 770 3721 789 599 139 718 3722 1003 453 105 454 3723 1074 1014 1098 1013 3724 111 1011 112 594 3725 1207 1086 1067 1082 3726 893 409 372 894 3727 897 86 326 325 3728 1101 325 370 324 3729 1101 1208 84 324 3730 86 436 85 325 3731 1172 1103 623 808 3732 1108 100 573 433 3733 1208 323 438 84 3734 1115 625 578 717 3735 331 427 89 895 3736 844 738 721 843 3737 88 327 434 87 3738 896 87 435 434 3739 893 372 409 405 3740 859 1108 749 427 3741 88 895 331 476 3742 573 100 734 101 3743 1083 855 837 1168 3744 896 87 327 326 3745 1180 67 730 733 3746 5 427 63 734 3747 89 331 476 88 3748 476 895 89 573 3749 843 432 433 478 3750 895 1108 427 573 3751 5 573 734 101 3752 5 427 734 573 3753 21 20 1161 607 3754 47 937 168 1187 3755 1161 923 199 154 3756 1062 923 1171 912 3757 1153 969 984 955 3758 913 153 152 19 3759 866 375 424 374 3760 225 258 259 827 3761 865 337 291 848 3762 826 226 259 225 3763 887 426 1095 403 3764 981 25 603 602 3765 241 974 958 959 3766 959 936 274 248 3767 1098 642 1013 618 3768 1090 1076 982 1142 3769 1106 52 297 1211 3770 253 1188 876 273 3771 879 416 382 383 3772 973 158 203 157 3773 1164 684 683 650 3774 973 24 603 158 3775 991 992 1054 987 3776 938 937 926 1175 3777 981 603 25 158 3778 843 99 433 432 3779 842 738 722 739 3780 895 331 427 373 3781 840 620 475 1204 3782 858 432 477 431 3783 88 434 895 476 3784 1044 920 1047 1145 3785 858 722 843 432 3786 1128 639 1022 1184 3787 909 358 392 391 3788 450 495 961 449 3789 1177 351 389 350 3790 1001 536 502 1194 3791 1057 1159 1109 989 3792 1068 1107 1061 1153 3793 880 1213 413 398 3794 343 879 344 1106 3795 686 942 653 957 3796 1161 199 912 153 3797 982 1164 684 709 3798 1053 901 899 1198 3799 1121 1169 979 211 3800 1169 45 305 304 3801 860 66 731 730 3802 333 288 1112 335 3803 1138 1123 816 813 3804 1180 812 141 729 3805 450 961 495 496 3806 1189 794 795 796 3807 825 330 289 335 3808 1041 826 866 1094 3809 1197 1101 482 481 3810 884 405 885 406 3811 1040 830 836 1183 3812 853 223 1203 177 3813 935 201 941 240 3814 690 874 657 915 3815 1078 874 1124 1043 3816 835 149 869 1104 3817 916 690 707 705 3818 933 1118 547 920 3819 1041 1087 866 1122 3820 1144 693 692 659 3821 612 149 15 16 3822 1151 151 197 196 3823 151 868 18 17 3824 863 1193 1127 861 3825 829 193 194 232 3826 990 1159 989 493 3827 1110 536 570 564 3828 1097 995 971 1065 3829 982 1076 1069 1209 3830 982 709 710 675 3831 929 390 357 391 3832 1207 1066 1200 1166 3833 949 439 484 438 3834 943 562 944 951 3835 871 1145 628 582 3836 983 116 115 590 3837 1174 971 673 956 3838 995 507 540 506 3839 995 994 993 507 3840 1010 983 461 115 3841 905 362 1132 317 3842 1162 300 902 345 3843 218 877 217 251 3844 1162 345 344 299 3845 218 1106 172 1162 3846 1162 299 300 345 3847 903 170 171 216 3848 909 358 929 930 3849 369 368 898 323 3850 1063 925 1201 936 3851 927 349 938 388 3852 855 693 837 716 3853 854 270 852 1151 3854 412 377 883 882 3855 950 945 949 523 3856 1114 964 1199 1146 3857 888 368 402 401 3858 1157 1095 422 403 3859 1046 1087 1083 1060 3860 1104 868 16 611 3861 1154 257 224 258 3862 1108 433 573 479 3863 46 168 47 937 3864 941 202 1092 958 3865 1092 1008 958 973 3866 604 1008 649 1092 3867 1176 978 410 960 3868 1057 1120 1091 1200 3869 1091 1166 1077 1194 3870 1133 495 496 534 3871 961 312 72 449 3872 1131 990 909 930 3873 909 929 1131 930 3874 1040 830 823 1129 3875 1129 822 146 191 3876 836 693 1144 659 3877 1138 816 817 813 3878 836 660 693 659 3879 1136 1159 1131 532 3880 990 1131 532 494 3881 1057 909 990 1139 3882 1053 988 900 899 3883 1194 457 502 1128 3884 955 634 633 588 3885 1054 991 1132 1134 3886 1139 907 394 361 3887 437 84 1101 1208 3888 1206 1118 1197 946 3889 892 886 404 371 3890 897 326 371 325 3891 1137 1108 843 844 3892 883 888 1157 402 3893 1101 85 325 324 3894 865 291 337 336 3895 1114 962 1199 964 3896 893 897 947 896 3897 887 1095 1157 403 3898 952 1153 1068 1061 3899 1043 852 1078 851 3900 1135 876 1188 273 3901 889 417 882 881 3902 867 380 880 881 3903 1199 81 321 320 3904 829 231 232 277 3905 1196 1106 1211 174 3906 1182 809 1103 741 3907 924 1171 271 911 3908 1162 172 217 171 3909 1062 1090 1174 1064 3910 1212 216 936 215 3911 1172 714 696 664 3912 844 759 748 737 3913 808 576 803 726 3914 1140 840 857 1103 3915 894 327 372 896 3916 1112 289 334 335 3917 1031 680 646 647 3918 1163 1068 1114 1049 3919 1184 1011 113 458 3920 643 1028 597 1098 3921 979 245 976 1152 3922 979 212 245 211 3923 1190 1030 1019 1031 3924 1036 282 162 207 3925 1190 1070 980 1148 3926 1084 1070 975 974 3927 1058 1063 1167 1181 3928 927 939 928 388 3929 1022 1209 1184 677 3930 1071 976 1148 1152 3931 938 350 939 388 3932 926 303 937 349 3933 1187 1181 940 936 3934 1212 169 1187 302 3935 1187 940 168 214 3936 1187 47 303 302 3937 920 567 547 548 3938 943 933 944 546 3939 1146 965 442 900 3940 991 527 489 528 3941 1203 1193 222 223 3942 1192 1135 922 913 3943 1143 994 541 993 3944 900 319 79 442 3945 1156 440 82 321 3946 495 496 961 1133 3947 1176 390 407 410 3948 929 391 928 419 3949 927 387 1200 1181 3950 1109 1134 529 566 3951 1134 1185 1109 529 3952 1057 990 989 1139 3953 1185 446 445 908 3954 1191 393 423 392 3955 1190 1070 1148 1071 3956 1020 160 205 159 3957 678 715 711 1022 3958 852 1193 272 255 3959 1052 897 892 1197 3960 1080 1154 1155 864 3961 861 221 175 176 3962 1141 878 1211 1106 3963 1154 1155 853 1203 3964 1127 255 221 1193 3965 1080 827 1154 864 3966 1091 1159 998 1109 3967 985 543 509 969 3968 964 441 486 962 3969 908 395 907 361 3970 1185 1109 989 1056 3971 1167 247 278 280 3972 1202 309 429 355 3973 1064 956 1174 1117 3974 1161 199 923 912 3975 901 1055 907 1126 3976 1202 429 95 774 3977 955 956 634 971 3978 370 891 324 369 3979 1156 898 368 322 3980 1101 437 482 436 3981 1188 273 267 236 3982 1196 1127 862 220 3983 399 1213 413 890 3984 1083 870 1047 1045 3985 800 796 1033 1034 3986 1014 574 454 106 3987 1082 1086 1179 1189 3988 1025 701 641 642 3989 1074 1002 1013 1025 3990 1176 960 410 407 3991 1042 1050 1049 1163 3992 950 949 485 523 3993 867 341 379 863 3994 868 1104 196 1151 3995 875 197 1151 151 3996 1183 15 612 149 3997 1085 1072 1141 1055 3998 851 850 233 272 3999 1085 925 924 1201 4000 1085 935 1201 924 4001 925 936 249 1201 4002 975 974 980 242 4003 1048 910 911 1105 4004 1026 1082 1028 1074 4005 1027 697 1024 1026 4006 970 117 589 588 4007 983 116 970 462 4008 970 994 983 462 4009 996 998 999 539 4010 1068 1114 880 1053 4011 956 672 673 703 4012 970 462 117 463 4013 970 589 983 971 4014 1067 1007 1102 979 4015 1184 459 1000 504 4016 960 353 354 407 4017 1067 1016 1160 1102 4018 1160 308 92 765 4019 1102 1006 1016 783 4020 1177 1121 1169 979 4021 1102 1006 210 1007 4022 1176 419 407 390 4023 1041 866 865 1122 4024 1130 837 1129 833 4025 1053 1141 901 1198 4026 1081 1112 845 885 4027 864 337 292 338 4028 1130 832 821 1172 4029 864 1155 377 338 4030 1154 223 257 256 4031 1166 929 1131 909 4032 1013 1014 618 473 4033 1013 500 1014 473 4034 1012 110 595 456 4035 1128 111 595 594 4036 929 1133 1131 961 4037 782 977 1160 765 4038 1189 797 795 794 4039 960 1160 977 308 4040 1147 556 498 552 4041 946 521 567 919 4042 1116 889 888 1050 4043 890 889 1114 1049 4044 1199 441 962 440 4045 673 1097 971 1174 4046 1070 981 1020 980 4047 1092 202 156 157 4048 1010 995 461 983 4049 1040 829 830 1183 4050 1203 177 223 222 4051 849 178 57 179 4052 1043 874 1104 1078 4053 852 272 270 255 4054 828 829 232 277 4055 1122 426 376 1095 4056 238 239 935 1171 4057 1171 268 237 238 4058 934 687 653 654 4059 1161 154 21 155 4060 1093 606 1161 652 4061 1063 959 936 1201 4062 1022 1209 715 1119 4063 1201 274 275 240 4064 883 1157 422 402 4065 883 888 412 882 4066 885 333 406 332 4067 892 887 404 886 4068 824 281 277 258 4069 824 231 823 829 4070 1050 883 882 888 4071 1199 81 441 440 4072 921 916 1150 669 4073 1185 491 492 530 4074 1059 1107 1173 1043 4075 908 362 395 361 4076 1185 931 492 446 4077 905 907 908 395 4078 1176 356 929 390 4079 1184 638 677 1209 4080 1142 1097 636 675 4081 594 1128 1011 639 4082 1212 346 903 301 4083 1187 1181 1212 347 4084 1126 902 384 345 4085 988 443 900 906 4086 1105 1126 904 907 4087 1174 957 706 972 4088 1059 1192 1165 1135 4089 1100 584 467 121 4090 1153 953 969 1214 4091 875 151 18 152 4092 875 152 197 151 4093 877 1171 251 268 4094 1106 877 219 1196 4095 912 199 198 153 4096 653 957 942 1161 4097 1107 1153 1064 1125 4098 1161 606 607 652 4099 198 197 913 152 4100 867 861 296 341 4101 988 527 489 991 4102 1146 442 964 441 4103 966 525 487 526 4104 905 363 362 317 4105 1173 655 688 922 4106 1116 945 944 1118 4107 1114 963 967 951 4108 199 912 238 923 4109 859 373 894 895 4110 893 409 885 405 4111 840 431 518 572 4112 843 722 738 721 4113 1096 429 328 355 4114 1194 1128 1184 1011 4115 1091 1159 1136 1170 4116 1128 502 1001 456 4117 1136 1170 537 536 4118 593 112 113 1011 4119 1206 1118 946 945 4120 945 1208 1206 1116 4121 946 1206 945 1208 4122 1197 897 1101 481 4123 1050 1116 1118 1206 4124 1024 711 697 680 4125 1190 1031 1020 1119 4126 1067 1082 1034 1018 4127 1020 1008 1021 648 4128 1201 240 241 274 4129 1175 213 167 937 4130 842 722 738 843 4131 857 518 553 517 4132 932 520 569 519 4133 1108 843 100 433 4134 100 843 99 433 4135 842 722 858 739 4136 1182 1103 623 578 4137 843 99 722 721 4138 1140 842 857 858 4139 936 216 925 249 4140 925 216 910 250 4141 936 1212 1187 1181 4142 903 49 1212 301 4143 1182 1103 809 808 4144 1212 904 346 347 4145 1102 285 1006 773 4146 1102 430 773 791 4147 1102 411 353 960 4148 1152 1018 1007 209 4149 979 1169 212 211 4150 1160 92 766 765 4151 1207 1176 939 1177 4152 1007 1006 210 164 4153 979 211 266 210 4154 1083 1044 1047 870 4155 1163 1114 1116 1049 4156 1046 1099 918 1079 4157 1138 1112 866 884 4158 1195 1108 478 843 4159 932 569 520 918 4160 1130 1079 1083 1168 4161 1145 582 123 583 4162 1130 1168 1172 1079 4163 1084 1008 1070 974 4164 242 975 278 280 4165 1139 1057 1191 1056 4166 998 1159 565 1109 4167 878 342 867 1211 4168 879 344 383 382 4169 1084 959 975 1167 4170 382 344 343 879 4171 1066 1091 1084 1200 4172 222 861 1203 176 4173 853 178 223 177 4174 881 379 380 414 4175 222 223 1193 256 4176 949 523 945 484 4177 951 545 562 559 4178 969 968 543 510 4179 913 197 875 152 4180 950 485 524 523 4181 1050 1042 1049 882 4182 945 1208 484 522 4183 1143 542 541 508 4184 875 609 655 922 4185 875 655 609 610 4186 914 875 868 610 4187 1156 368 888 401 4188 860 731 747 730 4189 1186 281 258 259 4190 1144 1124 704 873 4191 872 1113 1150 629 4192 1125 670 671 702 4193 1130 821 1038 1158 4194 1113 584 629 583 4195 704 873 712 1144 4196 1198 416 418 382 4197 871 667 666 628 4198 985 969 968 543 4199 876 237 912 1171 4200 964 486 963 962 4201 399 890 413 414 4202 950 524 485 962 4203 950 485 949 962 4204 944 523 562 557 4205 1203 295 55 176 4206 817 729 745 812 4207 1081 1112 860 845 4208 1138 817 816 1112 4209 809 754 741 742 4210 744 743 807 806 4211 805 33 728 727 4212 893 326 896 372 4213 1087 1130 1039 1138 4214 1136 536 570 1110 4215 951 524 559 562 4216 951 950 524 562 4217 921 705 916 669 4218 944 562 523 950 4219 1047 1045 1150 1163 4220 943 952 545 951 4221 1024 679 697 711 4222 1152 1007 266 209 4223 1034 796 785 800 4224 786 1037 800 787 4225 1205 207 206 161 4226 1193 1203 222 861 4227 863 861 1203 1193 4228 1155 378 339 1203 4229 1042 1155 1154 1203 4230 849 1155 338 293 4231 1050 882 1155 1042 4232 1113 468 513 467 4233 1059 1173 922 914 4234 1214 633 955 1125 4235 1045 1124 873 1150 4236 584 1113 630 1100 4237 1113 467 584 122 4238 1146 442 319 900 4239 400 414 417 890 4240 988 987 527 991 4241 866 374 334 336 4242 1180 67 428 288 4243 406 884 408 885 4244 816 228 141 187 4245 1180 751 141 283 4246 884 406 374 424 4247 1112 866 408 334 4248 1122 1041 1095 864 4249 894 409 372 373 4250 893 405 371 372 4251 867 379 881 863 4252 1042 881 1203 863 4253 1206 891 887 1157 4254 850 233 272 269 4255 800 793 1033 796 4256 1020 981 26 159 4257 1169 212 166 167 4258 1189 798 793 1029 4259 1012 455 1013 596 4260 1151 196 235 234 4261 1173 915 705 689 4262 1125 1117 1173 708 4263 954 588 955 587 4264 1161 607 653 652 4265 914 1151 868 875 4266 1088 789 786 1032 4267 1098 1015 1029 777 4268 1054 1053 992 1072 4269 987 563 526 527 4270 987 526 563 986 4271 1199 321 81 440 4272 1199 321 366 320 4273 490 991 489 528 4274 892 325 370 1101 4275 1095 1041 1087 1080 4276 1122 376 426 375 4277 1095 403 426 422 4278 887 404 426 403 4279 1080 1155 1095 864 4280 1149 328 451 310 4281 1036 162 1205 207 4282 839 624 579 580 4283 1111 581 580 125 4284 1204 838 1099 1158 4285 1115 750 840 736 4286 1204 838 698 624 4287 1115 620 840 1204 4288 839 580 126 471 4289 1204 1103 698 1172 4290 1056 1139 1185 908 4291 1134 560 1143 528 4292 360 1139 315 314 4293 871 628 627 582 4294 1214 587 632 586 4295 378 1203 882 881 4296 943 545 562 951 4297 1100 466 465 120 4298 849 1155 1154 864 4299 850 256 269 272 4300 1117 688 687 922 4301 1043 915 1173 914 4302 1161 653 607 608 4303 935 239 924 1171 4304 1053 900 1213 899 4305 828 1080 850 1078 4306 865 848 827 864 4307 865 337 375 336 4308 813 265 1123 261 4309 885 884 1051 893 4310 826 225 848 180 4311 865 375 866 336 4312 857 842 1195 858 4313 948 479 480 554 4314 844 842 759 738 4315 841 755 759 753 4316 807 803 808 821 4317 812 816 187 813 4318 842 722 843 858 4319 748 841 755 759 4320 1041 826 865 866 4321 942 703 1174 686 4322 1139 1056 989 1057 4323 1139 393 359 360 4324 989 1056 1109 1057 4325 926 387 348 349 4326 1200 1166 909 928 4327 914 868 656 610 4328 1192 912 1135 913 4329 1192 876 1171 1141 4330 1171 237 268 876 4331 914 689 655 656 4332 1149 71 450 311 4333 1030 1031 699 646 4334 1090 1097 1142 982 4335 1142 675 637 676 4336 1010 636 1142 1097 4337 947 896 897 435 4338 258 824 827 1154 4339 1046 1137 1051 1195 4340 932 569 918 1099 4341 841 759 842 753 4342 1186 259 826 226 4343 838 580 626 624 4344 1115 1204 840 1103 4345 840 1140 857 858 4346 818 756 811 760 4347 1150 668 629 630 4348 1183 1144 659 836 4349 915 656 914 1104 4350 1173 705 702 689 4351 1130 832 1089 804 4352 1124 1150 668 873 4353 851 234 233 195 4354 1105 1126 1055 1048 4355 1110 564 535 536 4356 1162 344 345 879 4357 1136 537 568 570 4358 1072 1065 1064 1153 4359 67 860 1180 730 4360 1186 260 1123 279 4361 1046 1138 1130 1087 4362 846 290 181 847 4363 833 694 1168 837 4364 1094 227 260 226 4365 858 432 431 98 4366 858 477 518 431 4367 857 477 553 518 4368 572 717 840 736 4369 757 807 744 743 4370 820 662 617 663 4371 1195 477 553 857 4372 1158 842 819 1137 4373 801 727 34 143 4374 1038 806 804 813 4375 1096 781 763 792 4376 1149 451 328 474 4377 978 1005 997 1096 4378 1181 386 387 1210 4379 1176 407 389 1177 4380 1005 977 781 1096 4381 1141 1198 880 878 4382 396 907 901 905 4383 901 879 1141 1126 4384 1198 1213 398 899 4385 899 364 397 363 4386 397 899 398 364 4387 1049 881 867 880 4388 1198 879 901 416 4389 1198 416 901 397 4390 853 177 56 178 4391 863 340 1203 295 4392 849 338 1155 864 4393 849 338 292 293 4394 865 827 848 826 4395 1042 1193 1154 850 4396 861 295 1203 176 4397 1195 478 477 858 4398 744 807 810 806 4399 1158 807 810 809 4400 1140 758 819 842 4401 475 572 128 840 4402 980 974 981 204 4403 1176 356 1149 929 4404 1119 681 680 647 4405 1027 1119 680 1031 4406 678 1022 711 1023 4407 1020 26 602 601 4408 1152 1205 1018 208 4409 1019 1030 646 1031 4410 1020 160 26 601 4411 863 379 881 340 4412 1203 1154 1193 223 4413 863 1203 340 881 4414 861 54 175 296 4415 222 221 861 176 4416 1041 1080 1186 1039 4417 824 281 823 231 4418 1155 882 378 1203 4419 920 548 547 514 4420 1044 1060 917 1079 4421 1159 532 568 531 4422 1085 911 925 1105 4423 504 1011 1184 458 4424 1170 537 503 504 4425 906 443 318 78 4426 1132 316 445 77 4427 908 316 362 361 4428 956 1117 672 703 4429 1132 317 316 77 4430 1135 237 198 912 4431 914 1135 1151 875 4432 957 686 706 685 4433 923 200 199 154 4434 913 152 609 19 4435 913 609 608 19 4436 913 875 922 609 4437 913 152 875 609 4438 1104 612 657 611 4439 850 1154 257 256 4440 853 293 294 339 4441 849 179 57 292 4442 1050 1155 882 883 4443 336 846 847 290 4444 849 179 224 178 4445 1155 1042 882 1203 4446 1085 1192 1064 1062 4447 345 879 344 383 4448 1141 1068 1053 1072 4449 911 250 217 251 4450 834 14 613 148 4451 947 932 481 1197 4452 830 1183 193 834 4453 834 1183 193 148 4454 831 192 147 830 4455 830 193 192 147 4456 830 829 231 193 4457 1044 856 1168 1079 4458 1051 948 894 896 4459 1182 724 1103 1115 4460 1193 861 222 221 4461 898 439 949 438 4462 1156 888 889 401 4463 976 245 246 276 4464 1152 245 276 262 4465 778 1189 1015 798 4466 1070 981 980 974 4467 976 212 246 245 4468 1175 246 212 213 4469 1175 167 1169 937 4470 240 958 941 1201 4471 1023 1194 1001 1128 4472 1109 565 566 530 4473 1107 1141 1064 1068 4474 1134 490 529 528 4475 1054 1134 1143 991 4476 1143 984 542 508 4477 1090 998 996 1073 4478 899 988 900 906 4479 988 489 527 488 4480 992 563 527 561 4481 1174 706 674 710 4482 1145 514 513 468 4483 1051 1087 884 1138 4484 1111 516 470 471 4485 1130 1083 837 1168 4486 1145 582 469 123 4487 970 589 971 634 4488 970 984 994 508 4489 970 463 984 508 4490 1143 992 1054 991 4491 1196 1211 1127 220 4492 1191 907 1056 1120 4493 1207 1175 976 1169 4494 941 156 1092 202 4495 1084 1066 975 1070 4496 1093 941 935 201 4497 1019 600 1032 161 4498 647 648 1021 681 4499 682 1021 713 1009 4500 246 1167 1148 280 4501 975 242 980 243 4502 1082 1037 1205 1088 4503 893 372 896 894 4504 1138 1094 866 1112 4505 1158 857 1140 842 4506 893 405 886 371 4507 893 326 897 896 4508 842 753 759 738 4509 894 885 409 332 4510 1108 478 843 433 4511 1205 1152 1190 264 4512 1166 929 928 1176 4513 830 192 231 823 4514 1040 1144 836 837 4515 830 231 829 823 4516 1183 148 15 149 4517 830 231 192 193 4518 1080 1154 1042 1155 4519 849 853 1155 293 4520 806 188 143 190 4521 11 822 1089 145 4522 806 143 188 805 4523 822 616 615 12 4524 1077 1066 1166 1091 4525 1057 1131 990 909 4526 886 405 424 404 4527 1101 437 483 482 4528 1137 1195 842 843 4529 884 405 424 886 4530 408 885 884 1112 4531 1210 423 420 386 4532 1085 1090 1064 1072 4533 959 1167 248 278 4534 940 214 936 1167 4535 1058 1181 926 927 4536 1126 416 879 383 4537 926 348 303 349 4538 1080 1039 1040 824 4539 881 379 378 340 4540 1087 1083 1080 1039 4541 847 290 291 336 4542 1146 319 320 365 4543 1114 1068 966 1053 4544 965 487 488 526 4545 1146 900 319 1213 4546 1116 1156 949 898 4547 965 487 442 488 4548 966 965 987 526 4549 1178 1111 470 581 4550 1046 932 1099 1195 4551 1140 758 739 740 4552 1155 339 338 293 4553 1107 1068 1165 1141 4554 963 967 559 525 4555 1114 962 963 1116 4556 1199 441 964 962 4557 219 877 218 252 4558 867 342 381 380 4559 1113 468 467 122 4560 530 1185 529 1109 4561 1200 909 392 425 4562 423 420 1191 1210 4563 982 972 684 1164 4564 1056 1185 1109 1134 4565 1065 1090 1097 995 4566 1058 927 1207 1200 4567 1077 1084 1066 1091 4568 1070 980 1148 975 4569 1181 1210 387 1200 4570 1085 1048 1055 1141 4571 1092 1093 651 605 4572 985 542 563 992 4573 995 983 994 507 4574 346 347 904 385 4575 1027 644 1028 1088 4576 1064 1068 1141 1072 4577 1143 541 994 508 4578 993 994 541 507 4579 1117 672 703 708 4580 849 853 1154 1155 4581 1155 338 339 377 4582 1155 293 853 339 4583 1042 1154 1193 1203 4584 1075 1002 1001 1147 4585 849 293 292 57 4586 1142 459 505 1000 4587 1010 1142 636 591 4588 1097 590 635 983 4589 1120 1191 1210 1200 4590 1105 902 910 1212 4591 1212 302 301 48 4592 170 48 1212 49 4593 1212 169 302 48 4594 1057 1120 1200 1191 4595 1212 903 346 902 4596 1210 394 421 420 4597 862 1165 876 1188 4598 1105 1126 1048 902 4599 395 907 396 905 4600 1077 1075 1071 1027 4601 1015 761 762 778 4602 1003 762 1004 1015 4603 1147 534 556 552 4604 1015 1014 761 777 4605 798 1189 1015 1029 4606 1004 452 763 104 4607 1027 1024 697 680 4608 1207 1200 1066 1058 4609 1026 643 644 697 4610 1098 1014 1015 777 4611 1028 772 1029 788 4612 1025 679 640 641 4613 1147 1001 1110 535 4614 960 1179 977 1160 4615 1067 1152 1082 1018 4616 644 1030 1027 699 4617 1098 772 777 1029 4618 858 518 840 431 4619 1140 739 723 740 4620 857 840 858 518 4621 1163 1047 944 943 4622 1122 375 865 337 4623 1168 714 665 716 4624 817 1112 845 1180 4625 884 374 866 424 4626 1038 806 821 804 4627 852 234 270 272 4628 867 1127 861 863 4629 850 1193 272 852 4630 255 852 854 270 4631 1127 854 255 852 4632 1127 175 221 220 4633 867 880 381 878 4634 927 387 926 349 4635 1121 306 352 351 4636 976 212 979 1169 4637 960 1160 353 1102 4638 1069 982 1209 1164 4639 927 388 928 425 4640 880 418 381 878 4641 968 986 558 967 4642 968 543 558 986 4643 968 952 967 544 4644 953 510 511 544 4645 1214 119 587 586 4646 968 1068 952 1153 4647 968 543 510 544 4648 953 952 968 544 4649 968 544 558 543 4650 968 558 544 967 4651 1090 1000 998 1076 4652 1076 1000 1184 1142 4653 1174 706 673 674 4654 505 539 1000 538 4655 1117 934 687 942 4656 1170 1159 568 538 4657 1126 879 902 345 4658 1212 170 903 216 4659 876 268 252 273 4660 1043 852 1151 1165 4661 702 708 1125 1173 4662 1065 994 1143 993 4663 1003 500 499 454 4664 1029 788 777 798 4665 1029 772 777 788 4666 1015 761 778 777 4667 1003 761 762 1015 4668 859 894 373 332 4669 1108 100 721 734 4670 818 756 760 755 4671 859 895 427 373 4672 859 1108 427 895 4673 837 693 1144 836 4674 1042 1193 850 852 4675 944 943 1047 933 4676 1129 814 1089 822 4677 1082 1030 1027 1088 4678 598 771 137 1028 4679 1143 560 1134 993 4680 1125 672 708 671 4681 985 509 984 969 4682 985 509 543 542 4683 1061 952 1100 943 4684 1032 621 161 600 4685 1032 786 775 789 4686 1035 162 1205 1036 4687 1179 799 1034 796 4688 1088 599 645 644 4689 927 926 387 1181 4690 1063 1200 1120 1181 4691 1063 1181 936 1167 4692 1210 386 385 1181 4693 1178 515 469 470 4694 887 403 891 404 4695 1083 1144 855 870 4696 1156 439 962 949 4697 1156 367 368 401 4698 898 1208 323 438 4699 1035 1017 163 768 4700 1017 39 164 163 4701 1032 718 599 789 4702 1037 787 1088 1033 4703 1036 786 1037 769 4704 1036 282 775 37 4705 1032 599 718 645 4706 1088 770 787 786 4707 1205 1019 1032 161 4708 1179 1189 1005 797 4709 1082 1033 1189 1034 4710 1003 1014 761 1015 4711 778 794 1189 798 4712 1015 762 1004 778 4713 1003 1014 500 454 4714 1029 798 793 788 4715 1029 793 1033 788 4716 1067 1152 1007 979 4717 38 769 37 1035 4718 164 1006 40 39 4719 1102 430 307 352 4720 1177 389 351 411 4721 1091 1109 1073 1057 4722 1136 570 536 537 4723 1073 996 1134 1109 4724 988 905 899 1054 4725 1141 879 1198 878 4726 1126 416 415 901 4727 1185 989 1139 1056 4728 1073 1109 998 996 4729 998 565 1159 538 4730 1073 1057 1109 1056 4731 804 189 814 265 4732 807 803 743 726 4733 806 802 821 804 4734 806 188 813 805 4735 190 804 188 265 4736 821 804 802 820 4737 820 189 1089 804 4738 1130 1129 1089 833 4739 947 554 948 480 4740 947 480 481 519 4741 948 434 480 479 4742 948 895 434 479 4743 948 480 434 896 4744 948 434 895 896 4745 946 1208 945 522 4746 1197 946 482 1101 4747 1158 1195 842 1137 4748 1129 814 822 191 4749 1172 1168 833 714 4750 833 661 660 1129 4751 833 695 694 661 4752 891 1101 892 370 4753 1130 1138 1046 1038 4754 694 837 833 660 4755 188 804 813 265 4756 1176 410 356 390 4757 978 356 410 355 4758 1096 497 452 997 4759 1004 997 452 498 4760 1067 1007 1016 1102 4761 242 959 278 975 4762 1121 44 165 306 4763 1160 353 307 308 4764 1102 307 430 791 4765 352 1102 1177 411 4766 863 1042 867 1127 4767 1049 889 882 881 4768 1043 1173 916 1107 4769 413 890 1213 880 4770 1114 963 962 964 4771 1152 262 264 208 4772 1184 638 593 639 4773 958 959 1201 241 4774 1028 1098 1074 1029 4775 927 1200 387 425 4776 1020 1119 647 1021 4777 1067 1007 1152 1018 4778 1207 976 979 1169 4779 1024 701 697 679 4780 1001 456 502 501 4781 1075 1001 1025 1023 4782 1024 697 701 1026 4783 1098 777 772 790 4784 1194 1022 1128 1023 4785 1091 1057 1073 1120 4786 1012 641 1013 1025 4787 1012 1001 501 456 4788 1012 501 1001 1002 4789 1190 1152 1082 1071 4790 1128 111 456 595 4791 1025 1128 640 1023 4792 1075 1110 1001 1194 4793 868 656 611 1104 4794 1214 632 633 1125 4795 953 968 510 544 4796 954 463 984 970 4797 954 464 118 587 4798 954 118 588 587 4799 764 309 1202 977 4800 1096 1202 355 978 4801 1005 780 977 1179 4802 1075 1166 1086 1147 4803 1176 960 407 1177 4804 1177 938 350 939 4805 1177 1169 350 938 4806 1086 1179 1005 960 4807 851 835 233 850 4808 835 195 194 149 4809 1186 1080 827 824 4810 1043 1078 1104 851 4811 868 611 656 610 4812 1004 1086 997 1147 4813 1133 533 534 1110 4814 777 790 1014 776 4815 1128 640 1023 678 4816 1166 1086 1147 1133 4817 1092 649 650 1009 4818 1062 941 1093 1164 4819 958 1092 973 157 4820 972 651 684 1164 4821 1183 193 148 194 4822 195 196 851 234 4823 1183 148 613 15 4824 868 196 1104 150 4825 1183 658 612 613 4826 804 802 190 806 4827 9 802 719 284 4828 820 619 663 617 4829 619 719 9 802 4830 184 190 820 802 4831 820 663 700 662 4832 803 802 752 719 4833 1089 814 189 145 4834 817 811 813 812 4835 947 480 948 896 4836 841 1137 845 818 4837 1108 479 478 433 4838 748 844 841 759 4839 847 826 865 848 4840 1041 1186 1138 1039 4841 847 291 865 336 4842 847 181 180 59 4843 847 181 226 180 4844 985 968 986 543 4845 1183 613 612 15 4846 844 845 885 1081 4847 1115 740 750 736 4848 1126 902 904 384 4849 1053 987 986 966 4850 1025 640 679 1023 4851 960 308 354 353 4852 1067 1152 979 1207 4853 1024 701 1025 1026 4854 930 961 494 449 4855 819 753 754 756 4856 1206 1116 1157 1050 4857 1052 897 947 893 4858 808 742 725 726 4859 818 753 819 756 4860 840 1115 1140 750 4861 809 754 757 810 4862 1132 444 445 490 4863 1142 459 1000 1184 4864 989 492 447 493 4865 931 990 447 314 4866 989 531 492 493 4867 1136 568 1159 532 4868 11 12 822 145 4869 832 661 833 1089 4870 144 820 190 189 4871 1089 189 144 145 4872 823 1129 1039 1040 4873 822 146 145 12 4874 1038 811 806 813 4875 695 832 662 661 4876 943 562 545 546 4877 943 944 562 546 4878 1047 943 1113 933 4879 512 511 545 943 4880 872 583 628 1145 4881 1132 316 362 908 4882 899 906 363 905 4883 905 396 395 362 4884 415 396 395 907 4885 1111 515 516 917 4886 1172 695 832 700 4887 839 472 471 126 4888 839 579 472 126 4889 1080 1039 824 1186 4890 838 839 580 624 4891 417 889 890 881 4892 1050 883 1157 1206 4893 1018 1034 1205 1082 4894 718 621 29 1032 4895 1032 186 161 621 4896 29 282 1032 186 4897 1032 207 186 282 4898 1036 1037 786 1032 4899 38 37 162 1035 4900 217 877 911 251 4901 877 252 251 218 4902 1126 384 383 345 4903 421 415 1126 384 4904 1049 881 890 889 4905 1107 1125 1064 1117 4906 1153 992 985 986 4907 1125 671 670 632 4908 1135 236 237 273 4909 1157 368 369 402 4910 1198 418 416 397 4911 1214 631 1100 586 4912 1214 587 119 464 4913 921 670 1214 1125 4914 1135 1151 1165 1059 4915 1078 851 852 850 4916 838 626 1111 856 4917 1044 872 871 1145 4918 855 837 1168 716 4919 1044 871 1178 1145 4920 1009 683 1209 713 4921 1153 1143 992 1072 4922 1109 989 492 1185 4923 1010 115 591 590 4924 1142 114 592 591 4925 1170 504 1000 538 4926 1010 983 115 590 4927 1130 1079 1046 1083 4928 844 721 738 737 4929 844 842 841 759 4930 844 721 1108 843 4931 1108 737 749 734 4932 859 885 894 332 4933 1178 469 514 1145 4934 515 917 920 548 4935 1064 1117 942 1192 4936 878 343 342 1211 4937 1203 294 340 339 4938 867 380 379 341 4939 400 890 417 889 4940 1153 984 969 985 4941 1116 889 1050 1049 4942 1199 1146 964 441 4943 889 401 417 400 4944 1052 947 1197 932 4945 1154 178 224 223 4946 547 920 1118 567 4947 1203 55 177 176 4948 807 806 803 821 4949 746 747 817 760 4950 801 806 190 802 4951 1130 821 832 804 4952 812 728 745 811 4953 802 821 803 806 4954 1092 958 202 157 4955 1092 23 156 605 4956 1084 958 1092 1008 4957 1092 604 650 649 4958 1084 1009 1092 1164 4959 1148 1152 244 1190 4960 959 242 974 975 4961 974 158 204 203 4962 974 973 158 203 4963 974 981 158 973 4964 974 204 158 981 4965 1070 1020 1008 1021 4966 1212 49 48 301 4967 1162 217 218 877 4968 1132 362 316 317 4969 1054 991 988 1132 4970 905 395 908 362 4971 906 444 443 78 4972 77 906 78 444 4973 1135 1192 876 912 4974 822 1089 145 814 4975 1089 144 11 145 4976 1083 855 1168 870 4977 1172 696 695 700 4978 1137 818 841 819 4979 859 1081 748 844 4980 1052 947 897 1197 4981 912 198 913 153 4982 1193 223 1154 256 4983 1188 253 267 273 4984 235 1151 236 197 4985 1107 1192 1117 1064 4986 1088 644 1028 599 4987 1088 786 789 770 4988 699 1031 680 646 4989 805 743 801 727 4990 801 143 805 727 4991 1173 688 655 689 4992 914 1151 1104 868 4993 851 196 1151 234 4994 1104 1151 851 196 4995 1043 1104 1151 851 4996 868 610 17 611 4997 18 17 868 610 4998 868 151 18 875 4999 926 937 303 1187 5000 1210 394 1191 907 5001 1187 936 940 214 5002 1167 247 214 248 5003 927 388 387 349 5004 1187 302 348 347 5005 822 12 831 146 5006 658 1144 869 1124 5007 612 1104 149 16 5008 834 614 836 659 5009 635 971 673 1097 5010 907 421 395 415 5011 1038 810 811 818 5012 812 188 187 142 5013 812 187 188 813 5014 818 755 841 753 5015 1024 1025 701 679 5016 1022 639 678 677 5017 1147 552 555 535 5018 1142 1184 592 459 5019 938 937 1175 1169 5020 1067 1082 1179 1034 5021 1175 212 246 976 5022 1086 1004 1005 1189 5023 1075 1001 1002 1025 5024 1015 777 778 798 5025 1015 1029 777 798 5026 1003 105 761 454 5027 1003 105 762 761 5028 1133 556 534 496 5029 969 1153 1214 955 5030 882 412 417 401 5031 882 888 412 401 5032 889 401 888 882 5033 1199 366 367 400 5034 889 417 401 882 5035 1127 255 1193 852 5036 1157 888 368 402 5037 547 1118 557 567 5038 840 750 572 736 5039 1182 725 577 808 5040 1115 578 133 717 5041 840 572 518 475 5042 1158 1099 1204 857 5043 1140 724 741 740 5044 1115 717 133 134 5045 128 840 572 717 5046 1182 1115 1103 578 5047 1102 791 1160 307 5048 410 960 978 354 5049 1082 1074 1086 1189 5050 1102 1007 1016 1006 5051 940 936 1181 1167 5052 1187 168 169 214 5053 925 1212 910 216 5054 805 744 743 727 5055 801 284 34 735 5056 1114 1049 889 1116 5057 810 757 744 756 5058 938 304 937 1169 5059 1207 1148 976 1175 5060 1175 1169 167 212 5061 604 1092 23 973 5062 1175 937 940 213 5063 1191 1200 909 392 5064 1190 205 206 244 5065 892 404 891 370 5066 947 480 435 481 5067 947 554 519 1195 5068 947 481 932 519 5069 1101 481 897 436 5070 1101 84 85 324 5071 1206 1208 1101 891 5072 892 897 325 1101 5073 1075 1071 1082 1086 5074 890 399 400 414 5075 890 400 399 366 5076 1156 1199 367 889 5077 144 1089 820 189 5078 10 820 144 617 5079 820 190 804 802 5080 890 399 1146 366 5081 1213 365 398 364 5082 1062 1192 1064 942 5083 1057 1166 1131 909 5084 1147 499 498 1003 5085 1014 1003 1074 1015 5086 1013 473 455 500 5087 1013 455 1002 500 5088 1012 1001 1025 1002 5089 1012 1013 455 1002 5090 1194 1184 1128 1022 5091 1012 595 1128 456 5092 1045 1206 1080 1050 5093 944 951 1116 1163 5094 1112 816 1094 825 5095 1109 529 530 566 5096 1130 1129 815 814 5097 866 424 375 1122 5098 1122 375 426 424 5099 847 290 181 59 5100 847 180 826 848 5101 1203 339 340 378 5102 861 175 1127 1211 5103 1127 220 254 862 5104 1127 221 255 254 5105 822 145 146 191 5106 834 193 147 148 5107 1183 194 829 193 5108 834 1183 613 659 5109 869 1144 1078 1124 5110 407 1177 960 411 5111 1121 329 306 183 5112 831 834 830 147 5113 831 614 836 834 5114 1078 850 835 851 5115 1040 823 824 1039 5116 830 834 836 1183 5117 1028 644 643 598 5118 1028 1098 643 1026 5119 1028 643 644 1026 5120 1163 1124 1150 916 5121 1158 1195 857 842 5122 1111 917 516 1099 5123 516 917 515 549 5124 856 627 581 1178 5125 1111 517 839 1099 5126 1111 580 839 471 5127 1091 1159 1170 998 5128 1093 972 651 957 5129 982 972 1174 710 5130 1058 1181 927 1200 5131 1075 1074 1086 1082 5132 1032 645 621 600 5133 1036 207 1032 282 5134 1205 1088 1032 1030 5135 1035 1205 1037 1036 5136 1158 808 821 807 5137 947 435 480 896 5138 845 841 748 844 5139 1051 1052 893 886 5140 1204 839 838 624 5141 947 897 481 435 5142 554 948 479 478 5143 980 981 1020 159 5144 1019 206 160 161 5145 1190 1077 1070 1071 5146 846 227 1094 181 5147 408 333 885 1112 5148 1161 21 607 606 5149 1062 1161 912 942 5150 154 155 923 200 5151 934 608 913 609 5152 934 913 922 609 5153 912 942 1161 934 5154 1062 1161 923 912 5155 934 653 1161 608 5156 866 847 865 336 5157 846 866 1112 334 5158 1180 845 817 747 5159 1094 825 263 227 5160 336 334 846 290 5161 912 1192 942 934 5162 259 827 258 1186 5163 275 240 924 1201 5164 1182 809 725 808 5165 936 274 248 249 5166 1202 429 1096 355 5167 1212 346 904 902 5168 1175 246 247 1167 5169 1105 910 925 1212 5170 52 298 51 1106 5171 1162 299 50 300 5172 1048 1162 1106 877 5173 828 824 829 277 5174 1060 1087 1206 1052 5175 1078 1080 1045 1040 5176 870 666 712 855 5177 872 628 583 629 5178 855 716 666 712 5179 1168 716 665 666 5180 855 712 693 716 5181 942 703 687 1117 5182 1132 77 445 444 5183 415 901 396 907 5184 1056 1185 1132 908 5185 1143 560 561 528 5186 874 690 657 691 5187 1104 656 611 657 5188 1104 150 149 16 5189 324 891 1101 1208 5190 1042 1127 852 1165 5191 985 968 1153 986 5192 1165 1127 862 1196 5193 874 657 869 691 5194 870 1045 1144 873 5195 1124 692 691 658 5196 1102 1016 1160 783 5197 285 183 42 1102 5198 985 542 992 1143 5199 1011 639 1128 1184 5200 1200 392 423 425 5201 899 906 900 318 5202 398 899 1213 364 5203 964 486 441 487 5204 1213 364 319 365 5205 965 488 987 526 5206 966 487 965 526 5207 1199 440 962 1156 5208 1123 1039 1186 815 5209 1186 1123 815 279 5210 1130 1138 1038 1123 5211 846 181 1094 847 5212 846 60 290 289 5213 846 1112 289 334 5214 1094 866 847 826 5215 1152 266 262 209 5216 1070 981 1008 1020 5217 1119 681 711 680 5218 1020 647 1119 1031 5219 1077 1119 1022 1023 5220 1077 1075 1166 1071 5221 1148 243 276 280 5222 979 245 1152 266 5223 1185 490 491 529 5224 985 984 509 542 5225 1065 984 1153 1143 5226 1106 218 877 1162 5227 1056 1132 905 908 5228 1130 833 832 1172 5229 664 698 1172 838 5230 808 576 622 821 5231 808 803 576 821 5232 1027 680 699 1031 5233 1085 1090 1062 1064 5234 1082 1205 1030 1088 5235 1088 599 789 1032 5236 1028 599 644 598 5237 1028 770 599 598 5238 16 868 17 611 5239 868 17 151 150 5240 1104 149 195 835 5241 1104 195 149 150 5242 868 151 196 150 5243 690 915 657 656 5244 1066 1167 1148 1058 5245 1175 940 1167 247 5246 1070 1148 1066 975 5247 1182 1103 808 623 5248 1084 959 1201 958 5249 1175 167 213 212 5250 1085 924 911 1171 5251 1058 940 1175 926 5252 1116 1156 1199 962 5253 651 957 972 685 5254 898 438 323 83 5255 898 439 438 83 5256 1128 111 457 456 5257 1012 501 455 456 5258 535 536 1001 1110 5259 1001 1128 1025 1023 5260 1147 499 1002 555 5261 1098 1013 1026 1074 5262 1026 1013 642 1025 5263 1124 707 691 704 5264 870 855 712 1144 5265 828 269 232 835 5266 828 232 829 835 5267 1163 1068 951 1114 5268 1111 1178 470 515 5269 1044 1178 920 1145 5270 1145 123 468 583 5271 870 871 666 1168 5272 1178 581 582 627 5273 1145 583 628 582 5274 1178 469 582 124 5275 1044 917 1178 1111 5276 593 592 638 1184 5277 1010 1142 460 999 5278 1078 1183 869 835 5279 1101 325 436 897 5280 1208 438 437 84 5281 1060 1083 1206 1087 5282 370 1101 324 891 5283 1206 946 1197 1101 5284 1111 856 1044 1079 5285 1079 838 1099 1111 5286 838 626 580 1111 5287 626 665 856 664 5288 856 838 664 1168 5289 1175 976 246 1148 5290 1175 246 213 247 5291 927 387 388 425 5292 1058 927 926 1175 5293 1067 1016 1007 1018 5294 1065 971 1097 1174 5295 1005 780 797 781 5296 1179 795 799 796 5297 1004 1015 778 1189 5298 1067 1086 960 1179 5299 960 977 1179 1005 5300 1019 160 1190 1020 5301 1189 795 797 1179 5302 1005 781 797 779 5303 1005 797 1189 779 5304 1179 799 1016 1034 5305 1019 601 27 160 5306 1019 27 601 600 5307 1020 205 160 1190 5308 1205 1082 1034 1037 5309 1019 601 646 600 5310 1019 646 601 1031 5311 1065 955 956 1153 5312 877 251 252 268 5313 1195 477 857 858 5314 1195 1099 551 932 5315 1204 624 579 839 5316 1158 1195 1099 857 5317 1044 917 1060 919 5318 1138 884 866 1087 5319 811 805 812 728 5320 811 812 805 813 5321 811 745 812 817 5322 810 754 756 819 5323 1051 948 947 1195 5324 1120 1056 1055 907 5325 999 998 1000 539 5326 999 1000 505 539 5327 924 275 271 239 5328 1085 1192 1062 1171 5329 925 249 216 250 5330 1202 774 95 94 5331 941 1084 1085 1201 5332 957 706 686 1174 5333 893 892 897 371 5334 892 371 404 370 5335 892 325 897 371 5336 1101 325 85 436 5337 892 370 325 371 5338 1101 85 437 436 5339 1199 366 321 367 5340 1146 80 441 320 5341 880 1198 1213 398 5342 1199 440 1156 321 5343 1114 965 1146 1213 5344 1100 465 511 953 5345 1059 1043 1173 914 5346 1100 585 120 586 5347 953 1214 464 969 5348 925 924 275 250 5349 927 928 1200 425 5350 1053 1114 965 966 5351 1100 953 1214 465 5352 1107 1125 1173 921 5353 1035 1034 1018 1017 5354 1017 209 1018 163 5355 1017 1018 209 1007 5356 1017 164 209 163 5357 1017 209 164 1007 5358 1017 1007 1006 1016 5359 1017 164 1006 1007 5360 1097 635 636 674 5361 1062 942 1174 957 5362 1090 995 996 999 5363 941 156 202 201 5364 650 1009 649 683 5365 1187 926 1181 348 5366 1021 715 1209 1119 5367 985 984 542 1143 5368 1153 968 985 969 5369 926 940 937 1187 5370 1181 385 347 386 5371 1116 949 945 1208 5372 1156 888 898 1116 5373 883 422 412 402 5374 883 1157 1095 422 5375 1111 626 580 581 5376 838 1111 580 839 5377 818 760 845 755 5378 818 845 841 755 5379 818 760 811 817 5380 729 745 812 728 5381 855 837 693 1144 5382 1041 827 865 826 5383 1122 376 337 864 5384 881 379 417 378 5385 1060 918 917 1079 5386 1101 483 437 1208 5387 514 933 920 1145 5388 849 224 1154 178 5389 1050 1155 1080 1042 5390 849 864 848 292 5391 850 1080 1154 1042 5392 1041 826 1094 1186 5393 1087 1206 887 1095 5394 946 522 521 483 5395 946 567 521 522 5396 1118 944 933 557 5397 1208 483 484 522 5398 1118 567 946 557 5399 1208 438 484 483 5400 1142 592 637 591 5401 1076 1000 1170 1184 5402 1010 461 460 115 5403 114 1010 115 591 5404 809 757 754 742 5405 809 725 742 741 5406 408 866 884 374 5407 807 743 742 726 5408 1078 1124 1163 1043 5409 565 998 996 539 5410 1056 1134 1109 1073 5411 874 1124 707 691 5412 853 1203 55 177 5413 1044 1118 920 919 5414 870 872 873 667 5415 1154 224 827 258 5416 1183 1078 869 1144 5417 1095 376 864 377 5418 1113 513 512 467 5419 996 540 995 993 5420 996 540 566 539 5421 996 995 540 506 5422 996 999 995 506 5423 996 539 506 540 5424 996 506 539 999 5425 1028 772 1098 1029 5426 1098 1014 777 790 5427 1074 1014 1015 1098 5428 1074 1015 1029 1098 5429 1098 720 1014 790 5430 1098 1014 720 618 5431 443 965 900 442 5432 988 900 443 965 5433 988 965 443 488 5434 443 488 965 442 5435 1054 987 992 1053 5436 1198 398 397 899 5437 899 363 906 318 5438 1117 708 687 688 5439 856 581 627 626 5440 1111 1099 516 517 5441 1111 517 516 471 5442 1178 582 581 124 5443 1044 1047 872 1145 5444 1180 330 185 825 5445 1180 141 751 729 5446 1180 751 746 729 5447 1180 746 817 729 5448 817 747 845 760 5449 1180 746 751 733 5450 352 1177 351 411 5451 1210 421 385 420 5452 1179 795 782 799 5453 857 553 1099 517 5454 809 1158 808 1103 5455 809 808 807 742 5456 807 808 803 726 5457 807 742 808 726 5458 1094 227 226 181 5459 846 289 290 334 5460 1178 514 469 515 5461 515 920 514 548 5462 1099 918 549 569 5463 1111 125 580 471 5464 1111 470 125 471 5465 859 286 1081 332 5466 426 424 886 1122 5467 406 885 408 333 5468 1180 817 746 747 5469 747 1081 860 845 5470 860 747 1180 730 5471 333 860 1112 288 5472 849 827 179 848 5473 849 864 827 848 5474 56 293 853 57 5475 178 57 853 849 5476 56 853 178 57 5477 849 224 179 827 5478 214 936 215 1187 5479 170 1212 903 49 5480 936 215 216 249 5481 1105 1212 936 1181 5482 1142 636 591 637 5483 1057 1091 1166 1200 5484 929 909 928 391 5485 1084 975 1066 1167 5486 1063 1105 1181 1120 5487 966 986 967 558 5488 966 525 526 558 5489 966 526 986 558 5490 1171 251 268 271 5491 1118 557 946 945 5492 959 242 278 241 5493 901 907 415 1126 5494 1092 156 23 157 5495 926 348 387 1181 5496 1066 975 1148 1167 5497 1063 959 1084 1167 5498 1167 280 975 1148 5499 861 1127 221 1193 5500 1213 413 398 399 5501 867 379 380 881 5502 881 417 882 378 5503 1130 1079 1172 1158 5504 1080 1095 1155 883 5505 1047 1113 1145 933 5506 858 723 750 1140 5507 1051 894 948 1137 5508 1149 451 474 497 5509 1176 1149 1133 929 5510 929 357 358 391 5511 358 929 930 357 5512 1177 350 305 351 5513 410 407 960 354 5514 1067 1207 979 1177 5515 863 341 379 340 5516 1040 1078 828 829 5517 1115 625 717 620 5518 867 380 381 880 5519 1042 863 867 881 5520 444 988 906 443 5521 1134 560 528 529 5522 874 707 690 691 5523 1124 704 668 707 5524 914 1104 656 868 5525 916 1124 707 874 5526 1061 1153 953 952 5527 1158 810 807 1038 5528 1059 1107 1192 1173 5529 874 691 869 1124 5530 1068 1107 1163 1061 5531 1180 730 746 733 5532 1180 428 67 733 5533 1180 817 812 729 5534 1105 911 925 910 5535 1033 1034 796 1189 5536 1058 1175 940 1167 5537 947 519 932 1195 5538 1195 551 478 554 5539 886 424 884 1122 5540 1051 1137 948 1195 5541 982 1142 1076 1209 5542 956 1174 1117 703 5543 1142 1010 114 591 5544 917 918 919 571 5545 917 548 549 571 5546 917 919 548 571 5547 1206 1157 887 1095 5548 846 1094 866 847 5549 1081 332 287 333 5550 1099 553 551 550 5551 1041 1138 866 1087 5552 854 267 1188 862 5553 1165 862 854 1188 5554 914 875 655 922 5555 1192 1165 1135 876 5556 914 656 655 610 5557 914 655 875 610 5558 1158 1103 809 1140 5559 516 517 1099 550 5560 1158 1099 1046 1079 5561 1052 893 886 892 5562 809 807 757 742 5563 809 810 757 807 5564 1129 837 836 660 5565 1186 259 260 279 5566 811 756 744 745 5567 811 760 756 745 5568 811 810 744 756 5569 811 818 810 756 5570 859 844 885 1081 5571 1081 333 1112 885 5572 1081 1112 333 860 5573 1180 185 283 228 5574 1051 885 894 1137 5575 1081 332 286 287 5576 1188 267 253 862 5577 1150 943 1100 1113 5578 472 475 127 1204 5579 840 518 1204 475 5580 631 1150 921 1100 5581 1107 1173 916 921 5582 1127 1211 175 220 5583 863 341 340 295 5584 863 861 341 295 5585 876 912 1192 1171 5586 1047 873 872 1150 5587 1153 1064 1125 956 5588 876 877 252 268 5589 1054 901 905 899 5590 1210 904 385 421 5591 1084 958 1201 941 5592 1141 1192 1165 1107 5593 1117 1173 688 922 5594 915 914 656 689 5595 1115 840 1140 1103 5596 915 656 690 689 5597 991 987 1054 988 5598 1196 253 252 219 5599 1026 1082 1075 1027 5600 1175 976 1169 212 5601 1121 351 305 306 5602 1121 351 352 1177 5603 1177 305 350 1169 5604 1121 1169 211 166 5605 1177 350 389 939 5606 1199 321 1156 367 5607 1156 440 962 439 5608 1080 827 1041 1186 5609 1156 368 367 322 5610 1116 949 1156 962 5611 898 949 439 1156 5612 953 465 510 464 5613 953 510 969 464 5614 954 464 1214 969 5615 1214 670 632 1125 5616 1197 520 482 521 5617 1168 665 714 664 5618 980 242 974 204 5619 980 205 204 159 5620 980 204 981 159 5621 1210 385 904 1181 5622 1191 1200 423 1210 5623 1181 1210 1200 1120 5624 1210 907 904 421 5625 1161 912 913 153 5626 942 687 653 934 5627 1171 239 271 238 5628 491 529 530 1185 5629 1132 444 490 489 5630 1027 1026 1028 644 5631 1027 699 697 644 5632 1027 697 1026 644 5633 1088 1030 644 645 5634 1088 1027 644 1030 5635 832 821 1172 700 5636 1130 1040 1083 1039 5637 818 1158 819 1137 5638 1172 622 696 700 5639 846 1094 1112 866 5640 1038 811 810 806 5641 1062 957 1161 942 5642 203 974 241 242 5643 241 242 974 959 5644 1143 542 992 561 5645 891 1208 369 1157 5646 935 240 941 1201 5647 1072 1054 1143 992 5648 1134 1065 1072 1143 5649 1090 1085 1073 1072 5650 1134 996 560 566 5651 1125 956 672 955 5652 1125 633 672 671 5653 954 587 955 1214 5654 985 992 563 986 5655 1153 1125 955 956 5656 587 633 1214 632 5657 1198 1141 901 879 5658 850 257 269 256 5659 867 863 861 341 5660 867 1165 880 1141 5661 880 380 381 413 5662 1049 890 881 880 5663 867 296 342 341 5664 880 413 418 398 5665 1012 595 596 641 5666 1012 596 1013 641 5667 1005 978 977 1096 5668 1075 1074 1026 1025 5669 1090 1000 1142 999 5670 887 1052 892 1206 5671 1083 1144 837 855 5672 1104 657 612 869 5673 768 1017 1034 1035 5674 1035 163 1018 208 5675 1133 997 556 496 5676 1057 909 1200 1166 5677 1149 328 1096 474 5678 1149 71 451 450 5679 1149 328 355 1096 5680 961 496 1149 1133 5681 1077 1119 1023 1024 5682 1019 1020 601 160 5683 1019 1190 1031 1020 5684 1020 647 601 602 5685 1020 601 647 1031 5686 934 654 653 608 5687 1161 608 607 20 5688 1093 941 156 1092 5689 1093 156 941 201 5690 1093 606 651 605 5691 1093 651 606 652 5692 22 21 1093 606 5693 927 938 926 1175 5694 1004 104 762 453 5695 1189 797 794 779 5696 935 239 201 240 5697 355 978 1202 309 5698 941 1085 935 1201 5699 1135 237 876 273 5700 912 913 198 1135 5701 1085 1141 1192 1171 5702 1135 198 236 197 5703 1012 1025 640 641 5704 1012 596 595 110 5705 1012 455 596 110 5706 1012 1025 1001 1128 5707 595 640 1128 594 5708 1012 595 640 1128 5709 822 661 615 616 5710 820 617 662 1089 5711 1089 662 616 617 5712 831 147 13 834 5713 1113 512 513 943 5714 1113 468 122 583 5715 1113 122 584 583 5716 1195 1046 932 1051 5717 989 447 990 493 5718 1075 1074 1002 1147 5719 1131 533 494 495 5720 1131 1133 533 495 5721 537 536 1170 503 5722 1178 920 515 917 5723 1156 368 898 888 5724 1094 260 263 1123 5725 1100 465 586 120 5726 630 1113 629 1150 5727 846 227 182 825 5728 1186 260 259 226 5729 846 60 182 181 5730 846 182 60 289 5731 846 182 227 181 5732 1094 847 226 826 5733 1042 852 1043 1165 5734 1048 911 877 1171 5735 1166 1131 929 1133 5736 1020 26 160 159 5737 1107 1117 1192 1173 5738 1128 1023 1022 678 5739 1134 991 490 528 5740 856 1111 581 626 5741 1105 904 1126 902 5742 49 171 50 903 5743 1179 782 780 977 5744 1166 1071 1075 1086 5745 1102 307 353 352 5746 1207 1067 960 1177 5747 960 354 977 978 5748 1160 782 765 766 5749 1121 306 165 183 5750 1121 44 305 166 5751 1121 1102 979 1177 5752 1121 305 44 306 5753 1121 165 44 166 5754 1169 45 167 166 5755 1204 518 517 472 5756 858 750 840 1140 5757 616 1089 11 822 5758 626 664 856 838 5759 386 1181 348 347 5760 1200 928 909 425 5761 1150 1113 1047 943 5762 1163 1118 1047 1045 5763 1136 570 568 532 5764 1136 1131 570 532 5765 942 653 687 686 5766 238 935 923 1171 5767 942 687 703 686 5768 1090 972 1062 1174 5769 971 995 983 994 5770 1065 956 955 971 5771 1072 1065 1153 1143 5772 694 660 833 661 5773 615 831 822 12 5774 1047 933 920 1118 5775 1044 872 1047 870 5776 1116 950 949 962 5777 898 1116 888 1157 5778 870 712 666 667 5779 1168 666 665 871 5780 404 887 426 886 5781 1038 810 807 806 5782 1039 823 824 1186 5783 1158 1140 819 842 5784 1137 845 844 841 5785 1149 355 310 356 5786 1194 1184 1170 1011 5787 1128 1011 111 594 5788 955 587 588 633 5789 954 970 955 588 5790 969 984 954 509 5791 969 954 464 509 5792 954 118 117 588 5793 954 117 970 588 5794 954 117 463 970 5795 1109 531 492 989 5796 924 1201 240 935 5797 1073 998 1109 1091 5798 1085 1069 1090 1073 5799 859 737 749 1108 5800 859 732 737 748 5801 747 748 1081 845 5802 859 844 748 737 5803 860 1081 731 287 5804 299 1106 344 1162 5805 173 172 218 1106 5806 1162 344 879 1106 5807 1106 218 219 877 5808 1042 867 1165 1049 5809 934 922 687 654 5810 882 1203 1042 881 5811 851 852 234 1151 5812 921 631 670 669 5813 1061 1214 1100 953 5814 861 175 221 1127 5815 669 631 630 1150 5816 1158 857 1204 1103 5817 854 267 862 254 5818 876 1196 252 877 5819 854 1151 1188 235 5820 854 267 270 235 5821 1165 1135 876 1188 5822 1166 1207 1071 1086 5823 1131 533 1110 570 5824 831 13 614 834 5825 823 191 815 1129 5826 820 700 663 821 5827 662 661 832 1089 5828 1094 1186 260 1123 5829 820 832 1089 662 5830 820 832 662 700 5831 820 821 832 700 5832 184 144 10 820 5833 820 802 619 184 5834 1173 921 705 916 5835 670 921 702 1125 5836 950 963 1116 951 5837 914 655 689 1173 5838 674 982 1174 710 5839 982 684 710 709 5840 1164 651 1092 1093 5841 1093 941 1092 1164 5842 982 710 684 972 5843 1141 1106 879 878 5844 1137 885 844 845 5845 814 1123 229 815 5846 1195 858 842 843 5847 230 279 281 815 5848 1158 819 1140 809 5849 990 1131 494 930 5850 1131 495 494 961 5851 448 930 494 449 5852 1131 494 930 961 5853 831 146 1129 822 5854 614 834 13 14 5855 831 13 147 146 5856 831 836 830 834 5857 831 192 1129 146 5858 1211 53 52 297 5859 861 296 175 1211 5860 230 815 281 823 5861 1154 824 828 258 5862 1155 339 378 377 5863 1165 1141 1196 876 5864 1054 988 987 1053 5865 1196 219 1106 174 5866 902 879 1048 1162 5867 173 51 172 1106 5868 898 888 368 1157 5869 1053 965 1114 1213 5870 1152 245 262 266 5871 1207 960 1067 1086 5872 1205 1152 264 208 5873 1142 460 505 459 5874 1010 999 460 506 5875 1010 995 999 506 5876 1010 636 590 591 5877 1096 452 575 792 5878 94 1202 764 309 5879 1096 497 474 575 5880 763 1004 1096 452 5881 1096 575 452 497 5882 872 667 871 628 5883 870 871 872 667 5884 831 615 660 614 5885 831 660 836 614 5886 831 1129 836 660 5887 1129 661 615 822 5888 831 1129 615 822 5889 831 615 1129 660 5890 1129 615 661 660 5891 1085 1064 1141 1072 5892 1106 174 52 1211 5893 1206 1208 891 1157 5894 1081 287 860 333 5895 1081 333 885 332 5896 1081 885 859 332 5897 1015 1189 1074 1029 5898 1179 1034 1189 796 5899 1071 1027 1075 1082 5900 964 965 966 487 5901 964 442 487 441 5902 964 487 442 965 5903 964 487 525 486 5904 964 525 963 486 5905 964 525 966 963 5906 964 525 487 966 5907 1128 457 502 456 5908 1136 1194 536 1110 5909 1136 568 1170 1159 5910 1123 279 229 815 5911 1180 816 812 817 5912 1051 894 893 896 5913 890 1146 1199 366 5914 1114 889 890 1199 5915 1114 1146 1199 890 5916 880 1114 890 1213 5917 958 157 203 202 5918 958 203 157 973 5919 1054 1072 1055 1141 5920 1054 905 1055 1056 5921 1134 566 560 529 5922 996 1134 1109 566 5923 1102 329 430 352 5924 285 1102 42 773 5925 1121 183 210 1102 5926 773 783 1102 791 5927 1102 1007 210 979 5928 1156 82 322 321 5929 1117 703 687 708 5930 1065 1064 1153 956 5931 667 870 712 873 5932 1180 825 185 228 5933 1158 808 807 809 5934 1195 553 1099 857 5935 1137 948 1195 1108 5936 1137 1051 1138 1046 5937 1194 1011 1170 503 5938 1170 1011 504 503 5939 1109 1159 531 989 5940 1170 537 504 538 5941 1005 781 779 763 5942 1149 978 1096 355 5943 1179 1189 795 796 5944 1005 797 780 1179 5945 1096 575 774 792 5946 1147 498 1004 1003 5947 1005 1096 763 1004 5948 803 801 752 802 5949 801 803 806 802 5950 801 803 743 806 5951 801 735 743 752 5952 752 802 801 735 5953 801 743 803 752 5954 1094 263 816 1123 5955 828 269 850 257 5956 1112 333 335 408 5957 1183 613 659 658 5958 225 259 826 827 5959 1125 633 671 632 5960 1180 428 335 288 5961 1038 804 1123 813 5962 1195 553 477 551 5963 1083 1047 1118 1045 5964 1044 1178 871 856 5965 1178 1044 1111 856 5966 1204 625 624 698 5967 1137 844 843 842 5968 832 804 821 820 5969 1065 984 955 1153 5970 1107 1064 1153 1068 5971 899 901 397 1198 5972 901 416 879 1126 5973 1069 972 1090 982 5974 202 958 240 241 5975 1069 1062 1090 972 5976 1084 958 974 959 5977 1190 1030 1027 1082 5978 1075 1077 1194 1023 5979 1070 1021 1119 1020 5980 1207 938 1175 1169 5981 1090 996 993 1073 5982 1149 1133 978 1176 5983 1073 1065 1134 993 5984 1073 1134 1054 1056 5985 867 1127 1042 1165 5986 237 238 199 912 5987 1059 1043 1165 1107 5988 1105 902 1212 904 5989 1072 1090 1064 1065 5990 1149 929 356 961 5991 1194 536 502 503 5992 1074 1189 1033 1029 5993 804 265 1123 813 5994 1146 365 320 366 5995 1156 367 401 889 5996 1045 1124 1144 873 5997 949 484 1208 438 5998 1163 1061 1150 943 5999 827 824 1080 1154 6000 1172 1158 1079 838 6001 408 334 866 374 6002 1168 665 856 871 6003 1130 1158 1046 1079 6004 1130 804 1089 814 6005 1103 625 623 578 6006 1206 1197 892 1101 6007 845 1137 885 1138 6008 1115 717 840 620 6009 833 660 837 1129 6010 929 1176 390 419 6011 1021 715 1119 681 6012 387 1210 386 423 6013 1139 907 1191 394 6014 248 215 214 936 6015 1085 1120 1084 1069 6016 1062 1085 941 1069 6017 1092 1009 1008 649 6018 1002 1074 1014 1003 6019 1074 1003 1002 1147 6020 1074 1014 1013 1002 6021 1026 1074 1013 1025 6022 1074 1003 1004 1015 6023 1074 1003 1147 1004 6024 1028 1029 1033 788 6025 1028 771 772 788 6026 1074 1028 1029 1033 6027 1106 297 52 298 6028 49 50 300 903 6029 1165 1211 867 1127 6030 1162 50 172 171 6031 880 1198 418 878 6032 1148 1152 976 276 6033 989 447 931 990 6034 990 1159 532 1131 6035 909 425 391 392 6036 1175 1148 246 1167 6037 1176 356 410 978 6038 1139 908 907 361 6039 850 1078 1080 1042 6040 521 483 482 946 6041 1042 881 867 1049 6042 482 946 483 1101 6043 891 403 1157 369 6044 946 1208 522 483 6045 1157 898 369 368 6046 393 1191 423 420 6047 1120 1105 907 1055 6048 1131 1057 1091 1166 6049 1139 394 393 360 6050 1063 1084 1085 1120 6051 989 931 1139 990 6052 1120 1085 1055 1073 6053 1065 994 971 984 6054 1065 955 984 971 6055 1065 1143 994 984 6056 1143 994 984 508 6057 711 1023 1022 1119 6058 1051 884 885 1138 6059 1081 286 65 287 6060 844 845 1081 748 6061 1138 813 817 811 6062 860 845 1180 747 6063 1141 867 878 880 6064 951 952 1068 1061 6065 1085 1048 1141 1171 6066 1053 1213 880 1198 6067 1086 997 978 1005 6068 960 977 1005 978 6069 1059 1151 914 1135 6070 874 869 657 1104 6071 1065 994 993 995 6072 1065 1073 1090 993 6073 1073 1072 1085 1055 6074 593 639 1011 1184 6075 1084 974 975 959 6076 1091 1084 1120 1069 6077 1206 1157 1095 883 6078 829 194 835 232 6079 1144 1040 1045 1083 6080 1144 692 704 1124 6081 1050 1049 889 882 6082 1047 873 870 872 6083 1178 514 515 920 6084 1044 1118 1047 920 6085 835 194 195 233 6086 1114 962 1116 1199 6087 1116 950 944 945 6088 1150 1061 916 921 6089 1124 668 1150 707 6090 946 945 557 522 6091 1113 513 468 1145 6092 1053 1213 1114 880 6093 1140 741 724 1103 6094 1053 900 965 1213 6095 1115 740 724 1140 6096 431 750 858 723 6097 1113 513 933 943 6098 1153 1068 1064 1072 6099 992 1153 1068 986 6100 1107 1173 1125 1117 6101 1061 951 952 943 6102 547 920 514 933 6103 1130 833 1089 832 6104 1130 1129 837 1040 6105 1172 1079 1168 838 6106 1054 901 1141 1055 6107 921 1214 631 1100 6108 1115 1140 724 1103 6109 867 1127 1211 861 6110 205 243 244 980 6111 1190 1082 1205 1030 6112 1119 680 1031 647 6113 1190 1205 1019 1030 6114 980 205 1020 1190 6115 1082 1026 1075 1074 6116 1024 1027 1075 1077 6117 1170 1184 504 1011 6118 1142 995 1090 999 6119 1090 1069 982 1076 6120 1097 1090 1142 995 6121 1119 1024 711 1023 6122 1209 713 676 677 6123 1046 918 1060 1079 6124 1046 1083 1079 1060 6125 1040 824 823 829 6126 1140 809 758 741 6127 1158 838 1172 1204 6128 1158 807 821 1038 6129 946 919 567 1118 6130 1172 833 695 714 6131 1140 723 739 858 6132 1130 804 814 1123 6133 959 248 1167 936 6134 1063 1105 936 1181 6135 1212 903 910 216 6136 1058 1181 940 926 6137 1105 1048 1055 1085 6138 1134 1185 490 1132 6139 905 908 1132 362 6140 1054 988 1053 899 6141 1056 908 905 907 6142 712 873 870 1144 6143 916 707 1124 1150 6144 1043 916 1163 1107 6145 1116 950 962 963 6146 1206 1116 1118 945 6147 1163 943 1150 1047 6148 120 121 1100 466 6149 1018 1035 1205 1034 6150 1067 1034 1016 1018 6151 1189 779 1004 1005 6152 1082 1026 1028 1027 6153 1035 1018 1205 208 6154 1067 1179 1016 1034 6155 1207 1086 1166 1176 6156 1084 1120 1063 1200 6157 1121 305 351 1177 6158 929 961 1131 930 6159 1190 1030 1031 1027 6160 535 502 1001 536 6161 1086 1176 960 978 6162 1159 1091 1131 1057 6163 1190 1148 1152 1071 6164 389 1177 407 411 6165 1207 939 927 938 6166 1207 938 1177 939 6167 1109 565 531 1159 6168 1084 1063 1085 1201 6169 1166 1091 1066 1200 6170 909 392 359 1191 6171 1207 1082 1152 1071 6172 998 1159 1170 538 6173 1120 1056 1073 1055 6174 1136 1110 570 1131 6175 1051 893 884 886 6176 946 521 919 1197 6177 1060 1197 932 1052 6178 1089 804 832 820 6179 833 1168 694 714 6180 1129 823 192 830 6181 831 192 830 1129 6182 804 814 1123 265 6183 1040 830 1129 836 6184 1130 1038 804 1123 6185 1086 1133 978 997 6186 1182 578 133 1115 6187 247 1167 246 280 6188 278 280 975 1167 6189 1062 935 941 1085 6190 1167 214 247 940 6191 1084 1167 1058 1063 6192 1040 829 823 830 6193 946 557 567 522 6194 1124 1043 874 916 6195 886 1122 884 1087 6196 1040 1129 837 836 6197 1119 715 711 681 6198 1077 1024 1027 1119 6199 1071 1070 1066 1077 6200 1077 1027 1071 1190 6201 929 928 1176 419 6202 1077 1076 1209 1084 6203 1077 1194 1209 1076 6204 1130 821 1158 1172 6205 1129 661 1089 833 6206 516 1099 917 549 6207 1062 1171 923 935 6208 1210 394 420 1191 6209 1084 1070 1008 1021 6210 1161 1062 923 1093 6211 1093 156 201 155 6212 823 815 1039 1129 6213 1040 1078 829 1183 6214 1078 835 828 829 6215 1078 869 1124 874 6216 1083 1118 1047 1044 6217 1078 1045 1144 1040 6218 1060 1197 1052 1206 6219 1044 1079 1083 1060 6220 1047 1045 870 873 6221 810 819 818 1158 6222 1138 1038 813 811 6223 1094 816 1138 1123 6224 1083 1168 1044 870 6225 1154 828 257 258 6226 1051 884 1087 886 6227 920 567 919 1118 6228 886 892 887 1052 6229 1040 828 824 829 6230 1046 1087 1060 1052 6231 855 693 712 1144 6232 1080 828 1040 1078 6233 1122 375 866 865 6234 1105 1048 1085 911 6235 1056 1139 908 907 6236 1120 1069 1085 1073 6237 1044 871 872 870 6238 1130 837 1083 1040 6239 837 694 1168 716 6240 1060 917 918 919 6241 886 1052 887 1087 6242 1059 914 922 1135 6243 1078 1104 869 874 6244 854 270 1151 235 6245 1078 1104 851 835 6246 916 1061 1107 921 6247 854 862 1127 254 6248 1054 1141 1053 1072 6249 1146 965 900 1213 6250 1141 1053 880 1198 6251 881 380 880 414 6252 413 414 890 880 6253 1193 222 255 221 6254 1043 1151 1104 914 6255 1043 1104 874 915 6256 1043 916 1173 915 6257 1135 912 876 237 6258 1042 852 1127 1193 6259 1043 874 916 915 6260 1119 711 1024 680 6261 1190 1031 1119 1027 6262 244 980 243 1148 6263 1036 207 1205 1032 6264 1190 205 160 206 6265 205 980 244 1190 6266 1146 964 442 965 6267 1153 969 953 968 6268 255 854 254 270 6269 1060 1197 1206 1118 6270 1045 1118 1206 1050 6271 1208 437 438 483 6272 1157 1050 1116 888 6273 1118 945 944 557 6274 887 1095 426 1122 6275 1080 1206 1095 883 6276 1206 892 891 1101 6277 324 369 891 1208 6278 1210 421 394 907 6279 1084 1008 1009 1021 6280 1077 1119 1021 1209 6281 1209 713 709 676 6282 1084 1066 1070 1077 6283 1041 864 827 1080 6284 1122 337 865 864 6285 846 825 289 1112 6286 1112 408 335 334 6287 1138 1123 1130 1039 6288 866 826 865 847 6289 1095 376 377 422 6290 1138 1186 1123 1039 6291 1087 887 1122 1095 6292 1143 561 560 541 6293 1143 992 991 561 6294 1064 1174 1062 942 6295 906 988 1132 905 6296 1134 1143 991 528 6297 1185 908 931 446 6298 1143 560 993 541 6299 1054 905 901 1055 6300 1162 911 1048 910 6301 1207 1166 1200 928 6302 1207 1058 1148 1175 6303 1175 937 926 940 6304 1063 936 959 1167 6305 1148 1058 1167 1175 6306 1067 1152 1207 1082 6307 1189 794 793 798 6308 1123 229 279 261 6309 1094 263 260 227 6310 1180 746 730 747 6311 1112 825 289 335 6312 817 813 816 812 6313 1094 263 825 816 6314 1130 1038 821 804 6315 1051 947 948 896 6316 1051 893 947 896 6317 1046 918 1099 932 6318 551 932 1099 569 6319 1046 1060 918 932 6320 1195 551 554 519 6321 838 1111 839 1099 6322 1120 1091 1069 1073 6323 1057 909 1139 1191 6324 924 240 239 935 6325 1120 1105 1055 1085 6326 1120 1105 1085 1063 6327 1058 1066 1084 1200 6328 1116 1199 1156 889 6329 1083 1144 870 1045 6330 1083 1040 1080 1039 6331 853 294 55 1203 6332 919 571 1197 521 6333 919 918 1197 571 6334 1197 571 520 521 6335 845 885 1112 1138 6336 1046 1052 1060 932 6337 1172 1168 714 664 6338 947 1051 932 1052 6339 1188 1165 1135 1151 6340 889 400 890 1199 6341 1068 967 968 952 6342 1207 960 1176 1177 6343 1152 244 264 262 6344 1075 1024 1077 1023 6345 1104 851 195 196 6346 1048 1141 879 1126 6347 1162 1048 902 910 6348 1055 1126 901 1141 6349 1048 879 1141 1106 6350 1065 1174 1097 1090 6351 942 653 1161 934 6352 887 1087 1052 1206 6353 1083 1206 1045 1118 6354 1044 1060 1118 919 6355 1206 891 892 887 6356 1163 1118 1050 1116 6357 933 557 547 1118 6358 1192 913 922 934 6359 1192 913 934 912 6360 1165 852 854 1127 6361 1138 1046 1051 1087 6362 1158 1046 1099 1195 6363 1195 553 551 1099 6364 1137 844 894 1108 6365 1195 551 519 932 6366 1195 932 947 1051 6367 871 856 1178 627 6368 877 1171 911 251 6369 1102 1177 411 960 6370 1059 1151 1043 914 6371 1192 1117 922 1173 6372 1059 1135 922 1192 6373 1068 1163 1165 1049 6374 1188 236 235 1151 6375 1173 708 688 702 6376 1163 1068 1061 951 6377 1163 1043 1124 916 6378 1163 1050 1049 1116 6379 1047 933 1118 944 6380 1115 578 625 1103 6381 1053 988 965 900 6382 1053 987 965 988 6383 879 382 416 1198 6384 1188 1135 236 1151 6385 1114 966 967 963 6386 1159 1136 1131 1091 6387 1021 1084 1077 1209 6388 1164 683 709 1209 6389 950 1116 944 951 6390 1114 965 964 1146 6391 1068 968 967 986 6392 898 1156 439 322 6393 1165 1141 1068 880 6394 967 1068 951 952 6395 1196 252 253 876 6396 1042 1165 1043 1163 6397 1042 1049 1165 1163 6398 1163 1116 944 1118 6399 1042 1045 1050 1163 6400 1068 880 1114 1049 6401 1072 1068 992 1153 6402 1068 1053 992 986 6403 1068 1072 992 1053 6404 1068 967 966 986 6405 966 1053 1068 986 6406 967 1068 966 1114 6407 1042 1043 1078 1163 6408 1163 1050 1118 1045 6409 1159 532 531 493 6410 1120 1105 1210 907 6411 1181 1120 1105 1210 6412 1191 393 1139 394 6413 1207 1066 1166 1071 6414 1166 1075 1077 1194 6415 1077 1166 1066 1071 6416 1209 638 677 676 6417 961 1131 495 1133 6418 941 1069 1085 1084 6419 1062 972 1069 1164 6420 1062 1093 957 972 6421 1093 605 22 606 6422 972 1093 651 1164 6423 924 271 1171 239 6424 1085 1171 935 924 6425 1072 1054 1073 1134 6426 1073 1072 1134 1065 6427 1054 1055 1073 1056 6428 1143 561 991 528 6429 1054 1073 1055 1072 6430 1056 905 1055 907 6431 905 907 901 1055 6432 635 673 674 1097 6433 1142 676 637 638 6434 1073 1120 1057 1056 6435 709 982 676 675 6436 676 675 982 1142 6437 1090 996 998 999 6438 460 114 1142 1010 6439 1142 505 460 999 6440 1130 1039 1123 815 6441 1039 1129 815 1130 6442 1084 974 958 1008 6443 1084 1092 958 941 6444 1058 1066 1167 1084 6445 1092 1009 650 1164 6446 1158 821 808 1172 6447 840 1204 857 1103 6448 1172 695 833 832 6449 840 518 857 1204 6450 1182 623 577 578 6451 1103 623 625 698 6452 1130 1168 833 1172 6453 1045 1163 1124 1150 6454 1213 365 399 398 6455 951 1114 1068 967 6456 1068 1049 1165 880 6457 1045 1124 1163 1078 6458 1042 850 1078 852 6459 1075 1025 1024 1023 6460 1026 1075 1024 1027 6461 1012 640 1025 1128 6462 1136 1194 1170 536 6463 1075 1026 1024 1025 6464 281 823 815 1186 6465 1186 259 279 281 6466 1094 226 847 181 6467 866 847 336 846 6468 884 1087 1122 866 6469 1206 1087 1083 1080 6470 1048 877 1141 1171 6471 1141 1196 876 877 6472 1141 877 876 1171 6473 1173 705 915 916 6474 200 923 238 935 6475 1198 418 878 382 6476 1171 238 271 268 6477 923 1093 1062 935 6478 1212 301 302 347 6479 924 925 1085 911 6480 1181 387 386 348 6481 902 910 1048 1105 6482 1080 824 1040 828 6483 1104 195 851 835 6484 1144 712 692 693 6485 1045 1040 1080 1083 6486 1050 1042 1080 1045 6487 1080 1045 1042 1078 6488 1130 1123 814 815 6489 839 1099 517 1204 6490 1135 237 236 198 6491 914 655 1173 922 6492 702 921 705 1173 6493 1061 1100 1214 921 6494 1206 1052 892 1197 6495 667 712 704 873 6496 1039 1040 1129 1130 6497 1044 1079 1168 1083 $EndElements feenox-1.1/tests/spinning-disk-parallel-solid-full_unstruct.geo0000644000175000017500000000022014773607165022016 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Cylinder(1) = {0, 0, -t/2, 0, 0, t, R}; feenox-1.1/tests/wilson.sh0000755000175000017500000000113014773607165012607 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal checkgmsh gmsh -v 0 -1 ${dir}/wilson-1d.geo || exit $? answerzero wilson-1d.fee exitifwrong $? gmsh -v 0 -2 ${dir}/wilson-2d.geo || exit $? answerzero wilson-2d.fee 2e-2 exitifwrong $? # check TIME_PATH echo -n "time_path_petsc.fee ... " rm -rf wilson-2d*.vtk ${feenox} ${dir}/time_path_petsc.fee if [ "x$(ls wilson-2d*.vtk | wc -l)" != "x6" ]; then echo "failed" return 1 fi echo "ok" feenox-1.1/tests/cylinder.geo0000644000175000017500000000036214773607165013250 00000000000000SetFactory("OpenCASCADE"); Cylinder(1) = {0, 0, 0, 1, 0, 0, 1, 2*Pi}; Physical Surface("bottom",1) = {3}; Physical Surface("top",2) = {2}; Physical Volume("bulk",3) = {1}; Mesh.MeshSizeMax = 2; Mesh.MeshSizeMin = 2; Mesh.ElementOrder = 2; feenox-1.1/tests/pipe-ssh27-2-2.geo0000644000175000017500000000324614773607165013642 00000000000000// structured straight hex27 Mesh.SecondOrderLinear = 1; Mesh.RecombineAll = 1; Mesh.SecondOrderIncomplete = 0; SetFactory("OpenCASCADE"); l = 2*(( 323.8/2 )-( ( 323.8/2 )-21.5 )); Point(1) = {-l/2, 0, 0}; Point(2) = {-l/2, ( ( 323.8/2 )-21.5 ), 0}; Point(3) = {-l/2, 0, ( ( 323.8/2 )-21.5 )}; Point(4) = {-l/2, -( ( 323.8/2 )-21.5 ), 0}; Point(5) = {-l/2, 0, -( ( 323.8/2 )-21.5 )}; Point(6) = {-l/2, ( 323.8/2 ), 0}; Point(7) = {-l/2, 0, ( 323.8/2 )}; Point(8) = {-l/2, -( 323.8/2 ), 0}; Point(9) = {-l/2, 0, -( 323.8/2 )}; Circle(1) = {3, 1, 2}; Circle(2) = {2, 1, 5}; Circle(3) = {5, 1, 4}; Circle(4) = {4, 1, 3}; Circle(5) = {7, 1, 6}; Circle(6) = {6, 1, 9}; Circle(7) = {9, 1, 8}; Circle(8) = {8, 1, 7}; Line(9) = {3, 7}; Line(10) = {2, 6}; Line(11) = {5, 9}; Line(12) = {4, 8}; Curve Loop(1) = {5, -10, -1, 9}; Plane Surface(1) = {1}; Curve Loop(2) = {6, -11, -2, 10}; Plane Surface(2) = {2}; Curve Loop(3) = {7, -12, -3, 11}; Plane Surface(3) = {3}; Curve Loop(4) = {8, -9, -4, 12}; Plane Surface(4) = {4}; Transfinite Curve {1, 2, 3, 4, 5, 6, 7, 8} = 1+Pi/4*((( 323.8/2 )+( ( 323.8/2 )-21.5 ))/(( 323.8/2 )-( ( 323.8/2 )-21.5 )))*2; Transfinite Curve {10, 11, 12, 9} = 1+2; Transfinite Surface {:}; If (Mesh.RecombineAll) Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; Recombine; } Else Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; } EndIf Physical Surface("front") = {1, 2, 3, 4}; Physical Surface("back") = {17, 13, 9, 20}; Physical Surface("pressure") = {12, 16, 19, 7}; Physical Volume("bulk") = {2, 3, 4, 1}; Mesh.ElementOrder = 2; feenox-1.1/tests/expressions_cumbersome.ref0000644000175000017500000000001614773607165016240 000000000000000 0 0 0 0 0 0 feenox-1.1/tests/map-cube.geo0000644000175000017500000000007014773607165013124 00000000000000SetFactory("OpenCASCADE"); Box(1) = {0, 0, 0, 1, 1, 1}; feenox-1.1/tests/reaction-elastic-lr.ref0000644000175000017500000000017714773607165015306 00000000000000-1.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 feenox-1.1/tests/arguments_self.fee0000644000175000017500000000001414773607165014434 00000000000000PRINT ${0} feenox-1.1/tests/Barra1D.geo0000644000175000017500000000064014773607165012652 00000000000000Point(1) = {0, 0, 0}; // geometry: Point(2) = {1, 0, 0}; // two points Line(1) = {1, 2}; // and a line connecting them! Physical Point("left") = {1}; // groups for BCs and materials Physical Point("right") = {2}; Physical Line("bulk") = {1}; // needed due to how Gmsh works Mesh.MeshSizeMax = 0.05; // mesh size, three line elements //Mesh.MeshSizeMin = Mesh.MeshSizeMax; feenox-1.1/tests/long-bar-unstruct.geo0000644000175000017500000000036314773607165015026 00000000000000SetFactory("OpenCASCADE"); a = 2; n = 4; Box(1) = {0,0,0, a,a,10*a}; Physical Volume("bulk") = {1}; Physical Surface("rear") = {5}; Physical Surface("front") = {6}; Mesh.MeshSizeMax = a/n; Mesh.ElementOrder = 2; Mesh.SecondOrderLinear = 1; feenox-1.1/tests/steps.ref0000644000175000017500000000007714773607165012602 000000000000001 0.75 0.875 0.625 0.6875 0.9375 0.8125 0.5625 0.59375 0.84375 feenox-1.1/tests/time_path_petsc.fee0000644000175000017500000000057014773607165014575 00000000000000PROBLEM thermal 2d READ_MESH wilson-2d.msh k(x,y) = 1 + 0.5*T(x,y) rhocp(x,y) = 1 + 0.5*T(x,y) BC heat q=1 GROUPS left bottom BC temp T=limit(1e5*t,0,1) GROUPS right top T_0(x,y) = 0 end_time = 17.5 TIME_PATH 1 10/2 end_time/2 10 SOLVE_PROBLEM # PRINT t IF in_static|in_time_path|done FILE out PATH wilson-2d-%g.vtk 10*t WRITE_RESULTS FILE out T ENDIF feenox-1.1/tests/nafems-t1-unstruct.geo0000644000175000017500000000216714773607165015124 00000000000000SetFactory("OpenCASCADE"); l = 20; // mm r = 1; // mm Point(1) = {0, 0, 0}; Point(2) = {l/2, 0, 0}; Point(3) = {l/2, l/2, 0}; Point(4) = {0, l/2, 0}; Point(5) = {r, 0, 0}; Point(6) = {0, r, 0}; Line(1) = {1, 5}; Line(2) = {5, 2}; Line(3) = {2, 3}; Line(4) = {3, 4}; Line(5) = {4, 6}; Line(6) = {6, 1}; Circle(7) = {5, 1, 6}; Curve Loop(1) = {2, 3, 4, 5, -7}; Plane Surface(1) = {1}; Curve Loop(2) = {1, 7, 6}; Plane Surface(2) = {2}; // physical groups Physical Surface("bulk", 1) = {1}; Physical Surface("hot", 2) = {2}; Physical Curve("x", 3) = {1, 2}; Physical Curve("y", 4) = {6, 5}; // meshing settings // Mesh.MeshSizeMin = 10; // Mesh.MeshSizeMax = 10; Mesh.MeshSizeMin = r/5; Mesh.MeshSizeMax = r; Mesh.Algorithm = 8; Mesh.RecombineAll = 1; Mesh.Optimize = 1; // Mesh.OptimizeNetgen = 1; Mesh.ElementOrder = 1; Mesh.SecondOrderLinear = 0; // local refinement around the center (point 1) Field[1] = Distance; Field[1].NodesList = {1}; Field[2] = Threshold; Field[2].IField = 1; Field[2].LcMin = Mesh.MeshSizeMin; Field[2].LcMax = Mesh.MeshSizeMax; Field[2].DistMin = 1.5*r; Field[2].DistMax = 5*r; Background Field = {2}; feenox-1.1/tests/ud20-1-0-sl-src.fee0000644000175000017500000000047214773607165013674 00000000000000PROBLEM neutron_diffusion 1d READ_MESH ud20-1-0-sl.msh a = 2 * 10.371065 # critical size of the problem UD20-1-0-SL (number 22 report Los Alamos) Sigma_t1 = 0.54628 Sigma_s1.1 = 0.464338 S1 = 0.5*1.70*0.054628 D1 = 1/(3*Sigma_t1) BC left null BC right null SOLVE_PROBLEM PRINT %.3f phi1(5) phi1(15) SEP " " feenox-1.1/tests/print_function.fee0000644000175000017500000000022514773607165014463 00000000000000FUNCTION f(x) = x^2 FUNCTION g(x,y) = x^2 + y^2 PRINT_FUNCTION f MIN 0 MAX 1 NSTEPS 10 PRINT_FUNCTION g x^2+y^2-g(x,y) MIN 0 0 MAX 1 1 NSTEPS 10 10 feenox-1.1/tests/modal_rectangular_beam.fee0000644000175000017500000000027614773607165016077 00000000000000PROBLEM modal DIMENSIONS 3 MODES 6 READ_MESH rectangular_beam.msh E = 2e11 nu = 0.3 rho = 7800 BC left fixed SOLVE_PROBLEM PRINT_VECTOR f WRITE_MESH rectangular_beam.vtk VECTOR u1 v1 w1 feenox-1.1/tests/map-cube.sh0000755000175000017500000000105014773607165012766 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkgmsh gmsh -v 0 -3 -clmax 0.25 ${dir}/map-cube.geo -o map-cube-4.msh || exit $? gmsh -v 0 -3 -clmax 0.10 ${dir}/map-cube.geo -o map-cube-10.msh || exit $? ${feenox} ${dir}/map-cube-create.fee 4 || exit $? ${feenox} ${dir}/map-cube-create.fee 10 || exit $? answerzero2 map-cube.fee 4 10 2e-2 exitifwrong $? answerzero2 map-cube.fee 10 4 exitifwrong $? feenox-1.1/tests/bc-groups2.ref0000644000175000017500000000032314773607165013421 00000000000000{ "bcs": [ { "name": "A", "groups": [ "left", "front", "bottom" ] }, { "name": "B", "groups": [ "right", "back", "top" ] } ] } feenox-1.1/tests/nafems-t1.geo0000644000175000017500000000263614773607165013240 00000000000000SetFactory("OpenCASCADE"); l = 20; // mm r = 1; // mm Point(1) = {0, 0, 0}; Point(2) = {l/2, 0, 0}; Point(3) = {l/2, l/2, 0}; Point(4) = {0, l/2, 0}; Point(5) = {r, 0, 0}; Point(6) = {0, r, 0}; Point(7) = {0.5*r, 0, 0}; Point(8) = {0, 0.5*r, 0}; Point(9) = {0.4*r, 0.4*r, 0}; Point(10) = {r*Sin(Pi/4), r*Sin(Pi/4), 0}; Line(1) = {1, 7}; Line(2) = {7, 5}; Line(3) = {5, 2}; Line(4) = {2, 3}; Line(5) = {3, 4}; Line(6) = {4, 6}; Line(7) = {6, 8}; Line(8) = {8, 1}; Line(9) = {7, 9}; Line(10) = {9, 8}; Line(11) = {9, 10}; Line(12) = {10, 3}; Circle(13) = {5, 1, 10}; Circle(14) = {10, 1, 6}; Curve Loop(1) = {3, 4, -12, -13}; Plane Surface(1) = {1}; Curve Loop(2) = {5, 6, -14, 12}; Plane Surface(2) = {2}; Curve Loop(3) = {1, 9, 10, 8}; Plane Surface(3) = {3}; Curve Loop(4) = {2, 13, -11, -9}; Plane Surface(4) = {4}; Curve Loop(5) = {14, 7, -10, 11}; Plane Surface(5) = {5}; Transfinite Curve {1, 9, 10, 8, 2, 13, 11, 9, 14, 7, 10, 13, 4, 5, 14} = 2*8+1; Transfinite Curve {3, 12, -6} = 2*24+1 Using Progression 1.15; Transfinite Surface {3} = {1, 7, 9, 8}; Transfinite Surface {4} = {7, 5, 10, 9}; Transfinite Surface {5} = {8, 9, 10, 6}; Transfinite Surface {1} = {5, 2, 3, 10}; Transfinite Surface {2} = {10, 3, 4, 6}; Mesh.ElementOrder = 2; Mesh.RecombineAll = 1; // physical groups Physical Surface("bulk") = {1, 2}; Physical Surface("hot") = {3, 4, 5}; Physical Curve("x") = {1, 2, 3}; Physical Curve("y") = {8, 7, 6}; feenox-1.1/tests/function_data.sh0000755000175000017500000000172414773607165014123 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer function_data1dlinear.fee "2.5" exitifwrong $? answer function_data1dlinearchanged.fee "1" exitifwrong $? answer1 function_data1d.fee linear "2" exitifwrong $? answer1 function_data1d.fee polynomial "2.27984" exitifwrong $? answer1 function_data1d.fee spline "2.07672" exitifwrong $? answer1 function_data1d.fee spline_periodic "2.09259" exitifwrong $? answer1 function_data1d.fee akima "2.09877" exitifwrong $? answer1 function_data1d.fee akima_periodic "2.09877" exitifwrong $? answer1 function_data1d.fee steffen "2.07407" exitifwrong $? answer1 function_data2d.fee bilinear "3" exitifwrong $? answer1 function_data2d.fee nearest "3" exitifwrong $? answer1 function_data2d.fee shepard "3.03106" exitifwrong $? answer1 function_data2d.fee shepard_kd "3" exitifwrong $? feenox-1.1/tests/maze.geo0000644000175000017500000026613514773607165012407 00000000000000/* Converted from AutoCad DXF file: maze.dxf */ /* Tolerance 0.1: 1124 points / 1125 curves */ u = 1; lc = 25 ; Point (976) = {903.111 *u, 85.2319 *u, 0 *u, lc} ; Point (977) = {903.111 *u, -92.5681 *u, 0 *u, lc} ; Point (978) = {903.111 *u, -270.368 *u, 0 *u, lc} ; Point (988) = {903.111 *u, -276.013 *u, 0 *u, lc} ; Point (989) = {903.111 *u, -431.234 *u, 0 *u, lc} ; Point (990) = {903.111 *u, -586.456 *u, 0 *u, lc} ; Point (1000) = {903.111 *u, -592.101 *u, 0 *u, lc} ; Point (1001) = {903.111 *u, -634.434 *u, 0 *u, lc} ; Point (1002) = {903.111 *u, -676.768 *u, 0 *u, lc} ; Point (1064) = {903.11 *u, -682.412 *u, 0 *u, lc} ; Point (1065) = {903.11 *u, -747.323 *u, 0 *u, lc} ; Point (1066) = {903.11 *u, -812.234 *u, 0 *u, lc} ; Point (979) = {883.355 *u, -270.368 *u, 0 *u, lc} ; Point (999) = {883.355 *u, -592.101 *u, 0 *u, lc} ; Point (1063) = {883.354 *u, -682.412 *u, 0 *u, lc} ; Point (987) = {880.533 *u, -276.013 *u, 0 *u, lc} ; Point (991) = {880.533 *u, -586.456 *u, 0 *u, lc} ; Point (970) = {863.6 *u, 45.7209 *u, 0 *u, lc} ; Point (969) = {863.6 *u, -24.8346 *u, 0 *u, lc} ; Point (968) = {863.6 *u, -95.3901 *u, 0 *u, lc} ; Point (982) = {863.6 *u, -134.902 *u, 0 *u, lc} ; Point (981) = {863.6 *u, -202.635 *u, 0 *u, lc} ; Point (980) = {863.6 *u, -270.368 *u, 0 *u, lc} ; Point (962) = {863.6 *u, -315.524 *u, 0 *u, lc} ; Point (961) = {863.6 *u, -386.08 *u, 0 *u, lc} ; Point (960) = {863.6 *u, -456.635 *u, 0 *u, lc} ; Point (750) = {863.6 *u, -496.146 *u, 0 *u, lc} ; Point (749) = {863.6 *u, -498.968 *u, 0 *u, lc} ; Point (748) = {863.6 *u, -501.79 *u, 0 *u, lc} ; Point (1010) = {863.6 *u, -541.301 *u, 0 *u, lc} ; Point (1009) = {863.6 *u, -544.123 *u, 0 *u, lc} ; Point (1008) = {863.6 *u, -546.945 *u, 0 *u, lc} ; Point (998) = {863.6 *u, -592.101 *u, 0 *u, lc} ; Point (997) = {863.6 *u, -614.679 *u, 0 *u, lc} ; Point (996) = {863.6 *u, -637.256 *u, 0 *u, lc} ; Point (1062) = {863.599 *u, -682.412 *u, 0 *u, lc} ; Point (1061) = {863.599 *u, -727.568 *u, 0 *u, lc} ; Point (1060) = {863.599 *u, -772.723 *u, 0 *u, lc} ; Point (975) = {860.778 *u, 85.2319 *u, 0 *u, lc} ; Point (983) = {860.778 *u, -134.902 *u, 0 *u, lc} ; Point (995) = {860.778 *u, -637.256 *u, 0 *u, lc} ; Point (1003) = {860.778 *u, -676.768 *u, 0 *u, lc} ; Point (884) = {857.956 *u, 40.0756 *u, 0 *u, lc} ; Point (885) = {857.956 *u, -24.8355 *u, 0 *u, lc} ; Point (886) = {857.956 *u, -89.7466 *u, 0 *u, lc} ; Point (984) = {857.956 *u, -134.902 *u, 0 *u, lc} ; Point (985) = {857.956 *u, -205.457 *u, 0 *u, lc} ; Point (986) = {857.956 *u, -276.013 *u, 0 *u, lc} ; Point (948) = {857.955 *u, -321.168 *u, 0 *u, lc} ; Point (949) = {857.955 *u, -386.08 *u, 0 *u, lc} ; Point (950) = {857.955 *u, -450.991 *u, 0 *u, lc} ; Point (992) = {857.956 *u, -586.456 *u, 0 *u, lc} ; Point (993) = {857.956 *u, -611.857 *u, 0 *u, lc} ; Point (994) = {857.956 *u, -637.256 *u, 0 *u, lc} ; Point (1052) = {857.954 *u, -682.412 *u, 0 *u, lc} ; Point (1053) = {857.954 *u, -724.745 *u, 0 *u, lc} ; Point (1054) = {857.954 *u, -767.079 *u, 0 *u, lc} ; Point (971) = {841.022 *u, 45.7209 *u, 0 *u, lc} ; Point (967) = {841.022 *u, -95.3901 *u, 0 *u, lc} ; Point (963) = {841.022 *u, -315.524 *u, 0 *u, lc} ; Point (1007) = {841.022 *u, -546.945 *u, 0 *u, lc} ; Point (951) = {838.2 *u, -450.991 *u, 0 *u, lc} ; Point (959) = {838.2 *u, -456.635 *u, 0 *u, lc} ; Point (1059) = {838.199 *u, -772.723 *u, 0 *u, lc} ; Point (1067) = {838.199 *u, -812.234 *u, 0 *u, lc} ; Point (883) = {835.378 *u, 40.0756 *u, 0 *u, lc} ; Point (887) = {835.378 *u, -89.7466 *u, 0 *u, lc} ; Point (1051) = {835.377 *u, -682.412 *u, 0 *u, lc} ; Point (1055) = {835.377 *u, -767.079 *u, 0 *u, lc} ; Point (974) = {818.444 *u, 85.2319 *u, 0 *u, lc} ; Point (973) = {818.444 *u, 65.4764 *u, 0 *u, lc} ; Point (972) = {818.444 *u, 45.7209 *u, 0 *u, lc} ; Point (778) = {818.444 *u, 0.56438 *u, 0 *u, lc} ; Point (777) = {818.444 *u, -24.8356 *u, 0 *u, lc} ; Point (776) = {818.444 *u, -50.2356 *u, 0 *u, lc} ; Point (966) = {818.444 *u, -95.3901 *u, 0 *u, lc} ; Point (965) = {818.444 *u, -205.457 *u, 0 *u, lc} ; Point (964) = {818.444 *u, -315.524 *u, 0 *u, lc} ; Point (954) = {818.444 *u, -360.68 *u, 0 *u, lc} ; Point (953) = {818.444 *u, -405.835 *u, 0 *u, lc} ; Point (952) = {818.444 *u, -450.991 *u, 0 *u, lc} ; Point (751) = {818.444 *u, -496.146 *u, 0 *u, lc} ; Point (1006) = {818.444 *u, -546.945 *u, 0 *u, lc} ; Point (1005) = {818.444 *u, -611.856 *u, 0 *u, lc} ; Point (1004) = {818.444 *u, -676.768 *u, 0 *u, lc} ; Point (1074) = {818.443 *u, -721.923 *u, 0 *u, lc} ; Point (1073) = {818.443 *u, -724.746 *u, 0 *u, lc} ; Point (1072) = {818.443 *u, -727.568 *u, 0 *u, lc} ; Point (947) = {815.622 *u, -321.168 *u, 0 *u, lc} ; Point (955) = {815.622 *u, -360.68 *u, 0 *u, lc} ; Point (880) = {812.8 *u, 85.2312 *u, 0 *u, lc} ; Point (881) = {812.8 *u, 62.6534 *u, 0 *u, lc} ; Point (882) = {812.8 *u, 40.0756 *u, 0 *u, lc} ; Point (588) = {812.8 *u, -5.07954 *u, 0 *u, lc} ; Point (589) = {812.8 *u, -24.835 *u, 0 *u, lc} ; Point (590) = {812.8 *u, -44.5905 *u, 0 *u, lc} ; Point (888) = {812.8 *u, -89.7466 *u, 0 *u, lc} ; Point (889) = {812.8 *u, -112.324 *u, 0 *u, lc} ; Point (890) = {812.8 *u, -134.902 *u, 0 *u, lc} ; Point (924) = {812.8 *u, -140.546 *u, 0 *u, lc} ; Point (925) = {812.8 *u, -228.035 *u, 0 *u, lc} ; Point (926) = {812.8 *u, -315.524 *u, 0 *u, lc} ; Point (956) = {812.8 *u, -360.68 *u, 0 *u, lc} ; Point (957) = {812.8 *u, -408.657 *u, 0 *u, lc} ; Point (958) = {812.8 *u, -456.635 *u, 0 *u, lc} ; Point (1048) = {812.799 *u, -546.945 *u, 0 *u, lc} ; Point (1049) = {812.799 *u, -614.679 *u, 0 *u, lc} ; Point (1050) = {812.799 *u, -682.412 *u, 0 *u, lc} ; Point (1056) = {812.799 *u, -767.079 *u, 0 *u, lc} ; Point (1057) = {812.799 *u, -769.901 *u, 0 *u, lc} ; Point (1058) = {812.799 *u, -772.723 *u, 0 *u, lc} ; Point (779) = {795.867 *u, 0.56438 *u, 0 *u, lc} ; Point (775) = {795.867 *u, -50.2356 *u, 0 *u, lc} ; Point (1075) = {795.865 *u, -721.923 *u, 0 *u, lc} ; Point (1071) = {795.865 *u, -727.568 *u, 0 *u, lc} ; Point (923) = {793.044 *u, -140.546 *u, 0 *u, lc} ; Point (891) = {790.222 *u, -134.902 *u, 0 *u, lc} ; Point (782) = {773.289 *u, 45.72 *u, 0 *u, lc} ; Point (781) = {773.289 *u, 23.1422 *u, 0 *u, lc} ; Point (780) = {773.289 *u, 0.56438 *u, 0 *u, lc} ; Point (774) = {773.289 *u, -50.2356 *u, 0 *u, lc} ; Point (773) = {773.289 *u, -72.8134 *u, 0 *u, lc} ; Point (772) = {773.289 *u, -95.3912 *u, 0 *u, lc} ; Point (922) = {773.289 *u, -140.546 *u, 0 *u, lc} ; Point (921) = {773.289 *u, -163.124 *u, 0 *u, lc} ; Point (920) = {773.289 *u, -185.702 *u, 0 *u, lc} ; Point (906) = {773.289 *u, -225.213 *u, 0 *u, lc} ; Point (905) = {773.289 *u, -250.613 *u, 0 *u, lc} ; Point (904) = {773.289 *u, -276.013 *u, 0 *u, lc} ; Point (946) = {773.289 *u, -321.168 *u, 0 *u, lc} ; Point (945) = {773.289 *u, -343.746 *u, 0 *u, lc} ; Point (944) = {773.289 *u, -366.324 *u, 0 *u, lc} ; Point (754) = {773.289 *u, -405.835 *u, 0 *u, lc} ; Point (753) = {773.289 *u, -450.99 *u, 0 *u, lc} ; Point (752) = {773.289 *u, -496.146 *u, 0 *u, lc} ; Point (1078) = {773.288 *u, -586.457 *u, 0 *u, lc} ; Point (1077) = {773.288 *u, -654.19 *u, 0 *u, lc} ; Point (1076) = {773.288 *u, -721.923 *u, 0 *u, lc} ; Point (1070) = {773.288 *u, -727.568 *u, 0 *u, lc} ; Point (1069) = {773.288 *u, -769.901 *u, 0 *u, lc} ; Point (1068) = {773.288 *u, -812.234 *u, 0 *u, lc} ; Point (879) = {770.467 *u, 85.2312 *u, 0 *u, lc} ; Point (783) = {770.466 *u, 45.72 *u, 0 *u, lc} ; Point (943) = {770.467 *u, -366.324 *u, 0 *u, lc} ; Point (1047) = {770.466 *u, -546.945 *u, 0 *u, lc} ; Point (1079) = {770.465 *u, -586.457 *u, 0 *u, lc} ; Point (784) = {767.644 *u, 45.72 *u, 0 *u, lc} ; Point (785) = {767.644 *u, 23.1422 *u, 0 *u, lc} ; Point (786) = {767.644 *u, 0.56438 *u, 0 *u, lc} ; Point (596) = {767.644 *u, -50.235 *u, 0 *u, lc} ; Point (597) = {767.644 *u, -69.9905 *u, 0 *u, lc} ; Point (598) = {767.644 *u, -89.746 *u, 0 *u, lc} ; Point (892) = {767.644 *u, -134.902 *u, 0 *u, lc} ; Point (893) = {767.644 *u, -157.48 *u, 0 *u, lc} ; Point (894) = {767.644 *u, -180.058 *u, 0 *u, lc} ; Point (912) = {767.644 *u, -230.858 *u, 0 *u, lc} ; Point (913) = {767.644 *u, -250.613 *u, 0 *u, lc} ; Point (914) = {767.644 *u, -270.369 *u, 0 *u, lc} ; Point (940) = {767.644 *u, -321.168 *u, 0 *u, lc} ; Point (941) = {767.644 *u, -343.746 *u, 0 *u, lc} ; Point (942) = {767.644 *u, -366.324 *u, 0 *u, lc} ; Point (652) = {767.644 *u, -411.479 *u, 0 *u, lc} ; Point (653) = {767.644 *u, -453.812 *u, 0 *u, lc} ; Point (654) = {767.644 *u, -496.146 *u, 0 *u, lc} ; Point (1080) = {767.643 *u, -586.457 *u, 0 *u, lc} ; Point (1081) = {767.643 *u, -699.346 *u, 0 *u, lc} ; Point (1082) = {767.643 *u, -812.235 *u, 0 *u, lc} ; Point (771) = {750.711 *u, -95.3912 *u, 0 *u, lc} ; Point (755) = {750.711 *u, -405.835 *u, 0 *u, lc} ; Point (907) = {747.889 *u, -225.213 *u, 0 *u, lc} ; Point (591) = {745.067 *u, -44.5905 *u, 0 *u, lc} ; Point (599) = {745.066 *u, -89.746 *u, 0 *u, lc} ; Point (911) = {745.067 *u, -230.858 *u, 0 *u, lc} ; Point (651) = {745.066 *u, -411.479 *u, 0 *u, lc} ; Point (878) = {728.133 *u, 85.2312 *u, 0 *u, lc} ; Point (877) = {728.133 *u, 62.6534 *u, 0 *u, lc} ; Point (876) = {728.133 *u, 40.0756 *u, 0 *u, lc} ; Point (770) = {728.133 *u, -95.3912 *u, 0 *u, lc} ; Point (769) = {728.133 *u, -117.969 *u, 0 *u, lc} ; Point (768) = {728.133 *u, -140.547 *u, 0 *u, lc} ; Point (919) = {728.133 *u, -185.702 *u, 0 *u, lc} ; Point (758) = {728.133 *u, -360.679 *u, 0 *u, lc} ; Point (757) = {728.133 *u, -383.257 *u, 0 *u, lc} ; Point (756) = {728.133 *u, -405.835 *u, 0 *u, lc} ; Point (662) = {728.133 *u, -450.99 *u, 0 *u, lc} ; Point (661) = {728.133 *u, -453.812 *u, 0 *u, lc} ; Point (660) = {728.133 *u, -456.635 *u, 0 *u, lc} ; Point (1046) = {728.132 *u, -546.945 *u, 0 *u, lc} ; Point (1045) = {728.132 *u, -614.679 *u, 0 *u, lc} ; Point (1044) = {728.132 *u, -682.412 *u, 0 *u, lc} ; Point (1090) = {728.132 *u, -721.924 *u, 0 *u, lc} ; Point (1089) = {728.132 *u, -747.324 *u, 0 *u, lc} ; Point (1088) = {728.132 *u, -772.724 *u, 0 *u, lc} ; Point (587) = {725.311 *u, -5.07954 *u, 0 *u, lc} ; Point (915) = {725.311 *u, -270.369 *u, 0 *u, lc} ; Point (903) = {725.311 *u, -276.013 *u, 0 *u, lc} ; Point (927) = {725.311 *u, -315.524 *u, 0 *u, lc} ; Point (655) = {725.311 *u, -496.146 *u, 0 *u, lc} ; Point (1091) = {725.31 *u, -721.924 *u, 0 *u, lc} ; Point (1083) = {725.31 *u, -812.235 *u, 0 *u, lc} ; Point (868) = {722.489 *u, 85.231 *u, 0 *u, lc} ; Point (869) = {722.489 *u, 65.4755 *u, 0 *u, lc} ; Point (870) = {722.489 *u, 45.72 *u, 0 *u, lc} ; Point (595) = {722.489 *u, -50.235 *u, 0 *u, lc} ; Point (600) = {722.489 *u, -89.746 *u, 0 *u, lc} ; Point (601) = {722.489 *u, -112.324 *u, 0 *u, lc} ; Point (602) = {722.489 *u, -134.902 *u, 0 *u, lc} ; Point (908) = {722.489 *u, -225.213 *u, 0 *u, lc} ; Point (909) = {722.489 *u, -228.035 *u, 0 *u, lc} ; Point (910) = {722.489 *u, -230.858 *u, 0 *u, lc} ; Point (648) = {722.488 *u, -366.323 *u, 0 *u, lc} ; Point (649) = {722.488 *u, -388.901 *u, 0 *u, lc} ; Point (650) = {722.488 *u, -411.479 *u, 0 *u, lc} ; Point (1032) = {722.488 *u, -546.945 *u, 0 *u, lc} ; Point (1033) = {722.488 *u, -611.857 *u, 0 *u, lc} ; Point (1034) = {722.488 *u, -676.768 *u, 0 *u, lc} ; Point (1092) = {722.488 *u, -721.924 *u, 0 *u, lc} ; Point (1093) = {722.488 *u, -744.502 *u, 0 *u, lc} ; Point (1094) = {722.488 *u, -767.079 *u, 0 *u, lc} ; Point (659) = {705.555 *u, -456.635 *u, 0 *u, lc} ; Point (1043) = {705.554 *u, -682.412 *u, 0 *u, lc} ; Point (1087) = {705.554 *u, -772.724 *u, 0 *u, lc} ; Point (875) = {702.733 *u, 40.0756 *u, 0 *u, lc} ; Point (939) = {702.733 *u, -321.168 *u, 0 *u, lc} ; Point (759) = {702.733 *u, -360.679 *u, 0 *u, lc} ; Point (647) = {702.733 *u, -366.323 *u, 0 *u, lc} ; Point (663) = {702.733 *u, -450.99 *u, 0 *u, lc} ; Point (1011) = {702.733 *u, -541.301 *u, 0 *u, lc} ; Point (871) = {699.911 *u, 45.72 *u, 0 *u, lc} ; Point (895) = {699.911 *u, -180.058 *u, 0 *u, lc} ; Point (1035) = {699.91 *u, -676.768 *u, 0 *u, lc} ; Point (1095) = {699.91 *u, -767.079 *u, 0 *u, lc} ; Point (582) = {682.978 *u, -89.7461 *u, 0 *u, lc} ; Point (581) = {682.978 *u, -92.5684 *u, 0 *u, lc} ; Point (580) = {682.978 *u, -95.3906 *u, 0 *u, lc} ; Point (918) = {682.978 *u, -185.702 *u, 0 *u, lc} ; Point (917) = {682.978 *u, -228.035 *u, 0 *u, lc} ; Point (916) = {682.978 *u, -270.369 *u, 0 *u, lc} ; Point (646) = {682.977 *u, -366.323 *u, 0 *u, lc} ; Point (645) = {682.977 *u, -388.901 *u, 0 *u, lc} ; Point (644) = {682.977 *u, -411.479 *u, 0 *u, lc} ; Point (658) = {682.977 *u, -456.635 *u, 0 *u, lc} ; Point (657) = {682.977 *u, -476.39 *u, 0 *u, lc} ; Point (656) = {682.977 *u, -496.146 *u, 0 *u, lc} ; Point (747) = {682.978 *u, -501.79 *u, 0 *u, lc} ; Point (1026) = {682.977 *u, -586.456 *u, 0 *u, lc} ; Point (1025) = {682.977 *u, -611.857 *u, 0 *u, lc} ; Point (1024) = {682.977 *u, -637.256 *u, 0 *u, lc} ; Point (1042) = {682.977 *u, -682.412 *u, 0 *u, lc} ; Point (1041) = {682.977 *u, -704.99 *u, 0 *u, lc} ; Point (1040) = {682.977 *u, -727.568 *u, 0 *u, lc} ; Point (1086) = {682.977 *u, -772.724 *u, 0 *u, lc} ; Point (1085) = {682.977 *u, -792.479 *u, 0 *u, lc} ; Point (1084) = {682.977 *u, -812.235 *u, 0 *u, lc} ; Point (867) = {680.156 *u, 85.231 *u, 0 *u, lc} ; Point (787) = {680.155 *u, 0.56438 *u, 0 *u, lc} ; Point (1023) = {680.155 *u, -637.256 *u, 0 *u, lc} ; Point (1039) = {680.154 *u, -727.568 *u, 0 *u, lc} ; Point (872) = {677.333 *u, 45.72 *u, 0 *u, lc} ; Point (873) = {677.333 *u, 42.8978 *u, 0 *u, lc} ; Point (874) = {677.333 *u, 40.0756 *u, 0 *u, lc} ; Point (592) = {677.333 *u, -44.5905 *u, 0 *u, lc} ; Point (593) = {677.333 *u, -47.4128 *u, 0 *u, lc} ; Point (594) = {677.333 *u, -50.235 *u, 0 *u, lc} ; Point (900) = {677.333 *u, -185.702 *u, 0 *u, lc} ; Point (901) = {677.333 *u, -230.858 *u, 0 *u, lc} ; Point (902) = {677.333 *u, -276.013 *u, 0 *u, lc} ; Point (760) = {677.333 *u, -360.679 *u, 0 *u, lc} ; Point (761) = {677.333 *u, -383.257 *u, 0 *u, lc} ; Point (762) = {677.333 *u, -405.835 *u, 0 *u, lc} ; Point (664) = {677.333 *u, -450.99 *u, 0 *u, lc} ; Point (665) = {677.333 *u, -473.568 *u, 0 *u, lc} ; Point (666) = {677.333 *u, -496.146 *u, 0 *u, lc} ; Point (1020) = {677.332 *u, -592.101 *u, 0 *u, lc} ; Point (1021) = {677.332 *u, -614.679 *u, 0 *u, lc} ; Point (1022) = {677.332 *u, -637.256 *u, 0 *u, lc} ; Point (1036) = {677.332 *u, -676.768 *u, 0 *u, lc} ; Point (1037) = {677.332 *u, -702.168 *u, 0 *u, lc} ; Point (1038) = {677.332 *u, -727.568 *u, 0 *u, lc} ; Point (1096) = {677.332 *u, -767.079 *u, 0 *u, lc} ; Point (1097) = {677.332 *u, -789.657 *u, 0 *u, lc} ; Point (1098) = {677.332 *u, -812.235 *u, 0 *u, lc} ; Point (583) = {660.4 *u, -89.7461 *u, 0 *u, lc} ; Point (767) = {660.4 *u, -140.547 *u, 0 *u, lc} ; Point (643) = {660.4 *u, -411.479 *u, 0 *u, lc} ; Point (603) = {654.755 *u, -134.902 *u, 0 *u, lc} ; Point (899) = {654.756 *u, -185.702 *u, 0 *u, lc} ; Point (866) = {637.822 *u, 85.231 *u, 0 *u, lc} ; Point (865) = {637.822 *u, 62.6532 *u, 0 *u, lc} ; Point (864) = {637.822 *u, 40.0754 *u, 0 *u, lc} ; Point (586) = {637.822 *u, -5.07954 *u, 0 *u, lc} ; Point (585) = {637.822 *u, -47.4128 *u, 0 *u, lc} ; Point (584) = {637.822 *u, -89.7461 *u, 0 *u, lc} ; Point (930) = {637.822 *u, -225.213 *u, 0 *u, lc} ; Point (929) = {637.822 *u, -270.369 *u, 0 *u, lc} ; Point (928) = {637.822 *u, -315.524 *u, 0 *u, lc} ; Point (938) = {637.822 *u, -321.168 *u, 0 *u, lc} ; Point (937) = {637.822 *u, -343.746 *u, 0 *u, lc} ; Point (936) = {637.822 *u, -366.324 *u, 0 *u, lc} ; Point (642) = {637.822 *u, -411.479 *u, 0 *u, lc} ; Point (641) = {637.822 *u, -434.057 *u, 0 *u, lc} ; Point (640) = {637.822 *u, -456.635 *u, 0 *u, lc} ; Point (738) = {637.822 *u, -631.612 *u, 0 *u, lc} ; Point (737) = {637.822 *u, -702.168 *u, 0 *u, lc} ; Point (736) = {637.822 *u, -772.723 *u, 0 *u, lc} ; Point (863) = {635 *u, 40.0754 *u, 0 *u, lc} ; Point (931) = {635 *u, -225.213 *u, 0 *u, lc} ; Point (935) = {635 *u, -366.324 *u, 0 *u, lc} ; Point (763) = {635 *u, -405.835 *u, 0 *u, lc} ; Point (1031) = {634.999 *u, -546.945 *u, 0 *u, lc} ; Point (735) = {635 *u, -772.723 *u, 0 *u, lc} ; Point (1099) = {634.999 *u, -812.235 *u, 0 *u, lc} ; Point (860) = {632.178 *u, 85.231 *u, 0 *u, lc} ; Point (861) = {632.178 *u, 62.6532 *u, 0 *u, lc} ; Point (862) = {632.178 *u, 40.0754 *u, 0 *u, lc} ; Point (800) = {632.178 *u, -5.08006 *u, 0 *u, lc} ; Point (801) = {632.178 *u, -47.4134 *u, 0 *u, lc} ; Point (802) = {632.178 *u, -89.7467 *u, 0 *u, lc} ; Point (896) = {632.178 *u, -180.058 *u, 0 *u, lc} ; Point (897) = {632.178 *u, -182.88 *u, 0 *u, lc} ; Point (898) = {632.178 *u, -185.702 *u, 0 *u, lc} ; Point (932) = {632.178 *u, -225.213 *u, 0 *u, lc} ; Point (933) = {632.178 *u, -295.769 *u, 0 *u, lc} ; Point (934) = {632.178 *u, -366.324 *u, 0 *u, lc} ; Point (632) = {632.177 *u, -411.479 *u, 0 *u, lc} ; Point (633) = {632.177 *u, -431.235 *u, 0 *u, lc} ; Point (634) = {632.177 *u, -450.99 *u, 0 *u, lc} ; Point (732) = {632.178 *u, -637.257 *u, 0 *u, lc} ; Point (733) = {632.178 *u, -704.99 *u, 0 *u, lc} ; Point (734) = {632.178 *u, -772.723 *u, 0 *u, lc} ; Point (579) = {615.245 *u, -95.3906 *u, 0 *u, lc} ; Point (1027) = {615.244 *u, -586.456 *u, 0 *u, lc} ; Point (639) = {612.422 *u, -456.635 *u, 0 *u, lc} ; Point (667) = {612.422 *u, -496.146 *u, 0 *u, lc} ; Point (799) = {609.6 *u, -5.08006 *u, 0 *u, lc} ; Point (635) = {609.6 *u, -450.99 *u, 0 *u, lc} ; Point (790) = {592.667 *u, 45.72 *u, 0 *u, lc} ; Point (789) = {592.667 *u, 23.1422 *u, 0 *u, lc} ; Point (788) = {592.667 *u, 0.56438 *u, 0 *u, lc} ; Point (846) = {592.667 *u, -44.5912 *u, 0 *u, lc} ; Point (845) = {592.667 *u, -47.4134 *u, 0 *u, lc} ; Point (844) = {592.667 *u, -50.2356 *u, 0 *u, lc} ; Point (766) = {592.667 *u, -140.547 *u, 0 *u, lc} ; Point (765) = {592.667 *u, -273.191 *u, 0 *u, lc} ; Point (764) = {592.667 *u, -405.835 *u, 0 *u, lc} ; Point (1102) = {592.666 *u, -676.768 *u, 0 *u, lc} ; Point (1101) = {592.666 *u, -744.502 *u, 0 *u, lc} ; Point (1100) = {592.666 *u, -812.235 *u, 0 *u, lc} ; Point (796) = {587.022 *u, 40.0755 *u, 0 *u, lc} ; Point (797) = {587.022 *u, 17.4977 *u, 0 *u, lc} ; Point (798) = {587.022 *u, -5.08006 *u, 0 *u, lc} ; Point (604) = {587.022 *u, -134.902 *u, 0 *u, lc} ; Point (605) = {587.022 *u, -157.479 *u, 0 *u, lc} ; Point (606) = {587.022 *u, -180.057 *u, 0 *u, lc} ; Point (612) = {587.022 *u, -185.702 *u, 0 *u, lc} ; Point (613) = {587.022 *u, -250.613 *u, 0 *u, lc} ; Point (614) = {587.022 *u, -315.524 *u, 0 *u, lc} ; Point (624) = {587.022 *u, -321.168 *u, 0 *u, lc} ; Point (625) = {587.022 *u, -363.502 *u, 0 *u, lc} ; Point (626) = {587.022 *u, -405.835 *u, 0 *u, lc} ; Point (631) = {587.022 *u, -411.479 *u, 0 *u, lc} ; Point (636) = {587.022 *u, -450.99 *u, 0 *u, lc} ; Point (637) = {587.022 *u, -453.812 *u, 0 *u, lc} ; Point (638) = {587.022 *u, -456.635 *u, 0 *u, lc} ; Point (1019) = {587.021 *u, -592.101 *u, 0 *u, lc} ; Point (1108) = {587.021 *u, -682.413 *u, 0 *u, lc} ; Point (1109) = {587.021 *u, -724.746 *u, 0 *u, lc} ; Point (1110) = {587.021 *u, -767.079 *u, 0 *u, lc} ; Point (1116) = {587.021 *u, -772.724 *u, 0 *u, lc} ; Point (1117) = {587.021 *u, -792.479 *u, 0 *u, lc} ; Point (1118) = {587.021 *u, -812.235 *u, 0 *u, lc} ; Point (847) = {570.089 *u, -44.5912 *u, 0 *u, lc} ; Point (859) = {567.267 *u, 85.231 *u, 0 *u, lc} ; Point (791) = {567.267 *u, 45.72 *u, 0 *u, lc} ; Point (843) = {567.267 *u, -50.2356 *u, 0 *u, lc} ; Point (803) = {567.267 *u, -89.7467 *u, 0 *u, lc} ; Point (1103) = {567.266 *u, -676.768 *u, 0 *u, lc} ; Point (795) = {564.444 *u, 40.0755 *u, 0 *u, lc} ; Point (607) = {564.444 *u, -180.057 *u, 0 *u, lc} ; Point (611) = {564.444 *u, -185.702 *u, 0 *u, lc} ; Point (627) = {564.444 *u, -405.835 *u, 0 *u, lc} ; Point (1107) = {564.443 *u, -682.413 *u, 0 *u, lc} ; Point (1111) = {564.443 *u, -767.079 *u, 0 *u, lc} ; Point (1115) = {564.443 *u, -772.724 *u, 0 *u, lc} ; Point (850) = {547.511 *u, 0.56442 *u, 0 *u, lc} ; Point (849) = {547.511 *u, -22.0134 *u, 0 *u, lc} ; Point (848) = {547.511 *u, -44.5912 *u, 0 *u, lc} ; Point (578) = {547.511 *u, -95.3906 *u, 0 *u, lc} ; Point (577) = {547.511 *u, -117.968 *u, 0 *u, lc} ; Point (576) = {547.511 *u, -140.546 *u, 0 *u, lc} ; Point (554) = {547.511 *u, -225.213 *u, 0 *u, lc} ; Point (553) = {547.511 *u, -250.613 *u, 0 *u, lc} ; Point (552) = {547.511 *u, -276.013 *u, 0 *u, lc} ; Point (678) = {547.511 *u, -360.679 *u, 0 *u, lc} ; Point (677) = {547.511 *u, -363.501 *u, 0 *u, lc} ; Point (676) = {547.511 *u, -366.324 *u, 0 *u, lc} ; Point (670) = {547.511 *u, -450.99 *u, 0 *u, lc} ; Point (669) = {547.511 *u, -473.568 *u, 0 *u, lc} ; Point (668) = {547.511 *u, -496.146 *u, 0 *u, lc} ; Point (1030) = {547.51 *u, -546.945 *u, 0 *u, lc} ; Point (1029) = {547.51 *u, -566.701 *u, 0 *u, lc} ; Point (1028) = {547.51 *u, -586.456 *u, 0 *u, lc} ; Point (739) = {547.511 *u, -631.612 *u, 0 *u, lc} ; Point (14) = {547.511 *u, -721.924 *u, 0 *u, lc} ; Point (13) = {547.511 *u, -724.746 *u, 0 *u, lc} ; Point (12) = {547.511 *u, -727.568 *u, 0 *u, lc} ; Point (575) = {544.689 *u, -140.546 *u, 0 *u, lc} ; Point (551) = {544.689 *u, -276.013 *u, 0 *u, lc} ; Point (615) = {544.689 *u, -315.524 *u, 0 *u, lc} ; Point (731) = {544.689 *u, -637.257 *u, 0 *u, lc} ; Point (792) = {541.867 *u, 45.72 *u, 0 *u, lc} ; Point (793) = {541.867 *u, 42.8978 *u, 0 *u, lc} ; Point (794) = {541.867 *u, 40.0755 *u, 0 *u, lc} ; Point (840) = {541.867 *u, -5.08002 *u, 0 *u, lc} ; Point (841) = {541.867 *u, -27.6578 *u, 0 *u, lc} ; Point (842) = {541.867 *u, -50.2356 *u, 0 *u, lc} ; Point (572) = {541.867 *u, -95.3906 *u, 0 *u, lc} ; Point (573) = {541.867 *u, -117.968 *u, 0 *u, lc} ; Point (574) = {541.867 *u, -140.546 *u, 0 *u, lc} ; Point (608) = {541.866 *u, -180.057 *u, 0 *u, lc} ; Point (609) = {541.866 *u, -182.879 *u, 0 *u, lc} ; Point (610) = {541.866 *u, -185.702 *u, 0 *u, lc} ; Point (548) = {541.867 *u, -230.857 *u, 0 *u, lc} ; Point (549) = {541.867 *u, -253.435 *u, 0 *u, lc} ; Point (550) = {541.867 *u, -276.013 *u, 0 *u, lc} ; Point (623) = {541.867 *u, -321.168 *u, 0 *u, lc} ; Point (628) = {541.866 *u, -405.835 *u, 0 *u, lc} ; Point (629) = {541.866 *u, -408.657 *u, 0 *u, lc} ; Point (630) = {541.866 *u, -411.479 *u, 0 *u, lc} ; Point (688) = {541.867 *u, -456.635 *u, 0 *u, lc} ; Point (689) = {541.867 *u, -476.39 *u, 0 *u, lc} ; Point (690) = {541.867 *u, -496.146 *u, 0 *u, lc} ; Point (1012) = {541.866 *u, -541.301 *u, 0 *u, lc} ; Point (1013) = {541.866 *u, -563.879 *u, 0 *u, lc} ; Point (1014) = {541.866 *u, -586.456 *u, 0 *u, lc} ; Point (1104) = {541.866 *u, -676.768 *u, 0 *u, lc} ; Point (1105) = {541.866 *u, -679.591 *u, 0 *u, lc} ; Point (1106) = {541.866 *u, -682.413 *u, 0 *u, lc} ; Point (1112) = {541.866 *u, -767.079 *u, 0 *u, lc} ; Point (1113) = {541.866 *u, -769.902 *u, 0 *u, lc} ; Point (1114) = {541.866 *u, -772.724 *u, 0 *u, lc} ; Point (555) = {524.933 *u, -225.213 *u, 0 *u, lc} ; Point (675) = {524.933 *u, -366.324 *u, 0 *u, lc} ; Point (671) = {524.933 *u, -450.99 *u, 0 *u, lc} ; Point (15) = {524.933 *u, -721.924 *u, 0 *u, lc} ; Point (11) = {524.933 *u, -727.568 *u, 0 *u, lc} ; Point (571) = {519.289 *u, -95.3906 *u, 0 *u, lc} ; Point (687) = {519.289 *u, -456.635 *u, 0 *u, lc} ; Point (1015) = {519.288 *u, -586.456 *u, 0 *u, lc} ; Point (1119) = {519.288 *u, -812.235 *u, 0 *u, lc} ; Point (858) = {502.356 *u, 85.231 *u, 0 *u, lc} ; Point (857) = {502.356 *u, 62.6532 *u, 0 *u, lc} ; Point (856) = {502.356 *u, 40.0754 *u, 0 *u, lc} ; Point (851) = {502.356 *u, 0.56442 *u, 0 *u, lc} ; Point (806) = {502.356 *u, -44.5911 *u, 0 *u, lc} ; Point (805) = {502.356 *u, -67.1689 *u, 0 *u, lc} ; Point (804) = {502.356 *u, -89.7467 *u, 0 *u, lc} ; Point (558) = {502.356 *u, -134.902 *u, 0 *u, lc} ; Point (557) = {502.356 *u, -180.057 *u, 0 *u, lc} ; Point (556) = {502.356 *u, -225.213 *u, 0 *u, lc} ; Point (618) = {502.355 *u, -270.368 *u, 0 *u, lc} ; Point (617) = {502.355 *u, -292.946 *u, 0 *u, lc} ; Point (616) = {502.355 *u, -315.524 *u, 0 *u, lc} ; Point (674) = {502.355 *u, -366.324 *u, 0 *u, lc} ; Point (673) = {502.355 *u, -408.657 *u, 0 *u, lc} ; Point (672) = {502.355 *u, -450.99 *u, 0 *u, lc} ; Point (746) = {502.356 *u, -501.79 *u, 0 *u, lc} ; Point (745) = {502.356 *u, -524.368 *u, 0 *u, lc} ; Point (744) = {502.356 *u, -546.946 *u, 0 *u, lc} ; Point (18) = {502.355 *u, -676.768 *u, 0 *u, lc} ; Point (17) = {502.355 *u, -699.346 *u, 0 *u, lc} ; Point (16) = {502.355 *u, -721.924 *u, 0 *u, lc} ; Point (10) = {502.355 *u, -727.568 *u, 0 *u, lc} ; Point (9) = {502.355 *u, -750.146 *u, 0 *u, lc} ; Point (8) = {502.355 *u, -772.724 *u, 0 *u, lc} ; Point (559) = {499.533 *u, -134.902 *u, 0 *u, lc} ; Point (547) = {499.534 *u, -230.857 *u, 0 *u, lc} ; Point (619) = {499.533 *u, -270.368 *u, 0 *u, lc} ; Point (679) = {499.533 *u, -360.679 *u, 0 *u, lc} ; Point (691) = {499.533 *u, -496.146 *u, 0 *u, lc} ; Point (19) = {499.533 *u, -676.768 *u, 0 *u, lc} ; Point (824) = {496.711 *u, 90.8756 *u, 0 *u, lc} ; Point (825) = {496.711 *u, 68.2978 *u, 0 *u, lc} ; Point (826) = {496.711 *u, 45.72 *u, 0 *u, lc} ; Point (568) = {496.711 *u, -50.235 *u, 0 *u, lc} ; Point (569) = {496.711 *u, -72.8128 *u, 0 *u, lc} ; Point (570) = {496.711 *u, -95.3906 *u, 0 *u, lc} ; Point (560) = {496.711 *u, -134.902 *u, 0 *u, lc} ; Point (561) = {496.711 *u, -180.057 *u, 0 *u, lc} ; Point (562) = {496.711 *u, -225.213 *u, 0 *u, lc} ; Point (620) = {496.711 *u, -270.368 *u, 0 *u, lc} ; Point (621) = {496.711 *u, -295.768 *u, 0 *u, lc} ; Point (622) = {496.711 *u, -321.168 *u, 0 *u, lc} ; Point (684) = {496.711 *u, -366.324 *u, 0 *u, lc} ; Point (685) = {496.711 *u, -411.479 *u, 0 *u, lc} ; Point (686) = {496.711 *u, -456.635 *u, 0 *u, lc} ; Point (700) = {496.711 *u, -501.79 *u, 0 *u, lc} ; Point (701) = {496.711 *u, -521.546 *u, 0 *u, lc} ; Point (702) = {496.711 *u, -541.301 *u, 0 *u, lc} ; Point (1016) = {496.71 *u, -586.456 *u, 0 *u, lc} ; Point (1017) = {496.71 *u, -589.279 *u, 0 *u, lc} ; Point (1018) = {496.71 *u, -592.101 *u, 0 *u, lc} ; Point (20) = {496.711 *u, -676.768 *u, 0 *u, lc} ; Point (21) = {496.711 *u, -721.924 *u, 0 *u, lc} ; Point (22) = {496.711 *u, -767.079 *u, 0 *u, lc} ; Point (855) = {479.778 *u, 40.0754 *u, 0 *u, lc} ; Point (743) = {479.778 *u, -546.946 *u, 0 *u, lc} ; Point (823) = {476.956 *u, 90.8756 *u, 0 *u, lc} ; Point (839) = {476.956 *u, -5.08002 *u, 0 *u, lc} ; Point (807) = {476.956 *u, -44.5911 *u, 0 *u, lc} ; Point (567) = {476.956 *u, -50.235 *u, 0 *u, lc} ; Point (563) = {476.956 *u, -225.213 *u, 0 *u, lc} ; Point (827) = {474.133 *u, 45.72 *u, 0 *u, lc} ; Point (683) = {474.133 *u, -366.324 *u, 0 *u, lc} ; Point (699) = {474.133 *u, -501.79 *u, 0 *u, lc} ; Point (703) = {474.133 *u, -541.301 *u, 0 *u, lc} ; Point (822) = {457.2 *u, 90.8756 *u, 0 *u, lc} ; Point (821) = {457.2 *u, 88.0534 *u, 0 *u, lc} ; Point (820) = {457.2 *u, 85.2311 *u, 0 *u, lc} ; Point (854) = {457.2 *u, 40.0754 *u, 0 *u, lc} ; Point (853) = {457.2 *u, 20.3199 *u, 0 *u, lc} ; Point (852) = {457.2 *u, 0.56442 *u, 0 *u, lc} ; Point (566) = {457.2 *u, -50.235 *u, 0 *u, lc} ; Point (565) = {457.2 *u, -137.724 *u, 0 *u, lc} ; Point (564) = {457.2 *u, -225.213 *u, 0 *u, lc} ; Point (546) = {457.2 *u, -230.857 *u, 0 *u, lc} ; Point (545) = {457.2 *u, -253.435 *u, 0 *u, lc} ; Point (544) = {457.2 *u, -276.013 *u, 0 *u, lc} ; Point (198) = {457.2 *u, -315.523 *u, 0 *u, lc} ; Point (197) = {457.2 *u, -318.345 *u, 0 *u, lc} ; Point (196) = {457.2 *u, -321.167 *u, 0 *u, lc} ; Point (150) = {457.199 *u, -405.834 *u, 0 *u, lc} ; Point (149) = {457.199 *u, -408.656 *u, 0 *u, lc} ; Point (148) = {457.199 *u, -411.479 *u, 0 *u, lc} ; Point (694) = {457.2 *u, -450.99 *u, 0 *u, lc} ; Point (693) = {457.2 *u, -473.568 *u, 0 *u, lc} ; Point (692) = {457.2 *u, -496.146 *u, 0 *u, lc} ; Point (742) = {457.2 *u, -546.946 *u, 0 *u, lc} ; Point (741) = {457.2 *u, -589.279 *u, 0 *u, lc} ; Point (740) = {457.2 *u, -631.612 *u, 0 *u, lc} ; Point (730) = {457.2 *u, -637.257 *u, 0 *u, lc} ; Point (729) = {457.2 *u, -682.412 *u, 0 *u, lc} ; Point (728) = {457.2 *u, -727.568 *u, 0 *u, lc} ; Point (695) = {454.378 *u, -450.99 *u, 0 *u, lc} ; Point (727) = {454.378 *u, -727.568 *u, 0 *u, lc} ; Point (828) = {451.556 *u, 45.72 *u, 0 *u, lc} ; Point (829) = {451.556 *u, 23.1422 *u, 0 *u, lc} ; Point (830) = {451.556 *u, 0.56438 *u, 0 *u, lc} ; Point (808) = {451.556 *u, -44.5911 *u, 0 *u, lc} ; Point (809) = {451.556 *u, -67.1689 *u, 0 *u, lc} ; Point (810) = {451.556 *u, -89.7467 *u, 0 *u, lc} ; Point (528) = {451.556 *u, -95.3905 *u, 0 *u, lc} ; Point (529) = {451.556 *u, -137.724 *u, 0 *u, lc} ; Point (530) = {451.556 *u, -180.057 *u, 0 *u, lc} ; Point (536) = {451.556 *u, -185.702 *u, 0 *u, lc} ; Point (537) = {451.556 *u, -228.035 *u, 0 *u, lc} ; Point (538) = {451.556 *u, -270.368 *u, 0 *u, lc} ; Point (680) = {451.555 *u, -360.679 *u, 0 *u, lc} ; Point (681) = {451.555 *u, -363.501 *u, 0 *u, lc} ; Point (682) = {451.555 *u, -366.324 *u, 0 *u, lc} ; Point (696) = {451.556 *u, -450.99 *u, 0 *u, lc} ; Point (697) = {451.556 *u, -476.39 *u, 0 *u, lc} ; Point (698) = {451.556 *u, -501.79 *u, 0 *u, lc} ; Point (704) = {451.556 *u, -541.301 *u, 0 *u, lc} ; Point (705) = {451.556 *u, -563.879 *u, 0 *u, lc} ; Point (706) = {451.556 *u, -586.457 *u, 0 *u, lc} ; Point (724) = {451.556 *u, -592.101 *u, 0 *u, lc} ; Point (725) = {451.556 *u, -659.835 *u, 0 *u, lc} ; Point (726) = {451.556 *u, -727.568 *u, 0 *u, lc} ; Point (1120) = {451.555 *u, -812.235 *u, 0 *u, lc} ; Point (1121) = {451.555 *u, -815.057 *u, 0 *u, lc} ; Point (1122) = {451.555 *u, -817.879 *u, 0 *u, lc} ; Point (819) = {434.622 *u, 85.2311 *u, 0 *u, lc} ; Point (195) = {434.622 *u, -321.167 *u, 0 *u, lc} ; Point (543) = {431.8 *u, -276.013 *u, 0 *u, lc} ; Point (1123) = {431.799 *u, -817.879 *u, 0 *u, lc} ; Point (831) = {428.978 *u, 0.56438 *u, 0 *u, lc} ; Point (531) = {428.978 *u, -180.057 *u, 0 *u, lc} ; Point (535) = {428.978 *u, -185.702 *u, 0 *u, lc} ; Point (539) = {428.978 *u, -270.368 *u, 0 *u, lc} ; Point (818) = {412.045 *u, 85.2311 *u, 0 *u, lc} ; Point (817) = {412.045 *u, 62.6533 *u, 0 *u, lc} ; Point (816) = {412.045 *u, 40.0755 *u, 0 *u, lc} ; Point (838) = {412.045 *u, -5.08002 *u, 0 *u, lc} ; Point (837) = {412.045 *u, -27.6578 *u, 0 *u, lc} ; Point (836) = {412.045 *u, -50.2356 *u, 0 *u, lc} ; Point (410) = {412.044 *u, -134.901 *u, 0 *u, lc} ; Point (409) = {412.044 *u, -137.723 *u, 0 *u, lc} ; Point (408) = {412.044 *u, -140.546 *u, 0 *u, lc} ; Point (206) = {412.044 *u, -225.212 *u, 0 *u, lc} ; Point (205) = {412.044 *u, -228.034 *u, 0 *u, lc} ; Point (204) = {412.044 *u, -230.856 *u, 0 *u, lc} ; Point (199) = {412.044 *u, -315.523 *u, 0 *u, lc} ; Point (194) = {412.044 *u, -321.167 *u, 0 *u, lc} ; Point (193) = {412.044 *u, -343.745 *u, 0 *u, lc} ; Point (192) = {412.044 *u, -366.323 *u, 0 *u, lc} ; Point (151) = {412.044 *u, -405.834 *u, 0 *u, lc} ; Point (147) = {412.044 *u, -411.479 *u, 0 *u, lc} ; Point (126) = {412.044 *u, -450.99 *u, 0 *u, lc} ; Point (125) = {412.044 *u, -498.967 *u, 0 *u, lc} ; Point (124) = {412.044 *u, -546.945 *u, 0 *u, lc} ; Point (718) = {412.045 *u, -631.612 *u, 0 *u, lc} ; Point (717) = {412.045 *u, -657.012 *u, 0 *u, lc} ; Point (716) = {412.045 *u, -682.412 *u, 0 *u, lc} ; Point (106) = {412.044 *u, -721.924 *u, 0 *u, lc} ; Point (105) = {412.044 *u, -724.746 *u, 0 *u, lc} ; Point (104) = {412.044 *u, -727.568 *u, 0 *u, lc} ; Point (7) = {412.044 *u, -772.724 *u, 0 *u, lc} ; Point (2) = {412.044 *u, -812.235 *u, 0 *u, lc} ; Point (1) = {412.044 *u, -815.057 *u, 0 *u, lc} ; Point (1124) = {412.044 *u, -817.879 *u, 0 *u, lc} ; Point (835) = {409.222 *u, -50.2356 *u, 0 *u, lc} ; Point (811) = {409.222 *u, -89.7467 *u, 0 *u, lc} ; Point (191) = {409.222 *u, -366.323 *u, 0 *u, lc} ; Point (127) = {409.222 *u, -450.99 *u, 0 *u, lc} ; Point (723) = {409.222 *u, -592.101 *u, 0 *u, lc} ; Point (715) = {409.222 *u, -682.412 *u, 0 *u, lc} ; Point (23) = {409.222 *u, -767.079 *u, 0 *u, lc} ; Point (512) = {406.4 *u, 85.2315 *u, 0 *u, lc} ; Point (513) = {406.4 *u, 65.476 *u, 0 *u, lc} ; Point (514) = {406.4 *u, 45.7205 *u, 0 *u, lc} ; Point (832) = {406.4 *u, 0.56438 *u, 0 *u, lc} ; Point (833) = {406.4 *u, -24.8356 *u, 0 *u, lc} ; Point (834) = {406.4 *u, -50.2356 *u, 0 *u, lc} ; Point (532) = {406.4 *u, -180.057 *u, 0 *u, lc} ; Point (533) = {406.4 *u, -182.879 *u, 0 *u, lc} ; Point (534) = {406.4 *u, -185.702 *u, 0 *u, lc} ; Point (540) = {406.4 *u, -270.368 *u, 0 *u, lc} ; Point (541) = {406.4 *u, -273.19 *u, 0 *u, lc} ; Point (542) = {406.4 *u, -276.013 *u, 0 *u, lc} ; Point (188) = {406.399 *u, -321.167 *u, 0 *u, lc} ; Point (189) = {406.399 *u, -343.745 *u, 0 *u, lc} ; Point (190) = {406.399 *u, -366.323 *u, 0 *u, lc} ; Point (128) = {406.399 *u, -450.99 *u, 0 *u, lc} ; Point (129) = {406.399 *u, -473.568 *u, 0 *u, lc} ; Point (130) = {406.399 *u, -496.145 *u, 0 *u, lc} ; Point (136) = {406.399 *u, -501.79 *u, 0 *u, lc} ; Point (137) = {406.399 *u, -521.545 *u, 0 *u, lc} ; Point (138) = {406.399 *u, -541.301 *u, 0 *u, lc} ; Point (707) = {406.4 *u, -586.457 *u, 0 *u, lc} ; Point (712) = {406.4 *u, -637.257 *u, 0 *u, lc} ; Point (713) = {406.4 *u, -659.834 *u, 0 *u, lc} ; Point (714) = {406.4 *u, -682.412 *u, 0 *u, lc} ; Point (815) = {389.467 *u, 40.0755 *u, 0 *u, lc} ; Point (207) = {389.466 *u, -225.212 *u, 0 *u, lc} ; Point (203) = {389.466 *u, -230.856 *u, 0 *u, lc} ; Point (719) = {389.467 *u, -631.612 *u, 0 *u, lc} ; Point (107) = {389.466 *u, -721.924 *u, 0 *u, lc} ; Point (103) = {386.644 *u, -727.568 *u, 0 *u, lc} ; Point (515) = {383.823 *u, 45.7205 *u, 0 *u, lc} ; Point (187) = {383.822 *u, -321.167 *u, 0 *u, lc} ; Point (131) = {383.822 *u, -496.145 *u, 0 *u, lc} ; Point (135) = {383.822 *u, -501.79 *u, 0 *u, lc} ; Point (711) = {383.822 *u, -637.257 *u, 0 *u, lc} ; Point (814) = {366.889 *u, 40.0755 *u, 0 *u, lc} ; Point (813) = {366.889 *u, -24.8356 *u, 0 *u, lc} ; Point (812) = {366.889 *u, -89.7467 *u, 0 *u, lc} ; Point (407) = {366.888 *u, -140.546 *u, 0 *u, lc} ; Point (210) = {366.889 *u, -180.056 *u, 0 *u, lc} ; Point (209) = {366.889 *u, -202.634 *u, 0 *u, lc} ; Point (208) = {366.889 *u, -225.212 *u, 0 *u, lc} ; Point (202) = {366.889 *u, -230.856 *u, 0 *u, lc} ; Point (201) = {366.889 *u, -273.19 *u, 0 *u, lc} ; Point (200) = {366.889 *u, -315.523 *u, 0 *u, lc} ; Point (154) = {366.888 *u, -360.678 *u, 0 *u, lc} ; Point (153) = {366.888 *u, -383.256 *u, 0 *u, lc} ; Point (152) = {366.888 *u, -405.834 *u, 0 *u, lc} ; Point (146) = {366.888 *u, -411.479 *u, 0 *u, lc} ; Point (145) = {366.888 *u, -434.056 *u, 0 *u, lc} ; Point (144) = {366.888 *u, -456.634 *u, 0 *u, lc} ; Point (123) = {366.888 *u, -546.945 *u, 0 *u, lc} ; Point (722) = {366.889 *u, -592.101 *u, 0 *u, lc} ; Point (721) = {366.889 *u, -611.857 *u, 0 *u, lc} ; Point (720) = {366.889 *u, -631.612 *u, 0 *u, lc} ; Point (110) = {366.888 *u, -676.768 *u, 0 *u, lc} ; Point (109) = {366.888 *u, -699.346 *u, 0 *u, lc} ; Point (108) = {366.888 *u, -721.924 *u, 0 *u, lc} ; Point (3) = {366.888 *u, -812.235 *u, 0 *u, lc} ; Point (511) = {364.067 *u, 85.2315 *u, 0 *u, lc} ; Point (211) = {364.066 *u, -180.056 *u, 0 *u, lc} ; Point (139) = {364.066 *u, -541.301 *u, 0 *u, lc} ; Point (516) = {361.245 *u, 45.7205 *u, 0 *u, lc} ; Point (517) = {361.245 *u, -22.0128 *u, 0 *u, lc} ; Point (518) = {361.245 *u, -89.7461 *u, 0 *u, lc} ; Point (527) = {361.245 *u, -95.3905 *u, 0 *u, lc} ; Point (212) = {361.244 *u, -180.056 *u, 0 *u, lc} ; Point (213) = {361.244 *u, -202.634 *u, 0 *u, lc} ; Point (214) = {361.244 *u, -225.212 *u, 0 *u, lc} ; Point (184) = {361.244 *u, -230.856 *u, 0 *u, lc} ; Point (185) = {361.244 *u, -276.012 *u, 0 *u, lc} ; Point (186) = {361.244 *u, -321.167 *u, 0 *u, lc} ; Point (172) = {361.244 *u, -366.323 *u, 0 *u, lc} ; Point (173) = {361.244 *u, -408.656 *u, 0 *u, lc} ; Point (174) = {361.244 *u, -450.99 *u, 0 *u, lc} ; Point (132) = {361.244 *u, -496.145 *u, 0 *u, lc} ; Point (133) = {361.244 *u, -498.968 *u, 0 *u, lc} ; Point (134) = {361.244 *u, -501.79 *u, 0 *u, lc} ; Point (708) = {361.245 *u, -586.457 *u, 0 *u, lc} ; Point (709) = {361.245 *u, -611.857 *u, 0 *u, lc} ; Point (710) = {361.245 *u, -637.257 *u, 0 *u, lc} ; Point (100) = {361.244 *u, -682.413 *u, 0 *u, lc} ; Point (101) = {361.244 *u, -704.99 *u, 0 *u, lc} ; Point (102) = {361.244 *u, -727.568 *u, 0 *u, lc} ; Point (155) = {344.311 *u, -360.678 *u, 0 *u, lc} ; Point (143) = {344.311 *u, -456.634 *u, 0 *u, lc} ; Point (171) = {341.488 *u, -366.323 *u, 0 *u, lc} ; Point (510) = {321.734 *u, 85.2315 *u, 0 *u, lc} ; Point (509) = {321.734 *u, 17.4982 *u, 0 *u, lc} ; Point (508) = {321.734 *u, -50.2351 *u, 0 *u, lc} ; Point (411) = {321.733 *u, -134.901 *u, 0 *u, lc} ; Point (406) = {321.733 *u, -140.546 *u, 0 *u, lc} ; Point (405) = {321.733 *u, -163.123 *u, 0 *u, lc} ; Point (404) = {321.733 *u, -185.701 *u, 0 *u, lc} ; Point (158) = {321.733 *u, -270.367 *u, 0 *u, lc} ; Point (157) = {321.733 *u, -315.523 *u, 0 *u, lc} ; Point (156) = {321.733 *u, -360.678 *u, 0 *u, lc} ; Point (170) = {321.733 *u, -366.323 *u, 0 *u, lc} ; Point (169) = {321.733 *u, -388.901 *u, 0 *u, lc} ; Point (168) = {321.733 *u, -411.479 *u, 0 *u, lc} ; Point (142) = {321.733 *u, -456.634 *u, 0 *u, lc} ; Point (141) = {321.733 *u, -498.967 *u, 0 *u, lc} ; Point (140) = {321.733 *u, -541.301 *u, 0 *u, lc} ; Point (122) = {321.733 *u, -546.945 *u, 0 *u, lc} ; Point (121) = {321.733 *u, -592.101 *u, 0 *u, lc} ; Point (120) = {321.733 *u, -637.256 *u, 0 *u, lc} ; Point (111) = {321.733 *u, -676.768 *u, 0 *u, lc} ; Point (26) = {321.733 *u, -721.924 *u, 0 *u, lc} ; Point (25) = {321.733 *u, -744.501 *u, 0 *u, lc} ; Point (24) = {321.733 *u, -767.079 *u, 0 *u, lc} ; Point (6) = {321.733 *u, -772.724 *u, 0 *u, lc} ; Point (5) = {321.733 *u, -792.479 *u, 0 *u, lc} ; Point (4) = {321.733 *u, -812.235 *u, 0 *u, lc} ; Point (507) = {318.912 *u, -50.2351 *u, 0 *u, lc} ; Point (519) = {318.912 *u, -89.7461 *u, 0 *u, lc} ; Point (403) = {318.911 *u, -185.701 *u, 0 *u, lc} ; Point (167) = {318.911 *u, -411.479 *u, 0 *u, lc} ; Point (175) = {318.911 *u, -450.99 *u, 0 *u, lc} ; Point (119) = {318.911 *u, -637.256 *u, 0 *u, lc} ; Point (492) = {316.089 *u, 85.2315 *u, 0 *u, lc} ; Point (493) = {316.089 *u, 42.8982 *u, 0 *u, lc} ; Point (494) = {316.089 *u, 0.5649 *u, 0 *u, lc} ; Point (504) = {316.089 *u, -5.0795 *u, 0 *u, lc} ; Point (505) = {316.089 *u, -27.6573 *u, 0 *u, lc} ; Point (506) = {316.089 *u, -50.2351 *u, 0 *u, lc} ; Point (400) = {316.089 *u, -140.546 *u, 0 *u, lc} ; Point (401) = {316.089 *u, -163.123 *u, 0 *u, lc} ; Point (402) = {316.089 *u, -185.701 *u, 0 *u, lc} ; Point (164) = {316.088 *u, -276.012 *u, 0 *u, lc} ; Point (165) = {316.088 *u, -343.745 *u, 0 *u, lc} ; Point (166) = {316.088 *u, -411.479 *u, 0 *u, lc} ; Point (116) = {316.088 *u, -456.634 *u, 0 *u, lc} ; Point (117) = {316.088 *u, -546.945 *u, 0 *u, lc} ; Point (118) = {316.088 *u, -637.256 *u, 0 *u, lc} ; Point (99) = {316.089 *u, -682.413 *u, 0 *u, lc} ; Point (44) = {316.089 *u, -727.568 *u, 0 *u, lc} ; Point (45) = {316.089 *u, -769.901 *u, 0 *u, lc} ; Point (46) = {316.089 *u, -812.235 *u, 0 *u, lc} ; Point (495) = {296.334 *u, 0.5649 *u, 0 *u, lc} ; Point (215) = {296.333 *u, -225.212 *u, 0 *u, lc} ; Point (183) = {296.333 *u, -230.856 *u, 0 *u, lc} ; Point (159) = {296.333 *u, -270.367 *u, 0 *u, lc} ; Point (115) = {296.333 *u, -456.634 *u, 0 *u, lc} ; Point (503) = {293.512 *u, -5.0795 *u, 0 *u, lc} ; Point (163) = {293.511 *u, -276.012 *u, 0 *u, lc} ; Point (498) = {276.578 *u, 45.7205 *u, 0 *u, lc} ; Point (497) = {276.578 *u, 23.1427 *u, 0 *u, lc} ; Point (496) = {276.578 *u, 0.5649 *u, 0 *u, lc} ; Point (522) = {276.578 *u, -44.5905 *u, 0 *u, lc} ; Point (521) = {276.578 *u, -67.1683 *u, 0 *u, lc} ; Point (520) = {276.578 *u, -89.7461 *u, 0 *u, lc} ; Point (222) = {276.577 *u, -180.056 *u, 0 *u, lc} ; Point (221) = {276.577 *u, -182.879 *u, 0 *u, lc} ; Point (220) = {276.577 *u, -185.701 *u, 0 *u, lc} ; Point (178) = {276.577 *u, -315.523 *u, 0 *u, lc} ; Point (177) = {276.577 *u, -383.256 *u, 0 *u, lc} ; Point (176) = {276.577 *u, -450.99 *u, 0 *u, lc} ; Point (114) = {276.577 *u, -456.634 *u, 0 *u, lc} ; Point (113) = {276.577 *u, -566.701 *u, 0 *u, lc} ; Point (112) = {276.577 *u, -676.768 *u, 0 *u, lc} ; Point (27) = {276.577 *u, -721.924 *u, 0 *u, lc} ; Point (38) = {276.578 *u, -767.079 *u, 0 *u, lc} ; Point (37) = {276.578 *u, -769.901 *u, 0 *u, lc} ; Point (36) = {276.578 *u, -772.724 *u, 0 *u, lc} ; Point (491) = {273.756 *u, 85.2315 *u, 0 *u, lc} ; Point (499) = {273.756 *u, 45.7205 *u, 0 *u, lc} ; Point (523) = {273.756 *u, -44.5905 *u, 0 *u, lc} ; Point (43) = {273.755 *u, -727.568 *u, 0 *u, lc} ; Point (500) = {270.934 *u, 45.7205 *u, 0 *u, lc} ; Point (501) = {270.934 *u, 20.3205 *u, 0 *u, lc} ; Point (502) = {270.934 *u, -5.0795 *u, 0 *u, lc} ; Point (524) = {270.934 *u, -44.5905 *u, 0 *u, lc} ; Point (525) = {270.934 *u, -69.9905 *u, 0 *u, lc} ; Point (526) = {270.934 *u, -95.3905 *u, 0 *u, lc} ; Point (399) = {270.933 *u, -140.546 *u, 0 *u, lc} ; Point (160) = {270.933 *u, -270.367 *u, 0 *u, lc} ; Point (161) = {270.933 *u, -273.19 *u, 0 *u, lc} ; Point (162) = {270.933 *u, -276.012 *u, 0 *u, lc} ; Point (240) = {270.933 *u, -321.167 *u, 0 *u, lc} ; Point (241) = {270.933 *u, -408.656 *u, 0 *u, lc} ; Point (242) = {270.933 *u, -496.145 *u, 0 *u, lc} ; Point (248) = {270.933 *u, -501.789 *u, 0 *u, lc} ; Point (249) = {270.933 *u, -544.123 *u, 0 *u, lc} ; Point (250) = {270.933 *u, -586.456 *u, 0 *u, lc} ; Point (96) = {270.933 *u, -592.102 *u, 0 *u, lc} ; Point (97) = {270.933 *u, -637.257 *u, 0 *u, lc} ; Point (98) = {270.933 *u, -682.413 *u, 0 *u, lc} ; Point (219) = {254 *u, -185.701 *u, 0 *u, lc} ; Point (179) = {253.999 *u, -315.523 *u, 0 *u, lc} ; Point (39) = {254 *u, -767.079 *u, 0 *u, lc} ; Point (35) = {251.178 *u, -772.724 *u, 0 *u, lc} ; Point (47) = {251.177 *u, -812.235 *u, 0 *u, lc} ; Point (239) = {248.355 *u, -321.167 *u, 0 *u, lc} ; Point (490) = {231.423 *u, 85.2315 *u, 0 *u, lc} ; Point (489) = {231.423 *u, 62.6537 *u, 0 *u, lc} ; Point (488) = {231.423 *u, 40.0759 *u, 0 *u, lc} ; Point (414) = {231.422 *u, 0.56554 *u, 0 *u, lc} ; Point (413) = {231.422 *u, -67.1678 *u, 0 *u, lc} ; Point (412) = {231.422 *u, -134.901 *u, 0 *u, lc} ; Point (223) = {231.422 *u, -180.056 *u, 0 *u, lc} ; Point (218) = {231.422 *u, -185.701 *u, 0 *u, lc} ; Point (217) = {231.422 *u, -205.456 *u, 0 *u, lc} ; Point (216) = {231.422 *u, -225.212 *u, 0 *u, lc} ; Point (182) = {231.422 *u, -230.856 *u, 0 *u, lc} ; Point (181) = {231.422 *u, -273.19 *u, 0 *u, lc} ; Point (180) = {231.422 *u, -315.523 *u, 0 *u, lc} ; Point (350) = {231.422 *u, -360.679 *u, 0 *u, lc} ; Point (349) = {231.422 *u, -408.656 *u, 0 *u, lc} ; Point (348) = {231.422 *u, -456.634 *u, 0 *u, lc} ; Point (258) = {231.422 *u, -541.301 *u, 0 *u, lc} ; Point (257) = {231.422 *u, -544.123 *u, 0 *u, lc} ; Point (256) = {231.422 *u, -546.945 *u, 0 *u, lc} ; Point (30) = {231.422 *u, -631.613 *u, 0 *u, lc} ; Point (29) = {231.422 *u, -676.768 *u, 0 *u, lc} ; Point (28) = {231.422 *u, -721.924 *u, 0 *u, lc} ; Point (42) = {231.422 *u, -727.568 *u, 0 *u, lc} ; Point (41) = {231.422 *u, -747.324 *u, 0 *u, lc} ; Point (40) = {231.422 *u, -767.079 *u, 0 *u, lc} ; Point (415) = {228.6 *u, 0.56554 *u, 0 *u, lc} ; Point (347) = {228.6 *u, -456.634 *u, 0 *u, lc} ; Point (251) = {228.6 *u, -586.456 *u, 0 *u, lc} ; Point (31) = {228.6 *u, -631.613 *u, 0 *u, lc} ; Point (468) = {225.778 *u, 85.2315 *u, 0 *u, lc} ; Point (469) = {225.778 *u, 65.476 *u, 0 *u, lc} ; Point (470) = {225.778 *u, 45.7205 *u, 0 *u, lc} ; Point (416) = {225.778 *u, 0.56554 *u, 0 *u, lc} ; Point (417) = {225.778 *u, -44.59 *u, 0 *u, lc} ; Point (418) = {225.778 *u, -89.7455 *u, 0 *u, lc} ; Point (396) = {225.778 *u, -95.3899 *u, 0 *u, lc} ; Point (397) = {225.778 *u, -117.968 *u, 0 *u, lc} ; Point (398) = {225.778 *u, -140.546 *u, 0 *u, lc} ; Point (236) = {225.778 *u, -185.701 *u, 0 *u, lc} ; Point (237) = {225.778 *u, -253.434 *u, 0 *u, lc} ; Point (238) = {225.778 *u, -321.167 *u, 0 *u, lc} ; Point (344) = {225.778 *u, -366.323 *u, 0 *u, lc} ; Point (345) = {225.778 *u, -411.479 *u, 0 *u, lc} ; Point (346) = {225.778 *u, -456.634 *u, 0 *u, lc} ; Point (243) = {225.778 *u, -496.145 *u, 0 *u, lc} ; Point (247) = {225.778 *u, -501.789 *u, 0 *u, lc} ; Point (32) = {225.778 *u, -631.613 *u, 0 *u, lc} ; Point (33) = {225.778 *u, -702.168 *u, 0 *u, lc} ; Point (34) = {225.778 *u, -772.724 *u, 0 *u, lc} ; Point (487) = {208.845 *u, 40.0759 *u, 0 *u, lc} ; Point (351) = {208.845 *u, -360.679 *u, 0 *u, lc} ; Point (255) = {208.844 *u, -546.945 *u, 0 *u, lc} ; Point (343) = {206.022 *u, -366.323 *u, 0 *u, lc} ; Point (259) = {206.022 *u, -541.301 *u, 0 *u, lc} ; Point (471) = {203.2 *u, 45.7205 *u, 0 *u, lc} ; Point (235) = {203.2 *u, -185.701 *u, 0 *u, lc} ; Point (486) = {186.267 *u, 40.0759 *u, 0 *u, lc} ; Point (485) = {186.267 *u, -5.0796 *u, 0 *u, lc} ; Point (484) = {186.267 *u, -50.2351 *u, 0 *u, lc} ; Point (226) = {186.266 *u, -134.901 *u, 0 *u, lc} ; Point (225) = {186.266 *u, -157.479 *u, 0 *u, lc} ; Point (224) = {186.266 *u, -180.056 *u, 0 *u, lc} ; Point (354) = {186.267 *u, -225.212 *u, 0 *u, lc} ; Point (353) = {186.267 *u, -292.945 *u, 0 *u, lc} ; Point (352) = {186.267 *u, -360.679 *u, 0 *u, lc} ; Point (342) = {186.267 *u, -366.323 *u, 0 *u, lc} ; Point (341) = {186.267 *u, -411.479 *u, 0 *u, lc} ; Point (340) = {186.267 *u, -456.634 *u, 0 *u, lc} ; Point (254) = {186.267 *u, -546.945 *u, 0 *u, lc} ; Point (253) = {186.267 *u, -566.701 *u, 0 *u, lc} ; Point (252) = {186.267 *u, -586.456 *u, 0 *u, lc} ; Point (50) = {186.266 *u, -631.613 *u, 0 *u, lc} ; Point (49) = {186.266 *u, -721.924 *u, 0 *u, lc} ; Point (48) = {186.266 *u, -812.235 *u, 0 *u, lc} ; Point (483) = {183.445 *u, -50.2351 *u, 0 *u, lc} ; Point (419) = {183.444 *u, -89.7455 *u, 0 *u, lc} ; Point (95) = {183.444 *u, -592.102 *u, 0 *u, lc} ; Point (51) = {183.444 *u, -631.613 *u, 0 *u, lc} ; Point (472) = {180.623 *u, 45.7205 *u, 0 *u, lc} ; Point (473) = {180.623 *u, 23.1427 *u, 0 *u, lc} ; Point (474) = {180.623 *u, 0.56494 *u, 0 *u, lc} ; Point (480) = {180.623 *u, -5.0795 *u, 0 *u, lc} ; Point (481) = {180.623 *u, -27.6573 *u, 0 *u, lc} ; Point (482) = {180.623 *u, -50.2351 *u, 0 *u, lc} ; Point (395) = {180.622 *u, -95.3899 *u, 0 *u, lc} ; Point (232) = {180.622 *u, -140.545 *u, 0 *u, lc} ; Point (233) = {180.622 *u, -163.123 *u, 0 *u, lc} ; Point (234) = {180.622 *u, -185.701 *u, 0 *u, lc} ; Point (368) = {180.622 *u, -230.857 *u, 0 *u, lc} ; Point (369) = {180.622 *u, -295.768 *u, 0 *u, lc} ; Point (370) = {180.622 *u, -360.679 *u, 0 *u, lc} ; Point (376) = {180.622 *u, -366.323 *u, 0 *u, lc} ; Point (377) = {180.622 *u, -408.656 *u, 0 *u, lc} ; Point (378) = {180.622 *u, -450.99 *u, 0 *u, lc} ; Point (244) = {180.622 *u, -496.145 *u, 0 *u, lc} ; Point (245) = {180.622 *u, -498.967 *u, 0 *u, lc} ; Point (246) = {180.622 *u, -501.789 *u, 0 *u, lc} ; Point (260) = {180.622 *u, -541.301 *u, 0 *u, lc} ; Point (261) = {180.622 *u, -563.878 *u, 0 *u, lc} ; Point (262) = {180.622 *u, -586.456 *u, 0 *u, lc} ; Point (52) = {180.622 *u, -631.613 *u, 0 *u, lc} ; Point (53) = {180.622 *u, -654.19 *u, 0 *u, lc} ; Point (54) = {180.622 *u, -676.768 *u, 0 *u, lc} ; Point (84) = {180.622 *u, -682.413 *u, 0 *u, lc} ; Point (85) = {180.622 *u, -747.324 *u, 0 *u, lc} ; Point (86) = {180.622 *u, -812.235 *u, 0 *u, lc} ; Point (355) = {163.689 *u, -225.212 *u, 0 *u, lc} ; Point (339) = {163.689 *u, -456.634 *u, 0 *u, lc} ; Point (227) = {160.866 *u, -134.901 *u, 0 *u, lc} ; Point (367) = {160.867 *u, -230.857 *u, 0 *u, lc} ; Point (55) = {160.866 *u, -676.768 *u, 0 *u, lc} ; Point (475) = {158.045 *u, 0.56494 *u, 0 *u, lc} ; Point (479) = {158.045 *u, -5.0795 *u, 0 *u, lc} ; Point (231) = {158.044 *u, -140.545 *u, 0 *u, lc} ; Point (371) = {158.044 *u, -360.679 *u, 0 *u, lc} ; Point (375) = {158.044 *u, -366.323 *u, 0 *u, lc} ; Point (430) = {141.111 *u, 45.7212 *u, 0 *u, lc} ; Point (429) = {141.111 *u, 42.899 *u, 0 *u, lc} ; Point (428) = {141.111 *u, 40.0767 *u, 0 *u, lc} ; Point (422) = {141.111 *u, -44.5899 *u, 0 *u, lc} ; Point (421) = {141.111 *u, -67.1677 *u, 0 *u, lc} ; Point (420) = {141.111 *u, -89.7455 *u, 0 *u, lc} ; Point (358) = {141.111 *u, -180.057 *u, 0 *u, lc} ; Point (357) = {141.111 *u, -202.634 *u, 0 *u, lc} ; Point (356) = {141.111 *u, -225.212 *u, 0 *u, lc} ; Point (366) = {141.111 *u, -230.857 *u, 0 *u, lc} ; Point (365) = {141.111 *u, -276.012 *u, 0 *u, lc} ; Point (364) = {141.111 *u, -321.168 *u, 0 *u, lc} ; Point (386) = {141.111 *u, -405.834 *u, 0 *u, lc} ; Point (385) = {141.111 *u, -408.657 *u, 0 *u, lc} ; Point (384) = {141.111 *u, -411.479 *u, 0 *u, lc} ; Point (338) = {141.111 *u, -456.634 *u, 0 *u, lc} ; Point (337) = {141.111 *u, -501.79 *u, 0 *u, lc} ; Point (336) = {141.111 *u, -546.945 *u, 0 *u, lc} ; Point (58) = {141.111 *u, -631.613 *u, 0 *u, lc} ; Point (57) = {141.111 *u, -654.19 *u, 0 *u, lc} ; Point (56) = {141.111 *u, -676.768 *u, 0 *u, lc} ; Point (70) = {141.111 *u, -721.924 *u, 0 *u, lc} ; Point (69) = {141.111 *u, -747.324 *u, 0 *u, lc} ; Point (68) = {141.111 *u, -772.724 *u, 0 *u, lc} ; Point (359) = {138.289 *u, -180.057 *u, 0 *u, lc} ; Point (363) = {138.289 *u, -321.168 *u, 0 *u, lc} ; Point (379) = {138.289 *u, -450.99 *u, 0 *u, lc} ; Point (335) = {138.289 *u, -546.945 *u, 0 *u, lc} ; Point (263) = {138.289 *u, -586.456 *u, 0 *u, lc} ; Point (59) = {138.289 *u, -631.613 *u, 0 *u, lc} ; Point (476) = {135.467 *u, 0.56494 *u, 0 *u, lc} ; Point (477) = {135.467 *u, -2.25728 *u, 0 *u, lc} ; Point (478) = {135.467 *u, -5.0795 *u, 0 *u, lc} ; Point (392) = {135.467 *u, -50.2343 *u, 0 *u, lc} ; Point (393) = {135.467 *u, -72.8121 *u, 0 *u, lc} ; Point (394) = {135.467 *u, -95.3899 *u, 0 *u, lc} ; Point (228) = {135.466 *u, -134.901 *u, 0 *u, lc} ; Point (229) = {135.466 *u, -137.723 *u, 0 *u, lc} ; Point (230) = {135.466 *u, -140.545 *u, 0 *u, lc} ; Point (360) = {135.467 *u, -180.057 *u, 0 *u, lc} ; Point (361) = {135.467 *u, -250.612 *u, 0 *u, lc} ; Point (362) = {135.467 *u, -321.168 *u, 0 *u, lc} ; Point (372) = {135.467 *u, -360.679 *u, 0 *u, lc} ; Point (373) = {135.467 *u, -363.501 *u, 0 *u, lc} ; Point (374) = {135.467 *u, -366.323 *u, 0 *u, lc} ; Point (332) = {135.467 *u, -456.634 *u, 0 *u, lc} ; Point (333) = {135.467 *u, -501.79 *u, 0 *u, lc} ; Point (334) = {135.467 *u, -546.945 *u, 0 *u, lc} ; Point (60) = {135.466 *u, -631.613 *u, 0 *u, lc} ; Point (61) = {135.466 *u, -654.19 *u, 0 *u, lc} ; Point (62) = {135.466 *u, -676.768 *u, 0 *u, lc} ; Point (76) = {135.466 *u, -727.568 *u, 0 *u, lc} ; Point (77) = {135.466 *u, -747.324 *u, 0 *u, lc} ; Point (78) = {135.466 *u, -767.079 *u, 0 *u, lc} ; Point (427) = {118.533 *u, 40.0767 *u, 0 *u, lc} ; Point (423) = {118.533 *u, -44.5899 *u, 0 *u, lc} ; Point (387) = {118.533 *u, -405.834 *u, 0 *u, lc} ; Point (383) = {118.533 *u, -411.479 *u, 0 *u, lc} ; Point (467) = {115.711 *u, 85.2315 *u, 0 *u, lc} ; Point (391) = {115.711 *u, -50.2343 *u, 0 *u, lc} ; Point (83) = {115.711 *u, -682.413 *u, 0 *u, lc} ; Point (71) = {115.711 *u, -721.924 *u, 0 *u, lc} ; Point (331) = {112.889 *u, -456.634 *u, 0 *u, lc} ; Point (75) = {112.889 *u, -727.568 *u, 0 *u, lc} ; Point (426) = {95.9554 *u, 40.0767 *u, 0 *u, lc} ; Point (425) = {95.9554 *u, -2.25656 *u, 0 *u, lc} ; Point (424) = {95.9554 *u, -44.5899 *u, 0 *u, lc} ; Point (390) = {95.9556 *u, -50.2343 *u, 0 *u, lc} ; Point (389) = {95.9556 *u, -228.034 *u, 0 *u, lc} ; Point (388) = {95.9556 *u, -405.834 *u, 0 *u, lc} ; Point (382) = {95.9556 *u, -411.479 *u, 0 *u, lc} ; Point (381) = {95.9556 *u, -431.234 *u, 0 *u, lc} ; Point (380) = {95.9556 *u, -450.99 *u, 0 *u, lc} ; Point (266) = {95.9557 *u, -496.145 *u, 0 *u, lc} ; Point (265) = {95.9557 *u, -541.301 *u, 0 *u, lc} ; Point (264) = {95.9557 *u, -586.456 *u, 0 *u, lc} ; Point (94) = {95.9554 *u, -592.102 *u, 0 *u, lc} ; Point (93) = {95.9554 *u, -614.679 *u, 0 *u, lc} ; Point (92) = {95.9554 *u, -637.257 *u, 0 *u, lc} ; Point (431) = {93.1333 *u, 45.7212 *u, 0 *u, lc} ; Point (79) = {93.1331 *u, -767.079 *u, 0 *u, lc} ; Point (67) = {93.1331 *u, -772.724 *u, 0 *u, lc} ; Point (87) = {93.1332 *u, -812.235 *u, 0 *u, lc} ; Point (436) = {90.3112 *u, 40.0767 *u, 0 *u, lc} ; Point (437) = {90.3112 *u, -24.8344 *u, 0 *u, lc} ; Point (438) = {90.3112 *u, -89.7455 *u, 0 *u, lc} ; Point (448) = {90.311 *u, -95.3899 *u, 0 *u, lc} ; Point (449) = {90.311 *u, -182.879 *u, 0 *u, lc} ; Point (450) = {90.311 *u, -270.367 *u, 0 *u, lc} ; Point (312) = {90.3113 *u, -276.012 *u, 0 *u, lc} ; Point (313) = {90.3113 *u, -318.345 *u, 0 *u, lc} ; Point (314) = {90.3113 *u, -360.679 *u, 0 *u, lc} ; Point (320) = {90.3113 *u, -366.323 *u, 0 *u, lc} ; Point (321) = {90.3113 *u, -386.079 *u, 0 *u, lc} ; Point (322) = {90.3113 *u, -405.834 *u, 0 *u, lc} ; Point (328) = {90.3113 *u, -411.478 *u, 0 *u, lc} ; Point (329) = {90.3113 *u, -434.056 *u, 0 *u, lc} ; Point (330) = {90.3113 *u, -456.634 *u, 0 *u, lc} ; Point (272) = {90.3113 *u, -501.79 *u, 0 *u, lc} ; Point (273) = {90.3113 *u, -544.123 *u, 0 *u, lc} ; Point (274) = {90.3113 *u, -586.456 *u, 0 *u, lc} ; Point (280) = {90.3113 *u, -592.101 *u, 0 *u, lc} ; Point (281) = {90.3113 *u, -611.856 *u, 0 *u, lc} ; Point (282) = {90.3113 *u, -631.612 *u, 0 *u, lc} ; Point (63) = {90.3109 *u, -676.768 *u, 0 *u, lc} ; Point (72) = {90.3108 *u, -721.924 *u, 0 *u, lc} ; Point (73) = {90.3108 *u, -724.746 *u, 0 *u, lc} ; Point (74) = {90.3108 *u, -727.568 *u, 0 *u, lc} ; Point (447) = {70.5555 *u, -95.3899 *u, 0 *u, lc} ; Point (267) = {70.5557 *u, -496.145 *u, 0 *u, lc} ; Point (435) = {67.7334 *u, 40.0767 *u, 0 *u, lc} ; Point (439) = {67.7334 *u, -89.7455 *u, 0 *u, lc} ; Point (315) = {67.7335 *u, -360.679 *u, 0 *u, lc} ; Point (319) = {67.7335 *u, -366.323 *u, 0 *u, lc} ; Point (323) = {67.7335 *u, -405.834 *u, 0 *u, lc} ; Point (327) = {67.7335 *u, -411.478 *u, 0 *u, lc} ; Point (271) = {67.7335 *u, -501.79 *u, 0 *u, lc} ; Point (275) = {67.7335 *u, -586.456 *u, 0 *u, lc} ; Point (279) = {67.7335 *u, -592.101 *u, 0 *u, lc} ; Point (462) = {50.7998 *u, 0.56494 *u, 0 *u, lc} ; Point (461) = {50.7998 *u, -24.8351 *u, 0 *u, lc} ; Point (460) = {50.7998 *u, -50.2351 *u, 0 *u, lc} ; Point (446) = {50.8 *u, -95.3899 *u, 0 *u, lc} ; Point (445) = {50.8 *u, -163.123 *u, 0 *u, lc} ; Point (444) = {50.8 *u, -230.856 *u, 0 *u, lc} ; Point (306) = {50.8003 *u, -315.523 *u, 0 *u, lc} ; Point (305) = {50.8003 *u, -318.345 *u, 0 *u, lc} ; Point (304) = {50.8003 *u, -321.167 *u, 0 *u, lc} ; Point (298) = {50.8003 *u, -450.99 *u, 0 *u, lc} ; Point (297) = {50.8003 *u, -453.812 *u, 0 *u, lc} ; Point (296) = {50.8003 *u, -456.634 *u, 0 *u, lc} ; Point (290) = {50.8003 *u, -541.301 *u, 0 *u, lc} ; Point (289) = {50.8003 *u, -544.123 *u, 0 *u, lc} ; Point (288) = {50.8003 *u, -546.945 *u, 0 *u, lc} ; Point (91) = {50.7999 *u, -637.257 *u, 0 *u, lc} ; Point (82) = {50.7998 *u, -682.413 *u, 0 *u, lc} ; Point (81) = {50.7998 *u, -724.746 *u, 0 *u, lc} ; Point (80) = {50.7998 *u, -767.079 *u, 0 *u, lc} ; Point (459) = {47.9776 *u, -50.2351 *u, 0 *u, lc} ; Point (443) = {47.9778 *u, -230.856 *u, 0 *u, lc} ; Point (451) = {47.9777 *u, -270.367 *u, 0 *u, lc} ; Point (311) = {47.978 *u, -276.012 *u, 0 *u, lc} ; Point (283) = {47.978 *u, -631.612 *u, 0 *u, lc} ; Point (432) = {45.1556 *u, 45.7212 *u, 0 *u, lc} ; Point (433) = {45.1556 *u, 42.899 *u, 0 *u, lc} ; Point (434) = {45.1556 *u, 40.0767 *u, 0 *u, lc} ; Point (456) = {45.1554 *u, -5.07946 *u, 0 *u, lc} ; Point (457) = {45.1554 *u, -27.6573 *u, 0 *u, lc} ; Point (458) = {45.1554 *u, -50.2351 *u, 0 *u, lc} ; Point (440) = {45.1556 *u, -89.7455 *u, 0 *u, lc} ; Point (441) = {45.1556 *u, -160.301 *u, 0 *u, lc} ; Point (442) = {45.1556 *u, -230.856 *u, 0 *u, lc} ; Point (316) = {45.1557 *u, -360.679 *u, 0 *u, lc} ; Point (317) = {45.1557 *u, -363.501 *u, 0 *u, lc} ; Point (318) = {45.1557 *u, -366.323 *u, 0 *u, lc} ; Point (324) = {45.1557 *u, -405.834 *u, 0 *u, lc} ; Point (325) = {45.1557 *u, -408.656 *u, 0 *u, lc} ; Point (326) = {45.1557 *u, -411.478 *u, 0 *u, lc} ; Point (268) = {45.1557 *u, -496.145 *u, 0 *u, lc} ; Point (269) = {45.1557 *u, -498.967 *u, 0 *u, lc} ; Point (270) = {45.1557 *u, -501.79 *u, 0 *u, lc} ; Point (276) = {45.1557 *u, -586.456 *u, 0 *u, lc} ; Point (277) = {45.1557 *u, -589.279 *u, 0 *u, lc} ; Point (278) = {45.1557 *u, -592.101 *u, 0 *u, lc} ; Point (64) = {45.1554 *u, -676.768 *u, 0 *u, lc} ; Point (65) = {45.1554 *u, -724.746 *u, 0 *u, lc} ; Point (66) = {45.1554 *u, -772.724 *u, 0 *u, lc} ; Point (463) = {28.222 *u, 0.56494 *u, 0 *u, lc} ; Point (307) = {28.2225 *u, -315.523 *u, 0 *u, lc} ; Point (303) = {28.2225 *u, -321.167 *u, 0 *u, lc} ; Point (299) = {28.2225 *u, -450.99 *u, 0 *u, lc} ; Point (295) = {28.2225 *u, -456.634 *u, 0 *u, lc} ; Point (291) = {28.2225 *u, -541.301 *u, 0 *u, lc} ; Point (287) = {28.2225 *u, -546.945 *u, 0 *u, lc} ; Point (455) = {25.3999 *u, -5.07946 *u, 0 *u, lc} ; Point (466) = {5.64424 *u, 85.2315 *u, 0 *u, lc} ; Point (465) = {5.64424 *u, 42.8982 *u, 0 *u, lc} ; Point (464) = {5.64424 *u, 0.56494 *u, 0 *u, lc} ; Point (454) = {5.6444 *u, -5.07946 *u, 0 *u, lc} ; Point (453) = {5.6444 *u, -137.723 *u, 0 *u, lc} ; Point (452) = {5.6444 *u, -270.367 *u, 0 *u, lc} ; Point (310) = {5.64468 *u, -276.012 *u, 0 *u, lc} ; Point (309) = {5.64468 *u, -295.768 *u, 0 *u, lc} ; Point (308) = {5.64468 *u, -315.523 *u, 0 *u, lc} ; Point (302) = {5.64468 *u, -321.167 *u, 0 *u, lc} ; Point (301) = {5.64468 *u, -386.079 *u, 0 *u, lc} ; Point (300) = {5.64468 *u, -450.99 *u, 0 *u, lc} ; Point (294) = {5.64468 *u, -456.634 *u, 0 *u, lc} ; Point (293) = {5.64468 *u, -498.967 *u, 0 *u, lc} ; Point (292) = {5.64468 *u, -541.301 *u, 0 *u, lc} ; Point (286) = {5.64468 *u, -546.945 *u, 0 *u, lc} ; Point (285) = {5.64468 *u, -589.278 *u, 0 *u, lc} ; Point (284) = {5.64468 *u, -631.612 *u, 0 *u, lc} ; Point (90) = {5.64444 *u, -637.257 *u, 0 *u, lc} ; Point (89) = {5.64444 *u, -724.746 *u, 0 *u, lc} ; Point (88) = {5.64444 *u, -812.235 *u, 0 *u, lc} ; Line (1) = {1, 2} ; Line (2) = {2, 3} ; Line (3) = {3, 4} ; Line (4) = {4, 5} ; Line (5) = {5, 6} ; Line (6) = {6, 7} ; Line (7) = {7, 8} ; Line (8) = {8, 9} ; Line (9) = {9, 10} ; Line (10) = {10, 11} ; Line (11) = {11, 12} ; Line (12) = {12, 13} ; Line (13) = {13, 14} ; Line (14) = {14, 15} ; Line (15) = {15, 16} ; Line (16) = {16, 17} ; Line (17) = {17, 18} ; Line (18) = {18, 19} ; Line (19) = {19, 20} ; Line (20) = {20, 21} ; Line (21) = {21, 22} ; Line (22) = {22, 23} ; Line (23) = {23, 24} ; Line (24) = {24, 25} ; Line (25) = {25, 26} ; Line (26) = {26, 27} ; Line (27) = {27, 28} ; Line (28) = {28, 29} ; Line (29) = {29, 30} ; Line (30) = {30, 31} ; Line (31) = {31, 32} ; Line (32) = {32, 33} ; Line (33) = {33, 34} ; Line (34) = {34, 35} ; Line (35) = {35, 36} ; Line (36) = {36, 37} ; Line (37) = {37, 38} ; Line (38) = {38, 39} ; Line (39) = {39, 40} ; Line (40) = {40, 41} ; Line (41) = {41, 42} ; Line (42) = {42, 43} ; Line (43) = {43, 44} ; Line (44) = {44, 45} ; Line (45) = {45, 46} ; Line (46) = {46, 47} ; Line (47) = {47, 48} ; Line (48) = {48, 49} ; Line (49) = {49, 50} ; Line (50) = {50, 51} ; Line (51) = {51, 52} ; Line (52) = {52, 53} ; Line (53) = {53, 54} ; Line (54) = {54, 55} ; Line (55) = {55, 56} ; Line (56) = {56, 57} ; Line (57) = {57, 58} ; Line (58) = {58, 59} ; Line (59) = {59, 60} ; Line (60) = {60, 61} ; Line (61) = {61, 62} ; Line (62) = {62, 63} ; Line (63) = {63, 64} ; Line (64) = {64, 65} ; Line (65) = {65, 66} ; Line (66) = {66, 67} ; Line (67) = {67, 68} ; Line (68) = {68, 69} ; Line (69) = {69, 70} ; Line (70) = {70, 71} ; Line (71) = {71, 72} ; Line (72) = {72, 73} ; Line (73) = {73, 74} ; Line (74) = {74, 75} ; Line (75) = {75, 76} ; Line (76) = {76, 77} ; Line (77) = {77, 78} ; Line (78) = {78, 79} ; Line (79) = {79, 80} ; Line (80) = {80, 81} ; Line (81) = {81, 82} ; Line (82) = {82, 83} ; Line (83) = {83, 84} ; Line (84) = {84, 85} ; Line (85) = {85, 86} ; Line (86) = {86, 87} ; Line (87) = {87, 88} ; Line (88) = {88, 89} ; Line (89) = {89, 90} ; Line (90) = {90, 91} ; Line (91) = {91, 92} ; Line (92) = {92, 93} ; Line (93) = {93, 94} ; Line (94) = {94, 95} ; Line (95) = {95, 96} ; Line (96) = {96, 97} ; Line (97) = {97, 98} ; Line (98) = {98, 99} ; Line (99) = {99, 100} ; Line (100) = {100, 101} ; Line (101) = {101, 102} ; Line (102) = {102, 103} ; Line (103) = {103, 104} ; Line (104) = {104, 105} ; Line (105) = {105, 106} ; Line (106) = {106, 107} ; Line (107) = {107, 108} ; Line (108) = {108, 109} ; Line (109) = {109, 110} ; Line (110) = {110, 111} ; Line (111) = {111, 112} ; Line (112) = {112, 113} ; Line (113) = {113, 114} ; Line (114) = {114, 115} ; Line (115) = {115, 116} ; Line (116) = {116, 117} ; Line (117) = {117, 118} ; Line (118) = {118, 119} ; Line (119) = {119, 120} ; Line (120) = {120, 121} ; Line (121) = {121, 122} ; Line (122) = {122, 123} ; Line (123) = {123, 124} ; Line (124) = {124, 125} ; Line (125) = {125, 126} ; Line (126) = {126, 127} ; Line (127) = {127, 128} ; Line (128) = {128, 129} ; Line (129) = {129, 130} ; Line (130) = {130, 131} ; Line (131) = {131, 132} ; Line (132) = {132, 133} ; Line (133) = {133, 134} ; Line (134) = {134, 135} ; Line (135) = {135, 136} ; Line (136) = {136, 137} ; Line (137) = {137, 138} ; Line (138) = {138, 139} ; Line (139) = {139, 140} ; Line (140) = {140, 141} ; Line (141) = {141, 142} ; Line (142) = {142, 143} ; Line (143) = {143, 144} ; Line (144) = {144, 145} ; Line (145) = {145, 146} ; Line (146) = {146, 147} ; Line (147) = {147, 148} ; Line (148) = {148, 149} ; Line (149) = {149, 150} ; Line (150) = {150, 151} ; Line (151) = {151, 152} ; Line (152) = {152, 153} ; Line (153) = {153, 154} ; Line (154) = {154, 155} ; Line (155) = {155, 156} ; Line (156) = {156, 157} ; Line (157) = {157, 158} ; Line (158) = {158, 159} ; Line (159) = {159, 160} ; Line (160) = {160, 161} ; Line (161) = {161, 162} ; Line (162) = {162, 163} ; Line (163) = {163, 164} ; Line (164) = {164, 165} ; Line (165) = {165, 166} ; Line (166) = {166, 167} ; Line (167) = {167, 168} ; Line (168) = {168, 169} ; Line (169) = {169, 170} ; Line (170) = {170, 171} ; Line (171) = {171, 172} ; Line (172) = {172, 173} ; Line (173) = {173, 174} ; Line (174) = {174, 175} ; Line (175) = {175, 176} ; Line (176) = {176, 177} ; Line (177) = {177, 178} ; Line (178) = {178, 179} ; Line (179) = {179, 180} ; Line (180) = {180, 181} ; Line (181) = {181, 182} ; Line (182) = {182, 183} ; Line (183) = {183, 184} ; Line (184) = {184, 185} ; Line (185) = {185, 186} ; Line (186) = {186, 187} ; Line (187) = {187, 188} ; Line (188) = {188, 189} ; Line (189) = {189, 190} ; Line (190) = {190, 191} ; Line (191) = {191, 192} ; Line (192) = {192, 193} ; Line (193) = {193, 194} ; Line (194) = {194, 195} ; Line (195) = {195, 196} ; Line (196) = {196, 197} ; Line (197) = {197, 198} ; Line (198) = {198, 199} ; Line (199) = {199, 200} ; Line (200) = {200, 201} ; Line (201) = {201, 202} ; Line (202) = {202, 203} ; Line (203) = {203, 204} ; Line (204) = {204, 205} ; Line (205) = {205, 206} ; Line (206) = {206, 207} ; Line (207) = {207, 208} ; Line (208) = {208, 209} ; Line (209) = {209, 210} ; Line (210) = {210, 211} ; Line (211) = {211, 212} ; Line (212) = {212, 213} ; Line (213) = {213, 214} ; Line (214) = {214, 215} ; Line (215) = {215, 216} ; Line (216) = {216, 217} ; Line (217) = {217, 218} ; Line (218) = {218, 219} ; Line (219) = {219, 220} ; Line (220) = {220, 221} ; Line (221) = {221, 222} ; Line (222) = {222, 223} ; Line (223) = {223, 224} ; Line (224) = {224, 225} ; Line (225) = {225, 226} ; Line (226) = {226, 227} ; Line (227) = {227, 228} ; Line (228) = {228, 229} ; Line (229) = {229, 230} ; Line (230) = {230, 231} ; Line (231) = {231, 232} ; Line (232) = {232, 233} ; Line (233) = {233, 234} ; Line (234) = {234, 235} ; Line (235) = {235, 236} ; Line (236) = {236, 237} ; Line (237) = {237, 238} ; Line (238) = {238, 239} ; Line (239) = {239, 240} ; Line (240) = {240, 241} ; Line (241) = {241, 242} ; Line (242) = {242, 243} ; Line (243) = {243, 244} ; Line (244) = {244, 245} ; Line (245) = {245, 246} ; Line (246) = {246, 247} ; Line (247) = {247, 248} ; Line (248) = {248, 249} ; Line (249) = {249, 250} ; Line (250) = {250, 251} ; Line (251) = {251, 252} ; Line (252) = {252, 253} ; Line (253) = {253, 254} ; Line (254) = {254, 255} ; Line (255) = {255, 256} ; Line (256) = {256, 257} ; Line (257) = {257, 258} ; Line (258) = {258, 259} ; Line (259) = {259, 260} ; Line (260) = {260, 261} ; Line (261) = {261, 262} ; Line (262) = {262, 263} ; Line (263) = {263, 264} ; Line (264) = {264, 265} ; Line (265) = {265, 266} ; Line (266) = {266, 267} ; Line (267) = {267, 268} ; Line (268) = {268, 269} ; Line (269) = {269, 270} ; Line (270) = {270, 271} ; Line (271) = {271, 272} ; Line (272) = {272, 273} ; Line (273) = {273, 274} ; Line (274) = {274, 275} ; Line (275) = {275, 276} ; Line (276) = {276, 277} ; Line (277) = {277, 278} ; Line (278) = {278, 279} ; Line (279) = {279, 280} ; Line (280) = {280, 281} ; Line (281) = {281, 282} ; Line (282) = {282, 283} ; Line (283) = {283, 284} ; Line (284) = {284, 285} ; Line (285) = {285, 286} ; Line (286) = {286, 287} ; Line (287) = {287, 288} ; Line (288) = {288, 289} ; Line (289) = {289, 290} ; Line (290) = {290, 291} ; Line (291) = {291, 292} ; Line (292) = {292, 293} ; Line (293) = {293, 294} ; Line (294) = {294, 295} ; Line (295) = {295, 296} ; Line (296) = {296, 297} ; Line (297) = {297, 298} ; Line (298) = {298, 299} ; Line (299) = {299, 300} ; Line (300) = {300, 301} ; Line (301) = {301, 302} ; Line (302) = {302, 303} ; Line (303) = {303, 304} ; Line (304) = {304, 305} ; Line (305) = {305, 306} ; Line (306) = {306, 307} ; Line (307) = {307, 308} ; Line (308) = {308, 309} ; Line (309) = {309, 310} ; Line (310) = {310, 311} ; Line (311) = {311, 312} ; Line (312) = {312, 313} ; Line (313) = {313, 314} ; Line (314) = {314, 315} ; Line (315) = {315, 316} ; Line (316) = {316, 317} ; Line (317) = {317, 318} ; Line (318) = {318, 319} ; Line (319) = {319, 320} ; Line (320) = {320, 321} ; Line (321) = {321, 322} ; Line (322) = {322, 323} ; Line (323) = {323, 324} ; Line (324) = {324, 325} ; Line (325) = {325, 326} ; Line (326) = {326, 327} ; Line (327) = {327, 328} ; Line (328) = {328, 329} ; Line (329) = {329, 330} ; Line (330) = {330, 331} ; Line (331) = {331, 332} ; Line (332) = {332, 333} ; Line (333) = {333, 334} ; Line (334) = {334, 335} ; Line (335) = {335, 336} ; Line (336) = {336, 337} ; Line (337) = {337, 338} ; Line (338) = {338, 339} ; Line (339) = {339, 340} ; Line (340) = {340, 341} ; Line (341) = {341, 342} ; Line (342) = {342, 343} ; Line (343) = {343, 344} ; Line (344) = {344, 345} ; Line (345) = {345, 346} ; Line (346) = {346, 347} ; Line (347) = {347, 348} ; Line (348) = {348, 349} ; Line (349) = {349, 350} ; Line (350) = {350, 351} ; Line (351) = {351, 352} ; Line (352) = {352, 353} ; Line (353) = {353, 354} ; Line (354) = {354, 355} ; Line (355) = {355, 356} ; Line (356) = {356, 357} ; Line (357) = {357, 358} ; Line (358) = {358, 359} ; Line (359) = {359, 360} ; Line (360) = {360, 361} ; Line (361) = {361, 362} ; Line (362) = {362, 363} ; Line (363) = {363, 364} ; Line (364) = {364, 365} ; Line (365) = {365, 366} ; Line (366) = {366, 367} ; Line (367) = {367, 368} ; Line (368) = {368, 369} ; Line (369) = {369, 370} ; Line (370) = {370, 371} ; Line (371) = {371, 372} ; Line (372) = {372, 373} ; Line (373) = {373, 374} ; Line (374) = {374, 375} ; Line (375) = {375, 376} ; Line (376) = {376, 377} ; Line (377) = {377, 378} ; Line (378) = {378, 379} ; Line (379) = {379, 380} ; Line (380) = {380, 381} ; Line (381) = {381, 382} ; Line (382) = {382, 383} ; Line (383) = {383, 384} ; Line (384) = {384, 385} ; Line (385) = {385, 386} ; Line (386) = {386, 387} ; Line (387) = {387, 388} ; Line (388) = {388, 389} ; Line (389) = {389, 390} ; Line (390) = {390, 391} ; Line (391) = {391, 392} ; Line (392) = {392, 393} ; Line (393) = {393, 394} ; Line (394) = {394, 395} ; Line (395) = {395, 396} ; Line (396) = {396, 397} ; Line (397) = {397, 398} ; Line (398) = {398, 399} ; Line (399) = {399, 400} ; Line (400) = {400, 401} ; Line (401) = {401, 402} ; Line (402) = {402, 403} ; Line (403) = {403, 404} ; Line (404) = {404, 405} ; Line (405) = {405, 406} ; Line (406) = {406, 407} ; Line (407) = {407, 408} ; Line (408) = {408, 409} ; Line (409) = {409, 410} ; Line (410) = {410, 411} ; Line (411) = {411, 412} ; Line (412) = {412, 413} ; Line (413) = {413, 414} ; Line (414) = {414, 415} ; Line (415) = {415, 416} ; Line (416) = {416, 417} ; Line (417) = {417, 418} ; Line (418) = {418, 419} ; Line (419) = {419, 420} ; Line (420) = {420, 421} ; Line (421) = {421, 422} ; Line (422) = {422, 423} ; Line (423) = {423, 424} ; Line (424) = {424, 425} ; Line (425) = {425, 426} ; Line (426) = {426, 427} ; Line (427) = {427, 428} ; Line (428) = {428, 429} ; Line (429) = {429, 430} ; Line (430) = {430, 431} ; Line (431) = {431, 432} ; Line (432) = {432, 433} ; Line (433) = {433, 434} ; Line (434) = {434, 435} ; Line (435) = {435, 436} ; Line (436) = {436, 437} ; Line (437) = {437, 438} ; Line (438) = {438, 439} ; Line (439) = {439, 440} ; Line (440) = {440, 441} ; Line (441) = {441, 442} ; Line (442) = {442, 443} ; Line (443) = {443, 444} ; Line (444) = {444, 445} ; Line (445) = {445, 446} ; Line (446) = {446, 447} ; Line (447) = {447, 448} ; Line (448) = {448, 449} ; Line (449) = {449, 450} ; Line (450) = {450, 451} ; Line (451) = {451, 452} ; Line (452) = {452, 453} ; Line (453) = {453, 454} ; Line (454) = {454, 455} ; Line (455) = {455, 456} ; Line (456) = {456, 457} ; Line (457) = {457, 458} ; Line (458) = {458, 459} ; Line (459) = {459, 460} ; Line (460) = {460, 461} ; Line (461) = {461, 462} ; Line (462) = {462, 463} ; Line (463) = {463, 464} ; Line (464) = {464, 465} ; Line (465) = {465, 466} ; Line (466) = {466, 467} ; Line (467) = {467, 468} ; Line (468) = {468, 469} ; Line (469) = {469, 470} ; Line (470) = {470, 471} ; Line (471) = {471, 472} ; Line (472) = {472, 473} ; Line (473) = {473, 474} ; Line (474) = {474, 475} ; Line (475) = {475, 476} ; Line (476) = {476, 477} ; Line (477) = {477, 478} ; Line (478) = {478, 479} ; Line (479) = {479, 480} ; Line (480) = {480, 481} ; Line (481) = {481, 482} ; Line (482) = {482, 483} ; Line (483) = {483, 484} ; Line (484) = {484, 485} ; Line (485) = {485, 486} ; Line (486) = {486, 487} ; Line (487) = {487, 488} ; Line (488) = {488, 489} ; Line (489) = {489, 490} ; Line (490) = {490, 491} ; Line (491) = {491, 492} ; Line (492) = {492, 493} ; Line (493) = {493, 494} ; Line (494) = {494, 495} ; Line (495) = {495, 496} ; Line (496) = {496, 497} ; Line (497) = {497, 498} ; Line (498) = {498, 499} ; Line (499) = {499, 500} ; Line (500) = {500, 501} ; Line (501) = {501, 502} ; Line (502) = {502, 503} ; Line (503) = {503, 504} ; Line (504) = {504, 505} ; Line (505) = {505, 506} ; Line (506) = {506, 507} ; Line (507) = {507, 508} ; Line (508) = {508, 509} ; Line (509) = {509, 510} ; Line (510) = {510, 511} ; Line (511) = {511, 512} ; Line (512) = {512, 513} ; Line (513) = {513, 514} ; Line (514) = {514, 515} ; Line (515) = {515, 516} ; Line (516) = {516, 517} ; Line (517) = {517, 518} ; Line (518) = {518, 519} ; Line (519) = {519, 520} ; Line (520) = {520, 521} ; Line (521) = {521, 522} ; Line (522) = {522, 523} ; Line (523) = {523, 524} ; Line (524) = {524, 525} ; Line (525) = {525, 526} ; Line (526) = {526, 527} ; Line (527) = {527, 528} ; Line (528) = {528, 529} ; Line (529) = {529, 530} ; Line (530) = {530, 531} ; Line (531) = {531, 532} ; Line (532) = {532, 533} ; Line (533) = {533, 534} ; Line (534) = {534, 535} ; Line (535) = {535, 536} ; Line (536) = {536, 537} ; Line (537) = {537, 538} ; Line (538) = {538, 539} ; Line (539) = {539, 540} ; Line (540) = {540, 541} ; Line (541) = {541, 542} ; Line (542) = {542, 543} ; Line (543) = {543, 544} ; Line (544) = {544, 545} ; Line (545) = {545, 546} ; Line (546) = {546, 547} ; Line (547) = {547, 548} ; Line (548) = {548, 549} ; Line (549) = {549, 550} ; Line (550) = {550, 551} ; Line (551) = {551, 552} ; Line (552) = {552, 553} ; Line (553) = {553, 554} ; Line (554) = {554, 555} ; Line (555) = {555, 556} ; Line (556) = {556, 557} ; Line (557) = {557, 558} ; Line (558) = {558, 559} ; Line (559) = {559, 560} ; Line (560) = {560, 561} ; Line (561) = {561, 562} ; Line (562) = {562, 563} ; Line (563) = {563, 564} ; Line (564) = {564, 565} ; Line (565) = {565, 566} ; Line (566) = {566, 567} ; Line (567) = {567, 568} ; Line (568) = {568, 569} ; Line (569) = {569, 570} ; Line (570) = {570, 571} ; Line (571) = {571, 572} ; Line (572) = {572, 573} ; Line (573) = {573, 574} ; Line (574) = {574, 575} ; Line (575) = {575, 576} ; Line (576) = {576, 577} ; Line (577) = {577, 578} ; Line (578) = {578, 579} ; Line (579) = {579, 580} ; Line (580) = {580, 581} ; Line (581) = {581, 582} ; Line (582) = {582, 583} ; Line (583) = {583, 584} ; Line (584) = {584, 585} ; Line (585) = {585, 586} ; Line (586) = {586, 587} ; Line (587) = {587, 588} ; Line (588) = {588, 589} ; Line (589) = {589, 590} ; Line (590) = {590, 591} ; Line (591) = {591, 592} ; Line (592) = {592, 593} ; Line (593) = {593, 594} ; Line (594) = {594, 595} ; Line (595) = {595, 596} ; Line (596) = {596, 597} ; Line (597) = {597, 598} ; Line (598) = {598, 599} ; Line (599) = {599, 600} ; Line (600) = {600, 601} ; Line (601) = {601, 602} ; Line (602) = {602, 603} ; Line (603) = {603, 604} ; Line (604) = {604, 605} ; Line (605) = {605, 606} ; Line (606) = {606, 607} ; Line (607) = {607, 608} ; Line (608) = {608, 609} ; Line (609) = {609, 610} ; Line (610) = {610, 611} ; Line (611) = {611, 612} ; Line (612) = {612, 613} ; Line (613) = {613, 614} ; Line (614) = {614, 615} ; Line (615) = {615, 616} ; Line (616) = {616, 617} ; Line (617) = {617, 618} ; Line (618) = {618, 619} ; Line (619) = {619, 620} ; Line (620) = {620, 621} ; Line (621) = {621, 622} ; Line (622) = {622, 623} ; Line (623) = {623, 624} ; Line (624) = {624, 625} ; Line (625) = {625, 626} ; Line (626) = {626, 627} ; Line (627) = {627, 628} ; Line (628) = {628, 629} ; Line (629) = {629, 630} ; Line (630) = {630, 631} ; Line (631) = {631, 632} ; Line (632) = {632, 633} ; Line (633) = {633, 634} ; Line (634) = {634, 635} ; Line (635) = {635, 636} ; Line (636) = {636, 637} ; Line (637) = {637, 638} ; Line (638) = {638, 639} ; Line (639) = {639, 640} ; Line (640) = {640, 641} ; Line (641) = {641, 642} ; Line (642) = {642, 643} ; Line (643) = {643, 644} ; Line (644) = {644, 645} ; Line (645) = {645, 646} ; Line (646) = {646, 647} ; Line (647) = {647, 648} ; Line (648) = {648, 649} ; Line (649) = {649, 650} ; Line (650) = {650, 651} ; Line (651) = {651, 652} ; Line (652) = {652, 653} ; Line (653) = {653, 654} ; Line (654) = {654, 655} ; Line (655) = {655, 656} ; Line (656) = {656, 657} ; Line (657) = {657, 658} ; Line (658) = {658, 659} ; Line (659) = {659, 660} ; Line (660) = {660, 661} ; Line (661) = {661, 662} ; Line (662) = {662, 663} ; Line (663) = {663, 664} ; Line (664) = {664, 665} ; Line (665) = {665, 666} ; Line (666) = {666, 667} ; Line (667) = {667, 668} ; Line (668) = {668, 669} ; Line (669) = {669, 670} ; Line (670) = {670, 671} ; Line (671) = {671, 672} ; Line (672) = {672, 673} ; Line (673) = {673, 674} ; Line (674) = {674, 675} ; Line (675) = {675, 676} ; Line (676) = {676, 677} ; Line (677) = {677, 678} ; Line (678) = {678, 679} ; Line (679) = {679, 680} ; Line (680) = {680, 681} ; Line (681) = {681, 682} ; Line (682) = {682, 683} ; Line (683) = {683, 684} ; Line (684) = {684, 685} ; Line (685) = {685, 686} ; Line (686) = {686, 687} ; Line (687) = {687, 688} ; Line (688) = {688, 689} ; Line (689) = {689, 690} ; Line (690) = {690, 691} ; Line (691) = {691, 692} ; Line (692) = {692, 693} ; Line (693) = {693, 694} ; Line (694) = {694, 695} ; Line (695) = {695, 696} ; Line (696) = {696, 697} ; Line (697) = {697, 698} ; Line (698) = {698, 699} ; Line (699) = {699, 700} ; Line (700) = {700, 701} ; Line (701) = {701, 702} ; Line (702) = {702, 703} ; Line (703) = {703, 704} ; Line (704) = {704, 705} ; Line (705) = {705, 706} ; Line (706) = {706, 707} ; Line (707) = {707, 708} ; Line (708) = {708, 709} ; Line (709) = {709, 710} ; Line (710) = {710, 711} ; Line (711) = {711, 712} ; Line (712) = {712, 713} ; Line (713) = {713, 714} ; Line (714) = {714, 715} ; Line (715) = {715, 716} ; Line (716) = {716, 717} ; Line (717) = {717, 718} ; Line (718) = {718, 719} ; Line (719) = {719, 720} ; Line (720) = {720, 721} ; Line (721) = {721, 722} ; Line (722) = {722, 723} ; Line (723) = {723, 724} ; Line (724) = {724, 725} ; Line (725) = {725, 726} ; Line (726) = {726, 727} ; Line (727) = {727, 728} ; Line (728) = {728, 729} ; Line (729) = {729, 730} ; Line (730) = {730, 731} ; Line (731) = {731, 732} ; Line (732) = {732, 733} ; Line (733) = {733, 734} ; Line (734) = {734, 735} ; Line (735) = {735, 736} ; Line (736) = {736, 737} ; Line (737) = {737, 738} ; Line (738) = {738, 739} ; Line (739) = {739, 740} ; Line (740) = {740, 741} ; Line (741) = {741, 742} ; Line (742) = {742, 743} ; Line (743) = {743, 744} ; Line (744) = {744, 745} ; Line (745) = {745, 746} ; Line (746) = {746, 747} ; Line (747) = {747, 748} ; Line (748) = {748, 749} ; Line (749) = {749, 750} ; Line (750) = {750, 751} ; Line (751) = {751, 752} ; Line (752) = {752, 753} ; Line (753) = {753, 754} ; Line (754) = {754, 755} ; Line (755) = {755, 756} ; Line (756) = {756, 757} ; Line (757) = {757, 758} ; Line (758) = {758, 759} ; Line (759) = {759, 760} ; Line (760) = {760, 761} ; Line (761) = {761, 762} ; Line (762) = {762, 763} ; Line (763) = {763, 764} ; Line (764) = {764, 765} ; Line (765) = {765, 766} ; Line (766) = {766, 767} ; Line (767) = {767, 768} ; Line (768) = {768, 769} ; Line (769) = {769, 770} ; Line (770) = {770, 771} ; Line (771) = {771, 772} ; Line (772) = {772, 773} ; Line (773) = {773, 774} ; Line (774) = {774, 775} ; Line (775) = {775, 776} ; Line (776) = {776, 777} ; Line (777) = {777, 778} ; Line (778) = {778, 779} ; Line (779) = {779, 780} ; Line (780) = {780, 781} ; Line (781) = {781, 782} ; Line (782) = {782, 783} ; Line (783) = {783, 784} ; Line (784) = {784, 785} ; Line (785) = {785, 786} ; Line (786) = {786, 787} ; Line (787) = {787, 788} ; Line (788) = {788, 789} ; Line (789) = {789, 790} ; Line (790) = {790, 791} ; Line (791) = {791, 792} ; Line (792) = {792, 793} ; Line (793) = {793, 794} ; Line (794) = {794, 795} ; Line (795) = {795, 796} ; Line (796) = {796, 797} ; Line (797) = {797, 798} ; Line (798) = {798, 799} ; Line (799) = {799, 800} ; Line (800) = {800, 801} ; Line (801) = {801, 802} ; Line (802) = {802, 803} ; Line (803) = {803, 804} ; Line (804) = {804, 805} ; Line (805) = {805, 806} ; Line (806) = {806, 807} ; Line (807) = {807, 808} ; Line (808) = {808, 809} ; Line (809) = {809, 810} ; Line (810) = {810, 811} ; Line (811) = {811, 812} ; Line (812) = {812, 813} ; Line (813) = {813, 814} ; Line (814) = {814, 815} ; Line (815) = {815, 816} ; Line (816) = {816, 817} ; Line (817) = {817, 818} ; Line (818) = {818, 819} ; Line (819) = {819, 820} ; Line (820) = {820, 821} ; Line (821) = {821, 822} ; Line (822) = {822, 823} ; Line (823) = {823, 824} ; Line (824) = {824, 825} ; Line (825) = {825, 826} ; Line (826) = {826, 827} ; Line (827) = {827, 828} ; Line (828) = {828, 829} ; Line (829) = {829, 830} ; Line (830) = {830, 831} ; Line (831) = {831, 832} ; Line (832) = {832, 833} ; Line (833) = {833, 834} ; Line (834) = {834, 835} ; Line (835) = {835, 836} ; Line (836) = {836, 837} ; Line (837) = {837, 838} ; Line (838) = {838, 839} ; Line (839) = {839, 840} ; Line (840) = {840, 841} ; Line (841) = {841, 842} ; Line (842) = {842, 843} ; Line (843) = {843, 844} ; Line (844) = {844, 845} ; Line (845) = {845, 846} ; Line (846) = {846, 847} ; Line (847) = {847, 848} ; Line (848) = {848, 849} ; Line (849) = {849, 850} ; Line (850) = {850, 851} ; Line (851) = {851, 852} ; Line (852) = {852, 853} ; Line (853) = {853, 854} ; Line (854) = {854, 855} ; Line (855) = {855, 856} ; Line (856) = {856, 857} ; Line (857) = {857, 858} ; Line (858) = {858, 859} ; Line (859) = {859, 860} ; Line (860) = {860, 861} ; Line (861) = {861, 862} ; Line (862) = {862, 863} ; Line (863) = {863, 864} ; Line (864) = {864, 865} ; Line (865) = {865, 866} ; Line (866) = {866, 867} ; Line (867) = {867, 868} ; Line (868) = {868, 869} ; Line (869) = {869, 870} ; Line (870) = {870, 871} ; Line (871) = {871, 872} ; Line (872) = {872, 873} ; Line (873) = {873, 874} ; Line (874) = {874, 875} ; Line (875) = {875, 876} ; Line (876) = {876, 877} ; Line (877) = {877, 878} ; Line (878) = {878, 879} ; Line (879) = {879, 880} ; Line (880) = {880, 881} ; Line (881) = {881, 882} ; Line (882) = {882, 883} ; Line (883) = {883, 884} ; Line (884) = {884, 885} ; Line (885) = {885, 886} ; Line (886) = {886, 887} ; Line (887) = {887, 888} ; Line (888) = {888, 889} ; Line (889) = {889, 890} ; Line (890) = {890, 891} ; Line (891) = {891, 892} ; Line (892) = {892, 893} ; Line (893) = {893, 894} ; Line (894) = {894, 895} ; Line (895) = {895, 896} ; Line (896) = {896, 897} ; Line (897) = {897, 898} ; Line (898) = {898, 899} ; Line (899) = {899, 900} ; Line (900) = {900, 901} ; Line (901) = {901, 902} ; Line (902) = {902, 903} ; Line (903) = {903, 904} ; Line (904) = {904, 905} ; Line (905) = {905, 906} ; Line (906) = {906, 907} ; Line (907) = {907, 908} ; Line (908) = {908, 909} ; Line (909) = {909, 910} ; Line (910) = {910, 911} ; Line (911) = {911, 912} ; Line (912) = {912, 913} ; Line (913) = {913, 914} ; Line (914) = {914, 915} ; Line (915) = {915, 916} ; Line (916) = {916, 917} ; Line (917) = {917, 918} ; Line (918) = {918, 919} ; Line (919) = {919, 920} ; Line (920) = {920, 921} ; Line (921) = {921, 922} ; Line (922) = {922, 923} ; Line (923) = {923, 924} ; Line (924) = {924, 925} ; Line (925) = {925, 926} ; Line (926) = {926, 927} ; Line (927) = {927, 928} ; Line (928) = {928, 929} ; Line (929) = {929, 930} ; Line (930) = {930, 931} ; Line (931) = {931, 932} ; Line (932) = {932, 933} ; Line (933) = {933, 934} ; Line (934) = {934, 935} ; Line (935) = {935, 936} ; Line (936) = {936, 937} ; Line (937) = {937, 938} ; Line (938) = {938, 939} ; Line (939) = {939, 940} ; Line (940) = {940, 941} ; Line (941) = {941, 942} ; Line (942) = {942, 943} ; Line (943) = {943, 944} ; Line (944) = {944, 945} ; Line (945) = {945, 946} ; Line (946) = {946, 947} ; Line (947) = {947, 948} ; Line (948) = {948, 949} ; Line (949) = {949, 950} ; Line (950) = {950, 951} ; Line (951) = {951, 952} ; Line (952) = {952, 953} ; Line (953) = {953, 954} ; Line (954) = {954, 955} ; Line (955) = {955, 956} ; Line (956) = {956, 957} ; Line (957) = {957, 958} ; Line (958) = {958, 959} ; Line (959) = {959, 960} ; Line (960) = {960, 961} ; Line (961) = {961, 962} ; Line (962) = {962, 963} ; Line (963) = {963, 964} ; Line (964) = {964, 965} ; Line (965) = {965, 966} ; Line (966) = {966, 967} ; Line (967) = {967, 968} ; Line (968) = {968, 969} ; Line (969) = {969, 970} ; Line (970) = {970, 971} ; Line (971) = {971, 972} ; Line (972) = {972, 973} ; Line (973) = {973, 974} ; Line (974) = {974, 975} ; Line (975) = {975, 976} ; Line (976) = {976, 977} ; Line (977) = {977, 978} ; Line (978) = {978, 979} ; Line (979) = {979, 980} ; Line (980) = {980, 981} ; Line (981) = {981, 982} ; Line (982) = {982, 983} ; Line (983) = {983, 984} ; Line (984) = {984, 985} ; Line (985) = {985, 986} ; Line (986) = {986, 987} ; Line (987) = {987, 988} ; Line (988) = {988, 989} ; Line (989) = {989, 990} ; Line (990) = {990, 991} ; Line (991) = {991, 992} ; Line (992) = {992, 993} ; Line (993) = {993, 994} ; Line (994) = {994, 995} ; Line (995) = {995, 996} ; Line (996) = {996, 997} ; Line (997) = {997, 998} ; Line (998) = {998, 999} ; Line (999) = {999, 1000} ; Line (1000) = {1000, 1001} ; Line (1001) = {1001, 1002} ; Line (1002) = {1002, 1003} ; Line (1003) = {1003, 1004} ; Line (1004) = {1004, 1005} ; Line (1005) = {1005, 1006} ; Line (1006) = {1006, 1007} ; Line (1007) = {1007, 1008} ; Line (1008) = {1008, 1009} ; Line (1009) = {1009, 1010} ; Line (1010) = {1010, 1011} ; Line (1011) = {1011, 1012} ; Line (1012) = {1012, 1013} ; Line (1013) = {1013, 1014} ; Line (1014) = {1014, 1015} ; Line (1015) = {1015, 1016} ; Line (1016) = {1016, 1017} ; Line (1017) = {1017, 1018} ; Line (1018) = {1018, 1019} ; Line (1019) = {1019, 1020} ; Line (1020) = {1020, 1021} ; Line (1021) = {1021, 1022} ; Line (1022) = {1022, 1023} ; Line (1023) = {1023, 1024} ; Line (1024) = {1024, 1025} ; Line (1025) = {1025, 1026} ; Line (1026) = {1026, 1027} ; Line (1027) = {1027, 1028} ; Line (1028) = {1028, 1029} ; Line (1029) = {1029, 1030} ; Line (1030) = {1030, 1031} ; Line (1031) = {1031, 1032} ; Line (1032) = {1032, 1033} ; Line (1033) = {1033, 1034} ; Line (1034) = {1034, 1035} ; Line (1035) = {1035, 1036} ; Line (1036) = {1036, 1037} ; Line (1037) = {1037, 1038} ; Line (1038) = {1038, 1039} ; Line (1039) = {1039, 1040} ; Line (1040) = {1040, 1041} ; Line (1041) = {1041, 1042} ; Line (1042) = {1042, 1043} ; Line (1043) = {1043, 1044} ; Line (1044) = {1044, 1045} ; Line (1045) = {1045, 1046} ; Line (1046) = {1046, 1047} ; Line (1047) = {1047, 1048} ; Line (1048) = {1048, 1049} ; Line (1049) = {1049, 1050} ; Line (1050) = {1050, 1051} ; Line (1051) = {1051, 1052} ; Line (1052) = {1052, 1053} ; Line (1053) = {1053, 1054} ; Line (1054) = {1054, 1055} ; Line (1055) = {1055, 1056} ; Line (1056) = {1056, 1057} ; Line (1057) = {1057, 1058} ; Line (1058) = {1058, 1059} ; Line (1059) = {1059, 1060} ; Line (1060) = {1060, 1061} ; Line (1061) = {1061, 1062} ; Line (1062) = {1062, 1063} ; Line (1063) = {1063, 1064} ; Line (1064) = {1064, 1065} ; Line (1065) = {1065, 1066} ; Line (1066) = {1066, 1067} ; Line (1067) = {1067, 1068} ; Line (1068) = {1068, 1069} ; Line (1069) = {1069, 1070} ; Line (1070) = {1070, 1071} ; Line (1071) = {1071, 1072} ; Line (1072) = {1072, 1073} ; Line (1073) = {1073, 1074} ; Line (1074) = {1074, 1075} ; Line (1075) = {1075, 1076} ; Line (1076) = {1076, 1077} ; Line (1077) = {1077, 1078} ; Line (1078) = {1078, 1079} ; Line (1079) = {1079, 1080} ; Line (1080) = {1080, 1081} ; Line (1081) = {1081, 1082} ; Line (1082) = {1082, 1083} ; Line (1083) = {1083, 1084} ; Line (1084) = {1084, 1085} ; Line (1085) = {1085, 1086} ; Line (1086) = {1086, 1087} ; Line (1087) = {1087, 1088} ; Line (1088) = {1088, 1089} ; Line (1089) = {1089, 1090} ; Line (1090) = {1090, 1091} ; Line (1091) = {1091, 1092} ; Line (1092) = {1092, 1093} ; Line (1093) = {1093, 1094} ; Line (1094) = {1094, 1095} ; Line (1095) = {1095, 1096} ; Line (1096) = {1096, 1097} ; Line (1097) = {1097, 1098} ; Line (1098) = {1098, 1099} ; Line (1099) = {1099, 1100} ; Line (1100) = {1100, 1101} ; Line (1101) = {1101, 1102} ; Line (1102) = {1102, 1103} ; Line (1103) = {1103, 1104} ; Line (1104) = {1104, 1105} ; Line (1105) = {1105, 1106} ; Line (1106) = {1106, 1107} ; Line (1107) = {1107, 1108} ; Line (1108) = {1108, 1109} ; Line (1109) = {1109, 1110} ; Line (1110) = {1110, 1111} ; Line (1111) = {1111, 1112} ; Line (1112) = {1112, 1113} ; Line (1113) = {1113, 1114} ; Line (1114) = {1114, 1115} ; Line (1115) = {1115, 1116} ; Line (1116) = {1116, 1117} ; Line (1117) = {1117, 1118} ; Line (1118) = {1118, 1119} ; Line (1119) = {1119, 1120} ; Line (1120) = {1120, 1121} ; Line (1121) = {1121, 1122} ; Line (1122) = {1122, 1123} ; Line (1123) = {1123, 1124} ; Line (1124) = {1124, 1} ; Line (1125) = {1, 1} ; //+ Curve Loop(1) = {466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465}; Plane Surface(1) = {1}; Physical Surface("bulk") = {1}; Physical Curve("start") = {822, 823}; Physical Curve("end") = {1123, 1122}; Mesh.Algorithm = 6; Mesh.Optimize = 1; Mesh.OptimizeNetgen = 1; Mesh.RecombineAll = 1; feenox-1.1/tests/bc-groups4.fee0000644000175000017500000000026214773607165013410 00000000000000PROBLEM mechanical READ_MESH cube.msh E = 1 nu = 0.3 BC A fixed GROUPS left front bottom right BC C p=1 GROUPS right back top SOLVE_PROBLEM WRITE_RESULTS FORMAT vtk feenox-1.1/tests/cube-free-expansion-uniform-orthotropic.fee0000644000175000017500000000110314773607165021304 00000000000000PROBLEM mechanical READ_MESH cube.msh E = 1 nu = 0.3 BC left u=0 BC front v=0 BC bottom w=0 alpha_x = 0.123456879 alpha_y = 0.23456879 alpha_z = 0.3456879 T = 9.87654321 SOLVE_PROBLEM WRITE_MESH cube-free-expansion-uniform-isotropic.vtk VECTOR u v w sigma VECTOR diff_displ[3] diff_displ[1] = u(1,1,1)-alpha_x*T diff_displ[2] = v(1,1,1)-alpha_y*T diff_displ[3] = w(1,1,1)-alpha_z*T VECTOR diff_stress[3] diff_stress[1] = sigmax(0.5,0.5,0.5)-0 diff_stress[2] = sigmay(0.5,0.5,0.5)-0 diff_stress[3] = sigmaz(0.5,0.5,0.5)-0 PRINT vecnorm(diff_displ)+vecnorm(diff_stress) feenox-1.1/tests/transient-to-mesh.ref0000644000175000017500000000037114773607165015022 000000000000000 0.707107 0.0625 0.705726 0.125 0.70159 0.1875 0.694714 0.25 0.685125 0.3125 0.67286 0.375 0.657968 0.4375 0.640507 0.5 0.620545 0.5625 0.598159 0.625 0.573438 0.6875 0.546477 0.75 0.517382 0.8125 0.486267 0.875 0.453253 0.9375 0.418469 1 0.382051 feenox-1.1/tests/fibo_formula.fee0000644000175000017500000000024214773607165014065 00000000000000# the fibonacci sequence using the closed-form formula as a function phi = (1+sqrt(5))/2 f(n) = (phi^n - (1-phi)^n)/sqrt(5) PRINT_FUNCTION f MIN 1 MAX 25 STEP 1 feenox-1.1/tests/read_vtk5.fee0000644000175000017500000000176714773607165013322 00000000000000# test this "v5" vtk thing # this vtk file is the output of the reaction-force.fee case, # opened with paraview and then re-exported as vtk again READ_MESH reaction-force-v5.vtk DIM 3 { READ_FIELD u_v_w1 as u READ_FIELD u_v_w2 as v READ_FIELD u_v_w3 as w READ_FUNCTION sigmax READ_FUNCTION sigmay READ_FUNCTION sigmaz } READ_MESH reaction.msh SCALE 1e-3 INTEGRATE sigmax(x,y,z)*(-1) OVER surf_1_1 MESH reaction.msh RESULT Rleft INTEGRATE sigmax OVER surf_1_3 MESH reaction.msh RESULT Rright INTEGRATE sigmay(x,y,z)*(-1) OVER surf_1_2 MESH reaction.msh RESULT Rbottom INTEGRATE sigmay OVER surf_1_4 MESH reaction.msh RESULT Rtop INTEGRATE sigmaz(x,y,z)*(-1) OVER surf_1_6 MESH reaction.msh RESULT Rfront INTEGRATE sigmaz OVER surf_1_5 MESH reaction.msh RESULT Rback # PRINT %.2f Rleft Rright %.1e Rleft+Rright # PRINT %.2f Rbottom Rtop %.1e Rbottom+Rtop # PRINT %.2f Rfront Rback %.1e Rfront+Rback PRINT sqrt((Rleft+Rright)^2+(Rbottom+Rtop)^2+(Rfront+Rback)^2) feenox-1.1/tests/xfail-few-properties-ortho-good.fee0000644000175000017500000000035714773607165017563 00000000000000PROBLEM mechanical READ_MESH cylinder.msh Ex = 1 Ey = 2 Ez = 3 nuxy = 0.3 nuyz = 0.3 nuzx = 0.3 Gxy = 3 Gyz = 2 Gzx = 1 alphax = 0.1 alphay = 0.2 alphaz = 0.3 T(x,y,z) = x^2+y^2+z^2 BC bottom fixed SOLVE_PROBLEM PRINT %.2f displ_max feenox-1.1/tests/Tini.dat0000644000175000017500000000022614773607165012337 00000000000000# Sol. 1er estacionario 0 598.02 0.1 457.253 0.2 383.881 0.3 346.458 0.4 328.945 0.5 323.837 0.6 328.945 0.7 346.458 0.8 383.881 0.9 457.253 1 598.02 feenox-1.1/tests/nafems-le1-7.msh0000644000175000017500000001451014773607165013550 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 9 0 1 "A" 0 2 "B" 0 3 "C" 0 4 "D" 1 5 "AB" 1 6 "BC" 1 7 "CD" 1 8 "DA" 2 9 "bulk" $EndPhysicalNames $Entities 4 4 1 0 1 6.123233995736766e-14 1000 0 1 1 2 9.950255243072245e-14 2750 0 1 2 3 3250 0 0 1 3 4 2000 0 0 1 4 1 -1e-07 999.9999999 -1e-07 1e-07 2750.0000001 1e-07 1 5 2 1 -2 2 -9.999985195463523e-08 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 6 2 3 -2 3 1999.9999999 -1e-07 -1e-07 3250.0000001 1e-07 1e-07 1 7 2 3 -4 4 -9.999985195463523e-08 -1.000000224848918e-07 -1e-07 2000.0000001 1000.0000001 1e-07 1 8 2 4 -1 1 -1.000000793283107e-07 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 9 4 1 -2 3 4 $EndEntities $Nodes 9 117 1 117 0 1 0 1 1 6.123233995736766e-14 1000 0 0 2 0 1 2 9.950255243072245e-14 2750 0 0 3 0 1 3 3250 0 0 0 4 0 1 4 2000 0 0 1 1 0 7 5 6 7 8 9 10 11 0 1434.232387780806 0 0 1870.635937451771 0 0 2309.221504784242 0 3.061616997868383e-14 1217.116193890403 0 0 1652.434162616289 0 0 2089.928721118007 0 4.975127621536122e-14 2529.610752392121 0 1 2 0 11 12 13 14 15 16 17 18 19 20 21 22 3122.462036085646 762.8211063815952 0 2760.436694568109 1451.465694415729 0 2214.818610289794 2012.544242367443 0 1542.004361425019 2420.757654968403 0 790.4638145833807 2667.420913683683 0 3186.231018042823 381.4105531907976 0 2941.449365326877 1107.143400398662 0 2487.627652428951 1732.004968391586 0 1878.411485857407 2216.650948667923 0 1166.2340880042 2544.089284326043 0 395.2319072916904 2708.710456841842 0 1 3 0 7 23 24 25 26 27 28 29 2935.158217794536 0 0 2621.882812463697 0 0 2310.165991177719 0 0 3092.579108897268 0 0 2778.520515129116 0 0 2466.024401820708 0 0 2155.082995588859 0 0 1 4 0 11 30 31 32 33 34 35 36 37 38 39 40 1861.446094820848 365.7247722250347 0 1559.233579327545 626.2568652512748 0 1196.780614328439 801.2047430538036 0 808.4029301048257 914.669981823763 0 407.2395142007033 979.0500469937141 0 1930.723047410424 182.8623861125173 0 1710.339837074197 495.9908187381548 0 1378.007096827992 713.7308041525391 0 1002.591772216632 857.9373624387833 0 607.8212221527644 946.8600144087386 0 203.6197571003517 989.5250234968571 0 2 1 0 77 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 502.3300301855381 1397.990225787693 0 990.4335021784177 1288.379722679649 0 1449.389225604628 1101.777796300221 0 1857.291463218973 831.0182368467947 0 2174.345502280971 464.257394712871 0 597.8959987819819 1819.025105443216 0 1173.374227174532 1663.958012219458 0 1703.260880027457 1403.853714800613 0 2156.839636644623 1036.803415292877 0 2488.809406913281 563.2826803089997 0 693.9397972024943 2242.165159413261 0 1357.229655759425 2041.414193132276 0 1958.401892672171 1707.440012833444 0 2457.885550878158 1243.617519590274 0 2804.845631006595 662.8030923134188 0 251.1650150927691 1416.11130678425 0 454.7847721931207 1188.520136390704 0 227.3923860965604 1202.818165140553 0 746.3817661819779 1343.184974233671 0 899.4182161416218 1101.524852251706 0 677.1014941673711 1145.022494321205 0 1219.911363891523 1195.078759489935 0 1323.084919966533 951.4912696770125 0 1111.251568054077 1026.508060964359 0 1653.3403444118 966.398016573508 0 1708.262521273259 728.6375510490348 0 1515.673720619896 840.0644103630236 0 2015.818482749972 647.6378157798329 0 2017.89579855091 414.9910834689529 0 1863.079159912084 571.8143172589938 0 2242.255746729345 232.1286973564355 0 2086.489397069884 207.4955417344764 0 298.947999390991 1844.830521447494 0 550.11301448376 1608.507665615454 0 275.05650724188 1630.470914115872 0 885.6351129782569 1741.491558831337 0 1081.903864676475 1476.168867449554 0 816.0084395801174 1542.338266532504 0 1438.317553600994 1533.905863510036 0 1576.325052816042 1252.815755550417 0 1329.114458746258 1364.492311499985 0 1930.05025833604 1220.328565046745 0 2007.065549931798 933.9108260698357 0 1791.69530137392 1093.363290810127 0 2322.824521778952 800.0430478009382 0 2331.577454597126 513.7700375109354 0 2169.321502264463 723.8404317903855 0 2555.346109688489 281.6413401544999 0 2398.800928208917 256.8850187554677 0 346.9698986012472 2275.693332098752 0 645.9178979922381 2030.595132428238 0 322.958948996119 2060.261926773122 0 1025.58472648096 2141.789676272769 0 1265.301941466979 1852.686102675867 0 955.6099197296085 1941.640617552053 0 1657.815774215798 1874.42710298286 0 1830.831386349814 1555.646863817029 0 1548.066663908396 1704.166483246448 0 2208.143721775165 1475.528766211859 0 2307.362593761391 1140.210467441575 0 2069.096990055602 1347.928665629302 0 2631.365590942376 953.2103059518465 0 2646.827518959938 613.0428863112093 0 2477.095056360664 876.6266768763924 0 2870.001924400565 331.4015461567094 0 2712.674017044527 306.5214431556046 0 742.2018058929375 2454.793036548472 0 371.1009029464688 2492.201894470297 0 1449.617008592222 2231.08592405034 0 1095.90940724258 2342.939480299406 0 2086.610251480983 1859.992127600443 0 1768.113630036602 2045.539025825391 0 2609.161122723133 1347.541607003002 0 2347.885687102058 1603.766867301722 0 2963.65383354612 712.812099347507 0 2786.407478134627 1030.176853175254 0 3028.116471221694 356.4060496737535 0 $EndNodes $Elements 9 48 1 48 0 1 15 1 1 1 0 2 15 1 2 2 0 3 15 1 3 3 0 4 15 1 4 4 1 1 8 4 5 1 5 8 6 5 6 9 7 6 7 10 8 7 2 11 1 2 8 6 9 3 12 17 10 12 13 18 11 13 14 19 12 14 15 20 13 15 16 21 14 16 2 22 1 3 8 4 15 3 23 26 16 23 24 27 17 24 25 28 18 25 4 29 1 4 8 6 19 4 30 35 20 30 31 36 21 31 32 37 22 32 33 38 23 33 34 39 24 34 1 40 2 1 10 24 25 1 5 41 34 8 56 57 40 58 26 34 41 42 33 57 59 60 39 61 27 33 42 43 32 60 62 63 38 64 28 32 43 44 31 63 65 66 37 67 29 31 44 45 30 66 68 69 36 70 30 30 45 25 4 69 71 29 35 72 31 5 6 46 41 9 73 74 56 75 32 41 46 47 42 74 76 77 59 78 33 42 47 48 43 77 79 80 62 81 34 43 48 49 44 80 82 83 65 84 35 44 49 50 45 83 85 86 68 87 36 45 50 24 25 86 88 28 71 89 37 6 7 51 46 10 90 91 73 92 38 46 51 52 47 91 93 94 76 95 39 47 52 53 48 94 96 97 79 98 40 48 53 54 49 97 99 100 82 101 41 49 54 55 50 100 102 103 85 104 42 50 55 23 24 103 105 27 88 106 43 7 2 16 51 11 22 107 90 108 44 51 16 15 52 107 21 109 93 110 45 52 15 14 53 109 20 111 96 112 46 53 14 13 54 111 19 113 99 114 47 54 13 12 55 113 18 115 102 116 48 55 12 3 23 115 17 26 105 117 $EndElements feenox-1.1/tests/radiation-as-convection-celsius.fee0000644000175000017500000000042214773607165017606 00000000000000PROBLEM thermal 1D READ_MESH slab.msh TK = 273.15 Tref = 20 T_guess(x) = Tref k = 50 sigma = 5.670374419e-8 e = 0.8 BC left q=1200 BC right h=sigma*e*((T(x)+TK)^2+(Tref+TK)^2)*((T(x)+TK)+(Tref+TK)) Tref=Tref SOLVE_PROBLEM PRINT T(0.0)-179.747+T(1.0)-155.747+T(0.5)-167.747 feenox-1.1/tests/function_vectors1d.fee0000644000175000017500000000036414773607165015245 00000000000000FUNCTION f(x) DATA { 0 0 1 1 2 4 3 9 } VECTOR b(vecsize(vec_f)) b[1] = 0 b[2] = 0.5 b[3] = 2.5 b[4] = 3 FUNCTION g(x) VECTORS vec_f_x b f_a = vecmin(vec_f_x) f_b = vecmax(vec_f_x) PRINT_FUNCTION f g MIN f_a MAX f_b NSTEPS 2*vecsize(vec_f) feenox-1.1/tests/qrng_others.fee0000644000175000017500000000015014773607165013752 00000000000000static_steps = 10 PRINT qrng_sobol(0,1) qrng_niederreiter(0,1) qrng_halton(0,1) qrng_reversehalton(0,1) feenox-1.1/tests/file.sh0000755000175000017500000000054514773607165012224 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi ${feenox} ${dir}/file.fee diff two-is-2.txt ${dir}/two-is-2.ref exitifwrong $? ${feenox} ${dir}/file-append.fee diff two-is-2.txt ${dir}/two-is-3.ref exitifwrong $? feenox-1.1/tests/nafems-le1-2.msh0000644000175000017500000001517514773607165013553 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 9 0 1 "A" 0 2 "B" 0 3 "C" 0 4 "D" 1 5 "AB" 1 6 "BC" 1 7 "CD" 1 8 "DA" 2 9 "bulk" $EndPhysicalNames $Entities 4 4 1 0 1 6.123233995736766e-14 1000 0 1 1 2 9.950255243072245e-14 2750 0 1 2 3 3250 0 0 1 3 4 2000 0 0 1 4 1 -1e-07 999.9999999 -1e-07 1e-07 2750.0000001 1e-07 1 5 2 1 -2 2 -9.999985195463523e-08 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 6 2 3 -2 3 1999.9999999 -1e-07 -1e-07 3250.0000001 1e-07 1e-07 1 7 2 3 -4 4 -9.999985195463523e-08 -1.000000224848918e-07 -1e-07 2000.0000001 1000.0000001 1e-07 1 8 2 4 -1 1 -1.000000793283107e-07 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 9 4 1 -2 3 4 $EndEntities $Nodes 9 117 1 117 0 1 0 1 1 6.123233995736766e-14 1000 0 0 2 0 1 2 9.950255243072245e-14 2750 0 0 3 0 1 3 3250 0 0 0 4 0 1 4 2000 0 0 1 1 0 7 5 6 7 8 9 10 11 0 1434.232387780806 0 0 1870.635937451771 0 0 2309.221504784242 0 3.061616997868383e-14 1217.116193890403 0 0 1652.434162616289 0 0 2089.928721118007 0 4.975127621536122e-14 2529.610752392121 0 1 2 0 11 12 13 14 15 16 17 18 19 20 21 22 3122.462036085646 762.8211063815952 0 2760.436694568109 1451.465694415729 0 2214.818610289794 2012.544242367443 0 1542.004361425019 2420.757654968403 0 790.4638145833807 2667.420913683683 0 3186.231018042823 381.4105531907976 0 2941.449365326877 1107.143400398662 0 2487.627652428951 1732.004968391586 0 1878.411485857407 2216.650948667923 0 1166.2340880042 2544.089284326043 0 395.2319072916904 2708.710456841842 0 1 3 0 7 23 24 25 26 27 28 29 2935.158217794536 0 0 2621.882812463697 0 0 2310.165991177719 0 0 3092.579108897268 0 0 2778.520515129116 0 0 2466.024401820708 0 0 2155.082995588859 0 0 1 4 0 11 30 31 32 33 34 35 36 37 38 39 40 1861.446094820848 365.7247722250347 0 1559.233579327545 626.2568652512748 0 1196.780614328439 801.2047430538036 0 808.4029301048257 914.669981823763 0 407.2395142007033 979.0500469937141 0 1930.723047410424 182.8623861125173 0 1710.339837074197 495.9908187381548 0 1378.007096827992 713.7308041525391 0 1002.591772216632 857.9373624387833 0 607.8212221527644 946.8600144087386 0 203.6197571003517 989.5250234968571 0 2 1 0 77 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 502.3300301855381 1397.990225787693 0 990.4335021784177 1288.379722679649 0 1449.389225604628 1101.777796300221 0 1857.291463218973 831.0182368467947 0 2174.345502280971 464.257394712871 0 597.8959987819819 1819.025105443216 0 1173.374227174532 1663.958012219458 0 1703.260880027457 1403.853714800613 0 2156.839636644623 1036.803415292877 0 2488.809406913281 563.2826803089997 0 693.9397972024943 2242.165159413261 0 1357.229655759425 2041.414193132276 0 1958.401892672171 1707.440012833444 0 2457.885550878158 1243.617519590274 0 2804.845631006595 662.8030923134188 0 203.6197571003516 1206.64121738726 0 251.1650150927691 1416.11130678425 0 454.7847721931207 1188.520136390704 0 655.3664801451819 1156.330103805728 0 746.3817661819779 1343.184974233671 0 899.4182161416218 1101.524852251706 0 1093.607058253428 1044.792232866726 0 1219.911363891523 1195.078759489935 0 1323.084919966533 951.4912696770125 0 1504.311402466086 864.0173307757481 0 1653.3403444118 966.398016573508 0 1708.262521273259 728.6375510490348 0 1859.368779019911 598.3715045359147 0 2015.818482749972 647.6378157798329 0 2017.89579855091 414.9910834689529 0 2087.172751140485 232.1286973564355 0 2242.255746729345 232.1286973564355 0 251.1650150927691 1634.313081619732 0 298.947999390991 1844.830521447494 0 550.11301448376 1608.507665615454 0 794.1647504801998 1553.702414061432 0 885.6351129782569 1741.491558831337 0 1081.903864676475 1476.168867449554 0 1311.38172638958 1382.86790425984 0 1438.317553600994 1533.905863510036 0 1576.325052816042 1252.815755550417 0 1780.276171623215 1117.435975823704 0 1930.05025833604 1220.328565046745 0 2007.065549931798 933.9108260698357 0 2165.592569462797 750.5304050028739 0 2322.824521778952 800.0430478009382 0 2331.577454597126 513.7700375109354 0 2399.4876990455 281.6413401544999 0 2555.346109688489 281.6413401544999 0 298.947999390991 2064.123305113729 0 346.9698986012472 2275.693332098752 0 645.9178979922381 2030.595132428238 0 933.6570121885131 1953.06158581636 0 1025.58472648096 2141.789676272769 0 1265.301941466979 1852.686102675867 0 1530.245267893441 1722.633953966445 0 1657.815774215798 1874.42710298286 0 1830.831386349814 1555.646863817029 0 2057.620764658397 1372.12171406316 0 2208.143721775165 1475.528766211859 0 2307.362593761391 1140.210467441575 0 2473.34747889572 903.450099949637 0 2631.365590942376 953.2103059518465 0 2646.827518959938 613.0428863112093 0 2713.364221735146 331.4015461567094 0 2870.001924400565 331.4015461567094 0 346.9698986012472 2496.082579706631 0 742.2018058929375 2454.793036548472 0 1073.846735171403 2354.41755340798 0 1449.617008592222 2231.08592405034 0 1750.203127048595 2064.098833900924 0 2086.610251480983 1859.992127600443 0 2336.352080583976 1628.080880978858 0 2609.161122723133 1347.541607003002 0 2782.641162787352 1057.134393364574 0 2963.65383354612 712.812099347507 0 3028.810126940091 381.4105531907976 0 $EndNodes $Elements 9 72 1 72 0 1 15 1 1 1 0 2 15 1 2 2 0 3 15 1 3 3 0 4 15 1 4 4 1 1 8 4 5 1 5 8 6 5 6 9 7 6 7 10 8 7 2 11 1 2 8 6 9 3 12 17 10 12 13 18 11 13 14 19 12 14 15 20 13 15 16 21 14 16 2 22 1 3 8 4 15 3 23 26 16 23 24 27 17 24 25 28 18 25 4 29 1 4 8 6 19 4 30 35 20 30 31 36 21 31 32 37 22 32 33 38 23 33 34 39 24 34 1 40 2 1 9 48 25 1 5 34 8 56 40 26 34 5 41 56 57 58 27 34 41 33 58 59 39 28 33 41 42 59 60 61 29 33 42 32 61 62 38 30 32 42 43 62 63 64 31 32 43 31 64 65 37 32 31 43 44 65 66 67 33 31 44 30 67 68 36 34 30 44 45 68 69 70 35 30 45 4 70 71 35 36 4 45 25 71 72 29 37 5 6 41 9 73 57 38 41 6 46 73 74 75 39 41 46 42 75 76 60 40 42 46 47 76 77 78 41 42 47 43 78 79 63 42 43 47 48 79 80 81 43 43 48 44 81 82 66 44 44 48 49 82 83 84 45 44 49 45 84 85 69 46 45 49 50 85 86 87 47 45 50 25 87 88 72 48 25 50 24 88 89 28 49 6 7 46 10 90 74 50 46 7 51 90 91 92 51 46 51 47 92 93 77 52 47 51 52 93 94 95 53 47 52 48 95 96 80 54 48 52 53 96 97 98 55 48 53 49 98 99 83 56 49 53 54 99 100 101 57 49 54 50 101 102 86 58 50 54 55 102 103 104 59 50 55 24 104 105 89 60 24 55 23 105 106 27 61 7 2 51 11 107 91 62 51 2 16 107 22 108 63 51 16 52 108 109 94 64 52 16 15 109 21 110 65 52 15 53 110 111 97 66 53 15 14 111 20 112 67 53 14 54 112 113 100 68 54 14 13 113 19 114 69 54 13 55 114 115 103 70 55 13 12 115 18 116 71 55 12 23 116 117 106 72 23 12 3 117 17 26 $EndElements feenox-1.1/tests/petsc_options.fee0000644000175000017500000000026514773607165014317 00000000000000PROBLEM mechanical PC gamg KSP gmres PETSC_OPTIONS -ksp_view PETSC_OPTIONS -mg_levels_pc_type ilu READ_MESH cube-hex.msh E = 1 nu = 0.3 BC left fixed BC right p=1 SOLVE_PROBLEM feenox-1.1/tests/single-arc1.msh0000644000175000017500000000046114773607165013561 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 1 1 2 "quarter" $EndPhysicalNames $Entities 3 1 0 0 1 0 0 0 0 2 1 0 0 0 3 0 1 0 0 1 5.551115123125783e-17 0 0 1 1 0 1 2 2 2 -3 $EndEntities $Nodes 3 2 1 2 0 2 0 1 1 1 0 0 0 3 0 1 2 0 1 0 1 1 0 0 $EndNodes $Elements 1 1 1 1 1 1 1 1 1 1 2 $EndElements feenox-1.1/tests/cylinder-traction-force.sh0000755000175000017500000000047114773607165016031 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical answer cylinder-force.fee "0.287" exitifwrong $? answer cylinder-traction.fee "0.287" exitifwrong $? feenox-1.1/tests/function_file.sh0000755000175000017500000000044714773607165014132 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer function_file1d.fee "6.5" exitifwrong $? answer function_file1d_columns.fee "6.5" exitifwrong $? feenox-1.1/tests/nafems-le11-alpha-of-T.fee0000644000175000017500000000040214773607165015316 00000000000000PROBLEM mechanical 3D READ_MESH nafems-le11-hex27.msh T(x,y,z) = sqrt(sqrt(x^2 + y^2) + z) BC xz symmetry BC yz symmetry BC xy w=0 BC HIH'I' w=0 E = 2.11e11 nu = 0.3 alpha(x,y,z) = 0.00023*T(x,y,z) SOLVE_PROBLEM PRINT %.1f sigmaz(1,0,0)/1e6 feenox-1.1/tests/ray-effect-half.geo0000644000175000017500000000072214773607165014374 00000000000000SetFactory("OpenCASCADE"); Rectangle(1) = {0, -1, 0, 1, 2, 0}; Rectangle(2) = {0, -2, 0, 2, 4, 0}; Coherence; n = 3; Transfinite Curve {1, 2, 4, 5} = 1+n; Transfinite Curve {3, 9, 8, 6} = 1+2*n; Transfinite Curve {7} = 1+4*n; Mesh.Algorithm = 8; Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 0; Physical Surface("src") = {1}; Physical Surface("bulk") = {2}; Physical Curve("mirror") = {5, 9, 1}; Physical Curve("vacuum") = {6, 7, 8}; feenox-1.1/tests/thermal-slab-uniform-nosource.fee0000644000175000017500000000015214773607165017304 00000000000000PROBLEM thermal 1D READ_MESH slab2.msh BC left T=0 BC right T=1 k = 1 SOLVE_PROBLEM PRINT T(0.5)-1/2 feenox-1.1/tests/la-p51-UAl-2-0-SL.geo0000644000175000017500000000043314773607165013724 00000000000000rc = 7.830630; n = 40; SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {rc, 0, 0}; Line(1) = {1, 2}; Physical Curve("fuel") = {1}; Physical Point("mirror") = {1}; Physical Point("vacuum") = {2}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = rc/n; Mesh.ElementOrder = 1; feenox-1.1/tests/pellet-nonlinear-transient-from-ss.fee0000644000175000017500000000161614773607165020270 00000000000000PROBLEM thermal 3D READ_MESH pellet.msh end_time = 3 # small time to run the test faster [seconds] # https://www.nuclear-power.com/nuclear-engineering/heat-transfer/thermal-conduction/thermal-conductivity/thermal-conductivity-of-uranium-dioxide/ # T is in Celsius, T' is in Kelvin VAR T' tau(T') = (T'+273.15)/1000 cond(T') = 100/(7.5408 + 17.692*tau(T') + 3.614*tau(T')^2) + 6400/(tau(T')^(5/2))*exp(-16.35/tau(T')) # k is in W/(m K) k(x,y,z) = cond(T(x,y,z)) # both of these should depend on temperature rho = 10980 # kg / m^3 cp = 300 # J / (kg K) # q is in W / m^3 = 300 W/cm * 100 cm/m / area r = 4e-3 q = 300 * 100 / (pi*r^2) FUNCTION T_ext(t) DATA { 0 420 1 420 10 600 30 600 } BC symmetry q=0 BC external T=T_ext(t) SOLVE_PROBLEM # PRINT t T(0,0,0) T(0.5*r,0,0) T(0.85*r,0,0) IF done PRINT %.0f T(0,0,0)-1119 ENDIF # WRITE_MESH pellet-nonlinear-transient-from-ss.msh T feenox-1.1/tests/parallelepiped.fee0000644000175000017500000000162314773607165014410 00000000000000# references: # - http://www.code-aster.org/V2/doc/default/fr/man_v/v7/v7.03.100.pdf # - https://www.seamplex.com/docs/SP-FI-17-BM-12F2-A.pdf PROBLEM mechanical 3D READ_MESH parallelepiped.msh T(x,y,z) = 40 - 2*x - 3*y - 4*z E(x,y,z) = 1000/(800-T(x,y,z)) nu = 0.3 BC O fixed BC B u=0 w=0 BC C u=0 # here "load" is a fantasy name BC load tension=1 GROUP left GROUP right SOLVE_PROBLEM # analytical solutions h = 10 A = 0.002 B = 0.003 C = 0.004 D = 0.76 # the "e" means exact ue(x,y,z) := A/2*(x^2 + nu*(y^2+z^2)) + B*x*y + C*x*z + D*x - nu*A*h/4*(y+z) ve(x,y,z) := -nu*(A*x*y + B/2*(y^2-z^2+x^2/nu) + C*y*z + D*y -A*h/4*x - C*h/4*z) we(x,y,z) := -nu*(A*x*z + B*y*z + C/2*(z^2-y^2+x^2/nu) + D*z + C*h/4*y - A*h/4*x) # compute the L-2 norm of the error in the displacement field INTEGRATE (u(x,y,z)-ue(x,y,z))^2+(v(x,y,z)-ve(x,y,z))^2+(w(x,y,z)-we(x,y,z))^2 RESULT num INTEGRATE 1 RESULT den PRINT num/den feenox-1.1/tests/nafems-le10.fee0000644000175000017500000000654214773607165013442 00000000000000--- title: NAFEMS LE10 benchmark ... PROBLEM mechanical 3D READ_MESH $0.msh BC upper p=1 BC DCD'C' v=0 BC ABA'B' u=0 BC BCB'C' u=0 v=0 BC midplane w=0 E = 210e3 nu = 0.3 SOLVE_PROBLEM # stress tensor at point D MATRIX stress ROWS 3 COLS 3 DATA \ sigmax(2000,0,300) tauxy(2000,0,300) tauzx(2000,0,300) \ tauxy(2000,0,300) sigmay(2000,0,300) tauyz(2000,0,300) \ tauzx(2000,0,300) tauyz(2000,0,300) sigmaz(2000,0,300) # total volume INTEGRATE 1 RESULT vol # average of displacement INTEGRATE u RESULT Iu INTEGRATE v RESULT Iv INTEGRATE w RESULT Iw # maximum displacement FIND_EXTREMA u(x,y,z)^2+v(x,y,z)^2+w(x,y,z)^2 X_MAX max_displ_x Y_MAX max_displ_y Z_MAX max_displ_z # average von Mises INTEGRATE sigma RESULT Is # min/max von Mises FIND_EXTREMA sigma MIN min_sigma X_MIN min_sigma_x Y_MIN min_sigma_y Z_MIN min_sigma_z \ MAX max_sigma X_MAX max_sigma_x Y_MAX max_sigma_y Z_MAX max_sigma_z # face DCD'C' area INTEGRATE 1 OVER DCD'C' RESULT area_dcdc # average of displacement over face DCD'C' INTEGRATE u OVER DCD'C' RESULT Iu_dcdc INTEGRATE v OVER DCD'C' RESULT Iv_dcdc INTEGRATE w OVER DCD'C' RESULT Iw_dcdc # min/max displacement of face DCD'C' FIND_EXTREMA u(x,y,z)^2+v(x,y,z)^2+w(x,y,z)^2 OVER DCD'C' \ X_MAX max_displ_x_dcdc Y_MAX max_displ_y_dcdc Z_MAX max_displ_z_dcdc \ X_MIN min_displ_x_dcdc Y_MIN min_displ_y_dcdc Z_MIN min_displ_z_dcdc # average von Mises on face DCD'C' INTEGRATE sigma OVER DCD'C' RESULT Is_dcdc # min/max von Mises FIND_EXTREMA sigma MIN min_sigma_dcdc X_MIN min_sigma_x_dcdc Y_MIN min_sigma_y_dcdc Z_MIN min_sigma_z_dcdc \ MAX max_sigma_dcdc X_MAX max_sigma_x_dcdc Y_MAX max_sigma_y_dcdc Z_MAX max_sigma_z_dcdc OVER DCD'C' # output PRINT "stress tensor at D" PRINT %+.2f stress PRINT PRINT "von Mises at D" PRINT %.2f sigma(2000,0,300) PRINT PRINT "average displacement on bulk" PRINT %+.4f Iu/vol Iv/vol Iw/vol PRINT PRINT "maximum displacement on bulk" # the abs() is there to avoid differences between +0.0000 and -0.0000 PRINT %+.4f abs(u(max_displ_x,max_displ_y,max_displ_z)) v(max_displ_x,max_displ_y,max_displ_z) w(max_displ_x,max_displ_y,max_displ_z) PRINT PRINT "location of maximum displacement on bulk" PRINT %+.2f max_displ_x max_displ_y max_displ_z PRINT PRINT "min/max/average von Mises on bulk" PRINT %+.2f min_sigma max_sigma Is/vol PRINT PRINT "location of min/max von Mises on bulk" PRINT %+.2f min_sigma_x min_sigma_y min_sigma_z PRINT %+.2f max_sigma_x max_sigma_y max_sigma_z PRINT PRINT "average displacement on DCD'C'" # the second component gives +0.0000 sometimes and -0.0000 some other times PRINT %+.4f Iu_dcdc/area_dcdc abs(Iv_dcdc/area_dcdc) Iw_dcdc/area_dcdc PRINT PRINT "maximum displacement on DCD'C'" PRINT %+.4f u(max_displ_x_dcdc,max_displ_y_dcdc,max_displ_z_dcdc) abs(v(max_displ_x_dcdc,max_displ_y_dcdc,max_displ_z_dcdc)) w(max_displ_x_dcdc,max_displ_y_dcdc,max_displ_z_dcdc) PRINT PRINT "location of maximum displacement on DCD'C'" PRINT %+.2f max_displ_x_dcdc max_displ_y_dcdc max_displ_z_dcdc PRINT PRINT "min/max/average von Mises on DCD'C'" PRINT %+.2f min_sigma_dcdc max_sigma_dcdc Is_dcdc/area_dcdc PRINT PRINT "location of min/max von Mises on DCD'C'" PRINT %+.2f min_sigma_x_dcdc min_sigma_y_dcdc min_sigma_z_dcdc PRINT %+.2f max_sigma_x_dcdc max_sigma_y_dcdc max_sigma_z_dcdc feenox-1.1/tests/la-p06-PUb-1-0-SL.fee0000644000175000017500000000056214773607165013720 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 2 PROBLEM neutron_sn 1D GROUPS 1 SN 8 READ_MESH $0.msh INCLUDE Pu-239b.fee BC mirror mirror BC vacuum vacuum sn_alpha = 0.1 SOLVE_PROBLEM rc = 2.256751 PRINT %.2f keff phi1(0.25*rc)/phi1(0) phi1(0.50*rc)/phi1(0) phi1(0.75*rc)/phi1(0) phi1(1.00*rc)/phi1(0) SEP " " feenox-1.1/tests/arguments.sh0000755000175000017500000000114714773607165013311 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer arguments_self.fee "arguments_self" exitifwrong $? answer2 arguments_quoted.fee hello world! "hello hello world!" exitifwrong $? answer1 arguments_bracketed.fee 2 "121212" exitifwrong $? answer default_argument_value.fee "hello world!" exitifwrong $? answer1 default_argument_value.fee good_morning "good_morning world!" exitifwrong $? answer2 default_argument_value.fee hola mundo! "hola mundo!" exitifwrong $? feenox-1.1/tests/t21.geo0000644000175000017500000000652514773607165012054 00000000000000// ----------------------------------------------------------------------------- // // Gmsh GEO tutorial 21 // // Mesh partitioning // // ----------------------------------------------------------------------------- // Gmsh can partition meshes using different algorithms, e.g. the graph // partitioner Metis or the `SimplePartition' plugin. For all the partitioning // algorithms, the relationship between mesh elements and mesh partitions is // encoded through the creation of new (discrete) elementary entities, called // "partition entities". // // Partition entities behave exactly like other discrete elementary entities; // the only difference is that they keep track of both a mesh partition index // and their parent elementary entity. // // The major advantage of this approach is that it allows to maintain a full // boundary representation of the partition entities, which Gmsh creates // automatically if `Mesh.PartitionCreateTopology' is set. // Let us start by creating a simple geometry with two adjacent squares sharing // an edge: SetFactory("OpenCASCADE"); Rectangle(1) = {0, 0, 0, 1, 1}; Rectangle(2) = {1, 0, 0, 1, 1}; BooleanFragments{ Surface{1}; Delete; }{ Surface{2}; Delete; } //MeshSize {:} = 0.05; MeshSize {:} = 0.25; // We create one physical group for each square, and we mesh the resulting // geometry: Physical Surface("Left", 100) = 1; Physical Surface("Right", 200) = 2; Mesh 2; // // We now define several constants to fine-tune how the mesh will be partitioned // DefineConstant[ // partitioner = {0, Choices{0="Metis", 1="SimplePartition"}, // Name "Parameters/0Mesh partitioner"} // N = {3, Min 1, Max 256, Step 1, // Name "Parameters/1Number of partitions"} // topology = {1, Choices{0, 1}, // Name "Parameters/2Create partition topology (BRep)?"} // ghosts = {0, Choices{0, 1}, // Name "Parameters/3Create ghost cells?"} // physicals = {0, Choices{0, 1}, // Name "Parameters/3Create new physical groups?"} // write = {1, Choices {0, 1}, // Name "Parameters/3Write file to disk?"} // split = {0, Choices {0, 1}, // Name "Parameters/4Write one file per partition?"} // ]; // Should we create the boundary representation of the partition entities? Mesh.PartitionCreateTopology = 0; // Should we create ghost cells? Mesh.PartitionCreateGhostCells = 0; // Should we automatically create new physical groups on the partition entities? Mesh.PartitionCreatePhysicals = 0; // Should we keep backward compatibility with pre-Gmsh 4, e.g. to save the mesh // in MSH2 format? Mesh.PartitionOldStyleMsh2 = 0; // Should we save one mesh file per partition? Mesh.PartitionSplitMeshFiles = 0; N = 6; partitioner = 0; If (partitioner == 0) // Use Metis to create N partitions PartitionMesh N; // Several options can be set to control Metis: `Mesh.MetisAlgorithm' (1: // Recursive, 2: K-way), `Mesh.MetisObjective' (1: min. edge-cut, 2: // min. communication volume), `Mesh.PartitionTriWeight' (weight of // triangles), `Mesh.PartitionQuadWeight' (weight of quads), ... Else // Use the `SimplePartition' plugin to create chessboard-like partitions Plugin(SimplePartition).NumSlicesX = N; Plugin(SimplePartition).NumSlicesY = 1; Plugin(SimplePartition).NumSlicesZ = 1; Plugin(SimplePartition).Run; EndIf // Save mesh file (or files, if `Mesh.PartitionSplitMeshFiles' is set): // If(write) Save "t21.msh"; // EndIf feenox-1.1/tests/bunny-modal-fixed.fee0000644000175000017500000000001614773607165014742 00000000000000BC base fixed feenox-1.1/tests/nafems-le11-tet10.geo0000644000175000017500000000024614773607165014404 00000000000000Mesh.SecondOrderLinear = 0; // curved Mesh.ElementOrder = 2; // 2nd order Mesh.RecombineAll = 0; // tetrahedra Merge "nafems-le11.geo"; feenox-1.1/tests/nafems-t2-1d.fee0000644000175000017500000000106714773607165013525 00000000000000# NAFEMS-T2 benchmark: 1d steady-state heat conduction with radiation PROBLEM thermal 1d READ_MESH slab-1d-0.1m.msh l = 0.1 # slab length in meters (comes from the mesh) k = 55.6 # W/(m K) # sigma = 5.67e-8 # W m^2 / K^4 as in the problem sigma = 5.670374419e-8 # W m^2 / K^4 as in wikipedia e = 0.98 # non-dimensional T0 = 1000 # K Tinf = 300 # K BC left T=T0 BC right q=sigma*e*(Tinf^4-T(x)^4) SOLVE_PROBLEM VAR T' T_analytical = root((T'-T0)*k/l + sigma*e*(T'^4-Tinf^4), T', 0, 2000, 1e-12) PRINT T(0.1)-T_analytical feenox-1.1/tests/pellet.geo0000644000175000017500000000057214773607165012727 00000000000000// SetFactory("OpenCASCADE"); r = 4e-3; l = 5e-3; Cylinder(1) = {0, 0, 0, 0, 0, l, r, Pi/6}; Physical Surface("symmetry") = {2, 3, 4, 5}; Physical Surface("external") = {1}; Physical Volume("bulk") = {1}; Mesh.ElementOrder = 2; // Mesh.OptimizeNetgen = 1; Mesh.HighOrderOptimize = 1; Mesh.SecondOrderLinear = 0; Mesh.MeshSizeMin = 0.5*(r+l)/10; Mesh.MeshSizeMax = 0.5*(r+l)/5; feenox-1.1/tests/bunny-sn.fee0000644000175000017500000000037214773607165013176 00000000000000PROBLEM neutron_sn 3D SN 4 READ_MESH bunny.msh nu1 = 2.4 Sigma_f1 = 0.08 nuSigma_f1 = nu1*Sigma_f1 Sigma_s1.1 = 0.22 Sigma_t1 = 0.4 BC base vacuum BC rest vacuum # test icntl mumps_icntl_14 = 60 SOLVE_PROBLEM PRINT keff-1.013 WRITE_RESULTS feenox-1.1/tests/function_algebraic.sh0000755000175000017500000000043614773607165015122 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer function_algebraic.fee "4 37" exitifwrong $? answerdiff fibo_formula.fee exitifwrong $? feenox-1.1/tests/barra.sh0000755000175000017500000000046714773607165012377 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal answerzero Barra1D_a_Estac.fee 5e-3 exitifwrong $? answerzero Barra1D_b_Trans.fee 1e-3 exitifwrong $? feenox-1.1/tests/la-p51-UAl-2-0-SL.fee0000644000175000017500000000036514773607165013715 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 51 PROBLEM neutron_sn 1D GROUPS 2 SN 6 READ_MESH $0.msh INCLUDE U-Al.fee BC mirror mirror BC vacuum vacuum SOLVE_PROBLEM PRINT keff-0.972953 feenox-1.1/tests/pipe.sh0000755000175000017500000000066714773607165012247 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkmumps checkgmsh # run fem parametric cases for shape in ust10 uct10 sst10 sct10 ssh20 sch20 ssh27 sch27; do gmsh -v 0 -3 ${dir}/pipe-${shape}-2-2.geo || exit $? answerzero1 pipe.fee ${shape} 1e-2 exitifwrong $? done feenox-1.1/tests/bc-groups.sh0000755000175000017500000000053214773607165013202 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkgmsh gmsh -v 0 -3 ${dir}/cube.geo || exit $? for i in $(seq 1 4); do answerdiff bc-groups${i}.fee --ast exitifwrong $? done feenox-1.1/tests/thermal-2d.sh0000755000175000017500000000232414773607165013241 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi # skip in big-endian architectures arch=$(uname -m) if [ "x${arch}" = "xppc64" ] || [ "x${arch}" = "xs390x" ] ; then exit 77 fi checkpde thermal answer thermal-two-squares-material-explicit-uniform.fee "0.750" exitifwrong $? answer thermal-two-squares-material-implicit-uniform.fee "0.750" exitifwrong $? answer thermal-two-squares-material-explicit-space.fee "0.718" exitifwrong $? answer thermal-two-squares-material-implicit-space.fee "0.718" exitifwrong $? answer thermal-two-squares-material-explicit-temperature.fee "0.600" exitifwrong $? answer thermal-two-squares-material-implicit-temperature.fee "0.600" exitifwrong $? answer thermal-two-squares-material-implicit-temperature.fee "0.600" exitifwrong $? answerzero thermal-square.fee checkmumps i=thermal-two-squares-material-explicit-uniform echo -n "${i} (MUMPS)... " answer=$(${feenox} ${dir}/${i}.fee --mumps --ksp_view | grep INFO | wc -l) if [ ${answer} -gt 0 ]; then echo "ok" level=0 else echo "wrong, MUMPS was not used" level=1 fi exitifwrong ${level} feenox-1.1/tests/parallelepiped.geo0000644000175000017500000000161114773607165014420 00000000000000SetFactory("OpenCASCADE"); l = 20; h = 10; Box(1) = {0, -h/2, -h/2, l, h, h}; O = newp; Point(O) = (0, 0, 0); A = newp; Point(A) = (l, 0, 0); B = newp; Point(B) = (0, h/2, 0); C = newp; Point(C) = (0, 0, h/2); BooleanFragments{ Volume{1}; Delete; }{ Point{A}; Delete; } BooleanFragments{ Volume{1}; Delete; }{ Point{O}; Delete; } BooleanFragments{ Volume{1}; Delete; }{ Point{B}; Delete; } BooleanFragments{ Volume{1}; Delete; }{ Point{C}; Delete; } Physical Point("O",1) = {O}; Physical Point("A",2) = {A}; Physical Point("B",3) = {17}; Physical Point("C",4) = {12}; Physical Surface("left", 5) = {1}; Physical Surface("right", 6) = {2}; Physical Surface("front", 7) = {3}; Physical Surface("back", 8) = {4}; Physical Surface("bottom", 9) = {5}; Physical Surface("top", 10) = {6}; Physical Volume("bulk", 11) = {1}; Mesh.MeshSizeMin = h/5; Mesh.MeshSizeMax = h/5; Mesh.HighOrderOptimize = 1; feenox-1.1/tests/beam-cantilever-modal-free-free.fee0000644000175000017500000000017714773607165017416 00000000000000PROBLEM modal 3D MODES 6 READ_MESH beam-cantilever-$1.msh nu = 0.28 rho = 7800 E = 2.1e11 SOLVE_PROBLEM PRINT %.1f SEP " " f feenox-1.1/tests/encased_rod.geo0000644000175000017500000000072114773607165013704 00000000000000SetFactory("OpenCASCADE"); Box(1) = {0,0,0, 0.5, 0.01, 0.04}; Box(2) = {0,0.01,0, 0.5, 0.02, 0.04}; Box(3) = {0,0.03,0, 0.5, 0.01, 0.04}; Coherence; Physical Volume("ss", 1) = {1, 3}; Physical Volume("cu", 2) = {2}; Physical Surface("left", 3) = {12, 7, 1}; Physical Surface("right", 4) = {13, 8, 2}; Physical Surface("top", 5) = {14}; Physical Surface("bottom", 6) = {3}; Mesh.MeshSizeMax = 0.01; Mesh.Optimize = 1; Mesh.Algorithm = 6; Mesh.ElementOrder = 2; feenox-1.1/tests/annulus-modal.ref0000644000175000017500000000012414773607165014214 00000000000000317 319 320 325 324 327 325 324 327 359 356 362 359 356 362 452 446 455 452 446 455 feenox-1.1/tests/beam-cantilever-hex27.msh0000644000175000017500000001601614773607165015450 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 2 1 "left" 2 2 "right" 3 3 "bulk" $EndPhysicalNames $Entities 8 12 6 1 1 0 -0.025 0.01 0 2 0 -0.025 -0.01 0 3 0 0.025 0.01 0 4 0 0.025 -0.01 0 5 0.5 -0.025 0.01 0 6 0.5 -0.025 -0.01 0 7 0.5 0.025 0.01 0 8 0.5 0.025 -0.01 0 1 -1e-07 -0.0250001 -0.0100001 1e-07 -0.0249999 0.0100001 0 2 2 -1 2 -1e-07 -0.0250001 0.009999900000000001 1e-07 0.0250001 0.0100001 0 2 1 -3 3 -1e-07 0.0249999 -0.0100001 1e-07 0.0250001 0.0100001 0 2 4 -3 4 -1e-07 -0.0250001 -0.0100001 1e-07 0.0250001 -0.009999900000000001 0 2 2 -4 5 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 0.0100001 0 2 6 -5 6 0.4999999 -0.0250001 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 2 5 -7 7 0.4999999 0.0249999 -0.0100001 0.5000000999999999 0.0250001 0.0100001 0 2 8 -7 8 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 2 6 -8 9 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 -0.009999900000000001 0 2 2 -6 10 -9.999999997511999e-08 -0.0250001 0.009999900000000001 0.5000000999999999 -0.0249999 0.0100001 0 2 1 -5 11 -9.999999997511999e-08 0.0249999 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 2 4 -8 12 -9.999999997511999e-08 0.0249999 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 2 3 -7 1 -1e-07 -0.0250001 -0.0100001 1e-07 0.0250001 0.0100001 1 1 4 -1 4 3 -2 2 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 0.0100001 1 2 4 -5 8 7 -6 3 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 0.0100001 0 4 -9 1 10 -5 4 -9.999999997511999e-08 0.0249999 -0.0100001 0.5000000999999999 0.0250001 0.0100001 0 4 -11 3 12 -7 5 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 4 -4 9 8 -11 6 -9.999999997511999e-08 -0.0250001 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 4 -2 10 6 -12 1 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 0.0100001 1 3 6 -1 2 -3 4 -5 6 $EndEntities $Nodes 27 135 1 135 0 1 0 1 1 0 -0.025 0.01 0 2 0 1 2 0 -0.025 -0.01 0 3 0 1 3 0 0.025 0.01 0 4 0 1 4 0 0.025 -0.01 0 5 0 1 5 0.5 -0.025 0.01 0 6 0 1 6 0.5 -0.025 -0.01 0 7 0 1 7 0.5 0.025 0.01 0 8 0 1 8 0.5 0.025 -0.01 1 1 0 1 9 0 -0.025 0 1 2 0 3 10 11 12 0 1.734723475976807e-17 0.01 0 -0.01249999999999999 0.01 0 0.01250000000000001 0.01 1 3 0 1 13 0 0.025 0 1 4 0 3 14 15 16 0 1.734723475976807e-17 -0.01 0 -0.01249999999999999 -0.01 0 0.01250000000000001 -0.01 1 5 0 1 17 0.5 -0.025 0 1 6 0 3 18 19 20 0.5 1.734723475976807e-17 0.01 0.5 -0.01249999999999999 0.01 0.5 0.01250000000000001 0.01 1 7 0 1 21 0.5 0.025 0 1 8 0 3 22 23 24 0.5 1.734723475976807e-17 -0.01 0.5 -0.01249999999999999 -0.01 0.5 0.01250000000000001 -0.01 1 9 0 7 25 26 27 28 29 30 31 0.125 -0.025 -0.01 0.25 -0.025 -0.01 0.375 -0.025 -0.01 0.06249999999999999 -0.025 -0.01 0.1875 -0.025 -0.01 0.3125 -0.025 -0.01 0.4375 -0.025 -0.01 1 10 0 7 32 33 34 35 36 37 38 0.125 -0.025 0.01 0.25 -0.025 0.01 0.375 -0.025 0.01 0.06249999999999999 -0.025 0.01 0.1875 -0.025 0.01 0.3125 -0.025 0.01 0.4375 -0.025 0.01 1 11 0 7 39 40 41 42 43 44 45 0.125 0.025 -0.01 0.25 0.025 -0.01 0.375 0.025 -0.01 0.06249999999999999 0.025 -0.01 0.1875 0.025 -0.01 0.3125 0.025 -0.01 0.4375 0.025 -0.01 1 12 0 7 46 47 48 49 50 51 52 0.125 0.025 0.01 0.25 0.025 0.01 0.375 0.025 0.01 0.06249999999999999 0.025 0.01 0.1875 0.025 0.01 0.3125 0.025 0.01 0.4375 0.025 0.01 2 1 0 3 53 54 55 0 1.734723475976807e-17 0 0 -0.01249999999999999 0 0 0.01250000000000002 0 2 2 0 3 56 57 58 0.5 1.734723475976807e-17 0 0.5 -0.01249999999999999 0 0.5 0.01250000000000001 0 2 3 0 7 59 60 61 62 63 64 65 0.125 -0.025 0 0.0625 -0.025 0 0.25 -0.025 0 0.1875 -0.025 0 0.375 -0.025 0 0.3125 -0.025 0 0.4375 -0.025 0 2 4 0 7 66 67 68 69 70 71 72 0.125 0.025 0 0.0625 0.025 0 0.25 0.025 0 0.1875 0.025 0 0.375 0.025 0 0.3125 0.025 0 0.4375 0.025 0 2 5 0 21 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 0.125 1.734723475976807e-17 -0.01 0.25 1.734723475976807e-17 -0.01 0.375 1.040834085586084e-17 -0.01 0.0625 1.734723475976807e-17 -0.01 0.125 -0.01249999999999999 -0.01 0.0625 -0.01249999999999999 -0.01 0.1875 1.734723475976807e-17 -0.01 0.25 -0.01249999999999999 -0.01 0.1875 -0.01249999999999999 -0.01 0.3125 1.387778780781446e-17 -0.01 0.375 -0.0125 -0.01 0.3125 -0.01249999999999999 -0.01 0.4375 1.387778780781446e-17 -0.01 0.4375 -0.01249999999999999 -0.01 0.125 0.01250000000000001 -0.01 0.0625 0.01250000000000001 -0.01 0.25 0.01250000000000001 -0.01 0.1875 0.01250000000000001 -0.01 0.375 0.0125 -0.01 0.3125 0.0125 -0.01 0.4375 0.01250000000000001 -0.01 2 6 0 21 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 0.125 1.734723475976807e-17 0.01 0.25 1.734723475976807e-17 0.01 0.375 1.040834085586084e-17 0.01 0.125 -0.01249999999999999 0.01 0.0625 1.734723475976807e-17 0.01 0.0625 -0.01249999999999999 0.01 0.25 -0.01249999999999999 0.01 0.1875 1.734723475976807e-17 0.01 0.1875 -0.01249999999999999 0.01 0.375 -0.0125 0.01 0.3125 1.387778780781446e-17 0.01 0.3125 -0.01249999999999999 0.01 0.4375 1.387778780781446e-17 0.01 0.4375 -0.01249999999999999 0.01 0.125 0.01250000000000001 0.01 0.0625 0.01250000000000002 0.01 0.25 0.01250000000000001 0.01 0.1875 0.01250000000000002 0.01 0.375 0.0125 0.01 0.3125 0.01250000000000001 0.01 0.4375 0.01250000000000001 0.01 3 1 0 21 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 0.125 1.734723475976807e-17 0 0.0625 1.734723475976807e-17 0 0.125 -0.01249999999999999 0 0.0625 -0.01249999999999999 8.673617379884035e-19 0.25 1.734723475976807e-17 0 0.1875 1.734723475976807e-17 0 0.25 -0.01249999999999999 0 0.1875 -0.01249999999999999 8.673617379884035e-19 0.375 1.040834085586084e-17 0 0.3125 1.387778780781446e-17 0 0.375 -0.0125 0 0.3125 -0.01249999999999999 8.673617379884035e-19 0.4375 1.387778780781446e-17 0 0.4375 -0.01249999999999999 8.673617379884035e-19 0.125 0.01250000000000001 0 0.0625 0.01250000000000002 8.673617379884035e-19 0.25 0.01250000000000001 0 0.1875 0.01250000000000002 8.673617379884035e-19 0.375 0.0125 0 0.3125 0.01250000000000001 8.673617379884035e-19 0.4375 0.01250000000000001 8.673617379884035e-19 $EndNodes $Elements 3 12 1 12 2 1 10 2 1 2 1 10 14 9 11 53 15 54 2 14 10 3 4 53 12 13 16 55 2 2 10 2 3 6 22 18 5 23 56 19 17 57 4 22 8 7 18 24 21 20 56 58 3 1 12 8 5 10 1 2 14 94 32 25 73 11 53 98 9 35 15 28 76 97 115 59 77 54 99 116 60 78 117 118 6 94 32 25 73 95 33 26 74 97 115 101 59 36 77 29 79 100 119 61 80 117 102 120 62 81 121 122 7 95 33 26 74 96 34 27 75 100 119 104 61 37 80 30 82 103 123 63 83 121 105 124 64 84 125 126 8 96 34 27 75 18 5 6 22 103 123 106 63 38 83 31 85 19 56 17 23 125 107 127 65 86 57 128 9 3 10 14 4 46 94 73 39 12 13 49 53 98 16 76 42 108 66 115 87 55 109 67 116 88 129 130 10 46 94 73 39 47 95 74 40 108 66 50 115 101 87 79 43 110 68 119 89 129 111 69 120 90 131 132 11 47 95 74 40 48 96 75 41 110 68 51 119 104 89 82 44 112 70 123 91 131 113 71 124 92 133 134 12 48 96 75 41 7 18 22 8 112 70 52 123 106 91 85 45 20 21 56 24 133 114 72 127 93 58 135 $EndElements feenox-1.1/tests/geometric_series.fee0000644000175000017500000000011014773607165014743 00000000000000static_steps = 100 f_init = 1 f = 0.5*f s = s+f IF done PRINT s ENDIF feenox-1.1/tests/nafems-le1.sh0000755000175000017500000000163714773607165013240 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical has_gmsh=$(which gmsh) # # for i in tri3 tri6s tri6c quad4 quad8s quad8c quad9s quad9c; do # for i in $(seq 1 8); do # if [ ! -e nafems-le1-${i}.msh ]; then # if [ ! -z "${has_gmsh}" ]; then # gmsh -v 0 -2 -setnumber Mesh.NodeType ${i} nafems-le1.geo -o nafems-le1-${i}.msh || exit $? # else # exit 77 # fi # fi # done answer1 nafems-le1.fee 1 46.8 exitifwrong $? answer1 nafems-le1.fee 2 78.6 exitifwrong $? answer1 nafems-le1.fee 3 83.5 exitifwrong $? answer1 nafems-le1.fee 4 81.3 exitifwrong $? answer1 nafems-le1.fee 5 99.6 exitifwrong $? answer1 nafems-le1.fee 6 86.9 exitifwrong $? answer1 nafems-le1.fee 7 107.7 exitifwrong $? answer1 nafems-le1.fee 8 92.1 exitifwrong $? feenox-1.1/tests/la-p49-U-2-0-SP.geo0000644000175000017500000000052514773607165013464 00000000000000rc = 7.909444; n = 3; SetFactory("OpenCASCADE"); Sphere(1) = {0, 0, 0, rc, 0, Pi/2, Pi/2}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = rc/n; Mesh.ElementOrder = 1; Mesh.RecombineAll = 0; Mesh.Optimize = 1; //Mesh.OptimizeNetgen = 1; Physical Volume("fuel") = {1}; Physical Surface("mirror") = {4, 3, 2}; Physical Surface("vacuum") = {1}; feenox-1.1/tests/vector.sh0000755000175000017500000000050114773607165012577 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer vector.fee "196" exitifwrong $? answer vector_init.fee "1 2 3 4" exitifwrong $? answerdiff fibo_vector.fee exitifwrong $? feenox-1.1/tests/pipe-ust10-2-2.geo0000644000175000017500000000136614773607165013651 00000000000000// unstructured straight tet10 Mesh.RecombineAll = 0; Mesh.SecondOrderLinear = 1; SetFactory("OpenCASCADE"); l = 2*(( 323.8/2 )-( ( 323.8/2 )-21.5 )); Cylinder(1) = {-l/2, 0, 0, +l, 0, 0, ( 323.8/2 )}; Cylinder(2) = {-l/2, 0, 0, +l, 0, 0, ( ( 323.8/2 )-21.5 )}; BooleanDifference(3) = {Volume{1};Delete;}{Volume{2};Delete;}; Physical Volume("pipe") = {3}; s() = Boundary{ Volume{3}; }; Physical Surface("front") = {s(1)}; Physical Surface("back") = {s(2)}; Physical Surface("pressure") = {s(3)}; // Mesh.Algorithm = 6; // Mesh.Algorithm3D = 1; // Mesh.Optimize = 1; // Mesh.OptimizeNetgen = 1; // Mesh.HighOrderOptimize = 2; Mesh.CharacteristicLengthMax = (( 323.8/2 )-( ( 323.8/2 )-21.5 ))/2; Mesh.ElementOrder = 2; feenox-1.1/tests/beam-modal.sh0000755000175000017500000000304014773607165013274 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkslepc checkpde modal # the meshes are in the git repository, but just in case this is how they can be re-generated # for i in beam-cantilever-*.geo; do gmsh -v 0 -3 $i; done answer1 beam-cantilever-modal.fee tet4 "249.7 341.2 1506.1 1962.4 2639.7 4050.7" exitifwrong $? answer1 beam-cantilever-modal.fee tet10 "69.8 170.6 466.4 1060.6 1154.5 1487.1" exitifwrong $? answer1 beam-cantilever-modal.fee hex8 "147.9 213.7 937.0 1122.0 1307.2 2623.5" exitifwrong $? answer1 beam-cantilever-modal.fee hex20 "69.3 169.6 456.3 1040.7 1101.3 1411.5" exitifwrong $? answer1 beam-cantilever-modal.fee hex27 "68.5 169.2 450.2 1037.6 1098.9 1384.2" exitifwrong $? # answer1 beam-cantilever-modal-free-free.fee tet4 "1570.3 2248.0 5220.3 5395.0 6244.1 9072.3" # exitifwrong $? # answer1 beam-cantilever-modal-free-free.fee tet10 "419.5 1075.9 1265.7 2243.0 2977.0 3151.3" # exitifwrong $? # TODO: this one has a nan # answer1 beam-cantilever-modal-free-free.fee hex8 "1001.3 1805.9 2190.3 2834.6 -nan 4850.2" # exitifwrong $? # TODO: this one has a complex eigenvalue # answer1 beam-cantilever-modal-free-free.fee hex20 "69.3 169.6 456.3 1040.7 1101.3 1411.5" # exitifwrong $? # answer1 beam-cantilever-modal-free-free.fee hex27 "373.9 796.8 1076.3 1806.1 2139.9 2458.0" # exitifwrong $? checkgmsh gmsh -v 0 -3 ${dir}/PF.geo || exit $? answer modal-solidworks.fee "0.507" feenox-1.1/tests/Pu-239b.fee0000644000175000017500000000065414773607165012471 00000000000000# material PU-239 (a) nu1_fuel = 2.84 Sigma_f1_fuel = 0.081600 nuSigma_f1_fuel = nu1_fuel*Sigma_f1_fuel Sigma_s1.1_fuel = 0.225216 Sigma_t1_fuel = 0.32640 # these ones are not used by the problem but to check Sigma_c1_fuel = 0.019584 c_fuel = 1.4 IF equal(Sigma_t1_fuel,Sigma_c1_fuel+Sigma_f1_fuel+Sigma_s1.1_fuel)=0|equal(c_fuel,(Sigma_s1.1_fuel+nuSigma_f1_fuel)/Sigma_t1_fuel)=0 PRINT "XS mismatch in $0" ABORT ENDIF feenox-1.1/tests/spinning-disk-parallel-plane-quarter_unstruct.geo0000644000175000017500000000057014773607165022534 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Point(1) = {0,0,0}; Point(2) = {R,0,0}; Point(3) = {0,R,0}; Circle(1) = {2, 1, 3}; Line(2) = {3, 1}; Line(3) = {1, 2}; Curve Loop(1) = {1, 2, 3}; Plane Surface(1) = {1}; Physical Surface("bulk") = {1}; Physical Curve("symmetry1") = {3}; Physical Curve("symmetry2") = {2}; feenox-1.1/tests/cube-cog.fee0000644000175000017500000000016514773607165013111 00000000000000READ_MESH cube.msh PHYSICAL_GROUP bulk DIM 3 PRINT sqrt((bulk_cog[1]-0.5)^2+(bulk_cog[2]-0.5)^2+(bulk_cog[3]-0.5)^2) feenox-1.1/tests/hello_mpi.sh0000755000175000017500000000111114773607165013243 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi # skip in problematic architectures arch=$(uname -m) if [ "x${arch}" = "xppc64" ] || [ "x${arch}" = "xs390x" ] ; then exit 77 fi checkpetsc checkmpirun for n in 1 2 3 4; do echo -n "hello_mpi with ${n} ranks ... " if [ $(mpirun -n ${n} --map-by :OVERSUBSCRIBE ${feenox} ${dir}/hello_mpi.fee | wc -l) -ne ${n} ]; then echo "failed" exit 1 else echo "ok" fi done exit 0 feenox-1.1/tests/expressions.sh0000755000175000017500000000074414773607165013670 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answerdiff expressions_variables.fee exitifwrong $? answer expressions_functions.fee "1.5" exitifwrong $? answerdiff expressions_cumbersome.fee exitifwrong $? answerzero expressions_sum.fee exitifwrong $? answerzero expressions_seven.fee exitifwrong $? answerdiff steps.fee exitifwrong $? feenox-1.1/tests/rectangular_plate_with_hole.fee0000644000175000017500000000045214773607165017162 00000000000000# problem taken from Ansys Workbench Verification manual (case VMMECH002) PROBLEM mechanical 3D READ_MESH $0.msh INTEGRATION full E = 1000 nu = 0 BC left fixed BC right p=-100 SOLVE_PROBLEM FIND_EXTREMA sigmax OVER hole MAX sigmax_max PRINT sigmax_max WRITE_MESH $0.vtu VECTOR u v w sigmax feenox-1.1/tests/la-p01-PUa-1-0-IN.fee0000644000175000017500000000034514773607165013701 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 1 PROBLEM neutron_sn 1D GROUPS 1 SN 4 READ_MESH la-IN.msh INCLUDE Pu-239a.fee BC mirror mirror SOLVE_PROBLEM PRINT keff-2.612903 feenox-1.1/tests/clean.sh0000755000175000017500000000015314773607165012362 00000000000000cat .gitignore | sed '/^#.*/ d' | sed '/^\s*$/ d' | grep -v Stanford_Bunny.stl | sed 's/^/rm -rf /' | bash feenox-1.1/tests/fit1d_sigma.fee0000644000175000017500000000015114773607165013607 00000000000000FUNCTION g(t) DATA { 0 1 1 1.5 2 1 3 0.5 4 1 } k = 0 f(t) = k FIT f TO g VIA k PRINT sigma_k feenox-1.1/tests/reed-ref.csv0000644000175000017500000000312114773607165013145 000000000000000. 1. 0.1 1. 0.2 1. 0.3 1. 0.4 1. 0.5 1. 0.6 1. 0.7 1. 0.8 1. 0.9 1. 1. 1. 1.1 1. 1.2 1. 1.3 1. 1.4 0.9999999999999987 1.5 0.9999999999997501 1.6 0.9999999999534683 1.7 0.9999999910239481 1.8 0.9999981037232815 1.9 0.9995056986497786 2. 0.5009855926316911 2.1 0.16364847397523014 2.2 0.07691136520009069 2.3 0.04242162918729977 2.4 0.029547221283421014 2.5 0.03002722269152762 2.6 0.04382787398845993 2.7 0.07851528151126427 2.8 0.15567373442583607 2.9 0.345405771364258 3. 1.105109108062394 3.1 1.105109108062394 3.2 1.105109108062394 3.3 1.105109108062394 3.4 1.105109108062394 3.5 1.105109108062394 3.6 1.105109108062394 3.7 1.105109108062394 3.8 1.105109108062394 3.9 1.105109108062394 4. 1.105109108062394 4.1 1.105109108062394 4.2 1.105109108062394 4.3 1.105109108062394 4.4 1.105109108062394 4.5 1.105109108062394 4.6 1.105109108062394 4.7 1.105109108062394 4.8 1.105109108062394 4.9 1.105109108062394 5. 1.1051091080623747 5.1 1.3958760425566705 5.2 1.6098310823415165 5.3 1.7645748004680675 5.4 1.8709857520604931 5.5 1.935378951893064 5.6 1.9607398388105324 5.7 1.9472925652839006 5.8 1.892521587722091 5.9 1.7906507604123965 6. 1.6314702421946823 6.1 1.460923699362178 6.2 1.3247313152566813 6.3 1.2119773026353915 6.4 1.1155832940044281 6.5 1.0309196164763925 6.6 0.9549222986989387 6.7 0.8855309499025017 6.8 0.8213301747935075 6.9 0.7613199757053026 7. 0.7047676723006187 7.1 0.6511109512791072 7.2 0.599892346560682 7.3 0.5507119977128717 7.4 0.5031893208168575 7.5 0.4569260489979401 7.6 0.4114633428690928 7.7 0.36622438433831783 7.8 0.32043077816417254 7.9 0.2729755416975612 8. 0.22222629387950255 feenox-1.1/tests/spinning-disk-parallel-solid-halfeighth_unstruct.geo0000644000175000017500000000044614773607165023171 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Cylinder(1) = {0, 0, 0, 0, 0, t/2, R, 2*Pi/8}; Physical Surface("symmetry1") = {3}; Physical Surface("symmetry2") = {4}; Physical Surface("symmetry3") = {5}; Physical Volume("bulk") = {1}; feenox-1.1/tests/fibo_iterative.ref0000644000175000017500000000024314773607165014432 000000000000001 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21 9 34 10 55 11 89 12 144 13 233 14 377 15 610 16 987 17 1597 18 2584 19 4181 20 6765 21 10946 22 17711 23 28657 24 46368 25 75025 feenox-1.1/tests/reflected.geo0000644000175000017500000000061114773607165013371 00000000000000a = 100; b = 40; c = 40; lc = 2; Mesh.MeshSizeMin = lc; Mesh.MeshSizeMax = lc; Point(1) = { -b, 0, 0}; Point(2) = { 0, 0, 0}; Point(3) = { a, 0, 0}; Point(4) = {a+c, 0, 0}; Line(1) = {1, 2}; Line(2) = {2, 3}; Line(3) = {3, 4}; Physical Line("left_refl") = {1}; Physical Line("fuel") = {2}; Physical Line("right_refl") = {3}; Physical Point("left") = {1}; Physical Point("right") = {4}; feenox-1.1/tests/pellet-linear.fee0000644000175000017500000000110014773607165014150 00000000000000# https://www.nuclear-power.com/nuclear-engineering/heat-transfer/heat-generation/temperature-profile-nuclear-fuel/ PROBLEM thermal 3D READ_MESH pellet.msh # pellet radius in m r = 4e-3 # uniform conductivity (i.e. linear problem) k = 2.8 # uniform volumetric heat power starting from linear power density = 300 W / cm # q is in W / m^3 = 300 W/cm * 100 cm/m / area q = 300 * 100 / (pi*r^2) # PRINT q BC symmetry adiabatic BC external T=420 # analytical solution T_ref = 420 + q/(4*k)*r^2 SOLVE_PROBLEM # PRINT T_max PRINT T_max-T_ref # WRITE_MESH pellet-linear.vtk T feenox-1.1/tests/slab-3d-0.1m.msh0000644000175000017500000001204114773607165013347 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 2 1 "left" 2 2 "right" 3 3 "bulk" $EndPhysicalNames $Entities 8 12 6 1 1 0 0 0.005 0 2 0 0 0 0 3 0 0.005 0.005 0 4 0 0.005 0 0 5 0.1 0 0.005 0 6 0.1 0 0 0 7 0.1 0.005 0.005 0 8 0.1 0.005 0 0 1 -1e-07 -1e-07 -9.99999999998398e-08 1e-07 1e-07 0.0050001 0 2 2 -1 2 -1e-07 -9.99999999998398e-08 0.0049999 1e-07 0.0050001 0.0050001 0 2 1 -3 3 -1e-07 0.0049999 -9.99999999998398e-08 1e-07 0.0050001 0.0050001 0 2 4 -3 4 -1e-07 -9.99999999998398e-08 -1e-07 1e-07 0.0050001 1e-07 0 2 2 -4 5 0.0999999 -1e-07 -9.99999999998398e-08 0.1000001 1e-07 0.0050001 0 2 6 -5 6 0.0999999 -9.99999999998398e-08 0.0049999 0.1000001 0.0050001 0.0050001 0 2 5 -7 7 0.0999999 0.0049999 -9.99999999998398e-08 0.1000001 0.0050001 0.0050001 0 2 8 -7 8 0.0999999 -9.99999999998398e-08 -1e-07 0.1000001 0.0050001 1e-07 0 2 6 -8 9 -1.000000000028756e-07 -1e-07 -1e-07 0.1000001 1e-07 1e-07 0 2 2 -6 10 -1.000000000028756e-07 -1e-07 0.0049999 0.1000001 1e-07 0.0050001 0 2 1 -5 11 -1.000000000028756e-07 0.0049999 -1e-07 0.1000001 0.0050001 1e-07 0 2 4 -8 12 -1.000000000028756e-07 0.0049999 0.0049999 0.1000001 0.0050001 0.0050001 0 2 3 -7 1 -1e-07 -9.99999999998398e-08 -9.99999999998398e-08 1e-07 0.0050001 0.0050001 1 1 4 1 2 -3 -4 2 0.0999999 -9.99999999998398e-08 -9.99999999998398e-08 0.1000001 0.0050001 0.0050001 1 2 4 5 6 -7 -8 3 -1.000000000028756e-07 -1e-07 -9.99999999998398e-08 0.1000001 1e-07 0.0050001 0 4 9 5 -10 -1 4 -1.000000000028756e-07 0.0049999 -9.99999999998398e-08 0.1000001 0.0050001 0.0050001 0 4 11 7 -12 -3 5 -1.000000000028756e-07 -9.99999999998398e-08 -1e-07 0.1000001 0.0050001 1e-07 0 4 4 11 -8 -9 6 -1.000000000028756e-07 -9.99999999998398e-08 0.0049999 0.1000001 0.0050001 0.0050001 0 4 2 12 -6 -10 1 -1.000000000028756e-07 -9.99999999998398e-08 -9.99999999998398e-08 0.1000001 0.0050001 0.0050001 1 3 6 1 2 3 4 5 6 $EndEntities $Nodes 15 84 1 84 0 1 0 1 1 0 0 0.005 0 2 0 1 2 0 0 0 0 3 0 1 3 0 0.005 0.005 0 4 0 1 4 0 0.005 0 0 5 0 1 5 0.1 0 0.005 0 6 0 1 6 0.1 0 0 0 7 0 1 7 0.1 0.005 0.005 0 8 0 1 8 0.1 0.005 0 1 9 0 19 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 0.005000000000000008 0 0 0.01000000000000002 0 0 0.01500000000000003 0 0 0.02000000000000004 0 0 0.02500000000000005 0 0 0.03000000000000006 0 0 0.03500000000000005 0 0 0.04000000000000005 0 0 0.04500000000000005 0 0 0.05000000000000004 0 0 0.05500000000000003 0 0 0.06000000000000005 0 0 0.06500000000000006 0 0 0.07000000000000003 0 0 0.07500000000000004 0 0 0.08000000000000004 0 0 0.08500000000000002 0 0 0.09000000000000002 0 0 0.09500000000000001 0 0 1 10 0 19 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 0.005000000000000008 0 0.005 0.01000000000000002 0 0.005 0.01500000000000003 0 0.005 0.02000000000000004 0 0.005 0.02500000000000005 0 0.005 0.03000000000000006 0 0.005 0.03500000000000005 0 0.005 0.04000000000000005 0 0.005 0.04500000000000005 0 0.005 0.05000000000000004 0 0.005 0.05500000000000003 0 0.005 0.06000000000000005 0 0.005 0.06500000000000006 0 0.005 0.07000000000000003 0 0.005 0.07500000000000004 0 0.005 0.08000000000000004 0 0.005 0.08500000000000002 0 0.005 0.09000000000000002 0 0.005 0.09500000000000001 0 0.005 1 11 0 19 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 0.005000000000000008 0.005 0 0.01000000000000002 0.005 0 0.01500000000000003 0.005 0 0.02000000000000004 0.005 0 0.02500000000000005 0.005 0 0.03000000000000006 0.005 0 0.03500000000000005 0.005 0 0.04000000000000005 0.005 0 0.04500000000000005 0.005 0 0.05000000000000004 0.005 0 0.05500000000000003 0.005 0 0.06000000000000005 0.005 0 0.06500000000000006 0.005 0 0.07000000000000003 0.005 0 0.07500000000000004 0.005 0 0.08000000000000004 0.005 0 0.08500000000000002 0.005 0 0.09000000000000002 0.005 0 0.09500000000000001 0.005 0 1 12 0 19 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 0.005000000000000008 0.005 0.005 0.01000000000000002 0.005 0.005 0.01500000000000003 0.005 0.005 0.02000000000000004 0.005 0.005 0.02500000000000005 0.005 0.005 0.03000000000000006 0.005 0.005 0.03500000000000005 0.005 0.005 0.04000000000000005 0.005 0.005 0.04500000000000005 0.005 0.005 0.05000000000000004 0.005 0.005 0.05500000000000003 0.005 0.005 0.06000000000000005 0.005 0.005 0.06500000000000006 0.005 0.005 0.07000000000000003 0.005 0.005 0.07500000000000004 0.005 0.005 0.08000000000000004 0.005 0.005 0.08500000000000002 0.005 0.005 0.09000000000000002 0.005 0.005 0.09500000000000001 0.005 0.005 2 1 0 0 2 2 0 0 3 1 0 0 $EndNodes $Elements 3 22 1 22 2 1 3 1 1 2 1 3 4 2 2 3 1 2 6 8 7 5 3 1 5 20 3 3 1 2 4 66 28 9 47 4 66 28 9 47 67 29 10 48 5 67 29 10 48 68 30 11 49 6 68 30 11 49 69 31 12 50 7 69 31 12 50 70 32 13 51 8 70 32 13 51 71 33 14 52 9 71 33 14 52 72 34 15 53 10 72 34 15 53 73 35 16 54 11 73 35 16 54 74 36 17 55 12 74 36 17 55 75 37 18 56 13 75 37 18 56 76 38 19 57 14 76 38 19 57 77 39 20 58 15 77 39 20 58 78 40 21 59 16 78 40 21 59 79 41 22 60 17 79 41 22 60 80 42 23 61 18 80 42 23 61 81 43 24 62 19 81 43 24 62 82 44 25 63 20 82 44 25 63 83 45 26 64 21 83 45 26 64 84 46 27 65 22 84 46 27 65 7 5 6 8 $EndElements feenox-1.1/tests/expressions_constants.sh0000755000175000017500000000454514773607165015767 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer1 expr.fee 1+1 "2" exitifwrong $? answer1 expr.fee 1+3 "4" exitifwrong $? answer1 expr.fee '1+2*3' "7" exitifwrong $? answer1 expr.fee '(1+2)*3' "9" exitifwrong $? answer1 expr.fee '(-2^3)' "-8" exitifwrong $? answer1 expr.fee '(-1-(-1))' "0" exitifwrong $? answer1 expr.fee '(-1+(-1))' "-2" exitifwrong $? answer1 expr.fee '(-1+(+1))' "0" exitifwrong $? answer1 expr.fee '(-1-(+1))' "-2" exitifwrong $? answer1 expr.fee '1/3' "0.333333" exitifwrong $? answer1 expr.fee '(1+1/1e6)^1e6' "2.71828" exitifwrong $? answer1 expr.fee '1/((1+1/1e6)^1e6)' "0.36788" exitifwrong $? answer1 expr.fee '((1+1/1e6)^1e6)^(-1)' "0.36788" exitifwrong $? answer1 expr.fee '2^0.5' "1.41421" exitifwrong $? answer1 expr.fee '2^(1/2)' "1.41421" exitifwrong $? answer1 expr.fee 'sqrt(5)+(-2*(-2))*(-1)' "-1.76393" exitifwrong $? answer1 expr.fee '(1+sqrt(5))/2' "1.61803" exitifwrong $? answer1 expr.fee 'pi' "3.14159" exitifwrong $? answer1 expr.fee 'pi/2' "1.5708" exitifwrong $? answer1 expr.fee '2*pi' "6.28319" exitifwrong $? answer1 expr.fee 'pi^2' "9.8696" exitifwrong $? answer1 expr.fee 'pi^0.5' "1.77245" exitifwrong $? answer1 expr.fee 'sqrt(2)' "1.41421" exitifwrong $? answer1 expr.fee 'sqrt(3)' "1.73205" exitifwrong $? answer1 expr.fee 'sqrt(pi)' "1.77245" exitifwrong $? answer1 expr.fee 'sqrt(pi^2)' "3.14159" exitifwrong $? answer1 expr.fee 'sqrt(pi)^2' "3.14159" exitifwrong $? answer1 expr.fee 'atan2(exp(-1/2),log(sqrt(2)))' "1.05167" exitifwrong $? answer1 expr.fee 'mod(sinh(1+1^2),pi)' "0.485268" exitifwrong $? answer1 expr.fee 'max(1,sqrt(2),cos(acos(2/3)),floor(1.9))' "1.41421" exitifwrong $? answer1 expr.fee 'if(sqrt(10)>pi,10,pi^2)' "10" exitifwrong $? answer1 expr.fee 'sin(1)' "0.841471" exitifwrong $? answer1 expr.fee 'sqrt(1-cos(1)^2)' "0.841471" exitifwrong $? answer1 expr.fee 'sin(1)^2+cos(1)^2' "1" exitifwrong $? answer1 expr.fee '1/0' "inf" exitifwrong $? # some archs return nan, some others return -nan... # answer1 expr.fee '(-1)^0.5' "-nan" # exitifwrong $? answer1 expr.fee '1+' "1+" exitifwrong $? answer1 expr.fee '1+*1' "1+*1" exitifwrong $? answer1 expr.fee '(1+1' "(1+1" exitifwrong $? answer1 expr.fee '10x' "10x" exitifwrong $? feenox-1.1/tests/i-beam-euler-bernoulli.sh0000755000175000017500000000111514773607165015534 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkgmsh gmsh -v 0 -3 ${dir}/i-beam-hex.geo || exit $? gmsh -v 0 -3 ${dir}/i-beam-tet.geo || exit $? answer2 i-beam-euler-bernoulli.fee right tet "+3e-02" exitifwrong $? answer2 i-beam-euler-bernoulli.fee right hex "+3e-02" exitifwrong $? answer2 i-beam-euler-bernoulli.fee top tet "+4e-02" exitifwrong $? answer2 i-beam-euler-bernoulli.fee top hex "+4e-02" exitifwrong $? feenox-1.1/tests/wilson-1d.fee0000644000175000017500000000134614773607165013244 00000000000000# 1d problem from # Gary L. Wilson, Roger A. Rydin & Seppo Orivuori (1988) A Comparison of Two # Efficient Nonlinear Heat Conduction Methodologies Using a Two-Dimensional Time-Dependent # Benchmark Problem, Nuclear Technology, 82:1, 94-105, DOI: 10.13182/NT88-A34120 # http://dx.doi.org/10.13182/NT88-A34120 PROBLEM thermal 1d READ_MESH wilson-1d.msh k(x) = 1 + 0.5*T(x) rhocp(x) = 1 + 0.5*T(x) BC left q=1 BC right T=limit(1e5*t,0,1) T_0(x) = 0 end_time = 0.25 # is there an analytical solution? FUNCTION T_left(t) INTERPOLATION steffen DATA { 0.000 0.000 0.025 0.171 0.050 0.238 0.075 0.288 0.100 0.330 0.125 0.366 0.150 0.398 0.175 0.427 0.200 0.453 0.225 0.478 0.250 0.501 } SOLVE_PROBLEM IF done PRINT abs(T(0)-T_left(t)) ENDIF feenox-1.1/tests/bunny-diffusion.sh0000755000175000017500000000113714773607165014422 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde neutron_diffusion checkslepc checkgmsh if [ ! -e ${dir}/bunny.msh ]; then if [ ! -e ${dir}/Stanford_Bunny.stl ] ; then if [ ! -z "$(which wget)" ]; then wget https://upload.wikimedia.org/wikipedia/commons/4/43/Stanford_Bunny.stl -O ${dir}/Stanford_Bunny.stl || exit $? else return 77 fi fi gmsh -3 ${dir}/bunny.geo || exit $? fi answerzero bunny-diffusion.fee 1e-3 exitifwrong $? feenox-1.1/tests/sn-square-fully-mirrored.fee0000644000175000017500000000060214773607165016311 00000000000000PROBLEM neutron_sn DIM 2 GROUPS 1 SN 4 READ_MESH square-struct.msh S1 = 1 Sigma_t1 = 2 Sigma_s1.1 = 1 BC left mirror BC right mirror BC bottom mirror BC top mirror # sn_alpha = 0.19275 # sn_alpha = 1 penalty_weight = 1e4 mumps_icntl_14 = 60 # DUMP K K_bc b b_bc FORMAT octave SOLVE_PROBLEM PRINT phi1(0.5,0.5)-1 # WRITE_RESULTS FORMAT vtk # PRINT_FUNCTION FORMAT %.4f phi1 feenox-1.1/tests/thermal-slab-convection-nosource.fee0000644000175000017500000000016014773607165017773 00000000000000PROBLEM thermal 1D READ_MESH slab.msh BC left T=0 BC right h=1 Tref=1 k = 1 SOLVE_PROBLEM PRINT T(0.5)-1/4 feenox-1.1/tests/print_vector.fee0000644000175000017500000000043614773607165014144 00000000000000VECTOR x[3] VECTOR y[3] VECTOR z[3] VECTOR large[12] x[i] = 1/1 y[i] = 1/i z[i] = 1/i^2 large[i] = i PRINT %.1f x %.2f y %.3f z PRINT %.6f SEP "," x PRINT %.5f SEP " " y PRINT %.4f SEP "X" z PRINT_VECTOR SEP "\t|\t" %.1f x %.2f y %.3f z # TODO: elems_per_line # PRINT_VECTOR large feenox-1.1/tests/long-bar-thermal.fee0000644000175000017500000000207714773607165014564 00000000000000# Case VMMECH007:Thermal Stress in a Bar with Temperature Dependent Conductivity PROBLEM thermal DEFAULT_ARGUMENT_VALUE 1 struct READ_MESH long-bar-$1.msh # numerical data a = 0.038 b = 0.00582 Tl = 100 Tref = 5 h = 0.005 # solve numerical # conductivity k(x,y,z) = a*(1 + b*T(x,y,z)) # boundary conditions BC rear T=Tl BC front Tref=Tref h=h SOLVE_PROBLEM # solve analytical VAR Tr' tmp(x,Tr') = (-1 + sqrt(1 + 4*1/2*b*(Tl + 1/2*b*Tl^2 - h*(Tr'-Tref)/a * x)))/(b) Tr = root(tmp(20,Tr)-Tr, Tr, Tref, Tl) temp(x) = tmp(x,Tr) # extract 1d profile of the numerical solution along z temp1d(x) = T(1,1,x) # comparison with Ansys' reference result (it has rounding errors) # Tansys(x) = -171.82 + sqrt(73886.82 - 1492.13*x) # PRINT_FUNCTION temp temp1d temp(x)-temp1d(x) Tansys(x)-temp1d(x) MIN 0 MAX 20 NSTEPS 200 # write the temperature distribution to make it available for the mechanical step WRITE_MESH long-bar-$1-temperature.msh T # compute error INTEGRATE (T(x,y,z)-temp(z))^2 RESULT num PHYSICAL_GROUP bulk DIM 3 # this is just to compute the volume PRINT num/bulk_volume feenox-1.1/tests/function_vectors.sh0000755000175000017500000000035714773607165014700 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answerdiff function_vectors1d.fee exitifwrong $? feenox-1.1/tests/fit.sh0000755000175000017500000000050614773607165012064 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer fit1d.fee "1 0 1" exitifwrong $? answerdiff fit1d_gradient.fee exitifwrong $? answer fit1d_sigma.fee "0.158114" exitifwrong $? feenox-1.1/tests/reaction-elastic-lt.fee0000644000175000017500000000113414773607165015265 00000000000000PROBLEM mechanical 3D READ_MESH cube-hex.msh E = 1 nu = 0 BC left fixed BC top Fz=1 SOLVE_PROBLEM REACTION left RESULT left REACTION right RESULT right REACTION bottom RESULT bottom REACTION top RESULT top REACTION front RESULT front REACTION back RESULT back PRINT %.4f left[1] abs(left[2]) abs(left[3]) PRINT %.4f right[1] abs(right[2]) abs(right[3]) PRINT %.4f abs(bottom[1]) abs(bottom[2]) abs(bottom[3]) PRINT %.4f abs(top[1]) abs(top[2]) abs(top[3]) PRINT %.4f abs(front[1]) abs(front[2]) abs(front[3]) PRINT %.4f abs(back[1]) abs(back[2]) abs(back[3]) feenox-1.1/tests/expressions_seven.fee0000644000175000017500000000006014773607165015201 00000000000000n = 7 PRINT 1^n+7^n+4^n+1^n+7^n+2^n+5^n-1741725 feenox-1.1/tests/beam-cantilever-hex8.geo0000644000175000017500000000011514773607165015343 00000000000000Mesh.ElementOrder = 1; Mesh.RecombineAll = 1; Merge "beam-cantilever.geo"; feenox-1.1/tests/qrng2d_sobol_offset.fee0000644000175000017500000000007614773607165015367 00000000000000static_steps = $2 PRINT qrng2d_sobol(1,$1) qrng2d_sobol(2,$1) feenox-1.1/tests/inverse-dae.fee0000644000175000017500000000051414773607165013625 00000000000000INCLUDE parameters.fee PHASE_SPACE phi c rho end_time = 10 dae_rtol = 1e-7 rho_0 = 0 phi_0 = 1 c_0[i] = phi_0 * beta(i)/(Lambda*lambda(i)) FUNCTION flux(t) FILE flux.dat phi = flux(t) phi_dot = (rho-Beta)/Lambda * phi + vecdot(lambda, c) c_dot[i] = beta[i]/Lambda * phi - lambda[i]*c[i] IF done PRINT rho-0.000100022 ENDIF feenox-1.1/tests/write_mesh2d.fee0000644000175000017500000000014314773607165014015 00000000000000READ_MESH square41.msh f(x,y) = exp(-x)*cos(y) WRITE_MESH mesh2d.$1 f INTEGRATE f RESULT I PRINT I feenox-1.1/tests/radiation-as-heatflux-kelvin.fee0000644000175000017500000000036414773607165017105 00000000000000PROBLEM thermal 1D READ_MESH slab.msh TK = 273.15 Tref = 20+TK T_guess(x) = Tref k = 50 sigma = 5.670374419e-8 e = 0.8 BC left q=1200 BC right q=sigma*e*(Tref^4-T(x)^4) SOLVE_PROBLEM PRINT T(0.0)-TK-179.747+T(1.0)-TK-155.747+T(0.5)-TK-167.747 feenox-1.1/tests/nafems-t3-3d.fee0000644000175000017500000000066014773607165013526 00000000000000# NAFEMS-T3 benchmark: 1d transient heat conduction with dirichlet PROBLEM thermal 3D READ_MESH slab-3d-0.1m.msh # transient up to 32 seconds dt_0 = 5e-3 end_time = 32 # uniform properties k = 35 # W/(m K) cp = 440.5 # J/(kg K) rho = 7200 # kg/m^3 # boundary conditions BC left T=0 BC right T=100*sin(pi*t/40) # initial condition T_0(x,y,z) = 0 SOLVE_PROBLEM IF done PRINT T(0.08,0,0) ENDIF feenox-1.1/tests/exp.fee0000644000175000017500000000055014773607165012217 00000000000000PHASE_SPACE x # variable x is in the phase space of the DAE system end_time = 1 # time goes from 0 to 1 x_0 = 1 # initial condition is x = 1 for t = 0 x_dot = -x # differential equation # output time, x, the analytical solution and the absolute error # PRINT %.6f t x exp(-t) %e abs(x-exp(-t)) IF done PRINT abs(exp(-t)-x)<1e-5 ENDIF feenox-1.1/tests/nafems-t1-4.sh0000755000175000017500000000074214773607165013240 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi # t1 and t4 are separated from t2 & t3 because they needs gmsh checkgmsh checkpde mechanical gmsh -v 0 -2 ${dir}/nafems-t1.geo || exit $? answerfloat nafems-t1.fee 50 0.1 exitifwrong $? checkpde thermal gmsh -v 0 -2 ${dir}/nafems-t4.geo || exit $? answer nafems-t4.fee 18.3 exitifwrong $? feenox-1.1/tests/thermal-slab-uniform-source-dirichlet-neumann.fee0000644000175000017500000000033214773607165022353 00000000000000PROBLEM thermal 1d READ_MESH slab2.msh BC left T=0 BC right q=0 k = 1 q = 1 SOLVE_PROBLEM INTEGRATE q RESULT q_total REACTION left RESULT q_left REACTION right RESULT q_right PRINT %.3f q_total+q_left-q_right feenox-1.1/tests/spinning-disk-parallel-solid-half_unstruct.geo0000644000175000017500000000032314773607165021772 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Cylinder(1) = {0, 0, 0, 0, 0, t/2, R}; Physical Surface("symmetry") = {3}; Physical Volume("bulk") = {1}; feenox-1.1/tests/bimetallic-strip.sh0000755000175000017500000000052514773607165014547 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkmumps checkgmsh gmsh -v 0 -3 ${dir}/bimetallic-strip.geo || exit $? answerzero1 bimetallic-strip.fee --mumps exitifwrong $? feenox-1.1/tests/azmy.sh0000755000175000017500000000057514773607165012270 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkgmsh checkpde neutron_sn gmsh -v 0 -2 ${dir}/azmy-structured.geo || exit $? answer1zero azmy-structured.fee 8 0.6 exitifwrong $? answer1zero azmy-structured.fee 12 0.6 exitifwrong $? feenox-1.1/tests/la-p03-PUa-H2O_1-1-0-SL.geo0000644000175000017500000000054614773607165014537 00000000000000rc = 1.478401; h_refl = 3.063725; n = 20; SetFactory("OpenCASCADE"); Point(1) = {-rc, 0, 0}; Point(2) = {+rc, 0, 0}; Point(3) = {+rc+h_refl, 0, 0}; Line(1) = {1, 2}; Line(2) = {2, 3}; Physical Curve("fuel") = {1}; Physical Curve("refl") = {2}; Physical Point("vacuum") = {1,3}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = 0.5*rc/n; Mesh.ElementOrder = 2; feenox-1.1/tests/find_extrema2d.fee0000644000175000017500000000120114773607165014310 00000000000000READ_MESH mesh2d.$1 DIMENSIONS 2 READ_FUNCTION f FIND_EXTREMA f MAX M1 MIN m1 FIND_EXTREMA f NODES MAX M1n MIN m1n FIND_EXTREMA f CELLS MAX M1c MIN m1c FIND_EXTREMA f GAUSS MAX M1g MIN m1g FIND_EXTREMA f(x,y)-cos(10*x)*sin(10*y) MAX M2 MIN m2 FIND_EXTREMA f(x,y)-cos(10*x)*sin(10*y) NODES MAX M2n MIN m2n FIND_EXTREMA f(x,y)-cos(10*x)*sin(10*y) CELLS MAX M2c MIN m2c FIND_EXTREMA f(x,y)-cos(10*x)*sin(10*y) GAUSS MAX M2g MIN m2g PRINT %.3f M1 M1n M1c M1g PRINT %.3f m1 m1n m1c m1g PRINT PRINT %.3f M2 M2n M2c M2g PRINT %.3f m2 m2n m2c m2g feenox-1.1/tests/ray-effect-full.geo0000644000175000017500000000062614773607165014427 00000000000000SetFactory("OpenCASCADE"); Rectangle(1) = {-1, -1, 0, 2, 2, 0}; Rectangle(2) = {-2, -2, 0, 4, 4, 0}; Coherence; n = 3; Transfinite Curve {1, 2, 4, 3} = 1+2*2*n; Transfinite Curve {5, 6, 7, 8} = 1+2*n; Mesh.Algorithm = 8; Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 0; Physical Surface("src") = {1}; Physical Surface("bulk") = {2}; Physical Curve("vacuum") = {1, 3, 4, 2}; feenox-1.1/tests/square.vtk0000644000175000017500000000114214773607165012766 00000000000000# vtk DataFile Version 2.0 square41, Created by Gmsh 4.11.0 ASCII DATASET UNSTRUCTURED_GRID POINTS 12 double 0 0 0 1 0 0 1 1 0 0 1 0 0.5 0 0 1 0.5 0 0.5 1 0 0 0.5 0 0.25 0.25 0 0.625 0.3750000000000001 0 0.71875 0.7187500000000001 0 0.345703125 0.654296875 0 CELLS 22 80 2 0 4 2 4 1 2 1 5 2 5 2 2 2 6 2 6 3 2 3 7 2 7 0 3 1 9 4 3 5 9 1 3 3 11 6 3 7 11 3 3 2 10 5 3 6 10 2 3 4 8 0 3 0 8 7 3 9 11 8 3 8 11 7 3 4 9 8 3 10 11 9 3 6 11 10 3 5 10 9 CELL_TYPES 22 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 CELL_DATA 22 SCALARS CellEntityIds int 1 LOOKUP_TABLE default 3 3 2 2 4 4 1 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 feenox-1.1/tests/bunny-thermal.fee0000644000175000017500000000137714773607165014220 00000000000000PROBLEM thermal # create mesh with # > wget https://upload.wikimedia.org/wikipedia/commons/4/43/Stanford_Bunny.stl # > gmsh -3 bunny.geo READ_MESH bunny.msh k = 1 rho = 1 cp = 1 T_0(x,y,z) = 0 end_time = 500 # get the volume of the bunny PHYSICAL_GROUP bunny DIM 3 # and the areas of the surfaces PHYSICAL_GROUP base DIM 2 PHYSICAL_GROUP rest DIM 2 convection_coeff = 1 BC heated h=convection_coeff Tref=1 GROUPS base rest SOLVE_PROBLEM INTEGRATE T RESULT integral_of_T T_mean = integral_of_T/bunny_volume # compare against the lumped capacitance result T_lumped = 1-exp(-convection_coeff*(base_area+rest_area)/(rho*bunny_volume*cp) * t) # PRINT t T_mean T(bunny_cog[1],bunny_cog[2],bunny_cog[3]) T_lumped IF done PRINT T_mean-1 ENDIF # WRITE_RESULTS T feenox-1.1/tests/ray-effect.fee0000644000175000017500000000140214773607165013445 00000000000000# problem from # PHASE-SPACE FINITE ELEMENT METHODS APPLIED TO THE FIRST-ORDER FORM OF THE TRANSPORT EQUATION # WILLIAM R. MARTIN,CARL E. YEHNERT, LEONARD LORENCE and JAMES J. DUDERSTAD # Annals of Nuclear Energy. Vol. 8. pp. 633 to 646, 1981 DEFAULT_ARGUMENT_VALUE 1 quarter DEFAULT_ARGUMENT_VALUE 2 8 PROBLEM neutron_sn 2D SN $2 ALLOW_UNRESOLVED_BCS READ_MESH $0-$1.msh c = 1/3 Sigma_t = 0.75 Sigma_s = c*Sigma_t BC mirror mirror BC vacuum vacuum MATERIAL src Sigma_t1=Sigma_t Sigma_s1.1=Sigma_s S1=1 MATERIAL bulk Sigma_t1=Sigma_t Sigma_s1.1=Sigma_s S1=0 sn_alpha = 0.15 SOLVE_PROBLEM PRINT %.1f 10*phi1(0,1.875) # PRINT "\# memory= " memory() WRITE_RESULTS FILE $0-$1-$2.msh # profile(x) = 10*phi1(x,1.875) # PRINT_FUNCTION profile MIN 0 MAX 2 NSTEPS 50 feenox-1.1/tests/pellet-nonlinear-q.fee0000644000175000017500000000056214773607165015134 00000000000000# https://www.nuclear-power.com/nuclear-engineering/heat-transfer/heat-generation/temperature-profile-nuclear-fuel/ PROBLEM thermal 3D READ_MESH pellet.msh k = 4 # q is in W / m^3 = 300 W/cm * 100 cm/m / area r = 4e-3 q0 = 300 * 100 / (pi*r^2) q(x,y,z) = q0 * (1+20*x) * (1 + (T(x,y,z)-800)/800) BC symmetry q=0 BC external T=420 SOLVE_PROBLEM PRINT %.0f T_max-1149 feenox-1.1/tests/bunny-thermal.sh0000755000175000017500000000111114773607165014060 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal checkgmsh if [ ! -e ${dir}/bunny.msh ]; then if [ ! -e ${dir}/Stanford_Bunny.stl ] ; then if [ ! -z "$(which wget)" ]; then wget https://upload.wikimedia.org/wikipedia/commons/4/43/Stanford_Bunny.stl -O ${dir}/Stanford_Bunny.stl || exit $? else return 77 fi fi gmsh -3 ${dir}/bunny.geo || exit $? fi answerzero bunny-thermal.fee 1e-2 exitifwrong $? feenox-1.1/tests/functions.sh0000644000175000017500000002032514773607165013310 00000000000000#!/bin/false # marker functions_found=yes # see how to invoke FeenoX feenox="" for i in ../feenox ../src/feenox ./feenox ./src/feenox ../../../bin/feenox /usr/local/bin/feenox; do if [ -z "${feenox}" ]; then if [ -f ${i} ]; then feenox=${i} fi fi done if [ -z "${feenox}" ]; then echo "error: could not find feenox executable" exit 1 fi # see where the inputs are for i in . tests; do if [ -f ${i}/functions.sh ]; then dir=${i} fi done ####### exitifwrong() { if [ $1 != 0 ]; then exit $1 fi } # checks if feenox is compiled with ida and skips the test if necessary checkida() { if [ $(${feenox} --versions | grep 'SUNDIAL' | grep -v 'N/A'| wc -l) = 0 ]; then echo "FeenoX was not compiled with SUNDIALS, skipping test" exit 77 fi } # checks if feenox is compiled with petsc and skips the test if necessary checkpetsc() { if [ $(${feenox} --versions | grep 'PETSc' | grep -v 'N/A'| wc -l) = 0 ]; then echo "FeenoX was not compiled with PETSc, skipping test" exit 77 fi } # checks if feenox is compiled with slepc and skips the test if necessary checkslepc() { if [ $(${feenox} --versions | grep 'SLEPc' | grep -v 'N/A'| wc -l) = 0 ]; then echo "FeenoX was not compiled with SLEPc, skipping test" exit 77 fi } checkpde() { checkpetsc if [ $(${feenox} --pdes | grep $1 | wc -l) = 0 ]; then echo "FeenoX was not compiled with $1, skipping test" exit 77 fi } # checks if feenox is compiled with mumps and skips the test if necessary checkmumps() { if [ $(${feenox} --versions | grep 'mumps' | grep -v 'N/A'| wc -l) = 0 ]; then echo "FeenoX was not compiled with MUMPS, skipping test" exit 77 fi } # checks if feenox is compiled with mumps and skips the test if necessary checkhypre() { if [ $(${feenox} --versions | grep 'hypre' | grep -v 'N/A'| wc -l) = 0 ]; then echo "FeenoX was not compiled with HYPRE, skipping test" exit 77 fi } # checks if gmsh executable is available in the path checkgmsh() { if [ -z "$(which gmsh)" ]; then echo "gmsh not found, skipping test" exit 77 fi } # checks if mpirun is available checkmpirun() { if [ -z "$(which mpirun)" ]; then echo "mpirun not found, skipping test" exit 77 fi if [ "x$(id -u)" = "x0" ]; then echo "attempting to run MPI as root, skipping test" exit 77 fi } answer() { echo -n "${1} ... " answer=$(${feenox} ${dir}/${1}) error=$? if [ ${error} != 0 ]; then echo "failed" return 2 fi if [ "${answer}" = "${2}" ]; then echo "ok" level=0 else echo "wrong, expected '${2}' and got '${answer}'" level=1 fi return ${level} } answermpi() { echo -n "${2} (${1} ranks) ... " answer=$(mpirun -n ${1} --map-by :OVERSUBSCRIBE ${feenox} ${dir}/${2}) error=$? if [ ${error} != 0 ]; then echo "failed" return 2 fi if [ "${answer}" = "${3}" ]; then echo "ok" level=0 else echo "wrong, expected '${3}' and got '${answer}'" level=1 fi return ${level} } answerdiff() { echo -n "${1} ... " base=$(basename ${1} .fee) ${feenox} ${dir}/${1} ${2} | sed 's/-0.0000/0.0000/g' > ${dir}/${base}.last error=$? if [ ${error} != 0 ]; then echo "failed" return 2 fi difference=$(diff -w ${dir}/${base}.ref ${dir}/${base}.last) if [ -z "${difference}" ]; then echo "ok" level=0 else echo "wrong, see ${base}.ref and ${base}.last" level=1 fi return ${level} } answer1diff() { echo -n "${1} ... " base=$(basename ${1} .fee) ${feenox} ${dir}/${1} ${2} > ${dir}/${base}.last error=$? if [ ${error} != 0 ]; then echo "failed" return 2 fi difference=$(diff -w ${dir}/${base}.ref ${dir}/${base}.last) if [ -z "${difference}" ]; then echo "ok" level=0 else echo "wrong, see ${base}.ref and ${base}.last" level=1 fi return ${level} } answerfloat() { echo -n "${1} ... " answer=$(${feenox} ${dir}/${1}) error=$? if [ ${error} != 0 ]; then echo "failed" return 2 fi if [ "$(${feenox} ${dir}/cmp-float.fee "(${answer})" "${2}" "${3}")" = "1" ]; then echo "ok" level=0 else echo "wrong, expected '${2}' and got '${answer}'" level=1 fi return ${level} } answerzero() { echo -n "${1} ... " answer=$(${feenox} ${dir}/${1}) error=$? if [ ${error} != 0 ]; then return 2 fi if [ -z "${2}" ]; then result=$(${feenox} ${dir}/cmp-zero.fee "(${answer})") else result=$(${feenox} ${dir}/cmp-zero.fee "(${answer})" "${2}") fi if [ "${result}" = "1" ]; then echo "ok" level=0 else echo "wrong, expected zero and got '${answer}'" level=1 fi return ${level} } answerzerompi() { echo -n "${2} (${1} ranks) ... " answer=$(mpirun -n ${1} --map-by :OVERSUBSCRIBE ${feenox} ${dir}/${2}) error=$? if [ ${error} != 0 ]; then return 2 fi if [ -z "${3}" ]; then result=$(${feenox} ${dir}/cmp-zero.fee "(${answer})") else result=$(${feenox} ${dir}/cmp-zero.fee "(${answer})" "${3}") fi if [ "${result}" = "1" ]; then echo "ok" level=0 else echo "wrong, expected zero and got '${answer}'" level=1 fi return ${level} } answerzero1() { echo -n "${1} ${2}... " answer=$(${feenox} ${dir}/${1} ${2}) error=$? if [ ${error} != 0 ]; then return 2 fi if [ -z "${3}" ]; then result=$(${feenox} ${dir}/cmp-zero.fee "(${answer})") else result=$(${feenox} ${dir}/cmp-zero.fee "(${answer})" "${3}") fi if [ "${result}" = "1" ]; then echo "ok" level=0 else echo "wrong, expected zero and got '${answer}'" level=1 fi return ${level} } answerzero2() { echo -n "${1} ${2} ${3}... " answer=$(${feenox} ${dir}/${1} ${2} ${3}) error=$? if [ ${error} != 0 ]; then return 2 fi if [ -z "${4}" ]; then result=$(${feenox} ${dir}/cmp-zero.fee "(${answer})") else result=$(${feenox} ${dir}/cmp-zero.fee "(${answer})" "${4}") fi if [ "${result}" = "1" ]; then echo "ok" level=0 else echo "wrong, expected zero and got '${answer}'" level=1 fi return ${level} } answer1() { echo -n "${1} ${2} ... " answer=$(${feenox} ${dir}/${1} ${2}) error=$? if [ ${error} != 0 ]; then return 2 fi if [ "${answer}" = "${3}" ]; then echo "ok" level=0 else echo "wrong, expected '${3}' and got '${answer}'" level=1 fi return ${level} } answer2() { echo -n "${1} ${2} ${3}... " answer=$(${feenox} ${dir}/${1} ${2} ${3}) error=$? if [ ${error} != 0 ]; then return 2 fi if [ "${answer}" = "${4}" ]; then echo "ok" level=0 else echo "wrong, expected '${4}' and got '${answer}'" level=1 fi return ${level} } answerfloat() { echo -n "${1} ... " answer=$(${feenox} ${dir}/${1}) error=$? if [ ${error} != 0 ]; then echo "failed" return 2 fi if [ "$(${feenox} ${dir}/cmp-float.fee "(${answer})" "${2}" "${3}")" = "1" ]; then echo "ok" level=0 else echo "wrong, expected '${2}' and got '${answer}'" level=1 fi return ${level} } answer1float() { echo -n "${1} ${2} ... " answer=$(${feenox} ${dir}/${1} ${2}) error=$? if [ ${error} != 0 ]; then echo "failed" return 2 fi if [ -z "${4}" ]; then result=$(${feenox} ${dir}/cmp-float.fee "(${answer})" "${3}") else result=$(${feenox} ${dir}/cmp-float.fee "(${answer})" "${3}" "${4}") fi if [ "${result}" = "1" ]; then echo "ok" level=0 else echo "wrong, expected '${3}' and got '${answer}'" level=1 fi return ${level} } answer1zero() { echo -n "${1} ${2} ... " answer=$(${feenox} ${dir}/${1} ${2}) error=$? if [ ${error} != 0 ]; then echo "failed" return 2 fi if [ -z "${3}" ]; then result=$(${feenox} ${dir}/cmp-zero.fee "(${answer})") else result=$(${feenox} ${dir}/cmp-zero.fee "(${answer})" "${3}") fi if [ "${result}" = "1" ]; then echo "ok" level=0 else echo "wrong, expected zero and got '${answer}'" level=1 fi return ${level} } answer2sorthead1() { answer=$(${feenox} ${dir}/$1 $2 $3 | sort -rg | head -n1) error=$? if [ ${error} != 0 ]; then echo "failed" return 2 fi if [ "${answer}" = "$4" ]; then echo "ok" level=0 else echo "wrong" level=1 fi return ${level} } feenox-1.1/tests/la-p52-UAl-2-0-SP.fee0000644000175000017500000000041214773607165013713 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 51 PROBLEM neutron_sn 3D GROUPS 2 SN 2 READ_MESH $0.msh INCLUDE U-Al.fee BC mirror mirror BC vacuum vacuum mumps_icntl_14 = 80 SOLVE_PROBLEM PRINT keff-0.940369 feenox-1.1/tests/cube-radial.fee0000644000175000017500000000045314773607165013575 00000000000000PROBLEM mechanical READ_MESH cube-hex.msh E = 1 nu = 0.3 BC bottom tangential radial BC top tension=0.12345678 ksp_rtol = 1e-9 SOLVE_PROBLEM # DUMP K K_bc b b_bc FORMAT octave WRITE_RESULTS FORMAT vtk stresses principal vonmises displ PRINT %.6f sigma1(0,0,0) abs(w(0,0,0)) w(1,1,1) SEP " " feenox-1.1/tests/data2d.dat0000644000175000017500000000017314773607165012574 000000000000000 0 0 1 0 1 2 0 2 3 0 3 4 0 4 0 1 1 1 1 2 2 1 3 3 1 4 4 1 5 0 2 2 1 2 3 2 2 4 3 2 5 4 2 6 0 4 4 1 4 5 2 4 6 3 4 7 4 4 8 feenox-1.1/tests/parallelepiped-thermal.fee0000644000175000017500000000115714773607165016044 00000000000000# references: # - http://www.code-aster.org/V2/doc/default/fr/man_v/v7/v7.03.100.pdf # - https://www.seamplex.com/docs/SP-FI-17-BM-12F2-A.pdf PROBLEM thermal 3D READ_MESH parallelepiped-coarse.msh k = 1 BC left q=+2 BC right q=-2 BC front q=+3 BC back q=-3 BC bottom q=+4 BC top q=-4 BC A T=0 SOLVE_PROBLEM # analytical solution Te(x,y,z) = 40 - 2*x - 3*y - 4*z # compute the L-2 norm of the error in the displacement field INTEGRATE (T(x,y,z)-Te(x,y,z))^2 RESULT num PHYSICAL_GROUP bulk DIM 3 # this is just to compute the volume WRITE_MESH parallelepiped-thermal.msh T PRINT num/bulk_volume feenox-1.1/tests/slab-3d-0.1m.geo0000644000175000017500000000052114773607165013332 00000000000000SetFactory("OpenCASCADE"); l = 0.1; n = 20; Box(1) = {0, 0, 0, l, l/n, l/n}; Physical Surface("left") = {1}; Physical Surface("right") = {2}; Physical Volume("bulk") = {1}; Mesh.RecombineAll = 1; Transfinite Curve {1, 2, 3, 4, 5, 6, 7, 8} = 2; Transfinite Curve {9, 10, 11, 12} = n+1; Transfinite Surface "*"; Transfinite Volume "*"; feenox-1.1/tests/two-squares.msh0000644000175000017500000000351414773607165013750 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 4 1 1 "left" 1 2 "right" 2 3 "soft" 2 4 "hard" $EndPhysicalNames $Entities 6 7 2 0 1 0 0 0 0 2 1 0 0 0 3 1 1 0 0 4 0 1 0 0 5 2 0 0 0 6 2 1 0 0 1 -9.999999994736442e-08 -1e-07 -1e-07 1.0000001 1e-07 1e-07 0 2 1 -2 2 0.9999998999999999 -1.000000000583867e-07 -1.000000000555111e-07 1.0000001 1.0000001 1.000000000555111e-07 0 2 2 -3 3 -9.999999994736442e-08 0.9999999000000001 -1e-07 1.0000001 1.0000001 1e-07 0 2 3 -4 4 -1e-07 -9.999999994736442e-08 -1e-07 1e-07 1.0000001 1e-07 1 1 2 4 -1 5 0.9999999000000001 -1e-07 -1e-07 2.0000001 1e-07 1e-07 0 2 2 -5 6 1.9999999 -9.999999994736442e-08 -1e-07 2.0000001 1.0000001 1e-07 1 2 2 5 -6 7 0.9999999000000001 0.9999999000000001 -1e-07 2.0000001 1.0000001 1e-07 0 2 6 -3 1 -1.000000000583867e-07 -1.000000000583867e-07 -1.000000000555111e-07 1.0000001 1.0000001 1.000000000555111e-07 1 3 4 1 2 3 4 2 0.9999998999999999 -1.000000000583867e-07 -1.000000000555111e-07 2.0000001 1.0000001 1.000000000555111e-07 1 4 4 5 6 7 -2 $EndEntities $Nodes 15 20 1 20 0 1 0 1 1 0 0 0 0 2 0 1 2 1 0 0 0 3 0 1 3 1 1 0 0 4 0 1 4 0 1 0 0 5 0 1 5 2 0 0 0 6 0 1 6 2 1 0 1 1 0 1 7 0.5 0 0 1 2 0 1 8 1 0.5 0 1 3 0 1 9 0.5 1 0 1 4 0 1 10 0 0.5 0 1 5 0 1 11 1.5 0 0 1 6 0 1 12 2 0.5 0 1 7 0 1 13 1.5 1 0 2 1 0 4 14 15 16 17 0.25 0.25 0 0.625 0.3750000000000001 0 0.71875 0.7187500000000001 0 0.345703125 0.654296875 0 2 2 0 3 18 19 20 1.625 0.625 0 1.352678571428571 0.3556547619047619 0 1.495535714285714 0.5044642857142857 0 $EndNodes $Elements 4 24 1 24 1 4 1 2 1 4 10 2 10 1 1 6 1 2 3 5 12 4 12 6 2 1 2 14 5 2 15 7 6 8 15 2 7 4 17 9 8 10 17 4 9 3 16 8 10 9 16 3 11 7 14 1 12 1 14 10 13 15 17 14 14 14 17 10 15 7 15 14 16 16 17 15 17 9 17 16 18 8 16 15 2 2 3 6 19 12 6 13 18 20 11 19 8 2 21 5 20 19 11 22 3 20 18 13 23 5 12 18 20 24 3 8 19 20 $EndElements feenox-1.1/tests/spinning-disk-parallel-axisymmetric-full_unstruct.geo0000644000175000017500000000021314773607165023424 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Rectangle(1) = {0, 0, -t/2, R, t, 0}; feenox-1.1/tests/vector_init.fee0000644000175000017500000000010714773607165013746 00000000000000VECTOR x1[2] DATA 1 2 VECTOR x2[2] x2 = (3, 4) PRINT x1 x2 SEP " " feenox-1.1/tests/spinning-disk-holed-solid-halfquarter_unstruct.geo0000644000175000017500000000070314773607165022677 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; a = 0.01; Cylinder(1) = {0, 0, 0, 0, 0, t/2, R, 2*Pi/4}; Cylinder(2) = {0, 0, 0, 0, 0, t/2, a, 2*Pi/4}; BooleanDifference{ Volume{1}; Delete; }{ Volume{2}; Delete; } Physical Surface("symmetry1") = {11}; Physical Surface("symmetry2") = {9}; Physical Surface("symmetry3") = {10}; Physical Surface("inner") = {6}; Physical Volume("bulk") = {1}; feenox-1.1/tests/radiation-as-heatflux-celsius.fee0000644000175000017500000000036314773607165017263 00000000000000PROBLEM thermal 1D READ_MESH slab.msh TK = 273.15 Tref = 20 T_guess(x) = Tref k = 50 sigma = 5.670374419e-8 e = 0.8 BC left q=1200 BC right q=sigma*e*((Tref+TK)^4-(T(x)+TK)^4) SOLVE_PROBLEM PRINT T(0.0)-179.747+T(1.0)-155.747+T(0.5)-167.747 feenox-1.1/tests/la-p08-PUb-1-0-SP.fee0000644000175000017500000000066214773607165013727 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 7 PROBLEM neutron_sn 3D GROUPS 1 SN 4 READ_MESH $0.msh INCLUDE Pu-239b.fee BC mirror mirror BC vacuum vacuum mumps_icntl_14 = 50 SOLVE_PROBLEM # WRITE_RESULTS FORMAT vtk rc = 6.082547 PRINT %.1f keff phi1(0.25*rc,0,0)/phi1(0,0,0) phi1(0.50*rc,0,0)/phi1(0,0,0) phi1(0.75*rc,0,0)/phi1(0,0,0) phi1(1.00*rc,0,0)/phi1(0,0,0) SEP " " feenox-1.1/tests/convectionNL.fee0000644000175000017500000000032214773607165014021 00000000000000PROBLEM thermal 3d READ_MESH convectionbc.msh T_0(x,y,z) = 10 # initial guess BC Convection h=T(x,y,z) Tref=29.615 BC Temp T=200 BC Flux q=50000 k = 400 SOLVE_PROBLEM PRINT T(1.25,1,5.91044) feenox-1.1/tests/circle.sh0000755000175000017500000000113114773607165012536 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkgmsh for order in 1 2; do rm -f circle_perimeter${order}.dat for scale in 0.7 0.6 0.5 0.4 0.35 0.3; do gmsh -v 0 -2 ${dir}/circle.geo -order ${order} -clscale ${scale} -o circle-${order}-${scale}.msh ${feenox} ${dir}/circle_perimeter.fee ${order}-${scale} >> circle_perimeter${order}.dat done done answerzero1 circle_fit.fee 1 0.15 exitifwrong $? answerzero1 circle_fit.fee 2 0.25 exitifwrong $? feenox-1.1/tests/algebraic_expr.ref0000644000175000017500000000002314773607165014402 000000000000007 9 4.62909 1 -1 0 feenox-1.1/tests/la-p48-U-2-0-SL.geo0000644000175000017500000000043314773607165013455 00000000000000rc = 3.006375; n = 10; SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {rc, 0, 0}; Line(1) = {1, 2}; Physical Curve("fuel") = {1}; Physical Point("mirror") = {1}; Physical Point("vacuum") = {2}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = rc/n; Mesh.ElementOrder = 2; feenox-1.1/tests/airfoil.sh0000755000175000017500000000041514773607165012726 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde laplace answer airfoil.fee "2.4 2.5 2.5 2.5 2.6 -0.0" exitifwrong $? feenox-1.1/tests/neutron_diffusion_src.sh0000755000175000017500000000061314773607165015710 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde neutron_diffusion answer ud20-1-0-sl-src.fee "0.474 0.495" exitifwrong $? answer ud20-1-0-sl-src-vacuum.fee "0.503 0.517" exitifwrong $? answer reflected-src.fee "0.6688 0.7116" exitifwrong $? feenox-1.1/tests/reaction-elastic-lt.ref0000644000175000017500000000017614773607165015307 000000000000000.0000 0.0000 0.8333 0.0000 0.0000 0.1667 0.3904 0.0000 0.1107 0.4697 0.0000 0.7102 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 feenox-1.1/tests/fit2d.fee0000644000175000017500000000020314773607165012426 00000000000000READ_MESH mesh2d.msh DIMENSIONS 2 READ_FUNCTION f VAR a b c g(x,y) = a*exp(-b*x)*cos(c*y) FIT g TO f VIA a b c PRINT a b c SEP " " feenox-1.1/tests/tet1.msh0000644000175000017500000000020314773607165012323 00000000000000$MeshFormat 2.2 0 8 $EndMeshFormat $Nodes 4 1 0 0 0 2 1 0 0 3 0 1 0 4 0 0 1 $EndNodes $Elements 1 1 4 2 17 16 1 2 3 4 $EndElements feenox-1.1/tests/ray-effect-quarter.msh0000644000175000017500000002112114773607165015156 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 4 1 3 "mirror" 1 4 "vacuum" 2 1 "src" 2 2 "bulk" $EndPhysicalNames $Entities 7 8 2 0 1 1 0 0 0 2 1 1 0 0 3 0 1 0 0 4 0 2 0 0 5 2 2 0 0 6 2 0 0 0 7 0 0 0 0 1 0.9999999000000001 -9.999999994736442e-08 -1e-07 1.0000001 1.0000001 1e-07 0 2 1 -2 2 -9.999999994736442e-08 0.9999999000000001 -1e-07 1.0000001 1.0000001 1e-07 0 2 2 -3 3 -1e-07 0.9999999000000001 -1e-07 1e-07 2.0000001 1e-07 1 3 2 4 -3 4 -9.999999994736442e-08 1.9999999 -1e-07 2.0000001 2.0000001 1e-07 1 4 2 5 -4 5 1.9999999 -9.999999994736442e-08 -1e-07 2.0000001 2.0000001 1e-07 1 4 2 6 -5 6 0.9999999000000001 -1e-07 -1e-07 2.0000001 1e-07 1e-07 1 3 2 1 -6 7 -9.999999994736442e-08 -1e-07 -1e-07 1.0000001 1e-07 1e-07 1 3 2 7 -1 8 -1.000000001110223e-07 -1.000000000583867e-07 -1.000000001110223e-07 1.000000001110223e-07 1.0000001 1.000000001110223e-07 1 3 2 3 -7 1 -1.000000000583867e-07 -1.000000000583867e-07 -1.000000001110223e-07 1.0000001 1.0000001 1.000000001110223e-07 1 1 4 7 1 2 8 2 -9.999999994736442e-08 -9.999999994736442e-08 -1e-07 2.0000001 2.0000001 1e-07 1 2 6 -1 6 5 4 3 -2 $EndEntities $Nodes 17 169 1 169 0 1 0 1 1 1 0 0 0 2 0 1 2 1 1 0 0 3 0 1 3 0 1 0 0 4 0 1 4 0 2 0 0 5 0 1 5 2 2 0 0 6 0 1 6 2 0 0 0 7 0 1 7 0 0 0 1 1 0 5 8 9 10 11 12 1 0.3333333333333333 0 1 0.6666666666666666 0 1 0.1666666666666667 0 1 0.5 0 1 0.8333333333333333 0 1 2 0 5 13 14 15 16 17 0.6666666666666667 1 0 0.3333333333333334 1 0 0.8333333333333334 1 0 0.5 1 0 0.1666666666666667 1 0 1 3 0 5 18 19 20 21 22 0 1.666666666666667 0 0 1.333333333333333 0 0 1.833333333333333 0 0 1.5 0 0 1.166666666666667 0 1 4 0 11 23 24 25 26 27 28 29 30 31 32 33 1.666666666666667 2 0 1.333333333333333 2 0 1 2 0 0.6666666666666667 2 0 0.3333333333333335 2 0 1.833333333333333 2 0 1.5 2 0 1.166666666666667 2 0 0.8333333333333335 2 0 0.5 2 0 0.1666666666666667 2 0 1 5 0 11 34 35 36 37 38 39 40 41 42 43 44 2 0.3333333333333333 0 2 0.6666666666666666 0 2 1 0 2 1.333333333333333 0 2 1.666666666666667 0 2 0.1666666666666667 0 2 0.5 0 2 0.8333333333333333 0 2 1.166666666666667 0 2 1.5 0 2 1.833333333333333 0 1 6 0 5 45 46 47 48 49 1.333333333333333 0 0 1.666666666666667 0 0 1.166666666666667 0 0 1.5 0 0 1.833333333333333 0 0 1 7 0 5 50 51 52 53 54 0.3333333333333333 0 0 0.6666666666666666 0 0 0.1666666666666667 0 0 0.5 0 0 0.8333333333333333 0 0 1 8 0 5 55 56 57 58 59 0 0.6666666666666667 0 0 0.3333333333333334 0 0 0.8333333333333334 0 0 0.5 0 0 0.1666666666666667 0 2 1 0 25 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 0.6690288747534855 0.3356955414201521 0 0.6688023341504632 0.6688023341504632 0 0.3345114250191242 0.6678447583524575 0 0.3343882740373845 0.3343882740373845 0 0.667734500408565 0.8344011670752316 0 0.3339223791762288 0.8339223791762287 0 0.5016568795847938 0.6683235462514603 0 0.5008284397923969 0.8341617731257301 0 0.1672557125095621 0.6672557125095621 0 0.1669611895881143 0.833627856254781 0 0.3344498495282544 0.501116516194921 0 0.501708574395435 0.3350419077287684 0 0.6689156044519744 0.5022489377853077 0 0.5016827269901143 0.5016827269901143 0 0.8344011670752316 0.6677345004085649 0 0.8338672502042825 0.8338672502042824 0 0.8345144373767427 0.3345144373767427 0 0.8344578022259872 0.5011244688926538 0 0.3338608036853589 0.1671941370186922 0 0.1671941370186922 0.333860803685359 0 0.1669304018426794 0.1669304018426795 0 0.6678477707100761 0.1678477707100761 0 0.5008542871977175 0.1675209538643841 0 0.1672249247641272 0.5005582580974605 0 0.833923885355038 0.1672572186883714 0 2 2 0 85 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 1.328717950231932 0.9953846168985989 0 0.9955028037527247 1.328836137086058 0 0.6652696303675387 1.331936297034205 0 1.332994059769619 0.3329940597696189 0 1.661666828558245 1.328333495224912 0 0.3329712448947117 1.332971244894712 0 0.3329686929619829 1.666302026295316 0 1.328487276540788 1.661820609874122 0 0.6653384894128799 1.66533848941288 0 1.666331603759894 0.3329982704265602 0 1.665356374041023 0.665356374041023 0 1.663549633399636 1.663549633399636 0 1.327783042082187 1.327783042082187 0 1.331907301007745 0.6652406343410786 0 0.9973037230302315 1.663970389696898 0 1.663953631978679 0.9972869653120127 0 1.665108150033151 1.831774816699818 0 1.831774816699818 1.665108150033151 0 1.832554075016576 1.832554075016576 0 1.833165801879947 0.3331658018799467 0 1.66649913521328 0.1664991352132801 0 1.83324956760664 0.1665829009399734 0 1.662608230978941 1.495941564312274 0 1.830833414279122 1.330833414279122 0 1.83130411548947 1.497970782156137 0 1.499662831764756 0.3329961650980895 0 1.333163696551476 0.1664970298848094 0 1.499831415882378 0.1664980825490447 0 1.328135159311488 1.494801825978155 0 1.16289549978551 1.66289549978551 0 0.9964032633914781 1.496403263391478 0 1.161642922917456 1.328309589584123 0 1.162269211351483 1.495602544684816 0 0.8303862170601317 1.330386217060131 0 0.8313211062215558 1.664654439554889 0 0.6653040598902094 1.498637393223543 0 0.8308536616408437 1.49752032830751 0 1.494724935320216 1.32805826865355 0 1.496018454970212 1.662685121636879 0 1.495371695145214 1.495371695145214 0 1.166497029884809 0.3331636965514762 0 1.332450680388682 0.4991173470553487 0 1.165953650503873 0.6659536505038726 0 1.166225340194341 0.4995586735276744 0 0.3331522891140226 1.166485622447356 0 0.1664856224473559 1.333152289114023 0 0.1665761445570113 1.166576144557011 0 0.3329699689283474 1.499636635595014 0 0.1664843464809915 1.666484346480992 0 0.1664849844641737 1.499818317797507 0 1.330910304937061 1.830910304937061 0 1.498009227485106 1.831342560818439 0 0.9986518615151158 1.831985194848449 0 1.164781083226088 1.831447749892755 0 1.832678187020512 0.6660115203538448 0 1.665843988900458 0.4991773222337916 0 1.832921994450229 0.4995886611168958 0 1.32825049615706 1.161583829490393 0 1.496335791105306 0.9963357911053058 0 1.662810230268462 1.162810230268462 0 1.495530363212761 1.162197029879428 0 1.498631837524384 0.6652985041910509 0 1.664655003009851 0.8313216696765178 0 1.330312625619839 0.8303126256198388 0 1.497483814314845 0.8308171476481783 0 0.4991535911874314 1.665820257854098 0 0.4991204376311252 1.332453770964459 0 0.4991370144092783 1.499137014409278 0 1.49914733464457 0.4991473346445702 0 0.9977514018763624 1.164418068543029 0 0.6659681485171027 1.165968148517103 0 0.8318597751967325 1.165193108530066 0 1.164358975115966 0.9976923084492995 0 1.165156312809919 0.831822979476586 0 0.4995602188155628 1.166226885482229 0 1.163000949016711 1.163000949016711 0 0.3331510131476583 1.833151013147658 0 0.1665755065738291 1.833242173240496 0 1.166581848275738 0.1665818482757382 0 0.6660025780397734 1.83266924470644 0 0.8323272197774446 1.832327219777445 0 0.4995767955937157 1.832910128927049 0 1.83197681598934 0.9986434826560063 0 1.831405115134231 1.164738448467564 0 1.832327501504925 0.8323275015049255 0 $EndNodes $Elements 8 60 1 60 1 3 8 3 1 4 18 20 2 18 19 21 3 19 3 22 1 4 8 6 4 5 23 28 5 23 24 29 6 24 25 30 7 25 26 31 8 26 27 32 9 27 4 33 1 5 8 6 10 6 34 39 11 34 35 40 12 35 36 41 13 36 37 42 14 37 38 43 15 38 5 44 1 6 8 3 16 1 45 47 17 45 46 48 18 46 6 49 1 7 8 3 19 7 50 52 20 50 51 53 21 51 1 54 1 8 8 3 22 3 55 57 23 55 56 58 24 56 7 59 2 1 10 9 25 61 13 14 62 64 16 65 66 67 26 3 55 62 14 57 68 65 17 69 27 61 62 63 60 66 70 71 72 73 28 9 2 13 61 12 15 64 74 75 29 61 60 8 9 72 76 11 74 77 30 7 50 63 56 52 78 79 59 80 31 51 60 63 50 81 71 78 53 82 32 62 55 56 63 68 58 79 70 83 33 51 1 8 60 54 10 76 81 84 2 2 10 27 34 5 23 96 38 28 101 102 44 103 35 6 34 94 46 39 104 105 49 106 36 38 96 89 37 102 107 108 43 109 37 46 94 88 45 105 110 111 48 112 38 97 92 99 86 113 114 115 116 117 39 87 86 99 93 118 115 119 120 121 40 97 89 96 92 122 107 123 113 124 41 9 8 88 98 11 125 126 127 128 42 3 14 90 19 17 129 130 22 131 43 18 19 90 91 21 130 132 133 134 44 23 24 92 96 29 135 123 101 136 45 25 99 92 24 137 114 135 30 138 46 35 95 94 34 139 140 104 40 141 47 97 85 100 89 142 143 144 122 145 48 98 95 100 85 146 147 143 148 149 49 93 91 90 87 150 132 151 120 152 50 88 94 95 98 110 140 146 126 153 51 13 2 86 87 15 154 118 155 156 52 2 9 98 85 12 127 148 157 158 53 14 13 87 90 16 155 151 129 159 54 85 97 86 2 142 116 154 157 160 55 27 4 18 91 33 20 133 161 162 56 1 45 88 8 47 111 125 10 163 57 26 93 99 25 164 119 137 31 165 58 91 93 26 27 150 164 32 161 166 59 37 89 100 36 108 144 167 42 168 60 35 36 100 95 41 167 147 139 169 $EndElements feenox-1.1/tests/nafems-le11-tet4.geo0000644000175000017500000000017214773607165014325 00000000000000Mesh.ElementOrder = 1; // 1st order Mesh.RecombineAll = 0; // tetrahedra Merge "nafems-le11.geo"; feenox-1.1/tests/bc-groups4.ref0000644000175000017500000000034414773607165013426 00000000000000{ "bcs": [ { "name": "A", "groups": [ "left", "front", "bottom", "right" ] }, { "name": "C", "groups": [ "right", "back", "top" ] } ] } feenox-1.1/tests/cmp-float.fee0000644000175000017500000000007714773607165013311 00000000000000DEFAULT_ARGUMENT_VALUE 3 1e-3 PRINT abs((($1)-($2))/($2))<($3) feenox-1.1/tests/fit1d.fee0000644000175000017500000000021414773607165012427 00000000000000FUNCTION g(x) DATA { 0 1 1 2 2 5 3 10 4 17 } VAR a b c f(x) = a*x^2 + b*x + c FIT f TO g VIA a b c PRINT SEP " " %g a (b>1e-9) c feenox-1.1/tests/alias.fee0000644000175000017500000000015014773607165012510 00000000000000VAR x' ALIAS x' AS xi # xi = 1 VECTOR v[2] DATA 2 3 ALIAS v1 IS v[1] ALIAS v[2] AS v2 PRINT x' v1 v2 feenox-1.1/tests/thermal-slab-transient.fee0000644000175000017500000000131514773607165016003 00000000000000# example of a 1D heat transient problem # from https://www.math.ubc.ca/~peirce/M257_316_2012_Lecture_20.pdf # T(0,t) = 0 for t < 1 # A*(t-1) for t > 1 # T(L,t) = 0 # T(x,0) = 0 READ_MESH slab-1d-0.1m.msh DIMENSIONS 1 PROBLEM thermal end_time = 2 # unitary non-dimensional properties k = 1 rhocp = 1 alpha = k/rhocp # initial condition T_0(x) = 0 # analytical solution # example 20.2 equation 20.25 A = 1.23456789 L = 0.1 N = 100 T_a(x,t) = A*(t-1)*(1-x/L) + 2*A*L^2/(pi^3*alpha^2) * sum((exp(-alpha^2*(i*pi/L)^2*(t-1))-1)/i^3 * sin(i*pi*x/L), i, 1, N) # boundary conditions BC left T=if(t>1,A*(t-1),0) BC right T=0 SOLVE_PROBLEM IF done PRINT %e (T(0.5*L)-T_a(0.5*L,t))/T_a(0.5*L,t) ENDIF feenox-1.1/tests/cylinder.msh0000644000175000017500000001673714773607165013302 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 2 1 "bottom" 2 2 "top" 3 3 "bulk" $EndPhysicalNames $Entities 2 3 3 1 1 1 2.449293598294706e-16 1 0 2 0 2.449293598294706e-16 1 0 1 0.9999999000000001 -1.0000001 -1.0000001 1.0000001 1.0000001 1.0000001 0 2 1 -1 2 -9.999999994736442e-08 -9.999999975507064e-08 0.9999999000000001 1.0000001 1.000000002449294e-07 1.0000001 0 2 2 -1 3 -1e-07 -1.0000001 -1.0000001 1e-07 1.0000001 1.0000001 0 2 2 -2 1 -9.999999994736442e-08 -1.0000001 -1.0000001 1.0000001 1.0000001 1.0000001 0 4 1 -2 3 2 2 0.9999999000000001 -1.0000001 -1.0000001 1.0000001 1.0000001 1.0000001 1 2 1 1 3 -1e-07 -1.0000001 -1.0000001 1e-07 1.0000001 1.0000001 1 1 1 3 1 -9.999999994736442e-08 -1.0000001 -1.0000001 1.0000001 1.0000001 1.0000001 1 3 3 1 2 3 $EndEntities $Nodes 9 102 1 102 0 1 0 1 1 1 2.449293598294706e-16 1 0 2 0 1 2 0 2.449293598294706e-16 1 1 1 0 13 3 4 5 6 7 8 9 10 11 12 13 14 15 1 -0.7818314824680298 0.6234898018587336 1 -0.9749279121818236 -0.2225209339563143 1 -0.4338837391175582 -0.900968867902419 1 0.433883739117558 -0.9009688679024191 1 0.9749279121818236 -0.2225209339563146 1 0.7818314824680299 0.6234898018587334 1 -0.4338837391175581 0.9009688679024191 1 -0.9749279121818236 0.2225209339563144 1 -0.7818314824680299 -0.6234898018587335 1 -1.224646799147353e-16 -1 1 0.7818314824680297 -0.6234898018587337 1 0.9749279121818236 0.2225209339563142 1 0.4338837391175583 0.900968867902419 1 2 0 1 16 0.4999999999999999 2.449293598294706e-16 1 1 3 0 13 17 18 19 20 21 22 23 24 25 26 27 28 29 0 -0.7818314824680298 0.6234898018587336 0 -0.9749279121818236 -0.2225209339563143 0 -0.4338837391175582 -0.900968867902419 0 0.433883739117558 -0.9009688679024191 0 0.9749279121818236 -0.2225209339563146 0 0.7818314824680299 0.6234898018587334 0 -0.4338837391175581 0.9009688679024191 0 -0.9749279121818236 0.2225209339563144 0 -0.7818314824680299 -0.6234898018587335 0 -1.224646799147353e-16 -1 0 0.7818314824680297 -0.6234898018587337 0 0.9749279121818236 0.2225209339563142 0 0.4338837391175583 0.900968867902419 2 1 0 41 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 0.494426475276832 0.4918572100970653 0.8706758781978121 0.4957548801331312 -0.5455349012105486 0.8380881048918407 0.4999999999999999 -0.7818314824680299 -0.6234898018587335 0.5033017598964535 0.7818314824680297 -0.6234898018587337 0.4900947203106392 -0.9749279121818236 0.2225209339563144 0.5005502933160756 -1.224646799147353e-16 -1 0.5099052796893608 0.9749279121818236 0.2225209339563142 0.747213237638416 0.2542873589093528 0.9671287086520108 0.247213237638416 0.2542873589093528 0.9671287086520108 0.2478774400665656 -0.2845275866310323 0.9586678530366607 0.7478774400665655 -0.2845275866310323 0.9586678530366607 0.7478774400665655 -0.6723008902613167 0.7402779970753156 0.747213237638416 0.6487264141963257 0.7610217076562122 0.2478774400665656 -0.6723008902613167 0.7402779970753156 0.247213237638416 0.6487264141963257 0.7610217076562122 0.7450473601553196 -0.9009688679024191 0.4338837391175582 0.7450473601553196 -1 6.123233995736766e-17 0.4929248002218852 -0.8201722545969559 0.5721166601221697 0.75 -0.9009688679024191 -0.4338837391175581 0.75 -0.6234898018587336 -0.7818314824680298 0.4950473601553196 -0.9749279121818236 -0.2225209339563143 0.7502751466580377 -0.2225209339563145 -0.9749279121818236 0.7502751466580377 0.2225209339563143 -0.9749279121818236 0.5002751466580377 -0.4338837391175582 -0.900968867902419 0.7516508799482268 0.6234898018587334 -0.7818314824680299 0.7516508799482268 0.900968867902419 -0.4338837391175583 0.5019260266062646 0.433883739117558 -0.9009688679024191 0.7549526398446804 1 -1.83697019872103e-16 0.7549526398446804 0.9009688679024193 0.433883739117558 0.5066035197929072 0.9749279121818236 -0.2225209339563146 0.5021658774830964 0.8018047497183143 0.5975860970012199 0.2450473601553196 -1 6.123233995736766e-17 0.2450473601553196 -0.9009688679024191 0.4338837391175582 0.2499999999999999 -0.6234898018587336 -0.7818314824680298 0.2499999999999999 -0.9009688679024191 -0.4338837391175581 0.2502751466580378 0.2225209339563143 -0.9749279121818236 0.2502751466580378 -0.2225209339563145 -0.9749279121818236 0.2516508799482268 0.900968867902419 -0.4338837391175583 0.2516508799482268 0.6234898018587334 -0.7818314824680299 0.2549526398446804 0.9009688679024193 0.433883739117558 0.2549526398446804 1 -1.83697019872103e-16 2 2 0 8 71 72 73 74 75 76 77 78 1 0 -3.172065784643304e-17 1 -0.3909157412340149 0.3117449009293668 1 1.224646799147353e-16 0.5 1 0.390915741234015 0.3117449009293667 1 -0.4874639560909118 -0.1112604669781572 1 -0.2169418695587791 -0.4504844339512095 1 0.216941869558779 -0.4504844339512096 1 0.4874639560909118 -0.1112604669781573 2 3 0 8 79 80 81 82 83 84 85 86 0 1.586032892321652e-17 -3.172065784643304e-17 0 1.303948443763436e-16 0.5 0 -0.3909157412340149 0.3117449009293668 0 0.390915741234015 0.3117449009293667 0 -0.4874639560909118 -0.1112604669781572 0 -0.2169418695587791 -0.4504844339512095 0 0.216941869558779 -0.4504844339512096 0 0.4874639560909118 -0.1112604669781573 3 1 0 16 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 0.247213237638416 0.2459286050485327 0.4353379390989061 0.4950906777049816 -0.02683884555674163 0.8543819915448264 0.2478774400665656 -0.2727674506052743 0.4190440524459204 0.5 7.930164461608261e-18 -3.172065784643304e-17 0.7478774400665655 -0.2727674506052743 0.4190440524459204 0.747213237638416 0.2459286050485327 0.4353379390989061 0.2450473601553196 -0.4874639560909118 0.1112604669781572 0.7450473601553196 -0.4874639560909118 0.1112604669781572 0.2549526398446804 0.4874639560909118 0.1112604669781571 0.7549526398446804 0.4874639560909118 0.1112604669781571 0.2516508799482268 0.3909157412340148 -0.3117449009293669 0.7516508799482268 0.3909157412340148 -0.3117449009293669 0.75 -0.390915741234015 -0.3117449009293667 0.2499999999999999 -0.390915741234015 -0.3117449009293667 0.2502751466580378 -5.33021754957594e-17 -0.5 0.7502751466580377 -6.123233995736766e-17 -0.5 $EndNodes $Elements 3 50 1 50 2 2 9 7 1 3 71 1 72 73 9 2 1 71 8 73 74 15 3 4 71 3 75 72 10 4 5 71 4 76 75 11 5 6 71 5 77 76 12 6 7 71 6 78 77 13 7 8 71 7 74 78 14 2 3 9 7 8 17 2 79 23 80 81 9 2 22 79 29 82 80 10 18 17 79 24 81 83 11 19 18 79 25 83 84 12 20 19 79 26 84 85 13 21 20 79 27 85 86 14 22 21 79 28 86 82 3 1 11 36 15 79 30 31 71 87 88 89 90 91 92 16 1 31 30 71 40 88 37 73 92 91 17 79 30 2 31 87 38 80 89 39 88 18 31 34 79 71 47 93 89 91 90 94 19 30 79 36 71 87 95 60 92 96 90 20 79 36 71 33 95 96 90 97 98 59 21 71 34 79 32 94 93 90 99 100 50 22 33 71 79 35 98 90 97 56 101 102 23 35 71 79 32 102 90 101 53 100 99 24 34 31 3 71 47 41 45 94 72 91 25 30 79 22 36 87 82 44 60 69 95 26 79 17 34 31 81 62 93 89 47 43 27 36 8 30 71 58 42 60 96 92 74 28 36 79 21 33 95 86 70 59 67 97 29 32 71 34 4 99 94 50 48 46 75 30 79 20 33 35 85 68 97 101 56 65 31 79 19 35 32 84 66 101 100 53 63 32 35 5 71 32 51 76 102 53 99 49 33 71 33 6 35 98 54 77 102 52 56 34 34 18 79 32 61 83 93 50 100 64 35 7 71 36 33 78 96 57 55 59 98 36 1 3 31 71 9 41 40 73 91 72 37 17 79 2 31 81 80 23 43 39 89 38 8 1 30 71 15 37 42 74 92 73 39 30 22 79 2 44 82 87 38 80 29 40 79 21 22 36 86 28 82 95 69 70 41 71 3 34 4 72 45 94 75 46 10 42 79 20 21 33 85 27 86 97 67 68 43 79 19 20 35 84 26 85 101 65 66 44 19 79 18 32 84 83 25 63 64 100 45 32 5 71 4 49 76 99 48 75 11 46 71 6 5 35 77 12 76 102 51 52 47 33 7 71 6 55 78 98 54 77 13 48 71 36 8 7 96 58 74 78 14 57 49 18 79 17 34 83 81 24 61 62 93 50 30 2 31 1 38 39 88 37 40 16 $EndElements feenox-1.1/tests/nafems-le1-6.msh0000644000175000017500000001232714773607165013553 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 9 0 1 "A" 0 2 "B" 0 3 "C" 0 4 "D" 1 5 "AB" 1 6 "BC" 1 7 "CD" 1 8 "DA" 2 9 "bulk" $EndPhysicalNames $Entities 4 4 1 0 1 6.123233995736766e-14 1000 0 1 1 2 9.950255243072245e-14 2750 0 1 2 3 3250 0 0 1 3 4 2000 0 0 1 4 1 -1e-07 999.9999999 -1e-07 1e-07 2750.0000001 1e-07 1 5 2 1 -2 2 -9.999985195463523e-08 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 6 2 3 -2 3 1999.9999999 -1e-07 -1e-07 3250.0000001 1e-07 1e-07 1 7 2 3 -4 4 -9.999985195463523e-08 -1.000000224848918e-07 -1e-07 2000.0000001 1000.0000001 1e-07 1 8 2 4 -1 1 -1.000000793283107e-07 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 9 4 1 -2 3 4 $EndEntities $Nodes 9 93 1 93 0 1 0 1 1 6.123233995736766e-14 1000 0 0 2 0 1 2 9.950255243072245e-14 2750 0 0 3 0 1 3 3250 0 0 0 4 0 1 4 2000 0 0 1 1 0 7 5 6 7 8 9 10 11 0 1434.232387780806 0 0 1870.635937451771 0 0 2309.221504784242 0 0 1217.116193890403 0 0 1652.434162616289 0 0 2089.928721118007 0 0 2529.610752392121 0 1 2 0 11 12 13 14 15 16 17 18 19 20 21 22 3122.462036085646 762.8211063815952 0 2760.436694568109 1451.465694415729 0 2214.818610289794 2012.544242367443 0 1542.004361425019 2420.757654968403 0 790.4638145833807 2667.420913683683 0 3217.713710984367 386.6640467349545 0 2967.748292699926 1120.944705687722 0 2506.599310405891 1750.426233039374 0 1890.644312601312 2236.787179861301 0 1172.987393778596 2564.64199776051 0 397.3919830891709 2729.364896783245 0 1 3 0 7 23 24 25 26 27 28 29 2935.158217794536 0 0 2621.882812463697 0 0 2310.165991177719 0 0 3092.579108897268 0 0 2778.520515129116 0 0 2466.024401820708 0 0 2155.082995588859 0 0 1 4 0 11 30 31 32 33 34 35 36 37 38 39 40 1861.446094820848 365.7247722250347 0 1559.233579327545 626.2568652512748 0 1196.780614328439 801.2047430538036 0 808.4029301048257 914.669981823763 0 407.2395142007033 979.0500469937141 0 1961.850933064361 194.3842306068678 0 1721.609433414114 508.9353983511886 0 1382.350556681957 722.6871623394666 0 1004.573648941004 864.701073182715 0 608.7371269160137 952.5543436353169 0 203.891146165294 994.7899778992804 0 2 1 0 53 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 502.3300301855381 1397.990225787693 0 990.4335021784177 1288.379722679649 0 1449.389225604628 1101.777796300221 0 1857.291463218973 831.0182368467947 0 2174.345502280971 464.257394712871 0 597.8959987819819 1819.025105443216 0 1173.374227174532 1663.958012219458 0 1703.260880027457 1403.853714800613 0 2156.839636644623 1036.803415292877 0 2488.809406913281 563.2826803089997 0 693.9397972024943 2242.165159413261 0 1357.229655759425 2041.414193132276 0 1958.401892672171 1707.440012833444 0 2457.885550878158 1243.617519590274 0 2804.845631006595 662.8030923134188 0 251.1650150927692 1416.11130678425 0 454.7847721931207 1188.520136390704 0 746.3817661819779 1343.184974233671 0 899.4182161416218 1101.524852251706 0 1219.911363891523 1195.078759489935 0 1323.084919966533 951.4912696770125 0 1653.3403444118 966.398016573508 0 1708.262521273259 728.6375510490348 0 2015.818482749972 647.6378157798329 0 2017.89579855091 414.9910834689529 0 2242.255746729345 232.1286973564356 0 298.9479993909911 1844.830521447493 0 550.11301448376 1608.507665615454 0 885.6351129782569 1741.491558831337 0 1081.903864676475 1476.168867449554 0 1438.317553600994 1533.905863510036 0 1576.325052816042 1252.815755550417 0 1930.05025833604 1220.328565046745 0 2007.065549931798 933.9108260698358 0 2322.824521778952 800.0430478009382 0 2331.577454597126 513.7700375109354 0 2555.346109688489 281.6413401544999 0 346.9698986012472 2275.693332098752 0 645.9178979922381 2030.595132428238 0 1025.58472648096 2141.789676272769 0 1265.301941466979 1852.686102675867 0 1657.815774215798 1874.42710298286 0 1830.831386349814 1555.646863817029 0 2208.143721775165 1475.528766211859 0 2307.362593761391 1140.210467441575 0 2631.365590942377 953.2103059518465 0 2646.827518959938 613.0428863112093 0 2870.001924400565 331.4015461567094 0 742.2018058929375 2454.793036548472 0 1449.617008592222 2231.08592405034 0 2086.610251480983 1859.992127600443 0 2609.161122723133 1347.541607003002 0 2963.653833546121 712.812099347507 0 $EndNodes $Elements 9 48 1 48 0 1 15 1 1 1 0 2 15 1 2 2 0 3 15 1 3 3 0 4 15 1 4 4 1 1 8 4 5 1 5 8 6 5 6 9 7 6 7 10 8 7 2 11 1 2 8 6 9 3 12 17 10 12 13 18 11 13 14 19 12 14 15 20 13 15 16 21 14 16 2 22 1 3 8 4 15 3 23 26 16 23 24 27 17 24 25 28 18 25 4 29 1 4 8 6 19 4 30 35 20 30 31 36 21 31 32 37 22 32 33 38 23 33 34 39 24 34 1 40 2 1 16 24 25 1 5 41 34 8 56 57 40 26 34 41 42 33 57 58 59 39 27 33 42 43 32 59 60 61 38 28 32 43 44 31 61 62 63 37 29 31 44 45 30 63 64 65 36 30 30 45 25 4 65 66 29 35 31 5 6 46 41 9 67 68 56 32 41 46 47 42 68 69 70 58 33 42 47 48 43 70 71 72 60 34 43 48 49 44 72 73 74 62 35 44 49 50 45 74 75 76 64 36 45 50 24 25 76 77 28 66 37 6 7 51 46 10 78 79 67 38 46 51 52 47 79 80 81 69 39 47 52 53 48 81 82 83 71 40 48 53 54 49 83 84 85 73 41 49 54 55 50 85 86 87 75 42 50 55 23 24 87 88 27 77 43 7 2 16 51 11 22 89 78 44 51 16 15 52 89 21 90 80 45 52 15 14 53 90 20 91 82 46 53 14 13 54 91 19 92 84 47 54 13 12 55 92 18 93 86 48 55 12 3 23 93 17 26 88 $EndElements feenox-1.1/tests/circle.geo0000644000175000017500000000022614773607165012677 00000000000000SetFactory("OpenCASCADE"); Disk(1) = {0, 0, 0, 1}; Mesh.MeshSizeMax = 1; Physical Curve("perimeter", 2) = {1}; Physical Surface("surface", 3) = {1}; feenox-1.1/tests/laplace2d.sh0000755000175000017500000000072614773607165013135 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde laplace checkgmsh gmsh -v 0 -2 ${dir}/square-centered.geo || exit $? answer laplace-square.fee "-1 -2.68735 -1" exitifwrong $? answer poisson-square.fee "0.2949 0.2044 -0.2044" exitifwrong $? gmsh -v 0 -2 ${dir}/maze.geo || exit $? answerzero maze.fee exitifwrong $? feenox-1.1/tests/sqrt.fee0000644000175000017500000000001614773607165012411 00000000000000PRINT sqrt(2) feenox-1.1/tests/qrng.sh0000755000175000017500000000112314773607165012245 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answerdiff qrng.fee exitifwrong $? answerdiff qrng_others.fee exitifwrong $? answerdiff qrng2d_sobol.fee exitifwrong $? answerdiff qrng2d_rhalton.fee exitifwrong $? echo -n "qrng2d_sobol_offset.fee ... " feenox qrng2d_sobol_offset.fee 0 4 > qrng2d_sobol_offset.last feenox qrng2d_sobol_offset.fee 4 4 >> qrng2d_sobol_offset.last diff qrng2d_sobol_offset.last qrng2d_sobol.ref exitifwrong $? echo "ok" feenox-1.1/tests/thermal-1d.sh0000755000175000017500000000236214773607165013242 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal answerzero thermal-slab-uniform-nosource.fee exitifwrong $? answerzero thermal-slab-space-nosource.fee exitifwrong $? answerzero thermal-slab-temperature-nosource.fee exitifwrong $? answerzero thermal-slab-heat-nosource.fee exitifwrong $? answerzero thermal-slab-convection-nosource.fee exitifwrong $? answerzero thermal-slab-convection-as-heat-nosource.fee exitifwrong $? answerzero thermal-slab-transient.fee 1e-4 exitifwrong $? answerzero thermal-slab-uniform-source.fee exitifwrong $? answerzero thermal-slab-transient-mms.fee 2e-3 exitifwrong $? answerzero thermal-slab-uniform-source-dirichlet-neumann.fee exitifwrong $? if [ ! -z "$(which octave)" ]; then base="thermal-slab-uniform-source-octave" echo "K_bc; b_bc; K_bc\\\\b_bc" | octave > ${base}.last difference=$(diff -w ${dir}/${base}.ref ${dir}/${base}.last) if [ ! -z "${difference}" ]; then echo "Octave check on DUMP failed" exitifwrong 1 fi fi # clean up if we are not in tests if [ ! -e ./functions.sh ]; then rm -f b_bc.m b.m K_bc.m K.m ${base}.last fi feenox-1.1/tests/ud20-1-0-sl.fee0000644000175000017500000000054714773607165013112 00000000000000PROBLEM neutron_diffusion 1d READ_MESH ud20-1-0-sl.msh a = 2 * 10.371065 # critical size of the problem UD20-1-0-SL (number 22 report Los Alamos) Sigma_t1 = 0.54628 Sigma_s1.1 = 0.464338 nuSigma_f1 = 1.70*0.054628 D1 = 1/(3*Sigma_t1) BC left null BC right null SOLVE_PROBLEM kdiff = nuSigma_f1/((Sigma_t1-Sigma_s1.1)+D1*(pi/a)^2) PRINT abs(keff-kdiff) feenox-1.1/tests/expressions_functions.fee0000644000175000017500000000005414773607165016074 00000000000000f(x) = x x = 1 a = (-f(x/2))-(-2*x) PRINT a feenox-1.1/tests/two-squares.geo0000644000175000017500000000050014773607165013723 00000000000000SetFactory("OpenCASCADE"); Rectangle(1) = {0, 0, 0, 1, 1, 0}; Rectangle(2) = {1, 0, 0, 1, 1, 0}; Coherence; Mesh.MeshSizeMax = 0.25; Mesh.MeshSizeMin = 0.25; Recombine Surface {2}; Physical Curve("left", 1) = {4}; Physical Curve("right", 2) = {6}; Physical Surface("soft", 3) = {1}; Physical Surface("hard", 4) = {2}; feenox-1.1/tests/beam-cantilever-tet10.geo0000644000175000017500000000011514773607165015424 00000000000000Mesh.ElementOrder = 2; Mesh.RecombineAll = 0; Merge "beam-cantilever.geo"; feenox-1.1/tests/materials.fee0000644000175000017500000000015514773607165013405 00000000000000READ_MESH two-squares.msh DIMENSIONS 2 MATERIAL soft E=0.1 MATERIAL hard E=10 PRINT E(0.5,0.5) E(1.5,0.5) feenox-1.1/tests/cube-tangential.fee0000644000175000017500000000060614773607165014467 00000000000000PROBLEM mechanical READ_MESH cube-hex.msh E = 1 nu = 0.3 BC bottom symmetry BC left symmetry BC front symmetry BC top tension=0.12345678 BC right tension=0.23456789 BC back compression=0.345678901 ksp_rtol = 1e-9 SOLVE_PROBLEM # WRITE_MESH $0.vtk VECTOR u v w sigmax sigmay sigmaz DUMP K K_bc b b_bc FORMAT octave PRINT %.6f sigma1(0,0,0) sigma2(0,0,0) sigma3(0,0,0) SEP " " feenox-1.1/tests/modal-solidworks.fee0000644000175000017500000000026314773607165014716 00000000000000READ_MESH PF.msh PROBLEM modal MODES 6 DIMENSIONS 3 E = 204e3 nu = 0.29 rho = 7.858e-9 BC top fixed BC bottom fixed SOLVE_PROBLEM # PRINT_VECTOR f mu Mu Gamma PRINT %.3f Mu[6] feenox-1.1/tests/cylinder-traction.fee0000644000175000017500000000024014773607165015051 00000000000000PROBLEM mechanical READ_MESH cylinder.msh E=1 nu=0.25 BC bottom fixed PHYSICAL_GROUP top DIMENSION 2 BC top tx=1/top_area SOLVE_PROBLEM PRINT %.3f u(1,0,0) feenox-1.1/tests/annulus-modal.sh0000755000175000017500000000047514773607165014066 00000000000000#!/bin/sh -e for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkgmsh checkslepc checkpde modal gmsh -v 0 -3 ${dir}/annulus.geo || exit $? answerdiff annulus-modal.fee exitifwrong $? feenox-1.1/tests/mesh2d-bin.msh0000644000175000017500000000352514773607165013410 00000000000000$MeshFormat 4.1 1 8  $EndMeshFormat $PhysicalNames 5 1 1 "left" 1 2 "right" 1 3 "bottom" 1 4 "up" 2 5 "bulk" $EndPhysicalNames $Entities ?????????? $EndEntities $Nodes   ?????????? ??????By?C? $EndNodes $Elements                    $EndElements feenox-1.1/tests/pellet-nonlinear-linear-option.fee0000644000175000017500000000050514773607165017451 00000000000000PROBLEM thermal LINEAR READ_MESH pellet.msh VAR T' tau(T') = (T'+273.15)/1000 cond(T') = 100/(7.5408 + 17.692*tau(T') + 3.614*tau(T')^2) + 6400/(tau(T')^(5/2))*exp(-16.35/tau(T')) k(x,y,z) = cond(T(x,y,z)) r = 4e-3 q = 300 * 100 / (pi*r^2) BC symmetry adiabatic BC external T=420 SOLVE_PROBLEM PRINT %.0f T_max-1115+393 feenox-1.1/tests/open.fee0000644000175000017500000000011414773607165012360 00000000000000OPEN test-file.txt MODE w PRINT test FILE test-file.txt CLOSE test-file.txt feenox-1.1/tests/spinning-disk-parallel-plane-eighth_unstruct.geo0000644000175000017500000000061014773607165022314 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Point(1) = {0,0,0}; Point(2) = {R,0,0}; Point(3) = {R/Sqrt(2),R/Sqrt(2),0}; Circle(1) = {2, 1, 3}; Line(2) = {3, 1}; Line(3) = {1, 2}; Curve Loop(1) = {1, 2, 3}; Plane Surface(1) = {1}; Physical Surface("bulk") = {1}; Physical Curve("symmetry1") = {3}; Physical Curve("symmetry2") = {2}; feenox-1.1/tests/nafems-t4.fee0000644000175000017500000000064614773607165013227 00000000000000# NAFEMS-T4 benchmark: 2d steady-state heat conduction with convection PROBLEM thermal 2D READ_MESH nafems-t4.msh # thermal conductivity k = 52 # [ W/(m ºC) ] # boundary conditions BC AB T=100 # [ ºC ] BC DA adiabatic BC BC h=750 Tref=0 # [ W/(m^2 ºC) , ºC ] BC CD h=750 Tref=0 # [ W/(m^2 ºC) , ºC ] SOLVE_PROBLEM PRINT %.1f T(0.6,0.2) WRITE_MESH nafems-t4-result.msh T VECTOR qx qy 0 feenox-1.1/tests/pellet-linear-transient-from-ss.fee0000644000175000017500000000075514773607165017560 00000000000000PROBLEM thermal 3D READ_MESH pellet.msh end_time = 30 # seconds k = 2.8 # W / (m K) rho = 10980 # kg / m^3 cp = 300 # J / (kg K) # q is in W / m^3 = 300 W/cm * 100 cm/m / area r = 4e-3 q = 300 * 100 / (pi*r^2) FUNCTION T_ext(t) DATA { 0 420 1 420 10 600 30 600 } BC symmetry adiabatic BC external T=T_ext(t) SOLVE_PROBLEM # PRINT t T(0,0,0) T(0.5*r,0,0) T(0.85*r,0,0) IF done PRINT %.0f T(0,0,0)-1453 ENDIF # WRITE_MESH pellet-linear-transient-from-ss.msh T feenox-1.1/tests/time_path_raw.fee0000644000175000017500000000022214773607165014242 00000000000000end_time = 5 dt = 7/37 TIME_PATH 1 2 3 4 5 IF in_time_path PRINT t heaviside(t-1)-heaviside(t-3) lag(heaviside(t-1)-heaviside(t-3),1.234) ENDIF feenox-1.1/tests/transient-from-mesh-different-dt.ref0000644000175000017500000000020014773607165017703 000000000000000 0.66294 0.1 0.65880 0.2 0.64782 0.3 0.63272 0.4 0.60928 0.5 0.58178 0.6 0.54645 0.7 0.50553 0.8 0.46141 0.9 0.41117 1 0.35819 feenox-1.1/tests/rectangular_plate_with_hole.geo0000644000175000017500000000072014773607165017173 00000000000000// SetFactory("OpenCASCADE"); l = 15; w = 5; t = 1; r = 0.5; Box(1) = {-l/2, -w/2, -t/2, l, w, t}; Cylinder(2) = {0, 0, -t, 0, 0, 2*t, r}; BooleanDifference{ Volume{1}; Delete; }{ Volume{2}; Delete; } Physical Surface("left") = {1}; Physical Surface("right") = {6}; Physical Surface("hole") = {7}; Physical Volume("bulk") = {1}; Mesh.MeshSizeMax = t; Mesh.MeshSizeMin = 0.1*t; Mesh.MeshSizeFromCurvature = 24; // Mesh.OptimizeNetgen = 1; Mesh.ElementOrder = 2; feenox-1.1/tests/map-cube.fee0000644000175000017500000000102514773607165013112 00000000000000# read the function f(x,y,z) from the nodes of the source mesh READ_MESH map-cube-$1-src.msh DIM 3 READ_FIELD f AS f_pointwise # read the dest mesh READ_MESH map-cube-$2.msh # read analytical f(x,y,z) INCLUDE map-function.fee # evaluate f(x,y,z) at the nodes of the dest mesh and write it into $1 -> $2 WRITE_MESH map-cube-$1-$2-dst.msh MESH map-cube-$2.msh %.10f f_pointwise abs(f_pointwise(x,y,z)-f(x,y,z)) INTEGRATE (f_pointwise(x,y,z)-f(x,y,z))^2 RESULT num INTEGRATE 1 RESULT den PRINT num/den feenox-1.1/tests/ud20-1-0-sl.geo0000644000175000017500000000063114773607165013117 00000000000000// critical size of the problem UD20-1-0-SL (number 22 report Los Alamos) a = 2 * 10.371065; lc = a/18; Point(1) = {0, 0, 0, 1.4*lc}; Point(2) = {a/2, 0, 0, 0.6*lc}; Point(3) = {a, 0, 0, 1.4*lc}; Line(1) = {1, 2}; Line(2) = {2, 3}; Physical Point("left") = {1}; Physical Point("right") = {3}; Physical Line("fuel") = {1, 2}; //Uncomment the next line to have 2 order elements. //Mesh.ElementOrder = 2; feenox-1.1/tests/encased_rod_tb.fee0000644000175000017500000000053714773607165014363 00000000000000PROBLEM thermal 3D READ_MESH encased_rod.msh k_cu = 372 k_ss = 18 BC top T=400 BC bottom T=100 SOLVE_PROBLEM WRITE_MESH encased_rod_tb.vtk T VECTOR qx qy qz T_top_num = T(0.25,0.03,0.02) T_bot_num = T(0.25,0.01,0.02) delta_T_cu_num = T_top_num - T_bot_num delta_T_cu = 300/(1 + 2*(k_cu/0.02)/(k_ss/0.01)) PRINT delta_T_cu_num-delta_T_cu feenox-1.1/tests/arguments_quoted.fee0000644000175000017500000000003514773607165015007 00000000000000PRINT "$1 $(1) ${2}" SEP " " feenox-1.1/tests/var.fee0000644000175000017500000000000714773607165012210 00000000000000VAR x' feenox-1.1/tests/beam-cantilever.geo0000644000175000017500000000134314773607165014475 00000000000000// https://autofem.com/examples/determining_natural_frequencie.html SetFactory("OpenCASCADE"); L = 0.5; b = 0.05; h = 0.02; Box(1) = {0,-b/2,-h/2, L, b, h}; Physical Surface("left", 1) = {1}; Physical Surface("right", 2) = {2}; Physical Volume("bulk", 3) = {1}; Transfinite Curve {1, 3, 5, 7} = 2/Mesh.ElementOrder + 1; Transfinite Curve {2, 4, 6, 8} = 4/Mesh.ElementOrder + 1; Transfinite Curve {9, 10, 11, 12} = 8/Mesh.ElementOrder + 1; /* Transfinite Surface {1} = {1, 3, 4, 2}; Transfinite Surface {2} = {5, 7, 8, 6}; Transfinite Surface {3} = {2, 6, 5, 1}; Transfinite Surface {4} = {3, 7, 8, 4}; Transfinite Surface {5} = {4, 8, 6, 2}; Transfinite Surface {6} = {1, 5, 7, 3}; */ Transfinite Surface "*"; Transfinite Volume "*"; feenox-1.1/tests/two-cubes-isotropic.sh0000755000175000017500000000071314773607165015223 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkgmsh gmsh -v 0 -3 ${dir}/two-cubes.geo || exit $? answer two-cubes-isotropic-variables.fee "10.2" exitifwrong $? answer two-cubes-isotropic-functions.fee "10.2" exitifwrong $? answer two-cubes-isotropic-materials.fee "10.2" exitifwrong $? feenox-1.1/tests/reed.sh0000755000175000017500000000107314773607165012221 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi # skip in problematic architectures arch=$(uname -m) if [ "x${arch}" = "xalpha" ] || [ "x${arch}" = "xs390x" ] ; then exit 77 fi checkgmsh checkpde neutron_sn gmsh -v 0 -1 ${dir}/reed.geo || exit $? answer1zero reed.fee 2 0.08 exitifwrong $? answer1zero reed.fee 4 0.02 exitifwrong $? answer1zero reed.fee 6 0.015 exitifwrong $? answer1zero reed.fee 8 0.015 exitifwrong $? feenox-1.1/tests/xfail-few-properties-ortho-shear.fee0000644000175000017500000000036114773607165017730 00000000000000PROBLEM mechanical READ_MESH cylinder.msh Ex = 1 Ey = 2 Ez = 3 nuxy = 0.3 nuyz = 0.3 nuzx = 0.3 Gxy = 3 # Gyz = 2 Gzx = 1 alphax = 0.1 alphay = 0.2 alphaz = 0.3 T(x,y,z) = x^2+y^2+z^2 BC bottom fixed SOLVE_PROBLEM PRINT %.2f displ_max feenox-1.1/tests/radiation-as-convection-kelvin.fee0000644000175000017500000000041214773607165017426 00000000000000PROBLEM thermal 1D READ_MESH slab.msh TK = 273.15 Tref = 20+TK T_guess(x) = Tref k = 50 sigma = 5.670374419e-8 e = 0.8 BC left q=1200 BC right h=sigma*e*(T(x)^2+Tref^2)*(T(x)+Tref) Tref=Tref SOLVE_PROBLEM PRINT T(0.0)-TK-179.747+T(1.0)-TK-155.747+T(0.5)-TK-167.747 feenox-1.1/tests/azmy-structured.geo0000644000175000017500000000124114773607165014616 00000000000000// --- geometry ------------------------------------------------- SetFactory("OpenCASCADE"); a = 5; b = 10; Rectangle(1) = {0, 0, 0, a, a}; Rectangle(2) = {a, a, 0, a, a}; Rectangle(3) = {0, a, 0, a, a}; Rectangle(4) = {a, 0, 0, a, a}; Coherence; // --- physical groups ------------------------------------------ Physical Surface("llq",1) = {1}; Physical Surface("lrq",2) = {4}; Physical Surface("urq",3) = {2}; Physical Surface("ulq",4) = {3}; Physical Curve("mirror", 13) = {10, 4, 1, 11}; Physical Curve("vacuum", 14) = {9, 7, 6, 12}; Transfinite Curve "*" = 1+1; Transfinite Surface "*"; Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 0; feenox-1.1/tests/annulus.geo0000644000175000017500000000240014773607165013117 00000000000000SetFactory("OpenCASCADE"); a = 508; b = 1016; h = 25.4; n = 8; Point(1) = {0,0,0}; Point(2) = {a/2,0,0}; Point(3) = {0,a/2,0}; Point(4) = {-a/2,0,0}; Point(5) = {0,-a/2,0}; Point(6) = {b/2,0,0}; Point(7) = {0,b/2,0}; Point(8) = {-b/2,0,0}; Point(9) = {0,-b/2,0}; Circle(1) = {2, 1, 3}; Circle(2) = {3, 1, 4}; Circle(3) = {4, 1, 5}; Circle(4) = {5, 1, 2}; Circle(5) = {6, 1, 7}; Circle(6) = {7, 1, 8}; Circle(7) = {8, 1, 9}; Circle(8) = {9, 1, 6}; Line(9) = {2, 6}; Line(10) = {3, 7}; Line(11) = {4, 8}; Line(12) = {5, 9}; Curve Loop(1) = {9, 5, -10, -1}; Plane Surface(1) = {1}; Curve Loop(2) = {10, 6, -11, -2}; Plane Surface(2) = {2}; Curve Loop(3) = {11, 7, -12, -3}; Plane Surface(3) = {3}; Curve Loop(4) = {12, 8, -9, -4}; Plane Surface(4) = {4}; Transfinite Curve {1, 2, 3, 4, 5, 6, 7, 8} = 1+2*n; Transfinite Curve {10, 11, 12, 9} = 1+n; Transfinite Surface {1} = {2, 6, 7, 3}; Transfinite Surface {2} = {3, 7, 8, 4}; Transfinite Surface {3} = {8, 9, 5, 4}; Transfinite Surface {4} = {9, 6, 2, 5}; Mesh.RecombineAll = 1; Extrude {0, 0, h} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {n/4}; Recombine; } Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 0; Physical Volume("bulk") = {1, 2, 3, 4}; Physical Surface("inner") = {12, 16, 19, 8}; feenox-1.1/tests/implicit.fee0000644000175000017500000000000014773607165013223 00000000000000feenox-1.1/tests/xfail-data-variable.fee0000644000175000017500000000033514773607165015221 00000000000000Rho0 = 1 FUNCTION RhoExt(t) DATA {0 0 5 0 6 Rho0 20 Rho0 21 0 100 0 } feenox-1.1/tests/nafems-t3-1d.fee0000644000175000017500000000066114773607165013525 00000000000000# NAFEMS-T3 benchmark: 1d transient heat conduction with dirichlet READ_MESH slab-1d-0.1m.msh DIMENSIONS 1 PROBLEM thermal # transient up to 32 seconds dt_0 = 5e-3 end_time = 32 # uniform properties k = 35 # W/(m K) cp = 440.5 # J/(kg K) rho = 7200 # kg/m^3 # boundary conditions BC left T=0 BC right T=100*sin(pi*t/40) # initial condition T_0(x) = 0 SOLVE_PROBLEM IF done PRINT T(0.08) ENDIF feenox-1.1/tests/thermal-two-squares-material-explicit-space.fee0000644000175000017500000000036314773607165022055 00000000000000# this binary was converted from the ASCII with meshio-convert READ_MESH two-squares-bin-meshio.msh DIMENSIONS 2 PROBLEM thermal MATERIAL soft k=0.5+x MATERIAL hard k=1.5+2*(x-1) BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT %.3f T(1,0.5) feenox-1.1/tests/encased_rod.sh0000755000175000017500000000055714773607165013556 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal checkgmsh gmsh -v 0 -3 ${dir}/encased_rod.geo || exit $? answerzero encased_rod_lr.fee 1e-3 exitifwrong $? answerzero encased_rod_tb.fee 1e-3 exitifwrong $? feenox-1.1/tests/pipe-uct10-2-2.geo0000644000175000017500000000136714773607165013632 00000000000000// // unstructured curved tet10 Mesh.RecombineAll = 0; Mesh.SecondOrderLinear = 0; SetFactory("OpenCASCADE"); l = 2*(( 323.8/2 )-( ( 323.8/2 )-21.5 )); Cylinder(1) = {-l/2, 0, 0, +l, 0, 0, ( 323.8/2 )}; Cylinder(2) = {-l/2, 0, 0, +l, 0, 0, ( ( 323.8/2 )-21.5 )}; BooleanDifference(3) = {Volume{1};Delete;}{Volume{2};Delete;}; Physical Volume("pipe") = {3}; s() = Boundary{ Volume{3}; }; Physical Surface("front") = {s(1)}; Physical Surface("back") = {s(2)}; Physical Surface("pressure") = {s(3)}; // Mesh.Algorithm = 6; // Mesh.Algorithm3D = 4; // Mesh.Optimize = 1; // Mesh.OptimizeNetgen = 1; // Mesh.HighOrderOptimize = 2; Mesh.CharacteristicLengthMax = (( 323.8/2 )-( ( 323.8/2 )-21.5 ))/2; Mesh.ElementOrder = 2; feenox-1.1/tests/qrng2d_sobol.ref0000644000175000017500000000013214773607165014027 000000000000000.5 0.5 0.75 0.25 0.25 0.75 0.375 0.375 0.875 0.875 0.625 0.125 0.125 0.625 0.1875 0.3125 feenox-1.1/tests/maze.fee0000644000175000017500000000031414773607165012355 00000000000000PROBLEM laplace 2D READ_MESH maze.msh phi_0(x,y) = 0 end_time = 1 alpha = 1e-6 BC end phi=if(t<1,t,1) BC start phi=0 SOLVE_PROBLEM IF done PRINT dphidy(431.799,-817.879)-(-0.00154393) ENDIF feenox-1.1/tests/print_vector.ref0000644000175000017500000000025614773607165014161 000000000000001.0 1.0 1.0 1.00 0.50 0.33 1.000 0.250 0.111 1.000000,1.000000,1.000000 1.00000 0.50000 0.33333 1.0000X0.2500X0.1111 1.0 | 1.00 | 1.000 1.0 | 0.50 | 0.250 1.0 | 0.33 | 0.111 feenox-1.1/tests/thermal-two-squares-material-implicit-uniform.fee0000644000175000017500000000021514773607165022426 00000000000000PROBLEM thermal DIMENSIONS 2 READ_MESH two-squares.msh k_soft = 1 k_hard = 3 BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT %.3f T(1,0.5) feenox-1.1/tests/qrng.ref0000644000175000017500000000007314773607165012407 000000000000000.5 0.75 0.25 0.375 0.875 0.625 0.125 0.1875 0.6875 0.9375 feenox-1.1/tests/reaction-force-v5.vtk0000644000175000017500000070327414773607165014735 00000000000000# vtk DataFile Version 5.1 vtk output ASCII DATASET UNSTRUCTURED_GRID POINTS 1214 double 0 0 0 -1.04083e-17 0.06 0 0 0 0.2 -1.04083e-17 0.06 0.2 0.06 0 0.2 0.06 0 0 0.06 0.06 0.2 0.06 0.06 0 -1.04083e-17 0.06 0.190909 -1.04083e-17 0.06 0.181818 -1.04083e-17 0.06 0.172727 -1.04083e-17 0.06 0.163636 -1.04083e-17 0.06 0.154545 -1.04083e-17 0.06 0.145455 -1.04083e-17 0.06 0.136364 -1.04083e-17 0.06 0.127273 -1.04083e-17 0.06 0.118182 -1.04083e-17 0.06 0.109091 -1.04083e-17 0.06 0.1 -1.04083e-17 0.06 0.0909091 -1.04083e-17 0.06 0.0818182 -1.04083e-17 0.06 0.0727273 -1.04083e-17 0.06 0.0636364 -1.04083e-17 0.06 0.0545455 -1.04083e-17 0.06 0.0454545 -1.04083e-17 0.06 0.0363636 -1.04083e-17 0.06 0.0272727 -1.04083e-17 0.06 0.0181818 -1.04083e-17 0.06 0.00909091 0 0.00857143 0.2 0 0.0171429 0.2 0 0.0257143 0.2 0 0.0342857 0.2 4.28915e-20 0.0428571 0.2 -4.46072e-18 0.0514286 0.2 -4.46072e-18 0.0514286 0 4.28915e-20 0.0428571 0 0 0.0342857 0 0 0.0257143 0 0 0.0171429 0 0 0.00857143 0 0 0 0.00909091 0 0 0.0181818 0 0 0.0272727 0 0 0.0363636 0 0 0.0454545 0 0 0.0545455 0 0 0.0636364 0 0 0.0727273 0 0 0.0818182 0 0 0.0909091 0 0 0.1 0 0 0.109091 0 0 0.118182 0 0 0.127273 0 0 0.136364 0 0 0.145455 0 0 0.154545 0 0 0.163636 0 0 0.172727 0 0 0.181818 0 0 0.190909 0.0514286 0 0.2 0.0428571 0 0.2 0.0342857 0 0.2 0.0257143 0 0.2 0.0171429 0 0.2 0.00857143 0 0.2 0.06 0 0.00909091 0.06 0 0.0181818 0.06 0 0.0272727 0.06 0 0.0363636 0.06 0 0.0454545 0.06 0 0.0545455 0.06 0 0.0636364 0.06 0 0.0727273 0.06 0 0.0818182 0.06 0 0.0909091 0.06 0 0.1 0.06 0 0.109091 0.06 0 0.118182 0.06 0 0.127273 0.06 0 0.136364 0.06 0 0.145455 0.06 0 0.154545 0.06 0 0.163636 0.06 0 0.172727 0.06 0 0.181818 0.06 0 0.190909 0.00857143 0 0 0.0171429 0 0 0.0257143 0 0 0.0342857 0 0 0.0428571 0 0 0.0514286 0 0 0.06 0.0514286 0.2 0.06 0.0428571 0.2 0.06 0.0342857 0.2 0.06 0.0257143 0.2 0.06 0.0171429 0.2 0.06 0.00857143 0.2 0.06 0.00857143 0 0.06 0.0171429 0 0.06 0.0257143 0 0.06 0.0342857 0 0.06 0.0428571 0 0.06 0.0514286 0 0.06 0.06 0.00909091 0.06 0.06 0.0181818 0.06 0.06 0.0272727 0.06 0.06 0.0363636 0.06 0.06 0.0454545 0.06 0.06 0.0545455 0.06 0.06 0.0636364 0.06 0.06 0.0727273 0.06 0.06 0.0818182 0.06 0.06 0.0909091 0.06 0.06 0.1 0.06 0.06 0.109091 0.06 0.06 0.118182 0.06 0.06 0.127273 0.06 0.06 0.136364 0.06 0.06 0.145455 0.06 0.06 0.154545 0.06 0.06 0.163636 0.06 0.06 0.172727 0.06 0.06 0.181818 0.06 0.06 0.190909 0.00857143 0.06 0.2 0.0171429 0.06 0.2 0.0257143 0.06 0.2 0.0342857 0.06 0.2 0.0428571 0.06 0.2 0.0514286 0.06 0.2 0.0514286 0.06 0 0.0428571 0.06 0 0.0342857 0.06 0 0.0257143 0.06 0 0.0171429 0.06 0 0.00857143 0.06 0 0 0.0195405 0.192229 0 0.0299332 0.191926 0 0.0403732 0.191791 -5.35822e-18 0.052722 0.177181 -5.21988e-18 0.0525226 0.168174 -5.12181e-18 0.0523813 0.159123 -5.08765e-18 0.0523321 0.150024 -5.07613e-18 0.0523155 0.140923 -5.07105e-18 0.0523081 0.131823 -5.07088e-18 0.0523079 0.122728 -5.08354e-18 0.0523262 0.113633 -5.1542e-18 0.052428 0.104554 -5.0946e-18 0.0523421 0.0954555 -5.06742e-18 0.0523029 0.0863632 -5.05617e-18 0.0522867 0.0772692 -5.0689e-18 0.0523051 0.0681694 -5.08304e-18 0.0523254 0.0590517 -5.07616e-18 0.0523155 0.0499284 -5.10629e-18 0.0523589 0.0407648 -5.17765e-18 0.0524618 0.0315535 -5.2219e-18 0.0525256 0.0224071 0 0.0404425 0.00775031 0 0.029969 0.00805226 0 0.0194886 0.00815296 0 0.00734462 0.0227763 0 0.00756236 0.0317478 0 0.00770117 0.0408566 0 0.0076852 0.0499594 0 0.00771577 0.059077 0 0.00771219 0.0681793 0 0.00771597 0.0772719 0 0.00763596 0.086358 0 0.0077289 0.0954547 0 0.00775085 0.104547 0 0.00772572 0.113634 0 0.00769983 0.122725 0 0.0076754 0.131832 0 0.00757557 0.140943 0 0.00768565 0.150062 0 0.00767337 0.1592 0 0.00757773 0.168389 0 0.00745083 0.177567 0 0.00620838 0.0152501 -6.09752e-18 0.0537874 0.184744 0 0.00641256 0.185352 -5.96077e-18 0.0535904 0.0146237 0 0.0253296 0.183945 0 0.034292 0.183748 -6.35385e-20 0.0450916 0.173053 -2.22884e-19 0.0453212 0.183415 0 0.044897 0.163844 0 0.0447548 0.154644 0 0.0446988 0.145505 0 0.0446898 0.136388 0 0.0446683 0.127279 0 0.0446915 0.118177 0 0.0445784 0.10909 0 0.0446899 0.100003 0 0.0446698 0.0909078 0 0.0446747 0.0818108 0 0.0446871 0.0727061 0 0.044675 0.0635871 0 0.0446717 0.0544441 0 0.0447215 0.0452403 0 0.0448795 0.0358903 -1.54874e-19 0.0452232 0.0262743 -1.94615e-19 0.0452805 0.0155498 0 0.0345969 0.0160067 0 0.0252827 0.0161536 0 0.0144842 0.0164122 0 0.0145892 0.0265663 0 0.0154009 0.0362137 0 0.0153566 0.0453418 0 0.0153331 0.0544762 0 0.0153103 0.0636115 0 0.0154212 0.0727169 0 0.0154798 0.0818166 0 0.0154182 0.0909073 0 0.0154505 0.0999954 0 0.0154772 0.109091 0 0.0154167 0.118185 0 0.0152757 0.127281 0 0.0153395 0.136398 0 0.0153937 0.145528 0 0.0153845 0.154702 0 0.0151718 0.164014 0 0.0146978 0.173659 0 0.0147206 0.184346 0 0.0371614 0.168472 0 0.0374749 0.15931 0 0.0373438 0.150138 0 0.0372919 0.140973 0 0.0372641 0.131845 0 0.0372459 0.122735 0 0.0370841 0.113634 0 0.0370884 0.104538 0 0.0372413 0.0954532 0 0.0372714 0.086358 0 0.0372589 0.0772547 0 0.0372887 0.0681313 0 0.0372517 0.0589776 0 0.0372848 0.0497551 0 0.0374566 0.0404167 0 0.037557 0.0310645 0 0.0226296 0.0313538 0 0.022772 0.0405648 0 0.0227688 0.049815 0 0.0227629 0.0589981 0 0.022921 0.0681539 0 0.0228858 0.0772617 0 0.0228956 0.0863613 0 0.0229018 0.0954532 0 0.0228897 0.104546 0 0.0228798 0.113639 0 0.0228934 0.122736 0 0.0227707 0.131853 0 0.0228022 0.140984 0 0.0229479 0.150146 0 0.0227591 0.159488 0 0.0223887 0.168824 0 0.0296833 0.174889 0 0.0301424 0.0251066 0 0.0216048 0.176978 0 0.038369 0.0228541 0 0.037699 0.176318 0 0.021642 0.0232535 0 0.0299903 0.109096 0 0.0300123 0.0909081 0 0.0300575 0.136426 0 0.0299917 0.11819 0 0.0300129 0.0818231 0 0.03 0.127292 0 0.0300071 0.0999986 0 0.0300451 0.0635444 0 0.0300189 0.0726948 0 0.0301009 0.03538 0 0.0300832 0.145604 0 0.0300013 0.0543478 0 0.0298903 0.164537 0 0.0300634 0.045073 0 0.0300976 0.154904 -4.31365e-18 0.0512166 0.00712309 0 0.0087855 0.192872 -4.31025e-18 0.0512117 0.19287 0 0.00878341 0.00712379 0.0404607 0 0.192234 0.0300668 0 0.19193 0.0196268 0 0.191791 0.00727799 0 0.177181 0.00747736 0 0.168174 0.00761869 0 0.159123 0.00766791 0 0.150024 0.00768465 0 0.140922 0.00769206 0 0.131823 0.00769195 0 0.122728 0.00770768 0 0.11363 0.00771686 0 0.104544 0.0077072 0 0.0954614 0.00768683 0 0.0863586 0.00771485 0 0.077265 0.00769845 0 0.0681641 0.00767814 0 0.0590463 0.00768962 0 0.0499236 0.00764887 0 0.0407625 0.0075429 0 0.031554 0.00747445 0 0.0224071 0.0195575 0 0.00775031 0.030031 0 0.00805226 0.0405114 0 0.00815296 0.0526554 0 0.0227763 0.0524724 0 0.0317201 0.0523395 0 0.0408309 0.0523277 0 0.0499574 0.0523437 0 0.0590696 0.0524219 0 0.0681551 0.0523148 0 0.0772608 0.0523094 0 0.0863591 0.0522862 0 0.09546 0.0522643 0 0.104546 0.0522845 0 0.113636 0.0523176 0 0.12272 0.05248 0 0.131835 0.0522987 0 0.140931 0.0522867 0 0.150055 0.0523206 0 0.159197 0.0524207 0 0.168389 0.0525492 0 0.177567 0.0537916 0 0.0152501 0.00640962 0 0.0146237 0.00621255 0 0.184744 0.0535874 0 0.185352 0.0346693 0 0.183961 0.025708 0 0.183748 0.0149084 0 0.173053 0.0146788 0 0.183415 0.015103 0 0.163844 0.0152452 0 0.154644 0.0153012 0 0.145504 0.0153107 0 0.136387 0.0153322 0 0.127278 0.0153071 0 0.118176 0.0154185 0 0.10909 0.0154505 0 0.100001 0.015274 0 0.0909064 0.0153242 0 0.0817999 0.0153205 0 0.0726888 0.0153355 0 0.0635736 0.0153318 0 0.0544321 0.015297 0 0.0452266 0.0151432 0 0.0358894 0.0147768 0 0.0262743 0.0147195 0 0.0155498 0.0254031 0 0.0160067 0.0347173 0 0.0161536 0.0455158 0 0.0164122 0.0454169 0 0.0265528 0.0447546 0 0.0360707 0.0447111 0 0.0453101 0.0447549 0 0.054503 0.0445998 0 0.0635867 0.044656 0 0.072696 0.0446748 0 0.0817992 0.0446898 0 0.0909069 0.0445537 0 0.100002 0.0445884 0 0.10909 0.0445514 0 0.118179 0.0447581 0 0.127271 0.0446532 0 0.136398 0.0445652 0 0.145516 0.044586 0 0.15469 0.044829 0 0.164013 0.0453022 0 0.173659 0.0452794 0 0.184346 0.0228386 0 0.168472 0.0225251 0 0.15931 0.022656 0 0.150138 0.022708 0 0.140973 0.022738 0 0.131843 0.0227549 0 0.122732 0.0229164 0 0.113632 0.0228946 0 0.104538 0.0228958 0 0.0954463 0.0227506 0 0.0863313 0.0227358 0 0.0772184 0.0227489 0 0.0680927 0.0227571 0 0.0589494 0.0227026 0 0.0497231 0.0226683 0 0.0404112 0.0224423 0 0.0310618 0.0373736 0 0.0313416 0.0372667 0 0.0405489 0.0373667 0 0.0498781 0.0371064 0 0.0589565 0.0372671 0 0.068095 0.0372434 0 0.0772198 0.0372471 0 0.0863342 0.0371049 0 0.0954465 0.0371107 0 0.104539 0.0371096 0 0.113636 0.0371107 0 0.122731 0.0373311 0 0.131852 0.0370563 0 0.140957 0.0370518 0 0.150145 0.0372396 0 0.159486 0.0376186 0 0.168818 0.0303631 0 0.174861 0.0298576 0 0.0251066 0.022301 0 0.176318 0.0383865 0 0.176993 0.038358 0 0.0232535 0.021631 0 0.0228541 0.029943 0 0.136424 0.030006 0 0.109081 0.0300033 0 0.118186 0.0299978 0 0.0817389 0.0300003 0 0.0908749 0.0300038 0 0.127286 0.0300009 0 0.0999766 0.0298991 0 0.03538 0.0300139 0 0.0634837 0.0299888 0 0.0726385 0.0299166 0 0.145603 0.0299806 0 0.0542972 0.0301097 0 0.164537 0.0299782 0 0.0450058 0.0299015 0 0.154903 0.0512145 0 0.192872 0.00878828 0 0.19287 0.0512166 0 0.00712379 0.00878337 0 0.00712309 0.06 0.0404595 0.192229 0.06 0.0300668 0.191926 0.06 0.0196268 0.191791 0.06 0.00727799 0.177181 0.06 0.00747736 0.168174 0.06 0.0076187 0.159123 0.06 0.00766793 0.150024 0.06 0.00768467 0.140922 0.06 0.00769207 0.131823 0.06 0.00769195 0.122728 0.06 0.00770768 0.11363 0.06 0.00771686 0.104544 0.06 0.0077072 0.0954614 0.06 0.00768683 0.0863586 0.06 0.00771485 0.077265 0.06 0.00769845 0.0681641 0.06 0.00767814 0.0590463 0.06 0.00768962 0.0499236 0.06 0.00764887 0.0407625 0.06 0.0075429 0.031554 0.06 0.00747445 0.0224071 0.06 0.0195575 0.00775031 0.06 0.030031 0.00805226 0.06 0.0405114 0.00815296 0.06 0.0526554 0.0227763 0.06 0.0524724 0.0317201 0.06 0.0523395 0.0408309 0.06 0.0523277 0.0499574 0.06 0.0523437 0.0590696 0.06 0.0524219 0.0681551 0.06 0.0523148 0.0772608 0.06 0.0523094 0.0863591 0.06 0.0522862 0.09546 0.06 0.0522643 0.104546 0.06 0.0522845 0.113636 0.06 0.0523176 0.12272 0.06 0.05248 0.131835 0.06 0.0522987 0.140931 0.06 0.0522868 0.150056 0.06 0.0523206 0.159198 0.06 0.0524223 0.168389 0.06 0.0525492 0.177567 0.06 0.0537916 0.0152501 0.06 0.00640962 0.0146237 0.06 0.0535874 0.185352 0.06 0.00621255 0.184744 0.06 0.0346704 0.183945 0.06 0.025708 0.183748 0.06 0.0146788 0.183415 0.06 0.0149084 0.173053 0.06 0.015103 0.163844 0.06 0.0152452 0.154644 0.06 0.0153012 0.145505 0.06 0.0153107 0.136387 0.06 0.0153322 0.127278 0.06 0.0153071 0.118176 0.06 0.0154185 0.10909 0.06 0.0154505 0.100001 0.06 0.015274 0.0909064 0.06 0.0153242 0.0817999 0.06 0.0153205 0.0726888 0.06 0.0153355 0.0635736 0.06 0.0153318 0.0544321 0.06 0.015297 0.0452266 0.06 0.0151432 0.0358894 0.06 0.0147768 0.0262743 0.06 0.0147195 0.0155498 0.06 0.0254031 0.0160067 0.06 0.0347173 0.0161536 0.06 0.0455158 0.0164122 0.06 0.0454169 0.0265528 0.06 0.0447546 0.0360707 0.06 0.0447111 0.0453101 0.06 0.0447549 0.054503 0.06 0.0445998 0.0635867 0.06 0.044656 0.072696 0.06 0.0446748 0.0817992 0.06 0.0446898 0.0909069 0.06 0.0445537 0.100002 0.06 0.0445884 0.10909 0.06 0.0445514 0.118179 0.06 0.0447581 0.127271 0.06 0.0446532 0.136398 0.06 0.0445653 0.145516 0.06 0.0445862 0.154691 0.06 0.0448282 0.164014 0.06 0.0453022 0.173659 0.06 0.0452794 0.184346 0.06 0.0228386 0.168472 0.06 0.0225251 0.15931 0.06 0.0226562 0.150138 0.06 0.0227081 0.140973 0.06 0.022738 0.131843 0.06 0.0227549 0.122732 0.06 0.0229164 0.113632 0.06 0.0228946 0.104538 0.06 0.0228958 0.0954463 0.06 0.0227506 0.0863313 0.06 0.0227358 0.0772184 0.06 0.0227489 0.0680927 0.06 0.0227571 0.0589494 0.06 0.0227026 0.0497231 0.06 0.0226683 0.0404112 0.06 0.0224423 0.0310618 0.06 0.0373736 0.0313416 0.06 0.0372667 0.0405489 0.06 0.0373667 0.0498781 0.06 0.0371064 0.0589565 0.06 0.0372671 0.068095 0.06 0.0372434 0.0772198 0.06 0.0372471 0.0863342 0.06 0.0371049 0.0954465 0.06 0.0371107 0.104539 0.06 0.0371096 0.113636 0.06 0.0371107 0.122731 0.06 0.0373311 0.131853 0.06 0.0370563 0.140957 0.06 0.0370521 0.150146 0.06 0.0372409 0.159488 0.06 0.0376113 0.168824 0.06 0.0303167 0.174889 0.06 0.0298576 0.0251066 0.06 0.0383952 0.176978 0.06 0.022301 0.176318 0.06 0.038358 0.0232535 0.06 0.021631 0.0228541 0.06 0.0299431 0.136424 0.06 0.030006 0.109081 0.06 0.0300033 0.118186 0.06 0.0299978 0.0817389 0.06 0.0300003 0.0908749 0.06 0.0300038 0.127286 0.06 0.0300009 0.0999766 0.06 0.0298991 0.03538 0.06 0.0300139 0.0634837 0.06 0.0299888 0.0726385 0.06 0.0299168 0.145604 0.06 0.0299806 0.0542972 0.06 0.0301097 0.164537 0.06 0.0299782 0.0450058 0.06 0.0299024 0.154904 0.06 0.0512145 0.192872 0.06 0.00878828 0.19287 0.06 0.0512166 0.00712379 0.06 0.00878337 0.00712309 0.0195405 0.06 0.192229 0.0299332 0.06 0.191926 0.0403732 0.06 0.191791 0.052722 0.06 0.177181 0.0525226 0.06 0.168174 0.0523813 0.06 0.159123 0.0523321 0.06 0.150024 0.0523155 0.06 0.140922 0.0523083 0.06 0.131823 0.0523089 0.06 0.122728 0.0522937 0.06 0.11363 0.0522855 0.06 0.104545 0.0522958 0.06 0.0954635 0.0523159 0.06 0.0863621 0.0522878 0.06 0.0772692 0.0523053 0.06 0.0681694 0.0523255 0.06 0.0590517 0.0523155 0.06 0.0499284 0.0523589 0.06 0.0407648 0.0524618 0.06 0.0315535 0.0525256 0.06 0.0224071 0.0404425 0.06 0.00775031 0.029969 0.06 0.00805226 0.0194886 0.06 0.00815296 0.00734462 0.06 0.0227763 0.00756236 0.06 0.0317478 0.00770117 0.06 0.0408566 0.00768526 0.06 0.0499594 0.00771606 0.06 0.0590771 0.00771373 0.06 0.0681797 0.0076693 0.06 0.0772629 0.007541 0.06 0.086365 0.00770181 0.06 0.0954577 0.00773538 0.06 0.104547 0.00772584 0.06 0.113635 0.00770819 0.06 0.122722 0.00767731 0.06 0.131831 0.00757618 0.06 0.140943 0.00768575 0.06 0.150062 0.00767337 0.06 0.1592 0.00757773 0.06 0.168389 0.00745083 0.06 0.177567 0.0535904 0.06 0.0146237 0.00641256 0.06 0.185352 0.0537874 0.06 0.184744 0.00620838 0.06 0.0152501 0.0253296 0.06 0.183945 0.034292 0.06 0.183748 0.0450916 0.06 0.173053 0.0453212 0.06 0.183415 0.044897 0.06 0.163844 0.0447548 0.06 0.154644 0.0446988 0.06 0.145505 0.0446899 0.06 0.136387 0.0446693 0.06 0.127278 0.0446954 0.06 0.118176 0.044586 0.06 0.10909 0.0445545 0.06 0.100002 0.044734 0.06 0.0909138 0.0446801 0.06 0.0818117 0.0446876 0.06 0.0727063 0.044675 0.06 0.0635871 0.0446717 0.06 0.0544441 0.0447215 0.06 0.0452403 0.0448795 0.06 0.0358903 0.0452232 0.06 0.0262743 0.0452805 0.06 0.0155498 0.0345969 0.06 0.0160067 0.0252827 0.06 0.0161536 0.0144842 0.06 0.0164122 0.0145892 0.06 0.0265663 0.0154009 0.06 0.0362137 0.0153566 0.06 0.0453418 0.0153333 0.06 0.0544763 0.0153116 0.06 0.0636119 0.0154277 0.06 0.0727177 0.0152842 0.06 0.0818035 0.0153638 0.06 0.0909084 0.0154167 0.06 0.0999978 0.0154476 0.06 0.109085 0.015451 0.06 0.118179 0.0152838 0.06 0.127276 0.0153406 0.06 0.136397 0.0153938 0.06 0.145528 0.0153845 0.06 0.154701 0.0151718 0.06 0.164014 0.0146978 0.06 0.173659 0.0147206 0.06 0.184346 0.0371614 0.06 0.168472 0.0374749 0.06 0.15931 0.0373438 0.06 0.150138 0.0372919 0.06 0.140973 0.0372645 0.06 0.131843 0.0372487 0.06 0.122732 0.0370921 0.06 0.113631 0.0371156 0.06 0.104539 0.0371163 0.06 0.0954479 0.0372655 0.06 0.0863545 0.0372587 0.06 0.0772546 0.0372886 0.06 0.0681313 0.0372517 0.06 0.0589776 0.0372848 0.06 0.0497551 0.0374566 0.06 0.0404167 0.037557 0.06 0.0310645 0.0226296 0.06 0.0313538 0.022772 0.06 0.0405648 0.0227688 0.06 0.049815 0.0227629 0.06 0.0589981 0.0229209 0.06 0.0681539 0.022917 0.06 0.077261 0.0227815 0.06 0.0863567 0.0229073 0.06 0.0954491 0.0228971 0.06 0.104543 0.0228936 0.06 0.113635 0.0228969 0.06 0.122731 0.0227718 0.06 0.13185 0.0228024 0.06 0.140983 0.0229479 0.06 0.150146 0.0227591 0.06 0.159488 0.0223887 0.06 0.168824 0.0296833 0.06 0.174889 0.0301424 0.06 0.0251066 0.037699 0.06 0.176318 0.021642 0.06 0.0232535 0.0216048 0.06 0.176978 0.038369 0.06 0.0228541 0.0300102 0.06 0.10908 0.0300152 0.06 0.0909009 0.0300578 0.06 0.136424 0.0299978 0.06 0.118184 0.030043 0.06 0.0818028 0.0300014 0.06 0.127286 0.0300125 0.06 0.099994 0.0300451 0.06 0.0635443 0.0300187 0.06 0.0726945 0.0301009 0.06 0.03538 0.0300832 0.06 0.145604 0.0300013 0.06 0.0543478 0.0298903 0.06 0.164537 0.0300634 0.06 0.045073 0.0300976 0.06 0.154904 0.0512117 0.06 0.19287 0.00878341 0.06 0.00712379 0.0087855 0.06 0.192872 0.0512166 0.06 0.00712309 0.0520994 0.019182 0.2 0.0521393 0.0293311 0.2 0.0517817 0.0377909 0.2 0.0400757 0.052497 0.2 0.0305447 0.0524401 0.2 0.0222091 0.0517817 0.2 0.00768262 0.0408118 0.2 0.00775318 0.0305789 0.2 0.00744556 0.0216775 0.2 0.019245 0.00797085 0.2 0.0293806 0.00761504 0.2 0.0382878 0.00703075 0.2 0.00882686 0.00679958 0.2 0.0532004 0.00882686 0.2 0.00672154 0.0511088 0.2 0.0511088 0.0532785 0.2 0.0441006 0.0149055 0.2 0.0444295 0.0251866 0.2 0.0445771 0.0344115 0.2 0.0454898 0.0450064 0.2 0.0350516 0.0453478 0.2 0.0257314 0.0450413 0.2 0.015396 0.0451867 0.2 0.0157011 0.0344809 0.2 0.0154367 0.0259561 0.2 0.0149055 0.0158994 0.2 0.0249351 0.0151202 0.2 0.0340388 0.0144967 0.2 0.0457926 0.00595825 0.2 0.053027 0.0455484 0.2 0.00595825 0.0142074 0.2 0.0144516 0.053027 0.2 0.0356228 0.0301661 0.2 0.0302434 0.0378616 0.2 0.0298724 0.0226087 0.2 0.0245944 0.0306015 0.2 0.0223261 0.0383322 0.2 0.0381566 0.0382961 0.2 0.0375813 0.0217 0.2 0.0222048 0.0223278 0.2 0.052098 0.0408171 0 0.0521812 0.030588 0 0.0522543 0.0218165 0 0.0400466 0.00761133 0 0.0305467 0.00764431 0 0.0222091 0.0082183 0 0.00772632 0.0193356 0 0.00796545 0.03 0 0.00796752 0.0407462 0 0.0214527 0.0527848 0 0.0299548 0.0526091 0 0.0383225 0.0525544 0 0.00672154 0.00889125 0 0.0511088 0.00672154 0 0.00679958 0.0511731 0 0.0532004 0.0511731 0 0.0441006 0.0450945 0 0.0442771 0.0345077 0 0.0445412 0.0257944 0 0.035116 0.0147572 0 0.0451343 0.0157398 0 0.0257672 0.0152462 0 0.0153887 0.0147944 0 0.0158219 0.0261024 0 0.0156801 0.034899 0 0.0158966 0.0450563 0 0.0256573 0.0452777 0 0.0343587 0.0452709 0 0.0141421 0.053857 0 0.0457926 0.0540418 0 0.0144516 0.00697301 0 0.0535081 0.0141306 0 0.0300559 0.0374077 0 0.0356451 0.0299602 0 0.0303186 0.0224938 0 0.0246777 0.0300573 0 0.0380778 0.021862 0 0.0375672 0.0378804 0 0.0226132 0.0223295 0 0.0224635 0.0383966 0 0.00783048 0.0458281 0.193874 0.00851543 0.0517115 0.188571 0.0165535 0.0510378 0.191525 0.0105006 0.0422474 0.178293 0.00823687 0.0357429 0.193073 0.0123686 0.0402298 0.188008 0.0218824 0.0432791 0.190915 0.0271979 0.0513764 0.189644 0.0315281 0.0435763 0.193241 0.0252237 0.0357704 0.191641 0.0166822 0.0298961 0.190757 0.00764301 0.025165 0.190177 0.0087252 0.0295558 0.180838 0.00721571 0.0435326 0.168875 0.0101238 0.0361823 0.164176 0.00939311 0.0198554 0.181327 0.017027 0.0205628 0.189551 0.0264778 0.0278295 0.18982 0.0343699 0.034824 0.191863 0.0101611 0.0522672 0.179524 0.0207752 0.0491335 0.182197 0.00557978 0.0539179 0.16459 0.0084006 0.0386761 0.155494 0.00833174 0.0312035 0.150218 0.00808736 0.0104347 0.180032 0.00744239 0.0127432 0.159305 0.00833529 0.0154283 0.151446 0.00854085 0.0309455 0.141392 0.00727936 0.0401819 0.144134 0.00736054 0.0472619 0.150057 0.0057931 0.054135 0.155539 0.0192381 0.0514156 0.173717 0.0206239 0.0525155 0.164069 0.00581876 0.0543999 0.146804 0.00629123 0.0410969 0.134326 0.0128214 0.0525902 0.150097 0.0212419 0.0515245 0.154919 0.0430518 0.0512011 0.169825 0.0528815 0.0522827 0.172095 0.0526918 0.0494764 0.189678 0.0336965 0.0245868 0.19161 0.0425154 0.0307786 0.190926 0.0518347 0.0246669 0.191651 0.0407011 0.0182483 0.191292 0.0269726 0.0172125 0.18895 0.00819517 0.00652939 0.1724 0.00750756 0.00592067 0.163743 0.00738226 0.00511968 0.154603 0.00719848 0.00746813 0.145034 0.00936316 0.0305787 0.132495 0.00772695 0.0388684 0.126066 0.0107423 0.0301708 0.122611 0.00572829 0.00591649 0.13588 0.00711105 0.0282465 0.114202 0.0284707 0.0526012 0.150392 0.0434992 0.0526336 0.159585 0.0504313 0.0419024 0.182591 0.0524199 0.0360402 0.190469 0.041745 0.00817644 0.190202 0.0232582 0.00737872 0.192575 0.00726936 0.00834873 0.119291 0.00648544 0.0230347 0.109039 0.0150521 0.00789167 0.122057 0.0166659 0.00876725 0.148394 0.0143204 0.00695603 0.158716 0.01893 0.00880875 0.166439 0.0182118 0.00856569 0.11334 0.00562513 0.0541304 0.118162 0.0136916 0.0517692 0.131896 0.0351146 0.0498709 0.146227 0.0422963 0.0525151 0.150092 0.0435601 0.0518793 0.141001 0.0346184 0.0518702 0.138041 0.0198708 0.0515759 0.126784 0.0072753 0.0536269 0.108929 0.00969241 0.0286041 0.0976312 0.00736805 0.0190653 0.0910159 0.019172 0.00660494 0.102188 0.0194367 0.00720862 0.0907854 0.0273451 0.00796901 0.106372 0.0246606 0.00775634 0.12296 0.0282737 0.00955394 0.131378 0.0295162 0.00960003 0.140581 0.0279288 0.00896688 0.170997 0.0326002 0.00982024 0.179275 0.0348541 0.00832367 0.16361 0.0346096 0.0101434 0.154413 0.0360434 0.00790426 0.135328 0.0371028 0.00948937 0.125968 0.0357243 0.00739812 0.116835 0.0422808 0.00703812 0.150482 0.0432639 0.00904505 0.158531 0.0426594 0.00780891 0.168834 0.0432751 0.00905211 0.179907 0.0528821 0.00683161 0.184423 0.0511922 0.00859778 0.173496 0.0499296 0.00761874 0.163845 0.0492465 0.00688086 0.136699 0.0423119 0.00668226 0.0948696 0.0501638 0.00709421 0.100096 0.0344679 0.00945298 0.0897464 0.0138793 0.00772094 0.077246 0.00590684 0.00585422 0.0749513 0.0207131 0.00717034 0.0716136 0.0429921 0.008521 0.0845348 0.0534623 0.00615358 0.0900445 0.0345288 0.00844073 0.0749498 0.0474144 0.00688712 0.0752411 0.0405522 0.00895774 0.0478263 0.00737936 0.0128723 0.0772684 0.00741802 0.0204471 0.0818137 0.00904157 0.0439406 0.0936566 0.00721716 0.0501146 0.100087 0.0139499 0.0510276 0.113131 0.0204393 0.0525912 0.118181 0.0282524 0.0496587 0.12289 0.0519218 0.0392463 0.157036 0.0516699 0.0321718 0.160176 0.0522274 0.0317029 0.150732 0.0535038 0.0405699 0.147546 0.0361389 0.051769 0.117276 0.0161232 0.051902 0.10375 0.00668142 0.0455606 0.0836721 0.00663334 0.0310806 0.0757575 0.00807284 0.0212206 0.0723527 0.0128753 0.00731872 0.0492456 0.019991 0.00819556 0.0450176 0.0275962 0.00779319 0.0402851 0.0404672 0.00815393 0.0362971 0.0500743 0.00708299 0.0450408 0.0534446 0.00712086 0.0640771 0.0515366 0.0252774 0.164444 0.0524213 0.0380995 0.137222 0.013774 0.0529641 0.0957535 0.00735646 0.0407171 0.0770409 0.00763892 0.0199247 0.0629569 0.00633734 0.00633198 0.0463809 0.0130566 0.00751636 0.0400837 0.0218275 0.00715126 0.0354107 0.00787138 0.0141532 0.0499178 0.0119579 0.0422103 0.0689608 0.020586 0.0512902 0.0903914 0.0509812 0.0386866 0.127533 0.0503933 0.0299183 0.132412 0.0516968 0.0213191 0.137435 0.0533528 0.0220686 0.146032 0.0515328 0.0168215 0.168703 0.0515358 0.0167472 0.179008 0.05399 0.0140539 0.132917 0.0538005 0.0220733 0.127695 0.0482735 0.0287583 0.122244 0.0507572 0.0379781 0.117059 0.0528371 0.0459355 0.112896 0.0544435 0.0540705 0.0991391 0.0456778 0.051901 0.0973486 0.0378375 0.0511306 0.0921738 0.0197723 0.0540456 0.081628 0.00775715 0.0427448 0.0592178 0.00760574 0.0323135 0.0568399 0.0288265 0.0107413 0.0183595 0.0518347 0.00839641 0.0359228 0.0532568 0.01353 0.123374 0.0520384 0.0208316 0.118921 0.0531389 0.0133615 0.113364 0.0519896 0.0137064 0.104372 0.0525973 0.0204328 0.109087 0.0524982 0.0277187 0.113632 0.0524748 0.0359822 0.108721 0.052833 0.0452613 0.103807 0.0534928 0.0541365 0.0896488 0.0454107 0.0522578 0.0860809 0.0246226 0.0513326 0.074491 0.00552863 0.0527955 0.0549949 0.00752259 0.0422578 0.0498231 0.00934409 0.0337233 0.0474819 0.00961564 0.0221831 0.0342111 0.0358561 0.0103754 0.00784613 0.0413499 0.0103574 0.0185214 0.00898926 0.0170433 0.0254382 0.00768029 0.0427189 0.040595 0.0062224 0.052002 0.0450312 0.0332417 0.0519584 0.0691722 0.0531534 0.0537983 0.0806315 0.0519126 0.0453533 0.0947161 0.0537513 0.0375363 0.100159 0.0525041 0.0277088 0.104531 0.0525933 0.0204377 0.0999956 0.0521672 0.0133474 0.0941087 0.0528501 0.0154953 0.0605683 0.050971 0.0118976 0.0529321 0.0529932 0.0216387 0.0898918 0.0492624 0.0284708 0.0964304 0.0519278 0.0389302 0.0811257 0.0527938 0.0463566 0.0860536 0.049657 0.0466877 0.0762693 0.0525647 0.0348672 0.0726506 0.0508132 0.019142 0.018538 0.0491025 0.0349315 0.0637799 0.0523222 0.0439919 0.068621 0.0502186 0.0438712 0.0603175 0.0508698 0.0431717 0.031405 0.0513969 0.0430528 0.0214364 0.0529069 0.0364433 0.0115404 0.0499372 0.0272879 0.009734 0.0418247 0.019754 0.00959991 0.0063899 0.0167406 0.00627291 0.00809936 0.0206155 0.0154227 0.0130972 0.0520831 0.0503335 0.0211952 0.0524328 0.0557035 0.0533689 0.0536784 0.0719735 0.0543092 0.0528516 0.0452017 0.0516884 0.0528298 0.0280111 0.0499555 0.0523509 0.0190195 0.0530866 0.0498072 0.0101529 0.0448761 0.0392412 0.00692549 0.0152346 0.0211597 0.0069864 0.00761766 0.0255523 0.00720298 0.00989399 0.0297757 0.014897 0.00832403 0.0519116 0.0261913 0.010738 0.0519729 0.037623 0.0210941 0.0509778 0.045786 0.0367052 0.0525306 0.0438341 0.0393027 0.0508912 0.0362503 0.0329352 0.0522001 0.0311003 0.0423043 0.0512979 0.0266254 0.0353598 0.0503808 0.0200297 0.0251159 0.0500638 0.0258963 0.031695 0.0508241 0.00974554 0.0368757 0.0423949 0.00646545 0.0159881 0.0513037 0.0211453 0.0168084 0.0541678 0.0303074 0.00911493 0.0517626 0.0123492 0.0267619 0.0400615 0.00824507 0.0180779 0.030901 0.00840163 0.00683914 0.0357343 0.00714248 0.00690264 0.0449099 0.00721481 0.0158238 0.0405295 0.00777253 0.0215191 0.0354368 0.180683 0.0181246 0.031952 0.159079 0.0172166 0.0412462 0.149239 0.0181784 0.0174329 0.157978 0.0196446 0.0217393 0.127703 0.0209024 0.0405598 0.121337 0.0436899 0.0421506 0.151318 0.0301764 0.0366329 0.138616 0.0381376 0.0312281 0.168496 0.042453 0.0417661 0.138785 0.0166428 0.0173275 0.0848707 0.029975 0.0184806 0.11976 0.0317867 0.0195329 0.134966 0.039359 0.0183918 0.172396 0.0422846 0.0187423 0.162282 0.0411694 0.0183122 0.100694 0.0426784 0.0196222 0.0884732 0.0318788 0.0206967 0.0810896 0.0428399 0.0165698 0.0715621 0.0413119 0.0190478 0.0567175 0.0186856 0.0177949 0.049657 0.0184798 0.0413936 0.109652 0.0419817 0.0300497 0.156147 0.040788 0.0410589 0.118353 0.0191274 0.0434973 0.0809933 0.0171528 0.0253658 0.0637428 0.0291127 0.0398002 0.0915135 0.0429621 0.0418298 0.0859235 0.0243178 0.0278442 0.044549 0.0194975 0.0211537 0.0180423 0.0383261 0.0288209 0.108417 0.0278938 0.0386666 0.067337 0.0165175 0.0415388 0.0431766 0.0227181 0.0331366 0.0332625 0.0365909 0.0308978 0.0896051 0.0408086 0.0295351 0.0733303 0.0401132 0.0395427 0.0173936 0.0379076 0.0392543 0.0296459 0.0391444 0.0423529 0.0575918 0.0300484 0.0412925 0.0413252 0.017435 0.0393116 0.13457 0.0413565 0.041955 0.163053 0.0194445 0.0236226 0.145254 0.0319572 0.00854975 0.190513 0.0230492 0.0363117 0.0205638 0.0302175 0.0381335 0.15137 0.0214841 0.035912 0.0564261 0.0211386 0.0307131 0.0779248 0.0363509 0.0246238 0.0227916 0.0295866 0.0210285 0.161277 0.0196096 0.0492329 0.0118221 0.00977875 0.051665 0.170847 0.0376167 0.0410258 0.0736296 0.0392938 0.0308828 0.054608 0.0108241 0.0515587 0.0625047 0.00980254 0.0521877 0.0748531 0.0102177 0.0161894 0.17043 0.0266549 0.0100756 0.149034 0.0506878 0.0122181 0.0102005 0.0427058 0.0530864 0.0769121 0.0434914 0.0515736 0.0110345 0.0510853 0.0385646 0.169806 0.0513077 0.0500789 0.123004 0.0524421 0.00942279 0.153061 0.0134206 0.0088173 0.0121593 0.039852 0.0495599 0.187532 0.00878822 0.0489146 0.1251 0.0192247 0.0163015 0.0721337 0.00882343 0.00825944 0.0947351 0.0302488 0.0397204 0.108558 0.0504764 0.0151595 0.189287 0.0511423 0.024615 0.0671773 0.051141 0.0309209 0.0366005 0.0520757 0.0488088 0.16319 0.0188929 0.00851001 0.178772 0.0517261 0.0505299 0.134944 0.0418998 0.0173461 0.114202 0.0462492 0.0537067 0.192836 0.0431501 0.0181891 0.131347 0.0266891 0.0517935 0.097388 0.0456111 0.0302093 0.142335 0.0254035 0.0521254 0.0384109 0.0308561 0.0202287 0.0648023 0.00787748 0.00709098 0.0234945 0.0243406 0.00755507 0.157132 0.0103989 0.0300738 0.171442 0.0246896 0.049369 0.133486 0.0373267 0.0517829 0.103546 0.0248867 0.00884835 0.0821055 0.0094285 0.0167642 0.115906 0.0489511 0.0531687 0.0383245 0.0116278 0.0478461 0.159873 0.0229345 0.041425 0.167618 0.0494729 0.0199221 0.0440449 0.051763 0.010614 0.0824121 0.0491949 0.0191053 0.0306397 0.0499485 0.0258084 0.0801696 0.00958233 0.0394193 0.103297 0.0514412 0.031159 0.0470547 0.037744 0.0239347 0.182088 0.0211924 0.0237495 0.174254 0.0447569 0.00746329 0.0635514 0.0436948 0.0425098 0.192955 0.021997 0.0198424 0.0972753 0.0472592 0.0521914 0.0645461 0.0511281 0.0343881 0.089267 0.0233124 0.0502684 0.143454 0.0514924 0.0505784 0.144636 0.0482687 0.0065629 0.110963 0.0508192 0.0304329 0.0246243 0.0130743 0.0290836 0.0397239 0.0507521 0.00856877 0.0239644 0.0393691 0.0497276 0.12879 0.00845562 0.0403099 0.115551 0.00947306 0.029672 0.025633 0.0437375 0.0404278 0.103282 0.00795201 0.0189416 0.141989 0.0174196 0.00992401 0.138227 0.0483789 0.00680219 0.129227 0.0388834 0.0088805 0.143018 0.0352684 0.0391911 0.180931 0.0523949 0.0263039 0.0562 0.0235973 0.0107118 0.00764183 0.00900428 0.0532368 0.0876278 0.00774012 0.00822263 0.0847952 0.0344041 0.0331307 0.126024 0.0203522 0.0501595 0.0661434 0.0192034 0.0267298 0.110826 0.0378211 0.0246893 0.039246 0.00962161 0.0243775 0.051528 0.0330926 0.0516382 0.158843 0.00773445 0.00949489 0.0340157 0.0522118 0.0399078 0.0518548 0.00915775 0.0324008 0.0863764 0.0319677 0.0511284 0.174913 0.0252477 0.0510618 0.109637 0.0319099 0.051395 0.0827479 0.00922538 0.0165172 0.0421269 0.0336107 0.0101275 0.0292667 0.0166112 0.00792671 0.0276733 0.0527835 0.0497684 0.153204 0.0289271 0.021503 0.00925556 0.0132593 0.0118451 0.190043 0.0180188 0.0106117 0.0592241 0.0362371 0.054783 0.194095 0.00866739 0.0515925 0.138398 0.0486583 0.0519205 0.0524152 0.0532686 0.0149736 0.0719222 0.00831506 0.0239724 0.16031 0.00785882 0.00782334 0.0567469 0.00660018 0.0310068 0.107169 0.0345061 0.0302732 0.00835459 0.0129378 0.0429117 0.0308539 0.0363999 0.00808697 0.0597854 0.0186713 0.0402981 0.0975049 0.00771198 0.0194958 0.127367 0.0478563 0.0429137 0.0428553 0.0497275 0.0282991 0.177505 0.00798727 0.0189342 0.102629 0.0507204 0.0223212 0.155235 0.0313615 0.0076581 0.0979293 0.0484049 0.0073621 0.120083 0.0298633 0.0143256 0.0513787 0.0084902 0.0321362 0.0665467 0.0458972 0.00539591 0.00603485 0.0109803 0.00896871 0.13006 0.0486535 0.0512036 0.179889 0.00861196 0.0411984 0.0182537 0.0389316 0.0193093 0.147607 0.020815 0.0183289 0.0346505 0.051512 0.0113465 0.143169 0.0335604 0.0503648 0.0558584 0.0280315 0.0073668 0.0628493 0.00998517 0.00889411 0.106799 0.00803907 0.00791492 0.0657666 0.0400485 0.00747199 0.106437 0.0467627 0.0517762 0.11076 METADATA INFORMATION 2 NAME L2_NORM_RANGE LOCATION vtkDataArray DATA 2 0 0.217256 NAME L2_NORM_FINITE_RANGE LOCATION vtkDataArray DATA 2 0 0.217256 CELLS 4614 18452 OFFSETS vtktypeint64 0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124 128 132 136 140 144 148 152 156 160 164 168 172 176 180 184 188 192 196 200 204 208 212 216 220 224 228 232 236 240 244 248 252 256 260 264 268 272 276 280 284 288 292 296 300 304 308 312 316 320 324 328 332 336 340 344 348 352 356 360 364 368 372 376 380 384 388 392 396 400 404 408 412 416 420 424 428 432 436 440 444 448 452 456 460 464 468 472 476 480 484 488 492 496 500 504 508 512 516 520 524 528 532 536 540 544 548 552 556 560 564 568 572 576 580 584 588 592 596 600 604 608 612 616 620 624 628 632 636 640 644 648 652 656 660 664 668 672 676 680 684 688 692 696 700 704 708 712 716 720 724 728 732 736 740 744 748 752 756 760 764 768 772 776 780 784 788 792 796 800 804 808 812 816 820 824 828 832 836 840 844 848 852 856 860 864 868 872 876 880 884 888 892 896 900 904 908 912 916 920 924 928 932 936 940 944 948 952 956 960 964 968 972 976 980 984 988 992 996 1000 1004 1008 1012 1016 1020 1024 1028 1032 1036 1040 1044 1048 1052 1056 1060 1064 1068 1072 1076 1080 1084 1088 1092 1096 1100 1104 1108 1112 1116 1120 1124 1128 1132 1136 1140 1144 1148 1152 1156 1160 1164 1168 1172 1176 1180 1184 1188 1192 1196 1200 1204 1208 1212 1216 1220 1224 1228 1232 1236 1240 1244 1248 1252 1256 1260 1264 1268 1272 1276 1280 1284 1288 1292 1296 1300 1304 1308 1312 1316 1320 1324 1328 1332 1336 1340 1344 1348 1352 1356 1360 1364 1368 1372 1376 1380 1384 1388 1392 1396 1400 1404 1408 1412 1416 1420 1424 1428 1432 1436 1440 1444 1448 1452 1456 1460 1464 1468 1472 1476 1480 1484 1488 1492 1496 1500 1504 1508 1512 1516 1520 1524 1528 1532 1536 1540 1544 1548 1552 1556 1560 1564 1568 1572 1576 1580 1584 1588 1592 1596 1600 1604 1608 1612 1616 1620 1624 1628 1632 1636 1640 1644 1648 1652 1656 1660 1664 1668 1672 1676 1680 1684 1688 1692 1696 1700 1704 1708 1712 1716 1720 1724 1728 1732 1736 1740 1744 1748 1752 1756 1760 1764 1768 1772 1776 1780 1784 1788 1792 1796 1800 1804 1808 1812 1816 1820 1824 1828 1832 1836 1840 1844 1848 1852 1856 1860 1864 1868 1872 1876 1880 1884 1888 1892 1896 1900 1904 1908 1912 1916 1920 1924 1928 1932 1936 1940 1944 1948 1952 1956 1960 1964 1968 1972 1976 1980 1984 1988 1992 1996 2000 2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2044 2048 2052 2056 2060 2064 2068 2072 2076 2080 2084 2088 2092 2096 2100 2104 2108 2112 2116 2120 2124 2128 2132 2136 2140 2144 2148 2152 2156 2160 2164 2168 2172 2176 2180 2184 2188 2192 2196 2200 2204 2208 2212 2216 2220 2224 2228 2232 2236 2240 2244 2248 2252 2256 2260 2264 2268 2272 2276 2280 2284 2288 2292 2296 2300 2304 2308 2312 2316 2320 2324 2328 2332 2336 2340 2344 2348 2352 2356 2360 2364 2368 2372 2376 2380 2384 2388 2392 2396 2400 2404 2408 2412 2416 2420 2424 2428 2432 2436 2440 2444 2448 2452 2456 2460 2464 2468 2472 2476 2480 2484 2488 2492 2496 2500 2504 2508 2512 2516 2520 2524 2528 2532 2536 2540 2544 2548 2552 2556 2560 2564 2568 2572 2576 2580 2584 2588 2592 2596 2600 2604 2608 2612 2616 2620 2624 2628 2632 2636 2640 2644 2648 2652 2656 2660 2664 2668 2672 2676 2680 2684 2688 2692 2696 2700 2704 2708 2712 2716 2720 2724 2728 2732 2736 2740 2744 2748 2752 2756 2760 2764 2768 2772 2776 2780 2784 2788 2792 2796 2800 2804 2808 2812 2816 2820 2824 2828 2832 2836 2840 2844 2848 2852 2856 2860 2864 2868 2872 2876 2880 2884 2888 2892 2896 2900 2904 2908 2912 2916 2920 2924 2928 2932 2936 2940 2944 2948 2952 2956 2960 2964 2968 2972 2976 2980 2984 2988 2992 2996 3000 3004 3008 3012 3016 3020 3024 3028 3032 3036 3040 3044 3048 3052 3056 3060 3064 3068 3072 3076 3080 3084 3088 3092 3096 3100 3104 3108 3112 3116 3120 3124 3128 3132 3136 3140 3144 3148 3152 3156 3160 3164 3168 3172 3176 3180 3184 3188 3192 3196 3200 3204 3208 3212 3216 3220 3224 3228 3232 3236 3240 3244 3248 3252 3256 3260 3264 3268 3272 3276 3280 3284 3288 3292 3296 3300 3304 3308 3312 3316 3320 3324 3328 3332 3336 3340 3344 3348 3352 3356 3360 3364 3368 3372 3376 3380 3384 3388 3392 3396 3400 3404 3408 3412 3416 3420 3424 3428 3432 3436 3440 3444 3448 3452 3456 3460 3464 3468 3472 3476 3480 3484 3488 3492 3496 3500 3504 3508 3512 3516 3520 3524 3528 3532 3536 3540 3544 3548 3552 3556 3560 3564 3568 3572 3576 3580 3584 3588 3592 3596 3600 3604 3608 3612 3616 3620 3624 3628 3632 3636 3640 3644 3648 3652 3656 3660 3664 3668 3672 3676 3680 3684 3688 3692 3696 3700 3704 3708 3712 3716 3720 3724 3728 3732 3736 3740 3744 3748 3752 3756 3760 3764 3768 3772 3776 3780 3784 3788 3792 3796 3800 3804 3808 3812 3816 3820 3824 3828 3832 3836 3840 3844 3848 3852 3856 3860 3864 3868 3872 3876 3880 3884 3888 3892 3896 3900 3904 3908 3912 3916 3920 3924 3928 3932 3936 3940 3944 3948 3952 3956 3960 3964 3968 3972 3976 3980 3984 3988 3992 3996 4000 4004 4008 4012 4016 4020 4024 4028 4032 4036 4040 4044 4048 4052 4056 4060 4064 4068 4072 4076 4080 4084 4088 4092 4096 4100 4104 4108 4112 4116 4120 4124 4128 4132 4136 4140 4144 4148 4152 4156 4160 4164 4168 4172 4176 4180 4184 4188 4192 4196 4200 4204 4208 4212 4216 4220 4224 4228 4232 4236 4240 4244 4248 4252 4256 4260 4264 4268 4272 4276 4280 4284 4288 4292 4296 4300 4304 4308 4312 4316 4320 4324 4328 4332 4336 4340 4344 4348 4352 4356 4360 4364 4368 4372 4376 4380 4384 4388 4392 4396 4400 4404 4408 4412 4416 4420 4424 4428 4432 4436 4440 4444 4448 4452 4456 4460 4464 4468 4472 4476 4480 4484 4488 4492 4496 4500 4504 4508 4512 4516 4520 4524 4528 4532 4536 4540 4544 4548 4552 4556 4560 4564 4568 4572 4576 4580 4584 4588 4592 4596 4600 4604 4608 4612 4616 4620 4624 4628 4632 4636 4640 4644 4648 4652 4656 4660 4664 4668 4672 4676 4680 4684 4688 4692 4696 4700 4704 4708 4712 4716 4720 4724 4728 4732 4736 4740 4744 4748 4752 4756 4760 4764 4768 4772 4776 4780 4784 4788 4792 4796 4800 4804 4808 4812 4816 4820 4824 4828 4832 4836 4840 4844 4848 4852 4856 4860 4864 4868 4872 4876 4880 4884 4888 4892 4896 4900 4904 4908 4912 4916 4920 4924 4928 4932 4936 4940 4944 4948 4952 4956 4960 4964 4968 4972 4976 4980 4984 4988 4992 4996 5000 5004 5008 5012 5016 5020 5024 5028 5032 5036 5040 5044 5048 5052 5056 5060 5064 5068 5072 5076 5080 5084 5088 5092 5096 5100 5104 5108 5112 5116 5120 5124 5128 5132 5136 5140 5144 5148 5152 5156 5160 5164 5168 5172 5176 5180 5184 5188 5192 5196 5200 5204 5208 5212 5216 5220 5224 5228 5232 5236 5240 5244 5248 5252 5256 5260 5264 5268 5272 5276 5280 5284 5288 5292 5296 5300 5304 5308 5312 5316 5320 5324 5328 5332 5336 5340 5344 5348 5352 5356 5360 5364 5368 5372 5376 5380 5384 5388 5392 5396 5400 5404 5408 5412 5416 5420 5424 5428 5432 5436 5440 5444 5448 5452 5456 5460 5464 5468 5472 5476 5480 5484 5488 5492 5496 5500 5504 5508 5512 5516 5520 5524 5528 5532 5536 5540 5544 5548 5552 5556 5560 5564 5568 5572 5576 5580 5584 5588 5592 5596 5600 5604 5608 5612 5616 5620 5624 5628 5632 5636 5640 5644 5648 5652 5656 5660 5664 5668 5672 5676 5680 5684 5688 5692 5696 5700 5704 5708 5712 5716 5720 5724 5728 5732 5736 5740 5744 5748 5752 5756 5760 5764 5768 5772 5776 5780 5784 5788 5792 5796 5800 5804 5808 5812 5816 5820 5824 5828 5832 5836 5840 5844 5848 5852 5856 5860 5864 5868 5872 5876 5880 5884 5888 5892 5896 5900 5904 5908 5912 5916 5920 5924 5928 5932 5936 5940 5944 5948 5952 5956 5960 5964 5968 5972 5976 5980 5984 5988 5992 5996 6000 6004 6008 6012 6016 6020 6024 6028 6032 6036 6040 6044 6048 6052 6056 6060 6064 6068 6072 6076 6080 6084 6088 6092 6096 6100 6104 6108 6112 6116 6120 6124 6128 6132 6136 6140 6144 6148 6152 6156 6160 6164 6168 6172 6176 6180 6184 6188 6192 6196 6200 6204 6208 6212 6216 6220 6224 6228 6232 6236 6240 6244 6248 6252 6256 6260 6264 6268 6272 6276 6280 6284 6288 6292 6296 6300 6304 6308 6312 6316 6320 6324 6328 6332 6336 6340 6344 6348 6352 6356 6360 6364 6368 6372 6376 6380 6384 6388 6392 6396 6400 6404 6408 6412 6416 6420 6424 6428 6432 6436 6440 6444 6448 6452 6456 6460 6464 6468 6472 6476 6480 6484 6488 6492 6496 6500 6504 6508 6512 6516 6520 6524 6528 6532 6536 6540 6544 6548 6552 6556 6560 6564 6568 6572 6576 6580 6584 6588 6592 6596 6600 6604 6608 6612 6616 6620 6624 6628 6632 6636 6640 6644 6648 6652 6656 6660 6664 6668 6672 6676 6680 6684 6688 6692 6696 6700 6704 6708 6712 6716 6720 6724 6728 6732 6736 6740 6744 6748 6752 6756 6760 6764 6768 6772 6776 6780 6784 6788 6792 6796 6800 6804 6808 6812 6816 6820 6824 6828 6832 6836 6840 6844 6848 6852 6856 6860 6864 6868 6872 6876 6880 6884 6888 6892 6896 6900 6904 6908 6912 6916 6920 6924 6928 6932 6936 6940 6944 6948 6952 6956 6960 6964 6968 6972 6976 6980 6984 6988 6992 6996 7000 7004 7008 7012 7016 7020 7024 7028 7032 7036 7040 7044 7048 7052 7056 7060 7064 7068 7072 7076 7080 7084 7088 7092 7096 7100 7104 7108 7112 7116 7120 7124 7128 7132 7136 7140 7144 7148 7152 7156 7160 7164 7168 7172 7176 7180 7184 7188 7192 7196 7200 7204 7208 7212 7216 7220 7224 7228 7232 7236 7240 7244 7248 7252 7256 7260 7264 7268 7272 7276 7280 7284 7288 7292 7296 7300 7304 7308 7312 7316 7320 7324 7328 7332 7336 7340 7344 7348 7352 7356 7360 7364 7368 7372 7376 7380 7384 7388 7392 7396 7400 7404 7408 7412 7416 7420 7424 7428 7432 7436 7440 7444 7448 7452 7456 7460 7464 7468 7472 7476 7480 7484 7488 7492 7496 7500 7504 7508 7512 7516 7520 7524 7528 7532 7536 7540 7544 7548 7552 7556 7560 7564 7568 7572 7576 7580 7584 7588 7592 7596 7600 7604 7608 7612 7616 7620 7624 7628 7632 7636 7640 7644 7648 7652 7656 7660 7664 7668 7672 7676 7680 7684 7688 7692 7696 7700 7704 7708 7712 7716 7720 7724 7728 7732 7736 7740 7744 7748 7752 7756 7760 7764 7768 7772 7776 7780 7784 7788 7792 7796 7800 7804 7808 7812 7816 7820 7824 7828 7832 7836 7840 7844 7848 7852 7856 7860 7864 7868 7872 7876 7880 7884 7888 7892 7896 7900 7904 7908 7912 7916 7920 7924 7928 7932 7936 7940 7944 7948 7952 7956 7960 7964 7968 7972 7976 7980 7984 7988 7992 7996 8000 8004 8008 8012 8016 8020 8024 8028 8032 8036 8040 8044 8048 8052 8056 8060 8064 8068 8072 8076 8080 8084 8088 8092 8096 8100 8104 8108 8112 8116 8120 8124 8128 8132 8136 8140 8144 8148 8152 8156 8160 8164 8168 8172 8176 8180 8184 8188 8192 8196 8200 8204 8208 8212 8216 8220 8224 8228 8232 8236 8240 8244 8248 8252 8256 8260 8264 8268 8272 8276 8280 8284 8288 8292 8296 8300 8304 8308 8312 8316 8320 8324 8328 8332 8336 8340 8344 8348 8352 8356 8360 8364 8368 8372 8376 8380 8384 8388 8392 8396 8400 8404 8408 8412 8416 8420 8424 8428 8432 8436 8440 8444 8448 8452 8456 8460 8464 8468 8472 8476 8480 8484 8488 8492 8496 8500 8504 8508 8512 8516 8520 8524 8528 8532 8536 8540 8544 8548 8552 8556 8560 8564 8568 8572 8576 8580 8584 8588 8592 8596 8600 8604 8608 8612 8616 8620 8624 8628 8632 8636 8640 8644 8648 8652 8656 8660 8664 8668 8672 8676 8680 8684 8688 8692 8696 8700 8704 8708 8712 8716 8720 8724 8728 8732 8736 8740 8744 8748 8752 8756 8760 8764 8768 8772 8776 8780 8784 8788 8792 8796 8800 8804 8808 8812 8816 8820 8824 8828 8832 8836 8840 8844 8848 8852 8856 8860 8864 8868 8872 8876 8880 8884 8888 8892 8896 8900 8904 8908 8912 8916 8920 8924 8928 8932 8936 8940 8944 8948 8952 8956 8960 8964 8968 8972 8976 8980 8984 8988 8992 8996 9000 9004 9008 9012 9016 9020 9024 9028 9032 9036 9040 9044 9048 9052 9056 9060 9064 9068 9072 9076 9080 9084 9088 9092 9096 9100 9104 9108 9112 9116 9120 9124 9128 9132 9136 9140 9144 9148 9152 9156 9160 9164 9168 9172 9176 9180 9184 9188 9192 9196 9200 9204 9208 9212 9216 9220 9224 9228 9232 9236 9240 9244 9248 9252 9256 9260 9264 9268 9272 9276 9280 9284 9288 9292 9296 9300 9304 9308 9312 9316 9320 9324 9328 9332 9336 9340 9344 9348 9352 9356 9360 9364 9368 9372 9376 9380 9384 9388 9392 9396 9400 9404 9408 9412 9416 9420 9424 9428 9432 9436 9440 9444 9448 9452 9456 9460 9464 9468 9472 9476 9480 9484 9488 9492 9496 9500 9504 9508 9512 9516 9520 9524 9528 9532 9536 9540 9544 9548 9552 9556 9560 9564 9568 9572 9576 9580 9584 9588 9592 9596 9600 9604 9608 9612 9616 9620 9624 9628 9632 9636 9640 9644 9648 9652 9656 9660 9664 9668 9672 9676 9680 9684 9688 9692 9696 9700 9704 9708 9712 9716 9720 9724 9728 9732 9736 9740 9744 9748 9752 9756 9760 9764 9768 9772 9776 9780 9784 9788 9792 9796 9800 9804 9808 9812 9816 9820 9824 9828 9832 9836 9840 9844 9848 9852 9856 9860 9864 9868 9872 9876 9880 9884 9888 9892 9896 9900 9904 9908 9912 9916 9920 9924 9928 9932 9936 9940 9944 9948 9952 9956 9960 9964 9968 9972 9976 9980 9984 9988 9992 9996 10000 10004 10008 10012 10016 10020 10024 10028 10032 10036 10040 10044 10048 10052 10056 10060 10064 10068 10072 10076 10080 10084 10088 10092 10096 10100 10104 10108 10112 10116 10120 10124 10128 10132 10136 10140 10144 10148 10152 10156 10160 10164 10168 10172 10176 10180 10184 10188 10192 10196 10200 10204 10208 10212 10216 10220 10224 10228 10232 10236 10240 10244 10248 10252 10256 10260 10264 10268 10272 10276 10280 10284 10288 10292 10296 10300 10304 10308 10312 10316 10320 10324 10328 10332 10336 10340 10344 10348 10352 10356 10360 10364 10368 10372 10376 10380 10384 10388 10392 10396 10400 10404 10408 10412 10416 10420 10424 10428 10432 10436 10440 10444 10448 10452 10456 10460 10464 10468 10472 10476 10480 10484 10488 10492 10496 10500 10504 10508 10512 10516 10520 10524 10528 10532 10536 10540 10544 10548 10552 10556 10560 10564 10568 10572 10576 10580 10584 10588 10592 10596 10600 10604 10608 10612 10616 10620 10624 10628 10632 10636 10640 10644 10648 10652 10656 10660 10664 10668 10672 10676 10680 10684 10688 10692 10696 10700 10704 10708 10712 10716 10720 10724 10728 10732 10736 10740 10744 10748 10752 10756 10760 10764 10768 10772 10776 10780 10784 10788 10792 10796 10800 10804 10808 10812 10816 10820 10824 10828 10832 10836 10840 10844 10848 10852 10856 10860 10864 10868 10872 10876 10880 10884 10888 10892 10896 10900 10904 10908 10912 10916 10920 10924 10928 10932 10936 10940 10944 10948 10952 10956 10960 10964 10968 10972 10976 10980 10984 10988 10992 10996 11000 11004 11008 11012 11016 11020 11024 11028 11032 11036 11040 11044 11048 11052 11056 11060 11064 11068 11072 11076 11080 11084 11088 11092 11096 11100 11104 11108 11112 11116 11120 11124 11128 11132 11136 11140 11144 11148 11152 11156 11160 11164 11168 11172 11176 11180 11184 11188 11192 11196 11200 11204 11208 11212 11216 11220 11224 11228 11232 11236 11240 11244 11248 11252 11256 11260 11264 11268 11272 11276 11280 11284 11288 11292 11296 11300 11304 11308 11312 11316 11320 11324 11328 11332 11336 11340 11344 11348 11352 11356 11360 11364 11368 11372 11376 11380 11384 11388 11392 11396 11400 11404 11408 11412 11416 11420 11424 11428 11432 11436 11440 11444 11448 11452 11456 11460 11464 11468 11472 11476 11480 11484 11488 11492 11496 11500 11504 11508 11512 11516 11520 11524 11528 11532 11536 11540 11544 11548 11552 11556 11560 11564 11568 11572 11576 11580 11584 11588 11592 11596 11600 11604 11608 11612 11616 11620 11624 11628 11632 11636 11640 11644 11648 11652 11656 11660 11664 11668 11672 11676 11680 11684 11688 11692 11696 11700 11704 11708 11712 11716 11720 11724 11728 11732 11736 11740 11744 11748 11752 11756 11760 11764 11768 11772 11776 11780 11784 11788 11792 11796 11800 11804 11808 11812 11816 11820 11824 11828 11832 11836 11840 11844 11848 11852 11856 11860 11864 11868 11872 11876 11880 11884 11888 11892 11896 11900 11904 11908 11912 11916 11920 11924 11928 11932 11936 11940 11944 11948 11952 11956 11960 11964 11968 11972 11976 11980 11984 11988 11992 11996 12000 12004 12008 12012 12016 12020 12024 12028 12032 12036 12040 12044 12048 12052 12056 12060 12064 12068 12072 12076 12080 12084 12088 12092 12096 12100 12104 12108 12112 12116 12120 12124 12128 12132 12136 12140 12144 12148 12152 12156 12160 12164 12168 12172 12176 12180 12184 12188 12192 12196 12200 12204 12208 12212 12216 12220 12224 12228 12232 12236 12240 12244 12248 12252 12256 12260 12264 12268 12272 12276 12280 12284 12288 12292 12296 12300 12304 12308 12312 12316 12320 12324 12328 12332 12336 12340 12344 12348 12352 12356 12360 12364 12368 12372 12376 12380 12384 12388 12392 12396 12400 12404 12408 12412 12416 12420 12424 12428 12432 12436 12440 12444 12448 12452 12456 12460 12464 12468 12472 12476 12480 12484 12488 12492 12496 12500 12504 12508 12512 12516 12520 12524 12528 12532 12536 12540 12544 12548 12552 12556 12560 12564 12568 12572 12576 12580 12584 12588 12592 12596 12600 12604 12608 12612 12616 12620 12624 12628 12632 12636 12640 12644 12648 12652 12656 12660 12664 12668 12672 12676 12680 12684 12688 12692 12696 12700 12704 12708 12712 12716 12720 12724 12728 12732 12736 12740 12744 12748 12752 12756 12760 12764 12768 12772 12776 12780 12784 12788 12792 12796 12800 12804 12808 12812 12816 12820 12824 12828 12832 12836 12840 12844 12848 12852 12856 12860 12864 12868 12872 12876 12880 12884 12888 12892 12896 12900 12904 12908 12912 12916 12920 12924 12928 12932 12936 12940 12944 12948 12952 12956 12960 12964 12968 12972 12976 12980 12984 12988 12992 12996 13000 13004 13008 13012 13016 13020 13024 13028 13032 13036 13040 13044 13048 13052 13056 13060 13064 13068 13072 13076 13080 13084 13088 13092 13096 13100 13104 13108 13112 13116 13120 13124 13128 13132 13136 13140 13144 13148 13152 13156 13160 13164 13168 13172 13176 13180 13184 13188 13192 13196 13200 13204 13208 13212 13216 13220 13224 13228 13232 13236 13240 13244 13248 13252 13256 13260 13264 13268 13272 13276 13280 13284 13288 13292 13296 13300 13304 13308 13312 13316 13320 13324 13328 13332 13336 13340 13344 13348 13352 13356 13360 13364 13368 13372 13376 13380 13384 13388 13392 13396 13400 13404 13408 13412 13416 13420 13424 13428 13432 13436 13440 13444 13448 13452 13456 13460 13464 13468 13472 13476 13480 13484 13488 13492 13496 13500 13504 13508 13512 13516 13520 13524 13528 13532 13536 13540 13544 13548 13552 13556 13560 13564 13568 13572 13576 13580 13584 13588 13592 13596 13600 13604 13608 13612 13616 13620 13624 13628 13632 13636 13640 13644 13648 13652 13656 13660 13664 13668 13672 13676 13680 13684 13688 13692 13696 13700 13704 13708 13712 13716 13720 13724 13728 13732 13736 13740 13744 13748 13752 13756 13760 13764 13768 13772 13776 13780 13784 13788 13792 13796 13800 13804 13808 13812 13816 13820 13824 13828 13832 13836 13840 13844 13848 13852 13856 13860 13864 13868 13872 13876 13880 13884 13888 13892 13896 13900 13904 13908 13912 13916 13920 13924 13928 13932 13936 13940 13944 13948 13952 13956 13960 13964 13968 13972 13976 13980 13984 13988 13992 13996 14000 14004 14008 14012 14016 14020 14024 14028 14032 14036 14040 14044 14048 14052 14056 14060 14064 14068 14072 14076 14080 14084 14088 14092 14096 14100 14104 14108 14112 14116 14120 14124 14128 14132 14136 14140 14144 14148 14152 14156 14160 14164 14168 14172 14176 14180 14184 14188 14192 14196 14200 14204 14208 14212 14216 14220 14224 14228 14232 14236 14240 14244 14248 14252 14256 14260 14264 14268 14272 14276 14280 14284 14288 14292 14296 14300 14304 14308 14312 14316 14320 14324 14328 14332 14336 14340 14344 14348 14352 14356 14360 14364 14368 14372 14376 14380 14384 14388 14392 14396 14400 14404 14408 14412 14416 14420 14424 14428 14432 14436 14440 14444 14448 14452 14456 14460 14464 14468 14472 14476 14480 14484 14488 14492 14496 14500 14504 14508 14512 14516 14520 14524 14528 14532 14536 14540 14544 14548 14552 14556 14560 14564 14568 14572 14576 14580 14584 14588 14592 14596 14600 14604 14608 14612 14616 14620 14624 14628 14632 14636 14640 14644 14648 14652 14656 14660 14664 14668 14672 14676 14680 14684 14688 14692 14696 14700 14704 14708 14712 14716 14720 14724 14728 14732 14736 14740 14744 14748 14752 14756 14760 14764 14768 14772 14776 14780 14784 14788 14792 14796 14800 14804 14808 14812 14816 14820 14824 14828 14832 14836 14840 14844 14848 14852 14856 14860 14864 14868 14872 14876 14880 14884 14888 14892 14896 14900 14904 14908 14912 14916 14920 14924 14928 14932 14936 14940 14944 14948 14952 14956 14960 14964 14968 14972 14976 14980 14984 14988 14992 14996 15000 15004 15008 15012 15016 15020 15024 15028 15032 15036 15040 15044 15048 15052 15056 15060 15064 15068 15072 15076 15080 15084 15088 15092 15096 15100 15104 15108 15112 15116 15120 15124 15128 15132 15136 15140 15144 15148 15152 15156 15160 15164 15168 15172 15176 15180 15184 15188 15192 15196 15200 15204 15208 15212 15216 15220 15224 15228 15232 15236 15240 15244 15248 15252 15256 15260 15264 15268 15272 15276 15280 15284 15288 15292 15296 15300 15304 15308 15312 15316 15320 15324 15328 15332 15336 15340 15344 15348 15352 15356 15360 15364 15368 15372 15376 15380 15384 15388 15392 15396 15400 15404 15408 15412 15416 15420 15424 15428 15432 15436 15440 15444 15448 15452 15456 15460 15464 15468 15472 15476 15480 15484 15488 15492 15496 15500 15504 15508 15512 15516 15520 15524 15528 15532 15536 15540 15544 15548 15552 15556 15560 15564 15568 15572 15576 15580 15584 15588 15592 15596 15600 15604 15608 15612 15616 15620 15624 15628 15632 15636 15640 15644 15648 15652 15656 15660 15664 15668 15672 15676 15680 15684 15688 15692 15696 15700 15704 15708 15712 15716 15720 15724 15728 15732 15736 15740 15744 15748 15752 15756 15760 15764 15768 15772 15776 15780 15784 15788 15792 15796 15800 15804 15808 15812 15816 15820 15824 15828 15832 15836 15840 15844 15848 15852 15856 15860 15864 15868 15872 15876 15880 15884 15888 15892 15896 15900 15904 15908 15912 15916 15920 15924 15928 15932 15936 15940 15944 15948 15952 15956 15960 15964 15968 15972 15976 15980 15984 15988 15992 15996 16000 16004 16008 16012 16016 16020 16024 16028 16032 16036 16040 16044 16048 16052 16056 16060 16064 16068 16072 16076 16080 16084 16088 16092 16096 16100 16104 16108 16112 16116 16120 16124 16128 16132 16136 16140 16144 16148 16152 16156 16160 16164 16168 16172 16176 16180 16184 16188 16192 16196 16200 16204 16208 16212 16216 16220 16224 16228 16232 16236 16240 16244 16248 16252 16256 16260 16264 16268 16272 16276 16280 16284 16288 16292 16296 16300 16304 16308 16312 16316 16320 16324 16328 16332 16336 16340 16344 16348 16352 16356 16360 16364 16368 16372 16376 16380 16384 16388 16392 16396 16400 16404 16408 16412 16416 16420 16424 16428 16432 16436 16440 16444 16448 16452 16456 16460 16464 16468 16472 16476 16480 16484 16488 16492 16496 16500 16504 16508 16512 16516 16520 16524 16528 16532 16536 16540 16544 16548 16552 16556 16560 16564 16568 16572 16576 16580 16584 16588 16592 16596 16600 16604 16608 16612 16616 16620 16624 16628 16632 16636 16640 16644 16648 16652 16656 16660 16664 16668 16672 16676 16680 16684 16688 16692 16696 16700 16704 16708 16712 16716 16720 16724 16728 16732 16736 16740 16744 16748 16752 16756 16760 16764 16768 16772 16776 16780 16784 16788 16792 16796 16800 16804 16808 16812 16816 16820 16824 16828 16832 16836 16840 16844 16848 16852 16856 16860 16864 16868 16872 16876 16880 16884 16888 16892 16896 16900 16904 16908 16912 16916 16920 16924 16928 16932 16936 16940 16944 16948 16952 16956 16960 16964 16968 16972 16976 16980 16984 16988 16992 16996 17000 17004 17008 17012 17016 17020 17024 17028 17032 17036 17040 17044 17048 17052 17056 17060 17064 17068 17072 17076 17080 17084 17088 17092 17096 17100 17104 17108 17112 17116 17120 17124 17128 17132 17136 17140 17144 17148 17152 17156 17160 17164 17168 17172 17176 17180 17184 17188 17192 17196 17200 17204 17208 17212 17216 17220 17224 17228 17232 17236 17240 17244 17248 17252 17256 17260 17264 17268 17272 17276 17280 17284 17288 17292 17296 17300 17304 17308 17312 17316 17320 17324 17328 17332 17336 17340 17344 17348 17352 17356 17360 17364 17368 17372 17376 17380 17384 17388 17392 17396 17400 17404 17408 17412 17416 17420 17424 17428 17432 17436 17440 17444 17448 17452 17456 17460 17464 17468 17472 17476 17480 17484 17488 17492 17496 17500 17504 17508 17512 17516 17520 17524 17528 17532 17536 17540 17544 17548 17552 17556 17560 17564 17568 17572 17576 17580 17584 17588 17592 17596 17600 17604 17608 17612 17616 17620 17624 17628 17632 17636 17640 17644 17648 17652 17656 17660 17664 17668 17672 17676 17680 17684 17688 17692 17696 17700 17704 17708 17712 17716 17720 17724 17728 17732 17736 17740 17744 17748 17752 17756 17760 17764 17768 17772 17776 17780 17784 17788 17792 17796 17800 17804 17808 17812 17816 17820 17824 17828 17832 17836 17840 17844 17848 17852 17856 17860 17864 17868 17872 17876 17880 17884 17888 17892 17896 17900 17904 17908 17912 17916 17920 17924 17928 17932 17936 17940 17944 17948 17952 17956 17960 17964 17968 17972 17976 17980 17984 17988 17992 17996 18000 18004 18008 18012 18016 18020 18024 18028 18032 18036 18040 18044 18048 18052 18056 18060 18064 18068 18072 18076 18080 18084 18088 18092 18096 18100 18104 18108 18112 18116 18120 18124 18128 18132 18136 18140 18144 18148 18152 18156 18160 18164 18168 18172 18176 18180 18184 18188 18192 18196 18200 18204 18208 18212 18216 18220 18224 18228 18232 18236 18240 18244 18248 18252 18256 18260 18264 18268 18272 18276 18280 18284 18288 18292 18296 18300 18304 18308 18312 18316 18320 18324 18328 18332 18336 18340 18344 18348 18352 18356 18360 18364 18368 18372 18376 18380 18384 18388 18392 18396 18400 18404 18408 18412 18416 18420 18424 18428 18432 18436 18440 18444 18448 18452 CONNECTIVITY vtktypeint64 39 772 284 40 970 1064 994 993 732 750 282 29 734 33 34 283 922 154 934 199 800 726 742 734 830 12 614 613 1146 497 555 996 1011 454 109 455 1027 1087 786 1032 1050 1086 1051 885 1137 1037 810 817 804 32 142 141 314 313 1138 930 1101 306 1159 352 859 844 1111 1179 959 1159 307 352 848 847 178 291 848 826 863 1153 833 612 1182 147 948 484 522 483 1151 244 975 275 749 735 95 571 355 310 960 356 1003 1073 1014 1188 930 314 74 445 858 748 285 426 126 578 1203 619 1027 786 770 787 641 642 1025 700 865 335 374 373 1191 1140 1164 875 920 669 630 1213 619 839 127 716 807 576 130 724 1025 1073 1027 1097 971 709 683 684 57 56 178 291 833 146 13 147 849 1192 255 271 1156 1207 368 897 977 354 353 308 760 104 105 453 1095 773 780 791 860 294 295 340 805 187 189 803 1074 1109 1165 1146 1161 902 909 901 808 741 724 807 801 283 734 718 1148 354 327 309 779 976 781 764 1160 1092 922 154 983 462 508 507 811 186 815 140 1157 809 818 808 976 308 353 307 1112 467 582 1144 810 816 759 744 446 73 74 313 44 45 303 166 1114 624 1203 1102 52 53 295 174 440 79 80 319 1081 1032 1033 1036 41 1101 182 328 1159 782 798 781 445 314 74 75 762 102 451 791 1131 905 76 443 1091 603 22 604 930 907 314 445 237 911 1170 922 1108 1184 491 529 905 317 316 77 985 557 525 562 1072 1133 995 992 958 1200 273 935 929 989 358 312 936 45 167 166 710 1021 714 1118 1143 703 691 711 1071 1089 1064 1072 913 1134 874 921 124 125 579 470 1047 878 1105 1161 1161 909 170 216 1202 294 339 293 1157 1139 856 1102 954 969 983 970 814 229 278 228 931 519 1196 917 615 821 10 11 833 613 612 13 612 13 14 147 734 34 3 283 808 753 809 818 618 8 183 801 575 725 130 129 131 130 576 724 575 751 725 129 817 755 754 752 804 142 32 726 806 741 742 756 718 128 751 129 718 3 283 734 718 128 3 734 718 734 751 128 1211 1186 168 214 183 801 8 283 8 3 283 718 1031 1029 644 599 812 186 260 262 9 618 8 183 988 446 491 930 869 665 854 1167 726 32 33 142 1104 924 935 1211 800 283 189 142 802 751 575 718 695 1171 663 697 820 621 662 575 287 1179 66 859 751 718 801 734 1114 624 619 1203 916 547 918 919 808 757 753 818 818 757 752 841 819 662 618 801 805 742 804 743 818 752 840 841 141 727 32 31 1095 762 451 791 810 744 743 727 1078 837 1110 855 811 31 728 727 1171 622 695 621 191 190 822 1128 1032 795 792 1188 1111 287 859 1179 809 817 818 755 874 17 609 608 817 752 840 818 1160 912 607 152 879 380 417 412 811 804 141 727 978 1176 1101 1066 804 187 141 142 1111 334 287 1179 811 187 804 812 893 408 372 331 728 31 140 30 807 621 575 576 812 187 264 260 811 141 186 140 811 728 31 140 430 749 96 571 1111 824 334 1179 824 1111 845 1093 802 820 662 575 96 749 95 571 575 718 751 129 882 1094 376 421 801 662 618 718 800 189 805 142 800 801 283 734 801 662 802 820 802 575 662 718 618 819 9 616 183 9 618 819 803 189 188 264 810 804 805 812 10 9 143 616 817 1037 1157 1136 1045 1051 1050 1086 1128 1088 660 821 1093 1185 825 225 917 568 519 570 1080 730 64 731 847 179 224 178 815 262 227 186 859 287 286 65 1094 863 1040 1079 883 423 404 405 1137 1093 1111 815 1137 883 884 1111 282 30 29 750 1136 818 840 841 572 478 894 1107 863 291 336 847 858 285 748 731 730 859 746 1080 1086 1079 1205 1094 1128 145 191 190 827 257 823 276 932 556 545 546 847 290 57 291 864 826 1040 863 834 232 231 193 830 11 12 145 813 190 814 228 834 232 268 231 821 813 144 190 1128 190 814 813 1179 140 815 227 1136 1107 1194 842 929 311 448 72 819 143 616 1088 845 1093 226 824 1106 1164 1067 1162 1122 260 262 812 843 842 841 737 1171 837 1167 663 804 727 743 726 943 944 522 556 1196 480 519 931 1051 896 892 891 807 130 725 724 1136 843 884 893 837 663 697 623 1181 724 723 131 189 188 819 803 1114 133 132 735 1162 950 1060 942 1181 132 577 131 1129 813 1088 1128 1181 723 132 131 838 471 578 1203 802 725 575 751 1086 1079 1040 1038 1122 228 260 264 756 809 743 806 835 658 613 659 807 130 576 575 820 662 621 699 1077 834 849 827 1031 160 185 206 1122 259 260 278 425 885 886 1121 801 183 189 283 416 889 413 880 1153 177 222 852 614 12 830 11 830 829 835 1128 1157 1037 1045 1136 821 1088 660 615 1137 812 1037 1122 830 146 191 145 1099 465 511 510 882 1154 376 1094 229 814 822 190 1104 1209 903 1180 862 1202 860 294 916 1177 1110 514 917 548 568 570 916 1098 917 548 916 548 917 570 836 692 659 693 1181 576 724 131 1041 1192 1126 862 823 276 280 230 1112 1099 583 466 1213 631 669 630 841 737 738 752 1040 1121 864 863 826 223 224 257 895 434 479 433 906 420 393 394 1110 469 515 514 123 580 469 124 898 395 396 900 1078 916 1110 1098 839 735 716 1114 430 749 722 96 1194 476 477 550 844 754 747 840 229 822 191 190 1139 757 808 818 841 757 738 1139 895 326 371 325 553 1194 947 477 838 579 578 125 947 477 1194 1107 1113 963 965 962 1114 716 133 735 1078 837 855 1167 6 735 133 716 846 290 179 847 843 1107 720 736 471 125 578 126 869 665 870 666 474 126 619 127 839 749 430 571 571 735 6 716 571 6 127 716 474 127 619 839 621 807 622 576 95 571 735 6 1050 1051 946 892 805 812 187 803 1114 735 723 739 1129 1082 1045 1086 841 1139 738 857 818 752 757 753 809 1157 817 1037 98 721 97 431 857 431 842 477 1171 622 697 695 855 1177 580 1110 1181 1102 723 740 858 1107 893 843 857 430 722 97 858 1107 843 736 1098 548 549 568 892 884 408 893 1203 1102 624 697 857 721 431 97 1203 474 517 471 1139 749 1114 739 430 722 97 96 949 522 523 561 800 189 283 801 874 1150 196 1134 1121 375 374 336 836 692 693 715 824 227 226 181 804 32 141 727 750 140 30 728 810 743 804 727 282 140 30 750 856 1203 516 1098 1080 64 285 731 2 282 29 732 282 184 1179 427 844 754 759 746 845 181 288 824 329 60 184 824 1202 176 221 175 846 290 289 58 847 179 178 57 861 253 266 252 824 227 262 226 282 1179 732 427 1005 1101 772 782 850 232 834 194 823 230 828 276 1061 1170 934 1084 827 849 268 834 218 1195 876 251 641 1025 1024 700 870 626 627 665 1153 256 222 223 629 1149 630 1099 1099 584 583 120 991 990 526 986 901 383 344 345 891 896 1100 1196 868 656 657 690 149 15 1103 867 1077 828 1182 834 1027 1073 1081 1032 1181 723 724 740 870 627 1144 871 1038 814 822 1185 863 375 336 337 656 655 914 1103 863 376 375 337 815 1122 262 812 1121 1094 375 863 981 1096 1141 674 857 476 431 477 943 545 556 561 896 435 480 434 800 33 283 142 856 517 516 1203 896 325 434 895 883 892 404 885 858 1080 285 731 471 1203 126 578 126 1203 474 619 1203 837 838 1098 730 1080 746 747 1171 820 621 699 1157 1203 1171 1102 945 1100 1207 482 838 516 471 1203 1139 1102 808 740 857 722 721 97 856 517 857 476 893 894 326 895 1095 574 473 428 858 426 285 372 1107 426 572 733 1107 894 947 478 1194 477 857 842 946 518 553 479 846 225 825 179 287 859 66 65 329 288 60 824 815 227 262 824 1145 364 365 398 812 186 187 260 62 63 748 426 288 181 59 60 847 290 179 57 845 289 59 180 427 732 282 2 427 61 282 184 1179 815 824 227 184 824 60 181 329 184 60 61 1111 1179 815 824 66 427 67 732 871 666 627 628 403 885 425 423 289 59 180 58 290 58 179 57 847 57 178 291 1165 927 928 908 935 1200 273 248 1161 216 171 217 825 225 224 179 1195 252 218 219 1211 168 169 214 564 995 565 538 1210 1105 877 342 294 54 175 53 1192 254 221 255 1090 1076 1075 1193 54 55 852 176 978 265 1006 209 860 53 294 175 1094 421 425 375 1049 1079 1154 882 1213 631 630 585 852 293 1202 338 1154 852 1202 338 293 852 54 55 852 56 292 848 1043 1059 1082 1117 1137 844 816 1111 66 65 859 729 1045 1037 1137 1136 1137 1136 1037 817 825 847 224 826 1040 1093 1137 1185 430 839 857 749 427 282 61 2 1040 1093 865 1137 810 804 743 805 883 1121 423 865 824 184 227 181 427 329 61 184 1111 883 407 865 1059 918 1196 1117 1040 1137 1086 1038 67 427 2 732 1179 184 329 427 816 759 744 745 1079 827 1153 823 1179 282 140 227 107 1013 719 573 1179 427 329 334 809 755 753 756 865 845 335 333 846 179 290 58 60 824 288 181 813 188 190 228 811 31 141 140 846 864 290 847 1137 1185 1093 1122 931 480 519 518 1139 739 722 749 1102 1171 622 697 1167 693 713 715 848 291 337 863 932 546 545 512 849 834 232 268 1203 697 837 1171 376 881 377 1154 1153 852 222 1202 1192 255 271 254 1202 54 294 293 1043 919 916 918 909 215 170 216 1096 634 589 635 1084 1063 1191 1140 1134 912 197 196 860 174 53 175 866 1210 295 860 860 294 53 295 937 925 936 348 1195 875 861 1164 1184 491 490 445 1108 491 530 529 414 900 415 395 1195 252 861 875 902 345 299 300 1150 195 196 234 1160 607 19 152 252 875 251 272 833 612 613 658 1150 269 233 234 912 607 152 18 1058 1150 1164 1042 868 148 611 1103 831 694 661 699 1059 931 1196 917 1142 540 541 560 1096 635 674 673 829 828 192 1182 686 921 687 653 1203 619 578 624 890 369 402 368 822 229 230 280 822 230 229 191 1075 1169 999 997 1110 838 516 470 694 832 831 660 884 408 405 404 1129 836 832 1167 1114 735 132 723 1093 259 1185 225 1040 1185 826 825 800 804 142 805 883 405 407 373 919 918 566 547 1203 623 624 578 1039 836 1082 1143 838 471 516 470 844 817 1136 1137 855 663 664 1167 918 547 570 566 814 190 229 228 1152 985 967 1067 855 870 664 626 987 526 986 487 1110 469 580 124 199 934 237 238 875 236 267 272 875 1170 876 267 843 736 737 758 629 1099 1112 1149 1211 924 935 215 1123 691 703 690 1182 657 658 1143 1182 868 657 1143 1060 1106 1213 1152 1043 1078 916 1110 923 270 249 910 854 665 715 1167 914 704 689 915 806 742 802 805 1062 924 1084 1200 896 85 435 434 1042 1164 1106 1162 1077 868 1103 834 893 326 894 372 277 974 958 1166 1131 905 443 987 874 17 608 151 1162 942 943 950 1061 1068 940 1163 910 270 249 250 962 961 485 523 833 835 1182 658 1169 567 536 537 173 51 1210 52 1140 1105 1210 1195 951 544 558 543 1210 173 52 174 1210 173 174 219 380 341 877 342 1165 1175 1085 1132 1083 1163 1091 940 1064 970 1173 955 1124 671 632 954 295 1210 866 341 1181 622 807 576 1186 168 46 301 910 216 909 1161 1113 1145 889 1212 861 875 252 1187 867 1150 150 874 1083 1020 1008 1208 1056 989 1158 988 1043 1167 870 869 1125 415 382 414 946 1196 480 896 1152 952 951 967 1103 610 15 611 1164 1210 1195 1140 1125 414 382 383 988 930 1184 1138 1052 986 991 985 1088 661 660 615 201 940 239 957 512 942 511 545 866 379 340 341 848 1153 223 826 948 1207 483 944 1120 210 164 165 1210 295 296 341 1195 1210 219 173 810 743 809 805 1041 851 1077 1042 1082 1117 1059 1205 1139 739 740 757 931 1050 1045 1051 852 293 292 55 1185 280 822 823 1043 1167 855 870 816 844 1137 817 847 336 290 291 847 224 826 178 1041 862 1202 1192 864 336 847 863 819 820 662 801 947 894 893 895 807 1102 1157 1171 1115 1156 897 1207 859 286 730 65 759 844 816 817 815 262 186 812 859 287 332 286 888 1198 366 399 811 141 31 727 816 744 728 745 1086 1082 1038 1129 1050 1137 884 1136 64 730 286 65 426 748 285 63 844 747 754 746 800 33 726 734 63 285 64 731 63 748 285 731 1107 572 99 733 88 894 426 572 857 721 722 738 953 983 954 969 411 377 376 881 946 947 553 1194 1179 732 750 282 1182 611 657 868 1171 694 695 713 1136 840 843 841 1181 577 576 131 827 1153 849 1079 1099 585 630 584 807 725 130 575 813 188 144 190 1123 690 868 657 1205 1115 1207 1156 1115 950 962 1113 948 484 483 438 943 561 949 950 1198 1145 319 365 941 1173 702 1116 658 1143 657 691 887 411 400 401 1210 295 52 296 966 558 557 543 1048 881 1041 880 297 1105 298 50 1031 1087 598 644 932 942 512 545 1052 964 986 965 1140 1195 876 1105 1173 705 685 702 1212 364 1145 398 1158 567 564 530 1177 468 123 469 905 898 987 904 1090 1199 1119 1083 1049 1079 882 1205 870 1177 1144 581 436 84 1100 83 1196 1117 918 945 1107 894 893 947 437 83 322 82 1080 64 730 286 330 88 475 894 895 326 86 433 1181 1114 132 723 326 894 87 433 858 893 884 843 894 330 372 326 1179 329 824 334 890 886 1156 402 813 188 228 264 882 881 376 1154 1211 214 169 215 1049 888 887 881 1162 1046 1117 943 583 628 629 1112 1047 1054 1140 1125 937 303 349 348 889 880 879 413 1133 992 559 995 1187 234 235 266 958 1200 240 273 909 215 216 249 1197 417 396 397 701 1124 920 1172 965 962 524 966 1105 296 297 342 902 48 300 299 298 50 1105 1161 49 50 1161 171 910 216 249 909 965 986 985 525 362 898 904 395 1089 997 999 998 954 969 633 587 987 990 488 1131 1108 530 564 529 1010 457 456 111 1091 649 603 604 1138 989 930 313 937 936 303 348 1000 554 1001 500 1168 304 44 165 1127 639 638 593 940 200 201 239 977 308 353 976 1141 113 459 458 930 446 74 313 1053 904 1055 1131 979 1019 204 158 1204 206 161 207 907 315 314 75 1186 46 168 167 903 384 383 345 877 417 380 381 861 253 252 219 1104 903 1211 1180 1052 1212 1197 898 1119 906 1209 1190 994 539 506 992 316 77 76 905 935 248 247 214 1133 528 489 1184 1211 902 901 909 637 1183 591 1141 935 1211 214 1186 881 377 416 411 1006 209 208 163 344 1125 878 382 1182 834 828 193 934 200 238 199 657 1143 1123 691 1070 1065 1069 1147 1201 94 428 93 708 1208 675 981 1092 20 1160 605 18 608 17 151 1061 940 934 1092 954 633 671 632 1042 1150 851 850 235 1150 1134 196 1182 868 834 148 546 932 513 512 921 654 687 653 867 874 17 609 961 439 484 438 1182 834 193 148 904 1131 905 316 828 230 192 231 1055 1131 1184 1133 121 582 467 122 868 611 657 656 1174 212 939 246 836 659 692 835 968 509 508 463 882 411 887 401 1048 866 1164 879 912 874 1134 921 256 257 827 276 1182 193 147 148 1020 681 647 1007 952 464 463 1213 588 969 982 115 986 525 487 526 149 16 15 867 1190 393 419 392 122 581 468 123 918 566 570 520 1177 123 580 469 826 224 223 178 1103 194 149 195 837 663 623 625 1043 916 919 1177 841 738 757 752 584 1099 119 120 805 800 804 742 855 664 625 626 1112 1099 511 942 1046 1149 871 1112 917 519 1196 570 1099 584 630 629 1144 468 467 122 1106 1124 1213 1152 1099 583 584 629 1077 1044 1123 1143 871 872 666 628 1162 1115 1113 950 120 466 121 583 1050 893 884 892 888 366 400 399 1060 952 1099 951 1213 464 118 585 924 274 923 1200 1198 319 1145 440 871 1149 872 628 944 483 522 521 1046 919 932 1144 1122 262 260 259 326 330 87 894 1039 835 1143 1182 829 833 192 146 1172 701 687 688 911 236 197 198 1063 955 1116 1124 933 912 1160 911 19 152 607 18 1116 686 933 921 1191 921 1116 933 1162 915 1149 1060 1124 1116 671 955 955 672 1173 702 972 1007 603 1091 1161 901 299 902 705 709 971 684 924 909 910 249 907 75 445 444 1195 219 218 173 929 989 312 447 49 902 170 1161 902 48 170 169 1161 902 170 909 1211 1180 903 346 1211 346 345 300 936 166 167 212 936 348 302 303 976 307 1159 764 1199 422 386 424 960 448 929 311 989 73 446 313 989 73 312 447 1108 995 564 997 929 311 72 312 447 73 312 72 997 538 564 537 1165 928 1175 1132 907 314 445 75 1047 1105 1140 876 1104 1062 924 1084 848 852 177 1153 1066 1159 1015 1178 951 966 558 950 1136 893 947 1107 368 897 1207 322 942 544 511 545 962 949 523 950 520 481 1196 945 586 954 1213 632 884 408 331 405 896 435 85 324 895 434 86 325 720 98 99 842 733 748 426 62 1107 733 748 426 1107 736 733 720 807 1171 820 621 1059 918 917 1196 478 477 947 1107 894 475 433 478 720 99 1107 842 858 748 736 731 893 371 326 372 842 721 98 431 1098 549 550 568 4 88 426 572 802 742 725 751 143 819 183 189 1088 10 143 616 1098 1157 837 1078 1179 140 811 815 886 890 891 403 801 802 662 718 518 931 550 568 1185 257 280 823 1149 628 667 872 12 833 146 13 1137 810 816 817 961 439 440 485 1213 954 1152 1124 1163 650 683 649 827 268 256 276 933 608 653 607 1060 1149 1099 920 871 1112 582 1144 1148 1132 996 977 1112 1099 466 511 1115 1155 887 888 118 585 464 119 872 703 666 667 1044 872 1046 1149 1042 914 913 1103 1060 1099 1149 942 1210 341 296 342 914 915 689 873 953 1213 954 968 954 671 633 955 380 866 877 341 850 233 851 271 880 377 1202 339 984 985 562 542 898 363 362 317 1168 166 44 303 991 526 562 986 1173 672 705 702 912 197 151 152 933 653 608 921 808 753 757 740 958 273 277 247 153 1160 20 19 154 1092 21 20 953 968 954 983 906 903 420 1125 1164 851 1150 853 1004 778 1003 762 1185 826 257 823 1092 1091 155 604 1211 169 168 47 989 492 447 493 1141 999 504 998 1158 564 567 537 1021 677 714 676 1186 167 939 936 46 168 47 301 1208 708 712 682 1005 163 284 209 45 936 46 302 1140 879 1052 1067 1201 976 1095 780 1076 1020 1118 1069 937 349 303 1168 1159 798 782 1015 89 790 429 90 210 209 1120 164 1168 304 349 303 1178 1159 781 976 1165 1109 1193 1135 1147 975 245 275 1186 302 347 301 1191 1140 1063 1106 940 1163 1068 1083 1101 352 410 351 1089 997 1072 1090 960 71 449 448 1057 1199 1062 1180 925 302 347 1186 1147 275 245 279 386 1199 1209 422 1186 168 214 213 650 651 956 684 903 346 1180 384 922 198 199 237 1138 313 359 358 898 1212 363 899 1131 444 1184 489 646 1020 1118 680 1033 795 783 784 22 155 604 21 651 956 652 1160 1078 917 916 1098 955 633 672 671 1189 1118 1019 1069 998 504 459 505 1058 1164 1191 1106 858 1080 731 747 879 413 379 412 994 460 982 506 236 1170 237 911 1145 318 79 319 1165 1109 1132 1146 1016 38 767 766 1134 874 912 196 513 512 932 1144 510 942 1099 951 962 558 523 524 916 514 548 547 984 562 541 542 1099 1213 585 464 952 464 510 509 544 942 510 951 951 544 543 510 1149 668 667 629 867 195 150 1150 1101 209 284 182 914 689 704 688 1161 910 216 876 952 951 510 1099 1096 1173 673 981 987 487 986 964 1094 376 863 1154 664 870 665 626 955 672 633 970 1088 615 10 616 1156 421 401 402 1060 1152 1213 952 803 813 188 1088 1182 611 868 148 1157 1136 1045 1194 896 325 85 434 1113 1115 888 1198 811 187 141 804 832 693 694 713 475 894 572 478 894 433 326 895 1080 731 747 730 1121 1086 1094 1040 858 372 285 331 813 228 1122 264 892 885 891 370 884 404 883 892 885 404 403 370 1205 1207 945 1100 1112 512 1144 932 892 325 370 896 858 893 1107 894 1164 1126 1195 1210 1196 480 481 519 892 370 325 371 86 434 85 325 1115 897 948 1207 1155 321 81 438 962 523 558 950 825 826 258 1185 280 814 278 1185 1177 1144 513 919 1131 987 443 488 906 1125 420 414 1155 81 439 438 962 961 523 949 899 78 318 317 1075 1169 1193 1183 879 1048 889 1113 1198 440 80 319 905 362 316 317 1099 466 465 120 1126 253 254 853 1153 255 849 1192 1177 468 1144 581 951 558 544 950 827 256 849 1153 1082 1079 1044 1205 298 1161 49 50 511 1099 510 942 908 391 357 358 984 991 1152 1142 920 669 704 668 1159 306 790 765 685 652 651 956 930 74 446 445 1151 207 1017 208 154 1160 1092 20 1164 853 1150 1187 970 634 588 982 1141 591 113 458 924 274 248 249 904 395 898 900 1091 650 649 604 297 343 298 1105 1092 154 200 934 1188 792 1032 1028 999 537 503 504 1163 1008 682 1208 1175 406 418 388 602 603 972 1007 1061 1160 956 1092 930 74 314 313 1074 1085 1073 1146 1009 1141 994 1096 941 685 1173 956 51 1105 50 172 1151 261 207 208 1151 265 1006 978 1206 975 1070 1151 936 45 303 302 1201 428 773 1095 46 302 936 1186 1101 209 1120 978 601 24 25 980 43 44 304 165 1105 218 172 173 1101 328 1120 182 1126 253 219 220 1206 926 938 927 503 502 1010 457 908 358 929 989 1190 422 1199 391 1145 318 441 79 994 505 460 506 930 445 446 491 934 154 200 199 904 362 395 361 915 1149 668 706 438 81 82 321 1098 516 552 549 439 80 81 320 1123 667 703 872 897 948 1207 437 1046 1112 871 1144 1099 465 510 464 1036 799 1033 784 882 376 411 421 481 480 1100 435 897 82 322 321 899 318 1212 363 897 321 322 367 1149 667 668 706 853 1187 266 234 1130 493 532 531 1130 532 1132 1109 944 521 522 556 897 438 82 321 1156 368 402 401 943 556 545 932 1089 1072 1068 1090 890 403 402 369 1069 1076 1020 1083 1134 1187 235 272 948 961 484 438 877 866 1140 1210 961 484 439 485 1115 948 949 944 1141 635 636 674 1207 83 323 322 1116 1172 707 687 889 1198 399 365 441 79 318 78 850 232 233 271 1145 1212 318 364 1049 1156 882 887 962 524 523 485 914 1172 913 688 969 982 993 970 1129 1045 1157 1037 1133 992 1064 1142 1106 1213 1124 920 956 651 1092 1160 1144 467 468 513 1099 465 466 511 954 633 969 970 1138 1184 907 930 117 586 463 118 670 1124 701 707 1056 1090 1108 1158 1213 118 464 463 970 588 634 633 953 117 463 462 992 540 559 539 299 902 49 1161 998 538 504 505 1138 314 360 359 969 587 588 633 901 344 299 345 1019 646 601 647 1160 19 153 152 1053 900 1052 1140 921 654 653 608 1033 798 783 795 985 542 557 562 1160 153 198 152 851 269 233 1150 649 1163 1008 682 1206 978 975 1151 22 972 1091 156 972 156 23 157 603 972 22 23 1206 1176 1168 978 939 167 212 936 1015 783 798 782 1019 1007 601 980 673 674 981 709 870 626 1177 581 1004 996 1003 1085 1017 162 208 207 1034 1036 784 768 924 910 923 249 1168 211 210 165 1034 161 37 162 182 164 42 305 1159 765 91 306 978 1120 210 209 938 388 1175 418 1015 782 766 783 1057 939 1180 1166 449 1148 960 495 765 306 90 91 1148 355 309 310 1031 788 774 717 357 356 929 311 1146 555 533 1132 1095 996 1148 496 793 1188 778 777 1000 534 500 501 1012 640 595 641 69 450 309 70 70 310 71 449 1003 103 762 761 976 307 92 308 1146 554 1000 534 763 92 308 976 764 307 91 92 1181 724 808 740 40 772 284 0 1081 1188 1178 1033 164 42 305 43 1073 1032 1188 1081 1005 766 772 39 1034 1204 161 207 1147 242 243 275 1168 936 166 303 41 429 1101 328 1101 782 1159 790 1066 1101 1159 959 996 451 497 496 1152 983 984 1142 1193 1090 1169 1075 929 311 356 960 979 242 241 203 958 240 277 273 171 1105 50 1161 1012 499 1001 1013 1096 981 673 674 274 238 923 239 922 154 1092 934 957 1007 973 972 1135 1169 1193 1090 1141 1208 675 637 1002 761 452 1003 1096 634 970 982 877 380 342 381 1009 589 635 1096 705 971 956 684 924 248 274 1200 1163 649 1091 650 871 582 1112 628 959 410 352 406 1041 1077 1044 1162 1183 457 458 503 953 508 983 462 462 116 953 117 1061 1092 971 1163 1060 1213 1106 920 1206 1174 926 1057 1147 243 1151 275 1098 549 548 515 1061 1173 971 956 1105 343 342 297 943 522 944 949 961 484 485 523 656 914 873 1103 442 317 77 78 559 995 992 539 965 966 524 557 962 950 558 966 1173 971 705 709 1034 162 1016 1017 1089 1173 1096 981 853 269 266 253 969 507 993 461 901 344 878 1161 880 416 378 413 362 396 898 395 1131 904 987 1053 316 76 1131 905 1145 441 440 79 899 317 442 78 904 905 362 316 1184 444 445 490 1155 321 366 320 991 541 562 560 1131 1184 444 907 987 487 442 488 444 315 75 76 1184 489 444 490 990 560 526 527 1056 1199 908 1190 982 115 461 460 1200 274 273 248 1062 1104 924 935 989 73 447 446 989 312 73 313 1132 1109 533 1146 1089 1075 997 1090 960 1132 1148 928 448 311 71 72 929 72 447 312 960 71 311 310 1206 1081 1070 1085 1056 1130 1158 989 1138 989 313 358 929 311 312 357 989 446 447 492 419 384 1209 385 1140 1210 866 1164 559 565 995 539 1022 639 678 677 997 1169 999 537 1138 360 393 359 1131 444 315 907 905 442 899 317 907 360 314 315 1084 910 1047 1170 1138 360 314 907 1130 1090 1135 1165 902 299 345 901 1186 925 939 1180 247 213 1166 935 915 706 689 873 443 488 987 442 898 899 363 317 899 442 441 78 381 878 342 877 988 930 491 1184 971 683 650 684 1191 933 1116 941 872 628 667 666 1131 489 1133 990 899 317 318 363 903 383 901 345 879 417 1197 397 1084 1089 1068 1061 937 348 349 387 1039 1143 1077 1182 968 542 508 509 1207 322 323 368 1031 1036 1087 1204 1190 358 1138 392 827 231 268 276 982 506 461 993 1162 1106 915 1060 933 1160 912 607 1007 647 601 602 988 1158 530 492 951 558 966 543 1104 1054 1125 906 1101 1066 1176 959 939 212 167 213 1047 1161 876 910 1104 906 903 1209 1096 982 970 994 669 704 701 920 1061 911 1170 1191 970 633 634 672 923 270 274 249 966 524 557 558 463 508 953 462 1053 1052 900 898 969 970 993 983 1124 707 671 1116 991 562 985 986 993 461 507 506 903 383 384 420 993 507 540 506 1053 1071 1142 1133 952 510 951 543 1009 982 589 1096 915 668 704 706 969 462 507 461 983 508 541 507 1009 994 1141 998 1164 1126 853 861 909 170 215 902 1009 459 460 505 850 851 849 271 1085 1004 1178 1188 999 458 504 503 982 589 588 115 1092 956 650 651 1138 314 930 907 1092 154 21 155 999 538 997 537 1083 1208 1008 1163 1011 1127 1000 455 1212 889 398 1145 907 315 75 444 1061 941 911 1191 1127 1021 638 677 1032 786 792 799 957 202 972 973 1151 243 261 275 493 960 494 448 1138 1055 1190 906 960 449 71 310 342 877 878 1105 533 1109 532 563 1002 498 497 452 791 101 574 773 1074 1146 1000 1109 1148 70 309 450 1148 355 977 354 989 492 531 1158 327 69 450 309 473 68 327 428 926 925 937 348 5 574 428 68 1005 772 766 782 574 68 473 428 1204 1189 205 263 1001 499 454 500 1095 773 574 428 1148 450 495 449 473 450 327 69 473 327 68 69 1021 714 1208 676 1003 451 452 497 1010 457 502 456 1020 1008 681 1007 1206 937 926 1174 1193 456 1010 502 1030 645 600 646 1206 1199 926 927 989 531 492 493 780 976 779 763 1026 696 698 679 1141 636 591 637 1204 205 1189 1018 1027 786 1087 769 1022 678 710 677 1165 1109 1074 1193 1178 781 1159 798 1193 501 1000 1127 928 355 356 389 1083 1068 1208 1163 1190 391 358 392 459 114 113 1009 420 1125 903 383 928 357 908 390 1090 1068 1075 1083 1089 992 995 994 908 358 1138 1190 1064 1089 994 992 1009 994 982 1096 938 387 388 418 602 648 603 1007 1160 922 153 154 1165 1130 1109 1135 593 1010 592 638 989 493 447 929 1003 451 103 452 1073 1188 1003 1085 996 495 496 555 791 574 101 102 1081 1027 1032 1087 761 103 104 452 773 5 428 94 773 428 5 574 101 574 773 5 1037 806 820 805 1026 698 1029 1030 928 389 390 418 1201 976 780 763 1201 428 308 93 1073 1085 1003 1146 1095 976 1201 977 791 451 574 102 573 1013 719 775 1148 449 960 310 1120 1168 304 1176 938 1175 927 418 1146 498 551 497 1086 1121 886 885 1201 93 763 773 103 102 451 762 1095 473 496 1148 1002 498 499 1001 910 1170 270 250 93 308 763 92 1148 996 495 496 976 779 763 764 355 960 928 356 1148 996 1095 977 1090 1075 1076 1083 1005 38 1016 766 1070 1189 1026 1081 1101 1120 328 351 1178 779 794 796 1178 781 794 779 1016 766 767 783 790 306 429 90 39 38 1005 766 790 765 306 90 1159 790 782 765 1195 861 252 219 978 244 265 210 182 42 328 305 41 772 1101 429 284 772 41 0 182 41 328 42 783 784 767 1033 1120 305 328 351 1016 1015 1005 766 1076 1021 1118 1208 938 388 1176 1175 959 976 353 307 927 424 387 418 1206 975 1147 1070 980 602 157 972 1189 979 1069 1019 1075 1183 1208 1141 1008 648 682 681 602 23 24 157 1208 712 676 714 601 25 1019 980 1006 208 209 265 1023 678 1022 1024 1018 159 205 1189 972 602 23 603 533 1146 1109 563 1007 602 648 647 939 212 213 246 1019 601 1007 647 1053 1131 1055 1133 22 23 972 156 1188 795 792 793 239 240 957 1200 1125 1047 901 878 929 358 357 312 981 1208 1163 708 973 980 972 1007 1183 112 592 591 1008 681 682 712 1141 1208 637 1183 908 390 424 927 1063 941 1116 1173 1183 112 458 457 460 114 982 115 969 115 116 461 906 394 393 360 1204 206 207 263 1020 681 714 680 982 461 506 460 989 312 313 358 588 116 969 115 952 968 509 967 982 634 588 589 1163 708 682 683 1190 1055 1056 1119 1092 155 21 604 1009 460 994 505 1108 565 564 995 1204 1031 206 160 1210 296 1105 342 1083 1062 1057 1199 992 540 539 506 1183 999 1169 503 1211 301 1186 346 1076 1021 1193 1022 1035 161 281 36 900 396 415 395 929 356 928 960 1206 959 1085 1175 456 111 110 1010 1021 1208 1076 1193 712 1020 714 1208 26 600 25 159 1068 1075 1083 1208 1023 1022 678 710 1146 996 555 1132 767 1033 784 1034 1097 596 641 719 1206 937 1168 1176 1085 1146 1132 996 1003 761 762 778 1097 789 596 719 1064 1063 1173 1089 1130 531 532 569 1148 960 355 310 996 555 496 497 1031 774 281 717 976 307 764 92 1013 789 719 775 1085 959 1004 977 1159 765 782 781 1193 1010 456 1127 1004 780 762 1095 1105 51 173 172 1210 52 295 174 1201 780 1095 773 772 429 89 790 772 429 0 89 41 0 772 429 1029 698 644 645 977 353 354 409 36 1034 768 1035 163 1016 1005 38 783 1033 767 1016 1034 1033 784 1036 1016 1017 1015 1033 1016 1015 783 1033 1146 563 533 551 1069 979 974 973 1034 161 162 207 1095 327 428 473 778 777 1188 1003 1012 1024 640 641 979 203 204 242 926 937 938 387 1081 1017 1151 1204 1007 647 648 681 25 980 24 158 974 279 241 242 1069 980 973 1007 1113 963 964 965 1131 488 489 990 1058 1191 921 1172 908 358 989 1138 675 981 1208 1141 991 560 526 990 929 448 447 72 960 356 310 311 1089 981 971 1173 712 1008 1020 1208 980 602 1007 601 1193 501 456 502 1064 1173 1063 955 112 591 458 113 1089 999 1075 1141 1083 1008 1007 1091 668 920 630 1149 953 463 586 1213 1089 1090 1068 1075 1075 1193 1208 1183 1021 1183 638 676 456 110 1127 1010 592 112 1183 1010 1193 1021 1208 1183 927 424 418 390 878 1197 877 381 1147 974 242 279 1105 217 172 218 1183 458 112 591 1090 1165 1193 1135 1074 1000 1022 1193 1010 111 593 592 1159 91 307 306 1068 971 981 1163 673 1096 672 1173 1011 454 500 1001 108 454 109 595 594 110 455 109 595 617 108 1012 7 573 107 719 597 596 642 1027 617 107 472 1013 1062 958 1200 1083 1011 1024 1012 1001 1169 535 1193 502 1007 648 1008 681 1189 1081 1151 1204 957 202 240 201 1120 1176 351 1101 1035 1031 1204 1036 681 714 712 1020 1101 284 209 1005 202 957 240 973 1146 1109 563 534 1148 495 450 496 1146 1000 554 1001 1018 599 1029 1031 1146 498 1002 1001 908 357 929 358 938 927 387 418 1019 1020 646 647 1013 776 775 760 1024 678 640 700 1002 499 1013 1001 1013 453 760 105 1011 639 594 640 617 719 107 1013 1020 647 681 680 1003 761 778 777 164 209 1120 182 1097 771 596 789 1013 760 775 105 108 1012 617 472 108 454 1012 472 595 1012 108 454 1127 638 639 677 1097 719 641 617 472 1013 107 573 617 472 107 108 1189 1151 243 263 1012 617 641 595 1002 497 1003 452 976 764 763 92 1132 533 532 494 1013 499 453 573 1146 1003 497 996 136 596 771 135 1146 551 498 554 717 1031 28 281 1025 642 696 700 1001 498 499 554 771 596 789 135 1018 600 1019 1030 775 573 7 719 1097 641 1025 1012 789 719 135 596 775 7 573 106 775 106 573 105 1109 569 532 563 1175 1148 355 977 1002 452 453 498 1074 1001 1073 1024 1002 104 452 761 134 7 719 775 769 137 598 597 1004 779 780 976 789 719 775 134 789 135 719 134 1066 1159 1178 959 1034 1035 1036 768 1002 760 1013 453 1013 499 573 472 977 1175 1132 1085 1013 775 573 105 1034 37 767 162 596 1027 771 1097 1027 770 786 769 1148 309 70 310 643 644 1029 698 1081 1026 1027 1087 1087 788 598 769 1036 1033 799 1032 1027 1032 786 787 815 1111 816 1179 597 1027 136 596 347 346 1180 1186 1171 622 621 807 112 1010 111 457 599 26 27 160 1018 160 26 599 1032 792 786 787 980 157 158 203 1000 1109 535 1193 1031 1029 1087 644 1081 1032 1036 1087 1090 1169 1075 997 980 24 158 157 1018 645 1029 599 1018 26 160 159 973 203 241 202 136 596 1027 771 243 1189 979 1147 1035 774 785 768 788 139 774 717 1206 1175 927 938 1189 1118 1076 1026 1001 499 500 554 1087 598 1027 769 1097 1012 1013 617 956 651 685 684 1027 770 769 597 28 1031 620 185 620 27 185 160 620 599 27 160 1189 243 205 263 1026 679 1118 1023 28 27 185 620 1031 644 717 620 774 281 717 1 1 717 28 281 980 602 972 1007 1204 205 1018 160 1147 979 242 974 136 1027 770 771 770 597 136 137 1206 927 1175 1165 1065 1147 1206 1057 785 1087 1036 786 1095 1003 996 451 1120 304 1168 165 1004 996 1095 1003 1206 1070 1147 1065 1016 38 162 767 1066 1081 1085 1178 938 349 388 387 1097 1025 641 642 1005 772 284 39 1005 284 163 39 1097 642 641 596 1204 263 205 206 1034 784 767 768 767 162 37 38 1016 1015 766 783 139 717 1 774 1016 1017 1006 1015 1029 599 645 644 1201 763 780 773 1183 676 637 638 1005 766 1015 782 1036 785 799 784 769 138 598 137 161 1034 36 1035 774 35 281 1 1189 1118 1069 1076 1034 767 37 768 1166 246 247 277 1165 1109 1130 1132 1204 1033 1034 1036 1148 495 996 1132 1033 783 798 1015 1201 977 976 308 1035 774 768 36 1204 1031 1018 1029 936 303 45 166 1135 567 536 1169 1000 534 554 500 1036 768 785 784 774 281 35 36 1146 563 551 534 1159 1015 1178 798 1035 1031 774 281 1035 785 774 1031 975 244 978 211 769 770 137 597 799 786 1036 1032 788 138 139 717 1087 1031 785 1036 788 138 598 769 788 598 138 717 1002 452 104 453 1073 1013 1097 1012 110 1010 111 593 1206 1085 1066 1081 892 408 371 893 896 85 325 324 1100 324 369 323 1100 1207 83 323 85 435 84 324 1171 1102 622 807 1107 99 572 432 1207 322 437 83 1114 624 577 716 330 426 88 894 843 737 720 842 87 326 433 86 895 86 434 433 892 371 408 404 858 1107 748 426 87 894 330 475 572 99 733 100 1082 854 836 1167 895 86 326 325 1179 66 729 732 4 426 62 733 88 330 475 87 475 894 88 572 842 431 432 477 894 1107 426 572 4 572 733 100 4 426 733 572 20 19 1160 606 46 936 167 1186 1160 922 198 153 1061 922 1170 911 1152 968 983 954 912 152 151 18 865 374 423 373 224 257 258 826 864 336 290 847 825 225 258 224 886 425 1094 402 980 24 602 601 240 973 957 958 958 935 273 247 1097 641 1012 617 1089 1075 981 1141 1105 51 296 1210 252 1187 875 272 878 415 381 382 972 157 202 156 1163 683 682 649 972 23 602 157 990 991 1053 986 937 936 925 1174 980 602 24 157 842 98 432 431 841 737 721 738 894 330 426 372 839 619 474 1203 857 431 476 430 87 433 894 475 1043 919 1046 1144 857 721 842 431 1127 638 1021 1183 908 357 391 390 449 494 960 448 1176 350 388 349 1000 535 501 1193 1056 1158 1108 988 1067 1106 1060 1152 879 1212 412 397 342 878 343 1105 685 941 652 956 1160 198 911 152 981 1163 683 708 1052 900 898 1197 1120 1168 978 210 1168 44 304 303 859 65 730 729 332 287 1111 334 1137 1122 815 812 1179 811 140 728 449 960 494 495 1188 793 794 795 824 329 288 334 1040 825 865 1093 1196 1100 481 480 883 404 884 405 1039 829 835 1182 852 222 1202 176 934 200 940 239 689 873 656 914 1077 873 1123 1042 834 148 868 1103 915 689 706 704 932 1117 546 919 1040 1086 865 1121 1143 692 691 658 611 148 14 15 1150 150 196 195 150 867 17 16 862 1192 1126 860 828 192 193 231 989 1158 988 492 1109 535 569 563 1096 994 970 1064 981 1075 1068 1208 981 708 709 674 928 389 356 390 1206 1065 1199 1165 948 438 483 437 942 561 943 950 870 1144 627 581 982 115 114 589 1173 970 672 955 994 506 539 505 994 993 992 506 1009 982 460 114 904 361 1131 316 1161 299 901 344 217 876 216 250 1161 344 343 298 217 1105 171 1161 1161 298 299 344 902 169 170 215 908 357 928 929 368 367 897 322 1062 924 1200 935 926 348 937 387 854 692 836 715 853 269 851 1150 411 376 882 881 949 944 948 522 1113 963 1198 1145 887 367 401 400 1156 1094 421 402 1045 1086 1082 1059 1103 867 15 610 1153 256 223 257 1107 432 572 478 45 167 46 936 940 201 1091 957 1091 1007 957 972 603 1007 648 1091 1175 977 409 959 1056 1119 1090 1199 1090 1165 1076 1193 1132 494 495 533 960 311 71 448 1130 989 908 929 908 928 1130 929 1039 829 822 1128 1128 821 145 190 835 692 1143 658 1137 815 816 812 835 659 692 658 1135 1158 1130 531 989 1130 531 493 1056 908 989 1138 1052 987 899 898 1193 456 501 1127 954 633 632 587 1053 990 1131 1133 1138 906 393 360 436 83 1100 1207 1205 1117 1196 945 891 885 403 370 896 325 370 324 1136 1107 842 843 882 887 1156 401 1100 84 324 323 864 290 336 335 1113 961 1198 963 892 896 946 895 886 1094 1156 402 951 1152 1067 1060 1042 851 1077 850 1134 875 1187 272 888 416 881 880 866 379 879 880 1198 80 320 319 828 230 231 276 1195 1105 1210 173 1181 808 1102 740 923 1170 270 910 1161 171 216 170 1061 1089 1173 1063 1211 215 935 214 1171 713 695 663 843 758 747 736 807 575 802 725 1139 839 856 1102 893 326 371 895 1111 288 333 334 1030 679 645 646 1162 1067 1113 1048 1183 1010 112 457 642 1027 596 1097 978 244 975 1151 978 211 244 210 1189 1029 1018 1030 1035 281 161 206 1189 1069 979 1147 1083 1069 974 973 1057 1062 1166 1180 926 938 927 387 1021 1208 1183 676 1070 975 1147 1151 937 349 938 387 925 302 936 348 1186 1180 939 935 1211 168 1186 301 1186 939 167 213 1186 46 302 301 919 566 546 547 942 932 943 545 1145 964 441 899 990 526 488 527 1202 1192 221 222 1191 1134 921 912 1142 993 540 992 899 318 78 441 1155 439 81 320 494 495 960 1132 1175 389 406 409 928 390 927 418 926 386 1199 1180 1108 1133 528 565 1133 1184 1108 528 1056 989 988 1138 1184 445 444 907 1190 392 422 391 1189 1069 1147 1070 1019 159 204 158 677 714 710 1021 851 1192 271 254 1051 896 891 1196 1079 1153 1154 863 860 220 174 175 1140 877 1210 1105 1153 1154 852 1202 1126 254 220 1192 1079 826 1153 863 1090 1158 997 1108 984 542 508 968 963 440 485 961 907 394 906 360 1184 1108 988 1055 1166 246 277 279 1201 308 428 354 1063 955 1173 1116 1160 198 922 911 900 1054 906 1125 1201 428 94 773 954 955 633 970 369 890 323 368 1155 897 367 321 1100 436 481 435 1187 272 266 235 1195 1126 861 219 398 1212 412 889 1082 869 1046 1044 799 795 1032 1033 1013 573 453 105 1081 1085 1178 1188 1024 700 640 641 1073 1001 1012 1024 1175 959 409 406 1041 1049 1048 1162 949 948 484 522 866 340 378 862 867 1103 195 1150 874 196 1150 150 1182 14 611 148 1084 1071 1140 1054 850 849 232 271 1084 924 923 1200 1084 934 1200 923 924 935 248 1200 974 973 979 241 1047 909 910 1104 1025 1081 1027 1073 1026 696 1023 1025 969 116 588 587 982 115 969 461 969 993 982 461 995 997 998 538 1067 1113 879 1052 955 671 672 702 969 461 116 462 969 588 982 970 1066 1006 1101 978 1183 458 999 503 959 352 353 406 1066 1015 1159 1101 1159 307 91 764 1101 1005 1015 782 1176 1120 1168 978 1101 1005 209 1006 1175 418 406 389 1040 865 864 1121 1129 836 1128 832 1052 1140 900 1197 1080 1111 844 884 863 336 291 337 1129 831 820 1171 863 1154 376 337 1153 222 256 255 1165 928 1130 908 1012 1013 617 472 1012 499 1013 472 1011 109 594 455 1127 110 594 593 928 1132 1130 960 781 976 1159 764 1188 796 794 793 959 1159 976 307 1146 555 497 551 945 520 566 918 1115 888 887 1049 889 888 1113 1048 1198 440 961 439 672 1096 970 1173 1069 980 1019 979 1091 201 155 156 1009 994 460 982 1039 828 829 1182 1202 176 222 221 848 177 56 178 1042 873 1103 1077 851 271 269 254 827 828 231 276 1121 425 375 1094 237 238 934 1170 1170 267 236 237 933 686 652 653 1160 153 20 154 1092 605 1160 651 1062 958 935 1200 1021 1208 714 1118 1200 273 274 239 882 1156 421 401 882 887 411 881 884 332 405 331 891 886 403 885 823 280 276 257 823 230 822 828 1049 882 881 887 1198 80 440 439 920 915 1149 668 1184 490 491 529 1058 1106 1172 1042 907 361 394 360 1184 930 491 445 904 906 907 394 1175 355 928 389 1183 637 676 1208 1141 1096 635 674 593 1127 1010 638 1211 345 902 300 1186 1180 1211 346 1125 901 383 344 987 442 899 905 1104 1125 903 906 1173 956 705 971 1058 1191 1164 1134 1099 583 466 120 1152 952 968 1213 874 150 17 151 874 151 196 150 876 1170 250 267 1105 876 218 1195 911 198 197 152 652 956 941 1160 1106 1152 1063 1124 1160 605 606 651 197 196 912 151 866 860 295 340 987 526 488 990 1145 441 963 440 965 524 486 525 904 362 361 316 1172 654 687 921 1115 944 943 1117 1113 962 966 950 198 911 237 922 858 372 893 894 892 408 884 404 839 430 517 571 842 721 737 720 1095 428 327 354 1193 1127 1183 1010 1090 1158 1135 1169 1127 501 1000 455 1135 1169 536 535 592 111 112 1010 1205 1117 945 944 944 1207 1205 1115 945 1205 944 1207 1196 896 1100 480 1049 1115 1117 1205 1023 710 696 679 1189 1030 1019 1118 1066 1081 1033 1017 1019 1007 1020 647 1200 239 240 273 1174 212 166 936 841 721 737 842 856 517 552 516 931 519 568 518 1107 842 99 432 99 842 98 432 841 721 857 738 1181 1102 622 577 842 98 721 720 1139 841 856 857 935 215 924 248 924 215 909 249 935 1211 1186 1180 902 48 1211 300 1181 1102 808 807 1211 903 345 346 1101 284 1005 772 1101 429 772 790 1101 410 352 959 1151 1017 1006 208 978 1168 211 210 1159 91 765 764 1206 1175 938 1176 1006 1005 209 163 978 210 265 209 1082 1043 1046 869 1162 1113 1115 1048 1045 1098 917 1078 1137 1111 865 883 1194 1107 477 842 931 568 519 917 1129 1078 1082 1167 1144 581 122 582 1129 1167 1171 1078 1083 1007 1069 973 241 974 277 279 1138 1056 1190 1055 997 1158 564 1108 877 341 866 1210 878 343 382 381 1083 958 974 1166 381 343 342 878 1065 1090 1083 1199 221 860 1202 175 852 177 222 176 880 378 379 413 221 222 1192 255 948 522 944 483 950 544 561 558 968 967 542 509 912 196 874 151 949 484 523 522 1049 1041 1048 881 944 1207 483 521 1142 541 540 507 874 608 654 921 874 654 608 609 913 874 867 609 1155 367 887 400 859 730 746 729 1185 280 257 258 1143 1123 703 872 871 1112 1149 628 1124 669 670 701 1129 820 1037 1157 1112 583 628 582 703 872 711 1143 1197 415 417 381 870 666 665 627 984 968 967 542 875 236 911 1170 963 485 962 961 398 889 412 413 949 523 484 961 949 484 948 961 943 522 561 556 1202 294 54 175 816 728 744 811 1080 1111 859 844 1137 816 815 1111 808 753 740 741 743 742 806 805 804 32 727 726 892 325 895 371 1086 1129 1038 1137 1135 535 569 1109 950 523 558 561 950 949 523 561 920 704 915 668 943 561 522 949 1046 1044 1149 1162 942 951 544 950 1023 678 696 710 1151 1006 265 208 1033 795 784 799 785 1036 799 786 1204 206 205 160 1192 1202 221 860 862 860 1202 1192 1154 377 338 1202 1041 1154 1153 1202 848 1154 337 292 1049 881 1154 1041 1112 467 512 466 1058 1172 921 913 1213 632 954 1124 1044 1123 872 1149 583 1112 629 1099 1112 466 583 121 1145 441 318 899 399 413 416 889 987 986 526 990 865 373 333 335 1179 66 427 287 405 883 407 884 815 227 140 186 1179 750 140 282 883 405 373 423 1111 865 407 333 1121 1040 1094 863 893 408 371 372 892 404 370 371 866 378 880 862 1041 880 1202 862 1205 890 886 1156 849 232 271 268 799 792 1032 795 1019 980 25 158 1168 211 165 166 1188 797 792 1028 1011 454 1012 595 1150 195 234 233 1172 914 704 688 1124 1116 1172 707 953 587 954 586 1160 606 652 651 913 1150 867 874 1087 788 785 1031 1097 1014 1028 776 1053 1052 991 1071 986 562 525 526 986 525 562 985 1198 320 80 439 1198 320 365 319 489 990 488 527 891 324 369 1100 1094 1040 1086 1079 1121 375 425 374 1094 402 425 421 886 403 425 402 1079 1154 1094 863 1148 327 450 309 1035 161 1204 206 838 623 578 579 1110 580 579 124 1203 837 1098 1157 1114 749 839 735 1203 837 697 623 1114 619 839 1203 838 579 125 470 1203 1102 697 1171 1055 1138 1184 907 1133 559 1142 527 359 1138 314 313 870 627 626 581 1213 586 631 585 377 1202 881 880 942 544 561 950 1099 465 464 119 848 1154 1153 863 849 255 268 271 1116 687 686 921 1042 914 1172 913 1160 652 606 607 934 238 923 1170 1052 899 1212 898 827 1079 849 1077 864 847 826 863 864 336 374 335 812 264 1122 260 884 883 1050 892 825 224 847 179 864 374 865 335 856 841 1194 857 947 478 479 553 843 841 758 737 840 754 758 752 806 802 807 820 811 815 186 812 841 721 842 857 747 840 754 758 1040 825 864 865 941 702 1173 685 1138 1055 988 1056 1138 392 358 359 988 1055 1108 1056 925 386 347 348 1199 1165 908 927 913 867 655 609 1191 911 1134 912 1191 875 1170 1140 1170 236 267 875 913 688 654 655 1148 70 449 310 1029 1030 698 645 1089 1096 1141 981 1141 674 636 675 1009 635 1141 1096 946 895 896 434 257 823 826 1153 1045 1136 1050 1194 931 568 917 1098 840 758 841 752 1185 258 825 225 837 579 625 623 1114 1203 839 1102 839 1139 856 857 817 755 810 759 1149 667 628 629 1182 1143 658 835 914 655 913 1103 1172 704 701 688 1129 831 1088 803 1123 1149 667 872 850 233 232 194 1104 1125 1054 1047 1109 563 534 535 1161 343 344 878 1135 536 567 569 1071 1064 1063 1152 66 859 1179 729 1185 259 1122 278 1045 1137 1129 1086 845 289 180 846 832 693 1167 836 1093 226 259 225 857 431 430 97 857 476 517 430 856 476 552 517 571 716 839 735 756 806 743 742 819 661 616 662 1194 476 552 856 1157 841 818 1136 800 726 33 142 1037 805 803 812 1095 780 762 791 1148 450 327 473 977 1004 996 1095 1180 385 386 1209 1175 406 388 1176 1004 976 780 1095 1140 1197 879 877 395 906 900 904 900 878 1140 1125 1197 1212 397 898 898 363 396 362 396 898 397 363 1048 880 866 879 1197 878 900 415 1197 415 900 396 852 176 55 177 862 339 1202 294 848 337 1154 863 848 337 291 292 864 826 847 825 1041 1192 1153 849 860 294 1202 175 1194 477 476 857 743 806 809 805 1157 806 809 808 1139 757 818 841 474 571 127 839 979 973 980 203 1175 355 1148 928 1118 680 679 646 1026 1118 679 1030 677 1021 710 1022 1019 25 601 600 1151 1204 1017 207 1018 1029 645 1030 1019 159 25 600 862 378 880 339 1202 1153 1192 222 862 1202 339 880 860 53 174 295 221 220 860 175 1040 1079 1185 1038 823 280 822 230 1154 881 377 1202 919 547 546 513 1043 1059 916 1078 1158 531 567 530 1084 910 924 1104 503 1010 1183 457 1169 536 502 503 905 442 317 77 1131 315 444 76 907 315 361 360 955 1116 671 702 1131 316 315 76 1134 236 197 911 913 1134 1150 874 956 685 705 684 922 199 198 153 912 151 608 18 912 608 607 18 912 874 921 608 912 151 874 608 1103 611 656 610 849 1153 256 255 852 292 293 338 848 178 56 291 1049 1154 881 882 335 845 846 289 848 178 223 177 1154 1041 881 1202 1084 1191 1063 1061 344 878 343 382 1140 1067 1052 1071 910 249 216 250 833 13 612 147 946 931 480 1196 829 1182 192 833 833 1182 192 147 830 191 146 829 829 192 191 146 829 828 230 192 1043 855 1167 1078 1050 947 893 895 1181 723 1102 1114 1192 860 221 220 897 438 948 437 1155 887 888 400 975 244 245 275 1151 244 275 261 777 1188 1014 797 1069 980 979 973 975 211 245 244 1174 245 211 212 1174 166 1168 936 239 957 940 1200 1022 1193 1000 1127 1108 564 565 529 1106 1140 1063 1067 1133 489 528 527 1053 1133 1142 990 1142 983 541 507 1089 997 995 1072 898 987 899 905 987 488 526 487 991 562 526 560 1173 705 673 709 1144 513 512 467 1050 1086 883 1137 1110 515 469 470 1129 1082 836 1167 1144 581 468 122 969 588 970 633 969 983 993 507 969 462 983 507 1142 991 1053 990 1195 1210 1126 219 1190 906 1055 1119 1206 1174 975 1168 940 155 1091 201 1083 1065 974 1069 1092 940 934 200 1018 599 1031 160 646 647 1020 680 681 1020 712 1008 245 1166 1147 279 974 241 979 242 1081 1036 1204 1087 892 371 895 893 1137 1093 865 1111 1157 856 1139 841 892 404 885 370 892 325 896 895 841 752 758 737 893 884 408 331 1107 477 842 432 1204 1151 1189 263 1165 928 927 1175 829 191 230 822 1039 1143 835 836 829 230 828 822 1182 147 14 148 829 230 191 192 1079 1153 1041 1154 848 852 1154 292 805 187 142 189 10 821 1088 144 805 142 187 804 821 615 614 11 1076 1065 1165 1090 1056 1130 989 908 885 404 423 403 1100 436 482 481 1136 1194 841 842 883 404 423 885 407 884 883 1111 1209 422 419 385 1084 1089 1063 1071 958 1166 247 277 939 213 935 1166 1057 1180 925 926 1125 415 878 382 925 347 302 348 1079 1038 1039 823 880 378 377 339 1086 1082 1079 1038 846 289 290 335 1145 318 319 364 1113 1067 965 1052 964 486 487 525 1145 899 318 1212 1115 1155 948 897 964 486 441 487 965 964 986 525 1177 1110 469 580 1045 931 1098 1194 1139 757 738 739 1154 338 337 292 1106 1067 1164 1140 962 966 558 524 1113 961 962 1115 1198 440 963 961 218 876 217 251 866 341 380 379 1112 467 466 121 529 1184 528 1108 1199 908 391 424 422 419 1190 1209 981 971 683 1163 1055 1184 1108 1133 1064 1089 1096 994 1057 926 1206 1199 1076 1083 1065 1090 1069 979 1147 974 1180 1209 386 1199 1084 1047 1054 1140 1091 1092 650 604 984 541 562 991 994 982 993 506 345 346 903 384 1026 643 1027 1087 1063 1067 1140 1071 1142 540 993 507 992 993 540 506 1116 671 702 707 848 852 1153 1154 1154 337 338 376 1154 292 852 338 1041 1153 1192 1202 1074 1001 1000 1146 848 292 291 56 1141 458 504 999 1009 1141 635 590 1096 589 634 982 1119 1190 1209 1199 1104 901 909 1211 1211 301 300 47 169 47 1211 48 1211 168 301 47 1056 1119 1199 1190 1211 902 345 901 1209 393 420 419 861 1164 875 1187 1104 1125 1047 901 394 906 395 904 1076 1074 1070 1026 1014 760 761 777 1002 761 1003 1014 1146 533 555 551 1014 1013 760 776 797 1188 1014 1028 1003 451 762 103 1026 1023 696 679 1206 1199 1065 1057 1025 642 643 696 1097 1013 1014 776 1027 771 1028 787 1024 678 639 640 1146 1000 1109 534 959 1178 976 1159 1066 1151 1081 1017 643 1029 1026 698 1097 771 776 1028 857 517 839 430 1139 738 722 739 856 839 857 517 1162 1046 943 942 1121 374 864 336 1167 713 664 715 816 1111 844 1179 883 373 865 423 1037 805 820 803 851 233 269 271 866 1126 860 862 849 1192 271 851 254 851 853 269 1126 853 254 851 1126 174 220 219 866 879 380 877 926 386 925 348 1120 305 351 350 975 211 978 1168 959 1159 352 1101 1068 981 1208 1163 926 387 927 424 879 417 380 877 967 985 557 966 967 542 557 985 967 951 966 543 952 509 510 543 1213 118 586 585 967 1067 951 1152 967 542 509 543 952 951 967 543 967 543 557 542 967 557 543 966 1089 999 997 1075 1075 999 1183 1141 1173 705 672 673 504 538 999 537 1116 933 686 941 1169 1158 567 537 1125 878 901 344 1211 169 902 215 875 267 251 272 1042 851 1150 1164 701 707 1124 1172 1064 993 1142 992 1002 499 498 453 1028 787 776 797 1028 771 776 787 1014 760 777 776 1002 760 761 1014 858 893 372 331 1107 99 720 733 817 755 759 754 858 894 426 372 858 1107 426 894 836 692 1143 835 1041 1192 849 851 943 942 1046 932 1128 813 1088 821 1081 1029 1026 1087 597 770 136 1027 1142 559 1133 992 1124 671 707 670 984 508 983 968 984 508 542 541 1060 951 1099 942 1031 620 160 599 1031 785 774 788 1034 161 1204 1035 1178 798 1033 795 1087 598 644 643 926 925 386 1180 1062 1199 1119 1180 1062 1180 935 1166 1209 385 384 1180 1177 514 468 469 886 402 890 403 1082 1143 854 869 1155 438 961 948 1155 366 367 400 897 1207 322 437 1034 1016 162 767 1016 38 163 162 1031 717 598 788 1036 786 1087 1032 1035 785 1036 768 1035 281 774 36 1031 598 717 644 1087 769 786 785 1204 1018 1031 160 1178 1188 1004 796 1081 1032 1188 1033 1002 1013 760 1014 777 793 1188 797 1014 761 1003 777 1002 1013 499 453 1028 797 792 787 1028 792 1032 787 1066 1151 1006 978 37 768 36 1034 163 1005 39 38 1101 429 306 351 1176 388 350 410 1090 1108 1072 1056 1135 569 535 536 1072 995 1133 1108 987 904 898 1053 1140 878 1197 877 1125 415 414 900 1184 988 1138 1055 1072 1108 997 995 997 564 1158 537 1072 1056 1108 1055 803 188 813 264 806 802 742 725 805 801 820 803 805 187 812 804 189 803 187 264 820 803 801 819 819 188 1088 803 1129 1128 1088 832 946 553 947 479 946 479 480 518 947 433 479 478 947 894 433 478 947 479 433 895 947 433 894 895 945 1207 944 521 1196 945 481 1100 1157 1194 841 1136 1128 813 821 190 1171 1167 832 713 832 660 659 1128 832 694 693 660 890 1100 891 369 1129 1137 1045 1037 693 836 832 659 187 803 812 264 1175 409 355 389 977 355 409 354 1095 496 451 996 1003 996 451 497 1066 1006 1015 1101 241 958 277 974 1120 43 164 305 1159 352 306 307 1101 306 429 790 351 1101 1176 410 862 1041 866 1126 1048 888 881 880 1042 1172 915 1106 412 889 1212 879 1113 962 961 963 1151 261 263 207 1183 637 592 638 957 958 1200 240 1027 1097 1073 1028 926 1199 386 424 1019 1118 646 1020 1066 1006 1151 1017 1206 975 978 1168 1023 700 696 678 1000 455 501 500 1074 1000 1024 1022 1023 696 700 1025 1097 776 771 789 1193 1021 1127 1022 1090 1056 1072 1119 1011 640 1012 1024 1011 1000 500 455 1011 500 1000 1001 1189 1151 1081 1070 1127 110 455 594 1024 1127 639 1022 1074 1109 1000 1193 867 655 610 1103 1213 631 632 1124 952 967 509 543 953 462 983 969 953 463 117 586 953 117 587 586 763 308 1201 976 1095 1201 354 977 1004 779 976 1178 1074 1165 1085 1146 1175 959 406 1176 1176 937 349 938 1176 1168 349 937 1085 1178 1004 959 850 834 232 849 834 194 193 148 1185 1079 826 823 1042 1077 1103 850 867 610 655 609 1003 1085 996 1146 1132 532 533 1109 776 789 1013 775 1127 639 1022 677 1165 1085 1146 1132 1091 648 649 1008 1061 940 1092 1163 957 1091 972 156 971 650 683 1163 1182 192 147 193 194 195 850 233 1182 147 612 14 867 195 1103 149 1182 657 611 612 803 801 189 805 8 801 718 283 819 618 662 616 618 718 8 801 183 189 819 801 819 662 699 661 802 801 751 718 1088 813 188 144 816 810 812 811 946 479 947 895 840 1136 844 817 1107 478 477 432 747 843 840 758 846 825 864 847 1040 1185 1137 1038 846 290 864 335 846 180 179 58 846 180 225 179 984 967 985 542 1182 612 611 14 843 844 884 1080 1114 739 749 735 1125 901 903 383 1052 986 985 965 1024 639 678 1022 959 307 353 352 1066 1151 978 1206 1023 700 1024 1025 929 960 493 448 818 752 753 755 1205 1115 1156 1049 1051 896 946 892 807 741 724 725 817 752 818 755 839 1114 1139 749 808 753 756 809 1131 443 444 489 1141 458 999 1183 988 491 446 492 930 989 446 313 988 530 491 492 1135 567 1158 531 10 11 821 144 831 660 832 1088 143 819 189 188 1088 188 143 144 822 1128 1038 1039 821 145 144 11 1037 810 805 812 694 831 661 660 942 561 544 545 942 943 561 545 1046 942 1112 932 511 510 544 942 871 582 627 1144 1131 315 361 907 898 905 362 904 904 395 394 361 414 395 394 906 1110 514 515 916 1171 694 831 699 838 471 470 125 838 578 471 125 1079 1038 823 1185 837 838 579 623 416 888 889 880 1049 882 1156 1205 1017 1033 1204 1081 717 620 28 1031 1031 185 160 620 28 281 1031 185 1031 206 185 281 1035 1036 785 1031 37 36 161 1034 216 876 910 250 876 251 250 217 1125 383 382 344 420 414 1125 383 1048 880 889 888 1106 1124 1063 1116 1152 991 984 985 1124 670 669 631 1134 235 236 272 1156 367 368 401 1197 417 415 396 1213 630 1099 585 1213 586 118 463 920 669 1213 1124 1134 1150 1164 1058 1077 850 851 849 837 625 1110 855 1043 871 870 1144 854 836 1167 715 1043 870 1177 1144 1008 682 1208 712 1152 1142 991 1071 1108 988 491 1184 1009 114 590 589 1141 113 591 590 1169 503 999 537 1009 982 114 589 1129 1078 1045 1082 843 720 737 736 843 841 840 758 843 720 1107 842 1107 736 748 733 858 884 893 331 1177 468 513 1144 514 916 919 547 1063 1116 941 1191 877 342 341 1210 1202 293 339 338 866 379 378 340 399 889 416 888 1152 983 968 984 1115 888 1049 1048 1198 1145 963 440 888 400 416 399 1051 946 1196 931 1153 177 223 222 546 919 1117 566 1202 54 176 175 806 805 802 820 745 746 816 759 800 805 189 801 1129 820 831 803 811 727 744 810 801 820 802 805 1091 957 201 156 1091 22 155 604 1083 957 1091 1007 1091 603 649 648 1083 1008 1091 1163 1147 1151 243 1189 958 241 973 974 973 157 203 202 973 972 157 202 973 980 157 972 973 203 157 980 1069 1019 1007 1020 1211 48 47 300 1161 216 217 876 1131 361 315 316 1053 990 987 1131 904 394 907 361 905 443 442 77 76 905 77 443 1134 1191 875 911 821 1088 144 813 1088 143 10 144 1082 854 1167 869 1171 695 694 699 1136 817 840 818 858 1080 747 843 1051 946 896 1196 911 197 912 152 1192 222 1153 255 1187 252 266 272 234 1150 235 196 1106 1191 1116 1063 1087 643 1027 598 1087 785 788 769 698 1030 679 645 804 742 800 726 800 142 804 726 1172 687 654 688 913 1150 1103 867 850 195 1150 233 1103 1150 850 195 1042 1103 1150 850 867 609 16 610 17 16 867 609 867 150 17 874 925 936 302 1186 1209 393 1190 906 1186 935 939 213 1166 246 213 247 926 387 386 348 1186 301 347 346 821 11 830 145 657 1143 868 1123 611 1103 148 15 833 613 835 658 634 970 672 1096 906 420 394 414 1037 809 810 817 811 187 186 141 811 186 187 812 817 754 840 752 1023 1024 700 678 1021 638 677 676 1146 551 554 534 1141 1183 591 458 937 936 1174 1168 1066 1081 1178 1033 1174 211 245 975 1085 1003 1004 1188 1074 1000 1001 1024 1014 776 777 797 1014 1028 776 797 1002 104 760 453 1002 104 761 760 1132 555 533 495 968 1152 1213 954 881 411 416 400 881 887 411 400 888 400 887 881 1198 365 366 399 888 416 400 881 1126 254 1192 851 1156 887 367 401 546 1117 556 566 839 749 571 735 1181 724 576 807 1114 577 132 716 839 571 517 474 1157 1098 1203 856 1139 723 740 739 1114 716 132 133 127 839 571 716 1181 1114 1102 577 1101 790 1159 306 409 959 977 353 1081 1073 1085 1188 1101 1006 1015 1005 939 935 1180 1166 1186 167 168 213 924 1211 909 215 804 743 742 726 800 283 33 734 1113 1048 888 1115 809 756 743 755 937 303 936 1168 1206 1147 975 1174 1174 1168 166 211 603 1091 22 972 1174 936 939 212 1190 1199 908 391 1189 204 205 243 891 403 890 369 946 479 434 480 946 553 518 1194 946 480 931 518 1100 480 896 435 1100 83 84 323 1205 1207 1100 890 891 896 324 1100 1074 1070 1081 1085 889 398 399 413 889 399 398 365 1155 1198 366 888 143 1088 819 188 9 819 143 616 819 189 803 801 889 398 1145 365 1212 364 397 363 1061 1191 1063 941 1056 1165 1130 908 1146 498 497 1002 1013 1002 1073 1014 1012 472 454 499 1012 454 1001 499 1011 1000 1024 1001 1011 1012 454 1001 1193 1183 1127 1021 1011 594 1127 455 1044 1205 1079 1049 943 950 1115 1162 1111 815 1093 824 1108 528 529 565 1129 1128 814 813 865 423 374 1121 1121 374 425 423 846 289 180 58 846 179 825 847 1202 338 339 377 860 174 1126 1210 1126 219 253 861 1126 220 254 253 821 144 145 190 833 192 146 147 1182 193 828 192 833 1182 612 658 868 1143 1077 1123 406 1176 959 410 1120 328 305 182 830 833 829 146 830 613 835 833 1077 849 834 850 1039 822 823 1038 829 833 835 1182 1027 643 642 597 1027 1097 642 1025 1027 642 643 1025 1162 1123 1149 915 1157 1194 856 841 1110 916 515 1098 515 916 514 548 855 626 580 1177 1110 516 838 1098 1110 579 838 470 1090 1158 1169 997 1092 971 650 956 981 971 1173 709 1057 1180 926 1199 1074 1073 1085 1081 1031 644 620 599 1035 206 1031 281 1204 1087 1031 1029 1034 1204 1036 1035 1157 807 820 806 946 434 479 895 844 840 747 843 1050 1051 892 885 1203 838 837 623 946 896 480 434 553 947 478 477 979 980 1019 158 1018 205 159 160 1189 1076 1069 1070 845 226 1093 180 407 332 884 1111 1160 20 606 605 1061 1160 911 941 153 154 922 199 933 607 912 608 933 912 921 608 911 941 1160 933 1061 1160 922 911 933 652 1160 607 865 846 864 335 845 865 1111 333 1179 844 816 746 1093 824 262 226 335 333 845 289 911 1191 941 933 258 826 257 1185 274 239 923 1200 1181 808 724 807 935 273 247 248 1201 428 1095 354 1211 345 903 901 1174 245 246 1166 1104 909 924 1211 51 297 50 1105 1161 298 49 299 1047 1161 1105 876 827 823 828 276 1059 1086 1205 1051 1077 1079 1044 1039 869 665 711 854 871 627 582 628 854 715 665 711 1167 715 664 665 854 711 692 715 941 702 686 1116 1131 76 444 443 414 900 395 906 1055 1184 1131 907 1142 559 560 527 873 689 656 690 1103 655 610 656 1103 149 148 15 323 890 1100 1207 1041 1126 851 1164 984 967 1152 985 1164 1126 861 1195 873 656 868 690 869 1044 1143 872 1123 691 690 657 1101 1015 1159 782 284 182 41 1101 984 541 991 1142 1010 638 1127 1183 1199 391 422 424 898 905 899 317 397 898 1212 363 963 485 440 486 1212 363 318 364 964 487 986 525 965 486 964 525 1198 439 961 1155 1122 1038 1185 814 1185 1122 814 278 1129 1137 1037 1122 845 180 1093 846 845 59 289 288 845 1111 288 333 1093 865 846 825 1151 265 261 208 1069 980 1007 1019 1118 680 710 679 1019 646 1118 1030 1076 1118 1021 1022 1076 1074 1165 1070 1147 242 275 279 978 244 1151 265 1184 489 490 528 984 983 508 541 1064 983 1152 1142 1105 217 876 1161 1055 1131 904 907 1129 832 831 1171 663 697 1171 837 807 575 621 820 807 802 575 820 1026 679 698 1030 1084 1089 1061 1063 1081 1204 1029 1087 1087 598 788 1031 1027 598 643 597 1027 769 598 597 15 867 16 610 867 16 150 149 1103 148 194 834 1103 194 148 149 867 150 195 149 689 914 656 655 1065 1166 1147 1057 1174 939 1166 246 1069 1147 1065 974 1181 1102 807 622 1083 958 1200 957 1174 166 212 211 1084 923 910 1170 1057 939 1174 925 1115 1155 1198 961 650 956 971 684 897 437 322 82 897 438 437 82 1127 110 456 455 1011 500 454 455 534 535 1000 1109 1000 1127 1024 1022 1146 498 1001 554 1097 1012 1025 1073 1025 1012 641 1024 1123 706 690 703 869 854 711 1143 827 268 231 834 827 231 828 834 1162 1067 950 1113 1110 1177 469 514 1043 1177 919 1144 1144 122 467 582 869 870 665 1167 1177 580 581 626 1144 582 627 581 1177 468 581 123 1043 916 1177 1110 592 591 637 1183 1009 1141 459 998 1077 1182 868 834 1100 324 435 896 1207 437 436 83 1059 1082 1205 1086 369 1100 323 890 1205 945 1196 1100 1110 855 1043 1078 1078 837 1098 1110 837 625 579 1110 625 664 855 663 855 837 663 1167 1174 975 245 1147 1174 245 212 246 926 386 387 424 1057 926 925 1174 1066 1015 1006 1017 1064 970 1096 1173 1004 779 796 780 1178 794 798 795 1003 1014 777 1188 1066 1085 959 1178 959 976 1178 1004 1018 159 1189 1019 1188 794 796 1178 1004 780 796 778 1004 796 1188 778 1178 798 1015 1033 1018 600 26 159 1018 26 600 599 1019 204 159 1189 1204 1081 1033 1036 1018 600 645 599 1018 645 600 1030 1064 954 955 1152 876 250 251 267 1194 476 856 857 1194 1098 550 931 1203 623 578 838 1157 1194 1098 856 1043 916 1059 918 1137 883 865 1086 810 804 811 727 810 811 804 812 810 744 811 816 809 753 755 818 1050 947 946 1194 1119 1055 1054 906 998 997 999 538 998 999 504 538 923 274 270 238 1084 1191 1061 1170 924 248 215 249 1201 773 94 93 940 1083 1084 1200 956 705 685 1173 892 891 896 370 891 370 403 369 891 324 896 370 1100 324 84 435 891 369 324 370 1100 84 436 435 1198 365 320 366 1145 79 440 319 879 1197 1212 397 1198 439 1155 320 1113 964 1145 1212 1099 464 510 952 1058 1042 1172 913 1099 584 119 585 952 1213 463 968 924 923 274 249 926 927 1199 424 1052 1113 964 965 1099 952 1213 464 1106 1124 1172 920 1034 1033 1017 1016 1016 208 1017 162 1016 1017 208 1006 1016 163 208 162 1016 208 163 1006 1016 1006 1005 1015 1016 163 1005 1006 1096 634 635 673 1061 941 1173 956 1089 994 995 998 940 155 201 200 649 1008 648 682 1186 925 1180 347 1020 714 1208 1118 984 983 541 1142 1152 967 984 968 925 939 936 1186 1180 384 346 385 1115 948 944 1207 1155 887 897 1115 882 421 411 401 882 1156 1094 421 1110 625 579 580 837 1110 579 838 817 759 844 754 817 844 840 754 817 759 810 816 728 744 811 727 854 836 692 1143 1040 826 864 825 1121 375 336 863 880 378 416 377 1059 917 916 1078 1100 482 436 1207 513 932 919 1144 848 223 1153 177 1049 1154 1079 1041 848 863 847 291 849 1079 1153 1041 1040 825 1093 1185 1086 1205 886 1094 945 521 520 482 945 566 520 521 1117 943 932 556 1207 482 483 521 1117 566 945 556 1207 437 483 482 1141 591 636 590 1075 999 1169 1183 1009 460 459 114 113 1009 114 590 808 756 753 741 808 724 741 740 407 865 883 373 806 742 741 725 1077 1123 1162 1042 564 997 995 538 1055 1133 1108 1072 873 1123 706 690 852 1202 54 176 1043 1117 919 918 869 871 872 666 1153 223 826 257 1182 1077 868 1143 1094 375 863 376 1112 512 511 466 995 539 994 992 995 539 565 538 995 994 539 505 995 998 994 505 995 538 505 539 995 505 538 998 1027 771 1097 1028 1097 1013 776 789 1073 1013 1014 1097 1073 1014 1028 1097 1097 719 1013 789 1097 1013 719 617 442 964 899 441 987 899 442 964 987 964 442 487 442 487 964 441 1053 986 991 1052 1197 397 396 898 898 362 905 317 1116 707 686 687 855 580 626 625 1110 1098 515 516 1110 516 515 470 1177 581 580 123 1043 1046 871 1144 1179 329 184 824 1179 140 750 728 1179 750 745 728 1179 745 816 728 816 746 844 759 1179 745 750 732 351 1176 350 410 1209 420 384 419 1178 794 781 798 856 552 1098 516 808 1157 807 1102 808 807 806 741 806 807 802 725 806 741 807 725 1093 226 225 180 845 288 289 333 1177 513 468 514 514 919 513 547 1098 917 548 568 1110 124 579 470 1110 469 124 470 858 285 1080 331 425 423 885 1121 405 884 407 332 1179 816 745 746 746 1080 859 844 859 746 1179 729 332 859 1111 287 848 826 178 847 848 863 826 847 55 292 852 56 177 56 852 848 55 852 177 56 848 223 178 826 213 935 214 1186 169 1211 902 48 935 214 215 248 1104 1211 935 1180 1141 635 590 636 1056 1090 1165 1199 928 908 927 390 1083 974 1065 1166 1062 1104 1180 1119 965 985 966 557 965 524 525 557 965 525 985 557 1170 250 267 270 1117 556 945 944 958 241 277 240 900 906 414 1125 1091 155 22 156 925 347 386 1180 1065 974 1147 1166 1062 958 1083 1166 1166 279 974 1147 860 1126 220 1192 1212 412 397 398 866 378 379 880 880 416 881 377 1129 1078 1171 1157 1079 1094 1154 882 1046 1112 1144 932 857 722 749 1139 1050 893 947 1136 1148 450 473 496 1175 1148 1132 928 928 356 357 390 357 928 929 356 1176 349 304 350 409 406 959 353 1066 1206 978 1176 862 340 378 339 1039 1077 827 828 1114 624 716 619 866 379 380 879 1041 862 866 880 443 987 905 442 1133 559 527 528 873 706 689 690 1123 703 667 706 913 1103 655 867 915 1123 706 873 1060 1152 952 951 1157 809 806 1037 1058 1106 1191 1172 873 690 868 1123 1067 1106 1162 1060 1179 729 745 732 1179 427 66 732 1179 816 811 728 1104 910 924 909 1032 1033 795 1188 1057 1174 939 1166 946 518 931 1194 1194 550 477 553 885 423 883 1121 1050 1136 947 1194 981 1141 1075 1208 955 1173 1116 702 1141 1009 113 590 916 917 918 570 916 547 548 570 916 918 547 570 1205 1156 886 1094 845 1093 865 846 1080 331 286 332 1098 552 550 549 1040 1137 865 1086 853 266 1187 861 1164 861 853 1187 913 874 654 921 1191 1164 1134 875 913 655 654 609 913 654 874 609 1157 1102 808 1139 515 516 1098 549 1157 1098 1045 1078 1051 892 885 891 808 806 756 741 808 809 756 806 1128 836 835 659 1185 258 259 278 810 755 743 744 810 759 755 744 810 809 743 755 810 817 809 755 858 843 884 1080 1080 332 1111 884 1080 1111 332 859 1179 184 282 227 1050 884 893 1136 1080 331 285 286 1187 266 252 861 1149 942 1099 1112 471 474 126 1203 839 517 1203 474 630 1149 920 1099 1106 1172 915 920 1126 1210 174 219 862 340 339 294 862 860 340 294 875 911 1191 1170 1046 872 871 1149 1152 1063 1124 955 875 876 251 267 1053 900 904 898 1209 903 384 420 1083 957 1200 940 1140 1191 1164 1106 1116 1172 687 921 914 913 655 688 1114 839 1139 1102 914 655 689 688 990 986 1053 987 1195 252 251 218 1025 1081 1074 1026 1174 975 1168 211 1120 350 304 305 1120 350 351 1176 1176 304 349 1168 1120 1168 210 165 1176 349 388 938 1198 320 1155 366 1155 439 961 438 1079 826 1040 1185 1155 367 366 321 1115 948 1155 961 897 948 438 1155 952 464 509 463 952 509 968 463 953 463 1213 968 1213 669 631 1124 1196 519 481 520 1167 664 713 663 979 241 973 203 979 204 203 158 979 203 980 158 1209 384 903 1180 1190 1199 422 1209 1180 1209 1199 1119 1209 906 903 420 1160 911 912 152 941 686 652 933 1170 238 270 237 490 528 529 1184 1131 443 489 488 1026 1025 1027 643 1026 698 696 643 1026 696 1025 643 1087 1029 643 644 1087 1026 643 1029 831 820 1171 699 1129 1039 1082 1038 817 1157 818 1136 1171 621 695 699 845 1093 1111 865 1037 810 809 805 1061 956 1160 941 202 973 240 241 240 241 973 958 1142 541 991 560 890 1207 368 1156 934 239 940 1200 1071 1053 1142 991 1133 1064 1071 1142 1089 1084 1072 1071 1133 995 559 565 1124 955 671 954 1124 632 671 670 953 586 954 1213 984 991 562 985 1152 1124 954 955 586 632 1213 631 1197 1140 900 878 849 256 268 255 866 862 860 340 866 1164 879 1140 879 379 380 412 1048 889 880 879 866 295 341 340 879 412 417 397 1011 594 595 640 1011 595 1012 640 1004 977 976 1095 1074 1073 1025 1024 1089 999 1141 998 886 1051 891 1205 1082 1143 836 854 1103 656 611 868 767 1016 1033 1034 1034 162 1017 207 1132 996 555 495 1056 908 1199 1165 1148 327 1095 473 1148 70 450 449 1148 327 354 1095 960 495 1148 1132 1076 1118 1022 1023 1018 1019 600 159 1018 1189 1030 1019 1019 646 600 601 1019 600 646 1030 933 653 652 607 1160 607 606 19 1092 940 155 1091 1092 155 940 200 1092 605 650 604 1092 650 605 651 21 20 1092 605 926 937 925 1174 1003 103 761 452 1188 796 793 778 934 238 200 239 354 977 1201 308 940 1084 934 1200 1134 236 875 272 911 912 197 1134 1084 1140 1191 1170 1134 197 235 196 1011 1024 639 640 1011 595 594 109 1011 454 595 109 1011 1024 1000 1127 594 639 1127 593 1011 594 639 1127 821 660 614 615 819 616 661 1088 1088 661 615 616 830 146 12 833 1112 511 512 942 1112 467 121 582 1112 121 583 582 1194 1045 931 1050 988 446 989 492 1074 1073 1001 1146 1130 532 493 494 1130 1132 532 494 536 535 1169 502 1177 919 514 916 1155 367 897 887 1093 259 262 1122 1099 464 585 119 629 1112 628 1149 845 226 181 824 1185 259 258 225 845 59 181 180 845 181 59 288 845 181 226 180 1093 846 225 825 1041 851 1042 1164 1047 910 876 1170 1165 1130 928 1132 1019 25 159 158 1106 1116 1191 1172 1127 1022 1021 677 1133 990 489 527 855 1110 580 625 1104 903 1125 901 48 170 49 902 1178 781 779 976 1165 1070 1074 1085 1101 306 352 351 1206 1066 959 1176 959 353 976 977 1159 781 764 765 1120 305 164 182 1120 43 304 165 1120 1101 978 1176 1120 304 43 305 1120 164 43 165 1168 44 166 165 1203 517 516 471 857 749 839 1139 615 1088 10 821 625 663 855 837 385 1180 347 346 1199 927 908 424 1149 1112 1046 942 1162 1117 1046 1044 1135 569 567 531 1135 1130 569 531 941 652 686 685 237 934 922 1170 941 686 702 685 1089 971 1061 1173 970 994 982 993 1064 955 954 970 1071 1064 1152 1142 693 659 832 660 614 830 821 11 1046 932 919 1117 1043 871 1046 869 1115 949 948 961 897 1115 887 1156 869 711 665 666 1167 665 664 870 403 886 425 885 1037 809 806 805 1038 822 823 1185 1157 1139 818 841 1136 844 843 840 1148 354 309 355 1193 1183 1169 1010 1127 1010 110 593 954 586 587 632 953 969 954 587 968 983 953 508 968 953 463 508 953 117 116 587 953 116 969 587 953 116 462 969 1108 530 491 988 923 1200 239 934 1072 997 1108 1090 1084 1068 1089 1072 858 736 748 1107 858 731 736 747 746 747 1080 844 858 843 747 736 859 1080 730 286 298 1105 343 1161 172 171 217 1105 1161 343 878 1105 1105 217 218 876 1041 866 1164 1048 933 921 686 653 881 1202 1041 880 850 851 233 1150 920 630 669 668 1060 1213 1099 952 860 174 220 1126 668 630 629 1149 1157 856 1203 1102 853 266 861 253 875 1195 251 876 853 1150 1187 234 853 266 269 234 1164 1134 875 1187 1165 1206 1070 1085 1130 532 1109 569 830 12 613 833 822 190 814 1128 819 699 662 820 661 660 831 1088 1093 1185 259 1122 819 831 1088 661 819 831 661 699 819 820 831 699 183 143 9 819 819 801 618 183 1172 920 704 915 669 920 701 1124 949 962 1115 950 913 654 688 1172 673 981 1173 709 981 683 709 708 1163 650 1091 1092 1092 940 1091 1163 981 709 683 971 1140 1105 878 877 1136 884 843 844 813 1122 228 814 1194 857 841 842 229 278 280 814 1157 818 1139 808 989 1130 493 929 1130 494 493 960 447 929 493 448 1130 493 929 960 830 145 1128 821 613 833 12 13 830 12 146 145 830 835 829 833 830 191 1128 145 1210 52 51 296 860 295 174 1210 229 814 280 822 1153 823 827 257 1154 338 377 376 1164 1140 1195 875 1053 987 986 1052 1195 218 1105 173 901 878 1047 1161 172 50 171 1105 897 887 367 1156 1052 964 1113 1212 1151 244 261 265 1206 959 1066 1085 1204 1151 263 207 1141 459 504 458 1009 998 459 505 1009 994 998 505 1009 635 589 590 1095 451 574 791 93 1201 763 308 1095 496 473 574 762 1003 1095 451 1095 574 451 496 871 666 870 627 869 870 871 666 830 614 659 613 830 659 835 613 830 1128 835 659 1128 660 614 821 830 1128 614 821 830 614 1128 659 1128 614 660 659 1084 1063 1140 1071 1105 173 51 1210 1205 1207 890 1156 1080 286 859 332 1080 332 884 331 1080 884 858 331 1014 1188 1073 1028 1178 1033 1188 795 1070 1026 1074 1081 963 964 965 486 963 441 486 440 963 486 441 964 963 486 524 485 963 524 962 485 963 524 965 962 963 524 486 965 1127 456 501 455 1135 1193 535 1109 1135 567 1169 1158 1122 278 228 814 1179 815 811 816 1050 893 892 895 889 1145 1198 365 1113 888 889 1198 1113 1145 1198 889 879 1113 889 1212 957 156 202 201 957 202 156 972 1053 1071 1054 1140 1053 904 1054 1055 1133 565 559 528 995 1133 1108 565 1101 328 429 351 284 1101 41 772 1120 182 209 1101 772 782 1101 790 1101 1006 209 978 1155 81 321 320 1116 702 686 707 1064 1063 1152 955 666 869 711 872 1179 824 184 227 1157 807 806 808 1194 552 1098 856 1136 947 1194 1107 1136 1050 1137 1045 1193 1010 1169 502 1169 1010 503 502 1108 1158 530 988 1169 536 503 537 1004 780 778 762 1148 977 1095 354 1178 1188 794 795 1004 796 779 1178 1095 574 773 791 1146 497 1003 1002 1004 1095 762 1003 802 800 751 801 800 802 805 801 800 802 742 805 800 734 742 751 751 801 800 734 800 742 802 751 1093 262 815 1122 827 268 849 256 1111 332 334 407 1182 612 658 657 224 258 825 826 1124 632 670 631 1179 427 334 287 1037 803 1122 812 1194 552 476 550 1082 1046 1117 1044 1043 1177 870 855 1177 1043 1110 855 1203 624 623 697 1136 843 842 841 831 803 820 819 1064 983 954 1152 1106 1063 1152 1067 898 900 396 1197 900 415 878 1125 1068 971 1089 981 201 957 239 240 1068 1061 1089 971 1083 957 973 958 1189 1029 1026 1081 1074 1076 1193 1022 1069 1020 1118 1019 1206 937 1174 1168 1089 995 992 1072 1148 1132 977 1175 1072 1064 1133 992 1072 1133 1053 1055 866 1126 1041 1164 236 237 198 911 1058 1042 1164 1106 1104 901 1211 903 1071 1089 1063 1064 1148 928 355 960 1193 535 501 502 1073 1188 1032 1028 803 264 1122 812 1145 364 319 365 1155 366 400 888 1044 1123 1143 872 948 483 1207 437 1162 1060 1149 942 826 823 1079 1153 1171 1157 1078 837 407 333 865 373 1167 664 855 870 1129 1157 1045 1078 1129 803 1088 813 1102 624 622 577 1205 1196 891 1100 844 1136 884 1137 1114 716 839 619 832 659 836 1128 928 1175 389 418 1020 714 1118 680 386 1209 385 422 1138 906 1190 393 247 214 213 935 1084 1119 1083 1068 1061 1084 940 1068 1091 1008 1007 648 1001 1073 1013 1002 1073 1002 1001 1146 1073 1013 1012 1001 1025 1073 1012 1024 1073 1002 1003 1014 1073 1002 1146 1003 1027 1028 1032 787 1027 770 771 787 1073 1027 1028 1032 1105 296 51 297 48 49 299 902 1164 1210 866 1126 1161 49 171 170 879 1197 417 877 1147 1151 975 275 988 446 930 989 989 1158 531 1130 908 424 390 391 1174 1147 245 1166 1175 355 409 977 1138 907 906 360 849 1077 1079 1041 520 482 481 945 1041 880 866 1048 481 945 482 1100 890 402 1156 368 945 1207 521 482 1156 897 368 367 392 1190 422 419 1119 1104 906 1054 1130 1056 1090 1165 1138 393 392 359 1062 1083 1084 1119 988 930 1138 989 1119 1084 1054 1072 1064 993 970 983 1064 954 983 970 1064 1142 993 983 1142 993 983 507 710 1022 1021 1118 1050 883 884 1137 1080 285 64 286 843 844 1080 747 1137 812 816 810 859 844 1179 746 1140 866 877 879 950 951 1067 1060 1084 1047 1140 1170 1052 1212 879 1197 1085 996 977 1004 959 976 1004 977 1058 1150 913 1134 873 868 656 1103 1064 993 992 994 1064 1072 1089 992 1072 1071 1084 1054 592 638 1010 1183 1083 973 974 958 1090 1083 1119 1068 1205 1156 1094 882 828 193 834 231 1143 1039 1044 1082 1143 691 703 1123 1049 1048 888 881 1046 872 869 871 1177 513 514 919 1043 1117 1046 919 834 193 194 232 1113 961 1115 1198 1115 949 943 944 1149 1060 915 920 1123 667 1149 706 945 944 556 521 1112 512 467 1144 1052 1212 1113 879 1139 740 723 1102 1052 899 964 1212 1114 739 723 1139 430 749 857 722 1112 512 932 942 1152 1067 1063 1071 991 1152 1067 985 1106 1172 1124 1116 1060 950 951 942 546 919 513 932 1129 832 1088 831 1129 1128 836 1039 1171 1078 1167 837 1053 900 1140 1054 920 1213 630 1099 1114 1139 723 1102 866 1126 1210 860 204 242 243 979 1189 1081 1204 1029 1118 679 1030 646 1189 1204 1018 1029 979 204 1019 1189 1081 1025 1074 1073 1023 1026 1074 1076 1169 1183 503 1010 1141 994 1089 998 1089 1068 981 1075 1096 1089 1141 994 1118 1023 710 1022 1208 712 675 676 1045 917 1059 1078 1045 1082 1078 1059 1039 823 822 828 1139 808 757 740 1157 837 1171 1203 1157 806 820 1037 945 918 566 1117 1171 832 694 713 1139 722 738 857 1129 803 813 1122 958 247 1166 935 1062 1104 935 1180 1211 902 909 215 1057 1180 939 925 1104 1047 1054 1084 1133 1184 489 1131 904 907 1131 361 1053 987 1052 898 1055 907 904 906 711 872 869 1143 915 706 1123 1149 1042 915 1162 1106 1115 949 961 962 1205 1115 1117 944 1162 942 1149 1046 119 120 1099 465 1017 1034 1204 1033 1066 1033 1015 1017 1188 778 1003 1004 1081 1025 1027 1026 1034 1017 1204 207 1066 1178 1015 1033 1206 1085 1165 1175 1083 1119 1062 1199 1120 304 350 1176 928 960 1130 929 1189 1029 1030 1026 534 501 1000 535 1085 1175 959 977 1158 1090 1130 1056 1189 1147 1151 1070 388 1176 406 410 1206 938 926 937 1206 937 1176 938 1108 564 530 1158 1083 1062 1084 1200 1165 1090 1065 1199 908 391 358 1190 1206 1081 1151 1070 997 1158 1169 537 1119 1055 1072 1054 1135 1109 569 1130 1050 892 883 885 945 520 918 1196 1059 1196 931 1051 1088 803 831 819 832 1167 693 713 1128 822 191 829 830 191 829 1128 803 813 1122 264 1039 829 1128 835 1129 1037 803 1122 1085 1132 977 996 1181 577 132 1114 246 1166 245 279 277 279 974 1166 1061 934 940 1084 1166 213 246 939 1083 1166 1057 1062 1039 828 822 829 945 556 566 521 1123 1042 873 915 885 1121 883 1086 1039 1128 836 835 1118 714 710 680 1076 1023 1026 1118 1070 1069 1065 1076 1076 1026 1070 1189 928 927 1175 418 1076 1075 1208 1083 1076 1193 1208 1075 1129 820 1157 1171 1128 660 1088 832 515 1098 916 548 1061 1170 922 934 1209 393 419 1190 1083 1069 1007 1020 1160 1061 922 1092 1092 155 200 154 822 814 1038 1128 1039 1077 828 1182 1077 834 827 828 1077 868 1123 873 1082 1117 1046 1043 1077 1044 1143 1039 1059 1196 1051 1205 1043 1078 1082 1059 1046 1044 869 872 809 818 817 1157 1137 1037 812 810 1093 815 1137 1122 1082 1167 1043 869 1153 827 256 257 1050 883 1086 885 919 566 918 1117 885 891 886 1051 1039 827 823 828 1045 1086 1059 1051 854 692 711 1143 1079 827 1039 1077 1121 374 865 864 1104 1047 1084 910 1055 1138 907 906 1119 1068 1084 1072 1043 870 871 869 1129 836 1082 1039 836 693 1167 715 1059 916 917 918 885 1051 886 1086 1058 913 921 1134 1077 1103 868 873 853 269 1150 234 1077 1103 850 834 915 1060 1106 920 853 861 1126 253 1053 1140 1052 1071 1145 964 899 1212 1140 1052 879 1197 880 379 879 413 412 413 889 879 1192 221 254 220 1042 1150 1103 913 1042 1103 873 914 1042 915 1172 914 1134 911 875 236 1041 851 1126 1192 1042 873 915 914 1118 710 1023 679 1189 1030 1118 1026 243 979 242 1147 1035 206 1204 1031 1189 204 159 205 204 979 243 1189 1145 963 441 964 1152 968 952 967 254 853 253 269 1059 1196 1205 1117 1044 1117 1205 1049 1207 436 437 482 1156 1049 1115 887 1117 944 943 556 886 1094 425 1121 1079 1205 1094 882 1205 891 890 1100 323 368 890 1207 1209 420 393 906 1083 1007 1008 1020 1076 1118 1020 1208 1208 712 708 675 1083 1065 1069 1076 1040 863 826 1079 1121 336 864 863 845 824 288 1111 1111 407 334 333 1137 1122 1129 1038 865 825 864 846 1094 375 376 421 1137 1185 1122 1038 1086 886 1121 1094 1142 560 559 540 1142 991 990 560 1063 1173 1061 941 905 987 1131 904 1133 1142 990 527 1184 907 930 445 1142 559 992 540 1053 904 900 1054 1161 910 1047 909 1206 1165 1199 927 1206 1057 1147 1174 1174 936 925 939 1062 935 958 1166 1147 1057 1166 1174 1066 1151 1206 1081 1188 793 792 797 1122 228 278 260 1093 262 259 226 1179 745 729 746 1111 824 288 334 816 812 815 811 1093 262 824 815 1129 1037 820 803 1050 946 947 895 1050 892 946 895 1045 917 1098 931 550 931 1098 568 1045 1059 917 931 1194 550 553 518 837 1110 838 1098 1119 1090 1068 1072 1056 908 1138 1190 923 239 238 934 1119 1104 1054 1084 1119 1104 1084 1062 1057 1065 1083 1199 1115 1198 1155 888 1082 1143 869 1044 1082 1039 1079 1038 852 293 54 1202 918 570 1196 520 918 917 1196 570 1196 570 519 520 844 884 1111 1137 1045 1051 1059 931 1171 1167 713 663 946 1050 931 1051 1187 1164 1134 1150 888 399 889 1198 1067 966 967 951 1206 959 1175 1176 1151 243 263 261 1074 1023 1076 1022 1103 850 194 195 1047 1140 878 1125 1161 1047 901 909 1054 1125 900 1140 1047 878 1140 1105 1064 1173 1096 1089 941 652 1160 933 886 1086 1051 1205 1082 1205 1044 1117 1043 1059 1117 918 1205 890 891 886 1162 1117 1049 1115 932 556 546 1117 1191 912 921 933 1191 912 933 911 1164 851 853 1126 1137 1045 1050 1086 1157 1045 1098 1194 1194 552 550 1098 1136 843 893 1107 1194 550 518 931 1194 931 946 1050 870 855 1177 626 876 1170 910 250 1101 1176 410 959 1058 1150 1042 913 1191 1116 921 1172 1058 1134 921 1191 1067 1162 1164 1048 1187 235 234 1150 1172 707 687 701 1162 1067 1060 950 1162 1042 1123 915 1162 1049 1048 1115 1046 932 1117 943 1114 577 624 1102 1052 987 964 899 1052 986 964 987 878 381 415 1197 1187 1134 235 1150 1113 965 966 962 1158 1135 1130 1090 1020 1083 1076 1208 1163 682 708 1208 949 1115 943 950 1113 964 963 1145 1067 967 966 985 897 1155 438 321 1164 1140 1067 879 966 1067 950 951 1195 251 252 875 1041 1164 1042 1162 1041 1048 1164 1162 1162 1115 943 1117 1041 1044 1049 1162 1067 879 1113 1048 1071 1067 991 1152 1067 1052 991 985 1067 1071 991 1052 1067 966 965 985 965 1052 1067 985 966 1067 965 1113 1041 1042 1077 1162 1162 1049 1117 1044 1158 531 530 492 1119 1104 1209 906 1180 1119 1104 1209 1190 392 1138 393 1206 1065 1165 1070 1165 1074 1076 1193 1076 1165 1065 1070 1208 637 676 675 960 1130 494 1132 940 1068 1084 1083 1061 971 1068 1163 1061 1092 956 971 1092 604 21 605 971 1092 650 1163 923 270 1170 238 1084 1170 934 923 1071 1053 1072 1133 1072 1071 1133 1064 1053 1054 1072 1055 1142 560 990 527 1053 1072 1054 1071 1055 904 1054 906 904 906 900 1054 634 672 673 1096 1141 675 636 637 1072 1119 1056 1055 708 981 675 674 675 674 981 1141 1089 995 997 998 459 113 1141 1009 1141 504 459 998 1129 1038 1122 814 1038 1128 814 1129 1083 973 957 1007 1083 1091 957 940 1057 1065 1166 1083 1091 1008 649 1163 1157 820 807 1171 839 1203 856 1102 1171 694 832 831 839 517 856 1203 1181 622 576 577 1102 622 624 697 1129 1167 832 1171 1044 1162 1123 1149 1212 364 398 397 950 1113 1067 966 1067 1048 1164 879 1044 1123 1162 1077 1041 849 1077 851 1074 1024 1023 1022 1025 1074 1023 1026 1011 639 1024 1127 1135 1193 1169 535 1074 1025 1023 1024 280 822 814 1185 1185 258 278 280 1093 225 846 180 865 846 335 845 883 1086 1121 865 1205 1086 1082 1079 1047 876 1140 1170 1140 1195 875 876 1140 876 875 1170 1172 704 914 915 199 922 237 934 1197 417 877 381 1170 237 270 267 922 1092 1061 934 1211 300 301 346 923 924 1084 910 1180 386 385 347 901 909 1047 1104 1079 823 1039 827 1103 194 850 834 1143 711 691 692 1044 1039 1079 1082 1049 1041 1079 1044 1079 1044 1041 1077 1129 1122 813 814 838 1098 516 1203 1134 236 235 197 913 654 1172 921 701 920 704 1172 1060 1099 1213 920 1205 1051 891 1196 666 711 703 872 1038 1039 1128 1129 1043 1078 1167 1082 CELL_TYPES 4613 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 POINT_DATA 1214 SCALARS sigmax double LOOKUP_TABLE default -13681.6 -13681.6 -13681.6 -13681.7 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.7 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.5 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.7 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.6 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.5 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.7 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.7 -13681.6 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.6 -13681.5 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 METADATA INFORMATION 0 VECTORS u_v_w double 0 0 0 0 0 0 1.72083e-15 -2.59166e-15 -5.35655e-08 3.56255e-15 3.33647e-15 -5.35655e-08 -1.03718e-15 3.0407e-15 -5.35655e-08 0 0 0 -7.43258e-16 4.14187e-15 -5.35655e-08 0 0 0 3.49894e-15 3.64688e-15 -5.11307e-08 3.43534e-15 3.95728e-15 -4.86959e-08 3.37173e-15 4.26769e-15 -4.62611e-08 -3.62007e-16 3.62179e-17 -4.38262e-08 -1.01742e-15 -6.83502e-16 -4.13914e-08 -1.67277e-15 -1.40314e-15 -3.89569e-08 -2.32819e-15 -2.12286e-15 -3.6522e-08 -2.9836e-15 -2.84258e-15 -3.40872e-08 -1.72823e-15 2.32044e-16 -3.16524e-08 -4.25207e-16 -1.73335e-15 -2.92176e-08 8.77817e-16 -3.69874e-15 -2.67828e-08 -3.91956e-15 -5.52903e-15 -2.4348e-08 -3.13818e-15 -4.79945e-15 -2.19132e-08 -2.35679e-15 -4.06987e-15 -1.94784e-08 -1.57541e-15 -3.34029e-15 -1.70436e-08 -7.94023e-16 -2.61071e-15 -1.46088e-08 -1.26304e-17 -1.88112e-15 -1.2174e-08 7.68754e-16 -1.15154e-15 -9.7392e-09 -2.40626e-15 -2.7589e-15 -7.3044e-09 -2.22159e-15 -2.69632e-15 -4.8696e-09 -2.03692e-15 -2.63374e-15 -2.4348e-09 1.30187e-15 1.5274e-15 -5.35655e-08 8.8291e-16 7.36455e-15 -5.35655e-08 4.63952e-16 8.29117e-15 -5.35655e-08 4.49935e-17 5.56459e-15 -5.35655e-08 3.39494e-16 2.02424e-15 -5.35655e-08 1.95103e-15 4.22601e-15 -5.35655e-08 -1.06127e-15 -1.44692e-15 -9.89719e-15 -2.70277e-16 -3.74398e-15 -9.9562e-15 4.09913e-15 -4.36406e-15 -5.24132e-15 4.41357e-15 -7.73805e-17 -7.37021e-15 4.72801e-15 3.74199e-15 -9.4991e-15 5.04246e-15 7.43984e-15 -1.1628e-14 3.91671e-15 -2.56162e-15 -2.4348e-09 3.10679e-15 -2.27901e-15 -4.86959e-09 2.29687e-15 -1.9964e-15 -7.30438e-09 1.48695e-15 -1.71379e-15 -9.73917e-09 6.77029e-16 -1.43118e-15 -1.2174e-08 7.69915e-16 -7.73607e-16 -1.46088e-08 1.96943e-15 -2.18803e-15 -1.70436e-08 3.16894e-15 -3.60245e-15 -1.94784e-08 4.36845e-15 -5.01687e-15 -2.19132e-08 2.60134e-15 2.11517e-15 -2.4348e-08 1.60072e-15 6.57006e-16 -2.67828e-08 6.00096e-16 -8.01177e-16 -2.92176e-08 -4.0053e-16 -2.25936e-15 -3.16524e-08 -1.40116e-15 -3.71754e-15 -3.40872e-08 -2.40178e-15 -5.17573e-15 -3.6522e-08 -3.40241e-15 -6.63391e-15 -3.89569e-08 2.85166e-15 -1.92943e-15 -4.13914e-08 2.90158e-15 -3.01239e-15 -4.38262e-08 2.95151e-15 -4.09535e-15 -4.6261e-08 2.52593e-15 -4.29931e-15 -4.86959e-08 2.12338e-15 -3.44549e-15 -5.11307e-08 -2.33259e-15 3.41578e-15 -5.35655e-08 -7.60708e-16 3.79086e-15 -5.35655e-08 -3.14675e-16 4.16594e-15 -5.35655e-08 -4.27797e-15 4.54102e-15 -5.35655e-08 -2.85474e-15 -1.75374e-15 -5.35655e-08 -2.30398e-15 -2.1727e-15 -5.35655e-08 1.08693e-17 -1.58639e-15 -2.4348e-09 1.92354e-15 -9.74408e-16 -4.86958e-09 3.83621e-15 -3.62422e-16 -7.30437e-09 5.74888e-15 2.49565e-16 -9.73917e-09 7.66154e-15 8.61551e-16 -1.2174e-08 1.2208e-16 1.10823e-15 -1.46088e-08 3.39579e-16 3.89347e-16 -1.70436e-08 5.57079e-16 -3.29532e-16 -1.94784e-08 7.74578e-16 -1.04841e-15 -2.19132e-08 -1.8145e-15 -2.39298e-15 -2.4348e-08 -1.15405e-15 -2.59126e-15 -2.67827e-08 -4.93584e-16 -2.78954e-15 -2.92176e-08 1.6688e-16 -2.98782e-15 -3.16524e-08 8.27343e-16 -3.1861e-15 -3.40872e-08 7.10297e-16 -1.58357e-15 -3.6522e-08 1.12448e-15 -2.19564e-15 -3.89568e-08 1.53862e-15 -2.80763e-15 -4.13914e-08 -1.41578e-15 3.46578e-16 -4.38262e-08 2.19245e-16 1.8903e-15 -4.6261e-08 4.51664e-15 -2.45893e-15 -4.86958e-08 1.73973e-15 2.90882e-16 -5.11307e-08 4.02666e-15 -1.31584e-15 -1.12252e-14 2.03382e-15 2.12572e-16 -1.04615e-14 4.68701e-16 1.93884e-15 -4.51194e-15 7.01777e-16 1.49787e-15 -5.57546e-15 -3.41249e-15 -2.59527e-15 -1.23535e-15 -2.39074e-15 -2.39682e-15 -3.03875e-15 -5.4072e-16 2.8544e-15 -5.35655e-08 -3.3818e-16 1.65682e-15 -5.35655e-08 -1.35643e-16 9.60398e-15 -5.35655e-08 6.68948e-17 1.26147e-14 -5.35655e-08 -2.8702e-16 1.04664e-14 -5.35655e-08 -6.62102e-16 3.46351e-15 -5.35655e-08 -2.10024e-15 -6.17771e-15 -5.41913e-15 -2.29869e-15 -5.91732e-15 -5.99615e-15 3.32392e-15 -7.99652e-15 -2.63322e-15 4.05316e-15 -6.5238e-15 -3.16025e-15 4.7824e-15 -1.38552e-15 -3.68729e-15 5.51165e-15 2.43775e-15 -4.21434e-15 -1.86941e-15 1.34982e-15 -2.43479e-09 -1.83761e-15 2.83043e-15 -4.86959e-09 -1.80581e-15 4.31104e-15 -7.30438e-09 -6.66257e-16 3.98319e-15 -9.73917e-09 -6.60863e-16 1.92145e-15 -1.2174e-08 -6.5547e-16 -1.40313e-16 -1.46088e-08 -6.50076e-16 -2.20205e-15 -1.70436e-08 -6.44682e-16 -4.26379e-15 -1.94784e-08 2.34154e-16 -7.81947e-16 -2.19132e-08 -2.96836e-17 -1.01228e-15 -2.43479e-08 -2.93521e-16 -1.24261e-15 -2.67827e-08 -5.57362e-16 -1.47295e-15 -2.92175e-08 -3.5608e-16 -3.39162e-15 -3.16523e-08 -1.0734e-15 -2.2641e-15 -3.40872e-08 -1.79072e-15 -1.13658e-15 -3.6522e-08 -2.50804e-15 -9.06501e-18 -3.89569e-08 -3.22528e-15 1.11833e-15 -4.13914e-08 -3.9426e-15 2.24585e-15 -4.38262e-08 -1.23565e-15 3.78148e-15 -4.62611e-08 -1.07152e-15 3.90161e-15 -4.86959e-08 -9.07387e-16 4.02174e-15 -5.11307e-08 -5.47138e-15 1.72495e-15 -5.35655e-08 -9.24989e-15 1.13418e-16 -5.35655e-08 -4.15337e-15 -2.52881e-15 -5.35655e-08 -3.12525e-15 -2.53556e-15 -5.35655e-08 4.07152e-16 3.73679e-15 -5.35655e-08 1.87723e-15 3.93933e-15 -5.35655e-08 4.6941e-15 -7.60594e-16 -6.4868e-15 4.66501e-15 -1.39041e-15 -6.45682e-15 2.52057e-15 3.07139e-15 -4.38623e-15 1.08874e-15 -2.92171e-16 -4.18691e-15 -1.85979e-16 -9.89193e-16 -9.48995e-15 -3.63371e-15 -1.78018e-15 -9.66407e-15 1.10982e-15 2.81856e-15 -5.14842e-08 6.15253e-16 4.81728e-15 -5.14031e-08 1.10938e-16 4.74625e-15 -5.13669e-08 2.03455e-15 -2.60689e-16 -4.7454e-08 1.93404e-15 -1.32559e-16 -4.50416e-08 -3.03316e-16 -5.8895e-16 -4.26175e-08 -9.56829e-16 -3.80777e-15 -4.01806e-08 -1.61213e-15 -4.14558e-15 -3.77431e-08 -2.26782e-15 -5.5894e-16 -3.53058e-08 -2.0934e-15 -1.42313e-15 -3.28699e-08 -7.9048e-16 -1.18214e-15 -3.0434e-08 5.07034e-16 -8.10283e-17 -2.80024e-08 1.81433e-15 2.52985e-15 -2.55656e-08 -2.84236e-15 2.53745e-15 -2.31304e-08 -2.05926e-15 -1.93305e-15 -2.06948e-08 -1.27876e-15 -2.79802e-15 -1.82576e-08 -4.96879e-16 1.31435e-15 -1.58157e-08 2.88172e-16 1.89992e-15 -1.33722e-08 1.07193e-15 -3.62044e-15 -1.0918e-08 -1.79759e-15 -2.89989e-15 -8.45092e-09 -1.61767e-15 -1.68943e-15 -6.00125e-09 2.74692e-15 -1.01509e-15 -2.07575e-09 3.08726e-15 7.07134e-18 -2.15662e-09 3.4571e-15 1.06461e-15 -2.18359e-09 1.38782e-15 -1.23992e-15 -6.10012e-09 5.49708e-16 -5.18437e-15 -8.50293e-09 -2.86559e-16 9.86541e-16 -1.09425e-08 -7.80157e-16 4.42299e-16 -1.33805e-08 4.19119e-16 -1.58892e-16 -1.58224e-08 1.62058e-15 -3.93736e-16 -1.82603e-08 2.81985e-15 -5.00584e-16 -2.06955e-08 2.84911e-15 -4.21985e-16 -2.3129e-08 1.84477e-15 3.09847e-15 -2.55654e-08 8.43274e-16 4.1563e-15 -2.80006e-08 -1.56078e-16 -5.02775e-15 -3.04343e-08 -1.15585e-15 -1.54846e-15 -3.28691e-08 -2.15742e-15 4.90674e-15 -3.53082e-08 -3.15694e-15 -8.66095e-17 -3.77484e-08 2.10494e-15 -1.65584e-15 -4.01907e-08 2.15627e-15 1.44648e-15 -4.26381e-08 2.21571e-15 1.45978e-15 -4.50992e-08 2.34998e-15 1.47577e-15 -4.75573e-08 2.26094e-15 -1.54702e-15 -4.0844e-09 2.28777e-15 4.64449e-15 -4.94795e-08 2.05601e-15 -3.51782e-16 -4.96424e-08 -1.55782e-15 -4.48307e-15 -3.91664e-09 1.19367e-15 -1.93204e-15 -4.92655e-08 7.64322e-16 1.91679e-15 -4.92128e-08 5.7107e-16 2.18012e-15 -4.63484e-08 6.86735e-16 4.59636e-15 -4.91236e-08 4.14327e-16 -3.02502e-15 -4.38819e-08 -2.4178e-16 -2.7091e-15 -4.14179e-08 -8.97834e-16 -7.59947e-15 -3.89702e-08 -1.55467e-15 -9.96192e-16 -3.65285e-08 -2.46123e-15 -2.93949e-15 -3.40888e-08 -1.1575e-15 -4.2194e-15 -3.16511e-08 1.49168e-16 -2.5464e-15 -2.92173e-08 1.44747e-15 3.48433e-15 -2.67836e-08 -2.55222e-15 4.74305e-15 -2.43476e-08 -1.77075e-15 2.30279e-15 -2.19112e-08 -9.89282e-16 -1.55136e-15 -1.94727e-08 -2.04404e-16 -1.20525e-15 -1.70304e-08 5.81752e-16 5.88221e-16 -1.45816e-08 -5.52775e-16 -1.77805e-15 -1.21166e-08 -9.21147e-17 -2.46417e-15 -9.61243e-09 -1.02236e-15 -4.62602e-15 -7.03699e-09 -8.09788e-16 -3.62266e-15 -4.16467e-09 1.66827e-16 -4.56032e-15 -4.28704e-09 2.08182e-15 -3.17912e-15 -4.32638e-09 2.44038e-15 -1.47305e-15 -4.39564e-09 9.60845e-16 -6.0761e-15 -7.11519e-09 5.0301e-17 -1.40652e-15 -9.69902e-09 -2.33269e-15 1.03683e-15 -1.21438e-08 -1.12455e-15 2.45239e-15 -1.45902e-08 8.36263e-17 -1.8533e-15 -1.70369e-08 1.27142e-15 -9.03065e-16 -1.94756e-08 2.46488e-15 7.66075e-16 -2.19127e-08 2.09036e-15 3.70347e-15 -2.43475e-08 1.08899e-15 1.97386e-15 -2.67815e-08 8.69696e-17 -2.94883e-15 -2.92176e-08 -9.11981e-16 -4.10698e-15 -3.16532e-08 -1.90848e-15 -7.32012e-16 -3.40894e-08 -2.95401e-15 1.25879e-15 -3.65311e-08 -3.90618e-15 -6.44696e-16 -3.89764e-08 1.40707e-15 -2.36388e-15 -4.14335e-08 1.47818e-15 3.0734e-15 -4.39275e-08 2.1688e-15 2.92078e-15 -4.65107e-08 1.69447e-15 -2.00303e-15 -4.93729e-08 1.13793e-15 -8.02934e-16 -4.51214e-08 4.61594e-16 -4.72419e-15 -4.26676e-08 -1.93053e-16 -2.98959e-15 -4.02111e-08 -8.51189e-16 -1.15498e-15 -3.77565e-08 -2.83998e-15 -3.11896e-15 -3.53117e-08 -1.53356e-15 -4.14135e-15 -3.28718e-08 -2.23076e-16 -4.19965e-15 -3.04343e-08 -8.76895e-16 7.67065e-16 -2.79981e-08 -8.15066e-16 4.86232e-15 -2.5565e-08 -1.50132e-15 3.87307e-15 -2.3129e-08 -7.17759e-16 1.08525e-15 -2.06909e-08 6.37612e-17 -8.63419e-16 -1.82474e-08 8.53843e-16 -1.17811e-15 -1.57958e-08 -3.01748e-16 -5.13753e-16 -1.33258e-08 1.57441e-16 -2.76083e-15 -1.08247e-08 -4.12217e-16 -5.14324e-15 -8.31994e-09 -2.988e-17 -3.65483e-15 -8.39741e-09 1.09458e-15 -1.82305e-15 -1.08644e-08 6.28992e-16 1.2228e-15 -1.33418e-08 -1.44145e-15 -7.93082e-16 -1.58013e-08 -2.52812e-16 -1.39351e-15 -1.82535e-08 9.53258e-16 -1.08586e-17 -2.06928e-08 7.16386e-16 2.25577e-15 -2.31299e-08 6.3837e-16 1.4544e-15 -2.5565e-08 5.62201e-16 3.55289e-15 -2.80003e-08 -6.59042e-16 -5.23661e-15 -3.04357e-08 -1.66078e-15 -4.29512e-15 -3.28721e-08 -2.15362e-15 -1.05274e-15 -3.53139e-08 -3.10689e-15 4.35953e-16 -3.77594e-08 -4.0584e-15 -2.19306e-15 -4.02132e-08 7.40461e-16 1.49162e-16 -4.27153e-08 8.26528e-16 -4.2465e-16 -4.52157e-08 1.74464e-16 1.77439e-15 -4.68401e-08 3.9304e-16 -7.22284e-15 -6.72424e-09 9.44956e-16 -1.03222e-16 -4.73996e-08 -3.20365e-16 -4.50475e-15 -6.12096e-09 -7.95977e-16 4.21689e-15 -4.72228e-08 1.18356e-15 -7.60369e-15 -6.22793e-09 -1.96236e-16 -4.48983e-16 -2.92189e-08 -4.36561e-17 2.66456e-15 -2.43477e-08 -2.31284e-15 -8.24005e-16 -3.65386e-08 -6.12004e-16 -4.91181e-15 -3.16545e-08 3.36119e-17 2.8162e-15 -2.19145e-08 -1.91691e-15 -3.7771e-15 -3.40923e-08 -1.20505e-16 3.52506e-15 -2.67824e-08 -1.73698e-15 -6.14009e-16 -1.70189e-08 -5.26396e-16 1.1895e-15 -1.94697e-08 8.84229e-16 -2.4227e-15 -9.47574e-09 -3.27128e-15 -1.70455e-15 -3.89968e-08 -6.44976e-17 -1.16415e-15 -1.45558e-08 1.22077e-15 -2.32005e-15 -4.40675e-08 3.98545e-16 -1.61736e-15 -1.20718e-08 5.15831e-16 -1.36339e-15 -4.14876e-08 -1.1864e-15 -1.2808e-15 -1.90777e-09 1.60704e-15 -3.07285e-16 -5.16564e-08 1.86037e-15 8.33048e-16 -5.16559e-08 3.99939e-15 3.46244e-15 -1.90795e-09 9.65503e-16 1.54669e-15 -5.14856e-08 3.54909e-16 1.90957e-15 -5.14041e-08 -2.04001e-16 2.32438e-15 -5.13669e-08 7.84921e-16 -4.37908e-15 -4.7454e-08 -6.62355e-16 -2.85044e-15 -4.50416e-08 3.09751e-15 -1.75896e-15 -4.26175e-08 -1.44418e-16 -6.70422e-16 -4.01806e-08 -2.48925e-15 -5.65205e-15 -3.77428e-08 -3.29928e-15 -4.19234e-15 -3.53058e-08 -2.55678e-15 -2.73352e-15 -3.28699e-08 -1.41305e-15 -1.27369e-15 -3.04332e-08 1.87173e-15 1.83998e-16 -2.79998e-08 4.427e-15 1.64051e-15 -2.55672e-08 -6.44143e-16 3.09991e-15 -2.31292e-08 4.65111e-17 -3.35985e-15 -2.06937e-08 1.10958e-15 -1.94589e-15 -1.82562e-08 -3.66302e-15 -5.29786e-16 -1.58142e-08 3.63872e-15 8.90993e-16 -1.33709e-08 1.90649e-15 -2.13141e-16 -1.09173e-08 5.94093e-16 -5.18305e-16 -8.45103e-09 -3.8148e-16 -8.14864e-16 -6.00124e-09 1.02265e-15 8.66787e-16 -2.07574e-09 1.99866e-15 2.73852e-16 -2.15661e-09 3.77258e-16 -2.83375e-16 -2.18359e-09 -8.34898e-16 -8.35153e-16 -6.10011e-09 1.39e-15 -2.37305e-16 -8.49551e-09 1.41622e-15 3.72944e-16 -1.09356e-08 1.04018e-15 1.4309e-15 -1.338e-08 -4.35766e-16 7.10424e-16 -1.58205e-08 1.76862e-15 -7.61816e-18 -1.82538e-08 1.36728e-17 -7.28227e-16 -2.06926e-08 4.01265e-15 -1.44772e-15 -2.31293e-08 -1.1057e-16 -2.12356e-15 -2.55668e-08 -5.46383e-15 -2.32068e-15 -2.80003e-08 -5.21637e-15 -2.51991e-15 -3.04349e-08 -2.4537e-15 -2.71962e-15 -3.28678e-08 3.98332e-15 -1.26796e-15 -3.5309e-08 2.02062e-15 -1.88011e-15 -3.77452e-08 7.19932e-16 -2.49438e-15 -4.01889e-08 3.39053e-15 -3.10992e-15 -4.26373e-08 3.41867e-16 1.21737e-15 -4.50992e-08 1.31453e-16 2.77478e-15 -4.75573e-08 1.48373e-15 -1.3155e-15 -4.08439e-09 2.6249e-15 -1.2467e-15 -3.91664e-09 1.35968e-15 -3.72084e-15 -4.94795e-08 -2.51189e-15 -1.10937e-15 -4.96424e-08 2.56314e-15 -7.02268e-16 -4.92698e-08 9.77053e-16 -2.86147e-15 -4.92128e-08 2.31129e-15 -2.73346e-15 -4.63484e-08 -6.00422e-17 -3.43184e-15 -4.91236e-08 2.45285e-15 -1.61816e-15 -4.38819e-08 2.27479e-15 -5.08849e-16 -4.14179e-08 5.22989e-16 5.85213e-16 -3.897e-08 -2.79561e-15 1.67216e-15 -3.65282e-08 -1.68523e-15 -3.21003e-15 -3.40885e-08 -3.57099e-15 -1.75091e-15 -3.16508e-08 -7.92079e-16 -2.89836e-16 -2.92173e-08 3.73198e-15 1.16909e-15 -2.6783e-08 4.92051e-15 2.622e-15 -2.43472e-08 1.30454e-15 6.95665e-16 -2.19083e-08 -2.0466e-15 -1.71269e-15 -1.94681e-08 -3.20646e-15 -2.92643e-16 -1.70268e-08 1.37188e-15 1.12919e-15 -1.45784e-08 5.46734e-15 2.55717e-15 -1.21129e-08 5.8529e-16 9.71706e-16 -9.61217e-09 -1.08547e-15 6.07464e-16 -7.03698e-09 3.47596e-15 2.6385e-16 -4.16466e-09 2.0907e-15 2.18308e-15 -4.28703e-09 1.41642e-15 -1.41895e-15 -4.32637e-09 7.90132e-16 -1.42887e-15 -4.39564e-09 -6.03986e-16 -7.48507e-16 -7.11157e-09 -6.89279e-16 3.81505e-15 -9.66072e-09 2.74327e-15 3.84048e-15 -1.21353e-08 8.69786e-16 1.03184e-15 -1.45974e-08 1.90268e-15 3.12719e-16 -1.70303e-08 2.14875e-15 -4.07321e-16 -1.947e-08 5.90516e-15 -1.12707e-15 -2.19081e-08 3.67159e-15 -1.66118e-15 -2.43474e-08 -2.34297e-15 -1.85304e-15 -2.67833e-08 -9.41487e-15 -2.05292e-15 -2.92173e-08 -6.61337e-15 -2.24939e-15 -3.16516e-08 7.87362e-16 -9.49713e-16 -3.40867e-08 2.4918e-15 -1.56405e-15 -3.65311e-08 3.25776e-15 -2.17781e-15 -3.89732e-08 3.12091e-15 -2.79549e-15 -4.14302e-08 3.75834e-15 -3.42352e-15 -4.39272e-08 2.33403e-15 -4.28367e-15 -4.65106e-08 1.45819e-16 -1.05011e-15 -4.93729e-08 1.20661e-15 -1.44266e-15 -4.51214e-08 3.08529e-15 -3.80697e-16 -4.26676e-08 -7.8193e-16 7.24214e-16 -4.02111e-08 1.207e-15 1.82088e-15 -3.77564e-08 -9.17822e-16 -3.69672e-15 -3.53112e-08 -1.84237e-15 -2.23476e-15 -3.2871e-08 -3.51002e-15 -7.69783e-16 -3.04338e-08 -1.64412e-16 6.88158e-16 -2.79982e-08 5.68728e-15 6.02994e-17 -2.55631e-08 5.79057e-15 3.12498e-16 -2.31219e-08 3.53191e-16 5.60069e-16 -2.06812e-08 -2.09613e-15 8.07009e-16 -1.82371e-08 -2.03235e-15 1.0546e-15 -1.57883e-08 4.37686e-15 2.76814e-15 -1.33172e-08 2.96049e-15 2.29175e-15 -1.08232e-08 -2.51532e-15 2.12316e-15 -8.3192e-09 -9.51135e-17 -4.27719e-15 -8.39414e-09 1.62876e-15 3.30787e-15 -1.08601e-08 1.46645e-15 3.34356e-15 -1.33587e-08 2.3132e-15 6.39662e-16 -1.57902e-08 -8.32515e-16 -8.21398e-17 -1.82377e-08 3.35637e-15 -8.03823e-16 -2.06816e-08 6.84771e-15 -1.20572e-15 -2.31227e-08 4.34148e-15 -1.39767e-15 -2.55632e-08 -7.93748e-15 -1.59626e-15 -2.79984e-08 -5.83029e-15 -1.79462e-15 -3.04348e-08 -7.76053e-15 -6.33183e-16 -3.28707e-08 1.71319e-16 -1.24758e-15 -3.53136e-08 3.33299e-15 -1.8602e-15 -3.77522e-08 5.51213e-15 -2.47878e-15 -4.0213e-08 4.42666e-15 -3.10795e-15 -4.27147e-08 3.98664e-15 -5.41173e-15 -4.52141e-08 2.88769e-15 -3.26637e-15 -4.68326e-08 4.06174e-16 -2.77325e-15 -6.72423e-09 7.28092e-17 -2.42783e-15 -4.72228e-08 4.2825e-15 -2.97259e-15 -4.74036e-08 1.1225e-15 -2.87851e-15 -6.22793e-09 1.73768e-15 1.72333e-15 -6.12096e-09 -2.15169e-16 -1.5449e-15 -3.65381e-08 -6.20687e-15 -7.79804e-16 -2.92149e-08 -6.73431e-15 -3.17085e-16 -3.16535e-08 7.12795e-15 1.82961e-16 -2.18919e-08 6.28566e-15 -6.48053e-17 -2.43388e-08 -2.5013e-15 -9.29755e-16 -3.40907e-08 5.17915e-16 -1.15693e-15 -2.67765e-08 -1.36817e-15 2.77934e-15 -9.47573e-09 -2.10855e-15 6.77298e-16 -1.70027e-08 -8.22753e-18 4.2999e-16 -1.94546e-08 4.84815e-15 -2.16285e-15 -3.89965e-08 2.21666e-15 9.27513e-16 -1.45423e-08 2.6568e-15 -2.90746e-16 -4.40675e-08 3.1603e-15 2.81449e-15 -1.20538e-08 3.24193e-15 -2.78896e-15 -4.14873e-08 6.13062e-17 1.26909e-15 -5.16564e-08 -2.47415e-15 -2.83175e-15 -5.16559e-08 -3.14678e-15 -1.92217e-15 -1.90795e-09 2.70909e-15 -1.05661e-15 -1.90776e-09 -4.21825e-16 5.14007e-15 -5.14842e-08 -1.81721e-16 9.48085e-15 -5.14031e-08 6.2533e-17 7.49501e-15 -5.13669e-08 1.08146e-15 -6.01785e-16 -4.74539e-08 -5.36775e-16 2.95685e-15 -4.50416e-08 1.75802e-15 3.93781e-16 -4.26175e-08 1.34354e-15 -4.03111e-15 -4.01806e-08 9.2888e-16 -2.17581e-15 -3.77428e-08 5.1434e-16 -2.86553e-15 -3.53058e-08 8.64787e-16 -1.08169e-15 -3.28699e-08 2.04567e-16 -1.43358e-15 -3.04332e-08 -4.55095e-16 2.27358e-15 -2.79998e-08 -1.11541e-15 2.78578e-15 -2.55672e-08 8.42997e-16 1.00199e-15 -2.31292e-08 6.25287e-16 -7.70152e-17 -2.06937e-08 4.07634e-16 -2.67117e-15 -1.82562e-08 1.89598e-16 9.78676e-16 -1.58142e-08 -2.87225e-17 1.75317e-15 -1.33709e-08 6.49729e-15 -9.50234e-16 -1.09173e-08 4.56233e-15 -2.06002e-15 -8.45103e-09 2.63947e-15 -8.57876e-16 -6.00123e-09 1.72999e-15 -5.47156e-15 -2.07575e-09 2.57936e-15 -4.90112e-15 -2.15662e-09 3.45711e-15 -6.14879e-15 -2.18359e-09 -1.28187e-15 1.64434e-15 -6.10012e-09 -1.23714e-15 3.94936e-15 -8.49552e-09 -8.00506e-16 -1.69115e-17 -1.09356e-08 -7.95302e-16 -7.79018e-16 -1.338e-08 -7.8961e-16 -6.20298e-17 -1.58205e-08 -7.82822e-16 -1.37302e-15 -1.82538e-08 7.6176e-16 -6.95603e-15 -2.06926e-08 4.97985e-16 1.93335e-15 -2.31293e-08 2.35051e-16 4.33631e-15 -2.55668e-08 -2.7518e-17 3.70706e-15 -2.80003e-08 3.00428e-16 6.34797e-16 -3.04348e-08 -4.17617e-16 -1.61082e-15 -3.28678e-08 -1.1431e-15 -6.47541e-15 -3.5309e-08 -1.85382e-15 -7.67152e-15 -3.77452e-08 -2.57336e-15 -5.12509e-15 -4.01891e-08 -3.29601e-15 1.88531e-15 -4.26376e-08 -4.21779e-16 -1.29186e-15 -4.50992e-08 -9.72207e-16 2.15185e-15 -4.75573e-08 -1.39168e-15 -3.17978e-15 -4.0844e-09 1.02654e-15 -1.08594e-15 -3.91663e-09 -8.56188e-16 2.72051e-15 -4.96424e-08 3.89473e-15 1.80537e-15 -4.94795e-08 -4.34591e-16 2.66443e-15 -4.92655e-08 2.41743e-15 4.89733e-15 -4.92128e-08 2.26485e-15 3.43075e-15 -4.91236e-08 4.03167e-16 3.13658e-15 -4.63483e-08 -1.25144e-15 4.43325e-15 -4.38819e-08 -2.90487e-15 -4.19593e-16 -4.14179e-08 1.1485e-15 -7.37923e-15 -3.89702e-08 7.33103e-16 -5.79299e-15 -3.65282e-08 3.18128e-16 -6.84245e-15 -3.40886e-08 -9.65938e-17 -2.34391e-15 -3.16508e-08 2.43275e-16 4.27912e-15 -2.92173e-08 -4.15513e-16 3.60304e-15 -2.6783e-08 -1.08467e-15 6.21425e-15 -2.43472e-08 6.9398e-16 1.30412e-15 -2.19083e-08 4.76017e-16 -2.5845e-15 -1.94681e-08 2.57858e-16 -1.89864e-15 -1.70268e-08 3.91671e-17 2.21683e-15 -1.45784e-08 -1.80892e-16 3.94865e-15 -1.21129e-08 1.38159e-15 4.3589e-15 -9.61216e-09 3.28404e-15 -9.50007e-16 -7.03697e-09 1.029e-15 -1.26573e-15 -4.16466e-09 8.77786e-16 -5.35988e-15 -4.28703e-09 1.85947e-15 -5.70024e-15 -4.32638e-09 2.74248e-15 -2.95936e-15 -4.39564e-09 1.33389e-15 2.5417e-15 -7.11157e-09 -9.38879e-16 5.66334e-15 -9.66072e-09 -9.34175e-16 1.18232e-15 -1.21353e-08 -9.27938e-16 2.0246e-15 -1.45974e-08 1.55549e-15 -1.70578e-16 -1.70303e-08 1.28822e-15 -4.96697e-15 -1.947e-08 1.02306e-15 -6.93174e-16 -2.19081e-08 7.57964e-16 6.59197e-15 -2.43474e-08 -8.08185e-16 7.77654e-15 -2.67833e-08 2.62053e-16 3.84538e-15 -2.92173e-08 2.40453e-16 6.58333e-16 -3.16516e-08 -4.84924e-16 -7.83116e-15 -3.40867e-08 -1.20104e-15 -1.17155e-14 -3.65311e-08 -1.91709e-15 -9.93448e-15 -3.89732e-08 -1.47993e-15 -1.77979e-15 -4.14305e-08 -9.77812e-16 1.08267e-15 -4.39275e-08 -4.48777e-16 -5.8505e-16 -4.65107e-08 -6.78037e-16 2.88205e-15 -4.93729e-08 -3.54082e-16 4.89137e-15 -4.51214e-08 -2.00451e-15 -3.35666e-16 -4.26676e-08 -3.653e-15 -4.27391e-15 -4.02111e-08 9.52553e-16 -1.08947e-14 -3.77564e-08 5.36634e-16 -1.09605e-14 -3.53112e-08 1.21561e-16 -6.38141e-15 -3.2871e-08 9.31618e-16 2.4011e-15 -3.04338e-08 2.69894e-16 5.23456e-15 -2.79982e-08 -3.90563e-16 6.13851e-15 -2.55631e-08 1.3726e-15 -8.068e-16 -2.31219e-08 5.45598e-16 -1.36753e-15 -2.06812e-08 3.27198e-16 -3.83215e-15 -1.82371e-08 1.08402e-16 -1.70217e-15 -1.57883e-08 -1.12052e-16 3.36496e-15 -1.33172e-08 -8.02097e-15 8.59578e-15 -1.08232e-08 -8.71561e-15 -2.46309e-16 -8.3192e-09 -1.16315e-17 2.97706e-15 -8.39415e-09 -1.07004e-15 5.69859e-15 -1.08601e-08 -1.06272e-15 5.29521e-15 -1.33587e-08 -1.06198e-15 1.60652e-15 -1.57902e-08 1.80185e-15 -2.80913e-15 -1.82377e-08 2.3973e-15 -2.58641e-15 -2.06816e-08 1.27354e-15 4.05638e-15 -2.31227e-08 1.0164e-15 7.64383e-15 -2.55632e-08 -1.72512e-15 7.31499e-15 -2.79984e-08 8.86159e-16 1.05207e-15 -3.04348e-08 1.68481e-16 -3.305e-15 -3.28707e-08 -5.59791e-16 -1.05748e-14 -3.53139e-08 -1.26753e-15 -1.34206e-14 -3.77522e-08 -1.99242e-15 -1.10271e-14 -4.02132e-08 -1.54152e-15 1.041e-15 -4.27153e-08 -1.03322e-15 5.53894e-16 -4.52157e-08 -1.02576e-15 3.48498e-15 -4.68401e-08 2.09822e-16 1.0555e-15 -6.72423e-09 -5.69555e-16 3.28347e-15 -4.73996e-08 1.05251e-15 5.69287e-15 -4.72228e-08 1.18889e-15 1.90266e-15 -6.22793e-09 2.40577e-15 -4.80377e-16 -6.12095e-09 -6.35296e-16 -1.29011e-14 -3.65381e-08 9.39836e-16 4.63632e-15 -2.92149e-08 8.01438e-16 -1.839e-15 -3.16535e-08 1.88413e-15 -1.63844e-15 -2.18919e-08 2.10598e-15 3.855e-15 -2.43388e-08 8.33889e-17 -8.88741e-15 -3.40907e-08 -3.64207e-15 6.77346e-15 -2.67765e-08 -1.35524e-15 4.02098e-15 -9.47574e-09 1.78925e-16 -3.03641e-15 -1.70027e-08 1.66258e-15 -2.57712e-15 -1.94546e-08 -1.35862e-15 -1.17895e-14 -3.89968e-08 -1.19209e-15 3.70772e-15 -1.45423e-08 -1.58065e-15 1.53505e-15 -4.40675e-08 -1.19765e-15 7.33374e-15 -1.20538e-08 -2.73493e-15 -4.53912e-15 -4.14876e-08 -6.64351e-16 5.53178e-15 -5.16564e-08 1.5253e-15 6.52775e-15 -5.16559e-08 4.50999e-15 -2.09413e-15 -1.90794e-09 -6.06497e-16 -4.58097e-15 -1.90776e-09 -6.53731e-16 1.34658e-16 -5.14842e-08 5.06702e-16 2.30129e-16 -5.14031e-08 4.68514e-16 2.68087e-16 -5.13669e-08 2.44523e-15 3.66836e-15 -4.7454e-08 6.11074e-15 1.29331e-15 -4.50416e-08 1.94612e-16 1.39205e-15 -4.26175e-08 -2.67331e-15 2.61638e-16 -4.01806e-08 -9.75213e-15 -8.67886e-16 -3.77428e-08 -1.08421e-14 -1.99668e-15 -3.53058e-08 -6.65243e-15 -3.12467e-15 -3.28699e-08 2.89446e-16 -4.25364e-15 -3.04332e-08 4.35826e-15 -1.75461e-15 -2.8e-08 3.4496e-15 -1.52399e-15 -2.55677e-08 2.94301e-15 -1.29236e-15 -2.31301e-08 1.24657e-15 -1.06342e-15 -2.06948e-08 1.8536e-16 -3.09259e-15 -1.82576e-08 -9.05096e-16 -1.02513e-15 -1.58157e-08 -1.20019e-15 1.04413e-15 -1.33722e-08 -1.64427e-15 3.12158e-15 -1.09179e-08 -4.97478e-16 4.45435e-15 -8.45089e-09 4.7154e-16 2.96939e-15 -6.00124e-09 3.20906e-15 -3.0556e-16 -2.07574e-09 3.46204e-15 2.34533e-15 -2.15662e-09 3.00371e-15 -1.75525e-15 -2.18359e-09 2.52129e-15 -2.05018e-15 -6.10013e-09 1.35924e-15 -2.09184e-15 -8.50295e-09 2.70923e-15 -8.25286e-16 -1.09425e-08 6.2325e-16 -1.55724e-15 -1.33805e-08 -6.46263e-15 -2.28623e-15 -1.58225e-08 -4.34788e-15 -3.01695e-15 -1.82604e-08 -8.38009e-16 -3.74988e-15 -2.06931e-08 1.11623e-15 -4.4918e-15 -2.31309e-08 3.66746e-15 -5.20718e-15 -2.55662e-08 3.54185e-15 -2.42769e-15 -2.80006e-08 -9.77795e-16 -4.633e-16 -3.04346e-08 -2.31118e-15 1.50057e-15 -3.28683e-08 -5.32878e-15 -2.09472e-15 -3.5308e-08 -1.09885e-15 -1.37844e-15 -3.77484e-08 -2.95875e-15 -6.50977e-16 -4.01907e-08 -1.1491e-15 7.18398e-17 -4.26382e-08 -2.81657e-16 2.99111e-15 -4.50992e-08 2.06296e-15 2.70159e-15 -4.75573e-08 -2.7321e-16 1.77997e-15 -3.91663e-09 4.30037e-15 2.63098e-15 -4.96424e-08 1.21029e-15 3.79348e-15 -4.94795e-08 -8.366e-17 -2.10322e-15 -4.0844e-09 3.99101e-15 2.9642e-15 -4.92655e-08 4.22841e-15 3.02453e-15 -4.92128e-08 6.78308e-15 2.71777e-15 -4.63484e-08 2.25388e-15 5.05722e-15 -4.91236e-08 5.71914e-15 6.38228e-16 -4.38819e-08 -9.31739e-16 5.42164e-16 -4.14179e-08 -1.38141e-14 -5.9347e-16 -3.89703e-08 -1.77192e-14 -1.72468e-15 -3.65282e-08 -1.56203e-14 -2.85523e-15 -3.40885e-08 -5.12684e-15 -3.9831e-15 -3.16508e-08 2.78703e-15 -2.42843e-15 -2.92173e-08 7.14077e-15 -4.25751e-15 -2.67833e-08 6.33537e-15 -1.79771e-15 -2.43492e-08 1.56768e-15 -1.56987e-15 -2.19114e-08 -2.22693e-15 -3.98538e-15 -1.94727e-08 -7.84311e-17 -1.917e-15 -1.70304e-08 -2.23677e-15 1.56613e-16 -1.45816e-08 -3.22944e-15 2.24307e-15 -1.21166e-08 -4.1244e-17 4.36074e-15 -9.61241e-09 3.13652e-15 3.06266e-15 -7.03698e-09 2.82201e-15 1.32021e-15 -4.16466e-09 3.43304e-15 6.09611e-16 -4.28703e-09 6.81658e-15 -3.49238e-16 -4.32638e-09 5.27428e-15 -1.34752e-15 -4.39564e-09 2.83638e-15 -1.40773e-15 -7.1152e-09 3.18635e-15 -1.38128e-15 -9.69904e-09 -5.1575e-15 -8.14363e-16 -1.21438e-08 -4.1904e-15 -1.23765e-15 -1.45903e-08 -7.11867e-15 -1.97275e-15 -1.7037e-08 -4.52759e-15 -2.69317e-15 -1.94758e-08 7.81862e-16 -3.43514e-15 -2.19092e-08 4.5733e-15 -4.15875e-15 -2.43478e-08 6.73474e-15 -3.12516e-15 -2.67822e-08 1.80956e-15 -1.15944e-15 -2.9216e-08 -2.99386e-15 8.06722e-16 -3.16516e-08 -8.24494e-15 2.76718e-15 -3.4088e-08 -1.10031e-14 -1.34693e-15 -3.65309e-08 -5.19782e-15 -6.21365e-16 -3.89764e-08 -3.39403e-15 1.04378e-16 -4.14332e-08 -1.2884e-15 1.71272e-15 -4.39275e-08 1.67421e-15 1.47251e-15 -4.65107e-08 4.53642e-15 1.10333e-15 -4.93729e-08 5.52634e-15 8.24846e-15 -4.51214e-08 3.77765e-15 8.39874e-16 -4.26676e-08 -7.87098e-15 -3.02751e-16 -4.02111e-08 -1.99137e-14 -1.44145e-15 -3.77565e-08 -2.08434e-14 -2.57487e-15 -3.53112e-08 -1.28646e-14 -3.70548e-15 -3.2871e-08 -2.05301e-15 -3.33862e-16 -3.04335e-08 6.44839e-15 -2.17239e-15 -2.79984e-08 1.01845e-14 -4.00716e-15 -2.55636e-08 8.1166e-15 -2.06638e-15 -2.31281e-08 7.29274e-16 -1.83617e-15 -2.06909e-08 -3.31665e-15 -2.81558e-15 -1.82474e-08 -4.86907e-15 -7.38944e-16 -1.57958e-08 -6.30008e-15 -6.89593e-16 -1.33258e-08 -2.01694e-16 3.46685e-15 -1.08247e-08 2.23577e-15 3.27953e-15 -8.31993e-09 1.18556e-15 -6.98704e-16 -8.39742e-09 -4.67516e-15 -1.16133e-15 -1.08644e-08 -8.51477e-15 -5.87122e-16 -1.33418e-08 -8.94676e-15 -9.37928e-16 -1.58013e-08 -5.24798e-15 -1.65863e-15 -1.82535e-08 1.325e-16 -2.38985e-15 -2.06926e-08 6.94703e-15 -3.13191e-15 -2.31287e-08 8.72148e-15 -3.82963e-15 -2.55639e-08 6.07013e-15 -1.864e-15 -2.79995e-08 -2.43074e-15 1.0148e-16 -3.04346e-08 -9.17542e-15 2.06807e-15 -3.28707e-08 -1.84162e-14 -1.33231e-15 -3.53131e-08 -1.76671e-14 -6.07719e-16 -3.77591e-08 -6.55674e-15 1.25035e-16 -4.02132e-08 3.4429e-16 8.55109e-16 -4.27153e-08 2.16646e-16 8.13968e-15 -4.52157e-08 6.68577e-15 6.05899e-15 -4.68401e-08 2.95595e-15 1.76438e-15 -6.72424e-09 4.56754e-15 5.56378e-15 -4.72228e-08 5.65056e-15 -7.34081e-16 -6.22793e-09 4.73372e-15 5.35067e-15 -4.73996e-08 3.78008e-15 2.00199e-15 -6.12095e-09 1.83911e-15 -1.38904e-16 -2.92146e-08 1.13706e-14 -3.80838e-15 -2.43458e-08 -2.35217e-14 -6.02905e-16 -3.65381e-08 -7.81036e-15 1.34946e-15 -3.16529e-08 5.36688e-15 -2.11882e-15 -2.1909e-08 -1.74798e-14 -3.4204e-15 -3.40907e-08 9.41056e-15 -1.97289e-15 -2.67811e-08 -5.64173e-15 2.15601e-16 -1.70189e-08 -1.14246e-15 -1.39001e-15 -1.94696e-08 -1.69132e-15 -1.53303e-15 -9.47574e-09 -1.56087e-14 1.25141e-16 -3.89968e-08 -9.53118e-15 -3.54959e-16 -1.45558e-08 4.80225e-15 9.60043e-15 -4.40675e-08 -5.51612e-15 -9.31099e-16 -1.20718e-08 -2.14034e-15 5.88749e-16 -4.14876e-08 1.46583e-15 3.83999e-15 -5.16559e-08 1.9385e-15 -1.80966e-15 -1.90795e-09 -1.05563e-15 1.92808e-15 -5.16564e-08 4.27125e-15 3.83945e-16 -1.90776e-09 1.15601e-15 8.1542e-15 -5.35655e-08 1.63348e-15 1.13984e-14 -5.35655e-08 6.869e-16 6.96258e-15 -5.35655e-08 -1.63774e-15 2.76621e-15 -5.35655e-08 -4.55442e-15 3.34266e-16 -5.35655e-08 -3.92894e-15 -4.10979e-15 -5.35655e-08 -2.29077e-15 1.44016e-15 -5.35655e-08 2.42075e-15 5.96344e-15 -5.35655e-08 -2.47176e-15 5.62484e-15 -5.35655e-08 -2.16345e-15 1.30062e-15 -5.35655e-08 -2.77595e-15 1.71928e-15 -5.35655e-08 -6.63635e-16 6.69601e-16 -5.35655e-08 -1.51999e-15 -5.05345e-16 -5.35655e-08 1.24989e-15 3.08412e-15 -5.35655e-08 -3.0561e-15 2.59442e-15 -5.35655e-08 -4.67349e-16 -5.82252e-16 -5.35655e-08 1.56835e-15 3.50748e-15 -5.35655e-08 -2.77251e-17 7.28138e-15 -5.35655e-08 -3.97892e-16 6.5667e-15 -5.35655e-08 -2.07292e-15 8.49578e-16 -5.35655e-08 -1.11613e-15 3.90756e-15 -5.35655e-08 -4.36905e-15 -2.84699e-15 -5.35655e-08 -2.22644e-15 -8.07203e-17 -5.35655e-08 3.49129e-15 4.22379e-15 -5.35655e-08 8.03076e-16 2.36548e-15 -5.35655e-08 -3.65549e-15 9.88501e-16 -5.35655e-08 -3.96243e-15 1.09649e-15 -5.35655e-08 -9.27204e-16 8.0062e-16 -5.35655e-08 -9.09582e-16 1.07062e-15 -5.35655e-08 -1.35102e-17 1.14593e-15 -5.35655e-08 -1.95583e-15 4.4697e-15 -5.35655e-08 -6.44158e-15 -5.98785e-16 -5.35655e-08 -2.1147e-16 4.79996e-15 -5.35655e-08 1.87874e-15 2.79962e-15 -5.35655e-08 1.40207e-15 5.93801e-16 -5.35655e-08 8.97359e-16 -6.25796e-17 -5.35655e-08 8.78568e-16 1.57333e-15 -5.35655e-08 6.95797e-16 4.61187e-15 -5.35655e-08 -5.82399e-17 3.05362e-15 -5.35655e-08 1.66476e-16 -6.99729e-17 -5.35655e-08 3.79035e-15 -1.2361e-15 -4.65293e-15 2.10468e-15 -7.37907e-15 -4.01248e-15 -3.02952e-15 -3.62566e-15 -3.46304e-15 -4.00086e-15 2.48824e-15 -4.92636e-15 -6.63062e-17 1.8143e-15 -3.74172e-15 -3.58684e-16 -6.85022e-16 -2.60436e-15 1.29052e-15 3.52813e-15 -7.83164e-15 4.04339e-15 -1.08486e-15 -5.14816e-15 1.06479e-15 -1.90638e-15 -2.47881e-15 2.2921e-15 -4.36399e-16 -3.22054e-15 3.60144e-15 1.48817e-16 -3.39713e-15 5.2865e-15 2.66322e-15 -5.22831e-15 -1.1749e-15 5.28614e-15 -1.05717e-14 -2.51628e-15 2.75504e-16 -3.42395e-15 -5.08457e-16 -3.50293e-15 -9.76083e-15 3.06723e-15 6.76938e-16 -5.13748e-15 4.91175e-15 1.86944e-15 -4.03355e-15 7.78503e-15 -3.87279e-16 -5.34485e-15 7.30919e-16 -1.88703e-15 -4.77262e-15 -8.94969e-17 1.26924e-15 -3.03409e-15 -3.4773e-15 -8.03614e-16 -4.10107e-15 3.27233e-15 3.00463e-15 -1.78649e-15 3.19899e-15 3.8058e-15 -5.79703e-16 4.61952e-15 7.84787e-16 -4.97444e-15 2.57417e-15 -2.22192e-15 -2.81022e-15 3.41479e-15 -6.90003e-16 -2.55979e-16 4.51607e-15 -1.69847e-16 1.21752e-15 7.06121e-15 1.2315e-15 -4.0282e-15 1.12562e-15 -2.13067e-15 -9.5932e-15 5.77366e-15 2.24635e-15 -5.49669e-15 1.4723e-17 3.57695e-15 -1.09181e-14 -2.03648e-15 -9.71175e-16 -4.42751e-15 7.36953e-15 5.79482e-16 -7.48677e-15 6.22531e-15 1.64185e-15 -6.2571e-15 3.75422e-15 8.56256e-16 -6.53347e-15 5.24621e-15 2.53144e-16 -7.7774e-15 3.52244e-16 7.48502e-16 -5.42327e-15 8.26999e-15 1.71734e-15 -6.47871e-15 4.62259e-15 3.58313e-15 -4.92455e-15 4.91967e-15 -1.04961e-15 -9.55697e-16 1.658e-16 3.02187e-15 -5.19248e-08 1.9087e-15 1.18169e-15 -5.05045e-08 1.80632e-16 -5.09294e-16 -5.12957e-08 2.01149e-15 2.09314e-15 -4.77518e-08 2.5296e-15 3.20166e-15 -5.17103e-08 1.31552e-15 2.31299e-15 -5.03537e-08 8.53766e-16 -8.25177e-16 -5.11323e-08 -1.9831e-16 -2.97353e-17 -5.07919e-08 -1.08848e-15 1.21558e-15 -5.17553e-08 2.45635e-15 -9.834e-16 -5.13267e-08 2.48199e-15 -1.22841e-15 -5.109e-08 1.12051e-15 2.59332e-16 -5.09346e-08 -2.70512e-16 -6.2813e-16 -4.84334e-08 1.3304e-15 -7.42177e-16 -4.52294e-08 2.41987e-15 -1.52758e-15 -4.39708e-08 1.67966e-15 -1.37733e-15 -4.85644e-08 8.77682e-16 -1.65302e-15 -5.0767e-08 1.94587e-15 -1.93894e-15 -5.0839e-08 1.07831e-16 -8.26385e-16 -5.13862e-08 2.18715e-15 9.88586e-16 -4.80815e-08 2.29013e-15 1.91151e-15 -4.87974e-08 -1.18864e-15 -1.36692e-15 -4.40817e-08 5.99039e-16 -5.86126e-15 -4.16456e-08 7.95181e-16 -2.5873e-15 -4.02325e-08 2.13104e-16 -2.93976e-15 -4.82175e-08 5.87062e-16 1.27066e-16 -4.26663e-08 1.03465e-15 -1.06334e-16 -4.05614e-08 -9.16145e-16 -8.39351e-16 -3.78687e-08 1.32565e-15 -1.29015e-15 -3.86031e-08 -1.13856e-16 -4.89626e-15 -4.01894e-08 -4.56086e-16 -1.55666e-15 -4.16576e-08 3.84953e-16 -7.53038e-16 -4.65262e-08 -1.50466e-15 -5.41613e-16 -4.39422e-08 -3.04762e-15 -2.81197e-15 -3.93182e-08 -1.27714e-15 -3.7435e-15 -3.59762e-08 -3.35684e-15 -1.4008e-15 -4.02001e-08 -3.28963e-15 -1.16222e-15 -4.14916e-08 2.68626e-15 3.98573e-15 -4.54838e-08 2.6333e-15 -4.35573e-16 -4.60918e-08 6.55808e-16 3.17245e-15 -5.0801e-08 1.2153e-15 4.20868e-17 -5.13184e-08 1.42092e-15 2.40166e-15 -5.11352e-08 6.51324e-16 7.57555e-15 -5.13294e-08 1.34532e-15 3.99509e-15 -5.12333e-08 -1.04482e-15 3.44275e-16 -5.0606e-08 2.5275e-15 -1.88896e-15 -4.61735e-08 2.43369e-15 -6.68515e-16 -4.38549e-08 3.07245e-15 8.58681e-16 -4.14069e-08 1.22897e-16 1.82433e-15 -3.88441e-08 -2.00541e-15 -1.63393e-15 -3.54858e-08 -6.15242e-16 -5.33025e-15 -3.37639e-08 -1.72223e-15 -5.76112e-15 -3.28386e-08 -2.18942e-15 9.96952e-16 -3.63924e-08 -1.126e-15 -5.65479e-15 -3.05864e-08 -6.65316e-15 -2.09269e-15 -4.02791e-08 1.48674e-15 4.38898e-16 -4.27413e-08 -9.46095e-16 2.35584e-15 -4.89029e-08 1.95289e-15 4.38829e-15 -5.10128e-08 1.24764e-15 2.78759e-15 -5.09413e-08 2.0918e-16 -1.05139e-15 -5.15769e-08 -1.64152e-16 -1.57271e-15 -3.19494e-08 1.98169e-16 -1.94308e-15 -2.92036e-08 -8.01936e-16 -9.31557e-16 -3.26902e-08 2.15795e-15 5.22163e-16 -3.9744e-08 3.85913e-15 -6.84674e-16 -4.25085e-08 1.67646e-15 7.23902e-16 -4.45769e-08 -1.81128e-15 -8.13654e-16 -3.03556e-08 -8.30278e-16 -1.80151e-15 -3.1647e-08 -5.07253e-15 -5.1817e-16 -3.53254e-08 -7.66991e-15 -1.60882e-15 -3.91636e-08 -4.98953e-15 -1.50541e-16 -4.01988e-08 -1.3727e-14 -3.03124e-15 -3.7764e-08 -1.6813e-14 -1.08521e-15 -3.69712e-08 -9.07395e-15 -4.51398e-16 -3.39562e-08 3.18278e-16 -3.13042e-15 -2.91742e-08 1.7645e-15 2.47493e-15 -2.61483e-08 1.54957e-15 2.96605e-15 -2.43766e-08 4.76618e-16 2.28752e-15 -2.73688e-08 4.89263e-15 -4.65272e-16 -2.43148e-08 -2.47577e-15 1.51655e-15 -2.84893e-08 -2.58535e-15 -1.48691e-15 -3.29321e-08 -3.39056e-16 -6.30828e-16 -3.51866e-08 2.21133e-15 -2.63097e-15 -3.76515e-08 3.14786e-15 -7.87061e-16 -4.57977e-08 3.17262e-15 7.8594e-16 -4.80148e-08 6.23561e-15 -1.33208e-15 -4.38193e-08 4.70528e-15 -3.40399e-15 -4.1356e-08 2.39594e-15 -4.4272e-15 -3.62446e-08 -1.46071e-15 -5.71915e-16 -3.37377e-08 -6.70433e-15 -7.17591e-16 -3.12916e-08 4.21066e-15 -3.81118e-15 -4.03032e-08 4.37704e-15 -3.07239e-15 -4.2459e-08 3.99655e-15 -1.0833e-16 -4.52184e-08 2.83746e-15 1.54073e-15 -4.8184e-08 -1.32959e-15 1.88464e-15 -4.93935e-08 1.08158e-15 1.88231e-15 -4.6467e-08 2.80839e-15 -3.33874e-16 -4.38822e-08 1.49975e-15 -2.46789e-15 -3.66118e-08 3.07425e-15 -4.85896e-17 -2.54087e-08 1.05228e-15 3.74821e-16 -2.68085e-08 4.21427e-15 4.59972e-17 -2.40365e-08 -5.19268e-18 -1.52318e-15 -2.06886e-08 8.59999e-16 3.71274e-16 -2.0074e-08 1.95876e-16 -2.68308e-15 -1.91801e-08 3.7621e-15 4.935e-16 -2.26407e-08 1.26886e-15 2.51282e-15 -2.41164e-08 2.28204e-15 -1.67071e-15 -2.00736e-08 1.11501e-15 5.1653e-16 -2.01516e-08 7.0021e-16 1.62837e-15 -1.28092e-08 -5.75711e-16 -1.13216e-15 -2.06946e-08 1.32394e-15 -1.72341e-15 -2.1912e-08 2.53806e-15 1.94009e-15 -2.50838e-08 3.10674e-15 7.485e-16 -2.68061e-08 -6.17119e-16 -4.0984e-15 -3.02996e-08 -4.13259e-15 -1.05002e-15 -3.16521e-08 -7.12796e-15 -4.9335e-16 -3.29133e-08 9.95826e-16 -1.00659e-15 -4.20586e-08 2.249e-15 -5.46023e-17 -4.28995e-08 1.4494e-15 -4.44857e-15 -4.03702e-08 -1.02795e-15 -6.13679e-15 -3.95169e-08 -2.78953e-15 2.11753e-16 -3.14097e-08 2.71272e-15 -1.18354e-15 -2.77871e-08 -1.96938e-15 2.76134e-15 -2.24097e-08 1.49127e-16 6.55556e-16 -2.02899e-08 1.40215e-15 -4.97504e-16 -1.9378e-08 2.94829e-15 2.86432e-15 -1.31893e-08 4.68484e-15 1.49453e-15 -1.20569e-08 3.5736e-15 1.01219e-15 -1.07895e-08 1.65604e-15 2.72662e-15 -9.72136e-09 2.59155e-15 1.94825e-15 -1.20632e-08 -7.77676e-16 -1.10256e-15 -1.71616e-08 -4.73392e-16 2.21147e-15 -4.40426e-08 -3.45466e-15 -9.8833e-15 -3.67518e-08 5.44948e-15 -8.69121e-16 -2.56454e-08 -3.64757e-15 7.9699e-16 -2.06337e-08 2.36767e-15 -1.54273e-15 -1.68616e-08 2.20652e-15 2.10855e-15 -1.24221e-08 3.84901e-15 -1.19708e-15 -1.07355e-08 7.10362e-16 1.0183e-16 -9.48396e-09 1.27905e-15 1.80174e-15 -1.33694e-08 -6.95949e-15 -1.50311e-15 -1.84696e-08 5.88706e-15 2.33881e-16 -2.42093e-08 -6.04487e-15 -6.51813e-15 -3.41568e-08 -1.62583e-15 -7.22665e-15 -3.54636e-08 2.22003e-16 -5.92944e-15 -3.68089e-08 1.19155e-15 -7.51955e-15 -3.91114e-08 1.62078e-15 2.76783e-15 -4.51833e-08 3.6796e-16 3.86325e-15 -4.79433e-08 3.51298e-16 -4.48697e-15 -3.55988e-08 2.37569e-15 -7.75092e-15 -3.42002e-08 6.9031e-17 -3.26426e-15 -3.27403e-08 6.65513e-17 1.64803e-15 -3.13516e-08 2.54903e-15 2.06476e-15 -3.02366e-08 4.2255e-15 1.73746e-15 -2.65522e-08 7.35285e-15 1.74495e-15 -2.60726e-08 7.11522e-15 1.81874e-15 -2.46867e-08 2.28945e-15 4.55578e-16 -2.18622e-08 -3.36241e-15 -1.6695e-15 -1.58602e-08 -2.00409e-16 -2.43164e-16 -1.52233e-08 1.46665e-16 1.0776e-15 -4.91718e-09 2.31522e-15 9.08468e-16 -9.62111e-09 -1.24501e-15 -3.48393e-15 -3.3043e-08 1.43647e-15 -1.91813e-15 -3.18503e-08 -1.97753e-15 1.06717e-15 -3.0362e-08 -2.30054e-15 2.4151e-15 -2.79537e-08 -1.26015e-15 4.50753e-15 -2.92165e-08 3.6171e-17 1.17906e-15 -3.04338e-08 7.70522e-16 3.70173e-15 -2.91185e-08 8.33746e-16 2.21563e-15 -2.78023e-08 3.53429e-15 1.8812e-15 -2.40104e-08 3.41714e-15 2.59629e-15 -2.30548e-08 -2.16776e-15 3.38859e-16 -1.99507e-08 -1.99679e-15 -1.49341e-15 -1.47292e-08 -1.55617e-15 3.00646e-16 -1.3344e-08 6.04743e-16 -5.79221e-16 -1.2717e-08 -7.38428e-17 -3.90381e-15 -9.16267e-09 -1.11928e-15 -3.53889e-16 -2.10141e-09 4.35114e-16 4.59227e-16 -4.96054e-09 1.57919e-15 -4.53353e-15 -6.81305e-09 2.11518e-16 -1.68941e-15 -1.08725e-08 -2.51902e-17 8.59356e-16 -1.20606e-08 -2.97227e-15 -6.85568e-16 -1.85262e-08 2.5917e-15 -9.97657e-16 -2.15953e-08 1.81046e-15 3.77843e-15 -2.53676e-08 1.53024e-15 7.09869e-15 -2.68253e-08 1.38607e-15 8.48483e-15 -2.79963e-08 -1.51213e-15 6.26632e-15 -2.67816e-08 1.49838e-15 4.97047e-15 -2.52049e-08 9.91308e-17 1.01706e-16 -1.62219e-08 -2.96868e-16 1.84007e-15 -1.41767e-08 -4.71654e-16 3.28251e-15 -2.40755e-08 -1.61102e-16 6.43898e-15 -2.58267e-08 9.05203e-16 1.65201e-15 -2.17277e-08 1.34846e-16 2.8757e-15 -2.30475e-08 7.13606e-17 -1.64756e-15 -2.0427e-08 6.2584e-16 -6.15796e-16 -1.94578e-08 2.09831e-16 -2.23139e-15 -4.96498e-09 -1.46589e-15 1.61839e-15 -1.7082e-08 3.12636e-16 -1.01376e-15 -1.83786e-08 -1.55864e-15 1.06427e-15 -1.61547e-08 1.3946e-15 1.44935e-16 -8.41112e-09 -4.77213e-16 -1.70404e-15 -5.74126e-09 1.35058e-15 -5.04761e-15 -3.09083e-09 -2.97644e-16 -4.73817e-15 -2.60703e-09 4.79316e-16 -2.4256e-15 -2.57112e-09 1.23421e-15 3.07387e-15 -1.68006e-09 2.06259e-16 -1.65263e-15 -4.13062e-09 -3.78628e-15 -6.6118e-17 -1.34807e-08 -5.33306e-15 9.32324e-16 -1.49189e-08 6.46036e-16 -2.24365e-15 -1.92765e-08 4.05568e-16 6.25777e-16 -1.21063e-08 -7.28403e-18 -1.26886e-15 -7.50214e-09 1.80606e-15 1.59184e-16 -5.09394e-09 1.74692e-15 -1.55117e-15 -2.71922e-09 6.25707e-15 -1.17719e-16 -1.85484e-09 1.84404e-15 1.51469e-16 -1.87115e-09 1.3459e-15 -1.20487e-15 -1.92916e-09 2.28069e-15 -3.61592e-15 -3.98983e-09 3.31882e-15 -3.39865e-15 -7.01476e-09 2.61089e-15 -1.062e-15 -1.00765e-08 -3.32082e-15 2.95115e-15 -1.22628e-08 -2.89216e-15 1.86706e-15 -1.174e-08 -9.9894e-16 -5.66046e-16 -9.70882e-09 2.01503e-15 -7.08195e-16 -8.32952e-09 1.41641e-15 -1.32976e-15 -7.13101e-09 9.35699e-16 -1.34148e-15 -5.36451e-09 2.86884e-15 -2.0763e-15 -6.93574e-09 3.80078e-15 -7.41197e-17 -2.61013e-09 6.46534e-15 3.1799e-16 -1.73162e-09 3.78858e-15 -2.64344e-15 -5.6633e-09 2.84629e-15 -1.7229e-15 -8.11717e-09 3.05135e-15 -4.15608e-16 -3.30746e-09 3.60477e-15 4.14693e-16 -2.20826e-09 4.34781e-15 -2.66426e-16 -2.25019e-09 1.91609e-15 -6.41015e-16 -1.91295e-09 1.64693e-15 -8.7778e-16 -1.93233e-09 3.98174e-15 -7.37469e-16 -2.0817e-09 1.85806e-15 -8.44184e-16 -4.83919e-08 7.99606e-16 -2.61805e-15 -4.26057e-08 4.33813e-16 -4.08087e-15 -3.99703e-08 1.81057e-15 -1.30737e-15 -4.23109e-08 -6.20503e-16 -1.24074e-15 -3.42024e-08 -2.84863e-15 -2.00559e-15 -3.24974e-08 -5.04057e-16 -1.86477e-15 -4.05271e-08 -1.89618e-15 -1.61615e-15 -3.71252e-08 -8.54657e-16 6.6186e-16 -4.51279e-08 -7.44685e-15 -4.47077e-15 -3.71704e-08 -1.32087e-17 -3.79123e-15 -2.27307e-08 -1.3786e-15 -1.07191e-15 -3.2075e-08 -8.09517e-16 -2.84799e-15 -3.61476e-08 3.0621e-15 1.17784e-15 -4.61724e-08 3.30348e-15 7.82482e-16 -4.34636e-08 3.94224e-16 2.58623e-15 -2.69686e-08 3.01115e-15 1.60329e-15 -2.36956e-08 2.85524e-15 -2.45643e-15 -2.1718e-08 -5.68916e-17 -8.72991e-16 -1.91663e-08 1.22518e-15 3.34362e-15 -1.51905e-08 1.52401e-15 -2.97259e-16 -1.32995e-08 9.43781e-16 -2.9277e-15 -2.93678e-08 1.08544e-15 1.34866e-15 -4.18205e-08 -2.25808e-15 9.74188e-16 -3.16982e-08 -9.55026e-17 3.83293e-16 -2.16922e-08 4.12641e-16 -3.17273e-17 -1.70721e-08 3.22023e-15 1.01906e-15 -2.45098e-08 1.6931e-15 1.84416e-15 -2.30127e-08 -6.66989e-16 9.08758e-16 -1.19314e-08 1.0925e-15 -2.70645e-15 -4.83222e-09 7.7153e-16 2.61032e-15 -2.90371e-08 -4.85155e-15 1.51606e-15 -1.80347e-08 1.31131e-16 -3.70264e-16 -1.15639e-08 -5.83529e-16 5.01063e-16 -8.90861e-09 1.34755e-15 1.75087e-15 -2.39987e-08 -1.25332e-15 -3.51841e-16 -1.96399e-08 1.04978e-15 -1.505e-15 -4.65848e-09 1.93332e-15 -1.66678e-15 -7.93998e-09 -5.02513e-15 4.6456e-15 -1.54247e-08 -9.77743e-16 8.34311e-16 -1.1068e-08 -2.19628e-15 -3.46581e-15 -3.60415e-08 2.11759e-15 6.9855e-16 -4.36701e-08 1.51697e-15 -1.48741e-15 -3.8903e-08 5.53359e-16 3.90821e-16 -5.10246e-08 2.89448e-15 -3.42292e-15 -5.50755e-09 -6.60838e-18 -1.0214e-15 -4.05411e-08 -3.31251e-15 1.83138e-15 -1.51125e-08 2.65583e-16 -1.68084e-15 -2.08704e-08 2.57507e-16 -6.41048e-16 -6.10421e-09 3.05441e-15 -9.73372e-16 -4.31944e-08 4.151e-15 -8.09714e-16 -3.16629e-09 -8.03622e-16 6.3323e-16 -4.57575e-08 -3.02027e-15 2.30528e-16 -1.972e-08 -2.88343e-15 3.98018e-15 -1.46255e-08 -5.89917e-15 7.8354e-16 -1.67405e-08 -1.29214e-15 -3.08549e-15 -2.00477e-08 2.44244e-15 5.2355e-16 -4.56458e-08 2.85295e-15 -3.20692e-15 -3.99154e-08 -1.72692e-15 -4.157e-15 -2.73197e-09 1.22303e-15 -6.42524e-16 -2.05992e-08 2.61348e-15 -3.11963e-16 -2.95534e-09 4.07624e-16 -6.53069e-16 -4.54787e-08 -5.04666e-15 -7.69297e-16 -3.29438e-08 1.61052e-15 -3.55747e-15 -4.09939e-08 1.19684e-15 6.60104e-16 -3.2566e-09 1.11977e-15 9.92599e-16 -5.02262e-08 -3.64864e-15 -2.9371e-15 -3.35052e-08 -6.34024e-16 -2.20803e-15 -1.93194e-08 1.46314e-15 8.67132e-16 -2.53727e-08 6.28741e-16 -4.0216e-16 -2.90748e-08 -6.11777e-17 5.58969e-15 -5.06963e-08 -1.68475e-15 3.55079e-16 -1.79919e-08 1.36045e-15 5.46432e-15 -9.80262e-09 1.0214e-15 9.57069e-16 -4.37068e-08 -1.12794e-16 -9.04867e-16 -4.78801e-08 -8.61504e-15 -5.42288e-15 -3.61417e-08 -9.73767e-16 1.1115e-15 -3.05864e-08 1.00871e-15 3.04443e-15 -5.16468e-08 -2.21889e-16 -3.52961e-15 -3.51783e-08 5.83134e-15 -6.43483e-16 -2.60832e-08 -8.07532e-16 -5.68119e-15 -3.81212e-08 -1.92948e-16 1.6826e-15 -1.02875e-08 -1.23128e-15 5.90185e-16 -1.73558e-08 -4.57031e-16 -2.26118e-15 -6.29248e-09 4.28527e-15 5.3237e-16 -4.20843e-08 -2.03245e-15 -7.48469e-16 -4.59169e-08 -1.20728e-14 -1.87975e-15 -3.57512e-08 6.8808e-15 -1.27212e-15 -2.77325e-08 3.42965e-15 -1.55303e-15 -2.19901e-08 -7.72336e-16 -3.67536e-15 -3.10428e-08 -1.51063e-15 -2.9807e-16 -1.02644e-08 -1.43123e-15 -5.07819e-15 -4.28184e-08 8.31786e-16 5.37146e-16 -4.48927e-08 -3.23963e-16 4.50577e-15 -1.17964e-08 2.32819e-15 -4.59201e-16 -2.20722e-08 -2.04332e-16 1.08517e-15 -8.20615e-09 1.49596e-15 1.62961e-15 -2.14716e-08 1.18986e-15 1.53975e-16 -2.76658e-08 2.48713e-16 3.99101e-15 -1.26025e-08 7.2078e-16 1.3704e-15 -4.87682e-08 2.67175e-16 -7.84908e-16 -4.667e-08 1.00154e-16 1.11854e-15 -1.70208e-08 -1.21212e-15 1.84488e-15 -5.16787e-08 1.91308e-15 -5.51365e-16 -2.6053e-08 -2.88842e-16 -3.41725e-16 -1.72872e-08 1.03958e-15 3.62166e-15 -2.39082e-08 -9.15684e-15 -3.12731e-15 -3.84209e-08 -9.00432e-15 -5.24138e-15 -3.87375e-08 -5.40952e-15 1.00752e-15 -2.97189e-08 4.36955e-16 -5.48969e-16 -6.59506e-09 -4.87113e-16 -1.32986e-15 -1.06392e-08 7.88292e-17 1.14998e-15 -6.41832e-09 -1.41892e-14 -1.60087e-15 -3.44935e-08 -4.35384e-16 -5.19884e-15 -3.09477e-08 2.99128e-15 -4.05416e-15 -6.86522e-09 1.51952e-15 3.04555e-15 -2.76618e-08 1.67955e-17 1.04064e-15 -3.80286e-08 1.0216e-15 1.13013e-15 -3.7021e-08 3.55765e-15 -2.29924e-15 -3.46106e-08 3.81688e-15 -2.04626e-15 -3.83042e-08 2.78073e-15 1.7886e-15 -4.84583e-08 -1.82817e-15 2.58054e-15 -1.50519e-08 2.70946e-15 -1.18948e-16 -2.04669e-09 1.60857e-15 3.32239e-15 -2.34691e-08 -8.00185e-16 -1.07802e-15 -2.27105e-08 -1.87323e-15 -2.38703e-15 -3.37527e-08 -6.84979e-15 -1.58472e-15 -1.7715e-08 -1.32209e-15 -2.10284e-15 -2.96823e-08 -1.56525e-15 3.09031e-15 -1.05112e-08 1.68377e-15 8.01632e-16 -1.38006e-08 2.39439e-15 -1.71502e-15 -4.25425e-08 2.05006e-16 -2.65276e-15 -9.11034e-09 -2.19977e-17 3.11881e-15 -1.38881e-08 2.38837e-16 6.30275e-16 -2.3134e-08 2.81076e-15 1.93449e-15 -4.68465e-08 1.14823e-15 -2.35187e-15 -2.93638e-08 3.15384e-15 1.08374e-15 -2.21622e-08 2.3971e-15 -4.55622e-16 -1.12827e-08 -8.43382e-16 7.7645e-16 -7.83843e-09 -1.71226e-15 -5.63546e-16 -7.41167e-09 -1.87978e-15 -2.20786e-15 -4.10323e-08 2.71736e-15 -6.32515e-16 -2.47889e-09 -1.1933e-15 -2.0438e-15 -5.08987e-08 1.29276e-15 -9.70245e-16 -1.58618e-08 -1.96827e-15 5.09119e-16 -5.1984e-08 -3.96688e-15 -2.06007e-15 -3.70668e-08 -1.00384e-15 1.35062e-15 -1.40382e-08 -1.39191e-16 -1.90693e-15 -1.92627e-08 -3.7931e-16 -1.51686e-16 -4.29354e-08 1.03801e-15 -1.6405e-15 -1.51984e-08 4.80173e-17 -1.03239e-15 -2.87028e-08 2.92933e-15 -4.79371e-16 -2.23759e-09 2.16256e-15 -2.59914e-15 -8.26353e-09 1.6217e-15 1.89436e-15 -1.60122e-08 2.19588e-15 -8.04966e-16 -2.61145e-08 -4.72368e-16 -8.63821e-16 -3.41124e-08 1.32626e-17 3.08457e-15 -1.14778e-08 -7.80864e-16 1.74508e-15 -4.75407e-08 1.95455e-16 1.2812e-15 -2.74869e-08 -3.5509e-16 -2.39633e-15 -4.15762e-08 1.53757e-15 5.90414e-16 -2.62282e-08 -2.75029e-15 -1.45494e-15 -3.21615e-08 2.88841e-15 1.78269e-15 -1.37606e-08 1.58073e-16 -1.57954e-15 -1.7823e-08 -2.0241e-15 -1.28665e-15 -1.6163e-09 -8.93153e-16 2.26562e-16 -3.48336e-08 1.85451e-15 3.78638e-15 -4.81792e-08 1.70188e-15 -2.29493e-15 -4.88885e-09 2.88203e-15 -4.0382e-15 -3.95332e-08 1.88029e-16 -5.39932e-16 -9.28035e-09 1.08077e-15 -4.26675e-15 -3.83446e-08 -5.30372e-15 2.93559e-15 -1.49604e-08 8.76221e-17 2.098e-15 -1.68328e-08 -4.03388e-17 1.39844e-15 -2.86037e-08 7.49063e-16 -3.42733e-16 -1.76141e-08 -4.45068e-15 -2.78788e-16 -2.85068e-08 3.41975e-15 2.41017e-15 -2.96646e-08 METADATA INFORMATION 2 NAME L2_NORM_RANGE LOCATION vtkDataArray DATA 2 0 5.35655e-08 NAME L2_NORM_FINITE_RANGE LOCATION vtkDataArray DATA 2 0 5.35655e-08 FIELD FieldData 2 sigmay 1 1214 double -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.7 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.5 -13681.6 -13681.6 -13681.5 -13681.5 -13681.5 -13681.6 -13681.7 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.5 -13681.5 -13681.6 -13681.6 -13681.5 -13681.5 -13681.6 -13681.6 -13681.7 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.7 -13681.7 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.7 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.7 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.5 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.5 -13681.5 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.5 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 -13681.6 METADATA INFORMATION 0 sigmaz 1 1214 double -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.7 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.6 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.6 -27777.6 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.9 -27777.9 -27777.9 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.9 -27777.9 -27777.9 -27777.8 -27777.7 -27777.7 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.9 -27777.9 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.9 -27777.9 -27777.9 -27777.8 -27777.8 -27777.7 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.8 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.7 -27777.7 -27777.8 -27777.7 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.9 -27777.9 -27777.9 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.7 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.7 -27777.7 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.9 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.9 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.7 -27777.8 -27777.7 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 -27777.8 METADATA INFORMATION 0 feenox-1.1/tests/iterative.sh0000755000175000017500000000050414773607165013274 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answerdiff fibo_iterative.fee exitifwrong $? answerdiff iterative.fee exitifwrong $? answer geometric_series.fee "2" exitifwrong $? feenox-1.1/tests/orthotropic-beam.fee0000644000175000017500000000060314773607165014700 00000000000000PROBLEM mechanical READ_MESH beam-cantilever-$1.msh BC left fixed BC right tz=-1 Ex = 100000 Ey = 75000 Ez = 50000 Gxy = 30000.0 Gyz = 40000.0 Gzx = 35000.0 nuxy = 0.3 nuyz = 0.25 nu13 = 0.4 nuzx = nu13 * Ez/Ex SOLVE_PROBLEM WRITE_RESULTS displ stress b = 0.05; h = 0.02; PRINT SEP " " %.1f sigmax(0,b/2,h/2) sigmay(0,b/2,h/2) sigmaz(0,b/2,h/2) tauxy(0,b/2,h/2) tauzx(0,b/2,h/2) feenox-1.1/tests/beam-cantilever-hex8.msh0000644000175000017500000002204514773607165015366 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 2 1 "left" 2 2 "right" 3 3 "bulk" $EndPhysicalNames $Entities 8 12 6 1 1 0 -0.025 0.01 0 2 0 -0.025 -0.01 0 3 0 0.025 0.01 0 4 0 0.025 -0.01 0 5 0.5 -0.025 0.01 0 6 0.5 -0.025 -0.01 0 7 0.5 0.025 0.01 0 8 0.5 0.025 -0.01 0 1 -1e-07 -0.0250001 -0.0100001 1e-07 -0.0249999 0.0100001 0 2 2 -1 2 -1e-07 -0.0250001 0.009999900000000001 1e-07 0.0250001 0.0100001 0 2 1 -3 3 -1e-07 0.0249999 -0.0100001 1e-07 0.0250001 0.0100001 0 2 4 -3 4 -1e-07 -0.0250001 -0.0100001 1e-07 0.0250001 -0.009999900000000001 0 2 2 -4 5 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 0.0100001 0 2 6 -5 6 0.4999999 -0.0250001 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 2 5 -7 7 0.4999999 0.0249999 -0.0100001 0.5000000999999999 0.0250001 0.0100001 0 2 8 -7 8 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 2 6 -8 9 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 -0.009999900000000001 0 2 2 -6 10 -9.999999997511999e-08 -0.0250001 0.009999900000000001 0.5000000999999999 -0.0249999 0.0100001 0 2 1 -5 11 -9.999999997511999e-08 0.0249999 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 2 4 -8 12 -9.999999997511999e-08 0.0249999 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 2 3 -7 1 -1e-07 -0.0250001 -0.0100001 1e-07 0.0250001 0.0100001 1 1 4 -1 4 3 -2 2 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 0.0100001 1 2 4 -5 8 7 -6 3 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 0.0100001 0 4 -9 1 10 -5 4 -9.999999997511999e-08 0.0249999 -0.0100001 0.5000000999999999 0.0250001 0.0100001 0 4 -11 3 12 -7 5 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 4 -4 9 8 -11 6 -9.999999997511999e-08 -0.0250001 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 4 -2 10 6 -12 1 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 0.0100001 1 3 6 -1 2 -3 4 -5 6 $EndEntities $Nodes 27 135 1 135 0 1 0 1 1 0 -0.025 0.01 0 2 0 1 2 0 -0.025 -0.01 0 3 0 1 3 0 0.025 0.01 0 4 0 1 4 0 0.025 -0.01 0 5 0 1 5 0.5 -0.025 0.01 0 6 0 1 6 0.5 -0.025 -0.01 0 7 0 1 7 0.5 0.025 0.01 0 8 0 1 8 0.5 0.025 -0.01 1 1 0 1 9 0 -0.025 -1.734723475976807e-18 1 2 0 3 10 11 12 0 -0.01249999999999998 0.01 0 1.734723475976807e-17 0.01 0 0.01250000000000002 0.01 1 3 0 1 13 0 0.025 -1.734723475976807e-18 1 4 0 3 14 15 16 0 -0.01249999999999998 -0.01 0 1.734723475976807e-17 -0.01 0 0.01250000000000002 -0.01 1 5 0 1 17 0.5 -0.025 -1.734723475976807e-18 1 6 0 3 18 19 20 0.5 -0.01249999999999998 0.01 0.5 1.734723475976807e-17 0.01 0.5 0.01250000000000002 0.01 1 7 0 1 21 0.5 0.025 -1.734723475976807e-18 1 8 0 3 22 23 24 0.5 -0.01249999999999998 -0.01 0.5 1.734723475976807e-17 -0.01 0.5 0.01250000000000002 -0.01 1 9 0 7 25 26 27 28 29 30 31 0.0625 -0.025 -0.01 0.125 -0.025 -0.01 0.1875 -0.025 -0.01 0.25 -0.025 -0.01 0.3125 -0.025 -0.01 0.375 -0.025 -0.01 0.4375 -0.025 -0.01 1 10 0 7 32 33 34 35 36 37 38 0.0625 -0.025 0.01 0.125 -0.025 0.01 0.1875 -0.025 0.01 0.25 -0.025 0.01 0.3125 -0.025 0.01 0.375 -0.025 0.01 0.4375 -0.025 0.01 1 11 0 7 39 40 41 42 43 44 45 0.0625 0.025 -0.01 0.125 0.025 -0.01 0.1875 0.025 -0.01 0.25 0.025 -0.01 0.3125 0.025 -0.01 0.375 0.025 -0.01 0.4375 0.025 -0.01 1 12 0 7 46 47 48 49 50 51 52 0.0625 0.025 0.01 0.125 0.025 0.01 0.1875 0.025 0.01 0.25 0.025 0.01 0.3125 0.025 0.01 0.375 0.025 0.01 0.4375 0.025 0.01 2 1 0 3 53 54 55 0 -0.01249999999999998 1.734723475976807e-18 0 2.081668171172169e-17 -1.734723475976807e-18 0 0.01250000000000002 -1.734723475976807e-18 2 2 0 3 56 57 58 0.5 -0.01249999999999998 1.734723475976807e-18 0.5 2.081668171172169e-17 -1.734723475976807e-18 0.5 0.01250000000000002 -1.734723475976807e-18 2 3 0 7 59 60 61 62 63 64 65 0.0625 -0.025 0 0.125 -0.025 -1.734723475976807e-18 0.1875 -0.025 -1.734723475976807e-18 0.25 -0.025 -1.734723475976807e-18 0.3125 -0.025 -1.734723475976807e-18 0.375 -0.025 -1.734723475976807e-18 0.4375 -0.025 0 2 4 0 7 66 67 68 69 70 71 72 0.0625 0.025 0 0.125 0.025 -1.734723475976807e-18 0.1875 0.025 -1.734723475976807e-18 0.25 0.025 -1.734723475976807e-18 0.3125 0.025 -1.734723475976807e-18 0.375 0.025 -1.734723475976807e-18 0.4375 0.025 0 2 5 0 21 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 0.0625 -0.01249999999999998 -0.01 0.125 -0.01249999999999998 -0.01 0.1875 -0.01249999999999998 -0.01 0.25 -0.01249999999999998 -0.01 0.3125 -0.01249999999999998 -0.01 0.375 -0.01249999999999998 -0.01 0.4375 -0.01249999999999998 -0.01 0.0625 1.734723475976807e-17 -0.01 0.125 1.734723475976807e-17 -0.01 0.1875 2.081668171172169e-17 -0.01 0.25 1.734723475976807e-17 -0.01 0.3125 1.387778780781446e-17 -0.01 0.375 1.040834085586084e-17 -0.01 0.4375 1.734723475976807e-17 -0.01 0.0625 0.0125 -0.01 0.125 0.01250000000000002 -0.01 0.1875 0.01250000000000002 -0.01 0.25 0.01250000000000002 -0.01 0.3125 0.01250000000000002 -0.01 0.375 0.01250000000000002 -0.01 0.4375 0.01250000000000002 -0.01 2 6 0 21 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 0.0625 -0.01249999999999998 0.01 0.125 -0.01249999999999998 0.01 0.1875 -0.01249999999999998 0.01 0.25 -0.01249999999999998 0.01 0.3125 -0.01249999999999998 0.01 0.375 -0.01249999999999998 0.01 0.4375 -0.01249999999999998 0.01 0.0625 1.734723475976807e-17 0.01 0.125 1.734723475976807e-17 0.01 0.1875 2.081668171172169e-17 0.01 0.25 1.734723475976807e-17 0.01 0.3125 1.387778780781446e-17 0.01 0.375 1.040834085586084e-17 0.01 0.4375 1.734723475976807e-17 0.01 0.0625 0.0125 0.01 0.125 0.01250000000000002 0.01 0.1875 0.01250000000000002 0.01 0.25 0.01250000000000002 0.01 0.3125 0.01250000000000002 0.01 0.375 0.01250000000000002 0.01 0.4375 0.01250000000000002 0.01 3 1 0 21 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 0.0625 -0.01249999999999997 4.526544070126981e-18 0.125 -0.01249999999999998 2.114194236346734e-18 0.1875 -0.01249999999999998 1.951563910473908e-18 0.25 -0.01249999999999998 1.409462824231156e-18 0.3125 -0.01249999999999998 1.951563910473908e-18 0.375 -0.01249999999999998 1.734723475976807e-18 0.4375 -0.01249999999999998 4.336808689942018e-18 0.0625 2.439454888092385e-17 1.084202172485504e-18 0.125 2.276824562219559e-17 -1.301042606982605e-18 0.1875 2.51534904016637e-17 -1.951563910473908e-18 0.25 2.038300084272748e-17 -1.734723475976807e-18 0.3125 1.908195823574488e-17 -1.734723475976807e-18 0.375 1.387778780781446e-17 -1.301042606982605e-18 0.4375 2.255140518769849e-17 4.336808689942018e-19 0.0625 0.0125 1.788933584601082e-18 0.125 0.01250000000000002 -3.252606517456513e-19 0.1875 0.01250000000000002 -2.168404344971009e-19 0.25 0.01250000000000001 -1.517883041479706e-18 0.3125 0.01250000000000002 -4.336808689942018e-19 0.375 0.01250000000000002 0 0.4375 0.01250000000000002 1.301042606982605e-18 $EndNodes $Elements 3 80 1 80 2 1 3 8 1 2 9 53 14 2 14 53 54 15 3 15 54 55 16 4 16 55 13 4 5 9 1 10 53 6 53 10 11 54 7 54 11 12 55 8 55 12 3 13 2 2 3 8 9 6 22 56 17 10 22 23 57 56 11 23 24 58 57 12 24 8 21 58 13 17 56 18 5 14 56 57 19 18 15 57 58 20 19 16 58 21 7 20 3 1 5 64 17 53 9 2 14 115 59 25 73 18 115 59 25 73 116 60 26 74 19 116 60 26 74 117 61 27 75 20 117 61 27 75 118 62 28 76 21 118 62 28 76 119 63 29 77 22 119 63 29 77 120 64 30 78 23 120 64 30 78 121 65 31 79 24 121 65 31 79 56 17 6 22 25 54 53 14 15 122 115 73 80 26 122 115 73 80 123 116 74 81 27 123 116 74 81 124 117 75 82 28 124 117 75 82 125 118 76 83 29 125 118 76 83 126 119 77 84 30 126 119 77 84 127 120 78 85 31 127 120 78 85 128 121 79 86 32 128 121 79 86 57 56 22 23 33 55 54 15 16 129 122 80 87 34 129 122 80 87 130 123 81 88 35 130 123 81 88 131 124 82 89 36 131 124 82 89 132 125 83 90 37 132 125 83 90 133 126 84 91 38 133 126 84 91 134 127 85 92 39 134 127 85 92 135 128 86 93 40 135 128 86 93 58 57 23 24 41 13 55 16 4 66 129 87 39 42 66 129 87 39 67 130 88 40 43 67 130 88 40 68 131 89 41 44 68 131 89 41 69 132 90 42 45 69 132 90 42 70 133 91 43 46 70 133 91 43 71 134 92 44 47 71 134 92 44 72 135 93 45 48 72 135 93 45 21 58 24 8 49 10 1 9 53 94 32 59 115 50 94 32 59 115 95 33 60 116 51 95 33 60 116 96 34 61 117 52 96 34 61 117 97 35 62 118 53 97 35 62 118 98 36 63 119 54 98 36 63 119 99 37 64 120 55 99 37 64 120 100 38 65 121 56 100 38 65 121 18 5 17 56 57 11 10 53 54 101 94 115 122 58 101 94 115 122 102 95 116 123 59 102 95 116 123 103 96 117 124 60 103 96 117 124 104 97 118 125 61 104 97 118 125 105 98 119 126 62 105 98 119 126 106 99 120 127 63 106 99 120 127 107 100 121 128 64 107 100 121 128 19 18 56 57 65 12 11 54 55 108 101 122 129 66 108 101 122 129 109 102 123 130 67 109 102 123 130 110 103 124 131 68 110 103 124 131 111 104 125 132 69 111 104 125 132 112 105 126 133 70 112 105 126 133 113 106 127 134 71 113 106 127 134 114 107 128 135 72 114 107 128 135 20 19 57 58 73 3 12 55 13 46 108 129 66 74 46 108 129 66 47 109 130 67 75 47 109 130 67 48 110 131 68 76 48 110 131 68 49 111 132 69 77 49 111 132 69 50 112 133 70 78 50 112 133 70 51 113 134 71 79 51 113 134 71 52 114 135 72 80 52 114 135 72 7 20 58 21 $EndElements feenox-1.1/tests/bunny.geo0000644000175000017500000000120714773607165012571 00000000000000// https://upload.wikimedia.org/wikipedia/commons/4/43/Stanford_Bunny.stl Merge "Stanford_Bunny.stl"; angle = 40; includeBoundary = 1; forceParametrizablePatches = 0; curveAngle = 180; ClassifySurfaces{angle * Pi/180, includeBoundary, forceParametrizablePatches, curveAngle * Pi / 180}; CreateGeometry; // Create a volume as usual Surface Loop(1) = Surface{:}; Volume(1) = {1}; Physical Volume("bunny") = {1}; Physical Surface("rest") = {3}; Physical Surface("base") = {2}; Mesh.MeshSizeMin = 8; Mesh.MeshSizeMax = 15; // Mesh.ElementOrder = 1; Mesh.Algorithm = 6; Mesh.Algorithm3D = 1; Mesh.Optimize = 1; Mesh.MeshSizeExtendFromBoundary = 0; feenox-1.1/tests/cube.geo0000644000175000017500000000073214773607165012356 00000000000000SetFactory("OpenCASCADE"); a = 1; Box(1) = {0,0,0,a,a,a}; Mesh.MeshSizeMax = a/4; Mesh.MeshSizeMin = a/4; Mesh.Algorithm = 1; Mesh.Optimize = 1; // Mesh.OptimizeNetgen = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderLinear = 1; Physical Surface("left", 1) = {1}; Physical Surface("right", 2) = {2}; Physical Surface("front", 3) = {3}; Physical Surface("back", 4) = {4}; Physical Surface("bottom", 5) = {5}; Physical Surface("top", 6) = {6}; Physical Volume("bulk", 7) = {1}; feenox-1.1/tests/beam-ortho.sh0000755000175000017500000000136114773607165013337 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical # the meshes are in the git repository, but just in case this is how they can be re-generated # for i in beam-cantilever-*.geo; do gmsh -v 0 -3 $i; done answer1 orthotropic-beam.fee tet4 "12.5 2.4 2.3 -2.4 -2.6" exitifwrong $? answer1 orthotropic-beam.fee tet10 "139.0 21.8 23.0 -2.1 -0.2" exitifwrong $? answer1 orthotropic-beam.fee hex8 "38.0 10.9 9.4 -1.2 -34.1" exitifwrong $? answer1 orthotropic-beam.fee hex20 "151.3 43.4 37.5 -6.9 3.2" exitifwrong $? answer1 orthotropic-beam.fee hex27 "158.9 45.6 39.4 -8.2 3.1" exitifwrong $? feenox-1.1/tests/two-cubes-orthotropic-variables.fee0000644000175000017500000000121314773607165017650 00000000000000PROBLEM mechanical READ_MESH two-cubes.msh Ex_soft = 0.1*100000 Ey_soft = 0.1*75000 Ez_soft = 0.1*50000 Gxy_soft = 0.1*30000.0 Gyz_soft = 0.1*40000.0 Gzx_soft = 0.1*35000.0 nuxy_soft = 0.3 nuyz_soft = 0.25 nu13_soft = 0.4 nuzx_soft = nu13_soft * Ez_soft/Ex_soft Ex_hard = 10*100000 Ey_hard = 10*75000 Ez_hard = 10*50000 Gxy_hard = 10*30000.0 Gyz_hard = 10*40000.0 Gzx_hard = 10*35000.0 nuxy_hard = 0.3 nuyz_hard = 0.25 nu13_hard = 0.4 nuzx_hard = nu13_hard * Ez_hard/Ex_hard BC left fixed BC right Fx=1000 SOLVE_PROBLEM WRITE_MESH two-cubes-orthotropic-variables.vtk VECTOR u v w sigmax sigmay sigmaz tauxy tauyz tauzx PRINT %.1f sigma(0,0,0) feenox-1.1/tests/slab-1d-0.1m.msh0000644000175000017500000000176414773607165013357 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 0 1 "left" 0 2 "right" 1 3 "bulk" $EndPhysicalNames $Entities 2 1 0 0 1 0 0 0 1 1 2 0.1 0 0 1 2 1 0 0 0 0.1 0 0 1 3 2 1 -2 $EndEntities $Nodes 3 21 1 21 0 1 0 1 1 0 0 0 0 2 0 1 2 0.1 0 0 1 1 0 19 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 0.004999999999990302 0 0 0.009999999999982485 0 0 0.01499999999997172 0 0 0.01999999999995601 0 0 0.02499999999994165 0 0 0.02999999999992729 0 0 0.03499999999991293 0 0 0.03999999999989586 0 0 0.0449999999998815 0 0 0.0499999999998685 0 0 0.05499999999988016 0 0 0.05999999999989426 0 0 0.06499999999990864 0 0 0.06999999999991974 0 0 0.07499999999993355 0 0 0.07999999999994738 0 0 0.0849999999999585 0 0 0.08999999999997287 0 0 0.0949999999999878 0 0 $EndNodes $Elements 3 22 1 22 0 1 15 1 1 1 0 2 15 1 2 2 1 1 1 20 3 1 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 8 9 10 9 10 11 10 11 12 11 12 13 12 13 14 13 14 15 14 15 16 15 16 17 16 17 18 17 18 19 18 19 20 19 20 21 20 21 22 21 2 $EndElements feenox-1.1/tests/cube-hex.geo0000644000175000017500000000074314773607165013142 00000000000000SetFactory("OpenCASCADE"); a = 1; n = 3; Box(1) = {0, 0, 0, a, a, a}; Physical Surface("left",1) = {1}; Physical Surface("right",2) = {2}; Physical Surface("front",3) = {3}; Physical Surface("back",4) = {4}; Physical Surface("bottom",5) = {5}; Physical Surface("top",6) = {6}; Physical Volume("volume",7) = {1}; Mesh.ElementOrder = 1; Mesh.RecombineAll = 1; Mesh.Recombine3DAll = 1; Transfinite Line "*" = n/Mesh.MeshSizeFactor+1; Transfinite Surface "*"; Transfinite Volume "*"; feenox-1.1/tests/uo2-pellet.sh0000755000175000017500000000224414773607165013273 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal checkgmsh gmsh -v 0 -3 ${dir}/pellet.geo || exit $? # run with --ksp_view to see the difference between these two answerzero pellet-linear.fee 5e-2 exitifwrong $? answerzero1 pellet-linear.fee --linear 5e-2 exitifwrong $? answerzero pellet-linear-guess.fee 5e-2 exitifwrong $? answerzero pellet-nonuniform-q.fee 12 exitifwrong $? # run with --snes_monitor answerzero pellet-nonlinear.fee 12 exitifwrong $? answerzero pellet-nonlinear-guess.fee 12 exitifwrong $? answerzero pellet-nonlinear-q.fee 12 exitifwrong $? # tests for linear answerzero pellet-nonlinear-linear-keyword.fee 5e-2 exitifwrong $? answerzero1 pellet-nonlinear-linear-option.fee --linear 5e-2 exitifwrong $? # transients answerzero pellet-linear-transient-from-ss.fee 15 exitifwrong $? answerzero pellet-linear-transient-from-initial.fee 15 exitifwrong $? answerzero pellet-nonlinear-transient-from-ss.fee 15 exitifwrong $? answerzero pellet-nonlinear-transient-from-initial.fee 15 exitifwrong $? feenox-1.1/tests/transient-to-mesh.fee0000644000175000017500000000017114773607165015003 00000000000000READ_MESH square.msh DIM 2 end_time = 1 f(x,y) = sin(pi*x*y)*cos(t) PRINT t f(0.5,0.5) WRITE_MESH square-f.msh %.8f f feenox-1.1/tests/square41bin.msh0000644000175000017500000000414514773607165013615 00000000000000$MeshFormat 4.1 1 8  $EndMeshFormat $PhysicalNames 5 1 1 "left" 1 2 "right" 1 3 "bottom" 1 4 "up" 2 5 "bulk" $EndPhysicalNames $Entities ?????????????? $EndEntities $Nodes  ?????????? ?????? ?? $EndNodes $Elements                    $EndElements feenox-1.1/tests/logphi.fee0000644000175000017500000000020014773607165012675 00000000000000# check that $\log \phi = \integral_0^{1/2} \frac{dx}{\sqrt{x^2+1}}$ VAR x PRINT 2*exp(integral(1/sqrt(x^2+1),x,0,1/2))-sqrt(5) feenox-1.1/tests/thermal-slab-transient-mms.fee0000644000175000017500000000076314773607165016603 00000000000000READ_MESH slab.msh PROBLEM thermal DIMENSIONS 1 DIRICHLET_SCALING relative 1 end_time = 1 T_0(x) = 0 BC left T=0 BC right T=0 T_mms(x,t) = sin(pi*x)*t k_mms(x,t) = 1+T_mms(x,t) # we have to implement temperature & time-dependent mass matrix rhocp_mms(x,t) = 1+x k(x) = 1+T(x) rhocp(x) = 1+x VAR x' x'' t' q(x) = -derivative(k_mms(x',t) * derivative(T_mms(x'',t), x'', x'), x', x) + derivative(rhocp_mms(x,t) * T_mms(x,t'),t',t) SOLVE_PROBLEM IF done PRINT T(0.5)-T_mms(0.5,end_time) ENDIF feenox-1.1/tests/ray-effect-full.fee0000644000175000017500000000132314773607165014407 00000000000000# problem from # PHASE-SPACE FINITE ELEMENT METHODS APPLIED TO THE FIRST-ORDER FORM OF THE TRANSPORT EQUATION # WILLIAM R. MARTIN,CARL E. YEHNERT, LEONARD LORENCE and JAMES J. DUDERSTAD # Annals of Nuclear Energy. Vol. 8. pp. 633 to 646, 1981 DEFAULT_ARGUMENT_VALUE 1 8 PROBLEM neutron_sn 2D SN $1 READ_MESH $0.msh c = 1/3 Sigma_t = 0.75 Sigma_s = c*Sigma_t BC vacuum vacuum MATERIAL src Sigma_t1=Sigma_t Sigma_s1.1=Sigma_s S1=1 MATERIAL bulk Sigma_t1=Sigma_t Sigma_s1.1=Sigma_s S1=0 sn_alpha = 0.15 SOLVE_PROBLEM PRINT 10*phi1(0,1.875) # PRINT "\# phi=" phi1(0,0) # PRINT "\# memory= " memory() # WRITE_RESULTS FILE $0-result.msh # profile(x) = 10*phi1(x,1.875) # PRINT_FUNCTION profile MIN 0 MAX 2 NSTEPS 50 feenox-1.1/tests/wilson-1d.geo0000644000175000017500000000027214773607165013254 00000000000000Point(1) = {0, 0, 0}; Point(2) = {3, 0, 0}; Line(1) = {1, 2}; Physical Point("left") = {1}; Physical Point("right") = {2}; Physical Line("bulk") = {1}; n = 50; Mesh.MeshSizeMax = 1/n; feenox-1.1/tests/spinning-disk-holed-solid-full_unstruct.geo0000644000175000017500000000050414773607165021322 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; a = 0.01; Cylinder(1) = {0, 0, -t/2, 0, 0, t, R}; Cylinder(2) = {0, 0, -t/2, 0, 0, t, a}; BooleanDifference{ Volume{1}; Delete; }{ Volume{2}; Delete; } Physical Surface("inner") = {4}; Physical Volume("bulk") = {1}; feenox-1.1/tests/pellet-nonlinear.fee0000644000175000017500000000130014773607165014665 00000000000000# https://www.nuclear-power.com/nuclear-engineering/heat-transfer/heat-generation/temperature-profile-nuclear-fuel/ PROBLEM thermal 3D READ_MESH pellet.msh # https://www.nuclear-power.com/nuclear-engineering/heat-transfer/thermal-conduction/thermal-conductivity/thermal-conductivity-of-uranium-dioxide/ # T is in Celsius, T' is in Kelvin VAR T' tau(T') = (T'+273.15)/1000 cond(T') = 100/(7.5408 + 17.692*tau(T') + 3.614*tau(T')^2) + 6400/(tau(T')^(5/2))*exp(-16.35/tau(T')) # k is in W/(m K) k(x,y,z) = cond(T(x,y,z)) # q is in W / m^3 = 300 W/cm * 100 cm/m / area r = 4e-3 q = 300 * 100 / (pi*r^2) BC symmetry q=0 BC external T=420 SOLVE_PROBLEM PRINT %.0f T_max-1115 # WRITE_RESULTS FORMAT vtk feenox-1.1/tests/ud20-1-0-sl.msh0000644000175000017500000000205214773607165013133 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 0 1 "left" 0 2 "right" 1 3 "fuel" $EndPhysicalNames $Entities 3 2 0 0 1 0 0 0 1 1 2 10.371065 0 0 0 3 20.74213 0 0 1 2 1 0 0 0 10.371065 0 0 1 3 2 1 -2 2 10.371065 0 0 20.74213 0 0 1 3 2 2 -3 $EndEntities $Nodes 5 21 1 21 0 1 0 1 1 0 0 0 0 2 0 1 2 10.371065 0 0 0 3 0 1 3 20.74213 0 0 1 1 0 9 4 5 6 7 8 9 10 11 12 1.47444490455265 0 0 2.829106673155134 0 0 4.073716443949221 0 0 5.217214824582486 0 0 6.267815918218022 0 0 7.233066901706827 0 0 8.119901301718102 0 0 8.934689644226825 0 0 9.683285024133244 0 0 1 2 0 9 13 14 15 16 17 18 19 20 21 11.05884497586415 0 0 11.80744035576769 0 0 12.62222869827212 0 0 13.50906309827834 0 0 14.47431408176133 0 0 15.52491517539015 0 0 16.66841355602835 0 0 17.9130233268292 0 0 19.26768509543969 0 0 $EndNodes $Elements 4 22 1 22 0 1 15 1 1 1 0 3 15 1 2 3 1 1 1 10 3 1 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 12 12 12 2 1 2 1 10 13 2 13 14 13 14 15 14 15 16 15 16 17 16 17 18 17 18 19 18 19 20 19 20 21 20 21 22 21 3 $EndElements feenox-1.1/tests/xfail-data-variable.sh0000755000175000017500000000034614773607165015101 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer xfail-data-variable.fee exit $? feenox-1.1/tests/if.fee0000644000175000017500000000021714773607165012021 00000000000000IF 1<2 PRINT "we are good" ELSE PRINT "it rains upside down" ENDIF IF 1>2 PRINT "it rains upside down" ELSE PRINT "we are good" ENDIF feenox-1.1/tests/flux.dat0000644000175000017500000001536114773607165012420 000000000000000 1 0 0.0625 1 1e-07 0.125 1 0 0.25 1 0 0.5 1 1e-07 1 1 1e-07 2 1 1e-07 4 1 1e-07 5 1 1e-07 5.00781 1.00001 1.5625e-07 5.00997 1.00002 1.99401e-07 5.01213 1.00002 2.42551e-07 5.01407 1.00003 2.81387e-07 5.01601 1.00003 3.20222e-07 5.01795 1.00004 3.59058e-07 5.02184 1.00005 4.36729e-07 5.02572 1.00006 5.144e-07 5.03349 1.00008 6.69742e-07 5.04028 1.00011 8.05679e-07 5.04708 1.00013 9.41616e-07 5.05388 1.00015 1.07755e-06 5.06747 1.00019 1.34943e-06 5.08107 1.00023 1.6213e-06 5.10825 1.00032 2.16505e-06 5.13544 1.00041 2.7088e-06 5.16263 1.0005 3.25255e-06 5.18981 1.00058 3.7963e-06 5.24419 1.00076 4.88379e-06 5.29856 1.00095 5.97129e-06 5.35294 1.00113 7.05879e-06 5.40731 1.00132 8.14628e-06 5.46169 1.00151 9.23378e-06 5.53305 1.00177 1.0661e-05 5.60441 1.00203 1.20883e-05 5.67578 1.0023 1.35155e-05 5.74714 1.00256 1.49428e-05 5.8185 1.00284 1.637e-05 5.88986 1.00311 1.77973e-05 5.96123 1.0034 1.92245e-05 6.03259 1.00368 2.06518e-05 6.10395 1.00397 2.2079e-05 6.17531 1.00426 2.35062e-05 6.24667 1.00456 2.49335e-05 6.3894 1.00516 2.7788e-05 6.53212 1.00578 3.06425e-05 6.67485 1.00641 3.3497e-05 6.81757 1.00705 3.63515e-05 6.9603 1.00771 3.9206e-05 7.10302 1.00838 4.20604e-05 7.24575 1.00906 4.49149e-05 7.38847 1.00976 4.77694e-05 7.5312 1.01047 5.06239e-05 7.67392 1.01119 5.34784e-05 7.81665 1.01192 5.63329e-05 7.95937 1.01267 5.91874e-05 8.10209 1.01342 6.20419e-05 8.24482 1.01419 6.48964e-05 8.38754 1.01497 6.77509e-05 8.53027 1.01576 7.06054e-05 8.67299 1.01656 7.34599e-05 8.81572 1.01738 7.63144e-05 8.95844 1.01821 7.91689e-05 9.10117 1.01904 8.20233e-05 9.22962 1.01981 8.45924e-05 9.35807 1.02058 8.71614e-05 9.48652 1.02136 8.97305e-05 9.61498 1.02215 9.22995e-05 9.87188 1.02376 9.74376e-05 9.93611 1.02417 9.87221e-05 9.96822 1.02437 9.93644e-05 9.98428 1.02448 9.97855e-05 9.9923 1.02453 9.99461e-05 9.99687 1.02456 0.000100038 9.99998 1.02458 0.0001001 10.0022 1.02459 0.0001 10.0044 1.0246 9.99644e-05 10.0066 1.02461 9.99995e-05 10.0088 1.02462 0.0001 10.0132 1.02464 0.0001 10.0175 1.02465 0.0001 10.0219 1.02467 0.0001 10.0263 1.02468 0.0001 10.0307 1.02469 0.0001 10.0395 1.02472 0.0001 10.0473 1.02475 0.0001 10.0628 1.0248 0.0001 10.0783 1.02485 0.0001 10.1093 1.02494 0.0001 10.1373 1.02503 0.0001 10.1652 1.02512 0.0001 10.1931 1.0252 0.0001 10.2211 1.02529 0.0001 10.2769 1.02546 0.0001 10.3272 1.02561 0.0001 10.3775 1.02576 0.0001 10.4278 1.02591 0.0001 10.4781 1.02606 0.0001 10.5284 1.0262 0.0001 10.5786 1.02635 0.0001 10.6289 1.02649 0.0001 10.7295 1.02678 0.0001 10.83 1.02706 0.0001 10.9306 1.02734 0.0001 11.0312 1.02762 0.0001 11.1317 1.02789 0.0001 11.2323 1.02816 0.0001 11.3328 1.02843 0.0001 11.4334 1.02869 0.0001 11.6345 1.02922 0.0001 11.8155 1.02968 0.0001 11.9965 1.03014 0.0001 12.1776 1.03059 0.0001 12.3586 1.03104 0.0001 12.5396 1.03148 0.0001 12.7206 1.03192 0.0001 12.9016 1.03235 0.0001 13.0826 1.03278 0.0001 13.2636 1.03321 0.0001 13.6256 1.03404 0.0001 13.9877 1.03486 0.0001 14.3497 1.03567 0.0001 14.7117 1.03647 0.0001 15.0737 1.03725 0.0001 15.4357 1.03802 0.0001 15.7978 1.03878 0.0001 16.1598 1.03954 0.0001 16.5218 1.04028 0.0001 16.8838 1.04101 0.0001 17.2458 1.04173 0.0001 17.9699 1.04316 0.0001 18.6215 1.04441 0.0001 19.2731 1.04565 0.0001 19.9248 1.04686 0.0001 20.5764 1.04806 0.0001 21.228 1.04923 0.0001 21.8797 1.0504 0.0001 22.5313 1.05154 0.0001 23.183 1.05268 0.0001 24.4862 1.05491 0.0001 25.7895 1.0571 0.0001 27.0928 1.05925 0.0001 28.396 1.06136 0.0001 29.6993 1.06345 0.0001 29.7808 1.06358 0.0001001 29.9437 1.06384 9.99e-05 29.9739 1.06389 0.0001001 29.9875 1.06391 0.0001001 30.0147 1.06392 9.97065e-05 30.0187 1.06392 9.96254e-05 30.0206 1.06391 9.95889e-05 30.0242 1.06391 9.95159e-05 30.0279 1.0639 9.9441e-05 30.0315 1.0639 9.93703e-05 30.0352 1.06389 9.92969e-05 30.0388 1.06388 9.92239e-05 30.0425 1.06388 9.91509e-05 30.0461 1.06387 9.90779e-05 30.0498 1.06386 9.90049e-05 30.0571 1.06385 9.88589e-05 30.0644 1.06384 9.87129e-05 30.079 1.06381 9.84209e-05 30.0936 1.06378 9.81289e-05 30.1082 1.06376 9.78369e-05 30.1374 1.0637 9.72529e-05 30.1666 1.06365 9.66688e-05 30.1958 1.06359 9.60848e-05 30.2542 1.06347 9.49168e-05 30.3126 1.06335 9.37488e-05 30.371 1.06323 9.25808e-05 30.4294 1.0631 9.14127e-05 30.4878 1.06297 9.02447e-05 30.5462 1.06283 8.90767e-05 30.6046 1.0627 8.79087e-05 30.7214 1.06241 8.55726e-05 30.8191 1.06217 8.36178e-05 30.9169 1.06191 8.16629e-05 31.0146 1.06165 7.9708e-05 31.1123 1.06138 7.77532e-05 31.2101 1.0611 7.57983e-05 31.3078 1.06082 7.38435e-05 31.5033 1.06023 6.99338e-05 31.6792 1.05967 6.6415e-05 31.8552 1.0591 6.28963e-05 32.0311 1.05851 5.93775e-05 32.2071 1.0579 5.58588e-05 32.383 1.05726 5.234e-05 32.5589 1.05662 4.88213e-05 32.7349 1.05595 4.53025e-05 32.9108 1.05526 4.17838e-05 33.0867 1.05456 3.8265e-05 33.2627 1.05384 3.47463e-05 33.4386 1.05311 3.12276e-05 33.6146 1.05235 2.77088e-05 33.7905 1.05159 2.41901e-05 33.9664 1.0508 2.06713e-05 34.1424 1.05 1.71526e-05 34.3183 1.04919 1.36338e-05 34.4942 1.04836 1.01151e-05 34.6702 1.04752 6.59634e-06 34.7582 1.04709 4.83696e-06 34.9341 1.04623 1.31822e-06 34.9781 1.04601 4.3853e-07 35.0001 1.0459 0 35.0008 1.04589 0 35.0021 1.04589 0 35.0032 1.04588 0 35.0043 1.04588 0 35.0053 1.04588 0 35.0075 1.04587 0 35.0096 1.04587 0 35.0138 1.04586 0 35.0175 1.04585 0 35.0211 1.04584 0 35.0248 1.04583 0 35.0284 1.04583 0 35.032 1.04582 0 35.0357 1.04582 0 35.0429 1.0458 0 35.0502 1.04579 0 35.0648 1.04576 0 35.0779 1.04574 0 35.091 1.04572 0 35.1172 1.04567 0 35.1434 1.04563 0 35.1957 1.04554 0 35.2481 1.04546 0 35.3005 1.04537 0 35.3529 1.04529 0 35.4053 1.04521 0 35.4577 1.04513 0 35.5101 1.04505 0 35.6148 1.0449 0 35.7075 1.04477 0 35.8001 1.04464 0 35.8928 1.04452 0 35.9854 1.04439 0 36.0781 1.04427 0 36.1707 1.04416 0 36.356 1.04393 0 36.5228 1.04373 0 36.6895 1.04353 0 36.8563 1.04335 0 37.023 1.04316 0 37.1898 1.04299 0 37.3566 1.04281 0 37.5233 1.04264 0 37.6901 1.04248 0 37.8568 1.04232 0 38.0236 1.04216 0 38.1904 1.04201 0 38.3571 1.04186 0 38.5239 1.04171 0 38.6907 1.04156 0 38.8574 1.04142 0 39.0242 1.04129 0 39.1909 1.04115 0 39.3577 1.04102 0 39.5245 1.04089 0 39.858 1.04064 0 40.1915 1.04039 0 40.525 1.04016 0 40.8585 1.03993 0 41.1921 1.03972 0 41.5256 1.03951 0 41.8591 1.03931 0 42.5261 1.03893 0 43.1932 1.03857 0 43.8602 1.03824 0 44.5273 1.03793 0 45.1943 1.03764 0 45.8614 1.03736 0 47.1954 1.03686 0 48.3666 1.03647 0 49.5378 1.03611 0 50.709 1.03579 0 51.8802 1.0355 0 53.0514 1.03523 0 54.2226 1.03498 0 55.3938 1.03475 0 56.565 1.03455 0 57.7362 1.03435 0 58.9074 1.03417 0 60.0786 1.03401 0 61.2498 1.03386 0 62.421 1.03372 0 63.5922 1.03358 0 64.7634 1.03346 0 65.9346 1.03334 0 68.277 1.03314 0 70.6194 1.03296 0 72.9618 1.03279 0 75.3042 1.03265 0 77.6466 1.03253 0 79.989 1.03242 0 82.3314 1.03232 0 84.6738 1.03223 0 87.0162 1.03214 0 89.3585 1.03207 0 91.7009 1.032 0 94.0433 1.03194 0 96.3857 1.03189 0 98.7281 1.03184 0 100 1.03181 1e-07 feenox-1.1/tests/single-arc.geo0000644000175000017500000000025714773607165013466 00000000000000Point(1) = {0, 0, 0}; Point(2) = {1, 0, 0}; Point(3) = {0, 1, 0}; Circle(1) = {2, 1, 3}; Transfinite Curve {1} = 2; Mesh.ElementOrder = 2; Physical Curve("quarter", 2) = {1}; feenox-1.1/tests/la-p09-PUb-H2O_1-1-0-CY.fee0000644000175000017500000000046314773607165014526 00000000000000# Los Alamos LA-13511 Analytical Benchmakr Test Set for Criticallity Code Verification # problem 9 PROBLEM neutron_sn 2D GROUPS 1 SN 8 READ_MESH $0.msh INCLUDE Pu-239b.fee INCLUDE H2O.fee BC mirror mirror BC vacuum vacuum sn_alpha = 0.65 SOLVE_PROBLEM PRINT keff-1.00005 # WRITE_RESULTS FILE pepe.msh feenox-1.1/tests/nafems-le1-3.msh0000644000175000017500000001512614773607165013550 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 9 0 1 "A" 0 2 "B" 0 3 "C" 0 4 "D" 1 5 "AB" 1 6 "BC" 1 7 "CD" 1 8 "DA" 2 9 "bulk" $EndPhysicalNames $Entities 4 4 1 0 1 6.123233995736766e-14 1000 0 1 1 2 9.950255243072245e-14 2750 0 1 2 3 3250 0 0 1 3 4 2000 0 0 1 4 1 -1e-07 999.9999999 -1e-07 1e-07 2750.0000001 1e-07 1 5 2 1 -2 2 -9.999985195463523e-08 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 6 2 3 -2 3 1999.9999999 -1e-07 -1e-07 3250.0000001 1e-07 1e-07 1 7 2 3 -4 4 -9.999985195463523e-08 -1.000000224848918e-07 -1e-07 2000.0000001 1000.0000001 1e-07 1 8 2 4 -1 1 -1.000000793283107e-07 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 9 4 1 -2 3 4 $EndEntities $Nodes 9 117 1 117 0 1 0 1 1 6.123233995736766e-14 1000 0 0 2 0 1 2 9.950255243072245e-14 2750 0 0 3 0 1 3 3250 0 0 0 4 0 1 4 2000 0 0 1 1 0 7 5 6 7 8 9 10 11 0 1434.232387780806 0 0 1870.635937451771 0 0 2309.221504784242 0 0 1217.116193890403 0 0 1652.434162616289 0 0 2089.928721118007 0 0 2529.610752392121 0 1 2 0 11 12 13 14 15 16 17 18 19 20 21 22 3122.462036085646 762.8211063815952 0 2760.436694568109 1451.465694415729 0 2214.818610289794 2012.544242367443 0 1542.004361425019 2420.757654968403 0 790.4638145833807 2667.420913683683 0 3217.713710984367 386.6640467349545 0 2967.748292699926 1120.944705687722 0 2506.599310405891 1750.426233039374 0 1890.644312601312 2236.787179861301 0 1172.987393778596 2564.64199776051 0 397.3919830891709 2729.364896783245 0 1 3 0 7 23 24 25 26 27 28 29 2935.158217794536 0 0 2621.882812463697 0 0 2310.165991177719 0 0 3092.579108897268 0 0 2778.520515129116 0 0 2466.024401820708 0 0 2155.082995588859 0 0 1 4 0 11 30 31 32 33 34 35 36 37 38 39 40 1861.446094820848 365.7247722250347 0 1559.233579327545 626.2568652512748 0 1196.780614328439 801.2047430538036 0 808.4029301048257 914.669981823763 0 407.2395142007033 979.0500469937141 0 1961.850933064361 194.3842306068678 0 1721.609433414114 508.9353983511886 0 1382.350556681957 722.6871623394666 0 1004.573648941004 864.701073182715 0 608.7371269160137 952.5543436353169 0 203.891146165294 994.7899778992804 0 2 1 0 77 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 502.3300301855381 1397.990225787693 0 990.4335021784177 1288.379722679649 0 1449.389225604628 1101.777796300221 0 1857.291463218973 831.0182368467947 0 2174.345502280971 464.257394712871 0 597.8959987819819 1819.025105443216 0 1173.374227174532 1663.958012219458 0 1703.260880027457 1403.853714800613 0 2156.839636644623 1036.803415292877 0 2488.809406913281 563.2826803089997 0 693.9397972024943 2242.165159413261 0 1357.229655759425 2041.414193132276 0 1958.401892672171 1707.440012833444 0 2457.885550878158 1243.617519590274 0 2804.845631006595 662.8030923134188 0 203.6197571003515 1206.64121738726 0 251.1650150927692 1416.11130678425 0 454.7847721931207 1188.520136390704 0 655.3664801451819 1156.330103805728 0 746.3817661819779 1343.184974233671 0 899.4182161416218 1101.524852251706 0 1093.607058253428 1044.792232866726 0 1219.911363891523 1195.078759489935 0 1323.084919966533 951.4912696770125 0 1504.311402466086 864.0173307757481 0 1653.3403444118 966.398016573508 0 1708.262521273259 728.6375510490348 0 1859.368779019911 598.3715045359147 0 2015.818482749972 647.6378157798329 0 2017.89579855091 414.9910834689529 0 2087.172751140485 232.1286973564356 0 2242.255746729345 232.1286973564356 0 251.1650150927692 1634.313081619732 0 298.9479993909911 1844.830521447493 0 550.11301448376 1608.507665615454 0 794.1647504801998 1553.702414061432 0 885.6351129782569 1741.491558831337 0 1081.903864676475 1476.168867449554 0 1311.38172638958 1382.86790425984 0 1438.317553600994 1533.905863510036 0 1576.325052816042 1252.815755550417 0 1780.276171623215 1117.435975823704 0 1930.05025833604 1220.328565046745 0 2007.065549931798 933.9108260698358 0 2165.592569462797 750.530405002874 0 2322.824521778952 800.0430478009382 0 2331.577454597126 513.7700375109354 0 2399.4876990455 281.6413401544999 0 2555.346109688489 281.6413401544999 0 298.9479993909911 2064.123305113729 0 346.9698986012472 2275.693332098752 0 645.9178979922381 2030.595132428238 0 933.6570121885131 1953.06158581636 0 1025.58472648096 2141.789676272769 0 1265.301941466979 1852.686102675867 0 1530.245267893441 1722.633953966445 0 1657.815774215798 1874.42710298286 0 1830.831386349814 1555.646863817029 0 2057.620764658397 1372.12171406316 0 2208.143721775165 1475.528766211859 0 2307.362593761391 1140.210467441575 0 2473.34747889572 903.450099949637 0 2631.365590942377 953.2103059518465 0 2646.827518959938 613.0428863112093 0 2713.364221735146 331.4015461567094 0 2870.001924400565 331.4015461567094 0 346.9698986012472 2496.082579706631 0 742.2018058929375 2454.793036548472 0 1073.846735171403 2354.41755340798 0 1449.617008592222 2231.08592405034 0 1750.203127048595 2064.098833900924 0 2086.610251480983 1859.992127600443 0 2336.352080583976 1628.080880978858 0 2609.161122723133 1347.541607003002 0 2782.641162787352 1057.134393364574 0 2963.653833546121 712.812099347507 0 3028.810126940091 381.4105531907976 0 $EndNodes $Elements 9 72 1 72 0 1 15 1 1 1 0 2 15 1 2 2 0 3 15 1 3 3 0 4 15 1 4 4 1 1 8 4 5 1 5 8 6 5 6 9 7 6 7 10 8 7 2 11 1 2 8 6 9 3 12 17 10 12 13 18 11 13 14 19 12 14 15 20 13 15 16 21 14 16 2 22 1 3 8 4 15 3 23 26 16 23 24 27 17 24 25 28 18 25 4 29 1 4 8 6 19 4 30 35 20 30 31 36 21 31 32 37 22 32 33 38 23 33 34 39 24 34 1 40 2 1 9 48 25 1 5 34 8 56 40 26 34 5 41 56 57 58 27 34 41 33 58 59 39 28 33 41 42 59 60 61 29 33 42 32 61 62 38 30 32 42 43 62 63 64 31 32 43 31 64 65 37 32 31 43 44 65 66 67 33 31 44 30 67 68 36 34 30 44 45 68 69 70 35 30 45 4 70 71 35 36 4 45 25 71 72 29 37 5 6 41 9 73 57 38 41 6 46 73 74 75 39 41 46 42 75 76 60 40 42 46 47 76 77 78 41 42 47 43 78 79 63 42 43 47 48 79 80 81 43 43 48 44 81 82 66 44 44 48 49 82 83 84 45 44 49 45 84 85 69 46 45 49 50 85 86 87 47 45 50 25 87 88 72 48 25 50 24 88 89 28 49 6 7 46 10 90 74 50 46 7 51 90 91 92 51 46 51 47 92 93 77 52 47 51 52 93 94 95 53 47 52 48 95 96 80 54 48 52 53 96 97 98 55 48 53 49 98 99 83 56 49 53 54 99 100 101 57 49 54 50 101 102 86 58 50 54 55 102 103 104 59 50 55 24 104 105 89 60 24 55 23 105 106 27 61 7 2 51 11 107 91 62 51 2 16 107 22 108 63 51 16 52 108 109 94 64 52 16 15 109 21 110 65 52 15 53 110 111 97 66 53 15 14 111 20 112 67 53 14 54 112 113 100 68 54 14 13 113 19 114 69 54 13 55 114 115 103 70 55 13 12 115 18 116 71 55 12 23 116 117 106 72 23 12 3 117 17 26 $EndElements feenox-1.1/tests/nafems-le11-hex27.geo0000644000175000017500000000032314773607165014400 00000000000000Mesh.SecondOrderLinear = 0; // curved Mesh.ElementOrder = 2; // 2nd order Mesh.SecondOrderIncomplete = 0; // 27-noded Mesh.RecombineAll = 1; // hexahedra Merge "nafems-le11.geo"; feenox-1.1/tests/la-p06-PUb-1-0-SL.geo0000644000175000017500000000043314773607165013730 00000000000000rc = 2.256751; n = 40; SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {rc, 0, 0}; Line(1) = {1, 2}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = rc/n; Mesh.ElementOrder = 1; Physical Curve("fuel") = {1}; Physical Point("mirror") = {1}; Physical Point("vacuum") = {2}; feenox-1.1/tests/U-235.fee0000644000175000017500000000110314773607165012131 00000000000000# material U-235 (tables 33 and 34) # NOTE: 1 is the slow energy group and 2 is the fast energy group # fast-energy group nu2_fuel = 2.70 Sigma_f2_fuel = 0.06192 nuSigma_f2_fuel = nu2_fuel*Sigma_f2_fuel Sigma_s2.2_fuel = 0.078240 Sigma_s2.1_fuel = 0.0720 # note the table has the indexes reversed! Sigma_t2_fuel = 0.2160 chi[2] = 0.575 # slow energy group nu1_fuel = 2.50 Sigma_f1_fuel = 0.06912 nuSigma_f1_fuel = nu1_fuel*Sigma_f1_fuel Sigma_s1.1_fuel = 0.26304 Sigma_s1.2_fuel = 0 # note the table has the indexes reversed! Sigma_t1_fuel = 0.3456 chi[1] = 0.425 feenox-1.1/tests/reed.geo0000644000175000017500000000262514773607165012362 00000000000000/* | | | | | | m | src= 50 | 0 | 0 | 1 | 0 | v i | | | | | | a r | tot= 50 | 5 | 0 | 1 | 1 | c r | | | | | | u o | scat=0 | 0 | 0 | 0.9| 0.9 | u r | | | | | | m | | | | | | | 1 | 2 | 3 | 4 | 5 | | | | | | | +---------+----+---------+----+---------+-------> x x=0 x=2 x=3 x=5 x=6 x=8 */ lc0 = 0.1; f = 0.1; Point(1) = {0, 0, 0, f*lc0}; Point(2) = {2, 0, 0, f*lc0}; Point(3) = {3, 0, 0, f*lc0}; Point(4) = {5, 0, 0, f*lc0}; Point(5) = {6, 0, 0, f*lc0}; Point(6) = {8, 0, 0, f*lc0}; Point(11) = {1, 0, 0, lc0}; Point(12) = {2.5, 0, 0, lc0}; Point(13) = {4, 0, 0, lc0}; Point(14) = {5.5, 0, 0, lc0}; Point(15) = {7, 0, 0, lc0}; Line(1) = {1, 11}; Line(11) = {11, 2}; Line(2) = {2, 12}; Line(12) = {12, 3}; Line(3) = {3, 13}; Line(13) = {13, 4}; Line(4) = {4, 14}; Line(14) = {14, 5}; Line(5) = {5, 15}; Line(15) = {15, 6}; Physical Line("source_abs") = {1,11}; Physical Line("absorber") = {2,12}; Physical Line("void") = {3,13}; Physical Line("source_scat") = {4,14}; Physical Line("reflector") = {5,15}; Physical Point("left") = {1}; Physical Point("right") = {6}; feenox-1.1/tests/square22.msh0000644000175000017500000000131314773607165013115 00000000000000$MeshFormat 2.2 0 8 $EndMeshFormat $PhysicalNames 5 1 1 "left" 1 2 "right" 1 3 "bottom" 1 4 "up" 2 5 "bulk" $EndPhysicalNames $Nodes 12 1 0 0 0 2 1 0 0 3 1 1 0 4 0 1 0 5 0.5 0 0 6 1 0.5 0 7 0.5 1 0 8 0 0.5 0 9 0.25 0.25 0 10 0.625 0.3750000000000001 0 11 0.71875 0.7187500000000001 0 12 0.345703125 0.654296875 0 $EndNodes $Elements 22 1 1 2 3 1 1 5 2 1 2 3 1 5 2 3 1 2 2 2 2 6 4 1 2 2 2 6 3 5 1 2 4 3 3 7 6 1 2 4 3 7 4 7 1 2 1 4 4 8 8 1 2 1 4 8 1 9 2 2 5 1 2 10 5 10 2 2 5 1 6 10 2 11 2 2 5 1 4 12 7 12 2 2 5 1 8 12 4 13 2 2 5 1 3 11 6 14 2 2 5 1 7 11 3 15 2 2 5 1 5 9 1 16 2 2 5 1 1 9 8 17 2 2 5 1 10 12 9 18 2 2 5 1 9 12 8 19 2 2 5 1 5 10 9 20 2 2 5 1 11 12 10 21 2 2 5 1 7 12 11 22 2 2 5 1 6 11 10 $EndElements feenox-1.1/tests/reflected.msh0000644000175000017500000000677514773607165013427 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 5 0 4 "left" 0 5 "right" 1 1 "left_refl" 1 2 "fuel" 1 3 "right_refl" $EndPhysicalNames $Entities 4 3 0 0 1 -40 0 0 1 4 2 0 0 0 0 3 100 0 0 0 4 140 0 0 1 5 1 -40 0 0 0 0 0 1 1 2 1 -2 2 0 0 0 100 0 0 1 2 2 2 -3 3 100 0 0 140 0 0 1 3 2 3 -4 $EndEntities $Nodes 7 91 1 91 0 1 0 1 1 -40 0 0 0 2 0 1 2 0 0 0 0 3 0 1 3 100 0 0 0 4 0 1 4 140 0 0 1 1 0 19 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 -37.99999999999999 0 0 -35.99999999999999 0 0 -33.99999999999999 0 0 -31.99999999999998 0 0 -29.99999999999998 0 0 -27.99999999999998 0 0 -25.99999999999997 0 0 -23.99999999999996 0 0 -21.99999999999996 0 0 -19.99999999999996 0 0 -17.99999999999995 0 0 -15.99999999999995 0 0 -13.99999999999995 0 0 -11.99999999999994 0 0 -9.999999999999936 0 0 -7.999999999999929 0 0 -5.99999999999995 0 0 -3.999999999999964 0 0 -1.999999999999986 0 0 1 2 0 49 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 1.999999999992155 0 0 3.999999999984052 0 0 5.999999999975566 0 0 7.999999999968399 0 0 9.999999999961574 0 0 11.99999999995462 0 0 13.99999999994526 0 0 15.99999999993488 0 0 17.9999999999245 0 0 19.99999999991412 0 0 21.99999999990374 0 0 23.99999999989335 0 0 25.99999999988297 0 0 27.99999999987259 0 0 29.99999999986221 0 0 31.99999999985316 0 0 33.99999999984982 0 0 35.99999999984654 0 0 37.99999999984326 0 0 39.99999999983999 0 0 41.99999999983671 0 0 43.99999999983343 0 0 45.99999999983015 0 0 47.99999999982686 0 0 49.99999999982359 0 0 51.99999999982031 0 0 53.99999999981704 0 0 55.99999999981375 0 0 57.99999999981047 0 0 59.99999999980719 0 0 61.99999999980393 0 0 63.99999999980319 0 0 65.99999999981392 0 0 67.99999999982487 0 0 69.99999999983582 0 0 71.99999999984675 0 0 73.99999999985771 0 0 75.99999999986865 0 0 77.99999999987959 0 0 79.99999999989055 0 0 81.99999999990149 0 0 83.99999999991243 0 0 85.99999999992338 0 0 87.99999999993432 0 0 89.99999999994527 0 0 91.9999999999562 0 0 93.99999999996716 0 0 95.99999999997809 0 0 97.99999999998906 0 0 1 3 0 19 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 102.0000000000214 0 0 104.0000000000427 0 0 106.0000000000641 0 0 108.0000000000855 0 0 110.0000000001069 0 0 112.0000000001282 0 0 114.0000000001496 0 0 116.000000000171 0 0 118.0000000001923 0 0 120.0000000002137 0 0 122.0000000002351 0 0 124.0000000002565 0 0 126.0000000002778 0 0 128.0000000002959 0 0 130.0000000002484 0 0 132.0000000001987 0 0 134.000000000149 0 0 136.0000000000994 0 0 138.0000000000497 0 0 $EndNodes $Elements 5 92 1 92 0 1 15 1 1 1 0 4 15 1 2 4 1 1 1 20 3 1 5 4 5 6 5 6 7 6 7 8 7 8 9 8 9 10 9 10 11 10 11 12 11 12 13 12 13 14 13 14 15 14 15 16 15 16 17 16 17 18 17 18 19 18 19 20 19 20 21 20 21 22 21 22 23 22 23 2 1 2 1 50 23 2 24 24 24 25 25 25 26 26 26 27 27 27 28 28 28 29 29 29 30 30 30 31 31 31 32 32 32 33 33 33 34 34 34 35 35 35 36 36 36 37 37 37 38 38 38 39 39 39 40 40 40 41 41 41 42 42 42 43 43 43 44 44 44 45 45 45 46 46 46 47 47 47 48 48 48 49 49 49 50 50 50 51 51 51 52 52 52 53 53 53 54 54 54 55 55 55 56 56 56 57 57 57 58 58 58 59 59 59 60 60 60 61 61 61 62 62 62 63 63 63 64 64 64 65 65 65 66 66 66 67 67 67 68 68 68 69 69 69 70 70 70 71 71 71 72 72 72 3 1 3 1 20 73 3 73 74 73 74 75 74 75 76 75 76 77 76 77 78 77 78 79 78 79 80 79 80 81 80 81 82 81 82 83 82 83 84 83 84 85 84 85 86 85 86 87 86 87 88 87 88 89 88 89 90 89 90 91 90 91 92 91 4 $EndElements feenox-1.1/tests/ud20-1-0-sl-vacuum.fee0000644000175000017500000000045014773607165014401 00000000000000PROBLEM neutron_diffusion 1d READ_MESH ud20-1-0-sl.msh a = 2 * 10.371065 # critical size of the problem UD20-1-0-SL (number 22 report Los Alamos) Sigma_t1 = 0.54628 Sigma_s1.1 = 0.464338 nuSigma_f1 = 1.70*0.054628 D1 = 1/(3*Sigma_t1) BC left vacuum BC right vacuum SOLVE_PROBLEM PRINT keff feenox-1.1/tests/arguments_bracketed.fee0000644000175000017500000000002414773607165015430 00000000000000PRINT 1${1}1$(1)1$1 feenox-1.1/tests/hello_mpi.fee0000644000175000017500000000003714773607165013373 00000000000000PRINTF_ALL "Hello MPI World!" feenox-1.1/tests/nafems-le10.sh0000755000175000017500000000046614773607165013317 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkgmsh gmsh -v 0 -3 ${dir}/nafems-le10.geo || exit $? answerdiff nafems-le10.fee exitifwrong $? feenox-1.1/tests/parallelepiped.sh0000755000175000017500000000102514773607165014262 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkgmsh gmsh -v 0 -3 ${dir}/parallelepiped.geo -order 2 || exit $? answerzero parallelepiped.fee exitifwrong $? gmsh -v 0 -3 ${dir}/parallelepiped.geo -order 1 -clscale 2 -o parallelepiped-coarse.msh || exit $? answerzero parallelepiped-thermal.fee exitifwrong $? answerzero parallelepiped-from-msh.fee exitifwrong $? feenox-1.1/tests/la-p07-PUb-1-0-CY.fee0000644000175000017500000000051414773607165013713 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 7 PROBLEM neutron_sn 2D GROUPS 1 SN 6 READ_MESH $0.msh INCLUDE Pu-239b.fee BC mirror mirror BC vacuum vacuum sn_alpha = 0.1 SOLVE_PROBLEM rc = 4.279960 PRINT %.2f keff phi1(0.50*rc,0)/phi1(0,0) phi1(1.00*rc,0)/phi1(0,0) SEP " " feenox-1.1/tests/data1d.dat0000644000175000017500000000004714773607165012573 00000000000000# comments are ignored 0 0 1 1 2 4 3 9 feenox-1.1/tests/pellet-nonlinear-guess.fee0000644000175000017500000000134414773607165016021 00000000000000# https://www.nuclear-power.com/nuclear-engineering/heat-transfer/heat-generation/temperature-profile-nuclear-fuel/ PROBLEM thermal 3D READ_MESH pellet.msh # https://www.nuclear-power.com/nuclear-engineering/heat-transfer/thermal-conduction/thermal-conductivity/thermal-conductivity-of-uranium-dioxide/ # T is in Celsius, T' is in Kelvin VAR T' tau(T') = (T'+273.15)/1000 cond(T') = 100/(7.5408 + 17.692*tau(T') + 3.614*tau(T')^2) + 6400/(tau(T')^(5/2))*exp(-16.35/tau(T')) # k is in W/(m K) k(x,y,z) = cond(T(x,y,z)) # q is in W / m^3 = 300 W/cm * 100 cm/m / area r = 4e-3 q = 300 * 100 / (pi*r^2) BC symmetry q=0 BC external T=420 T_guess(x,y,z) = 800 SOLVE_PROBLEM PRINT %.0f T_max-1115 # WRITE_MESH pellet-nonlinear-guess.vtk T feenox-1.1/tests/xfail-few-properties-ortho-poisson.sh0000755000175000017500000000042114773607165020173 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical answer xfail-few-properties-ortho-poisson.fee "0.41" exit $? feenox-1.1/tests/map-cube-create.fee0000644000175000017500000000035014773607165014353 00000000000000READ_MESH map-cube-$1.msh # read the base mesh INCLUDE map-function.fee # read analytical f(x,y,z) WRITE_MESH map-cube-$1-src.msh %.10f f # evaluate it at the nodes and write it into a "source" mesh feenox-1.1/tests/function_over_mesh.fee0000644000175000017500000000030614773607165015316 00000000000000READ_MESH tet1.msh DIM 3 FUNCTION f(x,y,z) MESH tet1.msh vec_f[i] = 1*vec_f_x[i] + 2*vec_f_y[i] + 3*vec_f_z[i] # PRINT_FUNCTION f # PRINT_VECTOR vec_f_x vec_f_y vec_f_z vec_f PRINT f(0.1,0.1,0.1) feenox-1.1/tests/la-p09-PUb-H2O_1-1-0-CY.geo0000644000175000017500000000210414773607165014533 00000000000000rc = 3.397610; h_refl = 3.063725; n = 20; SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {rc, 0, 0}; Point(3) = {0, rc, 0}; Point(4) = {rc+h_refl, 0, 0}; Point(5) = {0, rc+h_refl, 0}; Line(1) = {3, 1}; Line(2) = {1, 2}; Circle(3) = {2, 1, 3}; Curve Loop(1) = {3, 1, 2}; Plane Surface(1) = {1}; Line(4) = {2, 4}; Line(5) = {5, 3}; Circle(6) = {4, 1, 5}; Curve Loop(2) = {4, 6, 5, -3}; Plane Surface(2) = {2}; Physical Surface("fuel") = {1}; Physical Surface("refl") = {2}; Physical Curve("mirror", 7) = {5, 1, 2, 4}; Physical Curve("vacuum", 8) = {6}; Mesh.MeshSizeMax = rc/(0.5*n); Mesh.MeshSizeMin = rc/(2*n); Mesh.Optimize = 1; //Mesh.OptimizeNetgen = 1; // 8 does not work in ubuntu (why not?) //Mesh.Algorithm = 8; Mesh.Algorithm = 6; Mesh.ElementOrder = 1; Mesh.RecombineAll = 1; // local refinements Field[1] = Distance; Field[1].EdgesList = {3}; Field[2] = Threshold; Field[2].IField = 1; Field[2].LcMin = Mesh.MeshSizeMin; Field[2].LcMax = Mesh.MeshSizeMax; Field[2].DistMin = 4*Mesh.MeshSizeMin; Field[2].DistMax = 8*Mesh.MeshSizeMin; Background Field = {2}; feenox-1.1/tests/assignment_scalar.fee0000644000175000017500000000004214773607165015114 00000000000000a = 1 b = 2 c = a + b PRINT a b c feenox-1.1/tests/beam-cantilever-tet4.geo0000644000175000017500000000011514773607165015347 00000000000000Mesh.ElementOrder = 1; Mesh.RecombineAll = 0; Merge "beam-cantilever.geo"; feenox-1.1/tests/thermal-slab-wrong-bc.fee0000644000175000017500000000075114773607165015515 00000000000000READ_MESH slab.msh # read mesh in Gmsh's v4.1 format PROBLEM thermal DIMENSIONS 1 # tell FeenoX what we want to solve k = 1 # set uniform conductivity BC xxx T=0 # set fixed temperatures as BCs BC right T=1 # "left" and "right" are defined in the mesh SOLVE_PROBLEM # tell FeenoX we are ready to solve the problem PRINT T(0.5) # ask for the temperature at x=0.5 feenox-1.1/tests/los-alamos.sh0000755000175000017500000000427614773607165013361 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi # skip in problematic architectures arch=$(uname -m) if [ "x${arch}" = "xalpha" ] || [ "x${arch}" = "xs390x" ] ; then exit 77 fi checkgmsh checkslepc checkpde neutron_sn # one group gmsh -v 0 -1 ${dir}/la-IN.geo || exit $? answerzero la-p01-PUa-1-0-IN.fee exitifwrong $? gmsh -v 0 -1 ${dir}/la-p02-PUa-1-0-SL.geo || exit $? answerzero la-p02-PUa-1-0-SL.fee exitifwrong $? gmsh -v 0 -1 ${dir}/la-p03-PUa-H2O_1-1-0-SL.geo || exit $? answerzero la-p03-PUa-H2O_1-1-0-SL.fee exitifwrong $? gmsh -v 0 -1 ${dir}/la-p04-PUa-H2O_0.5-1-0-SL.geo || exit $? answerzero la-p04-PUa-H2O_0.5-1-0-SL.fee exitifwrong $? answerzero la-p05-PUb-1-0-IN.fee exitifwrong $? gmsh -v 0 -1 ${dir}/la-p06-PUb-1-0-SL.geo || exit $? answer la-p06-PUb-1-0-SL.fee "0.99 0.97 0.88 0.72 0.49" exitifwrong $? gmsh -v 0 -2 ${dir}/la-p07-PUb-1-0-CY.geo || exit $? answer la-p07-PUb-1-0-CY.fee "1.00 0.81 0.30" exitifwrong $? gmsh -v 0 -3 ${dir}/la-p08-PUb-1-0-SP.geo || exit $? answer la-p08-PUb-1-0-SP.fee "1.0 0.9 0.7 0.5 0.2" exitifwrong $? gmsh -v 0 -2 ${dir}/la-p09-PUb-H2O_1-1-0-CY.geo || exit $? answerzero la-p09-PUb-H2O_1-1-0-CY.fee exitifwrong $? gmsh -v 0 -2 ${dir}/la-p10-PUb-H2O_10-1-0-CY.geo || exit $? answerzero la-p10-PUb-H2O_10-1-0-CY.fee exitifwrong $? # two groups answerzero la-p47-U-2-0-IN.fee exitifwrong $? gmsh -v 0 -1 ${dir}/la-p48-U-2-0-SL.geo || exit $? answerzero la-p48-U-2-0-SL.fee exitifwrong $? gmsh -v 0 -3 ${dir}/la-p49-U-2-0-SP.geo || exit $? answerzero la-p49-U-2-0-SP.fee 2e-3 exitifwrong $? answerzero la-p50-UAl-2-0-IN.fee exitifwrong $? gmsh -v 0 -1 ${dir}/la-p51-UAl-2-0-SL.geo || exit $? answerzero la-p51-UAl-2-0-SL.fee exitifwrong $? # this one fails with out-of-memory in github actions # gmsh -v 0 -3 ${dir}/la-p52-UAl-2-0-SP.geo || exit $? # answerzero la-p52-UAl-2-0-SP.fee # exitifwrong $? answerzero la-p70-URRa-2-1-IN.fee exitifwrong $? # this one gives a different solution in github actions # gmsh -v 0 -1 ${dir}/la-p71-URRa-2-1-SL.geo || exit $? # answerzero la-p71-URRa-2-1-SL.fee # exitifwrong $? feenox-1.1/tests/cube-free-expansion-alpha-of-space-orthotropic.fee0000644000175000017500000000131714773607165022414 00000000000000PROBLEM mechanical READ_MESH cube.msh # the problem has "analytical" solutions if the temperature # and the mechanical properties are uniform T0 = 1 # test non-zero reference temperature T(x,y,z) = 2 E = 1 nu = 0.3 alpha_x(x,y,z) = x alpha_y(x,y,z) = 1-sqrt(abs(y)) alpha_z(x,y,z) = z^2-1/2 BC left u=0 BC front v=0 BC bottom w=0 SOLVE_PROBLEM # subscript a stands for "analytical" u_a = integral(alpha_x(x,y,z) * (T(x,y,z)-T0), x, 0, 1) v_a = integral(alpha_y(x,y,z) * (T(x,y,z)-T0), y, 0, 1) w_a = integral(alpha_z(x,y,z) * (T(x,y,z)-T0), z, 0, 1) PRINT %e (u(1,0,0)-u_a)^2+(v(0,1,0)-v_a)^2+(w(0,0,1)-w_a)^2+(dudx(1,0,0)-alpha_x(1,0,0))^2+(dvdy(0,1,0)-alpha_y(0,1,0))^2+(dwdz(0,0,1)-alpha_z(0,0,1))^2 feenox-1.1/tests/airfoil.msh0000644000175000017500000041315114773607165013105 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 8 0 1 "kutta" 1 2 "circle" 1 3 "bottom" 1 4 "right" 1 5 "top" 1 6 "left" 1 7 "wing" 2 8 "air" $EndPhysicalNames $Entities 56 6 2 0 2 1.950546392348803 -0.3436624584267328 0 0 3 1.894058227714197 -0.331839449729267 0 0 4 1.801974860701859 -0.3107414256145072 0 0 5 1.677000406746373 -0.2797796353042492 0 0 6 1.522542785785011 -0.2389441681834344 0 0 7 1.342515478168753 -0.1888248275228671 0 0 8 1.141140380531515 -0.1305737002812259 0 0 9 0.922770370363427 -0.06581991512010474 0 0 10 0.6917435897679132 0.003448202476835527 0 0 11 0.4522744309639415 0.07501714862375122 0 0 12 0.2083802464373563 0.1465836136180969 0 0 13 -0.03616127598718224 0.2158797170886256 0 0 14 -0.2778312013141623 0.2807805373856097 0 0 15 -0.5133724083669514 0.3393900342611326 0 0 16 -0.7397833646096582 0.3901043902025956 0 0 17 -0.9543079802404868 0.431653821845853 0 0 18 -1.154425356741478 0.4631251016238827 0 0 19 -1.337841803822925 0.4839675569981801 0 0 20 -1.502486314348928 0.4939853853344648 0 0 21 -1.646509806854598 0.4933189210600586 0 0 22 -1.768287855087274 0.4824171602118961 0 0 23 -1.866426278276837 0.4620034827039592 0 0 24 -1.939768809735363 0.4330361730789172 0 0 25 -1.987406042812264 0.3966650563586051 0 0 26 -2.008684928357032 0.3541853486117947 0 0 27 -2.003218232364062 0.3069896732251429 0 0 28 -1.970893530520636 0.2565191099487231 0 0 29 -1.911881498309016 0.2042141197287378 0 0 30 -1.826643435129287 0.1514662200463765 0 0 31 -1.715938123639123 0.0995713703133258 0 0 32 -1.580828254718385 0.04968616320359631 0 0 33 -1.422686724040802 0.002788103479614445 0 0 34 -1.243203102613221 -0.04035851452517991 0 0 35 -1.04439046900388 -0.07922935894390287 0 0 36 -0.8285925281529321 -0.1135574044158252 0 0 37 -0.5984904920188104 -0.1433386060743545 0 0 38 -0.3571085293386865 -0.1688235317477466 0 0 39 -0.1078156959831157 -0.1904926923295557 0 0 40 0.1456788313558759 -0.2090137817978011 0 0 41 0.3993415694227828 -0.225180026694961 0 0 42 0.6488469920755174 -0.239830492139492 0 0 43 0.8896322445134541 -0.2537555657892626 0 0 44 1.116980030551035 -0.2675938538811181 0 0 45 1.326133782698857 -0.2817300392157953 0 0 46 1.512445939281926 -0.296206230191852 0 0 47 1.671555178240895 -0.3106610607310235 0 0 48 1.799582306369149 -0.3243102755040562 0 0 49 1.893328316079382 -0.3359789843137231 0 0 50 1.950453534677508 -0.3441890804497586 0 0 51 2.00890841043739 -0.3547841896531337 0 1 1 52 -20 -10 0 0 53 20 -10 0 0 54 -20 10 0 0 55 20 10 0 0 56 1.969615506024416 -0.3472963553338607 0 0 57 3 0 0 0 6 -3.0000001 -3.0000001 -1e-07 3.0000001 3.0000001 1e-07 1 2 2 57 -57 7 -20.0000001 -10.0000001 -1e-07 20.0000001 -9.999999900000001 1e-07 1 3 2 52 -53 8 -20.0000001 -10.0000001 -1e-07 -19.9999999 10.0000001 1e-07 1 6 2 54 -52 9 19.9999999 -10.0000001 -1e-07 20.0000001 10.0000001 1e-07 1 4 2 53 -55 10 -20.0000001 9.999999900000001 -1e-07 20.0000001 10.0000001 1e-07 1 5 2 55 -54 11 -2.012246474008443 -0.3484729026379156 -1e-07 1.973702609187471 0.495445720283209 1e-07 1 7 2 56 -56 1 -20.0000001 -10.0000001 -1e-07 20.0000001 10.0000001 1e-07 1 8 5 7 9 10 8 -6 2 -3.0000001 -3.0000001 -1e-07 3.0000001 3.0000001 1e-07 1 8 2 6 -11 $EndEntities $Nodes 15 2460 1 2460 0 51 0 1 1 2.00890841043739 -0.3547841896531337 0 0 52 0 1 2 -20 -10 0 0 53 0 1 3 20 -10 0 0 54 0 1 4 -20 10 0 0 55 0 1 5 20 10 0 0 56 0 1 6 1.969615506024416 -0.3472963553338607 0 0 57 0 1 7 3 0 0 1 6 0 47 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 2.897777478867205 0.7764571353075639 0 2.598076211353314 1.500000000000003 0 2.121320343559639 2.121320343559646 0 1.499999999999994 2.59807621135332 0 0.7764571353075539 2.897777478867207 0 -1.114057783130449e-14 3 0 -0.7764571353075753 2.897777478867201 0 -1.500000000000014 2.598076211353308 0 -2.121320343559653 2.121320343559631 0 -2.598076211353324 1.499999999999987 0 -2.897777478867209 0.7764571353075489 0 -3 -1.295528225575767e-14 0 -2.897777478867201 -0.7764571353075739 0 -2.598076211353311 -1.500000000000008 0 -2.121320343559637 -2.121320343559649 0 -1.499999999999994 -2.598076211353319 0 -0.7764571353075567 -2.897777478867206 0 4.777979458584442e-15 -3 0 0.776457135307566 -2.897777478867204 0 1.500000000000003 -2.598076211353314 0 2.121320343559644 -2.121320343559641 0 2.598076211353316 -1.499999999999999 0 2.897777478867205 -0.776457135307562 0 2.974334584121431 0.3915785766601556 0 2.77163859753386 1.148050297095271 0 2.380060020873703 1.826284287026165 0 1.826284287026157 2.380060020873709 0 1.148050297095262 2.771638597533863 0 0.3915785766601452 2.974334584121432 0 -0.3915785766601667 2.97433458412143 0 -1.148050297095283 2.771638597533855 0 -1.826284287026175 2.380060020873696 0 -2.380060020873715 1.82628428702615 0 -2.771638597533866 1.148050297095256 0 -2.974334584121433 0.3915785766601415 0 -2.974334584121429 -0.3915785766601672 0 -2.771638597533856 -1.14805029709528 0 -2.3800600208737 -1.826284287026169 0 -1.826284287026156 -2.38006002087371 0 -1.148050297095264 -2.771638597533863 0 -0.3915785766601496 -2.974334584121432 0 0.3915785766601591 -2.974334584121431 0 1.148050297095272 -2.771638597533859 0 1.826284287026164 -2.380060020873704 0 2.380060020873707 -1.826284287026161 0 2.77163859753386 -1.148050297095269 0 2.974334584121431 -0.3915785766601551 0 1 7 0 39 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 -18 -10 0 -16 -10 0 -14 -10 0 -12 -10 0 -10 -10 0 -8 -10 0 -6 -10 0 -4 -10 0 -2 -10 0 0 -10 0 2 -10 0 4 -10 0 6 -10 0 8 -10 0 10 -10 0 12 -10 0 14 -10 0 16 -10 0 18 -10 0 -19 -10 0 -17 -10 0 -15 -10 0 -13 -10 0 -11 -10 0 -9 -10 0 -7 -10 0 -5 -10 0 -3 -10 0 -1 -10 0 1 -10 0 3 -10 0 5 -10 0 7 -10 0 9 -10 0 11 -10 0 13 -10 0 15 -10 0 17 -10 0 19 -10 0 1 8 0 19 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 -20 8 0 -20 6 0 -20 4 0 -20 2 0 -20 0 0 -20 -2 0 -20 -4 0 -20 -6 0 -20 -8 0 -20 9 0 -20 7 0 -20 5 0 -20 3 0 -20 1 0 -20 -1 0 -20 -3 0 -20 -5 0 -20 -7 0 -20 -9 0 1 9 0 19 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 20 -8 0 20 -6 0 20 -4 0 20 -2 0 20 0 0 20 2 0 20 4 0 20 6 0 20 8 0 20 -9 0 20 -7 0 20 -5 0 20 -3 0 20 -1 0 20 1 0 20 3 0 20 5 0 20 7 0 20 9 0 1 10 0 39 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 18 10 0 16 10 0 14 10 0 12 10 0 10 10 0 8 10 0 6 10 0 4 10 0 2 10 0 0 10 0 -2 10 0 -4 10 0 -6 10 0 -8 10 0 -10 10 0 -12 10 0 -14 10 0 -16 10 0 -18 10 0 19 10 0 17 10 0 15 10 0 13 10 0 11 10 0 9 10 0 7 10 0 5 10 0 3 10 0 1 10 0 -1 10 0 -3 10 0 -5 10 0 -7 10 0 -9 10 0 -11 10 0 -13 10 0 -15 10 0 -17 10 0 -19 10 0 1 11 0 111 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 1.77666181609823 -0.3046606473376018 0 1.585174693162625 -0.2557876559104094 0 1.394576623754191 -0.2035458601993028 0 1.204589444119412 -0.1491209687235096 0 1.015004262818626 -0.09331032096591339 0 0.8256451105766565 -0.0367368277983433 0 0.6363531942335181 0.02006141149104914 0 0.4469802715176973 0.07658876796448444 0 0.2573847403038219 0.1323643436157238 0 0.06742917546787512 0.1869001356892107 0 -0.1230213310085618 0.2396799254228534 0 -0.3140997629476118 0.2901367094596567 0 -0.5059369534703442 0.3376233324803611 0 -0.6986602673977906 0.3813686984310861 0 -0.892389553385722 0.4204073636355104 0 -1.087225613498355 0.4534596017864452 0 -1.283219657697219 0.4786974237778941 0 -1.480280450203745 0.4932190381866962 0 -1.65682999941762 0.4928301082233981 0 -1.782842979938993 0.4802236925726038 0 -1.871029519334779 0.4606483553691295 0 -1.931144553050418 0.4374886932098618 0 -1.970175828097096 0.4132804453995764 0 -1.993107066834265 0.3894058723096339 0 -2.005151928934549 0.3671184121464036 0 -2.009518855512 0.347743937568079 0 -2.008198659989106 0.3247131478111426 0 -1.998504622651548 0.2960725415298087 0 -1.975624601589456 0.2619696407548218 0 -1.934413664470078 0.2216890306105275 0 -1.868314765487754 0.1752055438337787 0 -1.76809177399456 0.1223825699137027 0 -1.620696195085725 0.06326206792902286 0 -1.432640330465056 0.005460326350684665 0 -1.240554966522496 -0.04093161530588694 0 -1.046606862911457 -0.07883819794253015 0 -0.8514950191009625 -0.1102389605507342 0 -0.6556230223676188 -0.1365040134606051 0 -0.4592422270793919 -0.1586607067352659 0 -0.2625171187299668 -0.1775282138951448 0 -0.06555903007991289 -0.1937929174853409 0 0.1315547150430295 -0.2080544613152218 0 0.3287689622104455 -0.2208564174397376 0 0.5260426853137601 -0.2327099828924282 0 0.723342848660969 -0.2441166466227788 0 0.9206395672195702 -0.2555825172429075 0 1.117900090015715 -0.2676525125147224 0 1.31508223155828 -0.280937254227818 0 1.500037767749478 -0.2951631365108233 0 1.635366048595219 -0.3072078831616266 0 1.731837608246289 -0.3167008023571666 0 1.800565781887975 -0.3244286622237874 0 1.884467790813907 -0.3349025385056337 0 1.9487859529386 -0.3439139968498093 0 1.955621865285942 -0.3450466407097348 0 1.867185834087897 -0.3258657423498425 0 1.680784596488838 -0.2807484037451395 0 1.489784287746696 -0.2300002669911184 0 1.299520906606411 -0.176550355679567 0 1.109758210573672 -0.1213469442257647 0 0.9203067552398896 -0.06508360639471882 0 0.7310001965413052 -0.008334227669346847 0 0.5416858063150685 0.04838900011985605 0 0.352219035007933 0.1046007520232898 0 0.1624604473406491 0.159818590717259 0 -0.02772596925428144 0.2135430699555158 0 -0.2184738648597388 0.2652366683999848 0 -0.4099152832600069 0.3142965675636267 0 -0.6021798726326612 0.3600193736900184 0 -0.7953921227866769 0.4015474657648074 0 -0.989664358118337 0.4377787840799241 0 -1.18507842204299 0.4672012025968839 0 -1.381633679333284 0.4875495002247564 0 -1.568561365172386 0.4949967829120182 0 -1.720005834597193 0.488202179581387 0 -1.827264445797034 0.4719047921931028 0 -1.901579949259968 0.4503406321020963 0 -1.951316639527142 0.4264342940594025 0 -1.982448670259102 0.4021157840108829 0 -1.999880397361158 0.3786663699773726 0 -2.007999505194226 0.3575802925616084 0 -2.008858757750553 0.3362285426896108 0 -2.004318218902449 0.3100671106011192 0 -1.988111366137245 0.2783236576506718 0 -1.955915540604657 0.2409150940489912 0 -1.902184053785566 0.1972853835631862 0 -1.818945031382742 0.14739116424994 0 -1.695090493283767 0.09109062109449219 0 -1.527200230080817 0.03263425550726834 0 -1.336893672716418 -0.01895952593253371 0 -1.143760980441006 -0.06080518129749835 0 -0.9491667185213136 -0.09525732244684584 0 -0.7536357792274089 -0.1239434644248305 0 -0.5574843297505063 -0.148040292817487 0 -0.3609147200543779 -0.1684596023760019 0 -0.1640617382306602 -0.1859468956872503 0 0.03298222259714763 -0.2011394049807473 0 0.2301520944336444 -0.2146054253403731 0 0.4274005829146511 -0.2268703444618691 0 0.6246913463480418 -0.2384378666726039 0 0.8219935060449356 -0.2498100651995408 0 1.019276791395821 -0.2615038466506092 0 1.216503900249875 -0.2741059688288907 0 1.407581417567995 -0.2877722992618824 0 1.567717671211086 -0.3010084202569328 0 1.68361377864905 -0.3118330481598299 0 1.766216711787084 -0.3204312552192765 0 1.84252121929345 -0.3296299353636523 0 1.916694995718488 -0.3389265381693097 0 1.952393081492854 -0.3445101642641708 0 1.960187111499442 -0.3458074273652262 0 2 1 0 1276 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 -3.6744851501744 0.601959010387713 0 3.909832936947599 -0.2398065855041623 0 18.12795003330598 -1.888599568658242 0 -18.01764396086872 1.747429828462895 0 -3.365315084671119 -1.305014159547948 0 3.202603353222819 -1.798632227893554 0 3.160878383866252 1.990492695653546 0 9.858598130435674 7.939827846944208 0 -0.6940884353717569 -3.579025432130096 0 -0.7189454497584635 3.603263999272206 0 2.008419220378356 -3.182605995598426 0 0.9423704954388411 3.864813706005882 0 -7.845865584429075 8.327112670980354 0 -9.96786226987297 -7.985272453636473 0 -18.08156431440558 -2.129800612708338 0 18.13298999749258 1.971356442326434 0 -4.182257535528517 -8.198153136688541 0 8.038045299163791 -8.215541137588986 0 3.830577548409594 8.083014984070381 0 -1.946714485204799 -3.201804191162751 0 13.8194972935603 -8.067872950183055 0 -13.63199598953103 8.009898372048767 0 4.289486418860636 -8.201058596273471 0 -14.05773966093548 -8.014631033205536 0 13.97473246556383 7.837909385829622 0 -2.292174295476969 8.165321484973214 0 -2.089508003354644 3.214400295974841 0 2.287221663515382 -7.712912346883789 0 -0.01083943617156286 -7.993806884035513 0 11.88627201908686 -8.178425734961207 0 -0.1799251474516567 7.683273111523213 0 -6.03592662099836 -8.20731084841103 0 -5.9817876731383 8.354093723973728 0 -11.65954390819324 8.157248771653887 0 5.880904739437476 7.715856508022253 0 -17.76101133768184 5.75917535089013 0 17.87504710675498 -5.838902367116622 0 -18.07158589793857 -4.078402413680841 0 18.09098645391826 3.937992368135323 0 17.92348073017105 -7.934273693580879 0 -17.86183081165721 7.89742814844347 0 -16.04747640521467 -8.024911994023988 0 -18.02472832582801 -8.016706460297071 0 18.01742298434255 7.961205804036867 0 -0.01635483682445416 -3.749538988592461 0 2.697304840487135 2.784418389873115 0 -3.195882580451579 -1.868657983617656 0 -3.511419269018488 -0.6874685950848766 0 -3.086066359705886 2.103157688022449 0 -3.719392738415068 1.312727785079102 0 -1.365790699299195 -3.392526259588542 0 -1.38063603100477 3.360661447652818 0 -4.000433593933796 -1.192725234313367 0 -4.404619664461684 1.095925435244615 0 3.42089022693553 3.3491555123312 0 -7.665184398876603 6.694195964053439 0 -4.422641225087117 -6.422651787815379 0 -1.277685500873971 -4.096557442776257 0 -2.016409438274534 4.082236511570003 0 3.611119425940069 -6.307354633248263 0 13.55575081834988 -6.225413964834843 0 -13.16573386415771 6.078851721368482 0 -16.18480031006997 -2.246948519612656 0 -14.14830618924154 -6.057946658368299 0 16.28830184203751 1.911055332448889 0 1.534662837136578 -6.103044876253398 0 -1.273656681045932 6.11146889228124 0 3.633758600308965 0.6608986755430752 0 3.590530874038711 -1.026745615520313 0 2.687117684116337 -2.524683590767169 0 -2.161415004551875 -7.962779206488992 0 -4.138665581535008 8.31866432742614 0 1.978404624863888 8.078421786078541 0 6.102674122925556 -8.218745255191761 0 -7.946248941993141 -8.108865761850478 0 7.941141422507018 8.002391638343903 0 9.972878982421479 -8.218554984449735 0 -9.736309789714557 8.259936257936182 0 -12.03668365596875 -7.979804476481054 0 11.87566908576099 7.77521329928666 0 -18.06849554920937 -0.1910438425160607 0 18.15293622982639 0.03311815118566407 0 -17.90794320895796 3.715115971617005 0 18.03036928809167 -3.830264129864821 0 -16.10121468555388 -6.067155134166432 0 -18.04979089379616 -6.040958519058275 0 15.82385351888411 -7.898709049992918 0 -15.69365270471733 7.833400139432106 0 16.01750671019604 7.910672377227277 0 18.04786863079534 5.936385822274294 0 2.054779118459334 3.664025209798155 0 -0.09013949234365964 3.96940899920597 0 1.030549756725258 -3.858314316842565 0 -3.635863908281836 -0.1110595341561985 0 3.470255155440822 1.24402792238658 0 -2.874099483199986 -2.772915331914999 0 -0.3964542520237164 -4.54914527754324 0 -2.663358785089938 2.617565356798021 0 -3.989087219460261 -2.076236932654473 0 -1.234439532499807 3.876258163970578 0 -3.984178568898637 2.173869473922683 0 -2.252038373508025 -3.974770259414159 0 4.859224654043855 0.1260765490168841 0 -4.979111294589626 -2.441366763601073 0 7.92235162879369 6.29430639019461 0 9.971075505808109 -6.483848357620587 0 -5.080684781465189 1.576017669923295 0 -7.746446663119884 -6.317090054273057 0 0.9791926718676545 4.927902376672034 0 3.416736035155892 -2.998548247616722 0 11.66934574704447 5.323115964372809 0 -3.18778678567385 -3.834572154370535 0 -1.840784144042573 -5.228601205969683 0 -4.362013641569036 -0.3693109899945083 0 1.928100056058479 -4.560546186787588 0 -3.375560739947746 3.028295027893054 0 -4.2647108465045 6.737175708278563 0 -0.1149951680406442 -6.131614625983258 0 2.082187254099857 6.429585856018588 0 -6.012141851384739 -6.528753414456758 0 6.678486996708832 6.368753880298192 0 11.76334242683767 -6.42856495977454 0 3.005963580404662 4.011395601069773 0 -12.16022607593601 -5.975891044596665 0 16.15620431958335 -3.585484777626088 0 -16.17135111278181 -0.3775778999321147 0 16.3484432593794 0.04617628552979962 0 -15.89083057313179 3.346778300157119 0 -14.25743188905516 -4.163982736970484 0 15.55243605180511 -5.592689556207741 0 -16.15386108339008 -4.140219093843137 0 -5.938217789383739 6.762891886183136 0 -11.27513884443448 6.356000029972383 0 16.18132143494924 3.839041036457947 0 16.07787139087777 5.843574319042621 0 -1.781794567488396 5.000484708501338 0 -15.2922190355598 5.438328860126159 0 6.030276115106682 -6.27169241157907 0 3.953866211505452 -2.147138230971885 0 -2.670277686502264 6.563575606626792 0 0.4497991441256803 -4.927141354646645 0 3.866645343993119 2.510472722803968 0 3.600068765881332 6.461421599522987 0 4.540380367529725 -6.970496342645692 0 -0.8761802387122337 4.581305768175512 0 4.373936076420901 0.649663049964768 0 -4.452426634174191 0.4620436661639289 0 -2.62932281727102 -6.396081328490688 0 -3.758183385821749 -2.813863172244972 0 -2.847199045046506 3.469230465907407 0 2.720637267455919 -3.813682494010591 0 -9.441897483325056 6.552075407843086 0 5.510873893541506 0.2599499402164139 0 14.61973154384471 0.01309796586571878 0 -10.81688623485456 4.552688013510827 0 10.00582239942297 -4.836285181805719 0 -7.435765983382635 5.141065532786219 0 -12.405463983433 -4.107465728559236 0 14.39085106806024 -4.457164414358237 0 4.154460900916174 4.023287146024223 0 -13.94986669811034 4.173438788782956 0 6.730637468315564 -4.544906196137003 0 4.311376199470221 -3.506527008145512 0 -4.48751501799539 -5.032926188782219 0 7.50568029245745 4.821845705440059 0 -4.316979997128603 5.278249690504686 0 4.353672431506635 -1.293036880768869 0 -9.868734775938867 -5.680306831242427 0 -14.33251726102199 -2.336899955483545 0 9.576920783992398 5.958802241691274 0 4.532757928892666 5.255052515731329 0 -5.353145183934197 0.4719379804259172 0 -16.09234590950598 1.47941530435802 0 14.27628093601017 3.65361828050272 0 13.99955763487406 5.664554487436943 0 3.588093575346609 -4.484152027783178 0 8.127643820345888 -6.441360797138534 0 16.32668901646176 -1.775254641525089 0 -4.406595326436116 -3.671039527060061 0 4.198454822686277 1.624041996013707 0 -2.992061955208025 4.147782823480876 0 0.2105984154109243 4.790064687013434 0 3.507709865336083 5.139314449439227 0 -4.792382453057948 -1.459689461499679 0 -4.572436395965426 2.891837818514623 0 4.641428942919116 -0.5024371111573336 0 -2.453460312501289 -4.627394680084118 0 -0.786650046100567 -5.250909402476948 0 -2.940278551581822 5.247523207278423 0 -1.689965782192103 -6.438883671599556 0 -14.33377665093895 -0.5502724941993126 0 -0.3012705307928933 5.39272252928294 0 2.135469959877608 5.055899658465997 0 4.636445594832637 -5.232894271131557 0 0.6724172530215149 6.083701942897301 0 1.280096239841824 -5.16949119821752 0 -5.974984522610831 -1.866752571792483 0 9.034529760715662 4.025539845089188 0 -8.722910021378087 -4.217818973565735 0 -5.534610359210416 2.676169959859333 0 12.45508410551893 3.306951055427175 0 -5.889995508385582 -5.183206585684292 0 14.56552461450421 -3.296238985722712 0 -14.25835936012059 1.218747823632729 0 5.025758969188458 4.549603102965756 0 -12.5706392893578 -2.389817583166091 0 13.23647609760108 -4.66395441208665 0 -12.58292404349442 4.376949329542602 0 8.342881759973679 -4.768037932176838 0 4.678041771889618 3.055310266129358 0 14.49696687947684 1.787419858177802 0 -5.845751774658978 5.256661373650035 0 5.399528309893634 -4.039397354692966 0 4.849119482085388 -2.503671286153466 0 5.339449598774917 1.122202796573688 0 -9.081917317852129 4.898426509130953 0 5.441837787028685 -0.6021415361245656 0 -5.431953904198893 -0.7312934373803652 0 -4.210748791395521 3.81508826753725 0 14.64615103385349 -1.690447234886396 0 -3.259846786144838 -4.812660917256761 0 -14.12576430869816 2.925864820379171 0 2.680905185593006 -5.389210140959714 0 6.097599032817563 5.235184238873358 0 -12.57590798747682 -0.7110482967125643 0 -3.038148743136387 -5.714998809883127 0 10.53224572195671 4.001707694413382 0 -6.955006425846504 -1.497789086592763 0 -8.598876187182045 3.398497732568749 0 6.393880273368453 0.3864116663122096 0 12.98333833911929 -0.08233458504216605 0 -10.93240562216688 -0.8942218455399322 0 8.555301029515213 -3.249763382609989 0 7.779325767904743 2.96109074264072 0 -12.47327780115606 0.9867364862464534 0 10.94073457658063 2.748202920505053 0 13.09988439885997 -3.211092557257368 0 -9.669593923168645 -3.535841848738077 0 5.545879718688933 3.641516821847502 0 5.906858423485779 -2.835361171180214 0 -10.26417081335208 2.59027193436446 0 12.80355319601498 1.57190785389388 0 -5.719010234717523 3.871203604256889 0 5.108723442878385 2.105130372010357 0 -6.411077870753402 0.6337950191187385 0 5.219633415730448 -1.524481464506571 0 -12.39920937685509 2.702818794508143 0 -6.131566766385127 1.457015859234777 0 -5.727113436001686 -3.143358543136711 0 -10.96359166783663 -2.408563089093013 0 -7.331151236700582 -4.837769685490048 0 -3.038093020120431 -6.886532860910718 0 4.939686066866152 6.117800385979788 0 6.301357830643608 1.404959707849859 0 -9.521752155228544 -2.468101757629432 0 -6.419832731449849 -2.766178901380707 0 -8.76765949501304 1.58388382505122 0 10.05438700929112 -3.288953771003573 0 6.381702520197017 -0.6318106693091993 0 -10.7331456913925 0.6979836193327476 0 -6.890022683914625 2.261152678533388 0 6.202872319904352 2.645113786643874 0 -6.870972875363332 -3.688596095907228 0 9.530647368916295 2.432324578788919 0 11.25090881073421 1.292388628722666 0 -7.160047474666674 3.702038043954091 0 -6.664195020116278 -0.4267388530756311 0 13.06720009974305 -1.681752312890656 0 6.211129142772167 4.127220872616046 0 7.143280329701705 -3.110291689124167 0 11.58699296789355 -3.260516096682016 0 -5.720754201048855 -4.338378797200616 0 -10.72684608759428 -3.933044374408188 0 6.22467723708482 -1.701165814429137 0 7.424610047406238 0.532359834352901 0 -9.42680850011093 -1.12350793762362 0 9.837841467768975 1.012699017755027 0 11.44491651910612 -0.2284287150583559 0 8.670440097753886 -1.849208028583408 0 -8.080825836002868 -1.356251077652335 0 -9.185998601065764 0.2801921880865675 0 -8.028317486768046 -2.798203104373376 0 -7.482230778892506 1.052651944724155 0 7.289304297087391 1.565316524141519 0 7.466247042165702 -0.607969602811582 0 7.376161176676528 -1.817158783737074 0 11.54002447950733 -1.743967781404876 0 -8.141839628635207 2.419675592415653 0 11.65427383628363 -4.798883184090429 0 6.936849741935208 3.695699903102379 0 -7.0821830329929 -2.344840689201722 0 8.304844516179665 1.940573027347264 0 8.678060519215514 -0.5221886902539705 0 8.563994481389766 0.7442643155588927 0 10.00727735020685 -0.3874714539354021 0 -7.857328582954798 -0.1118939960651631 0 7.12155086537563 2.378262128409272 0 10.06784844019635 -1.815359372660342 0 -10.49865825237229 1.644127776848604 0 -9.959572146229135 0.4890879037096575 0 -8.976829048039402 0.9320380065688938 0 -9.515915154182562 2.08707787970784 0 -9.737743650205848 1.288082891708749 0 -4.964879513056522 3.843145935897069 0 -4.263864394262062 4.546668979020968 0 -5.08136588589379 5.26745553207736 0 -5.782381004688251 4.563932488953462 0 -5.023122699475156 4.555300733987215 0 -6.640758879020806 5.198863453218127 0 -7.297906729024655 4.421551788370155 0 -6.439528854692099 3.78662082410549 0 -6.540143866856454 4.492742138661809 0 -7.186126731403565 1.656902311628772 0 -7.515931156274916 2.34041413547452 0 -8.454749561824123 2.001779708733436 0 -8.124945136952773 1.318267884887688 0 -7.820438146613844 1.829341010181104 0 3.154365421401264 -4.148917260896885 0 3.949734887408415 -3.995339517964345 0 3.864056117313056 -3.252537627881117 0 3.068686651305905 -3.406115370813656 0 3.50921076935716 -3.700727444389001 0 -3.873680902070114 -4.92279355301949 0 -4.455078121541254 -5.7277889882988 0 -3.730394984111752 -6.068825298849253 0 -3.148997764640613 -5.263829863569944 0 -3.802037943090933 -5.495809425934372 0 2.821589912606846 5.097607053952612 0 3.553889315608707 5.800368024481108 0 2.841128009990594 6.445503727770788 0 2.108828606988733 5.742742757242293 0 2.83135896129872 5.771555390861701 0 -12.57327363841731 -1.550432939939328 0 -13.45484231920788 -0.6306603954559384 0 -14.33314695598047 -1.443586224841429 0 -13.45157827518989 -2.363358769324818 0 -13.45321029719889 -1.497009582390378 0 1.479324906391869 -4.209430251815077 0 0.7401744504254694 -4.392727835744605 0 0.864947691983752 -5.048316276432082 0 1.604098147950151 -4.865018692502554 0 1.17213629918781 -4.628873264123579 0 -1.559234822458272 -4.66257932437297 0 -1.31371709507157 -5.239755304223316 0 -0.5915521490621417 -4.900027340010094 0 -0.8370698764488436 -4.322851360159749 0 -1.075393485760207 -4.781303332191532 0 -3.998938774925436 -0.2401852620753535 0 -4.181223617751416 -0.7810181121539375 0 -3.755926431476142 -0.9400969146991216 0 -3.573641588650162 -0.3992640646205375 0 -3.877432603200789 -0.5901410883872376 0 14.55834921166078 0.9002589120217604 0 15.48408740161206 0.0296371256977592 0 16.31837255070845 0.9786158089893442 0 15.39263436075717 1.849237595313345 0 15.43836088118461 0.9394373605055522 0 -15.25256388186038 -0.4639251970657136 0 -16.17807571142589 -1.312263209772385 0 -15.25865878554598 -2.291924237548101 0 -15.25561133370318 -1.377924717306907 0 -4.391592593680474 3.353463043025936 0 -5.626810296963969 3.273686782058111 0 -5.053523377587921 2.784003889186978 0 -5.009201445322221 3.313574912542023 0 -10.83277565677969 -0.09811911310359234 0 -11.60321174627428 0.8423600527896005 0 -12.52459289431644 0.1378440947669446 0 -11.75415680482185 -0.8026350711262482 0 -11.67868427554806 0.01986249083167613 0 -5.063674763742485 -4.004709162130339 0 -4.692853310512871 -3.056203145330567 0 -5.353112365295656 -2.792362653368892 0 -5.72393381852527 -3.740868670168664 0 -5.208393564519071 -3.398535907749616 0 -3.030943134436918 -3.303743743142767 0 -2.719912579590938 -3.904671206892347 0 -2.099376429356412 -3.588287225288455 0 -2.410406984202393 -2.987359761538875 0 -2.565159781896665 -3.446015484215611 0 3.715323157145463 7.272218291796684 0 4.269877416373742 6.289610992751388 0 5.410295403151814 6.916828447001021 0 4.855741143923535 7.899435746046317 0 4.562809280148638 7.094523369398853 0 11.69790934104978 3.027576987966114 0 12.0622149262817 4.315033509899992 0 11.10079573450059 4.662411829393095 0 10.73649014926867 3.374955307459218 0 11.39935253777519 3.844994408679605 0 -3.019459762518842 2.822930192345537 0 -3.679869654423191 2.601082250907869 0 -3.535122464302261 2.138513580972566 0 -2.874712572397912 2.360361522410235 0 -3.277291113410552 2.480721886659052 0 -10.1796070611389 -1.008864891581776 0 -9.306403550588346 -0.4216578747685262 0 -10.06958960368402 -0.2598884939360593 0 2.904491086636741 8.080718385074462 0 2.030295939481872 7.254003821048565 0 2.872809548313668 7.263111056422625 0 -7.755524991652839 7.510654317516896 0 -8.791087687071816 8.293524464458269 0 -9.589103636519805 7.406005832889634 0 -8.553540941100829 6.623135685948262 0 -8.672314314086321 7.458330075203266 0 9.922559408987915 0.3126137819098123 0 10.72609693465649 -0.307950084496879 0 11.34791266492016 0.5319799568321549 0 10.54437513925159 1.152543823238846 0 10.63523603695404 0.4222968693709835 0 4.416251336402896 3.53929870607679 0 5.111960745289275 3.34841354398843 0 5.285819343938696 4.095559962406629 0 4.590109935052316 4.286445124494989 0 4.851035340170796 3.81742933424171 0 7.536759614144621 -4.656472064156921 0 8.449091394744446 -4.008900657393413 0 7.849290679608459 -3.180027535867078 0 6.936958899008634 -3.827598942630585 0 7.69302514687654 -3.918249800011999 0 -11.04601253964452 5.454344021741605 0 -9.949401776353344 4.72555726132089 0 -9.261907400588592 5.725250958487019 0 -10.35851816387977 6.454037718907735 0 -10.15395997011656 5.589797490114313 0 8.270105026586556 4.423692775264623 0 9.30572527235403 4.992171043390231 0 8.749636206393044 6.126554315942942 0 7.71401596062557 5.558076047817334 0 8.509870616489799 5.275123545603782 0 0.1674019880425181 -5.529377990314952 0 0.7098338345479669 -6.117329751118328 0 1.407379538489201 -5.636268037235459 0 0.7873907632658594 -5.582823013775204 0 -1.899102002881465 4.541360610035671 0 -2.361036559535109 5.12400395788988 0 -2.966170253394924 4.697653015379649 0 -2.50423569674128 4.11500966752544 0 -2.432636128138194 4.61950681270766 0 -9.595673039198594 -3.001971803183754 0 -10.24267191153259 -2.438332423361222 0 -10.84521887771546 -3.1708037317506 0 -10.19822000538147 -3.734443111573132 0 -10.22044595845703 -3.086387767467177 0 1.377302253560686 6.256643899457945 0 0.899239738706116 7.880847448800877 0 0.2462460527849291 6.883487527210256 0 1.138270996133401 7.06874567412941 0 -17.11992333099559 -0.2843108712240877 0 -18.07502993180748 -1.160422227612199 0 -17.13318231223778 -2.188374566160497 0 -17.12655282161668 -1.236342718692292 0 5.377988952785584 -2.66951622866684 0 6.065767830285299 -2.268263492804675 0 5.722155326407634 -1.612823639467854 0 5.034376448907918 -2.014076375330018 0 5.550072139596608 -2.141169934067347 0 17.2506897446029 0.03964721835773184 0 18.14296311365949 1.002237296756049 0 17.21064591976504 1.941205887387662 0 17.23066783218397 0.9904265528726968 0 -1.527725624267164 5.555976800391289 0 -1.971967183774098 6.337522249454016 0 -2.805278119042043 5.905549406952607 0 -2.166501871654603 5.730763103671949 0 12.02723100337459 1.432148241308273 0 12.62931865076695 2.439429454660528 0 11.09582169365742 2.020295774613859 0 11.86257017221219 2.229862614637193 0 -0.5887253847525635 4.987014148729227 0 -0.7874636059194129 5.75209571078209 0 -1.328987403100315 4.790895238338425 0 -1.058225504509864 5.271495474560258 0 10.80393645985184 -1.779663577032609 0 11.49247049930672 -0.9861982482316162 0 10.0375628952016 -1.101415413297872 0 10.76501669725416 -1.043806830764744 0 3.831085383126129 4.581300797731725 0 4.779258449040562 4.902327809348543 0 4.020233897114375 5.197183482585277 0 4.305171916083346 4.741814303540133 0 6.662211592639991 2.511687957526573 0 7.450438316640186 2.669676435524996 0 7.358087754919975 3.328395322871549 0 6.56986103091978 3.170406844873126 0 7.010149673779982 2.920041640199061 0 -11.33169009510359 2.646545364436302 0 -12.43624358900557 1.844777640377298 0 -11.46745092068894 1.744452708612951 0 -9.474280327669737 -1.795804847626526 0 -10.94799864500175 -1.651392467316472 0 -10.21113948633574 -1.723598657471499 0 7.931746525650354 7.148349014269257 0 6.911023080972247 7.859124073183079 0 6.279695868073154 7.042305194160223 0 7.300419312751261 6.331530135246401 0 7.105721196861754 7.09532710421474 0 13.65026003774591 1.679663856035841 0 12.89344576756713 0.7447866344258572 0 13.801534941482 -0.03461830958822364 0 13.72589748961395 0.822522773223809 0 -12.09845486595238 -6.977847760538859 0 -11.00227296292086 -7.982538465058763 0 -9.918298522905918 -6.832789642439449 0 -11.01448042593744 -5.828098937919545 0 -11.00837669442915 -6.905318701489154 0 -13.36581858063833 1.102742154939591 0 -14.29606800552977 0.3342376647167082 0 -13.41033044992311 0.2360408797418264 0 -7.101062056031957 -4.263182890698638 0 -6.610573372543082 -5.01048813558717 0 -5.805374854717218 -4.760792691442454 0 -6.295863538206094 -4.013487446553922 0 -6.453218455374587 -4.511987791070545 0 -6.073473083725768 -2.954768722258709 0 -6.64540280340659 -3.227387498643968 0 -6.184668310965931 -3.484128084406316 0 16.71374157928004 -5.715795961662182 0 17.95270819742332 -4.834583248490722 0 17.09328680383751 -3.707874453745454 0 15.85432018569423 -4.589087166916915 0 16.90351419155878 -4.711835207703818 0 -2.159644299731561 -6.417482500045121 0 -2.833707918695725 -6.641307094700703 0 -2.599754012336153 -7.424656033699855 0 -1.925690393371989 -7.200831439044274 0 -2.379699156033857 -6.921069266872488 0 -5.101464317944119 6.75003379723085 0 -5.891984782021359 6.009776629916585 0 -4.290845421816551 6.007712699391625 0 -5.091415101918955 6.008744664654104 0 -3.215419938505989 8.241992906199677 0 -4.201688214019754 7.527920017852352 0 -3.467494266503382 6.650375657452678 0 -2.481225990989617 7.364448545800003 0 -3.341457102504685 7.446184281826177 0 5.425161746158212 0.6910763683950512 0 5.952377083454979 0.3231808032643118 0 6.34761905200603 0.8956856870810344 0 5.820403714709263 1.263581252211774 0 5.886390399082122 0.7933810277380426 0 4.112269585089622 -4.858523149457367 0 5.017986952363135 -4.636145812912261 0 4.855452254681927 -3.772962181419238 0 4.483860919885775 -4.315742665438303 0 -8.258841650617383 5.019746020958586 0 -8.840396752517087 4.148462120849851 0 -7.87946183092436 3.55026788826142 0 -8.069151740770872 4.285006954610003 0 8.023300637215208 -1.833183406160241 0 8.6742503084847 -1.185698359418689 0 8.072153780690607 -0.5650791465327762 0 7.421204109421115 -1.212564193274328 0 8.047727208952907 -1.199131276346509 0 9.971977244114793 -7.351201671035161 0 10.92957550075417 -8.19849035970547 0 11.82480722296226 -7.303495347367873 0 10.86720896632289 -6.456206658697564 0 10.89839223353853 -7.327348509201517 0 -3.730367122603774 -6.654592324363048 0 -2.833735780203703 -6.055540069186907 0 -3.282051451403739 -6.355066196774978 0 -10.6979268489539 8.208592514795034 0 -11.46734137631386 7.256624400813134 0 -10.52822250641683 7.331315116851384 0 5.196080270893097 -8.209901925732616 0 6.066475119016119 -7.245218833385415 0 5.285328241318203 -6.621094377112382 0 4.414933393195181 -7.585777469459582 0 5.24070425610565 -7.415498151422499 0 -5.060226627336654 8.336379025699934 0 -5.960002731261019 7.558492805078432 0 -5.080845472640386 7.543206411465391 0 3.051926859636114 -2.761615919191945 0 3.685301123330672 -2.572843239294303 0 3.578234782364135 -1.972885229432719 0 2.944860518669578 -2.161657909330361 0 3.315080821000125 -2.367250574312332 0 -16.52661518662082 5.598752105508145 0 -17.8344772733199 4.737145661253567 0 -16.89938689104487 3.530947135887062 0 -15.5915248043458 4.392553580141639 0 -16.71300103883285 4.564849620697603 0 9.174352079698323 -4.802161556991278 0 8.235262790159783 -5.604699364657685 0 9.049359663076999 -6.462604577379561 0 9.988448952615538 -5.660066769713153 0 9.111855871387661 -5.63238306718542 0 -7.550475191129619 5.917630748419828 0 -8.406191295859106 5.821440853453423 0 -16.12753788447198 -5.103687114004785 0 -15.12476043739771 -6.062550896267366 0 -14.20286903914835 -5.110964697669392 0 -15.20564648622262 -4.152100915406811 0 -15.16520346181016 -5.107325905837088 0 -6.801701094130171 6.728543925118288 0 -6.721229986575489 5.963703689168208 0 11.77250741640273 6.549164631829735 0 10.86713360809833 7.857520573115434 0 9.717759457214036 6.949315044317741 0 10.62313326551843 5.640959103032042 0 10.74513343680838 6.749239838073738 0 -7.449645181065689 -3.243399600140302 0 -8.375613754073067 -3.508011038969555 0 -8.027030629039334 -4.527794329527891 0 -7.738337905052512 -3.885596964834097 0 -2.146087147738485 9.082660742486606 0 -4.069332790767504 9.159332163713071 0 -3.107709969252995 9.120996453099838 0 9.783387741336188 4.013623769751286 0 10.20326050342731 4.827291436391663 0 -17.11272349066432 -4.109310753761989 0 -18.06068839586737 -5.059680466369558 0 -17.07550278967502 -6.054056826612354 0 -17.09411314016967 -5.081683790187171 0 4.153769321506044 -1.720087555870377 0 4.40149284679542 -2.325404758562676 0 4.786652923618542 -1.40875917263772 0 4.59407288520698 -1.867081965600198 0 1.13819111367191 -7.853359615459651 0 -0.005419718085781429 -8.996903442017757 0 2.143610831757691 -8.856456173441895 0 1.069095556835955 -8.926679807729826 0 10.03010470435704 -4.062619476404646 0 9.304844019403165 -3.269358576806781 0 9.239598049550745 -4.03576006689903 0 -9.295822398658476 -4.949062902404081 0 -8.807590719529376 -5.998698442757742 0 -7.538798949910233 -5.577429869881552 0 -8.417310674284355 -5.263246386142817 0 -1.236049721464313 7.924297298248213 0 -0.08996257372582835 8.841636555761607 0 -1.118024860732157 8.962148649124106 0 4.144743209430318 -9.100529298136735 0 3.288354041188009 -7.95698547157863 0 3.144177020594005 -8.978492735789315 0 6.051337061462778 -9.109372627595882 0 5.098040135446548 -9.104950962866308 0 7.070359711044674 -8.217143196390374 0 8.08284455975484 -7.32845096736376 0 7.078959967726285 -6.356526604358802 0 7.074659839385479 -7.286834900374586 0 -6.01796331049918 -9.103655424205515 0 -4.091128767764259 -9.09907656834427 0 -5.109092078263439 -8.202731992549786 0 -5.054546039131719 -9.101365996274893 0 -3.171836270040196 -8.080466171588768 0 -2.080707502275938 -8.981389603244496 0 -3.085918135020098 -9.040233085794384 0 -12.2204363542961 6.217425875670433 0 -12.87432895382607 5.227900525455542 0 -11.69990513917449 4.464818671526714 0 -11.96017074673529 5.341122273598574 0 16.23481163849337 2.875048184453418 0 18.11198822570542 2.954674405230879 0 17.13615394443375 3.888516702296635 0 17.1733999320994 2.914861294842149 0 1.91094225032598 -6.907978611568594 0 -0.06291730210610351 -7.062710755009386 0 0.9240124741099383 -6.985344683288989 0 -11.76711547859721 -2.399190336129552 0 -11.76063614170953 -1.6009127036279 0 1.557331315872631 4.991901017569016 0 0.9607815836532478 4.396358041338958 0 1.498574806949088 3.764419457902019 0 2.095124539168471 4.359962434132076 0 1.527953061410859 4.378160237735518 0 -1.086127220361719 -7.978293045262252 0 -1.043063610180859 -8.989146522631128 0 -5.99089383656915 9.177046861986863 0 -5.030113313668327 9.168189512849967 0 -9.196251972273366 -3.876830411151906 0 -8.775034820998295 -2.633152431001404 0 -8.985643396635831 -3.254991421076655 0 11.70880813156065 -5.613724071932484 0 12.65954662259378 -6.326989462304692 0 13.39611345797548 -5.444684188460746 0 12.44537496694236 -4.731418798088539 0 12.55246079476807 -5.529204130196615 0 -13.15426613258877 -6.016918851482481 0 -14.10302292508851 -7.036288845786917 0 -13.04721165845211 -7.997217754843295 0 -13.10073889552044 -7.007068303162888 0 9.005462140792634 -8.21704806101936 0 8.019022649581895 -9.107770568794493 0 9.986439491210739 -9.109277492224868 0 9.002731070396317 -9.108524030509679 0 5.940452369718738 8.857928254011126 0 3.915288774204797 9.041507492035191 0 4.927870571961767 8.949717873023159 0 1.989202312431944 9.039210893039272 0 2.952245543318371 9.040359192537231 0 7.035179855522337 -9.108571598195187 0 0.949619869353058 8.940423724400439 0 -9.431523500267064 2.994384833466604 0 -10.54052852410332 3.571479973937643 0 -9.690462638310205 3.859971047393747 0 -8.957055605933055 -8.047069107743475 0 -9.983931134936485 -8.992636226818236 0 -7.97312447099657 -9.054432880925239 0 -8.978527802966527 -9.023534553871738 0 14.47818784128222 -3.876701700040474 0 13.83270450668209 -3.25366577149004 0 13.16818024823053 -3.937523484672009 0 13.81366358283066 -4.560559413222443 0 13.82318404475637 -3.907112592356242 0 -6.99108778149575 -8.158088305130754 0 -6.995543890747875 -9.079044152565377 0 16.12959641291351 4.841307677750284 0 15.03871451287592 5.754064403239783 0 14.13791928544211 4.659086383969831 0 15.22880118547971 3.746329658480334 0 15.13375784917781 4.750197030860058 0 0.1855733611143108 5.738212236090121 0 -0.7267909142487945 6.897371001902227 0 -0.2706087765672419 6.317791618996173 0 12.85288465632358 -8.12314934257213 0 13.68762405595509 -7.146643457508949 0 12.75621563945868 -7.225069402438411 0 -7.922932792214537 9.163556335490178 0 -6.913826628783687 8.340603197477041 0 -6.956913314391843 9.17030159873852 0 -9.868154894857279 9.129968128968091 0 -8.895543843535908 9.146762232229134 0 -12.64576994886214 8.083573571851327 0 -13.39886492684437 7.044375046708624 0 -12.43310315157912 7.150499723760879 0 16.04768905053691 6.877123348134949 0 17.06287001083655 5.889980070658458 0 18.03264580756894 6.948795813155581 0 17.0174648472693 7.935939090632072 0 17.04016742905293 6.912959580645266 0 13.02526921943117 -0.882043448966411 0 13.85667556679827 -1.686099773888526 0 14.6329412888491 -0.8386746345103384 0 13.82910525414013 -0.8603590417383746 0 12.83445169095926 5.493835225904876 0 13.36568252076455 3.480284667964948 0 13.1000671058619 4.487059946934912 0 8.899869776471345 7.971109742644056 0 9.929299065217837 8.969913923472104 0 7.970570711253509 9.001195819171951 0 8.949934888235672 8.985554871322027 0 6.955511540486124 8.929562036591538 0 -16.16933069673003 -3.193583806727896 0 -18.07657510617208 -3.104101513194589 0 -17.12295290145105 -3.148842659961243 0 -1.604008452619206 7.130909773851115 0 14.38662390774351 2.720519069340261 0 15.31071777311844 2.797783626896839 0 -17.96279358491334 2.73127290003995 0 -17.05499493518735 1.613422566410458 0 -15.99158824131889 2.413096802257569 0 -16.97719091311611 2.57218485114876 0 -7.846347802556513 -7.212977908061767 0 -8.882323162731215 -7.022883775250609 0 18.0694275423568 4.937189095204809 0 17.09951197763515 4.889248386477546 0 10.82068998859233 -3.274734933842794 0 11.56350872370044 -2.502241939043446 0 10.06111772474373 -2.552156571831957 0 10.81231322422209 -2.527199255437702 0 -14.29497457503857 -3.250441346227015 0 -15.2321526358843 -3.222012576477455 0 12.34343868337676 -3.235804326969692 0 11.62063340208859 -4.029699640386222 0 12.39440682515956 -3.983611562529116 0 11.94313600954343 -9.089212867480605 0 10.96478775037708 -9.099245179852737 0 3.643767785464324 2.929814117567584 0 3.059097533711332 3.066786951102157 0 2.929091612176693 2.387455542763331 0 3.513761863929685 2.250482709228757 0 3.286429698820509 2.658634830165457 0 -16.07434554538428 -7.04603356409521 0 -15.05260803307508 -8.019771513614762 0 -15.08868423523639 -7.041161204941064 0 16.24144666802256 -2.680369709575589 0 15.48642002515762 -1.732850938205742 0 14.60583782417885 -2.493343110304554 0 15.36086446704378 -3.4408618816744 0 15.4236422461007 -2.586856409940071 0 -11.82977195409662 9.078624385826943 0 -10.84896342447695 9.104296257397516 0 7.221265017196329 4.258772804271219 0 8.406927764310202 3.493315293864954 0 7.814096390753265 3.876044049068086 0 -12.01834182798437 -8.989902238240527 0 -11.00113648146043 -8.991269232529381 0 -15.17535263481329 1.349081563995374 0 -14.19206183440938 2.07230632200595 0 -15.00829744091498 3.136321560268145 0 -15.09182503786413 2.24270156213176 0 -10.29779043176658 -4.806675602825307 0 -9.747021202019971 -4.341753006988606 0 16.33756613792058 -0.8645391779976449 0 15.48525371338484 -0.8516069062539916 0 11.93783454288049 8.887606649643331 0 10.93356680404917 8.928760286557718 0 -6.857763861456929 7.534573561297664 0 6.380456791711123 -5.408299303858037 0 6.065082889104598 -4.292151775414984 0 5.333360854969659 -5.752293341355314 0 5.699221872037128 -5.022222558385149 0 14.97164355993268 -5.024926985282989 0 15.16625401348823 -4.232894433478695 0 18.07915966069882 -2.859431849261531 0 17.22731952488387 -1.831927105091665 0 17.16030316436069 -2.76990077941856 0 4.003847338364933 0.6552808627539216 0 4.286195449553589 1.136852522989238 0 3.83435498906355 1.434034959200143 0 3.552006877874894 0.9524632989648274 0 3.919101163714242 1.044657910977032 0 -18.04306975503905 0.7781929929734174 0 -19.00882198043436 1.873714914231448 0 -19.03424777460469 -0.09552192125803033 0 -19.02153487751952 0.8890964964867086 0 18.14044313156619 -0.9277407087362887 0 19.06397501665299 -1.944299784329121 0 19.0764681149132 0.01655907559283204 0 19.07022156578309 -0.9638703543681444 0 -14.03781550340425 3.549651804581063 0 -13.26248684277662 2.814341807443657 0 -12.49106671017475 3.539884062025373 0 -13.26639537080238 4.275194059162779 0 -13.2644411067895 3.544767933303218 0 -18.03725960981209 -7.028832489677673 0 -17.03610236552134 -8.02080922716053 0 -17.05580257759818 -7.037433026886442 0 13.98714505021894 6.751231936633283 0 14.99611958787993 7.87429088152845 0 15.01741705037792 6.814177642384116 0 4.032550083339698 2.067257359408837 0 3.315566769653537 1.617260309020063 0 3.674058426496618 1.842258834214451 0 -12.4880516363954 -3.248641655862663 0 -11.56615503551364 -4.020255051483712 0 -11.66663525705543 -3.209722693806632 0 -14.22897644985876 5.75859029074732 0 -14.62104286683507 4.805883824454558 0 -13.74768591033057 5.01689217495505 0 7.259720753189116 -2.46372523643062 0 8.61287056363455 -2.549485705596699 0 7.936295658411833 -2.506605471013659 0 -8.370357907908627 2.909086662492201 0 -8.943136531045592 2.498082271100021 0 4.075749896734897 -6.638925487946977 0 2.949170544727726 -7.010133490066027 0 3.682051968961453 -7.297955479762804 0 14.55409343507749 -5.909051760521292 0 14.18387850895408 -5.234805586871867 0 9.027410901934816 -7.339826319199461 0 -4.302449380307817 -7.31040246225196 0 -5.217391538235928 -6.475702601136069 0 -6.02403423619155 -7.368032131433894 0 -5.163241808249683 -7.339217296842929 0 5.041633364973901 -0.5522893236409496 0 5.476355840285096 -0.1710957979540758 0 5.18504927379268 0.193013244616649 0 4.750326798481486 -0.1881802810702247 0 5.113341319383291 -0.1796380395121503 0 -19.04078215720279 -2.064900306354169 0 -19.03751496590374 -1.0802111138061 0 19.06649499874629 1.985678221163217 0 19.07148155682975 1.001118648378025 0 -14.81467015387503 3.971102692361351 0 -16.13184851114389 0.5509187022129525 0 -15.21395825833683 0.4425781834648304 0 -0.9024804751163736 -6.285249148791407 0 -0.9943038477390465 -7.13177109702683 0 -13.31415271170748 1.958541981191624 0 9.36914426897512 -1.832283700621875 0 9.336994144189143 -2.550821138714328 0 -18.95397160447898 3.857557985808502 0 -18.98139679245667 2.865636450019974 0 19.01518464404583 -3.91513206493241 0 19.03957983034941 -2.929715924630766 0 -19.03579294896929 -4.039201206840421 0 -19.03828755308604 -3.052050756597295 0 -16.02373820260734 -9.012455997011994 0 -14.02886983046774 -9.007315516602768 0 -15.02630401653754 -9.00988575680738 0 -13.02360582922606 -8.998608877421647 0 17.23900463474338 -0.8961399433669668 0 19.04549322695913 3.968996184067662 0 19.05599411285271 2.977337202615439 0 -15.49293587013857 6.635864499779133 0 -16.77774175818727 7.865414143937787 0 -17.81142107466952 6.828301749666799 0 -16.65217847240405 6.732083124722966 0 15.68814478534461 -6.745699303100329 0 16.87366712452759 -7.916491371786899 0 17.89926391846301 -6.886588030348751 0 16.79370435190381 -6.816143666724539 0 12.92520077566241 7.806561342558141 0 13.98736623278191 8.918954692914811 0 12.9626003878312 8.90328067127907 0 6.923974781181359 -0.6198901360603906 0 7.445428544785971 -0.03780488422934047 0 6.909245160387345 0.4593857503325554 0 6.387791396782735 -0.1226995014984948 0 6.916609970784354 -0.08025219286391763 0 -17.08745913309147 0.664555847593185 0 4.123782510386353 -5.77012445218991 0 4.704555375852278 -6.195609414651146 0 19.02393431539767 5.968192911137147 0 19.0347137711784 4.968594547602405 0 -19.02489544689808 -6.020479259529138 0 -19.03034419793368 -5.029840233184779 0 -18.012364162914 -9.008353230148536 0 -17.01805118276067 -9.010404613580265 0 13.90974864678015 -9.033936475091528 0 12.92644232816179 -9.061574671286063 0 14.82167540622221 -7.983291000087986 0 15.91192675944206 -8.949354524996458 0 14.9108377031111 -8.991645500043992 0 -13.81599799476552 9.004949186024383 0 -12.82288497443107 9.041786785925664 0 -14.66282434712418 7.921649255740436 0 -15.84682635235866 8.916700069716054 0 -14.83141217356209 8.960824627870219 0 16.00875335509802 8.955336188613639 0 14.99805979393997 8.937145440764226 0 -18.93091540582861 7.948714074221735 0 -18.88050566884092 5.879587675445065 0 -18.90571053733476 6.9141508748334 0 -18.91723863665995 4.868572830626784 0 18.96174036508553 -7.96713684679044 0 18.93752355337749 -5.919451183558311 0 18.94963195923151 -6.943294015174375 0 18.97635409871166 -4.917291624245361 0 -14.44590039849147 6.840119773243878 0 8.824752991432195 7.048832029293498 0 -19.012364162914 -8.008353230148536 0 -19.01862980490604 -7.014416244838838 0 14.68788442064985 -6.946171380304639 0 17.96174036508553 -8.967136846790439 0 16.93683356226379 -8.958245685893448 0 -17.93091540582861 8.948714074221735 0 -16.88887087909364 8.932707071968895 0 -7.02503507929065 2.98159536124374 0 -7.697696493599638 2.945341011867971 0 -19.006182081457 -9.004176615074268 0 18.98087018254276 -8.983568423395219 0 -18.9654577029143 8.974357037110869 0 19.00871149217128 7.980602902018433 0 19.01632290378447 6.97439790657779 0 18.00871149217128 8.980602902018433 0 19.00435574608564 8.990301451009216 0 17.00873242363465 8.967969545316036 0 3.750181905493155 -0.6332761005122376 0 3.972101652772673 -1.159891248144591 0 4.497550687212875 -0.8977369959631013 0 4.275630939933357 -0.3711218483307479 0 4.123866296353015 -0.7655065482376695 0 12.87982623331084 6.650198284231509 0 8.917745942547981 2.186448803068092 0 9.282588564815978 3.228932211939053 0 8.042085142042204 2.450831884993992 0 8.662336853429089 2.839882048466523 0 -12.2828450296845 -5.04167838657795 0 -13.33144793624407 -4.13572423276486 0 -13.24285703441642 -5.07632154212367 0 -5.188755263190487 -5.108066387233256 0 -4.447055172215753 -4.35198285792114 0 -5.126215013466487 -4.556387774681797 0 -3.451101696321984 -7.367529247975908 0 8.434419498784717 1.342418671453078 0 9.200917974579371 0.8784816666569597 0 9.684244418342635 1.722511798271972 0 9.059331958563677 1.532465234862525 0 7.356957172246815 1.04883817924721 0 6.7953310638655 1.485138115995689 0 6.852288112126422 0.972261933164122 0 6.154364087794865 4.681202555744703 0 6.573989442353687 3.911460387859213 0 6.801639662637506 5.028514972156708 0 6.687814552495596 4.469987680007961 0 7.307859790935453 -5.506499334257861 0 6.800419206880674 -1.759162299083105 0 6.525069376593742 -2.972826430152191 0 6.662744291737209 -2.365994364617648 0 2.107784011364791 -5.746127508606556 0 2.304502620825742 -4.974878163873651 0 1.855941079657471 -5.305573100554554 0 4.653589132782331 1.864586184012032 0 4.856692837597909 0.8859329232692281 0 5.224086520826651 1.613666584292023 0 4.755140985190121 1.37525955364063 0 5.653193366689706 -3.43737926293659 0 4.580247840777805 -3.005099147149489 0 5.116720603733755 -3.221239205043039 0 10.23569097274846 2.590263749646986 0 10.39003305600003 1.871403786442916 0 -6.946654324822953 0.8432234819214469 0 -7.669779680923652 0.4703789743294962 0 -7.260761801535538 -0.2693164245703971 0 -6.53763644543484 0.1035280830215537 0 -7.103708063179246 0.2869535286755249 0 12.2141274291127 -0.155381650050261 0 12.12067921624365 0.6383832956290061 0 4.893382607384002 2.580220319069857 0 5.655797881391369 2.375122079327115 0 5.874376019296642 3.143315304245688 0 5.383879313340322 2.861767811657772 0 9.342668934711185 -0.4548300720946863 0 9.355906601843152 -1.143556886358281 0 4.132774482054239 -2.788971193221896 0 12.30361228962519 -1.712860047147766 0 12.25886985936895 -0.9341208485990136 0 6.252115075273981 2.025036747246866 0 5.738100798050317 1.819351665769444 0 5.330735601379567 -1.063311500315568 0 4.914143144296221 -0.980524248139335 0 -1.765374963117338 -5.83374243878462 0 -2.43946644358948 -5.471800007926405 0 -2.29955537166052 -5.944641253985763 0 -3.797191056054983 -3.752805840715298 0 -3.223816785909344 -4.323616535813648 0 -3.835435979062549 -4.337799696867394 0 -6.510794725149876 1.859084268884083 0 -5.606125773925158 1.516516764579036 0 -5.307647570337803 2.126093814891314 0 -6.212316521562521 2.468661319196361 0 -5.90922114774384 1.992589041887698 0 7.20542758123151 1.971789326275395 0 6.728771328252746 1.998413036761131 0 -7.969077209478833 -0.7340725368587491 0 -8.521663592010281 0.08414909601070217 0 -8.753817168056898 -1.239879507637978 0 -8.637740380033589 -0.5778652058136378 0 -8.054571661385456 -2.077227091012856 0 -8.764425994527597 -1.936515969319691 0 4.616580365232378 0.387869799490826 0 5.020871055695295 0.5394730839429387 0 5.911770153612851 -0.6169761027168824 0 5.932073618533916 -0.1468976497262853 0 6.303189878640918 -1.166488241869168 0 5.816962740010243 -1.114899871092368 0 13.50797127925523 2.579974262000394 0 2.376041979473234 3.224221799835635 0 3.213426903670096 3.680275556700487 0 2.530371349431998 3.837710405433964 0 2.794734441571665 3.452248678268061 0 -6.751007882221375 -2.555509795291214 0 -6.19740862703034 -2.316465736586595 0 -6.464995474228667 -1.682270829192623 0 -7.018594729419702 -1.921314887897242 0 -6.608001678225021 -2.118890312241919 0 -5.477047908600229 -2.154059667696778 0 -5.775260496162998 -2.554414194977744 0 13.08354224930151 -2.446422435074012 0 13.84469003674018 -2.469882772689283 0 5.518642549841857 5.676492312426573 0 6.388043014763197 5.801969059585774 0 5.899169208957505 6.359398753293398 0 4.14188450668425 0.2049282322303029 0 4.446105652582868 0.00837397558003905 0 -3.317931954140918 -0.05552976707810574 0 -3.286131314520804 0.689208072847631 0 -3.655174529228118 0.2454497381157573 0 -3.314754556674775 0.3185141573879494 0 -6.271322318569265 1.045405439176758 0 -5.882111527343799 0.5528664997723278 0 -5.216914982699693 1.023977825174606 0 -5.74411865063448 1.034691632175682 0 3.787675563925852 3.686221329177712 0 4.272343557941369 2.782891494466663 0 4.03000956093361 3.234556411822187 0 -13.39151310571698 -3.249541501044839 0 0.5070974599504021 -3.803926652717513 0 -0.2064045444240853 -4.149342133067851 0 0.02667244605098201 -4.738143316094943 0 0.2668849530006921 -4.271034984406228 0 -4.063455892174296 0.532001338275821 0 -4.407220137871613 0.04636633808471025 0 -4.031197333549866 0.1459080381002337 0 -7.555250259880473 -2.571521896787549 0 -7.100326531643532 -2.899454697715758 0 10.00953935704233 3.301943759699136 0 2.900339782288068 -1.649316113946776 0 2.404219013837991 -2.323001967163405 0 2.662460269771643 -1.993971098178261 0 12.32352548650098 -2.474332187058729 0 2.409312592023387 2.452869366716381 0 2.879477297609783 1.745246347826775 0 2.654575816525198 2.106869914894748 0 -8.323304364481526 0.7012084904491951 0 8.62102750030264 0.1110378126524612 0 7.994302264398002 0.6383120749558968 0 8.033228022544304 0.03661646421156034 0 10.8300481178533 -4.817584182948075 0 10.82536905322281 -4.046159558395434 0 -6.048074462157585 -0.5790161452279982 0 -5.392549544066545 -0.129677728477224 0 -5.965092994750693 -0.01307482272783517 0 -2.497709913379811 -2.447117837737323 0 -2.896979395902445 -1.684328991808832 0 -3.034991031825783 -2.320786657766328 0 -2.707525526349741 -2.073535472396248 0 1.519484488551807 -3.520460156220495 0 1.754209610189179 -2.89034110347587 0 0.9035034460164122 -3.378045897854884 0 1.33376739282354 -3.146049376877177 0 -0.4831598655279467 4.275357383690741 0 0.06022946153363232 4.379736843109702 0 -0.04533605769098453 5.091393608148187 0 -0.2642479616094656 4.683375495919464 0 2.324368661757199 -4.18711434039909 0 2.364528243917137 -3.498144244804509 0 1.921926575154503 -3.853787248309793 0 0.8594138153731975 3.381295592436544 0 0.4261155015475907 3.917111352605926 0 -0.04506974617183539 3.484704499602985 0 0.4088470391038679 3.445722968363679 0 -5.703469213404862 -1.299023004586424 0 -6.809600722981391 -0.9622639698341969 0 -6.256534968193126 -1.130643487210311 0 1.777389559229664 3.131050710575737 0 1.323312552022175 3.268029027717941 0 7.797074406633528 1.752944775744391 0 7.623756361636857 2.211310605634694 0 -0.4045424710510616 3.786336499239088 0 -0.7477012925330194 3.250520739069704 0 -0.3980605238556141 3.380335541680259 0 -0.4508226070706056 -5.691262014230103 0 -0.2120750805098119 -5.214702665162523 0 0.5948955436392893 4.858983531842734 0 0.5105055225934401 4.38804744222433 0 -2.392339564324796 2.369442850178826 0 -1.794754001677329 2.906238253664075 0 -2.376433394222291 2.915982826386431 0 -2.101358840624233 2.648021423630063 0 4.46296634536185 2.323738839239347 0 2.101163133249695 2.802140910354672 0 -3.59248489995592 -1.972447458136064 0 -3.873635302641005 -2.445050052449722 0 -3.316141434510867 -2.793389252079985 0 -3.454313167233394 -2.382918355108025 0 0.8258049624445847 5.505802159784668 0 1.467316784716659 5.624272458513481 0 -2.919630500127266 3.808506644694142 0 -2.468353524200575 3.341815380941124 0 -2.052958720814589 3.648318403772422 0 -2.486294610470928 3.728412524233282 0 3.396567113630765 -1.412688921706933 0 3.775168217568404 -1.566388238788655 0 -0.008177418412224689 -3.37476949429623 0 0.4493380183052805 -3.389130618419472 0 5.87850443073055 3.884368847231774 0 6.224182730825165 3.52738784605245 0 -3.111379892497126 3.248762746900231 0 -2.743906643359709 3.08237278664333 0 -7.517916130924686 -1.427020082122549 0 -7.389338966230111 -0.8481682533464731 0 3.316879300154483 0.3304493377715376 0 3.454916468473799 -0.1199032927520811 0 3.729381903419366 0.2676887850009202 0 -3.793154765671634 3.421691647715152 0 -4.278307482432032 2.532853646218653 0 -4.035731124051833 2.977272646966903 0 3.256836722870372 4.5753550252545 0 2.675980631019422 4.467658729693288 0 -4.896983772883964 -0.5503022136874368 0 -5.11216817862842 -1.095491449440022 0 -4.396408023495872 -1.326207347906523 0 -4.646695898189918 -0.9382547807969799 0 -1.723357242602397 -2.899940201258035 0 -2.118345635614275 -2.683709891206292 0 -6.728724524986415 1.351153875402765 0 -3.204598373942845 -0.7319628651962252 0 -3.273988086385796 -0.3954213206403523 0 -7.536583195402578 -1.999270989455049 0 3.244154176452958 -0.9016013754139374 0 3.084102855582313 -1.280369609401101 0 -3.628629274355212 5.262886448891555 0 -3.548061770429298 5.956631053172116 0 -2.856653549323063 -4.72002779867044 0 -2.352749343004657 -4.301082469749138 0 -2.788283064457 -4.312349502781395 0 -1.05530988560602 4.228781966073045 0 -0.9766924911291351 3.739761081621392 0 -0.729926178328541 4.007559232656067 0 3.184016317154013 1.010242528847072 0 3.263170730998162 0.6720209378124915 0 3.043602683593698 1.382655303057667 0 -4.902785909054194 0.466990823294923 0 -4.899884840969079 -0.04165569519625689 0 -3.696938944294734 0.9573433977334077 0 -4.062006201438376 1.204326610161858 0 -4.428523149317938 0.7789845507042717 0 -4.062731046806336 0.8681639742188395 0 -0.3552216360981055 -3.664282210361278 0 -0.9858869681228638 -3.837791437453177 0 -0.5961457562734745 -3.993566785260515 0 -4.082389356128932 -3.242451349652517 0 -3.556666245282925 -3.273097546397642 0 -2.842071285529605 1.801578844011218 0 -2.627386296635813 2.093322904718192 0 6.295076132849171 -3.632489102783587 0 2.347768452247347 -2.853644793182797 0 2.087026369636755 -2.616852407028251 0 -4.532431675181913 1.874943571922989 0 -4.792977526384918 2.329473730554983 0 -0.7352727853396568 -3.238401455498651 0 -0.3734001063791276 -3.319308397241355 0 -3.682874339302458 -1.248869696930657 0 -3.13154628176916 -1.040735647427761 0 -3.443736356622651 -0.9904162810634413 0 0.3902344523768 5.298597883966426 0 -3.280598832561349 -1.586836071582802 0 -3.026118715047603 -1.367443184339041 0 -3.158734474884196 1.406363892539545 0 -3.2342887709143 1.052696847414332 0 -3.601405373301773 3.981435545509063 0 -3.35639263289945 3.615099146204646 0 -4.885746873823787 -1.950528112550376 0 -5.294608043614325 -1.6247755585684 0 6.862196994031017 -1.189526217571748 0 -6.325922688127308 3.127641071650925 0 7.895688335515766 1.195628425350144 0 -4.484099257024943 -2.258801848127773 0 -3.994760406697028 -1.63448108348392 0 -4.440253640260408 -1.792504598017148 0 -1.071123917303376 -3.145151869227874 0 -1.321738100086583 -3.7445418511824 0 -1.02850544271312 -3.491471653340525 0 -3.851785653656853 1.743298629500893 0 -4.742652222963437 1.335971552583955 0 -4.297218938310144 1.539635091042423 0 -3.637679619629189 -1.610658577533361 0 4.736221997879409 5.686426450855558 0 5.561679001003011 4.892393670919557 0 5.148950499441209 5.289410060887558 0 -1.307537781752289 3.618459805811698 0 -1.078546583156173 3.12921946326001 0 -1.027619537142654 3.434490272440701 0 -1.656252592251998 -3.297165225375647 0 -1.402151444673631 -3.034401911454754 0 -3.346928469593229 1.772438736756055 0 -1.735072017179707 3.28753087181383 0 -1.441561157137495 3.029584734673842 0 3.134499380469808 -4.936681084371446 0 2.729434021113503 -4.561897712385268 0 -2.147122228271931 -4.927997943026901 0 -1.764861937190998 -4.035663851095208 0 -1.955992082731465 -4.481830897061054 0 -1.710557264721497 -3.666414538235427 0 -2.648059996456271 -5.095913903298422 0 -1.625424485387171 3.979247337770291 0 -1.477205944243743 4.385071288054358 0 -3.615017323828493 4.622160997200309 0 -1.680248251283439 3.63338910479206 0 9.271793454645278 0.2118257972811367 0 5.72009171586678 4.388381259075667 0 3.362258244807293 -0.5124273385861964 0 3.146012305766537 -5.848282387103988 0 2.528477278046259 -6.378130499336291 0 -4.822719066008816 0.9014811879394391 0 -5.951068679885161 -5.855980000070526 0 -5.203073400713207 -5.791884494184663 0 3.62914094542808 -5.353402768280677 0 4.145055656744058 5.743397237668333 0 2.708227551776625 -3.129880081998227 0 -6.879294257252312 -6.422921734364907 0 -6.935191019374031 -7.29050501974783 0 -4.283244306576938 -2.750626598890145 0 7.051029487694383 5.680022553701553 0 10.8486285420881 -5.636895420822819 0 -6.744933814897697 -5.716704934976039 0 -1.108098785093972 -5.762502226507362 0 3.522256143398112 4.130788177216106 0 -11.29031773072554 -4.924176994701629 0 -11.51579761713904 3.555682017981508 0 2 2 0 903 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 0.07625936149871065 0.3574106758604616 0 -0.379691266974333 0.5119941152005227 0 0.7586293150707796 0.2238785516883021 0 1.242029415211204 0.0471930466390624 0 -0.1087328276182021 -0.4146483032104995 0 -0.6996349111630104 -0.2980315623122514 0 0.487735813746538 -0.4481851087871564 0 1.095518232944291 -0.4501943460281203 0 1.612381862149893 -0.4264086655294254 0 1.851645143568155 -0.3859508171424923 0 -0.9695432866594432 0.6339097004206636 0 -1.516560174033059 0.6900335336876691 0 -1.820021788676996 0.5778245861296338 0 -1.296079377605507 -0.2094332606937477 0 -1.677834739783805 -0.1070869782625145 0 -1.929030814993167 0.1000115318352928 0 1.898501673287232 -0.173346599832822 0 -0.03166604640809831 2.366953255536833 0 -0.3065783053259326 -2.16972524522374 0 1.570126609706642 1.666189969037636 0 1.235698811725804 -2.07397056248426 0 -1.639611906483344 -1.73802757599105 0 -1.659931872697354 1.759772898223673 0 2.391618333484906 -0.8655616651983183 0 -2.436611779136435 -0.2446896090645196 0 -2.541562564833687 0.1479410121950556 0 -2.425753713591435 0.676089683349421 0 -2.08027229279657 1.082003330474701 0 2.457922685464736 -0.4396951203317537 0 2.384067171257147 0.233366401027186 0 2.285954097715744 0.7617917591711617 0 1.330542279525728 1.025150477295576 0 2.076777384050058 0.4683887315444226 0 2.194921689750767 -0.6371398919868472 0 1.954699243590005 -0.8167388838307637 0 2.078929796670384 -1.177372598705226 0 1.619961998175264 -1.100660901867426 0 1.539157104854032 -0.8094914010186949 0 1.383508935441926 -0.9436747425448047 0 1.241927966508729 -0.7091134061628361 0 0.9737853035412416 -0.8894969472417551 0 1.129668199398023 -1.156042579923334 0 0.6097652794483297 -1.017405315682112 0 0.7916886580510003 -1.386567887514815 0 0.2519996364360841 -1.249137590742979 0 0.3627824697755336 -1.71326959655065 0 -0.09212506106371531 -1.342036541066711 0 -0.09942841126268132 -1.08856209190939 0 -0.4657476009797583 -1.339756621690217 0 -0.5727897056884997 -0.8446778078617487 0 -0.7979969911812961 -1.113652322891786 0 -0.7294365301854487 -1.576766436125988 0 0.1336686430884014 -0.9111131099415156 0 0.6636043933436861 -0.7027243729976553 0 0.7070993080112148 -1.901730550851314 0 -0.1249552426972342 -0.7015766960276313 0 -0.7766643743511048 -0.6651292132690242 0 -1.032760292106225 -0.8323455657053267 0 -1.177744359579505 -0.51311894688477 0 -1.505384112921654 -0.6317284998515184 0 -1.697126155534386 0.6325947207637319 0 -1.629391585053601 0.8733235363377561 0 -1.405315868153122 1.020822214804121 0 -1.632107546725569 1.223843279675322 0 -1.133489325948447 1.196292589955412 0 -2.203685760936107 -0.00701731996985533 0 -2.16717041270091 -0.4676201715093927 0 -2.322977424309038 -0.7687326188301101 0 -0.6116322471687285 -0.5093780898786756 0 -1.492421909533095 -0.1712175735535012 0 -2.286267691690109 0.2045288551846661 0 -2.01702242497244 0.2582683526684493 0 1.870982192963902 -0.6317772770542597 0 1.967962552192874 -0.4040298486326838 0 1.712124793860417 -0.6606420014987069 0 1.475156598225092 -0.457010769949984 0 2.261991466478388 -0.3618862044541703 0 0.1846252029340446 -2.306127971000548 0 -1.556003335619627 -0.3792754778531033 0 -1.833502144728828 -0.006970977013253788 0 1.803151327061585 -0.3964009433588415 0 1.281921257309098 -0.4743139440921896 0 -1.76409143513083 -0.3139022419484918 0 -1.412098540094564 -1.008698846781011 0 -1.850801724965752 -0.6130951777973772 0 -1.997874665716923 0.05165279092502613 0 -2.081261486533315 0.1547714573938288 0 -0.8876635256147258 -0.288365803610918 0 -1.102023531427799 -0.2724390522829915 0 -0.6292745577767329 0.6051703687547092 0 -0.459617695353118 0.7612300986123354 0 -0.2401948919609992 0.6938266777916067 0 -0.1431264854343885 0.9320102811490356 0 0.1452251801801632 0.8198748438503236 0 0.009043411132385448 1.209900933919972 0 0.3189937044810738 1.048840838771176 0 -0.3683012003401578 1.398365075147499 0 0.2008569216041769 1.491320293696006 0 0.5362324585209262 1.323280644489538 0 0.5987450760719563 0.827100280672134 0 -0.7799251594756693 0.7993057243813223 0 0.8353692773369195 1.114395647613105 0 0.7895940515695964 1.638875723745104 0 0.3376300996678339 0.7259558646023605 0 0.5791131206879806 0.5251051026963809 0 0.9665762409778249 0.7367171585792494 0 0.8723553118740762 0.4589282071216152 0 0.5190800170285088 0.2895597812874212 0 1.315162712425064 0.6798547945657486 0 0.5565451572536698 2.285525029068002 0 -1.225622232982778 0.7605903291128738 0 -0.1530125946348562 0.4231689604579973 0 0.02211982476436454 0.5684418125026481 0 -0.3249404174792454 -0.3845033622395278 0 -0.8391721174204954 0.5502924132634199 0 -0.9588853247355886 0.9756300773981827 0 -0.7607652151921941 1.099128977922933 0 -0.8050309713798672 1.341000051777538 0 -0.5070959372390454 1.821268803099066 0 -0.9607991546527632 1.67552877225369 0 -0.6264216982121571 2.291078894341286 0 0.09461401162619262 -0.4166189681538667 0 1.717535972806835 -0.4166186468579344 0 1.52375470497773 -0.6354492204216473 0 0.2867893994632674 -0.4283942841085583 0 1.00173863020802 0.1280779907780836 0 0.6942491964915665 -0.4628815770058718 0 -0.408579403258427 -0.6100339890018959 0 0.902866851714111 -0.4567587757657444 0 -1.792491471131658 0.7681131223523823 0 -1.970758675597006 0.5394439651265387 0 -1.91835362427687 0.6751180720992154 0 -1.887269994536261 0.5259723022084339 0 -2.109784384262723 0.5596176990977558 0 -2.018870043254711 0.409494600311805 0 -2.11759574756547 0.848644118495546 0 1.104095385788017 2.048061215049066 0 1.705816731590508 -0.05756576038878405 0 0.3760347737891003 1.828493228007522 0 1.919684394724555 -0.3757474950036483 0 1.908191735300383 -0.4617659706707487 0 1.82328819069497 -0.5029955223914333 0 1.474573130917608 0.0189155759124008 0 1.570341347576451 0.2838417519299412 0 1.200202971593151 0.3213676584863031 0 1.7271069234058 0.6300666435859863 0 -1.362894744299963 -2.147740233563305 0 -0.9910285827645999 -2.075228472486498 0 -1.106880390943754 -1.488255800932139 0 -1.995380905886724 -0.1464158728780859 0 -0.5224013146749207 -0.3378072616229792 0 -0.3973859745288708 -1.656729725336664 0 2.090458144054771 0.006552086036111186 0 1.695841711872528 -1.702531811323781 0 1.364350348092014 -1.414547014040288 0 2.132970567303233 -0.4422887517143138 0 2.220953680988548 -0.2020771352032956 0 0.2345496491609393 -0.6487827971053113 0 1.083929395364403 0.03177290360087399 0 0.2875696365776568 0.3330740483335639 0 1.991551869578377 -0.5468777440736391 0 -0.06241388403361452 1.60323814247266 0 -0.05705593359721284 1.892566872007482 0 0.3157983197945146 0.5489288188199947 0 0.9032857324098822 -0.6643227359415551 0 -2.235605205174811 0.4401926993625801 0 -2.134506659372241 0.3471817243093143 0 -2.020872730954808 0.3201563675302088 0 -2.085071422520134 0.4377122245918344 0 -2.048043367676822 0.3801557184072636 0 -2.013564948909947 0.4641084721670926 0 -2.167345279198555 0.2354940122959364 0 -2.058352858170769 0.2951854591458782 0 -1.964713161441202 -1.125710843879911 0 -1.346581975006033 1.463859385027024 0 -2.349484402726721 1.082551534127462 0 -0.1083267177857463 -1.720440277044441 0 -1.354539957599995 -0.3603850627771784 0 -0.8828486361309263 -0.4751654356006456 0 -0.06972503575764177 0.3412971541480639 0 1.623790935545683 -0.5246602053513816 0 -1.813716599689949 1.012565198878501 0 -1.996138935577031 0.1957866103384567 0 2.029442597167239 -0.4675494937966403 0 0.7250912783621005 -2.282094080420596 0 -1.964920909572389 1.400707953197052 0 1.137347058447472 1.359098575541337 0 0.4412486541792407 -0.6718166933455669 0 0.3907514460135041 -0.8643349369016038 0 0.07751655904394497 -0.5817625172004235 0 2.520707218769766 -0.09920835823266433 0 -2.012133259526265 0.2914990872428223 0 1.080243977287634 -0.6078768293775038 0 1.024709281470008 -1.694204003722669 0 -0.3108133212300085 -0.9948503352507562 0 -0.510347430993248 0.9881921272186682 0 1.862711776756461 0.1753891807430077 0 -1.186664067008692 2.079496219826179 0 -0.731371931487555 -0.4275250292638575 0 1.719184973226976 -0.5262290940248641 0 1.03594997864438 0.9577670213056938 0 1.946146249571628 1.088181296303833 0 -0.6099086583388093 -1.870839286089825 0 1.707768047582855 -0.8475809815218057 0 -1.905080049907365 0.8764398047053626 0 -2.006675294461827 0.3459157799787731 0 -2.013012329944678 0.3436373898383062 0 -2.014535695471957 0.3224347576706757 0 2.230422277653603 0.3508775662858043 0 2.640922325062176 0.5049117681673749 0 2.591865788291474 0.7691244472393628 0 2.181365740882901 0.6150902453577922 0 2.411144032972539 0.5600010067625836 0 0.7257342162810284 0.492016654908998 0 0.5490965688582448 0.407332441991901 0 0.6388546660496441 0.2567191664878616 0 0.8154923134724279 0.3414033794049586 0 0.6822944411653362 0.3743679106984298 0 0.6974912546521488 0.1219699815896756 0 0.4830301442731031 0.1830742746259528 0 0.5902702361823562 0.1525540833038588 0 0.3267142097311743 0.6374423417111776 0 0.2414276399239985 0.7729153542263421 0 0.08367250247226385 0.6941583281764858 0 0.1689590722794396 0.5586853156613214 0 0.205193356101719 0.6658003349438317 0 2.116050173643686 0.9249865277374973 0 1.836626586488714 0.8591239699449097 0 1.901942153727929 0.5492276875652045 0 2.008996163685807 0.7371071076513509 0 0.4548582406480726 -2.294111025710572 0 0.09231260146702469 -2.653063985500274 0 0.7507742068348333 -2.5899357796439 0 0.4232184086541159 -2.634222804916002 0 1.382841335743229 -0.6722813132922417 0 1.312718450975328 -0.8263940743538204 0 1.461333020147979 -0.8765830717817498 0 1.531455904915881 -0.7224703107201711 0 1.422087177945604 -0.7744321925369958 0 -0.01583302320405473 2.683476627768417 0 -0.7014394167598662 2.594428186604244 0 -0.3290438723101277 2.32901607493906 0 -0.3603112244851472 2.651675329530245 0 2.114931045712969 -0.2784306624282146 0 2.155705912521659 -0.09776252458359219 0 1.994479908671001 -0.08339725689835539 0 1.953705041862311 -0.2640653947429779 0 2.054705477191985 -0.1809139596632851 0 2.272111230462471 1.294090648151918 0 2.443844385588773 1.036518412416384 0 1.845723476633141 1.893755156298641 0 1.758136429639135 1.377185632670735 0 2.069098225256419 1.60173495984845 0 -1.890626108128504 1.940546620891652 0 -1.423297969853023 1.919634559024926 0 -1.343332033504353 2.338786215589743 0 -1.624791128439599 2.149847289949311 0 0.7834450628767842 -0.6835235544696052 0 0.6366848363960079 -0.8600648443398838 0 0.7917752914947856 -0.9534511314619337 0 0.9385355179755619 -0.7769098415916551 0 0.787610177185785 -0.8184873429657695 0 -1.898672790240461 0.1376085378345358 0 -1.881266479860997 0.04652027741101953 0 -1.800796959361694 0.05770579645022444 0 -1.85010575562187 0.09695572083047978 0 0.4681875878698951 0.7765280726372472 0 0.4474557202412476 0.5370169607581878 0 0.5889290983799684 0.6761026916842574 0 0.4578216540555713 0.6567725166977176 0 -1.88046612502149 -1.92967395977535 0 -1.802162533962273 -1.431869209935481 0 -2.281394686397257 -1.31285542193996 0 -2.091111277417986 -1.629076748480825 0 -2.069807172352042 0.2249784582698535 0 -2.038700211055173 0.1752790338661427 0 -2.006580680274735 0.227027481503453 0 -2.037687641571604 0.2767269059071638 0 -2.038193926313388 0.2260029698866532 0 0.01712011591286006 -0.9998376009254528 0 -0.09577673616319832 -1.21529931648805 0 0.07993728768618442 -1.295587065904845 0 0.1928341397622428 -1.080125350342247 0 0.04852870179952224 -1.147712333415149 0 1.2339446689866 1.192124526418456 0 1.638344264548678 1.056665886799704 0 1.353736834077057 1.512644272289486 0 1.496040549312867 1.284655079544595 0 -1.030296497855216 -0.4941421912427078 0 -1.105252325842865 -0.6727322562950484 0 -0.904712333228665 -0.7487373894871754 0 -0.8297565052410156 -0.5701473244348348 0 -0.9675044155419402 -0.6214397903649416 0 0.4308824579422069 -1.133271453212546 0 0.500258362730917 -0.9408701262918581 0 0.2622100445509528 -0.8877240234215598 0 0.3465462512465798 -1.010497738317053 0 -1.807446580048291 -0.4634987098729345 0 -1.678092918943703 -0.6224118388244477 0 -1.530693724270641 -0.5055019888523109 0 -1.660047385375229 -0.3465888599007976 0 -1.669070152159466 -0.4845003493626227 0 -0.060976551195944 -2.237926608112144 0 -0.5415177203167446 -2.533751362045473 0 -0.2262775639280467 -2.606130596116788 0 -2.770781282416843 0.07397050609752133 0 -2.667194629001818 -0.5105733721860468 0 -2.489087171985061 -0.04837429843473201 0 -2.731710878053245 -0.2199764375474496 0 -1.097582759821111 0.6972500147667687 0 -0.8747342230675563 0.716607712400993 0 -0.869405242105629 0.8874679008897526 0 -1.092253778859183 0.8681102032555283 0 -0.9834940009633697 0.7923589578282607 0 1.908581027716086 -1.911926077441711 0 1.465770261799166 -1.88825118690402 0 1.367849405862903 -2.336023386918787 0 1.646027274412665 -2.134155603888862 0 -2.661765596229322 0.7262734093284849 0 -2.483658139212561 0.4120153477722383 0 -2.728996361666997 0.4017969622161899 0 2.489314952117251 -0.269451739282209 0 2.67785008216597 -0.6080761278196578 0 2.760353609384883 -0.04960417911633216 0 2.731824768119341 -0.330515157971182 0 -1.688405850767883 -1.067204845330461 0 -1.458741326508109 -0.8202136733162644 0 -1.907757443203477 -0.8694030108386442 0 -1.683249384855793 -0.8448083420774544 0 1.998702574680057 -0.4357896712146621 0 2.081206582235236 -0.4549191227554771 0 2.070939488870311 -0.3985364706837237 0 1.988435481315132 -0.3794070191429088 0 2.034821031775184 -0.4171630709491929 0 2.293270011617837 -0.7513507785925828 0 2.644697906176056 -0.8210094002529402 0 2.326422187607752 -0.5384175061593004 0 2.485560046891904 -0.6797134532061202 0 -1.950951614323712 0.4884663291682002 0 -1.992161812253477 0.5017762186468157 0 -1.991870388503521 0.4386944587833345 0 -1.971739225890309 0.4641052563531091 0 0.458869390276515 0.9379705597216548 0 0.2321094423306185 0.9343578413107496 0 0.3501485151002568 0.8554429569739985 0 2.235274065077645 -1.021467131951772 0 2.338503004011851 -1.338686299352613 0 2.503456331305753 -1.08475871452352 0 -0.3882804611048834 -1.167303478470487 0 -0.2789363310217368 -1.340896581378464 0 -0.2051208662463449 -1.041706213580073 0 -0.2420285986340409 -1.191301397479268 0 -0.2820759354181291 1.856917837553274 0 -0.04436099000265557 2.129760063772157 0 -0.5667588177256013 2.056173848720176 0 -0.3055599038641285 2.092966956246167 0 2.074810466670386 -0.7269393879088054 0 2.093236779664572 -0.5920088180302432 0 1.93126703127114 -0.5893275105639494 0 1.912840718276954 -0.7242580804425116 0 2.003038748970763 -0.6581334492363774 0 -0.1168440351577181 -0.5581124996190654 0 -0.0237193418266446 -0.6416696066140274 0 0.0860652853350688 -0.4991907426771451 0 -0.007059407996004713 -0.4156336356821831 0 -0.01538937491132466 -0.5286516211481053 0 -0.4418015134592541 -0.9197640715562525 0 -0.685393348434898 -0.9791650653767675 0 -0.6318722960805272 -1.226704472291002 0 -0.5368369047698907 -1.073234271923627 0 0.2624395554227857 2.326239142302418 0 0.6665011462806119 2.591651253967605 0 0.3270090660414654 2.650286863211925 0 0.9194657764259506 0.5978226828504323 0 0.7826606585248905 0.7819087196256918 0 0.7541974374029594 0.6369626872673448 0 1.385272159584801 0.3026047052081221 0 1.648724135491126 0.4569541977579638 0 1.521134817915432 0.6549607190758675 0 1.257682842009107 0.5006112265260259 0 1.453203488750116 0.4787827121419949 0 1.623462576218444 -0.8285361912702502 0 1.501735466808595 -1.022167822206115 0 1.66386502287906 -0.9741209416946157 0 1.562599021513519 -0.9253520067381829 0 -1.929014335066634 0.5327081336674864 0 -1.853645891606629 0.5518984441690339 0 -1.869187706476933 0.6264713291144246 0 -1.944556149936938 0.607281018612877 0 -1.899101020771783 0.5795897313909555 0 -1.373246148713549 -1.613141688461595 0 -1.501253325391654 -1.942883904777178 0 -1.176961663532281 -2.111484353024902 0 -1.048954486854177 -1.781742136709318 0 -1.275103906122915 -1.862313020743248 0 1.001263109811102 0.8472420899424715 0 0.9356596279906496 1.036081334459399 0 0.7170571767044378 0.9707479641426193 0 0.85916014325777 0.9089950270425454 0 -2.320148770036271 -0.1258534645171875 0 -2.244976726313108 0.0987557676074054 0 -2.413915128261898 0.1762349336898609 0 -2.367031949149085 0.02519073458633669 0 -0.6747270400198022 -0.7549035105653865 0 -0.4906845544734634 -0.7273558984318222 0 -0.5101058252135777 -0.5597060394402857 0 -0.6941483107599167 -0.5872536515738499 0 -0.5924164326166901 -0.657304775002836 0 -0.9153786416437606 -0.9729989442985565 0 -0.7950528408317814 -0.8639512274319714 0 -0.2168366225487237 -0.3995758327250136 0 -0.3667599103688362 -0.4972686756207119 0 -0.2667673229778306 -0.6558053425147636 0 -0.2418019727632771 -0.5276905876198886 0 0.8303202715208433 2.166793122058534 0 0.4662899655213851 2.057009128537762 0 0.5828144126793484 1.733684475876313 0 0.9468447186788065 1.843468469397085 0 0.7065673421000958 1.950238798967423 0 0.9863581678921957 1.236747111577221 0 1.183246129085054 0.9914587493006346 0 1.084802148488625 1.114102930438928 0 0.6858008679289228 1.218838146051321 0 0.427613081501 1.186060741630357 0 0.572335129102719 1.078404352886488 0 -2.099533333411415 -0.07671659642397061 0 -2.301891095918672 -0.3561548902869562 0 -2.081275659293817 -0.3070180221937393 0 -2.200712214665044 -0.2164357433554634 0 -1.153690564829398 1.569694078640357 0 -1.24003565047724 1.330075987491218 0 -0.9692601486641572 1.268646320866475 0 -0.8829150630163152 1.508264412015614 0 -1.061475356746778 1.419170199753416 0 -1.996627785801824 -0.04738154097652988 0 -2.039568076125119 0.1032121241594275 0 -2.142473623734711 0.07387706871198674 0 -2.069550704768267 0.01324776386772843 0 -1.996323513280948 0.2601189967116355 0 -1.965276300023554 0.2087378204744921 0 -1.981248110439696 0.2339712877762221 0 -1.259489465519159 -1.248477323856575 0 -1.530825999740716 -1.340173266896028 0 1.261924611908913 -0.5917136751275129 0 1.499455651601411 -0.5462299951858156 0 1.378538927767095 -0.4656623570210868 0 1.380690131755162 -0.5689718351566643 0 -0.458243481832371 -2.020282265656783 0 -0.2074525115558394 -1.945082761134091 0 -0.2528563461573085 -1.688585001190553 0 -0.50364731643384 -1.763784505713244 0 -0.3555499139948397 -1.854433633423668 0 1.036279141733613 0.3901479328039592 0 1.140869476701444 0.7082859765724989 0 1.088574309217529 0.5492169546882291 0 1.487597182987285 -0.3760869532304036 0 1.543769230187492 -0.4417097177397047 0 1.623873955372556 -0.366808274345526 0 1.555743450699289 -0.3713590689983188 0 -0.8598252699638913 1.037379527660558 0 -0.7828980932860307 1.220064514850236 0 -1.046187325342018 1.085961333676797 0 -0.9145427093140244 1.153012924263517 0 1.849445897422824 -1.139016750286326 0 2.016814520130195 -0.9970557412679948 0 1.83123364558643 -0.8321599326762847 0 1.840339771504627 -0.9855883414813053 0 -0.9065428826104247 2.185287557083733 0 -1.027296589852854 2.478463077308794 0 2.452387195013457 0.06707902139726082 0 2.713360889567444 0.2293287990287082 0 -1.431447372149979 -2.372908222458312 0 -1.663768806208905 -2.161471962825444 0 0.00435670019558361 -0.8063449029845735 0 0.1841091461246703 -0.7799479535234135 0 0.1560331041024421 -0.6152726571528674 0 0.08019490214901284 -0.7108087800687205 0 1.302047692894005 2.323068713201193 0 0.9891852843080526 2.469215859796198 0 0.8801839726393996 0.1759782712331929 0 0.913691870392338 0.04567058148987017 0 0.8055920845903524 0.08382202178192302 0 1.664958917478364 -0.4215136561936799 0 1.724686790526562 -0.3666597246075505 0 1.674286348063707 -0.3666733521767548 0 0.980395045043952 -2.178032321452428 0 1.064222671069612 -2.474835459493144 0 1.337110997747329 1.857125592043351 0 1.581697642386743 2.118592806458531 0 1.716526562166456 0.2296154663364744 0 1.96974458040326 0.3218889561437152 0 1.809234357947193 0.3894215769508395 0 -2.271674730578453 0.7623669009224835 0 -2.330679459383123 0.5581411913560006 0 -2.172694794718767 0.499905199230168 0 -2.113690065914096 0.704130908796651 0 -2.22218476264861 0.6311360500763257 0 1.322852495975396 0.852502635930662 0 1.579739541232055 0.8558133029377859 0 -2.281498560462856 1.45035397659852 0 -1.812426391134871 1.580240425710362 0 -2.096243206004293 1.703262356368256 0 1.256588567419974 -1.04985866123407 0 1.247009273745018 -1.285294796981811 0 1.492156173133639 -1.257603957953857 0 1.374372370276807 -1.153731309593963 0 1.868056467191031 -0.360426677824063 0 1.885664769146355 -0.3808491560730703 0 1.934235173831577 -0.3598307459267288 0 1.901179882432422 -0.35988784712119 0 1.162057802893249 0.8498723629365668 0 0.3073910531058088 -1.481203593646815 0 0.5772355639132669 -1.549918742032732 0 0.700726968749665 -1.201986601598464 0 0.5040590109277369 -1.341595097622639 0 0.001049347372887338 0.8759425624996796 0 -0.1916606886976938 0.8129184794703211 0 -0.1090375335983173 0.6311342451471273 0 -0.05399409311271498 0.7535384038234035 0 -2.214878347761646 1.082277432301081 0 -2.022596601184479 1.241355641835877 0 -2.473780307040022 1.291275767063724 0 -2.248188454112251 1.266315704449801 0 -0.8004686205517046 -1.973033879288161 0 -0.8837428590360783 -2.486502975676852 0 -0.6709931704342246 -2.253392620666817 0 -1.269402597050785 1.108557402379766 0 -1.31546905056795 0.8907062719584973 0 -1.180828187954984 0.9883338028176474 0 -2.039612794562788 0.3076709133380435 0 -2.014577842249352 0.2748837199556358 0 -2.016502995240536 0.3058277273865155 0 -2.02709531840607 0.2912773166468396 0 1.298501744433689 -0.3776255991600038 0 1.393060172667545 -0.3767173281414846 0 0.9606784287245115 -1.271305233719075 0 1.051726751469632 -1.022769763582545 0 0.8762268601096486 -1.112378182590504 0 1.100970800900585 0.2247228246321934 0 0.9582315571865065 0.283063102018576 0 -1.394250643569301 -0.1903254171236244 0 -1.268317172064001 -0.1251824379998173 0 -1.462531119999076 -0.08287862360140827 0 -1.365572158142859 -0.1046424715280791 0 -0.4376985687896016 1.609816939123283 0 -0.7339475459459044 1.748398787676378 0 -0.5866660858600126 1.369682563462519 0 -0.6603068159029585 1.559040675569449 0 2.163946128527 -0.5397143218505804 0 2.359957075971562 -0.400790662392962 0 2.19748101689081 -0.4020874780842421 0 2.261951602249281 -0.4702524921217712 0 0.8659042947406115 -1.797967277286991 0 0.7160952931866577 -2.091912315635955 0 1.130204046597906 -1.884087283103465 0 0.9231496698922819 -1.98799979936971 0 -1.162505980313773 -2.441561475279382 0 1.107856635024985 -0.7993051767022956 0 1.18222260122248 -0.9245819189681828 0 -1.34156423625058 -0.5724237233681442 0 -1.222429416100395 -0.9205222062431686 0 -1.281996826175487 -0.7464729648056564 0 -2.005318941088907 0.2937858143863155 0 -2.010410607071493 0.3079474189938174 0 -1.073731610830728 1.877512496039934 0 -0.8202452142781645 1.966843172380055 0 0.4033248268030828 0.3113169148104925 0 0.2724771884407393 0.2327191959746439 0 0.3777719309055079 0.2079588334168912 0 1.049466829091515 -0.0307687086825197 0 1.042834012786211 0.0799254471894788 0 0.9815703840130505 0.007420920397379998 0 0.3685446900625515 1.407300469092772 0 0.1049501663682812 1.350610613807989 0 0.1640185578067296 1.129370886345574 0 0.2662816239346405 1.268335677719173 0 -0.06704153715100152 1.070955607534504 0 0.08253395258980847 1.002656724422627 0 -0.2663519308045946 0.46758153782926 0 -0.06544638493524585 0.4958053864803227 0 -0.3099430794676661 0.6029103964960647 0 -0.187694732201456 0.5493578914881936 0 -1.676978077476003 0.562712414493565 0 -1.758573972105691 0.6052096534466829 0 -1.801432384307995 0.5290241393511188 0 -1.739289903351442 0.5467059165140349 0 0.5349408888933742 -1.807500073700982 0 0.2737038363547891 -2.009698783775599 0 0.4948995647707234 -2.050805549705777 0 -0.08714592884905747 -0.3042206103479202 0 0.113084363334611 -0.3123367147345443 0 0.01296140730057146 -0.3083865203314652 0 -1.744808813333022 0.7003539215580571 0 -1.855422547704264 0.7216155972257988 0 -1.806998259904978 0.6634126253362409 0 0.19070170554473 -0.4225066261312125 0 0.3077791808368565 -0.3246253507741479 0 0.2104268999891872 -0.3185560257357928 0 1.106709161480003 -0.3589234292714213 0 1.188719745126694 -0.4622541450601549 0 1.202611822688285 -0.3681800569445228 0 -0.2937287681046061 -0.2810157880673363 0 -0.190449180389692 -0.292761364206132 0 -0.233556178791234 0.356652834958827 0 -0.4428141102223386 0.4248087238404419 0 -0.3381336070323008 0.3909390526964434 0 -0.504482912375533 0.558582241977616 0 -0.6639674125872618 0.4932695335928977 0 -0.5533313925040971 0.4593008078338171 0 0.3872626066049027 -0.4382896964478574 0 0.506889249530149 -0.3404475458397923 0 0.4073315947597769 -0.3325800204548632 0 -2.61037745158812 -0.772594877068842 0 -2.245073918504974 -0.6181763951697514 0 -2.456134273753396 -0.5643748836778992 0 -0.2178842819636214 -0.8482135156391937 0 -0.1003820830253807 -0.9240255582823232 0 -1.498420312118402 0.5916262859371826 0 -1.606843164783722 0.6613141272257005 0 -1.587702264978054 0.5781554550688592 0 0.5909925051190522 -0.4555333428965141 0 0.7087960225762677 -0.3534991118143253 0 0.607841925733547 -0.3469856047845591 0 -0.7342233375986141 0.5777313910090646 0 -0.8657808354031087 0.4853498884494651 0 -0.7648077301926455 0.489639428386936 0 -0.6776289667653146 -0.2172677878864283 0 -0.6110181129189656 -0.3179194119676153 0 -0.4908217708771563 -0.2482339841791225 0 -0.5842512213347359 -0.2329798523925511 0 -0.8695792723578442 -0.1993023820808261 0 -0.7936492183888681 -0.2931986829615847 0 -0.7736424988081385 -0.2085710736932076 0 -0.423670866077083 -0.3611553119312535 0 -0.3922927930657305 -0.2648074571536277 0 0.0491895931315376 0.4629262441815549 0 -0.111368815196249 0.3822330573030306 0 0.00326716287053444 0.3493539150042628 0 -0.0310896110323557 0.4225796507422927 0 0.7985580241028387 -0.4598201763858081 0 0.9117532094668406 -0.3561706465043259 0 0.8102757650738872 -0.3548151207926744 0 1.221116193402177 0.1842803525626828 0 1.162979405287804 0.03948297511996819 0 1.131975103094194 0.1321028998760808 0 0.1819144990381837 0.3452423620970128 0 0.07184426848329289 0.2721554057748361 0 0.1721874731894164 0.2525304764071359 0 -1.755668442256316 -0.05702897763788416 0 -1.649265467434765 -0.02191245516674582 0 -1.725379467770042 0.01703082172830402 0 0.999192542329201 -0.4534765608969323 0 1.009234666862511 -0.3574902037737708 0 -1.028384450078899 0.5436846511035545 0 -1.254420945339998 0.619643876445384 0 -1.14133059093205 0.5822256086818263 0 -0.9043577020399693 0.5921010568420417 0 -0.7045998586262011 0.7022380465680158 0 -0.8044787803330852 0.6471695517050288 0 -1.371091203507918 0.7253119314002714 0 -1.376362441420601 0.6064307158125137 0 -0.9470110300791532 0.5149399204609829 0 -0.09637318338310177 0.2904885397854587 0 -0.01222940319187349 0.2814484924798893 0 -0.1649213400279939 0.3237348628515077 0 0.6629132550452612 1.481078184117321 0 0.2884458476966386 1.659906760851764 0 0.47567955137095 1.570492472484542 0 0.3016839781860857 0.4410014335767793 0 0.4253902735221652 0.4241669377843401 0 -0.3499062936570586 0.727528388201971 0 -0.5444461265649254 0.6832002336835223 0 -0.4271946030162957 0.6430553150897935 0 -1.26614215858975 -0.4367520048309742 0 -1.455271646609811 -0.3698302703151409 0 -1.398417941430195 -0.4711269968416426 0 -0.1796288946038862 1.304133004533736 0 -0.4393243156667029 1.193278601183084 0 -0.3267369582138182 0.9601012041838519 0 -0.2531829264088522 1.132117104358794 0 -1.074315197169628 -0.1756386251127608 0 -0.9948435285212622 -0.2804024279469547 0 -0.9720051235212879 -0.1878298751969003 0 0.1754367856588117 0.4519638388791671 0 -0.1002258894247308 -1.531238409055576 0 0.1272278759948937 -1.716854936797546 0 0.103582581840539 -1.506221001351196 0 2.155042265874016 -0.8742032599302888 0 -1.914441525307776 -0.07669342494566984 0 -1.879736170508777 -0.2301590574132888 0 -1.720963087457318 -0.2104946101055031 0 -1.817702306382547 -0.1435940175255865 0 -1.517353726603361 0.9470728755709383 0 -1.57297587954333 0.7816785350127126 0 -1.44422246505564 0.8361924034856048 0 -2.008986068833331 -0.5403576746533849 0 -1.944361119671054 -0.3852583660333369 0 -1.721554092371775 0.9429443676081284 0 -1.518711707439345 1.122332747239721 0 -1.722912073207759 1.118204239276911 0 -1.62013289990556 1.032638557423925 0 -0.4315667877543145 -1.49824317351344 0 -0.2658963385895227 -1.514740791284508 0 -2.387619058159078 0.8793206087384413 0 -2.579628827846472 1.013685452916848 0 0.9634705550085341 1.49898714964322 0 1.150290776377932 1.678056370843286 0 0.6789267949176263 -0.5828029750017636 0 0.9030762920619966 -0.5605407558536497 0 0.7910015434898114 -0.5716718654277066 0 -1.199051454516653 -0.2409361564883696 0 -1.17140621747883 -0.150870668892934 0 -0.2153575421868862 1.50080160881008 0 -0.05973490881541368 1.747902507240071 0 -0.2487167388025077 1.678859723181677 0 0.1594894200959437 1.860530050007502 0 0.2109644877593647 2.09338459615496 0 1.813219758878278 -0.4496982328751374 0 1.865739962997677 -0.482380746531091 0 1.879918439434269 -0.4238583939066205 0 1.82739823531487 -0.3911758802506669 0 1.846569099156274 -0.4367783133908789 0 -0.635556323092721 1.043660552570801 0 -0.6111112044763669 1.20667155801666 0 0.03312566239947484 -1.977390772454845 0 -0.9524386910625251 -1.300954061911963 0 -0.9181584605646014 -1.532511118529063 0 -0.5975920655826035 -1.458261528908102 0 -0.7750153783225643 -1.379607795410033 0 -1.489344760865801 1.343851332351173 0 -1.379373678958293 1.22620436736547 0 1.573772820261707 -0.5800547128865144 0 1.618086398847788 -0.4755344354404035 0 1.558771025224599 -0.5108822153131096 0 1.4345748773359 -0.092315142143451 0 1.358301273064406 0.0330543112757316 0 1.223309429665308 -0.05096396104222361 0 1.328911089835409 -0.0717480222019177 0 1.136368807930738 -0.04093198455289825 0 1.76034364993421 -0.406509795108388 0 1.80185855447478 -0.3604148027913144 0 1.763280180860647 -0.3634705251638322 0 -1.08743405358146 -1.110738134077566 0 1.83495972730416 -0.3604029078071596 0 -2.016217496082329 0.4368015362394488 0 -2.005988555044488 0.3994502363107195 0 -1.999333083170715 0.4194586601251659 0 -1.503256923851694 1.611816141625348 0 -1.288494267341211 1.744664318832641 0 1.52245723924703 0.151378663921171 0 1.371786716324604 0.1678295082419269 0 -1.325309667602751 -0.284909161735463 0 -1.139883945503652 -0.3927789995838807 0 -1.232596806553201 -0.3388440806596719 0 1.718360473016906 -0.4714238704413992 0 1.771236581960973 -0.5146123082081486 0 1.765790115947592 -0.4605610516582683 0 -1.87914975693552 0.4933103287887817 0 -1.840455168701831 0.5119016181810684 0 1.530096029982271 -1.558539412682034 0 1.887385754271456 -1.439952205014503 0 1.689770963702548 -1.34877808148418 0 1.645495712376566 -0.1566767081495967 0 1.590194931254058 -0.01932509223819162 0 1.539989609500377 -0.124662679614655 0 -2.143845292875119 -0.9472217313550106 0 -2.076415680854225 -0.7437897030041978 0 0.9081989697605043 -1.540385945618742 0 0.7215699293269391 -1.673943009659862 0 1.976584960405616 0.09097063338955944 0 2.237262657655959 0.1199592435316486 0 2.103503619029609 0.2209240998376819 0 1.709946420721636 -0.7541114915102562 0 1.617939749419073 -0.6480456109601771 0 1.620701162818758 -0.7382909011152137 0 -2.096429758771505 0.3211835917275963 0 -2.150925969285398 0.2913378683026253 0 -2.124303382865935 0.1951327348448826 0 -2.110366570818719 0.2581581632862394 0 -1.798514228148979 1.312275616436187 0 -1.650885576000336 1.462045879030768 0 -1.58512832465845 -0.1391522759080079 0 -1.556164277369634 -0.05325901020036975 0 -2.09893402018102 0.9653237244851235 0 -2.243276539170049 0.9223221666117823 0 -1.915297142163301 0.4915243828847914 0 -1.963452740355045 0.0758321613801595 0 -1.962584875285099 0.1478990710868748 0 -2.001076475705109 0.1255555976231511 0 0.33789915167009 -0.6602997452254391 0 0.4160000500963724 -0.7680758151235854 0 0.3000545981105214 -0.7740118843234994 0 0.06922151878528118 1.547279218084333 0 -0.0552036879093025 1.425706111309034 0 1.847135191829436 -0.5673863997228465 0 1.715654883543697 -0.5934355477617854 0 1.79155349341216 -0.6462096392764833 0 1.781395037686567 -0.580410973742316 0 -0.484982563173183 0.8747111129155019 0 -0.6451362952344586 0.8937489257999953 0 -0.594791210899692 0.7884745797417588 0 -1.932384464535333 0.1725922273250305 0 -1.524212622576361 -0.2752465257033023 0 -1.424761145089556 -0.2800778437193827 0 -1.62258785501684 -0.2428705679044027 0 0.1143554694406125 1.703904634045917 0 0.8246357114687284 1.358912647847271 0 -0.7524807825991751 0.9655642267302766 0 -0.885256080872826 -0.3817656196057818 0 -1.012570013188239 -0.3872723095948313 0 1.837581744692731 -0.2390036235852119 0 1.80215920243887 -0.115456180110803 0 1.741471899463854 -0.1981022919279712 0 -1.71094152809263 0.8207183293450692 0 -1.658892346438176 0.7410162282853848 0 -0.5670167809218246 -0.4235926757508274 0 -0.4668883456453304 -0.4604306756857696 0 1.784264254173484 0.05891171017711182 0 1.653360746710257 0.1051451870491414 0 2.370830449879157 -0.1506427467179799 0 2.304046553767558 -0.01534175159316569 0 -0.3383216259354384 0.8438147961929114 0 -2.001344604193299 0.2766036888031538 0 0.2606695243121033 -0.5385885406069348 0 0.1733674048235861 -0.5188896416420399 0 0.4644922339628893 -0.5600009010663617 0 0.3625808791374964 -0.5492947208366482 0 1.161085971898181 -0.6584951177701699 0 0.991764854848758 -0.6360997826595294 0 1.049810744936872 -0.7177024796809125 0 0.5524265237614634 -0.6872705331716111 0 0.5717095144402577 -0.5714019380340626 0 -2.26093644843246 0.3223607772736231 0 -2.226806485444332 0.2200114337403012 0 -2.185055932273526 0.3936872118359472 0 -2.205931208858929 0.3068493227881242 0 -0.3542844182185424 -0.787784707035508 0 -2.01797468592117 0.7618810952973807 0 -2.040271529929865 0.5495308321121473 0 -2.029123107925518 0.655705963704764 0 -0.669672594262129 -1.723802861107906 0 -0.8593135405581531 -1.752772498908612 0 -1.938947132831411 -0.0004306317827551844 0 1.67148795438633 -0.5254446496881229 0 1.668223435932347 -0.4734791529409014 0 1.194529814781011 -1.554375508881479 0 1.077604121752761 -1.412840371300277 0 1.889372081422243 -0.01224277336062179 0 1.087881105115962 -0.529035587702812 0 0.9954786985889796 -0.5447881717782309 0 1.174902858512438 -0.5603746314151625 0 1.811393569499295 -0.739184785976384 0 -0.5506196910082217 -1.611023017310674 0 -1.859398324798657 0.9445025017919317 0 -1.848785760519512 0.8222764635288724 0 -1.785169926445643 0.8826104155685004 0 -0.7155034213252827 -0.3627782957880544 0 -0.6715020893281418 -0.4684515595712666 0 -0.6412601011235537 -0.3931854857694409 0 2.010497233372808 -0.5072136189351397 0 2.087221680949904 -0.5234639703928601 0 1.330150038290088 -1.721313347892749 0 1.938077143746629 -0.4328979096517163 0 1.94987180243938 -0.5043218573721939 0 1.974287188559718 -0.470055764293428 0 -0.8071102838092407 -0.4513452324322516 0 -0.8003797510990545 -0.3722719576969181 0 1.99704734379106 -0.3522478072990181 0 1.96169451579646 -0.3755283289546924 0 1.976564917940562 -0.3641596760694287 0 -2.04931818571504 0.4509103483794635 0 -2.066557395098478 0.408933971499549 0 -2.033456705465767 0.3948251593595343 0 -2.041387445590404 0.4228677538694989 0 -2.097427903391428 0.4986649618447951 0 -2.044794857822452 0.5002205902458055 0 1.943823473458715 -0.389888671818166 0 1.911870956446492 -0.4068735328623933 0 0.5263424432461902 -0.8140703297317345 0 -2.053198112923796 0.337670588776571 0 -2.109789040946187 0.3924469744505743 0 -2.081493576934991 0.3650587816135726 0 -1.946994446243259 1.047284264676601 0 -1.87275433719612 1.179779940556394 0 2.241472573733469 -0.281981669828733 0 2.15620603130189 -0.3402590702562284 0 -0.7506292972845787 -0.5192994420030508 0 -2.011337898736418 0.8625419616004544 0 -1.933380223220341 0.7920787794131265 0 -2.141241917832477 0.4461760868403711 0 -1.979166172489839 0.9549131131385278 0 2.365393762925359 -0.275716704555471 0 1.644713851902702 -0.58674513032415 0 1.913217640877371 -0.2947691734205083 0 -2.457741945204488 -1.047636014225145 0 2.133722887572581 -1.633118246020332 0 -2.026597648305685 0.3736370652768336 0 -2.016668551413463 0.3867457646684535 0 -2.033105221434237 0.3406539893074386 0 1.947628493177854 -0.3687039511615814 0 -2.372297293822511 0.3671880625229307 0 -2.184640054589521 0.146944251226144 0 1.898503497134408 -0.5358541285475202 0 $EndNodes $Elements 10 728 1 728 0 51 15 1 1 1 1 6 8 24 2 7 8 31 3 8 9 32 4 9 10 33 5 10 11 34 6 11 12 35 7 12 13 36 8 13 14 37 9 14 15 38 10 15 16 39 11 16 17 40 12 17 18 41 13 18 19 42 14 19 20 43 15 20 21 44 16 21 22 45 17 22 23 46 18 23 24 47 19 24 25 48 20 25 26 49 21 26 27 50 22 27 28 51 23 28 29 52 24 29 30 53 25 30 7 54 1 7 8 20 26 2 55 74 27 55 56 75 28 56 57 76 29 57 58 77 30 58 59 78 31 59 60 79 32 60 61 80 33 61 62 81 34 62 63 82 35 63 64 83 36 64 65 84 37 65 66 85 38 66 67 86 39 67 68 87 40 68 69 88 41 69 70 89 42 70 71 90 43 71 72 91 44 72 73 92 45 73 3 93 1 8 8 10 46 4 94 103 47 94 95 104 48 95 96 105 49 96 97 106 50 97 98 107 51 98 99 108 52 99 100 109 53 100 101 110 54 101 102 111 55 102 2 112 1 9 8 10 56 3 113 122 57 113 114 123 58 114 115 124 59 115 116 125 60 116 117 126 61 117 118 127 62 118 119 128 63 119 120 129 64 120 121 130 65 121 5 131 1 10 8 20 66 5 132 151 67 132 133 152 68 133 134 153 69 134 135 154 70 135 136 155 71 136 137 156 72 137 138 157 73 138 139 158 74 139 140 159 75 140 141 160 76 141 142 161 77 142 143 162 78 143 144 163 79 144 145 164 80 145 146 165 81 146 147 166 82 147 148 167 83 148 149 168 84 149 150 169 85 150 4 170 1 11 8 56 86 6 171 226 87 171 172 227 88 172 173 228 89 173 174 229 90 174 175 230 91 175 176 231 92 176 177 232 93 177 178 233 94 178 179 234 95 179 180 235 96 180 181 236 97 181 182 237 98 182 183 238 99 183 184 239 100 184 185 240 101 185 186 241 102 186 187 242 103 187 188 243 104 188 189 244 105 189 190 245 106 190 191 246 107 191 192 247 108 192 193 248 109 193 194 249 110 194 195 250 111 195 196 251 112 196 197 252 113 197 198 253 114 198 199 254 115 199 200 255 116 200 201 256 117 201 202 257 118 202 203 258 119 203 204 259 120 204 205 260 121 205 206 261 122 206 207 262 123 207 208 263 124 208 209 264 125 209 210 265 126 210 211 266 127 211 212 267 128 212 213 268 129 213 214 269 130 214 215 270 131 215 216 271 132 216 217 272 133 217 218 273 134 218 219 274 135 219 220 275 136 220 221 276 137 221 222 277 138 222 223 278 139 223 224 279 140 224 225 280 141 225 6 281 2 1 10 340 142 522 541 562 538 580 581 582 583 584 143 524 500 447 493 585 586 587 588 589 144 524 493 438 547 588 590 591 592 593 145 564 542 569 538 594 595 596 597 598 146 432 457 444 391 599 600 601 602 603 147 502 445 338 507 604 605 606 607 608 148 474 464 424 400 609 610 611 612 613 149 487 506 472 450 614 615 616 617 618 150 396 374 422 477 619 620 621 622 623 151 339 394 469 378 624 625 626 627 628 152 375 395 334 329 629 630 631 632 633 153 492 435 408 346 634 635 636 637 638 154 450 472 407 344 616 639 640 641 642 155 466 500 524 481 643 585 644 645 646 156 513 541 516 506 647 648 649 650 651 157 553 460 385 530 652 653 654 655 656 158 377 393 383 301 657 658 659 660 661 159 300 424 534 316 662 663 664 665 666 160 517 482 392 508 667 668 669 670 671 161 379 397 382 330 672 673 674 675 676 162 562 541 513 557 581 647 677 678 679 163 300 354 400 424 680 681 611 662 682 164 337 294 359 433 683 684 685 686 687 165 558 576 559 546 688 689 690 691 692 166 441 491 520 486 693 694 695 696 697 167 443 490 514 551 698 699 700 701 702 168 414 436 497 433 703 704 705 706 707 169 446 479 451 386 708 709 710 711 712 170 422 399 347 477 713 714 715 621 716 171 340 417 470 462 717 718 719 720 721 172 519 536 531 554 722 723 724 725 726 173 476 400 354 312 727 681 728 729 730 174 344 407 362 296 640 731 732 733 734 175 495 521 555 527 735 736 737 738 739 176 346 408 363 297 636 740 741 742 743 177 470 417 348 421 718 744 745 746 747 178 546 523 482 517 748 749 667 750 751 179 426 473 348 417 752 753 744 754 755 180 579 568 559 576 756 757 689 758 759 181 464 441 486 452 760 696 761 762 763 182 543 578 515 571 764 765 766 767 768 183 541 522 528 516 580 769 770 648 771 184 536 557 513 531 772 677 773 723 774 185 386 357 316 402 775 776 777 778 779 186 492 523 512 435 780 781 782 634 783 187 405 360 295 449 784 785 786 787 788 188 506 516 485 472 649 789 790 615 791 189 544 532 483 553 792 793 794 795 796 190 544 553 530 537 795 655 797 798 799 191 411 318 365 406 800 801 802 803 804 192 471 429 533 352 805 806 807 808 809 193 398 413 493 447 810 811 587 812 813 194 307 353 398 421 814 815 816 817 818 195 496 434 511 535 819 820 821 822 823 196 457 475 494 444 824 825 826 600 827 197 547 438 497 510 591 828 829 830 831 198 567 560 574 566 832 833 834 835 836 199 387 358 311 403 837 838 839 840 841 200 338 533 429 507 842 806 843 606 844 201 433 359 315 414 685 845 846 706 847 202 304 355 419 425 848 849 850 851 852 203 353 314 413 398 853 854 810 815 855 204 351 391 420 287 856 857 858 859 860 205 418 317 364 409 861 862 863 864 865 206 437 490 458 387 866 867 868 869 870 207 433 497 438 337 705 828 871 686 872 208 412 366 345 410 873 874 875 876 877 209 337 438 493 413 871 590 811 878 879 210 392 361 289 451 880 881 882 883 884 211 544 563 480 532 885 886 887 792 888 212 353 307 142 143 814 889 162 890 891 213 392 451 479 508 883 709 892 669 893 214 366 412 319 367 873 894 895 896 897 215 448 420 495 527 898 899 738 900 901 216 309 310 64 65 902 903 84 904 905 217 490 437 539 514 866 906 907 699 908 218 532 480 449 389 887 909 910 911 912 219 307 312 141 142 913 914 161 889 915 220 309 65 66 304 904 85 916 917 918 221 355 304 66 67 848 916 86 919 920 222 355 299 458 419 921 922 923 849 924 223 313 61 62 298 925 81 926 927 928 224 352 298 62 63 929 926 82 930 931 225 436 414 343 489 703 932 933 934 935 226 415 346 297 320 936 742 937 938 939 227 309 347 399 310 940 714 941 902 942 228 506 487 531 513 614 943 773 650 944 229 474 390 293 372 945 946 947 948 949 230 310 352 63 64 950 930 83 903 951 231 314 353 143 144 853 890 163 952 953 232 536 519 480 563 722 954 886 955 956 233 570 403 342 488 957 958 959 960 961 234 360 405 345 305 784 962 963 964 965 235 358 299 68 69 966 967 88 968 969 236 316 138 139 300 970 158 971 665 972 237 354 300 139 140 680 971 159 973 974 238 299 355 67 68 921 919 87 967 975 239 312 354 140 141 728 973 160 914 976 240 522 510 497 436 977 829 704 978 979 241 356 295 59 60 980 981 79 982 983 242 440 484 518 488 984 985 986 987 988 243 313 356 60 61 989 982 80 925 990 244 415 416 456 455 991 992 993 994 995 245 473 476 312 348 996 729 997 753 998 246 311 302 342 403 999 1000 958 839 1001 247 314 144 145 294 952 164 1002 1003 1004 248 359 294 145 146 684 1002 165 1005 1006 249 315 303 343 414 1007 1008 932 846 1009 250 370 416 371 325 1010 1011 1012 1013 1014 251 435 512 549 501 782 1015 1016 1017 1018 252 455 456 392 482 993 1019 668 1020 1021 253 357 289 136 137 1022 1023 156 1024 1025 254 316 357 137 138 776 1024 157 970 1026 255 319 412 344 296 894 1027 733 1028 1029 256 312 307 421 348 913 817 745 997 1030 257 346 415 455 492 936 994 1031 637 1032 258 409 364 285 454 863 1033 1034 1035 1036 259 356 389 449 295 1037 910 786 980 1038 260 416 415 320 371 991 938 1039 1011 1040 261 539 552 568 579 1041 1042 756 1043 1044 262 410 450 344 412 1045 641 1027 876 1046 263 518 552 570 488 1047 1048 960 986 1049 264 311 358 69 70 838 968 89 1050 1051 265 423 336 327 288 1052 1053 1054 1055 1056 266 305 345 366 323 963 874 1057 1058 1059 267 406 459 501 484 1060 1061 1062 1063 1064 268 315 359 146 147 845 1005 166 1065 1066 269 479 446 571 515 708 1067 766 1068 1069 270 295 360 58 59 785 1070 78 981 1071 271 409 454 485 503 1035 1072 1073 1074 1075 272 554 449 480 519 1076 909 954 725 1077 273 435 501 459 408 1017 1061 1078 635 1079 274 289 361 135 136 881 1080 155 1023 1081 275 294 337 413 314 683 878 854 1003 1082 276 419 443 494 475 1083 1084 825 1085 1086 277 411 406 484 440 803 1063 984 1087 1088 278 459 406 365 284 1060 802 1089 1090 1091 279 349 427 461 376 1092 1093 1094 1095 1096 280 362 285 97 98 1097 1098 107 1099 1100 281 363 284 116 117 1101 1102 126 1103 1104 282 442 503 528 489 1105 1106 1107 1108 1109 283 367 324 323 366 1110 1111 1057 896 1112 284 306 456 416 370 1113 992 1010 1114 1115 285 376 461 423 288 1094 1116 1055 1117 1118 286 554 531 487 439 724 943 1119 1120 1121 287 489 343 418 442 933 1122 1123 1108 1124 288 560 567 551 514 832 1125 700 1126 1127 289 522 538 569 510 583 596 1128 977 1129 290 309 304 425 341 917 851 1130 1131 1132 291 488 342 411 440 959 1133 1087 987 1134 292 358 387 458 299 837 868 922 966 1135 293 298 338 401 313 1136 1137 1138 927 1139 294 467 498 434 384 1140 1141 1142 1143 1144 295 296 362 98 99 732 1099 108 1145 1146 296 297 363 117 118 741 1103 127 1147 1148 297 418 409 503 442 864 1074 1105 1123 1149 298 472 485 454 407 790 1072 1150 639 1151 299 352 310 399 471 950 941 1152 808 1153 300 516 528 503 485 770 1106 1073 789 1154 301 579 560 514 539 1155 1126 907 1043 1156 302 285 364 96 97 1033 1157 106 1098 1158 303 284 365 115 116 1089 1159 125 1102 1160 304 319 296 99 100 1028 1145 109 1161 1162 305 323 56 57 305 1163 76 1164 1058 1165 306 360 305 57 58 964 1164 77 1070 1166 307 363 408 459 284 740 1078 1090 1101 1167 308 320 297 118 119 937 1147 128 1168 1169 309 418 369 322 317 1170 1171 1172 861 1173 310 411 368 321 318 1174 1175 1176 800 1177 311 361 306 134 135 1178 1179 154 1080 1180 312 540 566 556 511 1181 1182 1183 1184 1185 313 362 407 454 285 731 1150 1034 1097 1186 314 341 425 419 475 1130 850 1085 1187 1188 315 371 320 119 120 1039 1168 129 1189 1190 316 319 100 101 367 1161 110 1191 895 1192 317 324 55 56 323 1193 75 1163 1111 1194 318 311 70 71 302 1050 90 1195 999 1196 319 368 302 71 72 1197 1195 91 1198 1199 320 315 147 148 303 1065 167 1200 1007 1201 321 369 303 148 149 1202 1200 168 1203 1204 322 306 370 133 134 1114 1205 153 1179 1206 323 322 94 95 317 1207 104 1208 1172 1209 324 364 317 95 96 862 1208 105 1157 1210 325 321 113 114 318 1211 123 1212 1176 1213 326 365 318 114 115 801 1212 124 1159 1214 327 369 418 343 303 1170 1122 1008 1202 1215 328 357 386 451 289 775 710 882 1022 1216 329 367 101 102 324 1191 111 1217 1110 1218 330 368 411 342 302 1174 1133 1000 1197 1219 331 368 72 73 321 1198 92 1220 1175 1221 332 369 149 150 322 1203 169 1222 1171 1223 333 542 547 510 569 1224 830 1128 595 1225 334 324 102 2 55 1217 112 74 1193 1226 335 321 73 3 113 1220 93 122 1211 1227 336 322 150 4 94 1222 170 103 1207 1228 337 371 120 121 325 1189 130 1229 1012 1230 338 5 132 325 121 151 1231 1229 131 1232 339 370 325 132 133 1013 1231 152 1205 1233 340 283 350 448 467 1234 1235 1236 1237 1238 341 361 392 456 306 880 1019 1113 1178 1239 342 573 545 479 515 1240 1241 1068 1242 1243 343 410 345 405 439 875 962 1244 1245 1246 344 460 553 483 445 652 794 1247 1248 1249 345 352 533 338 298 807 842 1136 929 1250 346 545 573 575 558 1240 1251 1252 1253 1254 347 511 556 565 535 1183 1255 1256 821 1257 348 505 550 571 446 1258 1259 1067 1260 1261 349 419 458 490 443 923 867 698 1083 1262 350 551 567 555 521 1125 1263 736 1264 1265 351 477 347 504 396 715 1266 1267 622 1268 352 525 461 427 496 1269 1093 1270 1271 1272 353 444 494 521 495 826 1273 735 1274 1275 354 546 517 545 558 750 1276 1253 691 1277 355 526 564 577 548 1278 1279 1280 1281 1282 356 546 559 512 523 690 1283 781 748 1284 357 491 525 543 520 1285 1286 1287 694 1288 358 576 574 560 579 1289 833 1155 758 1290 359 391 444 495 420 601 1274 899 857 1291 360 512 559 568 549 1283 757 1292 1015 1293 361 543 525 496 535 1286 1271 822 1294 1295 362 527 498 467 448 1296 1140 1236 900 1297 363 471 394 507 429 1298 1299 843 805 1300 364 393 460 445 502 1301 1248 604 1302 1303 365 542 529 388 481 1304 1305 1306 1307 1308 366 535 565 578 543 1256 1309 764 1294 1310 367 561 577 562 557 1311 1312 678 1313 1314 368 563 561 557 536 1315 1313 772 955 1316 369 384 434 496 427 1142 819 1270 1317 1318 370 434 498 540 511 1141 1319 1184 820 1320 371 555 540 498 527 1321 1319 1296 737 1322 372 492 455 482 523 1031 1020 749 780 1323 373 372 327 336 404 1324 1053 1325 1326 1327 374 572 537 478 509 1328 1329 1330 1331 1332 375 537 530 385 478 797 654 1333 1329 1334 376 518 484 501 549 985 1062 1016 1335 1336 377 316 534 505 402 664 1337 1338 777 1339 378 427 283 467 384 1340 1237 1143 1317 1341 379 375 19 18 282 1342 42 1343 1344 1345 380 388 529 526 453 1305 1346 1347 1348 1349 381 491 441 336 423 693 1350 1052 1351 1352 382 439 487 450 410 1119 617 1045 1245 1353 383 374 326 378 422 1354 1355 1356 620 1357 384 395 375 282 428 629 1344 1358 1359 1360 385 563 544 537 572 885 798 1328 1361 1362 386 517 508 479 545 670 892 1241 1276 1363 387 351 287 29 28 859 1364 52 1365 1366 388 552 518 549 568 1047 1335 1292 1042 1367 389 327 10 9 288 1368 33 1369 1054 1370 390 538 562 577 564 582 1312 1279 597 1371 391 566 574 575 556 834 1372 1373 1182 1374 392 552 539 437 570 1041 906 1375 1048 1376 393 453 526 548 499 1347 1281 1377 1378 1379 394 377 22 21 328 1380 45 1381 1382 1383 395 374 292 27 26 1384 1385 50 1386 1387 396 473 426 373 463 752 1388 1389 1390 1391 397 396 432 292 374 1392 1393 1384 619 1394 398 13 12 293 373 36 1395 1396 1397 1398 399 478 499 548 509 1399 1377 1400 1330 1401 400 372 293 12 11 947 1395 35 1402 1403 401 515 578 565 573 765 1309 1404 1242 1405 402 373 291 14 13 1406 1407 37 1397 1408 403 399 422 378 469 713 1356 626 1409 1410 404 463 373 293 390 1389 1396 946 1411 1412 405 379 16 15 308 1413 39 1414 1415 1416 406 525 491 423 461 1285 1351 1116 1269 1417 407 372 11 10 327 1402 34 1368 1324 1418 408 377 328 380 430 1382 1419 1420 1421 1422 409 400 476 390 474 727 1423 945 612 1424 410 462 431 308 340 1425 1426 1427 720 1428 411 448 350 287 420 1235 1429 858 898 1430 412 374 26 25 326 1386 49 1431 1354 1432 413 543 571 550 520 767 1259 1433 1287 1434 414 308 431 397 379 1426 1435 672 1415 1436 415 577 561 509 548 1311 1437 1400 1280 1438 416 427 349 7 283 1092 1439 1440 1340 1441 417 382 397 500 466 673 1442 643 1443 1444 418 372 404 464 474 1326 1445 609 948 1446 419 334 395 499 465 630 1447 1448 1449 1450 420 23 22 377 301 46 1380 660 1451 1452 421 529 542 564 526 1304 594 1278 1346 1453 422 20 19 375 329 43 1342 632 1454 1455 423 563 572 509 561 1361 1331 1437 1315 1456 424 30 29 287 350 53 1364 1429 1457 1458 425 447 470 421 398 1459 746 816 812 1460 426 383 393 502 468 658 1302 1461 1462 1463 427 373 426 381 291 1388 1464 1465 1406 1466 428 7 349 376 8 1439 1095 1467 31 1468 429 8 376 288 9 1467 1117 1369 32 1469 430 499 395 428 453 1447 1359 1470 1378 1471 431 428 282 331 335 1358 1472 1473 1474 1475 432 326 290 339 378 1476 1477 627 1355 1478 433 377 430 460 393 1421 1479 1301 657 1480 434 17 16 379 330 40 1413 675 1481 1482 435 443 551 521 494 701 1264 1273 1084 1483 436 28 27 292 351 51 1385 1484 1365 1485 437 382 466 481 388 1443 645 1306 1486 1487 438 24 290 326 25 1488 1476 1431 48 1489 439 334 286 20 329 1490 1491 1454 631 1492 440 473 463 390 476 1390 1411 1423 996 1493 441 20 286 328 21 1491 1494 1381 44 1495 442 17 331 282 18 1496 1472 1343 41 1497 443 500 397 431 462 1442 1435 1425 1498 1499 444 499 478 385 465 1399 1333 1500 1448 1501 445 567 566 540 555 835 1181 1321 1263 1502 446 542 481 524 547 1307 644 592 1224 1503 447 573 565 556 575 1404 1255 1373 1251 1504 448 465 385 380 334 1500 1505 1506 1449 1507 449 339 290 24 332 1477 1488 1508 1509 1510 450 331 382 388 335 1511 1486 1512 1473 1513 451 328 286 334 380 1494 1490 1506 1419 1514 452 534 452 486 505 1515 761 1516 1337 1517 453 381 333 14 291 1518 1519 1407 1465 1520 454 24 23 301 332 47 1451 1521 1508 1522 455 382 331 17 330 1511 1496 1481 674 1523 456 14 333 308 15 1519 1524 1414 38 1525 457 504 457 432 396 1526 599 1392 1267 1527 458 468 394 339 383 1528 624 1529 1462 1530 459 301 383 339 332 659 1529 1509 1521 1531 460 502 507 394 468 607 1299 1528 1461 1532 461 426 417 340 381 754 717 1533 1464 1534 462 500 462 470 447 1498 719 1459 586 1535 463 308 333 381 340 1524 1518 1533 1427 1536 464 558 575 574 576 1252 1372 1289 688 1537 465 520 550 505 486 1433 1258 1516 695 1538 466 7 30 350 283 54 1457 1234 1440 1539 467 341 504 347 309 1540 1266 940 1131 1541 468 428 335 388 453 1474 1512 1348 1470 1542 469 401 338 445 483 1137 605 1247 1543 1544 470 504 341 475 457 1540 1187 824 1526 1545 471 534 424 464 452 663 610 762 1515 1546 472 292 432 391 351 1393 602 856 1484 1547 473 313 401 389 356 1138 1548 1037 989 1549 474 430 380 385 460 1420 1505 653 1479 1550 475 505 446 386 402 1260 711 778 1338 1551 476 570 437 387 403 1375 869 840 957 1552 477 483 532 389 401 793 911 1548 1543 1553 478 399 469 394 471 1409 625 1298 1152 1554 479 336 441 464 404 1350 760 1445 1325 1555 480 439 405 449 554 1244 787 1076 1120 1556 481 528 522 436 489 769 978 934 1107 1557 2 2 9 2 482 197 195 1725 1763 1764 1765 483 195 197 196 1763 252 251 2 2 10 245 484 1590 1587 8 1588 1766 1767 1768 1769 1770 485 1664 1662 1665 1560 1771 1772 1773 1774 1775 486 178 177 1560 1665 233 1776 1773 1777 1778 487 1721 1661 1651 1670 1779 1780 1781 1782 1783 488 1590 1588 1759 1703 1769 1784 1785 1786 1787 489 1742 1635 25 26 1788 1789 49 1790 1791 490 1681 1597 1596 1595 1792 1793 1794 1795 1796 491 1575 13 14 1678 1797 37 1798 1799 1800 492 1 1714 1710 1574 1801 1802 1803 1804 1805 493 1759 1588 8 9 1784 1768 32 1806 1807 494 1759 9 10 1577 1806 33 1808 1809 1810 495 16 1580 1755 15 1811 1812 1813 39 1814 496 1722 1611 1600 1598 1815 1816 1817 1818 1819 497 202 201 1573 1637 257 1820 1821 1822 1823 498 1657 1661 1721 1662 1824 1779 1825 1826 1827 499 22 1579 1731 21 1828 1829 1830 45 1831 500 1730 1644 1740 1629 1832 1833 1834 1835 1836 501 1610 1605 1604 1602 1837 1838 1839 1840 1841 502 1744 1589 1759 1577 1842 1843 1809 1844 1845 503 1736 1616 1615 1614 1846 1847 1848 1849 1850 504 1610 1602 1600 1746 1840 1851 1852 1853 1854 505 1640 1642 1617 1636 1855 1856 1857 1858 1859 506 1635 1576 24 25 1860 1861 48 1789 1862 507 1583 19 20 1582 1863 43 1864 1865 1866 508 1668 1568 1658 1673 1867 1868 1869 1870 1871 509 27 28 1711 1578 51 1872 1873 1874 1875 510 1584 18 19 1583 1876 42 1863 1877 1878 511 1748 1586 30 7 1879 1880 54 1881 1882 512 1731 1641 1617 1642 1883 1884 1856 1885 1886 513 1631 1741 1713 1 1887 1888 1889 1890 1891 514 1591 1581 30 1586 1892 1893 1880 1894 1895 515 193 192 1688 1728 248 1896 1897 1898 1899 516 1657 1653 1651 1661 1900 1901 1780 1824 1902 517 30 1581 1593 29 1893 1903 1904 53 1905 518 1752 1606 1604 1605 1906 1907 1838 1908 1909 519 1676 1720 1575 1678 1910 1911 1799 1912 1913 520 1592 1591 1718 1630 1914 1915 1916 1917 1918 521 1562 1613 1747 1679 1919 1920 1921 1922 1923 522 1752 1607 1608 1606 1924 1925 1926 1906 1927 523 13 1575 1667 12 1797 1928 1929 36 1930 524 1664 1663 1657 1662 1931 1932 1826 1771 1933 525 1702 1701 1703 1666 1934 1935 1936 1937 1938 526 1761 1595 1596 1594 1939 1794 1940 1941 1942 527 1688 1690 1570 1689 1943 1944 1945 1946 1947 528 1706 1579 1704 1705 1948 1949 1950 1951 1952 529 1657 1663 1758 1659 1932 1953 1954 1955 1956 530 1582 1623 1628 1583 1957 1958 1959 1865 1960 531 1614 1607 1685 1626 1961 1962 1963 1964 1965 532 1607 1614 1615 1608 1961 1848 1966 1925 1967 533 1613 1562 1671 1685 1919 1968 1969 1970 1971 534 1694 1667 1696 1660 1972 1973 1974 1975 1976 535 1589 1744 1659 1758 1842 1977 1954 1978 1979 536 1653 1657 1659 1656 1900 1955 1980 1981 1982 537 1707 1623 1582 1624 1983 1957 1984 1985 1986 538 1677 1732 1622 1675 1987 1988 1989 1990 1991 539 1707 1643 1644 1623 1992 1993 1994 1983 1995 540 200 199 1629 1740 255 1996 1834 1997 1998 541 1706 1641 1731 1579 1999 1883 1829 1948 2000 542 1639 1597 1681 1633 2001 1792 2002 2003 2004 543 1760 1576 1734 1709 2005 2006 2007 2008 2009 544 1663 1664 1702 1666 1931 2010 1937 2011 2012 545 220 219 1633 1566 275 2013 2014 2015 2016 546 1673 1674 1675 1622 2017 2018 1989 2019 2020 547 1761 1594 1593 1592 1941 2021 2022 2023 2024 548 1678 14 15 1755 1798 38 1813 2025 2026 549 8 1587 1748 7 1767 2027 1881 31 2028 550 1579 22 23 1704 1828 46 2029 1949 2030 551 1613 1610 1715 1747 2031 2032 2033 1920 2034 552 1694 11 12 1667 2035 35 1929 1972 2036 553 1683 1560 177 176 2037 1776 232 2038 2039 554 221 220 1566 1680 276 2015 2040 2041 2042 555 1578 1742 26 27 2043 1790 50 1874 2044 556 1577 10 11 1694 1808 34 2035 2045 2046 557 1701 1754 1590 1703 2047 2048 1786 1935 2049 558 1693 1584 1723 1691 2050 2051 2052 2053 2054 559 1759 1589 1666 1703 1843 2055 1936 1785 2056 560 1580 16 17 1743 1811 40 2057 2058 2059 561 1594 1596 1599 1712 1940 2060 2061 2062 2063 562 224 223 1567 1697 279 2064 2065 2066 2067 563 1663 1666 1589 1758 2011 2055 1978 1953 2068 564 1600 1602 1603 1601 1851 2069 2070 2071 2072 565 1670 1651 1650 1649 1781 2073 2074 2075 2076 566 1733 1585 1743 17 2077 2078 2057 2079 2080 567 24 1576 1760 1705 1861 2005 2081 2082 2083 568 1668 1673 1622 1620 1870 2019 2084 2085 2086 569 1725 1730 1629 1749 2087 1835 2088 2089 2090 570 219 218 1639 1633 274 2091 2003 2013 2092 571 1598 1600 1601 1599 1817 2071 2093 2094 2095 572 1560 1683 1702 1664 2037 2096 2010 1774 2097 573 1627 1571 205 204 2098 2099 260 2100 2101 574 1654 1676 1677 1675 2102 2103 1990 2104 2105 575 1713 1591 1586 1634 2106 1894 2107 2108 2109 576 1751 1612 1742 1578 2110 2111 2043 2112 2113 577 24 1705 1704 23 2082 1950 2029 47 2114 578 1597 1598 1599 1596 2115 2094 2060 1793 2116 579 1616 1617 1641 1615 2117 1884 2118 1847 2119 580 198 197 1725 1749 253 1765 2089 2120 2121 581 1755 1677 1676 1678 2122 2103 1912 2025 2123 582 1665 1717 179 178 2124 2125 234 1777 2126 583 176 175 1716 1683 231 2127 2128 2038 2129 584 1656 1655 1652 1653 2130 2131 2132 1981 2133 585 1653 1652 1650 1651 2132 2134 2073 1901 2135 586 1559 1669 1670 1649 2136 2137 2075 2138 2139 587 190 189 1618 1570 245 2140 2141 2142 2143 588 1742 1612 1603 1635 2111 2144 2145 1788 2146 589 212 211 1562 1679 267 2147 1922 2148 2149 590 1618 1687 1689 1570 2150 2151 1945 2141 2152 591 213 212 1679 1682 268 2148 2153 2154 2155 592 218 217 1565 1639 273 2156 2157 2091 2158 593 211 210 1671 1562 266 2159 1968 2147 2160 594 183 182 1669 1559 238 2161 2136 2162 2163 595 184 183 1559 1647 239 2162 2164 2165 2166 596 214 213 1682 1564 269 2154 2167 2168 2169 597 20 1625 1624 1582 2170 2171 1984 1864 2172 598 1610 1613 1752 1605 2031 2173 1908 1837 2174 599 189 188 1569 1618 244 2175 2176 2140 2177 600 215 214 1564 1684 270 2168 2178 2179 2180 601 185 184 1647 1672 240 2165 2181 2182 2183 602 209 208 1563 1708 264 2184 2185 2186 2187 603 208 207 1645 1563 263 2188 2189 2184 2190 604 210 209 1708 1671 265 2186 2191 2159 2192 605 1558 1670 1669 1737 2193 2137 2194 2195 2196 606 216 215 1684 1686 271 2179 2197 2198 2199 607 1561 1702 1683 1716 2200 2096 2128 2201 2202 608 180 179 1717 1558 235 2125 2203 2204 2205 609 203 202 1637 1572 258 1822 2206 2207 2208 610 217 216 1686 1565 272 2198 2209 2156 2210 611 187 186 1568 1668 242 2211 1867 2212 2213 612 1568 1672 1647 1658 2214 2181 2215 1868 2216 613 188 187 1668 1569 243 2212 2217 2175 2218 614 186 185 1672 1568 241 2182 2214 2211 2219 615 181 180 1558 1737 236 2204 2195 2220 2221 616 182 181 1737 1669 237 2220 2194 2161 2222 617 1655 1656 1660 1696 2130 2223 1974 2224 2225 618 1662 1721 1717 1665 1825 2226 2124 1772 2227 619 1649 1648 1647 1559 2228 2229 2164 2138 2230 620 1616 1735 1636 1617 2231 2232 1857 2117 2233 621 1652 1654 1753 1650 2234 2235 2236 2134 2237 622 207 206 1646 1645 262 2238 2239 2188 2240 623 1670 1558 1717 1721 2193 2203 2226 1782 2241 624 1602 1604 1734 1603 1839 2242 2243 2069 2244 625 1591 1592 1593 1581 1914 2022 1903 1892 2245 626 1637 1707 1640 1572 2246 2247 2248 2206 2249 627 1668 1620 1619 1569 2085 2250 2251 2217 2252 628 1642 1640 1707 1624 1855 2247 1985 2253 2254 629 1739 1619 1620 1621 2255 2250 2256 2257 2258 630 1606 1709 1734 1604 2259 2007 2242 1907 2260 631 17 18 1584 1733 41 1876 2261 2079 2262 632 1660 1744 1577 1694 2263 1844 2045 1975 2264 633 1684 1611 1722 1686 2265 1815 2266 2197 2267 634 206 205 1571 1646 261 2099 2268 2238 2269 635 1720 1676 1654 1719 1910 2102 2270 2271 2272 636 1667 1575 1720 1696 1928 1911 2273 1973 2274 637 1638 1699 1698 1567 2275 2276 2277 2278 2279 638 1675 1674 1753 1654 2018 2280 2235 2104 2281 639 1576 1635 1603 1734 1860 2145 2243 2006 2282 640 1606 1608 1706 1609 1926 2283 2284 2285 2286 641 1620 1622 1732 1621 2084 1988 2287 2256 2288 642 1633 1681 1738 1566 2002 2289 2290 2014 2291 643 174 173 1700 1561 229 2292 2293 2294 2295 644 175 174 1561 1716 230 2294 2201 2127 2296 645 222 221 1680 1638 277 2041 2297 2298 2299 646 1608 1615 1641 1706 1966 2118 1999 2283 2300 647 223 222 1638 1567 278 2298 2278 2064 2301 648 1728 1692 194 193 2302 2303 249 1898 2304 649 1732 1677 1755 1580 1987 2122 1812 2305 2306 650 1702 1561 1700 1701 2200 2293 2307 1934 2308 651 1571 1735 1616 1646 2309 2231 2310 2268 2311 652 1699 1638 1680 1757 2275 2297 2312 2313 2314 653 191 190 1570 1690 246 2142 1944 2315 2316 654 1593 1594 1712 1711 2021 2062 2317 2318 2319 655 173 172 1695 1700 228 2320 2321 2292 2322 656 1624 1625 1731 1642 2171 2323 1885 2253 2324 657 1603 1612 1751 1601 2144 2110 2325 2070 2326 658 1587 1590 1754 1710 1766 2048 2327 2328 2329 659 1681 1595 1761 1632 1795 1939 2330 2331 2332 660 1644 1730 1724 1729 1832 2333 2334 2335 2336 661 1743 1621 1732 1580 2337 2287 2305 2058 2338 662 204 203 1572 1627 259 2207 2339 2100 2340 663 1585 1733 1584 1693 2077 2261 2050 2341 2342 664 192 191 1690 1688 247 2315 1943 1896 2343 665 1740 1644 1643 1573 1833 1993 2344 2345 2346 666 1745 1715 1610 1746 2347 2032 1853 2348 2349 667 1654 1652 1655 1719 2234 2131 2350 2270 2351 668 1630 1699 1757 1632 2352 2313 2353 2354 2355 669 1647 1648 1753 1658 2229 2356 2357 2215 2358 670 201 200 1740 1573 256 1997 2345 1820 2359 671 1627 1636 1735 1571 2360 2232 2309 2098 2361 672 1636 1627 1572 1640 2360 2339 2248 1858 2362 673 1696 1720 1719 1655 2273 2271 2350 2224 2363 674 1656 1659 1744 1660 1980 1977 2263 2223 2364 675 1673 1658 1753 1674 1869 2357 2280 2017 2365 676 1646 1616 1736 1645 2310 1846 2366 2239 2367 677 172 171 1574 1695 227 2368 2369 2320 2370 678 1569 1619 1687 1618 2251 2371 2150 2176 2372 679 1685 1671 1708 1626 1969 2191 2373 1963 2374 680 1695 1754 1701 1700 2375 2047 2307 2321 2376 681 1710 1714 1748 1587 1802 2377 2027 2328 2378 682 1649 1650 1753 1648 2074 2236 2356 2228 2379 683 199 198 1749 1629 254 2120 2088 1996 2380 684 1715 1682 1679 1747 2381 2153 1921 2033 2382 685 1682 1715 1745 1564 2381 2347 2383 2167 2384 686 1597 1750 1722 1598 2385 2386 1818 2115 2387 687 1611 1684 1564 1745 2265 2178 2383 2388 2389 688 1723 1628 1729 1724 2390 2391 2334 2392 2393 689 1607 1752 1613 1685 1924 2173 1970 1962 2394 690 1688 1689 1693 1691 1946 2395 2053 2396 2397 691 1706 1705 1760 1609 1951 2081 2398 2284 2399 692 1573 1643 1707 1637 2344 1992 2246 1821 2400 693 1566 1738 1757 1680 2290 2401 2312 2040 2402 694 1601 1751 1712 1599 2325 2403 2061 2093 2404 695 1574 1710 1754 1695 1803 2327 2375 2369 2405 696 1686 1722 1750 1565 2266 2386 2406 2209 2407 697 1565 1750 1597 1639 2406 2385 2001 2157 2408 698 1632 1761 1592 1630 2330 2023 1917 2354 2409 699 1606 1609 1760 1709 2285 2398 2008 2259 2410 700 1619 1739 1762 1687 2255 2411 2412 2371 2413 701 1563 1756 1626 1708 2414 2415 2373 2185 2416 702 1591 1713 1741 1718 2106 1888 2417 1915 2418 703 1751 1578 1711 1712 2112 1873 2317 2403 2419 704 1741 1631 1698 1718 1887 2420 2421 2417 2422 705 1645 1736 1756 1563 2366 2423 2414 2189 2424 706 1 6 225 1631 2425 281 2426 1890 2427 707 1692 1728 1726 1727 2302 2428 2429 2430 2431 708 1688 1691 1726 1728 2396 2432 2428 1897 2433 709 1567 1698 1631 1697 2277 2420 2434 2065 2435 710 1600 1611 1745 1746 1816 2388 2348 1852 2436 711 1730 1727 1726 1724 2437 2429 2438 2333 2439 712 1743 1585 1739 1621 2078 2440 2257 2337 2441 713 1 1713 1634 1714 1889 2108 2442 1801 2443 714 1626 1756 1736 1614 2415 2423 1849 1964 2444 715 1687 1762 1693 1689 2412 2445 2395 2151 2446 716 1691 1723 1724 1726 2052 2392 2438 2432 2447 717 1693 1762 1739 1585 2445 2411 2440 2341 2448 718 1586 1748 1714 1634 1879 2377 2442 2107 2449 719 1681 1632 1757 1738 2331 2353 2401 2289 2450 720 171 6 1 1574 226 2425 1804 2368 2451 721 20 21 1731 1625 44 1830 2323 2170 2452 722 28 29 1593 1711 52 1904 2318 1872 2453 723 194 1692 1727 195 2303 2430 2454 250 2455 724 1730 1725 195 1727 2087 1764 2454 2437 2456 725 1697 1631 225 224 2434 2426 280 2066 2457 726 1628 1723 1584 1583 2390 2051 1877 1959 2458 727 1623 1644 1729 1628 1994 2335 2391 1958 2459 728 1630 1718 1698 1699 1916 2421 2276 2352 2460 $EndElements feenox-1.1/tests/la-p02-PUa-1-0-SL.fee0000644000175000017500000000036714773607165013716 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 2 PROBLEM neutron_sn 1D GROUPS 1 SN 8 READ_MESH $0.msh INCLUDE Pu-239a.fee BC mirror mirror BC vacuum vacuum SOLVE_PROBLEM PRINT keff-0.991755 feenox-1.1/tests/2dpwr-eighth.geo0000644000175000017500000000464414773607165013752 00000000000000// same as 2dpwr-quarter but with 1/8th symmetry (instead of 1/4th) Point(1) = {0, 0, 0}; Point(2) = {10, 0, 0}; Point(4) = {10, 10, 0}; Point(5) = {70, 0, 0}; Point(6) = {70, 10, 0}; Point(7) = {90, 10, 0}; Point(8) = {90, 0, 0}; Point(13) = {130, 0, 0}; Point(14) = {130, 30, 0}; Point(15) = {110, 30, 0}; Point(16) = {110, 70, 0}; Point(17) = {90, 70, 0}; Point(18) = {90, 90, 0}; Point(20) = {70, 70, 0}; Point(30) = {110, 110, 0}; Point(31) = {110, 90, 0}; Point(32) = {130, 90, 0}; Point(33) = {130, 50, 0}; Point(34) = {150, 50, 0}; Point(35) = {150, 0, 0}; Point(36) = {170, 0, 0}; Point(37) = {170, 70, 0}; Point(38) = {150, 70, 0}; Point(39) = {150, 110, 0}; Point(40) = {130, 110, 0}; Point(41) = {130, 130, 0}; Line(1) = {1, 2}; Line(2) = {2, 4}; Line(3) = {1, 4}; Line(4) = {5, 8}; Line(5) = {8, 7}; Line(7) = {7, 6}; Line(8) = {6, 5}; Line(9) = {2, 5}; Line(10) = {4, 20}; Line(11) = {20, 17}; Line(12) = {17, 18}; Line(13) = {20, 18}; Line(14) = {8, 13}; Line(15) = {13, 14}; Line(16) = {14, 15}; Line(17) = {15, 16}; Line(18) = {16, 17}; Line(19) = {13, 35}; Line(20) = {35, 34}; Line(23) = {34, 33}; Line(24) = {33, 32}; Line(25) = {32, 31}; Line(26) = {31, 30}; Line(27) = {18, 30}; Line(28) = {35, 36}; Line(29) = {36, 37}; Line(30) = {37, 38}; Line(31) = {38, 39}; Line(32) = {39, 40}; Line(33) = {40, 41}; Line(34) = {41, 30}; Line Loop(57) = {1, 2, -3}; Plane Surface(58) = {57}; Line Loop(59) = {7, 8, 4, 5}; Plane Surface(60) = {59}; Line Loop(61) = {11, 12, -13}; Plane Surface(62) = {61}; Line Loop(55) = {9, -8, -7, -5, 14, 15, 16, 17, 18, -11, -10, -2}; Plane Surface(56) = {55}; Line Loop(53) = {19, 20, 23, 24, 25, 26, -27, -12, -18, -17, -16, -15}; Plane Surface(54) = {53}; Line Loop(65) = {28, 29, 30, 31, 32, 33, 34, -26, -25, -24, -23, -20}; Plane Surface(66) = {65}; Physical Surface("fuel1",1) = {54}; Physical Surface("fuel2",2) = {56}; Physical Surface("fuel2rod",3) = {60, 58, 62}; Physical Surface("reflector",4) = {66}; Physical Line("external",5) = {29, 30, 31, 32, 33}; Physical Line("mirror",6) = {1, 9, 4, 14, 19, 28, 3, 10, 13, 27, 34}; Color Goldenrod {Surface {54};} Color LimeGreen {Surface {56};} Color Firebrick {Surface {60, 58, 62};} Color BlueViolet {Surface {66};} Mesh.Light = 0; General.SmallAxes = 0; // meshing options Mesh.Algorithm = 6; Mesh.RecombineAll = 0; // recombine triangles to obtain quads Mesh.Optimize = 1; // Mesh.OptimizeNetgen = 1; Mesh.MeshSizeMin = 5; Mesh.MeshSizeMax = 5; feenox-1.1/tests/thermal-slab-wrong-bc.sh0000755000175000017500000000040014773607165015362 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal answer thermal-slab-wrong-bc.fee "0.5" exit $? feenox-1.1/tests/fibo_vector.ref0000644000175000017500000000024314773607165013740 000000000000001 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21 9 34 10 55 11 89 12 144 13 233 14 377 15 610 16 987 17 1597 18 2584 19 4181 20 6765 21 10946 22 17711 23 28657 24 46368 25 75025 feenox-1.1/tests/spinning-disk-parallel-solid-halfquarter_unstruct.geo0000644000175000017500000000044614773607165023404 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Cylinder(1) = {0, 0, 0, 0, 0, t/2, R, 2*Pi/4}; Physical Surface("symmetry1") = {3}; Physical Surface("symmetry2") = {4}; Physical Surface("symmetry3") = {5}; Physical Volume("bulk") = {1}; feenox-1.1/tests/heater-cylinder-inches.fee0000644000175000017500000000072614773607165015756 00000000000000# Case VMMECH006: Heater with Nonlinear Conductivity PROBLEM thermal 3D READ_MESH $0.msh k(x,y,z) = 0.01375 * (1 + 0.001*T(x,y,z)) q = 10 BC front T=212 BC adiabatic q=0 SOLVE_PROBLEM WRITE_RESULTS FORMAT vtu WRITE_RESULTS FORMAT vtk WRITE_RESULTS FILE $0-results.msh FIND_EXTREMA sqrt(qx(x,y,z)^2+qy(x,y,z)^2+qz(x,y,z)^2) MAX q_max # reference says target temp is 476 which needs a very fine mesh # TODO: axisymmetric PRINT sqrt((T_max-481.97)^2+(q_max-10)^2) feenox-1.1/tests/peano.fee0000644000175000017500000000032614773607165012526 00000000000000PRINT 1+1 # with default format PRINT %.1f 1+1 # with numeric format # by means of an intermediate variable a = 1+1 PRINT a # with an informative text PRINT "Peano says that one plus one equals" %.0f a feenox-1.1/tests/fibo_formula.ref0000644000175000017500000000024314773607165014103 000000000000001 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21 9 34 10 55 11 89 12 144 13 233 14 377 15 610 16 987 17 1597 18 2584 19 4181 20 6765 21 10946 22 17711 23 28657 24 46368 25 75025 feenox-1.1/tests/file.fee0000644000175000017500000000006514773607165012343 00000000000000FILE two PATH two-is-%d.txt 1+1 PRINT 4*0.5 FILE two feenox-1.1/tests/t21.sh0000755000175000017500000000045114773607165011707 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpetsc checkmpirun for n in $(seq 1 8); do answermpi ${n} t21.fee "2 2 2 2 2" exitifwrong $? done feenox-1.1/tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.geo0000644000175000017500000000044714773607165023735 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Cylinder(1) = {0, 0, 0, 0, 0, t/2, R, 2*Pi/16}; Physical Surface("symmetry1") = {3}; Physical Surface("symmetry2") = {4}; Physical Surface("symmetry3") = {5}; Physical Volume("bulk") = {1}; feenox-1.1/tests/hoc.fee0000644000175000017500000000044714773607165012201 00000000000000# actually arguments of the PRINT keyword may be either text # strings, scalar expressions, vectors or matrices (more about # these latter two issues in more complex examples) # the example of Kernighan & Ritchie HOC (high-order calculator) code PRINT TEXT "1+2*sin(0.7)" "=" %.6f 1+2*sin(0.7) feenox-1.1/tests/cube-restrained-expansion-uniform-isotropic.fee0000644000175000017500000000133714773607165022173 00000000000000PROBLEM mechanical READ_MESH cube.msh E = 1 nu = 0.3 BC restrain fixed \ PHYSICAL_GROUP left \ PHYSICAL_GROUP right \ PHYSICAL_GROUP front \ PHYSICAL_GROUP back \ PHYSICAL_GROUP bottom \ PHYSICAL_GROUP top alpha = 0.123456879 T = 9.87654321 SOLVE_PROBLEM WRITE_MESH cube-restrained-expansion-uniform-orthotropic.vtk VECTOR u v w sigmax sigmay sigmaz VECTOR diff_displ[3] diff_displ[1] = u(0.5,0.5,0.5)-0 diff_displ[2] = v(0.5,0.5,0.5)-0 diff_displ[3] = w(0.5,0.5,0.5)-0 VECTOR diff_stress[3] expected = -E/(1-2*nu)*alpha*T diff_stress[1] = sigmax(0.5,0.5,0.5)-expected diff_stress[2] = sigmay(0.5,0.5,0.5)-expected diff_stress[3] = sigmaz(0.5,0.5,0.5)-expected PRINT vecnorm(diff_displ)+vecnorm(diff_stress) feenox-1.1/tests/printf.fee0000644000175000017500000000044614773607165012731 00000000000000PRINTF "hola%g" 1+1 PRINTF "%ghola%d" 1+1 2*2 PRINTF "%.1f %.2f %.3f" 10/3 10/4 10/7 PRINTF "%.1e %.2e %.3e %.4e" pi pi pi pi PRINTF "%g %g %g %g %g" 1 2 3 4 5 PRINTF "%g %g %g %g %g %d" 1 2 3 4 5 6 PRINTF "%gx%gx%gx%gx%gx%dx%g" 1 2 3 4 5 6 7 PRINTF "%gx%gx%gx%gx%gx%dx%gx%d" 1 2 3 4 5 6 7 8 feenox-1.1/tests/cube-restrained-expansion-uniform-orthotropic.fee0000644000175000017500000000164414773607165022535 00000000000000PROBLEM mechanical READ_MESH cube.msh E = 1 nu = 0.3 BC restrain fixed \ PHYSICAL_GROUP left \ PHYSICAL_GROUP right \ PHYSICAL_GROUP front \ PHYSICAL_GROUP back \ PHYSICAL_GROUP bottom \ PHYSICAL_GROUP top alpha_x = 0.123456879 alpha_y = 0.23456879 alpha_z = 0.3456879 T = 9.87654321 SOLVE_PROBLEM WRITE_MESH cube-restrained-expansion-uniform-orthotropic.vtk VECTOR u v w sigmax sigmay sigmaz VECTOR diff_displ[3] diff_displ[1] = u(0.5,0.5,0.5)-0 diff_displ[2] = v(0.5,0.5,0.5)-0 diff_displ[3] = w(0.5,0.5,0.5)-0 VECTOR diff_stress[3] lambda = E*nu/((1+nu)*(1-2*nu)); mu = 0.5*E/(1+nu); diff_stress[1] = sigmax(0.5,0.5,0.5)-(-T*(alpha_x*(lambda+2*mu)+lambda*(alpha_y+alpha_z))) diff_stress[2] = sigmay(0.5,0.5,0.5)-(-T*(alpha_y*(lambda+2*mu)+lambda*(alpha_x+alpha_z))) diff_stress[3] = sigmaz(0.5,0.5,0.5)-(-T*(alpha_z*(lambda+2*mu)+lambda*(alpha_x+alpha_y))) PRINT vecnorm(diff_displ)+vecnorm(diff_stress) feenox-1.1/tests/la-p50-UAl-2-0-IN.fee0000644000175000017500000000037714773607165013707 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 50 PROBLEM neutron_sn 1D GROUPS 2 SN 6 READ_MESH la-IN.msh INCLUDE U-Al.fee BC mirror mirror SOLVE_PROBLEM PRINT (keff-2.661745)#+(phi2(0)/phi1(0))-3.1250 feenox-1.1/tests/thermal-two-squares-material-explicit-uniform.fee0000644000175000017500000000024114773607165022434 00000000000000PROBLEM thermal 2d READ_MESH two-squares.msh MATERIAL soft k=1 MATERIAL hard k=3 BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT %.3f T(1,0.5) # WRITE_RESULTS feenox-1.1/tests/bimetallic-strip.geo0000644000175000017500000000106114773607165014700 00000000000000SetFactory("OpenCASCADE"); l = 10; w = 1; t = 0.05; Box(1) = {0, -w/2, 0, l, w, +t}; Box(2) = {0, -w/2, 0, l, w, -t}; Coherence; Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 1; Physical Point("A") = {1}; Physical Point("B") = {4}; Physical Surface("left") = {1, 7}; Physical Volume("top") = {1}; Physical Volume("bottom") = {2}; Transfinite Curve {19, 9, 10, 20, 11, 12} = 1+36; Transfinite Curve {15, 4, 2, 18, 8, 6} = 1+4; Transfinite Curve {14, 3, 13, 1, 17, 7, 16, 5} = 1+4; Transfinite Surface "*"; Transfinite Volume "*"; feenox-1.1/tests/la-p08-PUb-1-0-SP.geo0000644000175000017500000000052514773607165013740 00000000000000rc = 6.082547; n = 6; SetFactory("OpenCASCADE"); Sphere(1) = {0, 0, 0, rc, 0, Pi/2, Pi/2}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = rc/n; Mesh.ElementOrder = 1; Mesh.RecombineAll = 0; Mesh.Optimize = 1; //Mesh.OptimizeNetgen = 1; Physical Volume("fuel") = {1}; Physical Surface("mirror") = {4, 3, 2}; Physical Surface("vacuum") = {1}; feenox-1.1/tests/func_min.sh0000755000175000017500000000034514773607165013101 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answerzero func_min.fee exitifwrong $? feenox-1.1/tests/reflected.fee0000644000175000017500000000070714773607165013364 00000000000000READ_MESH reflected.msh DIMENSIONS 1 PROBLEM neutron_diffusion GROUPS 2 MATERIAL fuel { D1=1.5 D2=0.4 Sigma_s1.2=0.02 Sigma_a1=0.01 Sigma_a2=0.08 nuSigma_f2=0.135 } MATERIAL left_refl { D1=2.0 D2=0.3 Sigma_s1.2=0.04 Sigma_a1=0.00 Sigma_a2=0.01 } MATERIAL right_refl { D1=2.0 D2=0.3 Sigma_s1.2=0.05 Sigma_a1=0.00 Sigma_a2=0.005 } BC left null BC right null SOLVE_PROBLEM PRINT %.4f keff phi1(100) phi2(100) SEP " " feenox-1.1/tests/include.fee0000644000175000017500000000000014773607165013034 00000000000000feenox-1.1/tests/modal-beam-cantilever.fee0000644000175000017500000000026414773607165015555 00000000000000READ_MESH beam-cantilever.msh PROBLEM modal MODES 6 DIMENSIONS 3 E = 6.9e10 nu = 0.26 rho = 2800 # just to test the icntls mumps_icntl_14 = 60 SOLVE_PROBLEM PRINT %.1f SEP " " f feenox-1.1/tests/hello.fee0000644000175000017500000000003214773607165012521 00000000000000PRINT TEXT "hello world!" feenox-1.1/tests/function_data1dlinear.fee0000644000175000017500000000020114773607165015652 00000000000000FUNCTION f(x) INTERPOLATION linear DATA { 0 0 1 1 2 4 3 9 } f_a = vecmin(vec_f_x) f_b = vecmax(vec_f_x) PRINT f(0.5*(f_a+f_b)) feenox-1.1/tests/URRa.fee0000644000175000017500000000121014773607165012226 00000000000000# material U-235 (tables 52 and 53) # NOTE: 1 is the slow energy group and 2 is the fast energy group # NOTE: this material has anisotropic scattering # fast-energy group nu2_fuel = 2.5 Sigma_f2_fuel = 0.0010484 nuSigma_f2_fuel = nu2_fuel*Sigma_f2_fuel Sigma_s2.2_fuel = 0.62568 Sigma_s_one2.2_fuel = 0.27459 Sigma_s2.1_fuel = 0.029227 Sigma_s_one2.1_fuel = 0.0075737 Sigma_t2_fuel = 0.65696 chi[2] = 1.0 # slow energy group nu1_fuel = 2.50 Sigma_f1_fuel = 0.050632 nuSigma_f1_fuel = nu1_fuel*Sigma_f1_fuel Sigma_s1.1_fuel = 2.44383 Sigma_s_one1.1_fuel = 0.83318 Sigma_s1.2_fuel = 0 Sigma_t1_fuel = 2.52025 chi[1] = 0.0 feenox-1.1/tests/pellet-nonlinear-linear-keyword.fee0000644000175000017500000000047714773607165017635 00000000000000PROBLEM thermal LINEAR READ_MESH pellet.msh VAR T' tau(T') = (T'+273.15)/1000 cond(T') = 100/(7.5408 + 17.692*tau(T') + 3.614*tau(T')^2) + 6400/(tau(T')^(5/2))*exp(-16.35/tau(T')) k(x,y,z) = cond(T(x,y,z)) r = 4e-3 q = 300 * 100 / (pi*r^2) BC symmetry q=0 BC external T=420 SOLVE_PROBLEM PRINT %.0f T_max-1115+393 feenox-1.1/tests/rosenbrock.fee0000644000175000017500000000022114773607165013565 00000000000000# from https://www.gnu.org/software/gsl/doc/html/multiroots.html a = 1 b = 10 SOLVE FOR 2 UNKNOWNS x y a*(1-x) b*(y-x^2) PRINT (1-x)^2+(1-y)^2 feenox-1.1/tests/bunny-modal-rest.fee0000644000175000017500000000003214773607165014616 00000000000000BC base radial tangential feenox-1.1/tests/encased_rod_lr.fee0000644000175000017500000000052414773607165014367 00000000000000PROBLEM thermal 3D READ_MESH encased_rod.msh k_cu = 372 k_ss = 18 BC left T=400 BC right T=100 SOLVE_PROBLEM WRITE_MESH encased_rod_lb.vtk T VECTOR qx qy qz # T1(x) = T(x,0.005,0.02) # T2(x) = T(x,0.020,0.02) # T3(x) = T(x,0.035,0.02) # # PRINT_FUNCTION T1 T2 T3 MIN 0 MAX 0.5 STEP 0.001 PRINT T(0.25,0.005,0.02)-T(0.25,0.020,0.02) feenox-1.1/tests/function_data1dlinearchanged.fee0000644000175000017500000000021614773607165017172 00000000000000FUNCTION f(x) INTERPOLATION linear DATA { 0 0 1 1 2 4 3 9 } vec_f[3] = 1 f_a = vecmin(vec_f_x) f_b = vecmax(vec_f_x) PRINT f(0.5*(f_a+f_b)) feenox-1.1/tests/cube-hex.msh0000644000175000017500000001405414773607165013157 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 7 2 1 "left" 2 2 "right" 2 3 "front" 2 4 "back" 2 5 "bottom" 2 6 "top" 3 7 "volume" $EndPhysicalNames $Entities 8 12 6 1 1 0 0 1 0 2 0 0 0 0 3 0 1 1 0 4 0 1 0 0 5 1 0 1 0 6 1 0 0 0 7 1 1 1 0 8 1 1 0 0 1 -1e-07 -1e-07 -9.999999994736442e-08 1e-07 1e-07 1.0000001 0 2 2 -1 2 -1e-07 -9.999999994736442e-08 0.9999999000000001 1e-07 1.0000001 1.0000001 0 2 1 -3 3 -1e-07 0.9999999000000001 -9.999999994736442e-08 1e-07 1.0000001 1.0000001 0 2 4 -3 4 -1e-07 -9.999999994736442e-08 -1e-07 1e-07 1.0000001 1e-07 0 2 2 -4 5 0.9999999000000001 -1e-07 -9.999999994736442e-08 1.0000001 1e-07 1.0000001 0 2 6 -5 6 0.9999999000000001 -9.999999994736442e-08 0.9999999000000001 1.0000001 1.0000001 1.0000001 0 2 5 -7 7 0.9999999000000001 0.9999999000000001 -9.999999994736442e-08 1.0000001 1.0000001 1.0000001 0 2 8 -7 8 0.9999999000000001 -9.999999994736442e-08 -1e-07 1.0000001 1.0000001 1e-07 0 2 6 -8 9 -9.999999994736442e-08 -1e-07 -1e-07 1.0000001 1e-07 1e-07 0 2 2 -6 10 -9.999999994736442e-08 -1e-07 0.9999999000000001 1.0000001 1e-07 1.0000001 0 2 1 -5 11 -9.999999994736442e-08 0.9999999000000001 -1e-07 1.0000001 1.0000001 1e-07 0 2 4 -8 12 -9.999999994736442e-08 0.9999999000000001 0.9999999000000001 1.0000001 1.0000001 1.0000001 0 2 3 -7 1 -1e-07 -9.999999994736442e-08 -9.999999994736442e-08 1e-07 1.0000001 1.0000001 1 1 4 1 2 -3 -4 2 0.9999999000000001 -9.999999994736442e-08 -9.999999994736442e-08 1.0000001 1.0000001 1.0000001 1 2 4 5 6 -7 -8 3 -9.999999994736442e-08 -1e-07 -9.999999994736442e-08 1.0000001 1e-07 1.0000001 1 3 4 9 5 -10 -1 4 -9.999999994736442e-08 0.9999999000000001 -9.999999994736442e-08 1.0000001 1.0000001 1.0000001 1 4 4 11 7 -12 -3 5 -9.999999994736442e-08 -9.999999994736442e-08 -1e-07 1.0000001 1.0000001 1e-07 1 5 4 4 11 -8 -9 6 -9.999999994736442e-08 -9.999999994736442e-08 0.9999999000000001 1.0000001 1.0000001 1.0000001 1 6 4 2 12 -6 -10 1 -9.999999994736442e-08 -9.999999994736442e-08 -9.999999994736442e-08 1.0000001 1.0000001 1.0000001 1 7 6 1 2 3 4 5 6 $EndEntities $Nodes 27 64 1 64 0 1 0 1 1 0 0 1 0 2 0 1 2 0 0 0 0 3 0 1 3 0 1 1 0 4 0 1 4 0 1 0 0 5 0 1 5 1 0 1 0 6 0 1 6 1 0 0 0 7 0 1 7 1 1 1 0 8 0 1 8 1 1 0 1 1 0 2 9 10 0 0 0.3333333333333333 0 0 0.6666666666666666 1 2 0 2 11 12 0 0.3333333333333333 1 0 0.6666666666666666 1 1 3 0 2 13 14 0 1 0.3333333333333333 0 1 0.6666666666666666 1 4 0 2 15 16 0 0.3333333333333333 0 0 0.6666666666666666 0 1 5 0 2 17 18 1 0 0.3333333333333333 1 0 0.6666666666666666 1 6 0 2 19 20 1 0.3333333333333333 1 1 0.6666666666666666 1 1 7 0 2 21 22 1 1 0.3333333333333333 1 1 0.6666666666666666 1 8 0 2 23 24 1 0.3333333333333333 0 1 0.6666666666666666 0 1 9 0 2 25 26 0.3333333333333333 0 0 0.6666666666666666 0 0 1 10 0 2 27 28 0.3333333333333333 0 1 0.6666666666666666 0 1 1 11 0 2 29 30 0.3333333333333333 1 0 0.6666666666666666 1 0 1 12 0 2 31 32 0.3333333333333333 1 1 0.6666666666666666 1 1 2 1 0 4 33 34 35 36 0 0.3333333333333334 0.3333333333333334 0 0.6666666666666667 0.3333333333333333 0 0.3333333333333333 0.6666666666666667 0 0.6666666666666666 0.6666666666666666 2 2 0 4 37 38 39 40 1 0.3333333333333334 0.3333333333333334 1 0.6666666666666667 0.3333333333333333 1 0.3333333333333333 0.6666666666666667 1 0.6666666666666666 0.6666666666666666 2 3 0 4 41 42 43 44 0.3333333333333334 0 0.3333333333333334 0.3333333333333333 0 0.6666666666666667 0.6666666666666667 0 0.3333333333333333 0.6666666666666666 0 0.6666666666666666 2 4 0 4 45 46 47 48 0.3333333333333334 1 0.3333333333333334 0.3333333333333333 1 0.6666666666666667 0.6666666666666667 1 0.3333333333333333 0.6666666666666666 1 0.6666666666666666 2 5 0 4 49 50 51 52 0.3333333333333334 0.3333333333333334 0 0.6666666666666667 0.3333333333333333 0 0.3333333333333333 0.6666666666666667 0 0.6666666666666666 0.6666666666666666 0 2 6 0 4 53 54 55 56 0.3333333333333334 0.3333333333333334 1 0.6666666666666667 0.3333333333333333 1 0.3333333333333333 0.6666666666666667 1 0.6666666666666666 0.6666666666666666 1 3 1 0 8 57 58 59 60 61 62 63 64 0.3333333333333334 0.3333333333333335 0.3333333333333335 0.6666666666666667 0.3333333333333336 0.3333333333333336 0.3333333333333334 0.6666666666666671 0.3333333333333334 0.6666666666666667 0.6666666666666672 0.3333333333333335 0.3333333333333334 0.3333333333333334 0.6666666666666671 0.6666666666666667 0.3333333333333335 0.6666666666666672 0.3333333333333334 0.6666666666666669 0.6666666666666669 0.6666666666666669 0.666666666666667 0.666666666666667 $EndNodes $Elements 7 81 1 81 2 1 3 9 1 2 9 33 15 2 15 33 34 16 3 16 34 13 4 4 9 10 35 33 5 33 35 36 34 6 34 36 14 13 7 10 1 11 35 8 35 11 12 36 9 36 12 3 14 2 2 3 9 10 6 23 37 17 11 23 24 38 37 12 24 8 21 38 13 17 37 39 18 14 37 38 40 39 15 38 21 22 40 16 18 39 19 5 17 39 40 20 19 18 40 22 7 20 2 3 3 9 19 2 25 41 9 20 9 41 42 10 21 10 42 27 1 22 25 26 43 41 23 41 43 44 42 24 42 44 28 27 25 26 6 17 43 26 43 17 18 44 27 44 18 5 28 2 4 3 9 28 4 13 45 29 29 13 14 46 45 30 14 3 31 46 31 29 45 47 30 32 45 46 48 47 33 46 31 32 48 34 30 47 21 8 35 47 48 22 21 36 48 32 7 22 2 5 3 9 37 2 15 49 25 38 25 49 50 26 39 26 50 23 6 40 15 16 51 49 41 49 51 52 50 42 50 52 24 23 43 16 4 29 51 44 51 29 30 52 45 52 30 8 24 2 6 3 9 46 1 27 53 11 47 27 28 54 53 48 28 5 19 54 49 11 53 55 12 50 53 54 56 55 51 54 19 20 56 52 12 55 31 3 53 55 56 32 31 54 56 20 7 32 3 1 5 27 55 33 9 2 15 57 41 25 49 56 57 41 25 49 58 43 26 50 57 58 43 26 50 37 17 6 23 58 34 33 15 16 59 57 49 51 59 59 57 49 51 60 58 50 52 60 60 58 50 52 38 37 23 24 61 13 34 16 4 45 59 51 29 62 45 59 51 29 47 60 52 30 63 47 60 52 30 21 38 24 8 64 35 10 9 33 61 42 41 57 65 61 42 41 57 62 44 43 58 66 62 44 43 58 39 18 17 37 67 36 35 33 34 63 61 57 59 68 63 61 57 59 64 62 58 60 69 64 62 58 60 40 39 37 38 70 14 36 34 13 46 63 59 45 71 46 63 59 45 48 64 60 47 72 48 64 60 47 22 40 38 21 73 11 1 10 35 53 27 42 61 74 53 27 42 61 54 28 44 62 75 54 28 44 62 19 5 18 39 76 12 11 35 36 55 53 61 63 77 55 53 61 63 56 54 62 64 78 56 54 62 64 20 19 39 40 79 3 12 36 14 31 55 63 46 80 31 55 63 46 32 56 64 48 81 32 56 64 48 7 20 40 22 $EndElements feenox-1.1/tests/petsc_options.sh0000755000175000017500000000065114773607165014174 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical i=petsc_options echo -n "${i}... " answer=$(${feenox} ${dir}/${i}.fee | grep ilu | wc -l) if [ ${answer} -gt 0 ]; then echo "ok" level=0 else echo "wrong, no ILU found" level=1 fi exitifwrong ${level} feenox-1.1/tests/t21.fee0000644000175000017500000000064314773607165012034 00000000000000READ_MESH t21.msh DIM 2 READ_FUNCTION f_nodes #READ_FUNCTION f_cells f_general(x,y) = 1 # TODO: cell-cell INTEGRATE f_general CELLS RESULT f_general_cell INTEGRATE f_nodes RESULT f_node_gauss INTEGRATE f_general GAUSS RESULT f_general_gauss INTEGRATE 1 CELLS RESULT e_cells INTEGRATE 1 GAUSS RESULT e_gauss PRINTF "%g %g %g %g %g" f_general_cell f_node_gauss f_general_gauss e_cells e_gauss feenox-1.1/tests/la-p04-PUa-H2O_0.5-1-0-SL.geo0000644000175000017500000000060214773607165014673 00000000000000rc = 1.317831; h_refl = 1.531863; n = 20; SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {+rc, 0, 0}; Point(3) = {+rc+h_refl, 0, 0}; Line(1) = {1, 2}; Line(2) = {2, 3}; Physical Curve("fuel") = {1}; Physical Curve("refl") = {2}; Physical Point("mirror") = {1}; Physical Point("vacuum") = {3}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = 0.5*rc/n; Mesh.ElementOrder = 2; feenox-1.1/tests/thermal-slab-no-k.sh0000755000175000017500000000037414773607165014522 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal answer thermal-slab-no-k.fee "0.5" exit $? feenox-1.1/tests/cube-free-expansion-uniform-isotropic.fee0000644000175000017500000000077214773607165020756 00000000000000PROBLEM mechanical READ_MESH cube.msh E = 1 nu = 0.3 BC left u=0 BC front v=0 BC bottom w=0 alpha = 0.123456879 T = 9.87654321 SOLVE_PROBLEM WRITE_RESULTS FORMAT vtu displacements vonmises VECTOR diff_displ[3] diff_displ[1] = u(1,1,1)-alpha*T diff_displ[2] = v(1,1,1)-alpha*T diff_displ[3] = w(1,1,1)-alpha*T VECTOR diff_stress[3] diff_stress[1] = sigmax(0.5,0.5,0.5)-0 diff_stress[2] = sigmay(0.5,0.5,0.5)-0 diff_stress[3] = sigmaz(0.5,0.5,0.5)-0 PRINT vecnorm(diff_displ)+vecnorm(diff_stress) feenox-1.1/tests/thermal-slab-space-nosource.fee0000644000175000017500000000020714773607165016721 00000000000000PROBLEM thermal DIMENSIONS 1 READ_MESH slab2.msh BC left T=0 BC right T=1 k(x) = 1+x SOLVE_PROBLEM PRINT T(0.5)-log(1+0.5)/log(2) feenox-1.1/tests/nafems-le11-hex20.geo0000644000175000017500000000032314773607165014371 00000000000000Mesh.SecondOrderLinear = 0; // curved Mesh.ElementOrder = 2; // 2nd order Mesh.SecondOrderIncomplete = 1; // 27-noded Mesh.RecombineAll = 1; // hexahedra Merge "nafems-le11.geo"; feenox-1.1/tests/neutron_diffusion_keff.sh0000755000175000017500000000060414773607165016034 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde neutron_diffusion checkslepc answerzero ud20-1-0-sl.fee exitifwrong $? answer ud20-1-0-sl-vacuum.fee "0.996595" exitifwrong $? answer reflected.fee "1.0902 0.5053 0.5313" exitifwrong $? feenox-1.1/tests/mesh.sh0000755000175000017500000000173214773607165012240 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi # skip in big-endian architectures arch=$(uname -m) if [ "x${arch}" = "xppc64" ] || [ "x${arch}" = "xs390x" ] ; then exit 77 fi answer1 read_mesh2d.fee 22.msh "12 22 14" exitifwrong $? answer1 read_mesh2d.fee 40.msh "12 22 14" exitifwrong $? answer1 read_mesh2d.fee 41.msh "12 22 14" exitifwrong $? answer1 read_mesh2d.fee 41bin.msh "12 22 14" exitifwrong $? answer1 read_mesh2d.fee .vtk "12 22 14" exitifwrong $? for i in msh vtk; do answer1 write_mesh2d.fee ${i} "0.531905" exitifwrong $? answer1 integrate2d.fee ${i} "0.5309834 0.5309834 0.3130105 0.3101734" exitifwrong $? answer1diff find_extrema2d.fee ${i} exitifwrong $? done answer mesh3d.fee "50" exitifwrong $? answerzero read_vtk5.fee exitifwrong $? answer readmsh_writevtk_readbackvtk.fee "" exitifwrong $? feenox-1.1/tests/file-append.fee0000644000175000017500000000006314773607165013606 00000000000000FILE two APPEND PATH two-is-2.txt PRINT 3 FILE two feenox-1.1/tests/xfail-few-properties-ortho-young.sh0000755000175000017500000000041714773607165017647 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical answer xfail-few-properties-ortho-young.fee "0.41" exit $? feenox-1.1/tests/lag_compact.fee0000644000175000017500000000043714773607165013700 00000000000000# the preceding example could have been written in fewer # lines as follows (although the SPOT rule is broken) end_time = 5 dt = 1/20 # PRNT t heaviside(t-1)-heaviside(t-3) lag(heaviside(t-1)-heaviside(t-3),1.234) y = lag(heaviside(t-1)-heaviside(t-3),1.234) IF done PRINT %.2f y ENDIF feenox-1.1/tests/bc-groups2.fee0000644000175000017500000000026714773607165013413 00000000000000PROBLEM mechanical READ_MESH cube.msh E = 1 nu = 0.3 BC A fixed GROUP left GROUP front GROUP bottom BC B p=1 GROUPS right back top SOLVE_PROBLEM WRITE_RESULTS FORMAT vtk feenox-1.1/tests/func_min.fee0000644000175000017500000000021014773607165013212 00000000000000VAR x xmin1 = func_min(0.25*(x^2-1), x, -0.30, 0.99, 1.0e-10) xmin2 = func_min(0.25*(x^2-1), x, -0.95, 0.99, 1.0e-10) PRINT xmin1-xmin2 feenox-1.1/tests/pipe-ssh20-2-2.geo0000644000175000017500000000324714773607165013634 00000000000000// structured straight hex20 Mesh.SecondOrderLinear = 1; Mesh.RecombineAll = 1; Mesh.SecondOrderIncomplete = 1; SetFactory("OpenCASCADE"); l = 2*(( 323.8/2 )-( ( 323.8/2 )-21.5 )); Point(1) = {-l/2, 0, 0}; Point(2) = {-l/2, ( ( 323.8/2 )-21.5 ), 0}; Point(3) = {-l/2, 0, ( ( 323.8/2 )-21.5 )}; Point(4) = {-l/2, -( ( 323.8/2 )-21.5 ), 0}; Point(5) = {-l/2, 0, -( ( 323.8/2 )-21.5 )}; Point(6) = {-l/2, ( 323.8/2 ), 0}; Point(7) = {-l/2, 0, ( 323.8/2 )}; Point(8) = {-l/2, -( 323.8/2 ), 0}; Point(9) = {-l/2, 0, -( 323.8/2 )}; Circle(1) = {3, 1, 2}; Circle(2) = {2, 1, 5}; Circle(3) = {5, 1, 4}; Circle(4) = {4, 1, 3}; Circle(5) = {7, 1, 6}; Circle(6) = {6, 1, 9}; Circle(7) = {9, 1, 8}; Circle(8) = {8, 1, 7}; Line(9) = {3, 7}; Line(10) = {2, 6}; Line(11) = {5, 9}; Line(12) = {4, 8}; Curve Loop(1) = {5, -10, -1, 9}; Plane Surface(1) = {1}; Curve Loop(2) = {6, -11, -2, 10}; Plane Surface(2) = {2}; Curve Loop(3) = {7, -12, -3, 11}; Plane Surface(3) = {3}; Curve Loop(4) = {8, -9, -4, 12}; Plane Surface(4) = {4}; Transfinite Curve {1, 2, 3, 4, 5, 6, 7, 8} = 1+Pi/4*((( 323.8/2 )+( ( 323.8/2 )-21.5 ))/(( 323.8/2 )-( ( 323.8/2 )-21.5 )))*2; Transfinite Curve {10, 11, 12, 9} = 1+2; Transfinite Surface {:}; If (Mesh.RecombineAll) Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; Recombine; } Else Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; } EndIf Physical Surface("front") = {1, 2, 3, 4}; Physical Surface("back") = {17, 13, 9, 20}; Physical Surface("pressure") = {12, 16, 19, 7}; Physical Volume("bulk") = {2, 3, 4, 1}; Mesh.ElementOrder = 2; feenox-1.1/tests/parameters.fee0000644000175000017500000000054014773607165013565 00000000000000nprec = 6 # six precursor groups VECTOR c[nprec] VECTOR lambda[nprec] VECTOR beta[nprec] beta[1] = 0.000215 beta[2] = 0.001424 beta[3] = 0.001274 beta[4] = 0.002568 beta[5] = 0.000748 beta[6] = 0.000273 Beta = vecsum(beta) lambda[1] = 0.0124 lambda[2] = 0.0305 lambda[3] = 0.111 lambda[4] = 0.301 lambda[5] = 1.14 lambda[6] = 3.01 Lambda = 40e-6 feenox-1.1/tests/reactions.sh0000755000175000017500000000045614773607165013275 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical answerdiff reaction-displ.fee exitifwrong $? answerdiff reaction-force.fee exitifwrong $? feenox-1.1/tests/wilson-2d.fee0000644000175000017500000000172614773607165013247 00000000000000# 2d problem from # Gary L. Wilson, Roger A. Rydin & Seppo Orivuori (1988) A Comparison of Two # Efficient Nonlinear Heat Conduction Methodologies Using a Two-Dimensional Time-Dependent # Benchmark Problem, Nuclear Technology, 82:1, 94-105, DOI: 10.13182/NT88-A34120 # http://dx.doi.org/10.13182/NT88-A34120 PROBLEM thermal 2d READ_MESH wilson-2d.msh k(x,y) = 1 + 0.5*T(x,y) rhocp(x,y) = 1 + 0.5*T(x,y) BC heat q=1 GROUP left GROUP bottom BC temp T=limit(1e5*t,0,1) GROUP right GROUP top T_0(x,y) = 0 end_time = 17.25 T_q1_ref = 2.3872 T_q2_ref = 1.1972 T_q3_ref = 1.5903 T_q4_ref = 1.5903 SOLVE_PROBLEM # PRINT t # WRITE_MESH wilson-2d-result.msh T IF done INTEGRATE T OVER quadrant1 RESULT int_q1 INTEGRATE T OVER quadrant2 RESULT int_q2 INTEGRATE T OVER quadrant3 RESULT int_q3 INTEGRATE T OVER quadrant4 RESULT int_q4 area = 1.5^2 PRINT abs(int_q1/area-T_q1_ref)+abs(int_q2/area-T_q2_ref)+abs(int_q3/area-T_q3_ref)+abs(int_q4/area-T_q4_ref) ENDIF feenox-1.1/tests/square-struct.geo0000644000175000017500000000044714773607165014265 00000000000000SetFactory("OpenCASCADE"); Rectangle(1) = {0, 0, 0, 1, 1, 0}; Transfinite Curve "*" = 1+8; Transfinite Surface "*"; Mesh.RecombineAll = 1; Physical Curve("left") = {4}; Physical Curve("right") = {2}; Physical Curve("bottom") = {1}; Physical Curve("top") = {3}; Physical Surface("bulk") = {1}; feenox-1.1/tests/square.geo0000644000175000017500000000041214773607165012733 00000000000000SetFactory("OpenCASCADE"); Rectangle(1) = {0, 0, 0, 1, 1, 0}; Mesh.MeshSizeMax = 0.5; Mesh.MeshSizeMin = 0.5; Physical Curve("left") = {4}; Physical Curve("right") = {2}; Physical Curve("bottom") = {1}; Physical Curve("top") = {3}; Physical Surface("bulk") = {1}; feenox-1.1/tests/spinning-disk-parallel-solid-half.fee0000644000175000017500000000167114773607165020017 00000000000000PROBLEM mechanical READ_MESH spinning-disk-parallel-solid-half$1.msh # MKS E = 200e9 nu = 0.3 rho = 7800 omega = 1000 * 2*pi/60 f_x(x,y,z) = rho * omega^2* x f_y(x,y,z) = rho * omega^2* y # BC symmetry symmetry radial penalty_weight = 100*E BC symmetry1 symmetry BC symmetry2 symmetry BC symmetry3 symmetry SOLVE_PROBLEM # non-dimensional numerical projection sigma_h(r) = sigmay(r,0,0) / (rho*omega^2/8) sigma_r(r) = sigmax(r,0,0) / (rho*omega^2/8) # analytical solution INCLUDE spinning-disk-dimensions.geo S_h(r) = ((3+nu)*R^2 - (1+3*nu)*r^2) S_r(r) = (3+nu) * (R^2 - r^2) # WRITE_MESH spinning-disk-parallel-solid-half$1.vtk VECTOR u v w sigma # profiles along r # PRINT_FUNCTION S_h sigma_h S_r sigma_r MIN 0 MAX R NSTEPS 20 FILE spinning-disk-parallel-solid-half$1.dat # integral errors error_h = sqrt(integral((S_h(r)-sigma_h(r))^2, r, 0, R)) / R; error_r = sqrt(integral((S_r(r)-sigma_r(r))^2, r, 0, R)) / R; PRINT error_h+error_r feenox-1.1/tests/U-Al.fee0000644000175000017500000000107614773607165012165 00000000000000# material U-Al (tables 36 and 37) # NOTE: 1 is the slow energy group and 2 is the fast energy group # fast-energy group nu2_fuel = 0 Sigma_f2_fuel = 0 nuSigma_f2_fuel = nu2_fuel*Sigma_f2_fuel Sigma_s2.2_fuel = 0.247516 Sigma_s2.1_fuel = 0.020432 # note the table has the indexes reversed! Sigma_t2_fuel = 0.26817 chi[2] = 1.0 # slow energy group nu1_fuel = 2.83 Sigma_f1_fuel = 0.0607063042 nuSigma_f1_fuel = nu1_fuel*Sigma_f1_fuel Sigma_s1.1_fuel = 1.21313 Sigma_s1.2_fuel = 0 # note the table has the indexes reversed! Sigma_t1_fuel = 1.27698 chi[1] = 0.0 feenox-1.1/tests/ray-effect.sh0000755000175000017500000000174014773607165013330 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi # checkgmsh checkpde neutron_sn # the gmsh version in ubuntu 20 gives a segfault for these .geos # gmsh -v 0 -2 ${dir}/ray-effect-full.geo || exit $? answer2 ray-effect.fee full 4 "1.4" exitifwrong $? # gmsh -v 0 -2 ${dir}/ray-effect-half.geo || exit $? answer2 ray-effect.fee half 4 "1.4" exitifwrong $? # gmsh -v 0 -2 ${dir}/ray-effect-quarter.geo || exit $? answer2 ray-effect.fee quarter 4 "1.4" exitifwrong $? # gmsh -v 0 -2 ${dir}/ray-effect-eighth.geo || exit $? answer2 ray-effect.fee eighth 4 "1.4" exitifwrong $? checkpde neutron_diffusion answer1 ray-effect-diffusion.fee full "2.0" exitifwrong $? answer1 ray-effect-diffusion.fee half "2.0" exitifwrong $? answer1 ray-effect-diffusion.fee quarter "2.0" exitifwrong $? answer1 ray-effect-diffusion.fee eighth "2.0" exitifwrong $? feenox-1.1/tests/bunny-thermal-mpi.fee0000644000175000017500000000130114773607165014766 00000000000000PROBLEM thermal # create mesh with # > wget https://upload.wikimedia.org/wikipedia/commons/4/43/Stanford_Bunny.stl # > gmsh -3 bunny.geo READ_MESH bunny4.msh k = 1 rho = 1 cp = 1 T_0(x,y,z) = 0 end_time = 500 # get the volume of the bunny PHYSICAL_GROUP bunny DIM 3 # and the areas of the surfaces PHYSICAL_GROUP base DIM 2 PHYSICAL_GROUP rest DIM 2 convection_coeff = 1 BC heated h=convection_coeff Tref=1 GROUP base GROUP rest SOLVE_PROBLEM INTEGRATE T RESULT integral_of_T T_mean = integral_of_T/bunny_volume # compare against the lumped capacitance result T_lumped = 1-exp(-convection_coeff*(base_area+rest_area)/(rho*bunny_volume*cp) * t) IF done PRINT T_mean-1 ENDIF # WRITE_RESULTS T feenox-1.1/tests/point-kinetics.sh0000755000175000017500000000054314773607165014243 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkida answerzero reactivity-from-table.fee exitifwrong $? answerzero inverse-dae.fee 1e-6 exitifwrong $? answerzero inverse-integral.fee 1e-6 exitifwrong $? feenox-1.1/tests/thermal-slab-no-k.fee0000644000175000017500000000075314773607165014645 00000000000000READ_MESH slab.msh # read mesh in Gmsh's v4.1 format PROBLEM thermal DIMENSIONS 1 # tell FeenoX what we want to solve # k = 1 # set uniform conductivity BC left T=0 # set fixed temperatures as BCs BC right T=1 # "left" and "right" are defined in the mesh SOLVE_PROBLEM # tell FeenoX we are ready to solve the problem PRINT T(0.5) # ask for the temperature at x=0.5 feenox-1.1/tests/cube-expansion.sh0000755000175000017500000000134714773607165014226 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkgmsh gmsh -v 0 -3 ${dir}/cube.geo || exit $? answerzero cube-free-expansion-uniform-isotropic.fee exitifwrong $? answerzero cube-restrained-expansion-uniform-isotropic.fee exitifwrong $? answerzero cube-free-expansion-uniform-orthotropic.fee exitifwrong $? answerzero cube-restrained-expansion-uniform-orthotropic.fee exitifwrong $? answerzero cube-free-expansion-alpha-of-space-orthotropic.fee exitifwrong $? answer cube-free-expansion-alpha-of-temperature-orthotropic.fee "3.356e-03 3.353e-03 3.340e-03" exitifwrong $? feenox-1.1/tests/beam-cantilever-tet4.msh0000644000175000017500000003427014773607165015375 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 2 1 "left" 2 2 "right" 3 3 "bulk" $EndPhysicalNames $Entities 8 12 6 1 1 0 -0.025 0.01 0 2 0 -0.025 -0.01 0 3 0 0.025 0.01 0 4 0 0.025 -0.01 0 5 0.5 -0.025 0.01 0 6 0.5 -0.025 -0.01 0 7 0.5 0.025 0.01 0 8 0.5 0.025 -0.01 0 1 -1e-07 -0.0250001 -0.0100001 1e-07 -0.0249999 0.0100001 0 2 2 -1 2 -1e-07 -0.0250001 0.009999900000000001 1e-07 0.0250001 0.0100001 0 2 1 -3 3 -1e-07 0.0249999 -0.0100001 1e-07 0.0250001 0.0100001 0 2 4 -3 4 -1e-07 -0.0250001 -0.0100001 1e-07 0.0250001 -0.009999900000000001 0 2 2 -4 5 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 0.0100001 0 2 6 -5 6 0.4999999 -0.0250001 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 2 5 -7 7 0.4999999 0.0249999 -0.0100001 0.5000000999999999 0.0250001 0.0100001 0 2 8 -7 8 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 2 6 -8 9 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 -0.009999900000000001 0 2 2 -6 10 -9.999999997511999e-08 -0.0250001 0.009999900000000001 0.5000000999999999 -0.0249999 0.0100001 0 2 1 -5 11 -9.999999997511999e-08 0.0249999 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 2 4 -8 12 -9.999999997511999e-08 0.0249999 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 2 3 -7 1 -1e-07 -0.0250001 -0.0100001 1e-07 0.0250001 0.0100001 1 1 4 -1 4 3 -2 2 0.4999999 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 0.0100001 1 2 4 -5 8 7 -6 3 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 -0.0249999 0.0100001 0 4 -9 1 10 -5 4 -9.999999997511999e-08 0.0249999 -0.0100001 0.5000000999999999 0.0250001 0.0100001 0 4 -11 3 12 -7 5 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 -0.009999900000000001 0 4 -4 9 8 -11 6 -9.999999997511999e-08 -0.0250001 0.009999900000000001 0.5000000999999999 0.0250001 0.0100001 0 4 -2 10 6 -12 1 -9.999999997511999e-08 -0.0250001 -0.0100001 0.5000000999999999 0.0250001 0.0100001 1 3 6 -1 2 -3 4 -5 6 $EndEntities $Nodes 27 135 1 135 0 1 0 1 1 0 -0.025 0.01 0 2 0 1 2 0 -0.025 -0.01 0 3 0 1 3 0 0.025 0.01 0 4 0 1 4 0 0.025 -0.01 0 5 0 1 5 0.5 -0.025 0.01 0 6 0 1 6 0.5 -0.025 -0.01 0 7 0 1 7 0.5 0.025 0.01 0 8 0 1 8 0.5 0.025 -0.01 1 1 0 1 9 0 -0.025 -1.734723475976807e-18 1 2 0 3 10 11 12 0 -0.01249999999999998 0.01 0 1.734723475976807e-17 0.01 0 0.01250000000000002 0.01 1 3 0 1 13 0 0.025 -1.734723475976807e-18 1 4 0 3 14 15 16 0 -0.01249999999999998 -0.01 0 1.734723475976807e-17 -0.01 0 0.01250000000000002 -0.01 1 5 0 1 17 0.5 -0.025 -1.734723475976807e-18 1 6 0 3 18 19 20 0.5 -0.01249999999999998 0.01 0.5 1.734723475976807e-17 0.01 0.5 0.01250000000000002 0.01 1 7 0 1 21 0.5 0.025 -1.734723475976807e-18 1 8 0 3 22 23 24 0.5 -0.01249999999999998 -0.01 0.5 1.734723475976807e-17 -0.01 0.5 0.01250000000000002 -0.01 1 9 0 7 25 26 27 28 29 30 31 0.0625 -0.025 -0.01 0.125 -0.025 -0.01 0.1875 -0.025 -0.01 0.25 -0.025 -0.01 0.3125 -0.025 -0.01 0.375 -0.025 -0.01 0.4375 -0.025 -0.01 1 10 0 7 32 33 34 35 36 37 38 0.0625 -0.025 0.01 0.125 -0.025 0.01 0.1875 -0.025 0.01 0.25 -0.025 0.01 0.3125 -0.025 0.01 0.375 -0.025 0.01 0.4375 -0.025 0.01 1 11 0 7 39 40 41 42 43 44 45 0.0625 0.025 -0.01 0.125 0.025 -0.01 0.1875 0.025 -0.01 0.25 0.025 -0.01 0.3125 0.025 -0.01 0.375 0.025 -0.01 0.4375 0.025 -0.01 1 12 0 7 46 47 48 49 50 51 52 0.0625 0.025 0.01 0.125 0.025 0.01 0.1875 0.025 0.01 0.25 0.025 0.01 0.3125 0.025 0.01 0.375 0.025 0.01 0.4375 0.025 0.01 2 1 0 3 53 54 55 0 -0.01249999999999998 1.734723475976807e-18 0 2.081668171172169e-17 -1.734723475976807e-18 0 0.01250000000000002 -1.734723475976807e-18 2 2 0 3 56 57 58 0.5 -0.01249999999999998 1.734723475976807e-18 0.5 2.081668171172169e-17 -1.734723475976807e-18 0.5 0.01250000000000002 -1.734723475976807e-18 2 3 0 7 59 60 61 62 63 64 65 0.0625 -0.025 0 0.125 -0.025 -1.734723475976807e-18 0.1875 -0.025 -1.734723475976807e-18 0.25 -0.025 -1.734723475976807e-18 0.3125 -0.025 -1.734723475976807e-18 0.375 -0.025 -1.734723475976807e-18 0.4375 -0.025 0 2 4 0 7 66 67 68 69 70 71 72 0.0625 0.025 0 0.125 0.025 -1.734723475976807e-18 0.1875 0.025 -1.734723475976807e-18 0.25 0.025 -1.734723475976807e-18 0.3125 0.025 -1.734723475976807e-18 0.375 0.025 -1.734723475976807e-18 0.4375 0.025 0 2 5 0 21 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 0.0625 -0.01249999999999998 -0.01 0.125 -0.01249999999999998 -0.01 0.1875 -0.01249999999999998 -0.01 0.25 -0.01249999999999998 -0.01 0.3125 -0.01249999999999998 -0.01 0.375 -0.01249999999999998 -0.01 0.4375 -0.01249999999999998 -0.01 0.0625 1.734723475976807e-17 -0.01 0.125 1.734723475976807e-17 -0.01 0.1875 2.081668171172169e-17 -0.01 0.25 1.734723475976807e-17 -0.01 0.3125 1.387778780781446e-17 -0.01 0.375 1.040834085586084e-17 -0.01 0.4375 1.734723475976807e-17 -0.01 0.0625 0.0125 -0.01 0.125 0.01250000000000002 -0.01 0.1875 0.01250000000000002 -0.01 0.25 0.01250000000000002 -0.01 0.3125 0.01250000000000002 -0.01 0.375 0.01250000000000002 -0.01 0.4375 0.01250000000000002 -0.01 2 6 0 21 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 0.0625 -0.01249999999999998 0.01 0.125 -0.01249999999999998 0.01 0.1875 -0.01249999999999998 0.01 0.25 -0.01249999999999998 0.01 0.3125 -0.01249999999999998 0.01 0.375 -0.01249999999999998 0.01 0.4375 -0.01249999999999998 0.01 0.0625 1.734723475976807e-17 0.01 0.125 1.734723475976807e-17 0.01 0.1875 2.081668171172169e-17 0.01 0.25 1.734723475976807e-17 0.01 0.3125 1.387778780781446e-17 0.01 0.375 1.040834085586084e-17 0.01 0.4375 1.734723475976807e-17 0.01 0.0625 0.0125 0.01 0.125 0.01250000000000002 0.01 0.1875 0.01250000000000002 0.01 0.25 0.01250000000000002 0.01 0.3125 0.01250000000000002 0.01 0.375 0.01250000000000002 0.01 0.4375 0.01250000000000002 0.01 3 1 0 21 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 0.0625 -0.01249999999999997 4.526544070126981e-18 0.125 -0.01249999999999998 2.114194236346734e-18 0.1875 -0.01249999999999998 1.951563910473908e-18 0.25 -0.01249999999999998 1.409462824231156e-18 0.3125 -0.01249999999999998 1.951563910473908e-18 0.375 -0.01249999999999998 1.734723475976807e-18 0.4375 -0.01249999999999998 4.336808689942018e-18 0.0625 2.439454888092385e-17 1.084202172485504e-18 0.125 2.276824562219559e-17 -1.301042606982605e-18 0.1875 2.51534904016637e-17 -1.951563910473908e-18 0.25 2.038300084272748e-17 -1.734723475976807e-18 0.3125 1.908195823574488e-17 -1.734723475976807e-18 0.375 1.387778780781446e-17 -1.301042606982605e-18 0.4375 2.255140518769849e-17 4.336808689942018e-19 0.0625 0.0125 1.788933584601082e-18 0.125 0.01250000000000002 -3.252606517456513e-19 0.1875 0.01250000000000002 -2.168404344971009e-19 0.25 0.01250000000000001 -1.517883041479706e-18 0.3125 0.01250000000000002 -4.336808689942018e-19 0.375 0.01250000000000002 0 0.4375 0.01250000000000002 1.301042606982605e-18 $EndNodes $Elements 3 416 1 416 2 1 2 16 1 2 9 14 2 14 9 53 3 14 53 15 4 15 53 54 5 15 54 16 6 16 54 55 7 16 55 4 8 4 55 13 9 9 1 53 10 53 1 10 11 53 10 54 12 54 10 11 13 54 11 55 14 55 11 12 15 55 12 13 16 13 12 3 2 2 2 16 17 6 22 17 18 22 56 17 19 22 23 56 20 23 57 56 21 23 24 57 22 24 58 57 23 24 8 58 24 8 21 58 25 17 56 5 26 56 18 5 27 56 57 18 28 57 19 18 29 57 58 19 30 58 20 19 31 58 21 20 32 21 7 20 3 1 4 384 33 9 2 14 25 34 14 9 25 59 35 59 25 14 73 36 14 9 59 53 37 73 14 59 53 38 73 59 115 53 39 59 25 73 26 40 73 59 26 60 41 60 26 73 74 42 73 59 60 115 43 74 73 60 115 44 74 60 116 115 45 60 26 74 27 46 74 60 27 61 47 61 27 74 75 48 74 60 61 116 49 75 74 61 116 50 75 61 117 116 51 61 27 75 28 52 75 61 28 62 53 62 28 75 76 54 75 61 62 117 55 76 75 62 117 56 76 62 118 117 57 62 28 76 29 58 76 62 29 63 59 63 29 76 77 60 76 62 63 118 61 77 76 63 118 62 77 63 119 118 63 63 29 77 30 64 77 63 30 64 65 64 30 77 78 66 77 63 64 119 67 78 77 64 119 68 78 64 120 119 69 64 30 78 31 70 78 64 31 65 71 65 31 78 79 72 78 64 65 120 73 79 78 65 120 74 79 65 121 120 75 65 31 79 6 76 79 65 6 17 77 17 6 79 22 78 79 65 17 121 79 22 79 17 121 80 22 17 56 121 81 53 14 15 73 82 15 53 73 115 83 115 73 15 80 84 15 53 115 54 85 80 15 115 54 86 80 115 122 54 87 115 73 80 74 88 80 115 74 116 89 116 74 80 81 90 80 115 116 122 91 81 80 116 122 92 81 116 123 122 93 116 74 81 75 94 81 116 75 117 95 117 75 81 82 96 81 116 117 123 97 82 81 117 123 98 82 117 124 123 99 117 75 82 76 100 82 117 76 118 101 118 76 82 83 102 82 117 118 124 103 83 82 118 124 104 83 118 125 124 105 118 76 83 77 106 83 118 77 119 107 119 77 83 84 108 83 118 119 125 109 84 83 119 125 110 84 119 126 125 111 119 77 84 78 112 84 119 78 120 113 120 78 84 85 114 84 119 120 126 115 85 84 120 126 116 85 120 127 126 117 120 78 85 79 118 85 120 79 121 119 121 79 85 86 120 85 120 121 127 121 86 85 121 127 122 86 121 128 127 123 121 79 86 22 124 86 121 22 56 125 56 22 86 23 126 86 121 56 128 127 23 86 56 128 128 23 56 57 128 129 54 15 16 80 130 16 54 80 122 131 122 80 16 87 132 16 54 122 55 133 87 16 122 55 134 87 122 129 55 135 122 80 87 81 136 87 122 81 123 137 123 81 87 88 138 87 122 123 129 139 88 87 123 129 140 88 123 130 129 141 123 81 88 82 142 88 123 82 124 143 124 82 88 89 144 88 123 124 130 145 89 88 124 130 146 89 124 131 130 147 124 82 89 83 148 89 124 83 125 149 125 83 89 90 150 89 124 125 131 151 90 89 125 131 152 90 125 132 131 153 125 83 90 84 154 90 125 84 126 155 126 84 90 91 156 90 125 126 132 157 91 90 126 132 158 91 126 133 132 159 126 84 91 85 160 91 126 85 127 161 127 85 91 92 162 91 126 127 133 163 92 91 127 133 164 92 127 134 133 165 127 85 92 86 166 92 127 86 128 167 128 86 92 93 168 92 127 128 134 169 93 92 128 134 170 93 128 135 134 171 128 86 93 23 172 93 128 23 57 173 57 23 93 24 174 93 128 57 135 175 24 93 57 135 176 24 57 58 135 177 55 16 4 87 178 4 55 87 129 179 129 87 4 39 180 4 55 129 13 181 39 4 129 13 182 39 129 66 13 183 129 87 39 88 184 39 129 88 130 185 130 88 39 40 186 39 129 130 66 187 40 39 130 66 188 40 130 67 66 189 130 88 40 89 190 40 130 89 131 191 131 89 40 41 192 40 130 131 67 193 41 40 131 67 194 41 131 68 67 195 131 89 41 90 196 41 131 90 132 197 132 90 41 42 198 41 131 132 68 199 42 41 132 68 200 42 132 69 68 201 132 90 42 91 202 42 132 91 133 203 133 91 42 43 204 42 132 133 69 205 43 42 133 69 206 43 133 70 69 207 133 91 43 92 208 43 133 92 134 209 134 92 43 44 210 43 133 134 70 211 44 43 134 70 212 44 134 71 70 213 134 92 44 93 214 44 134 93 135 215 135 93 44 45 216 44 134 135 71 217 45 44 135 71 218 45 135 72 71 219 135 93 45 24 220 45 135 24 58 221 58 24 45 8 222 45 135 58 72 223 8 45 58 72 224 8 58 21 72 225 1 9 53 59 226 53 1 59 32 227 32 59 53 115 228 53 1 32 10 229 115 53 32 10 230 115 32 94 10 231 32 59 115 60 232 115 32 60 33 233 33 60 115 116 234 115 32 33 94 235 116 115 33 94 236 116 33 95 94 237 33 60 116 61 238 116 33 61 34 239 34 61 116 117 240 116 33 34 95 241 117 116 34 95 242 117 34 96 95 243 34 61 117 62 244 117 34 62 35 245 35 62 117 118 246 117 34 35 96 247 118 117 35 96 248 118 35 97 96 249 35 62 118 63 250 118 35 63 36 251 36 63 118 119 252 118 35 36 97 253 119 118 36 97 254 119 36 98 97 255 36 63 119 64 256 119 36 64 37 257 37 64 119 120 258 119 36 37 98 259 120 119 37 98 260 120 37 99 98 261 37 64 120 65 262 120 37 65 38 263 38 65 120 121 264 120 37 38 99 265 121 120 38 99 266 121 38 100 99 267 38 65 121 17 268 121 38 17 5 269 5 17 121 56 270 121 38 5 100 271 56 121 5 100 272 56 5 18 100 273 10 53 54 115 274 54 10 115 94 275 94 115 54 122 276 54 10 94 11 277 122 54 94 11 278 122 94 101 11 279 94 115 122 116 280 122 94 116 95 281 95 116 122 123 282 122 94 95 101 283 123 122 95 101 284 123 95 102 101 285 95 116 123 117 286 123 95 117 96 287 96 117 123 124 288 123 95 96 102 289 124 123 96 102 290 124 96 103 102 291 96 117 124 118 292 124 96 118 97 293 97 118 124 125 294 124 96 97 103 295 125 124 97 103 296 125 97 104 103 297 97 118 125 119 298 125 97 119 98 299 98 119 125 126 300 125 97 98 104 301 126 125 98 104 302 126 98 105 104 303 98 119 126 120 304 126 98 120 99 305 99 120 126 127 306 126 98 99 105 307 127 126 99 105 308 127 99 106 105 309 99 120 127 121 310 127 99 121 100 311 100 121 127 128 312 127 99 100 106 313 128 127 100 106 314 128 100 107 106 315 100 121 128 56 316 128 100 56 18 317 18 56 128 57 318 128 100 18 107 319 57 128 18 107 320 57 18 19 107 321 11 54 55 122 322 55 11 122 101 323 101 122 55 129 324 55 11 101 12 325 129 55 101 12 326 129 101 108 12 327 101 122 129 123 328 129 101 123 102 329 102 123 129 130 330 129 101 102 108 331 130 129 102 108 332 130 102 109 108 333 102 123 130 124 334 130 102 124 103 335 103 124 130 131 336 130 102 103 109 337 131 130 103 109 338 131 103 110 109 339 103 124 131 125 340 131 103 125 104 341 104 125 131 132 342 131 103 104 110 343 132 131 104 110 344 132 104 111 110 345 104 125 132 126 346 132 104 126 105 347 105 126 132 133 348 132 104 105 111 349 133 132 105 111 350 133 105 112 111 351 105 126 133 127 352 133 105 127 106 353 106 127 133 134 354 133 105 106 112 355 134 133 106 112 356 134 106 113 112 357 106 127 134 128 358 134 106 128 107 359 107 128 134 135 360 134 106 107 113 361 135 134 107 113 362 135 107 114 113 363 107 128 135 57 364 135 107 57 19 365 19 57 135 58 366 135 107 19 114 367 58 135 19 114 368 58 19 20 114 369 12 55 13 129 370 13 12 129 108 371 108 129 13 66 372 13 12 108 3 373 66 13 108 3 374 66 108 46 3 375 108 129 66 130 376 66 108 130 109 377 109 130 66 67 378 66 108 109 46 379 67 66 109 46 380 67 109 47 46 381 109 130 67 131 382 67 109 131 110 383 110 131 67 68 384 67 109 110 47 385 68 67 110 47 386 68 110 48 47 387 110 131 68 132 388 68 110 132 111 389 111 132 68 69 390 68 110 111 48 391 69 68 111 48 392 69 111 49 48 393 111 132 69 133 394 69 111 133 112 395 112 133 69 70 396 69 111 112 49 397 70 69 112 49 398 70 112 50 49 399 112 133 70 134 400 70 112 134 113 401 113 134 70 71 402 70 112 113 50 403 71 70 113 50 404 71 113 51 50 405 113 134 71 135 406 71 113 135 114 407 114 135 71 72 408 71 113 114 51 409 72 71 114 51 410 72 114 52 51 411 114 135 72 58 412 72 114 58 20 413 20 58 72 21 414 72 114 20 52 415 21 72 20 52 416 21 20 7 52 $EndElements feenox-1.1/tests/print.fee0000644000175000017500000000001214773607165012550 00000000000000PRINT 1+1 feenox-1.1/tests/sort_vector.fee0000644000175000017500000000004514773607165013773 00000000000000VECTOR x[3] DATA 3 2 1 SORT_VECTOR x feenox-1.1/tests/ray-effect-eighth.msh0000644000175000017500000001274614773607165014760 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 4 1 3 "mirror" 1 4 "vacuum" 2 1 "src" 2 2 "bulk" $EndPhysicalNames $Entities 5 6 2 0 1 0 0 0 0 2 0 1 0 0 3 0 2 0 0 4 1 1 0 0 5 2 2 0 0 1 -1e-07 -9.999999994736442e-08 -1e-07 1e-07 1.0000001 1e-07 1 3 2 1 -2 2 -1e-07 0.9999999000000001 -1e-07 1e-07 2.0000001 1e-07 1 3 2 2 -3 3 -9.999999994736442e-08 1.9999999 -1e-07 2.0000001 2.0000001 1e-07 1 4 2 3 -5 4 0.9999999000000001 0.9999999000000001 -1e-07 2.0000001 2.0000001 1e-07 1 3 2 5 -4 5 -9.999999994736442e-08 -9.999999994736442e-08 -1e-07 1.0000001 1.0000001 1e-07 1 3 2 4 -1 6 -9.999999994736442e-08 0.9999999000000001 -1e-07 1.0000001 1.0000001 1e-07 0 2 2 -4 1 -9.999999994736442e-08 -9.999999994736442e-08 -1e-07 1.0000001 1.0000001 1e-07 1 1 3 1 6 5 2 -9.999999994736442e-08 0.9999999000000001 -1e-07 2.0000001 2.0000001 1e-07 1 2 4 2 3 4 -6 $EndEntities $Nodes 13 123 1 123 0 1 0 1 1 0 0 0 0 2 0 1 2 0 1 0 0 3 0 1 3 0 2 0 0 4 0 1 4 1 1 0 0 5 0 1 5 2 2 0 1 1 0 5 6 7 8 9 10 0 0.3333333333333333 0 0 0.6666666666666666 0 0 0.1666666666666667 0 0 0.5 0 0 0.8333333333333333 0 1 2 0 7 11 12 13 14 15 16 17 0 1.25 0 0 1.5 0 0 1.75 0 0 1.125 0 0 1.375 0 0 1.625 0 0 1.875 0 1 3 0 7 18 19 20 21 22 23 24 0.5 2 0 1 2 0 1.5 2 0 0.25 2 0 0.75 2 0 1.25 2 0 1.75 2 0 1 4 0 7 25 26 27 28 29 30 31 1.75 1.75 0 1.499999999999999 1.499999999999999 0 1.25 1.25 0 1.875 1.875 0 1.624999999999999 1.624999999999999 0 1.375 1.375 0 1.125 1.125 0 1 5 0 5 32 33 34 35 36 0.6666666666666661 0.6666666666666661 0 0.3333333333333328 0.3333333333333328 0 0.833333333333333 0.833333333333333 0 0.4999999999999993 0.4999999999999993 0 0.1666666666666664 0.1666666666666664 0 1 6 0 7 37 38 39 40 41 42 43 0.25 1 0 0.5 1 0 0.75 1 0 0.125 1 0 0.375 1 0 0.625 1 0 0.875 1 0 2 1 0 31 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 0.0833333333333332 0.3333333333333331 0 0.1666666666666664 0.333333333333333 0 0.2499999999999995 0.3333333333333328 0 0.1666666666666665 0.6666666666666665 0 0.333333333333333 0.6666666666666663 0 0.4999999999999995 0.6666666666666661 0 0.04166666666666663 0.3333333333333333 0 0.04166666666666663 0.1666666666666666 0 0.1249999999999998 0.3333333333333331 0 0.08333333333333315 0.1666666666666665 0 0.2083333333333329 0.3333333333333329 0 0.1249999999999998 0.1666666666666664 0 0.2916666666666661 0.3333333333333328 0 0.08333333333333326 0.6666666666666665 0 0.1249999999999998 0.4999999999999998 0 0.06249999999999989 0.4999999999999999 0 0.2499999999999997 0.6666666666666664 0 0.2499999999999997 0.4999999999999997 0 0.1874999999999998 0.4999999999999998 0 0.4166666666666662 0.6666666666666662 0 0.3749999999999995 0.4999999999999994 0 0.3124999999999996 0.4999999999999996 0 0.5833333333333327 0.6666666666666661 0 0.4374999999999994 0.4999999999999994 0 0.2083333333333332 0.8333333333333333 0 0.1041666666666666 0.8333333333333333 0 0.4166666666666665 0.8333333333333331 0 0.3124999999999999 0.8333333333333333 0 0.6249999999999998 0.833333333333333 0 0.5208333333333331 0.833333333333333 0 0.7291666666666663 0.833333333333333 0 2 2 0 49 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 0.3124999999999999 1.25 0 0.6249999999999998 1.25 0 0.9374999999999998 1.25 0 0.3749999999999999 1.5 0 0.7499999999999997 1.5 0 1.125 1.5 0 0.4374999999999998 1.75 0 0.8749999999999998 1.75 0 1.3125 1.75 0 0.1562499999999999 1.25 0 0.2812499999999999 1.125 0 0.140625 1.125 0 0.4687499999999998 1.25 0 0.5624999999999999 1.125 0 0.4218749999999999 1.125 0 0.7812499999999998 1.25 0 0.8437499999999999 1.125 0 0.7031249999999999 1.125 0 1.09375 1.25 0 0.9843749999999999 1.125 0 0.1875 1.5 0 0.3437499999999999 1.375 0 0.1718749999999999 1.375 0 0.5624999999999998 1.5 0 0.6874999999999997 1.375 0 0.5156249999999998 1.375 0 0.9374999999999996 1.5 0 1.03125 1.375 0 0.8593749999999997 1.375 0 1.312499999999999 1.499999999999999 0 1.203125 1.375 0 0.2187499999999999 1.75 0 0.4062499999999999 1.625 0 0.203125 1.625 0 0.6562499999999998 1.75 0 0.8124999999999997 1.625 0 0.6093749999999998 1.625 0 1.09375 1.75 0 1.21875 1.625 0 1.015625 1.625 0 1.53125 1.75 0 1.421875 1.624999999999999 0 0.4687499999999999 1.875 0 0.2343749999999999 1.875 0 0.9374999999999999 1.875 0 0.7031249999999999 1.875 0 1.40625 1.875 0 1.171875 1.875 0 1.640625 1.875 0 $EndNodes $Elements 8 46 1 46 1 1 8 3 1 1 6 8 2 6 7 9 3 7 2 10 1 2 8 4 4 2 11 14 5 11 12 15 6 12 13 16 7 13 3 17 1 3 8 4 8 3 18 21 9 18 19 22 10 19 20 23 11 20 5 24 1 4 8 4 12 5 25 28 13 25 26 29 14 26 27 30 15 27 4 31 1 5 8 3 16 4 32 34 17 32 33 35 18 33 1 36 2 1 9 4 19 1 6 44 8 50 51 20 1 44 45 51 52 53 21 1 45 46 53 54 55 22 1 46 33 55 56 36 2 1 10 8 23 6 7 47 44 9 57 58 50 59 24 44 47 48 45 58 60 61 52 62 25 45 48 49 46 61 63 64 54 65 26 46 49 32 33 64 66 35 56 67 27 7 2 37 47 10 40 68 57 69 28 47 37 38 48 68 41 70 60 71 29 48 38 39 49 70 42 72 63 73 30 49 39 4 32 72 43 34 66 74 2 2 10 16 31 2 11 75 37 14 84 85 40 86 32 37 75 76 38 85 87 88 41 89 33 38 76 77 39 88 90 91 42 92 34 39 77 27 4 91 93 31 43 94 35 11 12 78 75 15 95 96 84 97 36 75 78 79 76 96 98 99 87 100 37 76 79 80 77 99 101 102 90 103 38 77 80 26 27 102 104 30 93 105 39 12 13 81 78 16 106 107 95 108 40 78 81 82 79 107 109 110 98 111 41 79 82 83 80 110 112 113 101 114 42 80 83 25 26 113 115 29 104 116 43 13 3 18 81 17 21 117 106 118 44 81 18 19 82 117 22 119 109 120 45 82 19 20 83 119 23 121 112 122 46 83 20 5 25 121 24 28 115 123 $EndElements feenox-1.1/tests/solve.sh0000755000175000017500000000043514773607165012433 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer powell.fee "0.000011 9.106146" exitifwrong $? answerzero rosenbrock.fee exitifwrong $? feenox-1.1/tests/cylinder-force.fee0000644000175000017500000000017014773607165014326 00000000000000PROBLEM mechanical READ_MESH cylinder.msh E=1 nu=0.25 BC bottom fixed BC top Fx=1 SOLVE_PROBLEM PRINT %.3f u(1,0,0) feenox-1.1/tests/nafems-le1.fee0000644000175000017500000000041014773607165013346 00000000000000--- title: NAFEMS LE1 plane-stress benchmark ... PROBLEM mechanical 2D plane_stress READ_MESH ${0}-${1}.msh E = 210e3 nu = 0.3 BC AB u=0 BC CD v=0 BC BC tension=10 SOLVE_PROBLEM WRITE_RESULTS FILE ${0}-${1}.vtk displacements stresses PRINT %.1f sigmay(2000,0) feenox-1.1/tests/annulus-modal.fee0000644000175000017500000000264314773607165014207 00000000000000PROBLEM modal 3D MODES 7 READ_MESH annulus.msh SCALE 1e-3 # scaled to have length in meters # SI units E = 210e9 nu = 0.3 rho = 7855 BC inner fixed # numerical SOLVE_PROBLEM # analytical # source: Formulas for natural frequency and mode shape, by Robert D. Blevings (1979) a = 508e-3 b = 1016e-3 h = 25.4e-3 # table of squared lambda for b/a = 0.5 and nu = 0.3 n_modes = 7 VECTOR lambda2min[n_modes] d = 0.05 lambda2min[1] = 13.0-d lambda2min[2] = 13.3-d lambda2min[3] = lambda2min[2] lambda2min[4] = 14.7-d lambda2min[5] = lambda2min[4] lambda2min[6] = 18.5-d lambda2min[7] = lambda2min[6] VECTOR lambda2max[n_modes] lambda2max[i] = lambda2min[i] + 2*d VECTOR famin[n_modes] VECTOR famax[n_modes] famin[i] = lambda2min[i]/(2*pi*a^2) * sqrt(E*h^3/(12*rho*h*(1-nu^2))) famax[i] = lambda2max[i]/(2*pi*a^2) * sqrt(E*h^3/(12*rho*h*(1-nu^2))) # write comparison PRINT_VECTOR %.0f famin f famax # PRINT_VECTOR f # WRITE_MESH annulus-modal.vtk \ # VECTOR u1 v1 w1 \ # VECTOR u2 v2 w2 VECTOR u3 v3 w3 \ # VECTOR u4 v4 w4 VECTOR u5 v5 w5 \ # VECTOR u6 v6 w6 VECTOR u7 v7 w7 \ # VECTOR u8 v8 w8 VECTOR u9 v9 w9 \ # VECTOR u10 v10 w10 VECTOR u11 v11 w11 \ # VECTOR u12 v12 w12 VECTOR u13 v13 w13 \ # VECTOR u14 v14 w14 VECTOR u15 v15 w15 \ # VECTOR u16 v16 w16 VECTOR u17 v17 w17 \ # VECTOR u18 v18 w18 VECTOR u19 v19 w19 \ # VECTOR u20 v20 w20 VECTOR u21 v21 w21 \ # VECTOR u22 v22 w22 VECTOR u23 v23 w23 \ # VECTOR u24 v24 w24 feenox-1.1/tests/beam-cantilever-hex27.geo0000644000175000017500000000015514773607165015430 00000000000000Mesh.ElementOrder = 2; Mesh.RecombineAll = 1; Mesh.SecondOrderIncomplete = 0; Merge "beam-cantilever.geo"; feenox-1.1/tests/la-p02-PUa-1-0-SL.geo0000644000175000017500000000043314773607165013723 00000000000000rc = 1.853722; n = 10; SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {rc, 0, 0}; Line(1) = {1, 2}; Physical Curve("fuel") = {1}; Physical Point("mirror") = {1}; Physical Point("vacuum") = {2}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = rc/n; Mesh.ElementOrder = 2; feenox-1.1/tests/two-cubes-orthotropic-materials.fee0000644000175000017500000000106514773607165017666 00000000000000PROBLEM mechanical READ_MESH two-cubes.msh MATERIAL soft { Ex=0.1*100000 Ey=0.1*75000 Ez=0.1*50000 Gxy=0.1*30000.0 Gyz=0.1*40000.0 Gzx=0.1*35000.0 nuxy=0.3 nuyz=0.25 nu13=0.4 nuzx=0.4*50000/100000 } MATERIAL hard { Ex=10*100000 Ey=10*75000 Ez=10*50000 Gxy=10*30000.0 Gyz=10*40000.0 Gzx=10*35000.0 nuxy=0.3 nuyz=0.25 nu13=0.4 nuzx=0.4*50000/100000 } BC left fixed BC right Fx=1000 SOLVE_PROBLEM WRITE_MESH two-cubes-orthotropic-materials.vtk VECTOR u v w sigmax sigmay sigmaz tauxy tauyz tauzx PRINT %.1f sigma(0,0,0) feenox-1.1/tests/function_data2d.fee0000644000175000017500000000010414773607165014462 00000000000000FUNCTION f(x,y) FILE data2d.dat INTERPOLATION $1 PRINT f(1.25,1.75) feenox-1.1/tests/thermal-slab-uniform-source-octave.ref0000644000175000017500000000016614773607165020250 00000000000000ans = 0 0 0.0450 0.0800 0.1050 0.1200 0.1250 0.1200 0.1050 0.0800 0.0450 feenox-1.1/tests/bunny-modal-free.fee0000644000175000017500000000004514773607165014566 00000000000000# free-free vibrations means no BCs! feenox-1.1/tests/algebraic_expr.fee0000644000175000017500000000077714773607165014405 00000000000000# algebraic expressions do whatever one expects them to do # thus a should evaluate to 7 a = 1 + 2*3 # and b should evaluate to 9 b = (1+2) * 3 # expressions can contain variables and functions, whose # arguments may be expressions themselves, and so on c = (1 + sin(pi/4)^(5/2))/(1 - log(abs(a-b))) PRINT %g a b c # when an expression appears as an argument of a keyword and # contains spaces it should be written within double quotes # so the parser can tell it is a single expression PRINT %g 1 -1 "1 -1" feenox-1.1/tests/bunny-modal.sh0000755000175000017500000000143114773607165013525 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde modal checkslepc checkgmsh if [ ! -e ${dir}/bunny.msh ]; then if [ ! -e ${dir}/Stanford_Bunny.stl ] ; then if [ ! -z "$(which wget)" ]; then wget https://upload.wikimedia.org/wikipedia/commons/4/43/Stanford_Bunny.stl -O ${dir}/Stanford_Bunny.stl || exit $? else return 77 fi fi gmsh -3 ${dir}/bunny.geo || exit $? fi # gmsh -v 0 -3 ${dir}/bunny.geo -order 2 -o bunny-2nd.msh || exit $? answer1 bunny-modal.fee fixed "1 1 2 2 2 2" exitifwrong $? answer1 bunny-modal.fee free "2 2 2 2 3 3" exitifwrong $? answer1 bunny-modal.fee rest "2 2 2 2 3 3" exitifwrong $? feenox-1.1/tests/warp.fee0000644000175000017500000000064014773607165012374 00000000000000READ_MESH ${1}.vtk DIMENSIONS 3 { READ_FIELD u_v_w1 AS u READ_FIELD u_v_w2 AS v READ_FIELD u_v_w3 AS w } VECTOR dxv[nodes] VECTOR dyv[nodes] VECTOR dzv[nodes] DEFAULT_ARGUMENT_VALUE 2 1e5 k = $2 # dxv[i] = vec_u_x[i] + k*vec_u[i] # dyv[i] = vec_u_y[i] + k*vec_v[i] # dzv[i] = vec_u_z[i] + k*vec_w[i] dxv[i] = mesh_x[i] + k*vec_u[i] # PRINT_VECTOR dxv dyv dzv PRINT %.3e dxv[1] vec_u_x[1] vec_u[1] SEP " " feenox-1.1/tests/reaction-force.fee0000644000175000017500000000171014773607165014322 00000000000000PROBLEM mechanical 3D READ_MESH reaction.msh SCALE 1e-3 E = 70e9 nu = 0.33 BC dummy_name symmetry GROUPS surf_1_1 surf_1_2 surf_1_3 surf_1_4 surf_1_6 BC surf_1_5 Fz=-100 SOLVE_PROBLEM REACTION surf_1_1 RESULT R1 REACTION surf_1_2 RESULT R2 REACTION surf_1_3 RESULT R3 REACTION surf_1_4 RESULT R4 REACTION surf_1_5 RESULT R5 REACTION surf_1_6 RESULT R6 # PRINT 1 %+.1f R1 # PRINT 2 %+.1f R2 # PRINT 3 %+.1f R3 # PRINT 4 %+.1f R4 # PRINT 5 %+.1f R5 # PRINT 6 %+.1f R6 PRINT 1 %.2f abs(R1[1]) abs(R1[2]) abs(R1[3]) PRINT 1 %.2f abs(R2[1]) abs(R2[2]) abs(R2[3]) PRINT 1 %.2f abs(R3[1]) abs(R3[2]) abs(R3[3]) PRINT 1 %.2f abs(R4[1]) abs(R4[2]) abs(R4[3]) PRINT 1 %.2f abs(R5[1]) abs(R5[2]) abs(R5[3]) PRINT 1 %.2f abs(R6[1]) abs(R6[2]) abs(R6[3]) PRINT "total" %.0e R1[1]+R2[1]+R3[1]+R4[1]+R5[1]+R6[1] R1[2]+R2[2]+R3[2]+R4[2]+R5[2]+R6[2] R1[3]+R2[3]+R3[3]+R4[3]+R5[3]+R6[3] # PRINT w(0,0,200) WRITE_MESH $0.vtu VECTOR u v w sigmax sigmay sigmaz feenox-1.1/tests/la-p04-PUa-H2O_0.5-1-0-SL.fee0000644000175000017500000000040614773607165014662 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 4 PROBLEM neutron_sn 1D GROUPS 1 SN 4 READ_MESH $0.msh INCLUDE Pu-239a.fee INCLUDE H2O.fee BC vacuum vacuum BC mirror mirror SOLVE_PROBLEM PRINT keff-0.958838 feenox-1.1/tests/thermal-3d.sh0000755000175000017500000000120014773607165013232 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal checkgmsh gmsh -v 0 -3 ${dir}/heater-cylinder-inches.geo || exit $? answerzero heater-cylinder-inches.fee 0.015 exitifwrong $? for i in struct unstruct; do gmsh -v 0 -3 ${dir}/long-bar-${i}.geo || exit $? answerzero1 long-bar-thermal.fee ${i} exitifwrong $? done checkpde mechanical for i in struct unstruct; do for j in struct unstruct; do answerzero2 long-bar-mechanical.fee ${i} ${j} 0.002 exitifwrong $? done done feenox-1.1/tests/print.sh0000755000175000017500000000054214773607165012436 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer print.fee "2" exitifwrong $? answerdiff printf.fee exitifwrong $? answerdiff print_function.fee exitifwrong $? answerdiff print_vector.fee exitifwrong $? feenox-1.1/tests/t21.msh0000644000175000017500000001335314773607165012066 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 2 2 100 "Left" 2 200 "Right" $EndPhysicalNames $Entities 6 7 2 0 1 0 0 0 0 2 1 0 0 0 3 1 1 0 0 4 0 1 0 0 5 2 0 0 0 6 2 1 0 0 1 -9.999999994736442e-08 -1e-07 -1e-07 1.0000001 1e-07 1e-07 0 2 1 -2 2 0.9999998999999999 -1.000000000583867e-07 -1.000000000555111e-07 1.0000001 1.0000001 1.000000000555111e-07 0 2 2 -3 3 -9.999999994736442e-08 0.9999999000000001 -1e-07 1.0000001 1.0000001 1e-07 0 2 3 -4 4 -1e-07 -9.999999994736442e-08 -1e-07 1e-07 1.0000001 1e-07 0 2 4 -1 5 0.9999999000000001 -1e-07 -1e-07 2.0000001 1e-07 1e-07 0 2 2 -5 6 1.9999999 -9.999999994736442e-08 -1e-07 2.0000001 1.0000001 1e-07 0 2 5 -6 7 0.9999999000000001 0.9999999000000001 -1e-07 2.0000001 1.0000001 1e-07 0 2 6 -3 1 -1.000000000583867e-07 -1.000000000583867e-07 -1.000000000555111e-07 1.0000001 1.0000001 1.000000000555111e-07 1 100 4 1 2 3 4 2 0.9999998999999999 -1.000000000583867e-07 -1.000000000555111e-07 2.0000001 1.0000001 1.000000000555111e-07 1 200 4 5 6 7 -2 $EndEntities $PartitionedEntities 6 0 6 14 8 0 7 0 1 1 6 0 0 0 0 8 0 2 1 5 1 0 0 0 9 0 3 1 3 1 1 0 0 10 0 4 1 4 0 1 0 0 11 0 5 1 1 2 0 0 0 12 0 6 1 2 2 1 0 0 8 1 1 1 6 0 0 0 0.75 0 0 0 0 9 1 1 1 5 0.75 0 0 1 0 0 0 0 10 1 2 1 5 1 0 0 1 0.5 0 0 0 11 1 2 1 3 1 0.5 0 1 1 0 0 0 12 1 3 1 3 0.5 1 0 1 1 0 0 0 13 1 3 1 4 0 1 0 0.5 1 0 0 0 14 1 4 1 4 0 0.75 0 0 1 0 0 0 15 1 4 1 6 0 0 0 0 0.75 0 0 0 16 1 5 1 5 1 0 0 1.5 0 0 0 0 17 1 5 1 1 1.5 0 0 2 0 0 0 0 18 1 6 1 1 2 0 0 2 0.75 0 0 0 19 1 6 1 2 2 0.75 0 2 1 0 0 0 20 1 7 1 2 1.25 1 0 2 1 0 0 0 21 1 7 1 3 1 1 0 1.25 1 0 0 0 3 2 1 1 6 0 0 0 0.75 0.75 0 1 100 0 4 2 1 1 5 0.5669872981077807 0 0 1 0.6240050006292597 0 1 100 0 5 2 1 1 4 0 0.4796557459309013 0 0.7885993441589132 1 0 1 100 0 6 2 1 1 3 0.5 0.5 0 1 1 0 1 100 0 7 2 2 1 3 1 0.3687936625999561 0 1.384668783648703 1 0 1 200 0 8 2 2 1 2 1.181504506896423 0.2257047743274072 0 2 1 0 1 200 0 9 2 2 1 1 1.382908262111485 0 0 2 0.8169872981077806 0 1 200 0 10 2 2 1 5 1 0 0 1.5 0.5 0 1 200 0 $EndPartitionedEntities $Nodes 28 57 1 57 0 7 0 1 1 0 0 0 0 8 0 1 2 1 0 0 0 9 0 1 3 1 1 0 0 10 0 1 4 0 1 0 0 11 0 1 5 2 0 0 0 12 0 1 6 2 1 0 1 8 0 3 7 8 9 0.25 0 0 0.5 0 0 0.75 0 0 1 9 0 0 1 10 0 2 10 11 1 0.25 0 1 0.5 0 1 11 0 1 12 1 0.75 0 1 12 0 2 13 14 0.75 1 0 0.5 1 0 1 13 0 1 15 0.25 1 0 1 14 0 1 16 0 0.75 0 1 15 0 2 17 18 0 0.5 0 0 0.25 0 1 16 0 2 19 20 1.25 0 0 1.5 0 0 1 17 0 1 21 1.75 0 0 1 18 0 3 22 23 24 2 0.25 0 2 0.5 0 2 0.75 0 1 19 0 0 1 20 0 3 25 26 27 1.75 1 0 1.5 1 0 1.25 1 0 1 21 0 0 2 3 0 7 32 34 29 33 36 37 42 0.5669872981077807 0.5 0 0.2917273223602594 0.4796557459309013 0 0.375 0.2165063509461096 0 0.6328802641586005 0.2125963991930914 0 0.1768489190752347 0.3103138265074931 0 0.155290190286839 0.625 0 0.1484804596480833 0.1459265064213862 0 2 4 0 3 30 31 39 0.788306988736042 0.3760593423202191 0 0.7885993441589132 0.6240050006292597 0 0.8169872981077806 0.1830127018922193 0 2 5 0 4 35 41 28 40 0.6010369744916511 0.7634332779177373 0 0.4115988944960767 0.6167789108779783 0 0.3640358958115698 0.7953881872687139 0 0.1749592066742909 0.8219022194693535 0 2 6 0 1 38 0.8169872981077806 0.8169872981077807 0 2 7 0 4 48 53 43 51 1.230459713512556 0.6057631425839536 0 1.183012701892219 0.8169872981077806 0 1.384668783648703 0.7890759238962054 0 1.181504506896423 0.3687936625999561 0 2 8 0 7 47 57 50 46 44 52 55 1.503068263777518 0.595241153545415 0 1.593641183204256 0.3999595549598592 0 1.776471564731608 0.6069708608369243 0 1.624527925880018 0.7886460481895354 0 1.382908262111485 0.2257047743274072 0 1.377368847071748 0.4319339332990199 0 1.816987298107781 0.8169872981077806 0 2 9 0 3 45 49 54 1.802323440804167 0.359190173416797 0 1.640976697371281 0.1946445340993805 0 1.816987298107781 0.1830127018922193 0 2 10 0 1 56 1.181507932725849 0.1815079327258486 0 $EndNodes $Elements 8 88 1 88 2 3 2 15 1 32 34 29 2 29 33 32 5 17 36 34 7 34 37 17 9 8 29 7 14 18 36 17 16 9 33 8 18 8 33 29 21 34 36 29 30 29 42 7 34 17 37 16 38 36 42 29 39 7 42 1 40 1 42 18 44 18 42 36 2 4 2 9 3 32 33 30 8 31 32 30 10 11 31 30 11 11 30 10 22 10 39 2 24 2 39 9 32 9 39 33 36 30 39 10 41 33 39 30 2 5 2 13 4 31 35 32 6 35 41 32 13 15 28 14 15 37 41 28 19 28 35 14 20 32 41 34 26 16 40 4 27 4 40 15 28 28 41 35 29 28 40 37 31 34 41 37 35 15 40 28 43 37 40 16 2 6 2 7 12 12 31 11 17 14 35 13 23 3 38 12 25 13 38 3 33 35 38 13 37 12 38 31 42 31 38 35 2 7 2 7 45 11 48 12 46 48 53 12 67 43 53 48 68 3 53 27 69 12 53 3 72 11 51 48 82 27 53 43 2 8 2 16 47 47 57 50 48 47 50 46 51 43 47 46 53 43 48 47 54 26 46 25 55 27 43 26 56 43 46 26 58 44 57 52 64 6 55 24 65 25 55 6 73 44 52 51 78 48 52 47 81 46 55 25 84 50 55 46 86 51 52 48 87 52 57 47 2 9 2 14 49 50 57 45 50 23 45 22 57 49 57 44 59 21 49 20 60 24 50 23 61 23 50 45 62 20 49 44 63 22 54 5 66 5 54 21 76 21 54 49 77 24 55 50 80 45 54 22 83 49 54 45 85 45 57 49 2 10 2 7 52 20 44 19 70 2 56 10 71 19 56 2 74 51 56 44 75 10 51 11 79 44 56 19 88 10 56 51 $EndElements $NodeData 1 "f_nodes" 1 0 3 1 1 57 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 32 1 34 1 29 1 33 1 36 1 35 1 41 1 37 1 28 1 40 1 42 1 39 1 30 1 31 1 38 1 48 1 53 1 44 1 56 1 51 1 52 1 47 1 57 1 50 1 46 1 45 1 43 1 49 1 54 1 55 1 $EndNodeData $ElementData 1 "f_cells" 1 0 3 1 1 88 1 1 2 1 5 1 6 1 7 1 9 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 34 1 35 1 38 1 39 1 40 1 43 1 44 1 3 1 4 1 8 1 10 1 11 1 12 1 22 1 23 1 24 1 25 1 33 1 36 1 37 1 41 1 42 1 45 1 46 1 52 1 68 1 69 1 70 1 71 1 72 1 73 1 74 1 75 1 79 1 86 1 88 1 47 1 48 1 49 1 50 1 51 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60 1 61 1 62 1 63 1 64 1 65 1 66 1 67 1 76 1 77 1 78 1 80 1 81 1 82 1 83 1 84 1 85 1 87 1 $EndElementData feenox-1.1/tests/two-squares-quad.geo0000644000175000017500000000050414773607165014657 00000000000000SetFactory("OpenCASCADE"); Rectangle(1) = {0, 0, 0, 1, 1, 0}; Rectangle(2) = {1, 0, 0, 1, 1, 0}; Coherence; Mesh.RecombineAll = 1; Transfinite Line "*" = 20+1; Transfinite Surface "*"; Physical Curve("left", 1) = {4}; Physical Curve("right", 2) = {6}; Physical Surface("soft", 3) = {1}; Physical Surface("hard", 4) = {2}; feenox-1.1/tests/bimetallic-strip.fee0000644000175000017500000000220414773607165014665 00000000000000# https://www.simscale.com/docs/validation-cases/bimetallic-strip-under-thermal-load/ READ_MESH $0.msh PROBLEM mechanical T0 = 300 T(x,y,z) = 400 # can we give the three properties underscore the name of the volume E_top = 200e9 nu_top = 0 alpha_top = 1e-5 E_bottom = 200e9 nu_bottom = 0 alpha_bottom = 2e-5 # or using the MATERIAL keyword, but then in the analytical solution # we have to give the right value of x,y,z to choose between the two # MATERIAL top E=200e9 nu=0 alpha=1e-5 # MATERIAL bottom E=200e9 nu=0 alpha=2e-5 # since E and nu are the same we could have given them as variables # E = 200e9 # nu = 0 BC left symmetry BC A fixed BC B w=0 SOLVE_PROBLEM l = 10 ta = 0.05 tb = 0.05 dx = l*(T(0,0,0)-T0)*(alpha_top+alpha_bottom)/2 K1 = 4 + 6*ta/tb + 4*(ta/tb)^2 + E_top/E_bottom*(ta/tb)^3 + E_bottom/E_top*(tb/ta) dz = 3*l^2*(alpha_bottom-alpha_top)*(T(0,0,0)-T0)*(ta+tb)/(tb^2*K1) sigma_bottom =(alpha_bottom-alpha_top)*(T(0,0,0)-T0)*(E_bottom)/K1 * (3*ta/tb + 2 - E_top/E_bottom*(ta/tb)^3) PRINT (u(l,0,0)-dx)^2+(w(l,0,0)-dz)^2+(1e-6*sigmax(0,0,-tb)-1e-6*sigma_bottom)^2 # WRITE_RESULTS FORMAT vtk FILE bimetallic-strip.vtk feenox-1.1/tests/slab2.geo0000644000175000017500000000034614773607165012444 00000000000000Point(1) = {0, 0, 0}; Point(2) = {1, 0, 0}; Line(1) = {1, 2}; Physical Point("left") = {1}; Physical Point("right") = {2}; Physical Line("bulk") = {1}; Transfinite Curve {1} = 5+1; // 6 nodes = 5 elements Mesh.ElementOrder = 2; feenox-1.1/tests/2dpwr-quarter.geo0000644000175000017500000001072514773607165014162 00000000000000/* BENCHMARK PROBLEM Identification: 11-A2 Source Situation ID.11 Date Submitted: June 1976 By: R. R. Lee (CE) D. A. Menely (Ontario Hydro) B. Micheelsen (Riso-Denmark) D. R. Vondy (ORNL) M. R. Wagner (KWU) W. Werner (GRS-Munich) Date Accepted: June 1977 By: H. L. Dodds, Jr. (U. of Tenn.) M. V. Gregory (SRL) Descriptive Title: Two-dimensional LWR Problem, also 2D IAEA Benchmark Problem Reduction of Source Situation 1. Two-groupo diffusion theory 2. Two-dimensional (x,y)-geometry */ // geometry Point(1) = {0, 0, 0}; Point(2) = {10, 0, 0}; Point(3) = {0, 10, 0}; Point(4) = {10, 10, 0}; Point(5) = {70, 0, 0}; Point(6) = {70, 10, 0}; Point(7) = {90, 10, 0}; Point(8) = {90, 0, 0}; Point(9) = {0, 70, 0}; Point(10) = {10, 70, 0}; Point(11) = {10, 90, 0}; Point(12) = {0, 90, 0}; Point(13) = {130, 0, 0}; Point(14) = {130, 30, 0}; Point(15) = {110, 30, 0}; Point(16) = {110, 70, 0}; Point(17) = {90, 70, 0}; Point(18) = {90, 90, 0}; Point(19) = {70, 90, 0}; Point(20) = {70, 70, 0}; Point(21) = {70, 110, 0}; Point(22) = {30, 110, 0}; Point(23) = {30, 130, 0}; Point(24) = {0, 130, 0}; Point(25) = {0, 150, 0}; Point(26) = {50, 150, 0}; Point(27) = {50, 130, 0}; Point(28) = {90, 130, 0}; Point(29) = {90, 110, 0}; Point(30) = {110, 110, 0}; Point(31) = {110, 90, 0}; Point(32) = {130, 90, 0}; Point(33) = {130, 50, 0}; Point(34) = {150, 50, 0}; Point(35) = {150, 0, 0}; Point(36) = {170, 0, 0}; Point(37) = {170, 70, 0}; Point(38) = {150, 70, 0}; Point(39) = {150, 110, 0}; Point(40) = {130, 110, 0}; Point(41) = {130, 130, 0}; Point(42) = {110, 130, 0}; Point(43) = {110, 150, 0}; Point(44) = {70, 150, 0}; Point(45) = {70, 170, 0}; Point(46) = {0, 170, 0}; Line(1) = {1, 2}; Line(2) = {2, 4}; Line(3) = {4, 3}; Line(4) = {1, 3}; Line(5) = {5, 8}; Line(6) = {8, 7}; Line(7) = {7, 6}; Line(8) = {6, 5}; Line(9) = {9, 10}; Line(10) = {10, 11}; Line(11) = {11, 12}; Line(12) = {12, 9}; Line(13) = {19, 20}; Line(14) = {20, 17}; Line(15) = {17, 18}; Line(16) = {18, 19}; Line(17) = {9, 3}; Line(18) = {2, 5}; Line(19) = {8, 13}; Line(20) = {13, 14}; Line(21) = {14, 15}; Line(22) = {15, 16}; Line(23) = {16, 17}; Line(24) = {19, 21}; Line(25) = {21, 22}; Line(26) = {22, 23}; Line(27) = {23, 24}; Line(28) = {24, 12}; Line(29) = {13, 35}; Line(30) = {35, 34}; Line(31) = {34, 33}; Line(32) = {33, 32}; Line(33) = {32, 31}; Line(34) = {31, 30}; Line(35) = {30, 29}; Line(36) = {29, 28}; Line(37) = {28, 27}; Line(38) = {27, 26}; Line(39) = {26, 25}; Line(40) = {25, 24}; Line(41) = {35, 36}; Line(42) = {36, 37}; Line(43) = {37, 38}; Line(44) = {38, 39}; Line(45) = {39, 40}; Line(46) = {40, 41}; Line(47) = {41, 42}; Line(48) = {42, 43}; Line(49) = {43, 44}; Line(50) = {44, 45}; Line(51) = {45, 46}; Line(52) = {46, 25}; Line Loop(53) = {29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -27, -26, -25, -24, -16, -15, -23, -22, -21, -20}; Plane Surface(54) = {53}; Line Loop(55) = {19, 20, 21, 22, 23, -14, -13, 24, 25, 26, 27, 28, -11, -10, -9, 17, -3, -2, 18, -8, -7, -6}; Plane Surface(56) = {55}; Line Loop(57) = {11, 12, 9, 10}; Plane Surface(58) = {57}; Line Loop(59) = {16, 13, 14, 15}; Plane Surface(60) = {59}; Line Loop(61) = {7, 8, 5, 6}; Plane Surface(62) = {61}; Line Loop(63) = {3, -4, 1, 2}; Plane Surface(64) = {63}; Line Loop(65) = {41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30}; Plane Surface(66) = {65}; // physical groups // surfaces (to be translated to materials in milonga) Physical Surface("fuel1",1) = {54}; Physical Surface("fuel2",2) = {56}; Physical Surface("fuel2rod",3) = {60, 58, 64, 62}; Physical Surface("reflector",4) = {66}; // lines (to be translated to boundary conditions in milonga) Physical Line("external",5) = {51, 50, 49, 48, 47, 46, 45, 44, 43, 42}; Physical Line("mirror",6) = {52, 40, 28, 12, 17, 4, 1, 18, 5, 19, 29, 41}; // colors and makeup Color Goldenrod {Surface {54};} Color LimeGreen {Surface {56};} Color Firebrick {Surface {60, 58, 64, 62};} Color BlueViolet {Surface {66};} Mesh.Light = 0; General.SmallAxes = 0; // meshing options Mesh.Algorithm = 6; Mesh.RecombineAll = 1; // recombine triangles to obtain quads Mesh.Optimize = 1; // Mesh.OptimizeNetgen = 1; Mesh.MeshSizeMin = 5; Mesh.MeshSizeMax = 5; feenox-1.1/tests/two-squares-bin-meshio.msh0000644000175000017500000000622214773607165015777 00000000000000$MeshFormat 4.1 1 8  $EndMeshFormat $PhysicalNames 4 1 1 "left" 1 2 "right" 2 3 "soft" 2 4 "hard" $EndPhysicalNames $Entities  $EndEntities $Nodes ????@@???? ?? ? ? @? ???????? ??m۶m[?$I$I???G$I?1 0 ??? $EndNodes $Elements                           $EndElements feenox-1.1/tests/rectangular_beam.geo0000644000175000017500000000061214773607165014730 00000000000000SetFactory("OpenCASCADE"); b = 0.05; h = 0.1; l = 1; Box(1) = {0,0,0, l, b, h}; Transfinite Curve {2, 4, 6, 8} = 2+1; Transfinite Curve {3, 1, 7, 5} = 4+1; Transfinite Curve {11, 12, 9, 10} = 20+1; Transfinite Surface "*"; Transfinite Volume "*"; Physical Surface("left") = {1}; Physical Volume("volume") = {1}; Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 1; feenox-1.1/tests/find_extrema2d.ref0000644000175000017500000000014514773607165014333 000000000000001.000 1.000 0.877 0.939 0.199 0.199 0.296 0.247 1.837 1.837 1.380 1.568 -0.558 -0.482 -0.170 -0.558 feenox-1.1/tests/qrng2d_sobol.fee0000644000175000017500000000006714773607165014021 00000000000000static_steps = 8 PRINT qrng2d_sobol(1) qrng2d_sobol(2) feenox-1.1/tests/thermal-slab-uniform-source.fee0000644000175000017500000000026614773607165016755 00000000000000READ_MESH slab.msh PROBLEM thermal DIMENSIONS 1 DIRICHLET_SCALING relative 1 BC left T=0 BC right T=0 k = 1 q = 1 SOLVE_PROBLEM DUMP K K_bc b b_bc FORMAT octave PRINT T_max-1/8 feenox-1.1/tests/wilson-2d.geo0000644000175000017500000000106214773607165013253 00000000000000SetFactory("OpenCASCADE"); Rectangle(1) = {0, 0, 0, 1.5, 1.5, 0}; Rectangle(2) = {1.5, 1.5, 0, 1.5, 1.5, 0}; Rectangle(3) = {0, 1.5, 0, 1.5, 1.5, 0}; Rectangle(4) = {1.5, 0, 0, 1.5, 1.5, 0}; Coherence; Physical Curve("left") = {4,10}; Physical Curve("right") = {6,12}; Physical Curve("bottom") = {1,11}; Physical Curve("top") = {9,7}; Physical Surface("quadrant1") = {1}; Physical Surface("quadrant2") = {2}; Physical Surface("quadrant3") = {3}; Physical Surface("quadrant4") = {4}; Transfinite Curve "*" = 8+1; Transfinite Surface "*"; Mesh.RecombineAll = 1; feenox-1.1/tests/la-p48-U-2-0-SL.fee0000644000175000017500000000036614773607165013447 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 48 PROBLEM neutron_sn 1D GROUPS 2 SN 8 READ_MESH $0.msh INCLUDE U-235.fee BC mirror mirror BC vacuum vacuum SOLVE_PROBLEM PRINT keff-0.992928 feenox-1.1/tests/lebesgue.sh0000755000175000017500000000045214773607165013075 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer1 single-arc.fee 1 "-1.6e-01" exitifwrong $? answer1 single-arc.fee 2 "-8.7e-03" exitifwrong $? feenox-1.1/tests/bc-groups1.fee0000644000175000017500000000025414773607165013406 00000000000000PROBLEM mechanical READ_MESH cube.msh E = 1 nu = 0.3 BC A fixed GROUPS left front bottom BC B p=1 GROUPS right back top SOLVE_PROBLEM WRITE_RESULTS FORMAT vtk feenox-1.1/tests/two-cubes.geo0000644000175000017500000000101114773607165013337 00000000000000SetFactory("OpenCASCADE"); a = 10; Box(1) = {-a,-a/2,-a/2,a,a,a}; Box(2) = {0,-a/2,-a/2,a,a,a}; Coherence; Mesh.MeshSizeMax = 3; Mesh.MeshSizeMin = 3; Mesh.Algorithm = 1; Mesh.Optimize = 1; // Mesh.OptimizeNetgen = 1; Transfinite Curve "*" = 5; Transfinite Surface "*"; Transfinite Volume "*"; Mesh.FlexibleTransfinite = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderLinear = 1; Physical Surface("left", 1) = {1}; Physical Surface("right", 2) = {7}; Physical Volume("hard", 3) = {1}; Physical Volume("soft", 4) = {2}; feenox-1.1/tests/statically_indeterminate_reaction.sh0000755000175000017500000000055014773607165020246 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkgmsh gmsh -v 0 -3 ${dir}/statically_indeterminate_reaction.geo || exit $? answerzero statically_indeterminate_reaction.fee 1e-2 exitifwrong $? feenox-1.1/tests/la-p71-URRa-2-1-SL.fee0000644000175000017500000000074014773607165014045 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 71 PROBLEM neutron_sn 1D GROUPS 2 SN 8 READ_MESH $0.msh INCLUDE URRa.fee BC mirror mirror BC vacuum vacuum SOLVE_PROBLEM PRINT keff-0.996172 rc = 9.491600 # PRINTF "%g %g %g %g" phi2(0.2*rc)/phi2(0) phi2(0.5*rc)/phi2(0) phi2(0.8*rc)/phi2(0) phi2(1.0*rc)/phi2(0) # PRINTF "%g %g %g %g" phi1(0.2*rc)/phi2(0) phi1(0.5*rc)/phi2(0) phi1(0.8*rc)/phi2(0) phi1(1.0*rc)/phi2(0) feenox-1.1/tests/convectionbc2.msh0000644000175000017500001570615214773607165014232 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 4 2 1 "Temp" 2 2 "Flux" 2 3 "Convection" 3 4 "Volume" $EndPhysicalNames $Entities 8 12 6 1 1 0 0 10 0 2 0 0 0 0 3 0 1 10 0 4 0 1 0 0 5 10 0 10 0 6 10 0 0 0 7 10 1 10 0 8 10 1 0 0 1 0 0 0 0 0 0 0 2 2 -1 2 0 0 0 0 0 0 0 2 1 -3 3 0 0 0 0 0 0 0 2 4 -3 4 0 0 0 0 0 0 0 2 2 -4 5 0 0 0 0 0 0 0 2 6 -5 6 0 0 0 0 0 0 0 2 5 -7 7 0 0 0 0 0 0 0 2 8 -7 8 0 0 0 0 0 0 0 2 6 -8 9 0 0 0 0 0 0 0 2 2 -6 10 0 0 0 0 0 0 0 2 1 -5 11 0 0 0 0 0 0 0 2 4 -8 12 0 0 0 0 0 0 0 2 3 -7 1 0 0 0 0 0 0 0 4 1 2 -3 -4 2 0 0 0 0 0 0 0 4 5 6 -7 -8 3 0 0 0 0 0 0 0 4 9 5 -10 -1 4 0 1 0 10 1 10 1 3 4 11 7 -12 -3 5 0 0 0 10 1 0 1 1 4 4 11 -8 -9 6 0 0 10 10 1 10 1 2 4 2 12 -6 -10 1 0 0 0 10 1 10 1 4 6 1 2 3 4 5 6 $EndEntities $Nodes 12 38154 1 38154 0 1 0 1 1 0 0 10 0 2 0 1 2 0 0 0 0 3 0 1 3 0 1 10 0 4 0 1 4 0 1 0 0 5 0 1 5 10 0 10 0 6 0 1 6 10 0 0 0 7 0 1 7 10 1 10 0 8 0 1 8 10 1 0 2 4 0 6237 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 0 1 0.2777777777777777 0 1 0.5555555555555556 0 1 0.8333333333333334 0 1 1.111111111111111 0 1 1.388888888888889 0 1 1.666666666666666 0 1 1.944444444444443 0 1 2.222222222222221 0 1 2.499999999999999 0 1 2.777777777777775 0 1 3.055555555555553 0 1 3.33333333333333 0 1 3.611111111111108 0 1 3.888888888888885 0 1 4.166666666666663 0 1 4.44444444444444 0 1 4.722222222222217 0 1 4.999999999999995 0 1 5.277777777777772 0 1 5.555555555555549 0 1 5.833333333333327 0 1 6.111111111111104 0 1 6.388888888888882 0 1 6.666666666666659 0 1 6.944444444444437 0 1 7.222222222222214 0 1 7.499999999999991 0 1 7.777777777777769 0 1 8.055555555555546 0 1 8.333333333333323 0 1 8.6111111111111 0 1 8.888888888888879 0 1 9.166666666666657 0 1 9.444444444444438 0 1 9.72222222222222 10 1 0.2777777777777777 10 1 0.5555555555555556 10 1 0.8333333333333334 10 1 1.111111111111111 10 1 1.388888888888889 10 1 1.666666666666666 10 1 1.944444444444443 10 1 2.222222222222221 10 1 2.499999999999999 10 1 2.777777777777775 10 1 3.055555555555553 10 1 3.33333333333333 10 1 3.611111111111108 10 1 3.888888888888885 10 1 4.166666666666663 10 1 4.44444444444444 10 1 4.722222222222217 10 1 4.999999999999995 10 1 5.277777777777772 10 1 5.555555555555549 10 1 5.833333333333327 10 1 6.111111111111104 10 1 6.388888888888882 10 1 6.666666666666659 10 1 6.944444444444437 10 1 7.222222222222214 10 1 7.499999999999991 10 1 7.777777777777769 10 1 8.055555555555546 10 1 8.333333333333323 10 1 8.6111111111111 10 1 8.888888888888879 10 1 9.166666666666657 10 1 9.444444444444438 10 1 9.72222222222222 0.2777777777777777 1 0 0.5555555555555556 1 0 0.8333333333333334 1 0 1.111111111111111 1 0 1.388888888888889 1 0 1.666666666666666 1 0 1.944444444444443 1 0 2.222222222222221 1 0 2.499999999999999 1 0 2.777777777777775 1 0 3.055555555555553 1 0 3.33333333333333 1 0 3.611111111111108 1 0 3.888888888888885 1 0 4.166666666666663 1 0 4.44444444444444 1 0 4.722222222222217 1 0 4.999999999999995 1 0 5.277777777777772 1 0 5.555555555555549 1 0 5.833333333333327 1 0 6.111111111111104 1 0 6.388888888888882 1 0 6.666666666666659 1 0 6.944444444444437 1 0 7.222222222222214 1 0 7.499999999999991 1 0 7.777777777777769 1 0 8.055555555555546 1 0 8.333333333333323 1 0 8.6111111111111 1 0 8.888888888888879 1 0 9.166666666666657 1 0 9.444444444444438 1 0 9.72222222222222 1 0 0.2777777777777777 1 10 0.5555555555555556 1 10 0.8333333333333334 1 10 1.111111111111111 1 10 1.388888888888889 1 10 1.666666666666666 1 10 1.944444444444443 1 10 2.222222222222221 1 10 2.499999999999999 1 10 2.777777777777775 1 10 3.055555555555553 1 10 3.33333333333333 1 10 3.611111111111108 1 10 3.888888888888885 1 10 4.166666666666663 1 10 4.44444444444444 1 10 4.722222222222217 1 10 4.999999999999995 1 10 5.277777777777772 1 10 5.555555555555549 1 10 5.833333333333327 1 10 6.111111111111104 1 10 6.388888888888882 1 10 6.666666666666659 1 10 6.944444444444437 1 10 7.222222222222214 1 10 7.499999999999991 1 10 7.777777777777769 1 10 8.055555555555546 1 10 8.333333333333323 1 10 8.6111111111111 1 10 8.888888888888879 1 10 9.166666666666657 1 10 9.444444444444438 1 10 9.72222222222222 1 10 0.2352435652847727 1 5.138888888888882 5.138888888888884 1 9.759437387837657 5.143586164605485 1 0.2185584744500771 9.743738911182573 1 5.157118213105959 0.2469135467042241 1 3.74835088128526 9.72136613148775 1 3.745936434230825 3.749999999999996 1 9.759437387837657 3.749999999999996 1 0.2405626121623436 6.527777777777783 1 9.759437387837632 0.2405626121623432 1 6.527777777777771 6.527777777777771 1 0.2405626121623432 9.759437387837657 1 6.527777777777771 2.632312702885713 1 0.23676584940317 9.76415029362817 1 2.642500529207705 2.638888888888861 1 9.759437387837551 0.2578942833171624 1 2.638493149307809 7.638888888888879 1 9.759437387837661 0.2198410795312892 1 7.644972448280944 7.643586164605535 1 0.2185584744501665 9.735130788432256 1 7.616562702085884 0.2474069315981424 1 1.520386322198025 9.750308223627425 1 1.509505465652448 1.527777777777789 1 9.759437387837561 9.738580559635365 1 8.510861926919539 1.800858279839017 1 0.2185584744500864 8.472222222222168 1 9.759437387837686 0.2638891336615845 1 8.510861926919345 8.473934057395946 1 0.2350937807868451 0.9705103870485723 1 0.2350937807868264 9.753152113081264 1 9.030830361524643 9.759437387837655 1 4.305555555555552 4.305555555555575 1 9.759437387837654 9.744367319487608 1 5.98346506134929 5.973934057395921 1 0.2350937807868175 0.2482471571959377 1 5.978870071270716 0.2640071647305091 1 4.269090841770645 7.083333333333324 1 9.759437387837657 9.752168610367535 1 3.180855243690468 4.305555555555554 1 0.2405626121623432 3.194444444444426 1 9.759437387837592 5.972222222222227 1 9.759437387837581 3.194444444444442 1 0.2405626121623436 0.259330304708296 1 3.2274686930598 9.734719409340375 1 7.099640020054338 9.027777777777713 1 9.759437387837675 9.02777777777777 1 0.2405626121623447 0.2415524563496551 1 2.079779023269111 0.2803698011060558 1 7.095490439419026 0.2518316901181952 1 9.032051395023139 0.2065892093676355 1 0.9684888182022822 7.083333333333323 1 0.2405626121623436 9.749617910996305 1 2.11141751389196 2.083333333333353 1 9.759437387837608 9.793410790632638 1 0.9684888182023231 0.9722222222222188 1 9.75943738783749 9.582055531137254 1 0.214745462797982 9.748417431266377 1 9.557826216928541 0.2515825687335569 1 9.557826216928422 0.4179444688629204 1 0.214745462797927 7.361111111111109 1 9.759437387837657 7.222222222222233 1 9.518874775675314 6.944444444444454 1 9.518874775675309 7.083333333333353 1 9.278312163512972 6.805555555555577 1 9.278312163512938 6.944444444444475 1 9.037749551350615 7.22222222222225 1 9.037749551350629 7.083333333333371 1 8.797186939188281 6.805555555555596 1 8.797186939188268 6.944444444444493 1 8.556624327025926 6.666666666666715 1 8.55662432702592 6.805555555555611 1 8.316061714863579 6.527777777777833 1 8.316061714863569 6.666666666666734 1 8.075499102701237 6.388888888888958 1 8.075499102701219 6.527777777777859 1 7.834936490538883 6.250000000000083 1 7.834936490538866 6.388888888888983 1 7.594373878376534 6.111111111111208 1 7.594373878376516 6.250000000000107 1 7.353811266214181 5.972222222222319 1 7.35381126621416 6.11111111111123 1 7.113248654051834 5.833333333333448 1 7.113248654051816 5.972222222222351 1 6.872686041889485 5.694444444444573 1 6.872686041889464 5.833333333333475 1 6.632123429727134 5.555555555555697 1 6.632123429727118 5.694444444444598 1 6.391560817564785 5.416666666666822 1 6.39156081756477 5.555555555555722 1 6.150998205402434 5.277777777777946 1 6.15099820540242 5.416666666666847 1 5.910435593240081 5.13888888888907 1 5.910435593240067 5.277777777777972 1 5.669872981077729 5.000000000000198 1 5.669872981077714 5.138888888889099 1 5.429310368915379 4.861111111111322 1 5.429310368915362 5.000000000000224 1 5.188747756753028 4.861111111111294 1 5.910435593240043 4.722222222222447 1 5.188747756753011 5.277777777777997 1 5.188747756753048 4.861111111111346 1 4.948185144590676 4.583333333333571 1 4.948185144590659 4.722222222222475 1 4.707622532428324 4.444444444444696 1 4.707622532428308 4.305555555555793 1 4.948185144590644 4.583333333333599 1 4.467059920265973 4.30555555555582 1 4.467059920265958 5.833333333333496 1 6.150998205402452 4.444444444444722 1 4.226497308103622 4.7222222222225 1 4.226497308103636 4.166666666666945 1 4.226497308103605 5.416666666666785 1 6.872686041889445 4.583333333333623 1 3.985934695941285 4.8611111111114 1 3.9859346959413 6.388888888888998 1 7.113248654051842 4.722222222222526 1 3.745372083778949 5.000000000000302 1 3.745372083778965 4.861111111111428 1 3.504809471616612 5.138888888889205 1 3.504809471616629 5.000000000000331 1 3.264246859454277 5.277777777778108 1 3.264246859454293 4.722222222222554 1 3.26424685945426 5.416666666666982 1 3.504809471616644 5.555555555555885 1 3.264246859454309 5.69444444444476 1 3.504809471616664 5.833333333333663 1 3.264246859454327 5.972222222222536 1 3.504809471616682 6.111111111111441 1 3.264246859454344 6.250000000000314 1 3.504809471616694 6.388888888889218 1 3.264246859454359 6.527777777778089 1 3.504809471616709 6.666666666666995 1 3.264246859454379 6.805555555555866 1 3.50480947161673 6.944444444444501 1 8.075499102701253 6.944444444444773 1 3.2642468594544 7.083333333333645 1 3.504809471616753 6.944444444444729 1 3.745372083779084 5.833333333333412 1 7.594373878376484 5.416666666667011 1 3.023684247291951 6.805555555555905 1 3.023684247292046 7.083333333333681 1 3.023684247292069 7.222222222222516 1 3.745372083779105 7.083333333333599 1 3.985934695941439 7.361111111111387 1 3.985934695941459 7.222222222222479 1 4.226497308103792 7.361111111111153 1 8.797186939188286 6.944444444444814 1 2.783121635129716 7.222222222222588 1 2.783121635129738 7.500000000000259 1 4.226497308103815 7.361111111111352 1 4.467059920266147 7.083333333333724 1 2.542559022967385 7.361111111111495 1 2.542559022967406 7.638888888889166 1 3.985934695941483 7.638888888889132 1 4.467059920266167 7.500000000000225 1 4.7076225324285 7.777777777778002 1 4.70762253242852 7.638888888889098 1 4.948185144590854 7.222222222222618 1 2.301996410805043 6.94444444444483 1 2.301996410805004 7.500000000000405 1 2.301996410805057 7.63888888888927 1 2.542559022967424 7.777777777778184 1 2.301996410805078 7.222222222222443 1 4.707622532428475 7.916666666666899 1 4.948185144590887 7.777777777777974 1 5.18874775675321 7.916666666667053 1 2.542559022967449 6.25000000000006 1 8.316061714863554 8.055555555555761 1 5.188747756753253 7.91666666666684 1 5.429310368915569 7.638888888889067 1 5.429310368915543 7.777777777777938 1 5.669872981077894 7.361111111111503 1 2.061433798642672 6.111111111111395 1 3.745372083779047 8.05555555555596 1 2.301996410805115 8.055555555555705 1 5.669872981077917 7.916666666666801 1 5.910435593240246 8.055555555555829 1 4.70762253242857 7.500000000000161 1 5.669872981077875 8.194444444444834 1 2.542559022967469 8.194444444444578 1 5.910435593240269 8.055555555555674 1 6.150998205402599 8.333333333333737 1 2.30199641080514 8.194444444444859 1 2.06143379864278 8.333333333333453 1 6.150998205402627 8.194444444444535 1 6.391560817564958 7.91666666666675 1 6.391560817564933 8.055555555555621 1 6.632123429727288 8.333333333333401 1 6.632123429727316 8.194444444444491 1 6.872686041889644 7.916666666666714 1 6.872686041889622 8.055555555555584 1 7.113248654051969 8.333333333333364 1 7.113248654051995 8.194444444444454 1 7.353811266214318 8.472222222222349 1 5.910435593240288 8.472222222222644 1 2.061433798642808 8.333333333333762 1 1.820871186480449 8.472222222222607 1 2.542559022967492 8.333333333333705 1 2.783121635129824 8.472222222222229 1 7.353811266214344 8.333333333333329 1 7.594373878376676 7.777777777777809 1 7.113248654051949 8.611111111111102 1 7.594373878376691 8.472222222222209 1 7.83493649053903 8.19444444444443 1 7.834936490539019 8.333333333333307 1 8.075499102701368 8.611111111111484 1 2.783121635129842 8.472222222222582 1 3.023684247292176 8.611111111111086 1 8.075499102701384 8.472222222222182 1 8.316061714863723 7.638888888888935 1 6.872686041889606 8.611111111111228 1 6.150998205402644 5.972222222222567 1 3.023684247291979 6.944444444444678 1 4.22649730810377 5.000000000000252 1 4.707622532428346 4.444444444444746 1 3.745372083778931 5.138888888889046 1 6.391560817564759 5.138888888889184 1 3.985934695941324 6.111111111111249 1 6.632123429727152 7.777777777778152 1 2.783121635129778 5.555555555555745 1 5.669872981077747 4.027777777778043 1 4.467059920265942 3.888888888889167 1 4.226497308103588 3.750000000000265 1 4.467059920265923 3.61111111111139 1 4.226497308103575 3.472222222222489 1 4.467059920265911 3.333333333333614 1 4.226497308103561 3.194444444444711 1 4.467059920265896 3.055555555555836 1 4.226497308103545 3.194444444444738 1 3.98593469594121 2.91666666666696 1 3.985934695941193 3.055555555555862 1 3.745372083778859 2.916666666666933 1 4.467059920265879 3.055555555555808 1 4.707622532428232 2.77777777777803 1 4.707622532428216 2.916666666666905 1 4.948185144590568 2.777777777778084 1 3.745372083778843 2.916666666666988 1 3.504809471616506 2.638888888889127 1 4.948185144590553 2.777777777778 1 5.188747756752903 2.638888888889208 1 3.504809471616491 2.777777777778112 1 3.264246859454154 2.500000000000225 1 5.188747756752888 2.638888888889099 1 5.42931036891524 2.500000000000331 1 3.26424685945414 2.638888888889236 1 3.023684247291803 2.361111111111426 1 3.504809471616481 2.361111111111345 1 4.948185144590537 2.361111111111452 1 3.023684247291791 2.500000000000359 1 2.783121635129452 2.777777777778137 1 2.783121635129467 2.638888888889261 1 2.542559022967115 2.91666666666704 1 2.542559022967131 2.361111111111485 1 2.542559022967102 2.361111111111322 1 5.429310368915222 2.500000000000197 1 5.669872981077575 2.777777777777976 1 5.66987298107759 2.638888888889075 1 5.910435593239927 2.361111111111296 1 5.910435593239911 2.500000000000173 1 6.15099820540226 2.777777777777952 1 6.150998205402278 2.638888888889049 1 6.391560817564613 2.916666666666828 1 6.391560817564629 2.777777777777924 1 6.632123429726967 3.055555555555698 1 6.632123429726983 2.916666666666794 1 6.872686041889318 2.63888888888902 1 6.872686041889302 2.777777777777894 1 7.113248654051652 3.055555555555671 1 7.113248654051668 2.916666666666773 1 7.353811266214004 3.19444444444456 1 7.353811266214021 2.638888888888993 1 7.353811266213985 2.777777777777874 1 7.594373878376341 2.500000000000096 1 7.594373878376327 2.222222222222396 1 6.150998205402244 2.777777777778164 1 2.301996410804779 3.055555555555942 1 2.301996410804795 2.638888888888971 1 7.834936490538679 2.361111111111193 1 7.834936490538665 2.222222222222316 1 7.59437387837631 2.083333333333415 1 7.834936490538646 2.916666666667068 1 2.061433798642444 3.194444444444845 1 2.06143379864246 1.944444444444545 1 7.594373878376293 3.194444444444605 1 6.391560817564643 1.805555555555639 1 7.834936490538628 1.944444444444509 1 8.075499102700981 3.194444444444817 1 2.542559022967147 3.05555555555597 1 1.820871186480108 2.777777777778193 1 1.820871186480092 3.333333333333747 1 1.820871186480123 1.666666666666768 1 7.594373878376274 1.666666666666734 1 8.075499102700965 1.805555555555604 1 8.316061714863313 3.194444444444766 1 3.504809471616519 2.916666666667096 1 1.580308574317757 2.63888888888932 1 1.58030857431774 1.52777777777783 1 8.316061714863295 1.805555555555669 1 7.353811266213938 1.527777777777897 1 7.353811266213919 1.666666666666705 1 8.556624327025645 1.944444444444481 1 8.556624327025661 1.388888888888933 1 8.556624327025627 1.388888888888991 1 7.594373878376253 2.916666666666748 1 7.834936490538691 2.777777777777846 1 8.075499102701031 3.055555555555622 1 8.075499102701038 2.916666666666719 1 8.316061714863377 3.194444444444496 1 8.316061714863388 3.055555555555592 1 8.556624327025734 3.333333333333369 1 8.556624327025744 3.472222222222272 1 8.316061714863398 3.611111111111151 1 8.556624327025753 3.750000000000045 1 8.316061714863412 3.888888888888926 1 8.556624327025766 4.027777777777821 1 8.316061714863425 4.1666666666667 1 8.556624327025776 4.305555555555601 1 8.316061714863443 4.166666666666716 1 8.075499102701086 4.444444444444477 1 8.556624327025816 4.444444444444497 1 8.075499102701102 4.305555555555613 1 7.83493649053875 4.58333333333339 1 7.834936490538756 4.444444444444509 1 7.594373878376412 4.722222222222278 1 8.075499102701109 2.638888888889181 1 3.985934695941181 3.194444444444682 1 4.948185144590584 2.083333333333519 1 5.910435593239897 1.94444444444462 1 6.150998205402235 1.805555555555741 1 5.910435593239886 1.666666666666843 1 6.150998205402225 1.527777777777964 1 5.910435593239876 1.388888888889066 1 6.150998205402215 1.666666666666862 1 5.669872981077538 1.388888888889084 1 5.669872981077526 1.527777777777984 1 5.429310368915189 3.472222222222622 1 2.061433798642475 3.611111111111523 1 1.820871186480139 3.7500000000004 1 2.06143379864249 3.8888888888893 1 1.820871186480153 4.027777777778177 1 2.061433798642505 4.166666666667078 1 1.820871186480168 4.305555555555955 1 2.06143379864252 4.444444444444855 1 1.820871186480184 4.027777777778201 1 1.580308574317816 4.583333333333732 1 2.061433798642534 4.722222222222632 1 1.820871186480197 3.888888888889277 1 2.301996410804841 4.583333333333755 1 1.580308574317846 4.861111111111533 1 1.58030857431786 5.000000000000409 1 1.82087118648021 5.138888888889309 1 1.580308574317873 5.277777777778187 1 1.820871186480219 5.416666666667086 1 1.580308574317884 5.555555555555967 1 1.820871186480231 5.694444444444863 1 1.580308574317894 5.555555555555983 1 1.339745962155545 5.83333333333376 1 1.339745962155554 4.722222222222655 1 1.339745962155511 5.972222222222641 1 1.580308574317901 6.111111111111538 1 1.339745962155558 3.472222222222649 1 1.580308574317787 4.583333333333542 1 5.429310368915338 8.611111111111139 1 7.113248654052013 3.333333333333475 1 6.632123429726996 3.47222222222238 1 6.391560817564656 3.611111111111255 1 6.632123429727008 3.750000000000155 1 6.391560817564672 3.611111111111279 1 6.150998205402318 3.888888888889034 1 6.632123429727018 6.527777777777821 1 8.79718693918824 6.66666666666674 1 7.594373878376542 8.611111111111555 1 1.820871186480474 8.472222222222676 1 1.580308574318118 8.194444444444882 1 1.580308574318091 1.250000000000054 1 8.316061714863274 8.750000000000128 1 5.910435593240301 8.333333333333794 1 1.33974596215577 8.055555555556012 1 1.339745962155761 8.611111111111597 1 1.339745962155785 2.777777777778223 1 1.339745962155404 2.500000000000445 1 1.339745962155388 2.361111111111542 1 1.580308574317724 2.222222222222668 1 1.339745962155372 2.083333333333766 1 1.580308574317708 1.944444444444891 1 1.339745962155357 1.805555555555989 1 1.580308574317692 1.666666666667114 1 1.339745962155341 1.527777777778212 1 1.580308574317676 1.388888888889337 1 1.339745962155325 1.666666666667087 1 1.820871186480028 1.38888888888931 1 1.820871186480012 1.527777777778185 1 2.061433798642363 8.75000000000038 1 2.542559022967515 1.250000000000408 1 2.061433798642348 1.388888888889283 1 2.301996410804699 1.250000000000206 1 5.429310368915175 1.388888888889108 1 5.188747756752838 1.250000000000122 1 7.353811266213892 8.749999999999961 1 8.316061714863741 8.611111111111065 1 8.55662432702607 8.750000000000355 1 3.023684247292194 8.611111111111457 1 3.264246859454524 1.805555555555589 1 8.797186939187995 2.083333333333359 1 8.797186939188006 3.472222222222236 1 8.797186939188105 4.027777777777812 1 8.797186939188174 6.250000000000419 1 1.580308574317906 6.388888888889314 1 1.339745962155568 6.111111111111521 1 1.820871186480247 4.861111111111167 1 7.834936490538761 5.000000000000052 1 8.07549910270111 4.861111111111459 1 3.023684247291924 5.138888888889287 1 2.061433798642559 8.333333333333684 1 3.264246859454512 8.472222222222555 1 3.504809471616863 8.750000000000336 1 3.504809471616873 8.611111111111434 1 3.745372083779213 4.583333333333682 1 3.023684247291907 3.888888888889053 1 6.150998205402332 3.750000000000176 1 5.910435593239983 4.166666666666741 1 7.594373878376396 8.3333333333333 1 8.556624327026039 8.055555555555532 1 8.075499102701357 8.888888888888843 1 8.55662432702608 8.749999999999936 1 8.797186939188414 1.11111111111115 1 8.556624327025606 1.250000000000038 1 8.797186939187972 8.888888888888866 1 8.075499102701404 1.805555555555719 1 6.391560817564571 7.500000000000034 1 7.113248654051938 7.361111111111161 1 6.872686041889591 8.888888888889008 1 6.150998205402658 1.111111111111507 1 2.301996410804684 1.250000000000381 1 2.542559022967033 8.888888888889207 1 3.745372083779226 8.750000000000309 1 3.985934695941559 1.111111111111307 1 5.669872981077513 1.111111111111533 1 1.820871186479997 1.111111111111213 1 7.594373878376224 2.083333333333793 1 1.099183349993021 8.19444444444491 1 1.099183349993425 7.916666666667133 1 1.099183349993418 6.250000000000439 1 1.099183349993209 6.527777777778216 1 1.099183349993228 6.666666666667091 1 1.339745962155583 6.805555555555991 1 1.099183349993248 5.69444444444488 1 1.099183349993203 1.527777777778239 1 1.099183349992989 1.250000000000462 1 1.099183349992974 1.111111111111331 1 5.188747756752822 1.250000000000231 1 4.948185144590486 6.944444444444869 1 1.3397459621556 7.083333333333768 1 1.099183349993267 7.916666666666652 1 7.834936490539011 6.666666666667037 1 2.783121635129691 1.52777777777801 1 4.9481851445905 1.388888888889132 1 4.707622532428151 1.111111111111355 1 4.707622532428136 1.250000000000256 1 4.467059920265801 1.527777777778033 1 4.467059920265816 1.388888888889158 1 4.226497308103466 1.666666666666935 1 4.226497308103482 1.52777777777806 1 3.98593469594113 1.250000000000282 1 3.985934695941115 1.388888888889183 1 3.745372083778778 1.111111111111406 1 3.745372083778765 1.250000000000308 1 3.504809471616423 1.527777777778084 1 3.504809471616441 7.361111111111288 1 5.429310368915524 7.222222222222383 1 5.669872981077857 7.083333333333511 1 5.429310368915506 6.944444444444606 1 5.669872981077838 6.805555555555734 1 5.429310368915486 7.083333333333479 1 5.910435593240192 6.805555555555703 1 5.910435593240175 3.75000000000029 1 3.985934695941232 8.472222222222536 1 3.98593469594155 8.611111111111416 1 4.226497308103901 8.888888888889195 1 4.226497308103903 8.750000000000307 1 4.467059920266249 7.50000000000003 1 9.037749551350638 1.527777777778152 1 2.542559022967052 7.361111111111425 1 3.504809471616771 5.416666666667101 1 1.099183349993198 3.611111111111173 1 8.075499102701061 6.944444444444574 1 6.150998205402527 8.611111111111237 1 5.669872981077949 8.888888888889015 1 5.669872981077946 8.750000000000147 1 5.42931036891561 3.750000000000139 1 6.872686041889358 4.027777777777916 1 6.872686041889365 4.16666666666681 1 6.632123429727026 4.305555555555692 1 6.872686041889368 1.38888888888903 1 7.113248654051562 1.111111111111255 1 7.113248654051537 7.77777777777822 1 1.33974596215571 7.777777777777769 1 8.075499102701347 7.638888888888875 1 7.834936490539012 9.02262988953623 1 4.470032054928435 0.9722222222222708 1 8.316061714863242 2.638888888889348 1 1.099183349993053 2.916666666667125 1 1.099183349993068 8.05555555555604 1 0.8586207378310667 5.555555555555996 1 0.8586207378308583 1.388888888889364 1 0.8586207378306379 0.9722222222225052 1 3.985934695941101 0.9722222222225363 1 3.504809471616405 9.027777777778116 1 3.504809471616895 9.027777777777914 1 5.429310368915599 0.9722222222222545 1 8.797186939187947 9.027777777777711 1 8.797186939188443 0.9782066921824973 1 2.546014158309321 8.333333333333842 1 0.858620737831068 7.777777777778262 1 0.8586207378310596 5.277777777778219 1 0.8586207378308515 1.111111111111587 1 0.8586207378306225 0.9722222222226846 1 1.099183349992958 1.111111111111137 1 9.037749551350306 1.944444444444464 1 9.037749551350339 2.222222222222231 1 9.037749551350352 6.805555555555964 1 1.580308574317932 1.805555555555837 1 3.985934695941146 1.944444444444712 1 4.226497308103498 5.138888888888944 1 7.834936490538768 5.277777777777833 1 8.075499102701116 5.138888888888939 1 8.316061714863455 5.000000000000059 1 7.59437387837642 5.416666666666718 1 8.316061714863466 5.277777777777817 1 8.556624327025805 5.555555555555593 1 8.556624327025819 5.416666666666697 1 8.797186939188162 5.694444444444473 1 8.79718693918816 5.555555555555593 1 9.037749551350494 5.277777777777816 1 9.037749551350519 5.833333333333369 1 9.037749551350483 1.112108522771458 1 2.783697491019751 2.22222222222264 1 1.82087118648006 8.194444444444771 1 3.504809471616844 4.722222222222585 1 2.783121635129572 4.027777777777953 1 5.910435593239994 3.888888888889076 1 5.669872981077644 3.611111111111299 1 5.669872981077633 3.750000000000199 1 5.429310368915297 4.444444444444809 1 2.783121635129556 4.305555555555904 1 3.02368424729189 4.444444444444583 1 6.632123429727029 4.583333333333471 1 6.872686041889379 2.777777777777812 1 8.556624327025705 2.916666666666677 1 8.797186939188064 7.222222222222346 1 6.150998205402548 6.666666666666793 1 6.150998205402506 6.527777777777924 1 5.910435593240152 6.805555555555661 1 6.391560817564859 1.250000000000164 1 6.872686041889208 0.9722222222223849 1 6.872686041889179 8.888030907515544 1 4.708117888205615 7.222222222222252 1 7.113248654051931 7.638888888888923 1 8.797186939188304 7.777777777777784 1 9.03774955135064 8.888888888888799 1 9.037749551350769 8.611111111111025 1 9.037749551350743 9.156767953098523 1 4.710443760479706 0.8404814502302409 1 2.78724860234377 0.8333333333338091 1 0.8586207378306072 9.166666666666805 1 5.669872981077916 9.146572228791335 1 4.241797668143565 6.666666666667123 1 0.858620737830895 2.777777777778248 1 0.8673158656824166 3.055555555556026 1 0.8600699258060148 0.855926756044515 1 2.313582824012514 0.8333333333334726 1 7.113248654051509 9.166666666666563 1 9.037749551350815 0.8333333333333686 1 9.0377495513503 9.166666666666625 1 8.556624327026118 5.41666666666673 1 9.278312163512849 8.610968114215812 1 4.707705091724773 5.138888888888953 1 9.278312163512879 5.000000000000034 1 9.037749551350547 4.861111111111171 1 9.278312163512918 4.722222222222255 1 9.037749551350583 7.083333333333739 1 1.580308574317954 8.750000000000098 1 6.391560817564998 9.02777777777789 1 6.391560817565014 9.166666666666794 1 6.15099820540269 5.277777777777839 1 7.594373878376428 7.361111111111122 1 7.353811266214295 4.583333333333398 1 9.278312163512945 5.694444444444494 1 8.316061714863492 8.055555555555909 1 3.26424685945449 8.888888888888967 1 6.632123429727347 9.166666666666753 1 6.632123429727374 2.083333333333615 1 3.985934695941162 2.222222222222493 1 4.226497308103512 3.194444444444536 1 7.834936490538703 1.805555555555765 1 5.429310368915197 3.611111111111366 1 4.707622532428263 1.94444444444474 1 3.74537208377881 2.222222222222253 1 8.55662432702567 5.833333333333788 1 0.8586207378308399 5.000000000000035 1 8.556624327025812 3.194444444444902 1 1.099424881322297 3.333333333333804 1 0.8589025243814958 3.472222222222679 1 1.099270569639759 3.611111111111581 1 0.8586822388636643 5.555555555555862 1 3.745372083779003 1.666666666667141 1 0.8586207378306533 6.944444444444635 1 5.188747756753152 6.666666666666858 1 5.188747756753136 6.805555555555756 1 4.948185144590799 6.527777777777979 1 4.948185144590789 6.388888888889086 1 5.188747756753123 6.250000000000203 1 4.948185144590778 6.388888888889098 1 4.707622532428441 6.111111111111321 1 4.707622532428433 6.25000000000021 1 4.467059920266093 5.972222222222447 1 4.467059920266076 5.972222222222429 1 4.948185144590774 3.750000000000456 1 1.09920813677304 3.888888888889358 1 0.8586351191329161 4.027777777778232 1 1.099189878006806 4.166666666667133 1 0.8586242227167642 2.493423813997238 1 0.8725618164168913 4.166666666667031 1 2.783121635129538 4.027777777778129 1 3.023684247291872 4.166666666666999 1 3.264246859454225 3.888888888889222 1 3.264246859454206 3.750000000000349 1 3.023684247291858 4.027777777778093 1 3.504809471616558 0.972222222222479 1 4.467059920265787 0.8333333333335784 1 4.707622532428124 1.80555555555596 1 2.06143379864238 1.388888888889209 1 3.264246859454086 1.666666666666984 1 3.264246859454103 4.027777777777975 1 5.429310368915306 2.083333333333587 1 4.467059920265845 7.916666666666991 1 3.504809471616817 5.138888888888954 1 7.353811266214085 8.055555555555863 1 3.745372083779174 3.472222222222422 1 5.429310368915282 9.027777777777825 1 6.872686041889701 8.333333333333634 1 4.226497308103886 1.666666666666696 1 9.037749551350338 1.805555555555574 1 9.278312163512679 1.5277777777778 1 9.278312163512679 3.750000000000318 1 3.504809471616539 5.000000000000361 1 2.783121635129589 4.861111111111486 1 2.542559022967236 5.138888888889259 1 2.542559022967251 7.083333333333387 1 6.872686041889573 3.333333333333522 1 5.66987298107762 8.750000000000423 1 2.061433798642829 8.888888888889337 1 1.820871186480496 9.027777777778196 1 2.06143379864286 9.166666666667112 1 1.820871186480536 9.027777777778251 1 1.580308574318162 4.861111111111181 1 7.353811266214073 7.361111111111462 1 3.023684247292092 4.166666666666826 1 6.150998205402339 4.305555555555726 1 5.910435593239997 3.888888888889099 1 5.18874775675296 7.500000000000069 1 6.632123429727255 1.527777777777932 1 6.872686041889237 4.444444444444606 1 6.150998205402347 6.388888888889296 1 1.820871186480254 6.2500000000004 1 2.061433798642594 5.972222222222626 1 2.061433798642586 6.111111111111501 1 2.301996410804932 5.833333333333725 1 2.301996410804918 6.388888888889277 1 2.301996410804945 6.250000000000378 1 2.542559022967286 3.888888888889017 1 7.113248654051702 6.388888888889021 1 6.150998205402488 6.250000000000154 1 5.910435593240136 1.111111111111294 1 6.632123429726857 0.8333333333335189 1 6.632123429726823 9.166666666666984 1 3.745372083779245 7.500000000000012 1 8.075499102701331 6.944444444444482 1 7.113248654051906 5.000000000000098 1 7.11324865405175 0.9722222222224299 1 6.391560817564496 5.972222222222261 1 8.797186939188173 6.805555555555616 1 6.872686041889548 7.916666666666666 1 8.316061714863681 6.111111111111154 1 9.037749551350508 8.749999999999908 1 9.278312163513073 8.472222222222129 1 9.278312163513052 8.333333333333258 1 9.0377495513507 8.194444444444345 1 9.278312163513014 7.361111111111111 1 7.83493649053899 0.6944444444444848 1 8.797186939187952 9.297607191551771 1 3.509398461714318 9.165341939333011 1 3.265011691137465 9.305555555555671 1 5.42931036891555 0.6993768720887245 1 6.391115496118539 0.8341554046075667 1 6.150923985161155 0.699401682563262 1 1.101171310179307 0.834159539686842 1 1.340077288853022 9.298511638372542 1 6.876752849371528 9.165492680469502 1 7.113926455299027 7.92324285267031 1 0.6218548884278776 5.423242852670281 1 0.6218548884276744 1.250000000000488 1 0.626753253519994 4.027777777778262 1 0.6180581256684416 3.472222222222707 1 0.618058125668411 2.911969390950479 1 0.6412699200267066 0.6996631868912127 1 4.464046877909449 0.5151080361999166 1 4.716182952214325 0.7062782030755158 1 4.950654976816637 0.9722222222222383 1 9.278312163512645 0.6944444444444697 1 9.278312163512638 5.972222222222261 1 9.278312163512823 6.250000000000036 1 9.278312163512844 4.444444444444483 1 9.03774955135059 4.305555555555621 1 9.278312163512961 6.944444444444832 1 1.820871186480287 4.722222222222308 1 9.518874775675277 6.527777777777988 1 4.467059920266097 6.388888888889101 1 4.226497308103753 7.777777777777773 1 7.594373878376648 0.973579810315327 1 3.024468051142503 0.7014688771510978 1 3.027739805405576 1.527777777778111 1 3.023684247291747 1.805555555555886 1 3.023684247291767 7.77777777777813 1 3.264246859454464 1.944444444444763 1 3.264246859454119 3.61111111111124 1 7.113248654051695 3.750000000000131 1 7.353811266214048 4.444444444444555 1 7.113248654051721 5.416666666666736 1 7.353811266214102 2.638888888889152 1 4.46705992026587 1.250000000000082 1 7.834936490538583 0.9722222222223064 1 7.834936490538555 0.8333333333334356 1 7.594373878376195 0.7010084193536814 1 7.831146777857772 4.444444444444832 1 2.30199641080487 4.444444444444878 1 1.339745962155496 4.583333333333778 1 1.099183349993163 3.194444444444646 1 5.429310368915268 5.138888888889324 1 1.099183349993189 5.000000000000443 1 0.8586207378308428 7.638888888888886 1 9.278312163512982 6.388888888889053 1 5.669872981077799 6.111111111111288 1 5.669872981077788 8.749833170288742 1 4.948281463769799 8.472208780487883 1 4.948192905180074 2.638888888888903 1 8.797186939188036 2.777777777777771 1 9.037749551350393 3.055555555555543 1 9.037749551350419 2.916666666666631 1 9.278312163512755 3.194444444444406 1 9.27831216351278 2.638888888888853 1 9.27831216351273 4.722222222222372 1 6.632123429727049 8.472222222222399 1 5.429310368915608 9.165192998517403 1 5.189598579456026 7.500000000000061 1 8.556624327025949 7.916666666666669 1 8.797186939188338 9.297398040976628 1 2.056724055404608 9.165307080903826 1 2.30121145359884 9.298088353607776 1 1.584619765373119 9.16542213300912 1 1.340464493998319 9.479836633220913 1 2.275409762585737 9.305555555555889 1 2.542559022967587 9.437238865959177 1 5.665712838399648 7.646561105893051 1 0.6311234914559642 7.501278702834433 1 0.8607982987955778 7.361872243750861 1 0.6281663431491753 4.30555555555604 1 0.6180581256684601 9.481561668557946 1 1.357294272396601 9.306577099180132 1 1.104215783860305 9.027740612772629 1 1.100141844278361 9.166830729770258 1 0.8596192258564312 8.888899679543954 1 0.858787147891517 9.02777777777832 1 0.6180581256687968 8.750000000000545 1 0.6180581256687704 9.305555555556095 1 0.6180581256688128 0.5166141851451949 1 1.367787923797265 0.7061129486041291 1 1.595053832020939 0.5165499837608176 1 6.129081052573199 0.7057703436487863 1 5.900656067964505 0.5751052903719609 1 0.8529920532785358 0.6944444444449336 1 0.6180581256682559 0.4333446983066299 1 0.6370674280311791 0.5313252705612834 1 2.781260941259482 0.5162101823554326 1 6.645033439533802 9.577970496388552 1 5.421238137486471 9.483488176282037 1 6.645678029380941 9.480778039434274 1 3.289517443309783 9.305555555555951 1 3.02368424729224 0.5889475180152581 1 7.569729209724409 9.438113741217711 1 7.115838123989048 9.304304773984875 1 7.35435581141174 9.027672579953588 1 7.353864297349167 9.166440670100833 1 7.594473474432086 9.578577337825298 1 7.356980274504808 9.444444444444764 1 3.745372083779279 9.730614217603337 1 5.680206618565969 0.8333333333333349 1 9.518874775675005 0.5534599700517315 1 9.526677430861394 0.4154916761634632 1 9.289695385538581 1.111111111111119 1 9.51887477567508 1.666666666666686 1 9.518874775675103 1.94444444444447 1 9.518874775675167 3.055555555555504 1 9.518874775675162 3.333333333333297 1 9.518874775675201 3.472222222222207 1 9.278312163512846 4.166666666666712 1 9.037749551350581 4.027777777777834 1 9.278312163512965 3.888888888888931 1 9.037749551350576 6.111111111111136 1 9.518874775675204 5.833333333333351 1 9.518874775675179 5.694444444444439 1 9.75943738783757 3.611111111111093 1 9.518874775675251 5.277777777777815 1 9.518874775675247 9.297149047322719 1 5.905582093449009 6.388888888888903 1 9.518874775675245 4.583333333333345 1 8.797186939188235 8.333307260228597 1 4.707637585742816 7.22222222222261 1 1.820871186480309 7.361111111111514 1 1.580308574317978 9.43241813609853 1 1.817853603779118 9.306503676221176 1 8.797186939188492 9.4444444444444 1 8.556624327026139 9.300569668769107 1 8.318940317942026 9.451615762869874 1 9.036596353046487 9.306750775292979 1 9.278119963795771 9.586384116479572 1 9.287967204421095 9.447247697095442 1 9.528254571060129 9.588016327870134 1 8.785160543066398 8.611112909554056 1 0.858648472841162 8.472222222222781 1 0.6180581256687118 8.195540475445481 1 0.6273860473135309 8.069986630396206 1 0.4142261978463993 6.666666666666885 1 4.226497308103758 6.527777777777997 1 3.98593469594141 9.027556989889138 1 3.023811719239365 8.888852090907747 1 2.783142880454392 9.026376693072411 1 5.909626676608419 9.481002086680064 1 6.136567114832246 5.555555555555618 1 8.07549910270113 5.833333333333396 1 8.075499102701166 6.527777777778162 1 2.542559022967317 8.472194043889084 1 4.467076189034643 4.30555555555565 1 7.353811266214054 0.6944444444444061 1 9.759437387837314 5.555555555555615 1 7.594373878376448 3.33333333333332 1 9.037749551350442 3.611111111111131 1 9.037749551350505 7.500000000000392 1 1.820871186480322 7.638888888889292 1 2.061433798642697 7.777777777778176 1 1.820871186480349 7.500000000000001 1 7.594373878376651 7.222222222222218 1 7.594373878376652 7.083333333333348 1 7.353811266214273 3.472222222222347 1 7.353811266214035 3.611111111111231 1 7.594373878376386 6.805555555555776 1 4.467059920266107 9.026946796646673 1 8.316541482043466 6.805555555555784 1 3.985934695941419 9.165697188680394 1 8.076058831077747 9.484009240739065 1 8.069511185493953 5.138888888888898 1 8.797186939188181 8.194444444444756 1 3.98593469594153 8.055555555555847 1 4.226497308103864 6.666666666667056 1 2.301996410804972 3.33333333333345 1 7.11324865405168 6.388888888889348 1 0.8586207378308678 6.527777777778259 1 0.618058125668538 6.250000000000484 1 0.6180581256685076 6.805555555556036 1 0.6180581256685688 6.111111111111567 1 0.8586207378308364 5.97222222222271 1 0.6180581256684655 5.695540475445427 1 0.6273860473133356 5.569986630396194 1 0.414226197846265 2.083333333333668 1 3.02368424729178 1.944444444444793 1 2.783121635129429 1.388888888888898 1 9.518874775675121 2.222222222222521 1 3.745372083778824 0.8344273291515909 1 8.074867483920759 0.5162339886830614 1 8.068388376505689 0.6944444444444838 1 8.316061714863213 7.222222222222276 1 8.556624327025947 7.638888888888911 1 7.353811266214292 8.75000000000048 1 1.580308574318128 7.638888888889221 1 3.504809471616796 6.388888888888943 1 8.55662432702589 2.361111111111367 1 4.467059920265863 7.083333333333721 1 2.061433798642658 9.305555555555726 1 6.391560817565009 8.749999999999975 1 7.834936490539048 7.916666666667034 1 3.023684247292133 8.611111111111185 1 6.632123429727327 8.33333333333322 1 9.518874775675368 8.055555555555477 1 9.518874775675341 0.6944444444445962 1 6.872686041889149 0.5714166418651172 1 7.109514581686987 8.194435402538316 1 4.467065140613327 9.425918517103124 1 0.8536658802299064 9.566825936273085 1 0.6371797325232651 5.000000000000172 1 6.150998205402399 4.583333333333504 1 5.910435593240008 4.583333333333383 1 8.31606171486346 4.722222222222259 1 8.556624327025823 9.305555555555561 1 7.834936490539079 7.083333333333436 1 6.39156081756488 6.527777777778127 1 3.023684247292021 6.388888888889262 1 2.783121635129655 6.111111111111473 1 2.783121635129632 7.361111111111132 1 9.278312163512981 7.500000000000297 1 3.745372083779127 7.916665159682528 1 4.467060790324048 6.527777777777893 1 6.391560817564839 2.500000000000115 1 7.113248654051629 2.361111111111246 1 6.872686041889276 2.22222222222234 1 7.113248654051611 2.083333333333469 1 6.872686041889258 2.22222222222237 1 6.632123429726929 1.944444444444567 1 7.113248654051599 2.083333333333643 1 3.504809471616473 7.777777777777843 1 6.632123429727269 7.638888888888975 1 6.391560817564919 7.777777777777883 1 6.150998205402582 0.8333333333333681 1 8.556624327025586 0.5555555555555823 1 8.556624327025595 0.4177539872853245 1 8.78544318970922 8.472222222222284 1 6.872686041889661 5.000000000000051 1 9.518874775675272 7.361111111111316 1 4.948185144590833 6.111111111111185 1 8.075499102701198 4.861111111111381 1 4.467059920265991 5.138888888889158 1 4.467059920266017 5.277777777778027 1 4.707622532428377 5.416666666666935 1 4.467059920266041 5.555555555555793 1 4.707622532428397 5.277777777778063 1 4.226497308103684 5.555555555555844 1 4.226497308103708 5.416666666666975 1 3.985934695941353 5.694444444444731 1 3.985934695941373 7.500000000000345 1 3.264246859454443 8.472222521963118 1 1.099187972495114 0.8347303368001764 1 3.265053419781494 0.5555555555559002 1 3.264246859454027 8.472222222222314 1 6.391560817564983 3.888888888889189 1 3.745372083778891 3.611111111111414 1 3.745372083778877 4.027777777778066 1 3.985934695941249 1.527777777777861 1 7.834936490538615 7.222222222222649 1 1.339745962155632 7.500000000000433 1 1.339745962155662 6.666666666666877 1 4.707622532428447 6.94444444444466 1 4.70762253242846 0.2248432125792565 1 7.381588371894474 7.36151053931839 1 0.2298794617771251 3.888888888888942 1 8.07549910270107 2.500000000000387 1 2.301996410804764 2.22222222222261 1 2.30199641080475 2.083333333333706 1 2.542559022967088 2.916666666667014 1 3.023684247291818 3.055555555555737 1 6.150998205402293 2.916666666666858 1 5.910435593239942 7.083333333333536 1 4.948185144590814 5.972222222222598 1 2.54255902296727 5.694444444444816 1 2.542559022967253 5.555555555555943 1 2.301996410804914 5.833333333333692 1 2.783121635129615 5.555555555555911 1 2.783121635129609 5.972222222222285 1 8.316061714863535 5.972222222222367 1 6.391560817564804 3.611111111111552 1 1.339764629893215 3.472222222222403 1 5.910435593239968 3.333333333333443 1 7.59437387837637 3.333333333333588 1 4.707622532428248 3.472222222222456 1 4.9481851445906 5.146561105892953 1 0.6311234914557191 4.861763510516552 1 0.627981176400251 4.305555555555872 1 3.504809471616577 0.2371228594963523 1 5.695552419285853 2.361111111111216 1 7.353811266213971 5.000000000000387 1 2.3019964108049 5.27777777777816 1 2.301996410804906 6.666666666666759 1 6.632123429727185 3.611111111111499 1 2.301996410804826 3.750000000000377 1 2.542559022967176 3.472222222222597 1 2.54255902296716 5.694444444444787 1 3.023684247291964 2.222222222222447 1 5.188747756752871 2.083333333333568 1 4.948185144590521 1.94444444444467 1 5.188747756752857 1.805555555555789 1 4.948185144590511 0.8333333333336307 1 3.745372083778748 0.6944444444447277 1 3.985934695941086 0.5555555555558525 1 3.745372083778733 0.4169866041135397 1 3.993367979360329 0.4143601209001226 1 3.493745035236073 7.222222222222413 1 5.188747756753171 0.555555555555826 1 4.226497308103421 2.22222222222242 1 5.66987298107756 5.972222222222662 1 1.0991833499932 8.888631303018734 1 3.264395576726219 1.666666666666961 1 3.745372083778793 9.759437387837655 1 4.027777777777777 9.542303115462612 1 4.167507757176843 9.536401914421313 1 4.467510437376479 4.027777777777779 1 0.2405626121623483 5.277777777778085 1 3.745372083778986 2.63888888888929 1 2.061433798642428 1.250000000000185 1 5.910435593239862 3.194045016237644 1 0.6289911596567126 4.166666666667055 1 2.301996410804856 4.861111111111509 1 2.061433798642549 4.027777777777795 1 9.759437387837655 3.888888888888916 1 9.518874775675306 3.055555555555999 1 1.339786217376956 2.500000000000034 1 8.556624327025684 1.944444444444833 1 2.301996410804735 9.759437387837657 1 6.249999999999995 7.500000000000192 1 5.188747756753188 0.2400208594510502 1 4.86010456610979 9.756792841377298 1 2.37886997830342 9.748325988433077 1 3.448849496312807 9.715037519746323 1 1.812748393470789 1.805555555555567 1 9.759437387837572 2.222222222222312 1 9.518874775675298 9.442250505990708 1 5.179461531714844 9.562388246226083 1 4.92740633599551 8.749999999999996 1 0.2405626121623523 6.250000000000348 1 3.023684247291998 3.472222222222515 1 3.985934695941222 0.2405626121623437 1 2.916666666666663 0.4827591755961045 1 2.483624717649957 0.2448876635262988 1 2.355924891392301 0.4646028498830426 1 2.210333657330987 0.4546258182232162 1 1.936590993805914 3.750000000000425 1 1.580311685607429 2.908994449662962 1 0.2274972463750577 4.166666666666874 1 5.188747756752969 4.027777777778004 1 4.948185144590624 4.305555555555753 1 5.429310368915313 9.762085752172815 1 1.243619008019341 4.8615105393183 1 0.2298794617770423 4.305555555555844 1 3.985934695941269 4.58333333333365 1 3.504809471616596 2.222222222222283 1 8.075499102701006 2.500000000000065 1 8.075499102701015 1.250000000000003 1 9.759437387837574 3.472222222222208 1 9.759437387837616 6.527777777777866 1 7.353811266214192 1.527777777777945 1 6.391560817564561 0.2405626121623416 1 8.194444444444434 4.722222222222389 1 6.150998205402368 4.027777777777926 1 6.391560817564676 8.749999999999954 1 9.759437387837684 1.66666666666702 1 2.783121635129407 0.6944075368783817 1 0.229090189410753 2.916666666666637 1 9.759437387837558 2.777777777777743 1 9.518874775675112 3.055555555555891 1 3.264246859454168 3.194444444444791 1 3.023684247291833 3.33333333333367 1 3.264246859454179 3.47222222222257 1 3.023684247291845 2.500000000000304 1 3.745372083778833 2.3611111111114 1 3.985934695941172 6.11111111111134 1 4.226497308103747 9.764147686959348 1 2.912928951486624 9.486131487267118 1 2.781367293272486 1.250000000000435 1 1.580308574317661 1.521201591775029 1 0.6233040764027959 1.797883338552183 1 0.6313650227848042 1.374640485882265 1 0.4143622635433111 1.943165741610942 1 0.8608385540167506 2.075265327357447 1 0.6416546404976216 2.212992220417198 1 0.8690434021901523 2.358476746476781 1 1.103243973817313 0.2405626121623438 1 1.25 2.360015080110581 1 0.2312346905174905 2.485568925159804 1 0.4443945399845349 2.082643653962253 1 0.2244533643198925 6.805555555555558 1 9.759437387837645 2.222222222222547 1 3.26424685945413 3.333333333333719 1 2.301996410804811 3.472222222222218 1 0.2405626121623451 2.500000000000416 1 1.820871186480076 2.361111111111513 1 2.061433798642412 0.9722222222226889 1 0.6229467463111957 6.249999999999998 1 0.2405626121623486 0.9745446193360112 1 5.427969532316466 7.916666666667081 1 2.061433798642749 1.944444444444643 1 5.669872981077546 3.750000000000484 1 0.6180581256684291 2.499999999999998 1 9.037749551350373 0.239102812238416 1 5.416851329140229 0.4573484735256459 1 5.559178278543709 0.2405626121623489 1 6.249999999999997 6.250000000000004 1 9.759437387837609 0.9780540119641874 1 2.063559185736941 0.8501294125231003 1 1.818701607552266 6.805555555555944 1 2.542559022967353 2.222222222222577 1 2.78312163512944 1.80534243841702 1 1.099552986024019 6.52777777777817 1 2.061433798642608 0.2387813660830613 1 7.925556136169726 4.583350662406621 1 0.2356031828792416 3.055555555555915 1 2.783121635129482 3.194444444444873 1 1.580315283521361 3.333333333333775 1 1.339811692678563 9.787257712329392 1 4.589414711037866 2.083333333333492 1 6.391560817564579 8.74999595397246 1 1.099376226969621 1.80555555555581 1 4.467059920265829 3.888888888889328 1 1.33975481112563 1.111293443747544 1 8.075393832904226 1.944444444444863 1 1.820871186480044 5.694444444444619 1 5.910435593240099 0.8342031237413551 1 4.225995134377382 9.754924349345892 1 6.799360376004519 9.755378170440196 1 7.919767842834763 8.055555555555552 1 7.594373878376656 1.111248812170403 1 1.339801183271598 6.805555555555609 1 7.83493649053891 4.166666666666916 1 4.70762253242829 7.222222222222554 1 3.264246859454421 0.9771269706827402 1 1.582468945415914 1.805555555555861 1 3.504809471616456 6.805555555555542 1 0.2405626121623387 2.083333333333544 1 5.429310368915208 0.2493454608981729 1 6.796083275770266 0.2405626121623464 1 4.583333333333331 3.333333333333695 1 2.783121635129496 3.472222222222352 1 6.872686041889347 4.305555555555978 1 1.580308574317831 6.666666666666831 1 5.669872981077818 6.111111111111312 1 5.188747756753118 5.833333333333532 1 5.188747756753103 1.111256076179339 1 4.226413612482441 0.6942928540613696 1 3.50309982560758 5.000000000000281 1 4.226497308103658 5.833333333333628 1 3.745372083779033 0.4539576619230848 1 5.279895886801656 4.027777777778152 1 2.542559022967191 5.277777777778132 1 2.7831216351296 9.759437387837668 1 8.194444444444422 5.972222222222311 1 7.834936490538835 7.2222222222223 1 6.632123429727239 2.083333333333738 1 2.061433798642398 5.277777777778207 1 1.339745962155536 4.444444444444777 1 3.264246859454243 3.194444444444453 1 8.797186939188089 6.250000000000115 1 6.872686041889494 7.361111111111253 1 5.910435593240212 4.305555555555588 1 8.797186939188194 1.666666666666887 1 5.188747756752848 5.277777777777917 1 6.632123429727103 5.000000000000151 1 6.632123429727077 5.13888888888901 1 6.87268604188943 3.055555555555655 1 7.594373878376354 4.583333333333337 1 9.759437387837661 4.722222222222286 1 7.594373878376409 4.58333333333371 1 2.542559022967221 4.305555555555934 1 2.542559022967205 4.722222222222609 1 2.301996410804886 5.416666666666869 1 5.4293103689154 5.138888888889233 1 3.023684247291939 1.66666666666691 1 4.707622532428164 2.777777777778058 1 4.22649730810353 1.527777777777819 1 8.797186939187988 5.000000000000428 1 1.339745962155524 4.861111111111162 1 8.316061714863459 4.166666666666968 1 3.745372083778912 1.388888888888914 1 9.037749551350322 7.777777526613978 1 4.226497453113479 7.777777777778075 1 3.74537208377915 4.166666666667103 1 1.339748524986121 3.194444444444573 1 6.872686041889331 3.055555555555748 1 5.669872981077605 0.7110384511444057 1 7.34424029863691 4.861111111111128 1 8.797186939188196 0.9749878900056507 1 7.352216104951044 5.69444444444466 1 4.94818514459075 9.305477943663202 1 0.2327001935409526 4.166666666666853 1 5.669872981077652 2.916666666666873 1 5.429310368915253 1.666666666667058 1 2.301996410804716 8.333333333333652 1 3.745372083779195 0.9741945153275955 1 4.948596783294834 1.80555555555593 1 2.542559022967071 5.833333333333748 1 1.82087118648024 6.944444444444525 1 6.632123429727213 7.916666624806281 1 3.985934720109781 4.305555555555705 1 6.391560817564685 3.055555555555775 1 5.188747756752918 4.444444444444671 1 5.188747756752991 2.500000000000246 1 4.707622532428203 3.333333333333551 1 5.188747756752933 7.500000000000367 1 2.783121635129757 4.444444444444905 1 0.8586213186451437 5.416666666666721 1 7.834936490538778 3.888888888889252 1 2.783121635129524 0.8514947710468104 1 5.180070978902982 4.305555555556004 1 1.099185542750582 3.611111111111474 1 2.783121635129509 3.333333333333638 1 3.745372083778876 3.611111111111447 1 3.26424685945419 7.083333333333564 1 4.467059920266125 3.750000000000031 1 8.797186939188146 6.527777777778191 1 1.580308574317916 7.08333333333338 1 8.31606171486361 3.611111111111326 1 5.188747756752948 6.666666666666698 1 9.037749551350576 7.638888888889248 1 3.023684247292111 8.055555555555959 1 1.820871186480405 6.944444444444909 1 0.8586207378309305 7.08336635484563 1 0.6229926116596299 4.861111111111124 1 9.75943738783765 6.250000000000239 1 3.985934695941406 4.86111111111155 1 1.099183349993177 2.500000000000275 1 4.22649730810352 8.194437858638077 1 4.948188946908157 8.611111111111512 1 2.30199641080516 2.361111111111129 1 8.797186939188018 3.333333333333403 1 8.075499102701043 8.194444444444422 1 8.316061714863695 2.08333333333338 1 8.316061714863327 1.388919277661684 1 8.075481557734825 5.833333333333557 1 4.707622532428411 2.638888888888938 1 8.316061714863361 3.19444444444463 1 5.910435593239958 8.888675691552017 1 7.113370459448985 1.944444444444687 1 4.707622532428175 3.888888888889138 1 4.707622532428274 4.027777777777846 1 7.834936490538734 8.749964467110569 1 6.872706342789172 2.500000000000149 1 6.632123429726949 6.527777777777961 1 5.429310368915468 5.694444444444845 1 2.061433798642574 5.416666666667066 1 2.061433798642567 5.416666666666675 1 9.759437387837606 5.138888888889123 1 4.948185144590699 6.666666666667064 1 1.820871186480272 7.638888888889031 1 5.910435593240226 4.722330955456838 1 0.8602746764218452 2.222222222222463 1 4.707622532428189 3.333333333333507 1 6.150998205402301 2.083333333333442 1 7.353811266213953 4.166666666666785 1 7.113248654051707 1.389055124165911 1 2.783217611111117 4.58333333333349 1 6.391560817564701 3.472222222222542 1 3.50480947161653 1.111111111111441 1 3.264246859454051 6.111111111111258 1 6.150998205402474 5.972222222222388 1 5.910435593240117 2.361111111111271 1 6.391560817564592 6.250000000000192 1 5.429310368915455 2.361111111111118 1 9.278312163512723 1.250153136238766 1 3.023772660540194 1.666666666666798 1 7.113248654051581 1.805555555555696 1 6.872686041889248 4.722222222222413 1 5.669872981077686 2.361111111111159 1 8.316061714863343 6.388888888889177 1 3.745372083779042 3.750000000000231 1 4.948185144590613 1.944444444444591 1 6.632123429726914 5.694444444444533 1 7.35381126621413 5.833333333333515 1 5.669872981077763 9.027578532019078 1 7.835046377944344 9.024428704798812 1 3.98848475594818 8.888662291262076 1 2.301865584604124 8.055555555555935 1 2.783121635129798 2.083333333333361 1 9.278312163512759 8.888779556857784 1 1.339904967521745 6.666666666666939 1 3.745372083779066 4.444444444444631 1 5.669872981077665 7.361111111111208 1 6.391560817564901 2.36111111111112 1 9.759437387837561 1.388888888889058 1 6.632123429726886 5.972222222222411 1 5.429310368915442 5.833333333333364 1 8.556624327025844 1.250000000000018 1 9.278312163512691 6.666666666666687 1 9.518874775675279 5.416666666667037 1 2.542559022967255 8.749946934139821 1 7.353840405636317 4.583366354845616 1 0.6230563590849337 7.916666666666679 1 7.353811266214305 4.583333333333419 1 7.353811266214064 5.416666666666892 1 4.948185144590724 8.472222222222168 1 8.797186939188384 6.805555555555942 1 2.061433798642633 4.861111111111275 1 6.391560817564725 4.444444444444532 1 9.518874775675288 1.666666666666823 1 6.632123429726903 5.694444444444511 1 7.834936490538807 8.194444444444807 1 3.023684247292155 7.500000000000115 1 6.150998205402564 3.472222222222317 1 7.834936490538716 7.499999999999993 1 9.518874775675325 1.250000000000186 1 6.391560817564533 5.694444444444632 1 5.429310368915426 8.333333333333476 1 5.669872981077939 5.694444444444482 1 9.278312163512831 9.027507280882821 1 2.542409933287059 9.319275535147673 1 4.018552631166973 6.388888888889 1 6.632123429727166 8.888791637887399 1 7.594422487379608 9.027976981067248 1 9.278280130226854 8.194444444444606 1 5.429310368915603 0.5512165959648843 1 9.036739770720304 3.750000000000083 1 7.834936490538726 4.166666666666742 1 9.5188747756753 5.277777777777874 1 7.113248654051763 3.888888888888986 1 7.594373878376381 6.25000000000013 1 6.391560817564825 4.722222222222329 1 7.11324865405174 4.027777777777883 1 7.353811266214044 5.555555555555763 1 5.188747756753075 7.7777777777778 1 8.556624327025999 7.639102006028342 1 1.099546276820795 3.750000000000019 1 9.278312163512906 7.638888888889306 1 1.580308574318011 1.111248122990312 1 6.150985835362013 5.694444444444692 1 4.467059920266047 5.555555555555657 1 7.113248654051786 6.111111111111158 1 8.556624327025865 5.555555555555582 1 9.518874775675213 0.974269719281954 1 5.908791240647087 9.173526493343108 1 2.782829182752188 7.222567698386861 1 0.8614907819036538 7.361417327134415 1 1.100085105304098 0.8499389291962223 1 5.673140772288441 5.833333333333589 1 4.226497308103729 6.66666666666675 1 7.113248654051874 9.444444444444384 1 7.594373878376749 6.250000000000046 1 8.797186939188203 7.916666666666622 1 9.759437387837677 6.527777777777807 1 9.278312163512904 4.861111111111238 1 6.872686041889403 6.527777777777871 1 6.872686041889509 5.972222222222486 1 3.985934695941389 8.055555555555546 1 8.556624327026018 8.055555555555516 1 9.037749551350664 7.916666666667092 1 1.580308574318054 6.388888888888935 1 9.037749551350547 6.805555555555605 1 7.353811266214227 8.194444444444418 1 8.797186939188361 7.638888888888921 1 8.316061714863659 8.611081065870295 1 5.188765103381296 7.08333333333335 1 7.834936490538944 7.91666666666662 1 9.278312163513 7.222222222222258 1 8.075499102701297 7.361111111111162 1 8.316061714863642 6.944444444444478 1 7.59437387837659 8.194444444444377 1 9.75943738783768 8.333324987869837 1 5.188752575008998 9.026487738802082 1 4.948754183823571 8.611111111111024 1 9.518874775675368 7.777777777777747 1 9.518874775675332 8.888922089437052 1 9.518869436794335 2.499999999999989 1 9.518874775675044 8.888637138712399 1 5.188878158772209 9.167371812704298 1 9.520399812925419 9.303870006000071 1 9.762565608254247 0.2329165327257747 1 1.803221385050987 9.297019119250789 1 4.947683666924116 0.6952286794362309 1 2.068392637212912 9.573502838894399 1 9.770829741943967 0.4248642659001168 1 9.771680725662614 0.7042381777732419 1 5.422190519672732 9.752702527729628 1 0.4262870548698547 0.2473148839623749 1 0.4262755952277655 0.4565442699389162 1 1.670770715888829 0.452802163295146 1 5.833333333333321 0.4568473391377572 1 5.007561117835489 9.549331404283334 1 8.331671653247536 0.4485486573967944 1 8.332277217292473 0.4331080832426238 1 1.058562169111847 9.568196384633627 1 1.056369445320404 0.4436835325131812 1 6.388683649111584 9.556628304161567 1 6.389908788190532 9.274668226104719 1 4.484892728239395 9.409252056154433 1 4.712263570755434 0.4498013281769891 1 4.449723179179257 0.4576485240277843 1 3.04347659316911 9.553806643019655 1 3.040333259043035 9.796186726554375 1 4.859598690557704 0.7269146294709714 1 2.555889158802762 9.551285283228701 1 2.522570525351124 0.441113851401289 1 7.756978978035786 9.544903639922294 1 7.807030419866085 7.783340570038709 1 0.4172442110247441 5.283340570038593 1 0.4172442110245372 2.772214985517314 1 0.4415778029138694 1.247339960303371 1 0.21125236166645 8.19713492944693 1 0.2112296840502817 5.697134929446907 1 0.2112296840502231 2.354726899673881 1 0.6544729581804175 1.661134319711786 1 0.4175486751914219 0.1921870288208647 1 0.6944444444444445 9.807812971179793 1 0.6944444444444445 9.541951462911712 1 6.907453879760074 0.462357306133875 1 6.903761555659847 9.53807430741058 1 5.874306745319233 9.535482780327598 1 1.616404300134415 9.446547360170985 1 0.4263801563860403 9.166754533867616 1 0.4288421338418836 8.88890353342266 1 0.429232329736652 7.503182140971553 1 0.4257137251288142 8.611111111111718 1 0.4293103689157645 7.22295150944403 1 0.4294375204653934 6.94444444444442 1 0.4293103689152725 6.666666666666903 1 0.4293103689154469 5.003164018765684 1 0.4256828640038125 6.388888888889086 1 0.4293103689154019 4.72293325504962 1 0.4285855688434793 6.111111111111111 1 0.4293103689152267 4.444571341680101 1 0.4291960362590058 4.166687816206103 1 0.4292913134726344 3.888892413812288 1 0.4293071930082324 3.611111698598503 1 0.4293098395974912 3.333333333333327 1 0.4293103689151862 3.052500270024361 1 0.4348681850083126 1.940001190274152 1 0.4270891057430948 0.8330418762103735 1 0.4273609152847818 0.5534163181109355 1 0.4254329527367771 8.333333333333901 1 0.429666280616099 5.833333333333796 1 0.4296662806160225 2.218042191651364 1 0.434855951971242 1.523254766881999 1 0.2102869624752116 7.92123027130345 1 0.2102097612285986 5.421230271303417 1 0.210209761228517 2.632613632179494 1 0.6535988172008059 1.11111111111161 1 0.4296662806161798 0.1878571138611373 1 8.74999999999998 0.1872861973824529 1 4.027777777777771 9.817590732165442 1 9.297546978797074 0.183781187003043 1 9.298136821720247 9.538504359070325 1 3.547814783869402 9.814622978967002 1 5.416666666666661 9.814750869532181 1 7.361111111111099 9.534861648207738 1 2.014830665826442 0.4669776580968114 1 7.3247642017685 9.818280840188992 1 8.74999999999998 9.550600550985264 1 3.943839543635188 0.1813323727394367 1 3.479779071210002 9.796652553453084 1 9.796652553453084 0.2033474465469151 1 9.796652553453091 0.2019331290430713 1 0.2019331290430713 9.798066870956932 1 0.2019331290430742 0.6340196174878086 1 5.677699794360542 0.6325282257451187 1 1.817901957296172 9.360936350455999 1 4.291912923955717 0.6344984786887795 1 5.15225970417497 0.6368274863628656 1 2.346163033295811 9.61829733113712 1 4.711238749144599 0.3642996740170794 1 0.8269421303361235 9.635955316792531 1 0.8267986005048267 0.3851737608145452 1 7.51918588001528 0.1016737232734576 1 9.898326276726547 0.1016737232734576 1 9.759437387837655 0 1 9.861111111111111 0.2405626121623464 1 9.898326276726547 0.1388888888888888 1 10 0.1009665645215357 1 0.2398554534104245 0.1009665645215357 1 0.1009665645215357 0 1 0.1388888888888888 0.2398554534104245 1 0.1009665645215357 0.1388888888888888 1 0 9.898326276726543 1 9.759437387837652 9.898326276726543 1 9.898326276726543 10 1 9.861111111111111 9.759437387837652 1 9.898326276726543 9.861111111111111 1 10 9.899033435478465 1 0.1009665645215371 9.899033435478465 1 0.2398554534104259 10 1 0.1388888888888888 9.760144546589576 1 0.1009665645215371 9.861111111111111 1 0 0.1236574419811874 1 0.4909155753916605 0.1236574419811874 1 0.3520266865027716 0 1 0.4166666666666666 0.2246240065027231 1 0.3141043621354184 0.09609351441043235 1 0.763888888888889 0.09609351441043235 1 0.625 0 1 0.6944444444444444 0.2197509563916198 1 0.560360019836105 0.1032946046838178 1 1.039799964656697 0.1032946046838178 1 0.9009110757678078 0 1 0.9722222222222221 0.1993881190942501 1 0.8314666313233634 0.1202813060811719 1 1.319444444444445 0.1202813060811719 1 1.180555555555555 0 1 1.25 0.2235759107649896 1 1.109244409101141 0.1237034657990712 1 1.593526494432346 0.1237034657990712 1 1.454637605543457 0 1 1.527777777777778 0.2439847718802431 1 1.385193161099012 0.1164582663628873 1 1.873832914747715 0.1164582663628873 1 1.734944025858827 0 1 1.805555555555554 0.2401617321619585 1 1.661803853624506 0.1207762281748276 1 2.151000622745666 0.1207762281748276 1 2.012111733856777 0 1 2.083333333333332 0.2372344945377149 1 1.941500204160049 0.1224438317631494 1 2.42796244569615 0.1224438317631494 1 2.289073556807261 0 1 2.36111111111111 0.243220059937977 1 2.217851957330706 0.1289471416585812 1 2.708135463542792 0.1289471416585812 1 2.569246574653904 0 1 2.638888888888887 0.2513909734217306 1 2.497209020350055 0.1202813060811719 1 2.986111111111108 0.1202813060811719 1 2.847222222222219 0 1 2.916666666666664 0.2492284477397531 1 2.777579907987236 0.129665152354148 1 3.280401013196565 0.129665152354148 1 3.141512124307677 0 1 3.194444444444442 0.2499464584353198 1 3.072067679863232 0.09066618636971835 1 3.545445091160555 0.09066618636971835 1 3.406556202271666 0 1 3.472222222222219 0.2203313387238663 1 3.353623882134901 0.1234567733521121 1 3.818619885087073 0.1234567733521121 1 3.679730996198184 0 1 3.749999999999996 0.2141229597218304 1 3.614064976247631 0.09364309869122645 1 4.097222222222217 0.09364309869122645 1 3.958333333333328 0 1 4.027777777777774 0.2170998720433385 1 3.888064329531515 0.1320035823652546 1 4.356767643107542 0.1320035823652546 1 4.217878754218654 0 1 4.305555555555552 0.225646681056481 1 4.148434309774208 0.1202813060811732 1 4.652777777777774 0.1202813060811732 1 4.513888888888886 0 1 4.583333333333329 0.2522848884464278 1 4.426212087551988 0.1200104297255251 1 4.930052283054892 0.1200104297255251 1 4.791163394166004 0 1 4.861111111111105 0.2402917358066983 1 4.721718949721561 0.1176217826423863 1 5.208333333333327 0.1176217826423863 1 5.069444444444438 0 1 5.138888888888884 0.2376322123679114 1 4.999496727499336 0.119551406119208 1 5.48620344234789 0.119551406119208 1 5.347314553459 0 1 5.416666666666661 0.2371731887615944 1 5.277870109014556 0.1185614297481762 1 5.76444287630959 0.1185614297481762 1 5.625553987420702 0 1 5.694444444444438 0.2381128358673842 1 5.556201874213041 0.1241235785979689 1 6.04499059119091 0.1241235785979689 1 5.906101702302021 0 1 5.972222222222215 0.242685008346145 1 5.837211245278285 0.1202813060811744 1 6.319444444444439 0.1202813060811744 1 6.18055555555555 0 1 6.249999999999993 0.2444048846791433 1 6.114435035635356 0.1202813060811716 1 6.597222222222214 0.1202813060811716 1 6.458333333333327 0 1 6.527777777777771 0.240562612162346 1 6.388888888888884 0.1246727304490864 1 6.870263860107351 0.1246727304490864 1 6.731374971218463 0 1 6.805555555555548 0.244954036530258 1 6.661930526774018 0.1401849005530279 1 7.158856330820621 0.1401849005530279 1 7.019967441931731 0 1 7.083333333333325 0.2648576310021143 1 6.945786857594646 0.1124216062896282 1 7.440794185947233 0.1124216062896282 1 7.301905297058344 0 1 7.361111111111103 0.2526065068426562 1 7.23853940565675 0.1099205397656446 1 7.711375113029357 0.1099205397656446 1 7.572486224140468 0 1 7.63888888888888 0.2223421460552729 1 7.51328041008771 0.1193906830415307 1 7.990555845862636 0.1193906830415307 1 7.851666956973748 0 1 7.916666666666657 0.2293112228071753 1 7.785264292225335 0.1202813060811708 1 8.263888888888879 0.1202813060811708 1 8.124999999999989 0 1 8.194444444444436 0.2396719891227014 1 8.06000029030708 0.1319445668307923 1 8.560986519015223 0.1319445668307923 1 8.422097630126334 0 1 8.472222222222211 0.2522258729119631 1 8.35265318568189 0.09392855693056865 1 8.819444444444429 0.09392855693056865 1 8.680555555555539 0 1 8.749999999999989 0.2258731237613609 1 8.630430963459663 0.1259158450590976 1 9.099359030844898 0.1259158450590976 1 8.960470141956009 0 1 9.027777777777768 0.2198444019896662 1 8.891025697511559 0.0918905935015215 1 9.371290633082342 0.0918905935015215 1 9.232401744193453 0 1 9.305555555555546 0.2178064385606191 1 9.165094108371694 0.1257912843667784 1 9.64002421957532 0.1257912843667784 1 9.501135330686431 0 1 9.583333333333329 0.2176818778683 1 9.427981519324334 0.227465007640236 1 9.677239385190756 9.876351263864814 1 0.3520324163238162 9.876351263864814 1 0.4909213052127052 10 1 0.4166666666666666 9.775384699343281 1 0.3141100919564644 9.903906485589896 1 0.625 9.903906485589896 1 0.763888888888889 10 1 0.6944444444444444 9.78025774945471 1 0.5603657496571496 9.896705395316319 1 0.9009110757678283 9.896705395316319 1 1.039799964656717 10 1 0.9722222222222221 9.800611880906215 1 0.8314666313233838 9.881042876086408 1 1.177365059565226 9.881042876086408 1 1.316253948454115 10 1 1.25 9.777748271402727 1 1.106053913110832 9.875154111813712 1 1.449197177270669 9.875154111813712 1 1.588086066159557 10 1 1.527777777777778 9.75619698790012 1 1.376562236835895 9.857518759873162 1 1.739707530068728 9.857518759873162 1 1.878596418957616 10 1 1.805555555555554 9.732672871686873 1 1.661126929561619 9.874808955498153 1 2.027930979168202 9.874808955498153 1 2.16681986805709 10 1 2.083333333333332 9.732327715371314 1 1.962082953681374 9.878396420688649 1 2.30054610026282 9.878396420688649 1 2.439434989151709 10 1 2.36111111111111 9.753205376186802 1 2.24514374609769 9.882075146814085 1 2.571250264603852 9.882075146814085 1 2.71013915349274 10 1 2.638888888888887 9.760471567502734 1 2.510685253755562 9.882073843479674 1 2.845353364632199 9.882073843479674 1 2.984242253521089 10 1 2.916666666666664 9.764148990293759 1 2.777714740347164 9.876084305183767 1 3.118205399623011 9.876084305183767 1 3.257094288511899 10 1 3.194444444444442 9.758158148663441 1 3.046892097588546 9.874162994216539 1 3.391091414823069 9.874162994216539 1 3.529980303711957 10 1 3.472222222222219 9.750247299400307 1 3.314852370001637 9.860683065743874 1 3.678523772670967 9.860683065743874 1 3.817412661559855 10 1 3.749999999999996 9.734846059960415 1 3.597392965271816 9.879718693918829 1 3.958333333333331 9.879718693918829 1 4.09722222222222 10 1 4.027777777777774 9.740401759662703 1 3.886857106004301 9.879718693918829 1 4.236111111111107 9.879718693918829 1 4.374999999999996 10 1 4.305555555555552 9.759437387837655 1 4.166666666666664 9.893628856164696 1 4.516929577741153 9.893628856164696 1 4.655818466630041 10 1 4.583333333333329 9.773347550083525 1 4.447485133296709 9.898093363277187 1 4.790910456389961 9.898093363277187 1 4.92979934527885 10 1 4.861111111111105 9.791722219441883 1 4.724506700797785 9.871869455591288 1 5.078559106552976 9.871869455591288 1 5.217447995441866 10 1 5.138888888888884 9.769962818868475 1 5.008358451831832 9.907311489483501 1 5.347222222222216 9.907311489483501 1 5.486111111111105 10 1 5.416666666666661 9.779180945074788 1 5.28689243988631 9.86530710880167 1 5.617881087060759 9.86530710880167 1 5.756769975949648 10 1 5.694444444444438 9.77261859828517 1 5.548436642616315 9.872183659743804 1 5.908399197341309 9.872183659743804 1 6.047288086230196 10 1 5.972222222222215 9.737490768545474 1 5.83183583995763 9.879718693918829 1 6.180555555555549 9.879718693918829 1 6.319444444444438 10 1 6.249999999999993 9.751902353662633 1 6.116732530674643 9.879718693918829 1 6.458333333333327 9.879718693918829 1 6.597222222222214 10 1 6.527777777777771 9.759437387837657 1 6.388888888888882 9.877462174672946 1 6.73301352133559 9.877462174672946 1 6.871902410224478 10 1 6.805555555555548 9.757180868591774 1 6.663569076891145 9.867359704670188 1 7.022042232249387 9.867359704670188 1 7.160931121138276 10 1 7.083333333333325 9.744821879343133 1 6.949500198029428 9.907375434766092 1 7.291666666666657 9.907375434766092 1 7.430555555555545 10 1 7.361111111111103 9.774735139436277 1 7.230375565582719 9.867565394216129 1 7.558281351042938 9.867565394216129 1 7.697170239931826 10 1 7.63888888888888 9.774940828982219 1 7.488836906598491 9.877689085220098 1 7.848772810306266 9.877689085220098 1 7.987661699195154 10 1 7.916666666666657 9.745254479436227 1 7.768165272460323 9.879718693918834 1 8.124999999999984 9.879718693918834 1 8.263888888888872 10 1 8.194444444444436 9.757407779138932 1 8.057106143639592 9.869290279817683 1 8.42209763012643 9.869290279817683 1 8.560986519015319 10 1 8.472222222222211 9.749008973736515 1 8.35265318568198 9.909140420094495 1 8.680555555555539 9.909140420094495 1 8.819444444444429 10 1 8.749999999999989 9.778430699912178 1 8.630430963459759 9.876576056540632 1 8.959859625206761 9.876576056540632 1 9.09874851409565 10 1 9.027777777777768 9.785716476635127 1 8.890415180762311 9.908795366082721 1 9.232106822731865 9.908795366082721 1 9.370995711620756 10 1 9.305555555555546 9.785371422623353 1 9.164188670160858 9.874208715633188 1 9.501135330686489 9.874208715633188 1 9.64002421957538 10 1 9.583333333333329 9.783004081715909 1 9.427686597862808 9.772534992359731 1 9.677239385190813 0.347861123320349 1 0.1073727313989635 0.486750012209238 1 0.1073727313989635 0.4166666666666666 1 0 0.3099387989529959 1 0.2083392959204992 0.6249815462169687 1 0.1145450947053765 0.7638704351058576 1 0.1145450947053765 0.6944444444444444 1 0 0.5561760028706511 1 0.22191782610434 0.9019218601909529 1 0.1175468903934132 1.040810749079842 1 0.1175468903934132 0.9722222222222221 1 0 0.832458961963477 1 0.2320919850987897 1.179225535707241 1 0.105626180833225 1.31811442459613 1 0.105626180833225 1.25 1 0 1.108925173675972 1 0.2231730712266382 1.456071827885444 1 0.1051434812376058 1.594960716774332 1 0.1051434812376058 1.527777777777778 1 0 1.385297363592685 1 0.2107696620708308 1.733762473252841 1 0.1092792372250432 1.87265136214173 1 0.1092792372250432 1.805555555555554 1 0 1.662056523360508 1 0.214422718462649 2.013544049203348 1 0.1122266821599462 2.152432938092237 1 0.1122266821599462 2.083333333333332 1 0 1.941750966900635 1 0.2215059193849894 2.291118651166401 1 0.1156173452587452 2.43000754005529 1 0.1156173452587452 2.36111111111111 1 0 2.221329367036417 1 0.2278440274186915 2.566156351442856 1 0.118382924701585 2.705045240331744 1 0.118382924701585 2.638888888888887 1 0 2.496163891498147 1 0.2340002699603302 2.843386113720368 1 0.1137486231875288 2.982275002609257 1 0.1137486231875288 2.916666666666664 1 0 2.770653576274337 1 0.2321315478891138 3.124999999999997 1 0.1202813060811718 3.263888888888886 1 0.1202813060811718 3.194444444444442 1 0 3.051719447053702 1 0.2340299292687006 3.402777777777774 1 0.1202813060811725 3.541666666666663 1 0.1202813060811725 3.472222222222219 1 0 3.33333333333333 1 0.2405626121623443 3.680555555555552 1 0.1202813060811718 3.81944444444444 1 0.1202813060811718 3.749999999999996 1 0 3.611111111111107 1 0.2405626121623443 3.958333333333332 1 0.1202813060811742 4.097222222222221 1 0.1202813060811742 4.027777777777774 1 0 3.888888888888888 1 0.240562612162346 4.236111111111109 1 0.1202813060811716 4.374999999999996 1 0.1202813060811716 4.305555555555552 1 0 4.166666666666666 1 0.2405626121623458 4.513897553425531 1 0.1178015914396208 4.652786442314419 1 0.1178015914396208 4.583333333333329 1 0 4.444453108981087 1 0.2380828975207924 4.791866380770259 1 0.1149397308885211 4.930755269659148 1 0.1149397308885211 4.861111111111105 1 0 4.722430600862461 1 0.2327413223281419 5.07179308230274 1 0.1092792372250385 5.210681971191629 1 0.1092792372250385 5.138888888888884 1 0 5.002548351961893 1 0.2242189681135597 5.349504024540595 1 0.1051048806142585 5.488392913429482 1 0.1051048806142585 5.416666666666661 1 0 5.282408217954451 1 0.2143841178392971 5.626345242501229 1 0.1056148420251116 5.765234131390117 1 0.1056148420251116 5.694444444444438 1 0 5.559182600375162 1 0.2107197226393701 5.903633695364624 1 0.1175468903934088 6.042522584253512 1 0.1175468903934088 5.972222222222215 1 0 5.835534493421414 1 0.2231617324185203 6.180555555555551 1 0.1202813060811743 6.31944444444444 1 0.1202813060811743 6.249999999999993 1 0 6.111967028697959 1 0.237828196474583 6.458333333333327 1 0.1202813060811716 6.597222222222214 1 0.1202813060811716 6.527777777777771 1 0 6.388888888888884 1 0.2405626121623459 6.7361111111111 1 0.1202813060811694 6.874999999999989 1 0.1202813060811694 6.805555555555548 1 0 6.666666666666656 1 0.240562612162341 7.01388888888888 1 0.1202813060811718 7.152777777777769 1 0.1202813060811718 7.083333333333325 1 0 6.944444444444432 1 0.2405626121623411 7.291866380770302 1 0.1149397308885625 7.430755269659191 1 0.1149397308885625 7.361111111111103 1 0 7.222421936325857 1 0.2352210369697343 7.571793082302763 1 0.1092792372250832 7.710681971191653 1 0.1092792372250832 7.63888888888888 1 0 7.502548351961963 1 0.2242189681136458 7.849504024540609 1 0.1051048806142993 7.988392913429498 1 0.1051048806142993 7.916666666666657 1 0 7.782408217954493 1 0.2143841178393825 8.126345242501237 1 0.1056148420251408 8.265234131390127 1 0.1056148420251408 8.194444444444436 1 0 8.059182600375191 1 0.2107197226394402 8.403633695364634 1 0.1175468903934225 8.542522584253522 1 0.1175468903934225 8.472222222222211 1 0 8.335534493421438 1 0.2231617324185634 8.680555555555548 1 0.1202813060811762 8.819444444444438 1 0.1202813060811762 8.749999999999989 1 0 8.611967028697972 1 0.2378281964745987 8.958333333333325 1 0.1202813060811724 9.097222222222214 1 0.1202813060811724 9.027777777777768 1 0 8.888888888888882 1 0.2405626121623485 9.23607230516493 1 0.1163500967704763 9.374961194053821 1 0.1163500967704763 9.305555555555546 1 0 9.166627860720485 1 0.2366314028516486 9.513249987790847 1 0.107372731398991 9.652138876679736 1 0.107372731398991 9.583333333333329 1 0 9.443766737400228 1 0.2237228281694673 9.690061201047094 1 0.2083392959205281 0.4902099107278362 1 9.885840362831306 0.3513210218389472 1 9.885840362831306 0.4166666666666666 1 10 0.3141058562235159 1 9.784166639557853 0.7638888888888697 1 9.879718693918658 0.6249999999999809 1 9.879718693918658 0.6944444444444444 1 10 0.5596543551722615 1 9.765559056749964 1.041666666666665 1 9.879718693918745 0.9027777777777761 1 9.879718693918745 0.9722222222222221 1 10 0.8333333333333124 1 9.759437387837401 1.319444444444446 1 9.879718693918786 1.180555555555557 1 9.879718693918786 1.25 1 10 1.111111111111111 1 9.759437387837533 1.597222222222228 1 9.879718693918781 1.458333333333339 1 9.879718693918781 1.527777777777778 1 10 1.388888888888896 1 9.759437387837568 1.875000000000005 1 9.879718693918786 1.736111111111116 1 9.879718693918786 1.805555555555554 1 10 1.666666666666678 1 9.759437387837567 2.152777777777787 1 9.879718693918804 2.013888888888898 1 9.879718693918804 2.083333333333332 1 10 1.94444444444446 1 9.75943738783759 2.43055555555556 1 9.879718693918781 2.291666666666671 1 9.879718693918781 2.36111111111111 1 10 2.222222222222237 1 9.759437387837584 2.708333333333318 1 9.879718693918775 2.56944444444443 1 9.879718693918775 2.638888888888887 1 10 2.49999999999999 1 9.759437387837556 2.986111111111095 1 9.879718693918779 2.847222222222206 1 9.879718693918779 2.916666666666664 1 10 2.777777777777749 1 9.759437387837554 3.263888888888878 1 9.879718693918797 3.124999999999989 1 9.879718693918797 3.194444444444442 1 10 3.055555555555531 1 9.759437387837576 3.541666666666658 1 9.879718693918807 3.402777777777769 1 9.879718693918807 3.472222222222219 1 10 3.333333333333317 1 9.759437387837604 3.81944444444444 1 9.879718693918829 3.680555555555552 1 9.879718693918829 3.749999999999996 1 10 3.611111111111102 1 9.759437387837636 4.097222222222229 1 9.879718693918829 3.95833333333334 1 9.879718693918829 4.027777777777774 1 10 3.888888888888896 1 9.759437387837657 4.375000000000007 1 9.879718693918827 4.23611111111112 1 9.879718693918827 4.305555555555552 1 10 4.166666666666686 1 9.759437387837654 4.652777777777777 1 9.87971869391883 4.513888888888888 1 9.87971869391883 4.583333333333329 1 10 4.444444444444455 1 9.759437387837657 4.930555555555559 1 9.879718693918825 4.791666666666671 1 9.879718693918825 4.861111111111105 1 10 4.72222222222223 1 9.759437387837655 5.208333333333329 1 9.879718693918829 5.069444444444439 1 9.879718693918829 5.138888888888884 1 10 5.000000000000004 1 9.759437387837654 5.486111111111112 1 9.879718693918804 5.347222222222223 1 9.879718693918804 5.416666666666661 1 10 5.277777777777779 1 9.759437387837632 5.763888888888883 1 9.879718693918786 5.624999999999995 1 9.879718693918786 5.694444444444438 1 10 5.555555555555557 1 9.759437387837588 6.041666666666665 1 9.87971869391879 5.902777777777777 1 9.87971869391879 5.972222222222215 1 10 5.833333333333333 1 9.759437387837576 6.319444444444443 1 9.879718693918804 6.180555555555554 1 9.879718693918804 6.249999999999993 1 10 6.111111111111116 1 9.759437387837595 6.597222222222221 1 9.879718693918816 6.458333333333332 1 9.879718693918816 6.527777777777771 1 10 6.388888888888894 1 9.759437387837622 6.874999999999997 1 9.879718693918822 6.736111111111109 1 9.879718693918822 6.805555555555548 1 10 6.666666666666671 1 9.759437387837639 7.15277777777777 1 9.879718693918829 7.01388888888888 1 9.879718693918829 7.083333333333325 1 10 6.944444444444441 1 9.75943738783765 7.43055555555555 1 9.879718693918829 7.291666666666662 1 9.879718693918829 7.361111111111103 1 10 7.222222222222216 1 9.759437387837657 7.708333333333323 1 9.87971869391883 7.569444444444435 1 9.87971869391883 7.63888888888888 1 10 7.499999999999994 1 9.759437387837659 7.986111111111084 1 9.879718693918839 7.847222222222195 1 9.879718693918839 7.916666666666657 1 10 7.77777777777775 1 9.759437387837668 8.26388888888885 1 9.879718693918839 8.124999999999961 1 9.879718693918839 8.194444444444436 1 10 8.0555555555555 1 9.759437387837679 8.541666666666634 1 9.879718693918843 8.402777777777747 1 9.879718693918843 8.472222222222211 1 10 8.333333333333272 1 9.759437387837682 8.819444444444416 1 9.879718693918843 8.680555555555527 1 9.879718693918843 8.749999999999989 1 10 8.611111111111061 1 9.759437387837686 9.097222222222186 1 9.879718693918838 8.958333333333297 1 9.879718693918838 9.027777777777768 1 10 8.888888888888832 1 9.759437387837679 9.374157225222255 1 9.881282804127125 9.235268336333364 1 9.881282804127125 9.305555555555546 1 10 9.165823891888891 1 9.76100149804596 9.64786253055831 1 9.885414870971983 9.508973641669417 1 9.885414870971983 9.583333333333329 1 10 9.438686422447235 1 9.766697675099106 9.685077696173742 1 9.783741147698525 0.3460454522112649 1 5.073225003362186 0.3484340992944037 1 4.93383284197264 0.3465302370807504 1 5.348373607970943 0.3446006136039287 1 5.209392387845269 0.455402500530421 1 5.143728502318572 5.138888888888933 1 9.518874775675259 5.069444444444468 1 9.639156081756465 5.20833333333335 1 9.639156081756452 5.347222222222245 1 9.639156081756425 4.930555555555587 1 9.639156081756461 4.932337279041992 1 0.3277811628904274 5.073375091685584 1 0.3221206692269448 5.143252294402139 1 0.4214635375141749 5.213463367322039 1 0.3179013427373071 5.352285420671005 1 0.3137269861265271 9.592994708586641 1 5.168289872410401 9.510110501189629 1 5.300349834600658 9.660854703785564 1 5.289178175296215 9.696296737677777 1 5.418952402076566 9.653063578704328 1 5.042262274550735 9.502319376108396 1 5.053433933855176 9.67928748639023 1 4.893502513276607 0.3319500754088819 1 3.870859430322795 0.4862710798346961 1 3.869370031569531 0.4012345511300383 1 3.746861482531997 0.4849578382279875 1 3.619558559507403 0.3306368338021733 1 3.621047958260666 0.3021364007479963 1 4.01057287856905 0.2978462468197797 1 3.486762053223037 9.629935245279038 1 3.646875609050114 9.491474401757545 1 3.646593433824341 9.582905287966257 1 3.745654259005052 9.497522497715014 1 3.844605813707234 9.635983341236507 1 3.844887988933007 9.65501896941146 1 3.985808660706482 9.643415173751702 1 3.498332140091104 3.819444444444456 1 9.639156081756482 3.750000000000004 1 9.518874775675279 3.680555555555545 1 9.639156081756454 3.541666666666651 1 9.639156081756433 3.958333333333356 1 9.639156081756481 3.819446206906142 1 0.334934902585288 3.958335095795033 1 0.3349349025852904 3.54166696041036 1 0.3349362258799181 3.68055584929925 1 0.3349362258799174 3.750002056205395 1 0.4293085163028618 6.319444444444454 1 9.639156081756427 6.458333333333343 1 9.63915608175644 6.597222222222236 1 9.639156081756456 6.527777777777795 1 9.518874775675261 6.736111111111123 1 9.639156081756461 0.3827778216268027 1 6.720558357652034 0.3783863972588879 1 6.586405608655786 0.4799468574343069 1 6.516858544322693 0.3421230723377622 1 6.458230713444678 0.3421230723377651 1 6.31934182455579 6.319444444444542 1 0.3349364905388753 6.458333333333428 1 0.3349364905388725 6.597222222222337 1 0.3349364905388951 6.736111111111223 1 0.3349364905388928 6.527777777777994 1 0.4293103689154244 9.619206262813965 1 6.72251920269273 9.621462782059847 1 6.586727903579356 9.658032845999612 1 6.458843282984152 9.520058240221802 1 6.517793408785737 9.658032845999612 1 6.319954394095263 2.702263844201513 1 0.3391718261585197 2.840604717590138 1 0.3345375246444635 2.422792002635193 1 0.3378146152510127 2.558940814022758 1 0.3405801946938524 2.628891955338559 1 0.4429861714492022 9.654039062302999 1 2.450720251827272 9.657717788428435 1 2.582535527279414 9.625140890447643 1 2.711933911240096 9.625139587113232 1 2.847148122379555 9.518708385247908 1 2.651968909311805 2.84722222222219 1 9.639156081756335 2.708333333333302 1 9.639156081756331 2.638888888888866 1 9.518874775675078 2.569444444444425 1 9.639156081756298 2.430555555555554 1 9.639156081756303 0.3859439413618135 1 2.848963803963072 0.3946097769392229 1 2.709877045283646 0.507042223078694 1 2.632442829454719 0.3703267294566335 1 2.561058933478883 0.3638234195612016 1 2.419774804521129 7.569444444444436 1 9.639156081756493 7.430555555555551 1 9.639156081756491 7.708333333333313 1 9.639156081756497 7.63888888888887 1 9.518874775675329 7.847222222222184 1 9.639156081756504 0.3025074201729172 1 7.582079164148112 0.3050084866969008 1 7.450387125954878 0.3399476087421752 1 7.841267557102756 0.3304774654662891 1 7.700975713158365 0.4131438061079171 1 7.638082429025533 7.432346340144972 1 0.3277965934529696 7.573384152788544 1 0.3221360997894904 7.643261355505131 1 0.4214789680767792 7.713463367322122 1 0.3179013427374553 7.852285420671079 1 0.3137269861266714 9.51151089113484 1 7.475677076440778 9.58978761643832 1 7.605468290231316 9.656854063128776 1 7.486771488295346 9.696664103678739 1 7.359045692807953 9.640017214177275 1 7.711796560975984 9.650140905181246 1 7.863399131350424 9.494674042183339 1 7.700702149121417 0.3785883986537693 1 1.308893961898633 0.3820105583716686 1 1.444087122997645 0.3519756007685293 1 1.595578519043427 0.4865792275420555 1 1.519279319843047 0.3447304013323454 1 1.736996050469908 9.62182371036538 1 1.300456640207971 9.615934946092686 1 1.433399869024524 9.508522224442771 1 1.486849286265508 9.642895501977511 1 1.562954882893432 9.625260150036961 1 1.714576346802602 1.527777777777792 1 9.518874775675112 1.458333333333343 1 9.63915608175634 1.597222222222237 1 9.639156081756333 1.736111111111126 1 9.639156081756337 1.31944444444445 1 9.639156081756347 9.516230386157268 1 8.670892435046269 9.663298443752749 1 8.648011234992968 9.591512502039883 1 8.533743126972839 9.643955981959349 1 8.421266790083537 9.496887924363868 1 8.444147990136837 9.703148584029563 1 8.767580271533189 9.6543843960605 1 8.263058048845979 1.870429735056585 1 0.3228237900965906 2.011322422118202 1 0.3257712350314936 1.800567754992969 1 0.4223188904672583 1.730996299775402 1 0.3180535748207541 1.592194543296892 1 0.3139178188333168 8.263888888888799 1 9.639156081756525 8.402777777777693 1 9.639156081756527 8.541666666666597 1 9.639156081756527 8.472222222222122 1 9.518874775675368 8.68055555555549 1 9.639156081756525 0.3408215604734545 1 8.648152558314283 0.4866547714204534 1 8.671033758367408 0.4097223446085834 1 8.533743126972471 0.5020521064761884 1 8.444450772159033 0.3562188955291894 1 8.421569572105909 0.3028055505732309 1 8.767721594854599 0.344555634779568 1 8.263360830868454 8.542522584253831 1 0.3322020748513048 8.680555555555857 1 0.3349364905390584 8.265234131390415 1 0.3204479823331904 8.403633695364924 1 0.332380030701472 8.472222222222809 1 0.4294883247659318 0.7637247065443776 1 0.3282255523477674 0.9017761316294729 1 0.3312273480358041 1.040810749080091 1 0.3323800307015031 1.179225535707491 1 0.3204593211413149 0.9720764936609918 1 0.4285135979504808 9.518999939674723 1 9.162281778733792 9.669768114780418 1 9.159398782972868 9.602383937975569 1 9.033713357285565 9.6705842204757 1 8.90799545229552 9.519816045370003 1 8.910878448056444 9.701987424322507 1 9.292757091609085 9.650870251650133 1 4.09764276747731 9.650870251650133 1 4.236531656366197 9.539352514941964 1 4.317509097276661 9.647919651129484 1 4.386532996466015 9.661829813375352 1 4.528462574207172 4.236111111111159 1 9.639156081756477 4.097222222222269 1 9.639156081756479 4.513888888888934 1 9.639156081756475 4.375000000000053 1 9.639156081756472 4.305555555555637 1 9.518874775675293 9.634344262506959 1 5.777256681942601 9.641220813449095 1 5.928885903334262 9.620219737258861 1 6.19328355741612 9.612684703083836 1 6.060016088090768 9.509538197045323 1 6.00543693007574 6.042522584253516 1 0.3322020748510221 6.180555555555554 1 0.3349364905387877 5.765234131390351 1 0.3204479823331228 5.903633695364858 1 0.33238003070142 5.972222222222453 1 0.4294883247656246 0.3785562979615832 1 6.189540526286598 0.3823985704783777 1 6.053975561921957 0.4846760735279818 1 5.98120719295326 0.3505246602455419 1 5.906101702302019 0.3449625113957492 1 5.764442876309587 0.4097813601431676 1 4.247794074937033 0.4862710798346829 1 4.109932643731876 0.3404968844220244 1 4.131229410565487 0.3569042464537491 1 4.359407010474951 0.5026784418664075 1 4.338110243641339 0.3451819701696677 1 4.516528256256294 7.291666666666671 1 9.639156081756486 7.152777777777779 1 9.639156081756486 7.083333333333344 1 9.518874775675311 7.013888888888889 1 9.639156081756482 6.875000000000006 1 9.639156081756477 9.614552013933675 1 3.369183469811295 9.616473324900905 1 3.235186343500126 9.652987626693594 1 3.110594251366751 9.517292341226964 1 3.164925351176409 9.658977164989501 1 2.97663110526483 4.097232796991941 1 0.3349269628174913 4.236121685880828 1 0.3349269628174888 4.375063448617827 1 0.3348793242106745 4.513961002043361 1 0.3323996095691237 4.305629578943102 1 0.4292436748658201 3.263888888888862 1 9.639156081756397 3.1944444444444 1 9.518874775675181 3.124999999999965 1 9.639156081756376 2.986111111111071 1 9.63915608175636 3.402777777777753 1 9.639156081756408 5.972222222222243 1 9.518874775675192 5.902777777777789 1 9.639156081756379 6.041666666666681 1 9.639156081756393 6.18055555555557 1 9.639156081756408 5.763888888888895 1 9.639156081756376 2.980747359843662 1 0.3311827156916851 3.123472357234402 1 0.3377153985853281 3.263888888888884 1 0.3349364905387649 3.402777777777772 1 0.3349364905387656 3.192916801678844 1 0.4320892769617494 0.3368452128042093 1 3.360606864147937 0.4849578382280114 1 3.37899594734505 0.4074429301320981 1 3.245857776256914 0.5066020397918423 1 3.153861726311568 0.3584894143680402 1 3.135472643114455 0.349105568095064 1 2.980071629917886 9.508345539521503 1 7.236409199246928 9.656648373582836 1 7.228310147279573 9.586416575279042 1 7.107739072021692 9.638335436126043 1 7.003546949907205 9.490032602064712 1 7.011646001874561 9.648437906128802 1 6.853407127882297 8.958349933607384 1 9.639153412316006 8.819461044718503 1 9.639153412316009 9.097574795241005 1 9.639918600381547 9.028146951070674 1 9.519634624859876 9.235620909352185 1 9.641482710589834 8.819451766711328 1 0.3348974709495022 8.958340655600214 1 0.3348974709494983 9.097266155822693 1 0.3347023730021141 9.236116238765408 1 0.3307711636914181 9.027829033645137 1 0.4290372317892678 0.3547452567046707 1 2.283129274361644 0.3530776531163489 1 2.145056340300049 0.4596143340531294 1 2.073462325568451 0.3480891372864356 1 2.008185008537513 0.3437711754744954 1 1.869906189428451 0.5168869739994961 1 7.006638068673418 0.3713635536199654 1 6.999625997539437 0.4258932214855865 1 7.102502510553007 0.3736737296014336 1 7.210127320593763 0.5191971499809643 1 7.217139391727743 0.345910435338034 1 7.353176286831487 0.355851383516024 1 6.849922415715056 0.4833541360641738 1 9.163217578129442 0.4015241430415397 1 9.034395582871721 0.3336616831408292 1 9.160873390280859 0.2996364315832531 1 9.293916103629414 0.4844852916251043 1 8.911091480214761 0.3347928387017598 1 8.908747292366179 0.3368353477024838 1 1.154281084555923 0.3198486463051297 1 1.013525493657065 0.3987038786298516 1 0.9427521497239852 0.2854444416923574 1 0.8977154742692028 0.2782433514189721 1 0.7606932873902841 7.153142421388677 1 0.3350000663138685 7.29223102438121 1 0.3296584911212592 6.87499999999998 1 0.3349364905388056 7.013888888888872 1 0.334936490538808 7.083697976944225 1 0.429373944690333 9.618314737299105 1 2.327139870444578 9.61472727210861 1 2.193413638238848 9.642239779602022 1 2.063124089859201 9.507349140714325 1 2.14512021420609 9.624949583977031 1 1.913789529648616 1.875000000000018 1 9.639156081756369 2.013888888888911 1 9.639156081756386 2.152777777777833 1 9.639156081756454 2.083333333333391 1 9.518874775675233 2.291666666666716 1 9.639156081756429 9.680803587633132 1 1.012429131761364 9.665141068403221 1 1.149994226669873 9.714683053712584 1 0.897643709353575 9.602075850713078 1 0.9415840229126153 9.721884143986163 1 0.7606215224746355 1.041666666666669 1 9.639156081756285 0.972222222222227 1 9.518874775675043 0.9027777777777768 1 9.639156081756248 0.7638888888888705 1 9.639156081756159 1.180555555555561 1 9.639156081756326 9.376012651917094 1 0.3295401749634965 9.51430144565412 1 0.3205628095920112 9.599624943950307 1 0.4263336056279475 9.667379029433441 1 0.3205162588339183 9.516815906787507 1 9.408110887740612 9.597832564180909 1 9.543040393994335 9.667400773872973 1 9.422896710674818 9.51037526799492 1 9.649542156502047 9.660960135080387 1 9.664327979436255 0.4844758231075974 1 9.408186408199988 0.3335371224485101 1 9.423760801233502 0.4025212693926442 1 9.542251823894908 0.3382234173168368 1 9.664753471295519 0.4891621179759241 1 9.649179078262005 0.4856803934869279 1 0.3200892077673521 0.6239119274946586 1 0.3272615710737651 0.4003656010366552 1 0.4258542739822713 0.3326296764126476 1 0.3205105290128463 7.361111111111112 1 9.51887477567532 7.152777777777793 1 9.398593469594143 7.013888888888903 1 9.39859346959414 7.291666666666682 1 9.398593469594147 7.222222222222243 1 9.278312163512975 7.430555555555562 1 9.398593469594154 6.944444444444464 1 9.278312163512954 6.875000000000016 1 9.398593469594124 6.736111111111132 1 9.398593469594108 6.805555555555571 1 9.518874775675293 7.013888888888914 1 9.158030857431793 6.875000000000026 1 9.158030857431775 7.152777777777802 1 9.1580308574318 7.083333333333362 1 9.037749551350622 7.291666666666691 1 9.158030857431804 6.805555555555586 1 9.037749551350595 6.736111111111137 1 9.158030857431758 6.597222222222253 1 9.15803085743174 6.666666666666692 1 9.278312163512922 6.597222222222247 1 9.398593469594092 7.152777777777811 1 8.917468245269454 7.013888888888923 1 8.917468245269447 6.944444444444484 1 8.797186939188276 6.875000000000036 1 8.917468245269442 6.736111111111147 1 8.917468245269422 7.291666666666702 1 8.917468245269458 7.222222222222262 1 8.797186939188283 7.36111111111114 1 9.037749551350633 7.430555555555592 1 8.917468245269461 7.430555555555581 1 9.158030857431809 7.013888888888932 1 8.676905633107104 6.875000000000044 1 8.676905633107097 7.152777777777823 1 8.676905633107115 7.083333333333384 1 8.556624327025936 7.291666666666714 1 8.676905633107117 6.805555555555603 1 8.556624327025922 6.736111111111155 1 8.676905633107094 6.597222222222268 1 8.676905633107079 6.666666666666709 1 8.797186939188254 6.59722222222226 1 8.917468245269408 6.875000000000052 1 8.436343020944753 6.736111111111163 1 8.436343020944751 7.013888888888936 1 8.436343020944769 6.944444444444496 1 8.316061714863594 7.152777777777828 1 8.436343020944779 6.666666666666722 1 8.316061714863574 6.597222222222274 1 8.436343020944744 6.458333333333387 1 8.436343020944729 6.527777777777828 1 8.556624327025904 6.458333333333382 1 8.676905633107065 6.736111111111173 1 8.195780408782408 6.597222222222284 1 8.195780408782403 6.875000000000056 1 8.195780408782415 6.805555555555618 1 8.075499102701244 7.013888888888941 1 8.195780408782431 6.527777777777846 1 8.075499102701228 6.458333333333395 1 8.195780408782394 6.319444444444509 1 8.195780408782387 6.388888888888946 1 8.316061714863562 6.319444444444501 1 8.436343020944722 6.597222222222296 1 7.95521779662006 6.458333333333409 1 7.955217796620051 6.736111111111171 1 7.955217796620073 6.666666666666734 1 7.834936490538897 6.875000000000055 1 7.955217796620081 6.388888888888971 1 7.834936490538874 6.31944444444452 1 7.955217796620042 6.180555555555634 1 7.955217796620031 6.250000000000071 1 8.075499102701208 6.180555555555623 1 8.195780408782376 6.458333333333421 1 7.714655184457708 6.319444444444533 1 7.7146551844577 6.5972222222223 1 7.714655184457713 6.527777777777862 1 7.594373878376539 6.736111111111175 1 7.714655184457726 6.250000000000096 1 7.594373878376524 6.180555555555646 1 7.71465518445769 6.04166666666676 1 7.714655184457675 6.111111111111197 1 7.834936490538851 6.041666666666748 1 7.955217796620016 6.319444444444545 1 7.474092572295358 6.180555555555657 1 7.474092572295348 6.458333333333425 1 7.474092572295364 6.388888888888986 1 7.353811266214187 6.597222222222303 1 7.474092572295367 6.111111111111213 1 7.353811266214171 6.041666666666764 1 7.474092572295338 5.902777777777866 1 7.474092572295322 5.97222222222231 1 7.5943738783765 5.902777777777862 1 7.714655184457659 6.180555555555668 1 7.233529960133007 6.041666666666774 1 7.233529960132997 6.319444444444552 1 7.233529960133011 6.250000000000114 1 7.113248654051837 6.458333333333432 1 7.233529960133017 5.972222222222339 1 7.113248654051825 5.902777777777883 1 7.233529960132988 5.763888888888991 1 7.233529960132973 5.833333333333426 1 7.353811266214145 5.763888888888973 1 7.474092572295307 6.04166666666679 1 6.992967347970659 5.902777777777899 1 6.99296734797065 6.180555555555673 1 6.992967347970664 6.111111111111233 1 6.872686041889489 6.319444444444557 1 6.992967347970668 5.833333333333462 1 6.872686041889475 5.76388888888901 1 6.99296734797064 5.625000000000115 1 6.992967347970625 5.694444444444552 1 7.113248654051801 5.625000000000094 1 7.233529960132958 5.902777777777914 1 6.752404735808309 5.763888888889024 1 6.752404735808299 6.0416666666668 1 6.752404735808318 5.972222222222362 1 6.632123429727143 6.180555555555681 1 6.752404735808323 5.694444444444586 1 6.632123429727126 5.625000000000135 1 6.752404735808291 5.48611111111124 1 6.752404735808281 5.55555555555568 1 6.872686041889454 5.486111111111221 1 6.992967347970615 5.763888888889037 1 6.511842123645959 5.625000000000147 1 6.511842123645952 5.902777777777921 1 6.51184212364597 5.833333333333483 1 6.391560817564795 6.041666666666808 1 6.511842123645978 5.55555555555571 1 6.391560817564777 5.48611111111126 1 6.511842123645944 5.34722222222237 1 6.511842123645936 5.416666666666806 1 6.632123429727111 5.347222222222351 1 6.752404735808273 5.62500000000016 1 6.271279511483609 5.486111111111272 1 6.271279511483602 5.763888888889047 1 6.271279511483618 5.694444444444609 1 6.150998205402443 5.902777777777931 1 6.271279511483629 5.416666666666835 1 6.150998205402427 5.347222222222385 1 6.271279511483595 5.208333333333496 1 6.27127951148359 5.277777777777934 1 6.391560817564764 5.208333333333481 1 6.511842123645931 5.486111111111285 1 6.030716899321257 5.347222222222397 1 6.03071689932125 5.625000000000171 1 6.030716899321266 5.555555555555733 1 5.91043559324009 5.763888888889057 1 6.030716899321275 5.277777777777958 1 5.910435593240074 5.208333333333508 1 6.030716899321243 5.069444444444621 1 6.030716899321233 5.13888888888906 1 6.150998205402409 5.069444444444609 1 6.271279511483579 5.34722222222241 1 5.790154287158905 5.20833333333352 1 5.790154287158899 5.486111111111296 1 5.790154287158914 5.416666666666859 1 5.669872981077738 5.625000000000182 1 5.790154287158924 5.138888888889085 1 5.669872981077722 5.069444444444634 1 5.790154287158891 4.930555555555745 1 5.790154287158879 5.000000000000181 1 5.910435593240056 4.930555555555733 1 6.030716899321221 5.208333333333536 1 5.549591674996554 5.069444444444649 1 5.549591674996547 5.34722222222242 1 5.549591674996565 5.277777777777984 1 5.42931036891539 5.486111111111307 1 5.549591674996574 5.00000000000021 1 5.42931036891537 4.93055555555576 1 5.549591674996538 4.791666666666868 1 5.549591674996524 4.861111111111306 1 5.6698729810777 4.791666666666853 1 5.790154287158865 5.069444444444661 1 5.309029062834203 4.930555555555773 1 5.309029062834195 5.208333333333548 1 5.309029062834213 5.13888888888911 1 5.188747756753038 5.347222222222433 1 5.309029062834224 4.861111111111335 1 5.188747756753019 4.791666666666885 1 5.309029062834187 4.652777777777994 1 5.309029062834174 4.722222222222432 1 5.429310368915351 4.652777777777978 1 5.549591674996512 4.930555555555785 1 5.068466450671852 4.791666666666897 1 5.068466450671844 5.20833333333356 1 5.068466450671874 5.069444444444674 1 5.068466450671863 5.000000000000234 1 4.948185144590687 4.791666666666842 1 6.030716899321206 4.861111111111281 1 6.150998205402384 4.652777777777946 1 6.030716899321188 4.722222222222399 1 5.910435593240026 4.652777777777958 1 5.790154287158847 4.722222222222459 1 4.948185144590667 4.652777777778009 1 5.068466450671835 4.513888888889121 1 5.068466450671825 4.58333333333356 1 5.188747756753001 4.513888888889106 1 5.309029062834165 5.486111111111316 1 5.309029062834237 5.41666666666688 1 5.188747756753061 5.347222222222444 1 5.068466450671886 5.277777777778008 1 4.948185144590711 5.486111111111327 1 5.068466450671899 4.79166666666691 1 4.8279038385095 4.652777777778023 1 4.827903838509492 4.930555555555799 1 4.827903838509511 4.861111111111363 1 4.707622532428335 5.069444444444688 1 4.827903838509522 4.583333333333585 1 4.707622532428316 4.513888888889134 1 4.827903838509483 4.375000000000245 1 4.827903838509476 4.444444444444683 1 4.948185144590651 4.375000000000233 1 5.068466450671817 4.652777777778036 1 4.587341226347148 4.513888888889147 1 4.58734122634714 4.791666666666927 1 4.587341226347158 4.72222222222249 1 4.467059920265982 4.930555555555816 1 4.587341226347169 4.305555555555806 1 4.707622532428299 4.236111111111354 1 4.827903838509467 4.444444444444709 1 4.467059920265966 4.375000000000258 1 4.587341226347133 4.236111111111368 1 4.587341226347124 4.166666666666899 1 4.948185144590634 4.097222222222439 1 5.068466450671797 4.236111111111334 1 5.068466450671806 4.305555555555772 1 5.18874775675298 4.097222222222459 1 4.827903838509457 4.51388888888916 1 4.346778614184798 4.375000000000271 1 4.346778614184791 4.652777777778049 1 4.346778614184805 4.583333333333611 1 4.226497308103629 4.791666666666941 1 4.346778614184814 4.305555555555833 1 4.226497308103614 4.236111111111382 1 4.346778614184782 4.097222222222494 1 4.346778614184773 4.166666666666932 1 4.46705992026595 4.097222222222479 1 4.587341226347116 6.041666666666813 1 6.271279511483639 5.972222222222377 1 6.150998205402463 5.902777777777942 1 6.030716899321284 5.833333333333504 1 5.910435593240108 6.041666666666823 1 6.030716899321296 4.652777777778061 1 4.10621600202246 4.513888888889172 1 4.106216002022453 4.375000000000282 1 4.106216002022445 4.236111111111395 1 4.106216002022437 4.444444444444733 1 3.985934695941277 4.79166666666695 1 4.106216002022468 4.722222222222511 1 3.985934695941292 4.86111111111139 1 4.226497308103648 4.93055555555584 1 4.106216002022479 4.930555555555831 1 4.346778614184824 4.027777777778056 1 4.226497308103596 3.958333333333605 1 4.346778614184765 4.097222222222506 1 4.106216002022427 3.958333333333616 1 4.106216002022419 4.166666666666956 1 3.985934695941259 5.208333333333464 1 6.752404735808266 5.277777777777898 1 6.872686041889438 5.208333333333442 1 6.992967347970596 5.34722222222233 1 6.992967347970604 5.416666666666766 1 7.113248654051775 4.791666666666963 1 3.865653389860125 4.652777777778074 1 3.865653389860117 4.583333333333636 1 3.74537208377894 4.513888888889184 1 3.865653389860108 4.375000000000295 1 3.8656533898601 4.930555555555851 1 3.865653389860133 4.861111111111414 1 3.745372083778957 5.000000000000292 1 3.985934695941312 5.069444444444743 1 3.865653389860144 5.069444444444732 1 4.106216002022491 6.597222222222308 1 7.233529960133033 6.527777777777874 1 7.113248654051858 6.458333333333434 1 6.992967347970675 6.388888888888992 1 6.872686041889501 6.59722222222231 1 6.992967347970691 4.930555555555864 1 3.625090777697788 4.791666666666977 1 3.62509077769778 4.722222222222539 1 3.504809471616604 4.652777777778088 1 3.625090777697772 4.513888888889198 1 3.625090777697763 5.069444444444754 1 3.625090777697797 5.000000000000316 1 3.50480947161662 5.138888888889193 1 3.745372083778975 5.208333333333645 1 3.625090777697808 5.208333333333634 1 3.865653389860155 5.069444444444768 1 3.384528165535453 4.93055555555588 1 3.384528165535444 4.861111111111443 1 3.264246859454269 4.791666666666991 1 3.384528165535436 4.652777777778102 1 3.384528165535428 5.208333333333656 1 3.384528165535461 5.13888888888922 1 3.264246859454285 5.277777777778093 1 3.504809471616636 5.347222222222545 1 3.384528165535468 5.347222222222534 1 3.625090777697815 5.208333333333671 1 3.143965553373116 5.069444444444782 1 3.143965553373108 4.930555555555895 1 3.143965553373101 4.791666666667006 1 3.143965553373092 5.000000000000346 1 3.023684247291932 5.486111111111434 1 3.384528165535476 5.416666666666996 1 3.264246859454301 5.486111111111448 1 3.14396555337313 5.347222222222559 1 3.143965553373122 5.277777777778121 1 3.023684247291945 4.72222222222257 1 3.023684247291916 4.652777777778118 1 3.143965553373084 4.513888888889229 1 3.143965553373075 4.583333333333665 1 3.264246859454252 4.513888888889213 1 3.38452816553542 5.555555555555872 1 3.504809471616654 5.625000000000322 1 3.384528165535486 5.486111111111422 1 3.625090777697824 5.625000000000311 1 3.625090777697833 5.416666666666973 1 3.745372083778995 5.763888888889212 1 3.384528165535495 5.694444444444774 1 3.264246859454318 5.763888888889225 1 3.143965553373145 5.625000000000336 1 3.143965553373136 5.555555555555898 1 3.023684247291958 5.833333333333648 1 3.504809471616673 5.9027777777781 1 3.384528165535504 5.763888888889194 1 3.625090777697848 5.902777777778082 1 3.625090777697857 5.694444444444745 1 3.745372083779018 6.041666666666988 1 3.384528165535513 5.972222222222552 1 3.264246859454335 6.041666666667004 1 3.143965553373162 5.902777777778115 1 3.143965553373153 5.833333333333677 1 3.023684247291972 6.111111111111425 1 3.504809471616688 6.180555555555878 1 3.384528165535519 6.041666666666965 1 3.625090777697864 6.180555555555855 1 3.625090777697871 5.972222222222511 1 3.74537208377904 6.319444444444766 1 3.384528165535527 6.25000000000033 1 3.264246859454352 6.319444444444783 1 3.143965553373179 6.180555555555895 1 3.143965553373171 6.111111111111457 1 3.023684247291988 6.388888888889202 1 3.504809471616702 6.458333333333654 1 3.384528165535534 6.319444444444746 1 3.625090777697868 6.458333333333633 1 3.625090777697876 6.250000000000286 1 3.745372083779045 6.597222222222542 1 3.384528165535544 6.527777777778106 1 3.264246859454369 6.597222222222561 1 3.1439655533732 6.458333333333672 1 3.14396555337319 6.388888888889237 1 3.023684247292009 6.666666666666978 1 3.50480947161672 6.73611111111143 1 3.384528165535555 6.597222222222515 1 3.625090777697888 6.736111111111402 1 3.625090777697898 6.527777777778057 1 3.745372083779054 6.87500000000032 1 3.384528165535565 6.805555555555884 1 3.264246859454389 6.875000000000339 1 3.143965553373223 6.73611111111145 1 3.143965553373213 6.666666666667016 1 3.023684247292033 6.944444444444756 1 3.504809471616742 7.013888888889209 1 3.384528165535577 6.875000000000298 1 3.625090777697907 7.013888888889187 1 3.625090777697919 6.805555555555834 1 3.745372083779075 7.013888888888925 1 7.955217796620098 6.944444444444479 1 7.834936490538927 7.152777777777819 1 8.195780408782454 7.083333333333379 1 8.075499102701276 7.152777777777803 1 7.95521779662012 7.152777777778099 1 3.384528165535587 7.083333333333663 1 3.264246859454411 7.013888888889227 1 3.143965553373234 6.944444444444793 1 3.023684247292057 7.152777777778118 1 3.143965553373245 7.083333333333623 1 3.745372083779094 7.152777777778081 1 3.625090777697929 7.291666666666971 1 3.625090777697938 7.222222222222535 1 3.504809471616762 7.291666666666989 1 3.384528165535596 7.013888888889164 1 3.865653389860261 7.152777777778057 1 3.865653389860272 6.875000000000256 1 3.865653389860252 6.944444444444692 1 3.985934695941429 6.736111111111361 1 3.865653389860243 5.625000000000074 1 7.474092572295289 5.694444444444514 1 7.594373878376466 5.625000000000063 1 7.714655184457627 5.763888888888962 1 7.714655184457645 5.833333333333411 1 7.834936490538821 5.625000000000348 1 2.903402941210786 5.486111111111461 1 2.90340294121078 5.416666666667021 1 2.783121635129604 5.347222222222571 1 2.903402941210776 5.208333333333682 1 2.90340294121077 7.013888888889248 1 2.903402941210892 6.87500000000036 1 2.903402941210881 6.805555555555926 1 2.783121635129703 6.736111111111471 1 2.903402941210869 6.597222222222582 1 2.903402941210856 7.152777777778135 1 2.903402941210904 7.083333333333702 1 2.783121635129727 7.222222222222571 1 3.02368424729208 7.291666666667025 1 2.903402941210915 7.291666666667008 1 3.143965553373256 7.222222222222493 1 3.985934695941449 7.291666666666952 1 3.865653389860282 7.430555555555841 1 3.865653389860293 7.361111111111406 1 3.745372083779116 7.430555555555861 1 3.625090777697949 7.152777777778039 1 4.106216002022616 7.291666666666933 1 4.106216002022625 7.013888888889138 1 4.106216002022604 7.083333333333579 1 4.226497308103781 6.875000000000231 1 4.106216002022594 7.361111111111369 1 4.226497308103804 7.430555555555824 1 4.106216002022637 7.569444444444713 1 4.106216002022649 7.500000000000277 1 3.985934695941471 7.569444444444732 1 3.865653389860305 7.291666666666916 1 4.34677861418497 7.430555555555806 1 4.346778614184981 7.152777777778022 1 4.346778614184959 7.222222222222458 1 4.467059920266136 7.013888888889121 1 4.346778614184948 7.569444444444477 1 8.917468245269472 7.500000000000038 1 8.797186939188295 7.569444444444493 1 8.676905633107125 7.430555555555607 1 8.676905633107118 7.361111111111168 1 8.556624327025947 7.152777777778156 1 2.662840329048562 7.013888888889269 1 2.66284032904855 6.944444444444834 1 2.542559022967369 6.875000000000379 1 2.662840329048534 6.736111111111491 1 2.662840329048522 7.291666666667042 1 2.662840329048572 7.22222222222261 1 2.542559022967396 7.361111111111478 1 2.783121635129747 7.430555555555931 1 2.662840329048581 7.430555555555914 1 2.903402941210925 7.500000000000242 1 4.467059920266157 7.569444444444695 1 4.346778614184991 7.638888763307119 1 4.226497380608647 7.708333207751572 1 4.106216074527481 7.708333207751554 1 4.346778686689824 7.430555555555788 1 4.587341226347323 7.569444444444678 1 4.587341226347334 7.291666666666897 1 4.587341226347311 7.361111111111334 1 4.707622532428488 7.152777777778003 1 4.5873412263473 7.291666666667057 1 2.422277716886224 7.152777777778171 1 2.422277716886214 7.083333333333724 1 2.301996410805024 7.013888888889277 1 2.422277716886195 6.875000000000387 1 2.422277716886179 7.43055555555595 1 2.422277716886232 7.361111111111511 1 2.30199641080505 7.500000000000383 1 2.542559022967415 7.569444444444837 1 2.42227771688624 7.569444444444819 1 2.662840329048591 7.708333333333621 1 3.865653389860316 7.638888888889186 1 3.745372083779138 7.847222075710129 1 4.10621608661163 7.777777756847724 1 3.985934708025632 7.847222201292178 1 3.865653401944465 7.638888888889113 1 4.70762253242851 7.708333333333567 1 4.587341226347343 7.847221468730265 1 4.587341661376284 7.77777702428583 1 4.467060355295107 7.847221343148252 1 4.346779121718764 7.569444444444661 1 4.827903838509677 7.708333333333551 1 4.827903838509687 7.43055555555577 1 4.827903838509666 7.500000000000207 1 4.948185144590843 7.291666666666879 1 4.827903838509654 7.777777777777999 1 4.94818514459087 7.847222222222451 1 4.827903838509704 7.986111111111364 1 4.827903838509728 7.916666666666916 1 4.707622532428545 7.986110357619179 1 4.587341661376309 7.708333333333536 1 5.068466450672032 7.847222222222436 1 5.068466450672048 7.569444444444645 1 5.068466450672021 7.638888888889083 1 5.188747756753199 7.430555555555754 1 5.068466450672011 7.152777777778169 1 2.181715104723851 7.013888888889276 1 2.181715104723831 7.430555555555954 1 2.181715104723865 7.29166666666706 1 2.181715104723858 7.222222222222612 1 2.061433798642665 6.7361111111115 1 2.422277716886163 6.805555555555943 1 2.301996410804988 6.875000000000385 1 2.181715104723819 6.736111111111499 1 2.181715104723803 6.944444444444832 1 2.061433798642645 7.708333333333727 1 2.422277716886251 7.638888888889294 1 2.301996410805067 7.708333333333737 1 2.181715104723887 7.569444444444848 1 2.181715104723877 7.500000000000398 1 2.061433798642685 7.777777777778162 1 2.542559022967437 7.847222222222618 1 2.422277716886263 7.708333333333711 1 2.662840329048601 7.847222222222602 1 2.662840329048613 7.638888888889259 1 2.783121635129768 7.986111111111507 1 2.422277716886282 7.916666666667072 1 2.301996410805097 7.986111111111521 1 2.181715104723932 7.847222222222632 1 2.181715104723914 7.777777777778186 1 2.061433798642723 7.15277777777799 1 4.827903838509645 7.222222222222426 1 4.948185144590823 7.013888888889098 1 4.827903838509637 7.083333333333551 1 4.707622532428468 7.013888888889111 1 4.587341226347293 7.916666666666868 1 5.188747756753232 7.98611111111133 1 5.06846645067207 8.124996707096919 1 5.068468351830705 8.055552262652487 1 4.948187045749522 8.124996707096953 1 4.827905739668363 7.847222222222407 1 5.309029062834389 7.986111111111301 1 5.309029062834411 7.70833333333352 1 5.309029062834377 7.777777777777954 1 5.429310368915556 7.569444444444629 1 5.309029062834366 8.055555555555944 1 2.542559022967459 8.125000000000398 1 2.422277716886292 7.986111111111494 1 2.662840329048624 8.125000000000384 1 2.662840329048634 7.916666666667044 1 2.783121635129788 6.180555555555609 1 8.43634302094471 6.25000000000005 1 8.556624327025878 6.041666666666735 1 8.195780408782365 6.111111111111173 1 8.316061714863544 6.041666666666721 1 8.436343020944701 8.055555555555724 1 5.429310368915586 8.125000000000185 1 5.309029062834428 8.1944402717128 1 5.188750165881125 8.263881423253956 1 5.068470760958578 8.263884716157222 1 5.3090314719623 7.708333333333503 1 5.549591674996718 7.847222222222389 1 5.549591674996732 7.916666666666822 1 5.669872981077906 7.986111111111272 1 5.549591674996743 8.125000000000156 1 5.54959167499676 7.569444444444613 1 5.549591674996709 7.638888888889049 1 5.669872981077885 7.500000000000178 1 5.429310368915534 7.430555555555724 1 5.5495916749967 7.43055555555574 1 5.309029062834356 7.84722222222237 1 5.79015428715907 7.986111111111253 1 5.790154287159082 7.708333333333485 1 5.79015428715906 7.777777777777916 1 5.910435593240236 7.569444444444596 1 5.790154287159051 7.430555555555948 1 1.941152492561497 7.361111111111501 1 1.820871186480316 7.291666666667057 1 1.94115249256149 7.152777777778166 1 1.941152492561483 7.569444444444842 1 1.94115249256151 5.902777777778057 1 3.865653389860211 6.041666666666941 1 3.865653389860218 6.319444444444708 1 3.865653389860224 6.180555555555816 1 3.865653389860227 6.111111111111363 1 3.985934695941397 8.263888888889285 1 2.422277716886304 8.194444444444848 1 2.301996410805128 8.263888888889298 1 2.18171510472396 8.125000000000409 1 2.181715104723947 8.055555555555969 1 2.061433798642764 8.055555555555689 1 5.910435593240257 8.125000000000142 1 5.790154287159093 8.263888888889028 1 5.790154287159104 8.19444444444459 1 5.669872981077928 8.263888888889042 1 5.549591674996771 7.986111111111238 1 6.030716899321423 8.125000000000126 1 6.030716899321434 7.847222222222342 1 6.030716899321414 7.916666666666779 1 6.15099820540259 7.708333333333457 1 6.030716899321404 8.263871331383456 1 4.587351363178072 8.124995479047072 1 4.587343836520949 8.194431407892214 1 4.707630059085693 8.263872559433338 1 4.827913266325487 8.055550281110422 1 4.467062965468688 7.291666666666836 1 5.549591674996691 7.361111111111272 1 5.669872981077866 7.291666666666818 1 5.790154287159035 7.430555555555706 1 5.790154287159043 7.500000000000142 1 5.910435593240219 8.333333333333719 1 2.542559022967481 8.402777777778173 1 2.422277716886316 8.263888888889269 1 2.662840329048646 8.402777777778155 1 2.662840329048658 8.194444444444819 1 2.783121635129811 8.194444444444564 1 6.150998205402614 8.263888888889015 1 6.030716899321447 8.402777777777901 1 6.030716899321457 8.333333333333464 1 5.910435593240278 8.402777777777914 1 5.790154287159114 8.125000000000105 1 6.271279511483779 8.263888888888994 1 6.271279511483792 7.986111111111212 1 6.271279511483766 8.055555555555642 1 6.391560817564946 7.847222222222316 1 6.271279511483757 8.402777777778191 1 2.181715104723974 8.333333333333751 1 2.061433798642794 8.472222222222625 1 2.30199641080515 8.541666666667078 1 2.181715104723984 8.541666666667059 1 2.422277716886326 8.402777777778203 1 1.941152492561629 8.26388888888931 1 1.941152492561614 8.19444444444486 1 1.820871186480427 8.125000000000409 1 1.941152492561593 7.986111111111519 1 1.941152492561577 8.333333333333425 1 6.391560817564971 8.402777777777883 1 6.271279511483804 8.47222222222234 1 6.150998205402635 8.541666666666789 1 6.030716899321465 8.541666666666771 1 6.271279511483813 7.986111111111185 1 6.511842123646111 8.125000000000078 1 6.511842123646123 8.19444444444451 1 6.632123429727303 8.263888888888967 1 6.511842123646137 8.402777777777857 1 6.511842123646149 7.847222222222296 1 6.511842123646101 7.916666666666732 1 6.632123429727279 7.777777777777862 1 6.391560817564926 7.708333333333409 1 6.511842123646094 7.70833333333343 1 6.27127951148375 8.125000000000057 1 6.752404735808466 8.263888888888946 1 6.752404735808479 7.986111111111168 1 6.752404735808455 8.055555555555603 1 6.872686041889633 7.847222222222278 1 6.752404735808446 8.333333333333387 1 6.872686041889652 8.402777777777843 1 6.752404735808488 8.541666666666735 1 6.752404735808494 8.472222222222292 1 6.632123429727321 8.54166666666675 1 6.511842123646154 7.986111111111149 1 6.992967347970795 8.125000000000037 1 6.992967347970806 8.194444444444475 1 7.113248654051982 8.263888888888928 1 6.992967347970819 8.402777777777825 1 6.992967347970828 7.847222222222261 1 6.992967347970786 7.916666666666696 1 7.113248654051959 7.777777777777825 1 6.872686041889614 7.708333333333371 1 6.992967347970778 7.708333333333389 1 6.752404735808438 8.125000000000018 1 7.233529960133144 8.263888888888909 1 7.233529960133156 7.986111111111132 1 7.233529960133136 8.055555555555566 1 7.353811266214311 7.847222222222245 1 7.233529960133128 8.333333333333341 1 7.353811266214331 8.402777777777796 1 7.23352996013317 8.541666666666684 1 7.233529960133179 8.472222222222252 1 7.113248654052004 8.54166666666671 1 6.992967347970837 8.263888888888891 1 7.474092572295497 8.402777777777779 1 7.47409257229551 8.125000000000004 1 7.474092572295486 8.194444444444439 1 7.594373878376667 7.986111111111116 1 7.474092572295481 8.680555555555678 1 6.030716899321472 8.611111111111239 1 5.910435593240294 8.680555555555681 1 5.790154287159125 8.541666666666792 1 5.790154287159119 8.472222222222356 1 5.669872981077944 8.5416666666671 1 1.941152492561641 8.472222222222658 1 1.820871186480462 8.611111111111533 1 2.061433798642819 8.680555555555989 1 1.941152492561651 8.680555555555967 1 2.181715104723994 8.541666666667115 1 1.700589880399296 8.402777777778219 1 1.700589880399284 8.33333333333378 1 1.580308574318104 8.263888888889323 1 1.70058988039927 8.125000000000419 1 1.700589880399248 8.472222222222594 1 2.783121635129833 8.541666666667044 1 2.662840329048667 8.680555555555932 1 2.662840329048678 8.611111111111494 1 2.542559022967503 8.680555555555946 1 2.422277716886337 8.402777777778144 1 2.903402941211 8.541666666667034 1 2.903402941211009 8.263888888889255 1 2.903402941210989 8.333333333333695 1 3.023684247292166 8.125000000000371 1 2.903402941210977 8.472222222222214 1 7.594373878376684 8.541666666666664 1 7.474092572295518 8.680529022625461 1 7.474107142006504 8.611084578181025 1 7.353825835925331 8.68052902262548 1 7.233544529844165 8.402777777777768 1 7.714655184457853 8.541666666666655 1 7.714655184457861 8.263888888888879 1 7.714655184457848 8.33333333333332 1 7.834936490539024 8.124999999999991 1 7.714655184457838 7.569444444444484 1 6.992967347970772 7.638888888888921 1 7.113248654051944 7.569444444444472 1 7.233529960133115 7.70833333333336 1 7.23352996013312 7.777777777777795 1 7.353811266214299 8.611111111111093 1 7.83493649053904 8.680555555555539 1 7.71465518445787 8.819395818943686 1 7.714679488959328 8.749951374499251 1 7.59439818287815 8.819369286013611 1 7.474131446507963 8.263888888888868 1 7.955217796620193 8.402777777777757 1 7.955217796620198 8.472222222222197 1 8.075499102701375 8.541666666666647 1 7.955217796620207 8.68055555555553 1 7.955217796620216 8.124999999999982 1 7.955217796620188 8.19444444444442 1 8.075499102701363 8.055555555555541 1 7.834936490539015 7.986111111111092 1 7.955217796620184 7.986111111111102 1 7.714655184457833 8.402777777777745 1 8.195780408782547 8.541666666666634 1 8.195780408782554 8.263888888888864 1 8.195780408782532 8.333333333333302 1 8.316061714863709 8.124999999999977 1 8.195780408782525 8.61111111111147 1 3.023684247292185 8.68055555555592 1 2.903402941211018 8.749981601009615 1 2.783132257792117 8.819426045454064 1 2.662850951710953 8.819426045454051 1 2.903413563873293 8.54166666666702 1 3.14396555337335 8.680555555555905 1 3.143965553373359 8.402777777778134 1 3.143965553373344 8.47222222222257 1 3.264246859454518 8.263888888889245 1 3.143965553373333 8.611111111111072 1 8.316061714863732 8.680555555555523 1 8.195780408782563 8.819444444444414 1 8.195780408782571 8.749999999999975 1 8.075499102701393 8.819444444444422 1 7.955217796620226 8.541666666666623 1 8.436343020944896 8.680555555555513 1 8.436343020944905 8.402777777777741 1 8.436343020944882 8.472222222222182 1 8.556624327026054 8.263888888888861 1 8.436343020944868 7.500000000000048 1 6.872686041889599 7.430555555555598 1 6.992967347970765 7.569444444444501 1 6.75240473580843 7.430555555555616 1 6.752404735808422 7.638888888888957 1 6.632123429727262 8.750000000000117 1 6.150998205402651 8.819444444444567 1 6.030716899321479 8.680555555555664 1 6.27127951148382 8.819444444444553 1 6.271279511483828 8.611111111111207 1 6.39156081756499 5.972222222222582 1 2.783121635129624 5.902777777778129 1 2.903402941210797 6.04166666666702 1 2.903402941210806 6.180555555555911 1 2.903402941210815 5.763888888889239 1 2.90340294121079 6.73611111111133 1 4.346778614184933 6.875000000000227 1 4.346778614184938 6.805555555555781 1 4.226497308103764 6.736111111111335 1 4.106216002022588 6.94444444444467 1 4.467059920266117 5.069444444444706 1 4.587341226347181 5.00000000000027 1 4.467059920266005 5.13888888888914 1 4.707622532428362 5.208333333333593 1 4.587341226347197 5.208333333333576 1 4.827903838509538 4.444444444444761 1 3.504809471616587 4.375000000000309 1 3.625090777697754 4.23611111111142 1 3.625090777697745 4.305555555555857 1 3.745372083778921 4.236111111111406 1 3.86565338986009 4.930555555555724 1 6.271279511483562 5.00000000000016 1 6.391560817564742 5.069444444444598 1 6.511842123645918 5.138888888889034 1 6.632123429727089 4.930555555555713 1 6.511842123645901 5.347222222222519 1 4.106216002022519 5.27777777777808 1 3.985934695941339 5.208333333333623 1 4.106216002022504 5.138888888889172 1 4.226497308103671 5.347222222222531 1 3.865653389860169 6.180555555555689 1 6.511842123645988 6.111111111111248 1 6.391560817564814 6.319444444444557 1 6.75240473580833 6.250000000000124 1 6.632123429727159 6.319444444444565 1 6.511842123645995 7.7083333333337 1 2.903402941210945 7.777777777778141 1 3.023684247292122 7.847222222222593 1 2.903402941210955 7.986111111111485 1 2.903402941210965 7.569444444444807 1 2.903402941210934 5.763888888889067 1 5.790154287158931 5.69444444444463 1 5.669872981077755 5.625000000000188 1 5.549591674996586 5.555555555555751 1 5.429310368915413 5.763888888889074 1 5.549591674996595 3.819444444444716 1 4.346778614184755 3.888888888889154 1 4.467059920265932 3.819444444444701 1 4.587341226347098 3.958333333333591 1 4.587341226347108 4.027777777778027 1 4.707622532428282 3.750000000000278 1 4.226497308103582 3.680555555555828 1 4.346778614184749 3.819444444444728 1 4.106216002022411 3.68055555555584 1 4.106216002022403 3.888888888889178 1 3.985934695941241 3.54166666666694 1 4.346778614184743 3.611111111111377 1 4.467059920265918 3.541666666666928 1 4.587341226347087 3.680555555555816 1 4.587341226347093 3.750000000000252 1 4.707622532428268 3.472222222222502 1 4.226497308103568 3.402777777778052 1 4.346778614184736 3.541666666666953 1 4.106216002022398 3.402777777778065 1 4.106216002022391 3.611111111111402 1 3.985934695941227 3.263888888889163 1 4.346778614184728 3.3333333333336 1 4.467059920265903 3.26388888888915 1 4.587341226347072 3.402777777778039 1 4.58734122634708 3.472222222222477 1 4.707622532428255 3.194444444444725 1 4.226497308103553 3.125000000000274 1 4.34677861418472 3.263888888889176 1 4.106216002022386 3.125000000000287 1 4.106216002022377 3.333333333333627 1 3.985934695941216 2.986111111111384 1 4.346778614184712 3.055555555555822 1 4.467059920265887 2.986111111111371 1 4.587341226347055 3.125000000000259 1 4.587341226347064 3.194444444444698 1 4.70762253242824 3.055555555555849 1 3.985934695941201 2.986111111111398 1 4.106216002022369 2.847222222222509 1 4.106216002022362 2.916666666666947 1 4.226497308103538 2.847222222222495 1 4.346778614184705 3.1250000000003 1 3.865653389860034 2.986111111111411 1 3.865653389860026 3.263888888889188 1 3.865653389860043 3.19444444444475 1 3.745372083778868 3.402777777778077 1 3.865653389860049 2.916666666666973 1 3.745372083778851 2.847222222222522 1 3.865653389860018 2.708333333333632 1 3.865653389860012 2.777777777778071 1 3.985934695941187 2.708333333333619 1 4.106216002022355 2.986111111111425 1 3.625090777697682 2.847222222222536 1 3.625090777697674 3.125000000000314 1 3.625090777697689 3.055555555555877 1 3.504809471616513 3.263888888889202 1 3.625090777697697 2.847222222222482 1 4.587341226347048 2.916666666666919 1 4.707622532428224 2.777777777778042 1 4.467059920265875 2.708333333333591 1 4.587341226347043 2.708333333333605 1 4.3467786141847 2.847222222222467 1 4.827903838509392 2.986111111111357 1 4.8279038385094 3.055555555555793 1 4.948185144590576 3.125000000000245 1 4.827903838509408 3.263888888889135 1 4.827903838509416 2.708333333333578 1 4.827903838509385 2.777777777778016 1 4.94818514459056 2.638888888889138 1 4.707622532428209 2.569444444444686 1 4.827903838509378 2.569444444444699 1 4.587341226347036 2.708333333333564 1 5.068466450671728 2.847222222222452 1 5.068466450671735 2.916666666666888 1 5.18874775675291 2.98611111111134 1 5.068466450671743 3.125000000000228 1 5.068466450671751 2.777777777778098 1 3.504809471616499 2.708333333333646 1 3.625090777697667 2.569444444444756 1 3.625090777697662 2.638888888889194 1 3.745372083778838 2.569444444444743 1 3.865653389860007 2.84722222222255 1 3.38452816553533 2.70833333333366 1 3.384528165535323 2.986111111111439 1 3.384528165535337 2.916666666667002 1 3.264246859454161 3.125000000000329 1 3.384528165535343 2.569444444444676 1 5.068466450671721 2.638888888889113 1 5.188747756752896 2.500000000000236 1 4.948185144590545 2.430555555555785 1 5.068466450671712 2.430555555555796 1 4.82790383850937 2.569444444444662 1 5.309029062834064 2.70833333333355 1 5.309029062834071 2.777777777777986 1 5.429310368915246 2.847222222222436 1 5.309029062834078 2.986111111111324 1 5.309029062834085 2.638888888889221 1 3.264246859454147 2.56944444444477 1 3.384528165535316 2.430555555555879 1 3.38452816553531 2.500000000000317 1 3.504809471616486 2.430555555555865 1 3.625090777697657 2.708333333333674 1 3.143965553372978 2.569444444444783 1 3.143965553372971 2.847222222222563 1 3.143965553372986 2.777777777778125 1 3.02368424729181 2.986111111111453 1 3.143965553372993 2.430555555555774 1 5.309029062834055 2.50000000000021 1 5.429310368915231 2.291666666666896 1 5.068466450671704 2.361111111111336 1 5.18874775675288 2.291666666666885 1 5.309029062834046 2.43055555555576 1 5.549591674996399 2.569444444444648 1 5.549591674996408 2.638888888889086 1 5.669872981077583 2.708333333333537 1 5.549591674996415 2.847222222222425 1 5.549591674996421 2.500000000000344 1 3.023684247291797 2.430555555555892 1 3.143965553372965 2.361111111111439 1 3.264246859454135 2.291666666666987 1 3.384528165535305 2.291666666667 1 3.14396555337296 2.569444444444797 1 2.903402941210627 2.430555555555905 1 2.903402941210621 2.708333333333687 1 2.903402941210635 2.638888888889248 1 2.78312163512946 2.847222222222575 1 2.903402941210643 2.222222222222535 1 3.504809471616477 2.152777777778082 1 3.625090777697649 2.291666666666973 1 3.625090777697652 2.361111111111413 1 3.745372083778828 2.152777777778095 1 3.384528165535301 2.222222222222457 1 4.948185144590529 2.152777777778008 1 5.068466450671696 2.291666666666904 1 4.827903838509363 2.152777777778016 1 4.827903838509355 2.361111111111355 1 4.707622532428196 2.361111111111468 1 2.783121635129446 2.291666666667015 1 2.903402941210615 2.152777777778107 1 3.143965553372955 2.22222222222256 1 3.023684247291786 2.152777777778122 1 2.90340294121061 2.708333333333699 1 2.662840329048291 2.56944444444481 1 2.662840329048284 2.500000000000373 1 2.542559022967108 2.430555555555922 1 2.662840329048277 2.291666666667031 1 2.662840329048271 2.847222222222588 1 2.662840329048299 2.777777777778151 1 2.542559022967123 2.916666666667026 1 2.783121635129475 2.986111111111478 1 2.662840329048306 2.986111111111464 1 2.90340294121065 2.847222222222602 1 2.422277716885955 2.708333333333712 1 2.422277716885947 2.569444444444824 1 2.422277716885939 2.430555555555936 1 2.422277716885933 2.638888888889276 1 2.301996410804771 2.986111111111491 1 2.422277716885963 2.916666666667053 1 2.301996410804787 3.055555555555928 1 2.542559022967139 3.125000000000379 1 2.422277716885971 3.125000000000366 1 2.662840329048314 2.361111111111498 1 2.301996410804757 2.291666666667048 1 2.422277716885926 2.152777777778158 1 2.422277716885919 2.222222222222595 1 2.542559022967095 2.152777777778142 1 2.662840329048264 2.291666666666871 1 5.549591674996391 2.361111111111309 1 5.669872981077567 2.152777777777995 1 5.309029062834039 2.222222222222433 1 5.429310368915215 2.152777777777982 1 5.549591674996384 2.569444444444636 1 5.790154287158751 2.708333333333526 1 5.790154287158758 2.430555555555746 1 5.790154287158743 2.500000000000186 1 5.910435593239919 2.291666666666858 1 5.790154287158735 2.777777777777966 1 5.910435593239935 2.847222222222417 1 5.790154287158765 2.986111111111303 1 5.790154287158773 2.916666666666862 1 5.669872981077598 2.986111111111311 1 5.549591674996429 2.430555555555735 1 6.030716899321085 2.569444444444624 1 6.030716899321094 2.638888888889062 1 6.150998205402269 2.708333333333513 1 6.030716899321103 2.847222222222405 1 6.03071689932111 2.291666666666846 1 6.030716899321078 2.361111111111285 1 6.150998205402252 2.222222222222408 1 5.910435593239904 2.152777777777958 1 6.030716899321071 2.15277777777797 1 5.790154287158728 2.569444444444611 1 6.271279511483437 2.708333333333501 1 6.271279511483446 2.430555555555722 1 6.271279511483426 2.50000000000016 1 6.391560817564603 2.291666666666833 1 6.271279511483418 2.777777777777938 1 6.391560817564621 2.84722222222239 1 6.271279511483453 2.986111111111283 1 6.271279511483461 2.916666666666845 1 6.150998205402285 2.986111111111297 1 6.030716899321117 2.708333333333487 1 6.51184212364579 2.847222222222376 1 6.511842123645797 2.569444444444599 1 6.511842123645781 2.638888888889037 1 6.632123429726958 2.43055555555571 1 6.511842123645771 2.916666666666811 1 6.632123429726975 2.986111111111263 1 6.511842123645806 3.125000000000151 1 6.511842123645813 3.055555555555717 1 6.391560817564636 3.125000000000171 1 6.271279511483468 2.847222222222359 1 6.752404735808142 2.986111111111246 1 6.752404735808151 2.708333333333472 1 6.752404735808135 2.777777777777907 1 6.87268604188931 2.569444444444585 1 6.752404735808126 3.055555555555683 1 6.872686041889324 3.125000000000135 1 6.752404735808157 3.194444444444587 1 6.63212342972699 3.26388888888904 1 6.511842123645819 3.263888888889024 1 6.752404735808163 2.708333333333457 1 6.992967347970477 2.847222222222344 1 6.992967347970485 2.916666666666782 1 7.11324865405166 2.986111111111232 1 6.992967347970493 3.125000000000122 1 6.9929673479705 2.569444444444567 1 6.992967347970465 2.638888888889005 1 7.113248654051641 2.500000000000133 1 6.872686041889288 2.430555555555681 1 6.992967347970453 2.430555555555697 1 6.752404735808113 2.847222222222333 1 7.233529960132828 2.986111111111222 1 7.233529960132836 2.708333333333444 1 7.233529960132818 2.777777777777883 1 7.353811266213995 2.569444444444554 1 7.233529960132808 3.055555555555666 1 7.353811266214013 3.125000000000115 1 7.233529960132845 3.263888888889005 1 7.23352996013285 3.19444444444456 1 7.113248654051674 3.263888888889011 1 6.992967347970506 2.986111111111214 1 7.474092572295179 3.125000000000107 1 7.474092572295188 2.708333333333433 1 7.474092572295163 2.847222222222324 1 7.474092572295172 2.916666666666765 1 7.594373878376347 3.402777777777898 1 7.233529960132858 3.333333333333454 1 7.353811266214028 3.263888888889002 1 7.474092572295195 3.402777777777895 1 7.474092572295202 3.194444444444549 1 7.594373878376362 2.569444444444545 1 7.474092572295156 2.638888888888985 1 7.594373878376334 2.500000000000105 1 7.353811266213978 2.430555555555656 1 7.474092572295149 2.430555555555665 1 7.233529960132801 2.569444444444533 1 7.714655184457503 2.708333333333423 1 7.714655184457509 2.777777777777859 1 7.834936490538685 2.847222222222311 1 7.714655184457516 2.986111111111201 1 7.714655184457523 2.430555555555644 1 7.714655184457496 2.500000000000082 1 7.834936490538672 2.361111111111206 1 7.594373878376318 2.291666666666754 1 7.714655184457488 2.291666666666766 1 7.474092572295141 2.01388888888907 1 6.030716899321066 2.083333333333508 1 6.15099820540224 2.013888888889056 1 6.271279511483407 2.152777777777944 1 6.271279511483412 2.222222222222381 1 6.391560817564585 2.986111111111505 1 2.18171510472362 2.847222222222616 1 2.181715104723612 2.777777777778179 1 2.061433798642436 2.708333333333727 1 2.181715104723604 2.569444444444838 1 2.181715104723596 3.125000000000393 1 2.181715104723628 3.055555555555957 1 2.061433798642452 3.194444444444831 1 2.301996410804803 3.263888888889282 1 2.181715104723636 3.263888888889268 1 2.422277716885979 2.430555555555629 1 7.95521779661984 2.569444444444518 1 7.955217796619847 2.708333333333409 1 7.955217796619855 2.847222222222297 1 7.955217796619861 2.638888888888955 1 8.075499102701023 2.152777777777866 1 7.714655184457478 2.222222222222304 1 7.834936490538656 2.152777777777849 1 7.955217796619825 2.291666666666738 1 7.955217796619835 2.361111111111174 1 8.075499102701009 2.083333333333431 1 7.594373878376302 2.01388888888898 1 7.714655184457469 2.152777777777879 1 7.474092572295132 2.013888888888993 1 7.474092572295123 2.222222222222329 1 7.353811266213962 1.875000000000092 1 7.71465518445746 1.944444444444527 1 7.834936490538637 1.875000000000074 1 7.955217796619804 2.013888888888962 1 7.955217796619813 2.083333333333396 1 8.075499102700993 3.125000000000408 1 1.941152492561284 2.986111111111519 1 1.941152492561276 2.916666666667082 1 1.8208711864801 2.84722222222263 1 1.941152492561268 2.708333333333742 1 1.94115249256126 3.263888888889296 1 1.941152492561292 3.194444444444859 1 1.820871186480115 3.333333333333734 1 2.061433798642467 3.402777777778184 1 1.941152492561299 3.40277777777817 1 2.181715104723643 1.805555555555657 1 7.594373878376283 1.736111111111204 1 7.714655184457451 1.875000000000107 1 7.474092572295115 1.736111111111219 1 7.474092572295106 1.944444444444555 1 7.353811266213945 3.402777777777928 1 6.511842123645826 3.333333333333492 1 6.391560817564649 3.402777777777944 1 6.271279511483479 3.263888888889056 1 6.271279511483472 3.194444444444622 1 6.150998205402297 1.736111111111187 1 7.955217796619797 1.805555555555622 1 8.075499102700974 1.597222222222314 1 7.714655184457444 1.66666666666675 1 7.834936490538622 1.597222222222297 1 7.95521779661979 1.736111111111169 1 8.195780408782138 1.875000000000056 1 8.195780408782147 1.944444444444492 1 8.31606171486332 2.013888888888944 1 8.195780408782154 2.152777777777832 1 8.195780408782166 3.402777777778158 1 2.422277716885985 3.333333333333707 1 2.542559022967153 3.263888888889256 1 2.662840329048322 3.402777777778146 1 2.662840329048328 3.194444444444805 1 2.783121635129489 2.986111111111533 1 1.700589880398932 2.847222222222644 1 1.700589880398924 3.26388888888931 1 1.700593235000742 3.125000000000422 1 1.700593235000734 3.055555555555984 1 1.580311928919559 2.777777777778208 1 1.580308574317749 2.708333333333757 1 1.700589880398916 2.569444444444868 1 1.700589880398908 2.638888888889305 1 1.820871186480084 2.569444444444853 1 1.941152492561252 3.541666666667072 1 1.941152492561307 3.472222222222635 1 1.820871186480131 3.541666666667086 1 1.700589880398963 3.402777777778198 1 1.700589880398955 3.333333333333761 1 1.580311928919574 1.666666666666783 1 7.353811266213929 1.597222222222332 1 7.474092572295096 1.458333333333444 1 7.474092572295086 1.527777777777879 1 7.594373878376263 1.458333333333426 1 7.714655184457434 1.597222222222282 1 8.195780408782131 1.666666666666717 1 8.316061714863304 1.527792972164209 1 8.075490330217896 1.458348527719757 1 8.19577163629906 1.458348527719773 1 7.95520902413672 1.597222222222268 1 8.43634302094447 1.736111111111154 1 8.436343020944479 1.805555555555593 1 8.556624327025652 1.875000000000043 1 8.436343020944488 2.013888888888931 1 8.436343020944495 3.263888888889218 1 3.384528165535349 3.19444444444478 1 3.264246859454174 3.333333333333654 1 3.504809471616524 3.402777777778106 1 3.384528165535355 3.40277777777809 1 3.625090777697703 2.847222222222659 1 1.46002726823658 2.708333333333772 1 1.460027268236572 2.986111111111548 1 1.460047395847357 2.916666666667111 1 1.33976608976618 3.125000000000436 1 1.460050750449158 2.638888888889334 1 1.339745962155396 2.569444444444883 1 1.460027268236564 2.430555555555993 1 1.460027268236556 2.500000000000431 1 1.580308574317732 2.430555555555979 1 1.7005898803989 1.458333333333381 1 8.436343020944461 1.527777777777819 1 8.556624327025636 1.388888888888942 1 8.316061714863284 1.319444444444493 1 8.436343020944451 1.319459638830869 1 8.19577163629905 1.736111111111234 1 7.23352996013276 1.597222222222348 1 7.23352996013275 2.013888888889004 1 7.233529960132776 1.875000000000118 1 7.233529960132769 1.805555555555682 1 7.11324865405159 1.388888888889009 1 7.353811266213905 1.319444444444557 1 7.474092572295072 1.458333333333464 1 7.23352996013274 1.319444444444576 1 7.233529960132727 1.527777777777914 1 7.113248654051572 1.736111111111147 1 8.67690563310682 1.875000000000035 1 8.676905633106827 1.458333333333376 1 8.676905633106808 1.597222222222262 1 8.676905633106816 1.666666666666704 1 8.797186939187991 1.944444444444474 1 8.797186939188 2.01388888888892 1 8.676905633106834 2.152777777777806 1 8.676905633106838 2.083333333333367 1 8.556624327025666 2.152777777777817 1 8.436343020944499 1.180555555555602 1 8.43634302094444 1.250000000000042 1 8.556624327025617 1.180555555555594 1 8.676905633106788 1.319444444444485 1 8.676905633106799 1.388888888888928 1 8.797186939187981 1.180555555555667 1 7.474092572295058 1.250000000000102 1 7.594373878376238 1.180555555555648 1 7.714655184457404 1.319444444444537 1 7.714655184457418 1.388888888888971 1 7.834936490538599 2.916666666666734 1 8.075499102701034 2.986111111111185 1 7.955217796619865 3.125000000000079 1 7.95521779661987 3.055555555555642 1 7.834936490538697 3.125000000000095 1 7.714655184457529 2.847222222222283 1 8.195780408782204 2.98611111111117 1 8.195780408782207 2.708333333333392 1 8.195780408782195 2.777777777777828 1 8.31606171486337 2.569444444444501 1 8.195780408782188 3.055555555555608 1 8.316061714863382 3.125000000000059 1 8.195780408782213 3.26388888888895 1 8.195780408782216 3.194444444444513 1 8.075499102701041 3.26388888888897 1 7.955217796619873 2.986111111111156 1 8.436343020944555 3.125000000000044 1 8.436343020944561 2.847222222222265 1 8.436343020944541 2.916666666666702 1 8.55662432702572 2.708333333333375 1 8.436343020944534 3.194444444444481 1 8.556624327025739 3.263888888888933 1 8.436343020944566 3.40277777777782 1 8.436343020944571 3.333333333333384 1 8.316061714863393 3.402777777777838 1 8.19578040878222 3.125000000000023 1 8.676905633106912 3.263888888888911 1 8.676905633106916 2.847222222222245 1 8.676905633106884 2.986111111111135 1 8.676905633106898 3.055555555555565 1 8.797186939188077 3.47222222222226 1 8.556624327025748 3.541666666666711 1 8.436343020944577 3.402777777777803 1 8.676905633106925 3.541666666666694 1 8.67690563310693 3.333333333333345 1 8.797186939188098 3.680555555555598 1 8.436343020944584 3.611111111111159 1 8.316061714863405 3.680555555555609 1 8.195780408782237 3.541666666666722 1 8.19578040878223 3.472222222222288 1 8.075499102701052 3.750000000000039 1 8.556624327025759 3.819444444444485 1 8.436343020944589 3.680555555555591 1 8.67690563310695 3.819444444444478 1 8.676905633106955 3.611111111111134 1 8.797186939188126 3.958333333333374 1 8.436343020944594 3.888888888888933 1 8.316061714863419 3.958333333333382 1 8.195780408782248 3.819444444444493 1 8.195780408782241 3.750000000000058 1 8.075499102701066 4.027777777777813 1 8.556624327025771 4.097222222222261 1 8.436343020944602 3.958333333333369 1 8.676905633106969 4.097222222222256 1 8.676905633106976 3.888888888888922 1 8.79718693918816 4.23611111111115 1 8.436343020944609 4.16666666666671 1 8.316061714863434 4.236111111111159 1 8.195780408782264 4.097222222222269 1 8.195780408782255 4.027777777777829 1 8.075499102701077 4.305555555555588 1 8.556624327025796 4.375000000000039 1 8.43634302094463 4.236111111111144 1 8.676905633106985 4.375000000000032 1 8.676905633107005 4.1666666666667 1 8.797186939188183 4.375000000000049 1 8.195780408782273 4.305555555555607 1 8.075499102701095 4.51388888888893 1 8.436343020944637 4.444444444444492 1 8.316061714863451 4.51388888888894 1 8.19578040878228 4.375000000000055 1 7.955217796619926 4.236111111111164 1 7.955217796619918 4.16666666666673 1 7.834936490538742 4.097222222222281 1 7.95521779661991 3.958333333333394 1 7.955217796619902 4.652777777777802 1 8.67690563310703 4.583333333333368 1 8.556624327025819 4.513888888888911 1 8.676905633107026 4.444444444444466 1 8.797186939188215 4.652777777777821 1 8.436343020944641 4.513888888888943 1 7.955217796619928 4.444444444444501 1 7.834936490538754 4.583333333333387 1 8.075499102701105 4.652777777777834 1 7.955217796619932 4.65277777777783 1 8.195780408782284 4.51388888888895 1 7.714655184457584 4.37500000000006 1 7.71465518445758 4.305555555555625 1 7.594373878376404 4.236111111111176 1 7.714655184457573 4.097222222222293 1 7.714655184457564 4.652777777777838 1 7.714655184457582 4.583333333333398 1 7.594373878376411 4.791666666666723 1 7.955217796619935 4.722222222222278 1 7.834936490538759 4.791666666666726 1 7.714655184457585 4.37500000000008 1 7.474092572295232 4.236111111111196 1 7.474092572295225 4.513888888888964 1 7.474092572295238 4.444444444444535 1 7.353811266214059 4.652777777777853 1 7.474092572295236 4.861111111111166 1 8.075499102701109 4.93055555555561 1 7.955217796619936 4.79166666666672 1 8.195780408782284 4.930555555555607 1 8.195780408782284 4.722222222222273 1 8.316061714863459 2.430555555555852 1 3.865653389860003 2.50000000000029 1 3.985934695941177 2.430555555555837 1 4.106216002022346 2.569444444444728 1 4.10621600202235 2.638888888889166 1 4.226497308103525 3.333333333333569 1 4.948185144590592 3.402777777778022 1 4.827903838509425 3.263888888889117 1 5.068466450671758 3.402777777778003 1 5.068466450671767 3.194444444444663 1 5.188747756752926 1.94444444444463 1 5.910435593239892 1.875000000000181 1 6.03071689932106 2.013888888889081 1 5.790154287158721 1.875000000000192 1 5.790154287158716 2.083333333333532 1 5.669872981077553 1.736111111111292 1 6.030716899321056 1.805555555555732 1 6.15099820540223 1.736111111111281 1 6.271279511483398 1.87500000000017 1 6.271279511483403 1.944444444444605 1 6.391560817564574 1.666666666666853 1 5.910435593239882 1.597222222222404 1 6.030716899321051 1.736111111111301 1 5.790154287158712 1.597222222222413 1 5.790154287158707 1.805555555555753 1 5.669872981077543 1.458333333333515 1 6.030716899321046 1.527777777777954 1 6.15099820540222 1.458333333333506 1 6.271279511483388 1.597222222222394 1 6.271279511483393 1.666666666666832 1 6.391560817564566 1.388888888889074 1 5.910435593239869 1.319444444444625 1 6.030716899321039 1.527777777777973 1 5.669872981077532 1.458333333333524 1 5.790154287158702 1.319444444444634 1 5.790154287158694 1.180624061495248 1 6.030710714300938 1.250068505939689 1 6.150992020382114 1.319444444444626 1 6.271279511483374 1.388888888889066 1 6.391560817564547 1.180624061495249 1 6.271273326463273 1.597222222222423 1 5.549591674996364 1.458333333333534 1 5.549591674996357 1.736111111111313 1 5.549591674996368 1.666666666666874 1 5.429310368915193 1.875000000000204 1 5.549591674996371 1.388888888889095 1 5.429310368915182 1.319444444444645 1 5.54959167499635 1.180555555555757 1 5.549591674996345 1.250000000000195 1 5.669872981077519 1.180555555555746 1 5.790154287158687 1.458333333333546 1 5.309029062834014 1.319444444444657 1 5.309029062834007 1.597222222222435 1 5.309029062834019 1.527777777777998 1 5.188747756752843 1.736111111111326 1 5.309029062834023 3.611111111111511 1 2.061433798642482 3.680555555555961 1 1.941152492561315 3.54166666666706 1 2.181715104723651 3.68055555555595 1 2.181715104723658 3.472222222222609 1 2.301996410804819 3.81944444444485 1 1.941152492561321 3.750000000000411 1 1.820871186480146 3.819444444444863 1 1.700591436043791 3.680555555555974 1 1.700591436043784 3.611111111111537 1 1.580310129962608 3.888888888889289 1 2.061433798642498 3.958333333333739 1 1.941152492561329 3.819444444444839 1 2.181715104723666 3.958333333333727 1 2.181715104723673 3.750000000000388 1 2.301996410804834 4.097222222222628 1 1.941152492561337 4.027777777778189 1 1.820871186480161 4.09722222222264 1 1.700589880398992 3.95833333333375 1 1.700589880398985 3.888888888889313 1 1.580310129962623 4.166666666667066 1 2.061433798642513 4.236111111111517 1 1.941152492561344 4.097222222222616 1 2.18171510472368 4.236111111111505 1 2.181715104723688 4.027777777778166 1 2.301996410804849 4.375000000000405 1 1.941152492561352 4.305555555555967 1 1.820871186480176 4.375000000000417 1 1.700589880399007 4.236111111111528 1 1.700589880398999 4.16666666666709 1 1.580308574317824 4.444444444444843 1 2.061433798642527 4.513888888889293 1 1.941152492561359 4.375000000000393 1 2.181715104723695 4.513888888889282 1 2.181715104723702 4.305555555555943 1 2.301996410804863 4.652777777778182 1 1.941152492561365 4.583333333333743 1 1.820871186480191 4.652777777778193 1 1.700589880399022 4.513888888889305 1 1.700589880399015 4.444444444444867 1 1.580308574317838 3.958333333333765 1 1.460031692721723 3.819444444444876 1 1.46003324836653 4.097222222222652 1 1.460028549651968 4.027777777778216 1 1.339751668055876 4.236111111111541 1 1.460028549651976 4.72222222222262 1 2.061433798642542 4.79166666666707 1 1.941152492561373 4.58333333333372 1 2.301996410804878 4.65277777777817 1 2.18171510472371 4.791666666667059 1 2.181715104723717 4.791666666667082 1 1.700589880399028 4.722222222222644 1 1.580308574317853 4.86111111111152 1 1.820871186480204 4.930555555555971 1 1.700589880399035 4.930555555555959 1 1.941152492561379 3.680555555555938 1 2.422277716886001 3.819444444444827 1 2.422277716886009 3.888888888889264 1 2.542559022967184 3.958333333333714 1 2.422277716886016 4.097222222222603 1 2.422277716886024 4.791666666667094 1 1.460027268236685 4.652777777778205 1 1.460027268236678 4.583333333333766 1 1.339745962155503 4.513888888889316 1 1.460027268236671 4.375000000000428 1 1.460027268236663 5.069444444444859 1 1.700589880399042 5.000000000000421 1 1.580308574317867 5.069444444444869 1 1.460027268236699 4.93055555555598 1 1.460027268236692 4.861111111111541 1 1.339745962155518 5.138888888889298 1 1.820871186480215 5.208333333333748 1 1.700589880399046 5.069444444444848 1 1.941152492561384 5.208333333333737 1 1.941152492561389 5.000000000000398 1 2.061433798642554 5.347222222222637 1 1.700589880399051 5.277777777778198 1 1.580308574317879 5.347222222222646 1 1.46002726823671 5.208333333333758 1 1.460027268236705 5.138888888889317 1 1.33974596215553 5.416666666667076 1 1.820871186480225 5.486111111111526 1 1.700589880399058 5.347222222222626 1 1.941152492561393 5.486111111111516 1 1.941152492561399 5.277777777778176 1 2.061433798642563 5.625000000000415 1 1.700589880399062 5.555555555555975 1 1.580308574317889 5.625000000000423 1 1.460027268236719 5.486111111111534 1 1.460027268236714 5.416666666667094 1 1.339745962155541 5.694444444444857 1 1.820871186480236 5.763888888889305 1 1.700589880399067 5.625000000000406 1 1.941152492561403 5.763888888889296 1 1.941152492561407 5.555555555555955 1 2.06143379864257 5.763888888889312 1 1.460027268236724 5.694444444444871 1 1.33974596215555 5.833333333333751 1 1.580308574317898 5.9027777777782 1 1.460027268236728 5.902777777778194 1 1.70058988039907 5.76388888888932 1 1.219464656074379 5.625000000000432 1 1.219464656074374 5.555555555555991 1 1.099183349993201 5.486111111111542 1 1.219464656074372 5.347222222222654 1 1.219464656074367 6.041666666667089 1 1.460027268236729 5.97222222222265 1 1.339745962155556 6.0416666666671 1 1.219464656074379 5.902777777778211 1 1.219464656074377 5.833333333333771 1 1.099183349993202 4.652777777778216 1 1.219464656074337 4.513888888889328 1 1.219464656074329 4.791666666667103 1 1.219464656074344 4.722222222222664 1 1.09918334999317 4.930555555555989 1 1.219464656074351 6.11111111111153 1 1.580308574317904 6.180555555555978 1 1.460027268236732 6.041666666667081 1 1.700589880399074 6.18055555555597 1 1.700589880399076 5.972222222222634 1 1.820871186480244 6.319444444444867 1 1.460027268236737 6.250000000000426 1 1.339745962155563 6.319444444444876 1 1.219464656074388 6.180555555555989 1 1.219464656074384 6.11111111111155 1 1.099183349993205 3.680555555555989 1 1.460038157750322 3.5416666666671 1 1.460036602105501 3.472222222222664 1 1.339788161285889 3.402777777778212 1 1.460060133498175 3.263888888889324 1 1.460063488099962 4.375000000000212 1 5.309029062834152 4.444444444444647 1 5.429310368915326 4.375000000000192 1 5.549591674996488 4.513888888889086 1 5.549591674996502 4.583333333333522 1 5.669872981077676 8.680537789110854 1 6.992977498420593 8.611093344666426 1 6.872696192339417 8.819320079331293 1 6.993038401119079 8.749893401331578 1 7.113309556750499 8.819311312845919 1 7.233605432542651 3.472222222222365 1 6.632123429727002 3.541666666666818 1 6.511842123645832 3.402777777777914 1 6.752404735808172 3.541666666666804 1 6.752404735808177 3.333333333333463 1 6.872686041889339 3.680555555555705 1 6.51184212364584 3.611111111111267 1 6.391560817564664 3.680555555555717 1 6.271279511483495 3.541666666666829 1 6.271279511483487 3.472222222222393 1 6.15099820540231 3.750000000000145 1 6.632123429727013 3.819444444444595 1 6.511842123645845 3.680555555555697 1 6.752404735808183 3.819444444444587 1 6.752404735808188 3.611111111111246 1 6.872686041889352 3.819444444444604 1 6.271279511483502 3.750000000000166 1 6.150998205402325 3.95833333333348 1 6.511842123645847 3.88888888888904 1 6.391560817564674 3.958333333333489 1 6.271279511483504 3.819444444444614 1 6.030716899321158 3.680555555555728 1 6.030716899321151 3.611111111111289 1 5.910435593239976 3.541666666666841 1 6.030716899321143 3.402777777777955 1 6.030716899321135 3.888888888889028 1 6.872686041889361 3.958333333333475 1 6.752404735808192 4.097222222222364 1 6.752404735808195 4.027777777777922 1 6.632123429727022 4.097222222222368 1 6.511842123645851 6.319444444444494 1 8.676905633107047 6.388888888888934 1 8.797186939188222 6.458333333333378 1 8.917468245269394 6.527777777777816 1 9.037749551350561 6.319444444444491 1 8.917468245269376 6.736111111111173 1 7.474092572295385 6.666666666666735 1 7.35381126621421 6.875000000000044 1 7.71465518445775 6.805555555555609 1 7.594373878376566 6.875000000000042 1 7.474092572295408 8.680555555556017 1 1.700589880399301 8.611111111111578 1 1.580308574318123 8.81944444444488 1 1.941152492561662 8.750000000000446 1 1.820871186480485 8.819444444444908 1 1.700589880399312 8.402777777778235 1 1.460027268236944 8.263888888889337 1 1.46002726823693 8.541666666667137 1 1.460027268236952 8.472222222222696 1 1.339745962155777 8.680555555556039 1 1.460027268236956 8.194444444444903 1 1.339745962155765 8.125000000000448 1 1.460027268236926 7.986111111111552 1 1.460027268236908 8.055555555555987 1 1.580308574318072 7.986111111111525 1 1.700589880399229 1.111111111111162 1 8.316061714863258 1.04166666666671 1 8.436343020944424 1.180646721873799 1 8.19572777388375 1.041757832984907 1 8.195727773883734 1.250106360704614 1 8.075437695319525 8.957632790980711 1 6.030312441005538 8.888188346536269 1 5.91003113492436 8.819444444444571 1 5.790154287159123 8.750000000000126 1 5.669872981077948 8.957632790980714 1 5.789749828843183 8.263888888889351 1 1.219464656074597 8.125000000000462 1 1.219464656074593 8.541666816537358 1 1.219466967325449 8.402777927648456 1 1.219466967325442 8.333333483204015 1 1.099185661244269 8.055555555556023 1 1.099183349993421 7.986111111111573 1 1.21946465607459 7.847222222222676 1 1.219464656074564 7.916666666667115 1 1.339745962155735 7.847222222222657 1 1.460027268236882 8.819389778429132 1 1.460106770919936 8.749945333984691 1 1.339825464838765 8.680553532542028 1 1.219561094562703 8.611109237967788 1 1.099282099732367 8.819387755415121 1 1.219640597245683 2.708333333333786 1 1.219464656074229 2.569444444444897 1 1.219464656074221 2.847222222222674 1 1.219464656074236 2.777777777778236 1 1.099183349993061 2.986111111111562 1 1.219484783685012 2.361111111111557 1 1.33974596215538 2.291666666667105 1 1.460027268236548 2.429238373238613 1 1.22149496798635 2.290349484349725 1 1.221494967986342 2.498682817683064 1 1.101213661905183 2.152777777778217 1 1.46002726823654 2.222222222222654 1 1.580308574317716 2.152777777778203 1 1.700589880398884 2.291666666667091 1 1.700589880398892 2.361111111111528 1 1.820871186480068 2.08333333333378 1 1.339745962155364 2.013888888889328 1 1.460027268236533 2.152777777778231 1 1.219464656074197 2.013888888889342 1 1.219464656074189 2.220905039905287 1 1.101213661905167 1.87500000000044 1 1.460027268236524 1.944444444444878 1 1.5803085743177 1.875000000000426 1 1.700589880398868 2.013888888889315 1 1.700589880398876 2.083333333333751 1 1.820871186480052 1.805555555556003 1 1.339745962155349 1.736111111111551 1 1.460027268236516 1.874893441430955 1 1.219649474089688 1.736004552542067 1 1.21964947408968 1.944337885875407 1 1.09936816800852 1.597222222222663 1 1.460027268236508 1.6666666666671 1 1.580308574317684 1.59722222222265 1 1.700589880398852 1.736111111111538 1 1.70058988039886 1.805555555555975 1 1.820871186480036 1.527777777778225 1 1.339745962155333 1.458333333333774 1 1.4600272682365 1.597222222222677 1 1.219464656074165 1.458333333333788 1 1.219464656074157 1.66656010809763 1 1.099368168008504 1.319444444444886 1 1.460027268236493 1.388888888889324 1 1.580308574317669 1.458333333333761 1 1.700589880398844 1.527777777778199 1 1.82087118648002 1.319444444444873 1 1.700589880398836 1.388888888889351 1 1.099183349992982 1.319444444444899 1 1.21946465607415 1.180624406085433 1 1.219492266632286 1.25006885052987 1 1.339773572713461 1.180624406085419 1 1.460054878794629 1.458333333333747 1 1.941152492561188 1.597222222222636 1 1.941152492561196 1.666666666667072 1 2.061433798642371 1.736111111111523 1 1.941152492561204 1.875000000000411 1 1.941152492561212 1.319444444444859 1 1.94115249256118 1.388888888889297 1 2.061433798642355 1.250000000000421 1 1.820871186480004 1.180555555555971 1 1.941152492561173 1.180555555555984 1 1.700589880398829 1.319444444444845 1 2.181715104723524 1.458333333333734 1 2.181715104723531 1.52777777777817 1 2.301996410804708 1.597222222222622 1 2.18171510472354 1.736111111111509 1 2.181715104723548 8.958179685895285 1 2.662776406870726 8.8887536404416 1 2.542484478127287 8.819331145631228 1 2.42221230378582 8.749886701186794 1 2.301930997704642 8.958084786072448 1 2.422137758945591 1.180555555555957 1 2.181715104723516 1.250000000000395 1 2.301996410804692 1.114027005982298 1 2.062496492189644 1.044582561537847 1 2.182777798270813 1.04458256153786 1 1.942215186108469 1.180555555555944 1 2.422277716885858 1.319444444444832 1 2.422277716885866 1.388888888889267 1 2.542559022967042 1.458333333333718 1 2.422277716885875 1.597222222222605 1 2.422277716885884 1.250000000000219 1 5.18874775675283 1.180555555555769 1 5.309029062833998 1.112272309668109 1 5.42863995061582 1.042827865223659 1 5.548921256696989 1.042827865223671 1 5.308358644534644 1.319444444444669 1 5.068466450671663 1.180555555555781 1 5.068466450671654 1.458333333333559 1 5.06846645067167 1.38888888888912 1 4.948185144590493 1.597222222222448 1 5.068466450671674 1.112493945002886 1 7.353013685582468 1.043049500558432 1 7.473294991663634 1.250000000000143 1 7.113248654051549 1.180555555555689 1 7.233529960132715 1.043049500558453 1 7.23273237950129 8.749999999999954 1 8.556624327026075 8.819444444444402 1 8.436343020944911 8.957917842767758 1 8.436582904534774 8.888473398323317 1 8.316301598453602 8.95791784276777 1 8.196020292372435 8.402777777777734 1 8.676905633107211 8.541666666666616 1 8.676905633107227 8.6805555555555 1 8.676905633107243 8.81944444444439 1 8.676905633107246 8.611111111111052 1 8.7971869391884 8.749871207065095 1 3.264321218090371 8.819315651509545 1 3.144039912009207 8.958204540398443 1 2.903477299846879 8.888778494944747 1 3.02374798326578 8.958094146453936 1 3.144103647982792 8.40277777777812 1 3.384528165535688 8.541666666667005 1 3.384528165535694 8.611111111111445 1 3.504809471616868 8.680555555555896 1 3.384528165535698 8.819315651509534 1 3.384602524171546 1.875000000000027 1 8.917468245269166 2.013888888888911 1 8.917468245269173 1.736111111111143 1 8.917468245269166 1.80555555555558 1 9.037749551350338 1.597222222222257 1 8.917468245269163 2.083333333333348 1 9.037749551350345 2.152777777777795 1 8.917468245269179 2.29166666666668 1 8.917468245269184 2.222222222222244 1 8.797186939188013 2.291666666666691 1 8.676905633106845 3.472222222222226 1 9.037749551350473 3.541666666666684 1 8.917468245269305 3.402777777777778 1 8.917468245269273 3.263888888888887 1 8.917468245269266 3.680555555555581 1 8.917468245269326 3.958333333333372 1 8.917468245269376 4.027777777777821 1 9.037749551350579 4.097222222222262 1 8.917468245269378 4.23611111111115 1 8.917468245269387 3.819444444444481 1 8.917468245269362 6.388888888889305 1 1.580308574317911 6.458333333333752 1 1.460027268236742 6.250000000000409 1 1.82087118648025 6.319444444444858 1 1.70058988039908 6.458333333333743 1 1.700589880399085 6.458333333333766 1 1.219464656074398 6.388888888889328 1 1.099183349993218 6.527777777778202 1 1.339745962155575 6.597222222222653 1 1.219464656074405 6.597222222222641 1 1.460027268236749 6.18055555555596 1 1.94115249256142 6.319444444444848 1 1.941152492561424 6.041666666667074 1 1.941152492561416 6.111111111111513 1 2.06143379864259 5.902777777778187 1 1.941152492561413 5.069444444444498 1 7.955217796619939 5.000000000000055 1 7.834936490538764 5.069444444444501 1 7.714655184457594 4.930555555555612 1 7.71465518445759 4.861111111111173 1 7.594373878376414 5.138888888888943 1 8.075499102701112 5.208333333333389 1 7.955217796619942 5.069444444444496 1 8.195780408782284 5.208333333333385 1 8.195780408782285 5.000000000000051 1 8.316061714863457 4.791666666667021 1 2.903402941210748 4.652777777778134 1 2.903402941210739 4.93055555555591 1 2.903402941210756 4.861111111111473 1 2.78312163512958 5.069444444444796 1 2.903402941210764 5.138888888889273 1 2.301996410804903 5.208333333333723 1 2.181715104723732 5.069444444444837 1 2.181715104723729 4.930555555555948 1 2.181715104723724 5.347222222222612 1 2.181715104723736 8.263888888889227 1 3.384528165535678 8.333333333333663 1 3.504809471616854 8.194444444444796 1 3.264246859454501 8.125000000000341 1 3.384528165535667 8.125000000000359 1 3.143965553373322 8.541666666666995 1 3.625090777698038 8.680555555555884 1 3.625090777698043 8.402777777778104 1 3.625090777698029 8.472222222222543 1 3.745372083779204 8.263888888889213 1 3.625090777698019 8.75000000000032 1 3.74537208377922 8.819444444444771 1 3.625090777698049 8.958333333333663 1 3.625090777698061 8.888888888889227 1 3.504809471616884 8.958204540398425 1 3.384602524171557 8.680555555555872 1 3.865653389860386 8.819444444444759 1 3.865653389860392 8.541666666666984 1 3.865653389860381 8.611111111111423 1 3.985934695941554 8.402777777778095 1 3.865653389860372 4.583333333333696 1 2.783121635129564 4.513888888889245 1 2.903402941210731 4.375000000000357 1 2.903402941210723 4.444444444444793 1 3.023684247291898 4.375000000000341 1 3.143965553373066 3.958333333333503 1 6.030716899321163 3.888888888889064 1 5.910435593239988 4.027777777777939 1 6.150998205402336 4.097222222222389 1 6.030716899321167 4.097222222222376 1 6.271279511483508 3.958333333333514 1 5.790154287158819 3.819444444444626 1 5.790154287158813 3.750000000000187 1 5.669872981077638 3.680555555555737 1 5.790154287158808 3.541666666666851 1 5.790154287158801 4.166666666666767 1 7.353811266214048 4.097222222222312 1 7.47409257229522 4.027777777777864 1 7.594373878376388 3.958333333333416 1 7.714655184457557 3.958333333333435 1 7.474092572295213 8.124999999999984 1 8.436343020944857 8.194444444444423 1 8.556624327026029 8.263888888888859 1 8.6769056331072 8.333333333333293 1 8.797186939188371 8.124999999999982 1 8.676905633107189 7.847222222222211 1 7.955217796620179 7.91666666666665 1 8.075499102701352 7.847222222222218 1 8.195780408782515 7.986111111111099 1 8.195780408782518 8.055555555555543 1 8.316061714863688 8.888888888888824 1 8.797186939188428 8.958333333333277 1 8.67690563310726 9.097222222222168 1 8.67690563310728 9.027777777777734 1 8.5566243270261 9.096806731656649 1 8.436582904534792 8.819444444444368 1 8.917468245269593 8.958333333333254 1 8.917468245269607 8.680555555555481 1 8.917468245269578 8.749999999999911 1 9.037749551350757 8.541666666666597 1 8.917468245269564 1.041666666666702 1 8.676905633106777 1.111111111111146 1 8.797186939187959 0.9027777777778194 1 8.436343020944413 0.9722222222222591 1 8.556624327025595 0.9027777777778113 1 8.676905633106767 1.041666666666696 1 8.917468245269127 1.180555555555587 1 8.917468245269138 1.250000000000025 1 9.037749551350313 1.319444444444476 1 8.917468245269147 1.458333333333366 1 8.917468245269156 9.096321992663533 1 8.196300156560607 9.027293038784631 1 8.075778966889576 9.096637860349736 1 7.955552604511046 8.958233710453971 1 7.955272740322874 8.888789266009526 1 7.834991434241696 1.597222222222384 1 6.511842123645732 1.736111111111271 1 6.511842123645737 1.875000000000155 1 6.511842123645742 2.013888888889042 1 6.511842123645746 1.805555555555707 1 6.632123429726908 7.291666666666707 1 6.992967347970762 7.361111111111143 1 7.113248654051935 7.291666666666687 1 7.233529960133113 7.430555555555578 1 7.233529960133117 7.500000000000016 1 7.353811266214294 7.222222222222275 1 6.872686041889582 7.152777777777819 1 6.992967347970753 7.29166666666673 1 6.752404735808415 7.152777777777843 1 6.752404735808406 7.361111111111184 1 6.632123429727247 8.888888888888994 1 6.391560817565006 8.958333333333449 1 6.271279511483836 9.097222222222342 1 6.271279511483852 9.027777777777901 1 6.150998205402674 9.096521679869603 1 6.030312441005554 1.044658901647002 1 2.424005284557003 1.114103346091439 1 2.544286590638177 0.983518933578011 1 2.307789617408599 0.9170667241135062 1 2.429798491160918 0.9169903840043512 1 2.188571004874728 1.319527562083146 1 2.662888317039075 1.458416450972031 1 2.662888317039084 1.045157607476978 1 2.664855824664536 1.18105426138592 1 2.663128256993392 1.250581823468685 1 2.783457551065434 8.88721435239956 1 3.98720972594487 8.95665879684401 1 3.866928419863703 9.027777777778095 1 3.745372083779236 9.09722222222255 1 3.62509077769807 9.095547685732898 1 3.866928419863712 8.541666666666977 1 4.106216002022725 8.680555555555863 1 4.10621600202273 8.750000000000306 1 4.226497308103902 8.819444444444752 1 4.10621600202273 8.956658796844003 1 4.107491032026042 1.042690415196631 1 5.789332110862301 1.11213485964107 1 5.909613416943475 0.9122417742661167 1 5.550555152302453 0.9805250201537646 1 5.671506876682978 0.9121043242390882 1 5.790966006467764 1.113563485341588 1 1.581388759866788 1.044119040897137 1 1.701670065947956 0.9806202618173167 1 1.819786397016131 0.9140917122436438 1 1.941130396644604 0.9136281916029203 1 1.70058527648409 1.04166666666676 1 7.714655184457389 1.111111111111194 1 7.834936490538569 0.9722222222223244 1 7.59437387837621 0.9027777777778709 1 7.714655184457374 0.9041606116695431 1 7.47329499166362 2.148162776875496 1 0.9841133760915867 2.07807898101407 1 0.8649409781034514 2.013249537472368 1 0.9800109520048859 1.874254090013981 1 0.9801957700203847 2.28573448344699 1 0.9861436880037326 8.125000000000476 1 0.9789020439122458 7.986111111111587 1 0.9789020439122424 8.263888888889376 1 0.9789020439122464 8.19444444444494 1 0.8586207378310673 8.402777927648479 1 0.9789043551630909 7.777884336347737 1 1.099364813407107 7.70843989190328 1 1.219646119488253 7.916666666667151 1 0.8586207378310632 7.847222222222697 1 0.9789020439122389 7.708439891903302 1 0.9790835073259274 6.458333333333782 1 0.9789020439120479 6.319444444444893 1 0.9789020439120384 6.250000000000457 1 0.8586207378308521 6.180555555556003 1 0.9789020439120227 6.041666666667115 1 0.9789020439120182 6.736111111111541 1 1.219464656074416 6.666666666667103 1 1.099183349993238 6.736111111111557 1 0.9789020439120715 6.597222222222669 1 0.9789020439120615 6.527777777778235 1 0.8586207378308814 6.80555555555598 1 1.339745962155591 6.87500000000043 1 1.219464656074424 6.736111111111527 1 1.460027268236757 6.875000000000417 1 1.460027268236766 6.666666666667077 1 1.580308574317924 7.013888888889319 1 1.219464656074434 6.94444444444488 1 1.099183349993258 7.013888888889339 1 0.9789020439120988 6.875000000000449 1 0.9789020439120892 6.805555555556015 1 0.8586207378309128 5.625000000000438 1 0.9789020439120307 5.486111111111549 1 0.9789020439120282 5.763888888889333 1 0.9789020439120215 5.694444444444892 1 0.8586207378308491 5.902777777778224 1 0.97890204391202 1.458333333333802 1 0.9789020439118135 1.319444444444913 1 0.9789020439118059 1.59722222222269 1 0.9789020439118212 1.527777777778252 1 0.8586207378306456 1.73600455254208 1 0.9790868619273361 1.250000000000476 1 0.8586207378306302 1.180555555556025 1 0.9789020439117982 1.041666666667136 1 0.9789020439117903 1.111111111111573 1 1.099183349992966 1.041735517196544 1 1.219492266632278 1.112097257663913 1 4.94839096394266 1.042652813219463 1 5.068672270023828 0.9813029410790707 1 5.184409367827902 0.9130196951914108 1 5.304020255609724 0.9128446431872029 1 5.064333881098908 1.458333333333571 1 4.827903838509325 1.319444444444681 1 4.827903838509318 1.250000000000243 1 4.707622532428143 1.180555555555793 1 4.827903838509311 1.042652813219475 1 4.828109657861485 7.083333333333758 1 1.339745962155616 7.152777777778208 1 1.21946465607445 6.944444444444851 1 1.580308574317943 7.013888888889304 1 1.460027268236777 7.152777777778194 1 1.460027268236793 7.291819774678531 1 1.219915533729865 7.222375330234092 1 1.099634227648683 7.152950515860315 1 0.9803370659484605 7.083506071415885 1 0.8600557598672922 7.291992512760638 1 0.980787943603876 7.777777777777763 1 7.834936490539011 7.708333333333321 1 7.955217796620179 7.847222222222213 1 7.714655184457829 7.708333333333324 1 7.71465518445783 7.916666666666663 1 7.594373878376652 6.458333333333712 1 2.662840329048486 6.52777777777815 1 2.783121635129673 6.5972222222226 1 2.662840329048504 6.666666666667053 1 2.542559022967335 6.458333333333695 1 2.903402941210838 1.59722222222246 1 4.827903838509332 1.527777777778021 1 4.707622532428157 1.736111111111338 1 5.068466450671679 1.666666666666899 1 4.948185144590505 1.73611111111135 1 4.827903838509338 1.319444444444694 1 4.587341226346976 1.180555555555805 1 4.587341226346968 1.458333333333583 1 4.587341226346984 1.388888888889145 1 4.467059920265809 1.597222222222471 1 4.58734122634699 1.111111111111367 1 4.467059920265794 1.041666666666917 1 4.587341226346961 0.9027777777780287 1 4.587341226346956 0.9722222222224667 1 4.70762253242813 0.9037639243305869 1 4.828109657861479 1.458333333333595 1 4.346778614184641 1.319444444444707 1 4.346778614184633 1.250072482534248 1 4.226455460292954 1.180628038089798 1 4.346736766374121 1.041739149200909 1 4.346736766374114 1.597222222222484 1 4.346778614184649 1.527777777778046 1 4.226497308103474 1.666666666666921 1 4.467059920265823 1.736111111111373 1 4.346778614184656 1.73611111111136 1 4.587341226346997 1.597222222222497 1 4.106216002022306 1.458333333333609 1 4.106216002022298 1.388888888889171 1 3.985934695941122 1.31944444444472 1 4.10621600202229 1.18062803808981 1 4.106174154211778 1.736111111111386 1 4.106216002022314 1.666666666666949 1 3.985934695941138 1.805555555555824 1 4.22649730810349 1.875000000000274 1 4.106216002022322 1.875000000000261 1 4.346778614184664 1.458333333333621 1 3.865653389859954 1.319444444444732 1 3.865653389859946 1.597222222222511 1 3.865653389859961 1.527777777778072 1 3.745372083778785 1.736111111111399 1 3.865653389859969 1.250000000000294 1 3.745372083778771 1.180555555555844 1 3.86565338985994 1.041666666666956 1 3.865653389859933 1.111111111111394 1 3.985934695941108 1.041739149200922 1 4.106174154211771 1.319444444444746 1 3.625090777697601 1.180555555555857 1 3.625090777697594 1.458333333333634 1 3.62509077769761 1.388888888889196 1 3.504809471616432 1.597222222222523 1 3.625090777697617 1.111111111111422 1 3.504809471616414 1.041666666666971 1 3.625090777697585 0.9722222222225183 1 3.745372083778757 0.9027777777780679 1 3.865653389859925 0.9027777777780834 1 3.625090777697577 1.458333333333647 1 3.384528165535263 1.319444444444759 1 3.384528165535254 1.180555555555874 1 3.384528165535237 1.041666666666988 1 3.384528165535228 1.250000000000325 1 3.264246859454069 1.597222222222534 1 3.384528165535272 1.527777777778097 1 3.264246859454095 1.666666666666972 1 3.504809471616448 1.736111111111422 1 3.384528165535279 1.736111111111411 1 3.625090777697625 7.222222222222399 1 5.429310368915515 7.152777777777947 1 5.549591674996682 7.291666666666851 1 5.309029062834347 7.152777777777962 1 5.309029062834338 7.361111111111303 1 5.188747756753179 7.013888888889058 1 5.549591674996672 7.083333333333495 1 5.669872981077848 7.013888888889042 1 5.790154287159015 7.152777777777931 1 5.790154287159025 7.222222222222365 1 5.910435593240202 6.944444444444622 1 5.429310368915496 6.875000000000171 1 5.549591674996663 7.013888888889072 1 5.309029062834329 6.875000000000185 1 5.309029062834319 7.083333333333524 1 5.188747756753161 6.736111111111283 1 5.549591674996652 6.805555555555719 1 5.669872981077829 6.875000000000155 1 5.790154287159007 6.94444444444459 1 5.910435593240184 6.736111111111267 1 5.790154287158996 6.805555555555746 1 5.188747756753144 6.736111111111295 1 5.309029062834311 6.59722222222241 1 5.309029062834302 6.666666666666847 1 5.429310368915477 6.597222222222396 1 5.549591674996643 6.875000000000139 1 6.030716899321352 7.013888888889026 1 6.03071689932136 7.08333333333346 1 6.150998205402537 7.152777777777912 1 6.030716899321369 7.291666666666799 1 6.03071689932138 6.736111111111247 1 6.030716899321341 6.805555555555683 1 6.150998205402517 6.666666666666814 1 5.910435593240163 6.597222222222358 1 6.030716899321328 6.597222222222378 1 5.790154287158985 3.750000000000302 1 3.745372083778884 3.680555555555852 1 3.865653389860054 3.81944444444474 1 3.865653389860062 3.958333333333628 1 3.86565338986007 3.541666666666965 1 3.865653389860049 8.402777777778084 1 4.106216002022718 8.472222222222525 1 4.226497308103893 8.333333333333645 1 3.98593469594154 8.263888888889195 1 4.106216002022708 8.263888888889204 1 3.865653389860363 8.680555555555863 1 4.346778614185075 8.819444444444752 1 4.346778614185076 8.541652577500251 1 4.346786748569272 8.611097021944696 1 4.467068054650445 8.402763688611358 1 4.346786748569264 8.886314944768269 1 4.468545987597341 8.955759389212712 1 4.348264681516168 9.084601059163782 1 4.355914861536 9.017730558840265 1 4.234147488123734 9.085500466795073 1 4.115141212045873 8.819015453757926 1 4.587588904235933 8.955330398525888 1 4.589074971567025 8.68048405710806 1 4.587382505995511 8.749499510865679 1 4.707911489965195 8.541581079052449 1 4.587390640379708 7.638888888888907 1 9.03774955135064 7.708333333333353 1 8.917468245269472 7.569444444444458 1 9.158030857431811 7.708333333333335 1 9.158030857431811 7.500000000000009 1 9.278312163512982 1.736111111111475 1 2.662840329048239 1.666666666667041 1 2.542559022967062 1.597222222222586 1 2.66284032904823 1.527860895416465 1 2.783169623120262 1.736111111111494 1 2.422277716885894 7.569444444444759 1 3.625090777697961 7.500000000000323 1 3.504809471616784 7.569444444444782 1 3.384528165535619 7.430555555555885 1 3.384528165535607 7.361111111111449 1 3.264246859454432 5.416666666667107 1 0.8586207378308549 5.34722222222266 1 0.9789020439120247 5.208333333333771 1 0.9789020439120202 5.277777777778212 1 1.099183349993194 5.208333333333766 1 1.219464656074362 3.819444444444513 1 7.955217796619898 3.680555555555628 1 7.955217796619893 3.541666666666745 1 7.955217796619888 3.40277777777786 1 7.95521779661988 3.6111111111112 1 7.834936490538722 7.013888888889005 1 6.271279511483703 7.15277777777789 1 6.271279511483714 6.736111111111227 1 6.271279511483682 6.875000000000117 1 6.271279511483693 6.944444444444549 1 6.391560817564869 8.819444444444581 1 5.549591674996778 8.680555555555692 1 5.54959167499678 8.611111111111274 1 5.429310368915609 8.541666666666817 1 5.549591674996779 8.402777777777938 1 5.549591674996774 8.958333333333464 1 5.549591674996773 8.888888888889031 1 5.429310368915605 9.02777777777791 1 5.669872981077931 9.09722222222236 1 5.549591674996757 9.096521679869607 1 5.789749828843167 8.958207458245155 1 5.309094263843903 8.819318569356273 1 5.309094263843909 8.680540532935222 1 5.309037736148452 8.541651644046347 1 5.309037736148452 8.749859102291346 1 5.188821631076753 3.819444444444578 1 6.99296734797053 3.958333333333467 1 6.992967347970533 3.680555555555689 1 6.992967347970526 3.750000000000129 1 7.113248654051699 3.541666666666796 1 6.992967347970521 4.166666666666805 1 6.872686041889366 4.236111111111251 1 6.752404735808197 4.097222222222351 1 6.992967347970536 4.236111111111239 1 6.992967347970538 4.027777777777901 1 7.113248654051704 4.375000000000138 1 6.752404735808199 4.305555555555697 1 6.632123429727027 4.375000000000144 1 6.511842123645858 4.236111111111257 1 6.511842123645856 4.166666666666815 1 6.391560817564681 4.444444444444581 1 6.872686041889374 4.513888888889027 1 6.752404735808204 4.375000000000123 1 6.992967347970545 4.513888888889013 1 6.99296734797055 4.30555555555567 1 7.113248654051714 1.319444444444597 1 6.992967347970385 1.180555555555709 1 6.992967347970373 1.458333333333481 1 6.992967347970399 1.388888888889048 1 6.872686041889223 1.597222222222365 1 6.992967347970409 1.111111111111275 1 6.872686041889194 1.04166666666682 1 6.992967347970358 0.9027777777779287 1 6.992967347970344 0.9722222222223638 1 7.113248654051523 0.9041606116695616 1 7.232732379501277 7.569551003014388 1 1.219646119488229 7.638888888889326 1 1.339745962155686 7.569444444444869 1 1.460027268236836 7.708333333333763 1 1.46002726823686 7.7777777777782 1 1.580308574318033 7.569444444444444 1 7.955217796620172 7.638888888888891 1 8.07549910270134 7.569444444444467 1 8.195780408782495 7.708333333333345 1 8.195780408782504 7.777777777777794 1 8.31606171486367 7.499999999999993 1 7.834936490539 7.430555555555562 1 7.95521779662016 7.569444444444438 1 7.714655184457831 7.430555555555555 1 7.71465518445782 7.638888888888888 1 7.594373878376649 9.022399430307033 1 4.70928082434266 9.089698921317376 1 4.59023790770407 9.215718089601621 1 4.59766824435955 9.148649057820474 1 4.477462391583915 9.210620227448027 1 4.36334519819148 0.7644358867980374 1 8.195464599391986 0.8333333333333773 1 8.316061714863228 0.9033247756869309 1 8.195464599392 0.9728603864495674 1 8.075130658412492 0.7638888888889259 1 8.436343020944399 2.847222222222686 1 0.9832496078377424 2.708333333333798 1 0.9832496078377349 2.635600795887743 1 0.869938841049654 2.566156351443293 1 0.9858725832049722 2.425950280237009 1 0.9879028951171022 2.986111111111575 1 0.9796266378995415 2.916666666667137 1 0.8636928957442157 3.055555555556014 1 1.099304115657683 3.125000000000464 1 0.979747403564156 3.12500000000045 1 1.219605549349627 8.264436904389662 1 0.7430033925722994 8.125548015500762 1 0.7430033925722987 7.989399204113175 1 0.7402378131294722 7.850510315224286 1 0.7402378131294687 8.059391664057895 1 0.6246204678707042 5.489399204113139 1 0.7402378131292664 5.35051031522425 1 0.740237813129263 5.764436904389608 1 0.7430033925720878 5.625548015500712 1 0.7430033925720969 5.559391664057854 1 0.624620467870505 1.319444444444926 1 0.7426869956753159 1.180555555556038 1 0.7426869956753083 1.593934129221085 1 0.7409624071167247 1.455045240332197 1 0.7409624071167169 1.385600795887759 1 0.625028664961395 0.7638888888891793 1 3.865653389859917 0.8333333333336165 1 3.985934695941094 0.7643237840930415 1 4.105964915159234 0.9032126729819301 1 4.105964915159242 0.9727295999603471 1 4.226204373429912 0.7645115954307731 1 3.384076622694537 0.8332575381419529 1 3.503954648611992 0.9034762795113563 1 3.38493144569895 0.9729207239558086 1 3.264650139617773 0.7638130936975002 1 3.624235954693164 9.232136929109377 1 3.627385272746781 9.162692484664944 1 3.507103966665607 9.23147456544239 1 3.387205076425891 9.096559858555564 1 3.38491058137718 9.026986621175872 1 3.264703633931842 9.236111111111239 1 5.549591674996733 9.166666666666792 1 5.429310368915575 9.235374277036538 1 5.309454474185788 9.096485388147659 1 5.309454474185813 9.026915068614901 1 5.189238369114118 0.9027777777778115 1 8.917468245269124 0.9722222222222527 1 9.037749551350302 0.8333333333333697 1 8.797186939187949 0.7638888888889267 1 8.917468245269127 0.7638888888889265 1 8.67690563310677 9.027777777777681 1 9.037749551350792 9.097222222222136 1 8.917468245269628 9.23658517144387 1 8.917468245269653 9.167140726999444 1 8.797186939188467 9.236585171443901 1 8.676905633107305 0.9093440712063692 1 2.666631380326546 0.9762949865008494 1 2.78547304668176 0.8525606608267344 1 2.550951658556042 0.7836980398506062 1 2.671568880573266 0.7914206927577432 1 2.434735991407638 8.541667565888417 1 0.7383532992549369 8.402777777778311 1 0.7383394317498899 8.47222312144395 1 0.8586346053361149 8.541667715758587 1 0.9789182226681379 8.333881348834131 1 0.6227220864911214 7.78490197928168 1 0.6264891899419209 7.712169441835656 1 0.744872114643512 7.573919904363742 1 0.745960895125771 7.639528240306348 1 0.8597095183133188 7.570190354431388 1 0.9801722878081864 5.284901979281617 1 0.6264891899416968 5.212169441835586 1 0.7448721146432853 5.138888888889332 1 0.8586207378308471 5.069444444444883 1 0.9789020439120159 5.073280552946699 1 0.744872114643281 0.9722222222226981 1 0.8586207378306149 0.9027777777782469 1 0.9789020439117826 1.041666666667138 1 0.7407837420709091 0.9027777777782491 1 0.7407837420709015 1.111111111111589 1 0.6248499999155949 0.7663675079485355 1 0.9798960240049571 0.8358119523929732 1 1.100177330086133 0.7667806111250519 1 1.220624299516164 0.9031908809547633 1 1.21963031942299 0.9727041759286225 1 1.33993923606231 0.9027777777778034 1 9.158030857431473 1.041666666666688 1 9.158030857431475 1.111111111111128 1 9.278312163512668 1.180555555555578 1 9.158030857431498 1.319444444444466 1 9.158030857431505 2.013888888888912 1 9.158030857431548 2.152777777777796 1 9.158030857431555 1.736111111111135 1 9.158030857431509 1.875000000000019 1 9.158030857431509 1.944444444444468 1 9.278312163512719 2.430555555555563 1 8.917468245269195 2.361111111111114 1 9.037749551350363 2.291666666666675 1 9.158030857431537 2.430555555555558 1 9.158030857431548 2.222222222222239 1 9.278312163512741 6.875000000000398 1 1.70058988039911 7.013888888889285 1 1.70058988039912 6.736111111111514 1 1.700589880399102 6.805555555555948 1 1.82087118648028 6.597222222222627 1 1.700589880399094 2.013888888889164 1 4.106216002022331 1.944444444444726 1 3.985934695941154 2.013888888889177 1 3.865653389859986 1.875000000000288 1 3.865653389859978 1.80555555555585 1 3.745372083778801 2.083333333333603 1 4.226497308103506 2.152777777778054 1 4.106216002022337 2.01388888888915 1 4.346778614184672 2.15277777777804 1 4.346778614184679 1.944444444444699 1 4.467059920265837 5.347222222222276 1 7.955217796619947 5.277777777777833 1 7.834936490538773 5.208333333333392 1 7.714655184457598 5.138888888888949 1 7.594373878376423 5.34722222222228 1 7.714655184457603 5.277777777777828 1 8.31606171486346 5.347222222222275 1 8.195780408782291 5.486111111111168 1 8.195780408782298 5.416666666666726 1 8.075499102701123 5.486111111111169 1 7.955217796619954 5.208333333333378 1 8.43634302094463 5.347222222222268 1 8.436343020944635 5.069444444444487 1 8.436343020944634 5.138888888888926 1 8.556624327025808 4.930555555555598 1 8.436343020944635 5.208333333333396 1 7.474092572295256 5.069444444444507 1 7.474092572295252 5.000000000000068 1 7.353811266214079 4.930555555555619 1 7.474092572295246 4.791666666666734 1 7.474092572295241 5.416666666666705 1 8.556624327025812 5.486111111111155 1 8.436343020944642 5.625000000000044 1 8.436343020944655 5.555555555555606 1 8.31606171486348 5.625000000000057 1 8.195780408782312 5.347222222222257 1 8.676905633106983 5.486111111111144 1 8.67690563310699 5.208333333333357 1 8.676905633106994 5.277777777777798 1 8.797186939188173 5.069444444444466 1 8.676905633106998 5.555555555555586 1 8.797186939188162 5.625000000000033 1 8.67690563310699 5.763888888888919 1 8.676905633107001 5.694444444444478 1 8.556624327025832 5.763888888888929 1 8.436343020944669 5.486111111111144 1 8.917468245269328 5.625000000000033 1 8.917468245269326 5.347222222222257 1 8.91746824526934 5.416666666666704 1 9.037749551350506 5.208333333333357 1 8.917468245269351 5.69444444444448 1 9.037749551350489 5.763888888888921 1 8.917468245269323 5.902777777777815 1 8.917468245269328 5.833333333333368 1 8.797186939188165 5.902777777777812 1 8.676905633107008 5.347222222222273 1 9.158030857431683 5.486111111111161 1 9.158030857431672 5.625000000000037 1 9.158030857431662 5.763888888888925 1 9.158030857431658 5.555555555555606 1 9.27831216351284 5.208333333333385 1 9.158030857431699 5.277777777777842 1 9.278312163512865 5.138888888888925 1 9.037749551350533 5.069444444444493 1 9.158030857431713 5.069444444444466 1 8.917468245269365 5.972222222222261 1 9.037749551350496 6.041666666666708 1 8.91746824526934 5.902777777777815 1 9.158030857431653 6.041666666666708 1 9.158030857431665 5.833333333333371 1 9.278312163512826 0.907030630272784 1 2.905858326743136 1.042844166543393 1 2.904082771081127 1.111866473277046 1 3.024120355841348 1.181130829505112 1 2.903735075779973 1.319604130202338 1 2.903495135825655 2.291666666667076 1 1.941152492561236 2.430555555555965 1 1.941152492561244 2.152777777778189 1 1.941152492561229 2.222222222222626 1 2.061433798642405 2.013888888889301 1 1.941152492561221 7.98611111111145 1 3.384528165535653 8.05555555555588 1 3.504809471616831 7.986111111111427 1 3.625090777697995 8.125000000000316 1 3.625090777698009 8.194444444444757 1 3.745372083779184 4.652777777778147 1 2.662840329048397 4.513888888889259 1 2.662840329048389 4.930555555555923 1 2.662840329048413 4.791666666667036 1 2.662840329048404 4.722222222222598 1 2.542559022967228 4.097222222222403 1 5.790154287158822 4.027777777777964 1 5.669872981077647 4.236111111111276 1 6.030716899321169 4.166666666666839 1 5.910435593239995 4.236111111111289 1 5.790154287158824 3.819444444444637 1 5.549591674996471 3.680555555555749 1 5.549591674996465 3.958333333333525 1 5.549591674996475 3.888888888889087 1 5.429310368915301 4.097222222222413 1 5.54959167499648 3.611111111111311 1 5.42931036891529 3.541666666666861 1 5.549591674996458 3.402777777777972 1 5.549591674996451 3.472222222222411 1 5.669872981077626 3.402777777777962 1 5.790154287158794 3.958333333333537 1 5.309029062834133 3.819444444444649 1 5.309029062834128 3.680555555555762 1 5.309029062834123 3.541666666666874 1 5.309029062834115 3.750000000000212 1 5.188747756752954 4.30555555555592 1 2.783121635129547 4.236111111111468 1 2.903402941210714 4.375000000000371 1 2.662840329048381 4.236111111111482 1 2.662840329048371 4.444444444444821 1 2.542559022967213 4.09722222222258 1 2.903402941210705 4.166666666667017 1 3.023684247291881 4.097222222222564 1 3.143965553373048 4.236111111111452 1 3.143965553373057 4.305555555555888 1 3.264246859454234 4.652777777777922 1 6.752404735808214 4.583333333333478 1 6.632123429727039 4.652777777777931 1 6.511842123645875 4.513888888889037 1 6.511842123645865 4.444444444444597 1 6.391560817564693 4.583333333333442 1 7.113248654051731 4.652777777777899 1 6.992967347970559 4.722222222222355 1 6.872686041889391 4.791666666666805 1 6.752404735808225 4.791666666666783 1 6.992967347970572 2.708333333333357 1 8.67690563310687 2.77777777777779 1 8.79718693918805 2.638888888888923 1 8.556624327025695 2.569444444444469 1 8.676905633106859 2.569444444444486 1 8.436343020944523 2.708333333333337 1 8.917468245269214 2.847222222222224 1 8.917468245269228 2.916666666666657 1 9.037749551350405 2.98611111111111 1 8.917468245269241 3.124999999999998 1 8.917468245269255 7.222222222222323 1 6.391560817564891 7.291666666666777 1 6.271279511483725 7.36111111111123 1 6.150998205402556 7.430555555555683 1 6.030716899321388 7.430555555555662 1 6.271279511483733 6.458333333333472 1 6.03071689932132 6.527777777777906 1 6.150998205402497 6.597222222222343 1 6.271279511483673 6.666666666666777 1 6.391560817564849 6.458333333333456 1 6.271279511483664 6.388888888889038 1 5.910435593240144 6.319444444444587 1 6.030716899321312 6.458333333333488 1 5.790154287158975 6.319444444444603 1 5.790154287158968 6.527777777777942 1 5.669872981077809 6.875000000000092 1 6.511842123646035 7.01388888888898 1 6.511842123646046 6.597222222222326 1 6.511842123646012 6.73611111111121 1 6.511842123646022 6.805555555555642 1 6.6321234297272 1.180555555555729 1 6.752404735808033 1.041666666666839 1 6.752404735808017 1.458333333333495 1 6.752404735808062 1.319444444444611 1 6.752404735808048 1.250000000000176 1 6.632123429726871 0.8333333333334905 1 6.872686041889164 0.7638888888890344 1 6.992967347970329 0.9722222222224064 1 6.63212342972684 0.9027777777779519 1 6.752404735808001 0.7638888888890576 1 6.752404735807986 8.957259323158812 1 4.828436036014593 9.091627845950303 1 4.829598972151638 8.680400642252277 1 4.827993277747286 8.818932038902144 1 4.828199675987707 8.888160454545412 1 4.948517823796685 7.1527777777778 1 7.233529960133103 7.222222222222236 1 7.353811266214285 7.013888888888935 1 6.99296734797074 7.083333333333367 1 7.113248654051919 7.013888888888915 1 7.23352996013309 7.847222222222227 1 8.91746824526949 7.777777777777796 1 8.797186939188322 7.708333333333361 1 8.67690563310715 7.63888888888893 1 8.556624327025974 7.847222222222234 1 8.676905633107168 7.777777777777753 1 9.278312163512991 7.847222222222202 1 9.15803085743182 7.91666666666665 1 9.037749551350652 7.986111111111093 1 8.9174682452695 7.986111111111068 1 9.158030857431832 8.680555555555467 1 9.158030857431907 8.819444444444354 1 9.158030857431921 8.958432934978024 1 9.158014840788812 9.097321823866906 1 9.158014840788834 8.888988490533578 1 9.278296146869963 8.541666666666577 1 9.158030857431896 8.611111111111018 1 9.278312163513062 8.472222222222141 1 9.037749551350721 8.402777777777693 1 9.158030857431875 8.402777777777713 1 8.917468245269543 9.161753429026437 1 4.948218925373844 9.226893536174657 1 4.829063713701911 9.35313558770261 1 4.829973618839775 9.283010004626478 1 4.71135366561757 9.341960141129576 1 4.598578149497415 0.7709751636906694 1 2.907494203874673 0.8375243437332125 1 3.026103928274039 0.6859033603957622 1 2.784254771801626 0.6163970738561906 1 2.904500373332529 0.6291199500161274 1 2.668575050031122 0.704219311852885 1 0.8558063955545715 0.6372534864676114 1 0.9770816817289214 0.7638888888893713 1 0.7383394317494316 0.6347748674084472 1 0.7355250894733958 0.8333333333338113 1 0.6205024359897258 9.30195276631299 1 5.667792909738782 9.371397210757424 1 5.547511603657599 9.231907856994763 1 5.787727537263462 9.367193956640948 1 5.785647465924328 9.161762870197565 1 5.907604385028714 9.232923881969505 1 4.130175149655269 9.171852119973241 1 4.003518693557576 9.253754289623668 1 4.266855296049641 9.340105942801836 1 4.155232777561345 9.317802288280358 1 4.388402826097556 6.59722222222269 1 0.7383394317497165 6.458333333333803 1 0.738339431749703 6.73611111111158 1 0.7383394317497318 6.666666666667147 1 0.6180581256685533 6.875000000000473 1 0.7383394317497496 2.983762473253253 1 0.7506699229163607 2.844873584364364 1 0.7542928928545616 2.705195704978871 1 0.7604573414416113 2.563018723088366 1 0.7630803168088487 2.772291511564987 1 0.6474343686137563 3.263888888889353 1 0.9791637028518965 3.194444444444915 1 0.8594862250937554 3.263689174785724 1 0.7439468420191042 3.124800285896835 1 0.7445305427313638 3.053007203594062 1 0.6351305398417095 0.8366413457002091 1 2.065975911474927 0.7755777177403729 1 2.190987730612713 0.6660280828995482 1 2.207277835254362 0.7463771212036903 1 2.329872928654162 0.6818710579169185 1 2.451026096049286 0.6329305431548566 1 6.991100311788069 0.7023749875992948 1 7.111381617869249 0.6412275465047614 1 7.226877440161949 0.7721858922389391 1 7.228744476344209 0.8430131705750281 1 7.348228201793977 9.309141214768218 1 9.037172952198652 9.379059719545525 1 8.91689164611749 9.23670872097977 1 9.157934757573294 9.379183269081427 1 9.157358158421129 9.167363878180113 1 9.278200047011312 0.6228305202046845 1 8.916963354954127 0.6922749646491264 1 9.037244661035302 0.7638888888889191 1 9.15803085743147 0.833333333333354 1 9.278312163512641 0.622830520204677 1 9.15752596711647 9.375474060332788 1 8.676905633107316 9.305555555555513 1 8.556624327026128 9.372507056606754 1 8.437782322484082 9.233618167717866 1 8.437782322484072 9.16375823270789 1 8.317740899992746 5.208333333333384 1 9.398593469594063 5.347222222222273 1 9.398593469594047 5.416666666666698 1 9.518874775675229 5.486111111111156 1 9.398593469594031 5.625000000000032 1 9.398593469594022 8.541588447351847 1 4.827948998452424 8.611020975388312 1 4.948237184474936 8.472137687222205 1 4.707671338733794 8.40275802035824 1 4.827915245461445 8.402750652058842 1 4.587356887388729 4.930555555555602 1 9.158030857431733 5.000000000000062 1 9.278312163512899 4.93055555555561 1 9.398593469594095 5.069444444444501 1 9.398593469594076 4.861111111111144 1 9.037749551350565 4.791666666666713 1 9.158030857431751 4.93055555555558 1 8.917468245269372 4.791666666666691 1 8.91746824526939 5.000000000000012 1 8.797186939188189 4.652777777777827 1 9.158030857431765 4.722222222222284 1 9.278312163512933 4.652777777777853 1 9.398593469594111 4.791666666666739 1 9.398593469594097 4.861111111111179 1 9.518874775675275 4.583333333333369 1 9.037749551350586 4.513888888888941 1 9.158030857431768 4.6527777777778 1 8.917468245269408 4.513888888888914 1 8.917468245269411 4.722222222222236 1 8.797186939188215 7.083333333333721 1 1.820871186480298 7.152777777778175 1 1.700589880399132 7.291666666667062 1 1.700589880399144 7.222222222222626 1 1.580308574317966 7.291666666667082 1 1.460027268236805 8.819444444444532 1 6.511842123646172 8.958333333333428 1 6.511842123646181 8.680555555555642 1 6.511842123646162 8.750000000000076 1 6.632123429727336 9.166666666666808 1 6.391560817565011 9.23611111111126 1 6.271279511483849 9.02777777777786 1 6.63212342972736 9.097222222222321 1 6.511842123646193 9.236111111111239 1 6.511842123646192 9.231907856994756 1 6.02829014942585 9.323834376673428 1 6.143782660117468 9.389075567001392 1 6.021074604140628 9.393278821117896 1 6.264063966198627 5.347222222222287 1 7.474092572295264 5.277777777777845 1 7.353811266214093 5.416666666666726 1 7.594373878376437 5.486111111111176 1 7.474092572295275 5.486111111111168 1 7.714655184457613 7.29166666666667 1 7.474092572295474 7.361111111111109 1 7.594373878376651 7.430555555555562 1 7.474092572295473 7.569444444444455 1 7.474092572295471 7.152777777777783 1 7.474092572295463 4.375000000000052 1 9.158030857431775 4.444444444444509 1 9.278312163512954 4.375000000000076 1 9.398593469594125 4.513888888888965 1 9.398593469594116 4.583333333333419 1 9.518874775675283 5.763888888888945 1 8.19578040878233 5.694444444444507 1 8.075499102701148 5.83333333333339 1 8.316061714863514 5.902777777777841 1 8.195780408782351 5.902777777777825 1 8.43634302094469 7.91666666666702 1 3.264246859454477 7.847222222222561 1 3.384528165535641 7.986111111111471 1 3.143965553373311 7.847222222222582 1 3.143965553373298 8.05555555555592 1 3.023684247292144 8.958333333333396 1 6.752404735808524 9.097222222222289 1 6.752404735808538 8.819426677999768 1 6.75241488625826 8.888871122444197 1 6.872696192339436 8.680537789110877 1 6.752414886258249 9.163144708075183 1 6.874719445630615 9.232589152519648 1 6.754438139549451 9.39099990732729 1 6.761215439376235 9.325077421474395 1 6.638900729554157 9.394521865918882 1 6.518619423472975 2.291666666666947 1 4.106216002022342 2.222222222222507 1 3.985934695941167 2.152777777778068 1 3.865653389859993 2.083333333333631 1 3.745372083778817 2.291666666666961 1 3.865653389859998 2.222222222222477 1 4.467059920265854 2.29166666666693 1 4.346778614184688 2.430555555555821 1 4.346778614184691 2.361111111111384 1 4.226497308103516 3.26388888888899 1 7.714655184457536 3.333333333333426 1 7.834936490538709 3.40277777777788 1 7.714655184457543 1.944444444444654 1 5.429310368915202 2.013888888889107 1 5.309029062834032 1.875000000000218 1 5.309029062834027 1.805555555555779 1 5.188747756752853 2.013888888889094 1 5.549591674996377 3.541666666666911 1 4.827903838509432 3.611111111111343 1 4.948185144590607 3.680555555555799 1 4.827903838509438 3.819444444444684 1 4.827903838509443 2.013888888889191 1 3.625090777697642 1.944444444444752 1 3.504809471616464 1.8750000000003 1 3.625090777697633 2.430555555555582 1 8.676905633106852 2.361111111111144 1 8.556624327025677 2.430555555555597 1 8.436343020944513 2.291666666666706 1 8.436343020944506 2.222222222222269 1 8.316061714863334 6.041666666667139 1 0.738339431749651 5.902777777778249 1 0.7383394317496528 5.972222222222678 1 0.8586207378308381 5.833881348834069 1 0.6227220864909006 4.930555555555581 1 8.676905633107005 4.79166666666671 1 8.436343020944641 4.861111111111146 1 8.556624327025817 4.791666666666693 1 8.676905633107008 3.33333333333379 1 1.099347725481028 3.402777777778241 1 0.9790865470106275 3.263888888889339 1 1.21961828700043 3.402777777778227 1 1.219541131159161 3.194444444444887 1 1.33979895502776 3.54166666666713 1 0.9789764042517117 3.472222222222693 1 0.8587923816225801 3.541666666667144 1 0.7383701822660377 3.402777777778256 1 0.7384803250249534 3.333133619230176 1 0.6235246426625618 3.611111111111567 1 1.0992393532064 3.680555555556019 1 0.9789451878183522 3.541666666667115 1 1.219517599766487 3.680555555556004 1 1.219486383333128 3.819444444444907 1 0.978921627952978 3.750000000000469 1 0.8586586789982902 3.819444444444921 1 0.7383466224006726 3.680555555556032 1 0.7383701822660467 3.611111111111596 1 0.6180581256684201 5.555555555555853 1 3.985934695941363 5.625000000000297 1 3.865653389860188 5.486111111111418 1 3.865653389860178 5.763888888889179 1 3.865653389860203 1.732275002609662 1 0.7449928803077288 1.659542465163606 1 0.6273345495938001 1.804916204139042 1 0.8597296459237019 1.870524540081563 1 0.7461017884007775 6.875000000000195 1 5.068466450671975 6.736111111111307 1 5.068466450671968 7.013888888889086 1 5.068466450671982 6.944444444444646 1 4.948185144590806 7.152777777777975 1 5.068466450671992 6.666666666666868 1 4.948185144590794 6.597222222222419 1 5.068466450671963 6.458333333333533 1 5.068466450671956 6.527777777777972 1 5.188747756753129 6.458333333333523 1 5.309029062834295 6.736111111111317 1 4.827903838509624 6.597222222222427 1 4.827903838509618 6.875000000000208 1 4.82790383850963 6.805555555555769 1 4.707622532428454 6.388888888889092 1 4.948185144590783 6.319444444444644 1 5.06846645067195 6.458333333333538 1 4.827903838509615 6.319444444444651 1 4.827903838509609 6.527777777777987 1 4.707622532428443 6.180555555555758 1 5.068466450671949 6.250000000000199 1 5.18874775675312 6.180555555555753 1 5.309029062834286 6.319444444444638 1 5.309029062834289 6.388888888889076 1 5.429310368915461 6.25000000000021 1 4.707622532428436 6.180555555555762 1 4.827903838509606 6.041666666666876 1 4.827903838509603 6.111111111111317 1 4.948185144590775 6.04166666666687 1 5.068466450671946 6.319444444444654 1 4.587341226347267 6.180555555555765 1 4.587341226347263 6.458333333333544 1 4.587341226347268 6.388888888889099 1 4.467059920266095 6.597222222222433 1 4.587341226347272 6.111111111111328 1 4.467059920266085 6.041666666666885 1 4.587341226347254 5.902777777778002 1 4.587341226347244 5.972222222222439 1 4.707622532428422 5.902777777777994 1 4.827903838509592 6.180555555555775 1 4.34677861418492 6.041666666666893 1 4.346778614184911 6.458333333333544 1 4.346778614184926 6.319444444444655 1 4.346778614184924 6.25000000000022 1 4.226497308103751 5.972222222222465 1 4.226497308103738 5.902777777778018 1 4.346778614184903 5.83333333333357 1 4.467059920266061 5.763888888889125 1 4.587341226347229 5.763888888889141 1 4.346778614184888 5.902777777777981 1 5.068466450671938 5.972222222222422 1 5.188747756753111 5.833333333333544 1 4.948185144590761 5.763888888889095 1 5.068466450671926 5.763888888889108 1 4.827903838509581 3.888888888889344 1 1.099199007389923 3.958333333333795 1 0.978912498569861 3.819444444444892 1 1.219481473949335 3.95833333333378 1 1.219472344566218 3.75000000000044 1 1.339759720509423 4.097222222222683 1 0.978907050361785 4.027777777778246 1 0.8586296709248402 4.097222222222697 1 0.7383411741926029 3.95833333333381 1 0.7383466224006789 3.888888888889373 1 0.6180581256684354 4.166666666667118 1 1.099187710378694 4.236111111111569 1 0.978904882733673 4.097222222222667 1 1.219469201496463 4.236111111111553 1 1.219467033868352 4.236111111111587 1 0.7383411741926121 4.166666666667151 1 0.6180581256684509 4.305555555556019 1 0.8586227706809539 4.375000000000473 1 0.7383397221568019 4.375000000000455 1 0.9789034306978628 2.353208017207218 1 0.8708026093035218 2.42407535683556 1 0.7635173872986545 2.283859560045539 1 0.7617581801852848 2.493670265926688 1 0.6540358876906117 4.027777777778142 1 2.783121635129531 3.958333333333691 1 2.903402941210698 4.166666666667043 1 2.542559022967198 4.097222222222591 1 2.662840329048365 3.958333333333702 1 2.662840329048358 3.958333333333676 1 3.143965553373039 4.027777777778111 1 3.264246859454215 3.888888888889239 1 3.023684247291865 3.819444444444786 1 3.143965553373032 3.819444444444801 1 2.903402941210691 3.958333333333657 1 3.384528165535382 4.097222222222547 1 3.384528165535392 4.166666666666982 1 3.504809471616568 4.236111111111436 1 3.384528165535401 4.375000000000325 1 3.38452816553541 3.680555555555898 1 3.143965553373024 3.750000000000334 1 3.264246859454198 3.81944444444477 1 3.384528165535373 3.888888888889205 1 3.504809471616548 3.680555555555882 1 3.384528165535365 3.680555555555912 1 2.903402941210683 3.541666666667022 1 2.903402941210677 3.61111111111146 1 3.023684247291851 3.541666666667008 1 3.143965553373017 3.750000000000363 1 2.783121635129516 3.819444444444754 1 3.625090777697715 3.958333333333641 1 3.625090777697725 4.027777777778079 1 3.745372083778902 4.097222222222531 1 3.625090777697735 0.8359427045568458 1 4.465553399087618 0.7664982601123955 1 4.585834705168786 0.903212672981917 1 4.346527527321585 0.7669331553162839 1 4.345021006143416 0.6073856115455647 1 4.590114915061887 0.6742206847667476 1 4.711902742321224 0.6106931196377162 1 4.833418964515481 0.7698057682045472 1 4.82913875462238 0.8402363592015556 1 4.949625880055735 2.013888888889285 1 2.181715104723566 1.944444444444849 1 2.061433798642389 1.875000000000397 1 2.181715104723557 1.805555555555945 1 2.301996410804725 1.597222222222547 1 3.143965553372925 1.45833333333366 1 3.143965553372916 1.388965457008438 1 3.02372845391597 1.319521012563988 1 3.14400975999714 1.180632123675103 1 3.144009759997123 1.736111111111435 1 3.143965553372935 1.666666666666998 1 3.023684247291757 1.805555555555874 1 3.264246859454111 1.875000000000325 1 3.143965553372943 1.875000000000312 1 3.384528165535287 4.097222222222424 1 5.309029062834138 4.027777777777986 1 5.188747756752965 4.166666666666864 1 5.42931036891531 4.236111111111313 1 5.30902906283414 4.236111111111303 1 5.549591674996482 2.152777777778025 1 4.587341226347017 2.291666666666915 1 4.587341226347027 1.875000000000248 1 4.587341226347002 2.013888888889137 1 4.58734122634701 2.083333333333575 1 4.707622532428182 7.847222222222533 1 3.625090777697983 7.916666666666969 1 3.745372083779162 7.708333333333675 1 3.38452816553563 7.777777777778105 1 3.504809471616807 7.708333333333648 1 3.625090777697973 5.069444444444526 1 7.233529960132918 4.930555555555639 1 7.233529960132912 5.208333333333414 1 7.233529960132924 5.138888888888985 1 7.113248654051757 5.347222222222305 1 7.233529960132932 8.125000000000309 1 3.865653389860352 7.986111090181072 1 3.865653401944478 8.055555534625519 1 3.985934708025655 3.333333333333534 1 5.429310368915275 3.263888888889084 1 5.549591674996444 3.402777777777986 1 5.309029062834108 3.263888888889098 1 5.309029062834101 3.472222222222439 1 5.188747756752941 9.096635229123663 1 6.993306248594364 9.232002159421022 1 6.995339652335278 8.958226734664921 1 6.993028250669344 9.027084186010759 1 7.113648457374007 8.263884367935976 1 4.346781224358606 8.3333147232137 1 4.467070664823985 8.125000000000302 1 4.106216002022697 8.194444444444741 1 4.226497308103875 8.124995479047081 1 4.346781224358596 1.597222222222248 1 9.158030857431509 1.666666666666687 1 9.278312163512679 1.527777777777805 1 9.037749551350331 1.458333333333357 1 9.1580308574315 1.597222222222243 1 9.398593469593891 1.73611111111113 1 9.398593469593891 1.805555555555578 1 9.518874775675135 1.875000000000022 1 9.398593469593923 2.013888888888915 1 9.398593469593962 1.458333333333349 1 9.3985934695939 1.388888888888909 1 9.278312163512684 1.319444444444458 1 9.398593469593905 3.680555555555866 1 3.625090777697708 3.61111111111143 1 3.504809471616535 3.541666666666978 1 3.625090777697704 3.541666666666995 1 3.38452816553536 5.06944444444481 1 2.66284032904842 5.000000000000373 1 2.542559022967243 5.138888888889246 1 2.783121635129595 5.208333333333695 1 2.662840329048425 5.069444444444823 1 2.422277716886075 4.930555555555937 1 2.422277716886068 4.861111111111498 1 2.301996410804893 4.791666666667048 1 2.422277716886061 4.652777777778159 1 2.422277716886053 5.208333333333709 1 2.422277716886079 5.277777777778148 1 2.542559022967253 5.347222222222598 1 2.422277716886081 5.347222222222585 1 2.662840329048428 6.944444444444501 1 6.87268604188956 6.875000000000049 1 6.992967347970727 7.013888888888956 1 6.752404735808393 6.87500000000007 1 6.75240473580838 7.083333333333412 1 6.632123429727226 3.125000000000197 1 5.549591674996437 3.194444444444635 1 5.669872981077612 3.263888888889076 1 5.790154287158789 3.333333333333516 1 5.910435593239963 3.125000000000189 1 5.790154287158781 8.888888888889309 1 2.061433798642844 8.958333333333766 1 1.941152492561678 8.819331145631249 1 2.181649691623476 8.958220034520135 1 2.181649691623492 9.097222222222655 1 1.941152492561698 9.027777777778224 1 1.820871186480516 9.097222222222682 1 1.700589880399349 8.958333333333794 1 1.700589880399329 8.888888888889365 1 1.580308574318145 9.162587909377411 1 2.059078927023734 9.23203235382187 1 1.938797620942572 9.09654242934101 1 2.18132262612085 9.231352560940227 1 2.178967754501724 9.026984686082951 1 2.301538519101482 9.232377510137443 1 1.702745475926827 9.162933065693014 1 1.582464169845641 9.364908088537579 1 1.937288829591863 9.299542401382821 1 1.819362395129827 9.365253244853154 1 1.701236684576119 9.231755243308449 1 1.462542129685719 9.096599955393685 1 1.46038653415824 9.027100844933452 1 1.340184730760032 8.958278667318018 1 1.460106770919953 4.861111111111214 1 7.113248654051745 4.791666666666755 1 7.233529960132907 4.7222222222223 1 7.353811266214068 4.652777777777874 1 7.233529960132902 7.430555555555904 1 3.143965553373268 7.569444444444796 1 3.143965553373277 7.500000000000355 1 3.023684247292102 4.305555555555716 1 6.150998205402344 4.375000000000166 1 6.030716899321172 4.236111111111265 1 6.271279511483512 4.375000000000155 1 6.271279511483517 4.513888888889054 1 6.030716899321177 4.444444444444615 1 5.910435593240003 4.513888888889067 1 5.790154287158837 4.375000000000179 1 5.790154287158831 4.305555555555742 1 5.669872981077658 3.958333333333552 1 5.068466450671792 3.888888888889118 1 4.948185144590619 3.819444444444665 1 5.068466450671787 3.680555555555778 1 5.06846645067178 7.569444444444523 1 6.511842123646087 7.500000000000092 1 6.39156081756491 7.430555555555639 1 6.511842123646078 7.291666666666754 1 6.51184212364607 1.736111111111247 1 6.992967347970415 1.666666666666814 1 6.872686041889242 1.736111111111259 1 6.752404735808076 1.597222222222378 1 6.75240473580807 1.527777777777941 1 6.632123429726894 4.583333333333497 1 6.150998205402358 4.513888888889048 1 6.271279511483524 4.65277777777794 1 6.271279511483534 6.388888888889285 1 2.061433798642601 6.458333333333734 1 1.941152492561431 6.597222222222618 1 1.94115249256144 6.52777777777818 1 1.820871186480263 6.041666666667064 1 2.181715104723759 6.18055555555595 1 2.181715104723763 6.250000000000389 1 2.301996410804938 6.319444444444839 1 2.18171510472377 6.458333333333724 1 2.181715104723777 5.902777777778176 1 2.181715104723752 5.972222222222612 1 2.301996410804925 5.833333333333735 1 2.06143379864258 5.763888888889285 1 2.181715104723746 5.902777777778161 1 2.422277716886094 6.04166666666705 1 2.422277716886101 6.180555555555939 1 2.422277716886109 6.319444444444828 1 2.422277716886116 6.111111111111488 1 2.542559022967278 5.76388888888927 1 2.422277716886085 5.833333333333707 1 2.542559022967262 5.694444444444834 1 2.301996410804916 5.625000000000379 1 2.422277716886083 5.625000000000394 1 2.181715104723744 6.38888888888927 1 2.542559022967302 6.458333333333719 1 2.422277716886131 6.597222222222609 1 2.422277716886144 6.527777777778167 1 2.301996410804959 6.597222222222613 1 2.18171510472379 6.31944444444482 1 2.66284032904847 6.180555555555926 1 2.662840329048459 6.250000000000368 1 2.783121635129644 6.041666666667036 1 2.662840329048451 3.680555555555685 1 7.233529960132872 3.819444444444574 1 7.233529960132875 3.888888888889007 1 7.353811266214046 3.95833333333345 1 7.233529960132874 4.097222222222334 1 7.233529960132875 6.180555555555706 1 6.030716899321305 6.250000000000139 1 6.150998205402481 6.319444444444575 1 6.271279511483657 6.388888888889012 1 6.391560817564832 6.180555555555694 1 6.27127951148365 6.250000000000171 1 5.669872981077793 6.180555555555721 1 5.790154287158962 6.041666666666838 1 5.790154287158952 6.111111111111271 1 5.910435593240127 1.041666666666862 1 6.511842123645676 0.9027777777779744 1 6.51184212364566 1.18055555555574 1 6.511842123645694 1.111111111111308 1 6.391560817564514 1.319444444444622 1 6.511842123645709 0.8357995471555772 1 6.391338156841518 0.7663551027111217 1 6.511619462922681 0.6077935272220785 1 6.518074467826171 0.6747717578444757 1 6.638578434630313 0.6053273134000143 1 6.758859740711475 9.305555555555873 1 3.745372083779262 9.371025817998268 1 3.627385272746799 9.242971100907329 1 3.881962357473109 9.381859989796219 1 3.881962357473126 7.291666666666684 1 7.955217796620143 7.361111111111136 1 8.075499102701315 7.430555555555587 1 8.195780408782486 7.500000000000042 1 8.31606171486365 7.29166666666671 1 8.195780408782468 6.736111111111183 1 6.99296734797071 6.805555555555616 1 7.11324865405189 6.875000000000044 1 7.233529960133067 6.944444444444477 1 7.35381126621425 6.736111111111177 1 7.23352996013305 5.069444444444554 1 6.99296734797059 5.000000000000124 1 6.872686041889416 4.930555555555667 1 6.992967347970577 0.9031888134149983 1 6.271242401362826 0.7667661383481456 1 6.271019740639847 1.041735172606371 1 6.271273326463255 0.9727017637989392 1 6.150954910261584 6.1805555555556 1 8.917468245269355 6.111111111111153 1 8.797186939188187 6.04166666666671 1 8.676905633107019 5.972222222222261 1 8.556624327025855 6.180555555555602 1 8.676905633107033 6.736111111111187 1 6.752404735808367 6.597222222222316 1 6.752404735808347 6.666666666666743 1 6.872686041889528 7.986111111111106 1 8.43634302094485 7.916666666666673 1 8.556624327026007 7.847222222222233 1 8.43634302094484 7.708333333333361 1 8.436343020944829 6.111111111111149 1 9.278312163512833 6.180555555555595 1 9.158030857431676 6.319444444444485 1 9.158030857431696 6.250000000000044 1 9.037749551350528 8.541666666666575 1 9.398593469594211 8.680555555555465 1 9.398593469594221 8.81946104471848 1 9.398590800153704 8.95844953525215 1 9.398574783510593 8.750016600274037 1 9.518872106234852 8.2638888888888 1 9.158030857431857 8.333333333333236 1 9.278312163513032 8.263888888888783 1 9.398593469594191 8.402777777777676 1 9.398593469594211 8.194444444444386 1 9.037749551350682 8.124999999999931 1 9.158030857431839 8.263888888888838 1 8.91746824526953 8.124999999999968 1 8.917468245269513 8.124999999999911 1 9.398593469594179 8.194444444444349 1 9.518874775675354 8.055555555555483 1 9.278312163513007 7.986111111111049 1 9.398593469594172 7.291666666666664 1 7.714655184457821 7.152777777777784 1 7.714655184457798 7.22222222222223 1 7.834936490538967 0.6944444444444753 1 8.556624327025592 0.6250000000000335 1 8.676905633106774 0.5560992158649046 1 8.791315064448586 9.389192615493023 1 3.399457952512051 9.323059989383642 1 3.277264567223624 9.418055775311048 1 3.52860662279186 9.5096411992523 1 3.418666113589593 9.393166797495113 1 3.156600845301011 9.235448747444481 1 3.144347969214852 9.166556272722545 1 3.023747983265802 9.096449464611075 1 3.144411705188415 9.373903030773189 1 5.304385950315197 9.303721752254056 1 5.184530055585435 9.507604681173865 1 5.543475487943059 9.441763025972111 1 5.42527425320101 0.6753526941841921 1 6.140002518867178 0.607963427924771 1 6.26009827434587 0.4801167581369994 1 6.258882350842391 0.5715302023009529 1 6.389899572615062 0.7699628741281765 1 6.02579002656283 0.611160163704802 1 6.014868560268852 0.9042125619447603 1 6.029857612904121 0.8400200314653702 1 5.904723654305796 1.042758921136133 1 6.02988853800455 0.6080079338542284 1 1.234479616988286 0.6753868624160184 1 1.353932606325143 0.5662548829029429 1 1.079866739645577 0.4748611341939093 1 1.213175046454556 0.5041066868072923 1 0.9557771111951914 0.611363566874662 1 1.481420877909102 0.7701362441454855 1 1.46756556043698 0.8416199596434346 1 1.588761388718427 0.9056432551847911 1 1.461273117134468 1.044187891426572 1 1.461135064343756 9.301803210843605 1 7.114882289644037 9.368312689795125 1 6.996295486680288 9.420231550642127 1 6.892103364565801 9.512719819596875 1 6.776565954570508 9.234898727227188 1 7.234141133355384 9.371209257601294 1 7.235096967700394 9.096582630211545 1 7.233895376324098 9.165988676969231 1 7.354110054380454 8.958174135752802 1 7.233617378399076 7.853291711354509 1 0.5195495497263108 7.71495083796588 1 0.5241838512403542 8.132763552920844 1 0.5208061225799651 7.996614741533258 1 0.5180405431371384 7.926663600217458 1 0.4157352044355717 5.63276355292081 1 0.5208061225798003 5.496614741533238 1 0.5180405431369697 5.426663600217394 1 0.4157352044354011 5.353291711354437 1 0.5195495497261058 5.214950837965773 1 0.5241838512401281 1.447921038828647 1 0.5188331699730535 1.312320242941377 1 0.5205577585316525 1.242875798496938 1 0.4220142720797455 1.180555555556049 1 0.5282097670680869 1.041666666667149 1 0.5263065134636877 4.236121685881072 1 0.5236747195705472 4.097232796992182 1 0.523674719570538 3.958335095795275 1 0.523682659338337 3.819446206906386 1 0.5236826593383308 4.027790115009195 1 0.4292992532404334 3.402777777778017 1 0.5236842472917986 3.263689174785485 1 0.5291507642859494 3.680555849299493 1 0.5236839826329601 3.541666960410605 1 0.5236839826329511 3.472222515965915 1 0.4293101042563387 3.123272643131003 1 0.5319296723325126 2.98223483048742 1 0.5380690525175096 2.912357627770837 1 0.438222993961091 2.842092188233897 1 0.541423861470288 2.702414308848404 1 0.5475883100573377 0.5747322575341008 1 4.456885028544352 0.4824546821884529 1 4.582953065696791 0.6948793396485906 1 4.226246221240402 0.6276093712235193 1 4.345272093006435 0.4859776876688369 1 4.861872035024907 0.5815627711066365 1 4.979108047326063 0.3778353241811315 1 4.649758142773829 0.3775644478254834 1 4.788143759162057 0.7788864870611631 1 5.065362977859809 0.6703883408821476 1 5.051457340495803 0.7429966248677949 1 5.166165341538976 0.5456729089132684 1 5.07991041100523 0.7638888888889024 1 9.398593469593822 0.9027777777777866 1 9.398593469593825 1.041666666666679 1 9.398593469593862 1.180555555555568 1 9.398593469593886 0.6239522072481006 1 9.402494797187016 0.6933966516925332 1 9.5227761032682 0.5549680603039665 1 9.284003774525608 6.041666666666698 1 9.398593469594013 6.180555555555586 1 9.398593469594024 5.902777777777806 1 9.398593469594001 5.763888888888916 1 9.398593469594005 6.25000000000002 1 9.518874775675226 6.31944444444447 1 9.398593469594044 6.458333333333355 1 9.398593469594076 6.388888888888921 1 9.278312163512874 6.458333333333371 1 9.158030857431726 4.305555555555598 1 9.037749551350586 4.236111111111167 1 9.158030857431772 4.375000000000036 1 8.917468245269392 4.097222222222273 1 9.158030857431772 4.166666666666727 1 9.278312163512963 4.097222222222287 1 9.398593469594132 4.236111111111182 1 9.398593469594131 7.013888888889277 1 1.941152492561472 6.875000000000387 1 1.94115249256146 6.736111111111503 1 1.941152492561453 4.791666666666716 1 9.639156081756465 4.652777777777822 1 9.639156081756468 6.597222222222436 1 4.346778614184927 6.527777777777993 1 4.226497308103756 6.666666666666882 1 4.467059920266102 6.736111111111326 1 4.587341226347277 6.597222222222441 1 4.106216002022584 6.458333333333549 1 4.106216002022582 6.388888888889118 1 3.985934695941408 6.31944444444467 1 4.106216002022579 6.18055555555579 1 4.106216002022577 7.708333333333342 1 7.47409257229547 7.847222222222227 1 7.474092572295477 0.7680996069756372 1 3.146396612593535 0.9041550735577517 1 3.144760735461999 1.042345460713384 1 3.144357455298277 0.4944868972945339 1 2.912368767214296 0.579558700589441 1 3.035608199287343 0.6285122163534991 1 3.145993332429802 0.6951429461780383 1 3.264650139617761 1.736111111111453 1 2.903402941210587 1.597222222222566 1 2.903402941210577 1.458416450972011 1 2.903450929201432 2.013888888889215 1 3.14396555337295 1.944444444444777 1 3.023684247291774 2.01388888888923 1 2.903402941210604 1.87500000000034 1 2.903402941210598 1.805555555555907 1 2.783121635129418 7.638888888889237 1 3.264246859454453 7.708333333333689 1 3.143965553373287 2.083333333333655 1 3.264246859454125 2.013888888889203 1 3.384528165535296 3.541666666666794 1 7.233529960132865 3.611111111111239 1 7.353811266214041 3.472222222222345 1 7.113248654051688 3.402777777777901 1 6.992967347970513 3.541666666666789 1 7.474092572295211 3.680555555555681 1 7.474092572295216 3.750000000000108 1 7.594373878376383 3.819444444444558 1 7.474092572295215 4.236111111111217 1 7.233529960132881 4.375000000000103 1 7.233529960132888 4.513888888888987 1 7.233529960132892 5.555555555555634 1 7.353811266214116 5.486111111111196 1 7.233529960132944 2.430555555555807 1 4.587341226347033 2.500000000000259 1 4.467059920265866 2.569444444444714 1 4.346778614184695 1.041757832984925 1 7.95516516172139 1.180646721873813 1 7.955165161721404 1.319459638830883 1 7.955209024136704 0.7671708763435585 1 7.712760328116984 0.8366153207879938 1 7.833041634198164 0.7677178742526362 1 7.953007130889265 0.9033247756869487 1 7.954901987229657 0.7111404256743469 1 7.582051544050302 0.6449779686844698 1 7.700437993791091 0.7721858922389206 1 7.469307088506552 0.6499929845798319 1 7.45698475418066 0.5150306847082735 1 7.663354093880097 0.5710611353774853 1 7.794062877946779 0.6086212040183714 1 7.949767577181731 0.6753306589173261 1 8.071627930213225 0.4786739200421752 1 7.912683677270738 4.236111111111494 1 2.42227771688603 4.375000000000383 1 2.422277716886037 4.513888888889271 1 2.422277716886045 4.444444444444891 1 1.099184446371873 4.375000000000441 1 1.219465752453039 4.305555555555991 1 1.339747243570808 4.513888888889341 1 0.9789023343191533 4.652832144395308 1 0.9797290132075041 4.583387699950871 1 0.8594479975334944 4.791721033284194 1 0.979729013207511 3.05555555555576 1 5.42931036891526 3.12500000000021 1 5.309029062834093 4.930555555555997 1 0.9789020439120099 5.000000000000437 1 1.099183349993183 5.069444444444876 1 1.219464656074357 5.004162308204753 1 0.629552333927985 4.930881755258498 1 0.7433009571155469 4.792047232986695 1 0.7441279264110481 4.86116547772864 1 0.859447707126344 7.569444444444439 1 9.398593469594154 7.708333333333316 1 9.398593469594157 7.847222222222183 1 9.398593469594166 6.319444444444622 1 5.549591674996627 6.18055555555574 1 5.549591674996622 6.458333333333506 1 5.549591674996634 5.972222222222402 1 5.669872981077775 5.902777777777952 1 5.79015428715894 6.111111111111301 1 5.429310368915448 6.041666666666849 1 5.549591674996615 5.902777777777963 1 5.549591674996602 8.541644923179089 1 5.068479004280684 8.680457118079518 1 5.068523283575548 8.819235154500571 1 5.068579811271004 8.95756243875724 1 5.06881617129789 8.333323319562979 1 4.948190926044115 8.40276688417886 1 5.068472740094536 8.472203026870066 1 5.188758839195147 2.56944444444445 1 8.917468245269205 2.638888888888884 1 9.037749551350384 2.500000000000016 1 8.797186939188027 2.847222222222201 1 9.158030857431573 2.986111111111087 1 9.158030857431587 2.708333333333312 1 9.158030857431562 2.777777777777742 1 9.278312163512743 2.569444444444425 1 9.158030857431552 3.055555555555518 1 9.278312163512767 3.124999999999974 1 9.1580308574316 3.263888888888863 1 9.158030857431612 3.194444444444431 1 9.03774955135043 2.986111111111067 1 9.398593469593958 3.124999999999955 1 9.398593469593971 2.708333333333298 1 9.398593469593921 2.847222222222187 1 9.398593469593933 2.916666666666623 1 9.518874775675137 3.263888888888852 1 9.39859346959399 3.402777777777752 1 9.398593469594022 3.333333333333306 1 9.278312163512812 3.402777777777763 1 9.158030857431644 2.569444444444421 1 9.398593469593887 2.499999999999985 1 9.278312163512727 2.430555555555554 1 9.398593469593884 4.791666666666824 1 6.511842123645887 4.861111111111262 1 6.632123429727063 4.930555555555694 1 6.75240473580824 4.722222222222383 1 6.391560817564713 8.333333333333503 1 5.429310368915606 8.402773605046118 1 5.309031471962303 9.369634812620749 1 5.06357259931948 9.231106058884096 1 5.068641123190071 9.095840368659744 1 5.069176381639799 7.430555555555612 1 8.436343020944795 7.291666666666719 1 8.436343020944793 7.569444444444491 1 8.436343020944804 7.986111111111107 1 8.676905633107179 8.055555555555543 1 8.79718693918835 9.322571857062369 1 2.288310608092289 9.38861733709877 1 2.166066908995172 9.416129844592183 1 2.035777360615525 9.483639892153134 1 1.91634213480278 9.235431318229857 1 2.421885238283214 9.392696094388402 1 2.408984392776662 9.096407180893323 1 2.42181069344295 9.166531418219355 1 2.542484478127323 9.389825011082861 1 1.47095701888486 9.323491900783534 1 1.34887938319746 9.416785566967686 1 1.600512032753767 9.483950458213064 1 1.717128951956767 9.394069383869038 1 1.230755028128453 9.235999616094626 1 1.222340138929312 9.16715885597638 1 1.102178814069333 9.096581372890874 1 1.22030316913834 8.958260084815207 1 1.220023405900053 9.428420419392296 1 2.532564774159356 9.515560958224807 1 2.39899014396843 9.239541024449498 1 2.662694102859888 9.329828990305113 1 2.782098238012337 9.395843521411503 1 2.661963158120037 9.100516887112963 1 2.662619558019624 9.583926541781256 1 5.672959728482809 9.654292356995946 1 5.55072237802622 9.487656586684878 1 5.77000979185944 9.417611677366651 1 5.889944419384121 7.504216674821956 1 0.6296449173025698 7.431575473292647 1 0.7444823209723765 7.574871623432302 1 0.5284186082923892 7.432527192361207 1 0.5269400341389947 7.292219971068861 1 0.7448285625264146 7.361923200610647 1 0.8611445403496159 7.431348014984424 1 0.9804417020498379 7.500259666581378 1 1.099815691062447 7.152967026616246 1 0.7422416967816419 7.222619299298246 1 0.6255794774044026 7.292411876597446 1 0.5288019318072843 7.15315893214483 1 0.5262150660625117 7.363066825207792 1 0.4275756227971038 4.51390539964526 1 0.7408388388650387 4.444460955200828 1 0.620557242376697 4.513968848262858 1 0.5261261976719698 4.375063448618071 1 0.5236270809637329 9.524879026595787 1 1.206831858858503 9.437386741906879 1 1.080292614590355 9.236703914475195 1 0.9819175048583682 9.097285671271443 1 0.9798805350673961 9.366247808141628 1 0.9789408320451057 9.296374623436691 1 0.8566425530431688 9.497057450868375 1 0.9550176627751552 9.027865204657106 1 0.8592031868739741 8.958320146158291 1 0.979464496084939 8.819447816758206 1 0.979081687430569 8.888868283372545 1 1.099759035623991 9.09730425377429 1 0.738838675762614 8.958338728661136 1 0.738422636780157 9.236193142663176 1 0.738838675762622 9.166666666667208 1 0.6180581256688048 9.365737036329609 1 0.7358620029493597 8.888888888889433 1 0.6180581256687836 8.81944983977225 1 0.7384226367801436 8.6805564547773 1 0.7383532992549662 8.750006294549005 1 0.8587178103663395 8.680554431763259 1 0.9790123499053915 8.958340655600491 1 0.5236452277027244 8.819451766711602 1 0.5236452277027112 9.236155044711856 1 0.5234501297553482 9.097266155822968 1 0.5234501297553402 8.611111111111663 1 0.6180581256687411 8.680555555556133 1 0.5236842472922675 8.54166666666725 1 0.5236842472922382 8.750007322267189 1 0.4292713493262083 9.496372226688106 1 0.7454228063765858 9.43619074591459 1 0.627618929096039 9.506686648222036 1 0.5317799444546527 9.376051457863539 1 0.5222191410274266 9.3066509470193 1 0.4276111451139619 0.5813286092715226 1 1.632912273954884 0.7781211805636147 1 1.706877719786603 0.6693205871746239 1 1.706477894658556 0.7413288191341094 1 1.818301782424219 0.5445362478420175 1 1.744336336592501 0.5792862534719662 1 5.866994700648913 0.7778546364225043 1 5.786898420126473 0.7419792733420154 1 5.675420283324492 0.6698949805682974 1 5.789177931162524 0.5434108903914773 1 5.755516563846932 0.5638945713757817 1 0.6275627768497175 0.5042249943392954 1 0.7450297406548574 0.3988221861618547 1 0.7320047791836513 0.4697024821945202 1 0.8399670918073296 0.6239303812779345 1 0.5217455392025165 0.4933805082087827 1 0.5312501903839781 0.9026320492165312 1 0.5251538307979888 0.7637431603276535 1 0.5227095204765189 0.6932290971606545 1 0.4263969340107795 0.3127658635637473 1 0.6657559362378118 0.3403297911345024 1 0.5316715116294723 0.6048369025335379 1 2.51975693822636 0.4892837442446538 1 6.774397497596825 0.5784008752892356 1 6.888223798774498 9.431091929858646 1 6.39073480287777 9.429681099287803 1 3.032008753167637 9.23954102444953 1 2.903256715022214 9.100541741616123 1 2.903320450995777 9.395843521411535 1 2.902525770282363 9.519969065143385 1 2.910850276157761 0.5890080546206086 1 7.334502250202705 0.5279625880560348 1 7.447246705746455 0.4870606394149016 1 7.544457544869845 0.4260757094556783 1 7.421975040891891 9.441441055905086 1 7.355668042958275 9.097056625027211 1 7.474168885890627 9.235372722042854 1 7.474414642921913 9.30544255727261 1 7.594423676404418 9.37437460921463 1 7.474364844894245 8.958232108920495 1 7.474143392364388 9.027616153994117 1 7.594447980905847 8.888809757046705 1 7.353852351492742 9.097009601059955 1 7.714759926188215 9.166567043787319 1 7.834991434241712 9.235998112828197 1 7.714704982485582 9.374999999999972 1 7.714655184457914 8.958185084953239 1 7.714734432661976 9.434938043066468 1 3.98119608740108 0.6239522072480688 1 9.643057409349353 1.250000000000008 1 9.518874775675101 2.152777777777836 1 9.398593469594029 3.472222222222195 1 9.518874775675226 3.54166666666665 1 9.398593469594047 3.680555555555556 1 9.398593469594079 3.611111111111113 1 9.278312163512876 3.541666666666669 1 9.158030857431676 3.680555555555575 1 9.158030857431704 3.958333333333382 1 9.15803085743177 3.819444444444475 1 9.15803085743174 3.888888888888927 1 9.278312163512936 4.027777777777828 1 9.518874775675304 3.958333333333375 1 9.398593469594136 3.819444444444468 1 9.398593469594106 3.750000000000031 1 9.03774955135054 5.694444444444466 1 9.518874775675197 5.625000000000011 1 9.639156081756392 5.486111111111128 1 9.639156081756409 7.430555555555953 1 1.70058988039915 7.569444444444849 1 1.700589880399166 7.50000000000041 1 1.580308574317995 7.430555555555974 1 1.46002726823682 7.361111111111541 1 1.339745962155647 9.573727827922426 1 1.815300998624954 9.447260002045656 1 8.791173741127444 9.424950536526222 1 8.325305985594781 9.23313342872475 1 8.197499574509887 9.392289454754085 1 8.19422575171799 9.32485321470973 1 8.07278500828585 9.516670322511199 1 8.200591419370745 9.446567445886275 1 9.283043584108434 9.37699923619421 1 9.403187267427949 9.237061293998639 1 9.399259888360595 9.307309754899869 1 9.524327191992775 9.097674396885772 1 9.399339971576136 9.375558851547757 1 9.645410089657188 8.40277777777834 1 0.5238622031424054 8.26443690438969 1 0.5285261639648149 8.201659981865053 1 0.4219462392312492 7.995608450849828 1 0.312217979537499 8.133560779921568 1 0.3127279409483405 6.66666666666689 1 3.985934695941415 6.597222222222468 1 3.865653389860238 6.458333333333587 1 3.865653389860226 9.031189292125427 1 2.78298603160329 9.518815195420816 1 6.263237951511389 5.763888888888953 1 7.955217796619986 5.625000000000065 1 7.955217796619968 5.555555555555616 1 7.834936490538793 5.972222222222291 1 8.075499102701182 5.902777777777853 1 7.95521779662 7.708333333333734 1 1.941152492561523 7.638888888889284 1 1.820871186480336 7.708333333333741 1 1.70058988039918 7.847222222222628 1 1.941152492561549 7.916666666667068 1 1.820871186480377 7.847222222222634 1 1.700589880399201 7.013888888888913 1 7.474092572295431 7.083333333333348 1 7.594373878376621 7.013888888888914 1 7.714655184457767 3.472222222222337 1 7.594373878376378 3.541666666666774 1 7.714655184457551 3.680555555555657 1 7.714655184457555 3.819444444444534 1 7.714655184457554 6.875000000000218 1 4.587341226347283 9.394782398147314 1 7.952223838016516 9.235626372117977 1 7.955497660808413 9.514456440330679 1 7.93827080268002 9.425229597738927 1 7.820983455202581 9.621723314288367 1 8.131977814969186 9.619693705589629 1 7.994639514164358 7.986111090181064 1 4.106216014106822 7.986110357619188 1 4.346779049213956 7.916666541084912 1 4.226497380608672 6.666666666667056 1 2.061433798642621 6.388888888889372 1 0.6180581256685228 6.319444444444915 1 0.7383394317496876 6.180555555556026 1 0.738339431749672 6.458333333333672 1 0.5236842472919699 6.319444444444785 1 0.5236842472919547 6.73611111111147 1 0.5236842472920078 6.597222222222581 1 0.5236842472919925 6.111111111111597 1 0.6180581256684865 6.180555555555797 1 0.5236842472918671 6.04166666666691 1 0.5236842472918461 6.250000000000098 1 0.4293103689153143 7.013905399645269 1 0.7408066747452802 6.944460955200833 1 0.6205253686640994 7.013905399645025 1 0.5261514902874512 6.875000000000227 1 0.5236842472919206 6.805555555555662 1 0.4293103689153597 5.902777777778253 1 0.523862203142244 5.764436904389612 1 0.528526163964679 5.701659981864995 1 0.4219462392311438 5.495608450849805 1 0.312217979537391 5.633560779921551 1 0.3127279409482441 2.083333333333685 1 2.783121635129435 2.013888888889249 1 2.662840329048259 1.944444444444818 1 2.54255902296708 1.875000000000361 1 2.66284032904825 0.6053392165637725 1 8.192225045684452 0.4823913230399279 1 8.200332796899081 0.5714965509206391 1 8.324169466077844 0.3775076773830613 1 7.996972256337708 0.3783983004227015 1 8.131416410475062 0.6250000000000331 1 8.436343020944404 7.222222222222271 1 8.316061714863626 8.124999999999927 1 9.639156081756511 7.986111111111049 1 9.639156081756509 7.916666666666612 1 9.518874775675336 9.530936916947827 1 0.8402322403673665 9.601390626532808 1 0.7319891665140459 9.687319453726438 1 0.6658120884838548 9.659764232001358 1 0.5317333936965599 4.791666666666832 1 6.271279511483547 7.152777777777867 1 6.511842123646059 6.319444444444805 1 2.903402941210826 5.902777777778144 1 2.662840329048443 6.458333333333447 1 6.511842123646002 6.52777777777788 1 6.632123429727176 2.291666666666793 1 6.992967347970444 2.361111111111228 1 7.11324865405162 2.291666666666778 1 7.233529960132791 2.222222222222357 1 6.872686041889267 2.152777777777905 1 6.992967347970435 2.291666666666808 1 6.752404735808103 2.15277777777792 1 6.752404735808094 2.36111111111126 1 6.632123429726938 2.013888888889018 1 6.992967347970429 2.083333333333453 1 7.113248654051604 2.152777777777891 1 7.233529960132782 2.08333333333348 1 6.632123429726921 2.01388888888903 1 6.752404735808086 1.944444444444582 1 6.872686041889253 1.875000000000131 1 6.992967347970424 1.875000000000143 1 6.752404735808081 2.291666666666821 1 6.51184212364576 2.152777777777931 1 6.511842123645754 7.638888888888999 1 6.150998205402573 7.569444444444545 1 6.271279511483741 7.569444444444573 1 6.030716899321395 7.291666666666865 1 5.068466450672002 5.06944444444472 1 4.346778614184838 5.347222222222481 1 4.587341226347209 5.277777777778047 1 4.467059920266029 5.347222222222499 1 4.346778614184863 5.208333333333611 1 4.346778614184851 5.41666666666691 1 4.707622532428386 5.486111111111365 1 4.587341226347219 5.347222222222459 1 4.827903838509551 5.486111111111343 1 4.827903838509561 5.625000000000243 1 4.587341226347222 5.555555555555814 1 4.467059920266044 5.48611111111139 1 4.346778614184874 5.416666666666954 1 4.226497308103696 5.625000000000268 1 4.346778614184878 5.694444444444676 1 4.707622532428404 5.625000000000226 1 4.827903838509574 5.555555555555776 1 4.948185144590736 5.486111111111409 1 4.10621600202253 5.625000000000288 1 4.10621600202254 5.694444444444716 1 4.226497308103719 5.763888888889159 1 4.106216002022551 5.833333333333608 1 3.985934695941381 5.902777777778038 1 4.106216002022559 0.624924204808635 1 3.383673342530804 0.5543264874807461 1 3.498422430421826 4.097222222222517 1 3.86565338986008 3.472222222222526 1 3.745372083778876 7.430708663567424 1 1.21991553372988 3.888888888888965 1 7.83493649053873 2.43055555555595 1 2.181715104723588 2.291666666667061 1 2.181715104723581 2.500000000000401 1 2.06143379864242 2.083333333333722 1 2.301996410804743 2.013888888889269 1 2.422277716885912 2.152777777778174 1 2.181715104723574 1.875000000000381 1 2.422277716885903 3.125000000000341 1 3.143965553373 3.055555555555903 1 3.023684247291825 3.125000000000353 1 2.903402941210658 3.125000000000183 1 6.030716899321126 3.055555555555744 1 5.91043559323995 3.263888888889069 1 6.03071689932113 5.763888888889253 1 2.662840329048434 5.48611111111149 1 2.422277716886085 5.555555555555927 1 2.542559022967254 5.625000000000363 1 2.662840329048431 5.694444444444802 1 2.783121635129612 5.486111111111474 1 2.662840329048432 5.486111111111504 1 2.18171510472374 5.416666666667052 1 2.30199641080491 3.541666666666891 1 5.068466450671774 5.074862562329319 1 0.5284031777297657 4.932463764641119 1 0.5268320202020318 4.722564932681085 1 0.6255187677425924 4.652848655151226 1 0.7416655177533895 4.792348382783086 1 0.5282833726218652 4.653149804947618 1 0.5258209639642065 4.863048636907652 1 0.4271342164236459 0.3472356665109991 1 5.627365348914781 0.348225642882031 1 5.488014803841969 0.4550753184103959 1 5.696255805938515 6.458333333333435 1 6.752404735808337 3.541666666667048 1 2.422277716885993 3.611111111111487 1 2.542559022967168 3.541666666667036 1 2.662840329048334 3.680555555555926 1 2.662840329048342 3.819444444444815 1 2.66284032904835 3.472222222222585 1 2.783121635129502 2.013888888889119 1 5.068466450671689 2.083333333333559 1 5.188747756752864 1.944444444444678 1 4.948185144590516 1.87500000000023 1 5.068466450671684 2.013888888889127 1 4.827903838509348 1.875000000000238 1 4.827903838509343 1.805555555555798 1 4.70762253242817 0.6944444444447415 1 3.745372083778741 0.6250000000002901 1 3.86565338985991 0.624924204808611 1 3.624235954693156 0.5557155242791337 1 3.989651337650708 0.6250000000002769 1 4.106216002022253 9.546451833223937 1 4.055673650406016 9.451619732959305 1 4.22971034056628 9.448669132438656 1 4.379711680666098 9.430789325305142 1 4.093030194171908 9.577349622779217 1 4.589374593260539 9.702777521733257 1 4.650326730091232 9.472826985287874 1 4.589887004065957 9.405535070263017 1 4.476201582807937 9.513774693645775 1 4.711751159950016 2.500000000000049 1 8.316061714863352 2.291666666666715 1 9.398593469594012 2.361111111111151 1 9.518874775675172 9.429703682738436 1 4.937545001459814 9.485820151190257 1 4.819834953375472 9.590342788681602 1 4.819322542570054 9.707242028845748 1 4.785418719851151 0.4736810127395735 1 2.346979187490472 0.559793330979485 1 2.414893875472884 0.5507151681229541 1 2.278248345313399 0.5799157646596368 1 2.13936314727195 0.5749272488297236 1 2.002491815509413 0.4555850440810662 1 1.803680854847372 0.6638784525906748 1 1.943147297254542 0.5435770219841675 1 1.877246475551043 3.958333333333571 1 4.827903838509449 4.653141958728121 1 0.3320943758613605 4.792221897183961 1 0.3292325153102608 2.291666666666721 1 8.195780408782174 2.430555555555612 1 8.195780408782179 1.458333333333502 1 6.511842123645724 3.26388888888923 1 3.143965553373006 3.40277777777812 1 3.143965553373012 3.33333333333368 1 3.023684247291839 3.402777777778133 1 2.903402941210671 3.263888888889243 1 2.903402941210665 3.472222222222558 1 3.264246859454184 6.041666666666913 1 4.106216002022568 1.729508829131984 1 0.5244568489881131 1.591167955743408 1 0.5204263757971089 1.517887402797025 1 0.4159554693673665 2.009215534484194 1 0.751246597257186 1.936574332954815 1 0.6365098316412129 2.007633258815799 1 0.5343718731203582 1.868942264413167 1 0.5292270642639495 1.448947626382132 1 0.3123246130092613 1.310990223092818 1 0.3128073126048806 2.144128773887322 1 0.7553490213438869 2.214996113515664 1 0.6480637993390195 2.286384545662623 1 0.5446644550758297 2.146653759504406 1 0.5382552962344318 2.079021690962758 1 0.4309725288571684 2.289028635880973 1 0.3330453212443663 2.351805558405584 1 0.4396252459778884 2.150342922806808 1 0.3296546581455673 2.559091278669649 1 0.5489966785926704 2.420147912416843 1 0.5494337490824762 0.7778664744100261 1 5.301130749287857 0.8393913985546266 1 5.425080025994599 0.777088553484732 1 5.547665645980587 0.4556530677243653 1 5.419537082672683 0.580793325649444 1 5.49068439910822 0.5790979198481634 1 5.351043203237194 0.5456840455067272 1 5.618439036452125 0.6691288976305252 1 5.549945157016637 0.7726790459796655 1 1.943547122382589 4.58375229836486 1 0.4288908025512426 5.902777777777971 1 5.309029062834273 6.041666666666861 1 5.309029062834281 5.625000000000211 1 5.068466450671912 5.694444444444647 1 5.188747756753089 5.763888888889082 1 5.309029062834265 5.833333333333521 1 5.429310368915434 5.625000000000197 1 5.30902906283425 0.6693683282310108 1 5.287225111923851 0.5442280703059321 1 5.216077795488313 5.069444444444581 1 6.752404735808254 2 5 0 606 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 0 0.2499999999999997 0 0 0.4999999999999987 0 0 0.7499999999999991 0 10 0.2499999999999997 0 10 0.4999999999999987 0 10 0.7499999999999991 0 0.2777777777777777 0 0 0.5555555555555556 0 0 0.8333333333333334 0 0 1.111111111111111 0 0 1.388888888888889 0 0 1.666666666666666 0 0 1.944444444444443 0 0 2.222222222222221 0 0 2.499999999999999 0 0 2.777777777777775 0 0 3.055555555555553 0 0 3.33333333333333 0 0 3.611111111111108 0 0 3.888888888888885 0 0 4.166666666666663 0 0 4.44444444444444 0 0 4.722222222222217 0 0 4.999999999999995 0 0 5.277777777777772 0 0 5.555555555555549 0 0 5.833333333333327 0 0 6.111111111111104 0 0 6.388888888888882 0 0 6.666666666666659 0 0 6.944444444444437 0 0 7.222222222222214 0 0 7.499999999999991 0 0 7.777777777777769 0 0 8.055555555555546 0 0 8.333333333333323 0 0 8.6111111111111 0 0 8.888888888888879 0 0 9.166666666666657 0 0 9.444444444444438 0 0 9.72222222222222 0 0 8.195183847839587 0.2419513644738763 0 2.638588883506802 0.7558082695681322 0 4.305555555555554 0.7594373878376568 0 5.416028156562049 0.7528972362777914 0 6.528600992546211 0.7424817819646818 0 7.36030402203307 0.7530543205520379 0 4.8630488067325 0.7478908797506058 0 3.193805934339827 0.2471027637222071 0 8.750300072087358 0.7487528936723657 0 1.808220139850526 0.2559736038727985 0 3.749038745569627 0.2485438892286539 0 1.250353790844795 0.754271029159155 0 5.971922216840132 0.7559193398854837 0 0.6970516325982433 0.7409029857707835 0 9.303389969216781 0.7420786699908655 0 9.593881008339052 0.2522220868522006 0 0.4061189916609386 0.2522220868522 0 7.63800072154689 0.240816631606323 0 5.692653433664004 0.2459604181191316 0 2.358024995128665 0.2454446331780684 0 5.139674083834459 0.2472456534837165 0 7.081197832530994 0.2454826082281401 0 2.08131643379535 0.7547216075641878 0 3.470431211441785 0.7540395818808677 0 4.583633338715413 0.2441917304318678 0 0.9770944942447276 0.2430992641528823 0 6.249999999999992 0.2405626121623435 0 9.029181836425508 0.2413518407229592 0 7.916392508334144 0.7510154914107225 0 0.1989502103198869 0.6189454121443064 0 9.801049789680112 0.6189454121443051 0 0.6934985439472406 0.2417953204701935 0 0.5710431639301781 0.4967594024306105 0 0.8366857311590201 0.4873473320437507 0 1.112675140479545 0.4848015100456094 0 9.30823536441407 0.2413908825975778 0 9.430007274348824 0.4967747428542277 0 9.165286516902562 0.48890269486967 0 8.889666942206743 0.4901760718452349 0 8.750059242045181 0.2453610072228571 0 8.610925382958952 0.4899915753242748 0 8.47210090462781 0.7413438951642345 0 8.333106786721908 0.4870556455647148 0 9.027366509328163 0.7449850550630225 0 0.9727378633573125 0.7377228211549155 0 1.398153757718042 0.5103326167346031 0 1.262259979386459 0.2553016842182484 0 1.529490273268032 0.7575794868156964 0 1.67153898812454 0.5168407208992695 0 8.472286617335007 0.2440599320976205 0 8.054560728625132 0.4885796575865268 0 7.916666666666655 0.243648747235535 0 7.77697550274144 0.4884246407083944 0 7.49783745324775 0.4896935357888229 0 7.638407213984222 0.7412835966069862 0 7.21292995523106 0.5142159726518134 0 6.527777777777769 0.2405626121623439 0 6.389026091350286 0.485017569635437 0 6.667392447243646 0.4859026545815704 0 6.110681215157774 0.4855240664507802 0 6.810691597296129 0.7321301469564789 0 6.250027442368378 0.7389449843849607 0 5.827942783133838 0.5080851770283155 0 5.692751090058793 0.7497792085981728 0 4.027777777777774 0.7594373878376572 0 4.166857912912112 0.5129144319974182 0 4.444765762631414 0.5157589151646337 0 3.88779929976103 0.5016699020590552 0 4.305788894518315 0.2599243299369814 0 4.725063436340751 0.4952907571270281 0 4.027506734719438 0.2538420922036848 0 3.605663252228482 0.4915528729866074 0 3.470409108214669 0.2509043379233355 0 4.862550708464379 0.2446770716439318 0 3.194444444444441 0.7594373878376564 0 5.139890614753924 0.7501661967541144 0 5.277950270953948 0.5053314790634514 0 2.916560248315896 0.2416526374223215 0 3.055555555555555 0.4811252243246878 0 2.777460139823638 0.4840297875279142 0 2.916614145974812 0.7344662081142599 0 2.495311575296368 0.5033052701788792 0 2.3580099408672 0.7492444431840584 0 2.637522456057057 0.2457387213845306 0 2.210620530382462 0.4816315117931516 0 5.415889269452266 0.2467185081772912 0 3.748611923534844 0.7511166241273646 0 5.970953646066673 0.2466887122934284 0 4.583940503324626 0.7548842465107504 0 6.805341649108229 0.2408951440671394 0 3.330079110047328 0.51279487411487 0 5.553256403768069 0.4958367170735748 0 7.358698030796483 0.2483681247125165 0 8.194174969532977 0.7446657816210331 0 1.806233590892557 0.7594415732784867 0 5.00136298684666 0.4984336729704746 0 7.083025440566692 0.7505414006662896 0 2.081246178514105 0.2517595622059642 0 6.94220233606439 0.4871378293729766 0 1.943562717561555 0.5152051442270775 0 9.585496603803087 0.7480868249387012 0 0.414655645186101 0.7479652918117925 0 1.532621403439187 0.2564081042874865 0 9.807783769426262 0.3825223630166431 0 0.1922162305737325 0.3825223630166411 0 0.1782767266567531 0.8233821407912196 0 9.821753723141084 0.823406447416601 0 9.821766998964733 0.176985751482318 0 0.1782330010352638 0.1769857514823137 0 9.643643689119466 0.4997102859612156 0 0.3565968483341674 0.4996829112511101 0 0 0.1249999999999998 0 0.0891165005176319 0.2134928757411567 0 0.0891165005176319 0.08849287574115686 0 0.1388888888888888 0 0 0.2280053894065207 0.08849287574115686 0 0 0.8749999999999996 0 0.08913836332837655 0.9116910703956098 0 0.08913836332837655 0.7866910703956094 0 0.2280272522172654 0.9116910703956098 0 10 0.1249999999999998 0 9.910883499482367 0.08849287574115899 0 9.910883499482367 0.2134928757411588 0 9.861111111111111 0 0 9.771994610593477 0.08849287574115899 0 10 0.8749999999999996 0 9.910876861570543 0.7867032237083 0 9.910876861570543 0.9117032237083005 0 9.771987972681652 0.9117032237083005 0 0 0.3749999999999992 0 0.09610811528686625 0.4412611815083199 0 0.09610811528686625 0.3162611815083204 0 0.1852246158044981 0.2797540572494774 0 0 0.6249999999999989 0 0.09947510515994346 0.6844727060721527 0 0.09947510515994346 0.5594727060721526 0 0.1955832204468097 0.5007338875804738 0 0.18861346848832 0.721163776467763 0 10 0.3749999999999992 0 9.903891884713131 0.3162611815083214 0 9.903891884713131 0.4412611815083209 0 9.814775384195498 0.2797540572494805 0 10 0.6249999999999989 0 9.900524894840057 0.5594727060721519 0 9.900524894840057 0.684472706072152 0 9.804416779553186 0.5007338875804741 0 9.811401756410598 0.721175929780453 0 0.4166666666666666 0 0 0.3419483847193582 0.1261110434261 0 0.4808372736082471 0.1261110434261 0 0.2921759963481012 0.2146039191672569 0 0.6944444444444444 0 0 0.6245270497513982 0.1208976602350968 0 0.763415938640287 0.1208976602350968 0 0.5498087678040896 0.2470087036611968 0 0.9722222222222221 0 0 0.9052139137890305 0.1215496320764411 0 1.044102802677919 0.1215496320764411 0 0.8352965190959841 0.2424472923115379 0 1.25 0 0 1.186685545248785 0.1276508421091242 0 1.325574434137674 0.1276508421091242 0 1.119677236815593 0.2492004741855653 0 1.527777777777778 0 0 1.460755146164038 0.1282040521437433 0 1.599644035052926 0.1282040521437433 0 1.397440691412823 0.2558548942528674 0 1.805555555555554 0 0 1.737443403258596 0.1279868019363992 0 1.876332292147485 0.1279868019363992 0 1.670420771644856 0.2561908540801425 0 2.083333333333332 0 0 2.012845311479274 0.1258797811029821 0 2.151734200368163 0.1258797811029821 0 1.944733159182316 0.2538665830393814 0 2.36111111111111 0 0 2.290123608675443 0.1227223165890342 0 2.429012497564332 0.1227223165890342 0 2.219635586821385 0.2486020976920163 0 2.638888888888887 0 0 2.568761228028528 0.1228693606922653 0 2.707650116917416 0.1228693606922653 0 2.497773725592861 0.2455916772812995 0 2.916666666666664 0 0 2.847169013046836 0.1208263187111607 0 2.986057901935725 0.1208263187111607 0 2.777041352186477 0.243695679403426 0 3.194444444444442 0 0 3.12468074494769 0.1235513818611036 0 3.263569633836578 0.1235513818611036 0 3.055183091327861 0.2443777005722643 0 3.472222222222219 0 0 3.401871220773999 0.1254521689616677 0 3.540760109662888 0.1254521689616677 0 3.332107521277248 0.2490035508227713 0 3.749999999999996 0 0 3.680074928340368 0.1242719446143269 0 3.818963817229256 0.1242719446143269 0 3.609723926892148 0.2497241135759947 0 4.027777777777774 0 0 3.958197811804161 0.1269210461018424 0 4.097086700693051 0.1269210461018424 0 3.888272740144533 0.2511929907161694 0 4.305555555555552 0 0 4.23622778059249 0.1299621649684907 0 4.375116669481377 0.1299621649684907 0 4.166647814618877 0.2568832110703331 0 4.583333333333329 0 0 4.514038891579927 0.1220958652159339 0 4.652927780468815 0.1220958652159339 0 4.444711116616864 0.2520580301844246 0 4.861111111111105 0 0 4.792386465343299 0.1223385358219659 0 4.931275354232187 0.1223385358219659 0 4.723092023589896 0.2444344010378998 0 5.138888888888884 0 0 5.069837041917227 0.1236228267418582 0 5.208725930806116 0.1236228267418582 0 5.001112396149419 0.2459613625638241 0 5.416666666666661 0 0 5.346833523615019 0.1233592540886456 0 5.485722412503907 0.1233592540886456 0 5.277781676643363 0.2469820808305039 0 5.694444444444438 0 0 5.624104494609776 0.1229802090595658 0 5.762993383498666 0.1229802090595658 0 5.554271351558135 0.2463394631482114 0 5.972222222222215 0 0 5.9021434897 0.1233443561467142 0 6.041032378588888 0.1233443561467142 0 5.831803539865339 0.24632456520628 0 6.249999999999993 0 0 6.180555555555548 0.1202813060811718 0 6.319444444444438 0.1202813060811718 0 6.110476823033332 0.243625662227886 0 6.527777777777771 0 0 6.458333333333325 0.1202813060811719 0 6.597222222222214 0.1202813060811719 0 6.38888888888888 0.2405626121623437 0 6.805555555555548 0 0 6.736004157887444 0.1204475720335697 0 6.874893046776332 0.1204475720335697 0 6.666559713442998 0.2407288781147416 0 7.083333333333325 0 0 7.012821138487715 0.1227413041140701 0 7.151710027376604 0.1227413041140701 0 6.943269740819611 0.2431888761476398 0 7.361111111111103 0 0 7.290460126509348 0.1241840623562583 0 7.429349015398238 0.1241840623562583 0 7.219947931663738 0.2469253664703283 0 7.63888888888888 0 0 7.56900036077344 0.1204083158031615 0 7.70788924966233 0.1204083158031615 0 7.498349376171687 0.2445923781594198 0 7.916666666666657 0 0 7.847222222222213 0.1218243736177675 0 7.986111111111101 0.1218243736177675 0 7.777333694106773 0.242232689420929 0 8.194444444444436 0 0 8.125369701697567 0.1209756822369382 0 8.264258590586454 0.1209756822369382 0 8.055925257253122 0.2428000558547057 0 8.472222222222211 0 0 8.402809975334165 0.1220299660488103 0 8.541698864223054 0.1220299660488103 0 8.333735232587298 0.2430056482857484 0 8.749999999999989 0 0 8.680585176578141 0.1226805036114286 0 8.81947406546703 0.1226805036114286 0 8.611172929690094 0.2447104696602388 0 9.027777777777768 0 0 8.959035362657193 0.1206759203614796 0 9.097924251546083 0.1206759203614796 0 8.889620539235345 0.2433564239729082 0 9.305555555555546 0 0 9.237451015540364 0.1206954412987889 0 9.376339904429255 0.1206954412987889 0 9.168708600419789 0.2413713616602685 0 9.583333333333329 0 0 9.519162726391745 0.1261110434261003 0 9.658051615280636 0.1261110434261003 0 9.45105818637656 0.2468064847248892 0 9.707824003651893 0.2146039191672593 0 0.4851056003708283 0.8739826459058962 0 0.3462167114819393 0.8739826459058962 0 0.296466185921427 0.7856737163015061 0 0.7651924829657883 0.8704514928853917 0 0.6263035940768995 0.8704514928853917 0 0.5558536388921722 0.7444341387912881 0 1.041924487234212 0.8688614105774577 0 0.9030355983453229 0.8688614105774577 0 0.834894747977778 0.7393129034628495 0 1.319621339866842 0.8771355145795775 0 1.180732450977953 0.8771355145795775 0 1.111545827101054 0.7459969251570353 0 1.598078469967349 0.8787897434078482 0 1.459189581078461 0.8787897434078482 0 1.389922032056413 0.7559252579874257 0 1.8753390176685 0.8797207866392434 0 1.736450128779611 0.8797207866392434 0 1.667861932080295 0.7585105300470916 0 2.151769328008785 0.8773608037820939 0 2.012880439119896 0.8773608037820939 0 1.943775012343953 0.7570815904213373 0 2.4290049704336 0.8746222215920292 0 2.290116081544711 0.8746222215920292 0 2.219663187331275 0.7519830253741231 0 2.708183330642289 0.8779041347840661 0 2.5692944417534 0.8779041347840661 0 2.498299412187001 0.7525263563760953 0 2.986084850765183 0.8672331040571299 0 2.847195961876293 0.8672331040571299 0 2.777601514740807 0.7451372388411961 0 3.263888888888886 0.8797186939188282 0 3.124999999999997 0.8797186939188282 0 3.055529295209626 0.7469517979759581 0 3.540771161276447 0.8770197909404338 0 3.401882272387557 0.8770197909404338 0 3.332437827943113 0.756738484859262 0 3.818750406211865 0.8755583120636823 0 3.679861517322976 0.8755583120636823 0 3.609521567488315 0.7525781030041161 0 4.097222222222219 0.8797186939188286 0 3.958333333333329 0.8797186939188286 0 3.888194850656309 0.7552770059825109 0 4.374999999999996 0.8797186939188284 0 4.236111111111109 0.8797186939188284 0 4.166666666666664 0.759437387837657 0 4.653081362773421 0.8774421232553752 0 4.514192473884533 0.8774421232553752 0 4.44474802944009 0.7571608171742036 0 4.931524403366248 0.8739454398753028 0 4.792635514477359 0.8739454398753028 0 4.723494655028563 0.7513875631306781 0 5.208834196265848 0.8750830983770572 0 5.069945307376959 0.8750830983770572 0 5.001469710743212 0.74902853825236 0 5.4857918560588 0.8764486181388957 0 5.34690296716991 0.8764486181388957 0 5.277959385657987 0.751531716515953 0 5.76304221169606 0.8748896042990864 0 5.624153322807171 0.8748896042990864 0 5.554389623310421 0.7513382224379821 0 6.041516663975617 0.8779596699427419 0 5.90262777508673 0.8779596699427419 0 5.832336653449462 0.7528492742418282 0 6.31945816562863 0.8694724921924804 0 6.180569276739741 0.8694724921924804 0 6.110974829604254 0.7474321621352222 0 6.597633829606435 0.8712408909823409 0 6.458744940717547 0.8712408909823409 0 6.389314217457295 0.7407133831748213 0 6.877568020870283 0.8660650734782395 0 6.738679131981394 0.8660650734782395 0 6.66964629492117 0.7373059644605804 0 7.152623831394453 0.8752707003331448 0 7.013734942505565 0.8752707003331448 0 6.94685851893141 0.7413357738113843 0 7.43015201101653 0.876527160276019 0 7.291263122127642 0.876527160276019 0 7.221664731299881 0.7517978606091638 0 7.708092495880996 0.8706417983034931 0 7.569203606992106 0.8706417983034931 0 7.499355618008646 0.747168958579512 0 7.985974031944846 0.8755077457053613 0 7.847085143055956 0.8755077457053613 0 7.777399861159183 0.7461495440088544 0 8.263754151433151 0.8723328908105166 0 8.124865262544262 0.8723328908105166 0 8.055283738933561 0.7478406365158778 0 8.541606007869454 0.8706719475821172 0 8.402717118980567 0.8706719475821172 0 8.333137937080394 0.7430048383926338 0 8.819594480488117 0.8743764468361829 0 8.680705591599228 0.8743764468361829 0 8.611200488357584 0.7450483944183002 0 9.097016587997409 0.8724925275315112 0 8.95812769910852 0.8724925275315112 0 8.88883329070776 0.7468689743676942 0 9.373917206830608 0.8710393349954327 0 9.235028317941719 0.8710393349954327 0 9.165378239272471 0.743531862526944 0 9.653859413012654 0.8740434124693506 0 9.514970524123761 0.8740434124693506 0 9.444443286509934 0.7450827474647833 0 9.703625163472086 0.7857466361776511 0 8.264145317280747 0.3645035050192956 0 8.402696702028457 0.3655577888311676 0 8.124872288232361 0.3652655110302016 0 8.19383375767352 0.4878176515756208 0 7.985613697645894 0.3661142024110309 0 2.70802451166522 0.6199190285480232 0 2.847037142899225 0.6092479978210871 0 2.636385857560003 0.4936675288533967 0 2.566950229401585 0.6295567698735056 0 2.426660758081784 0.6262748566814688 0 4.236206734233833 0.6361759099175375 0 4.097317845344943 0.6361759099175377 0 4.375160659093484 0.6375981515011453 0 4.305811837771763 0.514336673581026 0 4.51435313297802 0.635321580837692 0 5.623003746913431 0.6228079628358738 0 5.484642280165059 0.6243669766756831 0 5.346989213757999 0.6291143576706214 0 5.208920442853936 0.627748837908783 0 5.415603337361008 0.5005840980685131 0 6.458813541948249 0.6137496758000595 0 6.597996719894929 0.6141922182731261 0 6.528209269296966 0.4854601121085037 0 6.319526766859331 0.6119812770101989 0 6.739042022269888 0.6090164007690246 0 7.42907073764041 0.6213739281704305 0 7.568122333615986 0.6154885661979046 0 7.355383704239405 0.5019547542203182 0 7.286616988632066 0.6336351466019257 0 7.147977697898876 0.6323786866590515 0 4.794056121536626 0.6215908184388169 0 4.654501969832689 0.6250875018188893 0 4.93220589678958 0.6231622763605402 0 4.863213211593705 0.4968622150487513 0 5.070626800800292 0.6242999348622945 0 3.261942522193578 0.3799488189185385 0 3.400244109130998 0.3818496060191028 0 2.986057901935725 0.3613889308735047 0 3.124680744947691 0.3641139940234475 0 3.192817332801441 0.4969600492197789 0 8.81998350714705 0.6194644827588003 0 8.750296162582847 0.4900838235847548 0 8.680612727523155 0.6193722344983202 0 8.958516725767453 0.6175805634541287 0 8.541513143793381 0.6156677352442547 0 1.739879563987533 0.386407162386034 0 1.807550852843048 0.5160229325631736 0 1.875891428706041 0.385589374049938 0 1.602080195781864 0.386624412593378 0 2.01240444803783 0.3834823532165209 0 3.818419022665329 0.3751068956438545 0 3.957653017240234 0.37775599713137 0 3.677350998899055 0.3700483811076306 0 3.746731275994756 0.4966113875228313 0 3.538036180221575 0.3712286054549714 0 1.18151446566217 0.6195362696023822 0 1.042706501918429 0.6112621656002625 0 1.324253774281419 0.6323018229468791 0 1.255414449098794 0.4975670633901063 0 1.463822015493037 0.6339560517751497 0 6.041301715998953 0.6207217031681319 0 6.180354328763076 0.6122345254178705 0 5.969311999145805 0.4968046217395479 0 5.899932499986985 0.6320022584568996 0 5.760346936596315 0.6289321928132441 0 0.6340473982642107 0.618831194100697 0 0.7668686818786317 0.6141251589072672 0 0.7038644475445991 0.4920533672371806 0 0.4928494045581395 0.6223623471212015 0 0.9047117972581663 0.6125350765993332 0 9.366698621782803 0.6194267064225466 0 9.297646895625693 0.4928387188619489 0 9.234338243059671 0.6154906824302677 0 9.507751939075956 0.6224307838964644 0 9.096326513115361 0.6169438749663463 0 9.369121319381447 0.3690828127259027 0 9.511944141343939 0.3744984148532141 0 9.536825481734144 0.4982425144077216 0 9.618762348729259 0.3759661864067081 0 9.700832388882656 0.3173722249344219 0 9.725713729272865 0.4411163244889293 0 0.4885810777955584 0.3744907446414052 0 0.6322708539387094 0.369277361450402 0 0.381357919997553 0.3759524990516551 0 0.4638200061321727 0.4982211568408603 0 0.2991676111173356 0.3173722249344205 0 0.2744065394539499 0.4411026371338756 0 7.707488112144165 0.3646206361573587 0 7.846821084704048 0.3660366939719647 0 7.567919087397319 0.365255083697573 0 7.637406477994595 0.4890590882486087 0 7.428267742022117 0.3690308302506697 0 5.760298108398921 0.3770227975737235 0 5.899448214600255 0.3773869446608719 0 5.622954918716037 0.3708985675963532 0 5.690599593450953 0.5019609470509452 0 5.484572836610168 0.371277612625433 0 2.426668285212517 0.3743749516784738 0 2.566417015676713 0.3745219957817049 0 2.284322762755564 0.36353807248561 0 2.352966052839415 0.4924683909860154 0 2.145933354448283 0.3666955369995579 0 4.93195684765552 0.3715553723072032 0 5.070518535340559 0.3728396632270956 0 5.208812177394203 0.376288566273584 0 5.346919770203106 0.3760249936203713 0 5.139656628900304 0.501882576016963 0 7.147063893881027 0.3798492904399767 0 7.285813993013772 0.3812920486821649 0 7.011700084297692 0.3663102188005584 0 7.077566145647725 0.500676901012395 0 6.87377199258631 0.364016486720058 0 2.284315235624831 0.615437977488605 0 2.145968482088906 0.6181765596786697 0 2.077091623972009 0.4984183280101145 0 2.012439575678453 0.6349633758956327 0 1.874898154227056 0.6373233587527821 0 3.538047231835133 0.6227962274337375 0 3.677137587881663 0.621334748556986 0 3.467871181137905 0.5021738735507387 0 3.400255160744557 0.6334172279978689 0 3.262261777245885 0.6361161309762632 0 4.514199550673414 0.3799753227982507 0 4.375277328574865 0.3878416225508076 0 4.584914599486082 0.5055248361458309 0 4.654348387528081 0.3697412437794479 0 4.793807072402565 0.36998391438548 0 0.7650921375531303 0.3645713262569721 0 0.9068901127018738 0.3652232980983165 0 0.9746804358192825 0.48607442104468 0 1.044884817362136 0.3639503870992459 0 1.187467559933002 0.3700515971319289 0 6.319513045675139 0.3627900908988902 0 6.458401934564027 0.3627900908988905 0 6.180340607578882 0.3630433393065619 0 6.24985365325403 0.4852708180431086 0 6.040817430612224 0.3661063893721043 0 9.097234176664035 0.3651272677963146 0 9.236760940658316 0.3651467887336239 0 8.959424389316126 0.365763956284097 0 9.027476729554653 0.4895393833574524 0 8.819863092125962 0.367768539534046 0 7.985476618479638 0.6197975744986247 0 7.915768115683286 0.4885021491474606 0 7.846684005537792 0.6197200660595585 0 8.124367849079054 0.61662271960378 0 7.707691358362831 0.6148541186576904 0 0.3068029277529939 0.6834553519780495 0 0.3856262467601342 0.6238241015314513 0 0.2777735293270271 0.5593141616977082 0 9.6932731967416 0.6835161185415031 0 9.722346739399789 0.5593278490527603 0 9.614570146461276 0.6238985554499583 0 1.330206868552251 0.3828171504764257 0 8.680492312502066 0.3676762912735659 0 8.541606000146979 0.3670257537109476 0 8.47201608484043 0.4885236104444948 0 8.402603845674859 0.6141997703644746 0 8.263640878127443 0.615860713592874 0 1.465387580578615 0.3833703605110448 0 1.600514630696286 0.6372101038574829 0 1.534846372921291 0.5135866688169363 0 1.738886289508549 0.638141147088878 0 7.01261388831554 0.6188396150196331 0 6.597585112510707 0.3632326333719572 0 6.736367048175937 0.3633988993243549 0 6.876446966680259 0.6096339881647278 0 6.804797391654018 0.4865202419772735 0 4.027328606336571 0.5072921670282367 0 3.957788538769402 0.6305536449483562 0 3.818205611647937 0.6263932630932099 0 4.236323403715214 0.3864193809671997 0 4.097182323815775 0.3833782621005515 0 3.124999999999998 0.620281306081172 0 2.986084850765184 0.6077957162194738 0 2.847010194069767 0.3628412124751179 0 2.916507847689596 0.482577505926301 0 2.707491297940348 0.3648842544562224 0 2 6 0 606 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 0 0.2499999999999997 10 0 0.4999999999999987 10 0 0.7499999999999991 10 10 0.2499999999999997 10 10 0.4999999999999987 10 10 0.7499999999999991 10 0.2777777777777777 0 10 0.5555555555555556 0 10 0.8333333333333334 0 10 1.111111111111111 0 10 1.388888888888889 0 10 1.666666666666666 0 10 1.944444444444443 0 10 2.222222222222221 0 10 2.499999999999999 0 10 2.777777777777775 0 10 3.055555555555553 0 10 3.33333333333333 0 10 3.611111111111108 0 10 3.888888888888885 0 10 4.166666666666663 0 10 4.44444444444444 0 10 4.722222222222217 0 10 4.999999999999995 0 10 5.277777777777772 0 10 5.555555555555549 0 10 5.833333333333327 0 10 6.111111111111104 0 10 6.388888888888882 0 10 6.666666666666659 0 10 6.944444444444437 0 10 7.222222222222214 0 10 7.499999999999991 0 10 7.777777777777769 0 10 8.055555555555546 0 10 8.333333333333323 0 10 8.6111111111111 0 10 8.888888888888879 0 10 9.166666666666657 0 10 9.444444444444438 0 10 9.72222222222222 0 10 8.192013782680061 0.2434041748910533 10 2.638588883506802 0.7558082695681322 10 4.305922770962639 0.7592253759235239 10 5.416666666666661 0.2405626121623432 10 6.527777777777774 0.7594373878376568 10 7.356093183708816 0.7565402861011714 10 4.861439090582362 0.2439154882999098 10 3.193805934339827 0.2471027637222071 10 8.740725624368764 0.7462847840807201 10 1.808220139850526 0.2559736038727985 10 3.74969999461791 0.2440806601145161 10 1.250353790844795 0.754271029159155 10 5.972222222222217 0.7594373878376557 10 0.6970516325982433 0.7409029857707834 10 9.303233360695812 0.2589128594606885 10 9.593888130137003 0.747658587085392 10 0.4061189916609386 0.2522220868522 10 7.639188894270967 0.2441917304318683 10 5.141037258865599 0.747123597954781 10 2.358024995128665 0.2454446331780684 10 7.08299337423446 0.2441681050015693 10 2.08131643379535 0.7547216075641878 10 3.470431211441785 0.7540395818808677 10 0.9770944942447276 0.2430992641528823 10 6.249473497482836 0.2531918460524743 10 7.916666666666662 0.7594373878376564 10 9.80105809844439 0.381054413872688 10 0.1989502103198869 0.6189454121443064 10 4.305555555555554 0.2529671999709173 10 8.73941655906653 0.243338976157232 10 0.6934985439472406 0.2417953204701935 10 0.5710431639301781 0.4967594024306105 10 0.8366857311590201 0.4873473320437506 10 1.112675140479545 0.4848015100456094 10 9.308140321905004 0.758318083121564 10 9.429818219720119 0.5032312499427896 10 9.159079484071716 0.5093049755028812 10 9.018874678837037 0.2515959767876297 10 8.878029449634937 0.4949614293418292 10 8.593392882734214 0.4806435259755308 10 8.460155751375197 0.7423102364725152 10 0.9727378633573125 0.7377228211549155 10 1.398153757718042 0.5103326167346031 10 1.262259979386459 0.2553016842182484 10 1.529490273268032 0.7575794868156964 10 1.67153898812454 0.5168407208992695 10 9.023588405922659 0.7514782120078324 10 8.319140862199022 0.4965784394937556 10 7.639205068330985 0.7536647772702485 10 7.500152651936144 0.5143480077542154 10 7.220390181621354 0.5149402561931564 10 7.360906427494259 0.2601901537871349 10 6.935012327883285 0.4890173855954848 10 7.784692781832679 0.4871362140073496 10 7.070845868072022 0.7443878372214923 10 6.803291266752914 0.2418344108158 10 6.659628917641188 0.4793550484682567 10 7.915555277246942 0.2507123625190822 10 4.027838980345622 0.7594020525186351 10 4.166738069662485 0.5141827028149724 10 4.444976048195388 0.5128222753964835 10 3.88845871372651 0.5144252130154126 10 4.027699351879128 0.2604119839307772 10 3.605720548798217 0.4919126224764997 10 4.583500868438382 0.2604941515429199 10 4.723730073237034 0.506825541145886 10 5.001643722727104 0.4961147024176025 10 4.583919269330414 0.7557498694850071 10 3.470528865817673 0.2502204246526279 10 5.140012370936978 0.2436496895324669 10 5.694444444444439 0.7594373878376544 10 5.833142087087882 0.5129144319974119 10 5.555555555555556 0.518874775675304 10 6.110464983800179 0.5079278821063999 10 5.694330607393584 0.2651343523057245 10 5.971718453286639 0.2525343757061206 10 6.24955705584313 0.757806465874889 10 3.194444444444441 0.7594373878376564 10 5.417819593344483 0.7511235159637809 10 2.916560248315896 0.2416526374223215 10 3.055555555555555 0.4811252243246878 10 2.777460139823638 0.4840297875279142 10 2.916614145974812 0.7344662081142599 10 2.495311575296368 0.5033052701788792 10 2.3580099408672 0.7492444431840584 10 2.637522456057057 0.2457387213845306 10 2.210620530382462 0.4816315117931516 10 3.748741575718688 0.7532965783152359 10 4.862092091063727 0.7509689518338794 10 3.330086791489641 0.512780810366223 10 6.38708482834628 0.5124554685694369 10 1.806233590892557 0.7594415732784867 10 5.281568788675653 0.4860610301975904 10 6.52639294433874 0.2449158240534713 10 2.081246178514105 0.2517595622059642 10 8.187957548648342 0.7571672387574665 10 1.943562717561555 0.5152051442270775 10 9.585467266884745 0.2520148387722703 10 0.4146556451861011 0.7479652918117925 10 1.532621403439187 0.2564081042874865 10 6.795082845308512 0.7287436622079503 10 9.80779464995091 0.6174575463261195 10 0.1922162305737325 0.3825223630166411 10 8.048474443735886 0.5139964335734256 10 8.464734755187376 0.2439941860862619 10 0.1782767266567531 0.8233821407912196 10 9.821749517510273 0.1766138505289916 10 9.821769570725106 0.8229943318434503 10 0.1782330010352638 0.1769857514823137 10 0.3565968483341675 0.4996829112511101 10 9.643605273027433 0.5002833271998519 10 0.0891165005176319 0.08849287574115686 10 0.0891165005176319 0.2134928757411567 10 0 0.1249999999999998 10 0.2280053894065207 0.08849287574115686 10 0.1388888888888888 0 10 0.08913836332837655 0.7866910703956094 10 0.08913836332837655 0.9116910703956098 10 0 0.8749999999999996 10 0.2280272522172654 0.9116910703956098 10 9.910874758755137 0.2133069252644956 10 9.910874758755137 0.08830692526449579 10 10 0.1249999999999998 10 9.771985869866246 0.08830692526449579 10 9.861111111111111 0 10 9.910884785362553 0.9114971659217251 10 9.910884785362553 0.7864971659217247 10 10 0.8749999999999996 10 9.771995896473662 0.9114971659217251 10 0.09610811528686625 0.3162611815083204 10 0.09610811528686625 0.4412611815083199 10 0 0.3749999999999992 10 0.1852246158044981 0.2797540572494774 10 0.09947510515994346 0.5594727060721526 10 0.09947510515994346 0.6844727060721527 10 0 0.6249999999999989 10 0.1955832204468097 0.5007338875804738 10 0.18861346848832 0.721163776467763 10 9.900529049222195 0.4405272069363434 10 9.900529049222195 0.3155272069363438 10 10 0.3749999999999992 10 9.811403807977332 0.2788341322008398 10 9.903897324975455 0.6837287731630592 10 9.903897324975455 0.5587287731630591 10 10 0.6249999999999989 10 9.80442637419765 0.4992559800994038 10 9.814782110338008 0.7202259390847849 10 0.4808372736082471 0.1261110434261 10 0.3419483847193582 0.1261110434261 10 0.4166666666666666 0 10 0.2921759963481012 0.2146039191672569 10 0.763415938640287 0.1208976602350968 10 0.6245270497513982 0.1208976602350968 10 0.6944444444444444 0 10 0.5498087678040896 0.2470087036611968 10 1.044102802677919 0.1215496320764411 10 0.9052139137890305 0.1215496320764411 10 0.9722222222222221 0 10 0.8352965190959841 0.2424472923115379 10 1.325574434137674 0.1276508421091242 10 1.186685545248785 0.1276508421091242 10 1.25 0 10 1.119677236815593 0.2492004741855653 10 1.599644035052926 0.1282040521437433 10 1.460755146164038 0.1282040521437433 10 1.527777777777778 0 10 1.397440691412823 0.2558548942528674 10 1.876332292147485 0.1279868019363992 10 1.737443403258596 0.1279868019363992 10 1.805555555555554 0 10 1.670420771644856 0.2561908540801425 10 2.151734200368163 0.1258797811029821 10 2.012845311479274 0.1258797811029821 10 2.083333333333332 0 10 1.944733159182316 0.2538665830393814 10 2.429012497564332 0.1227223165890342 10 2.290123608675443 0.1227223165890342 10 2.36111111111111 0 10 2.219635586821385 0.2486020976920163 10 2.707650116917416 0.1228693606922653 10 2.568761228028528 0.1228693606922653 10 2.638888888888887 0 10 2.497773725592861 0.2455916772812995 10 2.986057901935725 0.1208263187111607 10 2.847169013046836 0.1208263187111607 10 2.916666666666664 0 10 2.777041352186477 0.243695679403426 10 3.263569633836578 0.1235513818611036 10 3.12468074494769 0.1235513818611036 10 3.194444444444442 0 10 3.055183091327861 0.2443777005722643 10 3.54081998846439 0.1251102123263139 10 3.401931099575501 0.1251102123263139 10 3.472222222222219 0 10 3.33216740007875 0.2486615941874175 10 3.819294441753398 0.122040330057258 10 3.680405552864509 0.122040330057258 10 3.749999999999996 0 10 3.610114430217791 0.247150542383572 10 4.097183009272896 0.1302059919653886 10 3.958294120384006 0.1302059919653886 10 4.027777777777774 0 10 3.888699673248519 0.2522463220226466 10 4.374999999999996 0.1264835999854587 10 4.236111111111109 0.1264835999854587 10 4.305555555555552 0 10 4.166627453717341 0.2566895919508473 10 4.6528615453303 0.1302470757714599 10 4.51397265644141 0.1302470757714599 10 4.583333333333329 0 10 4.444528211996968 0.2567306757569186 10 4.930719545291178 0.1219577441499549 10 4.79183065640229 0.1219577441499549 10 4.861111111111105 0 10 4.722469979510372 0.2522048199214149 10 5.208895074357375 0.1218248447662335 10 5.070006185468486 0.1218248447662335 10 5.138888888888884 0 10 5.00072573075967 0.2437825889161884 10 5.486111111111105 0.1202813060811716 10 5.347222222222216 0.1202813060811716 10 5.416666666666661 0 10 5.278339518801819 0.2421061508474051 10 5.763831970363455 0.1325671761528623 10 5.624943081474567 0.1325671761528623 10 5.694444444444438 0 10 5.555498637030123 0.2528484822340339 10 6.041414782198872 0.1262671878530603 10 5.902525893309983 0.1262671878530603 10 5.972222222222215 0 10 5.833024530340111 0.2588343640059225 10 6.319181193185859 0.1265959230262372 10 6.18029230429697 0.1265959230262372 10 6.249999999999993 0 10 6.110595975384738 0.2528631108792975 10 6.5965298055027 0.1224579120267356 10 6.457640916613811 0.1224579120267356 10 6.527777777777771 0 10 6.387933220910789 0.2490538350529728 10 6.873867855598675 0.1209172054079 10 6.734978966709786 0.1209172054079 10 6.805555555555548 0 10 6.664842105545826 0.2433751174346356 10 7.152607798228337 0.1220840525007846 10 7.013718909339449 0.1220840525007846 10 7.083333333333325 0 10 6.943142320493687 0.2430012579086847 10 7.430453213747125 0.1300950768935674 10 7.291564324858236 0.1300950768935674 10 7.361111111111103 0 10 7.22194990086436 0.2521791293943521 10 7.708483336024369 0.1220958652159341 10 7.569594447135479 0.1220958652159341 10 7.63888888888888 0 10 7.500047660882613 0.2521909421095016 10 7.985555416401244 0.1253561812595411 10 7.846666527512355 0.1253561812595411 10 7.916666666666657 0 10 7.777372085758955 0.2474520464754753 10 8.262673558006693 0.1217020874455266 10 8.123784669117804 0.1217020874455266 10 8.194444444444436 0 10 8.053784529963501 0.2470582687050678 10 8.537922933149238 0.1219970930431309 10 8.39903404426035 0.1219970930431309 10 8.472222222222211 0 10 8.328374268933718 0.2436991804886576 10 8.814152723977704 0.121669488078616 10 8.675263835088815 0.121669488078616 10 8.749999999999989 0 10 8.602075657126953 0.2436665811217469 10 9.092770672751847 0.1257979883938148 10 8.953881783862958 0.1257979883938148 10 9.027777777777768 0 10 8.879145618951783 0.2474674764724308 10 9.373838902570125 0.1294564297303442 10 9.234950013681235 0.1294564297303442 10 9.305555555555546 0 10 9.161054019766425 0.2552544181241591 10 9.653844744553481 0.1260074193861352 10 9.514955855664592 0.1260074193861352 10 9.583333333333329 0 10 9.444350313790277 0.2554638491164794 10 9.703608392197509 0.214314344650631 10 0.3462167114819394 0.8739826459058962 10 0.4851056003708283 0.8739826459058962 10 0.2964661859214271 0.7856737163015061 10 0.6263035940768995 0.8704514928853917 10 0.7651924829657883 0.8704514928853917 10 0.5558536388921722 0.7444341387912879 10 0.9030355983453229 0.8688614105774577 10 1.041924487234212 0.8688614105774577 10 0.834894747977778 0.7393129034628494 10 1.180732450977953 0.8771355145795775 10 1.319621339866842 0.8771355145795775 10 1.111545827101054 0.7459969251570353 10 1.459189581078461 0.8787897434078482 10 1.598078469967349 0.8787897434078482 10 1.389922032056413 0.7559252579874257 10 1.736450128779611 0.8797207866392434 10 1.8753390176685 0.8797207866392434 10 1.667861932080295 0.7585105300470916 10 2.012880439119896 0.8773608037820939 10 2.151769328008785 0.8773608037820939 10 1.943775012343953 0.7570815904213373 10 2.290116081544711 0.8746222215920292 10 2.4290049704336 0.8746222215920292 10 2.219663187331275 0.7519830253741231 10 2.5692944417534 0.8779041347840661 10 2.708183330642289 0.8779041347840661 10 2.498299412187001 0.7525263563760953 10 2.847195961876293 0.8672331040571299 10 2.986084850765183 0.8672331040571299 10 2.777601514740807 0.7451372388411961 10 3.124999999999997 0.8797186939188282 10 3.263888888888886 0.8797186939188282 10 3.055529295209626 0.7469517979759581 10 3.401882272387557 0.8770197909404338 10 3.540771161276447 0.8770197909404338 10 3.332437827943113 0.756738484859262 10 3.679926343414898 0.8766482891576179 10 3.818815232303787 0.8766482891576179 10 3.609586393580237 0.7536680800980518 10 3.958363934617253 0.8797010262593176 10 4.097252823506143 0.8797010262593176 10 3.888290278032155 0.7563493154169355 10 4.236294718814651 0.879612687961762 10 4.37518360770354 0.879612687961762 10 4.16688087565413 0.7593137142210795 10 4.514181856887427 0.8778749347425036 10 4.653070745776315 0.8778749347425036 10 4.444921020146527 0.7574876227042655 10 4.792157156642972 0.8754844759169397 10 4.931046045531861 0.8754844759169397 10 4.723005680197071 0.7533594106594432 10 5.070518629432797 0.8735617989773905 10 5.209407518321686 0.8735617989773905 10 5.001564674964663 0.7490462748943302 10 5.347798685561127 0.8755617579818904 10 5.486687574450016 0.8755617579818904 10 5.27942842610504 0.7491235569592809 10 5.624999999999995 0.8797186939188272 10 5.763888888888883 0.8797186939188272 10 5.556132018894461 0.7552804519007177 10 5.902777777777771 0.8797186939188278 10 6.041666666666661 0.8797186939188278 10 5.833333333333329 0.759437387837655 10 6.180334083477117 0.8789032329374444 10 6.319222972366006 0.8789032329374444 10 6.110889639032674 0.7586219268562724 10 6.458333333333329 0.8797186939188284 10 6.597222222222216 0.8797186939188284 10 6.388667416810453 0.7586219268562728 10 6.730874755987585 0.8643718311039752 10 6.869763644876475 0.8643718311039752 10 6.661430311543143 0.7440905250228036 10 7.00764515625823 0.8721939186107461 10 7.146534045147118 0.8721939186107461 10 6.932964356690267 0.7365657497147213 10 7.289157702965515 0.8782701430505857 10 7.428046591854404 0.8782701430505857 10 7.213469525890419 0.7504640616613318 10 7.569602534165488 0.8768323886351242 10 7.708491423054377 0.8768323886351242 10 7.4976491260199 0.75510253168571 10 7.847222222222215 0.8797186939188282 10 7.986111111111104 0.8797186939188282 10 7.777935867498823 0.7565510825539524 10 8.121756552101944 0.8785836193787333 10 8.260645440990832 0.8785836193787333 10 8.052312107657501 0.7583023132975615 10 8.396744542354259 0.8711551182362576 10 8.535633431243149 0.8711551182362576 10 8.324056650011769 0.7497387376149909 10 8.675918367739932 0.87314239204036 10 8.814807256628821 0.87314239204036 10 8.600440687871981 0.7442975102766176 10 8.956238647405769 0.8757391060039161 10 9.095127536294658 0.8757391060039161 10 8.882157015145712 0.7488814980442762 10 9.237403494285831 0.879159041560782 10 9.376292383174722 0.879159041560782 10 9.165864363913832 0.7548981475646982 10 9.519166287290719 0.873829293542696 10 9.658055176179612 0.873829293542696 10 9.451014226021003 0.7529883351034781 10 9.707828850431055 0.7853264594644211 10 8.183807652967454 0.5052874365335907 10 8.120244113207974 0.3787003042322394 10 8.255577322439542 0.3699913071924044 10 8.3919378086932 0.3702863127900087 10 7.982014860491415 0.3823543980462539 10 2.847037142899225 0.6092479978210871 10 2.70802451166522 0.6199190285480232 10 2.566950229401585 0.6295567698735056 10 2.636385857560003 0.4936675288533967 10 2.426660758081784 0.6262748566814688 10 4.097288525004053 0.6367923776668037 10 4.236330420312562 0.6367040393692481 10 4.305857058928936 0.5135024891057279 10 4.375449409579014 0.6360238256600037 10 4.514447658762901 0.6342860724407453 10 5.349117727671157 0.3633118211799668 10 5.210790579806315 0.3648553598650287 10 5.62494308147457 0.3920045639905143 10 5.486111111111109 0.3797186939188236 10 5.418562172115605 0.5024679029364472 10 6.457431303062027 0.6359464282035469 10 6.523356872993734 0.4959052585188468 10 6.59370334770948 0.6193962181529568 10 6.72735588147485 0.6040493553381034 10 6.318320942094705 0.635130967222163 10 7.428122917822479 0.6354441469276935 10 7.569678860133564 0.6340063925122319 10 7.288241682665085 0.6357402711471639 10 7.360271416778749 0.5146441319736859 10 7.145618024846687 0.6296640467073243 10 4.792584581909698 0.3753705147228979 10 4.653615470837708 0.3836598463444029 10 4.931541406654732 0.3700150953587562 10 4.862686897982069 0.5014701217817442 10 5.070828046832041 0.3698821959750347 10 3.400307828653657 0.3815006175094254 10 3.261946362914734 0.3799417870442151 10 3.124680744947691 0.3641139940234475 10 2.986057901935725 0.3613889308735047 10 3.192821173522598 0.4969530173454554 10 8.667059253551489 0.6134641550281255 10 8.735711166184576 0.48780247765868 10 8.809377537001851 0.6206231067112746 10 8.950808927778798 0.6232198206748307 10 8.526774317054706 0.611476881224023 10 1.875891428706041 0.385589374049938 10 1.807550852843048 0.5160229325631736 10 1.739879563987533 0.386407162386034 10 1.602080195781864 0.386624412593378 10 2.01240444803783 0.3834823532165209 10 3.958079032802819 0.3874185984730949 10 3.81907935417221 0.3792529365649643 10 3.747089631262363 0.5031689177459562 10 3.677710271708063 0.3679966412955079 10 3.538124707307945 0.3710665235645638 10 1.042706501918429 0.6112621656002625 10 1.18151446566217 0.6195362696023822 10 1.255414449098794 0.4975670633901063 10 1.324253774281419 0.6323018229468791 10 1.463822015493037 0.6339560517751497 10 5.763793265766161 0.6361759099175331 10 5.90268215465505 0.6361759099175338 10 5.971803535444031 0.5104211570519059 10 6.041343603011198 0.6336826349720278 10 6.180011019821655 0.6328671739906444 10 0.7038644475445991 0.4920533672371805 10 0.7668686818786317 0.6141251589072669 10 0.6340473982642107 0.618831194100697 10 0.4928494045581396 0.6223623471212015 10 0.9047117972581663 0.612535076599333 10 9.294448851895918 0.5062681127228355 10 9.231156422383764 0.3841089174817849 10 9.366525790207966 0.381072054701739 10 9.507642743302432 0.3776230443575299 10 9.088977081454377 0.3804504761452555 10 9.368979270812561 0.6307746665321767 10 9.511853174928561 0.6254449185140908 10 9.536711746373776 0.5017572885713207 10 9.618746701582218 0.623970957142622 10 9.700841390043957 0.6825580667057558 10 9.725699961489171 0.5588704367629858 10 0.6322708539387094 0.369277361450402 10 0.4885810777955584 0.3744907446414052 10 0.4638200061321728 0.4982211568408603 10 0.3813579199975531 0.3759524990516551 10 0.2991676111173356 0.3173722249344205 10 0.27440653945395 0.4411026371338756 10 7.430529539715201 0.3872690807706751 10 7.569670773103556 0.3792698690930418 10 7.711940838051824 0.3656639722196089 10 7.642422716884411 0.5007421108807825 10 7.850124029539811 0.3689242882632159 10 4.931867906895415 0.6235418271257409 10 5.071340490796351 0.6216191501861917 10 5.141606255701378 0.4910878663075965 10 5.211303023770625 0.6165923140761858 10 5.349694191010068 0.6185922730806857 10 2.566417015676713 0.3745219957817049 10 2.426668285212517 0.3743749516784738 10 2.352966052839415 0.4924683909860154 10 2.284322762755564 0.36353807248561 10 2.145933354448283 0.3666955369995579 10 7.290648304557806 0.3875652049901457 10 7.151691777927907 0.3795541805973628 10 7.07770125475232 0.5019788208943206 10 7.009002851058873 0.366592745298527 10 6.8691517973181 0.3654258982056424 10 2.145968482088906 0.6181765596786697 10 2.284315235624831 0.615437977488605 10 2.012439575678453 0.6349633758956327 10 2.077091623972009 0.4984183280101145 10 1.874898154227056 0.6373233587527821 10 3.677231062258453 0.6226046003958678 10 3.538075880120001 0.6229761021786837 10 3.400259001465713 0.6334101961235454 10 3.467903670143929 0.5023467164213613 10 3.262265617967041 0.6361090991019397 10 0.9068901127018738 0.3652232980983164 10 0.7650921375531303 0.364571326256972 10 1.044884817362136 0.3639503870992459 10 0.9746804358192825 0.48607442104468 10 1.187467559933002 0.3700515971319289 10 6.041091718543409 0.3802311289062603 10 6.179969240641508 0.3805598640794371 10 6.318279162914559 0.3828236573109556 10 6.24877490607323 0.5101916753379184 10 6.45673888634251 0.3786856463114541 10 7.711948925081832 0.6204004956387991 10 7.85067972424967 0.623286800922503 10 7.916583612784283 0.5005663237903876 10 7.982570555201274 0.636716910705541 10 8.118215996192113 0.6355818361654461 10 9.693262682664567 0.3165346263224792 10 9.722331685735911 0.44066887053627 10 9.614536269956089 0.3761490829860611 10 0.306802927752994 0.6834553519780495 10 0.2777735293270272 0.5593141616977082 10 0.3856262467601343 0.6238241015314513 10 4.375265801875471 0.3828947376837004 10 4.23614681260902 0.3835749513929448 10 4.097218710770806 0.3872973433728748 10 4.514238458316885 0.3866582134697017 10 8.948452064235987 0.3732787030647294 10 8.808723004350734 0.3691502027495306 10 8.666404720900372 0.3619912510663814 10 8.529063818960795 0.3623188560308963 10 1.330206868552251 0.3828171504764257 10 9.233609902988359 0.6338115293122226 10 9.091333944997189 0.6303915937553568 10 9.018554466853328 0.5021332024223553 10 8.389648306787109 0.6194443379831354 10 8.456266872466617 0.4886109827346432 10 8.253549205423681 0.6268728391256111 10 1.465387580578615 0.3833703605110448 10 1.534846372921291 0.5135866688169363 10 1.600514630696286 0.6372101038574829 10 1.738886289508549 0.638141147088878 10 7.002929097977654 0.6167026114084886 10 6.865047586595899 0.6088805239017175 10 6.797320622762236 0.4841862170318708 10 6.73146009219705 0.3605947296420284 10 6.593010930989964 0.362135436260864 10 3.958148847036066 0.6369136327670238 10 4.027598391694498 0.5143039579151925 10 3.818600144722599 0.6338608956653242 10 4.584353060716211 0.5098239082711847 10 4.653824671283724 0.6312877053154465 10 4.792911082150381 0.6288972464898827 10 5.624999999999998 0.6391560817564792 10 5.69434882132172 0.515894603836358 10 5.48668757445002 0.6349991458195425 10 5.763736347240734 0.3890243921515683 10 5.902430270187261 0.3827244038517663 10 2.986084850765184 0.6077957162194738 10 3.124999999999998 0.620281306081172 10 2.916507847689596 0.482577505926301 10 2.847010194069767 0.3628412124751179 10 2.707491297940348 0.3648842544562224 10 3 1 0 30697 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 8602 8603 8604 8605 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8840 8841 8842 8843 8844 8845 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8960 8961 8962 8963 8964 8965 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9080 9081 9082 9083 9084 9085 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9134 9135 9136 9137 9138 9139 9140 9141 9142 9143 9144 9145 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9224 9225 9226 9227 9228 9229 9230 9231 9232 9233 9234 9235 9236 9237 9238 9239 9240 9241 9242 9243 9244 9245 9246 9247 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9284 9285 9286 9287 9288 9289 9290 9291 9292 9293 9294 9295 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9356 9357 9358 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9392 9393 9394 9395 9396 9397 9398 9399 9400 9401 9402 9403 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9638 9639 9640 9641 9642 9643 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10478 10479 10480 10481 10482 10483 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10532 10533 10534 10535 10536 10537 10538 10539 10540 10541 10542 10543 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 10574 10575 10576 10577 10578 10579 10580 10581 10582 10583 10584 10585 10586 10587 10588 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10610 10611 10612 10613 10614 10615 10616 10617 10618 10619 10620 10621 10622 10623 10624 10625 10626 10627 10628 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10670 10671 10672 10673 10674 10675 10676 10677 10678 10679 10680 10681 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10742 10743 10744 10745 10746 10747 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10778 10779 10780 10781 10782 10783 10784 10785 10786 10787 10788 10789 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 11054 11055 11056 11057 11058 11059 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11294 11295 11296 11297 11298 11299 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11414 11415 11416 11417 11418 11419 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 11516 11517 11518 11519 11520 11521 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11534 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 11636 11637 11638 11639 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11654 11655 11656 11657 11658 11659 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11774 11775 11776 11777 11778 11779 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 11876 11877 11878 11879 11880 11881 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11894 11895 11896 11897 11898 11899 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 11999 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 12014 12015 12016 12017 12018 12019 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12134 12135 12136 12137 12138 12139 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 12224 12225 12226 12227 12228 12229 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 12278 12279 12280 12281 12282 12283 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 12320 12321 12322 12323 12324 12325 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 12362 12363 12364 12365 12366 12367 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 12404 12405 12406 12407 12408 12409 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 12446 12447 12448 12449 12450 12451 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 12674 12675 12676 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 12821 12822 12823 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 13538 13539 13540 13541 13542 13543 13544 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13556 13557 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13572 13573 13574 13575 13576 13577 13578 13579 13580 13581 13582 13583 13584 13585 13586 13587 13588 13589 13590 13591 13592 13593 13594 13595 13596 13597 13598 13599 13600 13601 13602 13603 13604 13605 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13651 13652 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 13664 13665 13666 13667 13668 13669 13670 13671 13672 13673 13674 13675 13676 13677 13678 13679 13680 13681 13682 13683 13684 13685 13686 13687 13688 13689 13690 13691 13692 13693 13694 13695 13696 13697 13698 13699 13700 13701 13702 13703 13704 13705 13706 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13718 13719 13720 13721 13722 13723 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 13826 13827 13828 13829 13830 13831 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 13881 13882 13883 13884 13885 13886 13887 13888 13889 13890 13891 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 13933 13934 13935 13936 13937 13938 13939 13940 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 13970 13971 13972 13973 13974 13975 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14131 14132 14133 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 14174 14175 14176 14177 14178 14179 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 14204 14205 14206 14207 14208 14209 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 14234 14235 14236 14237 14238 14239 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 14264 14265 14266 14267 14268 14269 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 14290 14291 14292 14293 14294 14295 14296 14297 14298 14299 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 14312 14313 14314 14315 14316 14317 14318 14319 14320 14321 14322 14323 14324 14325 14326 14327 14328 14329 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 14347 14348 14349 14350 14351 14352 14353 14354 14355 14356 14357 14358 14359 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 14372 14373 14374 14375 14376 14377 14378 14379 14380 14381 14382 14383 14384 14385 14386 14387 14388 14389 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14413 14414 14415 14416 14417 14418 14419 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 14439 14440 14441 14442 14443 14444 14445 14446 14447 14448 14449 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 14474 14475 14476 14477 14478 14479 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 14492 14493 14494 14495 14496 14497 14498 14499 14500 14501 14502 14503 14504 14505 14506 14507 14508 14509 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 14528 14529 14530 14531 14532 14533 14534 14535 14536 14537 14538 14539 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 14552 14553 14554 14555 14556 14557 14558 14559 14560 14561 14562 14563 14564 14565 14566 14567 14568 14569 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 14582 14583 14584 14585 14586 14587 14588 14589 14590 14591 14592 14593 14594 14595 14596 14597 14598 14599 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 14612 14613 14614 14615 14616 14617 14618 14619 14620 14621 14622 14623 14624 14625 14626 14627 14628 14629 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 14642 14643 14644 14645 14646 14647 14648 14649 14650 14651 14652 14653 14654 14655 14656 14657 14658 14659 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 14672 14673 14674 14675 14676 14677 14678 14679 14680 14681 14682 14683 14684 14685 14686 14687 14688 14689 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 14711 14712 14713 14714 14715 14716 14717 14718 14719 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 14742 14743 14744 14745 14746 14747 14748 14749 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 14762 14763 14764 14765 14766 14767 14768 14769 14770 14771 14772 14773 14774 14775 14776 14777 14778 14779 14780 14781 14782 14783 14784 14785 14786 14787 14788 14789 14790 14791 14792 14793 14794 14795 14796 14797 14798 14799 14800 14801 14802 14803 14804 14805 14806 14807 14808 14809 14810 14811 14812 14813 14814 14815 14816 14817 14818 14819 14820 14821 14822 14823 14824 14825 14826 14827 14828 14829 14830 14831 14832 14833 14834 14835 14836 14837 14838 14839 14840 14841 14842 14843 14844 14845 14846 14847 14848 14849 14850 14851 14852 14853 14854 14855 14856 14857 14858 14859 14860 14861 14862 14863 14864 14865 14866 14867 14868 14869 14870 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 14882 14883 14884 14885 14886 14887 14888 14889 14890 14891 14892 14893 14894 14895 14896 14897 14898 14899 14900 14901 14902 14903 14904 14905 14906 14907 14908 14909 14910 14911 14912 14913 14914 14915 14916 14917 14918 14919 14920 14921 14922 14923 14924 14925 14926 14927 14928 14929 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 14942 14943 14944 14945 14946 14947 14948 14949 14950 14951 14952 14953 14954 14955 14956 14957 14958 14959 14960 14961 14962 14963 14964 14965 14966 14967 14968 14969 14970 14971 14972 14973 14974 14975 14976 14977 14978 14979 14980 14981 14982 14983 14984 14985 14986 14987 14988 14989 14990 14991 14992 14993 14994 14995 14996 14997 14998 14999 15000 15001 15002 15003 15004 15005 15006 15007 15008 15009 15010 15011 15012 15013 15014 15015 15016 15017 15018 15019 15020 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 15032 15033 15034 15035 15036 15037 15038 15039 15040 15041 15042 15043 15044 15045 15046 15047 15048 15049 15050 15051 15052 15053 15054 15055 15056 15057 15058 15059 15060 15061 15062 15063 15064 15065 15066 15067 15068 15069 15070 15071 15072 15073 15074 15075 15076 15077 15078 15079 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 15092 15093 15094 15095 15096 15097 15098 15099 15100 15101 15102 15103 15104 15105 15106 15107 15108 15109 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 15128 15129 15130 15131 15132 15133 15134 15135 15136 15137 15138 15139 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 15152 15153 15154 15155 15156 15157 15158 15159 15160 15161 15162 15163 15164 15165 15166 15167 15168 15169 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 15182 15183 15184 15185 15186 15187 15188 15189 15190 15191 15192 15193 15194 15195 15196 15197 15198 15199 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 15212 15213 15214 15215 15216 15217 15218 15219 15220 15221 15222 15223 15224 15225 15226 15227 15228 15229 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 15242 15243 15244 15245 15246 15247 15248 15249 15250 15251 15252 15253 15254 15255 15256 15257 15258 15259 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 15272 15273 15274 15275 15276 15277 15278 15279 15280 15281 15282 15283 15284 15285 15286 15287 15288 15289 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 15302 15303 15304 15305 15306 15307 15308 15309 15310 15311 15312 15313 15314 15315 15316 15317 15318 15319 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 15332 15333 15334 15335 15336 15337 15338 15339 15340 15341 15342 15343 15344 15345 15346 15347 15348 15349 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371 15372 15373 15374 15375 15376 15377 15378 15379 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 15392 15393 15394 15395 15396 15397 15398 15399 15400 15401 15402 15403 15404 15405 15406 15407 15408 15409 15410 15411 15412 15413 15414 15415 15416 15417 15418 15419 15420 15421 15422 15423 15424 15425 15426 15427 15428 15429 15430 15431 15432 15433 15434 15435 15436 15437 15438 15439 15440 15441 15442 15443 15444 15445 15446 15447 15448 15449 15450 15451 15452 15453 15454 15455 15456 15457 15458 15459 15460 15461 15462 15463 15464 15465 15466 15467 15468 15469 15470 15471 15472 15473 15474 15475 15476 15477 15478 15479 15480 15481 15482 15483 15484 15485 15486 15487 15488 15489 15490 15491 15492 15493 15494 15495 15496 15497 15498 15499 15500 15501 15502 15503 15504 15505 15506 15507 15508 15509 15510 15511 15512 15513 15514 15515 15516 15517 15518 15519 15520 15521 15522 15523 15524 15525 15526 15527 15528 15529 15530 15531 15532 15533 15534 15535 15536 15537 15538 15539 15540 15541 15542 15543 15544 15545 15546 15547 15548 15549 15550 15551 15552 15553 15554 15555 15556 15557 15558 15559 15560 15561 15562 15563 15564 15565 15566 15567 15568 15569 15570 15571 15572 15573 15574 15575 15576 15577 15578 15579 15580 15581 15582 15583 15584 15585 15586 15587 15588 15589 15590 15591 15592 15593 15594 15595 15596 15597 15598 15599 15600 15601 15602 15603 15604 15605 15606 15607 15608 15609 15610 15611 15612 15613 15614 15615 15616 15617 15618 15619 15620 15621 15622 15623 15624 15625 15626 15627 15628 15629 15630 15631 15632 15633 15634 15635 15636 15637 15638 15639 15640 15641 15642 15643 15644 15645 15646 15647 15648 15649 15650 15651 15652 15653 15654 15655 15656 15657 15658 15659 15660 15661 15662 15663 15664 15665 15666 15667 15668 15669 15670 15671 15672 15673 15674 15675 15676 15677 15678 15679 15680 15681 15682 15683 15684 15685 15686 15687 15688 15689 15690 15691 15692 15693 15694 15695 15696 15697 15698 15699 15700 15701 15702 15703 15704 15705 15706 15707 15708 15709 15710 15711 15712 15713 15714 15715 15716 15717 15718 15719 15720 15721 15722 15723 15724 15725 15726 15727 15728 15729 15730 15731 15732 15733 15734 15735 15736 15737 15738 15739 15740 15741 15742 15743 15744 15745 15746 15747 15748 15749 15750 15751 15752 15753 15754 15755 15756 15757 15758 15759 15760 15761 15762 15763 15764 15765 15766 15767 15768 15769 15770 15771 15772 15773 15774 15775 15776 15777 15778 15779 15780 15781 15782 15783 15784 15785 15786 15787 15788 15789 15790 15791 15792 15793 15794 15795 15796 15797 15798 15799 15800 15801 15802 15803 15804 15805 15806 15807 15808 15809 15810 15811 15812 15813 15814 15815 15816 15817 15818 15819 15820 15821 15822 15823 15824 15825 15826 15827 15828 15829 15830 15831 15832 15833 15834 15835 15836 15837 15838 15839 15840 15841 15842 15843 15844 15845 15846 15847 15848 15849 15850 15851 15852 15853 15854 15855 15856 15857 15858 15859 15860 15861 15862 15863 15864 15865 15866 15867 15868 15869 15870 15871 15872 15873 15874 15875 15876 15877 15878 15879 15880 15881 15882 15883 15884 15885 15886 15887 15888 15889 15890 15891 15892 15893 15894 15895 15896 15897 15898 15899 15900 15901 15902 15903 15904 15905 15906 15907 15908 15909 15910 15911 15912 15913 15914 15915 15916 15917 15918 15919 15920 15921 15922 15923 15924 15925 15926 15927 15928 15929 15930 15931 15932 15933 15934 15935 15936 15937 15938 15939 15940 15941 15942 15943 15944 15945 15946 15947 15948 15949 15950 15951 15952 15953 15954 15955 15956 15957 15958 15959 15960 15961 15962 15963 15964 15965 15966 15967 15968 15969 15970 15971 15972 15973 15974 15975 15976 15977 15978 15979 15980 15981 15982 15983 15984 15985 15986 15987 15988 15989 15990 15991 15992 15993 15994 15995 15996 15997 15998 15999 16000 16001 16002 16003 16004 16005 16006 16007 16008 16009 16010 16011 16012 16013 16014 16015 16016 16017 16018 16019 16020 16021 16022 16023 16024 16025 16026 16027 16028 16029 16030 16031 16032 16033 16034 16035 16036 16037 16038 16039 16040 16041 16042 16043 16044 16045 16046 16047 16048 16049 16050 16051 16052 16053 16054 16055 16056 16057 16058 16059 16060 16061 16062 16063 16064 16065 16066 16067 16068 16069 16070 16071 16072 16073 16074 16075 16076 16077 16078 16079 16080 16081 16082 16083 16084 16085 16086 16087 16088 16089 16090 16091 16092 16093 16094 16095 16096 16097 16098 16099 16100 16101 16102 16103 16104 16105 16106 16107 16108 16109 16110 16111 16112 16113 16114 16115 16116 16117 16118 16119 16120 16121 16122 16123 16124 16125 16126 16127 16128 16129 16130 16131 16132 16133 16134 16135 16136 16137 16138 16139 16140 16141 16142 16143 16144 16145 16146 16147 16148 16149 16150 16151 16152 16153 16154 16155 16156 16157 16158 16159 16160 16161 16162 16163 16164 16165 16166 16167 16168 16169 16170 16171 16172 16173 16174 16175 16176 16177 16178 16179 16180 16181 16182 16183 16184 16185 16186 16187 16188 16189 16190 16191 16192 16193 16194 16195 16196 16197 16198 16199 16200 16201 16202 16203 16204 16205 16206 16207 16208 16209 16210 16211 16212 16213 16214 16215 16216 16217 16218 16219 16220 16221 16222 16223 16224 16225 16226 16227 16228 16229 16230 16231 16232 16233 16234 16235 16236 16237 16238 16239 16240 16241 16242 16243 16244 16245 16246 16247 16248 16249 16250 16251 16252 16253 16254 16255 16256 16257 16258 16259 16260 16261 16262 16263 16264 16265 16266 16267 16268 16269 16270 16271 16272 16273 16274 16275 16276 16277 16278 16279 16280 16281 16282 16283 16284 16285 16286 16287 16288 16289 16290 16291 16292 16293 16294 16295 16296 16297 16298 16299 16300 16301 16302 16303 16304 16305 16306 16307 16308 16309 16310 16311 16312 16313 16314 16315 16316 16317 16318 16319 16320 16321 16322 16323 16324 16325 16326 16327 16328 16329 16330 16331 16332 16333 16334 16335 16336 16337 16338 16339 16340 16341 16342 16343 16344 16345 16346 16347 16348 16349 16350 16351 16352 16353 16354 16355 16356 16357 16358 16359 16360 16361 16362 16363 16364 16365 16366 16367 16368 16369 16370 16371 16372 16373 16374 16375 16376 16377 16378 16379 16380 16381 16382 16383 16384 16385 16386 16387 16388 16389 16390 16391 16392 16393 16394 16395 16396 16397 16398 16399 16400 16401 16402 16403 16404 16405 16406 16407 16408 16409 16410 16411 16412 16413 16414 16415 16416 16417 16418 16419 16420 16421 16422 16423 16424 16425 16426 16427 16428 16429 16430 16431 16432 16433 16434 16435 16436 16437 16438 16439 16440 16441 16442 16443 16444 16445 16446 16447 16448 16449 16450 16451 16452 16453 16454 16455 16456 16457 16458 16459 16460 16461 16462 16463 16464 16465 16466 16467 16468 16469 16470 16471 16472 16473 16474 16475 16476 16477 16478 16479 16480 16481 16482 16483 16484 16485 16486 16487 16488 16489 16490 16491 16492 16493 16494 16495 16496 16497 16498 16499 16500 16501 16502 16503 16504 16505 16506 16507 16508 16509 16510 16511 16512 16513 16514 16515 16516 16517 16518 16519 16520 16521 16522 16523 16524 16525 16526 16527 16528 16529 16530 16531 16532 16533 16534 16535 16536 16537 16538 16539 16540 16541 16542 16543 16544 16545 16546 16547 16548 16549 16550 16551 16552 16553 16554 16555 16556 16557 16558 16559 16560 16561 16562 16563 16564 16565 16566 16567 16568 16569 16570 16571 16572 16573 16574 16575 16576 16577 16578 16579 16580 16581 16582 16583 16584 16585 16586 16587 16588 16589 16590 16591 16592 16593 16594 16595 16596 16597 16598 16599 16600 16601 16602 16603 16604 16605 16606 16607 16608 16609 16610 16611 16612 16613 16614 16615 16616 16617 16618 16619 16620 16621 16622 16623 16624 16625 16626 16627 16628 16629 16630 16631 16632 16633 16634 16635 16636 16637 16638 16639 16640 16641 16642 16643 16644 16645 16646 16647 16648 16649 16650 16651 16652 16653 16654 16655 16656 16657 16658 16659 16660 16661 16662 16663 16664 16665 16666 16667 16668 16669 16670 16671 16672 16673 16674 16675 16676 16677 16678 16679 16680 16681 16682 16683 16684 16685 16686 16687 16688 16689 16690 16691 16692 16693 16694 16695 16696 16697 16698 16699 16700 16701 16702 16703 16704 16705 16706 16707 16708 16709 16710 16711 16712 16713 16714 16715 16716 16717 16718 16719 16720 16721 16722 16723 16724 16725 16726 16727 16728 16729 16730 16731 16732 16733 16734 16735 16736 16737 16738 16739 16740 16741 16742 16743 16744 16745 16746 16747 16748 16749 16750 16751 16752 16753 16754 16755 16756 16757 16758 16759 16760 16761 16762 16763 16764 16765 16766 16767 16768 16769 16770 16771 16772 16773 16774 16775 16776 16777 16778 16779 16780 16781 16782 16783 16784 16785 16786 16787 16788 16789 16790 16791 16792 16793 16794 16795 16796 16797 16798 16799 16800 16801 16802 16803 16804 16805 16806 16807 16808 16809 16810 16811 16812 16813 16814 16815 16816 16817 16818 16819 16820 16821 16822 16823 16824 16825 16826 16827 16828 16829 16830 16831 16832 16833 16834 16835 16836 16837 16838 16839 16840 16841 16842 16843 16844 16845 16846 16847 16848 16849 16850 16851 16852 16853 16854 16855 16856 16857 16858 16859 16860 16861 16862 16863 16864 16865 16866 16867 16868 16869 16870 16871 16872 16873 16874 16875 16876 16877 16878 16879 16880 16881 16882 16883 16884 16885 16886 16887 16888 16889 16890 16891 16892 16893 16894 16895 16896 16897 16898 16899 16900 16901 16902 16903 16904 16905 16906 16907 16908 16909 16910 16911 16912 16913 16914 16915 16916 16917 16918 16919 16920 16921 16922 16923 16924 16925 16926 16927 16928 16929 16930 16931 16932 16933 16934 16935 16936 16937 16938 16939 16940 16941 16942 16943 16944 16945 16946 16947 16948 16949 16950 16951 16952 16953 16954 16955 16956 16957 16958 16959 16960 16961 16962 16963 16964 16965 16966 16967 16968 16969 16970 16971 16972 16973 16974 16975 16976 16977 16978 16979 16980 16981 16982 16983 16984 16985 16986 16987 16988 16989 16990 16991 16992 16993 16994 16995 16996 16997 16998 16999 17000 17001 17002 17003 17004 17005 17006 17007 17008 17009 17010 17011 17012 17013 17014 17015 17016 17017 17018 17019 17020 17021 17022 17023 17024 17025 17026 17027 17028 17029 17030 17031 17032 17033 17034 17035 17036 17037 17038 17039 17040 17041 17042 17043 17044 17045 17046 17047 17048 17049 17050 17051 17052 17053 17054 17055 17056 17057 17058 17059 17060 17061 17062 17063 17064 17065 17066 17067 17068 17069 17070 17071 17072 17073 17074 17075 17076 17077 17078 17079 17080 17081 17082 17083 17084 17085 17086 17087 17088 17089 17090 17091 17092 17093 17094 17095 17096 17097 17098 17099 17100 17101 17102 17103 17104 17105 17106 17107 17108 17109 17110 17111 17112 17113 17114 17115 17116 17117 17118 17119 17120 17121 17122 17123 17124 17125 17126 17127 17128 17129 17130 17131 17132 17133 17134 17135 17136 17137 17138 17139 17140 17141 17142 17143 17144 17145 17146 17147 17148 17149 17150 17151 17152 17153 17154 17155 17156 17157 17158 17159 17160 17161 17162 17163 17164 17165 17166 17167 17168 17169 17170 17171 17172 17173 17174 17175 17176 17177 17178 17179 17180 17181 17182 17183 17184 17185 17186 17187 17188 17189 17190 17191 17192 17193 17194 17195 17196 17197 17198 17199 17200 17201 17202 17203 17204 17205 17206 17207 17208 17209 17210 17211 17212 17213 17214 17215 17216 17217 17218 17219 17220 17221 17222 17223 17224 17225 17226 17227 17228 17229 17230 17231 17232 17233 17234 17235 17236 17237 17238 17239 17240 17241 17242 17243 17244 17245 17246 17247 17248 17249 17250 17251 17252 17253 17254 17255 17256 17257 17258 17259 17260 17261 17262 17263 17264 17265 17266 17267 17268 17269 17270 17271 17272 17273 17274 17275 17276 17277 17278 17279 17280 17281 17282 17283 17284 17285 17286 17287 17288 17289 17290 17291 17292 17293 17294 17295 17296 17297 17298 17299 17300 17301 17302 17303 17304 17305 17306 17307 17308 17309 17310 17311 17312 17313 17314 17315 17316 17317 17318 17319 17320 17321 17322 17323 17324 17325 17326 17327 17328 17329 17330 17331 17332 17333 17334 17335 17336 17337 17338 17339 17340 17341 17342 17343 17344 17345 17346 17347 17348 17349 17350 17351 17352 17353 17354 17355 17356 17357 17358 17359 17360 17361 17362 17363 17364 17365 17366 17367 17368 17369 17370 17371 17372 17373 17374 17375 17376 17377 17378 17379 17380 17381 17382 17383 17384 17385 17386 17387 17388 17389 17390 17391 17392 17393 17394 17395 17396 17397 17398 17399 17400 17401 17402 17403 17404 17405 17406 17407 17408 17409 17410 17411 17412 17413 17414 17415 17416 17417 17418 17419 17420 17421 17422 17423 17424 17425 17426 17427 17428 17429 17430 17431 17432 17433 17434 17435 17436 17437 17438 17439 17440 17441 17442 17443 17444 17445 17446 17447 17448 17449 17450 17451 17452 17453 17454 17455 17456 17457 17458 17459 17460 17461 17462 17463 17464 17465 17466 17467 17468 17469 17470 17471 17472 17473 17474 17475 17476 17477 17478 17479 17480 17481 17482 17483 17484 17485 17486 17487 17488 17489 17490 17491 17492 17493 17494 17495 17496 17497 17498 17499 17500 17501 17502 17503 17504 17505 17506 17507 17508 17509 17510 17511 17512 17513 17514 17515 17516 17517 17518 17519 17520 17521 17522 17523 17524 17525 17526 17527 17528 17529 17530 17531 17532 17533 17534 17535 17536 17537 17538 17539 17540 17541 17542 17543 17544 17545 17546 17547 17548 17549 17550 17551 17552 17553 17554 17555 17556 17557 17558 17559 17560 17561 17562 17563 17564 17565 17566 17567 17568 17569 17570 17571 17572 17573 17574 17575 17576 17577 17578 17579 17580 17581 17582 17583 17584 17585 17586 17587 17588 17589 17590 17591 17592 17593 17594 17595 17596 17597 17598 17599 17600 17601 17602 17603 17604 17605 17606 17607 17608 17609 17610 17611 17612 17613 17614 17615 17616 17617 17618 17619 17620 17621 17622 17623 17624 17625 17626 17627 17628 17629 17630 17631 17632 17633 17634 17635 17636 17637 17638 17639 17640 17641 17642 17643 17644 17645 17646 17647 17648 17649 17650 17651 17652 17653 17654 17655 17656 17657 17658 17659 17660 17661 17662 17663 17664 17665 17666 17667 17668 17669 17670 17671 17672 17673 17674 17675 17676 17677 17678 17679 17680 17681 17682 17683 17684 17685 17686 17687 17688 17689 17690 17691 17692 17693 17694 17695 17696 17697 17698 17699 17700 17701 17702 17703 17704 17705 17706 17707 17708 17709 17710 17711 17712 17713 17714 17715 17716 17717 17718 17719 17720 17721 17722 17723 17724 17725 17726 17727 17728 17729 17730 17731 17732 17733 17734 17735 17736 17737 17738 17739 17740 17741 17742 17743 17744 17745 17746 17747 17748 17749 17750 17751 17752 17753 17754 17755 17756 17757 17758 17759 17760 17761 17762 17763 17764 17765 17766 17767 17768 17769 17770 17771 17772 17773 17774 17775 17776 17777 17778 17779 17780 17781 17782 17783 17784 17785 17786 17787 17788 17789 17790 17791 17792 17793 17794 17795 17796 17797 17798 17799 17800 17801 17802 17803 17804 17805 17806 17807 17808 17809 17810 17811 17812 17813 17814 17815 17816 17817 17818 17819 17820 17821 17822 17823 17824 17825 17826 17827 17828 17829 17830 17831 17832 17833 17834 17835 17836 17837 17838 17839 17840 17841 17842 17843 17844 17845 17846 17847 17848 17849 17850 17851 17852 17853 17854 17855 17856 17857 17858 17859 17860 17861 17862 17863 17864 17865 17866 17867 17868 17869 17870 17871 17872 17873 17874 17875 17876 17877 17878 17879 17880 17881 17882 17883 17884 17885 17886 17887 17888 17889 17890 17891 17892 17893 17894 17895 17896 17897 17898 17899 17900 17901 17902 17903 17904 17905 17906 17907 17908 17909 17910 17911 17912 17913 17914 17915 17916 17917 17918 17919 17920 17921 17922 17923 17924 17925 17926 17927 17928 17929 17930 17931 17932 17933 17934 17935 17936 17937 17938 17939 17940 17941 17942 17943 17944 17945 17946 17947 17948 17949 17950 17951 17952 17953 17954 17955 17956 17957 17958 17959 17960 17961 17962 17963 17964 17965 17966 17967 17968 17969 17970 17971 17972 17973 17974 17975 17976 17977 17978 17979 17980 17981 17982 17983 17984 17985 17986 17987 17988 17989 17990 17991 17992 17993 17994 17995 17996 17997 17998 17999 18000 18001 18002 18003 18004 18005 18006 18007 18008 18009 18010 18011 18012 18013 18014 18015 18016 18017 18018 18019 18020 18021 18022 18023 18024 18025 18026 18027 18028 18029 18030 18031 18032 18033 18034 18035 18036 18037 18038 18039 18040 18041 18042 18043 18044 18045 18046 18047 18048 18049 18050 18051 18052 18053 18054 18055 18056 18057 18058 18059 18060 18061 18062 18063 18064 18065 18066 18067 18068 18069 18070 18071 18072 18073 18074 18075 18076 18077 18078 18079 18080 18081 18082 18083 18084 18085 18086 18087 18088 18089 18090 18091 18092 18093 18094 18095 18096 18097 18098 18099 18100 18101 18102 18103 18104 18105 18106 18107 18108 18109 18110 18111 18112 18113 18114 18115 18116 18117 18118 18119 18120 18121 18122 18123 18124 18125 18126 18127 18128 18129 18130 18131 18132 18133 18134 18135 18136 18137 18138 18139 18140 18141 18142 18143 18144 18145 18146 18147 18148 18149 18150 18151 18152 18153 18154 18155 18156 18157 18158 18159 18160 18161 18162 18163 18164 18165 18166 18167 18168 18169 18170 18171 18172 18173 18174 18175 18176 18177 18178 18179 18180 18181 18182 18183 18184 18185 18186 18187 18188 18189 18190 18191 18192 18193 18194 18195 18196 18197 18198 18199 18200 18201 18202 18203 18204 18205 18206 18207 18208 18209 18210 18211 18212 18213 18214 18215 18216 18217 18218 18219 18220 18221 18222 18223 18224 18225 18226 18227 18228 18229 18230 18231 18232 18233 18234 18235 18236 18237 18238 18239 18240 18241 18242 18243 18244 18245 18246 18247 18248 18249 18250 18251 18252 18253 18254 18255 18256 18257 18258 18259 18260 18261 18262 18263 18264 18265 18266 18267 18268 18269 18270 18271 18272 18273 18274 18275 18276 18277 18278 18279 18280 18281 18282 18283 18284 18285 18286 18287 18288 18289 18290 18291 18292 18293 18294 18295 18296 18297 18298 18299 18300 18301 18302 18303 18304 18305 18306 18307 18308 18309 18310 18311 18312 18313 18314 18315 18316 18317 18318 18319 18320 18321 18322 18323 18324 18325 18326 18327 18328 18329 18330 18331 18332 18333 18334 18335 18336 18337 18338 18339 18340 18341 18342 18343 18344 18345 18346 18347 18348 18349 18350 18351 18352 18353 18354 18355 18356 18357 18358 18359 18360 18361 18362 18363 18364 18365 18366 18367 18368 18369 18370 18371 18372 18373 18374 18375 18376 18377 18378 18379 18380 18381 18382 18383 18384 18385 18386 18387 18388 18389 18390 18391 18392 18393 18394 18395 18396 18397 18398 18399 18400 18401 18402 18403 18404 18405 18406 18407 18408 18409 18410 18411 18412 18413 18414 18415 18416 18417 18418 18419 18420 18421 18422 18423 18424 18425 18426 18427 18428 18429 18430 18431 18432 18433 18434 18435 18436 18437 18438 18439 18440 18441 18442 18443 18444 18445 18446 18447 18448 18449 18450 18451 18452 18453 18454 18455 18456 18457 18458 18459 18460 18461 18462 18463 18464 18465 18466 18467 18468 18469 18470 18471 18472 18473 18474 18475 18476 18477 18478 18479 18480 18481 18482 18483 18484 18485 18486 18487 18488 18489 18490 18491 18492 18493 18494 18495 18496 18497 18498 18499 18500 18501 18502 18503 18504 18505 18506 18507 18508 18509 18510 18511 18512 18513 18514 18515 18516 18517 18518 18519 18520 18521 18522 18523 18524 18525 18526 18527 18528 18529 18530 18531 18532 18533 18534 18535 18536 18537 18538 18539 18540 18541 18542 18543 18544 18545 18546 18547 18548 18549 18550 18551 18552 18553 18554 18555 18556 18557 18558 18559 18560 18561 18562 18563 18564 18565 18566 18567 18568 18569 18570 18571 18572 18573 18574 18575 18576 18577 18578 18579 18580 18581 18582 18583 18584 18585 18586 18587 18588 18589 18590 18591 18592 18593 18594 18595 18596 18597 18598 18599 18600 18601 18602 18603 18604 18605 18606 18607 18608 18609 18610 18611 18612 18613 18614 18615 18616 18617 18618 18619 18620 18621 18622 18623 18624 18625 18626 18627 18628 18629 18630 18631 18632 18633 18634 18635 18636 18637 18638 18639 18640 18641 18642 18643 18644 18645 18646 18647 18648 18649 18650 18651 18652 18653 18654 18655 18656 18657 18658 18659 18660 18661 18662 18663 18664 18665 18666 18667 18668 18669 18670 18671 18672 18673 18674 18675 18676 18677 18678 18679 18680 18681 18682 18683 18684 18685 18686 18687 18688 18689 18690 18691 18692 18693 18694 18695 18696 18697 18698 18699 18700 18701 18702 18703 18704 18705 18706 18707 18708 18709 18710 18711 18712 18713 18714 18715 18716 18717 18718 18719 18720 18721 18722 18723 18724 18725 18726 18727 18728 18729 18730 18731 18732 18733 18734 18735 18736 18737 18738 18739 18740 18741 18742 18743 18744 18745 18746 18747 18748 18749 18750 18751 18752 18753 18754 18755 18756 18757 18758 18759 18760 18761 18762 18763 18764 18765 18766 18767 18768 18769 18770 18771 18772 18773 18774 18775 18776 18777 18778 18779 18780 18781 18782 18783 18784 18785 18786 18787 18788 18789 18790 18791 18792 18793 18794 18795 18796 18797 18798 18799 18800 18801 18802 18803 18804 18805 18806 18807 18808 18809 18810 18811 18812 18813 18814 18815 18816 18817 18818 18819 18820 18821 18822 18823 18824 18825 18826 18827 18828 18829 18830 18831 18832 18833 18834 18835 18836 18837 18838 18839 18840 18841 18842 18843 18844 18845 18846 18847 18848 18849 18850 18851 18852 18853 18854 18855 18856 18857 18858 18859 18860 18861 18862 18863 18864 18865 18866 18867 18868 18869 18870 18871 18872 18873 18874 18875 18876 18877 18878 18879 18880 18881 18882 18883 18884 18885 18886 18887 18888 18889 18890 18891 18892 18893 18894 18895 18896 18897 18898 18899 18900 18901 18902 18903 18904 18905 18906 18907 18908 18909 18910 18911 18912 18913 18914 18915 18916 18917 18918 18919 18920 18921 18922 18923 18924 18925 18926 18927 18928 18929 18930 18931 18932 18933 18934 18935 18936 18937 18938 18939 18940 18941 18942 18943 18944 18945 18946 18947 18948 18949 18950 18951 18952 18953 18954 18955 18956 18957 18958 18959 18960 18961 18962 18963 18964 18965 18966 18967 18968 18969 18970 18971 18972 18973 18974 18975 18976 18977 18978 18979 18980 18981 18982 18983 18984 18985 18986 18987 18988 18989 18990 18991 18992 18993 18994 18995 18996 18997 18998 18999 19000 19001 19002 19003 19004 19005 19006 19007 19008 19009 19010 19011 19012 19013 19014 19015 19016 19017 19018 19019 19020 19021 19022 19023 19024 19025 19026 19027 19028 19029 19030 19031 19032 19033 19034 19035 19036 19037 19038 19039 19040 19041 19042 19043 19044 19045 19046 19047 19048 19049 19050 19051 19052 19053 19054 19055 19056 19057 19058 19059 19060 19061 19062 19063 19064 19065 19066 19067 19068 19069 19070 19071 19072 19073 19074 19075 19076 19077 19078 19079 19080 19081 19082 19083 19084 19085 19086 19087 19088 19089 19090 19091 19092 19093 19094 19095 19096 19097 19098 19099 19100 19101 19102 19103 19104 19105 19106 19107 19108 19109 19110 19111 19112 19113 19114 19115 19116 19117 19118 19119 19120 19121 19122 19123 19124 19125 19126 19127 19128 19129 19130 19131 19132 19133 19134 19135 19136 19137 19138 19139 19140 19141 19142 19143 19144 19145 19146 19147 19148 19149 19150 19151 19152 19153 19154 19155 19156 19157 19158 19159 19160 19161 19162 19163 19164 19165 19166 19167 19168 19169 19170 19171 19172 19173 19174 19175 19176 19177 19178 19179 19180 19181 19182 19183 19184 19185 19186 19187 19188 19189 19190 19191 19192 19193 19194 19195 19196 19197 19198 19199 19200 19201 19202 19203 19204 19205 19206 19207 19208 19209 19210 19211 19212 19213 19214 19215 19216 19217 19218 19219 19220 19221 19222 19223 19224 19225 19226 19227 19228 19229 19230 19231 19232 19233 19234 19235 19236 19237 19238 19239 19240 19241 19242 19243 19244 19245 19246 19247 19248 19249 19250 19251 19252 19253 19254 19255 19256 19257 19258 19259 19260 19261 19262 19263 19264 19265 19266 19267 19268 19269 19270 19271 19272 19273 19274 19275 19276 19277 19278 19279 19280 19281 19282 19283 19284 19285 19286 19287 19288 19289 19290 19291 19292 19293 19294 19295 19296 19297 19298 19299 19300 19301 19302 19303 19304 19305 19306 19307 19308 19309 19310 19311 19312 19313 19314 19315 19316 19317 19318 19319 19320 19321 19322 19323 19324 19325 19326 19327 19328 19329 19330 19331 19332 19333 19334 19335 19336 19337 19338 19339 19340 19341 19342 19343 19344 19345 19346 19347 19348 19349 19350 19351 19352 19353 19354 19355 19356 19357 19358 19359 19360 19361 19362 19363 19364 19365 19366 19367 19368 19369 19370 19371 19372 19373 19374 19375 19376 19377 19378 19379 19380 19381 19382 19383 19384 19385 19386 19387 19388 19389 19390 19391 19392 19393 19394 19395 19396 19397 19398 19399 19400 19401 19402 19403 19404 19405 19406 19407 19408 19409 19410 19411 19412 19413 19414 19415 19416 19417 19418 19419 19420 19421 19422 19423 19424 19425 19426 19427 19428 19429 19430 19431 19432 19433 19434 19435 19436 19437 19438 19439 19440 19441 19442 19443 19444 19445 19446 19447 19448 19449 19450 19451 19452 19453 19454 19455 19456 19457 19458 19459 19460 19461 19462 19463 19464 19465 19466 19467 19468 19469 19470 19471 19472 19473 19474 19475 19476 19477 19478 19479 19480 19481 19482 19483 19484 19485 19486 19487 19488 19489 19490 19491 19492 19493 19494 19495 19496 19497 19498 19499 19500 19501 19502 19503 19504 19505 19506 19507 19508 19509 19510 19511 19512 19513 19514 19515 19516 19517 19518 19519 19520 19521 19522 19523 19524 19525 19526 19527 19528 19529 19530 19531 19532 19533 19534 19535 19536 19537 19538 19539 19540 19541 19542 19543 19544 19545 19546 19547 19548 19549 19550 19551 19552 19553 19554 19555 19556 19557 19558 19559 19560 19561 19562 19563 19564 19565 19566 19567 19568 19569 19570 19571 19572 19573 19574 19575 19576 19577 19578 19579 19580 19581 19582 19583 19584 19585 19586 19587 19588 19589 19590 19591 19592 19593 19594 19595 19596 19597 19598 19599 19600 19601 19602 19603 19604 19605 19606 19607 19608 19609 19610 19611 19612 19613 19614 19615 19616 19617 19618 19619 19620 19621 19622 19623 19624 19625 19626 19627 19628 19629 19630 19631 19632 19633 19634 19635 19636 19637 19638 19639 19640 19641 19642 19643 19644 19645 19646 19647 19648 19649 19650 19651 19652 19653 19654 19655 19656 19657 19658 19659 19660 19661 19662 19663 19664 19665 19666 19667 19668 19669 19670 19671 19672 19673 19674 19675 19676 19677 19678 19679 19680 19681 19682 19683 19684 19685 19686 19687 19688 19689 19690 19691 19692 19693 19694 19695 19696 19697 19698 19699 19700 19701 19702 19703 19704 19705 19706 19707 19708 19709 19710 19711 19712 19713 19714 19715 19716 19717 19718 19719 19720 19721 19722 19723 19724 19725 19726 19727 19728 19729 19730 19731 19732 19733 19734 19735 19736 19737 19738 19739 19740 19741 19742 19743 19744 19745 19746 19747 19748 19749 19750 19751 19752 19753 19754 19755 19756 19757 19758 19759 19760 19761 19762 19763 19764 19765 19766 19767 19768 19769 19770 19771 19772 19773 19774 19775 19776 19777 19778 19779 19780 19781 19782 19783 19784 19785 19786 19787 19788 19789 19790 19791 19792 19793 19794 19795 19796 19797 19798 19799 19800 19801 19802 19803 19804 19805 19806 19807 19808 19809 19810 19811 19812 19813 19814 19815 19816 19817 19818 19819 19820 19821 19822 19823 19824 19825 19826 19827 19828 19829 19830 19831 19832 19833 19834 19835 19836 19837 19838 19839 19840 19841 19842 19843 19844 19845 19846 19847 19848 19849 19850 19851 19852 19853 19854 19855 19856 19857 19858 19859 19860 19861 19862 19863 19864 19865 19866 19867 19868 19869 19870 19871 19872 19873 19874 19875 19876 19877 19878 19879 19880 19881 19882 19883 19884 19885 19886 19887 19888 19889 19890 19891 19892 19893 19894 19895 19896 19897 19898 19899 19900 19901 19902 19903 19904 19905 19906 19907 19908 19909 19910 19911 19912 19913 19914 19915 19916 19917 19918 19919 19920 19921 19922 19923 19924 19925 19926 19927 19928 19929 19930 19931 19932 19933 19934 19935 19936 19937 19938 19939 19940 19941 19942 19943 19944 19945 19946 19947 19948 19949 19950 19951 19952 19953 19954 19955 19956 19957 19958 19959 19960 19961 19962 19963 19964 19965 19966 19967 19968 19969 19970 19971 19972 19973 19974 19975 19976 19977 19978 19979 19980 19981 19982 19983 19984 19985 19986 19987 19988 19989 19990 19991 19992 19993 19994 19995 19996 19997 19998 19999 20000 20001 20002 20003 20004 20005 20006 20007 20008 20009 20010 20011 20012 20013 20014 20015 20016 20017 20018 20019 20020 20021 20022 20023 20024 20025 20026 20027 20028 20029 20030 20031 20032 20033 20034 20035 20036 20037 20038 20039 20040 20041 20042 20043 20044 20045 20046 20047 20048 20049 20050 20051 20052 20053 20054 20055 20056 20057 20058 20059 20060 20061 20062 20063 20064 20065 20066 20067 20068 20069 20070 20071 20072 20073 20074 20075 20076 20077 20078 20079 20080 20081 20082 20083 20084 20085 20086 20087 20088 20089 20090 20091 20092 20093 20094 20095 20096 20097 20098 20099 20100 20101 20102 20103 20104 20105 20106 20107 20108 20109 20110 20111 20112 20113 20114 20115 20116 20117 20118 20119 20120 20121 20122 20123 20124 20125 20126 20127 20128 20129 20130 20131 20132 20133 20134 20135 20136 20137 20138 20139 20140 20141 20142 20143 20144 20145 20146 20147 20148 20149 20150 20151 20152 20153 20154 20155 20156 20157 20158 20159 20160 20161 20162 20163 20164 20165 20166 20167 20168 20169 20170 20171 20172 20173 20174 20175 20176 20177 20178 20179 20180 20181 20182 20183 20184 20185 20186 20187 20188 20189 20190 20191 20192 20193 20194 20195 20196 20197 20198 20199 20200 20201 20202 20203 20204 20205 20206 20207 20208 20209 20210 20211 20212 20213 20214 20215 20216 20217 20218 20219 20220 20221 20222 20223 20224 20225 20226 20227 20228 20229 20230 20231 20232 20233 20234 20235 20236 20237 20238 20239 20240 20241 20242 20243 20244 20245 20246 20247 20248 20249 20250 20251 20252 20253 20254 20255 20256 20257 20258 20259 20260 20261 20262 20263 20264 20265 20266 20267 20268 20269 20270 20271 20272 20273 20274 20275 20276 20277 20278 20279 20280 20281 20282 20283 20284 20285 20286 20287 20288 20289 20290 20291 20292 20293 20294 20295 20296 20297 20298 20299 20300 20301 20302 20303 20304 20305 20306 20307 20308 20309 20310 20311 20312 20313 20314 20315 20316 20317 20318 20319 20320 20321 20322 20323 20324 20325 20326 20327 20328 20329 20330 20331 20332 20333 20334 20335 20336 20337 20338 20339 20340 20341 20342 20343 20344 20345 20346 20347 20348 20349 20350 20351 20352 20353 20354 20355 20356 20357 20358 20359 20360 20361 20362 20363 20364 20365 20366 20367 20368 20369 20370 20371 20372 20373 20374 20375 20376 20377 20378 20379 20380 20381 20382 20383 20384 20385 20386 20387 20388 20389 20390 20391 20392 20393 20394 20395 20396 20397 20398 20399 20400 20401 20402 20403 20404 20405 20406 20407 20408 20409 20410 20411 20412 20413 20414 20415 20416 20417 20418 20419 20420 20421 20422 20423 20424 20425 20426 20427 20428 20429 20430 20431 20432 20433 20434 20435 20436 20437 20438 20439 20440 20441 20442 20443 20444 20445 20446 20447 20448 20449 20450 20451 20452 20453 20454 20455 20456 20457 20458 20459 20460 20461 20462 20463 20464 20465 20466 20467 20468 20469 20470 20471 20472 20473 20474 20475 20476 20477 20478 20479 20480 20481 20482 20483 20484 20485 20486 20487 20488 20489 20490 20491 20492 20493 20494 20495 20496 20497 20498 20499 20500 20501 20502 20503 20504 20505 20506 20507 20508 20509 20510 20511 20512 20513 20514 20515 20516 20517 20518 20519 20520 20521 20522 20523 20524 20525 20526 20527 20528 20529 20530 20531 20532 20533 20534 20535 20536 20537 20538 20539 20540 20541 20542 20543 20544 20545 20546 20547 20548 20549 20550 20551 20552 20553 20554 20555 20556 20557 20558 20559 20560 20561 20562 20563 20564 20565 20566 20567 20568 20569 20570 20571 20572 20573 20574 20575 20576 20577 20578 20579 20580 20581 20582 20583 20584 20585 20586 20587 20588 20589 20590 20591 20592 20593 20594 20595 20596 20597 20598 20599 20600 20601 20602 20603 20604 20605 20606 20607 20608 20609 20610 20611 20612 20613 20614 20615 20616 20617 20618 20619 20620 20621 20622 20623 20624 20625 20626 20627 20628 20629 20630 20631 20632 20633 20634 20635 20636 20637 20638 20639 20640 20641 20642 20643 20644 20645 20646 20647 20648 20649 20650 20651 20652 20653 20654 20655 20656 20657 20658 20659 20660 20661 20662 20663 20664 20665 20666 20667 20668 20669 20670 20671 20672 20673 20674 20675 20676 20677 20678 20679 20680 20681 20682 20683 20684 20685 20686 20687 20688 20689 20690 20691 20692 20693 20694 20695 20696 20697 20698 20699 20700 20701 20702 20703 20704 20705 20706 20707 20708 20709 20710 20711 20712 20713 20714 20715 20716 20717 20718 20719 20720 20721 20722 20723 20724 20725 20726 20727 20728 20729 20730 20731 20732 20733 20734 20735 20736 20737 20738 20739 20740 20741 20742 20743 20744 20745 20746 20747 20748 20749 20750 20751 20752 20753 20754 20755 20756 20757 20758 20759 20760 20761 20762 20763 20764 20765 20766 20767 20768 20769 20770 20771 20772 20773 20774 20775 20776 20777 20778 20779 20780 20781 20782 20783 20784 20785 20786 20787 20788 20789 20790 20791 20792 20793 20794 20795 20796 20797 20798 20799 20800 20801 20802 20803 20804 20805 20806 20807 20808 20809 20810 20811 20812 20813 20814 20815 20816 20817 20818 20819 20820 20821 20822 20823 20824 20825 20826 20827 20828 20829 20830 20831 20832 20833 20834 20835 20836 20837 20838 20839 20840 20841 20842 20843 20844 20845 20846 20847 20848 20849 20850 20851 20852 20853 20854 20855 20856 20857 20858 20859 20860 20861 20862 20863 20864 20865 20866 20867 20868 20869 20870 20871 20872 20873 20874 20875 20876 20877 20878 20879 20880 20881 20882 20883 20884 20885 20886 20887 20888 20889 20890 20891 20892 20893 20894 20895 20896 20897 20898 20899 20900 20901 20902 20903 20904 20905 20906 20907 20908 20909 20910 20911 20912 20913 20914 20915 20916 20917 20918 20919 20920 20921 20922 20923 20924 20925 20926 20927 20928 20929 20930 20931 20932 20933 20934 20935 20936 20937 20938 20939 20940 20941 20942 20943 20944 20945 20946 20947 20948 20949 20950 20951 20952 20953 20954 20955 20956 20957 20958 20959 20960 20961 20962 20963 20964 20965 20966 20967 20968 20969 20970 20971 20972 20973 20974 20975 20976 20977 20978 20979 20980 20981 20982 20983 20984 20985 20986 20987 20988 20989 20990 20991 20992 20993 20994 20995 20996 20997 20998 20999 21000 21001 21002 21003 21004 21005 21006 21007 21008 21009 21010 21011 21012 21013 21014 21015 21016 21017 21018 21019 21020 21021 21022 21023 21024 21025 21026 21027 21028 21029 21030 21031 21032 21033 21034 21035 21036 21037 21038 21039 21040 21041 21042 21043 21044 21045 21046 21047 21048 21049 21050 21051 21052 21053 21054 21055 21056 21057 21058 21059 21060 21061 21062 21063 21064 21065 21066 21067 21068 21069 21070 21071 21072 21073 21074 21075 21076 21077 21078 21079 21080 21081 21082 21083 21084 21085 21086 21087 21088 21089 21090 21091 21092 21093 21094 21095 21096 21097 21098 21099 21100 21101 21102 21103 21104 21105 21106 21107 21108 21109 21110 21111 21112 21113 21114 21115 21116 21117 21118 21119 21120 21121 21122 21123 21124 21125 21126 21127 21128 21129 21130 21131 21132 21133 21134 21135 21136 21137 21138 21139 21140 21141 21142 21143 21144 21145 21146 21147 21148 21149 21150 21151 21152 21153 21154 21155 21156 21157 21158 21159 21160 21161 21162 21163 21164 21165 21166 21167 21168 21169 21170 21171 21172 21173 21174 21175 21176 21177 21178 21179 21180 21181 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194 21195 21196 21197 21198 21199 21200 21201 21202 21203 21204 21205 21206 21207 21208 21209 21210 21211 21212 21213 21214 21215 21216 21217 21218 21219 21220 21221 21222 21223 21224 21225 21226 21227 21228 21229 21230 21231 21232 21233 21234 21235 21236 21237 21238 21239 21240 21241 21242 21243 21244 21245 21246 21247 21248 21249 21250 21251 21252 21253 21254 21255 21256 21257 21258 21259 21260 21261 21262 21263 21264 21265 21266 21267 21268 21269 21270 21271 21272 21273 21274 21275 21276 21277 21278 21279 21280 21281 21282 21283 21284 21285 21286 21287 21288 21289 21290 21291 21292 21293 21294 21295 21296 21297 21298 21299 21300 21301 21302 21303 21304 21305 21306 21307 21308 21309 21310 21311 21312 21313 21314 21315 21316 21317 21318 21319 21320 21321 21322 21323 21324 21325 21326 21327 21328 21329 21330 21331 21332 21333 21334 21335 21336 21337 21338 21339 21340 21341 21342 21343 21344 21345 21346 21347 21348 21349 21350 21351 21352 21353 21354 21355 21356 21357 21358 21359 21360 21361 21362 21363 21364 21365 21366 21367 21368 21369 21370 21371 21372 21373 21374 21375 21376 21377 21378 21379 21380 21381 21382 21383 21384 21385 21386 21387 21388 21389 21390 21391 21392 21393 21394 21395 21396 21397 21398 21399 21400 21401 21402 21403 21404 21405 21406 21407 21408 21409 21410 21411 21412 21413 21414 21415 21416 21417 21418 21419 21420 21421 21422 21423 21424 21425 21426 21427 21428 21429 21430 21431 21432 21433 21434 21435 21436 21437 21438 21439 21440 21441 21442 21443 21444 21445 21446 21447 21448 21449 21450 21451 21452 21453 21454 21455 21456 21457 21458 21459 21460 21461 21462 21463 21464 21465 21466 21467 21468 21469 21470 21471 21472 21473 21474 21475 21476 21477 21478 21479 21480 21481 21482 21483 21484 21485 21486 21487 21488 21489 21490 21491 21492 21493 21494 21495 21496 21497 21498 21499 21500 21501 21502 21503 21504 21505 21506 21507 21508 21509 21510 21511 21512 21513 21514 21515 21516 21517 21518 21519 21520 21521 21522 21523 21524 21525 21526 21527 21528 21529 21530 21531 21532 21533 21534 21535 21536 21537 21538 21539 21540 21541 21542 21543 21544 21545 21546 21547 21548 21549 21550 21551 21552 21553 21554 21555 21556 21557 21558 21559 21560 21561 21562 21563 21564 21565 21566 21567 21568 21569 21570 21571 21572 21573 21574 21575 21576 21577 21578 21579 21580 21581 21582 21583 21584 21585 21586 21587 21588 21589 21590 21591 21592 21593 21594 21595 21596 21597 21598 21599 21600 21601 21602 21603 21604 21605 21606 21607 21608 21609 21610 21611 21612 21613 21614 21615 21616 21617 21618 21619 21620 21621 21622 21623 21624 21625 21626 21627 21628 21629 21630 21631 21632 21633 21634 21635 21636 21637 21638 21639 21640 21641 21642 21643 21644 21645 21646 21647 21648 21649 21650 21651 21652 21653 21654 21655 21656 21657 21658 21659 21660 21661 21662 21663 21664 21665 21666 21667 21668 21669 21670 21671 21672 21673 21674 21675 21676 21677 21678 21679 21680 21681 21682 21683 21684 21685 21686 21687 21688 21689 21690 21691 21692 21693 21694 21695 21696 21697 21698 21699 21700 21701 21702 21703 21704 21705 21706 21707 21708 21709 21710 21711 21712 21713 21714 21715 21716 21717 21718 21719 21720 21721 21722 21723 21724 21725 21726 21727 21728 21729 21730 21731 21732 21733 21734 21735 21736 21737 21738 21739 21740 21741 21742 21743 21744 21745 21746 21747 21748 21749 21750 21751 21752 21753 21754 21755 21756 21757 21758 21759 21760 21761 21762 21763 21764 21765 21766 21767 21768 21769 21770 21771 21772 21773 21774 21775 21776 21777 21778 21779 21780 21781 21782 21783 21784 21785 21786 21787 21788 21789 21790 21791 21792 21793 21794 21795 21796 21797 21798 21799 21800 21801 21802 21803 21804 21805 21806 21807 21808 21809 21810 21811 21812 21813 21814 21815 21816 21817 21818 21819 21820 21821 21822 21823 21824 21825 21826 21827 21828 21829 21830 21831 21832 21833 21834 21835 21836 21837 21838 21839 21840 21841 21842 21843 21844 21845 21846 21847 21848 21849 21850 21851 21852 21853 21854 21855 21856 21857 21858 21859 21860 21861 21862 21863 21864 21865 21866 21867 21868 21869 21870 21871 21872 21873 21874 21875 21876 21877 21878 21879 21880 21881 21882 21883 21884 21885 21886 21887 21888 21889 21890 21891 21892 21893 21894 21895 21896 21897 21898 21899 21900 21901 21902 21903 21904 21905 21906 21907 21908 21909 21910 21911 21912 21913 21914 21915 21916 21917 21918 21919 21920 21921 21922 21923 21924 21925 21926 21927 21928 21929 21930 21931 21932 21933 21934 21935 21936 21937 21938 21939 21940 21941 21942 21943 21944 21945 21946 21947 21948 21949 21950 21951 21952 21953 21954 21955 21956 21957 21958 21959 21960 21961 21962 21963 21964 21965 21966 21967 21968 21969 21970 21971 21972 21973 21974 21975 21976 21977 21978 21979 21980 21981 21982 21983 21984 21985 21986 21987 21988 21989 21990 21991 21992 21993 21994 21995 21996 21997 21998 21999 22000 22001 22002 22003 22004 22005 22006 22007 22008 22009 22010 22011 22012 22013 22014 22015 22016 22017 22018 22019 22020 22021 22022 22023 22024 22025 22026 22027 22028 22029 22030 22031 22032 22033 22034 22035 22036 22037 22038 22039 22040 22041 22042 22043 22044 22045 22046 22047 22048 22049 22050 22051 22052 22053 22054 22055 22056 22057 22058 22059 22060 22061 22062 22063 22064 22065 22066 22067 22068 22069 22070 22071 22072 22073 22074 22075 22076 22077 22078 22079 22080 22081 22082 22083 22084 22085 22086 22087 22088 22089 22090 22091 22092 22093 22094 22095 22096 22097 22098 22099 22100 22101 22102 22103 22104 22105 22106 22107 22108 22109 22110 22111 22112 22113 22114 22115 22116 22117 22118 22119 22120 22121 22122 22123 22124 22125 22126 22127 22128 22129 22130 22131 22132 22133 22134 22135 22136 22137 22138 22139 22140 22141 22142 22143 22144 22145 22146 22147 22148 22149 22150 22151 22152 22153 22154 22155 22156 22157 22158 22159 22160 22161 22162 22163 22164 22165 22166 22167 22168 22169 22170 22171 22172 22173 22174 22175 22176 22177 22178 22179 22180 22181 22182 22183 22184 22185 22186 22187 22188 22189 22190 22191 22192 22193 22194 22195 22196 22197 22198 22199 22200 22201 22202 22203 22204 22205 22206 22207 22208 22209 22210 22211 22212 22213 22214 22215 22216 22217 22218 22219 22220 22221 22222 22223 22224 22225 22226 22227 22228 22229 22230 22231 22232 22233 22234 22235 22236 22237 22238 22239 22240 22241 22242 22243 22244 22245 22246 22247 22248 22249 22250 22251 22252 22253 22254 22255 22256 22257 22258 22259 22260 22261 22262 22263 22264 22265 22266 22267 22268 22269 22270 22271 22272 22273 22274 22275 22276 22277 22278 22279 22280 22281 22282 22283 22284 22285 22286 22287 22288 22289 22290 22291 22292 22293 22294 22295 22296 22297 22298 22299 22300 22301 22302 22303 22304 22305 22306 22307 22308 22309 22310 22311 22312 22313 22314 22315 22316 22317 22318 22319 22320 22321 22322 22323 22324 22325 22326 22327 22328 22329 22330 22331 22332 22333 22334 22335 22336 22337 22338 22339 22340 22341 22342 22343 22344 22345 22346 22347 22348 22349 22350 22351 22352 22353 22354 22355 22356 22357 22358 22359 22360 22361 22362 22363 22364 22365 22366 22367 22368 22369 22370 22371 22372 22373 22374 22375 22376 22377 22378 22379 22380 22381 22382 22383 22384 22385 22386 22387 22388 22389 22390 22391 22392 22393 22394 22395 22396 22397 22398 22399 22400 22401 22402 22403 22404 22405 22406 22407 22408 22409 22410 22411 22412 22413 22414 22415 22416 22417 22418 22419 22420 22421 22422 22423 22424 22425 22426 22427 22428 22429 22430 22431 22432 22433 22434 22435 22436 22437 22438 22439 22440 22441 22442 22443 22444 22445 22446 22447 22448 22449 22450 22451 22452 22453 22454 22455 22456 22457 22458 22459 22460 22461 22462 22463 22464 22465 22466 22467 22468 22469 22470 22471 22472 22473 22474 22475 22476 22477 22478 22479 22480 22481 22482 22483 22484 22485 22486 22487 22488 22489 22490 22491 22492 22493 22494 22495 22496 22497 22498 22499 22500 22501 22502 22503 22504 22505 22506 22507 22508 22509 22510 22511 22512 22513 22514 22515 22516 22517 22518 22519 22520 22521 22522 22523 22524 22525 22526 22527 22528 22529 22530 22531 22532 22533 22534 22535 22536 22537 22538 22539 22540 22541 22542 22543 22544 22545 22546 22547 22548 22549 22550 22551 22552 22553 22554 22555 22556 22557 22558 22559 22560 22561 22562 22563 22564 22565 22566 22567 22568 22569 22570 22571 22572 22573 22574 22575 22576 22577 22578 22579 22580 22581 22582 22583 22584 22585 22586 22587 22588 22589 22590 22591 22592 22593 22594 22595 22596 22597 22598 22599 22600 22601 22602 22603 22604 22605 22606 22607 22608 22609 22610 22611 22612 22613 22614 22615 22616 22617 22618 22619 22620 22621 22622 22623 22624 22625 22626 22627 22628 22629 22630 22631 22632 22633 22634 22635 22636 22637 22638 22639 22640 22641 22642 22643 22644 22645 22646 22647 22648 22649 22650 22651 22652 22653 22654 22655 22656 22657 22658 22659 22660 22661 22662 22663 22664 22665 22666 22667 22668 22669 22670 22671 22672 22673 22674 22675 22676 22677 22678 22679 22680 22681 22682 22683 22684 22685 22686 22687 22688 22689 22690 22691 22692 22693 22694 22695 22696 22697 22698 22699 22700 22701 22702 22703 22704 22705 22706 22707 22708 22709 22710 22711 22712 22713 22714 22715 22716 22717 22718 22719 22720 22721 22722 22723 22724 22725 22726 22727 22728 22729 22730 22731 22732 22733 22734 22735 22736 22737 22738 22739 22740 22741 22742 22743 22744 22745 22746 22747 22748 22749 22750 22751 22752 22753 22754 22755 22756 22757 22758 22759 22760 22761 22762 22763 22764 22765 22766 22767 22768 22769 22770 22771 22772 22773 22774 22775 22776 22777 22778 22779 22780 22781 22782 22783 22784 22785 22786 22787 22788 22789 22790 22791 22792 22793 22794 22795 22796 22797 22798 22799 22800 22801 22802 22803 22804 22805 22806 22807 22808 22809 22810 22811 22812 22813 22814 22815 22816 22817 22818 22819 22820 22821 22822 22823 22824 22825 22826 22827 22828 22829 22830 22831 22832 22833 22834 22835 22836 22837 22838 22839 22840 22841 22842 22843 22844 22845 22846 22847 22848 22849 22850 22851 22852 22853 22854 22855 22856 22857 22858 22859 22860 22861 22862 22863 22864 22865 22866 22867 22868 22869 22870 22871 22872 22873 22874 22875 22876 22877 22878 22879 22880 22881 22882 22883 22884 22885 22886 22887 22888 22889 22890 22891 22892 22893 22894 22895 22896 22897 22898 22899 22900 22901 22902 22903 22904 22905 22906 22907 22908 22909 22910 22911 22912 22913 22914 22915 22916 22917 22918 22919 22920 22921 22922 22923 22924 22925 22926 22927 22928 22929 22930 22931 22932 22933 22934 22935 22936 22937 22938 22939 22940 22941 22942 22943 22944 22945 22946 22947 22948 22949 22950 22951 22952 22953 22954 22955 22956 22957 22958 22959 22960 22961 22962 22963 22964 22965 22966 22967 22968 22969 22970 22971 22972 22973 22974 22975 22976 22977 22978 22979 22980 22981 22982 22983 22984 22985 22986 22987 22988 22989 22990 22991 22992 22993 22994 22995 22996 22997 22998 22999 23000 23001 23002 23003 23004 23005 23006 23007 23008 23009 23010 23011 23012 23013 23014 23015 23016 23017 23018 23019 23020 23021 23022 23023 23024 23025 23026 23027 23028 23029 23030 23031 23032 23033 23034 23035 23036 23037 23038 23039 23040 23041 23042 23043 23044 23045 23046 23047 23048 23049 23050 23051 23052 23053 23054 23055 23056 23057 23058 23059 23060 23061 23062 23063 23064 23065 23066 23067 23068 23069 23070 23071 23072 23073 23074 23075 23076 23077 23078 23079 23080 23081 23082 23083 23084 23085 23086 23087 23088 23089 23090 23091 23092 23093 23094 23095 23096 23097 23098 23099 23100 23101 23102 23103 23104 23105 23106 23107 23108 23109 23110 23111 23112 23113 23114 23115 23116 23117 23118 23119 23120 23121 23122 23123 23124 23125 23126 23127 23128 23129 23130 23131 23132 23133 23134 23135 23136 23137 23138 23139 23140 23141 23142 23143 23144 23145 23146 23147 23148 23149 23150 23151 23152 23153 23154 23155 23156 23157 23158 23159 23160 23161 23162 23163 23164 23165 23166 23167 23168 23169 23170 23171 23172 23173 23174 23175 23176 23177 23178 23179 23180 23181 23182 23183 23184 23185 23186 23187 23188 23189 23190 23191 23192 23193 23194 23195 23196 23197 23198 23199 23200 23201 23202 23203 23204 23205 23206 23207 23208 23209 23210 23211 23212 23213 23214 23215 23216 23217 23218 23219 23220 23221 23222 23223 23224 23225 23226 23227 23228 23229 23230 23231 23232 23233 23234 23235 23236 23237 23238 23239 23240 23241 23242 23243 23244 23245 23246 23247 23248 23249 23250 23251 23252 23253 23254 23255 23256 23257 23258 23259 23260 23261 23262 23263 23264 23265 23266 23267 23268 23269 23270 23271 23272 23273 23274 23275 23276 23277 23278 23279 23280 23281 23282 23283 23284 23285 23286 23287 23288 23289 23290 23291 23292 23293 23294 23295 23296 23297 23298 23299 23300 23301 23302 23303 23304 23305 23306 23307 23308 23309 23310 23311 23312 23313 23314 23315 23316 23317 23318 23319 23320 23321 23322 23323 23324 23325 23326 23327 23328 23329 23330 23331 23332 23333 23334 23335 23336 23337 23338 23339 23340 23341 23342 23343 23344 23345 23346 23347 23348 23349 23350 23351 23352 23353 23354 23355 23356 23357 23358 23359 23360 23361 23362 23363 23364 23365 23366 23367 23368 23369 23370 23371 23372 23373 23374 23375 23376 23377 23378 23379 23380 23381 23382 23383 23384 23385 23386 23387 23388 23389 23390 23391 23392 23393 23394 23395 23396 23397 23398 23399 23400 23401 23402 23403 23404 23405 23406 23407 23408 23409 23410 23411 23412 23413 23414 23415 23416 23417 23418 23419 23420 23421 23422 23423 23424 23425 23426 23427 23428 23429 23430 23431 23432 23433 23434 23435 23436 23437 23438 23439 23440 23441 23442 23443 23444 23445 23446 23447 23448 23449 23450 23451 23452 23453 23454 23455 23456 23457 23458 23459 23460 23461 23462 23463 23464 23465 23466 23467 23468 23469 23470 23471 23472 23473 23474 23475 23476 23477 23478 23479 23480 23481 23482 23483 23484 23485 23486 23487 23488 23489 23490 23491 23492 23493 23494 23495 23496 23497 23498 23499 23500 23501 23502 23503 23504 23505 23506 23507 23508 23509 23510 23511 23512 23513 23514 23515 23516 23517 23518 23519 23520 23521 23522 23523 23524 23525 23526 23527 23528 23529 23530 23531 23532 23533 23534 23535 23536 23537 23538 23539 23540 23541 23542 23543 23544 23545 23546 23547 23548 23549 23550 23551 23552 23553 23554 23555 23556 23557 23558 23559 23560 23561 23562 23563 23564 23565 23566 23567 23568 23569 23570 23571 23572 23573 23574 23575 23576 23577 23578 23579 23580 23581 23582 23583 23584 23585 23586 23587 23588 23589 23590 23591 23592 23593 23594 23595 23596 23597 23598 23599 23600 23601 23602 23603 23604 23605 23606 23607 23608 23609 23610 23611 23612 23613 23614 23615 23616 23617 23618 23619 23620 23621 23622 23623 23624 23625 23626 23627 23628 23629 23630 23631 23632 23633 23634 23635 23636 23637 23638 23639 23640 23641 23642 23643 23644 23645 23646 23647 23648 23649 23650 23651 23652 23653 23654 23655 23656 23657 23658 23659 23660 23661 23662 23663 23664 23665 23666 23667 23668 23669 23670 23671 23672 23673 23674 23675 23676 23677 23678 23679 23680 23681 23682 23683 23684 23685 23686 23687 23688 23689 23690 23691 23692 23693 23694 23695 23696 23697 23698 23699 23700 23701 23702 23703 23704 23705 23706 23707 23708 23709 23710 23711 23712 23713 23714 23715 23716 23717 23718 23719 23720 23721 23722 23723 23724 23725 23726 23727 23728 23729 23730 23731 23732 23733 23734 23735 23736 23737 23738 23739 23740 23741 23742 23743 23744 23745 23746 23747 23748 23749 23750 23751 23752 23753 23754 23755 23756 23757 23758 23759 23760 23761 23762 23763 23764 23765 23766 23767 23768 23769 23770 23771 23772 23773 23774 23775 23776 23777 23778 23779 23780 23781 23782 23783 23784 23785 23786 23787 23788 23789 23790 23791 23792 23793 23794 23795 23796 23797 23798 23799 23800 23801 23802 23803 23804 23805 23806 23807 23808 23809 23810 23811 23812 23813 23814 23815 23816 23817 23818 23819 23820 23821 23822 23823 23824 23825 23826 23827 23828 23829 23830 23831 23832 23833 23834 23835 23836 23837 23838 23839 23840 23841 23842 23843 23844 23845 23846 23847 23848 23849 23850 23851 23852 23853 23854 23855 23856 23857 23858 23859 23860 23861 23862 23863 23864 23865 23866 23867 23868 23869 23870 23871 23872 23873 23874 23875 23876 23877 23878 23879 23880 23881 23882 23883 23884 23885 23886 23887 23888 23889 23890 23891 23892 23893 23894 23895 23896 23897 23898 23899 23900 23901 23902 23903 23904 23905 23906 23907 23908 23909 23910 23911 23912 23913 23914 23915 23916 23917 23918 23919 23920 23921 23922 23923 23924 23925 23926 23927 23928 23929 23930 23931 23932 23933 23934 23935 23936 23937 23938 23939 23940 23941 23942 23943 23944 23945 23946 23947 23948 23949 23950 23951 23952 23953 23954 23955 23956 23957 23958 23959 23960 23961 23962 23963 23964 23965 23966 23967 23968 23969 23970 23971 23972 23973 23974 23975 23976 23977 23978 23979 23980 23981 23982 23983 23984 23985 23986 23987 23988 23989 23990 23991 23992 23993 23994 23995 23996 23997 23998 23999 24000 24001 24002 24003 24004 24005 24006 24007 24008 24009 24010 24011 24012 24013 24014 24015 24016 24017 24018 24019 24020 24021 24022 24023 24024 24025 24026 24027 24028 24029 24030 24031 24032 24033 24034 24035 24036 24037 24038 24039 24040 24041 24042 24043 24044 24045 24046 24047 24048 24049 24050 24051 24052 24053 24054 24055 24056 24057 24058 24059 24060 24061 24062 24063 24064 24065 24066 24067 24068 24069 24070 24071 24072 24073 24074 24075 24076 24077 24078 24079 24080 24081 24082 24083 24084 24085 24086 24087 24088 24089 24090 24091 24092 24093 24094 24095 24096 24097 24098 24099 24100 24101 24102 24103 24104 24105 24106 24107 24108 24109 24110 24111 24112 24113 24114 24115 24116 24117 24118 24119 24120 24121 24122 24123 24124 24125 24126 24127 24128 24129 24130 24131 24132 24133 24134 24135 24136 24137 24138 24139 24140 24141 24142 24143 24144 24145 24146 24147 24148 24149 24150 24151 24152 24153 24154 24155 24156 24157 24158 24159 24160 24161 24162 24163 24164 24165 24166 24167 24168 24169 24170 24171 24172 24173 24174 24175 24176 24177 24178 24179 24180 24181 24182 24183 24184 24185 24186 24187 24188 24189 24190 24191 24192 24193 24194 24195 24196 24197 24198 24199 24200 24201 24202 24203 24204 24205 24206 24207 24208 24209 24210 24211 24212 24213 24214 24215 24216 24217 24218 24219 24220 24221 24222 24223 24224 24225 24226 24227 24228 24229 24230 24231 24232 24233 24234 24235 24236 24237 24238 24239 24240 24241 24242 24243 24244 24245 24246 24247 24248 24249 24250 24251 24252 24253 24254 24255 24256 24257 24258 24259 24260 24261 24262 24263 24264 24265 24266 24267 24268 24269 24270 24271 24272 24273 24274 24275 24276 24277 24278 24279 24280 24281 24282 24283 24284 24285 24286 24287 24288 24289 24290 24291 24292 24293 24294 24295 24296 24297 24298 24299 24300 24301 24302 24303 24304 24305 24306 24307 24308 24309 24310 24311 24312 24313 24314 24315 24316 24317 24318 24319 24320 24321 24322 24323 24324 24325 24326 24327 24328 24329 24330 24331 24332 24333 24334 24335 24336 24337 24338 24339 24340 24341 24342 24343 24344 24345 24346 24347 24348 24349 24350 24351 24352 24353 24354 24355 24356 24357 24358 24359 24360 24361 24362 24363 24364 24365 24366 24367 24368 24369 24370 24371 24372 24373 24374 24375 24376 24377 24378 24379 24380 24381 24382 24383 24384 24385 24386 24387 24388 24389 24390 24391 24392 24393 24394 24395 24396 24397 24398 24399 24400 24401 24402 24403 24404 24405 24406 24407 24408 24409 24410 24411 24412 24413 24414 24415 24416 24417 24418 24419 24420 24421 24422 24423 24424 24425 24426 24427 24428 24429 24430 24431 24432 24433 24434 24435 24436 24437 24438 24439 24440 24441 24442 24443 24444 24445 24446 24447 24448 24449 24450 24451 24452 24453 24454 24455 24456 24457 24458 24459 24460 24461 24462 24463 24464 24465 24466 24467 24468 24469 24470 24471 24472 24473 24474 24475 24476 24477 24478 24479 24480 24481 24482 24483 24484 24485 24486 24487 24488 24489 24490 24491 24492 24493 24494 24495 24496 24497 24498 24499 24500 24501 24502 24503 24504 24505 24506 24507 24508 24509 24510 24511 24512 24513 24514 24515 24516 24517 24518 24519 24520 24521 24522 24523 24524 24525 24526 24527 24528 24529 24530 24531 24532 24533 24534 24535 24536 24537 24538 24539 24540 24541 24542 24543 24544 24545 24546 24547 24548 24549 24550 24551 24552 24553 24554 24555 24556 24557 24558 24559 24560 24561 24562 24563 24564 24565 24566 24567 24568 24569 24570 24571 24572 24573 24574 24575 24576 24577 24578 24579 24580 24581 24582 24583 24584 24585 24586 24587 24588 24589 24590 24591 24592 24593 24594 24595 24596 24597 24598 24599 24600 24601 24602 24603 24604 24605 24606 24607 24608 24609 24610 24611 24612 24613 24614 24615 24616 24617 24618 24619 24620 24621 24622 24623 24624 24625 24626 24627 24628 24629 24630 24631 24632 24633 24634 24635 24636 24637 24638 24639 24640 24641 24642 24643 24644 24645 24646 24647 24648 24649 24650 24651 24652 24653 24654 24655 24656 24657 24658 24659 24660 24661 24662 24663 24664 24665 24666 24667 24668 24669 24670 24671 24672 24673 24674 24675 24676 24677 24678 24679 24680 24681 24682 24683 24684 24685 24686 24687 24688 24689 24690 24691 24692 24693 24694 24695 24696 24697 24698 24699 24700 24701 24702 24703 24704 24705 24706 24707 24708 24709 24710 24711 24712 24713 24714 24715 24716 24717 24718 24719 24720 24721 24722 24723 24724 24725 24726 24727 24728 24729 24730 24731 24732 24733 24734 24735 24736 24737 24738 24739 24740 24741 24742 24743 24744 24745 24746 24747 24748 24749 24750 24751 24752 24753 24754 24755 24756 24757 24758 24759 24760 24761 24762 24763 24764 24765 24766 24767 24768 24769 24770 24771 24772 24773 24774 24775 24776 24777 24778 24779 24780 24781 24782 24783 24784 24785 24786 24787 24788 24789 24790 24791 24792 24793 24794 24795 24796 24797 24798 24799 24800 24801 24802 24803 24804 24805 24806 24807 24808 24809 24810 24811 24812 24813 24814 24815 24816 24817 24818 24819 24820 24821 24822 24823 24824 24825 24826 24827 24828 24829 24830 24831 24832 24833 24834 24835 24836 24837 24838 24839 24840 24841 24842 24843 24844 24845 24846 24847 24848 24849 24850 24851 24852 24853 24854 24855 24856 24857 24858 24859 24860 24861 24862 24863 24864 24865 24866 24867 24868 24869 24870 24871 24872 24873 24874 24875 24876 24877 24878 24879 24880 24881 24882 24883 24884 24885 24886 24887 24888 24889 24890 24891 24892 24893 24894 24895 24896 24897 24898 24899 24900 24901 24902 24903 24904 24905 24906 24907 24908 24909 24910 24911 24912 24913 24914 24915 24916 24917 24918 24919 24920 24921 24922 24923 24924 24925 24926 24927 24928 24929 24930 24931 24932 24933 24934 24935 24936 24937 24938 24939 24940 24941 24942 24943 24944 24945 24946 24947 24948 24949 24950 24951 24952 24953 24954 24955 24956 24957 24958 24959 24960 24961 24962 24963 24964 24965 24966 24967 24968 24969 24970 24971 24972 24973 24974 24975 24976 24977 24978 24979 24980 24981 24982 24983 24984 24985 24986 24987 24988 24989 24990 24991 24992 24993 24994 24995 24996 24997 24998 24999 25000 25001 25002 25003 25004 25005 25006 25007 25008 25009 25010 25011 25012 25013 25014 25015 25016 25017 25018 25019 25020 25021 25022 25023 25024 25025 25026 25027 25028 25029 25030 25031 25032 25033 25034 25035 25036 25037 25038 25039 25040 25041 25042 25043 25044 25045 25046 25047 25048 25049 25050 25051 25052 25053 25054 25055 25056 25057 25058 25059 25060 25061 25062 25063 25064 25065 25066 25067 25068 25069 25070 25071 25072 25073 25074 25075 25076 25077 25078 25079 25080 25081 25082 25083 25084 25085 25086 25087 25088 25089 25090 25091 25092 25093 25094 25095 25096 25097 25098 25099 25100 25101 25102 25103 25104 25105 25106 25107 25108 25109 25110 25111 25112 25113 25114 25115 25116 25117 25118 25119 25120 25121 25122 25123 25124 25125 25126 25127 25128 25129 25130 25131 25132 25133 25134 25135 25136 25137 25138 25139 25140 25141 25142 25143 25144 25145 25146 25147 25148 25149 25150 25151 25152 25153 25154 25155 25156 25157 25158 25159 25160 25161 25162 25163 25164 25165 25166 25167 25168 25169 25170 25171 25172 25173 25174 25175 25176 25177 25178 25179 25180 25181 25182 25183 25184 25185 25186 25187 25188 25189 25190 25191 25192 25193 25194 25195 25196 25197 25198 25199 25200 25201 25202 25203 25204 25205 25206 25207 25208 25209 25210 25211 25212 25213 25214 25215 25216 25217 25218 25219 25220 25221 25222 25223 25224 25225 25226 25227 25228 25229 25230 25231 25232 25233 25234 25235 25236 25237 25238 25239 25240 25241 25242 25243 25244 25245 25246 25247 25248 25249 25250 25251 25252 25253 25254 25255 25256 25257 25258 25259 25260 25261 25262 25263 25264 25265 25266 25267 25268 25269 25270 25271 25272 25273 25274 25275 25276 25277 25278 25279 25280 25281 25282 25283 25284 25285 25286 25287 25288 25289 25290 25291 25292 25293 25294 25295 25296 25297 25298 25299 25300 25301 25302 25303 25304 25305 25306 25307 25308 25309 25310 25311 25312 25313 25314 25315 25316 25317 25318 25319 25320 25321 25322 25323 25324 25325 25326 25327 25328 25329 25330 25331 25332 25333 25334 25335 25336 25337 25338 25339 25340 25341 25342 25343 25344 25345 25346 25347 25348 25349 25350 25351 25352 25353 25354 25355 25356 25357 25358 25359 25360 25361 25362 25363 25364 25365 25366 25367 25368 25369 25370 25371 25372 25373 25374 25375 25376 25377 25378 25379 25380 25381 25382 25383 25384 25385 25386 25387 25388 25389 25390 25391 25392 25393 25394 25395 25396 25397 25398 25399 25400 25401 25402 25403 25404 25405 25406 25407 25408 25409 25410 25411 25412 25413 25414 25415 25416 25417 25418 25419 25420 25421 25422 25423 25424 25425 25426 25427 25428 25429 25430 25431 25432 25433 25434 25435 25436 25437 25438 25439 25440 25441 25442 25443 25444 25445 25446 25447 25448 25449 25450 25451 25452 25453 25454 25455 25456 25457 25458 25459 25460 25461 25462 25463 25464 25465 25466 25467 25468 25469 25470 25471 25472 25473 25474 25475 25476 25477 25478 25479 25480 25481 25482 25483 25484 25485 25486 25487 25488 25489 25490 25491 25492 25493 25494 25495 25496 25497 25498 25499 25500 25501 25502 25503 25504 25505 25506 25507 25508 25509 25510 25511 25512 25513 25514 25515 25516 25517 25518 25519 25520 25521 25522 25523 25524 25525 25526 25527 25528 25529 25530 25531 25532 25533 25534 25535 25536 25537 25538 25539 25540 25541 25542 25543 25544 25545 25546 25547 25548 25549 25550 25551 25552 25553 25554 25555 25556 25557 25558 25559 25560 25561 25562 25563 25564 25565 25566 25567 25568 25569 25570 25571 25572 25573 25574 25575 25576 25577 25578 25579 25580 25581 25582 25583 25584 25585 25586 25587 25588 25589 25590 25591 25592 25593 25594 25595 25596 25597 25598 25599 25600 25601 25602 25603 25604 25605 25606 25607 25608 25609 25610 25611 25612 25613 25614 25615 25616 25617 25618 25619 25620 25621 25622 25623 25624 25625 25626 25627 25628 25629 25630 25631 25632 25633 25634 25635 25636 25637 25638 25639 25640 25641 25642 25643 25644 25645 25646 25647 25648 25649 25650 25651 25652 25653 25654 25655 25656 25657 25658 25659 25660 25661 25662 25663 25664 25665 25666 25667 25668 25669 25670 25671 25672 25673 25674 25675 25676 25677 25678 25679 25680 25681 25682 25683 25684 25685 25686 25687 25688 25689 25690 25691 25692 25693 25694 25695 25696 25697 25698 25699 25700 25701 25702 25703 25704 25705 25706 25707 25708 25709 25710 25711 25712 25713 25714 25715 25716 25717 25718 25719 25720 25721 25722 25723 25724 25725 25726 25727 25728 25729 25730 25731 25732 25733 25734 25735 25736 25737 25738 25739 25740 25741 25742 25743 25744 25745 25746 25747 25748 25749 25750 25751 25752 25753 25754 25755 25756 25757 25758 25759 25760 25761 25762 25763 25764 25765 25766 25767 25768 25769 25770 25771 25772 25773 25774 25775 25776 25777 25778 25779 25780 25781 25782 25783 25784 25785 25786 25787 25788 25789 25790 25791 25792 25793 25794 25795 25796 25797 25798 25799 25800 25801 25802 25803 25804 25805 25806 25807 25808 25809 25810 25811 25812 25813 25814 25815 25816 25817 25818 25819 25820 25821 25822 25823 25824 25825 25826 25827 25828 25829 25830 25831 25832 25833 25834 25835 25836 25837 25838 25839 25840 25841 25842 25843 25844 25845 25846 25847 25848 25849 25850 25851 25852 25853 25854 25855 25856 25857 25858 25859 25860 25861 25862 25863 25864 25865 25866 25867 25868 25869 25870 25871 25872 25873 25874 25875 25876 25877 25878 25879 25880 25881 25882 25883 25884 25885 25886 25887 25888 25889 25890 25891 25892 25893 25894 25895 25896 25897 25898 25899 25900 25901 25902 25903 25904 25905 25906 25907 25908 25909 25910 25911 25912 25913 25914 25915 25916 25917 25918 25919 25920 25921 25922 25923 25924 25925 25926 25927 25928 25929 25930 25931 25932 25933 25934 25935 25936 25937 25938 25939 25940 25941 25942 25943 25944 25945 25946 25947 25948 25949 25950 25951 25952 25953 25954 25955 25956 25957 25958 25959 25960 25961 25962 25963 25964 25965 25966 25967 25968 25969 25970 25971 25972 25973 25974 25975 25976 25977 25978 25979 25980 25981 25982 25983 25984 25985 25986 25987 25988 25989 25990 25991 25992 25993 25994 25995 25996 25997 25998 25999 26000 26001 26002 26003 26004 26005 26006 26007 26008 26009 26010 26011 26012 26013 26014 26015 26016 26017 26018 26019 26020 26021 26022 26023 26024 26025 26026 26027 26028 26029 26030 26031 26032 26033 26034 26035 26036 26037 26038 26039 26040 26041 26042 26043 26044 26045 26046 26047 26048 26049 26050 26051 26052 26053 26054 26055 26056 26057 26058 26059 26060 26061 26062 26063 26064 26065 26066 26067 26068 26069 26070 26071 26072 26073 26074 26075 26076 26077 26078 26079 26080 26081 26082 26083 26084 26085 26086 26087 26088 26089 26090 26091 26092 26093 26094 26095 26096 26097 26098 26099 26100 26101 26102 26103 26104 26105 26106 26107 26108 26109 26110 26111 26112 26113 26114 26115 26116 26117 26118 26119 26120 26121 26122 26123 26124 26125 26126 26127 26128 26129 26130 26131 26132 26133 26134 26135 26136 26137 26138 26139 26140 26141 26142 26143 26144 26145 26146 26147 26148 26149 26150 26151 26152 26153 26154 26155 26156 26157 26158 26159 26160 26161 26162 26163 26164 26165 26166 26167 26168 26169 26170 26171 26172 26173 26174 26175 26176 26177 26178 26179 26180 26181 26182 26183 26184 26185 26186 26187 26188 26189 26190 26191 26192 26193 26194 26195 26196 26197 26198 26199 26200 26201 26202 26203 26204 26205 26206 26207 26208 26209 26210 26211 26212 26213 26214 26215 26216 26217 26218 26219 26220 26221 26222 26223 26224 26225 26226 26227 26228 26229 26230 26231 26232 26233 26234 26235 26236 26237 26238 26239 26240 26241 26242 26243 26244 26245 26246 26247 26248 26249 26250 26251 26252 26253 26254 26255 26256 26257 26258 26259 26260 26261 26262 26263 26264 26265 26266 26267 26268 26269 26270 26271 26272 26273 26274 26275 26276 26277 26278 26279 26280 26281 26282 26283 26284 26285 26286 26287 26288 26289 26290 26291 26292 26293 26294 26295 26296 26297 26298 26299 26300 26301 26302 26303 26304 26305 26306 26307 26308 26309 26310 26311 26312 26313 26314 26315 26316 26317 26318 26319 26320 26321 26322 26323 26324 26325 26326 26327 26328 26329 26330 26331 26332 26333 26334 26335 26336 26337 26338 26339 26340 26341 26342 26343 26344 26345 26346 26347 26348 26349 26350 26351 26352 26353 26354 26355 26356 26357 26358 26359 26360 26361 26362 26363 26364 26365 26366 26367 26368 26369 26370 26371 26372 26373 26374 26375 26376 26377 26378 26379 26380 26381 26382 26383 26384 26385 26386 26387 26388 26389 26390 26391 26392 26393 26394 26395 26396 26397 26398 26399 26400 26401 26402 26403 26404 26405 26406 26407 26408 26409 26410 26411 26412 26413 26414 26415 26416 26417 26418 26419 26420 26421 26422 26423 26424 26425 26426 26427 26428 26429 26430 26431 26432 26433 26434 26435 26436 26437 26438 26439 26440 26441 26442 26443 26444 26445 26446 26447 26448 26449 26450 26451 26452 26453 26454 26455 26456 26457 26458 26459 26460 26461 26462 26463 26464 26465 26466 26467 26468 26469 26470 26471 26472 26473 26474 26475 26476 26477 26478 26479 26480 26481 26482 26483 26484 26485 26486 26487 26488 26489 26490 26491 26492 26493 26494 26495 26496 26497 26498 26499 26500 26501 26502 26503 26504 26505 26506 26507 26508 26509 26510 26511 26512 26513 26514 26515 26516 26517 26518 26519 26520 26521 26522 26523 26524 26525 26526 26527 26528 26529 26530 26531 26532 26533 26534 26535 26536 26537 26538 26539 26540 26541 26542 26543 26544 26545 26546 26547 26548 26549 26550 26551 26552 26553 26554 26555 26556 26557 26558 26559 26560 26561 26562 26563 26564 26565 26566 26567 26568 26569 26570 26571 26572 26573 26574 26575 26576 26577 26578 26579 26580 26581 26582 26583 26584 26585 26586 26587 26588 26589 26590 26591 26592 26593 26594 26595 26596 26597 26598 26599 26600 26601 26602 26603 26604 26605 26606 26607 26608 26609 26610 26611 26612 26613 26614 26615 26616 26617 26618 26619 26620 26621 26622 26623 26624 26625 26626 26627 26628 26629 26630 26631 26632 26633 26634 26635 26636 26637 26638 26639 26640 26641 26642 26643 26644 26645 26646 26647 26648 26649 26650 26651 26652 26653 26654 26655 26656 26657 26658 26659 26660 26661 26662 26663 26664 26665 26666 26667 26668 26669 26670 26671 26672 26673 26674 26675 26676 26677 26678 26679 26680 26681 26682 26683 26684 26685 26686 26687 26688 26689 26690 26691 26692 26693 26694 26695 26696 26697 26698 26699 26700 26701 26702 26703 26704 26705 26706 26707 26708 26709 26710 26711 26712 26713 26714 26715 26716 26717 26718 26719 26720 26721 26722 26723 26724 26725 26726 26727 26728 26729 26730 26731 26732 26733 26734 26735 26736 26737 26738 26739 26740 26741 26742 26743 26744 26745 26746 26747 26748 26749 26750 26751 26752 26753 26754 26755 26756 26757 26758 26759 26760 26761 26762 26763 26764 26765 26766 26767 26768 26769 26770 26771 26772 26773 26774 26775 26776 26777 26778 26779 26780 26781 26782 26783 26784 26785 26786 26787 26788 26789 26790 26791 26792 26793 26794 26795 26796 26797 26798 26799 26800 26801 26802 26803 26804 26805 26806 26807 26808 26809 26810 26811 26812 26813 26814 26815 26816 26817 26818 26819 26820 26821 26822 26823 26824 26825 26826 26827 26828 26829 26830 26831 26832 26833 26834 26835 26836 26837 26838 26839 26840 26841 26842 26843 26844 26845 26846 26847 26848 26849 26850 26851 26852 26853 26854 26855 26856 26857 26858 26859 26860 26861 26862 26863 26864 26865 26866 26867 26868 26869 26870 26871 26872 26873 26874 26875 26876 26877 26878 26879 26880 26881 26882 26883 26884 26885 26886 26887 26888 26889 26890 26891 26892 26893 26894 26895 26896 26897 26898 26899 26900 26901 26902 26903 26904 26905 26906 26907 26908 26909 26910 26911 26912 26913 26914 26915 26916 26917 26918 26919 26920 26921 26922 26923 26924 26925 26926 26927 26928 26929 26930 26931 26932 26933 26934 26935 26936 26937 26938 26939 26940 26941 26942 26943 26944 26945 26946 26947 26948 26949 26950 26951 26952 26953 26954 26955 26956 26957 26958 26959 26960 26961 26962 26963 26964 26965 26966 26967 26968 26969 26970 26971 26972 26973 26974 26975 26976 26977 26978 26979 26980 26981 26982 26983 26984 26985 26986 26987 26988 26989 26990 26991 26992 26993 26994 26995 26996 26997 26998 26999 27000 27001 27002 27003 27004 27005 27006 27007 27008 27009 27010 27011 27012 27013 27014 27015 27016 27017 27018 27019 27020 27021 27022 27023 27024 27025 27026 27027 27028 27029 27030 27031 27032 27033 27034 27035 27036 27037 27038 27039 27040 27041 27042 27043 27044 27045 27046 27047 27048 27049 27050 27051 27052 27053 27054 27055 27056 27057 27058 27059 27060 27061 27062 27063 27064 27065 27066 27067 27068 27069 27070 27071 27072 27073 27074 27075 27076 27077 27078 27079 27080 27081 27082 27083 27084 27085 27086 27087 27088 27089 27090 27091 27092 27093 27094 27095 27096 27097 27098 27099 27100 27101 27102 27103 27104 27105 27106 27107 27108 27109 27110 27111 27112 27113 27114 27115 27116 27117 27118 27119 27120 27121 27122 27123 27124 27125 27126 27127 27128 27129 27130 27131 27132 27133 27134 27135 27136 27137 27138 27139 27140 27141 27142 27143 27144 27145 27146 27147 27148 27149 27150 27151 27152 27153 27154 27155 27156 27157 27158 27159 27160 27161 27162 27163 27164 27165 27166 27167 27168 27169 27170 27171 27172 27173 27174 27175 27176 27177 27178 27179 27180 27181 27182 27183 27184 27185 27186 27187 27188 27189 27190 27191 27192 27193 27194 27195 27196 27197 27198 27199 27200 27201 27202 27203 27204 27205 27206 27207 27208 27209 27210 27211 27212 27213 27214 27215 27216 27217 27218 27219 27220 27221 27222 27223 27224 27225 27226 27227 27228 27229 27230 27231 27232 27233 27234 27235 27236 27237 27238 27239 27240 27241 27242 27243 27244 27245 27246 27247 27248 27249 27250 27251 27252 27253 27254 27255 27256 27257 27258 27259 27260 27261 27262 27263 27264 27265 27266 27267 27268 27269 27270 27271 27272 27273 27274 27275 27276 27277 27278 27279 27280 27281 27282 27283 27284 27285 27286 27287 27288 27289 27290 27291 27292 27293 27294 27295 27296 27297 27298 27299 27300 27301 27302 27303 27304 27305 27306 27307 27308 27309 27310 27311 27312 27313 27314 27315 27316 27317 27318 27319 27320 27321 27322 27323 27324 27325 27326 27327 27328 27329 27330 27331 27332 27333 27334 27335 27336 27337 27338 27339 27340 27341 27342 27343 27344 27345 27346 27347 27348 27349 27350 27351 27352 27353 27354 27355 27356 27357 27358 27359 27360 27361 27362 27363 27364 27365 27366 27367 27368 27369 27370 27371 27372 27373 27374 27375 27376 27377 27378 27379 27380 27381 27382 27383 27384 27385 27386 27387 27388 27389 27390 27391 27392 27393 27394 27395 27396 27397 27398 27399 27400 27401 27402 27403 27404 27405 27406 27407 27408 27409 27410 27411 27412 27413 27414 27415 27416 27417 27418 27419 27420 27421 27422 27423 27424 27425 27426 27427 27428 27429 27430 27431 27432 27433 27434 27435 27436 27437 27438 27439 27440 27441 27442 27443 27444 27445 27446 27447 27448 27449 27450 27451 27452 27453 27454 27455 27456 27457 27458 27459 27460 27461 27462 27463 27464 27465 27466 27467 27468 27469 27470 27471 27472 27473 27474 27475 27476 27477 27478 27479 27480 27481 27482 27483 27484 27485 27486 27487 27488 27489 27490 27491 27492 27493 27494 27495 27496 27497 27498 27499 27500 27501 27502 27503 27504 27505 27506 27507 27508 27509 27510 27511 27512 27513 27514 27515 27516 27517 27518 27519 27520 27521 27522 27523 27524 27525 27526 27527 27528 27529 27530 27531 27532 27533 27534 27535 27536 27537 27538 27539 27540 27541 27542 27543 27544 27545 27546 27547 27548 27549 27550 27551 27552 27553 27554 27555 27556 27557 27558 27559 27560 27561 27562 27563 27564 27565 27566 27567 27568 27569 27570 27571 27572 27573 27574 27575 27576 27577 27578 27579 27580 27581 27582 27583 27584 27585 27586 27587 27588 27589 27590 27591 27592 27593 27594 27595 27596 27597 27598 27599 27600 27601 27602 27603 27604 27605 27606 27607 27608 27609 27610 27611 27612 27613 27614 27615 27616 27617 27618 27619 27620 27621 27622 27623 27624 27625 27626 27627 27628 27629 27630 27631 27632 27633 27634 27635 27636 27637 27638 27639 27640 27641 27642 27643 27644 27645 27646 27647 27648 27649 27650 27651 27652 27653 27654 27655 27656 27657 27658 27659 27660 27661 27662 27663 27664 27665 27666 27667 27668 27669 27670 27671 27672 27673 27674 27675 27676 27677 27678 27679 27680 27681 27682 27683 27684 27685 27686 27687 27688 27689 27690 27691 27692 27693 27694 27695 27696 27697 27698 27699 27700 27701 27702 27703 27704 27705 27706 27707 27708 27709 27710 27711 27712 27713 27714 27715 27716 27717 27718 27719 27720 27721 27722 27723 27724 27725 27726 27727 27728 27729 27730 27731 27732 27733 27734 27735 27736 27737 27738 27739 27740 27741 27742 27743 27744 27745 27746 27747 27748 27749 27750 27751 27752 27753 27754 27755 27756 27757 27758 27759 27760 27761 27762 27763 27764 27765 27766 27767 27768 27769 27770 27771 27772 27773 27774 27775 27776 27777 27778 27779 27780 27781 27782 27783 27784 27785 27786 27787 27788 27789 27790 27791 27792 27793 27794 27795 27796 27797 27798 27799 27800 27801 27802 27803 27804 27805 27806 27807 27808 27809 27810 27811 27812 27813 27814 27815 27816 27817 27818 27819 27820 27821 27822 27823 27824 27825 27826 27827 27828 27829 27830 27831 27832 27833 27834 27835 27836 27837 27838 27839 27840 27841 27842 27843 27844 27845 27846 27847 27848 27849 27850 27851 27852 27853 27854 27855 27856 27857 27858 27859 27860 27861 27862 27863 27864 27865 27866 27867 27868 27869 27870 27871 27872 27873 27874 27875 27876 27877 27878 27879 27880 27881 27882 27883 27884 27885 27886 27887 27888 27889 27890 27891 27892 27893 27894 27895 27896 27897 27898 27899 27900 27901 27902 27903 27904 27905 27906 27907 27908 27909 27910 27911 27912 27913 27914 27915 27916 27917 27918 27919 27920 27921 27922 27923 27924 27925 27926 27927 27928 27929 27930 27931 27932 27933 27934 27935 27936 27937 27938 27939 27940 27941 27942 27943 27944 27945 27946 27947 27948 27949 27950 27951 27952 27953 27954 27955 27956 27957 27958 27959 27960 27961 27962 27963 27964 27965 27966 27967 27968 27969 27970 27971 27972 27973 27974 27975 27976 27977 27978 27979 27980 27981 27982 27983 27984 27985 27986 27987 27988 27989 27990 27991 27992 27993 27994 27995 27996 27997 27998 27999 28000 28001 28002 28003 28004 28005 28006 28007 28008 28009 28010 28011 28012 28013 28014 28015 28016 28017 28018 28019 28020 28021 28022 28023 28024 28025 28026 28027 28028 28029 28030 28031 28032 28033 28034 28035 28036 28037 28038 28039 28040 28041 28042 28043 28044 28045 28046 28047 28048 28049 28050 28051 28052 28053 28054 28055 28056 28057 28058 28059 28060 28061 28062 28063 28064 28065 28066 28067 28068 28069 28070 28071 28072 28073 28074 28075 28076 28077 28078 28079 28080 28081 28082 28083 28084 28085 28086 28087 28088 28089 28090 28091 28092 28093 28094 28095 28096 28097 28098 28099 28100 28101 28102 28103 28104 28105 28106 28107 28108 28109 28110 28111 28112 28113 28114 28115 28116 28117 28118 28119 28120 28121 28122 28123 28124 28125 28126 28127 28128 28129 28130 28131 28132 28133 28134 28135 28136 28137 28138 28139 28140 28141 28142 28143 28144 28145 28146 28147 28148 28149 28150 28151 28152 28153 28154 28155 28156 28157 28158 28159 28160 28161 28162 28163 28164 28165 28166 28167 28168 28169 28170 28171 28172 28173 28174 28175 28176 28177 28178 28179 28180 28181 28182 28183 28184 28185 28186 28187 28188 28189 28190 28191 28192 28193 28194 28195 28196 28197 28198 28199 28200 28201 28202 28203 28204 28205 28206 28207 28208 28209 28210 28211 28212 28213 28214 28215 28216 28217 28218 28219 28220 28221 28222 28223 28224 28225 28226 28227 28228 28229 28230 28231 28232 28233 28234 28235 28236 28237 28238 28239 28240 28241 28242 28243 28244 28245 28246 28247 28248 28249 28250 28251 28252 28253 28254 28255 28256 28257 28258 28259 28260 28261 28262 28263 28264 28265 28266 28267 28268 28269 28270 28271 28272 28273 28274 28275 28276 28277 28278 28279 28280 28281 28282 28283 28284 28285 28286 28287 28288 28289 28290 28291 28292 28293 28294 28295 28296 28297 28298 28299 28300 28301 28302 28303 28304 28305 28306 28307 28308 28309 28310 28311 28312 28313 28314 28315 28316 28317 28318 28319 28320 28321 28322 28323 28324 28325 28326 28327 28328 28329 28330 28331 28332 28333 28334 28335 28336 28337 28338 28339 28340 28341 28342 28343 28344 28345 28346 28347 28348 28349 28350 28351 28352 28353 28354 28355 28356 28357 28358 28359 28360 28361 28362 28363 28364 28365 28366 28367 28368 28369 28370 28371 28372 28373 28374 28375 28376 28377 28378 28379 28380 28381 28382 28383 28384 28385 28386 28387 28388 28389 28390 28391 28392 28393 28394 28395 28396 28397 28398 28399 28400 28401 28402 28403 28404 28405 28406 28407 28408 28409 28410 28411 28412 28413 28414 28415 28416 28417 28418 28419 28420 28421 28422 28423 28424 28425 28426 28427 28428 28429 28430 28431 28432 28433 28434 28435 28436 28437 28438 28439 28440 28441 28442 28443 28444 28445 28446 28447 28448 28449 28450 28451 28452 28453 28454 28455 28456 28457 28458 28459 28460 28461 28462 28463 28464 28465 28466 28467 28468 28469 28470 28471 28472 28473 28474 28475 28476 28477 28478 28479 28480 28481 28482 28483 28484 28485 28486 28487 28488 28489 28490 28491 28492 28493 28494 28495 28496 28497 28498 28499 28500 28501 28502 28503 28504 28505 28506 28507 28508 28509 28510 28511 28512 28513 28514 28515 28516 28517 28518 28519 28520 28521 28522 28523 28524 28525 28526 28527 28528 28529 28530 28531 28532 28533 28534 28535 28536 28537 28538 28539 28540 28541 28542 28543 28544 28545 28546 28547 28548 28549 28550 28551 28552 28553 28554 28555 28556 28557 28558 28559 28560 28561 28562 28563 28564 28565 28566 28567 28568 28569 28570 28571 28572 28573 28574 28575 28576 28577 28578 28579 28580 28581 28582 28583 28584 28585 28586 28587 28588 28589 28590 28591 28592 28593 28594 28595 28596 28597 28598 28599 28600 28601 28602 28603 28604 28605 28606 28607 28608 28609 28610 28611 28612 28613 28614 28615 28616 28617 28618 28619 28620 28621 28622 28623 28624 28625 28626 28627 28628 28629 28630 28631 28632 28633 28634 28635 28636 28637 28638 28639 28640 28641 28642 28643 28644 28645 28646 28647 28648 28649 28650 28651 28652 28653 28654 28655 28656 28657 28658 28659 28660 28661 28662 28663 28664 28665 28666 28667 28668 28669 28670 28671 28672 28673 28674 28675 28676 28677 28678 28679 28680 28681 28682 28683 28684 28685 28686 28687 28688 28689 28690 28691 28692 28693 28694 28695 28696 28697 28698 28699 28700 28701 28702 28703 28704 28705 28706 28707 28708 28709 28710 28711 28712 28713 28714 28715 28716 28717 28718 28719 28720 28721 28722 28723 28724 28725 28726 28727 28728 28729 28730 28731 28732 28733 28734 28735 28736 28737 28738 28739 28740 28741 28742 28743 28744 28745 28746 28747 28748 28749 28750 28751 28752 28753 28754 28755 28756 28757 28758 28759 28760 28761 28762 28763 28764 28765 28766 28767 28768 28769 28770 28771 28772 28773 28774 28775 28776 28777 28778 28779 28780 28781 28782 28783 28784 28785 28786 28787 28788 28789 28790 28791 28792 28793 28794 28795 28796 28797 28798 28799 28800 28801 28802 28803 28804 28805 28806 28807 28808 28809 28810 28811 28812 28813 28814 28815 28816 28817 28818 28819 28820 28821 28822 28823 28824 28825 28826 28827 28828 28829 28830 28831 28832 28833 28834 28835 28836 28837 28838 28839 28840 28841 28842 28843 28844 28845 28846 28847 28848 28849 28850 28851 28852 28853 28854 28855 28856 28857 28858 28859 28860 28861 28862 28863 28864 28865 28866 28867 28868 28869 28870 28871 28872 28873 28874 28875 28876 28877 28878 28879 28880 28881 28882 28883 28884 28885 28886 28887 28888 28889 28890 28891 28892 28893 28894 28895 28896 28897 28898 28899 28900 28901 28902 28903 28904 28905 28906 28907 28908 28909 28910 28911 28912 28913 28914 28915 28916 28917 28918 28919 28920 28921 28922 28923 28924 28925 28926 28927 28928 28929 28930 28931 28932 28933 28934 28935 28936 28937 28938 28939 28940 28941 28942 28943 28944 28945 28946 28947 28948 28949 28950 28951 28952 28953 28954 28955 28956 28957 28958 28959 28960 28961 28962 28963 28964 28965 28966 28967 28968 28969 28970 28971 28972 28973 28974 28975 28976 28977 28978 28979 28980 28981 28982 28983 28984 28985 28986 28987 28988 28989 28990 28991 28992 28993 28994 28995 28996 28997 28998 28999 29000 29001 29002 29003 29004 29005 29006 29007 29008 29009 29010 29011 29012 29013 29014 29015 29016 29017 29018 29019 29020 29021 29022 29023 29024 29025 29026 29027 29028 29029 29030 29031 29032 29033 29034 29035 29036 29037 29038 29039 29040 29041 29042 29043 29044 29045 29046 29047 29048 29049 29050 29051 29052 29053 29054 29055 29056 29057 29058 29059 29060 29061 29062 29063 29064 29065 29066 29067 29068 29069 29070 29071 29072 29073 29074 29075 29076 29077 29078 29079 29080 29081 29082 29083 29084 29085 29086 29087 29088 29089 29090 29091 29092 29093 29094 29095 29096 29097 29098 29099 29100 29101 29102 29103 29104 29105 29106 29107 29108 29109 29110 29111 29112 29113 29114 29115 29116 29117 29118 29119 29120 29121 29122 29123 29124 29125 29126 29127 29128 29129 29130 29131 29132 29133 29134 29135 29136 29137 29138 29139 29140 29141 29142 29143 29144 29145 29146 29147 29148 29149 29150 29151 29152 29153 29154 29155 29156 29157 29158 29159 29160 29161 29162 29163 29164 29165 29166 29167 29168 29169 29170 29171 29172 29173 29174 29175 29176 29177 29178 29179 29180 29181 29182 29183 29184 29185 29186 29187 29188 29189 29190 29191 29192 29193 29194 29195 29196 29197 29198 29199 29200 29201 29202 29203 29204 29205 29206 29207 29208 29209 29210 29211 29212 29213 29214 29215 29216 29217 29218 29219 29220 29221 29222 29223 29224 29225 29226 29227 29228 29229 29230 29231 29232 29233 29234 29235 29236 29237 29238 29239 29240 29241 29242 29243 29244 29245 29246 29247 29248 29249 29250 29251 29252 29253 29254 29255 29256 29257 29258 29259 29260 29261 29262 29263 29264 29265 29266 29267 29268 29269 29270 29271 29272 29273 29274 29275 29276 29277 29278 29279 29280 29281 29282 29283 29284 29285 29286 29287 29288 29289 29290 29291 29292 29293 29294 29295 29296 29297 29298 29299 29300 29301 29302 29303 29304 29305 29306 29307 29308 29309 29310 29311 29312 29313 29314 29315 29316 29317 29318 29319 29320 29321 29322 29323 29324 29325 29326 29327 29328 29329 29330 29331 29332 29333 29334 29335 29336 29337 29338 29339 29340 29341 29342 29343 29344 29345 29346 29347 29348 29349 29350 29351 29352 29353 29354 29355 29356 29357 29358 29359 29360 29361 29362 29363 29364 29365 29366 29367 29368 29369 29370 29371 29372 29373 29374 29375 29376 29377 29378 29379 29380 29381 29382 29383 29384 29385 29386 29387 29388 29389 29390 29391 29392 29393 29394 29395 29396 29397 29398 29399 29400 29401 29402 29403 29404 29405 29406 29407 29408 29409 29410 29411 29412 29413 29414 29415 29416 29417 29418 29419 29420 29421 29422 29423 29424 29425 29426 29427 29428 29429 29430 29431 29432 29433 29434 29435 29436 29437 29438 29439 29440 29441 29442 29443 29444 29445 29446 29447 29448 29449 29450 29451 29452 29453 29454 29455 29456 29457 29458 29459 29460 29461 29462 29463 29464 29465 29466 29467 29468 29469 29470 29471 29472 29473 29474 29475 29476 29477 29478 29479 29480 29481 29482 29483 29484 29485 29486 29487 29488 29489 29490 29491 29492 29493 29494 29495 29496 29497 29498 29499 29500 29501 29502 29503 29504 29505 29506 29507 29508 29509 29510 29511 29512 29513 29514 29515 29516 29517 29518 29519 29520 29521 29522 29523 29524 29525 29526 29527 29528 29529 29530 29531 29532 29533 29534 29535 29536 29537 29538 29539 29540 29541 29542 29543 29544 29545 29546 29547 29548 29549 29550 29551 29552 29553 29554 29555 29556 29557 29558 29559 29560 29561 29562 29563 29564 29565 29566 29567 29568 29569 29570 29571 29572 29573 29574 29575 29576 29577 29578 29579 29580 29581 29582 29583 29584 29585 29586 29587 29588 29589 29590 29591 29592 29593 29594 29595 29596 29597 29598 29599 29600 29601 29602 29603 29604 29605 29606 29607 29608 29609 29610 29611 29612 29613 29614 29615 29616 29617 29618 29619 29620 29621 29622 29623 29624 29625 29626 29627 29628 29629 29630 29631 29632 29633 29634 29635 29636 29637 29638 29639 29640 29641 29642 29643 29644 29645 29646 29647 29648 29649 29650 29651 29652 29653 29654 29655 29656 29657 29658 29659 29660 29661 29662 29663 29664 29665 29666 29667 29668 29669 29670 29671 29672 29673 29674 29675 29676 29677 29678 29679 29680 29681 29682 29683 29684 29685 29686 29687 29688 29689 29690 29691 29692 29693 29694 29695 29696 29697 29698 29699 29700 29701 29702 29703 29704 29705 29706 29707 29708 29709 29710 29711 29712 29713 29714 29715 29716 29717 29718 29719 29720 29721 29722 29723 29724 29725 29726 29727 29728 29729 29730 29731 29732 29733 29734 29735 29736 29737 29738 29739 29740 29741 29742 29743 29744 29745 29746 29747 29748 29749 29750 29751 29752 29753 29754 29755 29756 29757 29758 29759 29760 29761 29762 29763 29764 29765 29766 29767 29768 29769 29770 29771 29772 29773 29774 29775 29776 29777 29778 29779 29780 29781 29782 29783 29784 29785 29786 29787 29788 29789 29790 29791 29792 29793 29794 29795 29796 29797 29798 29799 29800 29801 29802 29803 29804 29805 29806 29807 29808 29809 29810 29811 29812 29813 29814 29815 29816 29817 29818 29819 29820 29821 29822 29823 29824 29825 29826 29827 29828 29829 29830 29831 29832 29833 29834 29835 29836 29837 29838 29839 29840 29841 29842 29843 29844 29845 29846 29847 29848 29849 29850 29851 29852 29853 29854 29855 29856 29857 29858 29859 29860 29861 29862 29863 29864 29865 29866 29867 29868 29869 29870 29871 29872 29873 29874 29875 29876 29877 29878 29879 29880 29881 29882 29883 29884 29885 29886 29887 29888 29889 29890 29891 29892 29893 29894 29895 29896 29897 29898 29899 29900 29901 29902 29903 29904 29905 29906 29907 29908 29909 29910 29911 29912 29913 29914 29915 29916 29917 29918 29919 29920 29921 29922 29923 29924 29925 29926 29927 29928 29929 29930 29931 29932 29933 29934 29935 29936 29937 29938 29939 29940 29941 29942 29943 29944 29945 29946 29947 29948 29949 29950 29951 29952 29953 29954 29955 29956 29957 29958 29959 29960 29961 29962 29963 29964 29965 29966 29967 29968 29969 29970 29971 29972 29973 29974 29975 29976 29977 29978 29979 29980 29981 29982 29983 29984 29985 29986 29987 29988 29989 29990 29991 29992 29993 29994 29995 29996 29997 29998 29999 30000 30001 30002 30003 30004 30005 30006 30007 30008 30009 30010 30011 30012 30013 30014 30015 30016 30017 30018 30019 30020 30021 30022 30023 30024 30025 30026 30027 30028 30029 30030 30031 30032 30033 30034 30035 30036 30037 30038 30039 30040 30041 30042 30043 30044 30045 30046 30047 30048 30049 30050 30051 30052 30053 30054 30055 30056 30057 30058 30059 30060 30061 30062 30063 30064 30065 30066 30067 30068 30069 30070 30071 30072 30073 30074 30075 30076 30077 30078 30079 30080 30081 30082 30083 30084 30085 30086 30087 30088 30089 30090 30091 30092 30093 30094 30095 30096 30097 30098 30099 30100 30101 30102 30103 30104 30105 30106 30107 30108 30109 30110 30111 30112 30113 30114 30115 30116 30117 30118 30119 30120 30121 30122 30123 30124 30125 30126 30127 30128 30129 30130 30131 30132 30133 30134 30135 30136 30137 30138 30139 30140 30141 30142 30143 30144 30145 30146 30147 30148 30149 30150 30151 30152 30153 30154 30155 30156 30157 30158 30159 30160 30161 30162 30163 30164 30165 30166 30167 30168 30169 30170 30171 30172 30173 30174 30175 30176 30177 30178 30179 30180 30181 30182 30183 30184 30185 30186 30187 30188 30189 30190 30191 30192 30193 30194 30195 30196 30197 30198 30199 30200 30201 30202 30203 30204 30205 30206 30207 30208 30209 30210 30211 30212 30213 30214 30215 30216 30217 30218 30219 30220 30221 30222 30223 30224 30225 30226 30227 30228 30229 30230 30231 30232 30233 30234 30235 30236 30237 30238 30239 30240 30241 30242 30243 30244 30245 30246 30247 30248 30249 30250 30251 30252 30253 30254 30255 30256 30257 30258 30259 30260 30261 30262 30263 30264 30265 30266 30267 30268 30269 30270 30271 30272 30273 30274 30275 30276 30277 30278 30279 30280 30281 30282 30283 30284 30285 30286 30287 30288 30289 30290 30291 30292 30293 30294 30295 30296 30297 30298 30299 30300 30301 30302 30303 30304 30305 30306 30307 30308 30309 30310 30311 30312 30313 30314 30315 30316 30317 30318 30319 30320 30321 30322 30323 30324 30325 30326 30327 30328 30329 30330 30331 30332 30333 30334 30335 30336 30337 30338 30339 30340 30341 30342 30343 30344 30345 30346 30347 30348 30349 30350 30351 30352 30353 30354 30355 30356 30357 30358 30359 30360 30361 30362 30363 30364 30365 30366 30367 30368 30369 30370 30371 30372 30373 30374 30375 30376 30377 30378 30379 30380 30381 30382 30383 30384 30385 30386 30387 30388 30389 30390 30391 30392 30393 30394 30395 30396 30397 30398 30399 30400 30401 30402 30403 30404 30405 30406 30407 30408 30409 30410 30411 30412 30413 30414 30415 30416 30417 30418 30419 30420 30421 30422 30423 30424 30425 30426 30427 30428 30429 30430 30431 30432 30433 30434 30435 30436 30437 30438 30439 30440 30441 30442 30443 30444 30445 30446 30447 30448 30449 30450 30451 30452 30453 30454 30455 30456 30457 30458 30459 30460 30461 30462 30463 30464 30465 30466 30467 30468 30469 30470 30471 30472 30473 30474 30475 30476 30477 30478 30479 30480 30481 30482 30483 30484 30485 30486 30487 30488 30489 30490 30491 30492 30493 30494 30495 30496 30497 30498 30499 30500 30501 30502 30503 30504 30505 30506 30507 30508 30509 30510 30511 30512 30513 30514 30515 30516 30517 30518 30519 30520 30521 30522 30523 30524 30525 30526 30527 30528 30529 30530 30531 30532 30533 30534 30535 30536 30537 30538 30539 30540 30541 30542 30543 30544 30545 30546 30547 30548 30549 30550 30551 30552 30553 30554 30555 30556 30557 30558 30559 30560 30561 30562 30563 30564 30565 30566 30567 30568 30569 30570 30571 30572 30573 30574 30575 30576 30577 30578 30579 30580 30581 30582 30583 30584 30585 30586 30587 30588 30589 30590 30591 30592 30593 30594 30595 30596 30597 30598 30599 30600 30601 30602 30603 30604 30605 30606 30607 30608 30609 30610 30611 30612 30613 30614 30615 30616 30617 30618 30619 30620 30621 30622 30623 30624 30625 30626 30627 30628 30629 30630 30631 30632 30633 30634 30635 30636 30637 30638 30639 30640 30641 30642 30643 30644 30645 30646 30647 30648 30649 30650 30651 30652 30653 30654 30655 30656 30657 30658 30659 30660 30661 30662 30663 30664 30665 30666 30667 30668 30669 30670 30671 30672 30673 30674 30675 30676 30677 30678 30679 30680 30681 30682 30683 30684 30685 30686 30687 30688 30689 30690 30691 30692 30693 30694 30695 30696 30697 30698 30699 30700 30701 30702 30703 30704 30705 30706 30707 30708 30709 30710 30711 30712 30713 30714 30715 30716 30717 30718 30719 30720 30721 30722 30723 30724 30725 30726 30727 30728 30729 30730 30731 30732 30733 30734 30735 30736 30737 30738 30739 30740 30741 30742 30743 30744 30745 30746 30747 30748 30749 30750 30751 30752 30753 30754 30755 30756 30757 30758 30759 30760 30761 30762 30763 30764 30765 30766 30767 30768 30769 30770 30771 30772 30773 30774 30775 30776 30777 30778 30779 30780 30781 30782 30783 30784 30785 30786 30787 30788 30789 30790 30791 30792 30793 30794 30795 30796 30797 30798 30799 30800 30801 30802 30803 30804 30805 30806 30807 30808 30809 30810 30811 30812 30813 30814 30815 30816 30817 30818 30819 30820 30821 30822 30823 30824 30825 30826 30827 30828 30829 30830 30831 30832 30833 30834 30835 30836 30837 30838 30839 30840 30841 30842 30843 30844 30845 30846 30847 30848 30849 30850 30851 30852 30853 30854 30855 30856 30857 30858 30859 30860 30861 30862 30863 30864 30865 30866 30867 30868 30869 30870 30871 30872 30873 30874 30875 30876 30877 30878 30879 30880 30881 30882 30883 30884 30885 30886 30887 30888 30889 30890 30891 30892 30893 30894 30895 30896 30897 30898 30899 30900 30901 30902 30903 30904 30905 30906 30907 30908 30909 30910 30911 30912 30913 30914 30915 30916 30917 30918 30919 30920 30921 30922 30923 30924 30925 30926 30927 30928 30929 30930 30931 30932 30933 30934 30935 30936 30937 30938 30939 30940 30941 30942 30943 30944 30945 30946 30947 30948 30949 30950 30951 30952 30953 30954 30955 30956 30957 30958 30959 30960 30961 30962 30963 30964 30965 30966 30967 30968 30969 30970 30971 30972 30973 30974 30975 30976 30977 30978 30979 30980 30981 30982 30983 30984 30985 30986 30987 30988 30989 30990 30991 30992 30993 30994 30995 30996 30997 30998 30999 31000 31001 31002 31003 31004 31005 31006 31007 31008 31009 31010 31011 31012 31013 31014 31015 31016 31017 31018 31019 31020 31021 31022 31023 31024 31025 31026 31027 31028 31029 31030 31031 31032 31033 31034 31035 31036 31037 31038 31039 31040 31041 31042 31043 31044 31045 31046 31047 31048 31049 31050 31051 31052 31053 31054 31055 31056 31057 31058 31059 31060 31061 31062 31063 31064 31065 31066 31067 31068 31069 31070 31071 31072 31073 31074 31075 31076 31077 31078 31079 31080 31081 31082 31083 31084 31085 31086 31087 31088 31089 31090 31091 31092 31093 31094 31095 31096 31097 31098 31099 31100 31101 31102 31103 31104 31105 31106 31107 31108 31109 31110 31111 31112 31113 31114 31115 31116 31117 31118 31119 31120 31121 31122 31123 31124 31125 31126 31127 31128 31129 31130 31131 31132 31133 31134 31135 31136 31137 31138 31139 31140 31141 31142 31143 31144 31145 31146 31147 31148 31149 31150 31151 31152 31153 31154 31155 31156 31157 31158 31159 31160 31161 31162 31163 31164 31165 31166 31167 31168 31169 31170 31171 31172 31173 31174 31175 31176 31177 31178 31179 31180 31181 31182 31183 31184 31185 31186 31187 31188 31189 31190 31191 31192 31193 31194 31195 31196 31197 31198 31199 31200 31201 31202 31203 31204 31205 31206 31207 31208 31209 31210 31211 31212 31213 31214 31215 31216 31217 31218 31219 31220 31221 31222 31223 31224 31225 31226 31227 31228 31229 31230 31231 31232 31233 31234 31235 31236 31237 31238 31239 31240 31241 31242 31243 31244 31245 31246 31247 31248 31249 31250 31251 31252 31253 31254 31255 31256 31257 31258 31259 31260 31261 31262 31263 31264 31265 31266 31267 31268 31269 31270 31271 31272 31273 31274 31275 31276 31277 31278 31279 31280 31281 31282 31283 31284 31285 31286 31287 31288 31289 31290 31291 31292 31293 31294 31295 31296 31297 31298 31299 31300 31301 31302 31303 31304 31305 31306 31307 31308 31309 31310 31311 31312 31313 31314 31315 31316 31317 31318 31319 31320 31321 31322 31323 31324 31325 31326 31327 31328 31329 31330 31331 31332 31333 31334 31335 31336 31337 31338 31339 31340 31341 31342 31343 31344 31345 31346 31347 31348 31349 31350 31351 31352 31353 31354 31355 31356 31357 31358 31359 31360 31361 31362 31363 31364 31365 31366 31367 31368 31369 31370 31371 31372 31373 31374 31375 31376 31377 31378 31379 31380 31381 31382 31383 31384 31385 31386 31387 31388 31389 31390 31391 31392 31393 31394 31395 31396 31397 31398 31399 31400 31401 31402 31403 31404 31405 31406 31407 31408 31409 31410 31411 31412 31413 31414 31415 31416 31417 31418 31419 31420 31421 31422 31423 31424 31425 31426 31427 31428 31429 31430 31431 31432 31433 31434 31435 31436 31437 31438 31439 31440 31441 31442 31443 31444 31445 31446 31447 31448 31449 31450 31451 31452 31453 31454 31455 31456 31457 31458 31459 31460 31461 31462 31463 31464 31465 31466 31467 31468 31469 31470 31471 31472 31473 31474 31475 31476 31477 31478 31479 31480 31481 31482 31483 31484 31485 31486 31487 31488 31489 31490 31491 31492 31493 31494 31495 31496 31497 31498 31499 31500 31501 31502 31503 31504 31505 31506 31507 31508 31509 31510 31511 31512 31513 31514 31515 31516 31517 31518 31519 31520 31521 31522 31523 31524 31525 31526 31527 31528 31529 31530 31531 31532 31533 31534 31535 31536 31537 31538 31539 31540 31541 31542 31543 31544 31545 31546 31547 31548 31549 31550 31551 31552 31553 31554 31555 31556 31557 31558 31559 31560 31561 31562 31563 31564 31565 31566 31567 31568 31569 31570 31571 31572 31573 31574 31575 31576 31577 31578 31579 31580 31581 31582 31583 31584 31585 31586 31587 31588 31589 31590 31591 31592 31593 31594 31595 31596 31597 31598 31599 31600 31601 31602 31603 31604 31605 31606 31607 31608 31609 31610 31611 31612 31613 31614 31615 31616 31617 31618 31619 31620 31621 31622 31623 31624 31625 31626 31627 31628 31629 31630 31631 31632 31633 31634 31635 31636 31637 31638 31639 31640 31641 31642 31643 31644 31645 31646 31647 31648 31649 31650 31651 31652 31653 31654 31655 31656 31657 31658 31659 31660 31661 31662 31663 31664 31665 31666 31667 31668 31669 31670 31671 31672 31673 31674 31675 31676 31677 31678 31679 31680 31681 31682 31683 31684 31685 31686 31687 31688 31689 31690 31691 31692 31693 31694 31695 31696 31697 31698 31699 31700 31701 31702 31703 31704 31705 31706 31707 31708 31709 31710 31711 31712 31713 31714 31715 31716 31717 31718 31719 31720 31721 31722 31723 31724 31725 31726 31727 31728 31729 31730 31731 31732 31733 31734 31735 31736 31737 31738 31739 31740 31741 31742 31743 31744 31745 31746 31747 31748 31749 31750 31751 31752 31753 31754 31755 31756 31757 31758 31759 31760 31761 31762 31763 31764 31765 31766 31767 31768 31769 31770 31771 31772 31773 31774 31775 31776 31777 31778 31779 31780 31781 31782 31783 31784 31785 31786 31787 31788 31789 31790 31791 31792 31793 31794 31795 31796 31797 31798 31799 31800 31801 31802 31803 31804 31805 31806 31807 31808 31809 31810 31811 31812 31813 31814 31815 31816 31817 31818 31819 31820 31821 31822 31823 31824 31825 31826 31827 31828 31829 31830 31831 31832 31833 31834 31835 31836 31837 31838 31839 31840 31841 31842 31843 31844 31845 31846 31847 31848 31849 31850 31851 31852 31853 31854 31855 31856 31857 31858 31859 31860 31861 31862 31863 31864 31865 31866 31867 31868 31869 31870 31871 31872 31873 31874 31875 31876 31877 31878 31879 31880 31881 31882 31883 31884 31885 31886 31887 31888 31889 31890 31891 31892 31893 31894 31895 31896 31897 31898 31899 31900 31901 31902 31903 31904 31905 31906 31907 31908 31909 31910 31911 31912 31913 31914 31915 31916 31917 31918 31919 31920 31921 31922 31923 31924 31925 31926 31927 31928 31929 31930 31931 31932 31933 31934 31935 31936 31937 31938 31939 31940 31941 31942 31943 31944 31945 31946 31947 31948 31949 31950 31951 31952 31953 31954 31955 31956 31957 31958 31959 31960 31961 31962 31963 31964 31965 31966 31967 31968 31969 31970 31971 31972 31973 31974 31975 31976 31977 31978 31979 31980 31981 31982 31983 31984 31985 31986 31987 31988 31989 31990 31991 31992 31993 31994 31995 31996 31997 31998 31999 32000 32001 32002 32003 32004 32005 32006 32007 32008 32009 32010 32011 32012 32013 32014 32015 32016 32017 32018 32019 32020 32021 32022 32023 32024 32025 32026 32027 32028 32029 32030 32031 32032 32033 32034 32035 32036 32037 32038 32039 32040 32041 32042 32043 32044 32045 32046 32047 32048 32049 32050 32051 32052 32053 32054 32055 32056 32057 32058 32059 32060 32061 32062 32063 32064 32065 32066 32067 32068 32069 32070 32071 32072 32073 32074 32075 32076 32077 32078 32079 32080 32081 32082 32083 32084 32085 32086 32087 32088 32089 32090 32091 32092 32093 32094 32095 32096 32097 32098 32099 32100 32101 32102 32103 32104 32105 32106 32107 32108 32109 32110 32111 32112 32113 32114 32115 32116 32117 32118 32119 32120 32121 32122 32123 32124 32125 32126 32127 32128 32129 32130 32131 32132 32133 32134 32135 32136 32137 32138 32139 32140 32141 32142 32143 32144 32145 32146 32147 32148 32149 32150 32151 32152 32153 32154 32155 32156 32157 32158 32159 32160 32161 32162 32163 32164 32165 32166 32167 32168 32169 32170 32171 32172 32173 32174 32175 32176 32177 32178 32179 32180 32181 32182 32183 32184 32185 32186 32187 32188 32189 32190 32191 32192 32193 32194 32195 32196 32197 32198 32199 32200 32201 32202 32203 32204 32205 32206 32207 32208 32209 32210 32211 32212 32213 32214 32215 32216 32217 32218 32219 32220 32221 32222 32223 32224 32225 32226 32227 32228 32229 32230 32231 32232 32233 32234 32235 32236 32237 32238 32239 32240 32241 32242 32243 32244 32245 32246 32247 32248 32249 32250 32251 32252 32253 32254 32255 32256 32257 32258 32259 32260 32261 32262 32263 32264 32265 32266 32267 32268 32269 32270 32271 32272 32273 32274 32275 32276 32277 32278 32279 32280 32281 32282 32283 32284 32285 32286 32287 32288 32289 32290 32291 32292 32293 32294 32295 32296 32297 32298 32299 32300 32301 32302 32303 32304 32305 32306 32307 32308 32309 32310 32311 32312 32313 32314 32315 32316 32317 32318 32319 32320 32321 32322 32323 32324 32325 32326 32327 32328 32329 32330 32331 32332 32333 32334 32335 32336 32337 32338 32339 32340 32341 32342 32343 32344 32345 32346 32347 32348 32349 32350 32351 32352 32353 32354 32355 32356 32357 32358 32359 32360 32361 32362 32363 32364 32365 32366 32367 32368 32369 32370 32371 32372 32373 32374 32375 32376 32377 32378 32379 32380 32381 32382 32383 32384 32385 32386 32387 32388 32389 32390 32391 32392 32393 32394 32395 32396 32397 32398 32399 32400 32401 32402 32403 32404 32405 32406 32407 32408 32409 32410 32411 32412 32413 32414 32415 32416 32417 32418 32419 32420 32421 32422 32423 32424 32425 32426 32427 32428 32429 32430 32431 32432 32433 32434 32435 32436 32437 32438 32439 32440 32441 32442 32443 32444 32445 32446 32447 32448 32449 32450 32451 32452 32453 32454 32455 32456 32457 32458 32459 32460 32461 32462 32463 32464 32465 32466 32467 32468 32469 32470 32471 32472 32473 32474 32475 32476 32477 32478 32479 32480 32481 32482 32483 32484 32485 32486 32487 32488 32489 32490 32491 32492 32493 32494 32495 32496 32497 32498 32499 32500 32501 32502 32503 32504 32505 32506 32507 32508 32509 32510 32511 32512 32513 32514 32515 32516 32517 32518 32519 32520 32521 32522 32523 32524 32525 32526 32527 32528 32529 32530 32531 32532 32533 32534 32535 32536 32537 32538 32539 32540 32541 32542 32543 32544 32545 32546 32547 32548 32549 32550 32551 32552 32553 32554 32555 32556 32557 32558 32559 32560 32561 32562 32563 32564 32565 32566 32567 32568 32569 32570 32571 32572 32573 32574 32575 32576 32577 32578 32579 32580 32581 32582 32583 32584 32585 32586 32587 32588 32589 32590 32591 32592 32593 32594 32595 32596 32597 32598 32599 32600 32601 32602 32603 32604 32605 32606 32607 32608 32609 32610 32611 32612 32613 32614 32615 32616 32617 32618 32619 32620 32621 32622 32623 32624 32625 32626 32627 32628 32629 32630 32631 32632 32633 32634 32635 32636 32637 32638 32639 32640 32641 32642 32643 32644 32645 32646 32647 32648 32649 32650 32651 32652 32653 32654 32655 32656 32657 32658 32659 32660 32661 32662 32663 32664 32665 32666 32667 32668 32669 32670 32671 32672 32673 32674 32675 32676 32677 32678 32679 32680 32681 32682 32683 32684 32685 32686 32687 32688 32689 32690 32691 32692 32693 32694 32695 32696 32697 32698 32699 32700 32701 32702 32703 32704 32705 32706 32707 32708 32709 32710 32711 32712 32713 32714 32715 32716 32717 32718 32719 32720 32721 32722 32723 32724 32725 32726 32727 32728 32729 32730 32731 32732 32733 32734 32735 32736 32737 32738 32739 32740 32741 32742 32743 32744 32745 32746 32747 32748 32749 32750 32751 32752 32753 32754 32755 32756 32757 32758 32759 32760 32761 32762 32763 32764 32765 32766 32767 32768 32769 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779 32780 32781 32782 32783 32784 32785 32786 32787 32788 32789 32790 32791 32792 32793 32794 32795 32796 32797 32798 32799 32800 32801 32802 32803 32804 32805 32806 32807 32808 32809 32810 32811 32812 32813 32814 32815 32816 32817 32818 32819 32820 32821 32822 32823 32824 32825 32826 32827 32828 32829 32830 32831 32832 32833 32834 32835 32836 32837 32838 32839 32840 32841 32842 32843 32844 32845 32846 32847 32848 32849 32850 32851 32852 32853 32854 32855 32856 32857 32858 32859 32860 32861 32862 32863 32864 32865 32866 32867 32868 32869 32870 32871 32872 32873 32874 32875 32876 32877 32878 32879 32880 32881 32882 32883 32884 32885 32886 32887 32888 32889 32890 32891 32892 32893 32894 32895 32896 32897 32898 32899 32900 32901 32902 32903 32904 32905 32906 32907 32908 32909 32910 32911 32912 32913 32914 32915 32916 32917 32918 32919 32920 32921 32922 32923 32924 32925 32926 32927 32928 32929 32930 32931 32932 32933 32934 32935 32936 32937 32938 32939 32940 32941 32942 32943 32944 32945 32946 32947 32948 32949 32950 32951 32952 32953 32954 32955 32956 32957 32958 32959 32960 32961 32962 32963 32964 32965 32966 32967 32968 32969 32970 32971 32972 32973 32974 32975 32976 32977 32978 32979 32980 32981 32982 32983 32984 32985 32986 32987 32988 32989 32990 32991 32992 32993 32994 32995 32996 32997 32998 32999 33000 33001 33002 33003 33004 33005 33006 33007 33008 33009 33010 33011 33012 33013 33014 33015 33016 33017 33018 33019 33020 33021 33022 33023 33024 33025 33026 33027 33028 33029 33030 33031 33032 33033 33034 33035 33036 33037 33038 33039 33040 33041 33042 33043 33044 33045 33046 33047 33048 33049 33050 33051 33052 33053 33054 33055 33056 33057 33058 33059 33060 33061 33062 33063 33064 33065 33066 33067 33068 33069 33070 33071 33072 33073 33074 33075 33076 33077 33078 33079 33080 33081 33082 33083 33084 33085 33086 33087 33088 33089 33090 33091 33092 33093 33094 33095 33096 33097 33098 33099 33100 33101 33102 33103 33104 33105 33106 33107 33108 33109 33110 33111 33112 33113 33114 33115 33116 33117 33118 33119 33120 33121 33122 33123 33124 33125 33126 33127 33128 33129 33130 33131 33132 33133 33134 33135 33136 33137 33138 33139 33140 33141 33142 33143 33144 33145 33146 33147 33148 33149 33150 33151 33152 33153 33154 33155 33156 33157 33158 33159 33160 33161 33162 33163 33164 33165 33166 33167 33168 33169 33170 33171 33172 33173 33174 33175 33176 33177 33178 33179 33180 33181 33182 33183 33184 33185 33186 33187 33188 33189 33190 33191 33192 33193 33194 33195 33196 33197 33198 33199 33200 33201 33202 33203 33204 33205 33206 33207 33208 33209 33210 33211 33212 33213 33214 33215 33216 33217 33218 33219 33220 33221 33222 33223 33224 33225 33226 33227 33228 33229 33230 33231 33232 33233 33234 33235 33236 33237 33238 33239 33240 33241 33242 33243 33244 33245 33246 33247 33248 33249 33250 33251 33252 33253 33254 33255 33256 33257 33258 33259 33260 33261 33262 33263 33264 33265 33266 33267 33268 33269 33270 33271 33272 33273 33274 33275 33276 33277 33278 33279 33280 33281 33282 33283 33284 33285 33286 33287 33288 33289 33290 33291 33292 33293 33294 33295 33296 33297 33298 33299 33300 33301 33302 33303 33304 33305 33306 33307 33308 33309 33310 33311 33312 33313 33314 33315 33316 33317 33318 33319 33320 33321 33322 33323 33324 33325 33326 33327 33328 33329 33330 33331 33332 33333 33334 33335 33336 33337 33338 33339 33340 33341 33342 33343 33344 33345 33346 33347 33348 33349 33350 33351 33352 33353 33354 33355 33356 33357 33358 33359 33360 33361 33362 33363 33364 33365 33366 33367 33368 33369 33370 33371 33372 33373 33374 33375 33376 33377 33378 33379 33380 33381 33382 33383 33384 33385 33386 33387 33388 33389 33390 33391 33392 33393 33394 33395 33396 33397 33398 33399 33400 33401 33402 33403 33404 33405 33406 33407 33408 33409 33410 33411 33412 33413 33414 33415 33416 33417 33418 33419 33420 33421 33422 33423 33424 33425 33426 33427 33428 33429 33430 33431 33432 33433 33434 33435 33436 33437 33438 33439 33440 33441 33442 33443 33444 33445 33446 33447 33448 33449 33450 33451 33452 33453 33454 33455 33456 33457 33458 33459 33460 33461 33462 33463 33464 33465 33466 33467 33468 33469 33470 33471 33472 33473 33474 33475 33476 33477 33478 33479 33480 33481 33482 33483 33484 33485 33486 33487 33488 33489 33490 33491 33492 33493 33494 33495 33496 33497 33498 33499 33500 33501 33502 33503 33504 33505 33506 33507 33508 33509 33510 33511 33512 33513 33514 33515 33516 33517 33518 33519 33520 33521 33522 33523 33524 33525 33526 33527 33528 33529 33530 33531 33532 33533 33534 33535 33536 33537 33538 33539 33540 33541 33542 33543 33544 33545 33546 33547 33548 33549 33550 33551 33552 33553 33554 33555 33556 33557 33558 33559 33560 33561 33562 33563 33564 33565 33566 33567 33568 33569 33570 33571 33572 33573 33574 33575 33576 33577 33578 33579 33580 33581 33582 33583 33584 33585 33586 33587 33588 33589 33590 33591 33592 33593 33594 33595 33596 33597 33598 33599 33600 33601 33602 33603 33604 33605 33606 33607 33608 33609 33610 33611 33612 33613 33614 33615 33616 33617 33618 33619 33620 33621 33622 33623 33624 33625 33626 33627 33628 33629 33630 33631 33632 33633 33634 33635 33636 33637 33638 33639 33640 33641 33642 33643 33644 33645 33646 33647 33648 33649 33650 33651 33652 33653 33654 33655 33656 33657 33658 33659 33660 33661 33662 33663 33664 33665 33666 33667 33668 33669 33670 33671 33672 33673 33674 33675 33676 33677 33678 33679 33680 33681 33682 33683 33684 33685 33686 33687 33688 33689 33690 33691 33692 33693 33694 33695 33696 33697 33698 33699 33700 33701 33702 33703 33704 33705 33706 33707 33708 33709 33710 33711 33712 33713 33714 33715 33716 33717 33718 33719 33720 33721 33722 33723 33724 33725 33726 33727 33728 33729 33730 33731 33732 33733 33734 33735 33736 33737 33738 33739 33740 33741 33742 33743 33744 33745 33746 33747 33748 33749 33750 33751 33752 33753 33754 33755 33756 33757 33758 33759 33760 33761 33762 33763 33764 33765 33766 33767 33768 33769 33770 33771 33772 33773 33774 33775 33776 33777 33778 33779 33780 33781 33782 33783 33784 33785 33786 33787 33788 33789 33790 33791 33792 33793 33794 33795 33796 33797 33798 33799 33800 33801 33802 33803 33804 33805 33806 33807 33808 33809 33810 33811 33812 33813 33814 33815 33816 33817 33818 33819 33820 33821 33822 33823 33824 33825 33826 33827 33828 33829 33830 33831 33832 33833 33834 33835 33836 33837 33838 33839 33840 33841 33842 33843 33844 33845 33846 33847 33848 33849 33850 33851 33852 33853 33854 33855 33856 33857 33858 33859 33860 33861 33862 33863 33864 33865 33866 33867 33868 33869 33870 33871 33872 33873 33874 33875 33876 33877 33878 33879 33880 33881 33882 33883 33884 33885 33886 33887 33888 33889 33890 33891 33892 33893 33894 33895 33896 33897 33898 33899 33900 33901 33902 33903 33904 33905 33906 33907 33908 33909 33910 33911 33912 33913 33914 33915 33916 33917 33918 33919 33920 33921 33922 33923 33924 33925 33926 33927 33928 33929 33930 33931 33932 33933 33934 33935 33936 33937 33938 33939 33940 33941 33942 33943 33944 33945 33946 33947 33948 33949 33950 33951 33952 33953 33954 33955 33956 33957 33958 33959 33960 33961 33962 33963 33964 33965 33966 33967 33968 33969 33970 33971 33972 33973 33974 33975 33976 33977 33978 33979 33980 33981 33982 33983 33984 33985 33986 33987 33988 33989 33990 33991 33992 33993 33994 33995 33996 33997 33998 33999 34000 34001 34002 34003 34004 34005 34006 34007 34008 34009 34010 34011 34012 34013 34014 34015 34016 34017 34018 34019 34020 34021 34022 34023 34024 34025 34026 34027 34028 34029 34030 34031 34032 34033 34034 34035 34036 34037 34038 34039 34040 34041 34042 34043 34044 34045 34046 34047 34048 34049 34050 34051 34052 34053 34054 34055 34056 34057 34058 34059 34060 34061 34062 34063 34064 34065 34066 34067 34068 34069 34070 34071 34072 34073 34074 34075 34076 34077 34078 34079 34080 34081 34082 34083 34084 34085 34086 34087 34088 34089 34090 34091 34092 34093 34094 34095 34096 34097 34098 34099 34100 34101 34102 34103 34104 34105 34106 34107 34108 34109 34110 34111 34112 34113 34114 34115 34116 34117 34118 34119 34120 34121 34122 34123 34124 34125 34126 34127 34128 34129 34130 34131 34132 34133 34134 34135 34136 34137 34138 34139 34140 34141 34142 34143 34144 34145 34146 34147 34148 34149 34150 34151 34152 34153 34154 34155 34156 34157 34158 34159 34160 34161 34162 34163 34164 34165 34166 34167 34168 34169 34170 34171 34172 34173 34174 34175 34176 34177 34178 34179 34180 34181 34182 34183 34184 34185 34186 34187 34188 34189 34190 34191 34192 34193 34194 34195 34196 34197 34198 34199 34200 34201 34202 34203 34204 34205 34206 34207 34208 34209 34210 34211 34212 34213 34214 34215 34216 34217 34218 34219 34220 34221 34222 34223 34224 34225 34226 34227 34228 34229 34230 34231 34232 34233 34234 34235 34236 34237 34238 34239 34240 34241 34242 34243 34244 34245 34246 34247 34248 34249 34250 34251 34252 34253 34254 34255 34256 34257 34258 34259 34260 34261 34262 34263 34264 34265 34266 34267 34268 34269 34270 34271 34272 34273 34274 34275 34276 34277 34278 34279 34280 34281 34282 34283 34284 34285 34286 34287 34288 34289 34290 34291 34292 34293 34294 34295 34296 34297 34298 34299 34300 34301 34302 34303 34304 34305 34306 34307 34308 34309 34310 34311 34312 34313 34314 34315 34316 34317 34318 34319 34320 34321 34322 34323 34324 34325 34326 34327 34328 34329 34330 34331 34332 34333 34334 34335 34336 34337 34338 34339 34340 34341 34342 34343 34344 34345 34346 34347 34348 34349 34350 34351 34352 34353 34354 34355 34356 34357 34358 34359 34360 34361 34362 34363 34364 34365 34366 34367 34368 34369 34370 34371 34372 34373 34374 34375 34376 34377 34378 34379 34380 34381 34382 34383 34384 34385 34386 34387 34388 34389 34390 34391 34392 34393 34394 34395 34396 34397 34398 34399 34400 34401 34402 34403 34404 34405 34406 34407 34408 34409 34410 34411 34412 34413 34414 34415 34416 34417 34418 34419 34420 34421 34422 34423 34424 34425 34426 34427 34428 34429 34430 34431 34432 34433 34434 34435 34436 34437 34438 34439 34440 34441 34442 34443 34444 34445 34446 34447 34448 34449 34450 34451 34452 34453 34454 34455 34456 34457 34458 34459 34460 34461 34462 34463 34464 34465 34466 34467 34468 34469 34470 34471 34472 34473 34474 34475 34476 34477 34478 34479 34480 34481 34482 34483 34484 34485 34486 34487 34488 34489 34490 34491 34492 34493 34494 34495 34496 34497 34498 34499 34500 34501 34502 34503 34504 34505 34506 34507 34508 34509 34510 34511 34512 34513 34514 34515 34516 34517 34518 34519 34520 34521 34522 34523 34524 34525 34526 34527 34528 34529 34530 34531 34532 34533 34534 34535 34536 34537 34538 34539 34540 34541 34542 34543 34544 34545 34546 34547 34548 34549 34550 34551 34552 34553 34554 34555 34556 34557 34558 34559 34560 34561 34562 34563 34564 34565 34566 34567 34568 34569 34570 34571 34572 34573 34574 34575 34576 34577 34578 34579 34580 34581 34582 34583 34584 34585 34586 34587 34588 34589 34590 34591 34592 34593 34594 34595 34596 34597 34598 34599 34600 34601 34602 34603 34604 34605 34606 34607 34608 34609 34610 34611 34612 34613 34614 34615 34616 34617 34618 34619 34620 34621 34622 34623 34624 34625 34626 34627 34628 34629 34630 34631 34632 34633 34634 34635 34636 34637 34638 34639 34640 34641 34642 34643 34644 34645 34646 34647 34648 34649 34650 34651 34652 34653 34654 34655 34656 34657 34658 34659 34660 34661 34662 34663 34664 34665 34666 34667 34668 34669 34670 34671 34672 34673 34674 34675 34676 34677 34678 34679 34680 34681 34682 34683 34684 34685 34686 34687 34688 34689 34690 34691 34692 34693 34694 34695 34696 34697 34698 34699 34700 34701 34702 34703 34704 34705 34706 34707 34708 34709 34710 34711 34712 34713 34714 34715 34716 34717 34718 34719 34720 34721 34722 34723 34724 34725 34726 34727 34728 34729 34730 34731 34732 34733 34734 34735 34736 34737 34738 34739 34740 34741 34742 34743 34744 34745 34746 34747 34748 34749 34750 34751 34752 34753 34754 34755 34756 34757 34758 34759 34760 34761 34762 34763 34764 34765 34766 34767 34768 34769 34770 34771 34772 34773 34774 34775 34776 34777 34778 34779 34780 34781 34782 34783 34784 34785 34786 34787 34788 34789 34790 34791 34792 34793 34794 34795 34796 34797 34798 34799 34800 34801 34802 34803 34804 34805 34806 34807 34808 34809 34810 34811 34812 34813 34814 34815 34816 34817 34818 34819 34820 34821 34822 34823 34824 34825 34826 34827 34828 34829 34830 34831 34832 34833 34834 34835 34836 34837 34838 34839 34840 34841 34842 34843 34844 34845 34846 34847 34848 34849 34850 34851 34852 34853 34854 34855 34856 34857 34858 34859 34860 34861 34862 34863 34864 34865 34866 34867 34868 34869 34870 34871 34872 34873 34874 34875 34876 34877 34878 34879 34880 34881 34882 34883 34884 34885 34886 34887 34888 34889 34890 34891 34892 34893 34894 34895 34896 34897 34898 34899 34900 34901 34902 34903 34904 34905 34906 34907 34908 34909 34910 34911 34912 34913 34914 34915 34916 34917 34918 34919 34920 34921 34922 34923 34924 34925 34926 34927 34928 34929 34930 34931 34932 34933 34934 34935 34936 34937 34938 34939 34940 34941 34942 34943 34944 34945 34946 34947 34948 34949 34950 34951 34952 34953 34954 34955 34956 34957 34958 34959 34960 34961 34962 34963 34964 34965 34966 34967 34968 34969 34970 34971 34972 34973 34974 34975 34976 34977 34978 34979 34980 34981 34982 34983 34984 34985 34986 34987 34988 34989 34990 34991 34992 34993 34994 34995 34996 34997 34998 34999 35000 35001 35002 35003 35004 35005 35006 35007 35008 35009 35010 35011 35012 35013 35014 35015 35016 35017 35018 35019 35020 35021 35022 35023 35024 35025 35026 35027 35028 35029 35030 35031 35032 35033 35034 35035 35036 35037 35038 35039 35040 35041 35042 35043 35044 35045 35046 35047 35048 35049 35050 35051 35052 35053 35054 35055 35056 35057 35058 35059 35060 35061 35062 35063 35064 35065 35066 35067 35068 35069 35070 35071 35072 35073 35074 35075 35076 35077 35078 35079 35080 35081 35082 35083 35084 35085 35086 35087 35088 35089 35090 35091 35092 35093 35094 35095 35096 35097 35098 35099 35100 35101 35102 35103 35104 35105 35106 35107 35108 35109 35110 35111 35112 35113 35114 35115 35116 35117 35118 35119 35120 35121 35122 35123 35124 35125 35126 35127 35128 35129 35130 35131 35132 35133 35134 35135 35136 35137 35138 35139 35140 35141 35142 35143 35144 35145 35146 35147 35148 35149 35150 35151 35152 35153 35154 35155 35156 35157 35158 35159 35160 35161 35162 35163 35164 35165 35166 35167 35168 35169 35170 35171 35172 35173 35174 35175 35176 35177 35178 35179 35180 35181 35182 35183 35184 35185 35186 35187 35188 35189 35190 35191 35192 35193 35194 35195 35196 35197 35198 35199 35200 35201 35202 35203 35204 35205 35206 35207 35208 35209 35210 35211 35212 35213 35214 35215 35216 35217 35218 35219 35220 35221 35222 35223 35224 35225 35226 35227 35228 35229 35230 35231 35232 35233 35234 35235 35236 35237 35238 35239 35240 35241 35242 35243 35244 35245 35246 35247 35248 35249 35250 35251 35252 35253 35254 35255 35256 35257 35258 35259 35260 35261 35262 35263 35264 35265 35266 35267 35268 35269 35270 35271 35272 35273 35274 35275 35276 35277 35278 35279 35280 35281 35282 35283 35284 35285 35286 35287 35288 35289 35290 35291 35292 35293 35294 35295 35296 35297 35298 35299 35300 35301 35302 35303 35304 35305 35306 35307 35308 35309 35310 35311 35312 35313 35314 35315 35316 35317 35318 35319 35320 35321 35322 35323 35324 35325 35326 35327 35328 35329 35330 35331 35332 35333 35334 35335 35336 35337 35338 35339 35340 35341 35342 35343 35344 35345 35346 35347 35348 35349 35350 35351 35352 35353 35354 35355 35356 35357 35358 35359 35360 35361 35362 35363 35364 35365 35366 35367 35368 35369 35370 35371 35372 35373 35374 35375 35376 35377 35378 35379 35380 35381 35382 35383 35384 35385 35386 35387 35388 35389 35390 35391 35392 35393 35394 35395 35396 35397 35398 35399 35400 35401 35402 35403 35404 35405 35406 35407 35408 35409 35410 35411 35412 35413 35414 35415 35416 35417 35418 35419 35420 35421 35422 35423 35424 35425 35426 35427 35428 35429 35430 35431 35432 35433 35434 35435 35436 35437 35438 35439 35440 35441 35442 35443 35444 35445 35446 35447 35448 35449 35450 35451 35452 35453 35454 35455 35456 35457 35458 35459 35460 35461 35462 35463 35464 35465 35466 35467 35468 35469 35470 35471 35472 35473 35474 35475 35476 35477 35478 35479 35480 35481 35482 35483 35484 35485 35486 35487 35488 35489 35490 35491 35492 35493 35494 35495 35496 35497 35498 35499 35500 35501 35502 35503 35504 35505 35506 35507 35508 35509 35510 35511 35512 35513 35514 35515 35516 35517 35518 35519 35520 35521 35522 35523 35524 35525 35526 35527 35528 35529 35530 35531 35532 35533 35534 35535 35536 35537 35538 35539 35540 35541 35542 35543 35544 35545 35546 35547 35548 35549 35550 35551 35552 35553 35554 35555 35556 35557 35558 35559 35560 35561 35562 35563 35564 35565 35566 35567 35568 35569 35570 35571 35572 35573 35574 35575 35576 35577 35578 35579 35580 35581 35582 35583 35584 35585 35586 35587 35588 35589 35590 35591 35592 35593 35594 35595 35596 35597 35598 35599 35600 35601 35602 35603 35604 35605 35606 35607 35608 35609 35610 35611 35612 35613 35614 35615 35616 35617 35618 35619 35620 35621 35622 35623 35624 35625 35626 35627 35628 35629 35630 35631 35632 35633 35634 35635 35636 35637 35638 35639 35640 35641 35642 35643 35644 35645 35646 35647 35648 35649 35650 35651 35652 35653 35654 35655 35656 35657 35658 35659 35660 35661 35662 35663 35664 35665 35666 35667 35668 35669 35670 35671 35672 35673 35674 35675 35676 35677 35678 35679 35680 35681 35682 35683 35684 35685 35686 35687 35688 35689 35690 35691 35692 35693 35694 35695 35696 35697 35698 35699 35700 35701 35702 35703 35704 35705 35706 35707 35708 35709 35710 35711 35712 35713 35714 35715 35716 35717 35718 35719 35720 35721 35722 35723 35724 35725 35726 35727 35728 35729 35730 35731 35732 35733 35734 35735 35736 35737 35738 35739 35740 35741 35742 35743 35744 35745 35746 35747 35748 35749 35750 35751 35752 35753 35754 35755 35756 35757 35758 35759 35760 35761 35762 35763 35764 35765 35766 35767 35768 35769 35770 35771 35772 35773 35774 35775 35776 35777 35778 35779 35780 35781 35782 35783 35784 35785 35786 35787 35788 35789 35790 35791 35792 35793 35794 35795 35796 35797 35798 35799 35800 35801 35802 35803 35804 35805 35806 35807 35808 35809 35810 35811 35812 35813 35814 35815 35816 35817 35818 35819 35820 35821 35822 35823 35824 35825 35826 35827 35828 35829 35830 35831 35832 35833 35834 35835 35836 35837 35838 35839 35840 35841 35842 35843 35844 35845 35846 35847 35848 35849 35850 35851 35852 35853 35854 35855 35856 35857 35858 35859 35860 35861 35862 35863 35864 35865 35866 35867 35868 35869 35870 35871 35872 35873 35874 35875 35876 35877 35878 35879 35880 35881 35882 35883 35884 35885 35886 35887 35888 35889 35890 35891 35892 35893 35894 35895 35896 35897 35898 35899 35900 35901 35902 35903 35904 35905 35906 35907 35908 35909 35910 35911 35912 35913 35914 35915 35916 35917 35918 35919 35920 35921 35922 35923 35924 35925 35926 35927 35928 35929 35930 35931 35932 35933 35934 35935 35936 35937 35938 35939 35940 35941 35942 35943 35944 35945 35946 35947 35948 35949 35950 35951 35952 35953 35954 35955 35956 35957 35958 35959 35960 35961 35962 35963 35964 35965 35966 35967 35968 35969 35970 35971 35972 35973 35974 35975 35976 35977 35978 35979 35980 35981 35982 35983 35984 35985 35986 35987 35988 35989 35990 35991 35992 35993 35994 35995 35996 35997 35998 35999 36000 36001 36002 36003 36004 36005 36006 36007 36008 36009 36010 36011 36012 36013 36014 36015 36016 36017 36018 36019 36020 36021 36022 36023 36024 36025 36026 36027 36028 36029 36030 36031 36032 36033 36034 36035 36036 36037 36038 36039 36040 36041 36042 36043 36044 36045 36046 36047 36048 36049 36050 36051 36052 36053 36054 36055 36056 36057 36058 36059 36060 36061 36062 36063 36064 36065 36066 36067 36068 36069 36070 36071 36072 36073 36074 36075 36076 36077 36078 36079 36080 36081 36082 36083 36084 36085 36086 36087 36088 36089 36090 36091 36092 36093 36094 36095 36096 36097 36098 36099 36100 36101 36102 36103 36104 36105 36106 36107 36108 36109 36110 36111 36112 36113 36114 36115 36116 36117 36118 36119 36120 36121 36122 36123 36124 36125 36126 36127 36128 36129 36130 36131 36132 36133 36134 36135 36136 36137 36138 36139 36140 36141 36142 36143 36144 36145 36146 36147 36148 36149 36150 36151 36152 36153 36154 36155 36156 36157 36158 36159 36160 36161 36162 36163 36164 36165 36166 36167 36168 36169 36170 36171 36172 36173 36174 36175 36176 36177 36178 36179 36180 36181 36182 36183 36184 36185 36186 36187 36188 36189 36190 36191 36192 36193 36194 36195 36196 36197 36198 36199 36200 36201 36202 36203 36204 36205 36206 36207 36208 36209 36210 36211 36212 36213 36214 36215 36216 36217 36218 36219 36220 36221 36222 36223 36224 36225 36226 36227 36228 36229 36230 36231 36232 36233 36234 36235 36236 36237 36238 36239 36240 36241 36242 36243 36244 36245 36246 36247 36248 36249 36250 36251 36252 36253 36254 36255 36256 36257 36258 36259 36260 36261 36262 36263 36264 36265 36266 36267 36268 36269 36270 36271 36272 36273 36274 36275 36276 36277 36278 36279 36280 36281 36282 36283 36284 36285 36286 36287 36288 36289 36290 36291 36292 36293 36294 36295 36296 36297 36298 36299 36300 36301 36302 36303 36304 36305 36306 36307 36308 36309 36310 36311 36312 36313 36314 36315 36316 36317 36318 36319 36320 36321 36322 36323 36324 36325 36326 36327 36328 36329 36330 36331 36332 36333 36334 36335 36336 36337 36338 36339 36340 36341 36342 36343 36344 36345 36346 36347 36348 36349 36350 36351 36352 36353 36354 36355 36356 36357 36358 36359 36360 36361 36362 36363 36364 36365 36366 36367 36368 36369 36370 36371 36372 36373 36374 36375 36376 36377 36378 36379 36380 36381 36382 36383 36384 36385 36386 36387 36388 36389 36390 36391 36392 36393 36394 36395 36396 36397 36398 36399 36400 36401 36402 36403 36404 36405 36406 36407 36408 36409 36410 36411 36412 36413 36414 36415 36416 36417 36418 36419 36420 36421 36422 36423 36424 36425 36426 36427 36428 36429 36430 36431 36432 36433 36434 36435 36436 36437 36438 36439 36440 36441 36442 36443 36444 36445 36446 36447 36448 36449 36450 36451 36452 36453 36454 36455 36456 36457 36458 36459 36460 36461 36462 36463 36464 36465 36466 36467 36468 36469 36470 36471 36472 36473 36474 36475 36476 36477 36478 36479 36480 36481 36482 36483 36484 36485 36486 36487 36488 36489 36490 36491 36492 36493 36494 36495 36496 36497 36498 36499 36500 36501 36502 36503 36504 36505 36506 36507 36508 36509 36510 36511 36512 36513 36514 36515 36516 36517 36518 36519 36520 36521 36522 36523 36524 36525 36526 36527 36528 36529 36530 36531 36532 36533 36534 36535 36536 36537 36538 36539 36540 36541 36542 36543 36544 36545 36546 36547 36548 36549 36550 36551 36552 36553 36554 36555 36556 36557 36558 36559 36560 36561 36562 36563 36564 36565 36566 36567 36568 36569 36570 36571 36572 36573 36574 36575 36576 36577 36578 36579 36580 36581 36582 36583 36584 36585 36586 36587 36588 36589 36590 36591 36592 36593 36594 36595 36596 36597 36598 36599 36600 36601 36602 36603 36604 36605 36606 36607 36608 36609 36610 36611 36612 36613 36614 36615 36616 36617 36618 36619 36620 36621 36622 36623 36624 36625 36626 36627 36628 36629 36630 36631 36632 36633 36634 36635 36636 36637 36638 36639 36640 36641 36642 36643 36644 36645 36646 36647 36648 36649 36650 36651 36652 36653 36654 36655 36656 36657 36658 36659 36660 36661 36662 36663 36664 36665 36666 36667 36668 36669 36670 36671 36672 36673 36674 36675 36676 36677 36678 36679 36680 36681 36682 36683 36684 36685 36686 36687 36688 36689 36690 36691 36692 36693 36694 36695 36696 36697 36698 36699 36700 36701 36702 36703 36704 36705 36706 36707 36708 36709 36710 36711 36712 36713 36714 36715 36716 36717 36718 36719 36720 36721 36722 36723 36724 36725 36726 36727 36728 36729 36730 36731 36732 36733 36734 36735 36736 36737 36738 36739 36740 36741 36742 36743 36744 36745 36746 36747 36748 36749 36750 36751 36752 36753 36754 36755 36756 36757 36758 36759 36760 36761 36762 36763 36764 36765 36766 36767 36768 36769 36770 36771 36772 36773 36774 36775 36776 36777 36778 36779 36780 36781 36782 36783 36784 36785 36786 36787 36788 36789 36790 36791 36792 36793 36794 36795 36796 36797 36798 36799 36800 36801 36802 36803 36804 36805 36806 36807 36808 36809 36810 36811 36812 36813 36814 36815 36816 36817 36818 36819 36820 36821 36822 36823 36824 36825 36826 36827 36828 36829 36830 36831 36832 36833 36834 36835 36836 36837 36838 36839 36840 36841 36842 36843 36844 36845 36846 36847 36848 36849 36850 36851 36852 36853 36854 36855 36856 36857 36858 36859 36860 36861 36862 36863 36864 36865 36866 36867 36868 36869 36870 36871 36872 36873 36874 36875 36876 36877 36878 36879 36880 36881 36882 36883 36884 36885 36886 36887 36888 36889 36890 36891 36892 36893 36894 36895 36896 36897 36898 36899 36900 36901 36902 36903 36904 36905 36906 36907 36908 36909 36910 36911 36912 36913 36914 36915 36916 36917 36918 36919 36920 36921 36922 36923 36924 36925 36926 36927 36928 36929 36930 36931 36932 36933 36934 36935 36936 36937 36938 36939 36940 36941 36942 36943 36944 36945 36946 36947 36948 36949 36950 36951 36952 36953 36954 36955 36956 36957 36958 36959 36960 36961 36962 36963 36964 36965 36966 36967 36968 36969 36970 36971 36972 36973 36974 36975 36976 36977 36978 36979 36980 36981 36982 36983 36984 36985 36986 36987 36988 36989 36990 36991 36992 36993 36994 36995 36996 36997 36998 36999 37000 37001 37002 37003 37004 37005 37006 37007 37008 37009 37010 37011 37012 37013 37014 37015 37016 37017 37018 37019 37020 37021 37022 37023 37024 37025 37026 37027 37028 37029 37030 37031 37032 37033 37034 37035 37036 37037 37038 37039 37040 37041 37042 37043 37044 37045 37046 37047 37048 37049 37050 37051 37052 37053 37054 37055 37056 37057 37058 37059 37060 37061 37062 37063 37064 37065 37066 37067 37068 37069 37070 37071 37072 37073 37074 37075 37076 37077 37078 37079 37080 37081 37082 37083 37084 37085 37086 37087 37088 37089 37090 37091 37092 37093 37094 37095 37096 37097 37098 37099 37100 37101 37102 37103 37104 37105 37106 37107 37108 37109 37110 37111 37112 37113 37114 37115 37116 37117 37118 37119 37120 37121 37122 37123 37124 37125 37126 37127 37128 37129 37130 37131 37132 37133 37134 37135 37136 37137 37138 37139 37140 37141 37142 37143 37144 37145 37146 37147 37148 37149 37150 37151 37152 37153 37154 37155 37156 37157 37158 37159 37160 37161 37162 37163 37164 37165 37166 37167 37168 37169 37170 37171 37172 37173 37174 37175 37176 37177 37178 37179 37180 37181 37182 37183 37184 37185 37186 37187 37188 37189 37190 37191 37192 37193 37194 37195 37196 37197 37198 37199 37200 37201 37202 37203 37204 37205 37206 37207 37208 37209 37210 37211 37212 37213 37214 37215 37216 37217 37218 37219 37220 37221 37222 37223 37224 37225 37226 37227 37228 37229 37230 37231 37232 37233 37234 37235 37236 37237 37238 37239 37240 37241 37242 37243 37244 37245 37246 37247 37248 37249 37250 37251 37252 37253 37254 37255 37256 37257 37258 37259 37260 37261 37262 37263 37264 37265 37266 37267 37268 37269 37270 37271 37272 37273 37274 37275 37276 37277 37278 37279 37280 37281 37282 37283 37284 37285 37286 37287 37288 37289 37290 37291 37292 37293 37294 37295 37296 37297 37298 37299 37300 37301 37302 37303 37304 37305 37306 37307 37308 37309 37310 37311 37312 37313 37314 37315 37316 37317 37318 37319 37320 37321 37322 37323 37324 37325 37326 37327 37328 37329 37330 37331 37332 37333 37334 37335 37336 37337 37338 37339 37340 37341 37342 37343 37344 37345 37346 37347 37348 37349 37350 37351 37352 37353 37354 37355 37356 37357 37358 37359 37360 37361 37362 37363 37364 37365 37366 37367 37368 37369 37370 37371 37372 37373 37374 37375 37376 37377 37378 37379 37380 37381 37382 37383 37384 37385 37386 37387 37388 37389 37390 37391 37392 37393 37394 37395 37396 37397 37398 37399 37400 37401 37402 37403 37404 37405 37406 37407 37408 37409 37410 37411 37412 37413 37414 37415 37416 37417 37418 37419 37420 37421 37422 37423 37424 37425 37426 37427 37428 37429 37430 37431 37432 37433 37434 37435 37436 37437 37438 37439 37440 37441 37442 37443 37444 37445 37446 37447 37448 37449 37450 37451 37452 37453 37454 37455 37456 37457 37458 37459 37460 37461 37462 37463 37464 37465 37466 37467 37468 37469 37470 37471 37472 37473 37474 37475 37476 37477 37478 37479 37480 37481 37482 37483 37484 37485 37486 37487 37488 37489 37490 37491 37492 37493 37494 37495 37496 37497 37498 37499 37500 37501 37502 37503 37504 37505 37506 37507 37508 37509 37510 37511 37512 37513 37514 37515 37516 37517 37518 37519 37520 37521 37522 37523 37524 37525 37526 37527 37528 37529 37530 37531 37532 37533 37534 37535 37536 37537 37538 37539 37540 37541 37542 37543 37544 37545 37546 37547 37548 37549 37550 37551 37552 37553 37554 37555 37556 37557 37558 37559 37560 37561 37562 37563 37564 37565 37566 37567 37568 37569 37570 37571 37572 37573 37574 37575 37576 37577 37578 37579 37580 37581 37582 37583 37584 37585 37586 37587 37588 37589 37590 37591 37592 37593 37594 37595 37596 37597 37598 37599 37600 37601 37602 37603 37604 37605 37606 37607 37608 37609 37610 37611 37612 37613 37614 37615 37616 37617 37618 37619 37620 37621 37622 37623 37624 37625 37626 37627 37628 37629 37630 37631 37632 37633 37634 37635 37636 37637 37638 37639 37640 37641 37642 37643 37644 37645 37646 37647 37648 37649 37650 37651 37652 37653 37654 37655 37656 37657 37658 37659 37660 37661 37662 37663 37664 37665 37666 37667 37668 37669 37670 37671 37672 37673 37674 37675 37676 37677 37678 37679 37680 37681 37682 37683 37684 37685 37686 37687 37688 37689 37690 37691 37692 37693 37694 37695 37696 37697 37698 37699 37700 37701 37702 37703 37704 37705 37706 37707 37708 37709 37710 37711 37712 37713 37714 37715 37716 37717 37718 37719 37720 37721 37722 37723 37724 37725 37726 37727 37728 37729 37730 37731 37732 37733 37734 37735 37736 37737 37738 37739 37740 37741 37742 37743 37744 37745 37746 37747 37748 37749 37750 37751 37752 37753 37754 37755 37756 37757 37758 37759 37760 37761 37762 37763 37764 37765 37766 37767 37768 37769 37770 37771 37772 37773 37774 37775 37776 37777 37778 37779 37780 37781 37782 37783 37784 37785 37786 37787 37788 37789 37790 37791 37792 37793 37794 37795 37796 37797 37798 37799 37800 37801 37802 37803 37804 37805 37806 37807 37808 37809 37810 37811 37812 37813 37814 37815 37816 37817 37818 37819 37820 37821 37822 37823 37824 37825 37826 37827 37828 37829 37830 37831 37832 37833 37834 37835 37836 37837 37838 37839 37840 37841 37842 37843 37844 37845 37846 37847 37848 37849 37850 37851 37852 37853 37854 37855 37856 37857 37858 37859 37860 37861 37862 37863 37864 37865 37866 37867 37868 37869 37870 37871 37872 37873 37874 37875 37876 37877 37878 37879 37880 37881 37882 37883 37884 37885 37886 37887 37888 37889 37890 37891 37892 37893 37894 37895 37896 37897 37898 37899 37900 37901 37902 37903 37904 37905 37906 37907 37908 37909 37910 37911 37912 37913 37914 37915 37916 37917 37918 37919 37920 37921 37922 37923 37924 37925 37926 37927 37928 37929 37930 37931 37932 37933 37934 37935 37936 37937 37938 37939 37940 37941 37942 37943 37944 37945 37946 37947 37948 37949 37950 37951 37952 37953 37954 37955 37956 37957 37958 37959 37960 37961 37962 37963 37964 37965 37966 37967 37968 37969 37970 37971 37972 37973 37974 37975 37976 37977 37978 37979 37980 37981 37982 37983 37984 37985 37986 37987 37988 37989 37990 37991 37992 37993 37994 37995 37996 37997 37998 37999 38000 38001 38002 38003 38004 38005 38006 38007 38008 38009 38010 38011 38012 38013 38014 38015 38016 38017 38018 38019 38020 38021 38022 38023 38024 38025 38026 38027 38028 38029 38030 38031 38032 38033 38034 38035 38036 38037 38038 38039 38040 38041 38042 38043 38044 38045 38046 38047 38048 38049 38050 38051 38052 38053 38054 38055 38056 38057 38058 38059 38060 38061 38062 38063 38064 38065 38066 38067 38068 38069 38070 38071 38072 38073 38074 38075 38076 38077 38078 38079 38080 38081 38082 38083 38084 38085 38086 38087 38088 38089 38090 38091 38092 38093 38094 38095 38096 38097 38098 38099 38100 38101 38102 38103 38104 38105 38106 38107 38108 38109 38110 38111 38112 38113 38114 38115 38116 38117 38118 38119 38120 38121 38122 38123 38124 38125 38126 38127 38128 38129 38130 38131 38132 38133 38134 38135 38136 38137 38138 38139 38140 38141 38142 38143 38144 38145 38146 38147 38148 38149 38150 38151 38152 38153 38154 0 0 0.2777777777777777 0 0 0.5555555555555556 0 0 0.8333333333333334 0 0 1.111111111111111 0 0 1.388888888888889 0 0 1.666666666666666 0 0 1.944444444444443 0 0 2.222222222222221 0 0 2.499999999999999 0 0 2.777777777777775 0 0 3.055555555555553 0 0 3.33333333333333 0 0 3.611111111111108 0 0 3.888888888888885 0 0 4.166666666666663 0 0 4.44444444444444 0 0 4.722222222222217 0 0 4.999999999999995 0 0 5.277777777777772 0 0 5.555555555555549 0 0 5.833333333333327 0 0 6.111111111111104 0 0 6.388888888888882 0 0 6.666666666666659 0 0 6.944444444444437 0 0 7.222222222222214 0 0 7.499999999999991 0 0 7.777777777777769 0 0 8.055555555555546 0 0 8.333333333333323 0 0 8.6111111111111 0 0 8.888888888888879 0 0 9.166666666666657 0 0 9.444444444444438 0 0 9.72222222222222 10 0 0.2777777777777777 10 0 0.5555555555555556 10 0 0.8333333333333334 10 0 1.111111111111111 10 0 1.388888888888889 10 0 1.666666666666666 10 0 1.944444444444443 10 0 2.222222222222221 10 0 2.499999999999999 10 0 2.777777777777775 10 0 3.055555555555553 10 0 3.33333333333333 10 0 3.611111111111108 10 0 3.888888888888885 10 0 4.166666666666663 10 0 4.44444444444444 10 0 4.722222222222217 10 0 4.999999999999995 10 0 5.277777777777772 10 0 5.555555555555549 10 0 5.833333333333327 10 0 6.111111111111104 10 0 6.388888888888882 10 0 6.666666666666659 10 0 6.944444444444437 10 0 7.222222222222214 10 0 7.499999999999991 10 0 7.777777777777769 10 0 8.055555555555546 10 0 8.333333333333323 10 0 8.6111111111111 10 0 8.888888888888879 10 0 9.166666666666657 10 0 9.444444444444438 10 0 9.72222222222222 0 0.2468725277796784 8.193198097702819 0 0.2485438892286521 2.639850143319256 0 0.2405626121623436 4.305555555555552 0 0.2585798153199246 5.424603717114342 0 0.2575182180353178 6.528600992546212 0 0.2469978374196671 7.36161403899793 0 0.7568599516277978 4.870859734231174 0 0.7594373878376564 3.194444444444442 0 0.2486378463333858 8.750006898984502 0 0.2441917304318683 1.80525555017347 0 0.7559193398854839 3.74969999461791 0 0.246028041181438 1.245371952275459 0 0.2440806601145154 5.971922216840131 0 0.2527870381917652 0.696275151821014 0 0.2579213300091311 9.303389969216783 0 0.7477779131478011 9.593881008339054 0 0.748142968105276 0.4057024229519828 0 0.7594373878376564 7.638888888888882 0 0.7561409952345188 5.695645339262981 0 0.7565402861011699 2.366129038513401 0 0.7532600465586423 7.083580181244106 0 0.2449996048648959 3.4710697215464 0 0.7545553668219314 1.524691661795333 0 0.7548310835798203 0.9680169521665944 0 0.7554608045858476 8.464604557233269 0 0.7594373878376577 6.249999999999994 0 0.7586481592770419 9.029181836425513 0 0.3810545878556902 9.801049789680111 0 0.3810547422948949 0.1989575857469081 0 0.7470328000290825 4.305555555555554 0 0.260130029177478 4.870859734231175 0 0.7589319180099516 0.6908934599375828 0 0.5032400614639363 0.5693974183101986 0 0.7586091174024224 9.308235364414074 0 0.5032252571457698 9.430007274348824 0 0.5110973051303268 9.165286516902563 0 0.5165586263580298 8.893126879232437 0 0.7554782732925028 8.749779173248708 0 0.5165114466086388 8.606986705648618 0 0.5026453719074134 8.323148900762781 0 0.2579274985919981 8.470371235818625 0 0.4867485030575144 8.042917646290629 0 0.2602507530054562 9.027861010304575 0 0.7425820996092565 8.186000672647396 0 0.7594373878376561 6.527777777777769 0 0.5149824303645627 6.389026091350289 0 0.5134927163696171 6.668132723079164 0 0.5144759335492199 6.110681215157774 0 0.2658402545549947 6.810294755497743 0 0.2610550156150384 6.250027442368379 0 0.4871362140073421 5.826418329278413 0 0.5066727765179216 6.945834905497186 0 0.2534386118610394 5.696918180107247 0 0.7524963355726575 7.36124561414197 0 0.5123684370439607 7.499764617711589 0 0.2405626121623428 4.027777777777772 0 0.4857760726461684 4.166666666666663 0 0.4902282512750032 4.449483328578317 0 0.4855701368474464 3.88845065945272 0 0.7395825547982702 4.027689892680364 0 0.5128637859926531 3.604196107056196 0 0.7495514084513499 4.590836802009528 0 0.5057890622586493 4.732271894383446 0 0.5128404812123588 5.010508141353543 0 0.2549773328988035 5.149171512995754 0 0.5105886892013481 5.292450732563736 0 0.7507048554313054 3.471019720649386 0 0.2465604355172031 7.637829635024134 0 0.4928024399496105 7.222878968431401 0 0.2468994818409218 3.19495068945697 0 0.7589545375482414 2.084169654567049 0 0.5123511066597655 2.223006684082775 0 0.4981960624768765 2.507106455781527 0 0.5157135271480477 1.944201740608252 0 0.2598518640614755 2.08322550894876 0 0.4966729028377848 1.661984613911841 0 0.2531571537377949 2.362568502392422 0 0.4983468124009222 2.786521917260722 0 0.7534810125160375 2.644781895424735 0 0.2519127677559042 2.919066934946137 0 0.2508768604429898 1.524242478160909 0 0.7543160557260009 1.804359796998931 0 0.5040807622854749 1.381752916150604 0 0.479670749337673 1.094944516603624 0 0.762314474069851 5.421665703761772 0 0.2473326899778897 3.748582377638846 0 0.2469119314360835 4.586290140406565 0 0.7528650884381231 5.971198221357264 0 0.7554771545473062 6.80607278311822 0 0.243426940188733 7.913072236890292 0 0.2438480551664803 7.085337921391269 0 0.7488563270041499 1.244901007786026 0 0.5113459296738987 0.8296339376371562 0 0.4803801747780024 7.771154708990866 0 0.4910205088210301 3.33294440556632 0 0.5137514885924923 3.05977205245235 0 0.2483052930641291 0.9684450004636164 0 0.2519131750612946 9.585496603803085 0 0.2513908886914228 0.4144137473893602 0 0.617477636983357 9.807783769426262 0 0.6175386596553403 0.1921554071204313 0 0.7580647256224432 2.923051009837089 0 0.7571005993518926 5.145543681614665 0 0.7280971576161452 7.904405861917848 0 0.5175007053084083 5.56454382231068 0 0.1765935525833969 9.821753723141082 0 0.1764891261972635 0.1782298221828092 0 0.8230751167504655 0.1781648021549416 0 0.8230142485176858 9.821766998964737 0 0.5002734640421741 0.3561253163037762 0 0.5002897140387825 9.643643689119466 10 0.2468725277796784 8.193198097702819 10 0.2485438892286521 2.639850143319256 10 0.2405626121623436 4.305555555555552 10 0.2585798153199246 5.424603717114342 10 0.2575182180353178 6.528600992546212 10 0.2469978374196671 7.36161403899793 10 0.7568599516277978 4.870859734231174 10 0.7594373878376564 3.194444444444442 10 0.2486378463333858 8.750006898984502 10 0.2441917304318683 1.80525555017347 10 0.7559193398854839 3.74969999461791 10 0.246028041181438 1.245371952275459 10 0.2440806601145154 5.971922216840131 10 0.2527870381917652 0.696275151821014 10 0.2579213300091311 9.303389969216783 10 0.7477779131478011 9.593881008339054 10 0.748142968105276 0.4057024229519828 10 0.7594373878376564 7.638888888888882 10 0.7561409952345188 5.695645339262981 10 0.7565402861011699 2.366129038513401 10 0.7532600465586423 7.083580181244106 10 0.2449996048648959 3.4710697215464 10 0.7545553668219314 1.524691661795333 10 0.7548310835798203 0.9680169521665944 10 0.7554608045858476 8.464604557233269 10 0.7594373878376577 6.249999999999994 10 0.7586481592770419 9.029181836425513 10 0.3810545878556902 9.801049789680111 10 0.3810547422948949 0.1989575857469081 10 0.7470328000290825 4.305555555555554 10 0.260130029177478 4.870859734231175 10 0.7589319180099516 0.6908934599375828 10 0.5032400614639363 0.5693974183101986 10 0.7586091174024224 9.308235364414074 10 0.5032252571457698 9.430007274348824 10 0.5110973051303268 9.165286516902563 10 0.5165586263580298 8.893126879232437 10 0.7554782732925028 8.749779173248708 10 0.5165114466086388 8.606986705648618 10 0.5026453719074134 8.323148900762781 10 0.2579274985919981 8.470371235818625 10 0.4867485030575144 8.042917646290629 10 0.2602507530054562 9.027861010304575 10 0.7425820996092565 8.186000672647396 10 0.7594373878376561 6.527777777777769 10 0.5149824303645627 6.389026091350289 10 0.5134927163696171 6.668132723079164 10 0.5144759335492199 6.110681215157774 10 0.2658402545549947 6.810294755497743 10 0.2610550156150384 6.250027442368379 10 0.4871362140073421 5.826418329278413 10 0.5066727765179216 6.945834905497186 10 0.2534386118610394 5.696918180107247 10 0.7524963355726575 7.36124561414197 10 0.5123684370439607 7.499764617711589 10 0.2405626121623428 4.027777777777772 10 0.4857760726461684 4.166666666666663 10 0.4902282512750032 4.449483328578317 10 0.4855701368474464 3.88845065945272 10 0.7395825547982702 4.027689892680364 10 0.5128637859926531 3.604196107056196 10 0.7495514084513499 4.590836802009528 10 0.5057890622586493 4.732271894383446 10 0.5128404812123588 5.010508141353543 10 0.2549773328988035 5.149171512995754 10 0.5105886892013481 5.292450732563736 10 0.7507048554313054 3.471019720649386 10 0.2465604355172031 7.637829635024134 10 0.4928024399496105 7.222878968431401 10 0.2468994818409218 3.19495068945697 10 0.7589545375482414 2.084169654567049 10 0.5123511066597655 2.223006684082775 10 0.4981960624768765 2.507106455781527 10 0.5157135271480477 1.944201740608252 10 0.2598518640614755 2.08322550894876 10 0.4966729028377848 1.661984613911841 10 0.2531571537377949 2.362568502392422 10 0.4983468124009222 2.786521917260722 10 0.7534810125160375 2.644781895424735 10 0.2519127677559042 2.919066934946137 10 0.2508768604429898 1.524242478160909 10 0.7543160557260009 1.804359796998931 10 0.5040807622854749 1.381752916150604 10 0.479670749337673 1.094944516603624 10 0.762314474069851 5.421665703761772 10 0.2473326899778897 3.748582377638846 10 0.2469119314360835 4.586290140406565 10 0.7528650884381231 5.971198221357264 10 0.7554771545473062 6.80607278311822 10 0.243426940188733 7.913072236890292 10 0.2438480551664803 7.085337921391269 10 0.7488563270041499 1.244901007786026 10 0.5113459296738987 0.8296339376371562 10 0.4803801747780024 7.771154708990866 10 0.4910205088210301 3.33294440556632 10 0.5137514885924923 3.05977205245235 10 0.2483052930641291 0.9684450004636164 10 0.2519131750612946 9.585496603803085 10 0.2513908886914228 0.4144137473893602 10 0.617477636983357 9.807783769426262 10 0.6175386596553403 0.1921554071204313 10 0.7580647256224432 2.923051009837089 10 0.7571005993518926 5.145543681614665 10 0.7280971576161452 7.904405861917848 10 0.5175007053084083 5.56454382231068 10 0.1765935525833969 9.821753723141082 10 0.1764891261972635 0.1782298221828092 10 0.8230751167504655 0.1781648021549416 10 0.8230142485176858 9.821766998964737 10 0.5002734640421741 0.3561253163037762 10 0.5002897140387825 9.643643689119466 5.138888888888877 0 9.759437387837586 5.143586164605485 0 0.2185584744500771 0.2352435652847727 0 5.138888888888882 9.743738911182573 0 5.157118213105959 0.2469135467042241 0 3.74835088128526 9.72136613148775 0 3.745936434230825 3.749999999999996 0 9.759437387837657 3.749999999999996 0 0.2405626121623436 6.527777777777768 0 9.759437387837645 0.2405626121623432 0 6.527777777777771 6.527777777777771 0 0.2405626121623432 9.759437387837657 0 6.527777777777771 2.632312702885713 0 0.23676584940317 9.76415029362817 0 2.642500529207705 2.638888888888861 0 9.759437387837551 0.2578942833171624 0 2.638493149307809 7.638888888888879 0 9.759437387837661 0.2198410795312892 0 7.644972448280944 7.643586164605535 0 0.2185584744501665 9.735130788432256 0 7.616562702085884 0.2474069315981424 0 1.520386322198025 9.750308223627425 0 1.509505465652448 1.527777777777789 0 9.759437387837561 9.738580559635365 0 8.510861926919539 1.800858279839017 0 0.2185584744500864 8.472222222222168 0 9.759437387837686 0.2638891336615845 0 8.510861926919345 8.473934057395946 0 0.2350937807868451 0.9705103870485723 0 0.2350937807868264 9.753152113081264 0 9.030830361524643 9.759437387837655 0 4.305555555555552 4.30555555555553 0 9.759437387837625 9.744367319487608 0 5.98346506134929 5.973934057395921 0 0.2350937807868175 0.2482471571959377 0 5.978870071270716 0.2640071647305091 0 4.269090841770645 7.083333333333324 0 9.759437387837657 9.752168610367535 0 3.180855243690468 4.305555555555554 0 0.2405626121623432 3.194444444444426 0 9.759437387837592 5.972222222222212 0 9.759437387837638 3.194444444444442 0 0.2405626121623436 0.259330304708296 0 3.2274686930598 9.734719409340375 0 7.099640020054338 9.027777777777713 0 9.759437387837675 9.02777777777777 0 0.2405626121623447 0.2415524563496551 0 2.079779023269111 0.2803698011060558 0 7.095490439419026 0.2518316901181952 0 9.032051395023139 0.2405626121623439 0 0.9722222222222222 7.083333333333323 0 0.2405626121623436 9.749617910996305 0 2.11141751389196 2.083333333333353 0 9.759437387837608 9.793410790632638 0 0.9684888182023231 0.9722222222222188 0 9.75943738783749 9.748417431266377 0 9.557826216928541 9.582055531137254 0 0.214745462797982 0.2515825687335569 0 9.557826216928422 0.2333577790561898 0 0.4178437136891323 7.361111111111109 0 9.759437387837657 7.222222222222233 0 9.518874775675314 6.94444444444445 0 9.518874775675311 7.083333333333353 0 9.278312163512972 6.80555555555557 0 9.27831216351295 6.944444444444473 0 9.037749551350618 7.222222222222251 0 9.037749551350633 7.083333333333371 0 8.797186939188281 6.805555555555594 0 8.797186939188272 6.944444444444493 0 8.556624327025926 6.666666666666714 0 8.556624327025922 6.805555555555611 0 8.316061714863579 6.527777777777833 0 8.316061714863569 6.666666666666734 0 8.075499102701237 6.388888888888958 0 8.075499102701219 6.527777777777859 0 7.834936490538883 6.250000000000083 0 7.834936490538866 6.388888888888983 0 7.594373878376534 6.111111111111208 0 7.594373878376516 6.250000000000107 0 7.353811266214181 5.972222222222319 0 7.35381126621416 6.11111111111123 0 7.113248654051834 5.833333333333448 0 7.113248654051816 5.972222222222351 0 6.872686041889485 5.694444444444573 0 6.872686041889464 5.833333333333475 0 6.632123429727134 5.555555555555697 0 6.632123429727118 5.694444444444598 0 6.391560817564785 5.416666666666822 0 6.39156081756477 5.555555555555722 0 6.150998205402434 5.277777777777946 0 6.15099820540242 5.416666666666847 0 5.910435593240081 5.13888888888907 0 5.910435593240067 5.277777777777972 0 5.669872981077729 5.000000000000198 0 5.669872981077714 5.138888888889099 0 5.429310368915379 4.861111111111322 0 5.429310368915362 5.000000000000224 0 5.188747756753028 4.861111111111294 0 5.910435593240043 4.722222222222447 0 5.188747756753011 5.277777777777997 0 5.188747756753048 4.861111111111346 0 4.948185144590676 4.583333333333571 0 4.948185144590659 4.722222222222475 0 4.707622532428324 4.444444444444696 0 4.707622532428308 4.305555555555793 0 4.948185144590644 4.583333333333599 0 4.467059920265973 4.30555555555582 0 4.467059920265958 5.833333333333496 0 6.150998205402452 4.444444444444722 0 4.226497308103622 4.7222222222225 0 4.226497308103636 4.166666666666945 0 4.226497308103605 5.416666666666785 0 6.872686041889445 4.583333333333623 0 3.985934695941285 4.8611111111114 0 3.9859346959413 6.388888888888998 0 7.113248654051842 4.722222222222526 0 3.745372083778949 5.000000000000302 0 3.745372083778965 4.861111111111428 0 3.504809471616612 5.138888888889205 0 3.504809471616629 5.000000000000331 0 3.264246859454277 5.277777777778108 0 3.264246859454293 4.722222222222554 0 3.26424685945426 5.416666666666982 0 3.504809471616644 5.555555555555885 0 3.264246859454309 5.69444444444476 0 3.504809471616664 5.833333333333663 0 3.264246859454327 5.972222222222536 0 3.504809471616682 6.111111111111441 0 3.264246859454344 6.250000000000314 0 3.504809471616694 6.388888888889218 0 3.264246859454359 6.527777777778089 0 3.504809471616709 6.666666666666995 0 3.264246859454379 6.805555555555866 0 3.50480947161673 6.944444444444501 0 8.075499102701253 6.944444444444773 0 3.2642468594544 7.083333333333645 0 3.504809471616753 6.944444444444729 0 3.745372083779084 5.833333333333412 0 7.594373878376484 5.416666666667011 0 3.023684247291951 6.805555555555905 0 3.023684247292046 7.083333333333681 0 3.023684247292069 7.222222222222516 0 3.745372083779105 7.083333333333599 0 3.985934695941439 7.361111111111387 0 3.985934695941459 7.222222222222479 0 4.226497308103792 7.361111111111153 0 8.797186939188286 6.944444444444814 0 2.783121635129716 7.222222222222588 0 2.783121635129738 7.500000000000259 0 4.226497308103815 7.361111111111352 0 4.467059920266147 7.083333333333724 0 2.542559022967385 7.361111111111495 0 2.542559022967406 7.638888888889166 0 3.985934695941483 7.638888888889132 0 4.467059920266167 7.500000000000225 0 4.7076225324285 7.777777777778002 0 4.70762253242852 7.638888888889098 0 4.948185144590854 7.222222222222618 0 2.301996410805043 6.94444444444483 0 2.301996410805004 7.500000000000405 0 2.301996410805057 7.63888888888927 0 2.542559022967424 7.777777777778184 0 2.301996410805078 7.222222222222443 0 4.707622532428475 7.916666666666899 0 4.948185144590887 7.777777777777974 0 5.18874775675321 7.916666666667053 0 2.542559022967449 6.250000000000062 0 8.316061714863549 8.055555555555761 0 5.188747756753253 7.91666666666684 0 5.429310368915569 7.638888888889067 0 5.429310368915543 7.777777777777938 0 5.669872981077894 7.361111111111503 0 2.061433798642672 6.111111111111395 0 3.745372083779047 8.05555555555596 0 2.301996410805115 8.055555555555705 0 5.669872981077917 7.916666666666801 0 5.910435593240246 8.055555555555829 0 4.70762253242857 7.500000000000161 0 5.669872981077875 8.194444444444834 0 2.542559022967469 8.194444444444578 0 5.910435593240269 8.055555555555674 0 6.150998205402599 8.333333333333737 0 2.30199641080514 8.194444444444859 0 2.06143379864278 8.333333333333453 0 6.150998205402627 8.194444444444535 0 6.391560817564958 7.91666666666675 0 6.391560817564933 8.055555555555621 0 6.632123429727288 8.333333333333401 0 6.632123429727316 8.194444444444491 0 6.872686041889644 7.916666666666714 0 6.872686041889622 8.055555555555584 0 7.113248654051969 8.333333333333364 0 7.113248654051995 8.194444444444454 0 7.353811266214318 8.472222222222349 0 5.910435593240288 8.472222222222644 0 2.061433798642808 8.333333333333762 0 1.820871186480449 8.472222222222607 0 2.542559022967492 8.333333333333705 0 2.783121635129824 8.472222222222229 0 7.353811266214344 8.333333333333329 0 7.594373878376676 7.777777777777809 0 7.113248654051949 8.611111111111102 0 7.594373878376691 8.472222222222209 0 7.83493649053903 8.19444444444443 0 7.834936490539019 8.333333333333307 0 8.075499102701368 8.611111111111484 0 2.783121635129842 8.472222222222582 0 3.023684247292176 8.611111111111086 0 8.075499102701384 8.472222222222182 0 8.316061714863723 7.638888888888935 0 6.872686041889606 8.611111111111228 0 6.150998205402644 5.972222222222567 0 3.023684247291979 6.944444444444678 0 4.22649730810377 5.000000000000252 0 4.707622532428346 4.444444444444746 0 3.745372083778931 5.138888888889046 0 6.391560817564759 5.138888888889184 0 3.985934695941324 6.111111111111249 0 6.632123429727152 7.777777777778152 0 2.783121635129778 5.555555555555745 0 5.669872981077747 4.027777777778043 0 4.467059920265942 3.888888888889167 0 4.226497308103588 3.750000000000265 0 4.467059920265923 3.61111111111139 0 4.226497308103575 3.472222222222489 0 4.467059920265911 3.333333333333614 0 4.226497308103561 3.194444444444711 0 4.467059920265896 3.055555555555836 0 4.226497308103545 3.194444444444738 0 3.98593469594121 2.91666666666696 0 3.985934695941193 3.055555555555862 0 3.745372083778859 2.916666666666933 0 4.467059920265879 3.055555555555808 0 4.707622532428232 2.77777777777803 0 4.707622532428216 2.916666666666905 0 4.948185144590568 2.777777777778084 0 3.745372083778843 2.916666666666988 0 3.504809471616506 2.638888888889127 0 4.948185144590553 2.777777777778 0 5.188747756752903 2.638888888889208 0 3.504809471616491 2.777777777778112 0 3.264246859454154 2.500000000000225 0 5.188747756752888 2.638888888889099 0 5.42931036891524 2.500000000000331 0 3.26424685945414 2.638888888889236 0 3.023684247291803 2.361111111111426 0 3.504809471616481 2.361111111111345 0 4.948185144590537 2.361111111111452 0 3.023684247291791 2.500000000000359 0 2.783121635129452 2.777777777778137 0 2.783121635129467 2.638888888889261 0 2.542559022967115 2.91666666666704 0 2.542559022967131 2.361111111111485 0 2.542559022967102 2.361111111111322 0 5.429310368915222 2.500000000000197 0 5.669872981077575 2.777777777777976 0 5.66987298107759 2.638888888889075 0 5.910435593239927 2.361111111111296 0 5.910435593239911 2.500000000000173 0 6.15099820540226 2.777777777777952 0 6.150998205402278 2.638888888889049 0 6.391560817564613 2.916666666666828 0 6.391560817564629 2.777777777777924 0 6.632123429726967 3.055555555555698 0 6.632123429726983 2.916666666666794 0 6.872686041889318 2.63888888888902 0 6.872686041889302 2.777777777777894 0 7.113248654051652 3.055555555555671 0 7.113248654051668 2.916666666666773 0 7.353811266214004 3.19444444444456 0 7.353811266214021 2.638888888888993 0 7.353811266213985 2.777777777777874 0 7.594373878376341 2.500000000000096 0 7.594373878376327 2.222222222222396 0 6.150998205402244 2.777777777778164 0 2.301996410804779 3.055555555555942 0 2.301996410804795 2.638888888888971 0 7.834936490538679 2.361111111111193 0 7.834936490538665 2.222222222222316 0 7.59437387837631 2.083333333333415 0 7.834936490538646 2.916666666667068 0 2.061433798642444 3.194444444444845 0 2.06143379864246 1.944444444444545 0 7.594373878376293 3.194444444444605 0 6.391560817564643 1.805555555555639 0 7.834936490538628 1.944444444444509 0 8.075499102700981 3.194444444444817 0 2.542559022967147 3.05555555555597 0 1.820871186480108 2.777777777778193 0 1.820871186480092 3.333333333333747 0 1.820871186480123 1.666666666666768 0 7.594373878376274 1.666666666666734 0 8.075499102700965 1.805555555555604 0 8.316061714863313 3.194444444444766 0 3.504809471616519 2.916666666667096 0 1.580308574317757 2.63888888888932 0 1.58030857431774 1.52777777777783 0 8.316061714863295 1.805555555555669 0 7.353811266213938 1.527777777777897 0 7.353811266213919 1.666666666666705 0 8.556624327025645 1.944444444444481 0 8.556624327025661 1.388888888888933 0 8.556624327025627 1.388888888888991 0 7.594373878376253 2.916666666666748 0 7.834936490538691 2.777777777777846 0 8.075499102701031 3.055555555555622 0 8.075499102701038 2.916666666666719 0 8.316061714863377 3.194444444444496 0 8.316061714863388 3.055555555555591 0 8.556624327025725 3.333333333333373 0 8.556624327025743 3.472222222222272 0 8.316061714863398 3.611111111111151 0 8.556624327025753 3.750000000000045 0 8.316061714863412 3.888888888888926 0 8.556624327025766 4.027777777777821 0 8.316061714863425 4.166666666666698 0 8.556624327025775 4.305555555555601 0 8.316061714863443 4.166666666666716 0 8.075499102701086 4.444444444444476 0 8.556624327025787 4.444444444444497 0 8.075499102701102 4.305555555555613 0 7.83493649053875 4.58333333333339 0 7.834936490538756 4.444444444444509 0 7.594373878376412 4.722222222222278 0 8.075499102701109 2.638888888889181 0 3.985934695941181 3.194444444444682 0 4.948185144590584 2.083333333333519 0 5.910435593239897 1.94444444444462 0 6.150998205402235 1.805555555555741 0 5.910435593239886 1.666666666666843 0 6.150998205402225 1.527777777777964 0 5.910435593239876 1.388888888889066 0 6.150998205402215 1.666666666666862 0 5.669872981077538 1.388888888889084 0 5.669872981077526 1.527777777777984 0 5.429310368915189 3.472222222222622 0 2.061433798642475 3.611111111111523 0 1.820871186480139 3.7500000000004 0 2.06143379864249 3.8888888888893 0 1.820871186480153 4.027777777778177 0 2.061433798642505 4.166666666667078 0 1.820871186480168 4.305555555555955 0 2.06143379864252 4.444444444444855 0 1.820871186480184 4.027777777778201 0 1.580308574317816 4.583333333333732 0 2.061433798642534 4.722222222222632 0 1.820871186480197 3.888888888889277 0 2.301996410804841 4.583333333333755 0 1.580308574317846 4.861111111111533 0 1.58030857431786 5.000000000000409 0 1.82087118648021 5.138888888889309 0 1.580308574317873 5.277777777778187 0 1.820871186480219 5.416666666667086 0 1.580308574317884 5.555555555555967 0 1.820871186480231 5.694444444444863 0 1.580308574317894 5.555555555555983 0 1.339745962155545 5.83333333333376 0 1.339745962155554 4.722222222222655 0 1.339745962155511 5.972222222222641 0 1.580308574317901 6.111111111111538 0 1.339745962155558 3.472222222222649 0 1.580308574317787 4.583333333333542 0 5.429310368915338 8.611111111111139 0 7.113248654052013 3.333333333333475 0 6.632123429726996 3.47222222222238 0 6.391560817564656 3.611111111111255 0 6.632123429727008 3.750000000000155 0 6.391560817564672 3.611111111111279 0 6.150998205402318 3.888888888889034 0 6.632123429727018 6.527777777777818 0 8.797186939188252 6.66666666666674 0 7.594373878376542 8.611111111111555 0 1.820871186480474 8.472222222222676 0 1.580308574318118 8.194444444444882 0 1.580308574318091 1.250000000000054 0 8.316061714863274 8.750000000000128 0 5.910435593240301 8.333333333333794 0 1.33974596215577 8.055555555556012 0 1.339745962155761 8.611111111111597 0 1.339745962155785 2.777777777778223 0 1.339745962155404 2.500000000000445 0 1.339745962155388 2.361111111111542 0 1.580308574317724 2.222222222222668 0 1.339745962155372 2.083333333333766 0 1.580308574317708 1.944444444444891 0 1.339745962155357 1.805555555555989 0 1.580308574317692 1.666666666667114 0 1.339745962155341 1.527777777778212 0 1.580308574317676 1.388888888889337 0 1.339745962155325 1.666666666667087 0 1.820871186480028 1.38888888888931 0 1.820871186480012 1.527777777778185 0 2.061433798642363 8.75000000000038 0 2.542559022967515 1.250000000000408 0 2.061433798642348 1.388888888889283 0 2.301996410804699 1.250000000000206 0 5.429310368915175 1.388888888889108 0 5.188747756752838 1.250000000000122 0 7.353811266213892 8.749999999999961 0 8.316061714863741 8.611111111111065 0 8.55662432702607 8.750000000000355 0 3.023684247292194 8.611111111111457 0 3.264246859454524 1.805555555555589 0 8.797186939187995 2.083333333333359 0 8.797186939188006 3.472222222222241 0 8.797186939188103 4.027777777777796 0 8.797186939188117 6.250000000000419 0 1.580308574317906 6.388888888889314 0 1.339745962155568 6.111111111111521 0 1.820871186480247 4.861111111111167 0 7.834936490538761 5.000000000000052 0 8.07549910270111 4.861111111111459 0 3.023684247291924 5.138888888889287 0 2.061433798642559 8.333333333333684 0 3.264246859454512 8.472222222222555 0 3.504809471616863 8.750000000000336 0 3.504809471616873 8.611111111111434 0 3.745372083779213 4.583333333333682 0 3.023684247291907 3.888888888889053 0 6.150998205402332 3.750000000000176 0 5.910435593239983 4.166666666666741 0 7.594373878376396 8.3333333333333 0 8.556624327026039 8.055555555555532 0 8.075499102701357 8.888888888888843 0 8.55662432702608 8.749999999999936 0 8.797186939188414 1.11111111111115 0 8.556624327025606 1.250000000000038 0 8.797186939187972 8.888888888888866 0 8.075499102701404 1.805555555555719 0 6.391560817564571 7.500000000000034 0 7.113248654051938 7.361111111111161 0 6.872686041889591 8.888888888889008 0 6.150998205402658 1.111111111111507 0 2.301996410804684 1.250000000000381 0 2.542559022967033 8.888888888889207 0 3.745372083779226 8.750000000000309 0 3.985934695941559 1.111111111111307 0 5.669872981077513 1.111111111111533 0 1.820871186479997 1.111111111111213 0 7.594373878376224 2.083333333333793 0 1.099183349993021 8.19444444444491 0 1.099183349993425 7.916666666667133 0 1.099183349993418 6.250000000000439 0 1.099183349993209 6.527777777778216 0 1.099183349993228 6.666666666667091 0 1.339745962155583 6.805555555555991 0 1.099183349993248 5.69444444444488 0 1.099183349993203 1.527777777778239 0 1.099183349992989 1.250000000000462 0 1.099183349992974 1.111111111111331 0 5.188747756752822 1.250000000000231 0 4.948185144590486 6.944444444444869 0 1.3397459621556 7.083333333333768 0 1.099183349993267 7.916666666666652 0 7.834936490539011 6.666666666667037 0 2.783121635129691 1.52777777777801 0 4.9481851445905 1.388888888889132 0 4.707622532428151 1.111111111111355 0 4.707622532428136 1.250000000000256 0 4.467059920265801 1.527777777778033 0 4.467059920265816 1.388888888889158 0 4.226497308103466 1.666666666666935 0 4.226497308103482 1.52777777777806 0 3.98593469594113 1.250000000000282 0 3.985934695941115 1.388888888889183 0 3.745372083778778 1.111111111111406 0 3.745372083778765 1.250000000000308 0 3.504809471616423 1.527777777778084 0 3.504809471616441 7.361111111111288 0 5.429310368915524 7.222222222222383 0 5.669872981077857 7.083333333333511 0 5.429310368915506 6.944444444444606 0 5.669872981077838 6.805555555555734 0 5.429310368915486 7.083333333333479 0 5.910435593240192 6.805555555555703 0 5.910435593240175 3.75000000000029 0 3.985934695941232 8.472222222222536 0 3.98593469594155 8.611111111111416 0 4.226497308103901 8.888888888889195 0 4.226497308103903 8.750000000000307 0 4.467059920266249 7.50000000000003 0 9.037749551350638 1.527777777778152 0 2.542559022967052 7.361111111111425 0 3.504809471616771 5.416666666667101 0 1.099183349993198 3.611111111111174 0 8.075499102701061 6.944444444444574 0 6.150998205402527 8.611111111111237 0 5.669872981077949 8.888888888889015 0 5.669872981077946 8.750000000000147 0 5.42931036891561 3.750000000000139 0 6.872686041889358 4.027777777777916 0 6.872686041889365 4.16666666666681 0 6.632123429727026 4.305555555555692 0 6.872686041889368 1.38888888888903 0 7.113248654051562 1.111111111111255 0 7.113248654051537 7.77777777777822 0 1.33974596215571 7.777777777777769 0 8.075499102701347 7.638888888888875 0 7.834936490539012 9.02262988953623 0 4.470032054928435 0.9722222222222708 0 8.316061714863242 2.638888888889348 0 1.099183349993053 2.916666666667125 0 1.099183349993068 8.05555555555604 0 0.8586207378310667 5.555555555555996 0 0.8586207378308583 1.388888888889364 0 0.8586207378306379 0.9722222222225052 0 3.985934695941101 0.9722222222225363 0 3.504809471616405 9.027777777778116 0 3.504809471616895 9.027777777777914 0 5.429310368915599 0.9722222222222545 0 8.797186939187947 9.027777777777711 0 8.797186939188443 0.9782066921824973 0 2.546014158309321 8.333333333333842 0 0.858620737831068 7.777777777778262 0 0.8586207378310596 5.277777777778219 0 0.8586207378308515 1.111111111111587 0 0.8586207378306225 0.9722222222226846 0 1.099183349992958 1.111111111111137 0 9.037749551350306 1.944444444444464 0 9.037749551350339 2.222222222222231 0 9.037749551350352 6.805555555555964 0 1.580308574317932 1.805555555555837 0 3.985934695941146 1.944444444444712 0 4.226497308103498 5.138888888888944 0 7.834936490538768 5.277777777777833 0 8.075499102701116 5.138888888888939 0 8.316061714863455 5.000000000000059 0 7.59437387837642 5.416666666666718 0 8.316061714863466 5.277777777777822 0 8.556624327025798 5.555555555555587 0 8.556624327025816 5.416666666666702 0 8.797186939188144 5.694444444444468 0 8.797186939188162 5.555555555555579 0 9.037749551350498 5.277777777777805 0 9.037749551350476 5.833333333333353 0 9.03774955135051 1.112108522771458 0 2.783697491019751 2.22222222222264 0 1.82087118648006 8.194444444444771 0 3.504809471616844 4.722222222222585 0 2.783121635129572 4.027777777777953 0 5.910435593239994 3.888888888889076 0 5.669872981077644 3.611111111111299 0 5.669872981077633 3.750000000000199 0 5.429310368915297 4.444444444444809 0 2.783121635129556 4.305555555555904 0 3.02368424729189 4.444444444444583 0 6.632123429727029 4.583333333333471 0 6.872686041889379 2.777777777777812 0 8.556624327025705 2.916666666666681 0 8.797186939188059 7.222222222222346 0 6.150998205402548 6.666666666666793 0 6.150998205402506 6.527777777777924 0 5.910435593240152 6.805555555555661 0 6.391560817564859 1.250000000000164 0 6.872686041889208 0.9722222222223849 0 6.872686041889179 8.888030907515544 0 4.708117888205615 7.222222222222252 0 7.113248654051931 7.638888888888923 0 8.797186939188304 7.777777777777784 0 9.03774955135064 8.888888888888799 0 9.037749551350769 8.611111111111025 0 9.037749551350743 9.156767953098523 0 4.710443760479706 0.8404814502302409 0 2.78724860234377 0.8333333333338093 0 0.8586207378306072 9.166666666666805 0 5.669872981077916 9.146572228791335 0 4.241797668143565 6.666666666667123 0 0.858620737830895 2.777777777778248 0 0.8673158656824166 3.055555555556026 0 0.8600699258060148 0.855926756044515 0 2.313582824012514 0.8333333333334726 0 7.113248654051509 9.166666666666563 0 9.037749551350815 0.8333333333333686 0 9.0377495513503 9.166666666666625 0 8.556624327026118 5.416666666666677 0 9.278312163512833 5.138888888888899 0 9.278312163512817 5.000000000000031 0 9.037749551350464 4.86111111111112 0 9.278312163512792 8.610968114215812 0 4.707705091724773 7.083333333333739 0 1.580308574317954 8.750000000000098 0 6.391560817564998 9.02777777777789 0 6.391560817565014 9.166666666666794 0 6.15099820540269 5.277777777777839 0 7.594373878376428 7.361111111111122 0 7.353811266214295 5.694444444444499 0 8.316061714863485 8.055555555555909 0 3.26424685945449 8.888888888888967 0 6.632123429727347 9.166666666666753 0 6.632123429727374 2.083333333333615 0 3.985934695941162 2.222222222222493 0 4.226497308103512 3.194444444444536 0 7.834936490538703 1.805555555555765 0 5.429310368915197 3.611111111111366 0 4.707622532428263 1.94444444444474 0 3.74537208377881 2.222222222222253 0 8.55662432702567 5.833333333333788 0 0.8586207378308399 3.194444444444902 0 1.099424881322297 3.333333333333804 0 0.8589025243814958 3.472222222222679 0 1.099270569639759 3.611111111111581 0 0.8586822388636643 5.555555555555862 0 3.745372083779003 1.666666666667141 0 0.8586207378306533 6.944444444444635 0 5.188747756753152 6.666666666666858 0 5.188747756753136 6.805555555555756 0 4.948185144590799 6.527777777777979 0 4.948185144590789 6.388888888889086 0 5.188747756753123 6.250000000000203 0 4.948185144590778 6.388888888889098 0 4.707622532428441 6.111111111111321 0 4.707622532428433 6.25000000000021 0 4.467059920266093 5.972222222222447 0 4.467059920266076 5.972222222222429 0 4.948185144590774 3.750000000000456 0 1.09920813677304 3.888888888889358 0 0.8586351191329161 4.027777777778232 0 1.099189878006806 4.166666666667133 0 0.8586242227167642 2.493423813997238 0 0.8725618164168913 4.166666666667031 0 2.783121635129538 4.027777777778129 0 3.023684247291872 4.166666666666999 0 3.264246859454225 3.888888888889222 0 3.264246859454206 3.750000000000349 0 3.023684247291858 4.027777777778093 0 3.504809471616558 0.972222222222479 0 4.467059920265787 0.8333333333335784 0 4.707622532428124 1.80555555555596 0 2.06143379864238 1.388888888889209 0 3.264246859454086 1.666666666666984 0 3.264246859454103 4.027777777777975 0 5.429310368915306 2.083333333333587 0 4.467059920265845 7.916666666666991 0 3.504809471616817 5.138888888888954 0 7.353811266214085 8.055555555555863 0 3.745372083779174 3.472222222222422 0 5.429310368915282 9.027777777777825 0 6.872686041889701 8.333333333333634 0 4.226497308103886 1.666666666666696 0 9.037749551350338 1.805555555555574 0 9.278312163512679 1.5277777777778 0 9.278312163512679 3.750000000000318 0 3.504809471616539 5.000000000000361 0 2.783121635129589 4.861111111111486 0 2.542559022967236 5.138888888889259 0 2.542559022967251 7.083333333333387 0 6.872686041889573 3.333333333333522 0 5.66987298107762 8.750000000000423 0 2.061433798642829 8.888888888889337 0 1.820871186480496 9.027777777778196 0 2.06143379864286 9.166666666667112 0 1.820871186480536 9.027777777778251 0 1.580308574318162 4.861111111111181 0 7.353811266214073 7.361111111111462 0 3.023684247292092 4.166666666666826 0 6.150998205402339 4.305555555555726 0 5.910435593239997 3.888888888889099 0 5.18874775675296 7.500000000000069 0 6.632123429727255 1.527777777777932 0 6.872686041889237 5.000000000000045 0 8.556624327025798 4.444444444444606 0 6.150998205402347 6.388888888889296 0 1.820871186480254 6.2500000000004 0 2.061433798642594 5.972222222222626 0 2.061433798642586 6.111111111111501 0 2.301996410804932 5.833333333333725 0 2.301996410804918 6.388888888889277 0 2.301996410804945 6.250000000000378 0 2.542559022967286 3.888888888889017 0 7.113248654051702 6.388888888889021 0 6.150998205402488 6.250000000000154 0 5.910435593240136 4.72222222222225 0 9.037749551350441 4.583333333333343 0 9.278312163512767 1.111111111111294 0 6.632123429726857 0.8333333333335189 0 6.632123429726823 9.166666666666984 0 3.745372083779245 5.972222222222248 0 8.797186939188187 6.111111111111134 0 9.03774955135054 7.500000000000012 0 8.075499102701331 6.944444444444482 0 7.113248654051906 5.000000000000098 0 7.11324865405175 0.9722222222224299 0 6.391560817564496 6.805555555555616 0 6.872686041889548 7.916666666666666 0 8.316061714863681 8.749999999999908 0 9.278312163513073 8.472222222222129 0 9.278312163513052 8.333333333333258 0 9.0377495513507 8.194444444444345 0 9.278312163513014 7.361111111111111 0 7.83493649053899 0.6944444444444848 0 8.797186939187952 9.297607191551771 0 3.509398461714318 9.165341939333011 0 3.265011691137465 9.305555555555671 0 5.42931036891555 0.6993768720887245 0 6.391115496118539 0.8341554046075667 0 6.150923985161155 0.699401682563262 0 1.101171310179307 0.834159539686842 0 1.340077288853022 9.298511638372542 0 6.876752849371528 9.165492680469502 0 7.113926455299027 7.92324285267031 0 0.6218548884278776 5.423242852670281 0 0.6218548884276744 1.250000000000488 0 0.626753253519994 4.027777777778262 0 0.6180581256684416 3.472222222222707 0 0.618058125668411 2.911969390950479 0 0.6412699200267066 0.6996631868912127 0 4.464046877909449 0.5151080361999166 0 4.716182952214325 0.7062782030755158 0 4.950654976816637 0.9722222222222383 0 9.278312163512645 0.6944444444444697 0 9.278312163512638 4.722222222222205 0 9.518874775675176 5.972222222222226 0 9.278312163512878 6.250000000000004 0 9.278312163512886 6.944444444444832 0 1.820871186480287 6.527777777777988 0 4.467059920266097 6.388888888889101 0 4.226497308103753 7.777777777777773 0 7.594373878376648 0.973579810315327 0 3.024468051142503 0.7014688771510978 0 3.027739805405576 1.527777777778111 0 3.023684247291747 1.805555555555886 0 3.023684247291767 7.77777777777813 0 3.264246859454464 1.944444444444763 0 3.264246859454119 3.61111111111124 0 7.113248654051695 3.750000000000131 0 7.353811266214048 4.444444444444555 0 7.113248654051721 5.416666666666736 0 7.353811266214102 2.638888888889152 0 4.46705992026587 1.250000000000082 0 7.834936490538583 0.9722222222223064 0 7.834936490538555 0.8333333333334356 0 7.594373878376195 0.7010084193536814 0 7.831146777857772 4.444444444444832 0 2.30199641080487 4.444444444444878 0 1.339745962155496 4.583333333333778 0 1.099183349993163 3.194444444444646 0 5.429310368915268 5.138888888889324 0 1.099183349993189 5.000000000000443 0 0.8586207378308428 7.638888888888886 0 9.278312163512982 6.388888888889053 0 5.669872981077799 6.111111111111288 0 5.669872981077788 8.749833170288742 0 4.948281463769799 8.472208780487883 0 4.948192905180074 2.638888888888904 0 8.797186939188034 2.777777777777771 0 9.037749551350393 3.055555555555549 0 9.037749551350416 2.91666666666663 0 9.278312163512757 3.194444444444407 0 9.27831216351278 2.638888888888853 0 9.27831216351273 4.444444444444459 0 9.037749551350434 4.305555555555555 0 9.278312163512773 4.722222222222372 0 6.632123429727049 8.472222222222399 0 5.429310368915608 9.165192998517403 0 5.189598579456026 7.500000000000061 0 8.556624327025949 7.916666666666669 0 8.797186939188338 9.297398040976628 0 2.056724055404608 9.165307080903826 0 2.30121145359884 9.298088353607776 0 1.584619765373119 9.16542213300912 0 1.340464493998319 9.479836633220913 0 2.275409762585737 9.305555555555889 0 2.542559022967587 9.437238865959177 0 5.665712838399648 7.646561105893051 0 0.6311234914559642 7.501278702834433 0 0.8607982987955778 7.361872243750861 0 0.6281663431491753 4.30555555555604 0 0.6180581256684601 9.481561668557946 0 1.357294272396601 9.306577099180132 0 1.104215783860305 9.027740612772629 0 1.100141844278361 9.166830729770258 0 0.8596192258564312 8.888899679543954 0 0.858787147891517 9.02777777777832 0 0.6180581256687968 8.750000000000545 0 0.6180581256687704 9.305555555556095 0 0.6180581256688128 0.5166141851451949 0 1.367787923797265 0.7061129486041291 0 1.595053832020939 0.5165499837608176 0 6.129081052573199 0.7057703436487863 0 5.900656067964505 0.5150388084801539 0 0.844454786715929 0.6975227464259142 0 0.619695710070063 0.5313252705612834 0 2.781260941259482 0.5162101823554326 0 6.645033439533802 9.577970496388552 0 5.421238137486471 9.483488176282037 0 6.645678029380941 9.480778039434274 0 3.289517443309783 9.305555555555951 0 3.02368424729224 0.5889475180152581 0 7.569729209724409 9.438113741217711 0 7.115838123989048 9.304304773984875 0 7.35435581141174 9.027672579953588 0 7.353864297349167 9.166440670100833 0 7.594473474432086 9.578577337825298 0 7.356980274504808 9.444444444444764 0 3.745372083779279 9.730614217603337 0 5.680206618565969 0.8333333333333349 0 9.518874775675005 0.5534599700517315 0 9.526677430861394 0.4154916761634632 0 9.289695385538581 1.111111111111119 0 9.51887477567508 1.666666666666686 0 9.518874775675103 1.94444444444447 0 9.518874775675167 3.055555555555505 0 9.518874775675162 3.333333333333298 0 9.518874775675201 3.47222222222219 0 9.27831216351283 3.611111111111068 0 9.518874775675227 3.749999999999969 0 9.278312163512869 9.297149047322719 0 5.905582093449009 5.277777777777776 0 9.518874775675208 5.555555555555555 0 9.518874775675252 8.333307260228597 0 4.707637585742816 6.111111111111102 0 9.518874775675268 7.22222222222261 0 1.820871186480309 7.361111111111514 0 1.580308574317978 6.388888888888886 0 9.518874775675275 3.888888888888844 0 9.518874775675259 9.43241813609853 0 1.817853603779118 9.306503676221176 0 8.797186939188492 9.4444444444444 0 8.556624327026139 9.300569668769107 0 8.318940317942026 9.451615762869874 0 9.036596353046487 9.306750775292979 0 9.278119963795771 9.586384116479572 0 9.287967204421095 9.447247697095442 0 9.528254571060129 9.588016327870134 0 8.785160543066398 8.611112909554056 0 0.858648472841162 8.472222222222781 0 0.6180581256687118 8.195540475445481 0 0.6273860473135309 8.069986630396206 0 0.4142261978463993 6.666666666666885 0 4.226497308103758 6.527777777777997 0 3.98593469594141 9.027556989889138 0 3.023811719239365 8.888852090907747 0 2.783142880454392 9.026376693072411 0 5.909626676608419 9.481002086680064 0 6.136567114832246 5.555555555555618 0 8.07549910270113 5.833333333333397 0 8.075499102701166 6.527777777778162 0 2.542559022967317 8.472194043889084 0 4.467076189034643 3.611111111111104 0 9.037749551350476 3.888888888888888 0 9.037749551350476 4.027777777777755 0 9.278312163512856 4.16666666666662 0 9.518874775675243 4.444444444444427 0 9.518874775675208 4.30555555555565 0 7.353811266214054 0.6944444444444061 0 9.759437387837314 5.555555555555615 0 7.594373878376448 7.500000000000392 0 1.820871186480322 7.638888888889292 0 2.061433798642697 7.777777777778176 0 1.820871186480349 7.500000000000001 0 7.594373878376651 7.222222222222218 0 7.594373878376652 7.083333333333348 0 7.353811266214273 6.666666666666665 0 9.518874775675297 3.472222222222347 0 7.353811266214035 3.611111111111231 0 7.594373878376386 6.805555555555776 0 4.467059920266107 9.026946796646673 0 8.316541482043466 6.805555555555784 0 3.985934695941419 9.165697188680394 0 8.076058831077747 9.484009240739065 0 8.069511185493953 8.194444444444756 0 3.98593469594153 8.055555555555847 0 4.226497308103864 6.666666666667056 0 2.301996410804972 3.33333333333345 0 7.11324865405168 6.388888888889348 0 0.8586207378308678 6.527777777778259 0 0.618058125668538 6.250000000000484 0 0.6180581256685076 6.805555555556036 0 0.6180581256685688 6.111111111111567 0 0.8586207378308364 5.97222222222271 0 0.6180581256684655 5.695540475445427 0 0.6273860473133356 5.569986630396194 0 0.414226197846265 2.083333333333668 0 3.02368424729178 1.944444444444793 0 2.783121635129429 1.388888888888898 0 9.518874775675121 2.222222222222521 0 3.745372083778824 4.99999999999999 0 9.518874775675181 4.861111111111084 0 9.75943738783756 0.8344273291515909 0 8.074867483920759 0.5162339886830614 0 8.068388376505689 0.6944444444444838 0 8.316061714863213 7.222222222222276 0 8.556624327025947 7.638888888888911 0 7.353811266214292 8.75000000000048 0 1.580308574318128 7.638888888889221 0 3.504809471616796 6.388888888888941 0 8.556624327025895 2.361111111111367 0 4.467059920265863 7.083333333333721 0 2.061433798642658 9.305555555555726 0 6.391560817565009 8.749999999999975 0 7.834936490539048 3.194444444444463 0 8.79718693918808 6.527777777777793 0 9.278312163512933 7.916666666667034 0 3.023684247292133 8.611111111111185 0 6.632123429727327 8.33333333333322 0 9.518874775675368 8.055555555555477 0 9.518874775675341 0.6944444444445962 0 6.872686041889149 0.5714166418651172 0 7.109514581686987 8.194435402538316 0 4.467065140613327 9.425918517103124 0 0.8536658802299064 9.566825936273085 0 0.6371797325232651 5.000000000000172 0 6.150998205402399 4.583333333333504 0 5.910435593240008 4.58333333333338 0 8.316061714863451 4.722222222222266 0 8.556624327025787 9.305555555555561 0 7.834936490539079 7.083333333333436 0 6.39156081756488 6.527777777778127 0 3.023684247292021 6.388888888889262 0 2.783121635129655 6.111111111111473 0 2.783121635129632 7.361111111111132 0 9.278312163512984 7.500000000000297 0 3.745372083779127 7.916665159682528 0 4.467060790324048 6.527777777777893 0 6.391560817564839 2.500000000000115 0 7.113248654051629 2.361111111111246 0 6.872686041889276 2.22222222222234 0 7.113248654051611 2.083333333333469 0 6.872686041889258 2.22222222222237 0 6.632123429726929 1.944444444444567 0 7.113248654051599 2.083333333333643 0 3.504809471616473 7.777777777777843 0 6.632123429727269 7.638888888888975 0 6.391560817564919 7.777777777777883 0 6.150998205402582 0.8333333333333681 0 8.556624327025586 0.5555555555555823 0 8.556624327025595 0.4177539872853245 0 8.78544318970922 8.472222222222284 0 6.872686041889661 7.361111111111316 0 4.948185144590833 6.111111111111185 0 8.075499102701198 4.861111111111381 0 4.467059920265991 5.138888888889158 0 4.467059920266017 5.277777777778027 0 4.707622532428377 5.416666666666935 0 4.467059920266041 5.555555555555793 0 4.707622532428397 5.277777777778063 0 4.226497308103684 5.555555555555844 0 4.226497308103708 5.416666666666975 0 3.985934695941353 5.694444444444731 0 3.985934695941373 7.500000000000345 0 3.264246859454443 8.472222521963118 0 1.099187972495114 0.8347303368001764 0 3.265053419781494 0.5555555555559002 0 3.264246859454027 8.472222222222314 0 6.391560817564983 3.888888888889189 0 3.745372083778891 3.611111111111414 0 3.745372083778877 4.027777777778066 0 3.985934695941249 1.527777777777861 0 7.834936490538615 7.222222222222649 0 1.339745962155632 7.500000000000433 0 1.339745962155662 6.666666666666877 0 4.707622532428447 6.94444444444466 0 4.70762253242846 0.2248432125792565 0 7.381588371894474 7.36151053931839 0 0.2298794617771251 3.888888888888942 0 8.07549910270107 2.500000000000387 0 2.301996410804764 2.22222222222261 0 2.30199641080475 2.083333333333706 0 2.542559022967088 2.916666666667014 0 3.023684247291818 3.055555555555737 0 6.150998205402293 2.916666666666858 0 5.910435593239942 7.083333333333536 0 4.948185144590814 5.972222222222598 0 2.54255902296727 5.694444444444816 0 2.542559022967253 5.555555555555943 0 2.301996410804914 5.833333333333692 0 2.783121635129615 5.555555555555911 0 2.783121635129609 5.694444444444438 0 9.759437387837643 5.972222222222279 0 8.316061714863526 5.972222222222367 0 6.391560817564804 3.611111111111552 0 1.339764629893215 3.472222222222403 0 5.910435593239968 3.333333333333443 0 7.59437387837637 3.333333333333588 0 4.707622532428248 3.472222222222456 0 4.9481851445906 5.146561105892953 0 0.6311234914557191 4.861763510516552 0 0.627981176400251 4.305555555555872 0 3.504809471616577 0.2371228594963523 0 5.695552419285853 2.361111111111216 0 7.353811266213971 5.000000000000387 0 2.3019964108049 5.27777777777816 0 2.301996410804906 5.416666666666661 0 9.759437387837615 6.666666666666759 0 6.632123429727185 3.611111111111499 0 2.301996410804826 3.750000000000377 0 2.542559022967176 3.472222222222597 0 2.54255902296716 5.694444444444787 0 3.023684247291964 2.222222222222447 0 5.188747756752871 2.083333333333568 0 4.948185144590521 1.94444444444467 0 5.188747756752857 1.805555555555789 0 4.948185144590511 0.8333333333336307 0 3.745372083778748 0.6944444444447277 0 3.985934695941086 0.5555555555558525 0 3.745372083778733 0.4169866041135397 0 3.993367979360329 0.4143601209001226 0 3.493745035236073 7.222222222222413 0 5.188747756753171 0.555555555555826 0 4.226497308103421 2.22222222222242 0 5.66987298107756 5.972222222222662 0 1.0991833499932 8.888631303018734 0 3.264395576726219 1.666666666666961 0 3.745372083778793 9.759437387837655 0 4.027777777777777 9.542303115462612 0 4.167507757176843 9.536401914421313 0 4.467510437376479 4.027777777777779 0 0.2405626121623483 5.277777777778085 0 3.745372083778986 2.63888888888929 0 2.061433798642428 1.250000000000185 0 5.910435593239862 3.194045016237644 0 0.6289911596567126 4.166666666667055 0 2.301996410804856 4.861111111111509 0 2.061433798642549 4.027777777777755 0 9.759437387837631 3.055555555555999 0 1.339786217376956 2.500000000000036 0 8.556624327025681 1.944444444444833 0 2.301996410804735 9.759437387837657 0 6.249999999999995 7.500000000000192 0 5.188747756753188 0.2400208594510502 0 4.86010456610979 9.756792841377298 0 2.37886997830342 9.748325988433077 0 3.448849496312807 9.715037519746323 0 1.812748393470789 1.805555555555567 0 9.759437387837572 2.222222222222312 0 9.518874775675298 9.442250505990708 0 5.179461531714844 9.562388246226083 0 4.92740633599551 8.749999999999996 0 0.2405626121623523 6.250000000000348 0 3.023684247291998 3.472222222222515 0 3.985934695941222 0.2405626121623437 0 2.916666666666663 0.4827591755961045 0 2.483624717649957 0.2448876635262988 0 2.355924891392301 0.4646028498830426 0 2.210333657330987 0.4546258182232162 0 1.936590993805914 3.750000000000425 0 1.580311685607429 2.908994449662962 0 0.2274972463750577 4.166666666666874 0 5.188747756752969 4.027777777778004 0 4.948185144590624 4.305555555555753 0 5.429310368915313 9.762085752172815 0 1.243619008019341 4.8615105393183 0 0.2298794617770423 4.305555555555844 0 3.985934695941269 4.58333333333365 0 3.504809471616596 2.222222222222283 0 8.075499102701006 2.500000000000065 0 8.075499102701015 1.250000000000003 0 9.759437387837574 3.472222222222204 0 9.759437387837613 6.527777777777866 0 7.353811266214192 1.527777777777945 0 6.391560817564561 0.2405626121623416 0 8.194444444444434 4.722222222222389 0 6.150998205402368 4.027777777777926 0 6.391560817564676 8.749999999999954 0 9.759437387837684 1.66666666666702 0 2.783121635129407 2.916666666666637 0 9.759437387837556 2.777777777777743 0 9.518874775675112 3.055555555555891 0 3.264246859454168 3.194444444444791 0 3.023684247291833 3.33333333333367 0 3.264246859454179 3.47222222222257 0 3.023684247291845 2.500000000000304 0 3.745372083778833 2.3611111111114 0 3.985934695941172 6.11111111111134 0 4.226497308103747 9.764147686959348 0 2.912928951486624 9.486131487267118 0 2.781367293272486 1.250000000000435 0 1.580308574317661 1.521201591775029 0 0.6233040764027959 1.797883338552183 0 0.6313650227848042 1.374640485882265 0 0.4143622635433111 1.943165741610942 0 0.8608385540167506 2.075265327357447 0 0.6416546404976216 2.212992220417198 0 0.8690434021901523 2.358476746476781 0 1.103243973817313 0.2405626121623438 0 1.25 2.360015080110581 0 0.2312346905174905 2.485568925159804 0 0.4443945399845349 2.082643653962253 0 0.2244533643198925 6.805555555555551 0 9.759437387837652 2.222222222222547 0 3.26424685945413 3.333333333333719 0 2.301996410804811 0.2399193465026356 0 0.6964941945119546 0.7059807042926806 0 0.2210687734858305 3.472222222222218 0 0.2405626121623451 2.500000000000416 0 1.820871186480076 2.361111111111513 0 2.061433798642412 6.249999999999998 0 0.2405626121623486 0.9745446193360112 0 5.427969532316466 7.916666666667081 0 2.061433798642749 1.944444444444643 0 5.669872981077546 3.750000000000484 0 0.6180581256684291 2.499999999999998 0 9.037749551350371 0.239102812238416 0 5.416851329140229 0.4573484735256459 0 5.559178278543709 0.2405626121623489 0 6.249999999999997 0.9723557734331647 0 0.6230177924205343 6.249999999999991 0 9.759437387837636 0.9780540119641874 0 2.063559185736941 0.8501294125231003 0 1.818701607552266 6.805555555555944 0 2.542559022967353 2.222222222222577 0 2.78312163512944 1.80534243841702 0 1.099552986024019 6.52777777777817 0 2.061433798642608 0.2387813660830613 0 7.925556136169726 4.583350662406621 0 0.2356031828792416 3.055555555555915 0 2.783121635129482 3.194444444444873 0 1.580315283521361 3.333333333333775 0 1.339811692678563 9.787257712329392 0 4.589414711037866 2.083333333333492 0 6.391560817564579 8.74999595397246 0 1.099376226969621 3.888888888889328 0 1.33975481112563 1.111293443747544 0 8.075393832904226 1.80555555555581 0 4.467059920265829 1.944444444444863 0 1.820871186480044 5.694444444444619 0 5.910435593240099 0.8342031237413551 0 4.225995134377382 9.754924349345892 0 6.799360376004519 9.755378170440196 0 7.919767842834763 8.055555555555552 0 7.594373878376656 1.111248812170403 0 1.339801183271598 6.805555555555609 0 7.83493649053891 4.166666666666916 0 4.70762253242829 7.222222222222554 0 3.264246859454421 0.9771269706827402 0 1.582468945415914 1.805555555555861 0 3.504809471616456 6.805555555555542 0 0.2405626121623387 2.083333333333544 0 5.429310368915208 0.2493454608981729 0 6.796083275770266 0.2405626121623464 0 4.583333333333331 3.333333333333695 0 2.783121635129496 3.472222222222352 0 6.872686041889347 4.305555555555978 0 1.580308574317831 6.666666666666831 0 5.669872981077818 6.111111111111312 0 5.188747756753118 5.833333333333532 0 5.188747756753103 0.6942928540613696 0 3.50309982560758 1.111256076179339 0 4.226413612482441 5.000000000000281 0 4.226497308103658 5.833333333333628 0 3.745372083779033 0.4539576619230848 0 5.279895886801656 4.027777777778152 0 2.542559022967191 5.277777777778132 0 2.7831216351296 9.759437387837668 0 8.194444444444422 5.972222222222311 0 7.834936490538835 7.2222222222223 0 6.632123429727239 2.083333333333738 0 2.061433798642398 5.277777777778207 0 1.339745962155536 4.444444444444777 0 3.264246859454243 3.333333333333321 0 9.037749551350446 6.250000000000115 0 6.872686041889494 7.361111111111253 0 5.910435593240212 1.666666666666887 0 5.188747756752848 5.277777777777917 0 6.632123429727103 5.000000000000151 0 6.632123429727077 5.13888888888901 0 6.87268604188943 3.055555555555655 0 7.594373878376354 4.722222222222286 0 7.594373878376409 4.58333333333371 0 2.542559022967221 4.305555555555934 0 2.542559022967205 4.722222222222609 0 2.301996410804886 5.416666666666869 0 5.4293103689154 5.138888888889233 0 3.023684247291939 2.777777777778058 0 4.22649730810353 1.66666666666691 0 4.707622532428164 1.527777777777819 0 8.797186939187988 5.000000000000428 0 1.339745962155524 4.861111111111159 0 8.316061714863451 4.166666666666968 0 3.745372083778912 1.388888888888914 0 9.037749551350322 7.777777526613978 0 4.226497453113479 7.777777777778075 0 3.74537208377915 4.166666666667103 0 1.339748524986121 3.194444444444573 0 6.872686041889331 3.055555555555748 0 5.669872981077605 0.7110384511444057 0 7.34424029863691 0.9749878900056507 0 7.352216104951044 5.69444444444466 0 4.94818514459075 9.305477943663202 0 0.2327001935409526 4.166666666666853 0 5.669872981077652 2.916666666666873 0 5.429310368915253 1.666666666667058 0 2.301996410804716 8.333333333333652 0 3.745372083779195 0.9741945153275955 0 4.948596783294834 1.80555555555593 0 2.542559022967071 5.833333333333748 0 1.82087118648024 6.944444444444525 0 6.632123429727213 7.916666624806281 0 3.985934720109781 4.305555555555705 0 6.391560817564685 5.694444444444451 0 9.278312163512876 3.055555555555775 0 5.188747756752918 4.444444444444671 0 5.188747756752991 2.500000000000246 0 4.707622532428203 3.333333333333551 0 5.188747756752933 7.500000000000367 0 2.783121635129757 4.444444444444905 0 0.8586213186451437 5.416666666666721 0 7.834936490538778 3.888888888889252 0 2.783121635129524 0.8514947710468104 0 5.180070978902982 4.305555555556004 0 1.099185542750582 3.611111111111474 0 2.783121635129509 3.333333333333638 0 3.745372083778876 3.611111111111447 0 3.26424685945419 7.083333333333564 0 4.467059920266125 3.750000000000018 0 8.797186939188112 6.527777777778191 0 1.580308574317916 7.08333333333338 0 8.316061714863608 3.611111111111326 0 5.188747756752948 6.666666666666696 0 9.037749551350601 7.638888888889248 0 3.023684247292111 8.055555555555959 0 1.820871186480405 6.944444444444909 0 0.8586207378309305 7.08336635484563 0 0.6229926116596299 6.250000000000239 0 3.985934695941406 4.86111111111155 0 1.099183349993177 2.500000000000275 0 4.22649730810352 8.194437858638077 0 4.948188946908157 8.611111111111512 0 2.30199641080516 2.36111111111113 0 8.797186939188016 3.333333333333403 0 8.075499102701043 8.194444444444422 0 8.316061714863695 2.08333333333338 0 8.316061714863327 1.388919277661684 0 8.075481557734825 5.833333333333557 0 4.707622532428411 2.638888888888938 0 8.316061714863361 3.19444444444463 0 5.910435593239958 8.888675691552017 0 7.113370459448985 3.888888888889138 0 4.707622532428274 4.027777777777846 0 7.834936490538734 1.944444444444687 0 4.707622532428175 8.749964467110569 0 6.872706342789172 2.500000000000149 0 6.632123429726949 5.833333333333329 0 9.518874775675258 6.527777777777961 0 5.429310368915468 5.694444444444845 0 2.061433798642574 5.416666666667066 0 2.061433798642567 5.138888888889123 0 4.948185144590699 6.666666666667064 0 1.820871186480272 5.13888888888893 0 8.797186939188133 7.638888888889031 0 5.910435593240226 4.722330955456838 0 0.8602746764218452 2.222222222222463 0 4.707622532428189 3.333333333333507 0 6.150998205402301 2.083333333333442 0 7.353811266213953 4.166666666666785 0 7.113248654051707 1.389055124165911 0 2.783217611111117 4.58333333333349 0 6.391560817564701 3.472222222222542 0 3.50480947161653 1.111111111111441 0 3.264246859454051 6.111111111111258 0 6.150998205402474 5.972222222222388 0 5.910435593240117 2.361111111111271 0 6.391560817564592 6.250000000000192 0 5.429310368915455 2.361111111111118 0 9.278312163512723 6.111111111111191 0 8.556624327025862 6.250000000000044 0 8.797186939188219 1.250153136238766 0 3.023772660540194 1.666666666666798 0 7.113248654051581 1.805555555555696 0 6.872686041889248 4.722222222222413 0 5.669872981077686 2.361111111111159 0 8.316061714863343 6.388888888889177 0 3.745372083779042 3.750000000000231 0 4.948185144590613 1.944444444444591 0 6.632123429726914 5.694444444444533 0 7.35381126621413 5.833333333333515 0 5.669872981077763 9.027578532019078 0 7.835046377944344 9.024428704798812 0 3.98848475594818 8.888662291262076 0 2.301865584604124 8.055555555555935 0 2.783121635129798 2.083333333333361 0 9.278312163512759 8.888779556857784 0 1.339904967521745 6.666666666666939 0 3.745372083779066 4.444444444444631 0 5.669872981077665 7.361111111111208 0 6.391560817564901 2.36111111111112 0 9.759437387837561 1.388888888889058 0 6.632123429726886 5.972222222222411 0 5.429310368915442 1.250000000000018 0 9.278312163512691 5.416666666667037 0 2.542559022967255 8.749946934139821 0 7.353840405636317 4.583366354845616 0 0.6230563590849337 5.833333333333378 0 8.556624327025839 7.916666666666679 0 7.353811266214305 4.583333333333317 0 9.759437387837616 4.583333333333419 0 7.353811266214064 5.416666666666892 0 4.948185144590724 8.472222222222168 0 8.797186939188384 6.805555555555942 0 2.061433798642633 4.861111111111275 0 6.391560817564725 1.666666666666823 0 6.632123429726903 5.694444444444511 0 7.834936490538807 8.194444444444807 0 3.023684247292155 7.500000000000115 0 6.150998205402564 3.472222222222317 0 7.834936490538716 7.499999999999991 0 9.518874775675327 4.861111111111144 0 8.797186939188119 1.250000000000186 0 6.391560817564533 5.694444444444632 0 5.429310368915426 8.333333333333476 0 5.669872981077939 9.027507280882821 0 2.542409933287059 6.388888888888924 0 9.037749551350579 9.319275535147673 0 4.018552631166973 6.388888888889 0 6.632123429727166 4.305555555555577 0 8.797186939188109 8.888791637887399 0 7.594422487379608 9.027976981067248 0 9.278280130226854 8.194444444444606 0 5.429310368915603 0.5512165959648843 0 9.036739770720304 3.750000000000083 0 7.834936490538726 4.166666666666671 0 9.037749551350462 5.277777777777874 0 7.113248654051763 3.888888888888986 0 7.594373878376381 6.25000000000013 0 6.391560817564825 4.722222222222329 0 7.11324865405174 4.027777777777883 0 7.353811266214044 5.555555555555763 0 5.188747756753075 7.7777777777778 0 8.556624327025999 7.639102006028342 0 1.099546276820795 7.638888888889306 0 1.580308574318011 1.111248122990312 0 6.150985835362013 5.694444444444692 0 4.467059920266047 5.555555555555657 0 7.113248654051786 0.974269719281954 0 5.908791240647087 9.173526493343108 0 2.782829182752188 7.222567698386861 0 0.8614907819036538 4.583333333333361 0 8.797186939188112 7.361417327134415 0 1.100085105304098 0.8499389291962223 0 5.673140772288441 5.833333333333589 0 4.226497308103729 6.66666666666675 0 7.113248654051874 9.444444444444384 0 7.594373878376749 7.916666666666622 0 9.759437387837677 4.861111111111238 0 6.872686041889403 6.527777777777871 0 6.872686041889509 5.972222222222486 0 3.985934695941389 8.055555555555546 0 8.556624327026018 8.055555555555516 0 9.037749551350664 7.916666666667092 0 1.580308574318054 6.805555555555605 0 7.353811266214227 8.194444444444418 0 8.797186939188361 7.638888888888921 0 8.316061714863659 8.611081065870295 0 5.188765103381296 7.08333333333335 0 7.834936490538944 7.91666666666662 0 9.278312163513 7.222222222222258 0 8.075499102701297 7.361111111111162 0 8.316061714863642 6.944444444444478 0 7.59437387837659 8.194444444444377 0 9.75943738783768 8.333324987869837 0 5.188752575008998 9.026487738802082 0 4.948754183823571 8.611111111111024 0 9.518874775675368 7.777777777777747 0 9.518874775675332 8.888922089437052 0 9.518869436794335 2.499999999999989 0 9.518874775675044 8.888637138712399 0 5.188878158772209 9.167371812704298 0 9.520399812925419 9.303870006000071 0 9.762565608254247 0.2329165327257747 0 1.803221385050987 9.297019119250789 0 4.947683666924116 0.6952286794362309 0 2.068392637212912 9.573502838894399 0 9.770829741943967 0.4342056280490812 0 0.2610179797418334 0.4248642659001168 0 9.771680725662614 0.7042381777732419 0 5.422190519672732 9.752702527729628 0 0.4262870548698547 0.4565442699389162 0 1.670770715888829 0.452802163295146 0 5.833333333333321 0.4505568793171259 0 0.5555555555555552 0.4568473391377572 0 5.007561117835489 9.549331404283334 0 8.331671653247536 0.4485486573967944 0 8.332277217292473 0.4443824855432793 0 1.109078528188577 9.568196384633627 0 1.056369445320404 0.4436835325131812 0 6.388683649111584 9.556628304161567 0 6.389908788190532 9.274668226104719 0 4.484892728239395 9.409252056154433 0 4.712263570755434 0.4498013281769891 0 4.449723179179257 0.4576485240277843 0 3.04347659316911 9.553806643019655 0 3.040333259043035 9.796186726554375 0 4.859598690557704 0.7269146294709714 0 2.555889158802762 9.551285283228701 0 2.522570525351124 0.441113851401289 0 7.756978978035786 9.544903639922294 0 7.807030419866085 7.783340570038709 0 0.4172442110247441 5.283340570038593 0 0.4172442110245372 2.772214985517314 0 0.4415778029138694 1.247339960303371 0 0.21125236166645 8.19713492944693 0 0.2112296840502817 5.697134929446907 0 0.2112296840502231 2.354726899673881 0 0.6544729581804175 1.661134319711786 0 0.4175486751914219 9.807812971179793 0 0.6944444444444445 9.541951462911712 0 6.907453879760074 0.462357306133875 0 6.903761555659847 9.53807430741058 0 5.874306745319233 9.535482780327598 0 1.616404300134415 9.446547360170985 0 0.4263801563860403 9.166754533867616 0 0.4288421338418836 8.88890353342266 0 0.429232329736652 7.503182140971553 0 0.4257137251288142 8.611111111111718 0 0.4293103689157645 7.22295150944403 0 0.4294375204653934 6.94444444444442 0 0.4293103689152725 6.666666666666903 0 0.4293103689154469 5.003164018765684 0 0.4256828640038125 6.388888888889086 0 0.4293103689154019 4.72293325504962 0 0.4285855688434793 6.111111111111111 0 0.4293103689152267 4.444571341680101 0 0.4291960362590058 4.166687816206103 0 0.4292913134726344 3.888892413812288 0 0.4293071930082324 3.611111698598503 0 0.4293098395974912 3.333333333333327 0 0.4293103689151862 3.052500270024361 0 0.4348681850083126 1.940001190274152 0 0.4270891057430948 0.8363851856912602 0 0.4285290318335272 8.333333333333901 0 0.429666280616099 5.833333333333796 0 0.4296662806160225 2.218042191651364 0 0.434855951971242 1.523254766881999 0 0.2102869624752116 7.92123027130345 0 0.2102097612285986 5.421230271303417 0 0.210209761228517 2.632613632179494 0 0.6535988172008059 1.11111111111161 0 0.4296662806161799 0.1878571138611373 0 8.74999999999998 0.1872861973824529 0 4.027777777777771 9.817590732165442 0 9.297546978797074 0.183781187003043 0 9.298136821720247 9.538504359070325 0 3.547814783869402 9.814622978967002 0 5.416666666666661 9.814750869532181 0 7.361111111111099 9.534861648207738 0 2.014830665826442 0.4669776580968114 0 7.3247642017685 9.818280840188992 0 8.74999999999998 9.550600550985264 0 3.943839543635188 0.1813323727394367 0 3.479779071210002 9.796652553453084 0 9.796652553453084 0.2033474465469151 0 9.796652553453091 0.2033474465469103 0 0.2033474465469103 9.798066870956932 0 0.2019331290430742 0.6340196174878086 0 5.677699794360542 0.6325282257451187 0 1.817901957296172 9.360936350455999 0 4.291912923955717 0.6249302287552124 0 0.4171734101373619 0.6344984786887795 0 5.15225970417497 0.6368274863628656 0 2.346163033295811 9.61829733113712 0 4.711238749144599 9.635955316792531 0 0.8267986005048267 0.3851737608145452 0 7.51918588001528 0.5984668177761516 0.5000000000000001 1.959520517930501 9.161435051282592 0.5 4.867761372027045 1.94423314841405 0.5 1.020598626697287 0.6036971024937124 0.4999999999999999 5.531963318756511 5.836488938438514 0.5 0.7000675525125846 8.336488938438562 0.4999999999999999 0.7000675525128058 8.888888888889376 0.5 1.500227033174648 8.888802857082712 0.5 7.434059951842318 8.05555555555555 0.5 8.716999401800901 6.388888888889007 0.5 6.471748354952277 1.666666666666829 0.5 6.471748354952011 7.916666666666647 0.5000000000000002 8.155686640088794 5.416666666666888 0.5 5.108560219365614 8.611111111111043 0.5 8.87737447657585 5.000000000000441 0.5 1.018995812605736 1.944444444444477 0.5 8.716999401800553 7.916666666666615 0.5 9.43868723828788 6.666666666666853 0.5 5.34912283152803 6.250000000000167 0.5 5.750060518465244 1.666666666667105 0.5000000000000001 1.500121036930236 1.666666666666925 0.5 4.386872382878376 3.611111111111307 0.5 5.509497906302737 4.722222222222648 0.5 1.500121036930406 1.388888888889355 0.5 1.018995812605533 2.222222222222658 0.5 1.500121036930268 5.555555555555714 0.5 6.31137328017733 1.388888888889292 0.5 2.141621336029804 3.055555555555961 0.5 1.981246261255004 4.583333333333702 0.5 2.702934097742116 2.08333333333351 0.5 6.070810668014792 2.77777777777799 0.5 5.349122831527798 1.805555555555618 0.4999999999999999 8.155686640088419 5.000000000000071 0.5 7.27362372882664 3.750000000000407 0.5000000000000001 1.901058723867594 2.777777777778155 0.5 2.462371485579676 1.250000000000239 0.5 4.787810069815591 5.2777777777782 0.5 1.500121036930431 4.444444444444839 0.5 2.141621336029975 5.138888888889027 0.5 6.712310967114539 1.388888888889039 0.5 6.95287357927667 4.305555555555893 0.5 3.184059322066786 4.722222222222454 0.5 5.028372681978116 7.083333333333489 0.5 5.750060518465296 6.388888888888967 0.5 7.915124027926324 3.055555555555844 0.5 4.066122233328649 1.94444444444458 0.5 6.952873579276703 8.4722222222226 0.4999999999999999 2.702934097742387 1.388888888889175 0.5 3.905747158553674 4.861111111111438 0.5 3.344434396841717 7.500000000000033 0.5 8.877374476575744 1.944444444444682 0.4999999999999999 4.867997607203071 4.02777777777792 0.5 6.712310967114469 2.777777777777902 0.5 6.952873579276758 6.388888888889094 0.5 4.867997607203336 3.333333333333595 0.5 4.547247457653352 5.694444444444626 0.5 5.750060518465205 7.916666666666829 0.5 5.58968544369046 2.500000000000406 0.5 1.981246261254972 2.222222222222438 0.5000000000000001 5.349122831527767 3.055555555555898 0.5 3.103871784679273 6.250000000000407 0.5 1.901058723867699 6.944444444444542 0.4999999999999999 6.471748354952318 6.80555555555589 0.5 3.184059322066942 3.750000000000359 0.5 2.863309172516963 6.250000000000115 0.5 7.033061116664387 6.388888888889363 0.5 0.6982456630559722 3.333333333333711 0.5 2.462371485579707 1.944444444444854 0.5 1.98124626125494 2.500000000000012 0.4999999999999998 8.877374476575476 3.750000000000162 0.5 6.231185742789776 7.916666666666726 0.5 6.712310967114727 6.944444444444858 0.5 1.500121036930495 1.388888888889079 0.5 5.830248055852422 4.444444444444714 0.5 4.386872382878519 5.000000000000033 0.5000000000000134 8.877374476575568 5.138888888889089 0.5 5.589685443690273 5.416666666666714 0.5 8.47643678963836 5.000000000000401 0.5000000000000001 1.981246261255106 3.88888888888916 0.5 4.386872382878484 8.333333333333334 0.5 7.433998803601781 2.63888888888896 0.5 7.995311565313576 7.361111111111297 0.5 5.268935294140627 1.527777777778091 0.5 3.344434396841545 4.583333333333631 0.5 3.825559621166388 1.666666666666778 0.5 7.433998803601379 6.666666666666719 0.5 8.396249252251023 1.527777777777995 0.5 5.268935294140292 8.611111111111448 0.5 3.424621934229421 5.138888888889149 0.5 4.627434995040912 2.777777777778093 0.5 3.584997009003946 3.8888888888892 0.5000000000000001 3.584997009003996 5.694444444444855 0.5 1.901058723867679 8.472222222222191 0.4999999999999999 8.155686640088826 8.611111111111528 0.4999999999999999 2.141621336030265 2.638888888889057 0.5 6.231185742789716 5.138888888889243 0.5 2.863309172517045 1.944444444444731 0.5 3.905747158553706 5.000000000000053 0.5000000000000001 7.915124027926214 5.972222222222418 0.5 5.26893529414055 5.972222222222459 0.5 4.30668484549119 3.888888888889007 0.5 7.273623728826591 4.166666666666734 0.5000000000000001 7.75474895315129 3.750000000000055 0.5 8.155686640088518 6.944444444444652 0.5 4.867997607203358 4.16666666666684 0.4999999999999999 5.830248055852547 3.333333333333467 0.5 6.792498504501892 7.500000000000248 0.4999999999999999 4.38687238287871 2.91666666666671 0.5 8.476436789638273 2.222222222222599 0.5 2.462371485579647 6.80555555555559 0.5 8.957562013963166 2.222222222222324 0.5 7.433998803601414 7.361111111111471 0.5 2.863309172517195 8.055555555555889 0.5 3.424621934229386 2.500000000000241 0.5 4.8679976072031 2.222222222222482 0.5 4.386872382878408 3.055555555555749 0.5 5.8302480558525 5.972222222222609 0.5 2.382183948192374 2.500000000000347 0.5 2.94349670990435 8.333333333333458 0.4999999999999999 5.990623130627731 7.222222222222269 0.5 6.952873579277034 7.500000000000097 0.5 6.311373280177458 3.888888888889115 0.5 5.028372681978066 7.361111111111116 0.5 9.438687238287869 5.694444444444478 0.5 8.957562013963051 2.083333333333651 0.5 3.344434396841574 6.666666666666726 0.5 7.433998803601661 7.916666666667038 0.4999999999999999 2.863309172517235 1.8055555555559 0.5 2.863309172516871 4.444444444444602 0.5 6.311373280177246 3.472222222222333 0.4999999999999999 7.674561415763819 5.416666666667049 0.4999999999999999 2.382183948192358 8.472222222222296 0.5 6.551935892339879 3.333333333333651 0.4999999999999999 3.584997009003978 5.416666666666992 0.5 3.344434396841749 2.916666666666768 0.5 7.514186340988901 7.222222222222261 0.4999999999999998 8.396249252251058 6.250000000000334 0.5 3.184059322066897 5.972222222222648 0.5000000000000001 1.419933499543004 7.3611111111114 0.4999999999999999 3.825559621166563 4.444444444444493 0.4999999999999999 8.235874177475999 5.41666666666696 0.4999999999999999 4.14630977071625 6.527777777777992 0.4999999999999999 4.3066848454912 7.777777777777799 0.5000000000000001 7.273623728826845 5.694444444444561 0.5 7.033061116664362 4.444444444444537 0.5 7.273623728826612 3.194444444444444 0.5000000000000009 8.957562013962978 7.500000000000419 0.5 1.500121036930558 6.250000000000057 0.5000000000000027 8.957562013963093 6.94444444444447 0.5 7.915124027926374 7.499999999999999 0.4999999999999999 7.754748953151545 1.388888888888933 0.5 8.716999401800527 5.555555555555608 0.4999999999999999 7.915124027926232 5.6944444444448 0.5 2.863309172517065 6.111111111111168 0.4999999999999984 8.396249252250978 5.972222222222319 0.4999999999999999 7.514186340989061 8.055555555555998 0.5 1.500121036930649 5.972222222222515 0.5 3.66518454639158 6.527777777777781 0.5000000000000017 9.438687238287832 6.527777777778065 0.4999999999999999 3.665184546391601 6.52777777777816 0.5 2.702934097742216 4.166666666666684 0.5000000000000085 8.71699940180067 7.638888888889288 0.5 2.382183948192524 6.805555555555951 0.5 2.221808873417531 7.777777777778008 0.5 4.867997607203424 4.861111111111177 0.4999999999999797 9.438687238287809 5.972222222222219 0.4999999999999996 9.438687238287786 4.166666666666728 0.4999999999999803 9.358499700900403 3.611111111111096 0.4999999999999964 9.358499700900335 2.777777777777734 0.5 9.358499700900207 1.111111111111141 0.5000000000000001 9.198124626125209 1.666666666666687 0.5 9.198124626125232 5.416666666666689 0.4999999999999974 9.438687238287754 2.22222222222225 0.5 9.358499700900337 8.750000000000124 0.5 5.589685443690504 2.777777777778213 0.5 1.5001210369303 8.333333333333652 0.4999999999999999 3.905747158554092 4.166666666667094 0.5 1.500122745488687 8.333322176861046 0.4999999999999998 5.028379800424278 3.472235803311733 0.5 1.419947563534638 8.055551537030691 0.4999999999999999 4.386871222844642 1.111111111111203 0.5000000000000001 7.75474895315112 4.027780923239746 0.5 0.9388156048596672 8.472222222222122 0.5 9.438687238287946 1.111111111111297 0.5 6.471748354951968 8.611092326190919 0.5000000000000001 4.386883228357705 1.111664218356363 0.4999999999999999 2.943678779679331 3.055624508496037 0.5 1.020003453038402 7.777779249573337 0.4999999999999999 1.018994962864668 9.027777777777745 0.5 8.476755356107791 0.8333333333336121 0.5 4.065788851483181 0.8333333333333681 0.5 8.716999401800486 6.943066352150918 0.5 0.6990413050129414 8.888888888889426 0.5 0.6983565841658057 0.8337437051644375 0.4999999999999999 3.424920689135918 1.112912143258469 0.5 1.499118779729379 9.028589497118167 0.5 9.439114011689005 1.111826942258177 0.4999999999999999 0.576643413367345 0.5975686409165903 0.4995699320431696 0.5412522120911469 1.661092077191925 0.4999999999999999 0.5741460848027118 9.406478632622626 0.5 1.677493142858426 0.8454515270843898 0.5 7.267533810902234 0.5705756180046619 0.5 6.829780949426203 9.430697527551009 0.4999999999999999 0.7026761805152769 3.228571428571655 0.5000000000000001 5.088856995893136 3.993650793651175 0.5 2.401887171664639 6.493650793651223 0.4999999999999999 1.239855201295779 4.617460317460511 0.5 5.569982220217893 4.895238095238276 0.4999999999999999 6.051107444542597 7.256349206349613 0.5 1.96154303778286 3.645238095238115 0.5000000000000048 8.697296178328314 8.055555555555975 0.5 2.020652708200025 8.92301587301597 0.5 6.291670056705224 9.234087249595779 0.5 4.350979535126148 9.438426713975923 0.4999999999999999 3.876214916374521 3.611111111111598 0.5 0.5747841114288161 1.111111111111167 0.5 8.275280624420498 8.888874105611947 0.5 6.913520181932427 4.44527506118948 0.5 0.5753077678986931 2.226189617790804 0.5 0.5821284305785253 8.853333333333653 0.5 3.885219148982936 2.4976578605648 0.5 1.030433793133158 8.948636633141728 0.5 7.949737285364428 9.422089089749084 0.5 7.734991364370943 9.483461812094816 0.5 8.243303412354708 5.283418028362973 0.5 0.5821910221315211 9.270000000000122 0.5 5.569157434119263 9.445745672633857 0.5000000000000001 6.285050279299013 7.502280310093347 0.5000000000000001 0.5756270108446271 9.430989113942738 0.5000000000000001 6.806802666536234 9.163997685436472 0.5 3.430359072568729 8.992238904894149 0.4999999999999999 2.682393528400035 0.8754634317381578 0.5 1.032630129786316 9.270486768472662 0.4999999999999999 8.937174956570383 0.5911111111111405 0.5 9.177596616553988 0.5756810900350754 0.5 2.975529840930696 2.947440996118374 0.4999999999999999 0.5143792897846654 0.9051308058279113 0.5 6.001665463834255 0.9478785912669405 0.5000000000000001 2.413588658010784 8.472259839568419 0.5 1.204429705548712 9.452899581447991 0.4999999999999999 2.92837743553495 9.493645807536225 0.5 2.415397872937043 4.633950617284084 0.5 6.785014334345779 7.550617283950957 0.5 3.351918566998056 2.36111111111126 0.4900548696844953 6.658852608856088 6.666666666666806 0.4986282578875091 6.044081488885912 0.5680949276340462 0.5 8.272586430711193 0.8125549868280906 0.5 5.060621842650446 5.80997150997175 0.5 4.788550262468656 7.026210826211083 0.5 4.206265375593715 0.5714961903966533 0.5 4.51333481606902 3.134057971014655 0.5028627661477909 6.32880535352229 2.336956521739173 0.502862766147797 8.399735666919804 0.5032733677153481 0.4999999999999999 6.326957441331883 0.5902351120296327 0.4989268678985715 7.722727979021748 5.492847156858191 0.5135288550024898 1.055200523474379 2.563131313131596 0.4861578750467699 4.029673352697968 5.075757575757887 0.5138421249532275 3.789110740535766 3.13131313131321 0.5138421249532292 8.031760445944251 2.840909090909353 0.4861578750467651 4.510798577022668 2.500000000000191 0.4861578750467628 5.757350294591154 3.547979797980087 0.4861578750467619 4.02967335269802 6.729797979798066 0.4861578750467372 6.916424698646304 7.840909316465011 0.4861572527315851 3.942193304468129 7.285171465130563 0.4861675113585702 1.055338003838558 9.111979381756537 0.5037920009015069 2.086382541368489 4.907407407407447 0.4814814814814741 8.39624925225089 4.537037037037053 0.4814814814815115 9.03774955135051 4.512172298624967 0.4856733045043977 1.056344754739956 9.285391242849681 0.4982010763828564 1.186775445361681 1.840277777777974 0.4750514403292191 5.649826096730676 6.014957264957419 0.5284108895220115 6.169503021722643 5.448717948718003 0.5284108895220094 7.446335347815007 7.147435897435948 0.5284108895220131 7.427830531494986 9.536380070880362 0.4684594777868928 9.536367939243581 1.084992649133698 0.5315465244078095 5.457213813058245 4.889779794635278 0.4627201577955689 4.22392548474197 4.138888888889174 0.4609053497942396 3.985934695941252 5.945246834610282 0.4603322139615755 6.633116130108937 0.6140830785296079 0.5174724984690668 1.45935263134036 9.332931925604042 0.466230967567021 7.269999454283973 4.305555555555772 0.4428605746992634 5.228714760521752 0.466143401702637 0.4866790461035684 3.745119513487816 8.472196727422105 0.5506864290024382 1.700611959544234 2.187500000000078 0.4493312757201641 7.895077143579237 7.534722222222369 0.5506687242798373 5.850294940199638 1.423760548798105 0.550696397925508 2.602613398119031 8.782686568736121 0.4475983448571319 5.13011054340099 4.960317460317842 0.5589359200470327 2.439460760611952 7.956349206349308 0.441064079952969 6.254096467757884 3.293650793650909 0.5589359200470307 7.250713003858736 7.956349206349203 0.5589359200470365 7.697472140731954 8.293650793650828 0.5589359200470353 6.975784304244938 1.210317460317724 0.441075557097263 4.329595570458745 9.536188925976868 0.4721612446265341 5.16885553013569 0.4699006983615364 0.5257197506725568 2.419926630994279 3.194444444444384 0.5576491488595363 9.557252618660909 4.611111111111176 0.4300411522633692 7.69059892324135 6.972222222222528 0.5699588477366262 3.601034516481682 7.194444444444824 0.4300411522633887 2.446333978102443 7.947562382931766 0.55187115891739 0.4489528177737917 9.558511023053578 0.4446071400048752 4.660086770240923 4.270065879098842 0.5699588477366255 4.797168877125658 8.101453629315865 0.5692951435093139 2.460992002248526 1.388888888888899 0.4510985482231135 9.551700007384632 1.791205640336439 0.4176079461908949 2.390468875606996 4.865609223244848 0.5696481680801049 0.4249987063903286 4.02828953543985 0.4283464047867385 0.4214060540099525 8.333333333333483 0.5809835460765744 5.463681976708792 3.600784974839452 0.4148572183849719 1.007078905628039 0.4251526472792328 0.583365991046225 9.574942975707664 0.8492453687165792 0.444780186436604 9.555630882981058 3.336962312420287 0.4082835794694842 8.402100801049139 6.944444444444443 0.5623845331074884 9.566103527647929 1.024287351629354 0.4161556424935794 1.917708135412874 3.472222222222562 0.595679012345678 3.184059322066739 8.333333333333689 0.5956790123456814 3.103871784679616 5.972222222222278 0.4043209876543348 7.995311565313725 7.361111111111323 0.4043209876543205 4.787810069815937 8.194444444444377 0.4043209876542955 9.117937088738124 7.638888888888878 0.5956790123456909 8.476436789638536 6.11374880909962 0.5951905497552843 1.020518688249207 2.362287242733156 0.5961146166500232 3.661789346849319 8.888741612418547 0.5958675375740636 3.104055872010973 1.805555555555559 0.5990585671322677 9.599062313062642 6.947086318142929 0.5699588477366282 2.769394056712773 3.472222222222407 0.4300411522633711 5.91043559323997 6.111111111111478 0.4300411522633816 2.78312163512963 5.833333333333662 0.4300411522633745 3.264246859454314 6.66666666666708 0.569958847736626 1.820871186480286 5.555555555555842 0.5699588477366235 3.745372083779005 6.388888888889278 0.4300411522633741 2.301996410804945 6.250000000000232 0.5699588477366359 3.985934695941409 1.527777777777861 0.430041152263374 7.834936490538609 5.307231772377185 0.590224568901377 5.973617858916948 4.169788469788836 0.4277287055064812 2.784924009002269 3.888888888888948 0.4277287055065448 9.041354299095971 4.571544715447197 0.60004516711833 8.630005702703293 7.664037576576873 0.5940747854432433 1.881780063710217 1.254027740441834 0.5744341148940879 7.360787517298641 0.4211697353615698 0.5780734600074021 0.9360781163727718 9.574173035023344 0.5658505598186766 5.874003977071546 8.583887723695824 0.5990399243722524 7.759988096502408 9.592054100204802 0.4268842186292212 3.474270701826224 2.386181315783058 0.6003216428404616 7.06200969549602 0.9835172423515806 0.4216744706861878 6.8661648589771 6.875098952946783 0.5896901698597344 1.099699280211658 0.4029526655452598 0.588858933542689 5.161066063309276 0.4229296944846085 0.5812538406223784 7.227668637524062 9.022452103287897 0.5828790333113044 5.894848693903514 8.888869571307458 0.6085368340965769 1.099291808670227 0.4135105095276749 0.5772668100036307 5.911778759114136 8.780504268935976 0.6038161534855225 4.748359049446875 6.666402959318559 0.5861791463370585 0.4023881467315693 4.490498633512275 0.4048590037177225 9.601159023166296 4.842828597865841 0.5946695118850926 6.445914051694815 4.007130087357403 0.5929007259817036 5.465073217782678 8.61177097273009 0.5865807194301866 0.4028474235495365 9.58387861525221 0.4112595704379659 8.653745834941464 9.62285485698777 0.3751433019912382 0.3773561383081141 5.518200209904423 0.6095143255499025 4.525680338785988 9.162179822085626 0.5877748232937058 0.4011624833155502 1.691176470588415 0.6017308157831061 6.08024449594271 4.746732026144049 0.3982691842168969 4.636868822968812 4.281045751634299 0.6017308157831032 3.57556318107609 7.524509803921628 0.6017308157831015 6.702877139186767 7.148692810457629 0.6017308157831083 6.136847463510636 3.700980392156993 0.3982691842168962 6.929289009456956 8.40686274509803 0.3982691842168762 8.542473585134145 7.173202614379112 0.6017308157831063 9.094352518918233 4.14215643779231 0.3982686333516426 1.89162612267389 7.982016306127122 0.6017350666255447 5.202900391904438 3.839873892324603 0.6017345882720109 1.283145957385615 6.111709507246673 0.5862633121632663 0.4021989332093497 1.201264629859275 0.3981338329301772 3.561482769775675 3.354547417372883 0.3973537064717911 2.852448256018065 5.74387601727295 0.6026462935282146 8.263026468723277 7.521214084039245 0.3973537064717765 8.144825723589879 7.848423434645396 0.6026462935282281 9.054040926098985 0.4035744582920346 0.4343340809137463 8.750070346009167 2.889730206057486 0.6010171075750398 4.894490957120031 2.481249618068356 0.3966693447753416 3.332506666036601 3.222780045351675 0.398557151255561 5.478389069349237 2.830204772742645 0.3936466797624486 6.568575491583442 5.168752491448766 0.3944724308782639 6.324952050998808 7.191081387307391 0.3954402245798597 3.210309351191244 3.541307798481948 0.3852634639470366 4.868411992489531 5.312500000000113 0.3914609053497997 7.05310800101121 3.92361111111145 0.3914609053497918 3.204106206413624 5.520833333333469 0.6085390946502089 6.692264082767702 9.608422664830577 0.4078755105650393 2.027738712800286 2.571764107086019 0.3964920810084065 0.3880201136943801 2.046680490024126 0.6098261753749715 6.449695110317306 3.142363543309903 0.6085368895897589 1.610377496607682 3.420138888889287 0.3914609053497935 2.091504125162766 5.052083333333549 0.3914609053497921 5.218818083273326 2.552083333333427 0.3914609053497959 7.624444204896621 4.079861111111155 0.3914609053497925 8.346132041383722 5.329861111111132 0.3914609053498027 9.067819877870795 8.333316299611537 0.3914584930979428 4.647491270259119 4.530952380952541 0.3912404467959948 5.940677750197565 8.611096747546071 0.3912202251539076 7.173752051175252 0.4419298544541847 0.6114957081536334 3.35112809397459 1.389316477767604 0.3913421306613797 1.760915684854914 4.44915410480859 0.6098473336401322 1.762769876198692 3.659072683857703 0.6098475900746132 6.598993489455382 7.131294906079827 0.3901524099253836 8.764056998916667 0.4426695517910026 0.6128716955984329 4.137597680194003 1.384178305361221 0.3901524099253804 6.2090991159419 1.481586172469785 0.6104094844995058 8.350505515219661 3.048564582556765 0.6104810315944157 2.726008162196115 5.787367101374315 0.3895189684055713 8.591235423706959 1.862558748916584 0.6195497057211208 7.753346407473212 9.615804101395815 0.6225432154578256 4.302074875845334 6.722488435849651 0.6161072475733695 3.985934695941423 2.500000000000053 0.3852287657008686 9.619726193235234 5.615263252556028 0.6027626645211492 0.3816185580539698 7.166164393991293 0.3952003750030851 0.3812812703357183 8.149261302938376 0.6201635081265825 1.020923356855973 3.888888888888877 0.3859058483733686 9.621837128096585 8.271287364906456 0.3819050132458708 7.843425383930585 8.704297171687564 0.3788681853104244 5.992039774631033 7.14034791197235 0.6256700139400009 4.556286440358508 3.798403736233275 0.6237407768845148 5.826597862808096 5.791251916910914 0.3762592231154953 3.985934695941369 3.281757094928446 0.6350048400053959 0.7330006663347479 9.609304049559196 0.3835989000480406 9.140118829250108 0.9455947472237107 0.6176296358645376 4.564431394420303 8.925134176241329 0.6134317216802965 9.079998476724956 6.829663041362362 0.3825796839127389 4.517896927915451 9.114948796229429 0.6181677015478471 5.234056798798906 4.772158219766776 0.3910956743437535 0.7487193639571457 4.307959433936356 0.3756896498092606 6.939633799868377 6.434618331173432 0.3697620794309155 1.593595902056757 3.295118203010019 0.3866576547456173 0.3705233916081752 1.607142857143098 0.6250734861845979 4.741988619879929 4.642857142857488 0.3749265138154025 3.058050334743675 5.337301587301996 0.6250734861845963 1.855237273931991 1.666666666666966 0.3749265138154037 3.676639908875265 6.329365079365274 0.3749265138153999 5.223113844204885 1.884920634920854 0.3749265138154019 5.223113844204624 7.023809523809704 0.6250734861845988 5.394944281463738 5.47619047619068 0.3749265138153979 5.463676456367167 5.634920634921055 0.625073486184598 1.545942486866123 4.087301587301744 0.374926513815401 6.357194730112917 2.162698412698763 0.3749265138154048 2.817487722581201 5.277777777777823 0.6250734861845978 8.144231277604646 6.250000000000221 0.625073486184602 4.535792095169622 2.857142857142869 0.6250734861845988 8.831553026639821 3.809523809523893 0.6250734861846063 7.800570403086983 6.329365079365154 0.6250734861846109 7.560007790924786 6.527777777777854 0.6250734861846103 8.728454764284724 2.162698412698388 0.3749265138154597 9.003383463898716 1.468571674302009 0.6251911550911533 2.98950158751215 3.650438183376112 0.6213005642983713 2.289617916856668 5.14416920488152 0.3558141673209716 7.594373878376431 7.427915397559302 0.3558141673209617 7.238102847922677 7.710855552834303 0.3556831245481988 5.304660450511173 8.6780508713326 0.6443077843372895 8.44071689618567 9.621842309839197 0.374609910147097 1.364508947509652 0.9778726372450524 0.6442421079211416 3.745447192838445 5.833257089277366 0.3527375133857206 1.099472520333216 8.83419570007354 0.3762304895605764 1.857388017163216 0.3340032616541192 0.6336411982047438 0.3337520088270273 8.61111111111147 0.3519972506410762 3.022307150825704 6.600042089020725 0.6298073315994648 5.696859733833227 1.199721066816647 0.3644041480372165 5.137588774973485 3.758401919196336 0.6471193415637868 4.707622532428266 2.601859662947242 0.3599720513977916 7.253602431302076 9.111449740119896 0.614056485761765 6.613878055701406 7.98733230375477 0.6325013712273737 5.933222753833839 2.631131810363096 0.6196733271460599 0.6927287117095269 1.946798081650588 0.3745199302645583 0.3546258603420467 7.770593172697789 0.6502799449565322 3.613941834089346 9.631202792037353 0.6093547906329234 1.027126211178463 5.694444444444441 0.6440072900149245 9.644007290014965 8.263764924796275 0.3651621434819219 0.3527504498343019 0.8408876537140281 0.6128650587820754 8.015014788785791 3.568390943518068 0.6312970572699856 5.164083256493147 8.930900778458184 0.3579460779343759 4.51314231004294 2.162250166382023 0.639319401032008 5.73559597321863 6.249999999999982 0.6443099980285323 9.643535414921507 4.331944444444822 0.6376396237507338 2.467297291447847 3.532738095238121 0.6376396237507075 9.022972133746237 6.957427476778877 0.3494083282621865 9.261655700639347 8.167499831675624 0.6379042541697462 8.391460952382316 4.531507984600943 0.3620957458302406 3.443775133704314 7.27404757095502 0.362095745830233 6.571089091814951 7.665833501657775 0.3620957458302385 6.948085279408256 3.828769448580797 0.362095818443838 1.565943422160377 1.18987584861857 0.6379425549284854 3.278877723627973 5.138888888888959 0.3554254333510369 9.6431229932581 8.75024909222617 0.3556594190243981 9.643272020629436 8.582917586175062 0.6384989742494338 6.226706468539587 7.273537529618635 0.6387543230635888 8.012697929772189 7.610159131442972 0.3612456769363877 9.202471217240106 1.385437912020742 0.371742801059721 0.3507034494089559 9.638099796396173 0.3706072770647796 5.53330860223886 5.441697034834974 0.345701507284986 4.773358780016082 2.726840825377534 0.6393849147233113 3.200135026372855 7.999844557111436 0.3538281123595431 0.7591691743599552 8.194444444444343 0.6443931983843807 9.643405718402438 6.639737534980703 0.3610270902077879 0.9306614228272438 8.947492655353006 0.3610431231431885 8.810242337203789 2.55391614234472 0.6586217875637757 4.355743883582186 4.893167417858836 0.6471193415637885 7.594373878376424 4.66880593115166 0.6471193415637867 7.982979372614913 6.328548283956809 0.3566110453235686 6.080327837364927 9.637099570715954 0.6286929851774925 7.442149765755944 2.239843058011878 0.6597870352177476 4.055948839042274 3.45460138643292 0.3402129647822491 8.005484959599944 8.723325836615917 0.3622245312513653 2.467226704316655 6.943214595029566 0.3396215500524259 3.886064018931194 8.914234089563772 0.6322049996285621 4.223944691730485 3.611111111111431 0.3386139529965336 3.406767758345693 2.312346252633761 0.356994928738244 6.319924630416171 7.375065149535591 0.3374968185859114 5.597741811530979 6.913626883986527 0.3539295987462312 7.205206033773832 5.050910879629865 0.6440429526748986 4.952980760264151 4.09932406868536 0.6612150242543655 8.088303239753815 5.328688657407452 0.6440429526748952 8.801982554861606 5.099053009259253 0.6440429526749021 9.199723164683208 8.103693792758657 0.6440478320697056 4.781424386151317 3.98846550137537 0.3528806584362135 4.707622532428282 3.206339645434201 0.6640282461804516 8.629944166919705 5.277777777777836 0.6640514151205943 7.741049674967698 7.488136077079475 0.6640514151205841 7.427149164509927 1.618586473349797 0.6441461798621383 1.894879123315825 3.143790674346555 0.3556612159895284 1.345121656602053 2.509381478505553 0.3341097371644162 4.541831058512879 4.674757725015509 0.3548276599542509 1.897011957205657 6.902236389908193 0.64517255977331 8.63580028692167 3.659986505281748 0.3546000570188571 2.539878745833926 0.378161344446215 0.3696108413163797 4.832804048563618 1.709882502763946 0.3543475442452888 8.47719900586327 2.824917677230409 0.3542866636961848 2.860386845461746 6.015565907472615 0.6457133363038068 8.71772998356456 3.462307832474689 0.3649285765336284 6.411950282081897 8.613298455813709 0.3636155538140219 0.8960076746930959 7.638888888888862 0.3553268754699895 9.642969356726473 8.335351496804893 0.3271947527749748 3.584928087815522 7.777777777778182 0.3274453224216702 1.660940115542892 2.777777777778174 0.3271604938271603 2.141621336029884 2.500000000000426 0.3271604938271602 1.66049611170518 1.944444444444873 0.3271604938271601 1.660496111705148 1.666666666666944 0.3271604938271597 4.066122233328586 5.000000000000417 0.6728395061728401 1.660496111705315 1.666666666666818 0.6728395061728437 6.792498504501793 1.944444444444694 0.3271604938271589 4.547247457653281 2.222222222222621 0.6728395061728394 2.141621336029855 6.666666666666865 0.6728395061728412 5.028372681978241 3.05555555555588 0.3271604938271602 3.424621934229064 2.222222222222452 0.32716049382716 5.028372681977976 2.500000000000369 0.6728395061728397 2.622746560354556 5.138888888889225 0.3271604938271601 3.184059322066836 1.944444444444561 0.3271604938271602 7.273623728826495 5.972222222222636 0.6728395061728405 1.740683649092795 1.805555555555878 0.3271604938271606 3.184059322066664 5.694444444444835 0.3271604938271601 2.221808873417471 5.972222222222409 0.3271604938271561 5.589685443690334 1.666666666666702 0.3271604938271575 8.877374476575444 6.388888888888954 0.6728395061728416 8.235874177476111 7.638888888889266 0.3271604938271622 2.702934097742322 5.416666666667026 0.3271604938271618 2.702934097742153 6.527777777777804 0.3271604938271582 9.117937088738039 5.972222222222333 0.6728395061728422 7.193436191439266 6.527777777778101 0.6728395061728405 3.344434396841812 4.166666666666764 0.6728395061728454 7.433998803601502 6.944444444444501 0.6728395061728427 8.235874177476155 5.972222222222256 0.3271604938271754 9.117937088737978 6.666666666666733 0.6728395061728447 7.754748953151438 1.111111111111139 0.3271604938271638 8.877374476575408 2.499999999999988 0.6728395061728414 9.19812462612526 7.777776103394112 0.6728398162439326 4.547248424359621 1.66609951797011 0.3270554662906762 1.179698330833337 7.595174889181188 0.6471193415637868 5.505025237411621 3.425141449895447 0.6487267310924258 1.834970132700766 8.701042077006065 0.3516132171516584 9.197466044315499 9.159802380109463 0.3408870067500154 3.093818940581722 3.843982677092744 0.6579821633340424 3.908719434789242 4.669035639673397 0.3495995697443512 2.383888851887862 3.099883198636855 0.3495995697443512 7.026241501882088 8.150116801363348 0.6504004302556508 6.478567969734542 8.099883198636755 0.3495995697443475 7.200255806221557 3.569736447852726 0.3495995697443518 7.358925977300632 8.792529513301664 0.3529551919240968 8.2426308094222 2.779547498494301 0.6732628246687005 1.180690663837215 7.832800559826146 0.3487251890306349 3.181900076825094 4.345618647743625 0.6512748109693665 6.625645694001244 4.91613389315924 0.3487251890306289 6.955032824518776 6.611451082614733 0.6513666214475227 4.625228043675215 8.798596652509854 0.3491167979091642 6.596701316619927 9.658537411195976 0.4031248962708535 7.091119792996839 2.218162150182447 0.326273735074695 1.182135527564463 3.290654395426282 0.350469086176717 9.274552894401165 8.297374187550593 0.3549874018525935 2.246281519256173 2.265444515488546 0.3352358180105326 3.891885347842857 6.932164266794537 0.3466840304286267 1.920569922694185 1.308687762263389 0.6533184879310961 8.015014788785823 3.429621860947561 0.6647848772862013 8.166445840475433 7.22222222222262 0.3252337984490683 1.648482428277392 0.8813151151043039 0.350521221600421 0.335808975218875 3.014797898425442 0.6563504068405285 6.731497375995191 4.100773840383956 0.6564510225097591 7.028212233008727 3.428139641584467 0.6548757034372568 6.187859287669128 0.7720459127687422 0.3595933195243105 6.546898509549238 1.635160222072091 0.3430207573018886 4.963555209340536 4.820730755495761 0.6569792426981103 2.92300329023777 7.051826888738714 0.3430207573018914 5.173377692003128 5.65406408882894 0.6569792426981137 5.32862941186127 4.059284222372753 0.6569792426981085 6.135628140652307 1.872557644234239 0.6569792426981104 3.590120363920585 2.190715777627754 0.6569792426981104 3.039054312041817 5.309284222372982 0.3430207573018872 2.076803863392594 6.357382444294135 0.3430207573019049 7.338441201464176 6.321886800210605 0.3430207573019077 8.641935219329978 2.885160222071845 0.3430207573018959 9.053119616100448 1.984824800060186 0.656979242698173 9.138430508404721 4.158200168600551 0.6744073761850782 9.674361715512623 2.608197282920051 0.3424775315512647 8.572841196915778 6.080707656575729 0.3422854305957386 4.964701470234487 2.013270109586396 0.6584369260641157 8.402130041662826 4.836201223695213 0.6554254917049779 5.331355956850446 3.863979001472814 0.6554254917049738 8.458669914960854 7.625599086491289 0.3246994193090303 3.657511675399783 2.917981829108914 0.3457109944705649 9.653815637310064 8.600315691736613 0.3251613420910857 4.072354971611064 0.3554302964027606 0.3592565810969133 7.988922106691619 3.362148319051582 0.6589601182700779 1.117664222660609 9.332180823659854 0.6319303287855311 9.276164669254577 3.115702305269701 0.3446337366973266 4.786088401418799 0.3486366656409536 0.6384011991240703 1.709816112620377 4.489076156314615 0.6594957745720185 9.346834527946283 6.34860485526093 0.656243233679787 5.443533109152382 8.038979249422592 0.3240906474904566 1.18894172106873 2.044258638910573 0.3303845473090431 9.621622098406167 7.559622365006618 0.6628194499381879 4.074280248945563 3.574235213683555 0.6628200063445642 4.339318064426519 2.755032478652833 0.6628200063445626 5.934910507441551 3.15756854701672 0.3371799936554363 7.722115734215747 6.448510085441967 0.6628200063445666 6.784340199768184 6.389033770554591 0.3564195934071488 0.3659244881561931 8.887370648331984 0.3558340552331727 0.3671676234835968 7.638888888889242 0.6429675954691478 3.036628110608972 4.722222222222313 0.6429675954691561 7.100304790734866 8.215824696203477 0.3362699620779376 5.695766494115403 4.220781893004053 0.6471193415637362 9.03774955135054 9.08962532888814 0.6529013091344285 1.758381768870523 4.222578361846789 0.6645892290917584 1.18845235576317 5.159032449639568 0.6765697952006924 4.318314735712804 5.659287731737708 0.3343146857873608 4.348283733374933 1.940599499192719 0.6762398006801019 0.7098925138664796 9.0651336199212 0.3290378771568303 0.9598046567418126 9.107196320368693 0.3441588158116053 7.670029778413634 7.796326507844069 0.3324549869686797 5.954807713934779 6.788733429632945 0.3332312115205328 5.639242524719101 7.222222222222619 0.6812083867579739 1.656931540076587 1.11735705834157 0.6664915168373778 9.670194980438566 5.740672283626276 0.3308022044310074 6.05933836678812 5.68126582915602 0.3308022044310115 7.628790782057069 7.189172998329068 0.3308022044310171 7.720450620671547 1.666666666666817 0.3173066032393284 6.792498504501793 2.777777777778174 0.6826933967606749 2.141621336029884 5.972222222222409 0.6826933967606715 5.589685443690334 1.944444444444873 0.6826933967606748 1.660496111705148 1.666666666666944 0.6826933967606745 4.066122233328586 1.944444444444694 0.6826933967606736 4.547247457653281 5.000000000000417 0.3173066032393254 1.660496111705314 6.666666666666865 0.317306603239326 5.028372681978241 2.222222222222621 0.317306603239325 2.141621336029854 2.222222222222452 0.6826933967606745 5.028372681977976 3.05555555555588 0.682693396760675 3.424621934229064 5.972222222222636 0.317306603239326 1.740683649092795 1.94444444444456 0.6826933967606748 7.273623728826495 5.138888888889224 0.682693396760675 3.184059322066835 6.388888888888953 0.3173066032393269 8.235874177476111 2.500000000000369 0.3173066032393251 2.622746560354556 6.944444444444504 0.3173066032393275 8.235874177476145 5.694444444444835 0.682693396760675 2.221808873417471 4.166666666666764 0.3173066032393286 7.433998803601502 6.527777777778101 0.3173066032393259 3.344434396841815 1.805555555555878 0.6826933967606751 3.184059322066664 6.666666666666742 0.3173066032393288 7.754748953151434 5.972222222222333 0.3173066032393268 7.193436191439266 1.666666666666702 0.6826933967606731 8.877374476575444 5.416666666667024 0.6826933967606762 2.702934097742153 6.527777777777809 0.6826933967606726 9.117937088738014 5.972222222222254 0.6826933967606821 9.11793708873793 2.499999999999988 0.317306603239328 9.198124626125258 2.500000000000426 0.682693396760675 1.66049611170518 7.777776773119937 0.3173069053380435 4.547248037693236 8.333333333333657 0.68270846907084 3.584997009004298 1.666453403591551 0.6826084774132439 1.179494014874535 1.111111111111139 0.6826933967606773 8.877374476575408 4.871979351906924 0.6768647805415902 5.743785736716174 9.148218412644804 0.3414217279593097 4.03266511964242 7.873556479228594 0.3293176083626314 8.464193069665953 8.226602910696952 0.3293176083626225 2.894521830014213 7.233173943408328 0.6706823916373794 4.984916304508705 5.844285054519299 0.6706823916373926 7.798205330620949 8.301174867081137 0.670682391637378 8.908587134072782 4.754318550948711 0.6707859541807857 2.172618742822607 2.959559372763675 0.670785954180784 7.205733724087818 8.290440627236539 0.3292140458192138 6.29907574752881 7.959559372763593 0.6707859541807895 7.020763584015808 4.869853382221999 0.3217539015890512 5.745013165886054 0.3322073814614237 0.3609494088298162 7.504337752564822 2.392921277073902 0.6712628921199248 6.040804558113368 6.537858748239972 0.6712628921199186 7.150884724666356 7.359890197989509 0.6766072023154728 2.251645952221923 3.601559282855055 0.6746083632572758 9.673735099835275 3.467533395865666 0.3418701405402091 9.647857126859432 8.194444444444422 0.6774728022205927 8.024201940294256 9.649770880422603 0.6497708804226022 6.551905531263524 8.92107935846018 0.6446468151768514 2.358971963646641 8.434263691495715 0.6731355614998287 2.395702372617627 2.777777777778232 0.3175338994868238 1.179370887380509 4.406931694481154 0.6733478380537944 4.079750959886775 2.219730346874087 0.6818854078460003 1.180809572283772 1.939040934640604 0.6743811992251745 2.585056053287502 5.724378822529473 0.3256107947504042 5.085052029281345 7.325785232258986 0.325610794750404 4.132139933890563 2.92143213652742 0.3251934408123994 6.107838104522091 0.7037221397656619 0.357845490770762 2.656105169482315 4.132673110773774 0.6671088649980512 2.122149217037539 1.937369271876145 0.3208215977748009 0.7079456935750843 2.251233012206124 0.6759285187511601 8.696690614748455 1.558842202049624 0.6764184693356652 5.574461170314581 6.281621409749701 0.6646560340591134 1.470864689707692 7.641084818995791 0.6765195856901806 5.142917311829541 8.595986312262941 0.6797694442530051 4.074854540015613 3.055555555555523 0.6779835390946449 9.230199641080295 9.668797437536035 0.3730547505669586 7.963065265270076 1.082547377522423 0.3234459655446547 3.88661421207679 1.387081447993185 0.3226896027982924 0.712184521806527 1.387081447993185 0.6773103972017076 0.712184521806527 3.501229357199324 0.3217794636623097 1.723936371905477 9.295372582405982 0.3568793392103872 5.98427864499944 7.219867944575674 0.3221059342180048 3.554821383207873 5.141276293715358 0.3217511937024122 8.607217913332825 4.836675700090376 0.321751193702461 9.134801617506973 7.667420831300029 0.6787669826674523 2.686461173110967 6.062135747522644 0.3343137523390743 4.605208697390732 4.887800810049622 0.3217142167832281 2.690665805930415 7.775057580678781 0.6782857832167722 6.44250025174672 8.221134143382645 0.321714216783229 6.724579258926466 7.775057580678689 0.3217142167832271 7.885875924720795 1.137790157256987 0.6782846004208551 4.078379449147778 2.21313147672469 0.6745229775612398 9.674001306090034 7.251764976854668 0.6769804001685173 3.41418225826934 8.88603377066082 0.3246090521211848 3.574033002835251 8.88888888888922 0.6807721382856681 3.580330335585595 6.66666666666678 0.6786414639908929 6.347550708784625 7.777777777778235 0.6471191598600519 1.339745395659548 5.972508022463241 0.6473310454457641 3.023849254137861 6.249714199759706 0.6473310454457658 2.542394016121397 2.53061351149378 0.6688642872487791 7.407909188610308 8.493275802618582 0.3215766028351171 5.286753731875822 6.66666666666678 0.3211746539051527 6.348697284112572 7.347437821356485 0.3251060085489438 6.046034320049886 9.059105343364871 0.668173489166058 7.173813372049048 7.756199355100444 0.3303767037074166 2.096513992308086 2.633050027966335 0.684795641476754 6.548564824414022 0.3753120982187531 0.3479175118759747 1.227036304166436 1.361722401901734 0.3219679457632536 5.525686669024005 4.311561680117462 0.3263659168597068 5.560681909642999 0.3408121678032062 0.3628130657666183 2.725428965813819 2.743058635529526 0.3207310230404032 5.048417788101201 2.767941154959006 0.6746611029911094 9.673570673617723 0.877337564202861 0.3279111876051798 4.372310307149715 4.144952354701524 0.6688162777293821 0.6518857095409456 3.83781470113683 0.3477422570740472 7.58636390337032 5.717393502477851 0.6815603685350529 6.057561023181859 4.758211109949319 0.6795041150111123 1.200149081397441 0.3509199766828831 0.3303672281027384 2.148742694147697 8.593742796530774 0.6727361077305818 6.832753455415823 0.8529142722846048 0.6764342623554076 3.115120364697685 0.8606136305182728 0.3221578630559906 3.119566797041796 3.018820226687974 0.6796423448520594 5.53070705831329 8.606513560242469 0.3183842845650526 4.855396334463748 2.64408224916638 0.6490428083332089 8.313063326909187 8.211426563065544 0.3235144633136582 1.760386872565344 0.850863726033502 0.6540642601795044 1.701570348838255 9.305555555555507 0.6749071336520823 8.624507031268607 5.239472484160649 0.3200669209350182 1.201486458962126 3.0940340770668 0.679965158304501 4.364656798126065 4.822632589600452 0.3200348416954997 3.64296896163913 2.500000000000208 0.6799651583045021 5.465066736797922 2.816256299289046 0.6799651583045009 3.883531573801364 2.878188145155761 0.3200348416954992 8.177902224840857 3.29485481182266 0.6799651583045015 3.88353157380139 6.982922965955497 0.6799651583045043 6.770282919749726 8.094033067287159 0.6799650352015389 4.08833683668575 6.799438048204429 0.3506149149726915 2.53902707845116 1.154708699657247 0.3254736033052217 2.640030974997028 0.3387368470733619 0.6612631529266375 6.604896345216438 7.248590955022669 0.6656149448425571 0.7547719080658603 3.900116760157145 0.3207689196533398 5.970216461770758 5.717731073715266 0.6792310803466672 4.145830058036498 7.514129711543353 0.6523121877442437 7.072585583605838 4.191661204685767 0.3212437534220581 1.174242898581116 2.04847320153079 0.3327272896340417 6.663539422565048 3.592060487139087 0.3155519025309182 4.375873499999835 6.407939512861305 0.3155519025309226 6.781499621623412 3.175393820472259 0.6844480974690832 7.685560298642433 8.597740277868681 0.6794691872327132 5.848427693298442 5.328688245451689 0.3278569937746738 3.635576516062147 2.356402581659199 0.6781538862575427 8.098083208626408 1.508773806843348 0.3158539694903186 8.164585536740603 0.8696229514410659 0.6672585067300345 2.112334776327801 9.260564260802353 0.6602567803596542 9.659281809675152 3.844109323461026 0.3188679817108512 5.323269337373764 6.648649632991945 0.6848605563515533 1.491921007712801 4.587389582495291 0.3201337999040723 4.124402707124936 9.188396188351007 0.6569185466794968 7.52613396067418 4.722222222222253 0.3186317987482983 8.770179081316574 4.322769807972418 0.6859200470311572 5.580094956545513 1.244651592540801 0.6840488489904152 1.883070448055095 4.397509578544119 0.3184688519937566 7.942221885388166 4.7222222222223 0.3184688519937526 7.379803088677596 6.111111111111315 0.6864362034815823 5.00947406678298 9.026963351675581 0.3140426036255063 7.173808972635657 6.19509360717926 0.3218298538054088 1.220317739173888 5.186738196809959 0.3182995108788648 4.334310656299731 6.967914434939035 0.3248355815103198 6.027929045076267 1.136625781286573 0.3223184647833472 1.193371687325696 1.136625781286573 0.6776815352166528 1.193371687325696 5.760847459114646 0.6757725993849564 1.206623966996261 5.229101430773937 0.6818536445069655 1.207474189426724 5.534905517056051 0.3339648798199744 0.7586531192249468 5.85783238508364 0.343422799690901 0.3269963747547253 4.812005416959927 0.6819331532379308 3.636833360654398 3.104661249707331 0.3180668467620673 4.35852119714133 2.826883471929573 0.3180668467620683 3.877395972816632 2.500000000000209 0.3180668467620659 5.45279553482845 3.284227639182127 0.3180668467620663 3.877395972816653 8.104660689929247 0.3180669031398398 4.094472801038942 7.548886715863328 0.3180805896417448 1.207679227059365 3.748196303564021 0.6809451981445528 0.8383521560098939 4.77175089789301 0.3179885168511672 1.207966281611502 9.166690063512368 0.3413914813974396 8.186443942471795 1.250071302090838 0.6873829254154291 6.088233489768939 5.587123008937955 0.3459736778352449 1.344605483934416 7.240671935378344 0.3183000811644636 0.7188893034764143 3.496120760275784 0.6806389322116726 2.710173023416185 5.54987538005894 0.3193610677883296 8.211557973571589 7.662787426942094 0.6806389322116781 8.002550490987998 7.795996140334298 0.3193610677883196 8.860297198345497 8.351229319068713 0.6806496356393327 1.998948652489652 2.103285092583238 0.3299397588283487 8.20998160749633 0.8389164606652423 0.6779909300149356 8.412309802337194 0.8389164606652423 0.3220090699850644 8.412309802337194 6.957801778786305 0.6886653490474772 1.973534400677488 3.611111111111236 0.6888040877118382 7.418791354620168 1.830764931849045 0.3192154190949803 6.225309080174985 7.66409826518228 0.3192154190949804 6.557812554954504 4.002569166886421 0.6807846642834288 1.746562157318078 8.037852341500773 0.3192148089514567 5.009491160518514 4.166666666666931 0.6826887409189825 4.485833707667827 9.158511675081488 0.6508380648841781 0.861259578954275 1.396477777871596 0.6807904174089503 3.609785497013229 0.8270342871270651 0.6669904680439289 6.31605522976529 3.348930080382207 0.6537752475317566 5.676136278246278 3.472222222222435 0.3107384697598637 5.254306585357639 5.017305893660859 0.6797771957811571 0.7198752386556899 8.594477752359161 0.3191949443046704 1.473595014469459 2.821883354258486 0.3448406961428446 0.8056292157431351 1.927576982609291 0.6789621422812563 5.383675023084178 3.843292329993539 0.3176064249494883 4.095908872215943 5.127959445891102 0.6810555407435168 7.007446055900654 9.262367372501092 0.6611104408423334 8.012136932237814 9.65279748647554 0.6499924075714839 3.19308997570868 7.765867208396138 0.6795349207399516 0.7191184202562118 6.714545421752375 0.3246877940532754 9.674024843461901 6.991139378547986 0.3161885131347683 6.76553917172768 3.61111111111143 0.683162569929795 3.488990189529627 4.026224725593647 0.6544013168389342 3.003671260501373 4.764972221749849 0.3413564817176907 8.113615446641019 6.816890614059269 0.3098366688504544 8.643356163491747 4.595488497411352 0.6827775752304646 4.763208217605281 4.302173618253755 0.3175567008406565 0.8324566607558247 3.786196399325171 0.3179620844150616 2.193131071006353 3.137553734362708 0.3166251771453495 8.669657731193276 6.74849426826168 0.316593588772672 2.896253522096779 9.664177676754434 0.335822323245568 4.096930396879126 8.598309493060459 0.6812041260651596 9.172046322174545 5.00000000000024 0.3095783741208187 4.88068356372444 4.027777777777833 0.3095783741208168 8.00799752183482 1.655649136326148 0.3096014628039806 1.974885287146781 2.799366785401056 0.3448847296869261 5.65740856171487 1.496310355329792 0.3185200806333232 4.626808105317546 4.598524142132153 0.6814799193666765 3.211624354160177 5.431857475465348 0.6814799193666776 5.617250475783655 5.448134089115315 0.3185200806333233 1.740056759369615 6.218532577551851 0.3185200806333246 7.675188305487141 3.52152464388069 0.6793254762418572 7.020347109007434 1.358114359100568 0.3183792538025304 3.104191899074358 6.406016075362237 0.3184525748536897 4.574396062215983 5.123556899905666 0.3180638218498703 8.181728565231554 6.537965929968129 0.6910128913819653 0.9446904076277169 2.232183970384087 0.3088194019305004 6.958624997259493 5.694444444444449 0.3165085460947564 9.532643340243162 7.50957400688128 0.6914678138328016 9.192597070675403 2.379555115606471 0.6754685502359148 7.71837049087951 1.448532675910204 0.3161153480824944 7.239188372334294 7.231602532257249 0.6916112929782412 6.477164079476094 6.249999999999994 0.3165414268039462 9.532848364055225 2.279405515701295 0.3156825209165218 8.683984611917289 4.16629345567072 0.3082438522995676 3.434904366908184 8.982533359576541 0.3401905736987059 5.390508506563847 5.278133572097651 0.6918383045690091 6.461578908872313 1.388888888888909 0.6831028995312793 9.294503513382558 8.773195692511832 0.6887492950686653 6.538543853024197 6.510541290443811 0.3442685004382927 3.999359721635098 5.407766904476611 0.311065455442025 6.559232559079493 1.093543520229699 0.3383675716982874 5.745548267539575 0.8443967906002197 0.6849501393082392 0.7063782890588131 6.187281864369735 0.6844539757340733 2.185598540928055 5.631726308814116 0.6844539757340733 3.147848989577425 6.034940357853205 0.68445397573407 3.380644729331222 5.909504086591925 0.6844539757340723 2.666723765252731 6.312718135631028 0.6844539757340709 2.89951950500654 6.590495913408819 0.6844539757340702 2.418394280681853 6.250000000000286 0.3155460242659294 3.75313895618765 4.733069603491524 0.6810020536616336 4.439986202101091 8.750016866803671 0.6834710919411078 9.532741090725329 5.100801262220195 0.324907130954817 0.3407145283419242 8.194444444444347 0.3165505243388447 9.532905090669031 4.368910383463216 0.6845718817112293 2.899887099463743 3.888888888888927 0.6845718817112163 9.271280480019009 8.872843729807732 0.6863091948218987 8.722444663373667 5.541276585208769 0.6790939898911801 0.7287603793386753 8.118584906144349 0.3300399596579294 5.365157615551212 1.31175070846506 0.6842748225552168 5.072908431210563 3.055555555555928 0.315255333640877 2.548513328020987 7.287668616689453 0.6849592088519497 8.679213908337722 4.444444705248363 0.3150406775803405 1.584924868365789 6.25000000000022 0.3149526084404375 4.222430610590264 5.138888888888935 0.6847906578667791 9.540090443676521 5.182869363113586 0.6828702584529073 2.20817803883395 8.045369967467508 0.6828702584529079 7.389095178361277 6.382140791946278 0.6881623526422425 6.005926991941287 3.372478341348264 0.6831810648360763 4.835755818141622 7.697185449378823 0.3316302475267651 0.3352282731402217 3.26552990026416 0.6853956974820189 2.180767666364607 5.206692321958657 0.6853956974820208 5.308081624475177 4.234470099736271 0.6853956974820186 8.435395582585576 5.484470099736266 0.6853956974820217 9.157083419072633 2.987751665357959 0.3146042178645642 1.699642705963138 8.630505168279035 0.685482034820475 5.32610020723617 8.333314647276223 0.6853969559663359 4.468979742124374 8.611077141081868 0.6853955803711909 7.351856821448847 8.74387923505236 0.3059194372996987 7.678095241054309 4.634948260579671 0.3242152283066825 0.345253729989127 7.63888888888887 0.6834186759352703 9.533097138753332 1.054624901671773 0.3157689323476071 7.46951417746956 2.041513431450794 0.3164928355354609 3.631926079305148 1.736111111111335 0.685699588477366 5.068466450671678 7.98611111111148 0.6856995884773656 3.143965553373306 8.194444444444821 0.6856995884773673 2.783121635129816 1.944444444444468 0.3143004115226513 9.278312163512787 4.300109153335919 0.3054747012329359 2.385328429980153 3.477668624442229 0.3054747012329254 8.954417532175169 6.457750884841688 0.3143651280217237 5.54898637676826 8.556706069745749 0.3313232953161492 6.839925922978182 7.040257859331422 0.3162896129784845 1.226118448832858 1.17595886190629 0.6848483489126576 6.755058638123919 4.638826213332495 0.6803928969559125 0.786563381287478 3.801183889612465 0.6768536755773187 0.3483736848769811 4.043185097767173 0.6900687307001674 3.344541461693417 4.446379204055049 0.3145320244301835 4.943389847480228 9.074691074246726 0.684072220227694 4.59206854599491 5.366071377061862 0.6843896016612024 4.823819703808427 4.722222222222228 0.6915409824312385 9.690190902793372 4.270645820644595 0.6691293530127388 0.3308706469872612 2.211951424070273 0.3098435899565358 5.816210637330988 2.255882898265753 0.6595862586168553 4.688188532053505 2.811438453821465 0.6595862586168497 1.801437186105408 1.355228212845779 0.3404137413831456 6.651557430101573 9.665995525049972 0.6647484186065683 8.912853827293981 5.363150865930711 0.3125771566181993 5.780957880426093 1.632421227197484 0.6598028376635339 7.133020267747713 6.006467661691936 0.340197162336468 2.08120541233871 1.978689883914032 0.3401971623364619 4.206725694407366 5.450912106136332 0.3401971623364682 3.043455860988084 5.728689883914142 0.3401971623364687 2.562330636663398 1.388888888888919 0.340197162336462 9.077292778742585 4.724837196123842 0.3033773469228912 6.309863524291339 9.698934921873651 0.3351175609766062 0.8337526897655051 1.667849873088656 0.3131971168717718 5.89740800771703 7.410052722098027 0.3160966051756576 2.206027098770001 1.388888888889143 0.6877354838355501 4.485879088621155 4.382259246874637 0.6873089409721891 6.026525771184083 1.388888888889069 0.6872409479882341 6.401171784312514 5.640088882211609 0.6881910436677502 8.668194062900366 2.721082844897516 0.6880606091373829 7.722016118391076 3.8680700240665 0.311150989591013 0.7011449047082765 1.389656253099059 0.6870548202971442 1.573187298792441 7.075583734830561 0.666515104696332 3.912041992641033 6.973110368683371 0.6900765773102592 2.450769900974767 0.3607659377672049 0.6807069967860682 2.131921035457807 5.27777036151485 0.6985541772535671 3.585001290785665 2.638888888889117 0.6985596707818942 5.108560219365448 4.166666666666936 0.3014403292181063 4.386872382878501 7.222222222222216 0.3014403292181088 9.679249850450212 6.666666666667023 0.6985596707818935 2.943496709904586 6.388888888889244 0.3014403292181107 2.943496709904555 6.111111111111428 0.3014403292181111 3.42462193422924 7.638888888888889 0.3014403292181127 7.514186340989189 6.25000000000029 0.6985596707818946 3.665184546391591 5.825848122982582 0.685435546673539 6.406171983948284 6.112404074325254 0.3147856755353498 0.6127928407597223 1.111325577915948 0.6827274782683806 2.653435359476274 4.612968280190115 0.3086375927629715 5.288176679684806 4.312694388597055 0.312904876428312 6.604903919061186 2.475902481915882 0.3139152720831346 0.7305571417133561 9.404842976503454 0.6821371615084826 1.971800192912485 9.117921600226895 0.3160310842877982 1.675761013798054 2.002664252320911 0.3331700741744683 7.633762023526296 7.222222222222459 0.3106926909785228 4.456163030330556 6.905956784292695 0.6911853153072816 7.251402867877674 0.9750620638247534 0.6981460238513104 7.512896717488472 0.7778595288254163 0.3399942113075625 3.725492964179896 0.6966526807758054 0.3276645406719026 2.245437814615501 9.166738167170109 0.3016887080706647 9.680308878605612 0.3147814476291606 0.6871945025391857 5.539298489326508 3.798560766984628 0.309207186660407 6.523899320449025 8.194444444444418 0.3045091114413073 8.165254156199115 3.901666895946182 0.6855006744896368 8.820559401509927 3.203141110118164 0.3059845266865771 0.7806289696776015 7.450895931142427 0.3346939662667248 8.584974574399201 9.160545380076295 0.3145268629082098 0.6061711758883312 5.140979065607507 0.6915601381752934 8.523701847885622 1.101735548814375 0.6775972681446227 5.781132702550574 9.078834029598797 0.315759887422815 9.154070368034491 7.81780788691646 0.6915933996822061 2.167518151147971 4.390966629667908 0.333074060370821 8.525748896268867 3.763279830840645 0.3152142146398708 8.439191977113493 5.471118288258825 0.3327133911798723 8.76574928080413 8.745734346521587 0.7001395424407264 1.903521500052217 1.53096058788819 0.308563456718097 2.813380956235784 9.664588990304189 0.6664169128469795 4.908348261166441 3.691852703768567 0.6686627821845497 1.613891800413887 1.762380305261689 0.6932674427244736 2.196881631037551 7.179547424752537 0.6651268486036492 1.321972895533926 4.861111111111263 0.3080227541328409 6.62405078054311 8.510256284342562 0.6841826292690678 0.9237459345740247 0.8559408014061218 0.3170767055783285 1.635145940575863 1.079267928936408 0.6635091868241498 7.083982125074479 8.457444767071365 0.6952596366131774 4.782669027636313 6.837897373602604 0.6650292527030944 9.250393375065864 6.66666666666715 0.3085063076894864 0.5968462041416149 1.666666666666681 0.2995292835661138 9.67924985045004 6.250000000000003 0.6391808513207561 9.305557618874699 7.233952596176737 0.6923384634929923 9.688947752848124 6.111111111111236 0.7012491477147591 6.800883463750358 8.611056892082194 0.6992275752416111 2.939425979966391 0.8410114769801391 0.3101269010111463 5.34930278492423 3.640287114522475 0.335759151788681 3.74252682910046 9.167117212214352 0.3456113268739451 2.406499186650664 0.9344510107156813 0.6848093189728637 0.3545894633631484 8.626175984174999 0.3028441158989275 6.310898361199344 4.310469164325679 0.3088987992465911 3.739237108909362 2.8015772584623 0.3352514134849223 4.212756671523907 5.701410779058242 0.3320547342038034 3.55767223211677 6.520811443164674 0.332054734203794 2.008571038142489 5.431358586357232 0.6899931652883984 7.152019041195968 0.3376544994559171 0.3318041049191459 5.678346673692766 7.909798895569573 0.3014329924686032 2.394056402946935 7.659967220554528 0.3080367452905124 4.162253048500382 0.9379522223036634 0.3321217432907996 4.774571848040735 9.687791310760765 0.683668755410294 0.5564359008023052 7.705809467310385 0.6744028213551441 6.111406906908609 3.956120380710928 0.6886027286244869 2.677109573121667 4.768315893175101 0.6912099323316425 9.162372575182816 6.6580178227575 0.7017629463038093 9.674256438091039 5.441281282188855 0.3119436866162367 0.3458955421098837 1.515438440776513 0.6835186260925233 0.3299293851850951 0.8462323639150779 0.6839689148833757 9.311445352394546 9.146839436655263 0.6775564995352915 3.943059513186797 0.9743875407358935 0.3006492831144534 7.994129531640014 8.815533527800117 0.305175255595968 1.22186446285743 1.38991107895713 0.322595862760563 1.432394125675632 1.328205919964782 0.3108951093134993 8.446959702538885 8.927544251873391 0.6939859605876353 8.222355943062823 0.8432886935370082 0.3377707546532667 0.7266985612204875 3.34407648147228 0.686506434904024 6.514357621854602 9.244746498752912 0.3133219150113902 8.656562366851277 4.425121380907185 0.6984036375661211 6.955930518160335 9.658035560656623 0.3373528890848563 2.686563462136263 7.50000000000035 0.2971500081544113 3.090495887365961 1.445371158224283 0.6709834954154437 7.6178029700805 4.447466248654261 0.6795491841231367 1.43561828672397 9.160997708353005 0.3085517068756597 6.865577105400456 9.289502882241628 0.3230260325478475 6.541716184765581 0.6474607376937347 0.3345073962201497 5.832927325230929 2.396065304051864 0.6851597032698575 0.3535569784634025 8.026115445757073 0.3310709593093301 3.711374127492177 8.292419926268245 0.3113546293974363 0.9719812666490798 4.250342316480065 0.3188249987190639 8.984662031726618 5.287364812910287 0.3026090012708947 7.891231678240731 7.067387116296084 0.6690912896562788 3.064566343981869 0.5561109569038535 0.3088631702828786 3.469622138736812 6.125429395688359 0.3096063839777986 6.39602988031921 2.375493272603252 0.7303453502350198 3.37659677800796 2.83175459670519 0.3196470555125011 7.791476590997819 7.960855411895857 0.6859200470311494 1.760386872565333 6.666666666666703 0.4086533016197013 8.075499102701251 8.262557631071335 0.6910331856572348 7.698026674113097 9.407742693727595 0.6881699516768127 3.593276846344549 9.252947580677979 0.3032330004322759 4.617128883125805 0.5725639586686138 0.6722122027264577 4.854298689408181 0.5566272805758302 0.3002499079617937 9.698907354263529 4.429915582131622 0.7039407308977794 7.746360710583946 5.674558291501498 0.3123039298494996 6.75862914965794 5.714486392396123 0.6693749935005073 3.47009579948224 6.507735829826811 0.6693749935005167 2.096147470777046 9.027777777777915 0.2995096520463346 5.71864376839387 2.059357700747754 0.6919529810931568 0.3612254458901153 4.831940980596967 0.6687866113700703 3.968906982157296 9.620830623392369 0.3121390223308853 3.155987336689648 7.130359595661011 0.6923073642013992 7.717027765822667 4.437840735473352 0.6948150540237512 5.056092449186012 9.589365009294456 0.6985848787739621 7.947378427465016 0.5972871647632545 0.6829111604637841 8.886855122991186 3.299318470157443 0.694971761709318 5.348701909894611 3.945617847960851 0.6826702952206352 6.446979269756746 8.727099973512944 0.3115797463020707 8.566099798490763 2.498494244436344 0.4071270087819681 2.302865759185 2.222222222222641 0.5928729912180356 1.819132489719593 6.789032068422978 0.7046794808310745 4.31622468523528 9.678330361494581 0.3165111276699334 6.6459448419928 1.944444444444891 0.5877686781446916 1.340815351237419 9.238810294902228 0.3222697036671983 5.140075240201183 5.155866847778994 0.2951521962959868 2.391986177327627 7.100636467880549 0.2950317608674199 2.873299141905627 5.115979059717671 0.3289171140985808 9.313342112775469 9.687557228975638 0.6948250835661972 1.652707735180393 5.835714067082928 0.7044223592384226 4.528969403957345 3.590016626998756 0.3048305960417871 3.077904872338337 8.342545217650944 0.3161533064824139 4.325019134632496 0.646214675059791 0.6916402979924114 7.454938989124064 7.3299131553619 0.6888354483276697 0.3558223030294466 6.985062451235886 0.6786509074470203 0.3196492377042158 3.437393798383385 0.6894414342341577 0.360408478775236 8.620899890558746 0.6835392711788382 1.436379565609687 0.3258004076416735 0.3144247085608285 6.659284060512145 3.999596438664406 0.3013186712000278 7.033440408827481 1.372362361912225 0.3287753861750019 7.560937046145131 7.531662485054716 0.3295581543397036 0.8769753710749086 6.919028346860464 0.2985796065042894 3.420162508851265 8.171755618210398 0.6710581305249774 9.313647721466031 4.606616439171386 0.3051370456443804 7.061863417724937 7.492925909368356 0.7086619169992422 1.183938727443171 2.237936163347614 0.3015293300684538 3.130534174714012 1.12173372409258 0.2945036882795904 9.673116881985683 1.162292754621151 0.6738443001638021 8.551295295077162 7.288696853986888 0.2994638472251586 9.159745479581934 1.481236447950465 0.3041947728201203 2.39077145346964 2.463124624157071 0.3052208796530718 6.030919975573656 8.6051570641692 0.3002596034973348 0.5704032701609705 5.138888888889333 0.2949193515169574 0.7987635968915405 3.904829259550794 0.3001992316910898 8.736870215372329 3.959808324258075 0.3211786153442718 5.645874104584597 1.130701257528547 0.3286134184235566 7.147643174014529 9.239263232334146 0.6775851124469507 3.139550475707294 9.010000000000124 0.7051440329218108 5.5794214389049 2.521045872909156 0.2936455614739955 8.223723337086509 7.252171535716641 0.700370977980739 2.625570108841709 9.307819352476002 0.6900555395078579 6.041543106522763 2.764649047745204 0.6841909171699707 2.875959742113364 0.3570033678689817 0.3150835623695444 1.810428435765386 9.703506889508461 0.6869372000113942 9.70352005351879 0.3108813795430607 0.3134215179236653 6.109347270946662 8.228442252762255 0.696057500736458 0.3433882552725219 9.30115477641974 0.6673824020217234 2.658216240957666 2.603114932689786 0.6978655082379802 8.635729772097848 3.61301078958616 0.3088025720756092 0.2999405511137158 3.187556791859817 0.2965169232963841 6.579215317126126 0.7438784910260949 0.6956258541687944 5.765368910167158 2.123632609552515 0.6946620138352773 6.757807977530751 9.684974924506887 0.3239278018939448 6.100727141770308 5.612995288038132 0.311842922904418 9.214340664841062 5.165524775601011 0.6836944991287952 0.3276530065022262 2.794396575409242 0.3183516428470862 3.185380644507698 2.279793494095486 0.6767451967329946 0.8560145194243871 8.228290964085415 0.3080635064573157 3.222034190669469 6.127075052205934 0.6919364935426946 7.963423408065931 7.515963941094978 0.6919364935426831 4.819698227063743 7.966532411565377 0.3001286647746603 7.495981381883257 0.2987782253578327 0.6741632256144156 9.168696783016598 1.250000000000392 0.7068854582386445 2.356226711793536 7.79645744950561 0.6992776326071111 8.744876775409208 4.030102074505018 0.7063073467358696 4.174490433846266 5.57963060626917 0.2925236437686495 7.259723991816475 0.2991171641978633 0.3172894105637907 0.2951334281587854 8.503698497235504 0.2976884612549675 1.906907307209815 4.425294638575723 0.3065349783369298 9.293564176146482 1.955907996018667 0.6670814671830493 4.2198788235164 2.895507588823876 0.7039633208879688 6.228230972432598 0.3275591246250129 0.6815078888384196 7.615006888665033 0.4287804133988569 0.2965832516820881 7.053338927262018 0.8091504182264297 0.6889331294469555 5.341057868713809 0.7199336982348125 0.2946656030363251 7.494854141871044 6.09486499389527 0.7055714478775592 0.7097596157216839 8.352642696040455 0.3003935152373406 8.850456965307927 3.497733751720137 0.7011144482260627 8.484847791408027 2.941388994260956 0.6988128985068792 0.7800597496772507 5.718643820600937 0.7067547634275859 7.497821562277815 3.086849258607186 0.6768630015180995 1.294650095593999 2.498651748297932 0.6112905484629263 1.339682675612936 0.3368344537691925 0.3341664864265432 9.348262900166123 0.3079217209777464 0.3061848673455098 3.060336427994828 6.848884923436059 0.319504816780909 0.3195750862365548 5.394217236316295 0.3024723137279867 6.10647681269637 8.061261874831336 0.6520262240750757 3.764042279962907 2.733138577724861 0.6867886610486205 0.3180820136670189 0.34265646798045 0.3115798404679701 5.342296462999218 6.035192224110689 0.3204485557080928 5.918389546364868 6.919847768966874 0.3204485557080937 7.535863280502587 3.137616076796486 0.308323695889246 2.232538980138738 2.519007265915215 0.3101531240424604 3.645082365242585 0.3274484853909445 0.6992141335583451 6.933514783352617 4.248403972017247 0.308184538166356 6.0813238493146 3.420598614446173 0.3114349817133916 7.07142346530576 3.133769907416848 0.6796745036993922 8.312467284767305 9.67462118523061 0.6790956632949154 2.733389782675664 3.862305662637572 0.2992070365076046 1.163691376578254 0.3368764990496619 0.6568923350456428 8.486095734974638 3.035015612689716 0.6935227000891747 2.411091540469994 1.726030006067905 0.679501368079315 8.554761174394306 6.033888296463911 0.3200237253016155 8.792815945124399 2.651620430075989 0.7029866374549508 4.663288587397111 2.364024229026887 0.6753735605088744 6.365201945051663 0.3082904233824577 0.6952363974347985 3.050518247180354 7.526940987693968 0.2904524927323953 5.043927068475524 1.127755786889184 0.3146788834578304 2.211724487563754 9.396943129611097 0.7040276954438697 4.546382844543126 0.7587450588833621 0.6944808590229603 7.016801818148396 7.66290626627766 0.6960757887688614 0.3534629171046297 5.310401601157597 0.7011993158964213 3.913976757568061 7.282196648989218 0.6932414480617157 5.580215505571599 0.302080832042849 0.3025759510229729 8.329783413926334 0.5565250043001851 0.3085586017406478 4.019866326877503 8.869733603823565 0.3013810657538719 2.174483627563853 0.8484703948105339 0.3063174093551138 9.254753247804507 0.3024557678161955 0.3053793336268968 4.444528701508355 6.905813320853643 0.6928091843405116 5.941640304247113 7.206560732895911 0.3227344560698223 8.044483570737739 4.886548304385479 0.70074526714339 6.749555463170121 2.228368535379552 0.3366495833930667 4.704073956872418 6.765050958340477 0.3077486219917399 4.197194204239577 0.7122222222222742 0.294855967078192 8.947298009177247 7.49306330199997 0.3241195011692221 1.826751943237124 8.887826902256839 0.6918711634860775 7.695483099287467 9.682742485582352 0.693585572701186 6.920996252578033 0.9932193144026578 0.2936751637643091 6.243236492264838 8.61249972706775 0.6753620659281087 3.75062136224848 2.265124838263597 0.3027960385984309 0.3163786373791641 6.140684747033099 0.7078559898667258 6.478491424092924 3.267439431231475 0.6926282922439835 2.95275578197759 5.874298876015363 0.3073717077560175 8.288310434614463 5.789398623077732 0.7042420392921693 5.038603094285305 5.80205898694869 0.3050561409532957 6.388088007778745 5.256713116678826 0.2990663999685125 3.949633400754993 8.088375526709392 0.7074017437120536 0.7151682397528589 8.246270444290019 0.6995452374778476 5.751596864897859 6.695454492210527 0.3140799529688421 1.410852613505121 8.301142327768837 0.7088749695201206 1.476524498463203 9.237712343138814 0.6924687747127207 1.458129967124982 6.252604543630477 0.2900918796124951 0.9034273108710051 9.539857406486606 0.3092367945738966 7.483994713242846 0.8300240016193097 0.665074414794697 6.686372370027407 2.538320296968489 0.3062750406008611 6.856354601248915 0.3024510362446687 0.695145796729057 4.448665381505727 8.729991525300681 0.6881996494102396 2.635979052890805 0.3382393954210476 0.3335678343366693 0.7030191852831196 2.038728134603856 0.6931584856969175 8.044749712449409 4.599675867364531 0.7007242186919451 7.472383456682396 3.242897891789974 0.3048817243007478 6.099050260993669 3.297023300855005 0.3158098270896017 3.211562266463636 0.798724148133971 0.6643512550531689 2.781421185146695 9.472033137694501 0.663456915866476 0.3024111485870256 8.614038108788261 0.3234615301441457 3.749153740738477 2.986095861071436 0.6859200470311582 5.189408664658032 5.954774860854378 0.6839966784870205 3.928448616862383 8.534236812258932 0.3065475850713384 5.728943560294609 1.906627774416127 0.2874341551335164 7.93695749254683 4.932506227166584 0.6973178226434144 8.159558339416591 3.018383425271028 0.3140799529688417 5.245332366304376 3.113044741122747 0.3105598780164445 7.34476597976502 3.05555555555586 0.5162780911474185 3.745372083778858 2.367982647078835 0.29042366442546 4.192558181809209 4.374963232145028 0.3036213424376082 4.630834858178198 6.533081042706623 0.2891277737381618 7.075605636778738 5.000000000000432 0.5006354218756174 1.339844597320594 2.873864631341007 0.6946122917174598 8.094060285111897 0.6803268375141819 0.7005892860473086 3.861818757808068 0.3094886988798745 0.6565853692250483 1.367194407678473 7.285280350549956 0.6859684696523476 4.238397020632864 5.101690539054411 0.6991270124096992 6.194111189959231 1.638807810498721 0.6993536322125201 7.968327635783371 8.924681002264363 0.2857942895734195 4.847180885240676 9.402782356188185 0.3043766950792735 0.9574306763327147 4.10451598202061 0.6861781982212001 5.174622436696364 3.823475038855617 0.6883650751532366 6.871357071164865 4.674591602672789 0.6859200470311579 6.189468180176682 3.362503064115233 0.701047686230497 9.323489974144131 0.7459967492849126 0.6959492866952206 4.315059512165559 3.768631444596729 0.7152672784978318 3.182842401320479 4.194831302685359 0.2884841049939091 9.662988990263118 9.310657110901076 0.3119375703359977 0.3193052342535656 7.071121820223963 0.3133224439807392 5.490975522479733 9.715733631921083 0.2889258473549317 9.715737114589137 9.673243056586859 0.6731310050873744 8.461402661340019 4.133353725313402 0.2961888749831624 5.003417802979031 4.74615691290252 0.6833878085074863 1.853757858788404 9.703311391510208 0.6703537673640785 2.215224262995717 8.830651962473191 0.3173194754793233 3.25622854850397 3.313188572186031 0.2962117204088478 1.080611538188382 9.688550975666065 0.6885509756660646 6.160257911908117 8.287327689150947 0.3116928661674309 1.388472676946185 4.672156576506451 0.6952651974905366 8.343132722018845 4.315434419358948 0.2966894838049678 0.3632318045278743 9.35207557574625 0.6965496045342983 5.033706134721456 9.546319096320428 0.6946178593717708 5.56269503494927 8.259787467338194 0.3111735871589387 2.559411367072883 1.664390499427525 0.6334833225653733 0.8640908904458673 8.566152963164766 0.2847891633120611 7.941080626745562 9.692172244884864 0.7079083614612827 3.893371970706657 4.583466883768627 0.7151884493920827 0.3822257208326837 1.670561139300961 0.2868567573451419 5.457285404440065 4.787494686340087 0.3086641340987908 9.690510647819712 4.680667676925932 0.7041640482270157 2.479844205243319 6.044710825093531 0.6911832691669504 5.898611805881148 7.145675821501744 0.2937927765896445 6.288998202731329 9.672560831678606 0.6730757131284328 9.303687795694481 3.152540012576261 0.714716492807556 6.042647301178891 8.103113183577959 0.2838263929135587 6.018080539968389 6.099803172778806 0.2891594865669892 6.850372306399353 5.181434616089541 0.6984477882604773 7.441192610194274 1.000831924731839 0.6863114138489819 4.875397453809606 3.193085261551134 0.7053189706730607 6.988560119829676 9.315703624725789 0.3008617899845595 1.933841053013209 7.054283834651509 0.2805996133877761 2.205037137533557 9.7028544402216 0.344546527751721 1.688002495556561 4.865539209485807 0.70652778150465 8.678826394450986 8.888038181927953 0.7247484302467421 5.020076620496781 1.907171473677236 0.2861263601954918 2.653676341921822 5.79530758483681 0.7058885498150571 6.815347688028365 8.42461004125712 0.7041469514748128 8.619661488785351 7.68221257712439 0.3009915218969428 5.661925787386303 8.181151266405996 0.7107804374489572 6.170060703238574 4.911276459000192 0.282825895181806 2.192629680921976 0.3278063455352871 0.6800870732902713 8.106913888392707 9.331950642386024 0.3030308465388757 3.63436715506471 2.825844140339409 0.6894182307004688 4.198746180739772 5.744347055599088 0.6936521890756111 9.336213619155759 1.113970726909337 0.6820699890476924 0.8758022259704195 1.663392727187026 0.3154691613331057 0.8643839545048024 9.099574147739466 0.3104986781237321 1.360312202351313 0.707396780219361 0.7231397713142822 9.606540347608714 0.7472948436348784 0.2983130774581343 7.041054233369024 4.896434065651531 0.3104236367200142 3.948680270606512 9.494871572720614 0.3077399094502359 4.372586107401685 2.071802025965367 0.2958865440181913 5.535082656144653 3.888888888888864 0.2814664694104829 9.3225643888905 8.997872807216057 0.2865282013861357 6.069199447228125 3.100243863907648 0.6901980673655694 4.678764713062131 8.886363030197559 0.7102044382398585 0.2891548300078337 9.302030530297836 0.3039172361468783 9.387119668518451 6.389113041822622 0.7083691580190467 0.2900888541232891 3.118068416178521 0.7027862285593627 0.3337677096922264 9.266395210753801 0.3146689899630813 2.723311414145591 6.037220893142285 0.3047334947919808 3.061211247444441 6.185001329080659 0.3047334947919782 2.505032022814818 3.740923015173879 0.3096697451520048 7.881908477509739 4.334142797381451 0.7091642330450464 0.8987481830634516 9.353286252017082 0.6976036516909228 7.047967922577365 5.27637276115896 0.6883616094940628 0.8971114025258878 9.681329680858937 0.3044888285105961 4.928684202436018 6.696728379912369 0.3101581342882309 6.659901961782839 6.278009612272951 0.7077484541320574 8.559650001536349 8.90380437036068 0.2931076438219585 2.909000343198126 0.3167353477351045 0.6969452167802183 0.6521245575881915 2.200951197379654 0.3726625227925455 0.8715312568896157 2.494569675110523 0.6836032496594671 9.514370314822788 7.468298420279534 0.7157484230698095 8.244198483356612 7.908024937167703 0.2842515769301835 9.149553615056387 9.693771676273753 0.2877124431583126 8.368654681853085 8.885854562803315 0.3140974657940332 4.204607504339579 0.3975404121055898 0.6972267254337535 2.704264249457376 7.823427162799188 0.6474228365637194 4.239829347314071 9.152372511609675 0.7178762570704325 6.316803948083693 0.8600082119835645 0.5643079962147255 9.022348802980996 1.882933877653884 0.7032808195062129 5.857107096742997 2.544138056346937 0.2843807460535568 6.514173307072407 0.5541897391237718 0.308649001025334 5.097415538002685 6.711838111250695 0.7097235220140093 0.6857594524267464 5.968522976006753 0.3077927016576987 9.689152219082718 3.318458115194273 0.5075557664485471 4.237395533114015 0.6796485260496524 0.2871550749608937 6.153958986886118 8.678326817518528 0.6995625206940481 8.037798199691602 2.470755284787484 0.445891613149708 5.171863312552438 4.677305399087355 0.2755574264524739 8.422181992178979 2.210958939412402 0.694593964746657 2.732183395827565 4.530978320543922 0.70472533576347 5.351425222910036 7.143365533398089 0.713796180742281 9.382211154572143 0.6104257455251312 0.2996569557242455 0.9690707714791453 1.521499089216924 0.7295799031387289 9.602687315593403 1.120404915555349 0.3647075168331275 0.8791872703657171 7.468789316756051 0.7146026333773016 3.630972534635267 1.651166802764448 0.7228592332004452 2.483681697846167 4.568318526947603 0.7194013575235592 5.781931464887578 3.937211563352169 0.2749284418102143 2.650645669463756 6.527196738913107 0.3029713891504366 5.849837758502808 5.117933489498518 0.3026206299205367 5.96845021925913 2.260429125435999 0.6954175154371729 9.004682934484279 3.000963243340098 0.2857396010451119 9.361843094521692 8.000187325772515 0.2793960024331588 6.513302586279542 6.942277940176012 0.2994567482104156 0.9338034369904693 2.743519868426554 0.3047466914169863 4.740417835807033 1.181707666228507 0.275293456952497 4.58800639775399 1.281810230375548 0.2841862167982454 7.955382931391044 7.231859465770918 0.7007528404043409 7.186598565251124 4.005027673764036 0.2842150158278007 3.771856408823396 2.028958444134186 0.2918335476956966 8.506387770287462 8.761844741262015 0.7209657387213807 7.085959335139686 8.042909584972859 0.3070623539378592 4.702406218135705 6.711733523264117 0.2849794238683144 1.716018882333663 0.3026804765332503 0.6973195234667491 6.182565651492047 2.471232339869858 0.3055849229581277 1.355278329902057 9.22461607973089 0.6885179795505288 8.322045318830078 3.449015521590014 0.2687849814840951 8.651237855284174 4.91808660480011 0.7054100736266067 4.683404560090426 2.660203117246394 0.7175412296798107 7.134257547486597 5.077124051654928 0.7271241343576568 2.667274152338453 1.327119243198629 0.2728776465520502 4.101784954895745 4.878942723278322 0.2874215662306958 7.731088512621961 7.69500753223458 0.7102687889652943 7.647892100205642 6.250000000000219 0.7282278466101095 4.24776158593193 5.283500098689077 0.2747239597977125 7.334382854762044 0.5955996997759296 0.2704602871002099 0.290249550523044 3.532627981368903 0.2877377696833792 6.69928208900533 3.506444412074842 0.2732736168236823 0.7522843710310267 7.699823677327742 0.2753537754374937 6.257682643315829 6.385107695887165 0.6981928790122355 5.143427196588553 8.447268828421056 0.35052861068392 9.709269266095582 4.087881929962459 0.2797421714230375 2.16755179413754 2.438418874442121 0.2793303081915258 7.930342814998895 1.32446582345099 0.706636778909828 5.378697661360244 7.962917524547101 0.2951820068043487 6.933362060973677 9.242004185875098 0.6846186057040313 2.323535491501625 8.446614862157842 0.2822756183217989 7.614811760391534 1.388888888888913 0.633524585198326 8.993497508292011 3.448750837593724 0.2809966421294998 5.645669779247481 0.266908325491446 0.2794259953055249 9.736261044963094 8.495966726457674 0.6542767970546131 9.703826703279217 6.713892804632107 0.6173610975296272 6.642079278449791 4.395325141919522 0.2699529996391208 2.915137667369072 7.083333333333551 0.2704369767894788 4.724093881941447 6.567193875623339 0.3011642612098511 8.817228317710562 3.009252783340292 0.2877562836546903 0.2942737972679451 2.846554445522529 0.2931422290380567 8.75544103635792 8.131352376141532 0.7190863222231321 6.774357885634537 6.957933743415846 0.7066411160788424 5.109378105600312 2.107501496552549 0.7196570966479938 3.772820297328367 9.368890358742949 0.2826827857641954 7.954376781171102 7.359904943040798 0.7162067846950232 3.132752170582176 2.083333333333431 0.7301752324190389 7.575993849446099 6.741190027907561 0.2837063982223925 3.666091060325441 7.277641907347566 0.7091138133095943 5.883580621317032 6.26287869910018 0.7068543127824116 7.275064289979079 3.237499445554846 0.2839919551914887 1.869655745117529 9.716779397099565 0.708579817862549 5.284570111956907 4.467131882203524 0.7327449521565969 8.882325678179477 1.707070414752976 0.3685308551036303 7.088973327462502 2.569984396420369 0.7057439136032937 6.844708555129196 6.406957360757516 0.7069375277066274 1.744030768864097 0.8314271522671322 0.3251480464044007 1.309580753300782 4.21723457267782 0.7191271645418169 3.847716040911245 7.723151833412422 0.2969326182384553 0.6395444633497885 8.300793236299185 0.7225445878194543 7.230824976871379 1.114610128572671 0.3033514209768012 3.285791306839223 6.855118302481789 0.7316434270644774 3.373049462121292 0.2520377284855223 0.7249814472436132 9.745169178795123 5.392815851117295 0.64351368779455 9.711362348848635 9.745492726635021 0.7252224747511545 0.257375155106502 7.518870216801369 0.6331491930371954 0.8904470439067731 0.4038591386476332 0.2842618978320776 9.032933900146357 9.354501649741863 0.7174054889633171 4.167922197198097 5.373181970795198 0.6354244899181155 2.998578346424726 5.650959748572998 0.6354244899181212 2.517453122100043 7.941372916595065 0.3494437019426817 9.707885506428733 7.892845161078506 0.6534386623693585 9.704522342541331 5.439197546062182 0.3414681658938562 9.699243641110765 5.9288128585954 0.633765967738221 2.037272561561406 5.699111462464671 0.2619324469281898 4.638989012623329 7.322423875682278 0.2714814981970912 2.669447756072242 3.531675653318316 0.7080984782779292 7.885384969318012 5.073759723817094 0.2936853116710721 3.477139673192248 1.579507319223555 0.279001165264263 9.388368652953131 2.311008530507854 0.2786701708010535 7.248636632832752 4.871733471086778 0.3014639061484815 5.443707063385148 8.135131737276197 0.7254874590183573 2.204887896365404 5.539976382346747 0.283914416373915 3.846566573381043 8.069419594447783 0.7273868307773457 5.463010241637366 5.754936252798501 0.2919922550404825 5.383328866598602 5.851414961094968 0.7053550830781931 0.9204610705180475 8.611353444469232 0.2683299968250469 0.2688018537046036 6.250000000000017 0.298011695609761 9.231798264222542 0.6332166927398007 0.6814834982409126 1.170586358311375 2.027731362632244 0.7212387258724801 9.432050578575165 9.686458893344742 0.3196401779515255 3.775234256711566 4.012032709285827 0.7138198300692495 4.855691747600877 9.517756450314167 0.6681257621356129 1.315357367978477 0.7186811553128221 0.7040787581867598 2.379209924601422 0.8773523322572333 0.6846517440153357 1.382735173250521 8.674492610745512 0.7118048856846966 0.671092309207065 6.882828148774315 0.7289365668155194 1.685112128276313 6.472789850028738 0.7307850231321991 3.864260437663599 2.499543731160104 0.7034905740140118 2.253208205934421 2.179742262979738 0.2965094259859898 1.844870148508586 7.766749947370586 0.7092642732312469 5.744399998148442 0.6317663973746785 0.7063177869788417 0.2994392119688649 3.216231804247217 0.2612717823060429 8.169927057170556 6.71107996375591 0.7043266508098477 8.049857073671202 1.909235068384047 0.2630405096521473 2.161949478776536 2.731543930836148 0.3640439823328206 1.847564310457751 1.227936341101345 0.722991939068632 0.4107091641663663 6.882209299711167 0.7101240878641975 7.549690106923963 1.205362655882579 0.2801020593238903 9.38294910284522 8.811910051842215 0.7265864437250967 6.053571446561767 4.394557949843042 0.7355025953932101 8.075675874375248 2.481675605674971 0.7411791615642263 3.895167564557267 9.067556694174634 0.7246717836203546 2.884230759213159 2.741818006519929 0.6380732061927675 5.636729448271408 7.989016269373931 0.2735532911839125 2.681383496280477 2.783522337968803 0.7093452646645713 9.109221306007059 8.639747119169757 0.260613818823785 4.563846886027236 3.575985396345587 0.7057408980360151 3.785053049841876 1.896547772907625 0.2938352475834472 1.367262828126841 6.695346132781268 0.2606220244868857 9.375057798381873 8.969732742001174 0.591949295831389 9.724814178935929 5.250424958146913 0.2625954457958322 5.036480441597224 0.285424949133426 0.7138290201564597 3.61067640670059 0.2874270271947679 0.7026260949810084 8.858420225294838 6.162116899611061 0.2774800664477276 1.513738627281141 1.646365744022601 0.2625951772731016 1.680130049975745 6.883043038076116 0.7089855534708236 5.64444331942293 6.720832080060337 0.726202446564412 3.639566618920459 7.074481213207775 0.2625942930843246 8.500369587739687 7.898262324179496 0.7426557444621185 8.465811037549329 4.919420213174698 0.2900031928952345 2.985540932164775 0.6477167930459554 0.7028859031854657 3.557880661320432 4.486419117584165 0.2911756356378244 1.290596064273907 7.399815179956748 0.2929219729848692 6.832463593669472 1.707833451069899 0.2911387242523701 7.642444190003437 7.800634190298362 0.2959643828122795 1.36552759245734 8.472222222222568 0.7429475835334771 3.322447138296889 6.23095847554044 0.2570524164665314 7.984317936041206 3.841803487211149 0.717471370421245 2.082660491690831 5.16206448949854 0.7416124588007224 5.762218731741473 1.405582421230051 0.6219026517893969 4.195897309183976 6.982328347710371 0.7345122815577922 8.908329486176982 4.39869478847068 0.2654876714032445 1.963915428290271 7.517118521865952 0.7436598067164697 1.670379494912635 3.707486589488392 0.2751435514370483 4.647303993688112 6.375497009120154 0.7418529114190019 6.298673225956934 9.693916705825345 0.7116978193492556 4.609479069147339 4.735618795373923 0.2576778934550119 4.374798086535294 7.767433016480338 0.7404250767509866 6.804432508725291 1.078493916728584 0.3905178575805354 8.588264155076015 5.418734646782787 0.7413520878812383 6.204224221085521 4.991747953904292 0.2530563133688795 4.552011778688323 1.667147230941792 0.2731483840477629 0.2761542179795431 3.886997912844301 0.7106907799124104 7.526831915232532 6.952914570356486 0.7469024291853609 6.306729428491805 3.892911725421499 0.2522361132794403 2.943500463900653 4.164867335304563 0.2517115305804129 3.101652293755571 5.972222222222236 0.7500000000000097 9.599062313062667 9.361175393928331 0.2869568317630633 3.322716078819154 3.099837757371755 0.2647660450190305 2.928123788601129 5.936767780935368 0.735233954980969 8.445773738582011 0.6601823520234649 0.2855407891072141 8.053488671982844 6.071828670544726 0.2795584269933211 3.987739652523353 7.853609283832622 0.2878842511148622 3.471438617835958 5.561958426922797 0.7482783940976975 7.751052253643924 7.300066960524445 0.2848725380598575 1.365325826613024 4.548816466912884 0.7056945316598414 3.502750037682509 1.643452382951562 0.7057553095623044 3.771611467347491 3.807416613003312 0.7387645760483772 5.302084791113705 9.386661206765917 0.2782295474409077 4.883664646921661 2.233687668318861 0.7462010018120455 7.269794255631314 8.063058679540339 0.7083240238600266 1.290000664910168 8.160689974820302 0.2580483395906837 8.456948637514738 5.82609239218249 0.2533387607558593 1.491844263150588 1.953812636690331 0.2623680901795403 5.952063241576933 8.254125726703053 0.7164056386066509 5.213305931516914 0.273977155028627 0.6553580794406052 4.758025699761435 7.736732760881102 0.7250734219330464 3.322872288358533 8.594186259054284 0.7458903683500083 5.039393320184188 5.715820419270204 0.2592296240618442 7.974785599657615 7.850292720571246 0.7245998780499147 2.459168618912251 4.361451058946678 0.2773186522713404 7.652155228291492 7.271649929704836 0.7402069770806534 6.765350359374221 3.880008734835737 0.7054701745268714 9.569377038142209 0.2747109745459354 0.2879707291079979 3.889247572602022 2.238646356127657 0.2548955040674112 3.421598153261787 0.5990502387624934 0.6984158775525582 6.118693669882584 6.651736938490241 0.293026233807358 4.735067291380789 3.191433147271213 0.2542893962612066 9.586373793246873 4.29935409596025 0.2583441113826478 4.127395741384622 4.24680411337886 0.7137569968003334 6.355414262580067 7.489970469902373 0.2584286866137024 4.56691090022932 1.188356342666642 0.2701743254685852 6.019499422654014 2.28752568307482 0.274422447003321 7.677857410846713 9.718015172292088 0.6881979339212877 3.584686953003522 1.805495212378174 0.7488404847700693 6.544601353444675 8.623184537052452 0.7469055477163862 4.545649408915582 1.528928226536288 0.2508807950530438 4.314169575610246 1.417099176636135 0.5833864554393113 1.299475875679144 0.5490153130534882 0.3040999326718596 8.512725243318338 6.316411042561865 0.7277312075865005 1.186348194631416 4.608806754595583 0.7464669447665158 6.537228805716746 8.348034532226809 0.5795227981521065 4.195667940752237 7.08956163067568 0.5716999006506748 2.207950295915089 7.986281692227135 0.2800469610142175 0.2870348384344938 8.364029613851395 0.2859249859223174 7.056182088203999 7.222222222222229 0.2451964471688055 7.433998803601749 1.793743652580068 0.6095766356428202 0.2563565380676958 7.500000000000283 0.2465615134391889 3.910331530495418 9.303139499231904 0.7422546963080741 5.744977025927934 4.699561111114496 0.2608278134308941 9.386765067895471 4.453667874356888 0.2482919574236908 2.628071710097247 3.611111111111089 0.2482919574237029 9.208774925610555 6.527347533662046 0.7515964006511437 4.157009144718037 2.616397542478851 0.7389620542201556 3.635314882657975 3.537647960468459 0.715020576131686 5.923195110065236 3.458092096167337 0.2602373675008824 2.350266995027157 6.446630320235364 0.4379580818461587 9.7139478337141 1.12508265014923 0.7409103810260598 4.365979443873984 6.935773597743673 0.2486421663298249 3.110423518852572 3.761688506005088 0.7438364229526666 7.174220059954913 3.56518890822513 0.2887940275065585 6.149017252753804 4.043167862791129 0.7389945339666153 5.715748871069657 2.0650500518007 0.2594087551608723 2.409183566756512 2.870755742948964 0.2668248960153244 7.187490510779434 1.668722575514712 0.7507901836473327 9.350011664711452 7.119765697928069 0.7234042820233234 1.011029647905125 3.698530191944279 0.2564133078590196 5.078002793241403 1.932291936677749 0.7127802635334314 6.201653678311663 6.737202256960456 0.7431362644410084 2.663802154257326 7.415009250850247 0.7210045169271577 6.140786773020101 5.87149448275467 0.7322460314030993 0.3091558003104575 3.589788630982577 0.2815634631424795 1.266369079081804 7.948919893199811 0.2630171709375311 1.888183431505812 7.497215394236957 0.7512167449555134 4.534837508294471 3.339971458050466 0.7415710622506284 3.399085671498665 6.89102091357393 0.7148755964868141 4.678303017169208 9.698216212919467 0.2953063198043597 2.302843103273716 1.141083610366131 0.2559254357652039 1.677800742218027 9.712949807983259 0.2652482510464719 9.398461002623737 3.645114422172912 0.7281348368650935 1.106900259409519 0.2784433428075988 0.3877933886248732 1.519147832417382 0.9321864927733805 0.2910819434365119 2.833284601389762 8.48472860593029 0.2491025836330268 3.34723226417962 3.181715713264468 0.2476428275592258 5.757409454838371 5.0248358998496 0.7384795120619609 3.446197209801548 9.44135038590049 0.2576636961374065 8.879135701487558 6.049478529167361 0.7160012472247405 4.726395253014497 1.797607899846991 0.2494728447370621 6.541457163766882 1.949471432086622 0.7505774761355939 8.865066693744993 6.797410196781228 0.2494225238643648 5.279442684558447 1.653494320250376 0.750577476135633 3.422821541816264 1.936299085670274 0.7505774761356343 2.932989319486471 6.540950124194461 0.2494225238643523 8.474636397225687 2.630743530114384 0.2494225238643663 8.947054623545069 7.420201027403707 0.7399676621483531 1.944798250428508 4.166666666667086 0.2473889929330355 1.644218553141199 4.041879717151939 0.7526110731510929 1.42807619904781 1.403142774742153 0.2473603915087113 3.416392449394783 5.966728288944245 0.2587182949669001 0.8584845241291179 6.65207535782138 0.7419202582765034 1.207026206530483 7.916666581027212 0.2434264821830095 4.303010192092354 8.183045251464852 0.7524842743693958 3.34658224116799 3.062245345118358 0.751071542147186 6.461188866186375 3.044945603103084 0.2464375942160207 8.403727287615046 6.096248420237274 0.2473748240575351 5.339748872997176 1.945131185229195 0.2473748240575463 8.859816029444579 8.457033488426323 0.2512019760018084 6.074558058323483 8.423535713326119 0.2847596321639886 9.250129892771715 5.40178211204334 0.752587369458499 1.429581065103099 5.261702158497945 0.2534046352076498 6.803113106591595 9.386408985375605 0.285603065220634 5.397017632565011 9.511589080030589 0.2857216288922423 5.790505773262927 0.2921171610164438 0.2845036844035218 2.439636893937926 5.539486135095887 0.7524684628194485 8.403945157686698 9.428144167154757 0.2612791114130729 6.977460246715561 1.372076907435894 0.2540468301669747 4.880614375028889 8.764203930363136 0.7425853775673301 3.323644404736957 8.663794349027961 0.2840356410557112 2.743721770052384 4.322011096028413 0.2480866410899592 7.199401454160703 6.527777777778119 0.4999999999999999 3.102114038661018 6.317922191739367 0.5000000000000124 3.465594575932195 9.100837719815813 0.4711646717357927 3.720741701078082 6.096758651597019 0.7521573541455197 5.337715571599559 4.436938255313688 0.7387467888087289 9.738528373708803 1.788234211421167 0.7522656415281076 7.507122769759677 7.495309808124659 0.2485496736888542 7.897957037410658 5.570588610704689 0.7523305844702031 1.969740332513955 4.444444444444707 0.7532923143881947 4.526718616791982 1.934617852473459 0.2445659490301066 2.9386633049041 0.7726650897887586 0.259015501886996 1.943538464385521 5.128025230693149 0.5265621596627681 4.073147617205409 5.941026862495686 0.2713768538480502 7.740622927398256 5.673390494298439 0.7420889095422599 8.019975904422616 7.766944808614976 0.2579110904577124 8.205308752245296 5.278906863839026 0.7460549564268064 6.769855281661329 9.085325625189544 0.7142026786268487 6.886786380739706 7.370146968539759 0.7534792116831194 8.947385845736436 5.6475844107481 0.7387915629206397 4.789430833549576 1.111111111111315 0.7534478470718489 6.332871926875707 6.547041500104536 0.7535673559864279 8.465314874367548 2.774739754780965 0.2548987931380452 7.459282644415331 3.329271433062079 0.2464425344723599 2.60795683289136 4.718919866959909 0.245111122881732 4.879628524791444 2.482941568519096 0.7473839573224856 3.090637742452309 2.980924391114492 0.2645572422380025 6.777746679509383 1.635137751517438 0.7136439726669361 2.771412641442881 8.342956154636484 0.7569614102317083 1.184928112358617 4.007234470885362 0.7538043160912449 3.653323862626894 4.588329007343575 0.2438246230551576 6.556633710782312 6.037883302298774 0.7322195419297512 1.262418787205538 0.2795816973271545 0.2662798455157526 3.586747966004118 8.073286502804093 0.2544417675453453 8.903801486186312 3.729101211291876 0.753457118768915 5.578907214050182 2.777784928826373 0.2460103428093625 2.597857134123438 5.811774882407451 0.7539896571906407 8.889812996701751 9.36819562708286 0.2734561879633675 1.486205313924513 9.106705838791887 0.7353064565509974 8.888257789929897 3.708026114217956 0.2528200338690323 5.767114290001707 7.105398981928484 0.7540862312213176 8.46369718148228 4.722222222222641 0.2459137303758328 1.635016655936365 2.777777777778147 0.7540923978446449 2.597228892784416 7.105551664244485 0.2458854942757203 7.020233357331996 3.333333333333566 0.2444899545132656 5.008550982926105 9.714652456924959 0.4584701390274565 7.678207406620389 7.81099356435924 0.7337161954959255 9.307731822765595 4.552728345636122 0.2472370171704621 0.9377600870806142 9.372080123206972 0.7308766448394337 5.32664673148139 1.666666666667098 0.7542652758837337 1.633900483365002 8.055549443506358 0.7542807571477753 4.520544807498531 2.893491499460288 0.2457083023691078 1.43331368856823 3.886084007382051 0.2468054844576168 3.449399159118625 5.115561403011077 0.2456800952078156 8.944093883711933 6.521018605974342 0.2854979185959332 2.512075002926788 9.18741559309653 0.2582846008007508 7.406760434222585 3.356677769430246 0.7543089076295315 1.486683260141545 4.324152393494675 0.7473434106012766 3.328788580799948 1.03695355180244 0.7196874172403269 5.162367290405934 3.055555555555534 0.7412087564834505 9.740642938710272 4.123343570465746 0.2600797524067873 5.35434777000307 3.772679398492211 0.7459786812340852 6.085018076190623 2.517328709860242 0.2521355396236736 3.087173486039489 2.801647465958962 0.7544203126261253 7.447779974498266 3.170557869907517 0.7544234397291363 1.914849644106712 9.399605304926874 0.2662692192465292 8.40702179808064 3.30998175835469 0.7517053775860701 8.882691317700832 8.331717878356558 0.2461483542180833 4.894809971031978 6.131479677433329 0.265008460751104 0.2650084607511065 2.619625102509801 0.7510677955331284 0.951551767545752 0.9078760329159369 0.2569584175911186 7.714036219254533 6.986209810686939 0.2788770513865961 8.985094212874763 4.444444444444846 0.7546223905140977 2.010068636057309 8.904541126276538 0.2483072338113362 9.373438966149681 7.196965475925948 0.2453228247599211 5.815666066579656 2.222222222222431 0.7546802670759475 5.480314648975945 5.772648896996177 0.4984899622667534 7.308659904481647 5.434970000323124 0.7477568361811515 4.288969526984972 1.120345492009912 0.7402302394925642 9.389277184918097 1.113997785926847 0.7528207761506559 1.636244574421068 9.128998188648511 0.7435125366449151 1.193079024789099 2.660821409520793 0.2459384221051881 9.426024491596785 2.339178590479232 0.2459384221051712 9.426024491596841 3.6111111111114 0.7629353097641726 4.066122233328679 7.777777763824513 0.762935136023198 3.905747150497961 4.289796021547554 0.2616816141784787 8.201229663860543 7.216784105884312 0.2571054054686739 3.870861328540792 5.277777777778149 0.7621107110384762 2.465975927305576 3.406595091075727 0.258360220626047 4.12868455127029 5.406830156411745 0.2514514557434592 7.636702671973061 5.872698869551882 0.2793059953208999 2.828945716397789 3.752292071968968 0.2455350026742314 7.165282779354125 2.075952308284746 0.7597144458271827 7.031924480166131 3.341226513439305 0.2736611852915261 7.512686176602844 5.21055998724596 0.2765120890307189 5.42684139291404 0.2804406882181637 0.7354895266644936 3.912908790127338 4.766089428551183 0.2477530492698524 6.01594987401 4.58333333333352 0.2477530492698443 5.699407031700072 5.419886429350941 0.2840502226493288 4.495464660408246 8.793829741217046 0.247753351973046 7.007730229964721 2.760738077008593 0.2508812316712604 6.331546506985076 8.051750596399662 0.2435191323193122 2.153524190872049 7.902206044839916 0.7505925655913125 0.9601628408110434 5.592999168692223 0.2805474288905113 3.299001258636032 7.9325392086061 0.7297887257122724 7.924457976328874 9.184213816002318 0.3729965737233088 6.275176445791486 3.629899048076056 0.2444803254294659 1.966310221066031 1.379021676842379 0.2485265076526754 2.007524562845699 0.5500920974418408 0.7398511274212289 9.352218161764389 3.33542585638216 0.7492837841303737 7.458749969370635 7.659208822989955 0.2437464403049268 4.795795670158503 7.514419588833371 0.2429367947501237 2.460861507985835 1.564626330873345 0.7228508055503817 5.855522575335088 8.026908549001762 0.2547514945827335 7.770704777392748 9.526335423734848 0.7430586914719108 0.8042597519674846 2.7777777777781 0.2443648553417111 3.459759218911213 0.6101363241873243 0.6479371582094673 8.594945638679143 6.770644478138885 0.7523467010248051 7.008573362842121 4.864578803768534 0.7584479701868428 0.9475521475201392 1.514056479120568 0.2443184266905359 8.651920917597796 5.555105587046736 0.7591977764679971 6.453322757406668 9.366926329933985 0.7265734493286208 1.038808487545395 2.003713093690548 0.5841519034674384 2.300774356789269 5.218112617590936 0.4938553550432803 2.585816087902622 5.555555555555992 0.2373988784728991 1.025674599091166 4.447259435595056 0.2495731509574989 8.791629446843199 2.138503396265267 0.501541609342297 7.160647535909683 5.702417889590363 0.7623166717224085 7.198039662140545 1.353766353369027 0.7183526482974796 7.13622888554258 5.308155732263693 0.2527303708650163 8.387736798339825 3.364290846814495 0.2457245221961004 1.486788137920851 9.409699089275604 0.2885699397086127 2.219020749794374 6.388888888889376 0.7559200744621821 0.5747845193922049 8.029980761500914 0.7545614422617896 8.896955065140411 5.106460988128432 0.7560051668074895 8.938839756729715 6.394085841772339 0.2433868810190044 6.332328432869851 3.648310223416418 0.7388061147778017 6.346272360467315 5.558173354575955 0.2383198925228276 1.989154630088899 6.096993098679658 0.7310121755305008 7.683895222953901 3.51742073689041 0.7537144655752008 4.602134512726562 7.41058030043874 0.2531689139392684 3.35624853763456 5.277819170923054 0.7554618644241367 4.563654310105878 3.543563522007994 0.2698945775540204 8.26553605014707 9.752325989753126 0.5868227090464386 8.164241937367018 1.119208442190285 0.252210122901904 5.389109552159187 1.402760677423029 0.2825074873070624 3.724211305810209 6.719773023903715 0.496948337708435 3.456596882247021 3.926214864752859 0.7397278036179384 1.051026448372427 1.836814495972516 0.4115282740268122 3.452878851874672 9.366623797269977 0.7393739551406241 6.523327380141439 7.505893995310423 0.762458075818633 6.470232961768588 4.33040332816204 0.7530864197530875 7.217228787075348 6.250000000000409 0.2435606300127979 1.780835586644451 5.967230896811519 0.5149384138450653 6.958368175943789 4.867660594101511 0.7639435343384922 3.180941890857222 5.700993927434702 0.7639435343384922 5.586568012480715 6.110536144238201 0.236056465661518 7.426768069345793 7.802795166600521 0.2469135802469144 2.919410330364599 9.435318658195849 0.2488438796842442 0.5678278736739646 2.713641764940962 0.382979400780233 5.924490116944196 3.261600088535454 0.7534902702024792 7.956539236120096 8.531045616346907 0.2767255437507253 8.319196176821366 8.721191644951974 0.2455274060731274 8.935552815060451 3.583330043310753 0.7452619090519046 2.97131860566276 8.430311416456995 0.720564301819822 8.327645602124067 8.416853680827888 0.7292335935427625 0.5531384918375998 6.94525209140669 0.2438624389751124 0.5759845224454195 3.882867250217597 0.2381446696707345 6.784026835443128 5.026837984312584 0.7550484291922075 5.514526062065054 1.701309178258759 0.7488865585918715 8.239345544238089 4.897420802614725 0.2432759830549692 0.9597716853818337 8.846962601731777 0.7413002159991304 1.642312022346451 8.236716698109351 0.7446884074831386 1.749011743815885 3.880303386450297 0.5785766954341149 0.6103744040279035 7.417701955293814 0.2610851663649235 0.3383907224964812 1.241571977373739 0.7645458125394327 3.830425542298395 1.003320211034259 0.7206738083894053 3.474485236848609 8.649237520471857 0.7438772282164088 1.162081547050508 8.646995534477753 0.254732028406815 7.418080625085648 9.714918199653043 0.4243575482179298 6.37515800412743 1.646989748032778 0.7572320198150888 6.311412181767558 1.841856136926674 0.246913580246913 4.797432574302115 5.395470186194961 0.746869388777073 0.4929343230202723 7.781511250384813 0.2556029410536936 9.399902748021098 8.529718283005002 0.744548715989404 5.582683938352563 4.869456500643706 0.2537165700738904 0.4945174724770494 8.714471254799392 0.7565793972594481 2.201296342811944 0.7691689541296306 0.7424204803422036 7.713876990842092 6.66666666666674 0.2426790644238258 7.319272565383539 5.101252667373451 0.2460054819596477 1.913512398623417 1.488084303617809 0.7573506433630314 2.198891835425696 3.4325052825235 0.757354988833167 2.405114534018929 4.161195210328108 0.2491436688465795 0.5962510906175089 1.129732719862026 0.4830164645876585 0.2929247183376257 5.126022825836897 0.2402773341956843 6.556691177044757 3.888888888888888 0.249087185274681 0.2486807090735056 6.977135952530245 0.2816631847736791 9.536881611504656 1.66666666666692 0.7574540839294426 4.500768390130435 1.845807608774785 0.757454083929442 4.811049603577037 6.38888888888909 0.2425459160705569 4.98189361445539 5.098636835670304 0.7574540839294419 1.92429825762908 1.845807608774834 0.2425459160705578 3.84879915492767 2.916666666666698 0.7574540839294434 8.590332796890328 6.388888888888973 0.7574540839294446 7.801228020674282 6.56802983099684 0.7574540839294471 7.490946807227675 6.348636835669938 0.7574540839294481 8.900614010337074 7.222222222222425 0.2436339581697571 4.972556199540634 3.910897879529245 0.2489411313168288 1.950398560013275 6.122140211282789 0.7625031099074241 8.235802599566682 3.431426129429351 0.2424451680012722 4.603881359884806 1.03213992432803 0.2740630386250605 6.626957022208989 5.662859438812428 0.2594661031582879 0.5160199962823936 7.949926883726381 0.2527952440368657 5.733157123417617 6.639294915889289 0.2761483987942498 2.25725735188443 5.513803350077161 0.7577318899034482 5.052478329050514 7.403046954250232 0.7577658968776145 7.698773086089162 0.6156576205735936 0.3440400930054566 9.420292911608904 4.127213361326184 0.7569062238712235 6.767226325405689 2.956565420897923 0.5697275023860641 7.81910703024003 7.453836298996703 0.5076545788056599 2.593251941086353 7.500000000000387 0.7647531632563841 2.478279195268734 1.233496957040288 0.7492010587047497 2.89778378255776 2.415787682461083 0.7532735400934472 5.773494778242449 4.01269613663614 0.24026825132625 1.375719320140485 6.702603948594047 0.7555805809279497 8.904822615829094 4.071512616569477 0.2419009557793281 7.699811736713151 0.590251448044506 0.2815626642929863 4.313412451751161 5.000000000000067 0.2417775704875464 7.382728807163531 7.68329000825617 0.2417775704875441 7.219071189658401 4.156662367028322 0.2462124093696584 9.239069659269305 7.455456543448562 0.2417512117496999 5.323405654897367 5.788540688800683 0.2417050658272795 8.903235521954265 9.737435394097906 0.298245236503645 8.883928901787822 1.025456897035076 0.2348518406598243 4.186567535966495 7.348637924817194 0.2645632152849981 8.888358982693921 6.666666666666845 0.7583961685642469 5.457144580351045 3.154575415909261 0.7545755897274906 0.9542986741978842 7.77549601007333 0.7574077385493854 7.383856579674331 5.832668811407332 0.7576009090035434 0.586756199765572 9.388172619250529 0.7380037296248732 0.5598361151621185 0.6076620348907085 0.706822905547706 6.503207999513704 3.86387472724664 0.7472856309453733 2.419524368231394 1.021068262410673 0.7534049454523393 8.183772194979017 5.151919782832754 0.2469135802469148 2.74474927709333 8.84246959654458 0.2413354833722965 7.941924218857068 1.480975963218022 0.7586670026962616 8.663832904647748 3.333333333333655 0.2413314202482744 3.478673848243111 1.665020588298609 0.7581158190687911 5.329023507735027 2.053326593055691 0.2779599558472107 6.389415862671403 0.6435267114346539 0.2777693023252873 4.711068032590879 0.575572424612853 0.2883478815994501 3.178052926600611 2.03625986314047 0.7584285267195801 0.9664788674445933 5.876915155263701 0.7532598911788163 1.489957702062509 4.48914533468805 0.7438781494618506 1.159920320170352 6.026323995744509 0.2636962872246914 8.519137587265238 3.333333333333324 0.7692696211724388 9.679249850450118 3.757986773235416 0.7553302708566572 8.042381342136405 1.76630081603718 0.7515817283823092 0.5009260564780738 8.332922053691407 0.2412357955247389 0.5942677891813593 7.804879496506348 0.7549336072194746 5.355208485215634 1.065538230810415 0.740051962370351 7.898219307594391 8.150908088170583 0.7530124219164513 8.645296687676886 2.868289260288323 0.7589587789590335 1.447864208138343 9.735984269056527 0.2641981382821948 1.116857343105051 8.333333333333343 0.2409638596869796 7.329967523682189 5.794446909862228 0.2441281608916962 5.799507959885782 6.937265952158024 0.2441281608917061 7.803795631723362 6.895347393105057 0.7252660009696313 1.342820522152119 1.400816193580134 0.2467375831220296 1.138369771221421 3.055555555555719 0.2352720955050528 6.33529032189757 3.472628566007297 0.7474253547680426 6.754300381462599 8.973914102018561 0.7294330442996628 0.5570910651217783 0.9456491530950446 0.2496219151129316 5.081722881917654 0.8333333333333153 0.2456110603961167 9.754914203910744 8.934832366596336 0.7405700622707045 9.329737198430278 3.888888888889153 0.759414724229883 4.488543047113914 7.932028370688498 0.7575759154920244 2.723413454970215 5.115092855661126 0.7503087682772349 7.956020915182661 9.741385997180734 0.4610651445001382 2.936677865487658 4.659472280231063 0.6129521790266035 4.180230298938851 0.2510554515690523 0.3717886984062797 6.386035469177488 2.134749754055438 0.759521559392901 1.449618783887236 6.615164889488418 0.7595373661441235 9.38823426581799 8.246323946280349 0.240392684845263 3.855512265516839 5.503649006812626 0.2403876761586456 2.432403225690157 2.586584119950278 0.7596860683220406 1.931256896294373 0.8687787872093649 0.4748291274285288 5.634633473186569 1.232559946548195 0.2772220389080021 6.893528339222221 2.500000000000401 0.2401886797760767 2.080443997608079 2.030352204124555 0.7598113202239244 1.931647393078394 1.508984041294357 0.2748914129743643 6.429280107795483 5.517265600278787 0.7432357438063532 5.874591662596333 7.063356629727553 0.2339376440930913 4.134776215511874 1.427884049802846 0.6085764371616716 6.665113324198991 9.439107705201897 0.2474742068086299 9.75295253654574 2.603457070238167 0.247073169782303 0.9712451378489558 5.833333333333433 0.1586533016196634 7.273623728826698 5.826744025689177 0.3240544038351691 7.411113486748167 5.687855136800277 0.1654011022155057 7.4913010241356 5.902490294341367 0.118028232830759 7.390289667779962 5.895900986697111 0.2834293350462648 7.527779425701431 6.041379183230267 0.2766815344504224 7.310102130392529 5.90277777777789 0.1586533016196634 7.153342422745541 5.972222222222342 0.1586533016196634 7.033061116664376 5.902777777777899 0 6.99296734797065 5.753945812417473 0.1561519649247498 6.935938901854878 5.823390256861924 0.1561519649247498 6.815657595773713 5.823390256861916 0.3148052665444132 6.976032670548603 7.430555555555562 0 9.398593469594156 7.361111111111124 0.25 9.358499700900428 7.430555555555554 0.25 9.478781006981599 7.555079565721481 0.1806228384681939 9.360672996457716 7.485635121277044 0.4306228384681938 9.320579227763988 7.485635121277053 0.1806228384681939 9.240391690376544 4.88656655092616 0.5720214763374494 4.990676721121133 4.956010995370606 0.8220214763374494 4.950582952427414 4.791666666666901 0.75 4.988278913284396 4.779211722958834 0.5777127458524889 5.179864319414281 4.84865616740328 0.8277127458524889 5.139770550720561 4.943556051662539 0.6497342221899383 5.142168358557299 8.042083249171146 0.8189521270848731 8.353761333622998 8.042083249171135 0.5689521270848732 8.273573796235555 7.916666666666657 0.7500000000000001 8.235874177476237 8.055555555555543 0.8387364011102963 8.170131827578968 8.055555555555534 0.5887364011102965 8.089944290191525 8.180972138060023 0.6576885281951694 8.207831446338286 1.077601053959375 0.5936914627077146 6.044949476801596 1.180659712540575 0.8436914627077146 6.119609662565476 1.008189464409112 0.75 6.076325649598134 1.008120958469613 0.6267239235359244 6.167268695354981 1.111179617050813 0.8767239235359244 6.241928881118859 1.180591206601076 0.720415386243639 6.210552708322323 5.844976647968862 0.5896155401733336 4.226257451763844 5.914421092413303 0.8396155401733336 4.186163683070123 6.041666666666899 0.75 4.266591076797468 6.111111111111339 0.6141139233050548 4.27722321571156 6.180555555555779 0.8641139233050548 4.237129447017839 5.983865536857742 0.7037294634783884 4.196795821984214 2.986111111111456 0.75 3.063778015985545 3.055555555555895 0.75 3.18405932206672 2.891198190466713 0.8196924573616556 3.232190942913511 2.891198190466716 0.5696924573616556 3.152003405526064 2.821753746022274 0.8196924573616556 3.111909636832336 0.9027777777778113 0.75 8.757093170494215 0.8361248969993051 0.5889954650074678 8.56465460206884 0.9055693414437485 0.8389954650074678 8.604748370762572 1.067257488421703 0.8369221500819011 8.674241117132555 1.000604607643197 0.6759176150893689 8.481802548707179 0.9978130439772596 0.5869221500819011 8.634147348438823 5.836252967284821 0.6816138794168438 4.037139337449441 6.032942985982858 0.8419983392435102 4.077472962483065 6.102387430427298 0.706112262548565 4.088105101397156 2.552084873320435 0.1603655115202016 4.998301466345869 2.621529317764884 0.4103655115202016 4.958207697652151 2.430555555555793 0.25 4.908091375896818 2.415933197949415 0.222945806574854 5.060024228571487 2.485377642393862 0.472945806574854 5.019930459877769 2.606906960158505 0.3833113180950556 5.11014055032682 6.036012697500579 0.1445797432834946 6.861529174144419 6.03601269750057 0.303233044903158 7.021904248919309 5.887180732140152 0.3007317082082444 6.804500728028646 4.722222222222451 0.75 5.108560219365563 4.779211722958831 0.8277127458524889 5.260051856801729 0.8361248969993051 0.8389954650074678 8.48446706468139 0.9978130439772596 0.8369221500819011 8.553959811051374 7.986111111111089 0.7500000000000001 8.115592871395076 8.124999999999977 0.8387364011102963 8.049850521497806 0.8333333333333681 0.75 8.636811864413037 5.024406122137423 0.5696449764981306 4.271120110227387 5.079516224819924 0.8382848976003462 4.272406021908232 4.944889897317779 0.7313600788977844 4.225211396422814 4.811424699063402 0.5718611057286013 4.331955843421531 4.866534801745902 0.8405010268308168 4.333241755102375 4.946051026565546 0.6787859244311629 4.379150468906948 7.123015873016058 0.8125367430922994 5.291846019108455 7.192460317460501 0.5625367430922994 5.331939787802183 7.291666666666855 0.75 5.228841525446899 7.252209435605815 0.8466207240308579 5.384481631162385 7.321653880050258 0.5966207240308579 5.424575399856113 7.153003086399461 0.6591574671231573 5.487579893517669 3.482829264242179 0.1986768532358955 2.817784945573787 3.552273708686621 0.4486768532358956 2.857878714267514 3.680555555555916 0.25 2.823215403823236 3.635548808196611 0.1773000285094286 2.661500190481718 3.704993252641053 0.4273000285094286 2.701593959175445 3.507266961327316 0.3759768817453241 2.696163500925995 3.446434103020013 0.8175024200026979 0.7958414525992061 3.514976699246233 0.6579750190749744 0.7856764111723209 3.679653707337801 0.8404725990722763 0.8485171974367791 3.628112766642246 0.8640674184325468 0.9827912491365917 3.696655362868467 0.7045400175048231 0.9726262077097064 3.463435758550679 0.6815698384352447 0.9199504628721334 5.972222222222326 0.1586533016196634 7.273623728826713 5.833333333333426 0 7.353811266214145 6.04137918323026 0.118028232830759 7.390289667779976 8.674154746530197 0.8406020630325798 8.984616630681479 8.604710302085751 0.5906020630325798 9.024710399375198 8.68055555555549 0.75 8.837280707882133 8.811421864903835 0.8431545974109493 8.759815801281039 8.741977420459389 0.5931545974109493 8.799909569974758 8.735576611434094 0.6837566604435291 8.947245492774105 4.930555555555975 0.83641975308642 1.620402343011587 4.861111111111533 0.58641975308642 1.58030857431786 4.791666666667091 0.75 1.540214805624133 4.809661110530426 0.8397520575055561 1.39022882785765 4.740216666085983 0.5897520575055561 1.350135059163923 4.879105554974869 0.6761718105919762 1.430322596551378 7.108990987031568 0.8193771615317944 8.044098516236721 7.108990987031553 0.5693771615317944 7.963910978849281 6.944444444444485 0.75 7.995311565313813 7.037402020052756 0.8461536821006996 7.89626343426196 7.03740202005274 0.5961536821006996 7.816075896874521 7.201948562639823 0.665530843632494 7.864862847797428 3.558730158730175 0.7500000000000024 8.747241558758208 3.697619047619073 0.7500000000000024 8.74724155875823 3.502480158730179 0.8188198118753538 8.910079536467171 3.641369047619076 0.8188198118753538 8.91007953646719 3.588988095238118 0.5688198118753561 8.860134156037276 6.388888888889095 0.75 4.787810069815889 6.319444444444649 0.75 4.908091375897057 6.149739264583783 0.8580006236123703 4.837290198802638 6.219183709028227 0.6080006236123703 4.797196430108917 6.219183709028229 0.8580006236123703 4.717008892721468 6.361435692478738 0.1609149269027044 1.159750544583558 6.344372200415242 0.4109149269027044 1.230086470234834 6.51071428571472 0.2499999999999999 1.169519275644503 6.390191160704347 0.1450459398062476 1.001305330432117 6.37312766864085 0.3950459398062475 1.071641256083392 6.223849075404869 0.305960866708952 1.061872525022447 4.915970490298624 0.8343933056850352 4.097702145130477 4.860860387616123 0.5657533845828197 4.096416233449633 4.995486715118267 0.6726782032853813 4.14361085893505 0.9397002625549327 0.75 5.95522835224067 1.112170510686396 0.8436914627077146 5.998512365208013 7.94934148639701 0.8008675333127724 5.075542768247663 7.879897041952565 0.5508675333127724 5.035448999553932 7.847222222222453 0.75 4.908091375897156 8.010180229712777 0.8220239160348528 4.864804765371102 7.940735785268332 0.5720239160348528 4.82471099667737 8.042855049442888 0.6228914493476252 4.992162389027877 6.566694164315963 0.4305135451038939 1.085258312061511 6.58375765637946 0.1805135451038939 1.014922386410236 6.44617103930559 0.3255594849101415 0.9170443668491245 8.759571153495717 0.8427410174102374 5.257489183004189 8.872726982254232 0.651824868184161 5.280078503017538 9.001792967470914 0.8090838507739235 5.211467478785558 8.949318569356262 0.8525720164609054 5.384149798838554 9.062474398114777 0.6616558672348289 5.406739118851903 8.820252584139579 0.6953130338711428 5.452760823070535 7.86931659483702 0.5066826847264098 1.710663494054113 7.869316594837047 0.6665196034456007 1.55006613411244 7.777777777778208 0.487282241140861 1.50034275560122 7.647448149822067 0.53555256456907 1.665659805227763 7.647448149822093 0.6953894832882608 1.505062445286091 7.738986966880905 0.7147899268738096 1.715383183738984 2.361111111111347 0.41358024691358 4.948185144590538 2.291666666666899 0.16358024691358 4.988278913284256 2.346488753504968 0.386526053488434 5.100117997265207 3.670008313499557 0.4024152980208935 2.97060702242765 3.600563869055115 0.1524152980208935 2.930513253733923 3.472282022185819 0.3510921512567891 2.965176564178201 2.916666666666629 0.5889917695473225 9.29434967099025 2.916666666666633 0.8389917695473225 9.374537208377703 2.777777777777739 0.75 9.43868723828766 2.77285946636837 0.5873305514955547 9.516035187258964 2.772859466368375 0.8373305514955547 9.596222724646417 2.911748355257265 0.6763223210428772 9.451885157349009 7.291666666667057 0 1.94115249256149 7.152777777778166 0 1.941152492561483 7.222222222222612 0 2.061433798642665 7.308730158730558 0.25 2.011488418212766 7.169841269841667 0.25 2.011488418212759 7.239285714286112 0.25 1.891207112131585 7.847222222222697 0 0.9789020439122389 7.777778513675799 0.2499999999999999 0.9388078503478638 7.847222958120235 0.2499999999999999 1.059089156429043 7.958255611889284 0.1769140561797715 0.9291762621766866 7.888811903342386 0.4269140561797715 0.8890820686123115 7.888811167444849 0.1769140561797715 0.8088949560955074 0.6552813981561946 0.8382171311777038 3.079298478933397 0.7042349139202525 0.8382171311777038 3.189683612075856 0.431922989469179 0.8476181987173992 3.15738255331719 0.5806023478335313 0.685835329895103 3.08281930593902 0.382969473705121 0.8476181987173992 3.046997420174732 4.791666666666996 0.25 3.304340628147989 4.930555555555884 0.25 3.304340628147997 4.861111111111443 0 3.264246859454269 4.820821217698626 0.1450015964476173 3.124893895809517 4.959710106587515 0.1450015964476173 3.124893895809526 4.890265662143068 0.3950015964476172 3.164987664503246 1.111111111111162 0 8.316061714863258 1.180646721873799 0 8.19572777388375 1.041757832984907 0 8.195727773883734 1.041666666666719 0.25 8.295671169641871 1.111202277429356 0.25 8.175337228662361 1.18055555555561 0.25 8.295671169641885 2.859827990817844 0.2499999999999999 0.4779785463492674 2.759602551602196 0.4482460405042032 0.4511997017395227 2.671989546301667 0.1982460405042032 0.4147989583041247 2.7970491698879 0.1724203480714223 0.6236035093285022 2.696823730672253 0.3706663885756256 0.5968246647187576 2.88466217518843 0.4224203480714223 0.6600042527639003 8.611111111111034 0.75 8.957562013963297 8.604710302085742 0.8406020630325798 9.104897936762644 3.53778981663578 0.6350136476953986 2.062294024778717 3.448681836059035 0.8243633655462129 1.948201965671621 3.561330202799367 0.8106502821491857 2.175525857749571 3.74612083529363 0.6693859673598082 2.18613920427375 3.657012854716886 0.8587356852106225 2.072047145166653 3.633472468553298 0.6830990507568354 1.958815312195799 4.667595251206281 0.1543187963814857 5.238462218218908 4.832525806761832 0.3500492490563818 5.253497381479066 4.887152777777998 0.1957304526748961 5.203782920013168 4.720571044591178 0.122555561440866 5.034188140772228 4.885501600146728 0.3182860141157621 5.049223304032385 4.665944073575012 0.2768743578223518 5.083902602238125 2.847222222222182 0.75 9.318405932206481 2.986111111111077 0.8389917695473225 9.254255902296524 5.347222222222646 0 1.46002726823671 5.277777777778203 0.25 1.419933499542984 5.347222222222642 0.25 1.540214805624157 5.501894837802521 0.1729868389176225 1.46245702912615 5.432450393358078 0.4229868389176225 1.422363260432423 5.432450393358081 0.1729868389176225 1.342175723044976 2.229413302968451 0.6151726751175099 3.360515587424767 2.229413302968448 0.8651726751175099 3.440703124812217 2.083333333333647 0.75 3.424621934229023 2.0954174149431 0.6098285483239969 3.558627347084971 2.095417414943096 0.8598285483239969 3.63881488447242 2.2414973845779 0.7250012234415069 3.574708537668164 7.907464495423081 0.8713278722310592 8.390936376206504 8.032881077927559 0.6902799993159323 8.428635994965823 7.907464495423072 0.6213278722310593 8.310748838819062 5.933050839657318 0.320204294204403 6.227684123553665 6.118270253399809 0.1548031919888993 6.273514042860842 5.925891697368767 0.1654011022155037 6.105168286095298 5.887932253868483 0.3256253800695501 5.988863956576495 6.073151667610974 0.1602242778540464 6.034693875883671 6.080310809899524 0.3150274698429457 6.15720971334204 7.777777777778005 0.75 4.787810069815972 7.94073578526833 0.8220239160348528 4.744523459289918 5.963498541538418 0.5919983392435102 4.117566731176787 1.530199590608488 0.1282040521437433 9.879718693918781 1.458333333333344 0.2255492741115568 9.655568697611097 1.460755146164043 0.3537533262553 9.775850003692316 1.599644035052934 0.2779686939268001 9.839624925225021 1.52777777777779 0.3753139158946137 9.615474928917337 1.597222222222235 0.1497646417830569 9.7193436191438 0.6078647226409617 0.1797966597621553 6.467791079330411 0.6376596402420451 0.4297966597621552 6.436927975440561 0.4734784501142647 0.2499999999999999 6.357820545221734 0.3847419700774274 0.1572123542804142 6.523983854811865 0.4145368876785108 0.4072123542804142 6.493120750922014 0.5489231602052078 0.3370090140425695 6.603091285030692 5.070266305808019 0.5904526801421908 9.770045221838259 5.138888888888946 0.520108045608908 9.591606718467311 5.070266305808032 0.4257700678843197 9.82156149662905 4.861932972474666 0.5938278424244205 9.845095451396686 4.930555555555593 0.5234832078911377 9.666656948025736 4.930555555555581 0.6881658201490088 9.615140673234947 5.902777777778024 0.75 4.266591076797459 5.775532203524428 0.8396155401733336 4.186163683070114 4.166666666666737 0.75 7.674561415763843 4.09722222222229 0.75 7.794842721845011 4.026832289755521 0.8553453899562051 7.560602896804464 3.957387845311073 0.8553453899562051 7.680884202885633 4.026832289755517 0.6053453899562052 7.640790434191911 9.871869455591288 0.1274886664494017 5.153144863050857 9.768094462988433 0.3635692887626688 5.159013521565722 9.639963918579721 0.236080622313267 5.162986871620824 9.690919353789372 0.1853036385323898 5.345213407672409 9.587144361186521 0.4213842608456568 5.351082066187274 9.819049898198086 0.3127923049817916 5.341240057617307 8.527569904198689 0.8192494871247169 6.309133643052284 8.527569904198678 0.5692494871247169 6.389321180439733 8.472222222222305 0.75 6.471748354952431 8.31116951179283 0.8252002151278254 6.435064393649762 8.311169511792823 0.5752002151278254 6.515251931037211 8.366517193769205 0.6444497022525423 6.352637219137065 5.069444444444864 0.1586533016196627 1.620402343011594 5.138888888889309 0.4086533016196627 1.580308574317872 5.208333333333755 0.25 1.540214805624152 5.189180686524979 0.1600334604675091 1.390897516639999 5.258625130969424 0.4100334604675091 1.350803747946278 5.119736242080533 0.3186867620871718 1.43099128533372 4.307910385737842 0.5549236668200661 1.631446310843689 4.377354830182284 0.8049236668200661 1.671539225258261 4.236111111111536 0.75 1.540215659903259 4.084617916776757 0.5903923321417144 1.623342451403383 4.1540623612212 0.8403923321417144 1.663435365817954 4.225861635847506 0.6453159989617805 1.754666016758385 5.972222222222377 0 6.150998205402463 5.787002808479886 0.1654011022155037 6.105168286095286 5.979381364510927 0.1548031919888993 6.273514042860831 4.652777777778201 0.75 1.540214805624126 4.664745123118138 0.8416939042537431 1.717033216553125 4.803634012007026 0.8416939042537431 1.717033216553132 4.734189567562584 0.5916939042537431 1.676939447859405 3.663396431357202 0.6392081994168862 4.935852894460707 3.659195471759149 0.8156485286349928 5.05613420054188 3.754200959598283 0.8235596707818934 4.827903838509439 3.5654401302723 0.6651502031999316 4.771689175284944 3.561239170674248 0.8415905324180382 4.891970481366117 3.470434642433166 0.657239061053031 4.999919537317385 1.977945488783941 0.8284896213490551 3.547464917768529 1.977945488783945 0.5784896213490551 3.46727738038108 1.990029570393394 0.688318169673052 3.681470330624476 8.750000000000135 0.25 5.509497906303057 8.621637901309352 0.4107883014175585 5.438219587783163 8.621637901309365 0.1607883014175585 5.358032050395716 8.642118406129541 0.1532737925356692 5.579126964605109 8.513756307438758 0.3140620939532277 5.507848646085216 8.642118406129528 0.4032737925356692 5.659314501992556 5.615056923528577 0.1561519649247498 6.935938901854863 5.493529145750806 0.3518824175996497 6.905868575334575 5.434027777777885 0.1957304526748999 7.083178327531497 5.567593080912413 0.1462618218843247 7.18648632293413 5.446065303134642 0.3419922745592246 7.156415996413843 5.627094448885334 0.3024137868090745 7.009176570737208 7.178435431475993 0.8193771615317944 7.923817210155566 7.10684646449718 0.8461536821006996 7.775982128180805 8.837567088120633 0.8067158608401482 8.938592707956685 8.761721834650894 0.647317923872728 9.12602239944975 8.898988953024531 0.6498704582510976 8.901221570049312 5.593645800651535 0.7567644275012448 1.077191936733791 5.524201356207094 0.7567644275012448 0.9569106306526187 5.772929702769924 0.8526775415390966 1.009822210255625 5.703485258325482 0.8526775415390966 0.8895409041744529 5.672131058976579 0.6094419690403414 0.9878307969962132 3.106562051286171 0.1685899968277182 7.898807418458393 2.994661571860955 0.3284135245839687 7.756796162606783 2.943655076130406 0.1598235277562506 7.933487846849428 3.135893679901419 0.1306358911530215 8.122713079935796 3.023993200476204 0.290459418909272 7.980701824084187 3.186900175631968 0.2992258879807396 7.946021395693151 7.7094312983869 0.5882597928450903 5.005457459516482 7.778875742831345 0.8382597928450903 5.045551228210214 7.811550562561457 0.6391273261578626 5.172908851866989 3.213683705200207 0.8399825791522505 4.295577053114813 3.144239260755769 0.8399825791522505 4.175295747033637 3.314094072578137 0.8399825791522508 4.055014440952475 3.244649628133699 0.8399825791522508 3.9347331348713 3.19444444444473 0.6799651583045012 4.124094185963727 2.452166702188864 0.1676179090052663 3.938910021892019 2.414287914310071 0.4106968465286512 3.960779350270412 2.601010101010389 0.2430789375233849 4.007804024319574 2.578948077402198 0.1550765620212302 3.815508530591883 2.541069289523405 0.3981554995446152 3.837377858970276 2.392225890701881 0.3226944710264965 3.768483856542721 1.196551837061546 0.1420931083991227 8.015388382147634 1.265905115187801 0.1420931083991227 8.135722323127158 1.196460670743357 0.3920931083991227 8.115331777905771 1.256129989693231 0.1276508421091242 9.879718693918786 1.395018878582124 0.1276508421091242 9.879718693918781 1.388888888888896 0 9.759437387837568 1.185866862046292 0.1472518441397952 9.716277134911628 1.324755750935184 0.1472518441397952 9.716277134911621 1.191996851739519 0.2749026862489194 9.836558440992842 7.361111111111293 0.75 5.349122831528076 7.321653880050253 0.8466207240308579 5.504762937243561 3.484977986971186 0.8505572241130314 8.641017365298065 3.571485923479126 0.6005572241130337 8.59107198486817 3.623866875860084 0.8505572241130314 8.641017365298087 4.43718001328808 0.6019703654488897 7.509992219705278 4.298291124399193 0.6883901185353124 7.590179757092724 4.30555555555565 0.5864197530864227 7.353811266214057 4.402947751695608 0.3886593261356702 7.462889478559052 4.264058862806721 0.4750790792220929 7.543077015946497 4.395683320539151 0.4906296915845599 7.699257969437719 5.000000000000423 0.83641975308642 1.50012103693042 4.879105554974874 0.8397520575055561 1.269947521776483 2.291666666666925 0.75 4.426966151572136 2.222222222222488 0.75 4.30668484549096 2.388069182283607 0.8293108937818878 4.291120595842848 2.388069182283601 0.5793108937818878 4.371308133230297 2.457513626728043 0.8293108937818878 4.411401901924025 1.325574434137679 0.3532001162206809 9.775850003692316 1.25531130649074 0.372801118251352 9.612408444685158 6.250000000000204 0.5932181017407911 4.938735836993159 6.18055555555576 0.8432181017407911 4.978829605686879 6.080294820139338 0.7012187253531614 4.867934659898738 2.013249537472368 0 0.9800109520048859 1.874254090013981 0 0.9801957700203847 1.944337885875407 0 1.09936816800852 2.013783240873922 0.25 1.059890988345154 1.874787793415535 0.25 1.060075806360653 1.943699445012496 0.25 0.9407185903570188 7.207697472881506 0.1402998066938881 2.133235468088114 7.068808583992615 0.1402998066938881 2.133235468088107 7.155316520500561 0.3902998066938881 2.083290087658209 6.128233830846168 0.170098581168234 2.071319605490652 6.197678275290607 0.3851191572999211 2.191600911571828 6.319444444444839 0.215020576131687 2.18171510472377 6.385405721582536 0.166027367101897 2.035002418392541 6.454850166026976 0.381047943233584 2.155283724473717 6.263639552428305 0.336125948270131 2.0448882252406 5.671461328464951 0.1947594842027857 8.573929875366387 5.668621240716627 0.3544400180969505 8.401396698639275 5.552715467807264 0.1596805338941648 8.384091150298701 5.431855643909641 0.1263651854325082 8.472180562682819 5.429015556161317 0.286045719326673 8.299647385955707 5.547761416819004 0.3211246696352938 8.489486111023393 8.541666666666606 0.75 8.837280707882117 1.38888888888936 0.75 0.9388082752180854 1.319444444444908 0.75 1.059089581299253 1.458333333333797 0.75 1.059089581299261 2.291666666667105 0 1.460027268236548 2.152777777778217 0 1.46002726823654 2.222222222222654 0 1.580308574317716 2.2916666666671 0.25 1.540214805623996 2.152777777778212 0.25 1.540214805623988 2.222222222222663 0.25 1.41993349954282 4.722222222222651 0.75 1.419933499542958 2.70833333333355 0 5.309029062834071 2.777777777777986 0 5.429310368915246 2.847222222222436 0 5.309029062834078 2.777777777777995 0.25 5.26893529414035 2.847222222222431 0.25 5.389216600221525 2.708333333333544 0.25 5.389216600221519 2.847222222222431 0.75 5.389216600221525 2.777777777777995 0.75 5.26893529414035 2.708333333333544 0.75 5.389216600221519 6.180555555555721 0 5.790154287158962 6.319444444444603 0 5.790154287158968 6.250000000000171 0 5.669872981077793 6.180555555555728 0.25 5.709966749771516 6.31944444444461 0.25 5.709966749771521 6.25000000000016 0.25 5.83024805585269 1.180555555555797 0.75 4.747716301121864 1.250000000000235 0.75 4.867997607203039 1.319444444444685 0.75 4.747716301121871 2.986111111111402 0.75 4.026028464634921 3.05555555555584 0.75 4.146309770716097 3.125000000000291 0.75 4.02602846463493 5.277777777778198 0 1.580308574317879 5.208333333333758 0 1.460027268236705 3.055555555555849 0 3.985934695941201 2.986111111111398 0 4.106216002022369 3.125000000000287 0 4.106216002022377 3.125000000000291 0.25 4.02602846463493 3.05555555555584 0.25 4.146309770716097 2.986111111111402 0.25 4.026028464634921 4.652777777778013 0.75 4.988278913284388 8.402777777778152 0.75 2.743027866436106 8.541666666667041 0.75 2.743027866436115 8.472222222222603 0.75 2.62274656035494 6.458333333333536 0.75 4.908091375897063 1.875000000000131 0 6.992967347970424 2.013888888889018 0 6.992967347970429 1.944444444444582 0 6.872686041889253 1.875000000000138 0.25 6.912779810582975 2.013888888889024 0.25 6.912779810582981 1.944444444444573 0.25 7.033061116664151 6.944444444444851 0 1.580308574317943 7.013888888889304 0 1.460027268236777 6.875000000000417 0 1.460027268236766 6.87500000000041 0.25 1.540214805624213 6.944444444444864 0.25 1.419933499543047 7.013888888889298 0.25 1.540214805624224 3.958333333333605 0 4.346778614184765 3.819444444444716 0 4.346778614184755 3.888888888889154 0 4.467059920265932 3.958333333333602 0.25 4.426966151572213 3.819444444444713 0.25 4.426966151572204 3.888888888889164 0.25 4.306684845491036 4.652777777778074 0 3.865653389860117 4.583333333333636 0 3.74537208377894 4.513888888889184 0 3.865653389860108 4.583333333333627 0.25 3.905747158553837 4.513888888889188 0.25 3.785465852472659 4.652777777778079 0.25 3.785465852472668 4.583333333333627 0.75 3.905747158553837 4.652777777778079 0.75 3.785465852472668 4.513888888889188 0.75 3.785465852472659 7.430555555555745 0.75 5.228841525446908 2.500000000000236 0 4.948185144590545 2.569444444444686 0 4.827903838509378 2.430555555555796 0 4.82790383850937 2.500000000000243 0.25 4.787810069815651 2.569444444444684 0.25 4.908091375896827 5.902777777778018 0 4.346778614184903 6.041666666666893 0 4.346778614184911 5.972222222222465 0 4.226497308103738 5.902777777778024 0.25 4.266591076797459 6.041666666666899 0.25 4.266591076797468 5.972222222222452 0.25 4.386872382878632 2.291666666667042 0.75 2.502465254273374 2.222222222222604 0.75 2.382183948192198 2.152777777778152 0.75 2.502465254273368 2.013888888889207 0.75 3.304340628147846 2.152777777778099 0.75 3.304340628147852 5.902777777778167 0.75 2.342090179498646 5.972222222222603 0.75 2.462371485579822 6.041666666667055 0.75 2.342090179498653 2.152777777778034 0.75 4.426966151572127 4.444444444444597 0 6.391560817564693 4.513888888889048 0 6.271279511483524 4.375000000000155 0 6.271279511483517 4.375000000000153 0.25 6.351467048870965 4.444444444444605 0.25 6.231185742789797 4.513888888889046 0.25 6.351467048870974 8.54166666666675 0 6.511842123646154 8.402777777777857 0 6.511842123646149 8.472222222222292 0 6.632123429727321 8.541666666666741 0.25 6.592029661033603 8.40277777777785 0.25 6.592029661033598 8.472222222222305 0.25 6.471748354952431 8.541666666666741 0.75 6.592029661033603 8.40277777777785 0.75 6.592029661033598 5.34722222222255 0.75 3.304340628148021 5.416666666666988 0.75 3.424621934229196 5.486111111111438 0.75 3.304340628148029 6.319444444444776 0.75 3.224153090760628 6.250000000000341 0.75 3.103871784679447 6.180555555555888 0.75 3.224153090760621 6.180555555555589 0 8.917468245269379 6.250000000000028 0 9.03774955135056 6.319444444444484 0 8.917468245269399 6.250000000000051 0.2500000000000013 8.877374476575657 6.319444444444491 0.2500000000000013 8.997655782656835 6.180555555555595 0.2500000000000013 8.997655782656818 5.625000000000355 0.75 2.823215403823337 5.694444444444793 0.75 2.943496709904514 5.763888888889246 0.75 2.82321540382334 3.263888888888892 0 8.917468245269262 3.125000000000006 0 8.917468245269248 3.194444444444435 0 9.03774955135043 3.263888888888883 0.2500000000000004 8.997655782656711 3.124999999999996 0.2500000000000004 8.997655782656697 3.194444444444454 0.2500000000000004 8.877374476575529 5.972222222222511 0 3.74537208377904 6.041666666666965 0 3.625090777697864 5.902777777778082 0 3.625090777697857 5.902777777778072 0.25 3.705278315085307 5.972222222222525 0.25 3.584997009004131 6.041666666666956 0.25 3.705278315085313 5.902777777778072 0.75 3.705278315085307 6.041666666666956 0.75 3.705278315085313 5.972222222222525 0.75 3.584997009004131 6.875000000000391 0.75 2.261902642111267 6.805555555555946 0.75 2.141621336030082 6.736111111111503 0.75 2.261902642111251 7.708333333333552 0.75 4.908091375897139 4.166666666666735 0.7499999999999901 9.438687238287851 4.236111111111175 0.7499999999999901 9.318405932206682 4.097222222222281 0.7499999999999901 9.318405932206684 4.930555555555614 0.7499999999999898 9.47878100698154 4.861111111111175 0.7499999999999898 9.358499700900364 4.791666666666742 0.7499999999999898 9.478781006981542 4.236111111111136 0.7500000000000042 8.757093170494432 4.166666666666692 0.7500000000000042 8.636811864413223 4.097222222222248 0.7500000000000042 8.757093170494421 5.347222222222227 0 9.398593469594021 5.416666666666666 0 9.518874775675229 5.486111111111116 0 9.398593469594044 5.416666666666683 0.2499999999999987 9.358499700900293 5.486111111111122 0.2499999999999987 9.478781006981503 5.347222222222232 0.2499999999999987 9.478781006981482 5.347222222222252 0.7499999999999987 9.4787810069815 5.486111111111136 0.7499999999999987 9.478781006981484 5.41666666666671 0.7499999999999987 9.358499700900301 8.263888888889204 0.75 3.945840927247811 8.402777777778095 0.75 3.945840927247821 8.333333333333652 0.75 3.825559621166644 7.15277777777818 0.1626168992245342 1.614395501297673 7.083333333333739 0.4126168992245342 1.574301732603943 6.897533428298928 0.1424897119341572 1.648163728325808 6.828088983854487 0.3924897119341572 1.608069959632079 6.966977872743369 0.3051066111586913 1.682250655305527 4.027777777778246 0 0.8586296709248402 3.958333333333795 0 0.978912498569861 4.097222222222683 0 0.978907050361785 4.09722379495344 0.25 0.8987199137882157 4.02777935050899 0.25 1.019002741433237 3.958334906064552 0.25 0.8987253619962916 8.472222222222126 0.75 9.358499700900499 8.402777777777672 0.75 9.478781006981656 8.541666666666572 0.75 9.478781006981656 7.54758744459069 0.8235596707818934 5.346886497082405 7.478143000146243 0.5735596707818934 5.386980265776124 7.478143000146238 0.8235596707818934 5.467167803163573 0.656242535672519 0.1585383527891643 1.652958328232346 0.7350119399678648 0.4172746020236977 1.547249285958112 0.535313674234262 0.2587362492345334 1.565061673614594 0.4067738189039489 0.1575417811847722 1.740599575827107 0.4855432231992948 0.4162780304193056 1.634890533552873 0.6064720846375518 0.3160801339739364 1.722787188170624 3.074794816311322 0.5899825791522505 4.215389515727357 3.175205183689252 0.5899825791522508 3.974826903565019 0.71429768115984 0.5882171311777038 3.045325102814191 0.5166648070314298 0.75 3.009503217049903 0.4419857567087666 0.5976181987173992 3.013024044055525 3.325895724263944 0.7537778832242735 4.231946420608788 3.306656463508467 0.5937604623765242 4.060463553457703 3.206246096130537 0.593760462376524 4.301026165620041 7.777884336347737 0 1.099364813407107 7.708439891903302 0 0.9790835073259274 7.708440627800839 0.2499999999999999 1.059270619842732 3.823645404042725 0.5735596707818934 4.867997607203166 3.819444444444673 0.75 4.98827891328434 3.728639916203591 0.5656485286349928 5.096227969235606 8.465536805601067 0.8397345936163566 5.999712949350535 8.590328932021873 0.6589840807410735 6.037567080919015 8.458125459754257 0.8192494871247169 6.188852336971107 8.257242299869723 0.8553902187244786 6.160529454320601 8.382034426290529 0.6746397058491955 6.198383585889081 8.389445772137339 0.6951248123408352 6.009244198268508 8.819374895611267 0.75 7.393950178739318 8.95823771851815 0.75 7.393962124595743 8.818886918198331 0.8459355817430387 7.524661752461892 8.957749741105214 0.8459355817430387 7.524673698318317 8.888314879669775 0.5959355817430387 7.564771525564893 8.751099067678831 0.1818077769070109 0.8773974112923064 8.751093672351567 0.4318077769070109 0.7971821294294508 8.88889428421669 0.25 0.7785718660286614 8.747028371856576 0.1501298017486674 0.7145952090262437 8.747022976529312 0.4001298017486674 0.6343799271633881 8.609227759991455 0.3319375786556784 0.7332054724270332 5.817696160141093 0.1525280704766478 6.269543106590598 5.771365635287482 0.3179291726921515 6.223713187283433 5.963744191318524 0.3073312624655472 6.392058944048978 2.898080601524514 0.1570399764844209 5.217040061528639 2.967525045968951 0.1570399764844209 5.337321367609814 2.898080601524509 0.4070399764844209 5.297227598916087 5.640733711224531 0.1592600403166617 1.780463972924927 5.710178155668975 0.3179133419363247 1.740370204231205 5.902777777778192 0.158653301619663 1.780777417786517 5.829712862758119 0.1266693803779297 1.656357724815414 5.899157307202563 0.2853226819975927 1.616263956121692 5.637113240648903 0.2859294206945913 1.615950511260102 0.7246652719048268 0.5770321300897523 1.830545433384378 0.7416959758893104 0.8270321300897522 1.759736153067214 0.6154975217606351 0.75 1.888711237613337 0.7340448846086087 0.5836292533650174 2.035927647129151 0.7510755885930923 0.8336292533650173 1.965118366811986 0.860243338737284 0.6606613834547694 1.906952562583028 1.097797373611975 0.5588148179322687 4.676120732117948 1.028352929167533 0.8088148179322687 4.63602696342422 1.250000000000249 0.843867741917775 4.596750810524645 1.167241818056427 0.6526825598500439 4.525155241520729 1.319444444444691 0.593867741917775 4.636844579218373 2.951381263869155 0.8429600235155791 5.309359516786643 2.881936819424718 0.8429600235155791 5.189078210705468 2.881936819424713 0.5929600235155791 5.269265748092915 6.722646545268347 0.1805135451038939 1.014922386410246 6.667596013595615 0.337553521588315 1.170757018166182 6.750505023883258 0.1570399764844211 1.255017981749184 6.873916747866001 0.1497283741052078 1.016493393491859 6.818866216193269 0.3067683505896289 1.172328025247795 6.791007737578358 0.3302419192091017 0.9322324299088566 8.81944983977225 0 0.7384226367801436 8.819444444444986 0.25 0.658207354917288 8.677578532084873 0.1501298017486674 0.5942306979148704 3.092053048949245 0.8463141461219917 2.988220014634704 3.161497493393687 0.5963141461219917 3.028313783328431 3.161497493393683 0.8463141461219917 3.108501320715879 4.23611111111113 0.2500000000000043 8.75709317049439 4.166666666666691 0.2500000000000043 8.636811864413222 4.236111111111137 0 8.676905633106941 4.105192407553186 0.1500996158455449 8.767028577280218 4.035747963108746 0.1500996158455449 8.646747271199052 4.035747963108739 0.4000996158455492 8.726934808586499 8.241725067348375 0.8252002151278254 6.555345699730929 3.64136904761907 0.8188198118753538 9.150642148629572 3.710813492063524 0.6611057527309618 9.147126306882623 3.819444444444473 0.8422859408556082 9.274796321765958 3.556251532057626 0.8505238431152484 9.300901068828519 3.62569597650208 0.6928097839708567 9.29738522708157 3.447620579676677 0.6693436549906022 9.173231053945184 7.720282602359932 0.8403194661058391 8.039024796844672 7.789727046804371 0.5903194661058392 8.079118565538396 7.847222222222208 0.7500000000000001 8.115592871395069 7.838020050978632 0.8713278722310592 8.270655070125338 7.780524875560795 0.7116473383368983 8.234180764268665 4.768518518518543 0.4907407407407625 8.957562013963038 4.652676465106078 0.5863457069065769 9.100061063266663 4.884157946587568 0.595604966165828 9.019873525879191 4.93276960474292 0.6032638907523318 8.778100435513277 4.816927551330455 0.6988688569181463 8.920599484816901 4.70128812326143 0.5940046314930807 8.858287972900747 2.905294017104291 0.5814100031722813 5.882579281647025 2.835849572659845 0.8314100031722813 5.922673050340746 2.986111111111303 0.75 5.870341824546221 3.037187891121861 0.5898211724260297 5.680477557082895 2.967743446677416 0.8398211724260297 5.720571325776616 2.886926352670403 0.671231175598311 5.73280878287742 8.534981250045515 0.8397345936163566 5.879431643269365 8.326686744314173 0.8553902187244786 6.040248148239431 0.7638888888889265 0.75 8.757093170494219 4.298291124399181 0.8519703654488897 7.670367294480171 4.298291124399178 0.6019703654488897 7.750554831867618 4.228846679954734 0.8519703654488897 7.79064860056134 0.4590207287824599 0.5895069705944214 7.914820933707228 0.5843469996246575 0.6464760660361734 8.060964338589249 0.7155613828718304 0.5558959633403234 7.86887138390377 0.6797020330796317 0.6206736741203875 7.71830248493192 0.8050283039218293 0.6776427695621395 7.864445889813942 0.5484876498324589 0.7112537768162375 7.9103954396174 2.059384997565147 0.1469176237917236 1.353504395141107 2.059384997565141 0.3969176237917236 1.433691932528554 1.989940553120696 0.1469176237917236 1.473785701222275 3.988095238095399 0.1874632569077005 6.254096467757624 3.918650793650953 0.4374632569077005 6.294190236451346 3.819444444444608 0.25 6.191091974096054 3.843724827936841 0.1546035933302035 6.337448762925678 3.774280383492395 0.4046035933302035 6.377542531619401 3.942931177143186 0.342066850237904 6.440547025280971 3.055590032026032 0.25 0.9400366894222083 2.986145587581581 0.25 1.059593401515735 2.986111111111575 0 0.9796266378995415 3.184372063871028 0.1481058602044239 0.9703407319971984 3.114927619426578 0.1481058602044239 1.089897444090725 3.184406540341034 0.3981058602044239 1.050307495613392 8.866266679788332 0.4200952868493529 5.490096975127176 8.737904581097562 0.3308835882669115 5.338631119219835 8.866266679788344 0.170095286849353 5.409909437739729 7.813952579131598 0.3003568925055373 2.6921587970114 7.949407582471752 0.2874931418262578 2.537719949613706 7.774343892229419 0.3142967431478827 2.548495250344629 7.744590804730256 0.5258801859385385 2.581051358327286 7.88004580807041 0.513016435259259 2.426612510929593 7.919654494972589 0.4990765846169136 2.570276057596364 7.077193244508573 0.1733420152143134 1.870720554587247 7.094256736572075 0.4233420152143134 1.941056480238522 7.007748800064129 0.1733420152143134 1.991001860668421 7.32490398254901 0.1497319236125793 9.219028821547459 7.449427992714931 0.3303547620807732 9.181108348411019 7.324903982549002 0.3997319236125793 9.299216358934903 3.311993864379802 0.1752345430883585 9.156151222875806 3.173104975490916 0.1752345430883585 9.15615122287579 3.242549419935363 0.425234543088359 9.116057454182071 7.653154860094647 0.5029637382473072 2.694697635426644 7.828218550336979 0.4761601369256824 2.683922334695722 7.758856775935637 0.7016834303586834 2.572814896011609 6.875000000000039 0.75 7.875030259232641 6.75831775965576 0.8521633254049239 7.942396782105056 6.827762204100205 0.8521633254049239 8.062678088186228 6.827762204100191 0.6021633254049239 7.982490550798788 6.569614430196356 0.8256833107237613 4.786706594133002 6.500169985751915 0.8256833107237613 4.666425288051828 6.500169985751914 0.5756833107237613 4.746612825439276 8.958338728661136 0 0.738422636780157 8.888888888889433 0 0.6180581256687836 8.958333333333872 0.25 0.6582073549173013 2.940699847947623 0.8447091153502344 4.212621744421659 2.940699847947626 0.5947091153502344 4.13243420703421 2.871255403503184 0.8447091153502344 4.092340438340482 4.69630954785619 0.4310478729151203 3.394104765273015 4.626865103411749 0.1810478729151203 3.354010996579287 4.841871850355945 0.4100174208477498 3.493701679240424 4.772427405911502 0.1600174208477499 3.453607910546695 4.677070287100697 0.3410652937628702 3.543372047671722 7.977822958044863 0.1620453237452283 1.144062535531074 7.908379249497965 0.4120453237452282 1.103968341966699 8.019411903267013 0.3389593799249998 0.9740554477143426 3.110181777488516 0.331350291729697 4.572304799280064 3.010663958187132 0.1590334233810337 4.412790558703604 3.016184485968317 0.1723168683486633 4.626574160842339 2.929611086848127 0.3246902140571565 4.763253118612916 2.830093267546744 0.1523733457084931 4.603738878036456 2.924090559066943 0.3114067690895268 4.549469516474181 2.690973762209326 0.1603655115202016 4.998301466345877 1.041666666666697 0.8413466983803386 8.837280707881678 0.9722222222222535 0.5913466983803386 8.797186939187947 1.136701932866145 0.6782688484622397 8.714334885826286 2.854971370930476 0.3198409486040001 7.984689407919338 2.966871850355691 0.1600174208477496 8.126700663770947 3.047209974701489 0.290653312000771 8.173914641005705 7.64687085943649 0.8459682467713415 4.763660379746131 7.577426414992038 0.8459682467713415 4.883941685827298 7.646870859436493 0.5959682467713415 4.843847917133584 5.894054097094003 0.8419983392435102 3.836910350320708 6.032942985982887 0.8419983392435102 3.836910350320715 5.963498541538446 0.5919983392435102 3.796816581626981 1.180555555556049 0 0.528209767068087 1.111469026684893 0.2499999999999999 0.5031548469917625 1.180913471129333 0.2499999999999999 0.6016983334436695 1.317718956010615 0.1858714005298605 0.488728351464475 1.24863242713946 0.4358714005298605 0.4636734313881505 1.248274511566176 0.1858714005298605 0.3901848650125679 6.750505023883246 0.1570399764844211 1.495580593911527 6.819949468327698 0.1570399764844211 1.37529928783036 6.819949468327692 0.407039976484421 1.455486825217808 9.235817101928912 0.6940499578357818 4.569225695269018 9.276855541354809 0.8520138477219348 4.628413302511415 9.115729513672624 0.8420361101138469 4.651256153237307 9.213383324996489 0.6903109123809961 4.812887340358182 9.254421764422386 0.8482748022671491 4.872074947600581 9.374509352678674 0.7002886499890839 4.79004448963229 1.989940553120709 0.1469176237917236 1.233223089059931 1.850945105662323 0.1469176237917236 1.23340790707543 1.920390460660838 0.3969176237917236 1.193930727412064 0.4735517417085526 0.5692005995620353 1.834668315275439 0.4905824456930361 0.8192005995620352 1.763859034958275 0.5997501958372278 0.6462327296517874 1.705693230729316 2.490519385452776 0.575952787240503 8.356399496914495 2.50259668013877 0.8245214041666045 8.314562520886266 2.349033816425166 0.7514313830738986 8.357898690891574 2.47003572721448 0.6003641371928886 8.517732719508826 2.482113021900473 0.8489327541189902 8.475895743480596 2.623598590928083 0.6734541582855946 8.474396549503517 2.22222222222245 0.16358024691358 5.108560219365424 2.053571428571653 0.3510435038212809 5.1257432630913 2.05357142857165 0.1874632569077009 5.205930800478748 2.147012124093907 0.1479432720090957 5.361915206448762 1.978361330443111 0.3354065289167966 5.379098250174639 2.14701212409391 0.3115235189226757 5.281727669061315 4.376510902105119 0.8397745920615683 1.5079634305209 4.307066457660678 0.5897745920615683 1.467870516106328 4.448310176731425 0.6446982588816345 1.599194081461331 4.327871411490678 0.8297478872860092 9.432854651810793 4.397315855935118 0.8297478872860092 9.312573345729621 4.327871411490672 0.5797478872859994 9.352667114423344 7.570542409497992 0.8382597928450903 5.165832534291365 7.501097965053544 0.5882597928450903 5.205926302985084 7.61812985408849 0.6618194636269836 5.323971274620581 3.055555555555886 0.8413466983803375 3.344434396841616 3.055555555555889 0.5913466983803375 3.264246859454168 2.891198190466707 0.6610391557419931 3.31237848030096 9.190329739193558 0.25 4.296388601634857 9.082494014026981 0.428973038967188 4.432060922584544 9.03873650362476 0.1789730389671879 4.377469989093253 9.199759904734657 0.151616500216138 4.429463275634685 9.091924179568082 0.3305895391833259 4.565135596584373 9.243517415136878 0.4016165002161379 4.484054209125977 5.834523700208258 0.8522111796192113 4.377733356030538 5.973412589097133 0.8522111796192113 4.377733356030546 5.903968144652693 0.6022111796192113 4.417827124724267 8.888309270072119 0.8459355817430387 7.644952793333537 2.430555555555705 0.7450274348422476 6.645488019291518 2.291666666666815 0.7450274348422476 6.645488019291508 2.432012114513518 0.8376867802544372 6.498662687389306 2.293123225624629 0.8376867802544372 6.498662687389295 2.362567670069073 0.5827142150966849 6.512027276953875 4.740216666085987 0.8397520575055561 1.269947521776476 1.428571428571668 0.562536743092299 4.76489934484776 1.498015873016115 0.812536743092299 4.72480557615404 1.280875354232649 0.5921374112776083 4.930359250513077 1.350319798677096 0.8421374112776083 4.890265481819357 1.459446782804079 0.6546741543699073 4.907448525545246 6.944444444444501 0.8364197530864214 8.155686640088703 7.108990987031568 0.6557969146182158 8.124286053624171 6.944444444444485 0.5864197530864214 8.075499102701265 8.819444444444571 0.25 5.629779212384225 8.819444444444581 0 5.549591674996778 8.711562850573973 0.1532737925356692 5.699408270686277 9.010748431819174 0.3849340242621651 5.135092891801087 9.063723716807313 0.1611348518335992 5.164476699486696 8.835661853724261 0.223799172428566 5.159494351086599 8.853683785500241 0.3666963172152757 4.988645714320834 8.906659070488381 0.1428971447867098 5.018029522006442 9.081745648583295 0.3040319966203089 4.99362806272093 5.763888888889005 0.25 7.073154885358089 5.833333333333448 0.4086533016196634 7.113248654051814 5.684501367973029 0.4061519649247498 6.895845133161151 6.408596937811692 0.1505821306049256 8.80720762844939 6.478041382256132 0.1505821306049256 8.927488934530571 6.408596937811698 0.4005821306049269 8.887395165836828 5.000000000000084 0.75 7.193436191439195 4.930555555555626 0.75 7.313717497520356 4.861111111111205 0.821483797734578 7.106776722393308 4.791666666666747 0.821483797734578 7.22705802847447 4.861111111111192 0.571483797734578 7.186964259780753 3.750000000000012 0.5922859408556064 9.314890090459672 3.571924603174609 0.5688198118753519 9.190735917323286 3.486807087613164 0.6005238431152466 9.340994837522233 5.483271023362827 0.4096805338941648 8.343997381604975 5.602016884020514 0.4447594842027857 8.533836106672659 5.362411199465203 0.3763651854325082 8.432086793989093 7.986111111111552 0 1.460027268236908 8.055555555556005 0.25 1.419933499543205 7.986111111111545 0.25 1.540214805624351 8.10199717790902 0.1558464330837155 1.48439062563212 8.171441622353473 0.4058464330837155 1.444296856938417 8.17144162235348 0.1558464330837155 1.364109319550973 6.867856175770974 0.3151847829736633 1.31848553116899 6.922906707443707 0.1581448064892423 1.162650899413053 6.991267899753717 0.3078731805944501 1.079960942911664 5.486111111111402 0.2499999999999999 4.186403539409979 5.537977199202334 0.4171573428936803 4.247296752045592 5.607421643646775 0.1671573428936804 4.28739052073932 5.547765968951296 0.1419572081869575 4.036531940742376 5.599632057042228 0.3091145510806379 4.097425153377988 5.478321524506853 0.3919572081869575 3.996438172048647 2.430327421135795 0.8517452870070059 2.397883614450762 2.360882976691357 0.8517452870070059 2.277602308369586 2.360882976691351 0.6017452870070059 2.357789845757034 2.27042668704564 0.1482547129929949 1.712589361413155 2.131537798156752 0.1482547129929949 1.712589361413147 2.200982242601198 0.3982547129929949 1.672495592719427 3.099707591421296 0.4278306079947642 1.182562554820227 3.03022867050684 0.1778306079947642 1.22215250329756 3.228489623266293 0.3259364681991881 1.212866597395218 3.055555555555749 0.75 5.750060518465052 3.037187891121861 0.8398211724260297 5.600290019695447 5.765197788399296 0.2778132478810768 1.864919139590847 5.695753343954852 0.1191599462614138 1.905012908284569 5.503153721845635 0.2784199865780754 1.864605694729257 6.527777777777993 0 4.226497308103756 6.458333333333544 0 4.346778614184926 6.597222222222436 0 4.346778614184927 6.715858812503681 0.15387431099587 4.211845756171668 6.646414368059233 0.15387431099587 4.332127062252837 6.576969923614788 0.15387431099587 4.211845756171665 0.6785608211985448 0.8064325293910377 8.041701582645739 0.4220201671091742 0.8400435366451356 8.087651132449199 0.6427014714063459 0.8712102401711018 7.891132683673891 8.826976880976446 0.1514220579494638 6.351229589382179 8.774595928595485 0.4014220579494637 6.301284208952284 8.975396825396931 0.25 6.341615437135119 9.012825292496974 0.1432641006930679 6.23038013239657 8.960444340116013 0.3932641006930678 6.180434751966675 8.812024395695527 0.2946861586425316 6.190048904213734 7.376085767858504 0.8501854889903695 2.704345871985733 7.306641323414056 0.6001854889903695 2.744439640679452 7.43055555555592 0.75 2.823215403823476 7.429952471520583 0.8581033923475117 2.957936902855967 7.360508027076134 0.6081033923475117 2.998030671549685 7.30603823937872 0.7082888813378811 2.879161139711942 8.419701037598433 0.4040317532286578 3.323328062449445 8.280812148709536 0.4953859877640778 3.403515599836884 8.472222222222552 0.59135423453542 3.50480947161686 8.541666666667009 0.6214737917667386 3.373534536263155 8.402777777778113 0.7128280263021586 3.453722073650594 8.350256593153992 0.5255055449953964 3.272240664483179 4.702982961467042 0.4100174208477498 3.734264291402759 4.633538517022599 0.1600174208477499 3.69417052270903 4.377456804385212 0.1544493996232955 3.742304596344146 4.566550876963065 0.3144668204710454 3.691103035274246 4.446901248829654 0.4044493996232955 3.782398365037875 8.958333333333293 0.25 8.516689841566937 9.02736228721221 0.25 8.396648419075628 8.957917842767758 0 8.436582904534774 8.807994431200893 0.1557898731510353 8.561362062758421 8.877023385079809 0.1557898731510353 8.441320640267115 8.877438875645344 0.4057898731510353 8.521427577299278 2.286035025261944 0.8472969823733285 2.637371209397333 2.2165905808175 0.5972969823733285 2.597277440703606 2.147146136373054 0.8472969823733285 2.637371209397326 6.250000000000389 0.215020576131687 2.301996410804938 6.18055555555595 0 2.181715104723763 6.058789386401719 0.170098581168234 2.191600911571821 8.125000000000441 0.25 1.54021480562437 8.055555555555987 0 1.580308574318072 8.240886066797914 0.1558464330837155 1.484390625632138 7.720907677177527 0.4607600539324568 1.771360089626555 7.812446494236365 0.6399974162371964 1.821083468137775 7.590578049221413 0.6688672960798565 1.776079779311426 6.758644539410041 0.1424897119341572 1.648163728325797 2.569444444444512 0.75 8.035405334007296 2.638888888888966 0.75 7.915124027926128 2.686932315670536 0.8473061458587299 8.084779693906455 2.756376760114989 0.8473061458587299 7.964498387825288 2.756376760114983 0.5973061458587299 8.044685925212736 2.935905927422463 0.6813292775325879 3.654076754015214 2.866461482978017 0.8399825791522504 3.694170522708935 2.986111111111434 0.8413466983803375 3.464715702922785 2.835976549017365 0.7108277254904153 3.529968408443519 2.766532104572919 0.8694810271100778 3.570062177137241 2.716326920883948 0.7094636062623283 3.759423228229669 5.026041666666886 0.1957304526748961 5.203782920013177 4.861111111111335 0 5.188747756753019 4.859459933480066 0.122555561440866 5.034188140772236 5.733546670720354 0.2492449811333767 7.331235585347889 5.872435559609255 0.4078982827530401 7.251048047960457 5.726957363076099 0.4146460833488824 7.468725343269359 0.9579403554280176 0.4117229827723273 3.976201531779986 1.027384799872464 0.1617229827723274 3.936274454008946 0.9027777777780587 0.25 4.025861773712141 0.8055964310795143 0.4199971056537812 3.895640907831539 0.8750408755239607 0.1699971056537813 3.855713830060498 0.9302034531739196 0.3317200884261086 3.806053588128343 8.910153645539705 0.4264775959620484 8.359693082764995 8.909738154974168 0.1764775959620484 8.279586145732832 8.759814743407304 0.3322674691130837 8.404365303956482 4.124279835390944 0.8235596707818681 9.158030857431752 4.19372427983539 0.5735596707818582 9.198124626125471 4.263168724279836 0.8235596707818681 9.158030857431751 4.124279835390933 0.8235596707818681 8.917468245269358 4.26316872427982 0.8235596707818681 8.917468245269367 4.193724279835369 0.5735596707818724 8.877374476575605 5.486111111111221 0 6.992967347970615 5.364583333333449 0.1957304526748999 6.962897021450328 5.545612479084141 0.1561519649247498 6.815657595773692 8.861542294481458 0.4381152447802882 1.678807525168932 8.79209785003701 0.1881152447802882 1.718848295740672 8.819444444444928 0.25 1.540267803746388 9.003405244558135 0.4080155421438991 1.587994023486351 8.933960800113688 0.1580155421438991 1.628034794058091 8.976058650150218 0.3461307869241873 1.766574515480635 1.388888888889138 0.843867741917775 4.596750810524653 5.258625130969428 0.1600334604675091 1.270616210558831 2.551557466344892 0.8489327541189902 8.83673966172411 2.621001910789345 0.8489327541189902 8.716458355642942 2.482113021900457 0.8489327541189902 8.716458355642933 8.527569904198707 0.8192494871247169 6.068571030889937 8.597774029419263 0.1811122656256826 2.504892863642073 8.667218473863715 0.1811122656256826 2.384611557560907 8.541666666667059 0 2.422277716886326 8.3847982048866 0.1774937009262967 2.394420271111833 8.454242649331054 0.1774937009262967 2.274138965030667 8.510350012083254 0.3586059665519794 2.356754111786414 4.861111111111432 0.25 3.424621934229164 4.791666666666991 0 3.384528165535436 4.84187185035594 0.1600174208477499 3.573889216627871 3.074794816311318 0.8399825791522505 4.295577053114805 4.772427405911489 0.1600174208477499 3.694170522709039 3.10576073924481 0.8399825791522508 3.934733134871292 2.935905927422445 0.5899825791522504 3.974826903565006 2.866461482978003 0.8399825791522504 3.934733134871278 3.055555555555853 0.6799651583045012 3.883531573801377 2.298857747412899 0.8651726751175099 3.320421818731045 6.512024555480439 0.3301636802706168 7.546595077307805 6.527777777777862 0.1586533016196644 7.674561415763984 6.373135666591559 0.1715103786509524 7.466407539920355 6.512024555480437 0.2928499108628654 7.328856883423857 6.527777777777862 0.1213395322119129 7.456823221880036 6.666666666666741 0.2799928338315773 7.537010759267487 3.055555555556014 0 1.099304115657683 3.125000000000464 0 0.979747403564156 3.253816508315467 0.1481058602044239 1.090018209755339 2.972785170308342 0.4021123609044162 4.434659887081999 2.978305698089527 0.4153958058720458 4.648443489220734 2.792214479667953 0.3954522832318757 4.625608206414851 8.334342415069276 0.5049516109229074 3.58496254840991 8.473231303958171 0.4135973763874874 3.504775011022471 8.281821230445154 0.3176291296161452 3.403481139242496 5.934262778722092 0.1602242778540464 6.03469387588366 1.458333333333552 0.25 5.228841525446565 1.597222222222441 0.25 5.22884152544657 1.527777777777998 0 5.188747756752843 1.5120245554806 0.1715103786509443 5.076151483046687 1.650913444369489 0.1715103786509443 5.076151483046692 1.581468999925043 0.4215103786509443 5.116245251740414 6.319444444444557 0.25 7.073154885358115 6.180555555555673 0.25 7.07315488535811 6.250000000000114 0 7.113248654051837 6.373135666591566 0.1715103786509524 7.225844927758009 6.234246777702682 0.1715103786509524 7.225844927758004 6.303691222147124 0.4215103786509524 7.185751159064282 1.908501044339501 0.8284896213490551 3.427183611687352 2.206468999925151 0.8284896213490551 3.151650585747974 2.067580111036259 0.8284896213490551 3.151650585747968 2.137024555480703 0.5784896213490551 3.191744354441695 1.086743426040906 0.1990669164650886 3.53314612069604 1.017504167511856 0.4490669164650886 3.493201729455796 0.902982963693487 0.2499999999999999 3.464865080376161 0.8750408755239762 0.1699971056537813 3.61515121789815 0.8058016169949269 0.4199971056537812 3.575206826657907 0.9895620793423456 0.3690640221188698 3.643487866977785 6.388888888888953 0.4950730547060843 8.235874177476111 6.25000000000006 0.4086533016196626 8.316061714863544 6.25000000000006 0.58641975308642 8.316061714863544 6.257981970547444 0.6823879998577681 8.099648792771021 6.119093081658551 0.5959682467713465 8.179836330158455 6.257981970547444 0.5046215483910108 8.099648792771021 2.638888888889053 0.75 6.311373280177165 2.569444444444615 0.75 6.191091974095988 2.697753794412025 0.8519816604439844 6.189614588917429 2.767198238856467 0.6019816604439844 6.229708357611157 2.767198238856463 0.8519816604439844 6.309895894998606 6.180555555555575 0.1490058478048805 9.134773907786542 6.250000000000037 0.3990058478048818 9.094680139092818 6.31944444444447 0.1490058478048805 9.13477390778656 4.104273191909517 0.6263055365755464 1.464099472268249 4.173717636353959 0.8763055365755464 1.50419238668282 4.02222444201918 0.7166978687172608 1.587319178182944 8.532982509376534 0.5863680538652909 6.692344673877851 8.463538064932088 0.8363680538652909 6.732438442571569 8.232342854737468 0.859543161111566 6.703240657680926 8.362547586336152 0.6959112149768569 6.80355567052518 8.301787299181914 0.609543161111566 6.663146888987208 7.441162597575204 0.1986768532358882 8.230443719226759 7.371718153130754 0.4486768532358881 8.270537487920468 7.291666666666712 0.2499999999999999 8.35615548355735 7.406003521126795 0.1673469831333624 8.45051814463142 7.336559076682344 0.4173469831333623 8.490611913325129 7.486055007590837 0.3660238363692506 8.36490014899454 5.783571656998334 0.1396529976604499 2.926314981844877 5.661805487844108 0.309751578828684 2.936200788692937 5.57267827529056 0.1700985811682341 3.033570054140024 5.643721806568505 0.1402737144452557 3.161342752963998 5.521955637414278 0.3103722956134898 3.171228559812058 5.732849019122052 0.2799267121057056 3.063973487516911 0.7645115954307731 0 3.384076622694537 0.8332575381419529 0 3.503954648611992 0.9034762795113563 0 3.38493144569895 0.8342370209823069 0.2499999999999999 3.344987054458706 0.7640182796129036 0.2499999999999999 3.464010257371749 3.541666666666774 0 7.714655184457551 3.541666666666782 0.2499999999999999 7.634467647070102 3.472222222222325 0.2499999999999999 7.754748953151267 3.606572618698098 0.1548348725760024 7.858422484024228 3.606572618698106 0.4048348725760024 7.778234946636779 3.676017063142555 0.1548348725760024 7.738141177943063 2.172927415887442 0.8473310069176386 6.69496570362884 2.311816304776332 0.8473310069176386 6.69496570362885 2.242371860331887 0.5923584417598863 6.70833029319342 7.283835922003536 0.1613672280349112 8.180272642800691 7.363887408467578 0.3600440812707994 8.094654647163809 7.214391477559086 0.411367228034911 8.2203664114944 2.497645735274079 0.5890769431287713 8.046697386969992 2.497645735274085 0.8390769431287713 7.966509849582543 2.679985866893238 0.5940303045686914 7.858663841852326 2.679985866893244 0.8440303045686914 7.778476304464878 2.538742713278357 0.6831072476974628 7.910049663508742 4.617723887689312 0.7119774422441196 9.022349126681146 4.502084459620288 0.6071132168190542 8.960037614764992 4.666335545844666 0.7196363668306234 8.780576036315232 2.222222222222445 0.4135802469135801 5.188747756752871 2.222222222222443 0.2500000000000001 5.268935294140319 2.361111111111328 0.159033423381033 5.320771645790661 2.361111111111324 0.409033423381033 5.400959183178109 2.361111111111331 0.322613670294613 5.240584108403214 1.472438477207187 0.7916932277196557 1.199329612836066 1.402994032762745 0.5416932277196557 1.159235844142338 1.333549588318299 0.7916932277196557 1.199329612836059 8.670551318206083 0.8440998247051198 2.709550344010323 8.601106873761644 0.8440998247051198 2.589269037929149 8.601106873761641 0.5940998247051197 2.669456575316596 2.878787878788143 0.2430789375233826 4.488929248644274 5.853016101442772 0.3546735737921372 3.046596287926052 5.642122719734997 0.3851191572999214 3.153851360221199 5.713166251012942 0.355294290576943 3.281624059045173 5.727645951779763 0.8378862996924782 1.152903658494732 5.626847307986418 0.5946507271937231 1.13091224523532 5.806131210104807 0.6905638412315747 1.063542518757154 7.034214403040759 0.8393254537235102 0.4713209246819229 6.964064401693403 0.5893254537235102 0.5093452713585787 7.013216353498274 0.75 0.6610169583362857 6.897602233048163 0.8548617610070046 0.6543760320431882 6.827452231700807 0.6048617610070046 0.6924003787198438 6.848450281243291 0.6941872147305148 0.5027043450654811 6.31944444444461 0.75 5.709966749771521 6.180555555555728 0.75 5.709966749771516 6.368746872074992 0.8281216168398935 5.556703045115091 6.229857983186109 0.8281216168398935 5.556703045115085 6.299302427630549 0.5781216168398935 5.596796813808813 5.454756911762646 0.7567644275012448 1.077191936733789 9.000775872989228 0.4207108639796548 3.958942134312678 9.018553650767005 0.1707108639796548 3.889018601710823 8.87111111111143 0.25 3.815295616381081 8.977085526574733 0.4855823358678963 3.802980425030509 8.99486330435251 0.2355823358678963 3.733056892428654 9.124528066230308 0.4062931998475512 3.876703410360251 6.317553847943684 0.8490964395061178 5.045806170589666 6.456442736832573 0.8490964395061178 5.045806170589671 6.38699829238813 0.5990964395061178 5.005712401895945 5.000000000000423 0.1586533016196627 1.500121036930419 5.069444444444869 0 1.460027268236699 5.119736242080538 0.1600334604675091 1.270616210558825 9.027115414111115 0.840386069142834 3.42267101336153 8.958333333333668 0.840386069142834 3.542569903601245 8.964772934848074 0.8712926887836651 3.294328047937211 8.895990854070625 0.8712926887836651 3.414226938176926 8.826546409626179 0.7116787579264992 3.451987370161276 2.569444444444684 0.75 4.908091375896827 2.430555555555793 0.75 4.908091375896818 2.645254659482558 0.8514933187274754 4.805736865993833 2.506365770593667 0.8514933187274754 4.805736865993824 2.575810215038115 0.6014933187274754 4.765643097300106 2.6217599342134 0.1523733457084931 4.724020184117618 2.69120437865784 0.1523733457084931 4.844301490198793 2.621759934213397 0.4023733457084931 4.804207721505067 4.739883699492577 0.1552118183600071 3.967307483273898 4.73988369949258 0.4052118183600071 3.88711994588645 4.809328143937028 0.1552118183600071 3.84702617719273 4.51388888888916 0 4.346778614184798 4.513888888889156 0.25 4.426966151572246 4.444444444444718 0.25 4.306684845491071 4.409703838294875 0.1518106712188041 4.42866608314091 4.40970383829487 0.4018106712188041 4.508853620528359 4.479148282739313 0.1518106712188041 4.548947389222086 4.44694228144964 0.1219123115275788 6.474097264173499 4.516386725894089 0.3719123115275788 6.434003495479779 4.585831170338533 0.1219123115275788 6.474097264173507 4.166666666666687 0 8.797186939188112 4.097222222222247 0 8.676905633106946 3.966303518664295 0.1500996158455449 8.767028577280223 3.055555555555871 0.8413466983803375 3.584997009003962 2.935905927422454 0.8399825791522504 3.814451828790111 3.125000000000323 0.8413466983803375 3.464715702922792 3.175205183689261 0.8399825791522508 3.814451828790125 3.244649628133713 0.8399825791522508 3.694170522708955 3.17520518368927 0.6813292775325883 3.654076754015227 8.888824564082622 0.8042684170482884 1.219598388095986 8.888879230098418 0.5542684170482884 1.299759420922437 8.88883422287358 0.75 1.420066000348196 8.754839723708265 0.8417696355894191 1.388142266565716 8.754894389724061 0.5917696355894191 1.468303299392167 8.754884730933103 0.6460380526377075 1.267835687139957 1.596084138602882 0.8167416612826867 0.9816371202194282 1.526639694158444 0.8167416612826867 0.8613558141382526 1.52663969415844 0.5667416612826867 0.9415433515257001 5.833476233454014 0.8236655227228821 3.023766750714913 5.902920677898466 0.8236655227228821 2.903485444633738 5.833476233454021 0.5736655227228821 2.943579213327463 7.777777756847724 0 3.985934708025632 7.847222201292178 0 3.865653401944465 7.708333333333621 0 3.865653389860316 7.739899102677089 0.2430786263657926 3.964064000204806 7.809343547121543 0.2430786263657926 3.843782694123639 7.878787970635646 0.2430786263657926 3.964064012288955 6.216799856991292 0.8455916345834752 5.784242393479474 6.147355412546849 0.5955916345834752 5.824336162173196 6.07791096810241 0.8455916345834752 5.784242393479468 8.857782370755032 0.4311122656256826 2.574810116358345 8.875416558749368 0.1811122656256826 2.504818318801857 9.009873092888485 0.2499999999999999 2.612401730843547 8.828016626961055 0.3920178205278556 2.71305764922621 8.845650814955391 0.1420178205278556 2.643065851669721 8.69356009282194 0.3231300861535382 2.605474237184519 2.23103264011718 0.5798935176088738 4.221410610960341 2.396879600178299 0.6592044113907616 4.205846361312229 2.231032640117186 0.8298935176088738 4.141223073572893 5.515873015873222 0.1874632569076989 5.326212106560121 5.446428571428784 0.4374632569076989 5.286118337866391 5.486111111111326 0.25 5.148653988059344 5.402990256851337 0.1312977228979161 5.112614099175149 5.3335458124069 0.3812977228979161 5.072520330481419 5.363307717168796 0.318760979805615 5.250078448982196 1.055971517921597 0.8431557069244909 4.791509993118871 1.125415962366035 0.8431557069244909 4.911791299200046 1.125415962366039 0.5931557069244909 4.831603761812598 7.638888888889327 0.5735595799300259 1.419933216295053 7.638888888889301 0.4137226612108351 1.580530576236725 7.508559260933186 0.6218299033582348 1.585250265921597 4.406677413954013 0.8422859408556147 2.84150436729665 4.350427413954019 0.6611057527309816 2.683592195455795 4.388194444444816 0.8188198118753669 2.625209463288702 4.56255606068537 0.8520820241135079 2.631482920186437 4.506306060685377 0.6709018359888748 2.473570748345583 4.524789030194574 0.6943679649691226 2.689865652353531 7.994047382080816 0.8648943628561362 7.999978539515116 7.924602937636383 0.8648943628561362 8.120259845596276 7.924602937636374 0.6148943628561363 8.040072308208835 5.347222222222511 0.2499999999999999 4.186403539409968 5.416666666666954 0 4.226497308103696 5.267245447228444 0.1495331999842562 4.088065354429339 5.406134336117335 0.1495331999842562 4.08806535442935 5.336689891672894 0.3995331999842562 4.047971585735622 3.230941937838133 0.8463141461219917 2.988220014634711 6.110968210991151 0.8236655227228828 2.542476519544334 6.180412655435603 0.8236655227228828 2.422195213463164 6.110968210991157 0.5736655227228828 2.462288982156886 6.111254011231795 0.8236655227228821 3.02376675071493 6.041809566787341 0.8236655227228821 3.144048056796103 6.111254011231788 0.5736655227228821 3.103954288102379 2.428201290829632 0.8390769431287713 8.086791155663711 6.388745988768933 0.5736655227228828 2.622664056931806 6.319301544324484 0.8236655227228828 2.662757825625526 6.458333333333711 0.75 2.743027866435936 6.632490017369308 0.6215681322205042 2.683368125999771 6.563045572924859 0.8715681322205042 2.72346189469349 6.493458228360081 0.6952336549433871 2.603098085189361 5.763888888889224 0.2150205761316873 3.143965553373139 3.144440839164965 0.4255110593043328 7.876938090079999 2.9815338640092 0.4167445902328651 7.911618518471035 3.173772467780213 0.387556953629636 8.100843751557402 6.388745988768934 0.8236655227228828 2.542476519544357 6.632490017369309 0.8715681322205042 2.603180588612322 3.964722336861997 0.8427503372448184 8.808873170349051 4.061224394475118 0.6663100080266865 8.929154476430234 4.034166781306433 0.5927503372448226 8.768779401655298 4.780986674505248 0.6471193415637876 7.788676625495668 4.626069632242524 0.8235596707818933 7.908957931576834 4.738250375596113 0.8235596707818942 7.71465518445759 4.661541499995229 0.6755300362307839 7.670367294480185 4.506624457732507 0.8519703654488897 7.790648600561351 4.549360756641641 0.675530036230783 7.86467004159943 4.807694820040561 0.8235596707818942 7.594373878376416 4.576068902176955 0.8519703654488897 7.670367294480178 3.376989658575576 0.8175024200026979 0.6755293960015795 3.446434103020022 0.5675024200026979 0.653892388881782 3.541666666667152 0.75 0.5964211185486136 3.610209262893364 0.8404725990722763 0.7282051408391524 3.67965370733781 0.5904725990722763 0.706568133719355 7.569444444444725 0.1232807567195944 3.948133113218451 7.638888888889179 0.1232807567195944 3.827851807137284 7.670454658232647 0.366359383085387 3.926262417481774 6.303710733220417 0.1592600403166623 7.634781091931838 6.287957510922993 0.3307704189676147 7.506814753475658 6.442599622109297 0.3179133419363267 7.714968629319287 6.072499703787523 0.1600118626508077 8.91528274823747 6.141944148231978 0.1600118626508077 8.795001442156309 6.141944148231984 0.4100118626508091 8.875188979543747 8.465536805601069 0.5897345936163565 5.919525411963086 8.45812545975426 0.5692494871247169 6.108664799583659 8.257242299869727 0.6053902187244786 6.080341916933152 5.51706187103348 0.5963114224468349 0.8919804514065273 5.548416070382382 0.83954699494559 0.7936905585847669 5.696345773151869 0.6922245364846866 0.8246107249283614 5.952581001939177 0.1397792134966606 3.866555868151193 6.022025446383621 0.3897792134966606 3.826462099457467 6.09146989082806 0.1397792134966606 3.8665558681512 0.9733048814790821 0.1503246415572267 8.155095623251627 1.042840492241719 0.1503246415572267 8.034761682272119 1.04274932592353 0.4003246415572267 8.134705078030256 4.367735568843617 0.8519703654488897 7.790648600561347 8.366004844780401 0.1555867935794694 2.550985195020187 8.278580827444394 0.3330804945057661 2.402846443164528 8.491556651977056 0.336699059205152 2.513319035694769 2.361111111111339 0.8413466983803373 5.108560219365432 2.36111111111133 0.6813292775325883 5.24671970938795 2.500000000000217 0.8399825791522511 5.326907246775406 2.361111111111328 0.8773401335379738 5.334531202864417 2.361111111111319 0.7173227126902249 5.472690692886934 2.222222222222442 0.7186868319183111 5.254343665476961 6.319444444444557 0.75 7.073154885358115 6.250000000000115 0.75 6.95287357927694 6.418699487165482 0.8314100031722833 6.948794426910013 6.34925504272104 0.8314100031722833 6.828513120828839 6.34925504272104 0.5814100031722833 6.908700658216285 6.142596112055421 0.1602242778540464 5.914412569802503 6.073151667610988 0.1602242778540464 5.794131263721328 6.142596112055427 0.4102242778540464 5.834225032415056 7.184252399232165 0.2430837556792851 1.077260676915913 7.253869581758712 0.2430837556792851 0.958414392871106 7.152950515860315 0 0.9803370659484605 7.012805636754891 0.1497283741052078 1.016493393491868 7.082422819281437 0.1497283741052078 0.8976471094470615 7.113724702653288 0.3928121297844929 0.9945707204145137 6.993224050723023 0.3136418219082014 2.062803530113871 8.61108400159684 0.8496137876208055 2.861273807548117 8.541639557152397 0.5996137876208054 2.821180038854389 8.472195112707951 0.8496137876208055 2.861273807548107 5.09071730804482 0.8492238941302386 7.277220632123012 5.090717308044805 0.5992238941302386 7.357408169510457 5.021272863600361 0.8492238941302386 7.397501938204174 3.875597275763465 0.1496035182538023 1.011163247855585 3.945043292938659 0.3996035182538023 1.051253490718961 3.945041720207902 0.1496035182538023 1.13144062729253 2.708333333333559 0.8492798353909471 5.148653988059175 2.638888888889108 0.8492798353909471 5.268935294140344 2.708333333333553 0.5992798353909471 5.228841525446623 4.027777777778051 0.1507201646090532 4.306684845491045 4.09722222222249 0.1507201646090532 4.426966151572222 4.027777777778049 0.4007201646090531 4.386872382878492 2.500000000000231 0.8492798353909471 5.028372681977993 2.638888888889122 0.8492798353909471 5.028372681978 2.569444444444679 0.5992798353909471 4.988278913284274 6.041666666666982 0.1507201646090555 3.464715702922961 6.111111111111411 0.1507201646090555 3.584997009004144 6.041666666666972 0.4007201646090556 3.54490324031041 6.111111111111413 0.8492798353909473 3.584997009004137 6.111111111111403 0.5992798353909473 3.665184546391585 6.180555555555843 0.8492798353909473 3.705278315085319 8.688087992087549 0.1514220579494638 6.351229589382172 8.888888888888994 0 6.391560817565006 8.873936403608077 0.1432641006930679 6.230380132396562 5.27777406964648 0.8492770886267835 3.424624075119979 5.347218514090916 0.8492770886267835 3.544905381201154 5.347218514090921 0.5992770886267835 3.464717843813707 8.886756062149892 0.8500697712203632 1.982477649347538 8.928856864139062 0.6019657716711166 1.994952020710353 9.069878579767366 0.7518960004507534 2.073908170005675 8.871124516288795 0.8782896986297241 2.131365070727402 8.913225318277965 0.6301856990804775 2.143839442090217 8.730102800660489 0.7283594698500873 2.052408921432081 6.25000000000016 0.75 5.83024805585269 6.147355412546842 0.8455916345834752 5.904523699560642 5.413297746549302 0.3330202993851316 1.273045971448271 5.635020973975982 0.6196669206185654 3.607733941630623 5.773909862864875 0.8346874967502537 3.607733941630637 5.694444444444735 0.7849794238683118 3.745372083779019 5.75516520820511 0.6269777631118221 3.836910350320694 5.83463062662525 0.676685835993764 3.699272208172312 5.424012626512008 0.8449965826441992 7.012352541542706 5.476095959845351 0.6492661299693037 6.922141561981835 5.468750000000127 0.8042695473251045 6.782475062328573 5.605987125751797 0.8529442749075286 6.844016864958904 5.65807045908514 0.657213822232633 6.753805885398034 5.613333085597021 0.6979408575517277 6.983683364612166 5.266322863192174 0.1644585570492904 9.295827138144151 5.26632286319218 0.4144585570492891 9.376014675531611 5.196878418747723 0.1644585570492904 9.416108444225339 5.637037525356851 0.1462618218843247 7.306767629015303 5.630448217712595 0.3116629240998305 7.444257386936773 5.676139751632673 0.3955068030177015 7.284191948149061 5.848300522375951 0.1628053973752021 5.016618586936059 5.902543239552601 0.3339481126730715 5.024876749757915 6.026464939399079 0.1711427152978693 4.956443307412631 5.83566684234355 0.1309662234640949 4.793587078607051 5.8899095595202 0.3021089387619642 4.801845241428907 5.711745142497072 0.293771620839297 4.862020520952337 1.316770240715047 0.5920244244952075 2.01234589204245 1.057137271990934 0.6756536778602249 1.997702612191448 1.129255920165179 0.5836292533650173 2.126978056178802 1.319444444444842 0.6034427291193223 2.24892402391167 1.059811475720729 0.6870719824843394 2.234280744060668 1.247325796270597 0.6954671536145298 2.119648579924315 6.091469890828034 0.1397792134966606 4.107118480313551 6.022025446383592 0.3897792134966606 4.147212249007271 5.952581001939158 0.1397792134966606 4.107118480313542 7.77777694058606 0.5864199081219663 4.707623015781523 7.940734948076384 0.6584438241568191 4.664336405255469 7.777776940586057 0.8364199081219663 4.62743547839407 0.3843695547761227 0.8435972512695928 5.409597188064081 0.3588670565872102 0.6380267180409374 5.350182276317891 0.4284551637341723 0.7944294667713445 5.220480975055466 0.6315540400747572 0.8444665647234777 5.310476877757733 0.6060515418858448 0.6388960314948222 5.251061966011543 0.5619659329277952 0.6880638159930705 5.440178179020158 7.569444444444862 0.25 1.540214805624284 7.430555555555967 0.25 1.540214805624268 7.50000000000041 0 1.580308574317995 7.565976095444638 0.1620597505846111 1.703530258777568 7.427087206555742 0.1620597505846111 1.703530258777551 7.496531651000195 0.4120597505846111 1.663436490083841 8.887461329775014 0.1623045260605924 3.659702543307239 8.869683551997237 0.4123045260605924 3.729626075909094 8.993435745238315 0.3978868619284888 3.647387351956667 5.00000000000043 0.7503177109378087 1.339795279738059 4.879105554974876 0.5900697684433649 1.269996839359017 5.000000000000425 0.5867374640242287 1.500170354512954 2.847222222222678 0.1587669497434119 1.139277118686789 2.916701143137135 0.4087669497434119 1.099687170209456 2.960784226062394 0.3365975577381761 1.262246271991281 5.565576529531553 0.8346874967502537 3.487452635549442 5.635020973976004 0.8346874967502537 3.367171329468275 5.565576529531557 0.5846874967502537 3.407265098161995 5.843354307309319 0.5846874967502537 3.56764017293691 5.84335430730933 0.8346874967502537 3.487452635549461 6.656645692691376 0.8346874967502583 2.078790634709839 6.587201248246934 0.8346874967502583 2.199071940791009 6.656645692691381 0.5846874967502583 2.158978172097289 1.294304977852877 0.1822020740186082 5.163168265863161 1.363749422297321 0.4322020740186082 5.203262034556889 1.417440644444369 0.3537124526695525 5.05057199215701 2.696960683770945 0.5814100031722813 6.083048125115633 2.627516239326503 0.8314100031722813 6.042954356421905 2.825270033738355 0.6833916636162657 6.081570739937074 8.904526138752345 0.834086744583029 7.263826888842683 8.973954100223793 0.584086744583029 7.303936661945682 9.043388961659229 0.834086744583029 7.263838834699108 0.9741769168685543 0.4016757104884006 3.35535599798757 1.043416175397604 0.1516757104884006 3.395300389227814 1.157937379215973 0.3507426269534892 3.423637038307449 5.815754976980077 0.1671573428936804 4.407671826820504 5.746310532535649 0.1671573428936804 4.287390520739331 5.815754976980083 0.4171573428936804 4.327484289433061 3.267207951247616 0.8707855311253142 3.451947571557592 3.197763506803173 0.7121322295056517 3.411853802863865 3.317413134936563 0.7107681102775649 3.641308622650028 8.448416131739645 0.8520734757374064 8.708424213986866 8.517860576184081 0.6020734757374064 8.7485179826806 8.587305020628527 0.8520734757374064 8.708424213986882 2.112967657956579 0.7920759517337193 2.30138538379701 2.043523213512127 0.7920759517337193 2.421666689878179 2.112967657956573 0.5420759517337193 2.381572921184458 3.004750638234485 0.4169384833243642 8.104831335392554 0.5265463179996839 0.75 1.948055755868208 0.4016312419320849 0.8192005995620352 1.823203553213145 8.321988920216263 0.8355290652624887 9.295979942489542 8.25254447577181 0.8355290652624887 9.416261248570699 8.32198892021626 0.5855290652624887 9.376167479876989 6.454959284862101 0.8440811763211212 5.958181292590719 6.491091440483501 0.6589848421208536 5.851393362887257 6.563909933399325 0.8149036657997324 5.803647663536689 6.716795549315783 0.8464045921702559 5.926037948743632 6.752927704937184 0.6613082579699883 5.819250019040171 6.643977056399961 0.690485768491377 5.9737836480942 8.667218473863723 0.4311122656256826 2.30442402017346 8.611111111111519 0.2499999999999999 2.221808873417713 8.454242649331061 0.4274937009262967 2.193951427643219 5.371146876182902 0.1591497554394324 4.28040398220172 5.232257987294011 0.1591497554394324 4.280403982201708 5.301702431738459 0.4091497554394323 4.240310213507991 4.520513346621399 0.5669909415805743 7.718479816912648 4.527777777777857 0.4650205761316846 7.482111326033981 4.486281085028928 0.3536799022673548 7.67137707576642 5.405441951491559 0.1512361568639934 6.249018815130571 5.474886395936005 0.4012361568639934 6.20892504643685 5.486111111111269 0.25 6.35146704887105 5.609362826807756 0.1525280704766478 6.389824412671757 5.678807271252202 0.4025280704766478 6.349730643978038 5.598138111632492 0.3037642273406412 6.247282410237558 6.996941246324626 0.3903280336180401 2.492680528276802 6.941385690769076 0.1753074574863457 2.540793050709273 7.138888888889274 0.2150205761316943 2.494446500534914 7.147540456162687 0.3625364565654043 2.659816560004035 7.091984900607136 0.1475158804337099 2.707929082436506 6.950037258042489 0.3228233379200557 2.706163110178394 3.406724367830811 0.1368305926457631 7.67381133357078 3.476168812275268 0.1368305926457631 7.553530027489614 3.406724367830819 0.386830592645763 7.593623796183332 7.499389543439399 0.5883036011577364 2.316914950207224 7.511963887283191 0.6353409938793581 2.06671300796607 7.65146323273308 0.5470373927216217 2.131982005951371 7.524470805493658 0.4080483025878288 2.294105523481262 7.53704514933745 0.4550856953094504 2.043903581240109 7.384971460043769 0.4963519037455651 2.228836525495962 4.584640820284224 0.1516886734614456 6.230430864846843 4.654085264728666 0.1516886734614456 6.35071217092802 4.584640820284221 0.4016886734614456 6.310618402234293 4.097222222222403 0 5.790154287158822 4.097222222222396 0.2499999999999999 5.87034182454627 4.166666666666846 0.2499999999999999 5.7500605184651 4.063237495462464 0.1605893076721359 5.657873542831124 4.063237495462458 0.4105893076721359 5.738061080218571 3.993793051018014 0.1605893076721359 5.778154848912296 9.22538178042605 0.659014493760915 7.769135446455997 9.144972952260085 0.8305552204211667 7.923591655091079 9.107987360185042 0.8284592733397484 7.680590169309262 9.038111545303924 0.6743948550827872 7.610808529980824 8.957702717137959 0.8459355817430387 7.765264738615906 9.075097137378965 0.6764908021642054 7.85381001576264 3.149552847076035 0.1590334233810337 4.17222794654127 3.080108402631583 0.1590334233810337 4.292509252622438 3.080108402631588 0.4090334233810337 4.212321715234989 2.638888888889105 0.159033423381033 5.320771645790677 2.6388888888891 0.409033423381033 5.400959183178124 2.569444444444654 0.159033423381033 5.441052951871844 2.291666666666885 0 5.309029062834046 2.29166666666688 0.2500000000000001 5.389216600221495 2.430555555555766 0.159033423381033 5.441052951871836 3.239336041813432 0.1590334233810332 3.931665334378931 3.169891597368985 0.4090334233810332 3.971759103072651 3.100447152924543 0.1590334233810332 3.931665334378923 2.871775069298266 0.1590334233810342 3.931665334378913 2.941219513742708 0.4090334233810342 3.971759103072641 3.05555555555585 0.3180668467620673 3.877395972816642 5.34722222222255 0.25 3.304340628148021 5.303233011614898 0.1639284968873369 3.44991168775822 5.372677456059341 0.4139284968873369 3.490005456451948 5.245213195242043 0.396842655835536 3.410787035016998 5.201223984634392 0.3107711527228729 3.556358094627198 5.175768750797602 0.146842655835536 3.37069326632327 8.888879230098443 0.5542684170482884 0.8988241964180164 8.888884625425707 0.8042684170482884 0.979039478280872 8.88889428421669 0.75 0.7785718660286614 8.781690749817468 0.6059024428423483 0.6847244466864353 8.781696145144732 0.8559024428423483 0.7649397285492909 8.781681091026485 0.6601708598906367 0.8851920589386459 7.222375330234092 0 1.099634227648683 7.291992512760638 0 0.980787943603876 7.323294396132489 0.2430837556792851 1.077711554571328 5.763888888889305 0 1.700589880399067 5.571289266780089 0.1592600403166617 1.660182666843754 5.760268418313677 0.1266693803779297 1.536076418734241 2.364184267689899 0.1683247916965334 4.70584824465031 2.364184267689897 0.4183247916965334 4.786035782037759 2.294739823245449 0.1683247916965334 4.826129550731478 2.291666666666925 0.25 4.426966151572136 2.152777777778034 0.25 4.426966151572127 2.222222222222477 0 4.467059920265854 2.294739823245459 0.1683247916965334 4.585566938569141 2.155850934356569 0.1683247916965334 4.585566938569132 2.225295378801017 0.4183247916965334 4.545473169875413 3.368876061243391 0.8426978487410095 2.121100732503541 3.457984041820136 0.6533481308901952 2.235192791610638 3.345335675079804 0.6670612142872223 2.007868899532686 9.008943538768943 0.6217562683224576 1.346653028981873 9.008888872753147 0.8717562683224576 1.266491996155422 9.008933879977985 0.676024685370746 1.146185416729663 2.22222222222245 0.8413466983803373 5.108560219365424 2.222222222222439 0.8773401335379738 5.334531202864408 5.775926414245752 0.3049151235039881 7.226580091627871 7.500000000000426 0.25 1.41993349954311 7.569444444444869 0 1.460027268236836 7.650317095149397 0.1479821914061397 1.352636777306501 7.719761539593834 0.1479821914061397 1.472918083387675 7.65031709514939 0.3979821914061398 1.432824314693949 6.498015873015948 0.4711900447119698 7.65737837203811 6.343373761829644 0.4840471217432579 7.44922449619448 6.273948828458503 0.4717967834089677 7.617598048205963 7.732776691265231 0.1590402948208724 1.153431288526392 7.593994360945835 0.1590402948208724 1.15361275194008 7.663332982718332 0.4090402948208723 1.113337094962016 4.590031619909322 0.128838946727506 4.300647697319458 4.659476064353761 0.128838946727506 4.420929003400634 4.590031619909318 0.378838946727506 4.380835234706907 9.164669812384741 0.75 3.347685381853097 9.026443287162845 0.590386069142834 3.505344704077162 8.964100807899804 0.6212926887836651 3.377001738652843 7.717673169197266 0.8496388163035555 8.771031857298755 7.787117613641697 0.8496388163035555 8.891313163379923 7.504517928714341 0.8767396058415597 8.872286392462371 7.573962373158771 0.8767396058415597 8.992567698543539 7.583302209022684 0.7263784221451153 8.846131310572822 1.318540723996837 0.1613448013991462 0.6694688876632605 1.249454195125681 0.4113448013991461 0.644413967586936 1.386259680006964 0.3472162019290067 0.5314439856077415 4.562556060685382 0.8520820241135079 2.390920308024095 4.388194444444827 0.8188198118753669 2.384646851126359 4.444444444444839 0.8773111952570489 2.156032523431089 4.388194444444834 0.6961310071324158 2.238682963752578 4.562556060685389 0.7293932193705568 2.244956420650314 0.6468477486061912 0.75 2.013956577571706 0.7824258154386484 0.8336292533650173 2.090363706770356 7.36658697170426 0.8353411958186897 5.086832030630946 7.227698082815371 0.8353411958186897 5.086832030630937 7.297142527259813 0.5853411958186897 5.126925799324666 8.456142989096081 0.8353411958186889 8.973168342711762 8.45614298909609 0.5853411958186889 8.892980805324317 8.386698544651653 0.8353411958186889 8.852887036630584 8.311886980284971 0.1646070229096069 6.465599588628063 8.381331424729426 0.1646070229096069 6.345318282546897 8.381331424729417 0.4146070229096069 6.425505819934344 6.51202455548043 0.4215103786509524 7.386220002532918 6.498015873015939 0.5625367430923054 7.497003297263223 6.666666666666734 0.4086533016196644 7.594373878376548 7.928094872927186 0.1479821914061397 1.352636777306551 7.928094872927179 0.3979821914061398 1.432824314693995 7.858650428482727 0.1479821914061397 1.472918083387697 2.821753746022261 0.8196924573616556 3.352472248994681 2.671619183928192 0.6891734844717334 3.417724954515415 7.569444444444427 0.1776634377349947 9.5809220662009 7.499999999999989 0.4276634377349947 9.540828297507172 7.624524010165917 0.3582862762031886 9.422720286983289 6.458333333333811 0.25 0.6581518943622551 6.319444444444923 0.25 0.65815189436224 6.388888888889372 0 0.6180581256685228 6.390191160704369 0.1450459398062476 0.7607427182697716 6.251302271815481 0.1450459398062476 0.7607427182697564 6.32074671625992 0.3950459398062476 0.8008364869634887 7.952841468020484 0.3867766455919562 2.772346334398856 7.792043748983533 0.5893834913337261 2.774885172814101 7.883479693619142 0.6122999390249573 2.661238895714743 8.125000000000448 0 1.460027268236926 3.336056534443346 0.1527373506164627 8.875802235681626 3.405500978887775 0.1527373506164627 8.996083541762808 3.336056534443337 0.4027373506164632 8.955989773069074 1.219658515537974 0.4054475546567496 8.361120163479692 1.289102959982418 0.1554475546567496 8.381510708701079 1.305008075170165 0.2975406630558723 8.201171316964965 5.894054097093983 0.8419983392435102 4.077472962483056 1.247325796270605 0.8420244244952075 1.972252123348722 1.059811475720737 0.8336292533650173 2.086884287485074 1.2500000000004 0.8534427291193223 2.208830255217942 8.896328230634214 0.1465538219109792 2.846071611826259 8.96565582562175 0.1465538219109792 2.725705138242593 8.958179685895285 0 2.662776406870726 8.776323219967853 0.1420178205278556 2.763432325253388 8.783799359694321 0.2885716424388348 2.826361056625255 8.258189292399255 0.7175963717201179 3.465789625086144 8.205668107775134 0.5302738904133557 3.284308215918729 8.32763373684371 0.7477159289514365 3.33451468973244 5.036879861908712 0.146842655835536 3.370693266323262 4.897990973019824 0.146842655835536 3.370693266323254 4.967435417464266 0.396842655835536 3.410787035016982 4.605393489237853 0.5653826854776571 7.581491189961873 4.514795724748076 0.7023324747948623 7.60937208363317 4.522060155904533 0.6003621093459726 7.373003592754504 8.948021637627415 0.3965538219109792 2.79569693579908 7.646870357107458 0.5046216994403633 4.68347313237849 7.646870022244546 0.6823881548933078 4.683473325711682 7.777776438257025 0.4950733607909881 4.547248231026428 7.633873621511155 0.287867795975873 4.557079468961278 7.633873286648242 0.4656342514288175 4.55707966229447 7.502967205498676 0.4751825900781927 4.693304563646532 3.867632183633217 0.1375717757185241 4.557181956977027 3.728743294744329 0.1375717757185241 4.557181956977018 3.798187739188776 0.3875717757185241 4.517088188283298 5.487720992453392 0.1420251113246644 4.360980984255978 5.30331231308045 0.3011748667640968 4.414887658353988 5.418276548008951 0.3920251113246643 4.320887215562248 7.855158493191935 0.8648943628561362 7.99997853951511 7.16597865493415 0.8328074724212786 0.6888822598627451 7.095828653586794 0.5828074724212786 0.7269066065394008 7.116826703129277 0.6721329261447887 0.537210572885038 8.063491826525262 0.7036307639664325 7.974329958311565 0.9027777777778113 0.25 8.757093170494215 0.8333333333333681 0.25 8.636811864413037 0.9027777777778113 0 8.676905633106767 0.8422222222222644 0.147427983539096 8.872242474182597 0.7727777777778211 0.147427983539096 8.751961168101417 0.7727777777778211 0.397427983539096 8.832148705488866 7.524443357931881 0.1590402948208724 1.273712594607514 7.524443357931874 0.4090402948208724 1.353900131994962 7.674760453080845 0.3070224862270121 1.286603409758353 1.803279234398984 0.1577345806665529 0.8626112542607764 1.803812937800538 0.4077345806665529 0.9424912906010448 1.734367582802023 0.1577345806665529 0.9819684702644107 8.88260996415633 0.3938944592779189 5.260309524982419 8.93558524914447 0.170095286849353 5.289693332668028 9.110671827239385 0.3312301386829521 5.265291873382515 6.042857033541574 0.7163251029242661 4.388365494944638 2.08906510912058 0.8335407335915246 4.223188065809956 2.019620664676127 0.8335407335915246 4.343469371891123 2.089065109120575 0.5835407335915246 4.303375603197404 2.719127837145078 0.172442364843463 5.543359465315055 2.788572281589523 0.422442364843463 5.503265696621334 2.858016726033965 0.172442364843463 5.543359465315062 4.495132513907388 0.8366739190268973 4.03284282791403 4.495132513907392 0.5866739190268973 3.952655290526581 4.42568806946295 0.8366739190268973 3.912561521832853 5.504832917679607 0.3902737144452557 3.32171782773889 5.435388473235165 0.1402737144452557 3.281624059045162 5.460843707071955 0.3042022113325926 3.46728888734909 6.31944444444466 0.812536743092301 4.621707313799032 6.319444444444658 0.562536743092301 4.701894851186479 6.149739264583792 0.6705373667046712 4.631093674092059 3.300519767760233 0.1291801103130235 4.05730962360575 3.255628170391529 0.2882135336940572 4.243602874205809 3.231075323315785 0.3791801103130235 4.097403392299469 4.5800314788479 0.8474075270118756 5.122420102969512 4.580031478847904 0.5974075270118756 5.042232565582064 4.510587034403462 0.8474075270118756 5.002138796888335 9.023705677312721 0.825419032442089 0.860023363422896 9.023700281985457 0.575419032442089 0.7798080815600403 9.023690623194472 0.6296874494903775 0.980275693812251 8.557404804173508 0.1488442306274838 2.104451859007487 8.557404804173515 0.3988442306274837 2.02426432162004 8.740422357467539 0.150690532876936 2.238240019184507 8.740422357467548 0.4006905328769359 2.158052481797059 8.686716050529535 0.2995347635044197 2.040695467386834 4.515399790994008 0.8397745920615683 1.507963430520908 4.584844235438455 0.5897745920615683 1.467869661827188 4.584844235438458 0.8397745920615683 1.387682124439741 2.147012124093902 0.3979432720090957 5.442102743836211 2.216456568538344 0.1479432720090957 5.482196512529938 5.625000000000286 0.7849794238683118 3.865653389860189 5.824609652649555 0.8419983392435102 3.957191656401878 4.306963051130877 0.1247865754787495 8.674126886934488 4.376407495575316 0.1247865754787495 8.794408193015654 4.30696305113087 0.3747865754787537 8.754314424321935 1.304133747669667 0.1591896269012652 3.063982279807276 1.256411529378908 0.321926428553876 2.872111437035693 1.202430917948007 0.1627368016526108 2.831901817768611 1.091169814506073 0.1455409717182559 2.928528630964978 1.043447596215314 0.3082777733708668 2.736657788193395 1.145150425936974 0.3047305986195211 2.96873825023206 2.766405128215393 0.8314100031722813 6.042954356421914 2.836642683300914 0.8519816604439844 6.189614588917438 8.197297604082493 0.8260131120375378 3.754707181871051 8.127853159638047 0.8260131120375378 3.874988487952218 8.197297604082493 0.5760131120375378 3.834894719258499 4.496630455678815 0.8528472658299207 3.62406106073072 4.566074900123257 0.6028472658299207 3.664154829424448 4.635519344567705 0.8528472658299207 3.624061060730729 0.9469551515352099 0.5417070746118069 2.015021455870337 1.206588120259323 0.4580778212467897 2.029664735721339 1.134469472085077 0.5501022457419973 1.900389291733985 8.549199103198657 0.1514220579494638 6.351229589382164 8.618643547643092 0.1514220579494638 6.471510895463336 8.549199103198648 0.4014220579494637 6.431417126769611 2.225657990206211 0.14521183221273 4.329809051037527 2.364546879095101 0.14521183221273 4.329809051037536 2.295102434650659 0.39521183221273 4.289715282343808 4.967435417464261 0.146842655835536 3.49097457240443 4.562556060685385 0.6020820241135079 2.310732770636647 4.388194444444831 0.5688198118753669 2.304459313738911 4.444444444444843 0.6273111952570489 2.075844986043642 2.760418206653758 0.4103655115202016 5.198770309814499 2.760418206653763 0.1603655115202016 5.118582772427052 2.621529317764868 0.3193989349012346 5.250606661464825 2.243828419289701 0.6850177871720758 6.561504961291207 8.542360974645142 0.8376810329640543 3.868278029095015 8.472916530200701 0.8376810329640543 3.747996723013837 8.472916530200701 0.5876810329640543 3.828184260401286 2.346727281046263 0.1527924614790639 1.347512146028714 2.4161717254907 0.1527924614790639 1.467793452109891 2.346727281046258 0.4027924614790639 1.427699683416162 4.682539682540021 0.1874632569077012 3.161148597098967 4.751984126984462 0.4374632569077013 3.201242365792696 4.781138678016093 0.3324648533553185 3.021795633454225 2.367978848632835 0.6768112182467287 7.908226849752959 2.509222002247721 0.8377342751179574 7.776653490709094 2.550318980251993 0.6817645796866488 7.720193304635293 2.065903267432129 0.1663636448170208 6.768112732227153 1.996458822987685 0.4163636448170208 6.808206500920876 1.927014378543243 0.1663636448170208 6.768112732227149 8.832117044782041 0.8161024998142811 4.104939693836021 8.883783711448713 0.5661024998142811 4.054581920356711 8.801666666666982 0.75 3.935576922462247 8.948419718327786 0.8387782497676457 3.964497104564178 9.000086384994457 0.5887782497676457 3.914139331084867 9.030536763109517 0.6548807495819269 4.083502102458641 4.277948936017821 0.1594124993595319 8.890924485457363 4.208504491573374 0.4094124993595362 8.850830716763644 4.07758578801543 0.3095121152050768 8.860766123549475 2.142142265356723 0.1863312613962728 0.9853573034413183 2.072592172896852 0.4363312613962728 0.9460649417934515 2.072058469495298 0.1863312613962728 0.8661849054531832 7.639986853942444 0.8382597928450903 5.045551228210197 2.708333333333294 0.75 9.318405932206469 2.711205613428828 0.8546726323322856 9.193766734759894 2.780650057873268 0.6046726323322856 9.233860503453634 2.780650057873273 0.8546726323322856 9.314048040841087 3.096554644959129 0.1583125885726747 8.853703641271846 3.165999089403585 0.1583125885726747 8.733422335190678 3.165999089403576 0.4083125885726752 8.813609872578127 7.858650428482747 0.1479821914061397 1.232355471225379 7.78920671993585 0.3979821914061397 1.192261277661004 6.958777406564101 0.8450382886551295 2.376383155889886 6.889332962119661 0.5950382886551295 2.336289387196149 6.819888517675214 0.8450382886551295 2.37638315588987 5.972222222222612 0 2.301996410804925 6.041666666667055 0.25 2.342090179498653 5.902777777778167 0.25 2.342090179498646 6.009167331207192 0.1523667473959891 2.403514216809868 6.078611775651634 0.4023667473959891 2.443607985503596 6.14805622009608 0.1523667473959891 2.403514216809875 5.972222222222603 0.25 2.462371485579822 5.902777777778161 0 2.422277716886094 6.078611775651629 0.1523667473959891 2.523795522891044 5.000000000000053 0.8423953289333895 9.40920130359472 5.000000000000056 0.5923953289333794 9.489388840982166 5.069444444444493 0.8423953289333895 9.529482609675895 5.277777777777832 0.8423953289333895 9.409201303594685 5.208333333333375 0.8423953289333895 9.529482609675885 5.277777777777812 0.5923953289333882 9.489388840982137 4.421257030535001 0.3588031818278508 5.750679829920282 4.308558617836594 0.1631829584298534 5.735558751441499 4.418253968254133 0.1956202233979974 5.925556671718781 4.389678176484894 0.3497124924811754 6.011000799756083 4.276979763786486 0.154092269083178 5.995879721277299 4.279982826067354 0.3172752275130314 5.821002879478799 1.736111111111169 0 8.195780408782138 1.736111111111176 0.2499999999999999 8.115592871394693 1.805555555555611 0.2499999999999999 8.235874177475866 1.856091664985866 0.1437170775667582 8.12650960370507 1.856091664985873 0.3937170775667581 8.046322066317625 1.786647220541431 0.1437170775667582 8.006228297623897 8.064046614866317 0.1617572316568291 1.670347723441699 8.133491059310771 0.4117572316568291 1.630253954747996 8.202935503755214 0.1617572316568291 1.670347723441717 3.727038898557091 0.1443970137532793 6.150007729078068 3.657594454112646 0.3943970137532793 6.19010149777179 3.681874837604879 0.2990006070834828 6.336458286601415 8.602426953820981 0.8363680538652909 6.732438442571574 9.54077200758017 0.8143464925887463 7.518261822066346 9.591001605319125 0.8143464925887463 7.624590092811014 9.567134324608375 0.8492924393869811 7.877204423665551 9.613232290005204 0.6636389319757273 7.69476409661048 9.51690472686942 0.8492924393869811 7.770876152920883 2.850094502317717 0.8546726323322856 9.193766734759908 8.958333333333449 0 6.271279511483836 8.819444444444553 0 6.271279511483828 8.943380848052533 0.1432641006930679 6.110098826315392 2.534992198210259 0.8528719568016468 6.738415992428072 2.465547753765814 0.5978993916438945 6.751780581992642 2.346808502986442 0.7002029637192855 6.801258266329974 2.157758651858778 0.1544097009652502 6.915655519574376 2.088314207414327 0.1544097009652502 7.035936825655546 2.088314207414333 0.4044097009652502 6.955749288268098 8.194444444444773 0.59135423453542 3.504809471616842 8.141923259820652 0.4040317532286578 3.323328062449427 8.119300403510371 0.6262421371846979 3.385602087698688 5.474886395936009 0.1512361568639934 6.128737509049403 5.486111111111272 0 6.271279511483602 5.678807271252206 0.1525280704766478 6.269543106590589 8.958232108920495 0 7.474143392364388 8.888797247485055 0.25 7.514241219610962 8.95823771851815 0.25 7.393962124595743 8.837334057215671 0.1273660142034075 7.385972461217408 8.767899195780233 0.3773660142034075 7.426070288463983 8.767893586182577 0.1273660142034075 7.506251556232628 8.935711124232778 0.170095286849353 5.530190743820897 5.902777777777777 0 9.398593469594068 5.902777777777773 0.2499999999999998 9.478781006981521 5.972222222222222 0.2499999999999998 9.358499700900332 5.833333333333337 0.1582542730473782 9.405477751878021 5.833333333333334 0.408254273047378 9.485665289265473 5.763888888888889 0.1582542730473782 9.52575905795921 3.139167800453712 0.1992785756277805 5.574131025213421 3.069723356009274 0.1992785756277805 5.453849719132245 2.986111111111311 0 5.549591674996429 2.927461170478402 0.172442364843463 5.663640771396238 3.011073415376366 0.3717209404712435 5.567898815532054 6.45804281390108 0.1514856945752183 5.759855369790303 6.388598369456631 0.1514856945752183 5.880136675871472 6.388598369456637 0.4014856945752183 5.799949138484026 2.30849700468856 0.8297931293084276 4.577624226159684 2.239052560244118 0.5797931293084276 4.537530457465957 2.16960811579967 0.8297931293084276 4.577624226159674 7.845862123672765 0.8391428916083861 6.417030534655827 7.740433523994583 0.6763443022859581 6.276953579327665 7.811238066988567 0.837201410677572 6.251483862236771 8.048908966536374 0.8553902187244786 6.280810760401754 7.943480366858191 0.6925916294020507 6.140733805073592 7.978104423542389 0.6945331103328647 6.306280477492647 5.91990049751283 0.170098581168234 2.191600911571814 5.989344941957272 0.420098581168234 2.231694680265542 5.781011608623933 0.1700985811682343 2.432163523734158 5.850456053068376 0.4200985811682343 2.472257292427886 5.85045605306837 0.1700985811682343 2.552444829815334 1.557599671288491 0.4080576740412472 7.336593587967837 1.627044115732937 0.1580576740412472 7.296499819274116 1.736111111111224 0.25 7.393905034907659 1.687250058868338 0.395569362126185 7.538221496802408 1.756694503312784 0.145569362126185 7.498127728108688 1.578183063490052 0.3036270361674323 7.440816281168866 6.041666666666661 0.2499999999999998 9.478781006981528 6.041666666666664 0 9.398593469594072 6.11111111111111 0.1582707134019731 9.405580263784051 6.180555555555548 0.1582707134019731 9.525861569865246 6.111111111111106 0.4082707134019729 9.485767801171505 1.041733442272387 0 0.5263420365183571 1.111177886716826 0 0.6248855229702641 1.042091357845671 0.2499999999999999 0.5998306028939397 4.707637156965294 0.8343933056850352 3.97742083904929 4.777081601409746 0.8343933056850352 3.857139532968122 4.707637156965299 0.5843933056850352 3.897233301661842 6.316070395973216 0.8440811763211212 5.958181292590711 6.385514840417665 0.8440811763211212 5.837899986509543 6.316070395973222 0.5940811763211212 5.877993755203265 1.666666666666783 0 7.353811266213929 1.488155226844051 0.1580576740412472 7.296499819274106 1.617805614423898 0.145569362126185 7.498127728108678 6.01030759885173 0.8422269878670366 2.243797475866486 6.079752043296172 0.5922269878670366 2.283891244560214 6.149196487740618 0.8422269878670366 2.243797475866494 5.871418709962825 0.8422269878670361 2.484360088028825 5.940863154407261 0.8422269878670361 2.604641394110001 5.940863154407267 0.5922269878670361 2.524453856722553 5.593640932185 0.8422269878670366 3.206047924515867 5.454752043296113 0.8422269878670366 3.206047924515859 5.524196487740554 0.5922269878670366 3.246141693209587 6.211914623371211 0.842226987867035 3.322445794392791 6.14247017892677 0.592226987867035 3.282352025699059 6.073025734482323 0.842226987867035 3.322445794392783 6.350803512260123 0.8422269878670354 3.08188318223045 6.281359067815687 0.8422269878670354 2.961601876149269 6.28135906781568 0.5922269878670354 3.041789413536718 5.593640932185013 0.8422269878670366 2.965485312353517 5.663085376629452 0.8422269878670366 3.085766618434695 5.663085376629458 0.5922269878670366 3.005579081047245 5.871418709962809 0.8422269878670361 2.724922700191173 5.732529821073918 0.8422269878670361 2.72492270019117 5.801974265518362 0.5922269878670361 2.765016468884898 6.524403729306542 0.5933953052648757 6.025004240413599 6.633354377843766 0.564217794743487 5.870470611359569 6.786239993760224 0.5957187211140104 5.992860896566512 4.027777777777835 0.8422859408556082 9.395077627847154 4.027777777777827 0.5922859408555983 9.314890090459706 3.95833333333338 0.8422859408556082 9.274796321765987 2.910102301650551 0.5920954585849854 2.989915763396318 2.840657857206109 0.8420954585849854 2.949821994702591 3.016044239488339 0.6884096047069771 2.914357762045477 1.258322337889238 0.4073394417289152 2.176672911796779 0.9986893691651251 0.4909686950939325 2.162029631945777 1.188877893444788 0.5107821708482374 2.283975599678645 2.690353447704514 0.8190366030963838 5.533019908593324 2.829242336593401 0.8190366030963838 5.533019908593331 2.759797892148959 0.5690366030963838 5.492926139899604 0.9732133359777748 0.6519705248567598 4.719914424114955 6.875000000000092 0 6.511842123646035 6.944444444444533 0.2499999999999999 6.551935892339765 6.875000000000101 0.2499999999999999 6.431654586258588 6.751141967734015 0.1550790671441155 6.525731389673849 6.820586412178455 0.4050790671441154 6.565825158367579 6.820586412178447 0.1550790671441155 6.646012695755026 5.972222222222237 0.4135802469135875 9.278312163512883 5.972222222222241 0.1635802469135877 9.198124626125427 5.833333333333353 0.3218345199609659 9.32529021449057 2.636173726444133 0.8418016248297335 9.51662254524895 2.636173726444128 0.5918016248297335 9.436435007861498 2.566729281999688 0.8418016248297335 9.396341239167759 6.881678667171123 0.8443326745237386 2.01748409966006 6.881678667171128 0.5943326745237386 2.097671637047509 6.951123111615567 0.8443326745237386 2.137765405741246 7.469477924706876 0.1424362690299288 1.472817200465518 7.400033480262439 0.1424362690299288 1.352535894384343 7.400033480262432 0.3924362690299288 1.432723431771791 3.958333333333387 0.1547891870604084 8.041748312267945 3.888888888888944 0.4047891870604084 8.081842080961669 3.819444444444499 0.25 8.115592871394794 3.826084359864794 0.1576071073199354 8.257345539907281 3.75663991542035 0.4076071073199354 8.297439308601007 3.895528804309239 0.3123962943803438 8.223594749474156 7.880682511433029 0.837201410677572 6.131202556155604 8.118353410980834 0.8553902187244786 6.160529454320587 2.43201211451353 0.8376867802544372 6.258100075226961 2.501456558957968 0.8376867802544372 6.378381381308138 2.501456558957972 0.5876867802544372 6.298193843920689 6.062149438007713 0.1536858538780088 8.302186074739005 6.131593882452158 0.3123391554976722 8.262092306045286 6.319444444444508 0.1586533016196635 8.27596794616983 6.240479237770251 0.1285262082332657 8.150189825452378 6.309923682214697 0.2871795098529292 8.110096056758659 6.052628675777902 0.2822120621112745 8.136314185327834 6.105457141945018 0.1445797432834946 6.981810480225594 6.244346030833902 0.1445797432834946 6.981810480225597 6.17490158638946 0.3945797432834946 6.941716711531869 0.2213347758955013 0.5493238841223007 4.152132173430333 0.372562659803599 0.4591255146126648 4.29106319085118 0.1512278839080977 0.3955777031365326 4.305597684087509 0.1373554872729677 0.3868734008770832 4.027957119634342 0.2885833711810655 0.2966750313674473 4.166888137055189 0.358690263168469 0.4504212123532154 4.013422626398013 8.690252584139591 0.8427410174102374 5.37770528807589 8.880000000000136 0.8525720164609054 5.504365903910255 1.280875354232645 0.8421374112776083 5.010546787900525 3.878479456477929 0.1555754947955065 0.7798900119205963 4.017368345366816 0.1555754947955065 0.7798845637125204 3.947925473653123 0.4055754947955065 0.8199802547839719 0.6600980135668685 0.2587362492345334 1.527203231680649 0.5813286092715226 0 1.632912273954884 0.7810268750051255 0.1585383527891643 1.615099886298401 6.111111111111334 0.1574763042202187 4.34474526542817 6.11111111111134 0.4074763042202187 4.264557728040726 6.18055555555578 0.1574763042202187 4.224463959347005 8.583908590428468 0.1656616476580746 6.736024676352754 8.445019701539575 0.1656616476580746 6.736024676352748 8.514464145984022 0.4156616476580746 6.69593090765903 4.200568383201485 0.8426978487410093 8.496009954805675 4.200568383201477 0.5926978487410135 8.576197492193124 4.27001282764593 0.8426978487410093 8.616291260886886 5.520012827645925 0.8426978487410108 9.337979097373923 5.450568383201498 0.8426978487410108 9.217697791292741 5.450568383201478 0.5926978487410095 9.297885328680193 5.836816500640388 0.1660273671019017 3.531240851866726 5.836816500640379 0.4160273671019017 3.611428389254175 5.767372056195935 0.1660273671019017 3.651522157947902 1.529725014095034 0.1434283786725709 5.323016580596452 1.599169458539478 0.393428378672571 5.363110349290178 1.668613902983924 0.1434283786725709 5.323016580596457 1.756312985154336 0.1842654275518152 6.980829684675875 1.825757429598778 0.4342654275518152 7.020923453369603 1.825757429598772 0.1842654275518152 7.10111099075705 8.622708957367074 0.8443746475343327 6.46505233529459 8.622708957367063 0.5943746475343327 6.545239872682037 8.69215340181151 0.8443746475343327 6.585333641375762 3.034603339621559 0.857358246403778 5.976541447209417 3.104047784066005 0.857358246403778 5.856260141128248 3.104047784066005 0.607358246403778 5.936447678515695 1.388888888889082 0.25 5.750060518464974 1.458333333333521 0.25 5.870341824546149 1.458333333333524 0 5.790154287158702 1.52836938098887 0.1565985584358859 5.783640494397278 1.59781382543331 0.1565985584358859 5.903921800478454 1.528369380988867 0.4065985584358859 5.863828031784726 5.4324003778912 0.1592600403166617 1.660182666843749 5.293511489002312 0.1592600403166617 1.660182666843744 5.362955933446758 0.4092600403166616 1.620088898150023 4.446901248829651 0.1544493996232955 3.862585902425324 4.589410915372461 0.8413887876152323 4.85569668109797 4.658855359816902 0.5913887876152323 4.895790449791699 4.728299804261349 0.8413887876152323 4.855696681097978 8.263888888889262 0.8428497942386837 2.78312163512982 8.333333333333711 0.5928497942386837 2.743027866436101 8.333333333333714 0.8428497942386837 2.662840329048654 6.42331988686537 0.1571825640108619 5.60942967892303 6.353875442420927 0.4071825640108618 5.649523447616752 6.284430997976488 0.1571825640108619 5.609429678923024 0.9559136250309761 0.1952589287902677 8.5724442410508 1.025358069475419 0.1952589287902677 8.692725547131982 0.9559136250309761 0.4452589287902677 8.65263177843825 4.17916393567645 0.160621876711029 1.01643356064894 4.109719491231999 0.160621876711029 1.136716388293961 4.109721063962756 0.410621876711029 1.056529251720391 2.85912196256463 0.1676257067424612 4.09934568373255 2.928566407009072 0.4176257067424611 4.139439452426278 2.928566407009068 0.1676257067424612 4.219626989813726 4.034166781306441 0.8427503372448184 8.688591864267853 3.671030243569676 0.1577759512654591 4.421466710132879 3.740474688014127 0.1577759512654591 4.301185404051711 3.740474688014124 0.4077759512654591 4.381372941439159 4.276979763786476 0.154092269083178 6.236442333439642 4.346424208230927 0.154092269083178 6.116161027358474 4.346424208230925 0.404092269083178 6.196348564745923 6.256439349550147 0.8534271563912058 7.073875165934287 6.325883793994588 0.8534271563912058 7.194156472015461 6.256439349550147 0.6034271563912058 7.154062703321733 8.819389778429132 0 1.460106770919936 8.88883422287358 0.25 1.420066000348196 8.852156542328951 0.152587627797984 1.280884715189587 8.852211208344746 0.402587627797984 1.361045748016039 8.782766763900298 0.152587627797984 1.401086518587779 1.657164681199476 0.1579269847451593 8.240323625801958 1.587720236755041 0.1579269847451593 8.120042319720785 1.657164681199483 0.4079269847451592 8.160136088414511 4.585361457914461 0.4100668999520362 3.974981164145662 4.585361457914457 0.1600668999520362 4.055168701533111 4.74191182407341 0.3152787183120432 4.036541488865725 4.930555555555602 0 8.436343020944625 4.884259259259303 0.2407407407407371 8.356155483557171 4.953703703703747 0.2407407407407371 8.476436789638344 5.061778449952856 0.1590319109249352 8.369176446128677 5.015482153656556 0.3997726516656722 8.288988908741221 4.992334005508413 0.1590319109249352 8.248895140047502 5.514830977352404 0.155921461452209 9.246326414176949 5.584275421796844 0.155921461452209 9.366607720258157 5.51483097735241 0.4059214614522077 9.326513951564408 7.330589035817979 0.1424362690299288 1.472817200465501 5.277777777778109 0.4135802469135801 3.264246859454293 5.208333333333666 0.1635802469135801 3.224153090760565 5.10632430635316 0.3104229027491161 3.330599497629542 8.604710302085742 0.8406020630325798 9.345460548924956 8.535265857641294 0.8406020630325798 9.225179242843797 8.53526585764129 0.5906020630325798 9.305366780231246 2.645254659482553 0.7007731541184226 4.88592440338128 2.602188869632757 0.1982460405042032 0.520809465447593 2.702414308848404 0 0.5475883100573377 2.72724849321899 0.1724203480714223 0.7296140164719704 7.06179559633258 0.1581448064892423 1.403213511575406 6.99235115188814 0.4081448064892422 1.363119742881676 6.992351151888146 0.1581448064892423 1.282932205494229 2.572041124583207 0.8245214041666045 8.434843826967436 2.55155746634491 0.8489327541189902 8.596177049561767 7.585382245541529 0.1647790771698518 0.9882608239478519 7.654720131416489 0.1647790771698518 0.8677980544529842 7.654720867314026 0.4147790771698517 0.9479851669697883 5.024341850561402 0.4016163375919432 8.501733582791857 5.070638146857702 0.1608755968512061 8.581921120179311 5.132416596810512 0.3199075077761412 8.394473239282188 8.757532436532003 0.1514220579494638 6.230948283301001 8.402777777778129 0.6693132979395793 3.213159461488253 8.280812148709552 0.4518712594014985 3.162952987674543 8.258189292399271 0.6740816433575386 3.225227012923803 4.814713502143136 0.8456049661658213 9.220342369347868 4.745269057698705 0.8456049661658213 9.340623675429047 4.814713502143139 0.5956049661658112 9.300529906735314 1.076021569259269 0.3654172629757049 2.064716311488314 4.980082060185215 0.5720214763374409 9.319205201485509 4.980082060185213 0.822021476337451 9.239017664098064 5.118970949074094 0.6644168052708406 9.369906804179864 7.63888805169718 0.5864199081219663 4.467060403619166 7.507981970547613 0.5959682467713414 4.603285304971227 7.49498523495131 0.3792143433068511 4.476891641554015 2.320258313406227 0.1578412604582609 8.500023163390317 2.308181018720234 0.4092726435321594 8.541860139418546 2.349033816425166 0.2514313830738985 8.357898690891574 2.195034777622673 0.1459167738478483 8.411224742575403 2.18295748293668 0.3973481569217468 8.453061718603633 2.154181979917741 0.3037580343061092 8.595186191102375 9.038103615491965 0.1291423004003754 7.500591460801097 9.03810922508962 0.3791423004003754 7.420410193032452 9.10754408652506 0.1291423004003754 7.380312365785876 9.779255511526788 0.3457595357204793 4.623188455323744 9.779255511526788 0.4674176956399392 4.55478504940962 10 0.3685700913555434 4.517886734492441 9.747435786360306 0.2773259204431597 4.479438123904124 9.747435786360306 0.3989840803626196 4.411034717990001 9.526691297887096 0.3761735247275556 4.516336438821304 4.162433417633647 0.8372036880925391 9.596618245593962 4.16243341763364 0.5872036880925292 9.516430708206514 4.323638162457583 0.6669515753785483 9.510598121729453 5.3116794943126 0.6850931776744004 9.348586931374577 2.222115904721084 0.75 0.5084921912748837 2.150727472574125 0.75 0.6118915355380734 2.290458258732342 0.75 0.6183006943794713 3.988095238095313 0.5625367430923032 7.777659678119136 3.918650793650869 0.8125367430923032 7.817753446812858 3.848260861184097 0.6678821330485083 7.663701159159757 4.861111111111143 0.4093158993741559 8.823776778946071 4.629629629629653 0.4000566401149049 8.903964316333543 4.79388071585403 0.5125797901264741 8.72450273788378 0.7694206175225766 0.8424750696541197 0.6622182073635345 0.7097510404860903 0.8424750696541197 0.7796851711686744 0.505589896090019 0.8484726083901091 0.6350913416282238 0.4459203190535327 0.8484726083901091 0.7525583054333637 0.5805660691676621 0.6909476780442287 0.6792514233235023 3.716226205448468 0.1349472887770102 8.17051757642407 3.646781761004025 0.3849472887770102 8.210611345117794 3.653421676424319 0.2925543960969456 8.352364013630282 5.026041666666894 0.3505196397353054 5.049750823498883 5.000000000000232 0.1547891870604093 5.034715660238733 4.859459933480075 0.2773447485012753 4.880156044257943 8.958333333333293 0.75 8.516689841566937 9.097222222222186 0.75 8.516689841566954 9.019755198237178 0.8431545974109493 8.639534495199893 8.950310753792738 0.5931545974109493 8.59960000974073 8.880866309348288 0.8431545974109493 8.639534495199873 3.825833447973107 0.8427503372448184 8.808873170349036 3.773452495592148 0.5927503372448208 8.75892778991912 3.717202495592152 0.6615701491201722 8.921765767628081 4.457638888889262 0.5688198118753669 2.585115694594982 4.476121858398459 0.5922859408556147 2.80141059860293 4.632000505129817 0.6020820241135079 2.591389151492717 1.805555555555669 0.4135802469135801 7.353811266213937 1.875000000000115 0.1635802469135801 7.313717497520217 1.696488560177382 0.3216379209548273 7.256406050580394 7.638888888889277 0.4135802469135811 2.542559022967423 7.77434389222943 0.4007164962343016 2.388120175569729 7.744590804730267 0.6122999390249573 2.420676283552387 2.869275010462805 0.1724203480714223 0.9524062828681016 2.938719454907256 0.1724203480714223 0.8328495707745749 2.938753931377262 0.4224203480714223 0.9128163343907685 8.958333333333814 0.25 1.540267803746405 8.888888888889365 0 1.580308574318145 9.072849689002574 0.1580155421438991 1.628034794058108 9.288495222346919 0.75 8.867180947879437 9.361051265671268 0.75 8.986885654808436 9.206604757506533 0.8676532282754987 8.842722364559194 9.27916080083088 0.8676532282754987 8.962427071488193 9.188596303632274 0.6176532282754986 8.91271637325014 5.62500000000016 0 6.271279511483609 5.55555555555571 0 6.391560817564777 5.748251715696644 0.1525280704766478 6.389824412671765 6.039817043558927 0.1538963508288493 9.604013497378993 5.970372599114489 0.1538963508288493 9.483732191297797 5.970372599114485 0.4038963508288491 9.563919728685253 1.133408611214353 0.1627368016526108 2.71186423300839 1.181130829505112 0 2.903735075779973 1.022147507772419 0.1455409717182559 2.808491046204757 4.722222222222268 0.8457704912156192 9.604532839234324 4.861111111111139 0.8457704912156192 9.604532839234322 4.791666666666702 0.5957704912156091 9.56443907054059 8.924787073869972 0.1552493390618661 1.47031038833472 9.063675962758857 0.1552493390618661 1.470310388334737 8.994231518314422 0.4052493390618661 1.43026961776298 8.741683320624269 0.4095974721523352 1.486911023822053 8.71433672621635 0.3477127169326234 1.665491515816337 8.67223887617982 0.1595974721523352 1.526951794393793 6.397452482125669 0.1592262874268449 4.400446685159868 6.466896926570114 0.4092262874268448 4.440540453853592 6.458333333333546 0.2499999999999999 4.266591076797477 6.31944444444466 0.1574763042202187 4.224463959347009 6.388888888889106 0.4074763042202187 4.264557728040732 6.328008037681228 0.3167025916470636 4.398413336403124 8.648726885532426 0.6952280731483558 8.671053076079509 4.139060047128931 0.1594124993595319 8.890924485457369 5.900928154670041 0.1538963508288493 9.604013497378988 2.970357888813697 0.171510378650948 9.045434583725431 3.039802333258145 0.4215103786509484 9.005340815031712 3.011356978217276 0.3298229672236227 8.861388673646861 3.894502824523099 0.1603844598266699 6.060607333586545 3.993709173729445 0.3478477167343704 6.163705595941837 3.825058380078653 0.4103844598266699 6.100701102280267 6.319444444444789 0.4007201646090554 3.063778015985726 6.38888888888923 0.1507201646090554 3.103871784679457 6.319444444444776 0.25 3.224153090760628 6.14361044657131 0.4023667473959904 3.122635284755669 6.213054891015751 0.1523667473959904 3.1627290534494 6.213054891015764 0.3030869120050458 3.002353978674498 6.250000000000323 0.1507201646090555 3.3444343968418 6.18055555555588 0.4007201646090556 3.304340628148069 6.074166002126857 0.3030869120050459 3.24291659083684 0.6385749835930866 0.75 3.001634823168136 0.7771915747178513 0.8382171311777038 3.071430085051631 3.087907308749063 0.3467449217393065 9.163836255250807 6.597222222222422 0.8364197530864206 4.988278913284515 6.527777777777979 0.5864197530864206 4.948185144590789 6.639058874640799 0.6621030638101819 4.826800362826728 5.562901515400902 0.8449965826441992 7.012352541542716 5.744876014640692 0.8529442749075286 6.844016864958915 4.767113819591227 0.8409665766189653 3.691102722216673 4.697669375146779 0.5909665766189653 3.731196490910393 4.680410941936406 0.6938138424488861 3.569791699168453 3.737545056291983 0.8277127458524869 8.507647120993305 3.882822948709498 0.6704630830973053 8.639614658235391 3.756389003528667 0.8427503372448184 8.68859186426784 3.554422431415644 0.8505572241130314 8.52073605921689 3.699700323833159 0.6933075613578498 8.652703596458977 3.680856376596475 0.6782699699655182 8.47175885318444 5.903968144652687 0.8522111796192113 4.498014662111711 9.016213395797326 0.1570487328970166 4.223202586241572 9.059970906199547 0.4070487328970166 4.277793519732864 8.908377670630749 0.3360217718642046 4.358874907191259 3.774280383492392 0.1546035933302035 6.457730069006848 3.819444444444604 0 6.271279511483502 3.657594454112642 0.1443970137532793 6.270289035159238 2.79701703853357 0.5899825791522504 3.734264291402655 2.916666666666987 0.5913466983803375 3.504809471616505 2.697087660128472 0.6194810271100778 3.61015594583096 2.499999999999993 0.8364197530864207 9.117937088737817 2.5 0.5864197530864206 9.037749551350368 2.500000000000005 0.7499999999999999 8.957562013962924 2.6417611689844 0.8546726323322856 9.073485428678715 2.641761168984408 0.6046726323322855 8.993297891291267 2.641761168984396 0.6910923854187063 9.153672966066161 5.639967189042618 0.1628053973752021 5.13689989301721 5.600284649360076 0.350268654282901 5.274364242824255 5.570522744598181 0.4128053973752021 5.096806124323479 8.705005640079639 0.3121850999503192 1.347729738663444 6.943755398297913 0.75 0.7788310214219359 7.09651769973379 0.8328074724212786 0.8066963229483954 8.994176852298626 0.1552493390618661 1.350108584936529 5.000000000000425 0.4089710125574714 1.500170354512954 5.00000000000043 0.2503177109378087 1.339795279738059 5.11973624208054 0.4103511714053178 1.27066552814136 5.246076792743284 0.5129455078773972 2.142490951113272 5.299768014890317 0.5914351292264536 2.295180993513154 5.362975444520016 0.4215103786509435 2.229493905792476 5.439936416538836 0.5476756708860451 2.023272097953274 5.493627638685869 0.6261652922351015 2.175962140353156 5.376728986909137 0.7176004214615552 2.088959185673953 3.202242817968978 0.5768876237658783 5.753192167049389 3.202242817968977 0.8268876237658783 5.673004629661941 3.250735046479234 0.6842458701696563 5.859391789712585 8.326686744314156 0.8553902187244786 6.280810760401779 8.165634033884672 0.680590433852304 6.324314336486559 0.7375155472339738 0.1550634505055732 5.513501289642386 0.7223542897369257 0.4050634505055731 5.44063305184037 0.6188583599907604 0.2499999999999999 5.604831556558526 0.6407401775907716 0.1672536981100748 5.755313559795736 0.6255789200937236 0.4172536981100748 5.68244532199372 0.7442361073369369 0.322317148615648 5.59111505507758 1.234889288728465 0.4091896269012651 3.023935339376845 1.133186459006805 0.4127368016526108 2.79185487733818 1.021925355564872 0.3955409717182559 2.888481690534547 6.458333333333766 0 1.219464656074398 6.441269841270268 0.2499999999999999 1.289800581725673 6.542171690549921 0.1570399764844211 1.375299287830344 6.594552642930875 0.407039976484421 1.32535390740045 6.611616134994372 0.1570399764844211 1.255017981749174 8.956905774219468 0.1623045260605924 3.539421237226073 9.025015728048647 0.4123045260605924 3.50219603770199 9.095887731607295 0.25 3.467584272092812 8.929214870125653 0.1586597377396617 3.380519010060433 8.99732482395483 0.4086597377396617 3.343293810536349 8.858342866567005 0.3209642638002541 3.415130775669611 8.449742180070798 0.6759432588512688 9.040316728123663 0.7153102490483113 0.591455580231892 8.801927262395836 0.7847546934927545 0.841455580231892 8.842021031089565 0.8541991379371967 0.6828022786122308 8.882114799783297 4.123263888888919 0.4457304526749005 8.531565721592196 4.123263888888927 0.1957304526748962 8.451378184204749 3.992345185330975 0.3458300685204412 8.541501128378027 4.386343718879556 0.8663724760782985 8.839756308683835 4.350800990969898 0.7090703248193078 8.658860630382527 4.316899274435103 0.6163724760783027 8.799662539990074 7.218347422970981 0.583257552348166 3.868800806903798 7.218347422970973 0.833257552348166 3.948988344291246 7.361111111111393 0.75 3.905747158554011 7.414950213933725 0.6073013166886507 3.728266077900915 7.414950213933719 0.8573013166886507 3.808453615288363 7.272186525793305 0.6905588690368167 3.77150726363815 5.501864333408909 0.512857077031281 2.149306368405032 5.694444444444845 0.5913466983803375 2.061433798642575 5.501864333408919 0.4215103786509436 1.988931293630136 5.632516527574772 0.6261652922351015 1.935399528190817 5.632516527574762 0.717511990615439 2.095774602965713 8.464659822798296 0.5898847221265024 3.990300849284853 8.534104267242739 0.8398847221265026 4.030394617978581 8.410128377224673 0.7897613990760532 4.090801318346894 8.472010422244875 0.6296461212025558 4.135261240383925 8.34068393278023 0.5397613990760532 4.050707549653165 6.111111111111333 0.8641139233050548 4.357410753099003 2.569444444444671 0.8492798353909471 5.148653988059168 2.430555555555785 0.6906265337712844 5.068466450671712 2.569444444444662 0.6892624145431981 5.286813478081685 6.041666666667078 0.8364197530864202 1.780777417786521 6.111111111111521 0.5864197530864202 1.820871186480247 6.180555555555964 0.75 1.860964955173973 6.149196487740628 0.8422269878670366 2.003234863704151 6.218640932185071 0.5922269878670366 2.043328632397877 6.079752043296185 0.6786467409534569 1.963141095010425 6.388888888889218 0.5864197530864202 3.264246859454355 6.458333333333659 0.8364197530864202 3.304340628148085 6.281359067815653 0.6786467409534552 3.362539563086517 6.420247956704564 0.6786467409534557 3.121976950924176 8.74993999908229 0.5926977901855954 7.392958386645583 8.835091242223371 0.6767845347686244 7.262835096748947 8.680512037610844 0.8426977901855954 7.352848613542582 2.083333333333514 0.75 5.990623130627345 2.238127305203706 0.5856314460599624 6.055807613064079 2.238127305203711 0.8356314460599624 5.975620075676632 2.007812635005634 0.8563901317667157 6.05604463577578 2.162606606875825 0.6920215778266781 6.121229118212515 2.007812635005629 0.6063901317667157 6.136232173163227 0.6474220633693948 0.6439649852545205 3.233124229336138 0.4987427050050425 0.8057478540768167 3.307687476714309 0.3751101389183212 0.653366052794216 3.200823170577472 1.319604130202338 0 2.903495135825655 1.271881911911579 0.1627368016526108 2.711624293054072 1.373584741633239 0.1591896269012652 2.943704755092738 4.244672982903101 0.7160801286371148 1.43184724288589 5.497376550808869 0.1707340829469281 9.60905920839301 5.358487661919979 0.1707340829469281 9.609059208392987 5.427932106364436 0.4207340829469268 9.568965439699259 6.967791911496264 0.4080942565673841 6.618643763339999 6.967791911496255 0.1580942565673842 6.698831300727447 7.045060132973143 0.3968963882948222 6.380373278841823 7.045060132973134 0.1468963882948222 6.460560816229271 7.068407600024865 0.3049906448622064 6.527268687229505 2.310770118273559 0.8477087577185864 9.141497548998501 2.241325673829125 0.5977087577185864 9.181591317692309 2.291666666666684 0.75 9.318405932206531 2.194421236871681 0.86061936293624 9.355181371043944 2.124976792427247 0.61061936293624 9.395275139737752 2.144080244034122 0.7083281206548264 9.218366756529722 7.777777275448972 0.4086534526690218 4.707622822448331 7.63387412384019 0.3792143433068512 4.717454253716372 3.345411365128927 0.2882135336940567 4.003040262043472 1.1819853634549 0.8410349945238462 0.9874927879816967 1.251429807899346 0.5910349945238462 0.9473990192879762 1.25142980789935 0.8410349945238462 0.8672114819005287 4.682539682540036 0.1874632569077012 2.920585984936624 4.765328976453555 0.3483203652993153 2.874358070337045 4.805011516136103 0.160857108391614 2.736893720529993 4.587945048289736 0.1241459787118454 2.705596672613409 4.670734342203255 0.2850030871034595 2.659368758013831 4.548262508607188 0.3116092356195467 2.843061022420461 4.05483539094649 0.6658456116374762 9.154515015684774 9.095887731607295 0.75 3.467584272092812 6.52777777777789 0.8393207319954464 6.489837069255895 6.557588376054373 0.6707307351677297 6.565945454276404 6.418699487165483 0.8314100031722833 6.708231814747675 6.382192949004577 0.8709264557095009 6.46539832784205 6.41200354728106 0.7023364588817842 6.541506712862558 6.521081837893467 0.7102471877049474 6.32311196737078 0.9988395596287906 0.1174259203299122 4.086251115953798 0.929395115184344 0.3674259203299122 4.126178193724838 1.054002137278749 0.2791489031022395 4.036590874021643 6.291991248034287 0.1609149269027044 1.280031850664728 8.95665879684401 0 3.866928419863703 8.819444444444759 0 3.865653389860392 8.88721435239956 0 3.98720972594487 8.938881019066233 0.25 3.936851952465558 8.801666666666982 0.25 3.935576922462247 3.055555555555861 0.7581390455737093 3.745372083778859 3.05555555555587 0.5994857439540467 3.584997009003961 2.935905927422453 0.5981216247259598 3.814451828790111 3.17520518368926 0.59812162472596 3.814451828790124 9.096818430079519 0.1706957406987198 8.25149271225763 9.097233920645056 0.4206957406987198 8.331599649289792 9.135846647699793 0.1566609575056951 8.486551924447372 9.136262138265328 0.4066609575056951 8.566658861479535 9.20571828113264 0.3273566982044149 8.421503154661536 8.414650029895448 0.8271383985273065 9.611350739477292 8.553538918784348 0.8271383985273065 9.611350739477292 8.484094474339898 0.5771383985273065 9.571256970783582 8.680555555555692 0 5.54959167499678 8.750000000000126 0 5.669872981077948 8.572673961685084 0.1532737925356692 5.699408270686279 5.588757062890874 0.8378862996924782 1.15290365849473 5.447314634450765 0.6330581122304944 1.242390794288739 5.40922438935522 0.8762936847292495 1.264382207548148 5.581314785578993 0.7141799844217277 1.31810251604968 0.2349503491807682 0.6411300183868633 2.39302783475384 0.3573941809439176 0.7628598753362784 2.38792576119329 0.1224438317631494 0.8782701430505849 2.361026964952851 0.1987702060527949 0.7268835057674616 2.535196643985389 0.3212140378159443 0.8486133627168768 2.530094570424839 0.4337205552335631 0.6114732380531551 2.562095440225828 3.754608548355464 0.5777127458524893 8.577983046644583 5.000490489976331 0.7178798048503292 9.770045221838259 4.792157156642977 0.721254967132559 9.845095451396686 4.291666666666944 0.4804526748971198 4.186403539409886 4.152777777778056 0.381172839506173 4.186403539409876 4.305555555555825 0.4007201646090531 4.38687238287851 4.237273259474866 0.6031536733679348 4.280681408362392 4.098384370585977 0.5038738379769879 4.280681408362383 4.084495481697096 0.5836063482650546 4.080212564893759 8.542760488888414 0.1818077769070109 0.997597823594105 8.542779147691064 0.4318077769070109 1.050218690120904 8.472241180765769 0.25 1.151808839021913 8.643878024881618 0.152587627797984 1.160526217676272 8.643896683684268 0.402587627797984 1.213147084203071 8.714415991806913 0.334395404704995 1.058936068775263 8.976765333997207 0.1789730389671879 4.491587182485688 9.084601059163782 0 4.355914861536 9.137788735107105 0.151616500216138 4.54358046902712 9.403097592882766 0.8520138477219348 4.62932320764928 9.380663815950342 0.8482748022671491 4.872984852738445 3.520306582870262 0.8156485286349928 5.056134200541874 3.42235028178536 0.8415905324180382 4.891970481366111 9.024722529810123 0.1572634314541049 0.7324791618899241 9.024717134482859 0.4072634314541049 0.6522638800270685 9.094161578927308 0.1572634314541049 0.612114650778564 4.735567071691662 0.410857108391614 2.696799951836265 4.613095238095594 0.4374632569077013 2.880492216242896 4.518500603845295 0.3741459787118454 2.665502903919681 5.833333333333722 0.5913466983803375 2.301996410804922 5.76388888888928 0.8413466983803375 2.261902642111195 5.940863154407285 0.6835736862473741 2.203703707172763 5.80197426551838 0.6835736862473736 2.444266319335101 5.277777777778108 0.5913466983803375 3.264246859454292 5.208333333333666 0.8413466983803375 3.224153090760564 5.38530759885167 0.6835736862473741 3.16595415582213 6.527777777778082 0.4086533016196629 3.504809471616708 6.527777777778095 0.158653301619663 3.424621934229262 6.527777777778077 0.2499999999999999 3.584997009004155 6.388888888889175 0.4077730121329647 3.709161751289625 6.388888888889188 0.1577730121329647 3.628974213902179 6.388888888889193 0.3164263137526276 3.548786676514732 5.555555555555912 0.5913466983803382 2.783121635129609 5.486111111111468 0.8413466983803382 2.743027866435881 5.663085376629475 0.6835736862473742 2.684828931497442 5.52419648774057 0.6835736862473747 2.925391543659789 4.934926691111098 0.1608769507945256 5.707443073481884 5.116502124076355 0.3171655291036253 5.762985523156074 5.181575432965454 0.1562885783090996 5.725415430751903 5.105279993623078 0.1382560445153594 5.548357186995878 5.286855426588335 0.2945446228244591 5.603899636670066 5.040206684733979 0.299132995309885 5.585927279400048 6.828141277847802 0.8548617610070046 0.7721900951288385 4.887152777778002 0.4457304526748961 5.123595382625721 4.667595251206285 0.4043187963814857 5.158274680831461 4.720571044591182 0.372555561440866 4.95400060338478 5.572678275290566 0.4200985811682341 2.953382516752574 5.76388888888923 0.4650205761316872 3.063778015985689 5.78357165699834 0.3896529976604499 2.846127444457427 6.111111111111121 0.1490058478048805 9.25505521386771 6.250000000000005 0.3072765612068536 9.382323314138883 6.111111111111118 0.3990058478048803 9.335242751255164 0.9746702326864237 0.1516757104884006 3.275422363310359 4.862418598062007 0.1516886734614456 6.230430864846869 4.946794843786304 0.3489248889005775 6.317407787645074 5.084376245724469 0.1972362154391319 6.237975128200604 4.883044714275678 0.1238765246349262 6.0834740397062 4.967420959999974 0.3211127400740582 6.170450962504404 4.745463312337512 0.2755651980963718 6.162906699150669 2.220192186202552 0.4131368675373475 1.341128282247365 2.220192186202557 0.1631368675373475 1.260940744859917 2.057354961545036 0.3100544913290711 1.274699177845652 6.634483902842813 0.3918531991111962 3.665637803358521 6.634483902842826 0.1418531991111963 3.585450265971075 6.495595013953924 0.299626211244161 3.709615008256545 2.446460638537038 0.8356314460599624 6.095901381757814 2.51590508298148 0.5856314460599624 6.135995150451542 2.573976877863367 0.6670414492322437 5.987857532777459 6.393929374120043 0.5856314460599593 7.091972920665372 6.463373818564484 0.8356314460599593 7.132066689359099 6.49318441684097 0.6670414492322426 6.96761246221727 5.069444444444864 0.83641975308642 1.620402343011594 5.114550715387183 0.8409268222534827 1.273610075791124 5.114550715387177 0.6773465753399028 1.433985150566019 5.183995159831623 0.8409268222534827 1.393891381872299 2.812492374980277 0.6922398589065262 5.14898444201174 6.976010101010168 0.4930789375233686 6.934649138961669 6.817877382045381 0.5886715951770094 7.083913783261989 7.064089503257483 0.5955926576536408 7.102138223577354 6.996433350180578 0.6261733505124025 6.980723471059577 6.83830063121579 0.7217660081660433 7.129988115359898 6.750221228968476 0.6192522880357711 6.962499030744212 1.317089152680704 0.1950762049626902 6.300329966753216 1.247644708236259 0.4450762049626902 6.340423735446934 1.180555555555741 0.25 6.431654586258251 1.379492020647271 0.1374457064871822 6.410420462680008 1.310047576202827 0.3874457064871821 6.450514231373726 1.446581173327789 0.3325219114498724 6.319189611868691 6.070193330322889 0.4190086367499051 6.282766451020926 5.877814774291847 0.4296065469765095 6.114420694255381 6.025074744534054 0.4244297226150522 6.043946284043756 7.148902978526539 0.833257552348166 3.828707038210069 7.345505769489284 0.8573013166886507 3.688172309207186 5.555555555555943 0.5913466983803375 2.301996410804914 9.279189090446845 0.6020138477219348 4.707072108285086 9.118063062764659 0.5920361101138469 4.729914959010978 9.256755313514422 0.5982748022671491 4.950733753374251 9.166678365089496 0.1706957406987198 8.371534134748956 9.096806731656649 0 8.436582904534792 9.205706582709769 0.1566609575056951 8.606593346938698 3.3452826023603 0.8403194661058363 2.626366023191666 3.272342671416275 0.6455599819030442 2.71809059280615 3.121504513500791 0.8052405157972078 2.634283592581631 3.313474863484158 0.8786774944165835 2.473836778493038 3.240534932540132 0.6839180102137914 2.565561348107522 3.464313021399642 0.7189969605224198 2.557643778717557 5.881737069566714 0.4381296115577477 3.825559621166474 5.812292625122272 0.1881296115577477 3.865653389860201 5.931540293727821 0.3279088250544082 3.986837174232361 4.59681158077839 0.6814684963153115 1.644688072756187 4.930555555555785 0 5.068466450671852 4.930555555555793 0.1547891870604093 4.914434354157558 4.790015489035627 0.122555561440866 4.91390683469106 5.000000000000331 0.4135802469135801 3.264246859454277 5.069444444444779 0.1635802469135801 3.224153090760557 5.029154551031962 0.3085818433611973 3.084800127115805 0.384460098468288 0.8400435366451356 7.931946433214247 0.5156744817154608 0.7494634339492857 7.739853478528767 0.6051414027654598 0.8712102401711018 7.735427984438939 4.30555555555565 0.4086533016196643 7.353811266214057 4.13372025352536 0.4868788128745438 7.231105518305114 4.272609142414247 0.5782255112548795 7.15091798091767 4.383227770236475 0.3740433205449796 7.236512591493657 4.211392468206185 0.4522688317998591 7.113806843584715 4.244338881347588 0.2826966221646439 7.316700128881102 8.637981185677351 0.3845874738461245 5.208432137638406 8.766343284368133 0.223799172428566 5.2797104561583 6.466896926570112 0.1592262874268449 4.52072799124104 6.617839558362299 0.3505161293832143 4.546146495065717 6.678720409570175 0.1912898419563694 4.492478424090773 6.797356999851419 0.3451641529522394 4.357545566077514 6.585533516851356 0.3131005984227148 4.38579513322778 3.680555555555561 0 8.917468245269294 3.750000000000026 0.2138643527532724 9.039551925223224 3.819444444444483 0.2138643527532724 8.919270619142042 3.613834312221123 0.1527373506164627 8.87580223568164 3.683278756665588 0.3666017033697351 8.997885915635571 3.544389867776666 0.1527373506164627 8.996083541762822 0.7217348287603462 0.8239685791047336 8.575784982852365 0.6522903843159046 0.8239685791047336 8.696066288933547 0.7217348287603462 0.5739685791047336 8.655972520239814 3.055555555555514 0.8389917695473225 9.374537208377728 4.894569204533595 0.4023894182581966 9.845255323909857 4.963191787614523 0.3320447837249139 9.666816820538905 4.754858454281157 0.5001025582650147 9.690350775306541 6.38888888888896 0.4086533016196635 8.075499102701217 6.257981970547451 0.5959682467713473 7.939273717996127 6.309923682214704 0.3785262082332657 7.949720981983765 6.179016763873188 0.474494455004613 7.973870672053568 4.278816648167303 0.1665370301854105 8.541186611647321 4.278816648167296 0.4165370301854148 8.621374149034768 4.235413870389531 0.3622674828603067 8.435940468826296 7.653154860094658 0.5893834913337261 2.534322560651745 2.053571428571646 0.437463256907701 5.286118337866196 3.819444444444493 0 8.195780408782241 3.756639915420345 0.1576071073199354 8.377626845988452 3.64678176100402 0.1349472887770102 8.290798882505241 7.061795596332595 0.1581448064892423 1.162650899413062 7.162714662230992 0.4012285621685274 1.140728226335708 7.424476838193886 0.3014765638508011 1.286502526836194 3.680555555556041 0.75 0.5964211185486226 3.61111140485505 0.75 0.5020469755131537 8.913187215143871 0.1745583989545821 6.494131067092471 9.044049767375741 0.3360714152285059 6.569208750692754 9.15864033000976 0.1615130162739238 6.466638501165297 9.105995796890104 0.1864982868616544 6.333368631678249 9.236858349121974 0.3480113031355782 6.408446315278534 8.991405234256085 0.3610566858162365 6.435938881205706 1.185202457777919 0.1823537584165638 0.7529702619428555 1.046380344494257 0.1823537584165638 0.7511025313931257 1.116115928906763 0.4323537584165637 0.7279153418665311 5.539587080544324 0.3091824542183448 4.42187419689159 5.000490489976306 0.8754844759169397 9.879718693918829 4.861601601087425 0.8754844759169397 9.879718693918825 5.000000000000029 0.8423953289333895 9.649763915757084 5.138888888888909 0.8423953289333895 9.649763915757088 3.41984126984128 0.5000000000000029 8.827429096145647 3.200392044939322 0.5820141230902263 8.793753090441342 3.425788870336158 0.5820141230902283 8.663620172624009 3.547126808414065 0.38439249074205 8.674267016806244 3.327677583512108 0.4664066138322733 8.64059101110194 3.321729983017229 0.384392490742048 8.804399934623575 4.267788525065123 0.8422859408556147 2.841504367296641 4.249305555555926 0.8188198118753669 2.625209463288693 4.144032412577875 0.6631211761876104 2.572203432284757 4.061393523688979 0.8443013643122435 2.730115604125603 4.162515382087072 0.6865873051678582 2.788498336292705 0.5616660292814168 0.1435775374804469 6.271321317998851 0.7258472194091974 0.3233741972426021 6.350428748217678 0.5914609468825003 0.3935775374804468 6.240458214109001 9.056752484309866 0.8442589897752644 8.439334822928078 9.126196928754318 0.5942589897752644 8.399400337468935 9.195641373198757 0.8442589897752644 8.439334822928098 8.696883817303208 0.223799172428566 5.159437823391142 8.680540532935222 0 5.309037736148452 8.552178434244439 0.1607883014175585 5.237759417628559 3.055555555555871 0.1635802469135801 3.584997009003962 2.941219513742726 0.3226136702946143 3.651008953522848 2.941219513742717 0.1590334233810342 3.811384028297746 3.055555555555861 0.2581390455737093 3.745372083778859 2.941219513742716 0.4171724689547434 3.811384028297745 3.05555555555587 0.4217192924872893 3.584997009003961 3.169891597368994 0.1590334233810332 3.811384028297756 3.169891597369003 0.3226136702946133 3.651008953522858 3.169891597368993 0.4171724689547424 3.811384028297756 1.875000000000321 0.8413466983803375 3.224153090760391 1.944444444444764 0.5913466983803375 3.264246859454119 1.998135666591816 0.6698363197293927 3.11155681705424 1.839056599895059 0.6698363197293927 3.387089842993625 6.041666666666782 0.1586533016196634 7.15334242274555 6.111111111111224 0.4086533016196634 7.113248654051826 6.164802333258234 0.3301636802706158 7.265938696451721 3.749098151782253 0.8404725990722763 0.7282051408391614 2.15074774175812 0.1631368675373475 1.140659438778742 2.081197649298248 0.4131368675373475 1.101367077130875 3.120581735311352 0.3563185521122014 5.361860717826806 2.908875105336042 0.3294823413278839 5.451370464009623 4.702032044414731 0.5784896213490551 2.812968693989943 4.771476488859173 0.8284896213490551 2.853062462683671 4.652777777778143 0.75 2.743027866435844 4.5455663028429 0.8422859408556147 2.841504367296658 4.594820569479489 0.6707755622046698 2.911445194850756 9.191152831120291 0.4207108639796548 4.191822327384284 9.293322563310364 0.4207108639796548 3.954440018008471 9.336256981785851 0.4999999999999999 4.113597225750334 9.364479411158197 0.4038699547251179 4.361782821263917 9.466649143348269 0.4038699547251179 4.124400511888103 9.321544992682709 0.3245808187047728 4.202625613522052 8.53335013716114 0.1595974721523352 1.286391493482286 8.53336879596379 0.4095974721523352 1.339012360009086 8.379775105557034 0.1558464330837155 1.243830324720649 8.379793764359682 0.4058464330837155 1.296451191247449 8.440902720755055 0.3154439052360506 1.431033845707822 4.791666666666897 0 5.068466450671844 8.83104229070042 0.8443746475343327 6.344771029213428 8.761597846255965 0.8443746475343327 6.465052335294597 8.780955025921156 0.8632932218625484 6.222566132063383 8.792552872177023 0.707667869396881 6.296057649792981 8.850399470365613 0.8632932218625484 6.102284825982212 4.717493113937321 0.6874750012039007 2.326231474032963 4.599381497696776 0.5853929770903928 2.157120039426291 4.599381497696779 0.7127041723474417 2.091343689439958 2.290458258732342 0.25 0.6183006943794713 2.150727472574125 0.25 0.6118915355380734 2.214996113515664 0 0.6480637993390195 2.277839048526768 0.1863312613962728 0.7630021075350166 2.13810826236855 0.1863312613962728 0.7565929486936187 2.213570407585229 0.4363312613962728 0.7268298437340706 7.643675892329532 0.8457339069164008 9.11517331101302 7.504787003440655 0.8457339069164008 9.11517331101302 7.435073484269894 0.8767396058415597 8.992567698543537 7.439860487710519 0.7224735127579605 9.069991458205919 7.500000000000142 0 5.910435593240219 7.354274466233869 0.1625530042744719 5.978234956645049 7.493163355122759 0.1625530042744719 5.978234956645056 7.66055073300671 0.1504957609484714 5.786180690313264 7.514825199240438 0.3130487652229433 5.853980053718095 7.521661844117821 0.1504957609484714 5.786180690313257 5.143342990473641 0.3485465303994003 6.14670113512897 5.058966744749345 0.1513103149602683 6.059724212330764 4.942011459024851 0.2751868395951945 5.992200046634565 0.8262745298683436 0.8502946430236543 3.923876726874584 0.756830085423897 0.6002946430236543 3.963803804645624 0.9027777777780587 0.75 4.025861773712141 0.8591094857537089 0.8479746433476103 4.15049710405333 0.7896650413092623 0.5979746433476103 4.19042418182437 0.7131617933995472 0.6982692863712646 4.088439134986813 4.873078456451468 0.6781136573401632 1.75712698524686 1.607483094567272 0.4841521720582014 2.496541136863013 1.798380597946169 0.4588039730954475 2.626889024061934 1.614658052177003 0.525348198962754 2.732961285317951 1.477360568343148 0.4296299273218025 2.707997177177408 1.668258071722045 0.4042817283590485 2.838345064376328 1.661083114112314 0.3630857014544959 2.60192491592139 8.680563988957347 0.8417355459705539 9.525807933200348 8.674163179932066 0.6823376090031337 9.352393706449938 8.611119544512896 0.5917355459705539 9.485714164506637 2.346488753504965 0.222945806574854 5.180305534652655 2.485377642393846 0.381979229955887 5.312329423690445 9.52959433023252 0.5643464925887463 7.588570565063444 9.433266767096734 0.75 7.664682621373846 9.50572704952177 0.5992924393869811 7.84118489591798 8.918762761015298 0.75 8.012618194032916 8.988107582580403 0.75 7.892391831654386 8.908216570381128 0.8469929802938176 8.148927522882113 8.977561391946235 0.8469929802938176 8.028701160503584 8.938090442507558 0.5969929802938176 8.086046614213625 9.708730947461364 0.8467927863505931 7.010318136316185 9.659921028149153 0.6611392789393393 7.181573009166988 9.685909490028164 0.8143464925887463 7.27089489290514 9.544002830678728 0.8488018258454614 7.073803971315851 9.495192911366518 0.6631483184342076 7.245058844166654 9.518014368799717 0.6955946121960543 6.984482087577699 6.285943400105324 0.1715103786509538 8.719561079259098 6.285943400105331 0.4215103786509552 8.799748616646536 6.444540337916972 0.3220925092558794 8.729581768520269 3.477609926796402 0.6258526887930375 8.789993748014574 3.391101990288463 0.8758526887930351 8.839939128444469 3.421359926796406 0.6946725006683888 8.952831725723534 7.148351717715018 0.3812971465421622 8.448309419995372 7.217796162159468 0.1312971465421623 8.408215651301663 7.140520973051842 0.2926643745770734 8.272426579238713 8.670524208691438 0.6937136123259253 2.787702516428598 8.680555555555967 0 2.181715104723994 8.626849248617964 0.1488442306274838 1.984170552926322 8.809866801911994 0.150690532876936 2.117958713103341 3.611111111111082 0.2499999999999982 9.43868723828778 3.539322253488381 0.4209350702701027 9.503178413879883 3.539322253488367 0.1709350702701045 9.583365951267329 3.749999999999966 0.1407332347052415 9.420719582282864 3.678211142377265 0.311668304975346 9.485210757874967 3.74999999999998 0.3907332347052397 9.340532044895419 5.812292625122252 0.1881296115577477 4.106216002022549 5.881737069566686 0.4381296115577477 4.146309770716279 9.306029615888342 0.8374535668260412 8.710846985228549 9.288021162014084 0.5874535668260411 8.780840993919494 9.206130697173698 0.7051067951015398 8.756382410599251 3.161497493393678 0.6876608445023292 3.188688858103327 7.432076276922104 0.75 0.6018966769969012 7.574420707993199 0.75 0.6033752511502957 7.440371230276115 0.8165745965185978 0.7593066935279742 7.58271566134721 0.8165745965185978 0.7607852676813687 7.510575263447357 0.5665745965185978 0.7330370273757001 0.4462632106686033 0.45263294354697 1.489250231878871 0.3177233553382902 0.3514384754972088 1.664788134091384 0.3674938063732575 0.1938966943124366 1.594959274153105 7.797663317774097 0.7052138289619753 7.963504233658436 5.636643314635554 0.6245949640416454 3.945601070907752 5.706087759079998 0.8396155401733336 4.065882376988935 5.502423022801164 0.8505996579482107 3.949955726754717 5.514066337436431 0.6902151981215443 4.02990340780228 5.432978578356719 0.6355790818165223 3.829674420673533 8.806519263927788 0.5128363042595905 5.358304356900009 8.690252584139579 0.5927410174102374 5.457892825463337 8.880000000000123 0.6025720164609054 5.584553441297702 8.996266679788333 0.5226673033102583 5.484964972734374 1.128098885555721 0.2924177499563494 7.974756231515529 0.5095098127012012 0.8435972512695928 5.48074450449962 0.7566942979998359 0.8444665647234777 5.38162419419327 9.07136328700367 0.8090838507739235 5.331683583857252 9.01888888888902 0.8525720164609054 5.50436590391025 2.847222222222621 0.1635802469135801 2.101527567336164 2.916666666667068 0.4135802469135801 2.061433798642444 2.986111111111514 0.25 2.021340029948724 2.952209166012514 0.1573021089322821 1.880538252302791 3.02165361045696 0.4073021089322821 1.840444483609071 2.882764721568067 0.3208823558458622 1.920632020996511 0.6327832629808947 0.6315117996578207 0.8212282027157924 0.4981375128667653 0.7890367300037011 0.8945350848256538 0.3689525415483371 0.6375093383938102 0.7941013369804817 7.777777777778152 0.4135802469135811 2.783121635129779 8.749859102291346 0 5.188821631076753 8.819318569356273 0 5.309094263843909 7.919806719860476 0.3100275151513681 1.277234656763035 4.008121639576706 0.1764403292181068 4.587341226347112 3.938677195132265 0.4264403292181068 4.547247457653382 3.847976045431881 0.3140121049366309 4.677463263058197 5.501864333408909 0.3350906255645236 2.149306368405032 5.694444444444845 0.4135802469135801 2.061433798642575 5.694444444444835 0.5049269452939176 2.221808873417471 4.444460955200828 0 0.620557242376697 4.514320708017548 0.25 0.5991820634918135 4.37541530837276 0.25 0.5966829467835766 4.303864586904897 0.1587783504203283 0.7252573932121424 4.373724339721617 0.4087783504203283 0.7038822143272589 4.442769986549685 0.1587783504203283 0.7277565099203792 3.18387515353509 0.666708796191908 5.603421668279784 6.821712431892297 0.4200437368964842 7.060815366210068 7.067924553104398 0.4269647993731156 7.079039806525433 6.909791834139611 0.5225574570267564 7.228304450825753 2.307571749648149 0.8356314460599624 6.095901381757805 2.077257079450073 0.8563901317667157 6.176325941856954 5.41666666666688 0 5.188747756753061 5.376984126984338 0.1874632569076989 5.326212106560107 5.264101367962455 0.1312977228979161 5.112614099175136 0.7572649806277685 0.8502946430236543 4.043906946092725 0.7900999365131338 0.8479746433476103 4.27052732327147 4.877139264485001 0.8235596707818942 7.714655184457593 4.764958521131414 0.8235596707818933 7.908957931576837 7.102572594088883 0.5899825791522522 6.86157824951338 6.856360472876782 0.5830615166756208 6.843353809198015 6.876783722047191 0.7161559296646547 6.889428141295923 9.048741077902985 0.4791791376232765 5.312282652681377 5.000000000000068 0.4277127166755083 9.540905115772954 1.751643323247134 0.8382092346678326 5.622167075696064 1.743209592329457 0.6776903058084607 5.47906809669938 1.936010713526967 0.8394810711406282 5.526774002080862 1.913689161049263 0.8516404097531065 5.763490038910271 1.905255430131588 0.6911214808937346 5.620391059913588 1.720888039851754 0.689849644420939 5.715784133528789 9.468241146761317 0.5823742093032841 8.925014391932182 9.486249600635574 0.8323742093032842 8.855020383241236 9.48577554030274 0.6698277761293253 8.768680429281293 9.672884367691484 0.2223035700024376 4.624750740639394 9.893628856164696 0.1234559657180418 4.587852425722215 9.641064642525002 0.1538699547251179 4.481000409219775 4.933684451217177 0.6676264425032723 9.181047869933012 7.354274466233846 0.1625530042744719 6.218797568807394 7.423718910678291 0.4125530042744719 6.178703800113672 7.430555555555653 0.25 6.35146704887118 7.530467394219475 0.1376768877187468 6.324621730440365 7.599911838663919 0.3876768877187469 6.284527961746644 7.523630749342114 0.3002298919932187 6.151858481682858 0.736076191443393 0.1699971056537813 3.614296394893738 7.799872150392582 0.8429600235155748 1.670347723441672 7.708333333333771 0.8235595799300259 1.460026984988779 7.578003705377629 0.8718299033582348 1.625344034615323 5.251019877409901 0.4062885783090996 5.685321662058183 5.004371135555544 0.4108769507945256 5.667349304788164 5.174724438067525 0.3882560445153594 5.508263418302157 4.083131552665585 0.3093126372196782 7.233719606214491 4.050185139524181 0.4788848468548934 7.030826320918104 4.160803767346409 0.2747026561449935 7.116420931494092 0.996213113107957 0.1752606108002105 0.3827376279175274 0.9965710286812405 0.4252606108002104 0.45622619429311 0.9268354442687343 0.1752606108002105 0.4794133838197047 7.650838157915508 0.8403194661058391 8.159306102925829 7.768575606534208 0.8713278722310592 8.390936376206493 1.591167955743408 0 0.5204263757971089 1.659542465163606 0 0.6273345495938001 1.729508829131984 0 0.5244568489881131 1.661113198451856 0.2499999999999999 0.4958473799970669 1.729487707872054 0.2499999999999999 0.602755553793758 1.591146834483477 0.2499999999999999 0.5987250806027539 1.488155226844068 0.1580576740412472 7.055937207111765 1.557599671288511 0.3167109756609114 7.015843438418043 1.597222222222375 0.1586533016196642 6.832592273195515 1.380168862163063 0.1386110194540011 6.883107190555728 1.449613306607506 0.2972643210736653 6.843013421862008 1.3405463112292 0.2966686934952483 7.066358355778258 4.166666666666752 0.8364197530864227 7.514186340988949 4.166666666666749 0.5864197530864228 7.594373878376396 4.026832289755532 0.6917651430426279 7.480415359417017 0.9786717375131074 0.8419844574416879 9.174597451872426 0.9786717375131084 0.6833311558220265 9.094409914484977 1.111111111111138 0.8413466983803386 8.957562013962857 1.115728301560524 0.8701151197462821 9.213513368134201 1.115728301560525 0.7114618181266208 9.133325830746752 0.983288927962495 0.7120995771879699 9.350361268656322 7.639046978609931 0.8768323886351242 9.87971869391883 7.500158089721047 0.8768323886351242 9.879718693918829 7.638888888888874 0.8417093379676351 9.646267263295496 7.499999999999989 0.8417093379676351 9.646267263295496 7.639046978609928 0.7185417266027594 9.766548569376667 1.538896192710884 0.6653931665394888 7.375411618914106 1.48657446800109 0.8354917477077218 7.485807118147209 1.58009950248769 0.8299014188317669 7.243415766980815 1.493093790283256 0.6890777429805067 7.134624576645146 1.440772065573462 0.8591763241487398 7.24502007587825 1.399568755796655 0.6946680718564616 7.37701592781154 1.666666666666699 0.1635802469135788 8.957562013962891 1.666666666666694 0.4135802469135788 9.037749551350338 1.666666666666691 0.25 9.117937088737785 1.805555555555582 0.1571502057613257 9.158030857431562 1.805555555555578 0.4071502057613257 9.238218394819009 1.805555555555585 0.3207304526749044 9.077843320044115 1.193312890643518 0.8388407676083264 1.146277518659335 1.262757335087964 0.5888407676083264 1.106183749965615 1.276862478961354 0.630533995327982 1.24642378150242 4.599381497696772 0.8353929770903928 2.237307576813738 8.19545352618039 0.4135973763874874 3.504775011022454 4.555291013759476 0.28064961794631 4.502816472356746 6.38888888888896 0.5864197530864208 8.075499102701217 7.710118465838658 0.4622257445753299 1.989147028009152 7.697544121994866 0.4151883518537083 2.239348970250305 7.583126038599236 0.3232366544415371 2.151270545539044 6.805555555555674 0.4993141289437545 6.257914921919115 6.956179439691789 0.4124177907551598 6.249838700014292 6.817290550802921 0.4117319196989144 6.036005266981089 6.809790618511647 0.622765343536435 6.175405458688859 6.960414502647761 0.5358690053478403 6.167329236784036 6.948679507400515 0.6234512145926804 6.389238891722062 2.752309301577823 0.8196924573616556 3.232190942913505 2.697087660128481 0.8694810271100778 3.449780871056064 6.041666666666849 0.1635802469135781 5.629779212384061 6.111111111111288 0.4135802469135781 5.669872981077789 6.214986553532048 0.3207628109244399 5.569335910229297 0.6691288976305252 0 5.549945157016637 0.580793325649444 0 5.49068439910822 0.5456840455067272 0 5.618439036452125 0.5305227880096792 0.2499999999999999 5.54557079865011 0.6539676401334772 0.2499999999999999 5.477076919214621 4.027777777777885 0.4086533016196643 7.353811266214047 3.994831364636481 0.5782255112548795 7.150917980917659 3.944242663776707 0.4006593356000139 7.153532068827036 7.202878604508001 0.1357407490985456 2.606003389519814 7.211530171781414 0.2832566295322556 2.771373448988935 7.258434160063551 0.35076132523024 2.557890867087343 5.902777777777994 0 4.827903838509592 5.957020494954643 0.1711427152978693 4.836162001331449 5.766222397899114 0.1309662234640949 4.67330577252587 0.7782449891143977 0.75 7.305887054769572 0.9102197085450202 0.75 7.309874957926638 0.8430502574845795 0.8490730119256552 7.428568508062691 0.975024976915202 0.8490730119256552 7.432556411219758 0.9102567954545715 0.5990730119256552 7.390215264195353 8.611111111111533 0 2.061433798642819 8.541666666667078 0 2.181715104723984 8.487960359729074 0.1488442306274838 1.984170552926312 6.111111111111288 0.5913466983803357 5.669872981077789 6.16041353874167 0.6694683152202292 5.516609276421358 6.041666666666849 0.8413466983803357 5.629779212384061 2.695007392530584 0.4021123609044191 3.9535346627573 2.732886180409377 0.1590334233810342 3.931665334378907 2.672945368922394 0.3141099854022644 3.761239169029609 6.017178984872551 0.4171568761695371 4.455946771440961 6.017178984872546 0.1671568761695371 4.536134308828403 6.156067873761432 0.3246331803897559 4.413819653990497 6.180555555555675 0.8506245738573796 6.836784752819926 6.180555555555675 0.6006245738573796 6.916972290207372 6.186994905105708 0.7040517302485854 7.037973876864719 5.767175166250611 0.4128053973752021 4.936801145875 5.945339583273739 0.4211427152978693 4.876625866351571 5.75454148621821 0.3809662234640949 4.713769637545992 4.068068497841226 0.6854481859858277 8.627977492047751 1.730638032869604 0.1577345806665529 0.7478744886448033 1.592297159481027 0.1577345806665529 0.7438440154537992 1.662242402189475 0.4077345806665528 0.7192650196537571 1.805894573224062 0.8797207866392434 9.879718693918786 1.944783462112955 0.8797207866392434 9.879718693918804 1.805894573224058 0.6792500702053772 9.799531156531321 1.944444444444456 0.7995292835661338 9.679249850450125 1.805555555555563 0.7995292835661338 9.679249850450107 2.929705193534426 0.2499999999999999 0.577824604905686 2.842092188233897 0 0.541423861470288 2.866926372604483 0.1724203480714223 0.7234495678849209 2.430555555555553 0.8364197530864207 9.238218394818992 2.361111111111119 0.5864197530864207 9.278312163512798 2.380214562717994 0.6841285108050071 9.10140378030477 6.93820071181379 0.8721939186107461 9.879718693918822 7.077089600702672 0.8721939186107461 9.879718693918829 7.007645156258232 0.6533861851644903 9.783051763823964 7.013888888888884 0.7811922665537442 9.662770457742793 6.875 0.7811922665537442 9.662770457742788 2.177529410726466 0.8383725983664974 0.7488345799610043 2.317260196884684 0.8383725983664974 0.7552437388024023 2.252991555943145 0.5883725983664974 0.7190714750014562 0.9786717375131094 0.5919844574416879 9.254784989259878 1.11111111111114 0.5913466983803387 9.037749551350309 1.115728301560527 0.6201151197462822 9.293700905521654 5.335296814447554 0.821756843897275 9.615118562261941 5.474185703336438 0.821756843897275 9.615118562261923 5.404741258891992 0.5717568438972737 9.575024793568193 4.13372025352536 0.6646452643413022 7.231105518305114 4.166666666666764 0.495073054706087 7.433998803601502 4.234420142460444 0.1587783504203283 0.8455404417362944 4.246917411469761 0.3194002271313573 1.00334977966847 4.16497727074675 0.4087783504203283 0.885636132807746 9.294294449668822 0.6087027444816586 4.259450866162123 9.396464181858892 0.6087027444816585 4.022068556786309 9.424686611231238 0.5125726992067765 4.270254152299891 5.369212459334764 0.8414351292264537 2.255087224819432 5.438656903779211 0.6827818276067912 2.21499345612571 5.625000000000389 0.8413466983803375 2.261902642111193 5.416666666667046 0.8810553555192381 2.383986169055245 5.486111111111493 0.7224020538995756 2.343892400361524 5.230323570445867 0.7224904847456917 2.337076983069763 5.481661230016162 0.4055327277210125 6.435302919628411 5.412216785571717 0.1555327277210125 6.475396688322132 5.60491294571265 0.3080607981976604 6.473660283429119 6.213425808519904 0.6896728109045964 5.952269398911218 1.150214071093526 0.1554475546567496 8.381510708701065 6.102387430427334 0.6912781746344576 3.796816581626987 1.250000000000026 0.6581089909795017 8.93543599243371 1.250000000000025 0.816762292599163 9.015623529821159 1.254617190449413 0.6868774123454451 9.191387346605055 2.031011608623809 0.170098581168231 4.336892807336605 2.100456053068257 0.420098581168231 4.296799038642887 2.173336265496434 0.315310413380961 4.199641938108288 4.587182563729216 0.3685111298228215 3.250912734223995 1.756312985154322 0.1842654275518152 7.22139229683822 1.825757429598768 0.3478456744653953 7.181298528144499 1.57780154533159 0.3423231015930623 7.164080849898397 0.9630426417247189 0.2500000000000001 2.479801408160053 0.9019026736557277 0.2500000000000001 2.363585741011649 0.9170667241135062 0 2.429798491160918 0.8409644159740797 0.178922745385381 2.601059663895818 0.7798244479050884 0.178922745385381 2.484843996747415 0.8258003655163012 0.4289227453853811 2.534846913746549 1.857569934098804 0.5027833979034427 6.728018963533421 1.857569934098809 0.4163636448170208 6.567643888758529 1.666666666666824 0.5864197530864219 6.632123429726902 1.736080939522496 0.7108399954714565 6.668549928973235 1.736080939522501 0.6244202423850347 6.508174854198343 1.926984206954482 0.5407838872020555 6.604070388004862 2.220120807161206 0.4164012624880729 8.304858637208067 2.232198101847199 0.1649698794141743 8.263021661179836 2.066121768358712 0.3108866532620226 8.358184688891896 2.441078492010158 0.1468227807369978 8.269892525974926 2.400225694305226 0.3046640411952587 8.4538539745019 2.429001197324165 0.3982541638108963 8.311729502003157 8.977661014825568 0.5969929802938176 8.349555649585307 8.908216570381118 0.8469929802938176 8.389490135044451 9.076080165802139 0.691251970069082 8.27220063094645 3.778708306501771 0.8693822880241886 5.125134967852158 3.848152750946213 0.6193822880241886 5.165228736545886 3.68790377826069 0.6850308166591814 5.233084023803427 7.35764276211129 0.1620597505846111 1.823811564858717 7.427087206555736 0.1620597505846111 1.944092870939898 7.374706254174791 0.4120597505846111 1.894147490509992 4.745269057698664 0.6913754573814406 9.426281738988095 2.566525013983242 0.842397820738377 6.590344127070486 2.497080569538797 0.5874252555806246 6.603708716635055 2.498537128496611 0.6800846009928142 6.456883384732842 2.430555555555927 0.8364197530864199 2.582652791660829 2.361111111111484 0.5864197530864199 2.542559022967101 2.499771865580237 0.6881650400934258 2.437977383144489 2.430555555555984 0.1635802469135801 1.620402343011452 2.361111111111542 0.4135802469135801 1.580308574317724 2.339871131490082 0.311834959906575 1.752683130106883 2.382722257744425 0.1676179090052663 3.818628715810845 2.569444444444743 0 3.865653389860007 2.50950363295776 0.1550765620212302 3.695227224510709 7.013888888889285 0 1.70058988039912 7.083333333333727 0.1626168992245342 1.734676807378839 6.828088983854474 0.1424897119341572 1.768445034406975 9.016529370108358 0.5742194080391791 2.222677252507565 8.974428568119187 0.8223234075884257 2.210202881144751 8.817775306629786 0.7006131062181498 2.280134153229293 9.10550200282141 0.5805552204211667 7.980937108801121 9.094955812187241 0.6775482007149843 8.117246437650319 3.827414629775406 0.1500996158455449 8.767028577280222 3.896859074219871 0.3639639685988173 8.889112257234149 3.691248941996512 0.3028369664620076 8.845643873773749 3.077083056110957 0.1419959775957443 1.965544771879987 3.146527500555403 0.3919959775957443 1.925451003186267 3.112625555456403 0.2992980865280265 1.784649225540333 3.197763506803178 0.8707855311253142 3.331666265476416 3.30370544464097 0.7170996772473059 3.175920726738128 8.088227082382598 0.8008675333127724 5.075544669406298 8.149065825698367 0.8220239160348528 4.864806666529737 0.50880547224463 0.5557478540768167 3.163328967452643 0 0.3631693424042556 4.097222222222218 0 0.363169342404256 4.236111111111107 0 0.2405626121623432 4.166666666666663 0.1373554872729677 0.2642666706351703 3.958512675189897 0.1373554872729677 0.2642666706351707 4.097401564078787 6.458333333333633 0 3.625090777697876 6.319444444444732 0.1577730121329647 3.749255519983346 6.565039458398369 0.1418531991111963 3.705731572052241 5.257859837962991 0.822021476337451 9.239017664098029 5.29176155449776 0.6647193250784619 9.17840329187792 6.551390846760554 0.8086805487648137 6.637101354088479 6.690279735649444 0.64800128076026 6.494814993617208 6.581201445037037 0.640090551937097 6.713209739108987 3.86609060944135 0.4088032124747442 4.241390627547213 3.717676408566313 0.3165791637402032 4.235891186107889 3.866090609441353 0.1588032124747442 4.161203090159765 4.656583101733709 0.2736009849890244 6.433248617536826 4.791666666666676 0.8457704912156192 9.724814145315511 1.233169661978538 0.4202068706915728 6.561652892526771 1.302614106422983 0.1702068706915728 6.521559123833053 1.432106127070068 0.3076525771787549 6.540418768948529 0.6458658046038697 0.841455580231892 8.842021031089569 0.7442345135756203 0.1585383527891643 1.726523948936018 0.5445362478420175 0 1.744336336592501 0.4947657968070502 0.1575417811847722 1.814165196530779 5.802117165638679 0.6658925105899187 3.085849121857643 5.941006054527583 0.6658925105899183 2.845286509695296 6.420247956704594 0.5922269878670354 2.801226801374378 6.281216167695367 0.6658925105899183 2.720956760563968 6.350803512260145 0.8422269878670354 2.841320570068097 6.928691222147235 0.1715103786509457 5.060781418296964 7.067580111036126 0.1715103786509457 5.060781418296971 6.944444444444646 0 4.948185144590806 6.944444444444653 0.1352184883947394 4.836139513266123 7.083333333333544 0.1352184883947394 4.83613951326613 7.067580111036133 0.3067288670456851 4.948735786972287 6.111111111111434 0.1507201646090555 3.344434396841792 6.25000000000033 0 3.264246859454352 6.074166002126863 0.1523667473959904 3.162729053449393 6.319444444444783 0 3.143965553373179 6.319444444444796 0.1507201646090554 2.983590478598276 6.143610446571317 0.1523667473959904 3.042447747368219 5.200891056021879 0.7127134378156695 1.545038588404207 5.270335500466325 0.8762936847292495 1.504944819710486 5.315441771408638 0.7172205069827322 1.318527627264912 1.038140084075193 0.8387986340723114 5.60455111743352 0.9758372390052986 0.8387986340723114 5.727136737419507 0.8918475187812205 0.8444665647234777 5.384513700515138 0.829544673711326 0.8444665647234777 5.507099320501124 0.9554429835204024 0.6832651987957892 5.561095285632192 8.333333333333314 0.8387364011102963 7.929569215416644 8.389166084070123 0.6382563632964225 7.892095018398332 8.528054972959016 0.7995199621861262 7.797462293520718 8.575274519870369 0.8497812603470241 7.936367345115316 8.631107270607176 0.6493012225331503 7.898893148097005 8.436385630981475 0.6885176614573204 8.031000069992929 1.623086992945125 0.1395005826321315 9.213059102151735 1.623086992945121 0.3895005826321315 9.293246639539181 1.761975881834011 0.2966507883934572 9.33334040823296 6.56961443019636 0.8256833107237613 4.546143981970657 6.430725541307477 0.6382200538160623 4.580510069422418 6.388888888889104 0.812536743092301 4.50142600771786 6.527562655720017 0.8757982003255719 4.312034532492067 6.388673766831134 0.6883349434178729 4.34640061994383 6.569399308138389 0.7014815110493332 4.391118594196627 9.020630700249342 0.8589381285352162 6.233901076743175 8.962784102060754 0.7033127760695489 6.427673900553945 8.982141281725944 0.7222313503977646 6.18518769732273 7.553593654584228 0.8578742115349047 8.280130099110135 7.565542923610813 0.6981936776407438 8.123374487172306 7.683280372229515 0.729202083765964 8.355004760452971 3.502480158730164 0.8188198118753538 9.15064214862954 3.41736264316872 0.8505238431152484 9.300901068828487 6.218498032064721 0.6658925105899196 2.363996278524726 6.003724190158223 0.6658925105899171 3.202246991734541 6.079609143175816 0.6658925105899191 2.604558890687064 6.142613079047134 0.6658925105899175 2.9616843795722 1.825745733363444 0.4920698682626652 9.007902492490082 1.825745733363437 0.5784896213490864 9.168277567264976 1.805898925947949 0.2872676589423519 8.86859525301001 1.805898925947941 0.3736874120287731 9.028970327784904 1.964977992644691 0.4521770333778596 8.999123268924649 7.385581916604766 0.1580483025878288 2.133730448706336 7.333200964223821 0.4080483025878288 2.083785068276431 7.232168278374768 0.2983481092817168 2.205532118151779 3.202247879308072 0.3230999894073934 5.617899262093804 3.118635634410108 0.1238214137796129 5.713641217957989 2.990541249332762 0.296263778623076 5.70740900827662 5.649951305577336 0.8468260945378056 9.427544197415486 5.614408577667677 0.6895239432788164 9.246648519114196 5.580506861132889 0.5968260945378042 9.387450428721756 4.626184486503565 0.1747997848721756 2.222661325265198 4.671896682344453 0.352213614849301 2.140450404546759 4.62904552917462 0.1774138299771255 1.979222877924095 4.491014060902206 0.1327438357016222 2.012674613466403 4.536726256743094 0.3101576656787477 1.930463692747964 4.533865214072039 0.3075436205737978 2.173902140089067 8.930986738925867 0.1881152447802882 1.959410907903038 8.851964651948553 0.3388057776572242 2.015935822363534 8.94875569080088 0.150690532876936 2.117958713103357 9.171740701251991 0.1504308949922797 1.997637425828034 9.092718614274677 0.3011214278692157 2.054162340288531 9.074949662399664 0.338546139772568 1.895614535088213 3.950460799087471 0.6069099150346248 4.942032214789472 3.881016354643029 0.8569099150346248 4.901938446095745 3.885217314241082 0.6804695858165182 4.781657140014572 2.825821204559427 0.8473061458587299 8.084779693906464 1.029768634234855 0.7657732622039047 5.442591672687355 1.093364098974037 0.6045718962762161 5.619173257804409 0.9470715336800639 0.6102398269273825 5.399135840886027 4.419113032631482 0.2913236056641599 8.658689171556034 4.779211722958813 0.8277127458524889 5.500614468964066 4.854090287801069 0.666145136123284 5.537570846783311 4.797100787064668 0.8384323902707951 5.70682935889693 4.626600271383168 0.852362667881735 5.510649101993861 4.701478836225423 0.6907950581525301 5.547605479813106 4.683589772119568 0.680075413734224 5.341390589880241 3.611111111111093 0.3741459787118496 9.283637313255445 3.611111111111079 0.1241459787118515 9.363824850642892 3.749999999999976 0.2648792134170929 9.265669657250527 1.28589898712627 0.3092254891020956 5.009101575001187 1.380482898162501 0.1270234150834874 5.034681065890863 1.503618564753993 0.2985337937344317 4.922084792184712 2.896287838101672 0.5781752034202643 6.842185477635974 2.965732282546118 0.8281752034202643 6.802091708942254 2.847222222222348 0.75 6.912779810583038 2.868668575270789 0.5853929770903921 7.079303651682288 2.938113019715234 0.8353929770903921 7.039209882988567 2.987178635594558 0.6635681805106562 6.968615550041504 9.768094462988433 0.4913749669139411 5.230653131349714 10 0.3827830110500758 5.220811122779745 9.819049898198086 0.4405979831330639 5.412879667401298 6.180555555555624 0 8.195780408782372 5.992704993563274 0.1536858538780088 8.18190476865783 6.171034793325813 0.1285262082332657 8.029908519371201 0.854895132094752 0.3924780142198375 5.491968129055399 0.7513992023485867 0.2374145637142644 5.656166633773555 0.7581197624515498 0.4046682618243392 5.733780399208749 8.45324295685916 0.8365677807499143 2.46913069779256 8.453242956859157 0.5865677807499143 2.549318235180007 8.314354067970267 0.679417574988598 2.589412003873721 3.403857755037413 0.7264099129060664 8.683769554554431 4.605649189268421 0.6755183785016285 9.518512715369827 4.605649189268462 0.8297478872860092 9.43285465181078 4.628696024744858 0.6753528534518305 9.25460355156455 7.847222222222664 0.8235595799300259 1.460026984988801 7.938761039281475 0.8429600235155748 1.670347723441694 9.058701553333169 0.8264506545672142 1.909907783756692 9.100802355322338 0.5783466550179677 1.922382155119506 8.917679837704863 0.6765204257875774 1.83095163446137 0.3028268006467518 0.8403534983930341 2.243922963425054 0.1803829688836024 0.718623641443619 2.249025036985604 0.4153333180643707 0.6032133737293125 2.275923833226043 5.55555555555557 0.4082542730473769 9.485665289265459 5.625000000000002 0.1582542730473782 9.525759057959206 5.653719866241291 0.3141757344995872 9.373492002542111 1.954420324069428 0.4149698794141743 8.182834123792375 1.954420324069421 0.1649698794141743 8.26302166117982 2.004956433499682 0.3086869569809325 8.07346955002158 5.517628549026635 0.3322468792342841 1.542331121652015 1.38798516844127 0.5886551986008538 0.86559016720603 1.387985168441275 0.8386551986008538 0.7854026298185824 1.525735973710355 0.6553968598835405 0.7881377061261972 6.628581290037937 0.8422269878670351 2.360195345743413 6.698025734482385 0.5922269878670351 2.320101577049692 6.781803141046095 0.6872652765221647 2.43458209082831 5.156250000000105 0.1957304526748999 7.083178327531479 5.114316946579677 0.3700930471902143 7.004070412764992 4.958066946579669 0.1743625945153144 7.034140739285263 5.000000000000082 0.1208887852437732 7.24798873060764 4.958066946579653 0.2952513797590877 7.168880815841153 5.15625000000009 0.3166192379186731 7.217918404087371 10 0.3653954317186734 4.377519442066935 10 0.2437372717992136 4.445922847981058 9.747435786360306 0.2741512608062897 4.339070831478619 1.444750089839864 0.4109839728816268 5.397310981582148 1.375305645395421 0.1609839728816268 5.357217212888422 1.516141770601347 0.3044123515541978 5.491486036732035 8.140734588752441 0.6847433762393914 6.626462927684539 0.7025966577669387 0.129507750943498 1.880720210840847 0.5648342288288701 0.2870495321282702 1.876983450075453 0.8143029455974402 0.2880461037326623 1.789342202480692 7.500000000000357 0.5714837977345739 2.949968641563084 7.569444444444804 0.8214837977345739 2.909874872869365 7.49939691596502 0.6795871900820856 3.084690140595574 3.252213101399567 0.6258526887930356 8.920126665831905 3.258160701894446 0.7078668118832609 8.756317742310269 0.4592392750614365 0.5935972512695928 5.535630904041509 0.5033248840194862 0.5444294667713445 5.346514691032894 0.7064237603600712 0.5944665647234777 5.43651059373516 0.8454752030881807 0.1550634505055732 5.511221778606336 0.7419792733420154 0 5.675420283324492 0.8593588582027936 0.2374145637142644 5.653887122737505 8.951186255804886 0.8589381285352162 6.354182382824345 1.180555555555949 0.8534427291193223 2.32911156129911 1.052963378022453 0.8534427291193223 2.334904767903025 1.114103346091445 0.8534427291193223 2.451120435051429 4.077566084021153 0.3271604938271599 4.547247457653391 9.536413410694635 0.5992924393869811 8.095340919909862 9.569348206788895 0.8492924393869811 8.139525040356276 9.516396608189076 0.75 8.287487532801123 9.617893900923971 0.5434113545232193 8.203772674860863 9.65082869701823 0.7934113545232193 8.247956795307278 9.670845499523791 0.6427037939102004 8.055810182416018 8.888357895572852 0.8459355817430387 7.885491100994436 8.918231767699282 0.5959355817430387 7.822610192325948 3.169117559395729 0.1778306079947642 1.222273268962175 9.607838454270626 0.8143464925887463 7.399565020130376 9.46593179492119 0.8488018258454614 7.202474098541087 2.080631578431602 0.5871905996125872 2.523713769433575 2.011187133987155 0.8371905996125872 2.563807538127295 1.971377014165576 0.6292665513463065 2.442915205038386 2.346488753504961 0.4729458065748541 5.260493072040102 9.317802288280358 0 4.388402826097556 9.253754289623668 0 4.266855296049641 9.210620227448027 0 4.36334519819148 9.254377737850248 0.25 4.417936131682772 9.297511800025889 0.25 4.321446229540933 5.969726559516927 0.4161225085421961 7.075902183691528 5.820894594156508 0.4136211718472825 6.858498662800865 6.033517034795162 0.4020489502060273 6.904370241171572 1.964634622252332 0.5784896213490864 8.927714955102637 1.80555555555559 0.4135802469135788 8.797186939187998 1.944787814836836 0.3736874120287731 8.788407715622565 3.263944949364549 0.597485880854659 5.218779452893873 3.316325901745497 0.847485880854659 5.268724833323772 3.280952380952603 0.75 5.138802376323035 3.107333644821546 0.5929600235155792 5.139132830275583 3.159714597202494 0.8429600235155791 5.189078210705483 3.14270716561444 0.690445904370238 5.269055287276322 8.277233738358024 0.1608571083916145 6.678351344326892 8.255787385309592 0.3254641313012214 6.511827503227638 8.346678182802471 0.4108571083916145 6.638257575633173 4.514320708017548 0.75 0.5991820634918135 4.37541530837276 0.75 0.5966829467835766 4.583416619307121 0.8575942246960413 0.5026410399588087 4.444511219662333 0.8575942246960413 0.5001419232505719 4.514370972479053 0.6075942246960413 0.4787667443656884 9.261021732493335 0.8264506545672142 1.78811768632482 9.248051980755383 0.5764506545672142 1.717937455864475 9.419448384360578 0.75 1.747673373318772 9.418630556300993 0.8410685807542413 1.894826898345801 9.405660804563041 0.5910685807542413 1.824646667885456 9.247234152695796 0.6675192353214555 1.865090980891504 9.090075144693783 0.8589381285352162 6.354182382824353 9.086323558721809 0.1707108639796548 4.0105749377953 4.448929373410484 0.3145162995753317 3.931819908017149 0.9855617452952996 0.5891423002104276 4.072084150315479 1.055006189739746 0.8391423002104276 4.03215707254444 0.9418934532709498 0.6871169435580379 4.196719480656668 8.900486735144861 0.8443746475343327 6.465052335294605 9.843778614487819 0.6052693053571225 1.798454737894323 9.647989946903108 0.5513502970656182 1.84022322399034 9.804211332415289 0.4617945188565435 1.985970226704269 9.851655695755104 0.5930336472560631 2.079713001801984 9.655867028170393 0.5391146389645589 2.121481487898001 9.695434310242923 0.6825894254651379 1.933965999088055 4.998464317146343 0.5995635062048496 6.122609317250914 4.981400825082853 0.8495635062048497 6.052273391599638 4.878174603174784 0.75 5.98077151889132 4.784914848955532 0.592960023515579 6.12028781235964 4.767851356892042 0.842960023515579 6.049951886708363 4.8881410708636 0.6925235297204286 6.191789685067956 4.310494987457494 0.1483447419024839 0.4906449650981672 4.449400387102282 0.1483447419024839 0.493144081806404 4.380354740274214 0.3983447419024839 0.4692697862132837 4.823199688520608 0.6634102639526815 4.858094488934716 0.1512278839080977 0.2729709728946202 4.375042128531954 2.175113315662784 0.5806498461059564 8.400932854291316 2.187190610348777 0.8292184630320578 8.359095878263084 2.346679551699186 0.5905083262026698 8.248909437773106 2.358756846385179 0.8390769431287713 8.207072461744875 2.184836345622798 0.6682954061608293 8.250106625144618 2.465556980105216 0.388290769736115 4.111115767253589 2.503435767984008 0.14521183221273 4.089246438875195 2.316713581283691 0.3128297412179963 4.042221764826033 0.9161152171029094 0.7821539981073627 8.909767871084473 0.9855596615473516 0.6235006964877015 8.949861639778202 0.7286476883734094 0.6236095783392548 8.954601962986091 1.998135666591827 0.5784896213490551 2.951181742279344 1.998135666591816 0.4920698682626355 3.11155681705424 1.805555555555889 0.4135802469135803 3.023684247291768 1.87008670401468 0.3722829745150533 2.900986238710486 1.870086704014668 0.2858632214286336 3.061361313485382 2.062666815050607 0.4507725958641084 2.988858808472958 7.077193244508578 0.3359589144388475 1.784526175485789 6.938304355619684 0.1733420152143134 1.870720554587236 6.821948895029327 0.3158317271484705 1.818294402513924 3.724462906124031 0.1738711285370236 7.590368890873354 3.655018461679582 0.4238711285370236 7.630462659567069 3.789368858155354 0.328706001113026 7.734136190440029 8.803870138934403 0.692306610077262 5.713924566101671 8.94944444444457 0.8525720164609054 5.624647209991423 8.743314583378847 0.8397345936163566 5.759150337188194 8.704825164855448 0.7030278154789049 5.950999569930104 8.850399470365616 0.8632932218625484 5.861722213819856 8.910955025921169 0.7158652383234538 5.816496442733333 0.1176217826423863 0.1274886664494017 5.144030200942318 0.3067024548654939 0.1848054206581899 4.98584646872625 0.1890806722231075 0.3122940871075916 4.990987780779687 0.171328233990225 0.2832785866833868 5.245733987997486 0.3604089062133325 0.3405953408921749 5.087550255781418 0.2889500166326113 0.1557899202339851 5.24059267594405 7.638888386560092 0.4086534526690217 4.467060210285974 1.460007856027051 0.1542817283590485 2.79829928367345 1.444537473494379 0.3134713552603137 2.958786427655071 1.342834643772719 0.3170185300116594 2.726705965616406 9.558805643959923 0.8323742093032842 8.974725090170235 7.463278752789188 0.8424796044259748 8.738200423763013 7.393834308344758 0.8424796044259748 8.617919117681836 7.648228724752835 0.8496388163035555 8.650750551217579 7.542063033097532 0.6921184207295303 8.712045341873466 3.129348332837095 0.1529922633432886 0.8203494477418082 3.129382809307101 0.4029922633432885 0.9003162113580017 3.258164841152097 0.3010981235477125 0.9306202539329917 3.611111111111095 0.7499999999999982 9.438687238287793 3.75000000000001 0.8422859408556082 9.39507762784713 3.745559922973415 0.8527350872634357 9.544125906908729 3.884448811862332 0.6950210281190439 9.420328759080608 3.745559922973416 0.6027350872634339 9.463938369521273 6.095734495386298 0.3224653285642231 2.293118717576764 6.286945108984969 0.3673873235276761 2.403514216809882 6.46098496579781 0.1445638868690809 7.09442714541529 6.445231743500379 0.3160742655200334 7.207023419121457 6.391540521353368 0.3945638868690809 7.054333376721562 4.445646383634913 0.1878448249046303 6.906159920878878 4.457287936553871 0.3404133477268205 7.000748608796657 4.594974886252428 0.1525685228221902 6.967274729807158 4.585831170338523 0.1219123115275788 6.714659876335846 4.59747272325748 0.274480834349769 6.809248564253624 4.448144220639966 0.3097571364322091 6.748133755325345 4.023544528744739 0.6794896289481472 9.472821097765816 6.597222222222337 0.8393207319954464 6.369555763174732 6.451637393449023 0.8709264557095009 6.345117021760887 5.746331347984578 0.3541569786596493 3.77180346402907 1.241216204559389 0.4191837858491437 5.787898161695999 1.241216204559392 0.1691837858491437 5.70771062430855 1.28862261577786 0.3850871627342926 5.924873739253218 1.288622615777863 0.1350871627342926 5.84468620186577 1.140949931448171 0.3042709485834363 5.882523845096794 1.280721734359191 0.343186046900235 5.331637721998746 4.793880715854032 0.853263890752325 8.858287972900785 4.745269057698678 0.8456049661658213 9.100061063266701 4.594677052212889 0.8663724760782985 8.96003761476503 9.050589406524404 0.8420361101138469 4.77041136490924 9.093961395042337 0.75 4.908257777925308 8.957262960365018 0.8623742151233711 4.984415402160176 9.024736616605272 0.6123742151233711 4.943918996261913 8.98136462808734 0.704410325237218 4.806072583245845 7.253393466306476 0.1468963882948222 6.340279510148115 7.246556821429115 0.3094493925692942 6.167516261390608 7.32283791075092 0.3968963882948222 6.300185741454394 2.62764321568403 0.8694810271100778 3.570062177137233 9.903906485589896 0.1263935190958826 0.6953597981327293 9.811427428493886 0.3139651700915017 0.536815645064564 9.715333914083782 0.1875716509956191 0.5359002913762794 9.753373946526722 0.1675587804883031 0.7640985671049748 9.660894889430711 0.3551304314839222 0.6055544140368097 9.849467460936825 0.2939522995841857 0.7650139207932596 2.138699946199559 0.8459764905465784 0.3980406989306786 2.067311514052601 0.8459764905465784 0.5014400431938684 2.142773659269279 0.5959764905465784 0.4716769382343203 8.867925745310576 0.6206501079995652 1.57126952776055 8.86787107929478 0.8706501079995652 1.491108494934098 8.987980395190144 0.7424063763220228 1.417695523567775 1.418710782399621 0.4080576740412472 7.096030975805482 1.527777777777928 0.4086533016196642 6.872686041889231 1.310724417718617 0.3886110194540011 6.923200959249446 4.646883468834725 0.4593384829333141 8.700092392009934 4.554290876242125 0.5407633242999208 8.833877627026901 4.718541962466502 0.65328647431149 8.65441604857714 7.43712938120206 0.6736009886637799 5.063916808169123 8.977245524260031 0.8469929802938176 8.269448712553144 9.125781438188781 0.8442589897752644 8.319293400436772 4.558773682071053 0.1349764998195604 2.849129651249322 4.519091142388505 0.3224397567272617 2.986594001056374 4.424496508138205 0.2591224785314058 2.771604688733159 2.152777777777953 0.25 6.110904436708518 2.217086823146334 0.1549217949782679 5.983604421366616 2.147642378701891 0.4049217949782679 5.94351065267289 2.273228978745291 0.4026104398265359 6.050865321794223 2.337538024113672 0.3075322348048039 5.923565306452321 2.342673423189733 0.1526104398265359 6.090959090487949 5.941592520617188 0.3672732139641357 7.367713986913721 1.880731775787252 0.8335407335915246 4.102906759728773 1.950176220231699 0.5835407335915246 4.062812991035053 1.875000000000284 0.75 3.945840927247426 1.956528526054193 0.8598285483239969 3.879377496634756 2.02597297049864 0.6098285483239969 3.839283727941036 2.031704746285608 0.6933692819155215 3.996349560422384 9.907311489483501 0.1292899076599623 5.420635191890502 9.871869455591288 0.1292899076599623 5.29086096511015 9.779180945074788 0 5.28689243988631 9.726361387681587 0.1853036385323898 5.47498763445276 9.819049898198086 0.3145935461923521 5.478956159676601 2.122791749857766 0.569659700516004 5.903203320616711 2.122791749857771 0.819659700516004 5.823015783229263 2.277585721727962 0.6552911465759664 5.888200265665999 4.645270374585008 0.8597006787617796 5.725902222982632 4.720148939427263 0.6981330690325747 5.762858600801876 4.549648423745763 0.7120633466435146 5.566678343898808 6.597222222222282 0.2043266508098507 7.955217796620067 6.666666666666723 0.3629799524295151 7.915124027926343 6.5972222222223 0.1586533016196644 7.794842721845159 6.37936812665915 0.1285262082332657 7.909627213290045 6.448812571103591 0.2871795098529301 7.86953344459632 6.448812571103572 0.3328528590431163 8.029908519371229 5.725269824324311 0.355286954451428 4.167109214658151 2.283104525115503 0.6936622964665651 3.207825545024888 6.859591219771072 0.1769647993731156 7.03894603783169 6.767676767676841 0.2430789375233686 6.894555370267925 6.66931829913112 0.1445638868690809 6.974145839334143 6.631439511252345 0.3876428243924495 6.996015167712521 6.723353963346575 0.3215286862421965 7.140405835276285 0.9630426417247189 0.75 2.479801408160053 0.9019026736557277 0.75 2.363585741011649 1.098939295633666 0.6034427291193223 2.38490768490216 6.207606442316731 0.2905014452320092 8.377505882370674 6.138161997872285 0.1318481436123457 8.417599651064393 5.950311435879936 0.2855339974903545 8.40372401093985 8.699577981943257 0.8420913146345339 0.8912665412327708 8.69956292782501 0.6463597316828223 1.011518871622126 8.769068600007905 0.8719386141082044 1.010434347471012 8.769053545889658 0.6762070311564928 1.130686677860367 8.579746902407209 0.7140299287427383 1.042913740812266 7.634073759244743 0.5897674603699758 0.6473727155504194 7.706214157144594 0.8397674603699758 0.675120955856088 7.642368712598753 0.6563420568885735 0.8047827320814924 3.958333333333382 0 8.195780408782248 4.027777777777827 0.1547891870604084 8.162029618349123 3.895528804309233 0.1576071073199354 8.377626845988459 9.263807903391349 0.151616500216138 4.5510108056826 8.592374447544037 0.6979937574768822 0.7974191218905449 0.4661755417849934 0.3391299211708568 4.965109793283151 0.3947166522042722 0.154324500512667 5.118152213445784 0.4484231035521109 0.3101144207466521 5.219856000500951 6.279810598276601 0.6820345770296629 6.79261183175927 8.958333333333465 0.1497548260231673 5.694258374735908 8.888888888889021 0.3997548260231673 5.654164606042187 9.005155568677228 0.3198501128725203 5.554576137478858 8.977011254405312 0.4145189385784152 0.8290806204538091 8.977016649732576 0.1645189385784152 0.9092959023166648 9.112839499998747 0.3217823700325201 0.7829879163150719 7.144804669259337 0.8345456448281394 2.923843989555803 7.159779326006363 0.6847311338185089 2.845068226411789 7.237196878969614 0.8501854889903695 2.704345871985724 7.291063582631693 0.8581033923475117 2.957936902855957 7.213646029668441 0.6926490371756511 3.098659257282022 8.987635216565376 0.4305215615715943 8.64349884665579 8.918190772120925 0.1805215615715942 8.683433332114934 9.066817693820877 0.1566609575056951 8.606593346938679 9.09611957705296 0.3371825190772894 8.733402352027532 7.73325420147815 0.4054283360203077 3.799852489933956 7.701688432134683 0.1623497096545151 3.701441879589467 7.562799543245786 0.2856304663741096 3.783921602947601 7.788316922680405 0.1540183726452562 4.074093884305082 7.649428054721847 0.1540183726452562 4.074093872220932 7.75043826850977 0.3970969990110488 4.052223176484255 0.7638888888889265 0 8.67690563310677 0.8333333333333697 0 8.797186939187949 0.7033333333333796 0.147427983539096 8.872242474182599 6.666666666667103 0 1.099183349993238 7.504787003440637 0.8457339069164008 9.355735923175363 7.435342558996198 0.5957339069164008 9.315642154481637 7.430555555555554 0.75 9.478781006981597 7.321682766699041 0.8568980903711405 9.450542965123734 7.252238322254603 0.6068980903711405 9.410449196430006 7.326469770139685 0.7026319972875413 9.287404112623772 1.686868540709896 0.3429187291714794 6.940735915982147 1.617424096265454 0.1842654275518152 6.98082968467587 1.612754434358243 0.8382092346678326 5.62216707569606 1.774800272160373 0.8516404097531065 5.763490038910268 8.837296314432976 0.3363114347226296 8.688171067847275 3.077001908604117 0.8353929770903921 7.279772495150919 2.998045955201761 0.8772101563130627 7.400795620356144 2.880603419361319 0.7126031334034546 7.326756849293042 3.147492614572918 0.7100348691555789 7.332241846729227 3.068536661170561 0.7518520483782495 7.45326497193445 3.26493515041336 0.8746418920651868 7.406280617792328 6.597222222222705 0.1542531538447432 0.6074521649050765 6.527777777778256 0.4042531538447432 0.6475459335987936 6.459635605148813 0.2992990936509907 0.75013675750631 9.605921101838138 0.1686764445424281 2.863448360589649 9.555467571052308 0.4186764445424281 2.807470448835606 9.503353112233823 0.2499999999999999 2.984355347288993 9.587318633206012 0.1560695111654427 3.098160297866341 9.53686510242018 0.4060695111654426 3.042182386112299 9.639433092024497 0.3247459557078708 2.921275399412956 2.250813868961774 0.1578412604582609 8.620304469471479 2.291666666666706 0 8.436343020944506 2.12559033317822 0.1459167738478483 8.531506048656567 7.111840622652958 0.8128350069700004 4.511673180312316 6.964689990197664 0.6651747473855376 4.436255562796894 6.936182700878271 0.8523397404155373 4.391642302750703 7.18430684194176 0.8429842348261738 4.352728470449495 7.037156209486467 0.6953239752417111 4.277310852934072 7.212814131261153 0.6558192417961742 4.397341730495686 4.425688069462934 0.5866739190268973 4.233311671382648 4.272910291685164 0.567126593924017 4.032842827914013 4.218516884493086 0.689827592394832 4.127120696866521 1.906248808765072 0.526944328048329 5.303394433644401 2.074899602415871 0.6808277695209655 5.206023852531077 2.053571428571653 0.5288099552880382 5.1257432630913 1.810515873016095 0.5303130511463839 5.14579014743815 1.979166666666893 0.6841964926190203 5.048419566324827 1.831844046860313 0.6823308653793112 5.226070736877928 1.797121824638076 0.8394810711406282 5.526774002080858 9.843778614487819 0.7245705696460991 1.728533766089662 10 0.6350147914370243 1.874280768803591 9.851655695755104 0.7123349115450397 2.009792029997324 2.430555555555785 0 5.068466450671712 2.621529317764876 0.1603655115202016 5.118582772427045 2.485377642393854 0.222945806574854 5.180305534652663 8.749452021669352 0.6886333719286342 7.523669960368157 5.114550715387185 0.5912445331912914 1.273659393373659 7.463278752789165 0.6403191105988203 8.577825348988128 7.56944444444447 0.7978395061728454 8.516530558332242 7.717673169197244 0.6474783224764009 8.610656782523872 1.027127909471029 0.8317545934120749 7.218099115012762 0.9623597280103988 0.5817545934120749 7.175757967988357 0.8668664744445064 0.8472404295114802 7.18450896154972 0.8020982929838759 0.5972404295114802 7.142167814525315 0.919006493909885 0.6789950229235551 7.050391971611438 2.152777777777995 0 5.309029062834039 1.984126984127199 0.1874632569077009 5.326212106559916 2.077567679649456 0.1479432720090957 5.482196512529931 2.916666666666981 0.1221824276708555 3.602565651345036 2.91666666666699 0.2857626745844357 3.442190576570138 2.802330624853837 0.2812158510518897 3.668577595863923 0.7726248273766905 0.1550634505055732 5.385746652298481 2.236727617214188 0.8379642593755801 8.626657470887062 2.375616506103079 0.8379642593755801 8.62665747088707 2.306172061658642 0.8379642593755801 8.5063761648059 2.214325970487684 0.479254286383282 3.084794243377915 2.021745859451746 0.3143449119478072 3.157296748390338 2.086277007910537 0.2730476395492802 3.034598739809056 5.138888888889229 0.8413466983803375 3.103871784679387 4.979809822192493 0.6698363197293926 3.053531306152302 4.979809822192497 0.8284896213490551 2.973343768764854 5.10800647027208 0.8635620671788284 2.845479199815196 4.948927403575345 0.6920516885278836 2.795138721288112 5.108006470272076 0.7049087655591659 2.925666737202644 1.805555555555699 0.5864197530864219 6.872686041889248 1.874969828411377 0.6244202423850347 6.748737466360689 8.888129768610705 0.4279170276165863 0.5327621038247012 8.818685324166264 0.1779170276165863 0.4926128745761836 8.746263856250593 0.3280468293652538 0.4687854468222836 2.718990447512148 0.6087706148399054 7.043565563381678 2.788434891956594 0.8587706148399054 7.003471794687957 2.809881245005035 0.6941635919302973 7.169995635787208 7.387023785477558 0.4310478729151165 6.441231185996204 7.317579341033114 0.1810478729151165 6.481324954689926 7.582049132591188 0.4096077095474902 6.434592917565981 7.512604688146745 0.1596077095474902 6.474686686259703 7.469072918068649 0.3406555824626067 6.564450823384727 1.666666666666818 0.4950730547060861 6.792498504501793 1.666666666666823 0.4086533016196642 6.632123429726902 1.857569934098803 0.3250169464366851 6.728018963533421 2.739898989899253 0.2430789375233826 4.488929248644268 2.777777777778042 0 4.467059920265875 2.720233073675726 0.1676257067424612 4.339908295894888 2.859121962564616 0.1676257067424612 4.339908295894894 2.821243174685827 0.4107046442658437 4.361777624273287 1.964634622252327 0.4856398271104121 9.208371335958754 1.944787814836832 0.2808376177900988 9.069064096478684 5.833333333333462 0 6.872686041889475 5.76388888888901 0 6.99296734797064 5.684501367973036 0.1561519649247498 6.815657595773702 8.87111111111143 0.75 3.815295616381081 8.681249863534029 0.8376810329640543 3.868278029095019 8.732916530200701 0.5876810329640543 3.817920255615708 8.750694307978478 0.8376810329640543 3.747996723013853 1.250000000000027 0.5667622925991631 9.09581106720861 4.34880087603756 0.2841990748382814 8.888145739284909 7.569520770412507 0.5988833418447428 9.766548569376667 7.638888888888866 0.5193727757026299 9.588033247739903 7.569520770412502 0.4348374416121025 9.821484678363237 7.36705262405644 0.6033432356236039 9.844473876424061 7.4364207425328 0.5238326694814909 9.665958554787299 7.436420742532803 0.6878785697141313 9.611022445800728 8.860806262762912 0.4245583989545821 6.444185686662576 9.053614844509145 0.4364982868616544 6.283423251248355 6.18055555555584 0.1577730121329647 3.749255519983349 6.1111111111114 0.4077730121329647 3.709161751289615 6.160914335272507 0.2975522256296252 3.870439304355501 10 0.256778574109364 5.286887615055049 4.627894788538191 0.347308896859443 6.125270637244452 4.487698412698574 0.1956202233979974 6.045837977799956 4.486620584070544 0.3057809425446236 6.19559368680297 3.678211142377271 0.3638879944567889 9.634847127478007 3.749999999999972 0.1929529241866843 9.570355951885906 3.888888888888871 0.3336861588919258 9.472200758493543 2.01388888888932 0.1635802469135801 1.620402343011428 2.083333333333766 0.4135802469135801 1.580308574317708 1.920496108676249 0.3104978707053037 1.513879469915995 0.8696431052177389 0.75 6.076294724497705 0.9726332578594408 0.8767239235359244 6.24189795601843 5.673106350605119 0.6769144846172903 3.308972394529833 6.00358129003787 0.842226987867035 3.442727100473952 6.00358129003786 0.592226987867035 3.522914637861401 5.874713375124664 0.6769144846172886 3.425370264406731 6.549115871617815 0.6769144846172934 2.25727087572945 4.859533327625991 0.315229239207757 3.795824616122821 8.344023459212938 0.1681349810389688 5.562538431515506 8.35455024941103 0.3289232824565274 5.491260112995612 8.482749012420491 0.1607883014175585 5.358032050395716 8.295403564183374 0.1650199798289647 5.39723399223341 8.305930354381466 0.3258082812465233 5.325955673713517 8.167204801173913 0.3331549608679335 5.530462054833308 5.205460856407976 0.3103364115603825 8.036480121736142 5.14368240645517 0.1513045006354473 7.983365390470921 5.061778449952859 0.1590319109249352 8.128613833966332 5.001249811591994 0.3027426940402831 7.956408538926757 4.939471361639187 0.1437107831153479 7.903293807661536 5.083153768094304 0.2950152837507952 7.811160095431346 1.504507112864308 0.1520973864100602 2.466665238218346 1.506098517919328 0.3063791147691086 2.602076204852712 1.529369182833171 0.1542817283590485 2.677969989601418 1.717474625727694 0.1430631800977459 2.598117682444437 1.719066030782713 0.2973449084567944 2.733528649078803 1.694203960813851 0.2951605665078061 2.522223897695731 5.950517540409018 0.6533027369555308 1.888978105327101 6.01996198485346 0.8168829838691105 1.929071874020826 6.058047361482568 0.6591099717361472 2.11143555124473 4.568047350240869 0.123618508585231 0.780408223082774 4.427450981944938 0.2823968590055593 0.8851083739182195 4.499001703412801 0.373618508585231 0.7565339274896536 5.52001282764593 0.8426978487410108 9.097416485211564 5.406579378571859 0.6647193250784584 8.979532986967119 5.442122106481522 0.8220214763374476 8.91986605310605 5.683665218981522 0.8769948285953204 8.963781274026122 5.570231769907451 0.699016304932768 8.84589777578168 5.648122491071859 0.7196926773363312 9.023448207887192 4.063550923231602 0.8306075121271828 7.961619865146274 4.132995367676047 0.5806075121271828 7.921526096452553 3.954423939104626 0.6431442552194859 7.944436821420399 4.330839508561283 0.8595635822709085 3.796544062345088 4.312083133579486 0.6962375012978057 3.96373350039901 4.400283953005726 0.6095635822709085 3.836637831038817 7.131240040777021 0.3207617057137764 1.437300438555125 6.817290550802914 0.1624177907551599 6.089463625239386 6.666666666666799 0.2493141289437545 6.097539847144208 6.596931702789957 0.4007998235189728 5.94695962369436 6.59693170278995 0.1514856945752183 6.000417981952657 6.747555586926071 0.3139034853303782 5.938883401789537 4.383171267015648 0.6867818624323953 7.453191130141949 5.571289266780084 0.4092600403166616 1.820557741618647 5.833333333333746 0.408653301619663 1.820871186480237 5.626308899510406 0.3691599462614138 1.945106676978289 2.197839792983635 0.428497464369122 6.195367649215481 2.267284237428078 0.178497464369122 6.235461417909208 2.387735438395416 0.3311079041956579 6.175422302994914 2.928601510757308 0.8772101563130627 7.52107692643731 3.195490705968908 0.8746418920651868 7.526561923873494 2.359568053119893 0.1227223165890342 9.879718693918781 2.429012497564359 0.3153366994394685 9.809863096617617 2.430555555555586 0.1926143828504343 9.689581790536398 2.202684875010847 0.1651922736545215 9.690529743121864 2.272129319455313 0.3578066565049559 9.620674145820701 2.201141817019619 0.2879145902435558 9.810811049203084 6.449715089666456 0.1721342502191464 4.112928514869425 6.519159534110901 0.4221342502191463 4.153022283563149 6.646414368059235 0.4038743109958699 4.251939524865389 6.637796124392144 0.3260085612150163 4.098276962937337 5.503472222222337 0.4457304526748999 7.043084558837785 5.637037525356865 0.3962618218843247 7.146392554240419 5.484388769809531 0.6661169981713226 8.735088308880986 5.597822218883601 0.844095521833875 8.85297180712543 5.72593188230953 0.7210903504291954 8.779003529801059 1.597222222222337 0.75 7.393905034907648 1.649543946932131 0.5799014188317669 7.283509535674546 1.556018912445531 0.5854917477077218 7.525900886840939 0.8466707726584664 0.5321539981073627 8.869674102390741 6.250000000000404 0.121780315006399 1.921134692643522 6.385405721582542 0.2878076821082959 1.89470331239347 6.128233830846172 0.291878896174633 1.93102049949158 8.955141633801063 0.1570487328970166 4.09654613014388 8.817927281401811 0.1570487328970166 4.095271100140569 8.869593948068484 0.4070487328970166 4.044913326661257 6.25000000000022 0.6766506663973557 4.391776840550776 6.388888888889104 0.8641139233050548 4.357410753099014 6.388673766831133 0.7399121236306266 4.202385365324984 4.375000000000271 0 4.346778614184791 4.444444444444709 0 4.467059920265966 4.340259393850424 0.1518106712188041 4.548947389222079 8.47222222222257 0.5478395061728407 3.264246859454519 8.682019054394285 0.1617307650720728 3.867544218340018 8.751463498838735 0.1617307650720728 3.747262912258852 8.733685721060958 0.4117307650720728 3.817186444860706 6.620835291205 0.8086805487648137 6.516820048007315 2.95769692728733 0.3177420948582032 2.187080158084311 2.95769692728733 0.4955085463249604 2.187080158084311 2.777777777778174 0.5049269452939176 2.141621336029884 2.906396695233945 0.5103415969581675 2.276356438249939 2.906396695233945 0.6881080484249248 2.276356438249939 3.086315844743101 0.5009231979892104 2.321815260304366 7.200837593232919 0.1581448064892423 1.163101777068478 0.6539676401334772 0.75 5.477076919214621 2.797473738119261 0.6913364504274213 7.908038201751486 2.829242336593393 0.8190366030963838 5.773582520755675 2.748425242586381 0.6504466062686651 5.78581997785648 2.880319116603951 0.6588577755224134 5.583718253292349 1.944444444444764 0.4135802469135803 3.264246859454119 2.160634748340633 0.4007646650342269 3.237484285777793 6.569614430196362 0.5756833107237613 4.465956444583208 6.388888888889106 0.562536743092301 4.421238470330412 6.527562655720018 0.6257982003255718 4.231846995104618 9.016226051644011 0.6440115331165577 5.737135066404207 8.810096190578289 0.6311741102720088 5.871638193600978 8.917181077565056 0.6547327385182006 5.97421007023264 2.572041124583222 0.8245214041666045 8.194281214805102 2.64148556902767 0.5745214041666045 8.154187446111381 2.758973440253693 0.6718275500253343 8.203561806010542 7.460366738059009 0.5814097249690939 3.949919935056063 7.460366738059003 0.8314097249690939 4.030107472443511 7.317603049918589 0.6646672773172599 3.993161120793298 4.053819444444494 0.3505196397353046 8.177064781609271 4.053819444444488 0.1957304526748962 8.331096878123574 3.9215704709759 0.3533375599948316 8.392662009248607 6.316442107742715 0.2891436301525755 6.962988971589045 0.7762897184101603 0.1638322703359513 2.279510319314007 0.8222656360213729 0.4138322703359514 2.329513236313143 0.7001874102707337 0.3427550157213323 2.450771492048908 2.878787878788143 0.7430789375233826 4.488929248644274 2.746264760492671 0.594572256250858 4.58704358220989 2.784143548371461 0.8514933187274754 4.565174253831495 2.871255403503171 0.8447091153502344 4.332903050502826 2.738732285207699 0.6962024340777098 4.431017384068442 2.833376615624381 0.587788052873617 4.35477237888122 5.347222222222545 0 3.384528165535468 5.372677456059336 0.1639284968873369 3.570192993839395 5.504832917679602 0.1402737144452557 3.401905365126338 5.496128376955486 0.6839645853770372 3.527548545133953 1.121609657201422 0.1468375818821545 6.317398654914685 1.188698809881939 0.3419137868448447 6.226167804103369 1.052165212756977 0.3968375818821546 6.357492423608403 1.80516633319208 0.4135277331453381 1.100148478765312 1.735720978193565 0.1635277331453381 1.139625658428678 1.781323645438867 0.3104453569370617 1.273480579480089 6.160914335272473 0.2972555177168793 4.105085131556809 2.500000000000364 0.1586533016196625 2.702934097742004 2.331349206349566 0.3461165585273649 2.720117141467878 2.331349206349561 0.1874632569077024 2.800304678855326 2.508664354930301 0.1260677698118368 2.935147560584471 2.340013561279503 0.3135310267195392 2.952330604310345 2.508664354930306 0.2847210714314993 2.854960023197022 4.885875448946713 0.3176475600452463 1.434231196658408 4.885875448946718 0.1589942584255836 1.273856121883513 4.861111111111534 0.1229568651879164 1.487381309045944 4.746986560057826 0.2819511236135 1.421491468773934 4.861111111111529 0.2816101668075791 1.64775638382084 7.569444444444431 0.8417093379676351 9.525985957214328 7.574231447885075 0.687443244884036 9.362847104714367 7.499999999999993 0.5917093379676351 9.485892188520602 6.497607475311801 0.1783055226617843 6.115663021383717 6.497607475311794 0.3388928496143606 6.21451256073875 6.666666666666787 0.1605873269525764 6.249847744757539 6.596931702789943 0.3120730215277946 6.09926752130769 6.427872511434957 0.3297912172370026 5.965082797933867 3.628112766642232 0.8640674184325468 1.223332444651367 3.66848356297074 0.6983988095248216 1.360396029911703 3.65148190744006 0.8343313910922748 1.476828215153551 3.483894440270899 0.8771544538147658 1.41322394501738 3.524265236599406 0.7114858449070406 1.550287530277716 3.500896095801579 0.7412218722473125 1.296791759775532 1.686868540709877 0.4342654275518152 7.26148606553194 6.400368723670076 0.6890586024511651 7.212974507322718 2.50000000000029 0 3.985934695941177 2.313277813299973 0.1676179090052663 3.938910021892014 2.364546879095117 0.14521183221273 4.089246438875191 0.9563006311349402 0.8317545934120749 7.098615389562994 0.7960391961084173 0.8472404295114802 7.065025236099952 9.246975871953284 0.8284592733397484 7.680535225606629 9.283961464028327 0.8305552204211667 7.923536711388446 1.375305645395409 0.1609839728816268 5.597779825050766 1.375305645395406 0.4109839728816268 5.677967362438213 1.514786137495195 0.3175825313175127 5.711547338370518 3.194444444444767 0.2842459570377173 3.451647891236088 3.194444444444758 0.1206657101241372 3.612022966010985 3.308780486257891 0.2796991335051703 3.678034910529882 8.955670496088455 0.7914395166556523 5.78236083749073 9.546200102739547 0.68848112253734 1.812253964046439 9.506632820667015 0.545006336036761 1.999769452856386 9.554077184006832 0.6762454644362805 2.093512227954101 1.041666666666971 0 3.625090777697585 1.156187870485341 0.1990669164650886 3.65342742677722 0.9444853199684111 0.1699971056537813 3.73543252397933 7.262921700254454 0.4022337962615169 0.8871136536574862 7.231619816882603 0.1591500405822318 0.7901900426900341 7.091474937777178 0.3088784146874396 0.8263463702334418 3.866435782990952 0.5789910816670212 4.147795908833863 3.843637503543142 0.4877942941417653 4.002314153502592 3.75000000000028 0.6314676548820863 4.226497308103582 3.727201720552469 0.5402708673568304 4.08101555277231 3.727546894102072 0.7104587365491075 3.987420834058961 4.51933829882536 0.6663950596374635 8.756165690441385 7.744316665306139 0.1778415622740994 5.246704103632192 7.874353947167538 0.3374489667498277 5.157075805514843 7.907815059639374 0.1596074044757284 5.099119458635862 7.652359382735971 0.1452262463661977 5.116337412614367 7.782396664597371 0.304833650841926 5.026709114497018 7.618898270264136 0.323067808640297 5.174293759493349 0.7826926126596011 0.3973328015181625 7.381193976386639 0.5714316963597105 0.4379597218293517 7.361261389697553 0.6341906107844991 0.5406269203111892 7.247601224213148 0.7963731853596341 0.3991565387290671 7.154294022135629 0.5851122690597435 0.4397834590402563 7.134361435446543 0.7336142709348454 0.2964893402472297 7.267954187620034 6.458333333333409 0 7.955217796620051 6.52777777777783 0.2043266508098507 8.075499102701235 6.309923682214698 0.1285262082332657 8.029908519371212 0.2105848676807849 0.6664522717936112 0.9520475342696831 0.3138794723646027 0.7890367300037011 0.952283467287527 0.1032946046838178 0.8774155417899101 0.9682528851844383 0.1547443494399373 0.7057082264024344 1.167605679922534 0.258038954123755 0.8282926846125241 1.167841612940378 0.3653292171207222 0.6173294146162251 1.151636262025622 4.383025519795352 0.7124108481008291 3.675233039296877 6.38888888888893 0.4135802469135804 9.037749551350565 6.458333333333364 0.1635802469135791 9.077843320044309 6.547485826700571 0.3141623775185047 8.9675827032243 2.509222002247715 0.5877342751179574 7.856841028096543 4.444444444444623 0.1238765246349221 5.804921312470034 4.557142857143031 0.3194967480329196 5.820042390948819 4.447447506725491 0.2870594830647755 5.630044470671535 5.555555555555852 0.7849794238683118 3.745372083779004 6.250000000000389 0 2.301996410804938 6.319444444444839 0 2.18171510472377 6.388888888889278 0.215020576131687 2.301996410804945 3.58204425354015 0.5843313910922748 1.516919681974263 3.558675112742323 0.6140674184325468 1.263423911472078 3.41445678637099 0.6271544538147658 1.453315411838092 0.7486998334449785 0.1672536981100748 5.753034048759686 3.055555555555533 0.8389917695473225 9.133974596215356 2.956349206349196 0.6515285126396219 9.030876333860057 2.956349206349206 0.8125367430922994 8.93465128899512 3.182768656955116 0.8758526887930351 8.960220434525626 3.08356230774878 0.6883894318853345 8.857122172170326 3.182768656955107 0.7148444583403575 9.056445479390565 6.425021044510446 0.5649036657997324 5.723460126149235 6.494465488954889 0.8149036657997324 5.683366357455514 9.072849689002545 0.1580155421438991 1.868597406220457 9.216812612476343 0.3084464371361788 1.804801033405631 5.908508125953054 0.4167335152376536 6.278795514750694 6.866738256433829 0.8523397404155373 4.271360996669525 7.114862397497317 0.8429842348261738 4.232447164368317 9.352283493115202 0.75 1.631056454115773 9.193856841247957 0.8264506545672142 1.671500767121821 7.50273122553245 0.75 0.5006703679867206 5.343375231718319 0.3257193014230584 5.445258924640603 5.244168882511978 0.1382560445153594 5.307794574833544 5.230492472696437 0.2695537674132755 5.231660917255632 5.353330440516627 0.25 0.6020229552795977 5.214989567127963 0.25 0.6066572567936201 5.284901979281617 0 0.6264891899416968 5.281065870779807 0.1474596757584787 0.7103092426596075 5.142724997391143 0.1474596757584787 0.7149435441736298 5.211153458626153 0.3974596757584787 0.6904773095115309 5.069444444444493 0 8.436343020944626 5.000000000000049 0 8.316061714863453 5.131222894397302 0.1590319109249352 8.248895140047505 7.377115091720789 0.1647790771698518 0.8692330764892813 7.446539906094566 0.1647790771698518 0.9885302381895034 7.408416975092639 0.4078628328491369 0.9661566874567333 5.224067044557867 0.3179133419363244 1.700276435537464 0.6786265631020983 0.8458201489962057 7.399589643880487 0.8106383694422722 0.6948931609218609 7.483917853306268 0.7458331010720904 0.5958201489962057 7.361236400013149 0.5305227880096792 0.75 5.54557079865011 0.3860649605774032 0.8435972512695928 5.549238383935108 8.724659822798298 0.5898847221265026 3.980036844499274 8.672993156131625 0.8398847221265026 4.030394617978586 8.755110200913357 0.6559872219407836 4.149399615873049 5.625000000000115 0 6.992967347970625 5.637037525356872 0.1462618218843247 7.06620501685297 7.579983610277406 0.2772991293648506 4.0362922894979 1.210216611024518 0.684564759633377 7.565349843784485 1.278241134667748 0.8354917477077218 7.606088424228362 1.043086587467983 0.8490730119256552 7.553635297932348 1.020300147317584 0.7190989931108307 7.705558012541431 1.088324670960814 0.8700259811851755 7.746296592985308 1.255454694517349 0.7055177288928973 7.758011138837445 0.9750137858882046 0.4110045349925322 8.343795213378847 0.9055693414437566 0.1610045349925322 8.364185758600218 1.083561190315012 0.3164520896492818 8.429634752438041 4.629629629629651 0.2407407407407557 9.037749551350476 4.490740740740756 0.2407407407407557 9.037749551350473 4.583333333333354 0 9.037749551350437 4.573758430398986 0.1532674891684649 9.165656863748461 4.434869541510091 0.1532674891684649 9.165656863748458 4.481165837806389 0.3940082299092206 9.165656863748495 6.420105056584262 0.6658925105899181 2.480394148401625 6.559136845593491 0.8422269878670351 2.480476651824585 6.663849085184637 0.7137951200875393 2.54109821746959 1.454141519884107 0.1613448013991462 0.6677442991046615 1.524086762592555 0.4113448013991461 0.6431653033046194 1.664119654066859 0.3865741920238814 0.4251501513911274 1.527114339467488 0.2979189934230276 0.4941693698930351 1.594174411358411 0.1365741920238815 0.4497291471911695 2.988520643215611 0.7194342050476042 7.56667013657035 3.067476596617967 0.6776170258249337 7.445647011365125 3.25540983842721 0.7168659407997284 7.572155134006534 2.898299002232982 0.5898211724260297 5.439914944920544 2.967743446677424 0.8398211724260297 5.480008713614271 2.50024241541279 0.6635983472953758 8.205573267767797 7.166666666666965 0.534979423868313 3.713297068824122 7.023902978526545 0.6182369762164791 3.756538254561358 7.220505769489289 0.6422807405569639 3.616003525558475 7.494068038539737 0.5820257075602919 7.590949058830736 7.563512482984182 0.4827458721693484 7.470667752749558 7.569444444444445 0.4007201646090563 7.634467647070368 7.361111111111114 0.3725982235844027 7.594373878376647 7.430555555555559 0.2733183881934591 7.474092572295469 7.355179149650852 0.4546239311446948 7.430573984055838 8.225954947007093 0.1650199798289647 5.276955095280105 8.41330039524421 0.1607883014175585 5.23775315344241 8.332521433113197 0.1230741771090416 5.041781273020488 8.41249684048757 0.2838624785266002 5.0907818514539 8.225151392250453 0.2880941569380063 5.129983793291595 2.22222222222261 0.5864197530864197 2.301996410804751 2.222222222222616 0.8364197530864197 2.221808873417302 2.360882976691363 0.6881650400934256 2.197414770982138 2.062093353712306 0.3118349599065749 1.752683130106867 3.888888888888929 0.8422859408556082 9.154515015684792 3.710813492063526 0.8188198118753538 9.030360842548406 3.895277892417557 0.8427503372448184 8.929154476430252 3.895277892417555 0.6850362781004266 9.045919940764467 7.681960971255011 0.297284597266237 6.407747599135167 5.164344122725995 0.1639284968873369 3.690474299920556 5.202222910604788 0.4208495593639506 3.712343628298957 5.037878787879094 0.2569210624766137 3.767241412157365 5.128356558339564 0.1495331999842562 3.847502742266979 5.166235346218357 0.40645426246087 3.86937207064538 5.292700681065257 0.3134616968715931 3.79260495840857 5.036879861908698 0.146842655835536 3.611255878485606 5.074758649787491 0.4037637183121497 3.633125206864007 9.579524624737523 0.321781116347902 4.234758252140406 9.551302195365178 0.417911161622784 3.986572656626824 9.509339663248149 0.5266139061044426 4.132426297038611 1.096829244316915 0.1617229827723274 3.815993147927777 1.141906003690849 0.3607898992374159 3.724048490926233 2.430555555555927 0.1586533016196625 2.582652791660829 2.261904761905124 0.1874632569077024 2.680023372774151 2.113874232249731 0.3171676344881386 2.613335644668856 2.213080581456093 0.1297043775804362 2.475871294861807 2.282525025900535 0.2883576792000987 2.515965063555534 1.80555555555559 0.5913466983803366 8.797186939187998 1.825745733363444 0.669836319729423 9.007902492490082 1.666666666666702 0.5049269452939154 8.877374476575444 1.805555555555889 0.5913466983803375 3.023684247291768 1.805555555555878 0.5049269452939178 3.184059322066664 6.494276733438662 0.4215103786509539 8.519092235790501 6.35538784454978 0.5079301317373747 8.438904698403045 6.527777777777837 0.5864197530864208 8.316061714863567 6.527777777777836 0.4086533016196635 8.316061714863567 6.355387844549779 0.3301636802706173 8.438904698403045 7.184829059829083 0.7642054447610065 7.511102204935819 7.254273504273535 0.7642054447610065 7.39082089885464 7.355179149650846 0.832025707560292 7.510761521443289 7.424623594095299 0.832025707560292 7.390480215362111 7.317785987257712 0.5962311523212986 7.427489848002456 6.142470178926748 0.6915068232579823 3.522914637861406 6.180555555555857 0.3084931767420203 3.588880445208445 9.258411179129997 0.5929645812049947 2.029091367140487 9.216310377140825 0.8410685807542413 2.016616995777673 1.720346653536669 0.6068219863334681 2.817360906979876 1.529449150157772 0.632170185296222 2.687013019780956 1.713171695926938 0.5656259594289155 2.580940758524938 1.182381632405718 0.1516757104884006 3.154781983689708 1.23636224383662 0.3108653373896658 3.194991602956791 1.023398310673026 0.2972166822066565 3.059537954114492 3.539322253488377 0.295081048981956 9.428316026234993 6.472338139469835 0.6038742270660287 8.477949626893686 6.299948206241778 0.5253846057169825 8.600792610433164 6.333449250580953 0.6902939801524495 8.39776208950623 4.675093633712896 0.5797478872859991 9.392760883117045 6.16041353874167 0.4917018637534716 5.516609276421358 6.034235321229842 0.2872676589423456 5.464717158343754 6.17312421011872 0.3736874120287675 5.54490469573121 6.222426637749102 0.451809028868661 5.391640991074778 2.986111111111371 0 4.587341226347055 3.085628930412755 0.1723168683486633 4.746855466923515 2.899537711991181 0.1523733457084931 4.724020184117633 4.620283528227735 0.4025685228221902 6.923438876035358 4.47095502561022 0.4378448249046303 6.862324067107078 4.61113981231383 0.3719123115275788 6.670824022564045 6.111111111111136 0.3125860947184682 9.174867676480261 9.202302585833579 0.8387925562234754 3.202281083422379 9.201630458885308 0.5887925562234754 3.284954774138011 9.001733581348642 0.7100852450071404 3.231597440222125 6.964753447840152 0.8393254537235102 0.3744798033097442 6.828141277847557 0.8548617610070046 0.5575349106710095 9.189281657274165 0.8482748022671491 4.991230159272513 9.32454734749852 0.8482748022671491 4.990694900822787 4.779448961156313 0.1608755968512305 9.086275584428707 4.686856368563715 0.4016163375919862 9.086275584428741 4.63098516933305 0.3141430860196954 9.214182896826728 5.364487173877901 0.3203800185014994 9.263841388808267 4.457638888889266 0.8188198118753669 2.504928157207534 4.63200050512982 0.8520820241135079 2.51120161410527 8.888337660320175 0.8623742151233711 5.104477389634495 8.759271675103495 0.7051152325336085 5.173088413866475 9.00149348907869 0.6714580658972946 5.127066709647844 4.88587544894672 0.4093119693633923 1.273905439466048 3.749999999999996 0 9.037749551350476 3.819444444444453 0 8.917468245269294 3.888888888888918 0.2138643527532724 9.039551925223224 4.239114173392151 0.4131829584298533 5.695464982747772 4.34880952380969 0.4456202233979973 5.885462903025056 4.207535319342044 0.404092269083178 5.955785952583573 8.333333333333503 0 5.429310368915606 8.205134570324041 0.1681349810389688 5.562538431515502 8.156514675294478 0.1650199798289647 5.397233992233407 8.95755383776979 0.3078369668598501 1.291088332604371 6.380270645222016 0.3296105544393651 4.110895166112681 4.574219319002216 0.602362667881735 5.460703721563965 4.744719834683718 0.5884323902707951 5.656883978467034 4.592889422204057 0.6097006787617796 5.675956842552736 5.353291711354437 0 0.5195495497261058 5.214950837965773 0 0.5241838512401281 5.283379299200783 0.25 0.4997176165780292 7.222222222222225 0.1507201646090544 9.599062313062763 7.255459538104552 0.3004520882216337 9.419497665016074 7.25545953810456 0.1497319236125793 9.339310127628625 7.09967908737624 0.1408315923868395 9.527878193589984 7.132916403258567 0.2905635159994189 9.348313545543295 7.099679087376231 0.291551756995894 9.608065730977433 2.649683392700632 0.331475788224496 5.55510204827166 2.575810215038118 0.8514933187274754 4.685455559912657 7.336236667060446 0.6868943828014458 1.252955811488548 7.496462954684395 0.854330958499621 1.261842344799416 7.339773712376485 0.8325634243018246 1.330859428844794 7.348332973309244 0.7043933276600595 1.49617619522328 7.508559260933193 0.8718299033582348 1.505062728534148 7.505022215617155 0.7261608618578559 1.427159111177903 8.958278667318018 0 1.460106770919953 4.810037645681058 0.4016886734614455 6.180485484416968 5.03199529334352 0.4472362154391319 6.188029747770702 4.83066376189473 0.3738765246349262 6.033528659276299 4.688041666430513 0.3856988169905299 7.902107184941184 4.67415277754162 0.1706782408588453 7.974275968589888 4.597222222222284 0.2150205761316846 7.762767706890052 4.74502691719475 0.3587313592470325 7.710843717931655 4.731138028305856 0.1437107831153479 7.783012501580359 4.821957472514086 0.3143890239741932 7.92235197963149 8.969331397181293 0.8161024998142811 4.106214723839333 9.085634070727037 0.8387782497676457 3.965772134567489 0.8361248969993051 0.4110045349925322 8.56465460206884 0.8361248969993051 0.1610045349925322 8.48446706468139 0.6911743231934282 0.1520499663359298 8.534674785171962 0.6939658868593652 0.313054501328462 8.462517522827767 0.6911743231934282 0.4020499663359298 8.614862322559411 4.824302898725632 0.4043320670493852 9.56459894305376 2.708333333333375 0 8.436343020944534 2.623543085904495 0.1712387657756324 8.44445145588957 2.692987530348931 0.1712387657756324 8.564732761970742 2.827982961466787 0.1600174208477496 8.367263275933281 2.743192714037906 0.331256186623382 8.375371710878317 2.75853851702235 0.1600174208477496 8.246981969852108 8.118071016415087 0.6590703526160977 5.208103161710676 8.224281792670565 0.8582028193033254 5.080747439212535 8.178909759730855 0.6802267353381782 4.997365158834116 5.555555555555943 0.41358024691358 2.301996410804914 1.707700790629738 0.3016440623119175 8.050771514643717 5.322884048720519 0.8409268222534827 1.153328769709961 5.360974293816064 0.5976912497547276 1.131337356450552 1.597115590684895 0.841304238706622 1.139338682433762 1.527671146240453 0.591304238706622 1.099244913740034 1.665421951509538 0.6580458999893086 1.021792452660201 4.023337700751239 0.8527350872634357 9.544125906908754 4.019104451718144 0.6899387753559748 9.621869376827416 6.805555555555661 0.4105873269525763 6.410222819532445 6.736111111111221 0.1605873269525764 6.370129050838715 6.681697523289575 0.3156663940966918 6.504299622947705 4.984498742214988 0.6747265131507527 4.818192660177289 4.889598857955728 0.8527050368133033 4.81579485234055 4.756787551105731 0.6940938244285356 4.723306388847853 4.504310344827648 0.3742550021285629 7.816410404314758 4.490421455938755 0.1592344259968783 7.888579187963462 4.581240900146984 0.3299126668557236 8.027918666014592 4.677762287306196 0.1955478371718767 0.6858878615210398 4.608716640478128 0.4455478371718767 0.6620135659279194 4.662443282701449 0.3191663457571078 0.8432397255188799 9.217760235752856 0.8440849758384064 3.549043158980722 9.285870189582035 0.5940849758384064 3.511817959456639 9.148315791308407 0.6844710449812403 3.586803590965072 2.499247122218357 0.3622168060106466 2.462806159769778 2.429802677773915 0.2035635043909841 2.422712391076051 2.281772148118522 0.3332678819714202 2.356024662970756 3.115474688013957 0.8422240487345416 7.639967088509394 2.916666666667068 0.5913466983803375 2.061433798642444 3.096585816176224 0.404161847944623 2.106892620696871 3.045285584122838 0.5967613500445874 2.196168900862499 2.911361690440448 0.1232187971080104 8.480175807320375 2.826571443011567 0.2944575628836427 8.488284242265411 2.961566874129423 0.2832362179557599 8.290814756227952 8.388920106564196 0.3265187560496891 6.782252590952324 8.839216037867455 0.3463267154854261 0.9279061657174543 5.006585792368397 0.4013103149602683 6.009778831900864 4.515917013470006 0.1600668999520362 4.175450007614279 4.515917013470002 0.4100668999520362 4.255637545001727 4.661504188934607 0.2889058466795421 4.249600396830115 4.196428571428724 0.1874632569077005 6.374377773838801 4.265873015873173 0.4374632569077005 6.334284005145081 4.167852779659496 0.3415555259908785 6.219259289713758 1.250000000000025 0.5915514497656398 9.246314069753883 1.388888888888911 0.6583137423648027 9.144000510837284 1.254617190449411 0.7116665695119218 9.341890349150328 5.14368240645517 0.4013045006354474 7.903177853083472 5.061778449952859 0.4090319109249352 8.048426296578883 4.939471361639187 0.393710783115348 7.823106270274087 2.267284237428066 0.178497464369122 6.476024030071549 2.180409727082275 0.3448611091861429 6.49173202649061 2.13534771187658 0.1663636448170208 6.647831426145988 2.383180139284653 0.1421903730267784 6.573148368399668 2.296305628938863 0.3085540178437992 6.588856364818728 2.428242154490349 0.3206878373959004 6.41704896874429 6.411753610031373 0.1848810397154577 1.466670932106163 6.464134562412328 0.4348810397154577 1.416725551676268 6.314855969176346 0.3457959666181621 1.406956820615322 0.9859966404991711 0.8391423002104276 4.15218729176258 9.857518759873162 0.8771580278630005 1.80855409523486 9.70129737436098 0.8474125417830987 1.732728064325591 9.709174455628265 0.8351768836820392 2.013986328233253 2.375396101862872 0.8425798516349288 0.50401496832191 2.51359855720748 0.6524165152079587 0.5231428450864647 2.492929355018489 0.80983666357303 0.6736008349449722 2.455462652229291 0.6482092619395272 0.774371615566957 2.337929399073675 0.6809524500014261 0.6047857489438948 6.403177870051309 0.4853041808507553 5.496259742960321 6.276999652539481 0.2808699760396294 5.444367624882718 7.29648528844102 0.8503764202021704 7.27020491573271 7.227040843996567 0.8503764202021704 7.390486221813888 7.189647681603433 0.614581864963177 7.307214548373056 7.305231599386765 0.8328074724212786 0.6914691256075178 7.375435632558008 0.5828074724212786 0.6651994594552437 7.383730585912019 0.6493820689398763 0.8226094759863167 3.30052488495996 0.5915905324180382 4.962306407017379 3.352905837340908 0.8415905324180382 5.012251787447278 3.335898405752854 0.6890764132726972 5.092228864018116 1.111866473277046 0 3.024120355841348 1.044094969443999 0.1516757104884006 3.155129678990863 0.9528831515443538 0.1455409717182559 2.928876326266132 1.736111111111256 0.1586533016196642 6.832592273195521 1.805555555555699 0.4086533016196642 6.872686041889248 4.015322834069757 0.8277127458524869 8.507647120993315 4.049224550604542 0.6704105945934962 8.447032748773214 1.120421915486818 0.2415082322938293 0.3612954994769028 1.257585315941384 0.4273796328236897 0.3218140838732908 1.120779831060101 0.4915082322938292 0.4347840658524854 2.006317299616796 0.1604107988874005 0.6748001670363529 2.081779444833475 0.4104107988874005 0.6450370620768048 2.170195082810522 0.1513980192992155 0.4790166389383929 2.2456572280272 0.4013980192992155 0.4492535339788447 2.101247055069871 0.3118088181866159 0.5121621654771242 8.678056639343447 0.6636241346590496 6.382625160781892 5.881073095964562 0.8168829838691105 2.169634486183162 5.811628651520118 0.658229682249448 2.129540717489439 3.745461507586967 0.4048348725760024 8.018797558799129 3.814905952031411 0.1548348725760024 7.978703790105405 3.642243268590937 0.2897821613530126 8.073722263828405 5.694444444444857 0 1.820871186480236 5.625000000000415 0 1.700589880399062 5.501844822335641 0.1592600403166617 1.780463972924923 7.583710415650198 0.8393834913337261 2.734791404120362 7.51426597120575 0.5893834913337261 2.774885172814081 7.653154860094635 0.6608672890683001 2.861544641859969 7.306438043983034 0.5884902000842587 3.619870939717951 7.111993599538598 0.6234696239525718 3.507608387375511 7.360277146805359 0.6957915167729094 3.522577396452303 5.260085475207791 0.6539718723187518 2.031707656382971 5.323292904837489 0.4840471217432418 1.966020568662292 5.453945099003343 0.6887020353273997 1.912488803222973 3.454808010303046 0.8447207171170789 0.4892333022218235 3.524252454747491 0.5947207171170789 0.467596295102026 3.524252748490944 0.8447207171170789 0.3948591591863636 9.470980706475112 0.75 1.64694872149642 9.002795926352455 0.5210091490810349 4.552605428018925 8.99446258190525 0.6581386099281281 4.408006618862697 8.922567434010979 0.495075538781469 4.368543500886712 8.777042657755318 0.5524258128253811 4.529395859479261 8.768709313308111 0.6895552736724742 4.384797050323034 8.848937805649589 0.7154888839720401 4.568858977455246 5.603257652064454 0.8177122449590606 2.650287378614826 5.53381320762001 0.6590589433393987 2.610193609921098 5.780231917582461 0.6599392328260967 2.592088443676387 5.39492431873111 0.6590589433393959 2.850756222083439 5.464368763175554 0.8177122449590577 2.890849990777167 5.502454139804657 0.6599392328260945 3.073213668001076 5.325479874286653 0.8177122449590577 3.13141260293951 5.256035429842211 0.6590589433393952 3.09131883424578 5.742146540953361 0.8177122449590606 2.409724766452481 5.672702096508917 0.6590589433393981 2.369630997758757 5.138888888889234 0.5913466983803375 3.02368424729194 4.979809822192502 0.5784896213490551 2.893156231377407 5.108006470272086 0.6135620671788284 2.765291662427749 3.695636063986813 0.4018821499981251 4.062791112456981 3.718434343434624 0.4930789375233809 4.208272867788252 3.579545454545744 0.6245465924054672 4.04789779301335 3.314094072578156 0.5899825791522507 3.734264291402684 3.194444444444765 0.5913466983803375 3.504809471616521 3.336652395692059 0.6207855311253141 3.492041340251322 6.736111111111247 0 6.030716899321341 6.88673499524737 0.1624177907551599 5.969182319158221 6.666376147234405 0.1514856945752183 5.880136675871491 5.140082591302148 0.1608755968512061 8.46163981409814 5.0639797229456 0.8405277703717584 7.060347354976201 4.925090834056707 0.6620115681063364 7.05387542331776 5.063979722945587 0.5905277703717584 7.140534892363647 8.725645584616117 0.3536363180880283 9.420369032472468 8.656076594058543 0.1758066085758292 9.358170409995434 8.680680101668596 0.1778297095121991 9.581073398152402 8.586892402776144 0.3202095255941934 9.446700956700575 8.517323412218571 0.1423798160819943 9.384502334223541 8.562288895166091 0.3181864246578235 9.223797968543607 9.384769899412667 0.1538699547251179 4.42873941782054 9.427903961588306 0.1538699547251179 4.332249515678701 1.721186221550443 0.5702335896956701 2.437075286726581 1.537463675781277 0.6367778155629766 2.543147547982599 1.643152277140943 0.7182516029336907 2.627547169644524 7.901946611767574 0.1655354796546651 3.728373105635663 7.971391035281677 0.1655354796546651 3.848654423800979 7.933512381111042 0.4086141060204576 3.826783715980153 0.9238384817026266 0.8336292533650173 2.087946981032371 1.11402700598229 0.8534427291193223 2.209892948765239 2.307053747851614 0.8425798516349288 0.3942064652173223 2.311127460921334 0.5925798516349288 0.4678427045209639 5.154697030990322 0.689751664501997 7.224319333047464 0.9855596615473508 0.7821539981073627 9.030049177165651 0.8531202879493212 0.6241384555490506 9.166897077687771 4.8836087235726 0.5884323902707951 5.897446590629386 4.866545231509109 0.8384323902707951 5.827110664978109 4.986834945480668 0.6879958964756447 5.968948463337703 2.204792156321025 0.4113910796592685 6.661196015710567 2.33672868187251 0.4235248992113697 6.489388619636129 2.452624583729099 0.387217807869026 6.586512957964247 2.291666666666815 0.2450274348422476 6.645488019291508 3.283128149644645 0.8399825791522505 4.415858359195989 3.334134645375177 0.6713925823245326 4.351987431276292 3.523228717953022 0.8314100031722821 4.403188992346215 3.49482147955645 0.8768572327876004 4.534597216496237 3.545827975286983 0.7082672359598825 4.47072628857654 3.305727406978605 0.7168398119398509 4.483395655426314 5.486111111111409 0 4.10621600202253 5.347222222222519 0 4.106216002022519 5.336689891672901 0.1495331999842562 3.967784048348173 9.832088838377217 0.4130252872602856 4.273206862728722 9.832088838377217 0.2881924677039558 4.201242976217339 8.783607853203698 0.8497812603470241 8.056648651196504 8.813481725330128 0.5997812603470241 7.993767742528015 8.783076859887682 0.6957168420900628 7.866640649489534 2.01857298501192 0.3811840450897702 6.011436954795862 2.088017429456364 0.1311840450897702 6.051530723489588 2.082882030380302 0.2861058400680381 5.88413693945396 4.948196156708773 0.3068600766832859 3.560054317415689 9.03859952271686 0.5784592733397484 7.480096956258249 9.108034384152297 0.8284592733397484 7.439999129011674 5.141750049344587 0.1373619798988563 7.223815754406897 5.298000049344595 0.3330924325737561 7.193745427886627 5.141750049344572 0.2582507651426295 7.358555830962787 4.027777777777885 0.5864197530864227 7.353811266214047 8.768122643676186 0.5567158608401482 8.978686476650402 5.415964158357478 0.8441808047470314 0.8778660701783731 5.346519713913031 0.8441808047470314 0.998147376259543 5.384609959008575 0.6009452322482762 0.9761559630001335 3.453784273508584 0.8314100031722821 4.282907686265039 2.691204378657853 0.1523733457084931 4.603738878036451 6.909771698695846 0.7948450849298672 0.9791600090212943 6.770882809806952 0.7948450849298672 0.9791600090212765 6.689252388958909 0.8548617610070046 0.7721900951288208 6.793468532098739 0.6497068459368719 0.8927293663192022 2.291666666667048 0 2.422277716885926 2.360358233329477 0.2035635043909841 2.302431084994875 2.143636137011655 0.1297043775804362 2.355589988780631 0.400002470753048 0.1557899202339851 5.450737370771463 0.5234473228768459 0.1557899202339851 5.382243491335975 0.4731767852370812 0.405789920233985 5.437129890877864 1.799230674534035 0.4104107988874004 0.641045889188898 1.867626305214164 0.1604107988874005 0.6696553581799443 1.732515284746988 0.1365741920238815 0.4537596203821737 1.802258251408968 0.2969849909112819 0.4920499557773137 0.5743570558168347 0.2956244273592066 7.274096534566532 0.4258550539417327 0.4389185461522332 7.14050378239304 0.5880376285168677 0.2974481645701112 7.047196580315521 6.458333333333803 0 0.738339431749703 6.527777777778249 0.1542531538447432 0.7277334709862413 6.320746716259912 0.1450459398062476 0.8810240243509364 2.296647540747673 0.3994371358074978 6.808738803057791 2.227203096303229 0.1544097009652502 6.795374213493211 2.38027125959543 0.1531375203004305 6.744239015487922 2.385252133676288 0.3075472212656807 6.907489799254204 2.449715704039875 0.3981649551426782 6.757603605052502 4.516243719071173 0.8049236668200661 1.671539225258269 4.597655508855555 0.6466175710738092 1.808263867493548 0.5699094322716313 0.1482916258410441 7.198789612949464 0.715486074689609 0.1473328015181626 7.419547220253977 0.7291666473896421 0.1491565387290671 7.192647266002966 0.4294903860581903 0.3069689676837723 4.232197514192929 0.4995972780455938 0.4607151486695403 4.078732003535753 0.4156179894230603 0.2982646654243228 3.954556949739763 6.565036411691979 0.3419210161998788 1.502224257780939 6.527777777777862 0 7.594373878376539 6.666666666666741 0.1586533016196644 7.674561415763988 6.66666666666674 0.1213395322119129 7.456823221880041 3.384161509934255 0.3279718937048212 9.114485213288166 5.935277113237973 0.3673873235276777 3.162729053449377 5.865832668793535 0.1523667473959904 3.042447747368203 5.954959881347083 0.2920197450564403 2.945078481921115 1.793948413698147 0.6028776547811522 3.838679312950599 1.875476939752055 0.7127062031051491 3.772215882337929 1.724503969253699 0.8528776547811522 3.878773081644319 2.588604592928754 0.1531375203004305 6.864520321569108 2.704538019958727 0.2865499683080928 7.021922556014175 2.754822315918992 0.1334124480076622 7.030088276334368 2.809906640001756 0.1322786211190012 6.825216360699342 2.925840067031728 0.2656910691266634 6.982618595144409 2.759622344041491 0.2854161414194318 6.817050640379149 4.023337700751233 0.6027350872634258 9.463938369521305 7.438537526103151 0.5481287405985018 4.80375414843984 7.569444444444665 0.4521604938271603 4.82790383850968 7.425540790506847 0.3313748371340114 4.677360485022628 0.8484439237476598 0.8520393790933799 2.462612041455372 0.8332798732898813 0.60203937909338 2.396399291306103 0.7873039556786685 0.8520393790933799 2.346396374306968 0.6873856409794548 0.8502946430236543 3.923876726874577 7.571882164600277 0.3287804977588117 6.000421016992332 7.71760769836655 0.1662274934843398 5.932621653587502 7.739269542484229 0.3167232544328112 5.808366750660541 3.04179009762324 0.6520018658417952 2.568549851333055 3.114730028567267 0.8467613500445874 2.476825281718571 3.233760447606608 0.7254388444611708 2.408103037244461 9.406198044699618 0.3386220256024388 4.064797758260774 2.745744936561369 0.661787915946641 3.038047384243109 8.997999588725703 0.4220794079058027 7.552044865127977 8.997993979128047 0.1720794079058026 7.632226132896621 9.147305956732612 0.301221708306178 7.538395106318109 5.956845606497401 0.3224653285642234 2.533681329739108 3.589520607288068 0.3107017211827867 7.549525039986582 2.601517212193352 0.6952697775400238 6.696636689771609 7.741793622544135 0.837201410677572 6.131202556155595 6.559136845593489 0.5922269878670351 2.560664189212035 1.250581823468685 0 2.783457551065434 1.541776290113843 0.6329974664262776 1.23948494527684 5.050845269527292 0.8495635062048497 6.172554697680814 4.837295801336481 0.842960023515579 6.17023319278954 6.690279735649433 0.8086805487648137 6.637101354088488 0.6252019054826116 0.1544315851414393 3.486360982172196 0.695420646852015 0.1544315851414393 3.367337779259153 0.6949273310341455 0.4044315851414392 3.447271413936365 4.085121821160127 0.3143538452158348 0.7668007827320507 5.792608755130178 0.155921461452209 9.24632641417697 5.792608755130194 0.3195017083657967 9.166138876789521 3.37696597388982 0.4057174908566958 6.931960984903826 3.307521529445373 0.1557174908566958 6.972054753597545 3.26388888888902 0.25 6.832592273195612 3.432980657351185 0.3938688848416896 6.745890296753611 3.363536212906738 0.1438688848416896 6.78598406544733 3.476613297907538 0.2995863756983854 6.885352777155545 5.906260945084835 0.3167475317109573 3.491147083173005 2.981192799701695 0.6161551259253228 9.615411646139316 3.124999999999953 0.6178163439770906 9.393726129870602 3.055555555555529 0.7095961477890478 9.485421289895283 3.124999999999959 0.6494289526714934 9.64894777868559 2.91174835525727 0.7079349297372799 9.707106806163997 4.726830770577862 0.5777127458524889 5.45066908853417 9.667074197457321 0.8715293457359554 0.7493520982059645 9.581145370263689 0.8715293457359554 0.8155291762361556 9.659873107183742 0.8715293457359554 0.8863742850849039 7.578524380045385 0.6842280396164317 4.981307769446642 0.1099205397656446 0.1232802177586016 7.641401041652539 0.1777151482013803 0.3029085083070582 7.813375870857876 0.2876356879670249 0.1796282905484566 7.816947277486282 0.2760242304963564 0.1804747044149081 7.574655100422882 0.3438188389320921 0.3601029949633647 7.74662992962822 0.1661036907307119 0.3037549221735096 7.571083693794478 9.559940248124889 0.8410685807542413 1.892274293191637 3.518126280503485 0.8243633655462129 1.827920659590452 3.726457299161336 0.8587356852106225 1.951765839085485 1.914682539682768 0.4374632569077009 5.045555725703847 2.083333333333567 0.5913466983803373 4.948185144590523 1.840277777778009 0.592849794238683 4.968232028937374 8.385032555635428 0.6761311282950685 9.242847021820289 3.90972466114457 0.7262922030588134 5.078888269357291 4.309124972076379 0.156452438214156 6.498232368312935 4.199997987949399 0.3439156951218565 6.481049324587051 4.378569416520828 0.406452438214156 6.458138599619216 7.222222222222615 0.1626168992245342 1.734676807378851 7.239285714286117 0.4126168992245342 1.805012733030126 7.740922731746666 0.6428340925627247 2.024649107429094 7.728348387902874 0.5957966998411031 2.274851049670247 7.588849042452985 0.6841003009988395 2.209582051684947 6.126921815986169 0.668747770115977 1.605774169400243 6.265810704875054 0.5823280170295567 1.685961706787696 6.206058449805735 0.3887400332238638 1.70739867557442 6.221869154680381 0.4710680502534205 1.492301658494417 6.067169560916849 0.475159786310284 1.627211138186968 7.214249113703778 0.5845456448281394 2.963937758249532 9.639990889075126 0.4791827693516968 4.19950263636223 9.807902050697908 0.5563857333664144 4.375779102211826 9.555337837058214 0.4651415624540308 4.33733049162351 7.361111111111519 0.4126168992245342 1.574301732603975 7.291666666667068 0.1626168992245342 1.614395501297685 7.357642762111295 0.3246766498091452 1.737617185757258 7.328907792614606 0.7192192102675345 8.813299877037078 6.965456073734838 0.6893709631788683 2.212152150826127 1.757719029159775 0.1771737721226444 8.396630360363291 1.757719029159782 0.4271737721226443 8.316442822975844 1.609328154803647 0.3351007568678037 8.320892271301936 1.227632961065717 0.3301677587307705 5.63561746828179 8.503229517240666 0.1532737925356692 5.579126964605109 8.375030754231204 0.321408773574638 5.712355027205006 2.799830566018359 0.3311872978148342 0.9925000515618221 7.359997771425197 0.6824021277624626 7.306873864880526 7.8057512445814 0.5682185988440587 3.778067569278738 7.565852141904594 0.575139972478266 3.719750727627955 7.601010213788205 0.4930786263657925 3.883876462817346 7.809343540144763 0.6245461943773916 3.923970227483045 7.569444437467957 0.6314675680115989 3.865653385832262 7.774185468261152 0.7066075404898651 3.759844492293654 7.032105071186489 0.8617021410116616 0.9348251928680278 7.184178326475369 0.6945096134329403 0.8829007779854927 7.031416025039494 0.6117021410116616 0.8550354764590332 1.547979651821008 0.4342654275518152 7.020923453369585 6.527777777778114 0.158653301619663 3.184059322066918 6.597222222222548 0.158653301619663 3.304340628148097 6.597222222222561 0 3.1439655533732 6.638136023019904 0.158296794386336 2.9599688846944 6.707580467464338 0.158296794386336 3.080250190775579 6.638136023019891 0.316950096005999 3.120343959469297 1.658005994599532 0.8761328207640537 7.430467017986798 1.727450439043972 0.6261328207640537 7.470560786680528 1.616802684822725 0.7116245684717757 7.562462869920088 2.919538946762163 0.6936644018796081 9.169710473543677 8.957883104379146 0.4070213018127531 7.303934462238987 9.027317965814586 0.1570213018127531 7.263836634992412 8.836979443076668 0.2843873160161606 7.295944798860653 9.037694192312824 0.6089381285352162 6.304237002394459 8.848105782763902 0.5943746475343327 6.415106954864711 8.867462962429093 0.6132932218625484 6.172620751633495 2.906606815150985 0.6473359743821931 2.800983952154739 2.982615624611889 0.8052405157972078 2.874846204743966 3.15800200689412 0.6515546619191996 2.839381972086852 4.915970490298634 0.8343933056850352 3.85713953296813 4.953849278177427 0.5913143681616488 3.879008861346531 5.037878787879094 0.7569210624766137 3.767241412157365 5.15520080057895 0.8505996579482107 3.829674420673513 5.193079588457742 0.6075207204248243 3.851543749051913 5.071171290877282 0.6849929636332458 3.941441869862679 8.683469244521303 0.6807427013996236 6.68564865422001 8.7615800798112 0.8443746475343327 6.705625097906685 8.671853631820671 0.8363680538652909 6.852729899102497 8.839534210860158 0.6934693931787153 6.859769918077765 8.917645046150056 0.8571013393134244 6.87974636176444 8.929260658850687 0.701475986847757 6.712665116881952 1.49801587301612 0.656404485010074 4.613933854250542 1.856363514616568 0.3930631800977459 2.758492757219346 1.849188557006837 0.3518671531931934 2.522072608764409 4.487698412698571 0.4456202233979974 6.126025515187406 5.831483710225601 0.3121506238762276 9.61089777966294 8.213683200310406 0.5899825176007694 3.997041997619921 8.144238755865956 0.8399825176007695 4.03713576631364 8.077647471059247 0.6659956296383074 3.926189558324328 5.011587800304917 0.8708062294003611 5.836327162490758 5.017021920702732 0.7092386196711562 5.753002234228823 5.131877514276476 0.7203697356052108 5.978164960850352 6.732768804306557 0.6790201712739969 2.034840935727267 8.611094126096486 0.8426977901855954 7.473115349912769 8.597482432388846 0.6422177523717216 7.555922458975628 8.597499417403462 0.7995199621861262 7.67718098743955 8.436834371091219 0.8455165928286175 7.646200276244894 8.423222677383579 0.6450365550147437 7.729007385307753 8.436817386076601 0.6882143830142129 7.524941747780972 7.708333333333744 0.1637226612108351 1.620624344930452 7.635420539889076 0.3257824117954461 1.743846029390008 9.254577381550401 0.1707108639796548 4.162289021799069 9.147395320718068 0.1707108639796548 4.137231393892993 5.362310926113724 0.1559718433081184 0.3815698765672104 5.432262067429568 0.1559718433081184 0.4838752152687791 5.362349655275914 0.4059718433081184 0.4640432821207024 7.323717948717974 0.5142054447610065 7.591289742323266 7.184829059829089 0.3868036683454093 7.430914667548367 7.695835190913893 0.3084243089950406 9.301186982630602 7.640755625192402 0.1278014705268468 9.459388761848214 7.710200069636837 0.3054649082618415 9.521436052373787 1.940801210145098 0.4104107988874005 0.8642721601361857 1.940267506743544 0.1604107988874005 0.7843921237959175 1.800380999531586 0.3181453795539533 0.7861648240399434 3.450862138425809 0.8156485286349928 5.176415506623041 3.433854706837756 0.6631344094896519 5.256392583193879 7.553593654584206 0.6557137177077501 8.360317636497573 7.650838157915485 0.6381589722786845 8.239493640313267 7.768575606534187 0.6691673784039047 8.471123913593932 3.749999999999987 0.4429529241866825 9.490168414498459 2.443801399310673 0.3290800262338933 8.628412904416534 2.472576902329612 0.4226701488495309 8.486288431917792 2.564621577914604 0.3180615465126301 8.398282267001143 8.602794431735379 0.1595974721523352 1.406670488312622 8.541666816537358 0 1.219466967325449 8.449219400131273 0.1558464330837155 1.364109319550985 1.710327719309325 0.7060342395958208 7.320071518753695 3.472222222222507 0.8814676548820863 4.14630977071612 3.45298296146703 0.7214502340343371 3.974826903565035 3.464784613152836 0.6352455381063598 4.151758883221348 7.386167210216531 0.3239291177520836 0.7979323372756615 0.4025904677899349 0.8192005995620352 1.690293414254603 0.6537039979862092 0.8270321300897522 1.686170532363542 2.569444444444676 0 5.068466450671721 6.38540572158254 0.416027367101897 1.954814881005094 6.128233830846171 0.420098581168234 1.991132068103205 6.250000000000408 0.371780315006399 1.840947155256075 1.118096880630292 0.8704551905130299 4.53680098815106 1.03533869868647 0.6792700084452987 4.465205419147144 1.256985769519186 0.7143229324308049 4.42592926624757 8.733931246145261 0.7124197435889843 1.539345793978069 6.678720409570177 0.4412898419563694 4.412290886703325 0.8627748537427904 0.8336292533650173 2.212958800170157 0.9903670312762864 0.8336292533650173 2.207165593566242 7.261144591373533 0.3050531682544629 1.506904127445208 4.79301709200785 0.3188267775680285 2.044820819063816 4.747304896166962 0.141412947590903 2.127031739782255 4.790156049336794 0.3162127324630786 2.288259266404919 6.463427409428738 0.8455064456909827 0.9016555727292923 6.325857369533875 0.6431017205686248 0.982604547938462 6.251318848994484 0.7975952748776421 0.9395697130400373 6.241876941392309 0.8527857239387796 0.7841901767762758 6.104306901497445 0.6503809988164218 0.8651391519854454 6.316415461931699 0.6982921696297623 0.8272250116747004 3.314094072578149 0.8399825791522508 3.814451828790133 3.336652395692052 0.8707855311253142 3.572228877638771 5.502136752136809 0.7642054447610047 7.520354613095728 5.368495085822578 0.8492238941302386 7.517783244285361 5.315076282403772 0.6134293388912433 7.443763979004641 5.5053381878204 0.6383446418098535 7.598693800729466 5.371696521506169 0.7233630911790874 7.596122431919099 5.558756991239206 0.8741391970488488 7.672713066010186 5.365944028790723 0.3038539613588357 3.241530290351434 8.413298989739815 0.4107883014175584 5.15756676615005 8.225953541502697 0.4150199798289646 5.196768707987745 8.332520027608801 0.3730741771090416 4.961594885728128 5.238095238095653 0.8125367430922982 1.717772924124932 5.168650793651206 0.6489564961787182 1.757866692818653 5.369541849672668 0.6888304278215477 1.642409169517545 5.025455439815044 0.8220214763374494 5.070864258508589 4.918100611847718 0.8277127458524889 5.260051856801737 0.8226289670574617 0.8088148179322687 4.514239136164877 0.758545468810182 0.5588148179322687 4.538883105244661 0.635579688643933 0.75 4.488690846989234 0.7228299680880625 0.8479746433476103 4.389553195037504 0.658746469840783 0.5979746433476103 4.414197164117289 0.8457957482543117 0.656789461279879 4.439745453292931 6.109261488003373 0.3121670642308224 9.611000291568971 4.513888888889282 0 2.181715104723702 4.556740042059115 0.1747997848721756 2.342942631346366 4.421569616457756 0.1327438357016222 2.13295591954757 2.17188122938468 0.8477087577185864 9.141497548998519 2.055532347982802 0.86061936293624 9.355181371043962 2.358395948666386 0.5918016248297335 9.436435007861562 2.42784039311082 0.8418016248297335 9.396341239167755 2.261150518871383 0.7024209877659735 9.473210446698976 6.666666666666793 0.4099014558963309 6.196389386499241 1.19646067074338 0.1420931083991227 7.774878404883633 1.327086296143887 0.3064808014866237 7.758159988768087 1.241736736511719 0.164387693087501 7.577655462260678 1.009493572013575 0.1284792087955593 7.654205048815379 1.140119197414081 0.2928669018830602 7.637486632699832 1.094843131645743 0.270572317194682 7.834709575322789 0.4877583121069368 0.6305355681345733 5.007682376358728 0.6035312186786966 0.8361061013632288 5.003279196791576 0.5187255721170196 0.7944294667713445 5.156662883742123 0.7218244484576046 0.8444665647234777 5.246658786444389 0.6908571884475218 0.6805726660867066 5.097678279060995 7.050897280520822 0.583257552348166 4.059153684117375 7.01001408963762 0.833257552348166 4.069269650372402 6.985327635327881 0.75 4.216381341848743 7.15574558838052 0.5929842348261738 4.22233119811329 7.180432042690258 0.6762417871743398 4.075219506636948 4.264058862806706 0.3886593261356702 7.703452090721391 4.372276798890375 0.152737350616468 2.343662420392512 4.484572396504658 0.3275371354886435 2.384608640934007 4.349401970903299 0.2854811863180902 2.174621929135212 5.069444444444498 0 7.955217796619939 5.213126850899616 0.1513045006354473 7.863084084389749 5.008915806083634 0.1437107831153479 7.783012501580364 6.524960196295742 0.7137951200875396 2.781660829631933 2.554258057047688 0.1569576360415673 0.692077979457081 2.523833294500951 0.3552036765457706 0.5592886277038681 2.648892918087184 0.3293779841129896 0.7680931787282456 8.185588664685305 0.1596074044757284 5.099121867763756 8.078218623822561 0.3246273843046931 5.187324388034863 8.184785109928665 0.28268158158477 4.952150565775246 4.660949044793409 0.8503621093459726 7.533378667529402 4.746421642611683 0.6739217801278667 7.53337866752941 2.986111111111059 0.5288245744297682 9.457876159780557 8.472205237207598 0.8426977901855954 7.473115349912762 8.297945482202332 0.8455165928286175 7.646200276244887 8.317063284816257 0.8612722939097271 7.412599427624027 8.28167543368526 0.7067888867383445 7.464425825492238 8.455935188690527 0.7039700840953226 7.291340899160113 5.348832103564502 0.1420251113246644 4.360980984255965 7.580051486464083 0.1986768532358882 8.23044371922677 7.500000000000042 0 8.31606171486365 7.544892410015674 0.1673469831333624 8.450518144631431 0.3804938974301403 0.3287663302559521 7.27883833991342 0.3775685379730161 0.4711016247260973 7.366003195044442 0.526070539848118 0.3278075059330706 7.499595947217933 8.043980939724655 0.3038286244898552 1.377000134701762 7.270329267932025 0.8325634243018246 1.451140734925952 7.439114816488733 0.8718299033582348 1.625344034615307 7.430555555555539 0.3283836023440492 9.661109603588343 7.36118743707918 0.4078941684861621 9.839624925225106 7.228087409199476 0.4968893963555506 9.684098801649167 6.160413538741674 0.5781216168398935 5.356234201646465 5.972222222222413 0.4135802469135781 5.429310368915441 6.034235321229846 0.3736874120287675 5.304342083568863 6.975615688528702 0.1468963882948222 6.340279510148093 6.906171244084262 0.3074837152473986 6.318847743421951 0.7784883373188156 0.8270321300897522 1.648312090429597 9.14779625435985 0.500538681245551 7.598081869543908 9.068516410746367 0.5784592733397484 7.737935623019304 9.027916476755211 0.4220794079058027 7.809883531889032 9.184781846434893 0.5026346283269694 7.841083355325724 2.361111111111315 0.4930789375233814 5.55323656305946 2.5000000000002 0.4021123609044144 5.605072914709802 2.355975712035232 0.3980007325016493 5.786780465961071 2.355975712035241 0.3139552183593008 5.634503086079719 2.217086823146356 0.404921794978268 5.582666734429377 8.948817682482776 0.5328830232024895 5.182083671099948 8.706595868507577 0.5665401898388034 5.22810537531858 5.556864455065961 0.1191599462614138 1.905012908284565 2.893711204807879 0.1334124480076622 7.030088276334376 2.777777777777907 0 6.87268604188931 2.948795528890643 0.1322786211190012 6.825216360699351 2.890733884428803 0.1438781418273452 0.3679258000909073 2.978346889729333 0.3938781418273451 0.4043265435263053 2.790508445213155 0.3421241823315484 0.3411469554811626 4.985414934743075 0.8343933056850352 3.97742083904931 5.224645245023391 0.8505996579482107 3.949955726754693 5.694444444444552 0 7.113248654051801 5.706481969801309 0.1462618218843247 7.186486322934146 3.775591944806474 0.8384268377886593 0.4832159052727051 3.706147794105484 0.8384268377886593 0.3888417622372362 3.706147500362031 0.5884268377886593 0.4615788981528987 1.311181180956154 0.164387693087501 7.697936768341857 1.180555555555648 0 7.714655184457404 1.265905115187815 0.1420931083991227 7.895159710964814 5.139963073877242 0.8735617989773905 9.879718693918829 5.139963073877267 0.71595712791078 9.770045221838259 3.307611179402469 0.3110499391891375 8.812037631684223 0.3905570049957374 0.4792348874295344 4.996935055936447 0.2014763327726299 0.4219181332207462 5.155118788152516 0.3728045667628549 0.4502193870053296 5.251681263154246 2.754660854307161 0.3456022380799905 1.994592823243817 2.824105298751608 0.1820219911664103 1.954499054550098 2.859647798097054 0.3393241000986924 1.773603508210444 0.2209649272270924 0.5512581084873318 3.342036249770455 0.1539608604888732 0.3986026880832699 3.196640416780574 0.3749257877159655 0.4588402877495716 3.205732260984709 0.3607557758906696 0.438887776834693 3.468938029989354 0.2937517091524504 0.2862323564306312 3.323542196999473 0.1397908486635772 0.3786501771683913 3.459846185785219 0.5720300745326335 0.5861061013632288 4.683816752738601 0.6361135727799132 0.8361061013632288 4.659172783658815 0.7590793529461622 0.6449209192954977 4.709365041914243 6.492473811877398 0.3086682585860802 5.699412067635534 7.583044203624606 0.8480378943844307 0.3895883211167219 7.582593288185503 0.5980378943844308 0.4645449639746284 7.654733686085356 0.8480378943844307 0.492293204280297 8.990856492790051 0.4025865333276894 2.130433084466171 8.973087540915039 0.4400112452310416 1.971885279265853 9.213841503241163 0.4023268954430332 2.010111797190849 4.02698343366167 0.3102253949648314 1.168967137579685 3.271687262413418 0.8268876237658783 5.793285935743118 3.173492228510446 0.857358246403778 5.976541447209424 2.574135183697353 0.1670548685822081 4.504445489389374 2.675145284707453 0.4101338061055907 4.526314817767774 2.655479368483927 0.3346805753246693 4.377293865018393 7.430555555555662 0 6.271279511483733 7.4237189106783 0.1625530042744719 6.098516262726225 7.599911838663928 0.1376768877187468 6.204340424359197 8.816335436469879 0.1529597186498494 7.636258864216958 8.816341046067535 0.4029597186498494 7.556077596448313 8.925537777710527 0.325039126555652 7.674062509733972 7.514205840881335 0.6887110416577447 3.852626391790415 4.239680527631933 0.156452438214156 6.618513674394106 4.126984126984278 0.1874632569077005 6.494659079919971 4.024766958442203 0.1190723348353672 6.708075132585077 3.985084418759671 0.3065355917430678 6.570610782778022 4.097780819407326 0.2755247730495233 6.694465377252157 5.972222222222215 0 9.518874775675263 2.430555555555905 0 2.903402941210621 2.261904761905107 0.1874632569077024 2.920585984936496 2.439219910485847 0.1260677698118368 3.05542886666564 6.843933879230178 0.3131733237114996 6.712720566755259 2.730128894916327 0.6614694972112896 8.733641399368835 2.748015873015886 0.8125367430922994 8.814369982913927 2.711205613428853 0.8546726323322856 8.953204122597548 2.820332597555836 0.667209375424585 8.970387166323441 2.693318635329295 0.7036053864512757 8.872475539052454 0.9855596615473527 0.5321539981073629 9.110236714553103 4.749733613246356 0.1743625945153144 6.913859433204077 4.888622502135251 0.3283739715817349 6.789541802530943 4.722222222222367 0.1540113770664205 6.748368411216244 4.733863775141325 0.3065798998886107 6.842957099134024 4.761375166165314 0.3269311173375046 7.008448121121857 5.803571428571846 0.6489564961787193 1.643313067979459 5.902777777778192 0.8364197530864202 1.780777417786517 5.734126984127402 0.812536743092299 1.683406836673182 5.602754622812872 0.6887020353274005 1.757841409690039 5.701960972019219 0.8761652922351015 1.895305759497098 5.771405416463663 0.7125850453215218 1.855211990803375 8.762663207877345 0.5661024998142812 4.305413960044095 8.770996552324551 0.428973038967188 4.450012769200322 8.617138431621687 0.6234527738581932 4.466266318636643 0.4076958779952106 0.8403534983930341 2.034256014631861 0.5279973086017179 0.8403534983930341 2.100156836335359 0.4796163777716783 0.5903534983930341 2.045720776694154 5.400992070396453 0.3067688845850058 6.332854685887932 1.358067060222303 0.1350871627342926 5.964967507946945 1.428103107877649 0.2916857211701785 5.958453715185522 0.9087507713540033 0.5836292533650174 2.262961717169293 2.019620664676141 0.8335407335915246 4.102906759728781 2.095417414943082 0.8598285483239969 3.879377496634764 4.489329237626611 0.3849764998195604 2.809035882555594 8.781007295018423 0.3030286185588365 5.723793664344239 6.758696833403365 0.8548617610070046 0.6519087890476576 8.249377126108246 0.3176036647405446 1.574429774755765 7.438685769085203 0.6701803948127513 5.54262037149161 6.805555555555602 0.5864197530864224 7.834936490538906 6.736111111111171 0.8364197530864224 7.794842721845174 6.96795757560831 0.8461536821006996 7.775982128180789 6.898513131163872 0.682573435187122 7.735888359487053 6.899036085340105 0.6413111761348508 3.948988344291228 6.833466440147165 0.8080536237866848 4.106216002022597 6.755760252136314 0.6603933642022219 4.151079690588352 6.932307901626769 0.6855972927637033 4.114133338938156 9.164669812384741 0.25 3.347685381853097 9.096559858555564 0 3.38491058137718 8.997996950903101 0.1586597377396617 3.260620119820717 2.638888888889099 0.5899825791522511 5.40709478416286 2.569444444444653 0.8399825791522511 5.447188552856581 0.9228070199202349 0.6866115611567085 5.773250806358866 0.7969087101111586 0.8478129270843973 5.7192548412278 0.7765144546262623 0.692279491807875 5.553213389440483 6.089406429297903 0.5668829838691105 1.969165642714553 2.331125083191107 0.5627386380393854 5.746473133904892 2.192236194302231 0.569659700516004 5.542359402373199 2.187100795226148 0.4745814954942719 5.775903305274809 7.291666666666666 0.4007201646090544 9.558968544369041 7.297531853643926 0.5961692317464962 9.563817495567996 6.634483902842831 0.3005065007308592 3.505262728583628 2.100456053068263 0.170098581168231 4.216611501255439 2.15277777777804 0 4.346778614184679 2.295102434650664 0.14521183221273 4.20952774495636 2.797017038533565 0.8399825791522504 3.814451828790103 2.697087660128467 0.8694810271100778 3.690343483218409 6.801220132205334 0.1243210831649124 3.187335189153476 6.731775687760887 0.2829743847845754 3.227428957847193 6.842133933002676 0.2826178775512485 3.003338520474675 2.069160234627899 0.3467420602836732 0.78973847523235 6.527777777778114 0.8364197530864202 3.184059322066917 6.420247956704577 0.8422269878670354 2.96160187614928 6.388888888889207 0.8364197530864202 3.424621934229253 6.142470178926759 0.842226987867035 3.442727100473958 2.225295378801002 0.3319050386101133 4.866223319425197 2.083333333333588 0.4135802469135794 4.467059920265845 2.013888888889141 0.1635802469135794 4.507153688959563 2.086406489912123 0.3319050386101128 4.625660707262849 8.604243019665345 0.6775657550905569 3.912737951132046 4.004979498330238 0.3095233770837973 4.241390627547222 4.556740042059118 0.4247997848721756 2.262755093958918 4.372276798890379 0.402737350616468 2.263474883005064 4.421569616457759 0.3827438357016222 2.052768382160123 3.658165772841731 0.3148032257353575 5.288787961365702 3.611111111111317 0.1553692348799318 5.341808477136468 3.797054661730613 0.1594339908554256 5.376289853144531 3.646430080527375 0.2999323119201755 5.484469558310622 3.599375418796962 0.1404983210647499 5.537490074081388 3.46048652990808 0.2958675559446817 5.44998818230256 5.43297857835673 0.8505996579482107 3.829674420673532 0.9880763923064684 0.4143067092117783 7.207588492458381 1.052844573767099 0.1643067092117783 7.249929639482787 0.9102197085450202 0.25 7.309874957926638 0.8611413668202645 0.1491565387290671 7.196635169160034 0.9389980505817128 0.3134632479408455 7.094348703691777 6.497607475311808 0.4276196516055388 6.062204663125419 4.86111111111115 0.1593158993741491 8.663401704171186 4.931749257968805 0.3201914962253553 8.688698497324699 4.8386526995437 0.1377787132262369 8.489403159602389 4.909290846401356 0.298654310077443 8.514699952755901 4.699763810654805 0.2970946126003861 8.596180536747777 5.43269230769237 0.7642054447610047 7.400073307014555 5.299050641378138 0.8492238941302386 7.397501938204188 6.653202100823926 0.3347666989486371 0.7637538134844294 6.514313211935026 0.1805135451038939 0.8946410803290559 8.402750668263508 0.6924635818594892 2.861273807548104 5.058966744749358 0.1513103149602683 5.819161600168422 4.993893435860258 0.3121872657547939 5.856731692572592 5.240542177714614 0.307598893269368 5.874704049842611 0.3473694920411168 0.1858943492031399 6.387359559144536 0.3771644096422002 0.4358943492031398 6.356496455254685 0.2884279296053629 0.3431067034835541 6.522659764844816 6.250646481607308 0.4073928377676749 0.6555192519078472 6.181202037162869 0.1573928377676749 0.6154254832141149 6.182504308977865 0.3024387775739225 0.7581100758153637 3.025793650793656 0.5625367430922998 8.894557520301399 3.124999999999984 0.5889917695473229 9.093880827521637 6.474323472140828 0.6430252826396259 5.570196421492804 0.9238428269804212 0.75 1.065906739889637 0.8543983825359834 0.75 0.9456254338084616 1.043096474566011 0.8410349945238462 0.9874927879816887 0.9736520301215731 0.8410349945238462 0.8672114819005133 0.9947170793237474 0.5910349945238462 0.9542161778783678 0.4478790357478342 0.1482916258410441 7.189051564515259 0.3995925197791176 0.1804747044149081 7.414550977166661 0.5934556781658119 0.1473328015181626 7.409809171819772 2.285901012982788 0.3069766953901286 5.493939095486551 2.083333333333588 0.5913466983803368 4.467059920265845 2.013888888889141 0.8413466983803368 4.507153688959563 1.95017622023168 0.6748874319718614 4.38356314058484 1.73611111111139 0.8413466983803373 4.026028464634866 1.805555555555838 0.5913466983803373 3.985934695941146 1.811287331342806 0.6748874319718619 4.143000528422493 2.14187672501782 0.3028650669873636 5.675646646737821 7.366976298088365 0.8461692317464962 9.603911264261725 7.188659064787413 0.7030673221176367 9.535579453710135 8.695437384765057 0.2803257328532569 7.548087933069978 2.777777777778164 0.4135802469135801 2.30199641080478 2.957696927287321 0.404161847944623 2.347455232859207 2.906396695233935 0.5967613500445874 2.436731513024835 7.115384615384649 0.7642054447610065 7.39082089885463 7.157596399552133 0.8503764202021704 7.270204915732698 2.953119254084815 0.3266591301234948 4.285638934332619 2.814230365195936 0.3266591301234953 4.04507632217027 6.764021995702717 0.8080536237866848 3.985934695941421 6.940569645193172 0.833257552348166 3.948988344291226 3.191000618152195 0.1482584616481921 6.725950679507728 3.260445062596642 0.3982584616481921 6.685856910814008 3.36009238661436 0.2921273464898817 6.639248703065729 8.333333333333655 0.5913542345354199 3.745372083779195 8.333333333333655 0.84135423453542 3.665184546391747 8.472916530200703 0.6790352674994744 3.667809185626389 1.736111111111135 0 9.158030857431509 1.875000000000021 0.1571502057613257 9.278312163512734 1.692531437389564 0.1395005826321315 9.333340408232905 8.018785930841442 0.8008675333127724 5.195824074328845 2.034038526998548 0.5973310069176386 6.855340778403727 2.086052905541652 0.5136946517346594 6.7106737000479 1.964563910965345 0.7217512493026732 6.651204665487713 9.057079661009784 0.1805215615715942 8.923995944277301 9.013163342475902 0.3384015052830017 8.982156352619139 9.12275034813268 0.1578799437114075 9.095909959692653 9.304008526283527 0.1288318480687032 8.958442626419187 9.260092207749643 0.2867117917801107 9.016603034761024 9.194421520626747 0.3093534096402974 8.844689019345672 0.6693205871746239 0 1.706477894658556 3.19094895794523 0.8052405157972078 2.754564898662806 3.41472704680474 0.8403194661058363 2.74664732927284 5.740905772909407 0.1947594842027857 8.453648569285221 5.625000000000043 0 8.436343020944651 5.622159912251719 0.1596805338941648 8.263809844217537 7.323195730830672 0.8429842348261738 4.112165858287161 7.422451357778288 0.6743939597952677 4.156338634789213 2.415314690794881 0.1569576360415673 0.6925150499468868 2.351046049853343 0.4069576360415673 0.6563427861459407 2.338426839647768 0.3432888974378401 0.8010441993014858 0.3975014864907815 0.165902052459573 5.618762476118238 0.4706758009748148 0.4159020524595729 5.605154996224639 0.4858370584718628 0.165902052459573 5.678023234026654 4.303235135758793 0.3745718344232898 0.585779429258101 4.231684414290932 0.283350184843618 0.7143538756866668 4.233375382942074 0.1245718344232898 0.6071546081429845 2.551557466344899 0.5989327541189899 8.756552124336661 2.67857142857144 0.5625367430922993 8.854463751607648 0.3750400230208672 0.8484726083901091 0.6445959928096854 0.1202813060811719 0.8774155417899101 1.109008476083297 0.2750256555211091 0.8282926846125241 1.308597203839236 8.92759767159135 0.6439441868566083 4.670213797720892 8.855702523697079 0.4808811157099492 4.630750679744907 8.701844402994215 0.6753608506009543 4.647004229181229 9.10874787398318 0.3132648812057651 1.518036608074683 8.197297604082497 0.6673673465729579 3.674519644483603 10 0.7566352966371211 1.94426472578299 9.857518759873162 0.8794772687741207 1.948459024018919 9.851655695755104 0.7146541524561599 2.149696958781383 9.373909576699297 0.3054864549412559 4.494857495263744 0.3190981154150163 0.7944294667713445 5.149977476099079 0.2014763327726299 0.6729797664472907 5.153304872461971 0.1176217826423863 0.8785502996759462 5.142216285251774 0.2546103601566999 0.8276790397203027 4.948457294325159 0.1369885775143135 0.7062293393962489 4.951784690688051 0.3384649102869434 0.6221085064916472 4.959545881535355 5.83083767062804 0.5074692069225326 6.995714646304076 2.541229176657713 0.2953278933272089 6.685263954160661 8.071634788681994 0.1646588041813113 2.959103038653173 8.029701735261549 0.3390213986966287 3.038210953419654 7.87473361324659 0.1743625945153174 3.102792162058614 8.072478815376225 0.1540317532286578 3.122859218980801 8.03054576195578 0.3283943477439752 3.201967133747281 8.227446937391184 0.3186905574099691 3.058278010341841 5.229606196933689 0.8492238941302386 7.517783244285351 5.419868102350318 0.8741391970488488 7.672713066010176 4.343956887603788 0.6899321468601665 8.960037614765008 4.310326911266705 0.3442972631187863 6.772268859464781 4.170236083187485 0.156452438214156 6.738794980475275 4.167868605857135 0.1878448249046303 6.906159920878871 4.095413342076976 0.3069171597399976 6.861830317655752 3.955322513997757 0.1190723348353672 6.828356438666246 1.655059524809253 0.6942243531614894 3.918866850338039 0.3383676080063949 0.7916829955231125 9.566384596318043 0.2125763236396164 0.6709875542243238 9.441589170060869 0.1257912843667784 0.8793045587012112 9.433030790671248 0.2751803970456948 0.8370816128072078 9.363261499972509 0.1493891126789164 0.716386171508419 9.238466073715337 0.3619654363185327 0.6287646083303202 9.371819879362132 4.637020979584283 0.6751202728643646 5.193724203018229 3.486807087613163 0.8505238431152484 9.421182374909691 5.221725656744392 0.3086829554236886 4.141972028527363 3.463411804327627 0.4201064823911245 7.840023187681881 3.463411804327619 0.1701064823911246 7.92021072506933 3.5977622008034 0.3249413549671269 7.943696718554841 2.638888888888861 0.5864197530864207 9.278312163512734 2.569444444444421 0.8364197530864207 9.238218394818995 4.307910385737834 0.8049236668200661 1.79182053133943 4.08461791677675 0.8403923321417144 1.783716671899123 2.430555555555852 0 3.865653389860003 2.620909003260068 0.6590191822486349 5.550898092534665 1.278241134667743 0.5854917477077219 7.686275961615809 1.043086587467978 0.5990730119256553 7.633822835319796 1.088324670960809 0.6200259811851756 7.826484130372755 1.944444444444571 0.4135802469135801 7.113248654051599 1.944444444444564 0.1635802469135801 7.193436191439047 2.088314207414324 0.3179899478788303 7.116124363042994 3.865187843352036 0.3051790130493088 0.9324181406432652 1.319444444444634 0 5.790154287158694 1.171771760114942 0.1691837858491437 5.827991930389718 1.219178171333414 0.1350871627342926 5.964967507946938 7.777777777777763 0.5478395061728456 8.316061714863665 7.097222222222522 0.7849794238683131 3.673203300130393 7.027777777778086 0.7849794238683131 3.552921994049218 7.236993599538592 0.8384902000842587 3.579777171024222 7.167549155094156 0.8384902000842587 3.459495864943047 4.516664616442352 0.6887963146271079 4.909650333395646 3.00845526528729 0.8450990336827847 4.572912316664006 2.970576477408501 0.5881779712061672 4.594781645042399 2.875932146991818 0.6965923524102602 4.671026650229621 9.395699996617395 0.8488018258454614 7.081903023283206 0.9587051886969131 0.3562634637827999 8.500286978706605 5.419868102350311 0.6866759401411476 7.947641765624285 5.489312546794759 0.8741391970488488 7.792994372091352 5.347222222222272 0.812536743092299 7.989583884071712 5.475584136038131 0.6835811978634289 8.082103591013631 5.54502858048258 0.87104445477113 7.927456197480697 5.617674460610618 0.7451836518199787 7.885514079033269 4.877139264485008 0.8235596707818942 7.474092572295248 4.946583708929453 0.5735596707818942 7.433998803601532 5.037301016974189 0.6727835649121329 7.517783244285349 4.821973198778447 0.6753598823040006 3.802870171405847 2.430555555555564 0 8.917468245269195 2.261904761904759 0.1874632569077299 8.900285201543365 2.331349206349193 0.1874632569077299 9.020566507624544 2.565371765057191 0.1247112619321832 8.99240208744772 2.396720971406386 0.312174518839913 8.975219043721893 2.495927320612757 0.1247112619321832 8.872120781366544 6.59722222222241 0 5.309029062834302 6.498015873016065 0.1874632569076999 5.205930800479011 6.428571428571617 0.1874632569076999 5.326212106560177 6.662593987279594 0.1247112619321824 5.354376526736957 6.563387638073251 0.3121745188398823 5.251278264381666 6.732038431724042 0.1247112619321824 5.234095220655791 3.752011418266487 0.1261180566397201 2.863311049515081 3.821455862710929 0.3761180566397201 2.903404818208808 3.776449115351624 0.3034180851491487 2.74168960486729 4.225253955128782 0.8344081388646911 0.6349719176047028 4.295113707945502 0.5844081388646911 0.6135967387198193 4.319849176468745 0.8545821165225231 0.7584031543659558 4.389708929285465 0.6045821165225231 0.7370279754810724 4.239547576041487 0.6889902553872143 0.7753169463021986 9.205706582709738 0.1566609575056951 8.847155959101046 9.343048442326701 0.2854928055743983 8.767849034169418 1.113137173464517 0.4016757104884006 3.114735043259277 4.8636863668807 0.7848240840400524 0.5264899413952898 4.752217718288671 0.6250205325180087 0.6057810438389033 4.750294861924523 0.8401964484779563 0.7072722788438646 4.72261519714259 0.8575942246960413 0.5051034486164674 4.611146548550561 0.6977906731739976 0.5843945510600809 4.724538053506738 0.6424183087360937 0.4036122136115061 4.921414298932996 0.7973347559425463 6.539018740710945 4.990858743377443 0.7973347559425463 6.418737434629787 5.139066786048901 0.8459191522845045 6.546851169299694 5.208511230493349 0.8459191522845045 6.426569863218536 5.060481084981746 0.6432539082270509 6.453746480283564 3.982613716825719 0.1546035933302035 6.578011375088026 3.840714008601112 0.2736759281655707 6.653963077946076 2.100163671355224 0.6711398276887645 4.617717994853393 2.361111111111347 0.5913466983803373 4.948185144590538 2.291666666666899 0.8413466983803373 4.988278913284256 2.377941449132997 0.5797931293084276 4.778093069628302 2.308497004688549 0.8297931293084276 4.818186838322021 2.239052560244103 0.6711398276887649 4.85828060701574 3.695981237536416 0.5720700191904021 3.969196393743631 2.361111111111336 0 5.18874775675288 2.500000000000217 0.159033423381033 5.32077164579067 6.703594007737323 0.2995296884185782 1.563435747919392 7.789205984038272 0.3117048526169748 1.513233854000116 4.585688163515619 0.5549236668200661 1.631445456564549 3.046030243569514 0.5922240487345416 7.599873319815667 2.938113019715222 0.5853929770903921 7.359960032538359 2.859157066312865 0.6272101563130627 7.480983157743584 3.037117606841734 0.1685899968277182 7.77852611237722 2.986111111111185 0 7.955217796619865 2.874210631685969 0.1598235277562506 7.813206540768255 1.983133605493701 0.8516404097531065 5.883771344991446 1.983133605493697 0.6016404097531065 5.963958882378894 2.022592022017954 0.6713001102691105 5.796351534980813 8.910475042313443 0.6945696139437194 7.129886353594367 8.755895837700919 0.8604828693606903 7.219899870388002 8.686460941171941 0.7031806595462857 7.218908078294266 1.936010713526981 0.8394810711406282 5.286211389918518 2.083333333333561 0.8413466983803373 5.108560219365417 1.840277777778002 0.842849794238683 5.128607103712268 0.1661036907307119 0.4268759243897133 7.363608360498112 0.1661036907307119 0.3039736231247416 7.432975895781375 0 0.3699001386846388 7.292246503714665 0.2143902066994285 0.3946928458158493 7.13810894784671 0.2143902066994285 0.2717905445508776 7.207476483129974 1.428730281595609 0.8125955775455767 3.126874223483118 1.567619170484496 0.8125955775455767 3.126874223483126 1.521191604569792 0.8752887380678165 3.343534200635175 1.66008049345868 0.8752887380678165 3.343534200635184 1.561032997276192 0.6878843156133931 3.206161564664207 6.167067861749645 0.4801661069807878 6.552432242530607 6.035338115149321 0.384969298969687 6.514573005214073 6.257159142288684 0.4048031919888993 6.433889117635744 6.244346030833906 0.3945797432834946 6.661060330675815 6.112616284233582 0.2993829352723939 6.623201093359281 6.022525003694544 0.3747458502642823 6.741744218254145 4.166666666666933 0.4920645350685444 4.436353045273163 4.305555555555822 0.5913443704594912 4.436353045273173 4.098384370585974 0.694498043827426 4.330162070757046 8.736662918308149 0.1811122656256826 2.504892863642085 8.8887536404416 0 2.542484478127287 8.706897174514172 0.1420178205278556 2.643140396509949 3.414727046804748 0.5903194661058363 2.586272254497946 3.190948957945238 0.5552405157972078 2.594189823887911 3.382919307928606 0.6286774944165835 2.433743009799318 9.107189472386056 0.2861636022131285 7.290284703429121 1.664746122578568 0.321262313811891 1.02204114266907 8.611235657224146 0.4278297095121991 9.54097962945869 8.541666666666572 0.25 9.478781006981656 8.44787896777412 0.3923798160819943 9.344408565529831 6.111111111111233 0.8506245738573796 6.957066058901096 6.186994905105704 0.8534271563912058 7.194156472015456 7.719868098163351 0.1479821914061397 1.232536934639068 4.371899270202482 0.3791720556913239 4.257134062131571 4.371899270202485 0.1291720556913239 4.176946524744122 4.443371839227771 0.2892389556433601 4.125899224254779 6.706532441457457 0.6403515306208498 1.022194843919688 6.602316298317626 0.8455064456909827 0.901655572729306 6.624902020609412 0.7003682066979873 0.8152249300272316 8.367389926646773 0.8455165928286175 7.766481582326064 8.228501037757878 0.6842529939389137 7.861114307203676 3.080108402631569 0.1590334233810337 4.53307186478478 6.915801904589382 0.7165639020186664 0.8483945501659358 6.997432325437426 0.6565472259415289 1.055364464058392 10 0.3845842522606364 5.358527224839039 2.112967657956585 0.6284957048201389 2.221197846409562 1.250526087451261 0.6796901931247 0.7939933738884732 8.46353806493207 0.8363680538652909 6.973001054733909 8.602426953820956 0.8363680538652909 6.973001054733918 8.455952173705162 0.8612722939097271 7.172036815461696 8.447268016414981 0.697640347775018 7.031789216143601 8.317063284816275 0.8612722939097271 7.172036815461687 8.900193990840561 0.690147577704767 8.472400303218244 9.587157562224697 0.5335751777313504 4.481080823043129 2.635969458427696 0.592397820738377 6.389875283601869 2.635969458427692 0.842397820738377 6.470062820989318 6.840327254251386 0.7948450849298672 1.099441315102453 0.646006542680762 0.7497849660215847 0.5796551688797014 0.720982715758405 0.5922600356757044 0.62381525057498 0.4571519943258474 0.5982575744116939 0.5966883848396692 9.363822322652322 0.75 7.784963927455011 9.305242639050046 0.5784592733397484 7.630562662522562 9.316420316397696 0.8284592733397484 7.560253919525465 3.806989500736429 0.8277127458524869 8.387365814912133 3.623866875860091 0.8505572241130314 8.400454753135719 3.75399338661773 0.8776651354283286 8.179221528499909 3.627860262477776 0.7282223595413599 8.263614566772215 3.810982887354115 0.7053778812808155 8.25052562854863 4.472392196140049 0.1386593261356702 7.502983247252778 4.541836640584489 0.2978937521325465 7.515979158484544 4.652777777777859 0.1592344259968763 7.36680717744583 4.452672214680916 0.1240433205449796 7.276606360187383 4.522116659125356 0.2832777465418559 7.289602271419149 4.341731077487545 0.2627026466806498 7.425778341226097 3.973068122156994 0.6728349766533503 0.5001296972089634 3.983935852909284 0.8384268377886593 0.3888324991748078 4.155820085453813 0.8344081388646911 0.54058851150679 4.20779908767306 0.6689728153710605 0.4913781782641034 4.21866681842535 0.8345646765063695 0.3800809802299478 4.03591485512853 0.6729915142950287 0.3396221659321211 0.7332451786066692 0.1797966597621553 6.709792275719193 0.8777815775601614 0.3906338951052492 6.706531684263169 0.8389808433980883 0.2108372353430939 6.869425450433124 0.8632921843863131 0.1370315193125302 6.749821532049069 1.007828583339805 0.3478687546556242 6.746560940593044 0.9020929185483861 0.3168281790746855 6.586927765879114 5.138888888889134 0.1547891870604093 4.794153048076408 5.220848517417607 0.3276399407029024 4.82702117187026 5.3597374063065 0.172850753642493 4.74049065622223 5.134762865841159 0.1265281566844398 4.629817155558349 5.216722494369632 0.2993789103269328 4.662685279352202 4.995873976952266 0.2813173437448491 4.716347671206382 3.561453359840172 0.4027373506164651 8.825856855251741 3.463342073016122 0.2871298413585103 8.802827693729672 2.898686781037839 0.8190366030963838 5.653301214674507 5.064012615346715 0.763281079831384 4.149822462654534 5.133457059791167 0.763281079831384 4.029541156573367 4.979983105645058 0.5976743855164193 4.021027299681353 8.907011532565065 0.8067158608401482 9.058874014037862 8.880866309348265 0.8431545974109493 8.880097107362218 0.7348917550138838 0.8472404295114802 7.180521058392653 0.7024798669715766 0.6930605785076859 7.23587040363623 9.434938043066468 0 3.98119608740108 9.494513632480594 0.2499999999999999 3.910027230004855 9.378851124561798 0.2499999999999999 3.947383773770747 9.491726605951055 0.167911161622784 4.05774151402305 9.60738911386985 0.167911161622784 4.020384970257157 1.961567164179363 0.3336788280818104 4.376986576030323 5.76388888888928 0.1635802469135801 2.261902642111195 5.833333333333722 0.4135802469135801 2.301996410804922 5.850456053068386 0.333678828081814 2.15150714287809 5.711567164179488 0.3336788280818144 2.392069755040435 1.527777777777803 0.420098581168231 9.137708702433908 1.527777777777807 0.170098581168231 9.057521165046461 1.527777777777811 0.3336788280818098 8.977333627659014 2.504690739252897 0.4170548685822081 4.70491433285799 2.504690739252899 0.1670548685822081 4.624726795470541 2.368875006942552 0.3353796602787414 4.622952507692649 2.43524629480846 0.1670548685822081 4.504445489389371 2.365801850364018 0.4170548685822081 4.464351720695644 9.818549785357977 0.6909765158680674 7.262864973500025 9.867359704670188 0.8766300232793212 7.091610100649222 9.841371242791176 0.7234228096299142 7.00228821691107 2.497284837555255 0.6782213779161542 9.356247470474024 3.963947268967549 0.1603844598266699 5.940326027505376 4.033391713411993 0.4103844598266698 5.900232258811652 3.92996254220761 0.3209737674988058 5.808045283177678 8.686470744404044 0.5560929819376441 7.129855693157468 8.527747767456422 0.639950829384208 7.030871819692312 8.452373770598449 0.4750780726004714 7.074768177710094 8.455944991922628 0.556882406486681 7.202288514023316 8.297222014975006 0.6407402539332447 7.103304640558158 8.531318988780601 0.7217551632704176 7.158392156005532 9.470702172350414 0.8143464925887463 7.398252788583842 9.328795513000978 0.8488018258454614 7.201161866994553 7.416547648166727 0.8444177241638349 0.3907680140791304 7.34589269955638 0.8444177241638349 0.491994323089311 7.416096732727624 0.5944177241638349 0.4657246569370369 8.458308305705769 0.3160290808590707 6.304987054364076 2.959939108703105 0.6846916945024849 4.281701489432919 2.821050219814228 0.6846916945024848 4.041138877270568 1.567460317460554 0.812536743092299 4.845086882235215 1.419764243121535 0.8421374112776083 5.010546787900532 6.266684454274833 0.3125791432543606 6.588764750971311 6.398414200875156 0.4077759512654613 6.626623988287845 6.253871342820055 0.3023556945489559 6.815935964011382 0.119551406119208 0.8785502996759462 5.281197505377447 0.3210277388918379 0.7944294667713445 5.288958696224753 2.916666666667051 0.3212079137340186 2.345067332025436 2.916666666667046 0.1576276668204385 2.425254869412883 2.777777777778169 0.1635802469135801 2.221808873417332 2.957696927287325 0.154161847944623 2.267267695471759 3.096585816176207 0.3117895147650615 2.390526154079863 7.54211930199029 0.6670212237957982 1.913289157069363 7.390045612696609 0.7082874322319129 2.098222101325216 7.415126874750867 0.5280321336620053 2.075412674599254 1.597222222222534 0 3.384528165535272 1.534904720704569 0.1236801957543557 3.340319654424443 1.465460276260119 0.1236801957543557 3.460600960505612 1.6822961368753 0.2057641370134061 3.478844161745556 1.619978635357334 0.3294443327677617 3.434635650634728 1.75174058131975 0.2057641370134061 3.358562855664387 1.141069962164108 0.1370315193125302 6.509258919886761 1.071625517719664 0.3870315193125302 6.549352688580479 1.193684068586905 0.307238390004103 6.639257226155282 0.9500382143780814 0.4078844661738036 7.368523994185897 1.014806395838712 0.1578844661738036 7.410865141210301 1.09266307960016 0.3221911753855818 7.308578675742044 6.666666666666769 0.8393207319954464 6.489837069255906 1.156291316598449 0.6852931182020994 4.974152942510084 4.60283867930179 0.6795266495671245 1.317883684060706 7.493355098801345 0.4123497096545151 3.741535648283173 7.698096129594539 0.4874896821327812 3.635726754744565 7.540274600459022 0.3238193719907242 1.042327299067137 7.817797863213333 0.2978193846387747 3.050655203594847 7.859730916633778 0.1234567901234572 2.971547288828366 8.014699038648736 0.2881155943047685 2.906966080189406 7.435342558996206 0.8457339069164008 9.235454617094192 7.252238322254611 0.8568980903711405 9.330261659042563 0 0.7569802754898451 5.00820170792292 0.1176217826423863 0.8784299758138989 5.004874311560028 0.1369885775143135 0.7061090155342016 4.814442716996305 1.044766135049223 0.8413637391341904 2.599724758892798 1.029602084591444 0.5913637391341904 2.533512008743529 1.18066278895817 0.6948064682535126 2.504831035634905 0.8476719836592246 0.1610789315279953 3.192310108411645 0.8471786678413551 0.4110789315279952 3.272243743088857 0.9876118795454719 0.3127546420163959 3.20267905194051 4.988101983386146 0.8751543841386175 7.895478702860711 5.004130136759981 0.6987140549205118 7.775197396779543 4.891949393406392 0.6987140549205109 7.969500143898787 1.484198104056237 0.3095991638003625 9.232830715847857 4.448013860965263 0.156452438214156 6.738794980475282 4.450511697970315 0.2783647497417348 6.580768814921749 7.209861696228382 0.3279442612099387 6.430043647273139 5.972222222222413 0.5913466983803357 5.429310368915441 5.972222222222409 0.5049269452939138 5.589685443690334 6.388888888889106 0.6141139233050548 4.277223215711565 6.319444444444843 0.465020576131687 2.101527567336322 2.673881087099136 0.6028719568016468 6.898791067202977 2.743325531543581 0.8528719568016468 6.858697298509257 2.615093756833382 0.7116425716415522 6.989483051307896 7.674211717322715 0.551323146764114 8.965707701337365 7.822440442075503 0.6509619630676695 8.899458850754097 7.648228724752821 0.5996388163035555 8.811125625992476 7.435073484269896 0.6267396058415597 8.91238016115609 7.609285201592577 0.6780627526056737 9.00071338591771 1.664140775326789 0.1365741920238815 0.3468514465854825 1.510216510017902 0.6091763241487398 7.285113844571979 9.233746973896238 0.1707108639796548 4.025608875404696 9.407073553934143 0.1538699547251179 4.195569369284328 0.119551406119208 0.8811572370349254 5.419258516451 0 0.7597075367108718 5.283604692688218 0.2014763327726299 0.67558670380627 5.291365883535525 2.209556673781051 0.3494681289336202 1.026833392227039 1.111352802252494 0.8420244244952075 1.973314816896018 8.017625786405596 0.1650199798289647 5.397233992233391 7.914720229489326 0.3428615421030641 5.334909033031193 7.813761109750572 0.1778415622740994 5.366985409713371 7.93329677519661 0.1263976220184329 5.581233746166593 7.830391218280342 0.3042391842925323 5.518908786964396 8.034255894935365 0.2914176018473976 5.549157369484414 8.931406890781258 0.8647165221498314 0.7079391065066476 8.931401495453994 0.6147165221498314 0.6277238246437919 9.066212888550025 0.6901355545919204 0.7091753220380266 6.388888888889207 0.158653301619663 3.424621934229255 6.388888888889202 0 3.504809471616702 6.2500000000003 0.1577730121329647 3.628974213902172 3.027141371731777 0.154161847944623 2.146986389390591 3.187557761175666 0.2961578255403673 2.051097362628134 3.703775574494778 0.3486709134091995 7.472644940335476 3.590423779481978 0.1747997848721759 7.476649927838508 3.455481480646015 0.311630377517939 7.435806076951738 8.635409437366075 0.4245583989545821 6.574318604479902 8.70485388181052 0.1745583989545821 6.614412373173627 8.712386318342427 0.3259804569040459 6.453799838909635 5.408824673183865 0.6837277996926214 0.8129358909322816 2.140328585957438 0.320773345782271 6.811082209912271 9.097222222222655 0 1.941152492561698 9.142294133447002 0.1580155421438991 1.748316100139295 9.24118514569645 0.1504308949922797 1.877356119746873 1.666666666666972 0 3.504809471616448 1.736111111111422 0 3.384528165535279 1.821185025764188 0.2057641370134061 3.478844161745564 5.833333333333338 0 9.278312163512876 5.69444444444445 0.1582542730473782 9.405477751878019 5.653719866241291 0.155921461452209 9.24632641417697 1.666666666666694 0.5913466983803366 9.037749551350338 6.216498955660886 0.421510378650953 8.519092235790477 0.8474607941202316 0.1473328015181626 7.423535123411044 6.258563593236779 0.1592262874268449 4.641009297322208 6.23407591144244 0.326383163596382 4.589802379803357 6.086623429316983 0.1671568761695371 4.656415614909582 6.250000000000206 0.1212729580352784 4.844758073441911 6.225512318205867 0.2884298342048156 4.793551155923061 6.397452482125663 0.2804992454621233 4.778144838335686 6.817290550802907 0.3230051177077363 6.188313164594419 6.141944148231964 0.3090177104556883 9.012307104673472 2.222222222222595 0 2.542559022967095 2.123015873016235 0.1874632569077024 2.680023372774144 2.074191692567203 0.1297043775804362 2.4758712948618 8.18558725918091 0.4096074044757282 5.018935480471396 8.045234949344898 0.4214242173466132 2.571187749264501 8.009060147991452 0.5346475717546568 2.662150587382881 7.975873174943555 0.6469475107796143 2.460080310580389 4.354929024659334 0.6533075580678773 9.192292039648411 8.677793768896395 0.6968509232259812 6.959356395277754 8.686477926186576 0.8604828693606903 7.099603994595849 7.436578832253861 0.7230016203816204 9.844473876424061 1.643396001753197 0.1520973864100602 2.466665238218356 1.666666666667041 0 2.542559022967062 1.856363514616583 0.1430631800977459 2.598117682444447 3.587570724947927 0.574363365546213 1.86801442828418 3.680555555555965 0.75 1.860964955173867 3.795901743605778 0.6087356852106225 1.991859607779213 6.736111111111183 0 6.99296734797071 6.790146775326638 0.1769647993731156 7.159227343912853 6.599873854686686 0.1445638868690809 7.094427145415306 6.194560361692059 0.6038742270660279 8.477949626893665 4.238314814843529 0.2729165763257737 0.4797414475726916 1.253743181774267 0.34369855981571 0.7956858960861221 5.950517540409004 0.5668829838691105 2.20972825487689 3.002458043879705 0.6827811959416088 5.360057861485661 3.611111111111097 0.1241459787118515 9.123262238480516 3.544389867776659 0.2768833293283142 9.081596228892863 3.750000000000019 0.3380103314651238 9.125064612353263 4.540111660884575 0.4121076141533412 0.46028074894391 4.609157307712644 0.1621076141533412 0.4841550445370304 4.703553240173223 0.357655451325218 0.5469865469731363 2.404899520305237 0.6591040230903155 4.521966207817846 1.614583333333526 0.4875257201646095 5.740037076291549 1.754063825433315 0.3941242786004955 5.773617052223853 1.52972501409502 0.393428378672571 5.643766730146243 1.669205506194809 0.3000269371084568 5.677346706078548 1.755419458539468 0.3809540988371805 5.553555750585371 5.625000000000012 0.8220036450074623 9.581441032845088 5.555555555555565 0.5720036450074609 9.541347264151359 5.719395750021764 0.6688297395452678 9.490110454585363 1.473865545469351 0.5882092346678326 5.702354613083502 1.699559989913799 0.5757349548324422 5.612143633522629 1.614701670675292 0.4816376133404036 5.515873287377323 5.776722570399096 0.691826719792545 4.337399730996921 2.137774407639044 0.1389799779236054 6.270207034036824 2.0683299631946 0.3889799779236054 6.230113265343098 2.182836422844726 0.3174774422927273 6.354670246543787 0.8654060429932295 0.359993774072161 6.953609546173062 0.7208696440397373 0.1491565387290671 6.956870137629086 0.7596703782018104 0.3289531984912224 6.793976371459131 2.003569614873011 0.2701640230133755 6.170739552124168 8.263888888888864 0.8387364011102963 8.049850521497813 8.505830075425918 0.8497812603470241 8.056648651196486 1.005523917483165 0.4167688430940397 0.3143668467782503 7.077193244508578 0.5139462085933003 1.788750731385386 7.083333333333739 0.590604193378987 1.578526288503541 6.938304355619698 0.4233420152143134 1.71034547981234 6.907496207784426 0.5378102986220731 1.802841025485249 6.913636296609586 0.6144682834077597 1.592616582603404 7.052525185498467 0.7050724767867467 1.67102183417645 0.2769421299337883 0.8435972512695928 5.478074909233369 0.1573907238145803 0.7247544883045183 5.48048209654414 4.1380908748976 0.154092269083178 5.995879721277297 4.074260366087196 0.3144767289098479 6.025770155542679 2.880721030400277 0.3174054880046224 5.146875077202788 3.012512232188325 0.3254126114147109 0.7931290927103682 0.384336488013151 0.8407539444192098 7.685992933350409 0.4588971183273228 0.5902173783684955 7.66886743384339 0.32768273508015 0.6807974810643455 7.86096038852887 4.890524107906802 0.6079575813725715 2.681232025424861 4.771825396825772 0.5294679600235164 2.571197429177034 4.820492568621887 0.6315499841370242 2.459652482927636 4.750699216210847 0.680571645462563 2.701423747740544 8.816897947830681 0.490653646616099 2.772489698044466 8.757430631221437 0.4961676095317847 2.924213161582259 8.696892937164321 0.4861176452329754 2.689850411471594 8.637425620555078 0.4916316081486611 2.841573875009388 3.776067718839491 0.2858440077899417 5.545191813687736 3.729013057109078 0.1264100169345161 5.598212329458502 3.57838847590584 0.2669083379992661 5.706392034624594 1.027164996380581 0.6808276053377301 7.298439421281476 4.943274152192815 0.850372633571695 6.690839446448599 5.082340938241565 0.6962917858561996 6.605567186021217 4.864688451125661 0.6477073895142413 6.597734757432468 3.397913949936113 0.3069370750368876 7.759085568101394 1.038002634048165 0.8387986340723114 5.84496197159883 1.003433177321143 0.5887986340723114 5.891399083192415 1.175903425452606 0.6824900967800259 5.934683096159756 5.672702096508899 0.5677122449590606 2.690381147308554 5.533813207619999 0.5677122449590577 2.930943759470896 5.394924318731094 0.5677122449590577 3.171506371633237 5.811590985397803 0.5677122449590606 2.449818535146209 3.144239260755755 0.8399825791522505 4.415858359195981 3.35593259066756 0.8768572327876004 4.534597216496229 8.472222222222625 0 2.30199641080515 8.402777777778173 0 2.422277716886316 8.315353760442164 0.1774937009262967 2.274138965030656 0.7272038095911367 0.4085383527891643 1.797333229253182 0.6062749481528797 0.5087362492345335 1.709436574635431 0.4777350928225667 0.4075417811847722 1.884974476847944 6.527777777778123 0.2499999999999999 3.062899142976519 6.6381360230199 0.4082967943863359 2.999183780378899 6.52777777777811 0.4086533016196629 3.223274217751417 6.527777777777855 0.4086533016196644 7.83493649053888 6.527777777777835 0.4543266508098507 7.995311565313788 8.402777777777711 0.4521604938271477 8.997655782656988 8.396376968752417 0.5427625568597275 9.144991705456334 8.308990078885248 0.3445403099091421 9.184033490754921 8.51092260319329 0.4829818791145741 9.211088107473131 8.51732341221858 0.3923798160819943 9.063752184673783 3.541666666666871 0.4053692348799318 5.381902245830188 3.727610217286166 0.4094339908554256 5.416383621838251 3.529930974352515 0.3904983210647499 5.577583842775109 0.2114648472423042 0.5370281402859944 7.225273802977732 2.74328925197804 0.3127388572286948 4.894417811954117 3.057555250534322 0.1529922633432886 0.7109494448521541 3.075291053118269 0.4029922633432885 0.6475041297311335 3.734427499452976 0.3630041039879924 0.8541119051681577 3.744836931864405 0.207428609192486 0.9328570123804776 3.731545318738512 0.3570321274462883 1.085385141103147 9.198234445381013 0.1413413928820977 7.894711579557724 9.238043339555821 0.3134208007879004 7.812203279792368 9.067387426193886 0.1720794079058026 7.75253807817899 8.93502406428183 0.1206677416861482 7.888485298400706 8.974832958456638 0.2927471495919509 7.805976998635352 9.105679977643764 0.2620091345682459 7.948150500014085 8.005626262442718 0.4353640679889585 2.427524202597731 4.924059135183732 0.4403250684151304 2.565063283271184 4.854265782772692 0.4893467297406692 2.806834548084092 5.138888888889317 0 1.33974596215553 1.078938016458009 0.1284792087955593 7.774486354896558 5.208329625202037 0.690623787007121 3.38453030642625 2.082324883564351 0.8773608037820939 9.879718693918804 1.943435994675454 0.6768900873482278 9.799531156531321 6.388888888889218 0.408653301619663 3.264246859454356 6.458333333333659 0.158653301619663 3.304340628148087 6.458333333333672 0.3093734662287183 3.143965553373185 6.319444444444764 0.3093734662287185 3.384528165535527 7.825857266124181 0.3278851893091802 3.68444290144598 2.626450673466053 0.3194282142907012 4.641124447159957 3.959495481697089 0.6031536733679348 4.280681408362375 3.937042375798881 0.682144755034956 4.041604934317754 3.820606592808208 0.7346213282500211 4.120306333587473 2.792391147422905 0.681047160221911 6.788102965562193 2.777777777778164 0.5913466983803375 2.30199641080478 6.568691578575462 0.3090169589953914 2.919875116000667 6.458333333333686 0.1507201646090554 2.983590478598288 6.458333333333681 0.4007201646090553 3.022805374282787 5.118970949074104 0.822021476337451 9.239017664098043 5.138888888888944 0.8423953289333895 9.409201303594699 8.95756243875724 0 5.06881617129789 9.132649016852156 0.1611348518335992 5.044414712012377 8.975584370533223 0.1428971447867098 4.897967534532123 0.5271932140506853 0.6297784791241574 1.053332237342073 0.6041609915558808 0.8407417491204563 1.011789205794955 0.7388067416700101 0.683216818774576 0.938482323685094 0.7941520533769439 0.6856686324583972 2.245772350464612 1.460347203554306 0.537217057447044 7.39739316045001 1.349699449333059 0.6227088051547658 7.48929524368957 1.303897046905431 0.6463933815957837 7.24850820142061 1.453319751897886 0.1858714005298605 0.4870037629058759 1.526292571481267 0.3224455925537419 0.3134288336942495 1.597222222222375 0.8364197530864219 6.832592273195515 1.510216510017922 0.6955960772351617 6.964363695022186 1.440772065573479 0.8591763241487398 7.004457463715909 1.477830913790389 0.8042882185808358 6.768899683044114 1.390825201585936 0.6634645427295756 6.900671104870785 1.547275358234832 0.6407079716672577 6.728805914350392 8.769008538664821 0.8719386141082044 1.250993257286126 8.635068705515302 0.7137082496976235 1.299230556330097 4.652777777778088 0 3.625090777697772 4.513888888889198 0 3.625090777697763 4.70298296146705 0.1600174208477499 3.573889216627863 2.847222222222265 0 8.436343020944541 2.777777777777828 0 8.31606171486337 2.89742740591124 0.1600174208477496 8.246981969852117 0.631269686039265 0.75 8.294324072787203 0.5421644581585539 0.75 8.170487403608441 0.767666049079256 0.8064325293910377 8.165538251824502 0.7044912906740372 0.5564325293910377 8.143800609748492 9.230802438494122 0.75 3.469878767141523 9.352674942639684 0.8440849758384064 3.551337654029433 1.250000000000028 0.170098581168231 9.057521165046445 1.250000000000029 0.3336788280818129 8.977333627658997 1.111111111111138 0.1635802469135819 8.957562013962857 1.158236883496858 0.1400510296619452 9.210349327097763 1.158236883496859 0.303631276575527 9.130161789710314 1.297125772385749 0.3101496108301762 9.230120940793903 4.93055555555588 0 3.384528165535444 3.726120570493356 0.6846208304180798 2.693641298268926 3.808053442996338 0.5216013928216721 2.608494159477797 3.578053632778766 0.5176194946152648 2.625025884625056 3.679997743761212 0.7139622815785229 2.564848695823789 3.761930616264194 0.5509428439821151 2.47970155703266 3.909997553978784 0.7179441797849301 2.548316970676531 7.569444444444596 0 5.790154287159051 7.430555555555706 0 5.790154287159043 7.591106288562275 0.1504957609484714 5.665899384232089 0.7035056941496443 0.5889954650074678 8.342448116524194 0.7666804525548631 0.8389954650074678 8.364185758600204 0.8399020571896352 0.6454279943985055 8.213662295561493 2.960611087145385 0.1438781418273452 0.4677718586473258 0.9903670312762995 0.8336292533650173 1.966602981403899 0.9809874185725176 0.8270321300897522 1.761220767659126 1.177881351826167 0.8420244244952075 1.851970817267546 1.047757659287152 0.6690565545849598 1.792320398446675 0.5653486318374014 0.2587362492345334 1.413570277568812 0.4865792275420555 0 1.519279319843047 0.3975287639763968 0.1938966943124366 1.443467878107323 4.611096284089055 0.8401964484779563 0.7048098701862059 4.542050637260987 0.5901964484779563 0.6809355745930856 9.647818490955965 0.515908940724173 7.266634779376391 9.829268705597988 0.3250613668452603 7.226366915997384 9.818549785357977 0.4378454112985798 7.401881902376937 9.588478488601279 0.4689648898756945 7.463072239499395 9.769928703243302 0.2781173159967819 7.422804376120387 9.599197408841292 0.356180845422375 7.287557253119843 3.606335196983074 0.837304181628638 9.596304937755264 3.606335196983076 0.5873041816286361 9.516117400367804 3.740784008845396 0.6900392688920736 9.621556068988742 4.559601084730174 0.4274138299771255 2.019316646617816 8.727148585843846 0.1894340926552122 5.951237683935667 8.866037474732739 0.3391889186783795 5.855341771512451 8.888888888889021 0.1497548260231673 5.814539680817085 8.64211840612953 0.1532737925356692 5.819689576767455 8.619266991973248 0.3427078851908814 5.860491667462821 7.206639755103765 0.8444177241638349 0.4894074573445383 7.289252055192284 0.6772251965851135 0.5552971055476534 7.157487803298893 0.6837431778873451 0.3377357703668312 6.515808361809675 0.5955064456909827 1.092272804461748 6.303699801375421 0.547595274877642 1.130186944772493 6.183176676365049 0.4426412146838897 0.9619729995601061 6.395285236799303 0.4905523854972302 0.924058859249361 0.9918412714668495 0.1573394417289152 2.262653655788134 1.052981239535841 0.1573394417289152 2.378869322936538 1.037817189078062 0.4073394417289152 2.312656572787269 0.611363566874662 0 1.481420877909102 2.097875527015272 0.6634342512003985 4.137913831279337 4.305555555555962 0.8773111952570489 1.915469911268739 4.446799274626718 0.682234862077115 1.886419256128001 4.223506805665634 0.7177035273987633 1.878315396687694 3.216608265985161 0.4247997848721756 6.90937000319199 3.147163821540714 0.1747997848721756 6.949463771885709 3.260240906541514 0.3305172757288714 7.048832483593924 9.120056878837101 0.7106490173905202 5.026891377609118 5.069444444444694 0.4047891870604093 4.754059279382676 5.290292961862061 0.422850753642493 4.700396887528496 5.06531842139672 0.3765281566844397 4.589723386864618 3.398481186044862 0.5656485286349928 5.126470126193142 5.347222222222599 0.631055355519238 2.424079937748967 8.912345537123517 0.8420361101138469 4.529564233130579 8.83211704478204 0.8161024998142811 4.345502305998367 8.686592268526379 0.8734527738581931 4.506354664590916 0.2785252970203401 0.1804747044149081 7.442963062229648 0.1124216062896282 0.1234989187098336 7.371601205446202 0.3268118129890567 0.1482916258410441 7.217463649578246 2.64525465948257 0.8514933187274754 4.56517425383149 2.732366514614281 0.8447091153502344 4.332903050502821 1.25000000000003 0.4200985811682311 9.137708702433898 1.11111111111114 0.413580246913582 9.037749551350309 1.15823688349686 0.3900510296619452 9.290536864485215 7.262688572175101 0.2986441296755247 8.542672081069444 0.5890080546206086 0 7.334502250202705 2.980806134884902 0.1232187971080104 8.359894501239211 7.813761109750565 0.4278415622740994 5.447172947100817 8.017625786405588 0.4150199798289647 5.477421529620836 7.933296775196604 0.3763976220184329 5.661421283554038 2.378472753050394 0.6733182263143996 6.203003251582516 2.953786245614547 0.6887682495760593 5.988778904310221 3.659568612664631 0.3764100169345161 5.638306098152222 3.126046261524464 0.6246418920651868 7.486468155179768 1.866566269082528 0.8394810711406282 5.406492695999688 9.391898293264864 0.8159651643927656 9.156380511150532 9.301333796066258 0.5659651643927655 9.106669812912479 9.499088174354913 0.6483393736960497 9.094509248274278 7.484394658378198 0.8573013166886507 3.447609697044855 7.375882488427506 0.8384902000842587 3.339214558861892 7.618366380440723 0.8625367109665232 3.293559573906488 7.494248868867885 0.7010269110507819 3.368527273313936 7.602761038818576 0.7198380276551739 3.4769224114969 6.79729381198938 0.8523397404155373 4.151079690588349 1.527777777777861 0.215020576131687 7.834936490538611 1.597222222222297 0.215020576131687 7.955217796619786 1.597222222222297 0 7.95521779661979 1.717202776096994 0.1437170775667582 7.885946991542722 1.717202776096994 0.3587376536984452 7.885946991542719 2.631255415034764 0.6791321763252882 9.593970494220255 2.074999937026503 0.6844875819859157 2.658619724557534 7.169123531820681 0.3908315923868395 9.487784424896262 2.777781353302268 0.1230051714046812 2.449926772464108 2.777781353302274 0.2865854183182614 2.369739235076661 2.916670242191151 0.2806328382251198 2.573185231072213 2.752309301577814 0.5696924573616556 3.3925660176884 3.520979335037529 0.4247997848721758 7.516743696532226 9.686115179574106 0.8143464925887463 7.529356233920914 9.662247898863356 0.8492924393869811 7.78197056477545 1.108925173675972 0 0.2231730712266382 1.040810749080091 0 0.3323800307015031 1.179225535707491 0 0.3204593211413149 1.188536340082698 0.2415082322938293 0.2520885400020378 1.050121553455299 0.2415082322938293 0.264009249562226 1.196460670743376 0.3920931083991228 7.855065942271082 1.241736736511714 0.414387693087501 7.657842999648126 1.00949357201357 0.3784792087955594 7.734392586202826 3.005350371866866 0.8399825791522505 4.415858359195973 2.967471583988076 0.583061516675633 4.437727687574366 5.208333333333368 0.1777127166755184 9.580998884466654 5.277777777777824 0.4277127166755171 9.540905115772926 5.127433974303315 0.3421712737248088 9.478232553016785 6.393557982103481 0.3446458209185618 5.386050110486573 6.492764331309824 0.1571825640108619 5.489148372841864 6.627580540811458 0.2818938259430442 5.414214530663354 7.786886959056049 0.1596805338941598 8.708460762685748 7.834776309781446 0.3243393380754755 8.662245134005726 7.825667128503197 0.1646588041813157 8.510408698345977 7.614336854460113 0.1673469831333624 8.570799450712599 7.662226205185511 0.3320057873146781 8.524583822032577 7.623446035738363 0.3270275170275222 8.722635886372348 3.359575446655915 0.6622231371197769 0.5467045725549919 8.819444444444571 0 5.790154287159123 6.00846652365797 0.686938332963811 5.744148624785741 4.888622502135239 0.1743625945153144 6.91385943320409 4.722222222222355 0 6.872686041889391 4.86111111111125 0.1540113770664205 6.748368411216257 8.611084001596833 0.5256124129413436 2.980866565396048 8.611084001596822 0.5996137876208055 3.182023957097906 8.611111111111459 0.4259986253205381 3.223464542527562 8.687657520737304 0.5472913141042032 3.172975777781331 8.687657520737293 0.6212926887836651 3.374133169483189 8.687630411222665 0.7209064764044706 3.131535192351674 6.90762144731703 0.6023397404155373 4.261245030414498 4.727645912857012 0.8405010268308168 4.333241755102364 4.690847251226781 0.8064760895133017 4.203363803521244 4.696270941861293 0.6469771163441185 4.310108250519971 4.829736140115672 0.8064760895133017 4.203363803521254 2.15277777777801 0.16358024691358 4.988278913284249 1.984126984127211 0.1874632569077009 5.085649494397573 1.863388385923764 0.3109200470311574 5.01027320925337 1.962594735130121 0.1234567901234565 4.872808859446318 2.032039179574563 0.2870370370370365 4.912902628140046 7.702916848751949 0.1289555452288562 8.260685233554478 7.608920369878701 0.2963025283622186 8.395141663322249 7.644079446327111 0.3276323984647445 8.175067237917588 0.9722222222222535 0.4135802469135819 8.797186939187947 1.041666666666697 0.1635802469135819 8.837280707881678 1.094802513919861 0.3588391757038496 8.732819315825711 4.239114173392157 0.1631829584298534 5.615277445360325 4.135685002187769 0.3237722661019893 5.603278007113798 4.930555555555724 0 6.271279511483562 5.014931801280021 0.1972362154391319 6.358256434281767 4.792974153617559 0.1516886734614456 6.350712170928032 2.320258313406212 0.1578412604582609 8.740585775552653 2.221051964199842 0.3453045173659908 8.843684037908002 2.455074522907839 0.282552522390444 8.81551961773118 9.166666666666625 0.5874535668260412 8.550631193688199 9.236111111111066 0.8374535668260412 8.590565679147362 9.089199642681621 0.6806081642369906 8.673475847321136 3.741464176210128 0.2785333546606137 3.010702668119495 0.5918339724802946 0.3108533707395582 5.345799623961724 5.27777777777783 0.644562450652596 7.942640476286172 5.347222222222278 0.8320257075602971 7.787993082753238 5.419868102350317 0.7061649046091458 7.746050964305811 7.510159967050638 0.3240337139796237 4.791802869987221 7.718493300383981 0.3718732201524634 4.831896638680964 7.574589646446164 0.2510875634593146 4.681353285193911 3.605948042975516 0.207428609192486 0.9328805722458516 3.750000000000469 0 0.8586586789982902 3.73959056758904 0.1555754947955065 0.7799135717859704 1.051293645462094 0.4127368016526109 2.526809816503906 1.066457695919872 0.1627368016526108 2.593022566653175 1.141232243273216 0.3200762433815261 2.425877731280391 6.248109403499241 0.6923145412469089 5.076450631685766 0.5164664620692685 0.75 6.866771252543025 0.632510031224629 0.75 6.851233495657675 0.5433929001800473 0.75 6.737407194480003 0.5784008752892356 0 6.888223798774498 0.6053273134000143 0 6.758859740711475 0.4892837442446538 0 6.774397497596825 0.5164664620692685 0.25 6.866771252543025 0.5433929001800473 0.25 6.737407194480003 0.632510031224629 0.25 6.851233495657675 9.559987682537084 0.8474125417830987 1.735280669479756 9.611520004651618 0.8474125417830987 1.634556017657404 9.547017930799132 0.5974125417830987 1.66510043901941 8.802935534695958 0.6967742406408417 8.130077071377212 5.52395202800173 0.4605133866661922 6.016478112852534 5.717558364035451 0.4154011022155037 5.904699442626663 5.500838108410905 0.5451122844506885 5.861839188691077 5.512312637427518 0.6358924687182149 6.015589441049404 5.705918973461238 0.5907801842675264 5.903810770823532 5.729032893052064 0.5061812864830302 6.05844969498499 1.371327621129033 0.6091763241487398 7.044551232409624 1.527777777777928 0.5864197530864219 6.872686041889231 1.408386469345942 0.5542882185808358 6.80899345173783 7.247879875920447 0.8193771615317944 8.044098516236744 7.370917974949085 0.6772513730666991 8.1284482065644 7.345260321250896 0.8578742115349047 8.159848793028955 7.163810602075371 0.8770431156106588 8.269598142091787 7.28684870110401 0.7349173271455636 8.353947832419447 7.18946825577356 0.6964202771424532 8.238197555627234 4.557420658967287 0.4310478729151203 3.634667377435351 4.420988574463311 0.3354972725384159 3.591506121306838 7.509703300353504 0.6073013166886507 3.491445550816661 7.401191130402813 0.5884902000842587 3.383050412633698 7.64367502241603 0.6125367109665232 3.337395427678294 5.160161752489247 0.8492238941302386 7.397501938204179 7.222222222222619 0.5032210926035211 1.652706984176989 0.7332750130368049 0.8407417491204563 1.014603548070991 0.8027194574812426 0.8407417491204563 1.134884854152166 0.7543400622389793 0.5907417491204563 1.101608244048845 3.198593063177904 0.1529922633432886 0.7048100646671571 3.249129656564091 0.3463210907160972 0.5755761806428884 3.244581609623832 0.1933288273728087 0.4997572756324439 3.101648899788968 0.1438781418273452 0.4616324784623289 3.152185493175155 0.3372069692001538 0.3323985944380602 3.106196946729228 0.2968704051706337 0.5374513834727733 8.622991796630672 0.6688739444978604 9.618283897002273 2.916666666667053 0 2.301996410804787 3.055555555555935 0.1576276668204385 2.425254869412891 3.096585816176214 0.154161847944623 2.267267695471767 6.597222222222562 0.685699588477367 3.143965553373199 6.597222222222575 0.8492798353909468 2.983590478598304 6.489692401149025 0.6915068232579822 2.921508107455563 6.250000000000302 0.8492798353909473 3.584997009004143 6.388888888889196 0.6856995884773676 3.504809471616702 6.180555555555895 0 3.143965553373171 6.04166666666705 0 2.422277716886101 6.736111111111311 0.158653301619663 4.98827891328452 6.875000000000208 0.2938717900144024 4.876233281959844 6.728646247022999 0.146513116903679 4.841626217985795 6.867535135911895 0.2817316052984184 4.729580586661118 6.659201802578552 0.305166418523342 4.881719986679515 5.123681184056574 0.1624535654774085 0.4859190098988216 5.192070916129394 0.1624535654774085 0.3789793696832307 5.192109645291584 0.4124535654774085 0.4614527752367227 2.824266760363433 0.3834124480076622 7.070182045028096 2.658049037373195 0.4031375203004305 6.904614090262837 2.879351084446197 0.3822786211190012 6.865310129393071 2.481562312078631 0.3956893773499173 5.894135135082404 2.481562312078634 0.1526104398265359 5.850396478325615 2.500000000000194 0.2430789375233814 5.713611637834365 2.606820882470577 0.4345686379134979 5.840920205767675 2.60682088247058 0.1914897003901165 5.797181549010886 2.588383194549016 0.3441001402166524 5.977705046258926 4.445851940019757 0.1247865754787495 8.914689499096816 4.584740828908653 0.1247865754787495 8.91468949909682 4.492148236316055 0.3655273162195052 8.914689499096855 3.64977353831374 0.2953477269839833 4.511588746843973 8.824203356382036 0.7206189649921797 0.6140916871644216 1.025358069475427 0.1952589287902677 8.452162934969628 1.203349918346683 0.3507064834470174 8.517611928807451 3.720926351884487 0.5843313910922749 1.757475262140741 3.651481907440045 0.8343313910922748 1.717381493447013 3.766828095489858 0.6930670763028973 1.848276146052359 5.12028971397174 0.8495635062048497 6.052273391599649 5.150476689193805 0.8708062294003611 5.83632716249077 9.174679650175722 0.8420361101138469 4.538480637117153 9.11063165151903 0.8420361101138469 4.416933107069237 9.314584937923291 0.8587027444816586 4.326407462718747 9.250536939266599 0.8587027444816586 4.204859932670831 9.214596361994294 0.7007388545955056 4.379995371596504 1.875000000000056 0 8.195780408782147 2.023864768513874 0.1649698794141743 8.142740355098656 1.925536109430318 0.1437170775667582 8.006228297623906 8.54166666666702 0.5474724170872767 3.172377144561296 8.541639557152381 0.7210875793875441 3.13093655913164 7.430555555555785 0.4521604938271602 4.587341226347323 5.566820995253316 0.3289883559943063 9.615943490676964 9.48373552641694 0.75 8.15640729892433 9.386973742007111 0.8442589897752644 8.326858486038807 9.354038945912853 0.5942589897752644 8.282674365592392 9.354312660234978 0.8442589897752644 8.195778252162015 7.459796183508335 0.6895689803240956 2.656015640976338 4.773285477289857 0.6813924137863741 5.966626958446428 9.378851124561798 0.75 3.947383773770747 9.494513632480594 0.75 3.910027230004855 9.452551100363564 0.8587027444816586 4.055880870416642 9.336888592444769 0.8587027444816586 4.093237414182535 8.333333333333233 0.5721965991921903 9.541046478345191 8.263888888888783 0.8221965991921903 9.581140247038903 8.183100031327371 0.6577256644546791 9.478526719934234 5.320464321854342 0.1562885783090996 5.725415430751911 5.138888888889085 0 5.669872981077722 5.244168882511966 0.1382560445153594 5.548357186995885 9.469852312355595 0.8410685807542413 1.993315429369463 9.619086519858973 0.8351768836820392 2.115027464411079 9.219443331225872 0.6836183926682642 9.082211229592236 8.722653405592547 0.1881152447802882 1.839129601821845 8.680555555556017 0 1.700589880399301 8.602794431735358 0.1595974721523352 1.647233100474967 4.47519133996931 0.3104523560558251 0.3542427672585007 3.884350396475856 0.3096240596364108 7.94495299967228 3.819444444444907 0 0.978921627952978 3.675392487419954 0.207428609192486 1.05314352120054 3.806152831319014 0.1496035182538023 1.131449756675647 0.6412275465047614 0 7.226877440161949 0.500098527631987 0.1482916258410441 7.081426754474503 0.6593557427499979 0.1491565387290671 7.075284407528006 9.818549785357977 0.5607477125635515 7.332514367093673 10 0.3699001386846388 7.292246503714665 9.829268705597988 0.447963668110232 7.156999380714121 5.992704993563265 0.4036858538780079 8.342279843432721 6.068717553427838 0.3818481436123449 8.457693419758108 5.376984126984541 0.8125367430922982 1.717772924124938 5.409224389355213 0.8762936847292495 1.504944819710492 5.43378938640168 0.333678828081815 2.873194979365119 5.503233830846121 0.1700985811682341 2.913288748058847 5.486111111111468 0.1635802469135809 2.743027866435881 5.644682768109454 0.3032332445740308 2.765939907069971 5.714127212553896 0.1396529976604499 2.806033675763699 3.941269841270226 0.25 2.35194179123474 3.965431178501672 0.3874642209051071 2.526266420564197 3.913050226120723 0.1374642209051072 2.476321040134299 3.988385409425868 0.1398710857115187 2.23477410247119 4.012546746657314 0.2773353066166259 2.409098731800648 4.040766361806817 0.3898710857115187 2.28471948290109 1.365793086234919 0.8052047422497529 8.333283615041466 1.321939463545468 0.642126892331654 8.450900405148412 1.206146377310602 0.8369221500819011 8.433678504970217 1.135534131205364 0.8767024727261696 8.249916954921146 1.091680508515912 0.7136246228080707 8.367533745028091 1.251327217440229 0.6819072149759225 8.26713885509934 6.177887548337258 0.3315222413017616 8.717375582227188 5.972222222222319 0.75 7.433998803601611 5.972222222222326 0.586419753086421 7.353811266214164 5.972222222222326 0.836419753086421 7.273623728826713 6.034607660450988 0.8655060877652504 7.518853244584031 6.034607660450996 0.7019258408516715 7.438665707196584 6.034607660450988 0.6155060877652503 7.599040781971481 6.281194481511898 0.3117099724292647 5.884113652433838 2.456597222222322 0.1957304526748979 7.489127735555297 2.526041666666762 0.1957304526748979 7.609409041636474 2.430555555555656 0 7.474092572295149 2.481485387029229 0.1799860256988958 7.303706848758024 2.550929831473669 0.1799860256988958 7.423988154839201 2.576971498140335 0.3757164783737937 7.439023318099348 9.158763495942338 0.3913413928820977 7.952057033267765 8.895553114843153 0.3706677416861482 7.945830752110748 0.8388650619670144 0.8424750696541197 0.7824995134447101 9.469515534357555 0.2499999999999999 2.854872364403718 9.519969065143385 0 2.910850276157761 9.57208352396187 0.1686764445424281 2.733965377704375 0.7265947516639791 0.8472404295114802 6.944743930018772 0.664660338444012 0.5972404295114802 6.9232913837873 0.6105511825086185 0.8472404295114802 6.960281686904121 2.346488753504968 0.5642925049551912 5.100117997265207 2.485377642393846 0.562928385727105 5.318465024675181 2.554822086838301 0.5722256419658011 5.140211765958943 3.097138970487224 0.6850816128350352 4.521710755594098 1.652860680686526 0.3149387573235152 5.210420306890301 6.422849984758734 0.5864197530864265 3.405014486387004 6.176431274796286 0.5922269878670412 3.423119652631708 6.283961095869829 0.5992798353909535 3.565389561161893 6.420247956704573 0.5922269878670354 3.000816771833779 6.52777777777811 0.5864197530864201 3.223274217751415 6.597222222222571 0.5992798353909468 3.022805374282802 5.763888888889179 0.5349794238683118 3.705278315085293 3.623866875860096 0.6005572241130314 8.320267215748274 3.806989500736434 0.5777127458524869 8.307178277524686 3.753993386617736 0.6276651354283286 8.099033991112462 9.612953234229655 0.8395478316474577 2.627980154013394 9.584133496383417 0.5895478316474577 2.574393827806354 9.522465545382463 0.75 2.468984199144083 9.627298337369455 0.8351768836820392 2.368897394173421 9.598478599523217 0.5851768836820392 2.31531106796638 9.688966288370409 0.674724715329497 2.47430702283569 5.82674402568917 0.4154011022155057 7.571488561523065 5.872435559609248 0.4992449811333767 7.411423122735354 6.04137918323026 0.3680282328307589 7.470477205167427 7.582914938291533 0.1452262463661977 4.996056106533189 7.708333333333536 0 5.068466450672032 7.649048855939526 0.1218732201524634 4.871990407374678 7.718493300383964 0.1218732201524634 4.992271713455857 7.593074905341961 0.2670994665186611 4.919861369317013 7.777777777777999 0 4.94818514459087 7.847222222222436 0 5.068466450672048 7.787937744828427 0.1218732201524634 4.871990407374695 5.869577634769074 0.8455916345834752 5.904523699560624 5.881052163785691 0.6863718188510016 5.978086414531504 5.705918973461235 0.8407801842675264 5.983998308210979 5.69771918593966 0.8819717671692461 5.748501802860407 5.709193714956276 0.7227519514367725 5.822064517831286 5.872852376264117 0.7275634017527213 5.742589909180932 4.986095820704708 0.4121328808366208 3.868895505571139 5.076573591165179 0.3047450183442634 3.949156835680752 4.948217032825916 0.1552118183600071 3.847026177192738 0.735088686741656 0.8712102401711018 7.772511884349932 0.8305948458673158 0.8334952340219645 6.233489607463222 0.8660825464774882 0.5834952340219645 6.158860346799772 0.96907269911919 0.7102191575578889 6.324463578320499 1.82613894775723 0.3091496090397652 7.458033959414966 8.211367704265093 0.1540317532286578 3.363421831143157 8.12500000000033 0.25 3.464715702923115 7.954582419694256 0.3939421255574311 3.448030276032672 8.024026864138698 0.1439421255574311 3.488124044726401 8.040950123959018 0.2979738787860889 3.346736404252713 2.007932413275083 0.838119900340051 0.6757735771820506 2.083394558491761 0.588119900340051 0.6460104722225024 2.110196496644102 0.6764924987065483 0.7829535166454333 4.305368950057749 0.1541219261497838 3.349575613181213 4.348900720135832 0.3351697990649041 3.439339750306249 4.48797621452286 0.1810478729151203 3.354010996579278 4.30465588987467 0.1258557652902065 3.182949576604907 4.348187659952753 0.3069036382053267 3.272713713729942 4.165580395487641 0.2799776914399902 3.268278330331877 6.827762204100205 0.6885830784913451 8.142865625573679 6.688873315211321 0.6885830784913463 7.90230301341132 3.680555555556019 0 0.9789451878183522 2.117026096173695 0.4676029725250996 5.635339314681642 5.372677662037074 0.8220214763374476 8.799584747024884 5.528377774439154 0.844095521833875 8.732690501044264 8.831042290700399 0.8443746475343327 6.585333641375772 8.987107257039256 0.8571013393134244 6.759454905233527 5.845433021411628 0.853377381713793 7.425816414245988 5.845433021411628 0.6033773817137928 7.506003951633438 5.907818459640297 0.7188834694790434 7.590858392615858 0.6713107653867021 0.4297966597621553 6.688339729487721 0.6589352308197702 0.3991565387290671 6.935417591397613 4.911316294800377 0.1600174208477499 3.694170522709047 4.94919508267917 0.4169384833243636 3.716039851087448 8.55740480417353 0.1488442306274838 1.863889246845145 8.549088124797333 0.308441702779819 1.690251160839637 8.668947098654522 0.3369594754077719 1.882147662186516 2.336059820809535 0.1393350854005267 7.301223949523362 2.456434096727548 0.3193211110994225 7.251119532067413 2.431545931920641 0.3350655380754247 7.436540418864686 3.561107505831821 0.574488940695663 4.184495708562269 3.731562051286358 0.5814100031722821 4.363095223652501 3.592673162397477 0.7128776580543683 4.202720148877599 7.700265840735815 0.5744883513348865 4.008236776706846 7.668700064415566 0.7128772929806929 3.990013699721762 9.17466039903573 0.4078799437114075 9.045622662302437 9.108989711912834 0.4305215615715942 8.873708646887085 9.355918577186575 0.3788318480687032 8.90815532902897 5.078097391275096 0.4873482736490573 0.7593194177736152 5.150361961011916 0.5898885978905786 0.6510331303936054 5.076437264503339 0.3768582850369452 0.5383542473042853 4.943381197152283 0.4667468829275238 0.6071963555663696 5.004172694766519 0.2743179607954239 0.6466405346842949 1.125298254097955 0.6798757621321726 1.034586956648058 6.071421702049187 0.3382995914674065 4.784955083812609 5.947734540428101 0.1671568761695371 4.656415614909571 5.880623604993658 0.298123099633632 4.62209885500703 2.649411825343501 0.1468227807369978 8.149611219893771 2.699617009032458 0.3068402015847473 8.200812780963684 2.827982961466804 0.1600174208477496 8.126700663770944 2.608098326109983 0.1396651540957629 8.002920958849963 2.658303509798941 0.2996825749435125 8.054122519919876 2.479732373675638 0.2864879348327607 8.077033076042703 6.855684438204673 0.8464045921702559 5.926037948743645 6.786239993760218 0.8464045921702559 6.04631925482481 1.217788467281149 0.853318389454914 5.524285321218878 1.287232911725598 0.853318389454914 5.404004015137709 1.149505221393501 0.853318389454914 5.403333596838355 2.764278808395106 0.6943794811823614 6.38839789842331 5.924145299145457 0.7642054447610058 6.160250613562548 6.063034188034338 0.7642054447610058 6.160250613562559 5.829590728158038 0.8427177733367694 6.278585094675368 5.968479617046921 0.8427177733367694 6.278585094675379 5.920402693970001 0.6069232180977753 6.287837502835464 3.732652834191137 0.3047814735799492 6.059616857262281 1.907612907165817 0.7080305415198221 6.02938038752733 7.013888888889101 0.3852184883947394 4.796045744572402 6.805555555555758 0.408653301619663 4.948185144590799 6.798090691467446 0.396513116903679 4.801532449292074 8.611086944313969 0.5383079027625493 7.26280443631205 3.889923596488173 0.4089810422075308 2.297509121335496 3.837542644107224 0.1589810422075308 2.247563740905597 3.86170398133867 0.296445263112638 2.421888370235054 0.2014763327726299 0.5508497073775239 5.085787102331409 0 0.3839089070555811 5.079839827174649 0.1890806722231075 0.4412256612643692 4.92165609495858 5.595238095238511 0.812536743092299 1.683406836673177 5.563072083130328 0.8761652922351015 1.895305759497093 5.359615776571402 0.4086375828398441 0.1729477710549419 5.528272267372442 0.457353175568693 0.3637570500819268 5.446606761754988 0.5540470717923003 0.1908092790269849 5.221737523277479 0.5945129890961234 0.1638265032511131 5.39039401407852 0.6432285818249722 0.354635782278098 5.303403028894934 0.497819092872516 0.3367742743060549 9.499898396966199 0.557527085153017 3.533773774085387 9.530270090101567 0.6690811796241483 3.393183411026615 9.62242579334017 0.5384383131003525 3.333680338767452 9.415658666269474 0.552234665538086 3.306910588766759 9.446030359404844 0.6637887600092174 3.166320225707987 9.323502963030871 0.6828775320618817 3.366413661025922 4.339457272090374 0.8426978487410093 8.496009954805697 4.455788163324 0.8663724760782985 8.719475002602646 4.318750000000378 0.8188198118753669 2.504928157207526 4.337232969509575 0.8422859408556147 2.721223061215474 3.571924603174626 0.8188198118753538 9.030360842548371 3.750000000000029 0.8422859408556082 9.154515015684757 0.1320035823652546 0.1202813060811718 4.287323198663098 0.2832314662733523 0.1526896668134484 4.3568097716395 0.2693590696382223 0.143985364553999 4.079169207186333 3.300386382282572 0.8463141461219917 3.108501320715884 3.336652395692068 0.8707855311253142 3.331666265476422 3.184174473011713 0.5967613500445874 2.436731513024851 4.016922384256906 0.8344081388646911 0.540596451274589 3.845038151712377 0.8384268377886593 0.3888404389426068 9.604660421942661 0.1686764445424281 2.604566993743694 9.575840684096423 0.4186764445424281 2.550980667536653 9.522465545382463 0.25 2.468984199144083 9.40884024699125 0.1573344949815406 2.622940969748357 9.380020509145012 0.4073344949815406 2.569354643541317 9.462215385705212 0.3260109395239688 2.704937438140927 7.222222222222271 0 8.316061714863626 7.144947033114645 0.1613672280349112 8.180272642800674 7.078907273270577 0.1312971465421623 8.408215651301647 9.128145997777626 0.8264506545672142 1.78962647767553 9.285754821585282 0.8410685807542413 1.896335689696511 2.361111111111114 0 9.037749551350363 2.29166666666668 0 8.917468245269184 2.19246031746031 0.1874632569077299 9.020566507624533 5.307539682540092 0.8125367430922982 1.838054230206105 5.664682539682959 0.812536743092299 1.563125530592008 2.013888888889107 0 5.309029062834032 2.083333333333559 0 5.188747756752864 1.914682539682762 0.1874632569077009 5.205930800478741 6.527777777777972 0 5.188747756753129 6.458333333333523 0 5.309029062834295 6.35912698412718 0.1874632569076999 5.205930800479004 2.361111111111468 0 2.783121635129446 2.291666666667015 0 2.903402941210615 2.19246031746067 0.1874632569077024 2.800304678855321 5.486111111111316 0 5.309029062834237 5.347222222222433 0 5.309029062834224 5.446428571428774 0.1874632569076989 5.446493412641283 2.291666666667031 0 2.662840329048271 2.152777777778142 0 2.662840329048264 5.544330840380461 0.4012361568639934 5.928268665580788 5.35072450434674 0.4463484413146819 6.040047335806659 5.567444759971286 0.316637259079497 6.082907589742245 4.357960440917037 0.5845646765063695 0.4530892074429771 4.288100688100318 0.8345646765063695 0.4744643863278606 4.427056352206611 0.6921589012024107 0.3565481839099724 4.820154413511283 0.6027050368133033 4.855888621034271 2.602768286210354 0.6808042125093632 4.509516235489649 2.596402515616936 0.8293108937818878 4.411401901924028 2.689880141342065 0.6740200091321222 4.277245032160979 2.355479469706386 0.6837167354597484 2.67746497809106 1.805898925947945 0.1236874120287731 8.948782790397459 8.297945482202334 0.5955165928286175 7.566012738857439 8.4722052372076 0.5926977901855954 7.392927812525314 8.31706328481626 0.6112722939097271 7.33241189023658 6.388888888888911 0.3125860947184596 9.174867676480289 8.611111111111274 0 5.429310368915609 3.314895384619518 0.1685899968277182 7.778526112377232 3.30608496672482 0.3386964792188427 7.863800346907846 3.249397530228013 0.3054205894734812 7.617400955409296 2.916666666667058 0.8413466983803375 2.22180887341734 2.847222222222621 0.8413466983803375 2.101527567336164 3.160542727910051 0.8426978487410095 2.241382038584701 3.091098283465614 0.8426978487410095 2.121100732503526 3.021653839021167 0.6840445471213469 2.161194501197246 2.380214562717998 0.8477087577185864 9.021216242917326 2.380214562718006 0.5977087577185863 8.941028705529877 5.265852370003115 0.6641521728306645 9.625726396262579 6.259034235934518 0.8534687638533137 1.782450977672172 6.189589791490076 0.689888516939734 1.742357208978446 6.328478680378961 0.6034687638533137 1.822544746365898 7.496462954684388 0.604330958499621 1.342029882186865 7.339773712376478 0.5825634243018246 1.411046966232242 0.7202205968648201 0.8479746433476103 4.150497104053322 8.796529720219741 0.3318027985026186 2.320855165940254 6.397452482125667 0.1592262874268449 4.641009297322212 6.25000000000021 0 4.707622532428436 6.388888888889094 0.1212729580352784 4.844758073441915 8.154840641129407 0.8582028193033254 5.201026844135084 2.438682062792194 0.3122667007949381 4.367194620161044 1.330288875431999 0.677007868740144 5.677796936432578 1.245312218851729 0.8387986340723114 5.72550284181405 1.473865545469354 0.8382092346678326 5.622167075696053 1.441654012750307 0.6915276241227466 5.476579415837413 1.356677356170037 0.853318389454914 5.524285321218885 1.213100686132683 0.6921170235272254 5.579915181955409 3.558497076832007 0.6586947566384878 1.724430966557327 5.760268418313673 0.3766693803779296 1.696451493509133 2.011031704504017 0.1872599651322792 0.4981402504198341 1.942083676763366 0.3476707640196796 0.5312857769585655 2.105961459957093 0.3386579844314946 0.3355022488606054 6.525887181277016 0.6855161925925384 5.085899939283397 7.152777777777981 0.1218169790848786 4.960370672065723 7.137024555480569 0.2933273577358242 5.072966945771881 7.152777777777988 0.257035467479618 4.84832504074104 6.527777777777894 0.5893207319954464 6.409649531868451 6.418699487165487 0.5814100031722833 6.62804427736023 6.382192949004581 0.6209264557095009 6.385210790454606 9.123750765857938 0.6625460179227773 7.349973666361613 7.312634588236225 0.8788829484388072 7.646573482232907 7.445591515664853 0.7109086559990994 7.562961125299545 7.27524142584309 0.6430883931998138 7.563301808792074 1.892122719734921 0.170098581168231 4.336892807336597 1.875000000000252 0.1635802469135794 4.507153688959555 1.736686335490491 0.2890206444401013 4.430708516631764 1.667241891046049 0.1254403975265219 4.390614747938038 1.75380905522516 0.2955389786947529 4.260447635008806 1.49817472604006 0.8125955775455767 3.006592917401949 3.914480833695119 0.718145531707488 0.1741868424384906 3.914736712526158 0.5526000401820286 0.3848898694434668 4.028033656608812 0.5938918963121979 0.2107030270049763 4.149211799211185 0.7142833704251981 0.1654353234936306 4.149467678042223 0.5487378788997387 0.3761383504986069 8.677651361127801 0.3402200466126567 6.718313619799055 5.446428571428982 0.8125367430922982 1.838054230206111 5.525793650794071 0.812536743092299 1.563125530592004 5.486111111111526 0.6250734861845972 1.700589880399057 8.264897970624833 0.1635973763874874 3.544868779716183 8.094480390318758 0.3075395019449185 3.52818335282574 5.673340728158026 0.6469873206618739 6.549218033357993 5.885547478796433 0.5728838803175572 6.519644057028611 5.733040083971876 0.5344356543058922 6.662690106438319 5.661446160141079 0.4567976178017523 6.540176045273224 5.873652910779485 0.3826941774574356 6.510602068943841 5.813953554965636 0.4952458438134174 6.397129995863515 1.458333333333546 0 5.309029062834014 1.444750089839859 0.1609839728816268 5.477498518969597 1.599169458539472 0.1434283786725709 5.443297886677627 3.462696910236341 0.4077759512654591 4.461560478826593 3.675231203167711 0.4813356220473525 4.541748016214051 3.545867626264966 0.5735596707818934 4.627434995040809 3.520409961410993 0.3875717757185241 4.597275725670732 3.732944254342364 0.4611314465004175 4.677463263058189 7.61969124472692 0.6824412891669169 3.622457184362307 7.623283540290283 0.7387688847002498 3.768359842566614 8.362892454169128 0.6874146715560954 8.764124311429066 3.425377035112002 0.6268572327876004 4.574690985189957 3.554740612014748 0.5346331840530595 4.489004006363198 3.637911328043373 0.7004169035694938 4.654878522577414 0.6151944446041354 0.6739827517580513 2.122127905892804 8.532982509376529 0.8363680538652909 6.852719748652742 6.103679765674281 0.1236874120287676 5.504810927037482 6.800319200432035 0.8643718311039752 9.879718693918822 6.869763644876477 0.6455640976577193 9.783051763823964 2.916666666666996 0.8413466983803375 3.344434396841609 8.515251292926834 0.4406577713470257 7.687399928446971 8.528846001619854 0.4838355993464949 7.48333429092019 8.62903633777981 0.470063804389003 7.384968723267248 8.546805198317799 0.268503823364307 7.516446192738591 8.615441629086789 0.4268859763895337 7.589034360794027 9.257616633612788 0.406660957505695 8.79686866171083 8.749926361765009 0.4739323941075699 3.063181511418338 8.749926361764999 0.5479337687870318 3.264338903120197 8.826472771390842 0.6692264575706969 3.213850138373965 3.796646164996915 0.1588032124747442 4.040921784078588 3.741789722258007 0.3266827883690847 3.919217850658201 3.695143557261383 0.1678795758943405 3.864230762520846 3.578297545538009 0.1291801103130235 4.057309623605761 3.523441102799101 0.297059686207364 3.935605690185375 3.624943710534633 0.2879833227877677 4.112296711743117 6.003707223166549 0.3238045247676244 5.754037495027601 3.795901743605774 0.8587356852106225 2.07204714516666 7.504787003440656 0.5957339069164008 9.034985773625573 7.678998720763338 0.6470570536805149 9.123318998387195 6.198549028451849 0.6082866210821269 6.087715006831965 6.246625951528769 0.8440811763211212 6.07846259867188 6.195227137038787 0.6351319004705067 6.234088123839788 6.243304060115706 0.8709264557095009 6.224835715679705 6.378818900533216 0.7150076320306222 6.152300108949111 5.845433021411635 0.6897971348002141 7.345628876858541 6.557588376054364 0.8314100031722833 6.708231814747684 3.187006835375058 0.5037778832242735 4.151758883221332 8.443696795090801 0.6158360138888086 6.90426887983038 8.313492063492095 0.7794679600235177 7.044516479148466 6.319444444444439 0.1582707134019731 9.525861569865249 6.482272710876185 0.3206146104286108 9.603436603758563 6.55171715532063 0.1623438970266377 9.596449809568588 6.542117510835077 0.1303110122434429 9.446966287028573 6.704945777266821 0.2926549092700805 9.524541320921887 6.47267306639063 0.288581725645416 9.453953081218549 7.847222222222637 0.1637226612108351 1.620624344930473 7.91666666666709 0.4137226612108351 1.580530576236771 6.59722222222225 0.1635802469135791 9.07784332004432 6.742602627278341 0.3382844110446723 9.189796394688692 6.812047071722787 0.1747041641310932 9.149702625994973 6.826438238676817 0.139438525693298 9.011421882112682 6.971818643732908 0.3141426898243913 9.123374956757054 6.756993794232372 0.3030187726068772 9.051515650806401 5.487401890338193 0.2941031202731182 5.060766235439284 3.937039164643815 0.2988521279190495 2.180341432571947 6.923340417176346 0.6590060329730764 8.435837232198914 7.083333333333381 0.5864197530864212 8.316061714863608 7.062229306065227 0.5725862798866549 8.516024769586364 6.923340417176348 0.4812395815063187 8.435837232198907 7.083333333333383 0.4086533016196636 8.316061714863601 6.944444444444502 0.4950730547060851 8.23587417747615 9.017036487724059 0.3277595968766714 4.118636311991 4.769208255099256 0.1377787132262369 8.369121853521214 4.792356403247402 0.378519453966974 8.409215622214933 6.117550460661256 0.6898469094776269 7.234250240709173 6.117550460661249 0.8534271563912058 7.31443777809662 6.179935898889919 0.7189332441564562 7.479479756466491 4.110277520368117 0.4734255182105443 2.14485050558754 3.964842708586804 0.4986067709221412 2.125106142914186 3.987238298992462 0.6922901177096481 2.102404854364185 4.02178549515151 0.45802499815744 2.036273888525407 3.876350683370197 0.4832062508690369 2.016529525852053 3.999389904745852 0.2643416513699332 2.058975177075407 2.634917579471385 0.1228693606922653 0.118382924701585 2.604643281571538 0.3211154011964685 0.1940100568471901 2.602038404985866 0.1982460405042032 0.312392981548775 2.820782743113003 0.1438781418273452 0.2655198233355576 2.823387619698674 0.2667475025196104 0.1471368986339726 9.342228231125087 0.5805552204211667 7.873564148304379 3.045285584122829 0.8467613500445874 2.356543975637394 3.150272756476938 0.6894591987855968 2.2959296034173 4.701444949574258 0.8520820241135079 2.631482920186445 6.826386804780072 0.3050151763745361 9.31835674951061 6.681006399723982 0.1303110122434429 9.206403674866237 6.611561955279535 0.293891259157022 9.246497443559957 8.582127608398199 0.6806676054550341 2.515840712754216 2.344697245026152 0.3159293290164114 1.26870692873326 2.485616169935142 0.316372708392644 1.507887220803618 2.222810288033403 0.5480573083250115 3.503111871845446 2.368890257668204 0.6632299834425215 3.51919306242864 2.234894369642852 0.6578858566490084 3.717304822088843 4.961908402210163 0.3464624057491368 5.331262573329237 4.796977846654613 0.1507319530742408 5.316227410069079 4.742350875638447 0.3050507494557265 5.365941871534977 6.125897929072178 0.8539279949333629 6.3147448147477 6.077821005995259 0.6181334396943687 6.323997222907783 5.98326643500784 0.6966457682701324 6.442331704020605 4.302832354445926 0.152737350616468 2.463943726473679 4.118660358344044 0.2902015715215751 2.517987049721954 4.121383559454051 0.1374642209051072 2.59660234621548 4.379611714956411 0.1241459787118454 2.585315366532226 4.195439718854528 0.2616101996169525 2.639358689780502 4.376888513846403 0.2768833293283134 2.5067000700387 0 0.7531935152751117 9.451058186376564 0.1257912843667784 0.8738889565739005 9.575853612633738 0.2125763236396164 0.665571952097013 9.584411992023359 2.649683392700627 0.172442364843463 5.663640771396222 2.649683392700624 0.4155213023668444 5.707379428153012 2.756504275171009 0.3639320652335796 5.790949339329533 8.247809655762758 0.5375016896458368 9.013262111405453 4.61943633753906 0.6710672247119324 4.024328971022036 3.05206006905634 0.8052405157972078 2.754564898662799 3.161497493393695 0.8463141461219917 2.867938708553536 3.932796239457357 0.1738711285370236 7.470087584792182 4.002240683901797 0.3325244301566879 7.510181353485911 4.097222222222324 0.1586533016196643 7.393905034907773 3.890034924873426 0.1227675013371157 7.259547022784084 3.959479369317866 0.28142080295678 7.299640791477813 3.795053386552899 0.2966386298741393 7.375823341362223 8.382936507936556 0.7794679600235177 6.9242351730673 5.919900497512842 0.170098581168234 1.951038299409475 5.989344941957286 0.328751882787897 1.910944530715752 5.782320508133946 0.2892585274296478 2.035180021213804 8.541649681652048 0.8426977901855954 7.352834043831596 8.386507729260707 0.8612722939097271 7.292318121542861 8.819426045454064 0 2.662850951710953 3.021653610456965 0.1573021089322821 1.760256946221623 2.986111111111519 0 1.941152492561276 3.146527500555408 0.1419959775957443 1.845263465798819 1.279343881131721 0.826659243965548 8.165538251824549 1.395136967366587 0.631863986215301 8.182760152002743 1.164878012337031 0.7033617166917177 8.09939349188242 7.533402143224096 0.3286272482695372 7.376144594455933 7.458025737319389 0.509932791220773 7.332626006216302 7.325068809890766 0.3005053072448836 7.336050825762213 4.93055555555598 0 1.460027268236692 4.930555555555975 0.1586533016196627 1.620402343011587 4.791666666667087 0.1229568651879164 1.607662615127113 9.335805677857909 0.8520138477219348 4.51563778639126 9.375722389676479 0.7107165922035934 4.357152520870612 6.988358801557984 0.4538834264288173 8.568084937330678 7.009462828826139 0.289950448161826 8.368121882607916 1.098051880122503 0.7657732622039047 5.563543397067879 1.204729236292344 0.6190916516588187 5.417955737209244 6.380270645222049 0.3299072623521111 3.876249338911374 6.449715089666494 0.1721342502191464 3.87236590270707 6.625865659175686 0.3139874493303426 3.832725390980269 2.579967380899058 0.3968227807369977 8.109517451200043 2.758538517022361 0.4100174208477496 8.086606895077216 2.538653881665541 0.3896651540957629 7.962827190156235 9.715707013303954 0.8395478316474577 2.556129880489542 9.730052116443753 0.8351768836820392 2.297047120649569 9.367624277437741 0.4115130162739238 6.413383232032297 9.423065593201597 0.1615130162739238 6.465812486478056 9.501186988397713 0.2500000000000001 6.337479533744773 9.58033193614345 0.462178774108965 6.330104141713221 9.635773251907306 0.2121787741089649 6.382533396158981 9.502210540947335 0.3736917903828887 6.458437094446506 9.359973037168086 0.4723035700024376 4.763924071133984 9.477727076332338 0.5743174177243724 4.603234807392024 9.455293299399914 0.5705783722695867 4.846896452481189 5.197229786922199 0.5698141951060762 9.855681174424317 5.265852370003127 0.4994695605727935 9.677242671053367 6.180555555555872 0.1507201646090555 3.464715702922967 7.718492798054946 0.2805266728214851 4.671521853925869 0.7025955084583799 0.178922745385381 2.841922487443945 0.6397016149003687 0.428922745385381 2.815817505206506 0.6385749835930866 0.25 3.001634823168136 0.8168276849622391 0.1455409717182559 2.930512203397669 0.7539337914042279 0.395540971718256 2.904407221160229 0.8179543162695212 0.324463717103637 2.744694885436038 0.9778697322869827 0.2108372353430939 6.869425450433139 0.8333333333334905 0 6.872686041889164 1.002181073275207 0.1370315193125302 6.749821532049085 5.148960669264376 0.8382848976003462 4.152124715827064 5.143528840166359 0.6015659774317302 4.195731176459107 5.222920085414401 0.3601890097241918 9.190580995323131 5.373263888888904 0.1957304526749014 9.173066020691813 5.471428199574632 0.3516519141271104 9.141080271355928 7.451558012048999 0.3201080531724398 2.016389521003562 7.295022889942777 0.7244393747970819 9.844473876424061 6.111111111111521 0.408653301619663 1.820871186480247 5.972222222222636 0.4950730547060833 1.740683649092795 6.067169560916849 0.2973933348435268 1.627211138186968 1.525237087590106 0.3190793820656991 0.7882842381556647 9.097312246548587 0.1728056634369725 2.474454559968861 9.079678058554251 0.4228056634369725 2.54444635752535 8.945221524415135 0.3539179290626552 2.436862945483659 8.749899252250371 0.6475475564078373 3.021740925988682 2.350144850795176 0.1229692110525856 9.592730939717201 2.419589295239643 0.3155835939030199 9.522875342416038 2.191718614694903 0.2881614847071071 9.523823295001504 8.45861052851458 0.5495199621861262 7.596993450052095 8.389974097745588 0.3911378091608995 7.524405281996657 1.66910282739561 0.4081850022326916 9.839624925225021 1.530213938506719 0.4839696345611915 9.775850003692316 1.596519038670732 0.6232103120189991 9.801343657796702 1.455193989052912 0.5903392256809212 9.577193661489018 1.594082877941803 0.5145545933524214 9.640968583021721 5.242235049868327 0.8426978487410104 5.248414690614112 5.128801600794262 0.6647193250784598 5.130531192369665 5.164344328703931 0.8220214763374494 5.0708642585086 5.395790563927579 0.8788659449517241 5.12061304290178 5.282357114853513 0.7008874212891734 5.002729544657333 5.360247836017909 0.7215637936927345 5.180279976762845 7.058303622698332 0.4632831986467141 6.082388254293451 7.046568627451085 0.550865407891554 6.304297909231477 7.050803690407058 0.6743166224842345 6.22178844600122 5.555555555555912 0.4135802469135809 2.783121635129609 9.386597561733206 0.8462343873563604 1.537267133629699 9.267900348373296 0.8462343873563604 1.52137486624905 9.32209548788072 0.5962343873563604 1.567811554991704 8.578794764055816 0.5176800463755969 2.431464538467141 8.365818939523155 0.514061481676211 2.3209919459369 8.347025579416954 0.4921545743293837 2.477556869845255 0 0.6273681742890231 2.436617747147464 0.2349503491807682 0.5119579065747166 2.463516543387903 0.1987702060527949 0.597711393955315 2.605685352619451 9.027777777778102 0.840386069142834 3.66285120968242 9.28720468019729 0.8440849758384064 3.669324465061897 3.790370796328934 0.8343313910922748 1.71738149344702 3.865346188050224 0.8587356852106225 1.951765839085492 6.111111111111171 0 8.316061714863537 6.041666666666732 0 8.195780408782362 5.923260549118821 0.1536858538780088 8.302186074738994 9.41274787953348 0.6428057659284947 7.484141863215061 4.149669888720426 0.8335544324990256 1.971510201758853 4.067621138830098 0.67394676464074 1.934355687177808 4.28855877760931 0.7108656277560745 2.066108926547424 4.130837968133431 0.8443013643122435 2.609834298044436 1.518275792310604 0.3729475608768463 7.999761013639606 2.893549743196054 0.4320219911664103 1.914405285856378 0.7362379448515386 0.4874145637142643 5.58329839597154 5.698431167017468 0.8811583358612043 7.035362852015004 5.748862737213587 0.7341026107687327 7.006693675084454 5.566888237973798 0.7261549185054035 7.175029351668256 8.586632149614093 0.4258066085758292 9.318076641301722 4.834402965575856 0.5735596707818934 7.949051700270564 4.946583708929444 0.5735596707818943 7.754748953151319 5.057546427830589 0.6251543841386176 7.935572471554437 4.626600271383184 0.852362667881735 5.270086489831524 4.484409528008637 0.6997701948936106 5.203758836048024 4.722222222222252 0.1593158993741491 8.903964316333507 4.584740828908655 0.2841024748528986 8.780904264079886 6.215079925830743 0.6614608786708924 1.103433441440312 6.352649965725606 0.8638656037932502 1.022484466231142 6.427188486264997 0.7093720494842328 1.065519301129566 8.118672493755588 0.1535311769689296 4.584735679374516 8.192727401311902 0.3116078302101365 4.513712676384101 8.268490310094631 0.158076653241207 4.396042137622912 8.055550991782765 0.1217132410915047 4.38503766635284 8.129605899339078 0.2797898943327117 4.314014663362425 7.979788083000036 0.2752444180604343 4.502708205114029 2.638738886197832 0.8779041347840661 9.879718693918775 2.499849997308961 0.8779041347840661 9.879718693918781 2.566729281999692 0.8418016248297335 9.636903851330169 2.427840393110821 0.8418016248297335 9.636903851330175 2.566579279308662 0.7197057596137997 9.757185157411394 9.611287230435096 0.8365655025436872 8.396537157293778 9.578352434340838 0.5865655025436872 8.352353036847363 9.712784523169994 0.6299768570669065 8.312822299353519 9.53668712501676 0.8492924393869811 8.008444806479485 3.888888888888933 0 8.316061714863419 4.777081601409733 0.8343933056850352 4.097702145130466 4.745706630414015 0.6408693951983369 4.074568640548073 5.56719887019112 0.8396155401733336 4.065882376988926 5.363534133912286 0.8505996579482107 3.949955726754707 6.171034793325804 0.3785262082332649 8.190283594146091 0.4925576185748259 0.3331557505696478 5.755636999461847 0.9090584973855844 0.6894369432340819 3.970099103477922 5.690701839269148 0.5927177733367694 6.358772632062808 5.538194444444592 0.5542695473251045 6.501818681472516 4.981675985342287 0.2847921012993744 0.1703572641709621 4.983205242732521 0.447277649517461 0.3828566173661264 4.864079965854613 0.4071626198620183 0.2124993531951643 4.748749484522025 0.2844461499753071 0.1726268649945635 4.750278741912259 0.4469316981933937 0.3851262181897278 4.867874761399933 0.3245611796307497 0.3429841291655256 9.133752193241399 0.7355823358678963 3.733056892428664 9.254290206771703 0.5796673117063027 3.657009273711315 8.994863304352517 0.5759684050107303 3.650536018331838 8.490164433905544 0.3773660142034075 7.426039714343714 8.618213076292852 0.7427664805504036 3.323045771516923 2.360358233329471 0.453563504390984 2.382618622382323 2.361111111111484 0.4086533016196625 2.542559022967101 2.143636137011649 0.3797043775804362 2.43577752616808 8.861115215097415 0.5940998247051197 2.65918629064542 0.9768857181715315 0.5031878259181691 5.545923643122407 0.8389646027178973 0.5818811284377421 5.487845670950189 0.9852571680118699 0.5762131977865758 5.707883087868572 9.375650614094791 0.2500000000000001 6.338305548432011 9.431091929858646 0 6.39073480287777 9.297529218898678 0.1615130162739238 6.466638501165295 3.055555555555793 0 4.948185144590576 3.155073374857191 0.1723168683486633 4.867136773004692 3.016184485968303 0.1723168683486633 4.867136773004683 2.967525045968967 0.1570399764844209 5.096758755447471 3.067042865270365 0.3293568448330841 5.015710383861587 3.106413934857855 0.1570399764844209 5.09675875544748 6.944983022790421 0.517674689738052 1.947052161685837 7.090012000504462 0.6849368679027256 1.815232970377037 6.92031496378031 0.7088009579314983 1.8293232644769 9.163668836013477 0.6726850419235746 1.608255867997753 10 0.6373340323481446 2.014185697587651 4.766633843808807 0.8476325987452683 8.329597218441151 4.906567821056979 0.693412667832915 8.433417284952235 5.001045088359334 0.8457800690876467 8.41988178137454 4.863325160298485 0.853263890752325 8.497444054657223 5.003259137546657 0.6990439598399717 8.601264121168304 4.76884789299613 0.7008964894975933 8.510979558234915 9.441435579210344 0.75 3.8107935000769 9.381859989796219 0 3.881962357473126 9.497522497715014 0 3.844605813707234 9.441435579210344 0.2499999999999999 3.8107935000769 0.6441280475620874 0.1797966597621553 6.59596597454152 3.765863298046585 0.6351986852282803 1.448518878899751 3.725492501718078 0.8008672941360054 1.311455293639415 3.742494157248758 0.6649347125685522 1.195023108397567 7.361111111111104 0.1507201646090544 9.59906231306277 4.899673136938756 0.8635620671788284 2.725197893734013 4.878895864290429 0.7156440912923363 2.573559178790886 2.42866071407695 0.55983666357303 0.6374285711440261 8.979609788407016 0.3471733366607682 8.214537375946998 0.6925594727483522 0.5861061013632288 4.957460266029313 0.6077538261866752 0.5444294667713445 5.110843952979861 0.8108527025272602 0.5944665647234777 5.200839855682127 4.86111111111154 0.5003177109378087 1.4199828171255 4.166666666666805 0 6.872686041889366 4.306757494746024 0.1878448249046303 6.906159920878872 4.309124972076374 0.156452438214156 6.738794980475276 9.045900421453947 0.8067158608401482 9.058874014037887 9.128657499950592 0.6226810252329138 9.178081572989766 9.24942374516321 0.8159651643927656 9.156957110302695 9.050749516631448 0.8702850311353523 9.183743374890547 9.133506595128095 0.6862501955281178 9.302950933842428 8.929983271418832 0.6770008919755005 9.204867837577616 5.07451362580391 0.5348240840400524 0.5035948642609248 4.941457558452854 0.624712681930631 0.5724369725230093 4.867532861944277 0.4116823690769976 0.459758089433689 6.666666666666733 0.3713395322119129 7.3766356844926 7.874733613246592 0.4243625945153174 3.022604624671164 7.951388888889259 0.5928497942386828 3.003637362945271 7.909455835468814 0.5172123887540002 3.1629328150992 8.107201037598447 0.4968815474673406 3.182999872021387 8.072478815376227 0.4040317532286578 3.042671681593352 6.666666666666722 0 8.316061714863574 6.736111111111157 0.2043266508098507 8.195780408782415 6.597222222222268 0.2043266508098507 8.19578040878241 6.534363950986148 0.1247112619321761 8.395349056044628 6.603808395430582 0.3290379127420268 8.275067749963469 6.673252839875037 0.1247112619321761 8.395349056044633 0.8063286391177299 0.5852274907986617 5.700001191676863 9.702777521733257 0 4.650326730091232 9.588404177095349 0.2223035700024376 4.685662759692761 9.649813505998029 0.1522444142552981 4.819961475790308 9.619920351956257 0.3745479842577357 4.79438548633847 9.734293696594165 0.1522444142552981 4.759049456736942 2.929380470399614 0.3326823798688649 4.917253094759999 2.829862651098216 0.1603655115202016 4.998301466345884 2.048301721459888 0.8292184630320578 8.359095878263076 2.21986795749629 0.8390769431287713 8.207072461744868 1.388888888889267 0 2.542559022967042 1.390480293944286 0.1542817283590485 2.677969989601408 1.365618223975423 0.1520973864100602 2.466665238218336 5.094899884259494 0.8220214763374494 4.950582952427425 5.326346119483143 0.8788659449517241 5.000331736820606 0.7709480365338548 0.8064325293910377 7.923080783321781 8.677478188067113 0.4956575088354448 7.514976031251578 8.663883479374093 0.4524796808359756 7.719041668778358 3.231075323315782 0.1291801103130235 4.177590929686917 0.9066520007005678 0.3113291765497589 8.203219666988604 4.053500016570503 0.3513285736583477 2.717784839233012 4.234948811562377 0.3666017033697085 2.585126219491211 4.311728172072861 0.338010331465086 2.706497859549758 5.551105674460604 0.1555327277210125 6.475396688322139 3.583147850411321 0.4891859544377412 4.357595782213177 3.666318566439946 0.6549696739541755 4.523470298427393 0.6669852428646349 0.3244286907952205 3.597557551458354 9.378025892820638 0.4634421093146106 3.452314887197477 5.541527362018185 0.4717967834089607 1.642999623117869 5.664682539682955 0.562536743092299 1.723500605366901 5.730506513551773 0.4392061234702287 1.518893375008355 8.124999999999975 0.1522545557206537 8.120376629450236 7.984751012561553 0.3131116641122672 8.025565040459956 7.91530656811711 0.1608571083916135 7.980687513711076 7.911250182085254 0.1289555452288562 8.140403927473326 7.771001194646832 0.2898126536204697 8.045592338483045 7.980694626529697 0.2812101009495098 8.185281454222206 6.530376254219567 0.1216934405095022 6.241663319136178 6.361317062864574 0.2999989631712865 6.206328135117388 6.53037625421956 0.2822807674620785 6.340512858491211 1.999978599970236 0.6840963908866293 0.5355589798782974 2.358395948666417 0.8418016248297335 9.516622545249042 2.124976792427278 0.86061936293624 9.475462677125233 7.988964270749164 0.8260131120375378 3.634425875789862 7.915927523764562 0.651153084515804 3.688992057026127 7.843629919682391 0.8251399724782661 3.559375652853082 8.049855959065923 0.8762421371846979 3.425695856392403 7.97681921208132 0.701382109662964 3.480262037628668 8.122153563148094 0.7022552492222358 3.555312260565449 0.3949028957624098 0.8496070667791725 6.918638169506233 0.4490120516978032 0.5996070667791725 6.88164786638941 0.5430967721371533 0.6968474962906527 6.975158300750507 3.700219091688259 0.5606502821491857 2.095338320362131 2.227711502399809 0.6885563421815072 0.3573912121767589 6.527777777777906 0.4993141289437545 6.257914921919094 6.358718586422908 0.4283055226617843 6.276038096158603 6.352022646538481 0.5492319783712852 6.189500531660931 6.52108183789348 0.6202405846532555 6.171377357421423 3.656054847818168 0.5508672941360054 1.351546760460126 2.309925868968739 0.1513980192992155 0.4854257977797908 2.370513660089739 0.3083556553407827 0.5234678895462601 5.658201507335314 0.8378862996924782 1.273184964575903 5.478668833799661 0.8762936847292495 1.384663513629322 4.097222222222364 0 6.752404735808195 1.523264994606333 0.4358714005298605 0.4624247671058339 6.095909383843525 0.1711427152978693 4.836162001331459 6.23479827273241 0.2924156733331478 4.973297542344938 7.934396327117608 0.7759355794586951 0.3295812895011951 7.931977445632954 0.6514433251640563 0.2244764088868959 7.918811389818798 0.8755077457053613 0.1051048806142993 8.074836262032854 0.848028750368229 0.2767990082505603 8.072417380548199 0.7235364960735903 0.171694127636261 8.08800231784701 0.623964329826924 0.3961705365231568 8.349071470840181 0.1488442306274838 1.984170552926297 8.357562530150524 0.3106014622843128 1.83364708988758 8.202935503755201 0.1617572316568291 1.910910335604062 8.12309752042226 0.1217595661596561 2.107478994757415 8.131588579732604 0.2835167978164852 1.956955531718696 8.277724546817584 0.2706037967871399 2.030215749040932 2.916666666666976 0.5081390455737093 3.665184546391402 3.194444444444756 0.5081390455737091 3.665184546391418 1.112217227274049 0.1215496320764411 0.105626180833225 0.9738024406466499 0.1215496320764411 0.1175468903934132 1.053413607053377 0.3630578643702704 0.1464623591688128 8.106357010904215 0.5075085984199941 3.01924369169376 8.071634788681996 0.4146588041813112 2.878915501265724 8.997511611312767 0.5180149896488414 7.682756438850551 0.9078222334850865 0.1688853773266334 0.6748581768205109 0.8623019043206561 0.3441459881268438 0.5312537682196812 0.9775578178975926 0.4188853773266333 0.6516709872939163 6.422849984758734 0.4086533016196692 3.405014486387005 6.283961095869826 0.4077730121329709 3.609366766059923 6.214516651425397 0.4007201646090618 3.445108255080718 9.183355265893663 0.7179906556788179 1.325604495957041 9.063245949998299 0.8462343873563604 1.399017467323364 9.042337472435296 0.7168844953559256 1.550220994735716 5.347786765252906 0.8730274782134032 6.821270661775387 5.355132725098128 0.7180240608576024 6.960937161428648 5.399870098586248 0.6772970255385077 6.731059682214515 3.043612268287292 0.8772117198645681 1.988141721374578 2.974167823842846 0.7185584182449056 2.028235490068298 3.218043885085839 0.7199095686055776 2.047808655235659 4.896808669138873 0.8486589113217071 8.237810027140025 5.036742646387045 0.6944389804093538 8.341630093651107 4.802331401836518 0.6962915100669755 8.251345530717717 6.90908265254885 0.5448450849298672 0.8993702926122997 9.876351263864814 0.1263935190958826 0.5612811033454344 9.78025774945471 0 0.5603657496571496 9.687778692358698 0.1875716509956191 0.4018215965889844 5.018720755986385 0.6430300272023448 2.553367456475202 0.8872792999532928 0.3052172676919661 7.482184159670302 1.202354349828814 0.1627368016526108 2.59129499898203 1.317972573803856 0.314834188062671 2.515401214233334 3.635358420004859 0.373934376980624 7.144107493378794 3.729312668370866 0.4247997848721759 7.316274853063611 3.794934640523 0.4491345921084481 7.101456369141774 3.611252518018842 0.5387973302293767 6.974818059232195 3.705206766384848 0.5896627381209286 7.146985418917012 3.545630545866708 0.5144625229931046 7.189636543154033 4.939534702088705 0.8398885978905786 0.6739282075279704 4.828066053496677 0.6800850463685348 0.753219309971584 3.896859074219841 0.1500996158455449 8.887309883361404 2.242371860331881 0.8473310069176386 6.815247009710014 2.465547753765807 0.8528719568016468 6.858697298509236 6.077910968102394 0.8455916345834752 6.024805005641811 6.029834045025474 0.6097970793444809 6.034057413801896 0.4866107510703326 0.5986133627168768 2.839897045194036 0.4275944680666871 0.8486133627168768 2.873870421313243 0.3529154177440238 0.696231561434276 2.877391248318865 7.582018788288647 0.5470373927216217 1.690950550320387 7.49640971081978 0.6924556185482655 0.3546426100670381 3.470191272086776 0.1232212672361799 2.695539234010434 3.494628969171913 0.3005212957456085 2.573917789362643 3.341909425217481 0.3218981204720755 2.730202544454713 1.80555555555558 0 9.037749551350338 1.944444444444466 0.1571502057613257 9.158030857431562 1.944787814836829 0.1236874120287731 8.948782790397459 2.36111111111126 0 6.632123429726938 2.519160148484319 0.1531375203004305 6.744239015487932 2.522069028173543 0.1421903730267784 6.573148368399679 0.4218293338731886 0.8496070667791725 6.789274111443209 1.476757609881215 0.8614254027751909 5.762697778206307 1.561734266461484 0.6996346374430235 5.714991872824834 1.33318093984386 0.7002240368475022 5.818327638942831 9.351120508740042 0.8410685807542413 2.014262124158547 5.313613326956414 0.1382560445153594 5.42807588091472 3.87643394518087 0.8277127458524869 8.50764712099331 3.895277892417554 0.8427503372448184 8.688591864267845 3.463677806333849 0.682949662756132 8.325646815941731 3.589810930473803 0.8323924386431006 8.241253777669423 3.593804317091489 0.7100575740714292 8.104413591305919 1.892361111111308 0.2375257201646095 5.659849538904111 1.753472222222418 0.2375257201646095 5.659849538904107 1.805555555555753 0 5.669872981077543 1.806147158766649 0.1565985584358859 5.783640494397288 1.667258269877759 0.1565985584358859 5.783640494397284 5.119845075554764 0.3099132412358872 0.5697390626167324 2.148232405029022 0.8372614887806199 9.716719346963821 2.009343516140125 0.6367907723467537 9.636531809576338 2.14722395526002 0.7146222925627138 9.837000653045017 9.486470288427224 0.75 6.857128273148154 9.556865799762544 0.5967927863505931 6.863899459557134 9.612346974247032 0.8467927863505931 6.914225066169053 9.447618857464397 0.8488018258454614 6.977710901168719 9.392137682979911 0.5988018258454615 6.9273852945568 9.603302064747599 0.8249962037857419 3.116711617375858 9.552848533961765 0.5749962037857419 3.060733705621815 9.503353112233823 0.75 2.984355347288993 9.614213914125132 0.8395478316474577 2.88686152085935 9.5637603833393 0.5895478316474576 2.830883609105307 9.663709335853074 0.6645440354331997 2.963239879192172 9.681284556904895 0.3303835968626356 8.165859973561581 9.588616744184286 0.3938562215791563 8.305979047103897 9.576129624815426 0.4365273752834793 8.103184338812392 9.518843898139492 0.327868768165577 7.958721023220589 9.426176085418883 0.3913413928820977 8.098840096762904 9.53133101750835 0.285197614461254 8.161515731512093 6.875000000000058 0.1586533016196638 8.275967946169862 6.805555555555603 0.3629799524295144 8.155686640088698 6.742697284319483 0.2833645635518399 8.355255287350916 2.013888888889119 0 5.068466450671689 1.893150290685672 0.1234567901234565 4.993090165527486 4.235924505613307 0.4041219261497838 3.309481844487485 4.418531770078419 0.4310478729151203 3.31391722788555 4.235211445430227 0.3758557652902065 3.142855807911179 6.428224799151636 0.4891859544377446 6.782919910695798 6.250000000000122 0.6006245738573796 6.636315909351318 6.259525311986271 0.5084005251228408 6.791191542686885 9.910883499482367 0.1767374388397908 0.0891149110914046 10 0.2787719342460792 0.1885937039648586 9.910883499482367 0.2790202468886064 0.09947879287345406 9.722310927976253 0.2760645267367781 0.188678069154057 9.811427428493886 0.3780990221430666 0.2881568620275111 9.811427428493886 0.2758162140942508 0.2777929802454616 0 0.244993687852968 7.775450935957213 0.1099205397656446 0.1217134700943665 7.779022342585618 0.1777151482013803 0.3013417606428231 7.950997171790956 8.049230561001774 0.4035311769689295 4.544638720490173 8.199048377340818 0.4080766532412069 4.355945178738569 7.986109059028951 0.3717132410915047 4.344940707468497 8.852216603672035 0.152587627797984 1.040325805374474 8.940333573860659 0.3171065663763991 1.090834559799621 4.219121492424712 0.3596247305884437 4.056665218662937 4.233010381313592 0.2798922203003771 4.257134062131561 5.899035172602474 0.8427177733367694 6.398866400756544 6.056453484627733 0.8539279949333629 6.435026120828864 4.286799180574049 0.8366739190268973 4.15312413399519 4.425688069462938 0.8366739190268973 4.153124133995199 4.305555555555826 0.8413443704594912 4.356165507885724 4.286799180574042 0.6780182894863884 4.282792333777302 4.166666666666938 0.8413443704594912 4.356165507885716 8.113818285627829 0.4704204666464536 7.77044876233127 8.093977015786551 0.4409525066229355 7.999556012009689 7.936507936507925 0.5294679600235184 7.926579390410375 7.991628877675483 0.406843707314885 7.734088459062351 7.971787607834205 0.3773757472913669 7.963195708740771 8.149097956954108 0.3183282539143021 7.807065080661666 8.028134161311671 0.1400234805071087 0.3506305181404465 7.993063124669286 0.3169375366868803 0.5231020063972245 8.034915593753821 0.1769140561797715 0.5866976861031773 8.201454342043807 0.1206178977623694 0.5042469935138792 8.166383305401421 0.297531953942141 0.6767184817706573 8.159601872959271 0.2606413782694782 0.4406513138079265 6.18055555555574 0 5.549591674996622 6.353875442420939 0.1571825640108619 5.489148372841857 6.173124210118733 0.1236874120287676 5.384529620956315 8.52918996976604 0.17526430534196 9.614072020885475 8.459745525321589 0.42526430534196 9.573978252191765 8.598758960323613 0.353094014854159 9.676270643362509 7.696534064979346 0.3283373232225708 5.483293118948739 7.799439621895615 0.1504957609484714 5.545618078150936 7.816069730425385 0.2768933829669042 5.69754145540196 8.56068459694831 0.8420913146345339 0.8911972037075933 8.630175215012956 0.8719386141082044 1.010365009945835 8.382339882918332 0.4056773146987181 1.088205486098896 8.382321224115682 0.1556773146987181 1.035584619572097 8.452859191040977 0.3374850916057291 0.9339944706710879 7.007236717219507 0.6195250686964535 2.916980200347321 7.084654270182758 0.7849794238683141 2.776257845921255 7.099628926929785 0.6351649128586836 2.697482082777241 9.136686252729225 0.8676532282754987 8.963003670640356 9.015920007516609 0.6743690891156469 8.984128133327427 2.123015873015874 0.1874632569077299 9.140847813705737 2.152777777777796 0 9.158030857431555 2.280700406350732 0.1229692110525856 9.231887021473597 2.211255961906296 0.1229692110525856 9.3521683275548 2.25093850158881 0.3104324679603154 9.214703977747778 3.363591269841283 0.5688198118753542 8.990267073854607 4.115019183877385 0.33900540238734 2.029588958405715 4.137414774283042 0.5326887491748469 2.006887669855714 4.026527158660778 0.3236048823342357 1.921012341343582 8.28056927991501 0.6696537343414415 4.782046706893815 8.32594131285472 0.8476298183065887 4.865428987272235 8.355785246887208 0.7058326376099141 4.997987479576613 3.505203359840175 0.4715571624918165 8.988694832960704 7.152399232124379 0.7183631503572423 9.844473876424061 7.15864296475503 0.8461692317464962 9.72419257034289 7.08919852031059 0.6273614983002404 9.627525640248027 6.859246777702783 0.4215103786509457 5.261250261765579 6.85924677770279 0.3301636802706087 5.100875186990685 6.666666666666859 0.408653301619663 5.188747756753136 6.81230020504135 0.6033205580394212 5.229250468564171 6.812300205041355 0.5119738596590842 5.068875393789277 7.00488031607728 0.524830936690367 5.14137789880172 5.339184412582365 0.1267023176038249 6.83789957424052 5.468130224999721 0.2828542825285747 6.780871128124767 5.287101079249029 0.3224327702787247 6.928110553801402 2.296647540747666 0.1544097009652502 6.915655519574385 2.291666666666808 0 6.752404735808103 2.449715704039868 0.1531375203004305 6.864520321569096 1.581834957328223 0.3227698738148455 3.144125610570511 1.413343016701289 0.4717852044468419 3.046846743293254 1.637063614928943 0.476175824459157 3.086780454789407 1.668258071722034 0.3178619752726288 2.998720139151224 1.499766131095099 0.4668773059046252 2.901441271873967 8.736345290389268 0.5495199621861262 7.597024024172363 1.460282301975679 0.4991932075494594 5.550073919669293 4.818255910389664 0.4304946710062329 4.430397153855391 4.942810457516599 0.4491345921084484 4.632151909004862 5.014334341762213 0.4813600788977844 4.425680239891441 4.935979246190336 0.5905010268308168 4.533710598571002 4.739900814817787 0.5396356189392653 4.538427512534952 3.589810930473808 0.5823924386431006 8.161066240281976 2.886904761904773 0.8125367430922994 8.814369982913941 3.113324212510684 0.8758526887930351 8.839939128444449 8.317254100207197 0.8353411958186889 8.973168342711741 8.465821413196858 0.8406020630325798 9.104897936762622 8.252544475771828 0.8355290652624887 9.175698636408367 8.236465242645767 0.6708702610811776 9.111117427769408 8.709303585947008 0.872274357994702 5.626278459715254 8.563729280436842 0.7120089516110586 5.715555815825502 8.769859141502563 0.7248463744556074 5.581052688628731 7.053571428571607 0.8125367430922994 5.412127325189623 7.182764991161364 0.8466207240308579 5.504762937243552 2.840289786921617 0.5933943305243101 0.4162306517258422 2.82255398433767 0.8433943305243102 0.4796759668468628 2.929705193534426 0.75 0.577824604905686 3.032754706148447 0.6013931142796813 0.4240734997384459 3.0150189035645 0.8513931142796813 0.4875188148594665 2.925603496951691 0.6947874448039916 0.3259248616796226 6.164802333258227 0.4215103786509524 7.426313771226618 5.972222222222326 0.4086533016196633 7.353811266214164 6.117550460661249 0.6034271563912057 7.39462531548407 6.117550460661256 0.5120804580108692 7.234250240709173 6.310130571697158 0.5249375350421582 7.306752745721628 9.903891884713131 0.381788552655769 0.09947879287345406 9.715319313207015 0.3788328325039406 0.188678069154057 0.8430131705750281 0 7.348228201793977 0.8525606608267344 0 2.550951658556042 0.7914206927577432 0 2.434735991407638 0.7153183846183166 0.178922745385381 2.605997164142539 7.393834308344744 0.5924796044259748 8.778294192456734 1.525422486014032 0.1950762049626902 6.180048660672062 1.607471618605133 0.3546839145101803 6.217204098058442 1.748715799257944 0.1596077095474902 6.188153642788605 1.667258269877749 0.1565985584358859 6.024203106559628 1.749307402468851 0.316206267983376 6.061358543946008 1.526014089224939 0.3516747633985761 6.053253561829465 3.74054040682633 0.3099767808333111 0.5005427279109962 3.681505394793322 0.1544012860378046 0.4589993383910724 3.809035012033492 0.1555754947955065 0.6596015151883527 3.687257218070671 0.2922123032073476 0.7267146378696516 3.628222206037663 0.1366368084118411 0.6851712483497279 3.559727600830501 0.2910380944496457 0.5261124610723713 0.421005294998553 0.1572123542804142 6.652158750022974 0.4481880128231677 0.4072123542804142 6.744532504969174 0.3940788568877742 0.1572123542804142 6.781522808085996 1.182569425776524 0.787217057447044 7.477580697837432 1.252013870220978 0.787217057447044 7.357299391756266 1.347685579112202 0.8354917477077218 7.485807118147196 0.9259127510764381 0.1752606108002105 0.2854513780028507 0.8504965692783011 0.8270321300897522 1.76013597819526 0.859876181982083 0.8336292533650173 1.965518191940034 8.673870138934404 0.8397345936163566 5.879431643269371 8.780955025921171 0.8632932218625484 5.982003519901034 2.638888888889113 0 5.188747756752896 7.088151955107699 0.8503764202021704 7.149923609651515 7.068908125031807 0.6959690778558112 7.219000716564399 6.925200614368588 0.8455926576536408 7.18232576096479 6.857544461291683 0.8761733505124025 7.060911008447014 7.001251971954901 0.7265497707145729 7.097585964046623 8.435402270873588 0.3176441214239543 9.47969957943365 9.907375434766092 0.1234989187098336 7.361362575054514 9.736644140364078 0.2015624481354268 7.226115452053969 9.677304138009394 0.1546183972869483 7.422552912176973 6.945765381293872 0.7849794238683141 2.776257845921244 7.005915780370449 0.8345456448281394 2.923843989555793 1.347685579112182 0.8354917477077218 7.726369730309541 1.157769115405249 0.8700259811851755 7.866577899066487 7.665524365033219 0.4415618556242585 5.902551327067208 7.648163253922083 0.4162274934843398 6.133090497056118 7.517361111111233 0.5253343621399187 6.080834110188547 7.441080021789427 0.4378873664143905 5.948164630124761 9.565299479430394 0.6039541807306412 3.884793443540589 9.621386397935064 0.8539541807306413 3.918605757170923 9.523336947313364 0.7126569252122998 4.030647083952377 9.389714260377648 0.8159651643927656 9.402209620157354 9.434280447270108 0.5501949032862119 9.40626630424908 9.491813883987902 0.7342297388934464 9.532311255151855 9.353905978948898 0.8301283901798271 9.593768190367641 9.398472165841358 0.5643581290732735 9.597824874459366 9.296372542231104 0.6460935545725927 9.467723239464863 2.569444444444636 0 5.790154287158751 2.551006756523073 0.1526104398265359 5.970677784406791 2.676265326915019 0.1914897003901165 5.917462855092062 3.482031173485144 0.6878280247438864 9.498612536989704 9.063300616014095 0.5962343873563604 1.479178500149815 1.71898839137659 0.8299014188317669 7.002853154818481 1.649543946932151 0.6663211719181887 6.962759386124754 1.736111111111257 0.8364197530864219 6.832592273195521 1.940753931920221 0.8798572229135914 6.952305261027689 1.871309487475782 0.7162769760000132 6.912211492333962 1.854186767741115 0.7097586417453583 7.082472373956922 9.344086799518934 0.4012888857310649 1.072103060847198 9.512312333013691 0.3394933026131852 1.160969811921183 9.45361677634444 0.4364054932649767 1.275642196435666 9.32679343496627 0.3858286321731119 1.336490379643097 9.495018968461029 0.3240330490552322 1.425357130717082 9.385488991635523 0.2889164415213205 1.221817995128614 2.427173972447955 0.6868970134945702 8.666210193423151 2.306172061658627 0.8379642593755801 8.746938776968236 2.255831068821061 0.6856730170941665 8.850686774616367 2.310770118273564 0.8477087577185864 8.900934936836148 2.431772029062893 0.6966415118375766 8.820206353291063 5.208491128345864 0.6642162771680505 4.88840023203629 5.252480132975492 0.8421948008306013 4.886002424199563 5.439937363569512 0.7210607457823253 4.93814901642947 7.900983064840226 0.2882328556829803 7.828290351056771 8.041232052278648 0.1273757472913667 7.923101940047053 8.110676496723091 0.2796303030120204 7.967979466795931 4.724436271409576 0.853263890752325 8.738006666819611 4.525232607768434 0.8663724760782985 8.839756308683857 1.636221044143452 0.3609013595055076 2.390620164538318 5.543630147780868 0.6437604889047372 9.6776848194318 0.6037117444752894 0.6654241593366257 8.740900380835164 0.7101442663233786 0.4707697944336072 9.777815441490528 0.7029363246462047 0.3725150471991988 9.627269118622294 0.5638352222530041 0.3985046551962021 9.849453677131764 0.6392199720747695 0.6099495868724464 9.803270173804357 0.6320120303975956 0.511694839638038 9.652723850936122 0.7783210744679701 0.583959978875443 9.581085615294885 7.186015093660121 0.1497319236125793 9.219028821547454 7.152777777777793 0 9.398593469594143 7.030234642931799 0.1408315923868395 9.407596887508813 2.858016726033957 0.172442364843463 5.783922077477406 2.860399460964238 0.3350390852496627 5.882623333118481 2.919049401597139 0.1625967204061997 6.009136848881017 3.049191189965663 0.1238214137796129 5.833922524039156 3.051573924895944 0.2864181341858126 5.932623779680231 9.027777777778095 0 3.745372083779236 9.157442539655893 0.1707108639796548 3.889018601710832 9.133752193241399 0.2355823358678963 3.733056892428664 0.9116666666667066 0.3110082304526779 8.912336242876329 0.7083622937110632 0.3155105166694346 3.294594467889304 6.907679738562218 0.5501795368353086 6.090464476198274 0.3547013017040792 0.6595540979550693 1.920868574039092 6.666666666666799 0.7493141289437546 6.097539847144208 6.666666666666793 0.5886348609392009 6.195816098835268 6.666666666666787 0.8393207319954464 6.249274457093565 6.524403729306536 0.8440811763211212 6.078462598671896 6.524403729306529 0.6834019083165677 6.176738850362955 9.148649057820474 0 4.477462391583915 4.81917805769077 0.3335970205121908 7.167417956598186 4.722222222222314 0.1592344259968763 7.246525871364668 4.819178057690785 0.1743625945153144 7.034140739285258 4.861111111111198 0.1208887852437732 7.247988730607636 4.861111111111184 0.2801232112406495 7.381265947920563 4.809661110530435 0.8397520575055561 1.149666215695309 5.045106270942744 0.8409268222534827 1.153328769709951 4.993656270361628 0.6806788797590388 1.203811635412082 8.075396825396812 0.6182043611338146 7.860837040513106 8.232865904675439 0.5296889077332317 7.933813662112421 8.968431989550002 0.8161024998142811 4.346988373329459 9.048660481891478 0.8420361101138469 4.531050300461672 1.012679619365344 0.2838691011946848 6.435096757236914 4.488856066031026 0.8476325987452683 8.329597218441144 4.453313338121361 0.6903304474862776 8.389264152302211 4.270012827645935 0.8426978487410093 8.375728648724509 4.350056752699322 0.8677512976966051 8.195868794619345 4.314514024789657 0.7104491464376144 8.255535728480412 4.533357263174747 0.7153838964418733 8.209404298197047 8.345205585451009 0.6493349977194969 9.673616210840827 8.245909315997725 0.1774937009262967 2.153857658949477 8.40053634239305 0.3263379315537805 2.076594413232994 8.174562391975128 0.2992532670859528 2.199902855064111 3.98249467056516 0.1374642209051072 2.596602346215473 4.163943465557035 0.152737350616468 2.463943726473672 4.057829853870306 0.1398710857115187 2.355055408552365 4.193995541649189 0.2926084363279867 2.276440112058847 9.393278821117896 0 6.264063966198627 9.518815195420816 0 6.263237951511389 9.46337387965696 0.2500000000000001 6.21080869706563 5.069444444444554 0 6.99296734797059 5.225694444444562 0.1957304526748999 6.962897021450321 5.027511391024126 0.1743625945153144 6.913859433204103 3.958333333333714 0 2.422277716886016 5.28904321747557 0.3484467996224465 9.671183317184433 9.441533558510844 0.3831346096232646 8.325162605217674 9.546688490600314 0.2769908312024209 8.387838239966863 9.384247831834912 0.2744760025053623 8.180699289625871 0.5791650198318394 0.4994634339492857 7.997657204866471 0.4479506365846667 0.5900435366451356 8.18975015955195 4.444444444444715 0.8766461571940973 4.376607962447801 4.425688069462931 0.7133200762209946 4.303234788339378 4.305555555555818 0.7179905276535885 4.506276162229904 2.865857333797187 0.3180814931699763 8.904280326229184 2.951055000539039 0.1465711145190284 8.896595293854169 2.992054089942618 0.3048837030917031 8.712549383775599 5.939022079213522 0.8455916345834752 5.784242393479456 5.767163630384109 0.8819717671692461 5.628220496779239 5.674254266636783 0.5784896213490569 5.539344965163238 5.813143155525674 0.6698363197293926 5.459157427775802 5.833333333333517 0.5913466983803357 5.66987298107777 5.724690348621563 0.3959961275202413 5.566694692531904 5.863579237510455 0.487342825900577 5.486507155144468 5.70450017081372 0.4744857488692981 5.355979139229936 5.603959291788938 0.4381296115577476 4.06612223332881 5.665614149628831 0.3300868197447052 3.916250634661206 8.110279945100922 0.1655354796546651 3.608091799554511 8.180733471280984 0.3291328560421525 3.64815110765385 7.939862364794847 0.3094776052120962 3.591406372664068 0.7643237840930415 0 4.105964915159234 0.6254847243724564 0.1542793008703239 4.002900511409295 0.6953640640207701 0.1542793008703239 4.122930730627443 0.9298300103882156 0.1174259203299122 4.206281335171939 0.7909909506676305 0.271705221200236 4.103216931421999 0.8599506707399018 0.1174259203299122 4.08625111595379 1.114544902133294 0.6362900693726992 7.436842117393557 6.666666666666861 0.158653301619663 5.108560219365689 6.498015873016069 0.3461165585273629 5.125743263091563 6.732038431724046 0.2833645635518454 5.153907683268343 2.331349206349188 0.3461165585273939 9.100754045011987 2.499999999999993 0.158653301619664 9.117937088737815 2.565371765057186 0.2833645635518471 9.072589624835164 4.958066946579656 0.4243625945153144 7.114328276672708 5.156250000000092 0.4457304526748999 7.163365864918925 5.000000000000069 0.3708887852437732 7.328176267995085 8.603548711687178 0.8398847221265026 4.150675924059756 8.762672600337595 0.8161024998142811 4.225220999917193 8.617147824081934 0.8734527738581931 4.386073358509742 8.609585424657697 0.7133374959846956 4.310251974465597 2.361111111111323 0.5899825791522511 5.407094784162845 2.222222222222445 0.5913466983803373 5.188747756752871 2.222222222222435 0.6273401335379738 5.414718740251856 4.149669888720414 0.8335544324990256 2.212072813921197 4.232308777609298 0.6523742443743925 2.294723254242693 4.249305555555939 0.8188198118753669 2.384646851126352 4.015270696956847 0.8736428154726866 2.360760389518125 4.097909585845731 0.6924626273480535 2.44341082983962 3.998273919010207 0.7071972479717122 2.270836792634467 9.26464270505889 0.4220794079058027 7.702510571392288 5.106324306353159 0.4881893542158735 3.330599497629541 5.220751283258296 0.6192397560309805 3.395315803321648 5.049297811833346 0.5160824118665165 3.461668441496898 5.081862394369412 0.710586454411318 3.315128265934192 3.453784273508575 0.5814100031722821 4.443282761039935 4.236111111111251 0 6.752404735808197 8.982631659588304 0.1745583989545821 6.61441237317365 9.097222222222321 0 6.511842123646193 9.228084774454191 0.1615130162739238 6.586919807246478 9.097222222222136 0 8.917468245269628 8.987635216565359 0.1805215615715942 8.803714638196116 9.136262138265312 0.1566609575056951 8.726874653019859 8.256792653321682 0.5704858189390681 9.821702859201219 8.194444444444345 0.4804718613616127 9.588155404535733 8.256792653321686 0.4065644819163001 9.766452545334516 8.130256889397044 0.4230110707182186 9.853942753214366 8.067908680519706 0.3329971131407632 9.620395298548882 8.067908680519704 0.4969184501635312 9.675645612415586 4.426861094462479 0.538580246913576 5.760386353371539 4.244718237319629 0.5929600235155785 5.705171506199029 4.31716574404494 0.5061429819454319 5.570388433094256 4.464510998788986 0.4131829584298534 5.565332064930447 4.574206349206525 0.4456202233979974 5.755329985207729 4.470115062716465 0.5929600235155785 5.575038588381704 1.39352132330347 0.4807155824788583 9.775850003692316 1.459826423467483 0.6199562599366659 9.801343657796702 3.756389003528657 0.8427503372448184 8.929154476430217 2.801347727504282 0.4271433318480924 2.661379165520711 2.662458838615389 0.5135630849345123 2.741566702908151 2.638888888889262 0.5864197530864199 2.542559022967116 2.638888888889262 0.4086533016196625 2.542559022967116 2.500000000000369 0.4950730547060824 2.622746560354556 2.662458838615389 0.3357966334677549 2.741566702908151 9.17741842922592 0.8284592733397484 7.560303717553133 5.479074184863165 0.1669824399099872 0.6902540038263106 5.409161772709512 0.4169824399099872 0.670422070678234 5.336897202972692 0.3144421156684659 0.7787083580582437 2.197170931920648 0.1393350854005267 7.301223949523353 2.156836391414382 0.3059201224877609 7.441199328179524 2.042998792827176 0.1665850370872342 7.493786644870125 2.185429508204131 0.1372112235016605 7.515834338530333 2.145094967697865 0.3037962605888946 7.655809717186504 2.299267106791337 0.2765463089021872 7.463247021839733 1.637063614928943 0.6539422759259141 3.086780454789407 1.736111111111431 0.8413466983803375 3.224153090760383 1.729524937903127 0.716635436448154 3.303440431941464 9.161900032772968 0.4204435033750077 3.262089006575225 9.162572159721236 0.1704435033750077 3.179415315859593 8.995227171291326 0.3291032411146694 3.175023744542846 2.650788629231287 0.1676257067424612 4.219626989813714 2.504690739252914 0.1670548685822081 4.384164183308199 2.433991323539555 0.14521183221273 4.209527744956365 2.584779952770567 0.3128375389551912 4.202657426666558 1.418710782399617 0.1580576740412472 7.176218513192928 1.458333333333481 0 6.992967347970399 1.310724417718613 0.1386110194540011 7.003388496636891 3.619288843997925 0.6831475549057382 0.3543910818261086 1.604349165149015 0.2872604426679359 3.300225885730724 1.736111111111431 0.1635802469135803 3.224153090760383 1.821185025764197 0.3693443839269864 3.318469086970668 6.514313211935033 0.4305135451038939 0.814453542941608 1.53490472070456 0.3111434526620575 3.546516179135024 1.597222222222525 0.1874632569077019 3.590724690245853 1.751740581319741 0.3932273939211079 3.564759380374968 3.815151693225391 0.7892883477170575 0.6142162648481664 3.840743638031381 0.6277151855057168 0.4793740444524424 3.745707248780947 0.5392883477170575 0.5925792577283598 9.712534296020756 0.1522444142552981 5.042901207770988 9.840664840429469 0.2797330807046998 5.038927857715886 9.608759303417902 0.3883250365685651 5.048769866285854 4.779448961156315 0.3201914962253797 8.952490349411773 0.7181473602766741 0.4110789315279953 3.047548318986246 0.7810412538346854 0.1610789315279953 3.073653301223686 0.8964000616458266 0.3066199032462512 2.976425699215779 8.289873807709597 0.3115237477824336 1.180226971797632 2.759797892148953 0.8190366030963838 5.653301214674499 4.583333333333418 0.4092344259968763 7.326713408752104 3.665712476928907 0.5467179963485091 7.266573018627772 3.641606574942889 0.7115809495972619 7.097283584481174 3.825288697447047 0.6219182114763333 7.223921894390752 5.271041272204525 0.3184254087855268 0.3433050352259039 1.944444444444868 0.1635802469135801 1.740683649092596 1.80004679038551 0.3183809783155703 1.817690699425965 1.800046790385506 0.1548007314019903 1.897878236813412 1.926839756414455 0.1315202548260737 1.99141033262829 1.782442102355098 0.286320986228064 2.068417382961659 1.92683975641446 0.2951005017396537 1.911222795240842 3.054875964108964 0.8526594853365304 6.930623080859497 3.103941579988288 0.6808346887567946 6.860028747912433 3.076322317157405 0.6880524624269224 7.097146921958746 6.731786689156529 0.8508814731519047 9.716846912964343 6.726550334033006 0.7152533042558797 9.837128219045519 6.801231133600972 0.6320737397056488 9.620179982869484 1.834665459493845 0.4165850370872342 7.533880413563837 1.973554348382736 0.5079317354675715 7.453692876176396 1.805555555555669 0.5913466983803374 7.353811266213937 1.866339327932864 0.7174795191443912 7.390373249293086 1.895449231871039 0.5427178578512879 7.570442396642987 8.472212879193819 0.8426984779831679 4.347738525114138 8.464650479769581 0.6825832001096706 4.271917141069993 8.478249592164339 0.7161512518413611 4.507314575519978 4.814713502143114 0.8456049661658213 8.979779757185506 4.863325160298468 0.853263890752325 8.73800666681959 9.867359704670188 0.8762481677863287 7.230442817098155 9.907375434766092 0.8762481677863287 7.361178362626535 9.725925220124068 0.8143464925887463 7.401630438433521 9.818549785357977 0.690594660375075 7.401697689948957 9.379227568501971 0.2499999999999999 2.976030841413595 9.429681099287803 0 3.032008753167637 9.46319308947416 0.1560695111654427 3.089835791990944 7.756222684058757 0.1646588041813157 8.390127392264805 7.820250643921785 0.2936143494101719 8.334750910955623 9.267790211127657 0.3120371335808175 8.070410361821448 9.057663348327047 0.4206957406987198 8.068090613918113 9.004579830028474 0.291363482384868 8.064184080664432 4.069615602684507 0.3732768521128044 9.013008165411295 4.069615602684476 0.1594124993595319 9.011205791538547 4.403007407591733 0.6427204323001743 8.532700642644436 4.507994579945837 0.800022583559165 8.593315014864555 6.956179439691805 0.1624177907551599 6.089463625239397 6.805555555555677 0.1605873269525764 6.24984774475755 7.045060132973159 0.1468963882948222 6.219998204066928 7.05679512822039 0.3093141790499822 6.158463623903797 8.871111111111436 0.590386069142834 3.732774742284265 8.888888888889213 0.840386069142834 3.66285120968241 9.017864162772234 0.8387782497676457 3.844215798483011 9.017864162772241 0.6791643189104798 3.761694924386196 3.17380923651719 0.1933288273728087 0.4026957883082439 3.123272643131003 0 0.5319296723325126 3.030876526682326 0.1438781418273452 0.3645709911381289 9.724891622678609 0.7292350695137282 7.647385054353137 9.675876013820456 0.5435815621024744 7.560178586188167 9.652008733109707 0.5785275089007094 7.812792917042703 2.5 0.4086533016196639 9.037749551350366 2.692580111035916 0.3301636802706119 9.125622121112853 2.692580111035928 0.4215103786509479 8.965247046337961 2.834341280020324 0.5261830109832336 9.081170461053754 2.641761168984396 0.5133259339519496 9.153672966066159 8.254400375308069 0.3392509325831258 2.003334195910758 9.428420419392296 0 2.532564774159356 9.399600681546058 0.25 2.478978447952315 9.285975383154845 0.1573344949815406 2.632935218556589 8.757826118693782 0.1241536169056681 9.446156870912525 8.827395109251354 0.3019833264178672 9.508355493389558 8.802791601641301 0.2999602254814973 9.285452505232591 7.71744251461161 0.1596805338941598 8.8287420687669 7.708333333333361 0 8.67690563310715 7.544892410015676 0.1673469831333624 8.691080756793752 1.532410212192362 0.4049309501503584 9.839624925225021 10 0.7528781910656499 7.222412897693038 0.4102660845153471 0.1542793008703239 4.144478584324074 9.265224896234336 0.1578799437114075 9.09533336054049 9.192792402445889 0.1578799437114075 9.216095165915132 9.379183269081427 0 9.157358158421129 9.376823146583856 0.1519586180734392 9.211858010782469 9.304390652795409 0.1519586180734392 9.332619816157111 9.190432279948316 0.3098385617848467 9.27059501827647 6.373155177664856 0.1592600403166623 7.755062398013012 6.224745526546146 0.287786248549928 7.829753120764174 8.726824512535133 0.4125806710455429 3.978787060297 8.675157845868462 0.1625806710455429 4.029144833776312 8.743085127269964 0.3196294039425595 4.138481237975322 6.319444444444915 0 0.7383394317496876 4.862844957440043 0.8792239850934214 1.023367748756658 4.811394956858926 0.7189760425989775 1.07385061445879 5.046840117271236 0.7201508073469042 1.077513168473432 1.136701932866159 0.5869221500819011 8.41328795974883 1.296348641790476 0.5552047422497529 8.312893069820079 1.06608968676092 0.6267024727261696 8.229526409699758 3.950460799087463 0.8569099150346248 5.022219752176919 3.848152750946205 0.8693822880241886 5.245416273933333 7.374568942251653 0.6813094425900312 4.902307265786224 7.380057465551149 0.4805674421848873 5.014421686492114 7.584012903344879 0.483486039211288 5.093422190152532 7.521452464394473 0.4911944931375392 4.931812647769633 8.4366791067058 0.4838565100343238 6.262891108034198 8.220278714299944 0.4898072380374323 6.388821858631676 8.235795946821266 0.5199972416340856 6.234568225383692 7.748075092585905 0.3039043812030867 6.106245178625304 1.872340710101386 0.1872599651322792 0.4929954415634255 1.80697265629619 0.3238341571561606 0.3153900391607949 4.513888888888939 0 8.195780408782277 4.674152777541615 0.1706782408588453 8.214838580752236 4.604708333097173 0.1706782408588453 8.094557274671061 4.367120232996026 0.1308408070892393 8.138364383280823 4.527384121648701 0.3015190479480847 8.157422555250781 4.436564677440467 0.1308408070892393 8.258645689361998 4.840920933303599 0.5784896213490551 3.133718843539743 5.00000000000033 0.5913466983803375 3.264246859454276 5.029154551031962 0.4863482948279547 3.084800127115805 4.87007548433523 0.4734912177966724 2.954272111201273 7.569444444444445 0.1507201646090564 7.55428010968292 7.414030943608979 0.3161212668245649 7.617318480830368 7.344586499164535 0.1654011022155085 7.657412249524098 7.49765490406233 0.1242748368444271 7.746165457893654 7.342241403226864 0.2896759390599357 7.809203829041103 7.567099348506774 0.2749950014534834 7.706071689199923 6.417759604562125 0.2189790409230793 9.616411304694687 6.348315160117679 0.3772497543250525 9.623398098884662 6.580587870993869 0.3813229379497171 9.693986338588001 1.043096474566013 0.8410349945238462 0.7493744861408076 0.9791837587547784 0.6835100641779659 0.7910902575146163 0.9083095064114544 0.8424750696541197 0.6646625176850044 1.100079281662017 0.8614959695343161 0.516827955238781 1.036166565850782 0.7039710391884356 0.5585437266125897 1.170953534005341 0.7025309640581623 0.6432556950683929 0.5191971499809643 0 7.217139391727743 0.9818468045461786 0.3512391357431971 0.8029429157931023 4.080565751545703 0.1480944374915812 4.975801473784827 4.060909613344386 0.3245347667096879 4.855520167703656 4.008121639576687 0.1764403292181068 4.827903838509453 3.863153984861142 0.1282066539295098 5.013093968916014 3.843497846659824 0.3046469831476166 4.892812662834842 3.91594195862884 0.276301091421091 5.040710298110216 3.197763506803182 0.6207855311253142 3.251478728088969 4.98378604961978 0.8780025834037448 8.868013347958955 4.98600009880712 0.7312664741560697 8.80883307559035 4.937388440651766 0.723607549569566 9.050606165956266 6.805555555555612 0.4086533016196637 8.316061714863583 6.784451528287456 0.572586279886655 8.516024769586346 6.870573939937247 0.3812971465421623 8.448309419995354 9.246350481167941 0.8284592733397484 7.44024488604296 9.181705058674872 0.834086744583029 7.264084591730394 9.206195797690977 0.6828885704284904 7.110890647313206 9.270841220184044 0.6772610991852097 7.287050941625772 5.80990256305589 0.3863180719055376 6.695872639883438 5.597695812417483 0.4604215122498543 6.725446616212821 5.738308639225094 0.3086800354013977 6.573358578718343 2.439777557803268 0.8377342751179574 7.896934796790262 3.888888888889118 0 4.948185144590619 3.8692327506878 0.1764403292181068 4.827903838509448 3.724265095972255 0.1282066539295098 5.013093968916008 0.7153102490483115 0.841455580231892 8.962302337170744 0.8466707726584666 0.7821539981073627 9.030049177165647 7.176290908941614 0.8461536821006996 7.65570082209966 7.13889774654848 0.6103591268617061 7.572429148658827 7.266703274955622 0.7250366305395068 7.707900425955915 4.513968848262858 0 0.5261261976719698 4.375063448618071 0 0.5236270809637329 4.380002880519525 0.1483447419024839 0.3962139203934401 2.771213412761679 0.5920954585849854 2.66916561384652 2.794783362487807 0.5192387904330777 2.868173293787555 2.632324523872787 0.6785152116714053 2.74935315123396 5.128356558339553 0.1495331999842562 4.088065354429325 5.09336909840512 0.1591497554394324 4.280403982201695 5.041586131230744 0.3143615737994395 4.141495463453122 4.948217032825905 0.1552118183600071 4.087588789355085 2.944414995189665 0.5994064492534396 0.647219519730958 2.926679192605718 0.8494064492534397 0.7106648348519786 2.837263785992909 0.6928007797777498 0.5490708816721348 0.6855659537824551 0.3795077509434981 1.951529491158011 0.7245263924262833 0.6629640441122014 8.503627720508169 6.88705374290352 0.1912898419563694 4.372197118009611 6.956498187347963 0.1912898419563694 4.492478424090788 7.013888888889121 0 4.346778614184948 7.003900537086116 0.1169688220465457 4.180636761807822 7.073344981530559 0.1169688220465457 4.300918067889 6.946509835544957 0.3082586640029151 4.326336571713663 3.814249845007159 0.6297609467893339 0.7243632800188987 8.47222222222258 0.4738381314933788 3.06308946775266 8.472195112707942 0.6474532937936462 3.021648882323004 3.135306644069733 0.3238699358359404 7.533440856990383 3.144219280797503 0.4975039877427638 7.515163139203727 3.16648118374449 0.5108140455622597 7.70383801642909 3.258310166955782 0.4790546413803046 7.599123237622639 3.227135627281026 0.2921105316539853 7.428726078183931 8.07764992817037 0.8429600235155748 1.670347723441712 8.12875156199261 0.8541620119300133 1.43515461961413 7.989862673103715 0.8541620119300133 1.435154619614111 8.011957045718098 0.697122035445588 1.525193768737751 1.106423329962841 0.8387986340723114 5.725502841814043 1.805555555556003 0.7938843390723458 1.34028065669638 1.944444444444891 0.7938843390723458 1.340280656696388 1.666666666667106 0.8771326379418669 1.486823222760171 1.805555555555995 0.8771326379418669 1.486823222760179 1.805555555555995 0.6710169770142127 1.48735791730121 6.45840577416618 0.2984911027847463 0.1829622440780966 6.458405774166181 0.1782097967035744 0.3032435501592682 6.52777777777777 0.1202813060811719 0.1202813060811716 6.688331350606914 0.2800337144716264 0.1597875431182774 6.688331350606915 0.1597524083904545 0.280068849199449 6.618959346995325 0.3379622050940289 0.3427497871963739 6.875000000000117 0 6.271279511483693 0.4320163389407999 0.3075240188141942 3.26497928336582 0.4990204056790191 0.460179439218256 3.410375116355701 0.417846327115504 0.2875715078993156 3.528185052370465 9.843895655380383 0.7213003367101228 0.6236646803699439 9.843895655380383 0.5975073425420964 0.6930349192197307 10 0.6351389238419252 0.7602636987873694 9.763167711867425 0.7509953047409312 0.7475766059525337 9.763167711867425 0.6272023105729048 0.8169468448023204 9.607063367247807 0.7133637234411024 0.6803478263848949 4.933486105045754 0.5340409205252897 0.2124993531951643 5.051082124533427 0.4116704019626458 0.1703572641709621 2.569444444444714 0 4.346778614184695 9.28625864938525 0.4019586180734391 9.162147312544416 9.371690458099163 0.2807904661421424 9.133127685003004 0 0.7518437052919851 1.10645897997631 0.1202813060811719 0.874428163502075 1.247450503893013 0.1547443494399373 0.7027208481145991 1.30604770773225 8.24779338610686 0.8544374847600603 1.528416536390647 8.130998869832347 0.697397508275635 1.618455685514268 8.182100503654588 0.7085994966900736 1.383262581686686 8.642802760149785 0.8559024428423483 0.7648703910241135 8.695798297563448 0.5519080767427613 4.56762113890229 9.283147684219621 0.3038303503219844 8.296732870276218 9.283135985796751 0.1331346096232646 8.481823062553378 9.322175901839893 0.2897955671289597 8.531792082465959 2.355975712035235 0.1549217949782679 5.743041809204282 5.138888888889316 0.5003177109378087 1.419982817125512 4.264058862806721 0.2973126277553345 7.543077015946497 1.264862607637658 0.7016004986050686 6.945643761833249 1.282423875397664 0.5924241744563288 6.853966108700295 1.301921455854568 0.6467123930371645 6.710085981161455 6.80555555555561 0.5864197530864214 8.31606171486359 0.1202813060811719 0.1241526465320646 0.9703336113429193 0.1876560491093766 0.2981114024700519 1.097740652315026 0.3079373551905485 0.1739587559379873 1.099629263194329 0.2894010037916958 0.1667839171683347 0.8376207037526708 0.3567757468199003 0.340742673106322 0.9650277447247778 0.1691196977105238 0.2909365637003992 0.835732092873368 7.068808583992617 0.1402998066938881 2.373798080250471 7.124364139548167 0.3553203828255824 2.325685557818 6.926860941427969 0.3156072641802338 2.372032107992359 2.670454545454844 0.4930789375233849 3.807335180850957 2.648392521846654 0.4050765620212302 3.615039687123265 2.589764427805223 0.6125599646334627 3.832494117677971 2.567702404197033 0.524557589131308 3.64019862395028 2.370333113358832 0.8377342751179574 7.776653490709087 9.568308344664814 0.8539541807306413 3.819372027242968 4.747530864197673 0.4040113770664204 6.704532557444445 4.775042255221662 0.4243625945153144 6.870023579432278 2.662922070169842 0.8447091153502344 4.212621744421646 2.526958071172498 0.8293108937818878 4.291120595842853 2.490837802837623 0.8705895807821131 4.060832436330394 2.517795874009845 0.699900474564001 4.125455724069726 2.65375987300719 0.7152986961323475 4.046956872648519 3.052060069056331 0.5552405157972078 2.914939973437694 4.06427580908092 0.8282255112548795 7.191011749611386 4.097222222222324 0.8364197530864227 7.393905034907773 3.894733141891486 0.8719182114763333 7.264015663084479 3.964177586335926 0.708337964562756 7.304109431778207 3.931231173194522 0.7001437227312128 7.10121614648182 7.086447482004701 0.7858499503253373 2.134692047278874 7.023681704730993 0.6301826248490761 2.090742348296288 7.020567556060013 0.8443326745237386 2.017484099660073 7.251767180368715 0.8699838310741765 2.003116024535583 7.189001403095006 0.7143165055979152 1.959166325552998 7.254881329039694 0.6558337813995139 2.076374273171798 9.094387743065415 0.1542758534378298 6.869131573645079 8.979797180431429 0.3288342523924119 6.731139211010191 8.913187215143839 0.1745583989545821 6.734693679254814 8.910803759497435 0.123876675986523 6.940208135927211 8.79621319686345 0.2984350749411051 6.802215773292324 8.977413724785025 0.2781525294243529 6.936653667682588 4.057539682539832 0.4374632569077005 6.534752848613692 4.170236083187487 0.406452438214156 6.658607443087828 3.955322513997758 0.3690723348353673 6.748168901278799 2.708333333333457 0 6.992967347970477 2.847222222222344 0 6.992967347970485 2.824266760363429 0.1334124480076622 7.150369582415543 0.7721858922389391 0 7.228744476344209 0.9041606116695616 0 7.232732379501277 0.7903140884841755 0.1491565387290671 7.077151443710266 7.60846739967338 0.42583012308839 5.75611036379297 3.556254668372495 0.1678795758943405 3.864230762520841 3.611111111111402 0 3.985934695941227 3.439408656649121 0.1291801103130235 4.057309623605756 5.277777777777837 0.8320257075602971 7.667711776672062 5.229606196933688 0.6812496016905358 7.591121142580986 2.355310265191258 0.4334301387470101 9.809863096617617 2.127439584646518 0.4060080295510974 9.810811049203084 2.892819423874611 0.8433943305243102 0.3764750993376658 3.085284343101441 0.8513931142796813 0.3843179473502695 2.358756846385196 0.8390769431287713 7.966509849582536 3.863351795012918 0.4238711285370236 7.429993816098456 3.820590480428987 0.3727675013371157 7.219453254090357 7.055054867083927 0.3470099155420746 3.315235930021255 6.945625284541496 0.4342692271204578 3.510598512666474 7.081651804764959 0.482699536158243 3.405671933836463 7.02309984489459 0.5635418258221685 3.291679406656268 6.913670262352158 0.6508011374005518 3.487041989301487 6.887073324671126 0.5151115167843834 3.396605985486278 2.042998792827171 0.5316726532967536 7.604877936486197 2.013888888888996 0.7064343145898568 7.424808789136296 1.935783772377299 0.7412204369735733 7.541558309602888 0.8599301111691887 0.5924750696541197 0.8695042094225646 5.230323570445872 0.8414351292264537 2.255087224819428 5.299768014890326 0.8414351292264537 2.134805918738258 2.293123225624641 0.8376867802544372 6.258100075226953 2.148158082852318 0.694076912021153 6.283427811681663 0.7357113924287333 0.1797966597621553 6.469007002833889 0.5715302023009529 0 6.389899572615062 0.6895126990691884 0.1435775374804469 6.272537241502329 3.385770346189933 0.847485880854659 5.389006139404946 3.520306582870245 0.8156485286349928 5.296696812704215 3.600661716757149 0.8767285593844575 5.504108791482732 3.648746077404972 0.6923770880194503 5.371495235271665 3.51420984072466 0.7242144402391164 5.463804561972397 7.371476122735846 0.4091500405822319 0.6472581571605207 7.301272089564603 0.1591500405822318 0.6735278233127948 7.432076276922104 0.2500000000000001 0.6018966769969012 7.612716071752885 0.3984663091192277 0.6075857370972078 7.542512038581641 0.1484663091192276 0.6338554032494819 7.481911884395384 0.3076163497014595 0.6792168834131014 3.594133456251281 0.4109585134177214 3.88610009089924 3.477287444527907 0.3722590478364045 4.079178951984154 6.01421347025651 0.1609149269027044 1.280031850664721 6.014175348228313 0.3372836835955647 1.159895129753552 5.833295211305563 0.1763687566928603 1.219609241244385 5.829712862758125 0.1266693803779297 1.415795112653071 5.829674740729928 0.30303813707079 1.295658391741902 6.010592999680875 0.2875843072806341 1.356081001162238 2.053571428571428 0.3446134626690555 9.140847813705751 2.073761606379287 0.5159528782568163 9.070906986151719 2.053914798963792 0.311150668936503 8.931599746671647 4.994956420702721 0.4897427052310634 5.856117977987652 5.128411189193804 0.4013103149602684 5.779067831474702 5.005434120398006 0.5884323902707951 5.666735590203224 5.150476689193814 0.6208062294003611 5.675952087715872 5.13999898949853 0.5221165443606295 5.865334475500301 4.77088939401871 0.8520820241135079 2.511201614105278 4.969117581383207 0.8635620671788284 2.604916587652844 8.337939275492289 0.158076653241207 4.275758221368191 8.471430454693778 0.3206573242867498 4.19868705312178 8.466824512535123 0.1625806710455429 4.149426139857475 8.289828639806991 0.1201963424226315 4.041004786810362 8.42331981900848 0.2827770134681744 3.963933618563952 8.294434581965646 0.2782729956638385 4.090265700074667 8.681647204893086 0.1818077769070109 0.9976919508313584 8.819447816758206 0 0.979081687430569 8.782764740886289 0.152587627797984 1.160620344913526 7.02594263179241 0.3466361874456309 4.487029979123003 7.152777777778011 0.1553463454892614 4.461611475298341 7.142789425975006 0.2723151675358071 4.295469622921215 8.775447300570166 0.6653084895795941 8.581580779779667 8.783469880110722 0.8221538921686448 8.498670611605874 8.802797561602995 0.6691468724624624 8.331536419624246 9.346081406891068 0.5887925562234753 3.033963955621122 9.396534937676901 0.8387925562234754 3.089941867375164 9.446483074385181 0.1288318480687032 8.957866027267023 6.112429960105594 0.7975952748776421 0.9395697130400217 6.102988052503418 0.8527857239387796 0.7841901767762601 0.8397828486242233 0.8419844574416879 9.174597451872422 8.750694307978485 0.6780671021068884 3.665475848917037 5.412248686327986 0.666730156353865 5.924104760756641 5.605855022361706 0.6216178719031766 5.812326090530769 5.617329551378319 0.7123980561707031 5.966076342889096 6.597222222222296 0 7.95521779662006 6.527777777777846 0 8.075499102701228 6.666666666666718 0.2043266508098507 8.075499102701244 6.736111111111173 0 8.195780408782408 6.597222222222284 0 8.195780408782403 6.805555555555661 0.5893207319954463 6.409649531868471 6.809790618511633 0.7127719465881268 6.327140068638215 7.444026049402632 0.3952262463661976 5.156431181308076 1.642626570008451 0.5720730899310692 1.697500080123031 1.781515458897335 0.4856533368446492 1.777687617510487 1.805555555555989 0.4135802469135801 1.580308574317692 1.805555555555989 0.5913466983803375 1.580308574317692 1.944444444444873 0.5049269452939175 1.660496111705148 1.781515458897335 0.6634197883114066 1.777687617510487 6.786239993760212 0.6857253241657022 6.144595506515869 5.348832103564484 0.1420251113246644 4.601543596418312 5.430791732092957 0.3148758649671574 4.634411720212164 5.205817191627617 0.2685532680091042 4.523738219548285 7.083279369091716 0.5628350069700004 4.381275907976112 6.958333333333629 0.7849794238683131 3.673203300130383 4.709767278514377 0.8277127458524889 5.380333162882892 4.557155826938732 0.852362667881735 5.390367795912687 0.3982409167901615 0.4629954859416884 1.081557210269604 0.2105848676807849 0.4131893765357656 0.9522615584181942 0.3797045653913087 0.4558206471720357 0.8195486508279457 9.379227568501971 0.75 2.976030841413595 9.469515534357555 0.75 2.854872364403718 9.395843521411535 0 2.902525770282363 0.9170967204167999 0.1610789315279953 3.07201742409215 6.527777777777828 0.3629799524295141 8.155686640088682 6.388888888888955 0.1586533016196635 8.155686640088664 0.7069549173745264 0.8520393790933799 2.223801280907167 0.5397235465400134 0.692392877486414 2.255565480029615 8.958333333333428 0 6.511842123646181 9.02777777777786 0 6.63212342972736 8.843742770699411 0.1745583989545821 6.614412373173638 5.635020973975992 0.8346874967502537 3.607733941630622 5.486111111111413 0.7849794238683118 3.625090777697825 6.666666666667072 0.784979423868313 1.820871186480279 6.73611111111151 0.784979423868313 1.941152492561459 6.587201248246945 0.6196669206185713 1.958509328628666 6.587201248246938 0.8346874967502583 1.958509328628659 1.202354349828819 0.516179530771933 2.498128843395282 0.4799468574343069 0 6.516858544322693 7.221611765661615 0.8383036011577364 2.156539875432291 7.224725914332595 0.6241535514830738 2.229798124068506 2.375616506103068 0.5879642593755799 8.787032545661965 5.200295523693478 0.1267023176038249 6.837899574240513 5.088918025828592 0.3010649121191393 6.879072965555185 8.597774029419259 0.4311122656256826 2.585080401029521 8.366004844780397 0.4055867935794693 2.631172732407635 6.25000000000037 0.2150205761316908 2.783121635129643 6.250000000000361 0.3657407407407461 2.863309172517092 6.388888888889253 0.1507201646090554 2.863309172517105 6.286945108984961 0.1523667473959891 2.644076828972237 6.286945108984952 0.3030869120050445 2.724264366359686 6.148056220096069 0.3673873235276799 2.644076828972224 5.515645704559039 0.6778299503994702 0.1908092790269849 5.29077646608153 0.7182958677032933 0.1638265032511131 5.939022079213514 0.8455916345834752 6.024805005641801 3.611111111111311 0 5.42931036891529 3.472222222222428 0.1553692348799318 5.34180847713646 3.460486529908073 0.1404983210647499 5.537490074081381 0.7169312842515231 0.3182348946729138 4.19608831701361 0.855770343972108 0.1639555938025899 4.299152720763549 0.9513972306189684 0.2813815141325021 4.279438921558105 6.319444444444557 0 6.992967347970668 6.391540521353368 0.1445638868690809 6.974145839334116 6.17490158638946 0.1445797432834946 6.861529174144424 5.833333333333663 0.2150205761316873 3.26424685945432 5.763888888889225 0 3.143965553373145 5.935277113237975 0.1523667473959904 3.162729053449384 6.111111111111476 0.2150205761316908 2.783121635129631 6.250000000000368 0 2.783121635129644 6.148056220096066 0.1523667473959891 2.644076828972225 4.630319366210367 0.1377787132262369 8.369121853521214 4.721138810418601 0.3084569540850823 8.267898719409999 4.483550710317454 0.2686195203154763 8.311705828019761 3.789384724290611 0.181047909221919 1.573127553883903 3.709279039781687 0.3218296407931587 1.416156250621091 3.669894315491501 0.1407817315712397 1.423340382344616 3.55714542340746 0.1228622610980502 1.53354991176414 3.477039738898536 0.26364399266929 1.376578608501327 3.596530147697646 0.3039101703199692 1.526365780040614 3.612060950348879 0.4044012860378046 0.437362331271266 3.739590567589049 0.4055754947955065 0.6379645080685463 3.55877776159322 0.3866368084118411 0.6635342412299214 7.010014089637645 0.833257552348166 3.828707038210058 3.958333333333342 0 8.917468245269298 5.625000000000348 0 2.903402941210786 4.714714819029449 0.8597006787617796 5.846183529063811 4.621455064810196 0.7026607022773586 5.98569982253213 6.812234222726692 0.6293120983920516 1.897202793578887 5.416662958535346 0.6342565124950953 3.665186687282335 6.570988226508316 0.3492900531665222 9.544502816047986 8.040835500656481 0.4155354796546651 3.567998030860782 1.458416450972031 0 2.662888317039084 1.319527562083146 0 2.662888317039075 0.6385206508819754 0.144173940799725 3.102896366003093 0.5756267573239642 0.394173940799725 3.076791383765654 0.7180930275655628 0.3052528723277204 3.148809861821204 2.752676781621088 0.8433943305243102 0.3798299082904442 9.670639948389164 0.5483552344860197 7.006058022787435 9.505911831606529 0.5503642739808882 7.069543857787101 2.708333333333712 0 2.422277716885947 2.638136011107254 0.2035635043909841 2.30243108499489 2.568691566662802 0.2035635043909841 2.422712391076058 2.708336908857817 0.1230051714046812 2.570208078545277 2.638139586631358 0.3265686757956653 2.450361446654219 0.6949291688168986 0.4042793008703239 4.042827589180343 0.8553354487682365 0.4139555938025899 4.219049579316448 7.013888888889269 0 2.66284032904855 6.871941246324622 0.1753074574863457 2.661074356790438 7.022540456162682 0.1475158804337099 2.828210388517672 9.580376336248865 0.8395478316474577 2.757378537974075 2.312165482746197 0.3117926601511721 8.21685247229142 1.094802513919876 0.4452589287902677 8.431772389748257 7.227698082815385 0.8353411958186897 4.84626941846859 7.186760927690339 0.6481762027886901 4.770601372433607 7.181285067097397 0.8128350069700004 4.631954486393491 7.36909308165871 0.8459682467713415 4.763660379746109 7.328155926533665 0.658803253741342 4.687992333711126 5.253439604276068 0.5909268222534827 1.353797613178577 5.138888888889309 0.58641975308642 1.580308574317873 5.33977994491077 0.6262936847292495 1.464851051016765 7.275815876806456 0.8578742115349047 8.28013009911011 7.094366157630932 0.8770431156106588 8.389879448172945 1.736111111111414 0.1874632569077019 3.59072469024586 8.861542294481438 0.1881152447802882 1.839129601821856 8.819444444444908 0 1.700589880399312 9.003405244558117 0.1580155421438991 1.748316100139275 2.638888888889276 0 2.301996410804771 2.569444444444824 0 2.422277716885939 2.499247122218366 0.2035635043909841 2.302431084994882 5.613319088319319 0.5 4.948555240917135 5.625834272403361 0.422850753642493 4.780954521242369 5.429181850750931 0.422850753642493 4.940959499690848 5.532125538707493 0.6193957814603199 4.948995526457596 5.544640722791536 0.5422465351028128 4.78139480678283 5.728777960359925 0.6193957814603199 4.788990548009115 1.883927380193632 0.5770067913052377 5.516750559907427 1.861605827715929 0.589166129917716 5.753466596736836 4.288558777609303 0.8335544324990256 2.212072813921204 4.573671801564749 0.6706856165176386 7.0281176544476 4.504227357120328 0.8492018187830606 6.914308280024857 4.652777777777892 0.821483797734578 6.986495416312122 4.804385263303896 0.671856431306273 6.924930126952494 4.734940818859474 0.850372633571695 6.811120752529749 4.655834842646332 0.6995744523547556 6.852742990665227 2.500000000000105 0 7.353811266213978 2.569444444444545 0 7.474092572295156 2.620374275918118 0.1799860256988958 7.303706848758031 8.536268956979574 0.1625806710455429 4.029144833776307 8.402777777778084 0 4.106216002022718 8.359273084251441 0.1201963424226315 3.920723480729194 1.798380597946184 0.2088039730954475 2.466513949287034 1.590047264612866 0.4588039730954475 2.2660451058184 1.723427388331293 0.3636047044974378 2.182677081376888 1.52226901260772 0.4048007314019903 2.058253311588293 1.575634597075491 0.5966337213622368 2.169251483533678 1.709014720793919 0.5014344527642272 2.085883459092166 1.776792972799064 0.5554376944576842 2.293675253322274 5.257859837962972 0.5720214763374497 9.319205201485481 2.324318397093018 0.1372112235016605 7.515834338530341 2.419804508204123 0.3329416761765585 7.651150807871667 5.277777777778154 0.8810553555192381 2.383986169055241 2.720233073675741 0.1676257067424612 4.099345683732544 2.682354285796948 0.4107046442658461 4.121215012110937 4.71000451671186 0.1608755968512305 9.206556890509869 4.652777777777796 0 9.158030857431605 4.504313985954533 0.1532674891684649 9.285938169829624 3.749999999999988 0.1241459787118515 9.123262238480516 4.097573724175981 0.4706304183920783 0.2107030270049763 4.218751866778353 0.5910218925050785 0.1654353234936306 3.625614678599875 0.1608897318311548 1.652124028756453 3.66499940289006 0.3419376410530738 1.644939897032927 3.43276010200691 0.2837519929292051 1.605362254913164 8.831034899061891 0.5943746475343327 6.726032017478312 8.741308451071362 0.5863680538652909 6.873136818674125 8.987099865400745 0.6071013393134244 6.900153281336067 5.028651292368409 0.6208062294003611 5.906663088142035 8.607176900262438 0.3243114361176157 3.91075435617477 5.948924907302786 0.5193680557887485 4.567089050674038 5.835666842343565 0.3809662234640949 4.472836929057259 5.7674127647738 0.4831774030833061 4.583979208290337 1.386533597125144 0.1950762049626902 6.180048660672057 1.527777777777954 0 6.15099820540222 1.528369380988861 0.1565985584358859 6.024203106559622 8.395383471966205 0.5976298183065886 4.905524414030296 8.21850798480985 0.5720239160348527 4.904902093287797 8.293723951782049 0.6082028193033253 5.120842865970596 0.6987244799399811 0.8419844574416879 9.174092561557426 0.7703384041797738 0.8419844574416879 9.294878757953592 7.602904733655241 0.587201410677572 6.211390093543034 7.620265844766378 0.6125357728174907 5.980850923554124 7.751067987577227 0.5034289041619119 6.033107310421694 4.982462430852275 0.5244191755704424 2.678969979134434 7.498607697118603 0.6256083724777566 4.460854945586591 7.637495748815534 0.712028280599723 4.541042966327046 7.506589667665967 0.7215766192490982 4.677267867679107 9.146951245818311 0.1573344949815406 2.632860673716325 9.129317057823975 0.4073344949815406 2.702852471272813 9.085099790557241 0.3038883168925199 2.816155878671859 9.442172012373065 0.1521883475396368 1.157362474364658 9.551701989198571 0.1873049550735485 1.360901609953126 9.424878647820403 0.1367280939816838 1.421749793160557 0.5377435540361691 0 0.4863644828464586 0.5740398128715201 0 0.5876256328128091 0.6612264875905633 0 0.5184345601037125 0.6102649642655711 0.135230143550105 0.3537114803302029 0.6465612231009219 0.135230143550105 0.4549726302965535 0.5230782895465278 0.135230143550105 0.4229025530392996 9.306550832851208 0.1504308949922797 1.995282554208909 9.162587909377411 0 2.059078927023734 9.353548565126115 0.1442849698543064 2.137872402599491 9.2187384335269 0.1442849698543064 2.140227274218617 9.362701357000695 0.2947158648465861 2.076430901403792 3.95804441760044 0.4650081534228968 0.2107030270049763 3.844491594686748 0.5892617888181869 0.1741868424384906 0.5083217925154203 0.75 8.302431824001832 0.5293424907920594 0.8239685791047336 8.463611427985807 0.652290384315904 0.8239685791047336 8.455503676771178 0.5891156259106853 0.5739685791047336 8.433766034695168 9.09654242934101 0 2.18132262612085 9.16621214655909 0.1728056634369725 2.353855320124752 9.097447494996274 0.1728056634369725 2.233966492646762 9.01842540801896 0.3234961963139085 2.290491407107258 9.017520342363696 0.150690532876936 2.237847540581346 8.410040051367591 0.2881486682040008 3.466080175997571 8.547919858520869 0.3745512918165134 3.385927099204521 8.356509785007852 0.2785830450451712 3.284633227424544 2.222222222222239 0 9.278312163512741 2.291666666666675 0 9.158030857431537 2.350144850795175 0.1229692110525856 9.352168327554782 1.656516205344853 0.3812975886365508 1.590125543452991 1.632476108686199 0.4533706785676199 1.787504586645785 1.795405094233737 0.2948778355501309 1.670313080840446 6.250000000000359 0.1507201646090554 2.863309172517093 5.416662958535357 0.8492770886267835 3.665186687282334 5.265879761163923 0.8751543841386175 7.89547870286072 5.196435316719475 0.6876911272309163 8.050126096393655 5.196435316719481 0.7071800916989146 7.848535295075179 3.441271034883949 0.5249310291951839 0.8700397859813934 3.605948042975525 0.457428609192486 0.7909315085284275 3.674490639201736 0.5479012082647623 0.9227155308189664 6.702798822288214 0.8149036657997324 5.803647663536701 1.435062668419878 0.4020973864100602 2.266196394749722 1.52002784582687 0.6114296166002227 2.312651516937986 1.566201625357456 0.5135270030102828 2.437226575657903 4.642165259195871 0.4383844894240756 0.9025320593485509 4.886079109883608 0.4455478371718767 0.8838575882814408 4.756086149312704 0.4928366522521989 1.037670283672846 4.704796550619847 0.3644746437796835 1.008058220060895 4.948710401307583 0.3716379915274846 0.9893837489937848 4.834789511190751 0.3171858286993613 0.8542455246694897 8.302310349119896 0.4409525066229354 7.638712093766182 8.144841269841269 0.5294679600235183 7.565735472166867 8.149932872449355 0.4000643323873302 7.464990092742519 7.96144080895729 0.4295322924108484 7.596726761307606 8.118909888235917 0.3410168390102656 7.669703382906921 4.057539682539835 0.1874632569077005 6.374377773838797 3.958333333333489 0 6.271279511483504 3.913169272381277 0.1546035933302035 6.45773006900685 4.097222222222368 0 6.511842123645851 2.013888888888915 0.1571502057613257 9.278312163512773 2.14181151746185 0.2801194168139113 9.352168327554814 1.668613902983911 0.1434283786725709 5.563579192758802 1.807502791872802 0.1434283786725709 5.563579192758805 1.61780561442388 0.3605899382578721 7.738690340271023 1.61780561442388 0.145569362126185 7.738690340271026 1.807230612743013 0.2892864396929432 7.789700841275133 0.2143902066994285 0.4016280141000049 6.999586916379602 0.3772904105202652 0.3055039801214583 6.856311493887082 0.1629002038208368 0.4105487425393751 6.802559483004666 0.1637242426954723 0.6029434550381334 6.939674844424902 0.326624446516309 0.5068194210595868 6.796399421932382 0.3781144493949007 0.4978986926202166 6.993426855307318 7.414704765695348 0.8578742115349047 8.280130099110128 9.154389161921252 0.5920361101138469 4.47152404056053 9.315515189603438 0.6020138477219348 4.448681189834637 1.213493631791999 0.3222721592613045 7.515225611807345 1.082868006391493 0.1578844661738036 7.531944027922892 0.9812504672938549 0.2863636749693629 7.591775198362047 0.4728327042161967 0.4290917244977424 7.855825042856683 0.4617626120184034 0.4296282905484566 8.130754268701406 0.3416183209690238 0.5196718271935923 8.047917997542163 0.0918905935015215 0.8793045587012112 9.303186093067161 0.2412797061804379 0.8370816128072078 9.233416802368422 3.92250463480009 0.8443013643122435 2.730115604125595 3.991172553152288 0.6715020227317106 2.84039041681152 3.95755680724145 0.8272006584194671 2.893396447815449 3.736109466100002 0.8726309545259523 2.877220120396142 3.8047773844522 0.6998316129454194 2.987494933082067 3.76972521201084 0.7169323188381957 2.824214089392214 5.555805369397072 0.4920163411315198 6.082018917939115 2.025972970498644 0.8598285483239969 3.759096190553588 1.793948413698151 0.8528776547811522 3.75849177556315 7.027253065655636 0.6472700000618099 6.039243883878875 6.929363945605065 0.7198558067629363 6.124184866369459 7.691524763902903 0.6551211432509536 4.157054798129817 7.661713581399724 0.8237114182818597 4.233163327708943 7.529811182503439 0.8314097249690939 4.150388778524689 7.528418879621787 0.7070180974468506 4.304558878620017 7.498607697118608 0.8756083724777567 4.380667408199143 7.660321278518072 0.6993197907596164 4.387333427804271 0.8409018640719343 0.1531587046775569 9.386814011739755 0.9851020594515569 0.3004105488173521 9.463935064895095 0.9775335287129574 0.1472518441397952 9.595995828830343 1.019347994607957 0.1400510296619452 9.450911939260113 1.163548189987579 0.2873028738017404 9.528032992415451 1.026916525346556 0.293209734339502 9.318851175324863 2.500000000000358 0.4086533016196625 2.783121635129453 2.331349206349555 0.4374632569077024 2.880492216242776 2.508664354930294 0.3760677698118368 3.01533509797192 7.233255046519823 0.8770431156106588 8.389879448172961 7.907815059639391 0.4096074044757284 4.938744383860969 7.744316665306155 0.4278415622740994 5.086329028857299 7.652359382735987 0.3952262463661976 4.955962337839474 0.8894640402786446 0.8088148179322687 4.636026963424213 0.7029486460010961 0.8361061013632288 4.780960610918152 3.914480833695122 0.8384268377886593 0.2944681485196647 4.149211799211187 0.8345646765063695 0.2857166295748048 7.07945853408208 0.833257552348166 3.948988344291236 7.184306841941778 0.8429842348261738 4.112165858287152 3.73133444908104 0.5710528035847814 7.051754534705934 7.708333333333361 0 8.436343020944829 7.831079336829847 0.5577334506540566 6.182751687333246 7.865703393514044 0.5596749315848706 6.348298359752302 8.068750236377651 0.5759222587009631 6.212078585498229 9.620801614334226 0.1619639009469724 6.24531796498042 9.565360298570372 0.4119639009469724 6.19288871053466 9.699946562079965 0.3741426750559373 6.237942572948869 1.392683333380403 0.8403952087044751 3.437016178233657 1.293176813245083 0.6593664861687178 3.444331610320601 1.289382368753889 0.8189712774642427 3.27156229154103 1.421685084434473 0.6942600155320592 3.350849632722118 1.524986049060986 0.7156839467722916 3.516303519414747 7.696498906507325 0.583893335061787 9.852261171270666 7.765867024983688 0.6684286691523145 9.618809740647333 7.765867024983685 0.504382768919674 9.673745849633903 4.179861111111487 0.8188198118753669 2.504928157207519 3.945826252512396 0.8736428154726866 2.481041695599292 5.021833828914309 0.3084332065396075 2.541325991629021 5.00848897944524 0.1475760981479934 2.467272600147432 4.874455960580555 0.160857108391614 2.616612414448825 4.899538634524907 0.302270055982517 2.441647743426195 4.886193785055839 0.141412947590903 2.367594351944606 5.033571653389593 0.2889890457388964 2.292307929124801 2.360358233329483 0.3622168060106465 2.222243547607427 2.222222222222616 0.1586533016196625 2.221808873417302 2.143636137011661 0.2883576792000987 2.275402451393183 7.205697610275649 0.2879993257999113 7.577224712136648 7.361111111111115 0.1225982235844028 7.5141863409892 1.112898834583757 0.5910349945238462 0.7262228196688822 0.9781118664291983 0.5924750696541196 0.641510851213079 1.169881641679761 0.611495969534316 0.4936762887668557 3.224517819301633 0.2945618456052961 4.897319692172452 3.263888888889124 0.1222449772566328 4.978368063758344 3.175858379302297 0.2792849537410537 5.126941674615241 8.956659131677164 0.5723234075884256 2.520682746023338 8.974293319671499 0.8223234075884257 2.45069094846685 9.009873092888485 0.75 2.612401730843547 9.146696840656944 0.5836912010108617 2.670304884678851 9.164331028651279 0.8336912010108617 2.600313087122363 9.11111706743996 0.6560146085992874 2.508594102302154 6.944444444444448 0.7811922665537442 9.54248915166162 8.556910284273757 0.4976373232917327 4.697925159852996 8.472204312901228 0.4457292465489714 4.517187249308412 8.710125694052866 0.4322149861546538 4.656102967737056 8.625419722680338 0.3803069094118925 4.475365057192471 8.486531709390647 0.3260361559608639 4.605669078143178 0.6006134822758704 0.8478129270843973 5.662273594355433 0.6737877967599037 0.5978129270843971 5.648666114461834 0.5293299693276278 0.6914101783539901 5.652333699746833 9.02636964892751 0.5479337687870318 3.267207472289851 9.064002422376348 0.6367263250105072 3.121803173859133 3.125000000000197 0 5.549591674996437 3.05555555555576 0 5.42931036891526 3.20861224489816 0.1992785756277805 5.453849719132252 3.379093895645974 0.3461696133584631 9.461205010630298 3.469877809043928 0.1709350702701045 9.463084645186131 3.381438308824236 0.1752345430883585 9.276432528956997 3.450882753268686 0.29938052180021 9.24166391000586 3.541666666666639 0.1241459787118515 9.243543544561692 2.393762841537458 0.1372112235016605 7.63611564461152 7.221423182081029 0.5362103123741886 3.312245804730292 7.053441639668229 0.7043119136164974 3.393615860195316 5.972222222222642 0.5864197530864204 1.5803085743179 6.126921815986174 0.5823280170295568 1.445399094625348 6.067169560916854 0.3887400332238639 1.466836063412073 1.388888888888899 0.2255492741115568 9.535287391529877 1.458333333333343 0 9.63915608175634 1.527777777777789 0.1497646417830569 9.59906231306258 0.445568859766366 0.1482916258410441 6.978550241460933 0.4996780157017594 0.3982916258410441 6.941559938344111 7.239285714286116 0.590604193378987 1.809237288929723 7.107075492567959 0.5943326745237386 1.967538719230174 7.459991132693581 0.3805425831824618 0.4570088666705542 7.389787099522337 0.1305425831824618 0.4832785328228283 7.570426894353118 0.2790088923016894 0.4889675929231349 0.8438223045423906 0.8382171311777038 3.19008689223959 0.7412235649230658 0.8514429515927329 3.411467040550963 0.7503155326652802 0.6896600827704367 3.336500513009058 0.6016361743009278 0.8514429515927329 3.41106376038723 8.602419772038424 0.5319781664422447 7.003252753295538 2.924976065482567 0.1591758214235431 3.224813751980933 2.924976065482561 0.3227560683371232 3.305001289368381 3.055555555555886 0.1635802469135801 3.344434396841616 3.077696656463823 0.1323830225095153 3.096185324027648 3.077696656463818 0.2959632694230954 3.176372861415096 2.947117166390498 0.2915588439330584 3.056752216554414 5.266926554991446 0.6953186428746655 9.855681174424317 6.881491516167223 0.1747041641310932 9.269983932076148 6.736111111111133 0 9.158030857431775 6.750450844168419 0.1303110122434429 9.326684980947412 9.091043311609187 0.3297623875547223 6.172187946509805 0.4785712023345158 0.4487539672840115 5.12924080065598 0.5789434208087421 0.4043245005126669 5.314689428379598 0.6816700786751008 0.4987910652361447 5.219236703358247 7.344586499164533 0.4154011022155085 7.737599786911546 7.168304447882509 0.4296065469765151 7.574140576083266 0.5742518803640694 0.841455580231892 8.961797446855744 0.7217597643391662 0.6834400376735799 9.099150237692866 8.402777777777938 0 5.549591674996774 8.274579014768477 0.1681349810389688 5.68281973759667 8.433785072796205 0.1532737925356692 5.699408270686273 1.438486596253551 0.6286753216815157 2.17025658572775 1.639644971977124 0.5874792947769631 2.294680355516346 1.569625553191129 0.7401049382817383 2.341286766635931 8.220357444367298 0.8497726187389238 5.831016229069064 8.359246333256184 0.8497726187389238 5.831016229069073 8.187797855425288 0.8553902187244786 6.040248148239422 8.213710855348008 0.7051628374634025 5.960828784068217 0.9750474297337788 0.8221210539605708 3.865690944389773 1.05783139725102 0.6612633541709984 3.911913320993111 0.8290997373796172 0.6724156969842251 3.803632975323256 6.527777777777894 0.4105873269525764 6.410222819532425 6.875000000000056 0.8364197530864214 8.275967946169867 6.853895972731902 0.822586279886655 8.475931000892626 6.676298527830074 0.8767836779932139 8.390688294615565 6.724638945006364 0.6993699578798689 8.550557580644609 6.745742972274519 0.7132034310796354 8.350594525921853 0.5535031802981794 0.75 2.878395391095089 8.21052367757088 0.1646588041813113 2.959103038653184 8.05555555555592 0 3.023684247292144 8.211367704265111 0.1540317532286578 3.122859218980812 0.6252087320265488 0.3922338285028928 7.888108325502296 0.6141386398287556 0.3927703945536071 8.163037551347019 0.7505350028687465 0.4492029239446448 8.034251730384318 9.815601396018677 0.560350360153411 0.9283800744078096 9.815601396018677 0.6841433543214375 0.8590098355580229 9.578769107886099 0.6762067410524171 0.9156929815729737 8.389974097745586 0.1411378091608995 7.604592819384106 8.206573636861609 0.2912021415482297 7.555396571137395 8.149932872449353 0.1500643323873302 7.545177630129967 8.180120941167544 0.1273757472913667 7.682539327884712 7.996720480283569 0.2774400796786969 7.633343079638003 8.236761705579802 0.2685135564522662 7.692758268892141 9.582988505593477 0.1619639009469724 6.118647128301277 1.736111111111373 0 4.346778614184656 1.822678275290484 0.170098581168231 4.216611501255423 1.597797446601612 0.1254403975265219 4.270333441856864 7.714386737336898 0.6878053547544065 0.5362906686804207 4.795336329792799 0.5324694626035664 0.2124993531951643 4.680005848460211 0.4097529927168553 0.1726268649945635 6.862291951208177 0.3992898032521447 3.302110915459104 6.998318471431641 0.4477201122899299 3.197184336629093 6.83033692901884 0.6158217135322387 3.278554392094117 4.935866735543501 0.1507319530742408 5.316227410069088 5.335191319153948 0.4514008627597881 5.877287869671521 5.528797655187669 0.4062885783090996 5.765509199445649 5.378684051123503 0.307524735173093 5.943717346561232 4.444444444444581 0 6.872686041889374 9.163832187509879 0.1542758534378298 6.748850267563915 9.225250295297316 0.3157888697117536 6.703646645083019 3.936697202249278 0.511956885842679 4.135199653031105 1.527777777777805 0.816762292599163 9.015623529821173 1.527777777777807 0.6581089909794995 8.935435992433728 1.666666666666699 0.8413466983803366 8.957562013962891 1.667694621090704 0.8753950918236664 9.193880608030895 1.667694621090707 0.716741790204003 9.113693070643448 1.528805732201812 0.6921573844228294 9.171754586501731 2.732366514614295 0.8447091153502344 4.092340438340477 2.560282247282076 0.8705895807821131 3.940551130249224 3.847210935327494 0.6747237232339892 1.680226978865982 3.945729027887861 0.8403923321417144 1.783716671899116 3.922186327048785 0.6991280173523369 1.914611324504454 5.694444444444445 0.4802579180548405 9.588325315129063 5.694387525919017 0.2908214492002404 9.766321670121581 5.694387525919012 0.4545708211603245 9.822003645007483 5.566820995253312 0.4927377279543904 9.671625465562865 5.566764076727884 0.3033012590997903 9.849621820555383 6.388888888888905 0.1490058478048805 9.255055213867738 6.388888888888893 0.1582707134019731 9.405580263784078 6.61156195527953 0.1303110122434429 9.326684980947402 6.472673066390643 0.2793168600483233 9.303428031302207 9.530766059957642 0.6852223041454246 4.727365552854783 9.536920523229311 0.8332084564234897 4.810305915960937 9.508332283025219 0.6814832586906389 4.971027197943949 4.940763874269785 0.3578882355822242 4.387968631715147 4.869239990024171 0.3256627487928882 4.594440300828568 4.993566968474086 0.1201386670978422 6.474125997304741 4.925430010980369 0.2718273405592878 6.433277350668048 5.147387658642831 0.3173748825369741 6.440821614021782 6.458333333333339 0 9.398593469594104 0.8597585329286317 0.1491565387290671 6.956870137629101 9.265085817643198 0.6817125566013056 8.473276175049342 1.736111111111543 0.8771326379418669 1.607104528841347 3.14580881938319 0.3181043436109144 9.318197994461428 3.028259399447824 0.142869800522556 9.199796322936054 2.943061732705972 0.3143801791735039 9.207481355311071 5.175765042665972 0.4961197444623195 3.531070481988956 5.151303130682225 0.718516844657764 3.515599250293606 9.156753051661124 0.8387782497676457 3.844215798483021 9.123838578235539 0.574360585635542 3.83190060713244 2.231444224469943 0.8377342751179574 7.776653490709078 2.199919622857524 0.8465792428484588 7.939843101494037 2.209141625105163 0.6843135179664162 7.881560101664459 2.061030733968636 0.8465792428484588 7.939843101494027 3.623060380138071 0.5903194661058363 2.786741097966574 3.853060190355643 0.5943013643122435 2.770209372819315 2.938113019715224 0.8353929770903921 7.279772495150911 2.859157066312868 0.8772101563130627 7.400795620356135 2.438724227284178 0.4858997238657691 8.160903272856459 2.229843837121218 0.5040468225429457 8.154032408061369 2.39741072805066 0.4787420972245343 8.01421301181265 2.27085198351268 0.3046350335099373 8.070162211247613 2.986111111111434 0.1635802469135801 3.464715702922785 2.986111111111425 0 3.625090777697682 2.847222222222544 0.1221824276708555 3.48228434526386 2.430555555555936 0 2.422277716885933 2.361111111111498 0 2.301996410804757 0.8429655499377997 0.4660637592401773 9.777815441490528 0.7720412556891906 0.6052435516790164 9.803270173804357 5.518351373482197 0.6888304278215485 1.487761775984611 6.259525311986277 0.1577759512654613 6.706811525675281 6.398414200875153 0.1577759512654613 6.706811525675288 6.250000000000124 0 6.632123429727159 6.118270253399804 0.1548031919888993 6.514076655023181 6.25715914228868 0.1548031919888993 6.514076655023188 2.0620933537123 0.1482547129929949 1.832870667494315 2.044488665681893 0.2797749678190685 2.003409813642561 0.9092272930686581 0.8419844574416879 9.294878757953596 1.046283857116075 0.8701151197462821 9.333794674215371 6.105457141945028 0.1445797432834946 6.741247868063253 1.181985363454912 0.8410349945238462 0.7512777397452067 1.238968170550917 0.8614959695343161 0.5187312088431801 2.192460317460681 0.4374632569077024 2.639929604080424 2.197565358131528 0.6856561859772301 8.071416460537908 7.325068809890785 0.4279070836604809 7.095488213599856 7.287675647497625 0.4421125284214874 7.332966689708831 7.184829059829109 0.5142054447610065 7.190352055386009 7.163886943233377 0.3729427471378601 6.986553468304515 7.126493780840217 0.3871481918988667 7.224031944413492 7.266733530901893 0.300849830798341 7.129168102627337 8.38320484531004 0.4235535250888378 9.854634633047791 8.320856636432699 0.4974609045341504 9.67633749224901 8.320856636432701 0.3335395675113824 9.621087178382307 1.637063614928954 0.5625955775455767 2.92640538001451 0.9854895464045796 0.3696419373580972 9.61437388248337 0.8412893510249571 0.222390093218302 9.537252829328033 0.8488578817635566 0.3755487978958589 9.405192065392782 3.252213101399572 0.8758526887930351 8.83993912844446 9.287503085089714 0.1442849698543064 2.260116101696607 9.288408150744978 0.3170906332912789 2.312759968222519 1.666383092318612 0.1635277331453381 1.259722146494339 1.52800529846362 0.3248256645256196 1.306046228254484 1.528288872812122 0.1612979313802815 1.386070043915486 1.656516205344857 0.1312975886365508 1.509938006065543 1.518138411489866 0.2925955200168323 1.556262087825689 1.656232630996355 0.2948253217818889 1.429914190404541 6.588851732474415 0.5260199907948766 0.9376759152274804 4.702032044414722 0.8284896213490551 2.973343768764838 4.476121858398449 0.8422859408556147 2.961785673377825 5.36324786324792 0.5962311523213019 7.593692511391353 9.462634786057226 0.6936469291394589 1.555418851152687 1.650932955442801 0.1592600403166616 4.546934012791688 1.720377399887243 0.3228402872302411 4.587027781485414 1.51261929093304 0.2847004378431835 4.470488840463896 8.533349987290919 0.1595974721523352 1.526951794393788 8.402952157712352 0.3213547038091643 1.616990943517401 8.34182439264411 0.1617572316568291 1.670347723441731 8.48796035972909 0.1488442306274838 1.743607940763967 7.207377674506981 0.5304076599228211 0.5680265892007893 7.054615373071106 0.4476001875015425 0.5401612876743298 7.075613422613589 0.5369256412250527 0.3504652540199671 6.528189385161991 0.8712408909823409 0.1202813060811716 6.667078274050876 0.8712408909823409 0.1202813060811694 6.597090368548165 0.7930895731685292 0.3214753794469563 6.735979257437051 0.7930895731685292 0.321475379446954 6.597501975932385 0.6643304641508702 0.2011940733657847 7.308119702169561 0.5883036011577364 2.106594495002391 7.338275116876661 0.6199838310741765 1.953170644105684 3.573279471825948 0.650969748255022 2.499895470136427 3.65521234432893 0.4879503106586142 2.414748331345297 3.757156455311376 0.6842930976218723 2.354571142544031 1.452498498374285 0.4274455853728141 2.496692425794335 6.597222222222653 0 1.219464656074405 6.736111111111541 0 1.219464656074416 6.681060579438808 0.1570399764844211 1.375299287830352 5.148960669264358 0.5882848976003462 4.472874865376858 6.454850166026976 0.166027367101897 2.155283724473717 6.319444444444452 0.1490058478048805 9.37533651994891 6.180555555555559 0.1490058478048805 9.375336519948906 4.861111111111214 0 7.113248654051745 9.794682504647227 0.7290111333058092 7.793133658176949 9.867565394216129 0.8797186939188282 7.627725795487382 9.85732622846248 0.6089537634325564 7.658548147754636 0.9820172954310098 0.1643067092117783 7.13044591403302 4.893747343170038 0.1543320670493954 9.604692711747447 4.951736873028879 0.3187906240986858 9.50192638029759 5.057989529858831 0.1644585570492904 9.416108444225326 4.849780555557244 0.1304139067154471 9.452819921785327 4.907770085416084 0.2948724637647375 9.35005359033547 4.743527898727292 0.2847459737648425 9.538637857857591 4.81481481481485 0.4000566401148862 8.583214166783732 7.01568441277314 0.6702728052134075 4.617294728763857 7.056621567898187 0.857437798243407 4.692962774798842 7.062097428491129 0.6927789940620968 4.831609660838956 8.861545246434034 0.5018960004507533 2.114001938699377 8.678422728816557 0.6000697712203631 2.022571418041241 8.662791182955459 0.6282896986297239 2.171458839421105 3.333333333333463 0 6.872686041889339 3.446410418334263 0.1557174908566958 6.972054753597554 3.502425101795628 0.1438688848416896 6.785984065447339 9.840664840429469 0.2757003799733398 4.757487171421291 7.717442514611587 0.4575200400670052 8.668366993992016 7.756222684058736 0.4624983103541611 8.470314929652243 7.544892410015652 0.4651864893062079 8.530705682018869 4.778418224861509 0.3356568932637897 2.537277328909139 4.765073375392442 0.1747997848721756 2.463223937427549 0.2349503491807682 0.5190354286661611 2.321466657538527 0 0.6344456963804677 2.294567861298088 0.1803829688836024 0.5965290517229168 2.177463859770291 1.666560035129332 0.841304238706622 1.259619988514938 1.805448924018221 0.6351885777789678 1.260154683055977 1.666560035129324 0.7184368766484888 1.406697249119768 8.35895111353215 0.3320903157838349 7.72911857216106 7.799439621895609 0.4004957609484714 5.625805615538381 6.255514550085872 0.7176713080401329 8.235838388521397 6.116625661196979 0.6312515549537112 8.31602592590883 6.124607631744362 0.7272198017250593 8.099613003816307 6.454953747431802 0.1427489592979666 2.647598319028222 6.454953747431793 0.293469123907022 2.727785856415672 6.3530099675275 0.2951157066939557 2.508553512870803 2.440647254324185 0.4531338703462418 3.653435856045952 2.462709277932376 0.5411362458483966 3.845731349773643 2.489342392606003 0.6675383354350894 3.648552114753647 3.446346664438914 0.5851878863965556 4.288356798770267 4.269349426626026 0.5561502936088553 2.842405554233006 4.250866457116829 0.5326841646286075 2.626110650225058 4.062954425249882 0.558165717065484 2.731016791061968 2.145392546291658 0.3896355172742564 8.052529375537784 2.271951290829639 0.5637425809888534 7.996580176102823 2.3129594372211 0.3643307919558449 7.912709979289065 5.373263888888911 0.4457304526749001 9.253253558079274 5.562901515400896 0.5949965826441992 7.092540078930165 5.607638888889015 0.5542695473251045 6.862662599716032 5.744876014640686 0.6029442749075286 6.924204402346364 2.361111111111339 0.16358024691358 5.108560219365432 2.29166666666693 0 4.346778614184688 0.7240583343996685 0.8478129270843973 5.593779714919945 7.106846464497179 0.8461536821006996 7.53541951601847 9.604470451279484 0.5707675954576628 9.420027867469031 9.559904264387024 0.8365378565642164 9.415971183377305 9.50237082766923 0.652503020956982 9.289926232474528 4.955523554328055 0.3430075129303555 0.7737414804243431 4.894732056713817 0.5354364350624553 0.7342973013064178 4.82080736020524 0.3224061222088219 0.6216184182170975 8.75003593972454 0.3240352911326653 3.661593371786864 0.5093691881390801 0.5388216960252858 0.7386651642319594 2.368302191857339 0.8651726751175099 3.44070312481222 2.234306303831987 0.8598285483239969 3.638814884472424 4.885875448946726 0.4089942584255836 1.113481047108619 4.641961598258988 0.4018309106777824 1.132155518175729 4.834585850253868 0.2806322499530682 1.083868983496668 4.910365377748061 0.8284896213490551 2.853062462683679 5.038562025827645 0.8635620671788284 2.725197893734021 3.750000000000058 0 8.075499102701066 3.676017063142527 0.1548348725760024 7.9787037901054 3.577337316559584 0.1349472887770102 8.170517576424064 5.279387659120045 0.3920251113246644 4.561449827724579 0.54482332375007 0.6571908056695496 3.454504377647511 5.17745091471653 0.8635620671788284 2.725197893734026 5.325479874286665 0.8177122449590577 2.890849990777163 5.225153011225062 0.6812743121378861 2.83292624938159 5.256035429842216 0.8177122449590577 3.011131296858332 7.32918694533608 0.2896926237646936 0.5286400129864478 0.1539608604888732 0.2765421745932158 3.127643558725899 0 0.368959995330976 3.263947547511645 0.1397908486635772 0.2565896636783372 3.390849327730544 1.875000000000321 0.1635802469135803 3.224153090760391 2.09154540028621 0.1274477520337056 3.342922506357953 2.022100955841768 0.2910279989472859 3.302828737664226 2.037730426050087 0.3332118890471117 3.437238502568229 1.890629470208639 0.2057641370134061 3.358562855664395 2.927461170478403 0.422442364843463 5.743828308783685 2.988493846041584 0.4125967204061997 5.969043080187295 3.118635634410109 0.3738214137796129 5.793828755345436 5.18399515983163 0.8409268222534827 1.153328769709956 5.253439604276072 0.8409268222534827 1.27361007579113 2.231444224469951 0.7028218913274769 7.647182170162804 2.083333333333423 0.8650876162095195 7.705465169992372 2.061030733968644 0.7116668590579782 7.810371780947754 1.245312218851727 0.5887986340723114 5.805690379201498 1.476757609881212 0.6114254027751909 5.842885315593755 6.181870254033749 0.3385298005158307 5.999358691864898 6.289274141978481 0.1783055226617843 5.995381715302532 5.493457070956444 0.8449965826441992 7.132633847623877 3.300386382282585 0.8463141461219917 2.867938708553543 3.381780095753629 0.686633612227828 2.831464402696888 5.784371660229931 0.1536858538780088 8.302186074738973 5.830832988694839 0.3484453380807944 8.439772929160711 5.712087128037151 0.3133663877721736 8.249934204093027 6.936863877896339 0.5088223829254157 5.98478467466169 1.164246958364311 0.1952589287902677 8.692725547131992 1.180555555555588 0.1635802469135819 8.837280707881689 1.382028239560303 0.122159213345268 8.724553928392883 1.312583795115853 0.2857394602588498 8.764647697086602 1.296275197924576 0.3174181421355357 8.620092536336905 1.637117804837973 0.4768738213330594 1.934882205231303 1.651007440174375 0.2860983200385411 1.827507668561263 1.944444444444863 0.4135802469135801 1.820871186480044 1.781515458897326 0.5720730899310691 1.938062692285383 1.800046790385501 0.4048007314019903 1.97806577420086 2.638136011107259 0.3671437513045642 2.222243547607442 1.236940769011388 0.5157732622039047 5.643730934455334 1.356677356170034 0.603318389454914 5.604472858606333 9.268435211942958 0.8387925562234754 3.324474468710806 0.5106487592868212 0.75 4.481528997624139 0.5433021132982849 0.75 4.614758884141672 0.3761261822108289 0.8475728983645285 4.449194280342492 0.4087795362222927 0.8475728983645285 4.582424166860026 0.436973613320661 0.5975728983645285 4.481000098787373 0.977021394750295 0.5769194244405642 9.835097490219283 0.9833012135290746 0.5556358516369909 9.612912931709811 0.9123769192804655 0.69481564407583 9.63836766402364 5.246967308044827 0.5449543468051385 7.247150305602742 5.380608974359058 0.4599358974359046 7.249721674413109 5.36610902370354 0.4015674246598609 7.390359101288526 5.232467357389309 0.4865858740290949 7.387787732478159 2.500000000000203 0.159033423381033 5.561334257953012 1.825745733363441 0.8284896213490864 9.088090029877529 1.826773687787449 0.7038847131727528 9.244221086558086 2.13777440763903 0.1389799779236054 6.510769646199166 2.05089989729324 0.3053436227406262 6.526477642618225 5.637099688078276 0.853377381713793 7.546097720327131 5.567655243633837 0.853377381713793 7.425816414245958 5.58368088465947 0.6175828264747977 7.472078455046411 1.316388936162057 0.1858714005298605 0.280977905537703 3.029728705219739 0.700799563533121 0.5569137296847385 3.981651535079087 0.6583202579796696 8.273486577357335 3.945878389625317 0.8277127458524869 8.38736581491214 4.06355092323159 0.8306075121271828 8.20218247730862 3.928655420960388 0.7082726475555113 8.065342290945111 3.892882275506619 0.8776651354283286 8.179221528499916 7.792068268790555 0.8480378943844307 0.2818363391666142 7.805234324604713 0.6239734738431257 0.4012078674392107 7.789649387305902 0.7235456400897919 0.1767314585523148 4.851969854488559 0.7973347559425463 6.418737434629771 7.787003621008452 0.5109850516948113 2.132016071728029 0.5078063242131128 0.3223986851020637 8.021205389337231 8.479572821669112 0.7897613990760532 4.211082624428069 8.340674589751515 0.6324598770592211 4.332323841438306 9.480492186252153 0.1442849698543064 2.370795637572749 9.451672448405915 0.3942849698543064 2.317209311365708 9.357627322415746 0.1442849698543064 2.380789886380981 0.3881775014660407 0.8400435366451356 8.219595552842591 7.720938021480062 0.1596077095474902 6.594967992340886 7.664965883420027 0.3406555824626095 6.75294891718138 7.721805639717809 0.1810478729151193 6.790104354567763 7.870347651162472 0.1475910034021743 6.782742745350473 7.814375513102438 0.3286388763172936 6.940723670190966 7.81350789486469 0.3071987129496646 6.74558730796409 3.314895384619526 0.4185899968277181 7.698338574989783 7.920418228659287 0.6777215918600392 1.314873030284858 2.91010230165056 0.8420954585849854 2.829540688621423 5.120289713971728 0.8495635062048497 6.292836003761995 4.972259568460126 0.646898262147396 6.320012620827023 5.189912055576031 0.6954826584893541 6.327845049415772 7.847222222222407 0 5.309029062834389 7.948181341961162 0.1650199798289647 5.27695268615221 2.579967380899047 0.1468227807369978 8.269892525974935 6.111111111111335 0.812536743092301 4.501426007717849 6.042857033541575 0.6647479227115123 4.532380749563483 6.258090878076626 0.7248544506428638 6.388582325024929 8.163153469286769 0.3178917568289438 1.288707199007458 8.047267402489302 0.1620453237452283 1.264343841612245 5.339779944910774 0.8762936847292495 1.384663513629317 5.936053628747198 0.4171568761695371 4.696879479929693 9.106259377628799 0.4115130162739238 6.416693120735403 9.258157369566142 0.6071013393134244 6.846794523637969 9.219305938603313 0.7059031651588857 6.967377151658535 9.398806455606358 0.6196869775703121 6.665065023338837 9.359955024643529 0.7184888034157735 6.785647651359402 9.22597471122976 0.7267883168837364 6.705056880440573 8.888686457718642 0.7979337687870318 3.184225724368596 9.06394726767644 0.8387925562234754 3.201973026216757 8.826417616690936 0.8712926887836651 3.294019990731588 3.5352885361327 0.5063807348240824 2.190561021009717 3.585069444444847 0.4457304526748968 1.99628142451518 3.422640169392367 0.5200938182211097 1.963237128931766 1.027304012299579 0.3624411228802472 9.46928999291314 9.457238645112387 0.75 6.726240347958587 9.583115330932195 0.8467927863505931 6.783337140979487 2.430555555555774 0 5.309029062834055 2.569444444444662 0 5.309029062834064 2.986111111111411 0 3.865653389860026 3.1250000000003 0 3.865653389860034 5.141750049344575 0.3873619798988562 7.304003291794341 5.763888888889296 0 1.941152492561407 5.85045605306839 0.170098581168234 2.071319605490642 5.6263088995104 0.1191599462614138 2.025294214365736 1.219658515537966 0.1554475546567496 8.501792014782247 1.04166666666671 0 8.436343020944424 1.094802513919867 0.1952589287902677 8.57244424105081 6.18187440455003 0.7975952748776421 1.059851019121208 6.283205521281152 0.8638656037932502 1.142765772312313 5.763793265766166 0.4147114890460842 9.766321670121581 5.763793265766162 0.5784608610061682 9.822003645007483 5.900832531547318 0.4103535668275553 9.844576109541359 5.831483710225597 0.4758999958363116 9.666579754548842 3.680555849299493 0 0.5236839826329601 3.612061244092331 0.1544012860378046 0.3646251953556035 3.558778055336672 0.1366368084118411 0.590797105314259 6.666666666666882 0 4.467059920266102 6.817609298459068 0.1912898419563694 4.492478424090779 6.785303256948126 0.15387431099587 4.332127062252842 2.67774670040351 0.496936600524349 4.284250277553046 2.531648810425136 0.4963657623640959 4.448787471047533 2.460949394711777 0.4745227259946179 4.274151032695697 8.263888888889042 0 5.549591674996771 2.702263844201513 0 0.3391718261585197 4.539759801129886 0.1621076141533412 0.3872248831240664 2.074899602415865 0.5894810711406282 5.366398927305973 1.28910295998241 0.1554475546567496 8.622073320863429 1.421131199542675 0.2776067680020176 8.549440310068341 7.323195730830678 0.5929842348261738 4.031978320899714 3.176289428205442 0.3214851604583809 3.31809210034635 3.176289428205448 0.1579049135448009 3.237904562958902 3.19843052911338 0.2902879360543161 3.069843027532382 1.043827512260292 0.3844933723512214 4.35095293880423 1.021825396825668 0.4705377785486315 4.197692210970963 0.979207991741421 0.6204551905130299 4.215884147678583 1.167700055233477 0.5909929690616613 4.347787507166364 1.001210107176046 0.5344107843156198 4.36914487551185 7.276432332402965 0.8444177241638349 0.39262991174742 7.104006980339959 0.8393254537235102 0.3745433790848046 0.5754924795137629 0.7497849660215847 0.483342582413962 0.43507583292302 0.8484726083901091 0.5387787551624843 6.895882683121254 0.139438525693298 9.131703188193857 7.33074214382943 0.1424362690299288 1.232705465958561 7.170162409927933 0.300581075519171 1.295722137722941 7.292619212827503 0.3855200247092139 1.210331915225791 4.513888888888901 0 9.158030857431601 5.005611691026829 0.3190277188930927 1.204726370286814 4.948710401307577 0.1216379915274846 1.149758823768679 5.068446643387687 0.2816714519949937 1.08062907217198 1.973554348382736 0.3301652840008142 7.453692876176396 2.013888888889001 0.1635802469135801 7.313717497520225 2.127726487476207 0.3029153323141068 7.261130180829623 5.315868022873762 0.4042241032597236 0.9269820601829598 5.189180686524991 0.3074931362259878 1.000125027926833 5.36615982050942 0.416797887968754 1.128343491218252 5.257922622659804 0.5042142652145405 1.049298930744007 5.207630825024147 0.4916404805055101 0.8479374997087141 5.001733846328928 0.8792239850934214 1.023367748756664 0.1319445668307923 0.128963749295999 8.490616581368986 0.2017872291460173 0.3461307897528722 8.610220790913896 0.3337317959768096 0.2171670404568732 8.630466136464257 0.2829849828522167 0.1512879755114865 8.42032267042284 0.3528276451674418 0.3684550159683596 8.539926879967751 0.1510404160214245 0.2802517248074855 8.40007732487248 5.208333333333442 0 6.992967347970596 5.138888888888985 0 7.113248654051757 5.295138888888993 0.1957304526748999 7.083178327531487 9.272409393945049 0.8387925562234754 3.081617361499767 2.662458838615384 0.1771433318480924 2.821754240295599 2.671123193545326 0.3032111016599291 2.973780165750617 9.878396420688649 0.8782701430505849 2.37249950840841 9.837310592615305 0.7178179746980426 2.549759410594532 9.851655695755104 0.7134470267326242 2.290676650754559 3.342834394576724 0.5384283014159061 2.136135895763687 8.058408715193613 0.5760131120375378 3.594332107096147 7.913074364126839 0.5751399724782661 3.519281884159366 1.781607219787369 0.1469176237917236 1.353504395141091 1.771456758465113 0.2782152124282744 1.523696439051293 5.280638938233476 0.1373619798988563 7.223815754406903 7.916666666666868 0 5.188747756753232 7.986111111111301 0 5.309029062834411 8.087070230850056 0.1650199798289647 5.276952686152232 4.027777777777812 0 8.556624327025769 3.984375000000041 0.1957304526748962 8.451378184204744 3.89685907421986 0.1500996158455449 8.646747271199047 6.859563501983731 0.4775046143118822 8.639578225206709 6.741778640362995 0.4049183344252272 8.519802707871385 6.945685913633522 0.2862154809673895 8.571862875615718 6.943829519737148 0.1698107750262129 3.815718051355139 7.081541269802621 0.3308637421352154 3.720442701069533 7.082156194510201 0.1610529671090024 3.650096733493478 6.931736395652596 0.1492898032521447 3.582767296315175 7.069448145718069 0.3103427703611471 3.487491946029569 6.931121470945016 0.3191005782783576 3.65311326389123 2.361699176922291 0.7980573083250115 3.5832994092329 5.747500899410317 0.5193685225128917 4.438626568666139 5.679199597101189 0.2981235663577753 4.493636372999131 0.8320248789374505 0.75 5.120346410776714 0.7594165949518032 0.75 5.005638409733541 0.8716158774389779 0.8598437086201635 5.056511133611285 0.9247542693152653 0.6098437086201635 5.11149456652819 0.9442241614246252 0.8598437086201635 5.171219134654458 2.500000000000358 0.5864197530864199 2.783121635129453 2.662458838615378 0.4271433318480924 2.901941777683048 0.3304774654662891 0 7.700975713158365 0.3982720739020248 0.1796282905484566 7.872950542363702 0.3866606164313564 0.1804747044149081 7.630658365300304 4.146879973493547 0.402737350616468 2.393607800822396 10 0.754503041836321 5.833421780310123 9.872183659743804 0.8764325442190615 5.977331641353278 9.872183659743804 0.8780704976172594 5.839555200306135 9.787086517511671 0.6609957775265978 5.784824658167263 9.659270177255475 0.7829252799093382 5.928734519210418 9.787086517511671 0.6593578241283998 5.922601099214406 1.541882921651625 0.7916932277196557 1.319610918917242 1.541882921651617 0.6688258656615225 1.466688179522073 5.440038267537617 0.6092020274052039 7.299177194505488 5.371929293178672 0.540727035319099 7.102563521103589 5.306396601223386 0.6942204767744378 7.296605825695121 8.14993287244936 0.27054626223082 7.412974452782723 8.333333333333336 0.1204819298434898 7.462170701029432 8.389974097745593 0.2616197390043893 7.472389642036862 9.837310592615305 0.5886458628858959 2.620248119228596 9.746822903768113 0.4990980312384382 2.461252164359285 9.851655695755104 0.5842749149204775 2.361165359388622 1.926839756414451 0.3815202548260737 2.071597870015738 1.73213728325691 0.3747364223685311 6.506602759359446 1.732137283256904 0.2833897239881953 6.666977834134338 1.92304055068889 0.2911000671855519 6.602498293165965 1.403377714867597 0.6352206378682277 1.436331587235792 1.528161459883087 0.8435274101485721 1.456466630473891 1.528161459883079 0.7206600480904389 1.603543891078721 9.074600013121673 0.170095286849353 5.530190743820881 9.09722222222236 0.1497548260231673 5.694258374735893 9.276537826021205 0.142801532610317 5.533445306821463 9.20709338157676 0.2925563586334843 5.557830700479441 9.184471172476073 0.31289681945967 5.393763069564429 6.02817897286076 0.5807906808381673 6.716999796929647 6.264786817961053 0.6039279949333629 6.475119889522601 6.125897929072167 0.7045525687907425 6.639687443921641 6.04296579082169 0.5840941019141507 6.55580377710093 6.286945108984968 0.1523667473959891 2.403514216809882 3.125000000000079 0 7.95521779661987 3.176006495730628 0.1685899968277182 7.778526112377225 3.205338124345877 0.1306358911530215 8.00243177385463 1.944444444444561 0.5049269452939175 7.273623728826495 5.972222222222362 0 6.632123429727143 5.889290083971879 0.2301661069807877 6.632619779918036 6.028178972860766 0.2301661069807877 6.632619779918045 5.979381364510918 0.1548031919888993 6.514076655023172 1.805555555555575 0.1497646417830569 9.599062313062603 1.805555555555574 0.3069148475443826 9.478781006981414 1.944444444444469 0.1571502057613257 9.398593469593976 1.761975881834013 0.1395005826321315 9.453621714314149 1.623086992945118 0.2892652244151884 9.533809251701586 8.612117064741652 0.8743764468361829 0.1175468903934225 8.750150036043678 0.8743764468361829 0.1202813060811762 8.680885486365042 0.7932903597150933 0.3217050178559444 8.681035522408724 0.6676668065512762 0.2014237117747683 8.542852515063018 0.7932903597150933 0.3189706021681908 5.62898672257301 0.8811583358612043 7.155644158096165 4.733863775141312 0.1525685228221902 6.96727472980717 3.31199386437979 0.1752345430883585 9.396713835038183 3.402777777777744 0 9.398593469594015 3.400433364599482 0.1709350702701045 9.583365951267316 0.1777151482013803 0.4198183779374578 7.880038407841242 0.3414947105138867 0.5203822349676664 7.801964497678326 0.1637795623125065 0.580944031808211 7.69308079882795 0.1639031727676435 0.5802336240341368 7.939034298691787 5.902739655750014 0.1763687566928603 1.099327935163208 5.902777777778211 0 1.219464656074377 6.083657914700961 0.1609149269027044 1.159750544583544 0.6163970738561906 0 2.904500373332529 0.5535031802981794 0.25 2.878395391095089 0.6175237051634727 0.178922745385381 2.718683055370898 0.1185614297481762 0.8764325442190615 5.833375320321559 0 0.754503041836321 5.833421780310123 0.1185614297481762 0.8780704976172594 5.695598879274417 0.3253166845120136 0.7886334050018153 5.803665589199994 0.2067552547638374 0.6667039026190748 5.803712049188558 0.2067552547638374 0.6650659492208768 5.941488490235701 8.878749403091751 0.8440998247051198 2.589194493088932 8.825535441880429 0.6664232322935455 2.497475508268723 5.972222222222546 0.1507201646090555 3.344434396841783 5.972222222222545 0.3657407407407428 3.344434396841777 5.767372056195953 0.1660273671019017 3.410959545785548 5.767372056195952 0.3810479432335889 3.410959545785542 1.114507815223742 0.787217057447044 7.356501811124842 1.164633964468265 0.8317545934120749 7.218896695644186 1.166647834689121 0.6189716508591189 7.22238482118656 7.669356283108387 0.1376768877187468 6.084059118278027 6.338984967313102 0.5155848737475934 5.333323476678633 6.212806749801274 0.3111506689364675 5.281431358601031 1.845238095238321 0.1874632569077009 5.085649494397567 1.87500000000023 0 5.068466450671684 1.823705846241231 0.1234567901234565 4.872808859446312 9.872746363317511 0.5531386085230248 0.2281663704267051 9.684173791811396 0.5501828883711963 0.317365646707308 9.776638248030642 0.5538724188838988 0.128687577553251 0.7204286672267992 0.4186703433482182 0.6339753866558172 0.632229214449289 0.4579221073303344 0.8313883387966297 0.8438427420686139 0.511360446980753 0.7165384251396503 1.949128540567487 0.1311840450897702 5.81096811132724 1.810831254889493 0.2877826035256561 5.924735624646981 1.897045207234152 0.3687097652543797 5.800944669153804 5.850456053068395 0.420098581168234 1.991132068103195 4.054835390946492 0.8235596707818681 9.037749551350558 7.580051486464061 0.4965163594087337 8.310631256614208 7.702916848751928 0.4267950514017016 8.340872770941916 5.97222222222265 0 1.339745962155556 6.153102359145398 0.1609149269027044 1.280031850664723 5.968601751647014 0.1266693803779297 1.415795112653073 0.7117836551233885 0.1638322703359513 2.400663486709131 0.2125763236396164 0.5432956240959974 9.502475125028244 0 0.6309171872740962 9.369121319381449 0.1493891126789164 0.5886942413800926 9.299352028682712 8.33332399030493 0.8426984779831679 4.34773852511413 8.340683932780221 0.7897613990760532 4.211082624428061 8.27996812201533 0.1646588041813113 2.838821732572018 8.349412566459767 0.1646588041813113 2.959103038653194 8.402777777778144 0 2.903402941211 8.498563841180832 0.1420178205278556 2.763421702591104 8.568008285625272 0.1420178205278556 2.88370300867228 8.445198629862457 0.3066766247091669 2.819121800033298 9.277291065191429 0.6828632256060521 3.768168179765673 0.9993371630288052 0.4191837858491437 5.873606865686915 1.033906619755827 0.1691837858491437 5.827169754093331 0.9397002625549327 0.25 5.95522835224067 0.776295771760823 0.4172536981100748 5.917296394532592 0.8108652284878444 0.1672536981100748 5.870859282939008 0.8705021289617169 0.3364374839592186 5.789237796385252 6.109261488003368 0.4760513498431155 9.666343817002112 6.249999999999988 0.4804257124162392 9.588191889488366 6.348315160117673 0.5411340399373454 9.678741624317803 6.207576648121059 0.3728753917519287 9.701550026398408 3.124999999999944 0.7788245744297682 9.538063697168035 3.055555555555519 0.8706043782417252 9.629758857192716 3.774161337231821 0.1374642209051072 2.716883652296632 3.798599034316958 0.3147642494145357 2.595262207648841 3.915061644386834 0.2635822775448273 2.797073066682204 1.418489863404065 0.313374539401909 8.305772619639743 1.379386903421701 0.1579269847451593 8.240323625801938 1.395292018609448 0.300020093144282 8.059984234065823 7.580371859762705 0.5928846622788422 0.1767314585523148 7.413875304304825 0.5892644920582464 0.1779111515147233 7.457769704270782 0.3753893510768732 0.1691953612482406 7.373807555327857 0.4749603073462966 0.3471065127629639 7.540304110785737 0.4785804775668925 0.3459268198005555 9.661829813375352 0 4.528462574207172 9.577349622779217 0 4.589374593260539 9.547456468737446 0.2223035700024376 4.563798603808701 7.731158025844159 0.8237114182818597 4.353444633790119 7.568052141563044 0.8756083724777567 4.50094871428032 9.251360031193332 0.5294136084613135 4.100293658420259 5.9027777777781 0 3.384528165535504 2.59548611111121 0.1957304526748979 7.489127735555304 6.777024911908786 0.408296794386336 3.040156422081861 6.666666666666996 0.408653301619663 3.264246859454379 6.870664576649782 0.3743210831649124 3.147241420459757 7.569444444444573 0 6.030716899321395 8.203392437312344 0.5903248178196663 2.009800680344838 8.324301753309653 0.5178185187459631 2.122615085872912 8.176464871553284 0.4274937009262967 2.133467113728099 8.27962702639574 0.3988442306274838 1.96378000770492 8.427463908152109 0.4891690484471501 1.952927979849734 5.176763968636369 0.6061981511033973 3.687056015660716 5.138885180757576 0.8492770886267835 3.665186687282315 5.294085981336224 0.6998767465749942 3.749489024176863 4.549635453950073 0.5553209021597769 5.861304607542571 4.44554416746001 0.7026607022773581 5.681013210716546 8.095343646416078 0.8627437295091787 2.012879541422905 8.047993574586027 0.7057037530247534 1.982637384465368 8.008205483725908 0.8429600235155748 1.790629029522869 8.146136126832655 0.8723442037415693 1.784941465148145 8.098786055002604 0.7153042272571439 1.754699308190609 8.185924217692774 0.7350879332507479 1.976949820090645 8.055555555555483 0.1582752621694223 9.405608627091016 8.194444444444347 0.1582752621694223 9.405608627091024 8.055555555555483 0 9.278312163513007 7.912345801917161 0.1421257884650917 9.213932889284694 8.051234690806023 0.1421257884650917 9.213932889284701 8.051234690806025 0.3004010506345141 9.341229352862708 0.972222222222227 0 9.518874775675043 1.11642241760185 0.1472518441397952 9.595995828830382 1.158236883496849 0.1400510296619452 9.45091193926015 3.314225768171673 0.1933288273728087 0.3999168802616807 3.268237221725745 0.1529922633432886 0.6049696692963938 3.419888872704084 0.1366368084118411 0.5907973699731065 3.354792761096503 0.2896290717551297 0.7664566703543141 3.40078130754243 0.3299656357846498 0.561403881319601 5.648113919590999 0.1654011022155037 6.105168286095277 10 0.6273681742890231 2.436617747147464 9.233957988054692 0.3167072861180519 0.9586176665372637 9.175262431385441 0.4136194767698433 1.073290051051747 9.082353883830333 0.3197682776402812 1.160058429546563 9.192482695294572 0.4043498772532942 1.273543823856497 9.251178251963825 0.3074376866015028 1.158871439342014 10 0.6368208502714636 5.63009458078683 9.787086517511671 0.5416756325635425 5.719273899691113 9.773159548160214 0.7253794273031449 5.629170187106125 9.560246065671887 0.6302342095952237 5.718349506010409 9.773159548160214 0.6060592823400895 5.563619428629975 1.625232304439749 0.7253090430437525 2.197886733231623 1.66666666666675 0 7.834936490538622 1.856091664985883 0.1437170775667582 7.885946991542729 1.756694503312769 0.145569362126185 7.738690340271033 5.210228838782306 0.4207432317743136 9.82156149662905 5.337192319896474 0.5647873589960701 9.855681174424317 8.955023196314876 0.4815866418354646 6.605289686160667 9.017232806567932 0.5570282428808825 6.452774056203316 9.200476311180761 0.4685412591548063 6.577797120233493 1.44294606843934 0.1591896269012652 3.063938073183053 1.666666666666994 0.1635802469135803 3.103871784679205 1.52936918283315 0.1542817283590485 2.918532601763765 0.7923896659387819 0.3935775374804469 6.077812225360186 0.8269591226658033 0.1435775374804469 6.031375113766602 0.6635546318716936 0.3108312355905217 5.993443156058524 2.08515654978832 0.6522440946051244 6.603751543924028 2.047576845777458 0.4712767325045066 6.556617266441177 1.92608785120115 0.6793333300725204 6.49714823188099 5.655245904177132 0.1459961275202412 5.286038311675838 5.615563364494591 0.3334593844279402 5.423502661482885 5.739657537663987 0.3088015248954433 5.234190447939973 1.112531031912438 0.8490730119256552 7.433353991851182 2.632324523872775 0.5920954585849854 2.909728226008857 9.165583873497276 0.8710393349954327 0.1202813060811724 9.304433956439992 0.8710393349954327 0.1163500967704763 9.233828882874414 0.7938874116468528 0.3169313384282514 9.232784895651204 0.6649267466422857 0.2005812416577751 9.094978799931699 0.7938874116468528 0.3208625477389475 8.819030049610827 0.3526314143897069 7.173780511905454 8.749949802314392 0.4456101125769538 7.303906001508786 8.825323799172363 0.6104828693606903 7.260009643491002 8.894404046468798 0.5175041711734435 7.129884153887671 9.455667289928517 0.3437580680974595 9.263619248884279 9.439895409015929 0.4417994500240202 9.038646892910245 9.525327217729842 0.3206312980927235 9.009627265368833 8.418857010904212 0.3406574295018494 2.958414490419958 8.541666666667027 0.1759986253205381 3.02299569905894 8.637452730069715 0.3180164458483937 2.883014460439044 2.222222222222433 0 5.429310368915215 9.611550006678883 0.5555120264259273 4.784217515703682 0.8590741051540245 0.8478129270843973 5.837080075407123 0.7890169478168307 0.8478129270843973 5.958146447664157 0.8245046484270031 0.5978129270843973 5.883517187000706 3.055555555555642 0 7.834936490538697 6.519159534110938 0.4221342502191463 3.832272134013349 1.223357525517716 0.4267572350855315 5.491450241041125 1.343094112676362 0.5143023623365408 5.452192165192125 4.24914016215606 0.66042899016246 3.711639610993668 4.432189542483965 0.5508654078915516 3.700561401121239 4.414931109273591 0.6537126737214722 3.539156609379299 9.483916621868104 0.3197685801088904 6.59383051337919 9.617479332828074 0.1582555638349667 6.517926815091666 9.696624280573811 0.3704343379439316 6.510551423060114 7.200884823487578 0.6731676176808116 1.489452217805256 7.291666666667067 0.840604193378987 1.618620057197282 7.369670372044286 0.7124340967372218 1.663655517494611 1.442580111036165 0.4215103786509443 4.875682639578064 1.621151539607594 0.4840471217432433 4.852771914610233 1.473455465268576 0.5136477899285526 5.01823182027555 2.585685162467412 0.4955353410388075 6.702459712831469 2.684262534855567 0.3499608601816548 6.712465046416178 2.73162740035449 0.5392211606196013 6.558570157998732 2.700094584581507 0.5496952966828712 6.706642023356318 2.554152346694429 0.5060094771020773 6.850531578189056 5.392717838208656 0.4717967834089598 1.797647016650803 5.168650793651206 0.4711900447119609 1.757866692818653 5.050626333686934 0.2816560425994866 1.787004255164366 5.219277127337724 0.435539484072122 1.884374836277704 5.274693378244383 0.2822627812964855 1.826784578996516 1.597222222222586 0 2.66284032904823 1.598813627277605 0.1542817283590485 2.798251295682595 1.786919070172128 0.1430631800977459 2.718398988525614 2.817536950734191 0.3540864207963162 6.016164110733143 2.81515421580391 0.1914897003901165 5.917462855092069 6.003055259343084 0.3235921095643954 8.955376516931189 6.041666666666694 0.1635802469135877 9.077843320044259 7.569444444444455 0.5478395061728454 8.67690563310714 3.946958281326618 0.3921075079139004 3.678426708913696 4.143036712699168 0.4429729158054519 3.673709794949743 4.084967320261749 0.5508654078915516 3.580280095040043 4.05306173078351 0.6095635822709085 3.716356524957621 4.111131123220928 0.5016710901848088 3.809786224867321 0.1573907238145803 0.7216677488868523 5.617471914294745 0.3641459785784177 0.6322306562714082 5.725538624220322 0.2759521535627565 0.8435972512695928 5.617425454306181 3.126605083207292 0.6148609371139073 7.228223363973276 3.105158730158839 0.5294679600235154 7.382449672423818 3.314538325016534 0.6541098520887022 7.354731486614686 5.00000000000016 0 6.391560817564742 5.069444444444609 0 6.271279511483579 5.153820690168906 0.1972362154391319 6.358256434281784 9.30195276631299 0 5.667792909738782 9.411823925667392 0.142801532610317 5.53136523548233 9.339127873348698 0.1428608144461211 5.730189377170421 9.448999032703096 0.2856623470564381 5.593761702913969 9.474413972994883 0.1428608144461211 5.728109305831287 8.673870138934403 0.5897345936163566 5.719056568494473 8.639859141502562 0.622274357994702 5.586184691021534 7.848530582245364 0.2814806246281917 4.902643415338508 2.222222222222237 0 9.759437387837584 2.220679164231009 0.1227223165890342 9.879718693918804 2.063795986121963 0.1651922736545215 9.690529743121887 1.736111111111475 0 2.662840329048239 8.194444444444361 0.3604357559965701 9.325421089703578 8.194444444444361 0.2021604938271478 9.198124626125569 8.051234690806041 0.3442862822922395 9.133745351897256 8.194444444444439 0 7.594373878376667 8.011043983560464 0.1500643323873302 7.545177630129956 8.041232052278657 0.1273757472913667 7.682539327884702 9.263258666630671 0.1434784158815317 3.293863884978309 9.194476585853224 0.1434784158815317 3.413762775218025 9.262586539682403 0.3934784158815317 3.376537575693941 1.652737238582744 0.84967681610626 7.781350757079823 1.542089484361502 0.6851685638139819 7.793065302931936 1.556018912445525 0.8354917477077218 7.606088424228387 1.727450439043968 0.8761328207640537 7.550748324067976 1.713521010959944 0.7258096368703139 7.737725202771524 2.430555555555765 0.8399825791522511 5.447188552856572 2.291666666666877 0.8773401335379738 5.454812508945583 8.312377930450708 0.6990185520202074 8.175923771209161 8.381822374895151 0.860282150909911 8.201572352412718 8.554319116987761 0.7100634112569351 8.182721900907834 1.319444444444478 0.170098581168231 8.937239858965278 1.451472684004743 0.292257794513499 8.86460684817019 6.666666666666865 0.4950730547060836 5.028372681978241 6.666666666666859 0.5864197530864206 5.188747756753136 6.812300205041355 0.6897403111258418 5.068875393789277 0.7704057199814611 0.1688853773266334 0.6731971356452753 0.6475456936712523 0.2497849660215848 0.5804739610806049 0.5178810709234809 0.1667839171683347 0.6613574476765913 0.467904018168819 0.4165688831899195 0.6221356986871333 0.5907640444790279 0.335669294494968 0.7148588732518035 7.916666666667116 0.5735595799300259 1.419933216295099 8.008205483725927 0.5929600235155748 1.630253954747991 0.3927125782232281 0.8284461675228214 8.409186476133556 0.4524857133418541 0.5784461675228214 8.379341082842917 0.4735064116184931 0.6524147466275551 8.540520686826891 8.748482836957365 0.1570487328970166 4.21555240622174 8.605713401424016 0.1625806710455429 4.149426139857482 8.625429115140587 0.1303069094118925 4.395172097065569 8.620031405453185 0.2928875804574353 4.318100928819151 8.762800840986536 0.2873556423089091 4.384227195183408 9.340105942801836 0 4.155232777561345 9.476614747066566 0.3569205251961423 3.398493390322689 9.506986440201935 0.4684746196672736 3.257903027263917 9.300219313131239 0.482270972105007 3.231133277263224 2.92497606548257 0.4091758214235431 3.144626214593486 3.055555555555889 0.4135802469135801 3.264246859454168 3.077696656463827 0.3823830225095153 3.015997786640201 4.664419330696857 0.1525685228221902 7.087556035888339 4.664419330696843 0.3118029488190664 7.220833253201267 5.615056923528606 0.4061519649247498 6.535001214917635 4.441343714646936 0.1291720556913239 4.056665218662953 4.304911630142964 0.2836214553146195 3.933316425146992 2.211876003553576 0.5780772446771957 9.837000653045017 2.128695057817632 0.5024537624351415 9.6478117022481 2.356565738362371 0.5298758716310542 9.646863749662634 5.866175383717635 0.6049856290285323 6.113532022452251 5.775363417905673 0.8407801842675264 6.104279614292155 9.843778614487819 0.5994529229258361 1.517230325665498 9.843778614487819 0.7246902251940643 1.588699698487863 10 0.6293180645537031 1.453222288972968 9.758878225157083 0.586103262210544 1.34855514206454 9.758878225157083 0.7113405644787721 1.420024514886905 9.602656839644903 0.681475422850905 1.484032551579435 9.236111111111239 0 5.549591674996733 9.166666666666792 0 5.429310368915575 9.09722222222236 0 5.549591674996757 9.005155568677228 0.170095286849353 5.409909437739723 9.144044457566107 0.170095286849353 5.409909437739699 1.944444444444863 0.5913466983803374 1.820871186480044 0.7687700504356306 0.1625740232022004 1.452317292660861 0.843683976836627 0.3211123759913646 1.472363346938323 0.72275511539837 0.4213102724367338 1.384466692320571 5.245213195242038 0.146842655835536 3.490974572404446 1.944444444444678 0 4.948185144590516 6.041666666666723 0.4521604938271666 8.195780408782351 5.923260549118821 0.3558463477051761 8.141810999964093 6.101590348881359 0.330686702060433 7.989814750677466 8.164788090860528 0.8627437295091787 2.133160847504092 8.215580571277105 0.8723442037415693 1.905222771229333 9.618529722165004 0.1598200889757627 3.859536900173377 9.562442803660332 0.4098200889757627 3.825724586543044 9.565451668894752 0.1598200889757627 3.760303170245423 1.822678275290479 0.420098581168231 4.296799038642871 1.805555555555809 0.4135802469135794 4.467059920265829 1.597797446601606 0.3754403975265219 4.350520979244312 9.903906485589896 0.8774155417899101 0.8312306983055195 9.896705395316319 0.8774155417899101 0.9682528851844587 9.763167711867425 0.7489448875258655 0.8861383520670395 1.706773554013068 0.7080633379624595 2.340281664441859 9.448929568158874 0.6808244923189517 8.391723990085048 5.972222222222333 0.4950730547060845 7.193436191439266 4.626600271383188 0.602362667881735 5.189898952444076 5.869577634769078 0.5955916345834752 5.824336162173177 5.697719185939664 0.6319717671692461 5.66831426547296 9.325613088766849 0.1515154232694378 3.826459893115842 9.385188678180974 0.4015154232694378 3.755291035719615 9.240084527515414 0.3222262872490927 3.833516137353565 9.134890981826647 0.8423093028520157 2.192484645072242 9.176991783815819 0.5942053033027691 2.204959016435057 9.08154177216764 0.6646327104404414 2.341253727574133 2.860468246377629 0.6860378615877898 0.9803752067572329 2.881636174259721 0.5218267973248619 0.7928444827101928 2.800715426376393 0.5090517604057725 0.993159939790175 2.699586300502051 0.7121653101009144 1.066121215691483 2.720754228384143 0.5479542458379865 0.8785904916444436 2.780507048385378 0.7249403470200038 0.8658057586115013 5.307539682540098 0.5625367430922982 1.677679155431211 6.359126984127061 0.5625367430923054 7.737565909425555 6.303710733220409 0.4092600403166623 7.795156166706732 4.988545085414424 0.4144585570492803 9.376014675531639 4.780336111112836 0.3804139067154369 9.41272615309164 6.0416666666671 0 1.219464656074379 6.378867914913606 0.8346874967502583 2.07879063470982 6.347508847098274 0.676914484617295 2.14087300585255 6.218640932185068 0.8422269878670366 2.123516169785324 6.328478680378957 0.8534687638533137 1.902732283753346 6.297119612563625 0.6956957517203504 1.964814654896076 6.457346595292163 0.688156260603572 1.920089119820572 0.8026896230511306 0.1797966597621553 6.589510969638031 0.7638888888890576 0 6.752404735807986 0.9327366288307745 0.1370315193125302 6.629540225967906 8.958333333333396 0 6.752404735808524 8.841359315053007 0.123876675986523 6.819926829846034 2.062093353712296 0.3982547129929949 1.913058204881763 2.706814321834979 0.1274493965690226 7.406546955314658 2.663411544057196 0.3231798492439205 7.541863424655975 2.688299708864104 0.3074354222679184 7.356442537858703 4.529535999095634 0.5992018187830606 6.870472426253057 4.678086419753198 0.571483797734578 6.942659562540323 4.760249460834782 0.600372633571695 6.76728489875795 5.60303264487231 0.6021210196460847 5.07358165682546 5.799685066524741 0.6021210196460847 4.91357667837698 5.718491516912916 0.7215168011064046 4.91401696391744 5.069444444444887 0.3974596757584787 0.9088797047486382 5.119736242080545 0.4100334604675091 1.110241135783931 5.1381863805797 0.5941808047470314 0.9580536075658119 2.903198436362195 0.8005085537875198 4.921338050855299 3.042087325251084 0.8005085537875198 4.921338050855307 3.090270152758059 0.8429600235155791 5.068796904624308 2.937913033564461 0.643468577303099 5.041949810889031 2.951381263869171 0.8429600235155791 5.0687969046243 2.091190303896188 0.1507646650342269 3.197390517084066 2.238291259737635 0.2782124170679325 3.2760661639879 7.529811182503457 0.8314097249690939 3.909826166362345 7.484394658378173 0.8573013166886507 3.688172309207197 7.845862123672668 0.4108571083916137 8.020781282404794 8.055555555555532 0.4022545557206538 8.160470398143953 7.841805737640811 0.3789555452288563 8.180497696167045 6.342309165586919 0.4348810397154578 1.747327312962228 6.358119870461566 0.5172090567450145 1.532230295882224 6.298367615392246 0.3236210729393215 1.553667264668949 0.9066934557799647 0.5931557069244909 4.968009648230026 0.8535550639036773 0.8431557069244909 4.913026215313121 1.01889273826714 0.7029994155446544 5.01888237210777 7.597511451313286 0.410661891657794 0.1676141365701108 7.680045857828242 0.5138530181478133 0.3443455951224257 7.557443702336318 0.2963577069458443 0.3368094978183515 9.27582038240654 0.1720794079058026 7.632201828395192 9.206375937962127 0.1720794079058026 7.752483134476357 9.374999999999972 0 7.714655184457914 9.406667401593666 0.1413413928820977 7.774375329773926 9.337222957149255 0.1413413928820977 7.894656635855091 9.903891884713131 0.5000305113359917 0.09607770356021565 10 0.4992967009751176 0.1955564964336697 9.872746363317511 0.6713805672032473 0.2247652811134667 0.3401554837181835 0.321691972693558 5.510321568345992 0.9150033666143851 0.6934031182275702 2.516322642038848 0.902777777778247 0 0.9789020439117826 0.8543983825359835 0.25 0.9456254338084616 0.9238428269804212 0.25 1.065906739889637 1.046313568889017 0.1823537584165638 0.9891853101793375 0.9979341736467534 0.4323537584165638 0.9559087000760166 0.9768691244445792 0.1823537584165638 0.8689040040981622 6.551390846760557 0.5586805487648137 6.556913816701034 1.94695793826555 0.6252887380677969 8.791033047772773 1.967148116073404 0.7037783594168834 9.001748601074857 1.808069049376662 0.7166354364481335 8.871220585160218 1.870927320613087 0.6252887380678172 2.898149246001671 2.063507431649014 0.7037783594168723 2.986021815764144 1.870927320613076 0.7166354364481546 3.058524320776567 6.732038431724041 0.3747112619321824 5.314282758043238 6.924618542759971 0.2962216405831281 5.226410188280788 2.757951876093115 0.2962216405831311 9.000087119822759 2.565371765057198 0.3747112619321831 8.912214550060273 6.431418462202533 0.29622164058313 8.558285808277834 6.60380839543059 0.3747112619321761 8.435442824738356 6.464919506541707 0.2833645635518396 8.3552552873509 5.713166251012943 0.1402737144452557 3.281624059045179 3.037117606841744 0.4185899968277181 7.618151037602324 3.014855703894757 0.4052799390082222 7.429476160376961 5.069444444444475 0.1777127166755184 9.580998884466641 4.314162681764086 0.8429600235155785 5.504702662730413 4.175273792875196 0.8429600235155785 5.504702662730409 4.066146879899293 0.8430890991106 5.301966402805835 4.213642894996514 0.6860491226261787 5.377358696620938 4.205035768788182 0.8430890991106 5.301966402805839 7.030531390711237 0.4411702441341221 7.316518282634409 7.009589274115506 0.2999075465109757 7.112719695552914 7.158253638370932 0.8353411958186897 4.966550724549759 6.987177123453733 0.857437798243407 4.813244080880011 6.294597416237533 0.6853379981056462 6.631415811930554 6.264786817961049 0.8539279949333629 6.555307426910045 4.513056596675835 0.5704886280267649 9.192292039648397 4.618299074075775 0.3711546474562028 9.212257309622991 4.594318633714556 0.4601617940014563 9.366799797920876 4.733938502144799 0.4760188728812683 9.274568821539145 8.113655586882938 0.8355290652624887 9.416261248570686 8.032300389644451 0.6622483964471679 9.509085032003682 7.974200358316992 0.8267193311846792 9.611698559108337 7.933274559957359 0.8668580977479627 9.413303299220468 7.851919362718873 0.693577428932642 9.506127082653464 7.991374591284819 0.7023871630104515 9.310689772115813 6.812234222726684 0.8443326745237386 1.89720279357888 9.48515287556884 0.6699743522105714 4.234998536521715 4.16494994766491 0.6394103865064305 5.522584087164096 4.017453932567689 0.7964503629908518 5.447191793348992 4.055823034689007 0.6395394621014518 5.319847827239521 1.671626984127216 0.655386537330982 4.905227535275803 1.685635666591713 0.5143601728896273 5.016010830006107 1.523930909788197 0.6849872055162913 5.07068744094112 3.630506791280391 0.5081643314329668 8.46201988426076 3.520648636864065 0.4855045128900416 8.375191920777549 5.197801002784005 0.1495331999842562 3.967784048348158 5.069444444444732 0 4.106216002022491 5.017661477270357 0.1552118183600071 3.967307483273918 0.09610811528686625 0.4999999999999991 9.903891884713131 0.09610811528686625 0.3817884754361657 9.900524894840055 0 0.4992661124195236 9.804416779553186 0.1260188642427612 0.6712295421134851 9.776476474110693 0.1260188642427612 0.5530180175496517 9.773109484237617 0.2221269795296274 0.5537519051301272 9.872584589397562 7.849088958525717 0.1278014705268468 9.339107455767049 7.844768093776258 0.2699272589919385 9.274728181538743 7.98797784741458 0.2860767326962691 9.466403919345066 3.553615935693629 0.8403194661058363 2.746647329272847 3.783615745911201 0.8443013643122435 2.730115604125588 3.597220577211114 0.8726309545259523 2.877220120396134 3.539725401793269 0.7129504206317886 2.840745814539472 7.647998070167166 0.4096805338941598 8.868835837460621 7.47544796557123 0.4173469831333624 8.731174525487472 2.803991275260274 0.4468233398812243 6.7607245354301 9.575377293301951 0.8434686000056971 9.615887312289459 9.619943480194411 0.5776983388991435 9.619943996381185 9.482035575155408 0.6735969901855242 9.681400931596972 9.247974163911248 0.4015154232694378 3.53236311381672 9.179864210082069 0.1515154232694378 3.569588313340803 9.108992206523421 0.3138199493300302 3.60420007894998 5.050296737803743 0.6261608185075942 3.617653975168657 5.01241794992495 0.8692397560309805 3.595784646790256 1.161359857112074 0.4732967880806341 9.526572041641893 1.118851275175741 0.7033608781649709 9.529736082678331 0.9847954303632456 0.592505212964584 9.472454033949578 1.162854073946245 0.5101661494082272 9.386113143881659 5.817696160141082 0.1525280704766478 6.510105718752939 2.122626962748093 0.6761983790676729 9.0715567214445 2.034079066696774 0.8284896213490864 9.20837133595874 2.006278081346215 0.6891089842853265 9.285240543489943 1.512390512883776 0.1591896269012652 3.18421937926423 1.38062856692136 0.2828698226556209 3.260292174234571 8.132763552920844 0 0.5208061225799651 8.097692516278459 0.1769140561797715 0.6932776108367431 8.264231264568444 0.1206178977623694 0.6108269182474451 8.958333333333794 0 1.700589880399329 7.986111111111107 0 8.676905633107179 7.96455601739207 0.1646588041813157 8.510408698345985 7.895111572947632 0.1646588041813157 8.630690004427144 7.994976584735381 0.1272208837726727 8.850494212687325 7.973421491016344 0.2918796879539883 8.683997277926132 8.064421029179819 0.1272208837726727 8.730212906606166 7.191700146929092 0.1424362690299288 1.472817200465489 4.333503307251164 0.1386593261356702 7.502983247252773 4.444444444444535 0 7.353811266214059 4.313783325792031 0.1240433205449796 7.276606360187378 7.703077635888635 0.3403033723623536 9.031384207792801 7.647998070167164 0.1596805338941598 8.949023374848068 7.555079565721501 0.1806228384681939 9.120110384295373 7.479398528130083 0.3129044461106929 9.045415099967013 7.424318962408612 0.132281607642499 8.963054267022279 7.572317032575746 0.2919621415366588 8.874328090519709 4.627744954919917 0.8476325987452683 8.329597218441153 4.488945641588213 0.8677512976966051 8.195868794619354 8.766259869512432 0.223799172428566 5.039196003585395 8.680457118079518 0 5.068523283575548 8.608797313056382 0.1591921422825263 5.022080718922522 8.678173365265605 0.1591921422825263 4.901838899116774 8.694600064489295 0.3829913147110923 4.992753438932369 9.385522833410876 0.2331154837835105 7.192918789136511 9.436394666045324 0.3877338810704588 7.37699708376341 9.488985573852158 0.1546183972869483 7.299916418615947 9.433128954186234 0.1306395557065365 7.046649185352305 9.484000786820681 0.2852579529934848 7.230727479979203 9.380538046379399 0.3637550394900469 7.123729850499767 9.86530710880167 0.8780704976172594 5.687925978914475 9.652393626313341 0.7829252799093382 5.777105297818758 6.039493979903466 0.4078602918820493 9.844576109541359 6.041343603011208 0.6289639410532049 9.799531156531334 5.902682154655059 0.6314572159987109 9.799531156531334 5.970372599114494 0.5288963508288542 9.644107266072693 1.788432835821026 0.8299014188317669 7.123134460899657 2.010198376364657 0.8798572229135914 7.072586567108865 4.367492596807222 0.6097006787617796 5.806089760370062 2.369921529006076 0.8298935176088738 4.141223073572897 6.463427409428752 0.7234664829220737 0.759737463509961 6.388888888889362 0.8779600372310911 0.7167026286115363 6.241876941392324 0.7307457611698707 0.6422720675569444 9.024943298620986 0.1542758534378298 6.748850267563902 7.098307990080728 0.8501854889903695 2.704345871985713 8.172280622903941 0.8252002151278254 6.43506439364975 8.187797855425266 0.8553902187244786 6.280810760401766 8.549894681430526 0.3199804437000848 5.071075033169786 1.805555555555622 0 8.075499102700974 1.736111111111187 0 7.955217796619797 8.310760571253397 0.5600817540632912 1.112676531202343 8.218294496044662 0.4659281871470067 1.204698016901079 8.267659259554378 0.6041620119300133 1.24721518522944 8.175193184345643 0.5100084450137288 1.339236670928177 8.106159991239357 0.6642437659933045 1.15546201088307 2.816394420793506 0.4608740653077215 4.971454372610616 3.002716255663593 0.4728254221361832 4.840289679269414 2.954056815664257 0.4575485302719408 5.069911661712203 3.959495481697092 0.8531536733679348 4.200493870974928 3.802168644094286 0.6845636765402169 4.256904249136392 3.731562051286361 0.8314100031722821 4.282907686265053 3.750000000000283 0.8814676548820863 4.146309770716133 0 0.3683252475580454 7.154108444911335 0 0.2454229462930737 7.2234759801946 0.2143902066994285 0.2702156534242842 7.069338424326643 9.332607951341192 0.1864982868616544 6.205871780311866 9.314979744318087 0.4364982868616545 6.280113362545249 9.244884685779022 0.1864982868616544 6.333368631678248 2.637369877390531 0.1274493965690226 7.52682826139583 3.639819417612867 0.8693822880241886 5.365697580014494 3.768258912147594 0.7461108474086461 5.440496002581943 4.848656167403268 0.8277127458524889 5.380333162882904 0.9840264667768526 0.3237332555938739 1.251476220313239 0.9713379822187675 0.1625740232022004 1.32469096828619 1.123937296728488 0.1611592323916736 1.266586435298647 1.138854695826352 0.2891219502742756 1.435586214771861 1.126166211268267 0.1279627178826019 1.508800962744812 0.9862553813166316 0.2905367410848023 1.493690747759405 5.803571428571846 0.471190044711962 1.643313067979459 8.757457740736076 0.3225524472315173 2.965653747011915 2.35956052598916 0.8746222215920292 9.879718693918781 2.426289807988861 0.7164238464217627 9.757185157411394 3.541666666666629 0 9.398593469594029 5.215679293178651 0.5949965826441992 7.212821385011304 8.271239488335782 0.7897613990760532 4.090801318346884 5.833333333333517 0.4135802469135781 5.66987298107777 5.863579237510455 0.3095763744338193 5.486507155144468 7.753662966789445 0.6876766834447893 3.46840706122394 7.826699713774047 0.8625367109665232 3.413840879987675 7.959889006172977 0.7387788481512211 3.334727264763262 6.878323932285991 0.3290333965154263 5.833585784897684 6.727700048149876 0.4159297347040209 5.841662006802506 6.847273375243294 0.5130201979305222 5.790441414483107 3.88888888888916 0.8797073621149415 4.357520177608751 3.959495481697085 0.7328610354828763 4.33151674048009 3.731562051286354 0.7111173652872236 4.413930555770216 8.183100031327388 0.5376895590896364 9.215792405102079 8.755904604186291 0.8604828693606903 6.979332838964429 8.923585183225779 0.7175842086741147 6.986372857939696 9.047531987528728 0.8623358918101773 2.713320346250109 9.029897799534393 0.6123358918101772 2.783312143806597 8.898774109737658 0.706435716515297 2.760104906051982 1.518275792310604 0.1579269847451593 7.999761013639609 7.248038774676596 0.5420179116653774 0.3685517866825825 4.305555555555541 0.1264835999854587 9.879718693918813 4.444444444444436 0.1264835999854587 9.879718693918807 4.444444444444423 0 9.759437387837622 4.398027094533902 0.2024295018588612 9.680298205501961 4.536915983422796 0.2024295018588612 9.680298205501956 4.398027094533914 0.3289131018443199 9.800579511583148 8.47682816438118 0.158076653241207 4.275758221368198 8.491146168410349 0.2883835626530994 4.444433010329867 1.760040428496473 0.3589736355586453 5.09333452677258 1.775793650793871 0.1874632569077009 5.205930800478736 1.777740887110907 0.3308916355802719 5.340199624322345 0.9861389244373179 0.4110789315279952 3.031622788360564 0.6631054209098061 0.8531588934894209 0.4587486688185604 0.592591357742807 0.8531588934894209 0.362436082352821 0.6146675191456344 0.6029438595110057 0.4203457120300059 0 0.6255015851467854 9.511944141343939 1.417130023556637 0.8354917477077218 7.606088424228377 7.385242614263316 0.4110529671090024 3.453369975102965 7.422733515533482 0.3234026767635175 3.606166529303828 7.588108185221123 0.4123497096545151 3.504715121198919 7.54719420162367 0.519651026343166 3.644242105017525 7.344328630665863 0.5183542837976531 3.59289695892157 9.246964816978522 0.3873913372213403 7.067788279842215 9.110051525858939 0.4883625980208589 7.019695238724752 9.196018634484457 0.5672022283665394 7.22190641316651 9.343109088810561 0.5819173096289718 7.158983688430669 9.257141980185043 0.5030776792832912 6.956772513988911 7.938761039281469 0.8429600235155748 1.910910335604041 8.025899201971638 0.8627437295091787 2.133160847504076 4.725817676230712 0.6705682283258042 6.491571428705781 4.526625599520092 0.6232334723832579 6.424301042946996 4.643636521155221 0.5473347559425463 6.37864366593603 4.715578802604709 0.4192470674701251 6.501273881238563 4.598567880969579 0.4951457839108367 6.546931258249529 0.9292048046745158 0.2968102428766516 0.1679044876094375 2.896287838101683 0.8281752034202643 6.681810402861078 2.673881087099146 0.8528719568016468 6.738415992428081 6.842817236176145 0.1418531991111963 3.705731572052263 6.830109187384013 0.291143002363341 3.543126784588353 6.842202311468563 0.3116639741374092 3.776077539628317 4.870916367064462 0.4993093410653207 5.744399451301114 5.189180686524987 0.1600334604675091 1.150334904477657 5.069444444444876 0 1.219464656074357 5.018154845752024 0.1216379915274846 1.029477517687511 9.233057485901469 0.8387782497676457 3.980806072176885 9.292633075315592 0.5887782497676457 3.909637214780659 9.250670543198563 0.6974809942493043 4.055490855192447 0.9837445168423059 0.1468375818821545 6.076013866455963 0.9491750601152845 0.3968375818821546 6.122450978049546 0.836433920226155 0.2904151193626014 6.198597739575478 4.205018512326294 0.8436544704860945 5.968480682212038 4.220771734623694 0.6721440918351488 6.081076955918196 4.043531000075353 0.8284896213490542 6.02303186694615 4.035472820284541 0.8694972669833076 5.813092232154825 4.051226042581941 0.6979868883323619 5.925688505860983 4.212713554832883 0.7131517374694022 5.87113732112687 6.041666666666785 0.6870443269438007 6.997159827594812 6.041666666666782 0.836419753086421 7.15334242274555 1.082868006391488 0.4078844661738036 7.612131565310341 6.527777777778141 0.1507201646090554 2.863309172517123 6.707580467464359 0.158296794386336 2.839687578613235 6.593842636320689 0.1427489592979666 2.64759831902824 6.634756437118011 0.3010457536843026 2.704164262511783 4.943881496358907 0.5978876390955792 3.712972050595082 4.906002708480115 0.8409665766189653 3.691102722216681 4.918420658404763 0.7102063326499459 3.541515285227973 0.6222682709431553 0.8699255637106145 9.315265162638514 0.6981622306784594 0.7119100211523024 9.331831757079467 0.5506543467033626 0.8699255637106145 9.194478966242347 9.388197543415394 0.1515154232694378 3.689869619421994 9.900524894840057 0.6182420358998226 0.09607770356021565 9.773271258157568 0.6720839434477298 0.128687577553251 6.470510277783964 0.3023398381345422 6.928552629201075 6.32896975643071 0.1577759512654613 6.827092831756453 5.528797655187665 0.1562885783090996 5.845696736833096 5.551911574778494 0.3216896805246033 5.920148123607106 5.717558364035447 0.1654011022155037 5.98488698001411 5.744445677153424 0.1220640804458481 5.854971776562941 5.767559596744253 0.2874651826613518 5.929423163336951 5.57879888789647 0.2783526587549477 5.790232920155937 5.664668047648352 0.5067644275012448 0.8776340379934818 5.663052123067779 0.4331331841941052 1.077336521903798 5.83487301385794 0.4263687566928603 0.8997700364229003 5.84395194976674 0.6026775415390966 0.8102643115153161 5.842336025186167 0.5290462982319568 1.009966795425632 6.528213108899118 0.4211611239943596 0.1829622440780966 6.758138685339853 0.4027037356812397 0.1597875431182774 9.046620720276891 0.8469929802938176 8.149207387070284 4.015322834069749 0.5777127458524911 8.587834658380762 2.708333333333409 0 7.955217796619855 2.804766187241518 0.1598235277562506 7.933487846849425 2.735321742797081 0.1598235277562506 7.813206540768249 2.538653881665546 0.1396651540957629 7.882639652768787 2.635086735573656 0.2994886818520135 7.860909702998357 7.915306568117201 0.8391428916083861 6.537311840737004 7.953204978410156 0.6986860527199521 6.608429068690628 8.093453965848576 0.859543161111566 6.703240657680912 7.911494286017979 0.8702125383754933 6.718277969226289 7.949392696310935 0.7297556994870593 6.789395197179914 7.77124529857956 0.7093554299838793 6.623466380236005 7.619004457160083 0.7157805309152796 2.056158200788239 9.430789325305142 0 4.093030194171908 9.603240396108523 0.167911161622784 4.132219077027985 9.518587344091614 0.1538699547251179 4.270046932289263 0.4876223723605368 0.661608559233727 9.463580568736027 0.4008373330876989 0.8699255637106145 9.455022189346405 0.4244351613998368 0.7070071765178223 9.260457472390494 2.361111111111473 0.1586533016196625 2.702934097741998 2.36111111111111 0.158653301619664 9.117937088737804 4.027777777777922 0 6.632123429727022 3.843724827936831 0.1546035933302035 6.578011375088021 3.885878069553315 0.1190723348353672 6.708075132585073 3.99194907924454 0.8443013643122435 2.609834298044429 2.917586003495169 0.5866314123343502 1.100347058437809 2.998506751378497 0.5994064492534397 0.9000316013578262 3.263689174785485 0 0.5291507642859494 3.350244714156243 0.1366368084118411 0.6906377653438697 4.919956817287016 0.5893996520624443 8.27790379583374 5.024193236507477 0.5865208098283837 8.459975550068256 4.789781991956949 0.5883733394860053 8.369690987134867 7.888982551775179 0.1396980012165794 6.572713008003405 7.832142795477397 0.2993057107640696 6.535557570617023 7.981552425159808 0.2872890046187537 6.723332323626609 6.873262183173679 0.4602868813546598 2.654210567581966 7.070765381293876 0.5000000000000084 2.607864017407608 7.023861393011739 0.432495304302024 2.8213465993092 0.8303225946366201 0.8444665647234777 5.260564423808395 0.9230519850144349 0.7043102733436413 5.251712579559872 9.179947638639812 0.3901367855962636 7.221904213459815 9.043034347520226 0.4911080463957821 7.173811172342353 9.093980530014292 0.311297155250583 7.019693039018057 0.777088553484732 0 5.547665645980587 8.541666666666817 0 5.549591674996779 2.551167048990393 0.6848651324791655 3.288365902190407 2.428371445335804 0.5635073475051807 3.35455172202228 2.604045221722945 0.5180271297493264 3.266320846204728 2.548823580273603 0.5678156994977486 3.483910774347288 2.495945407541051 0.7346537022275876 3.505955830332967 5.277777777777828 0.812536743092299 8.109865190152881 5.196435316719479 0.8751543841386175 8.015760008941889 1.528288872812118 0.4112979313802816 1.466257581302934 1.666383092318608 0.4135277331453382 1.339909683881787 2.083333333333561 0.16358024691358 5.108560219365417 6.982771316522257 0.8550620439320987 7.451750686569119 7.006284447686088 0.7012157260327982 7.633358936373315 7.014822598573557 0.6192674886931053 7.488760319209474 3.176289428205452 0.4079049135448009 3.157717025571454 3.888112362796998 0.8272006584194671 3.013677753896616 3.666665021655551 0.8726309545259523 2.997501426477309 6.757418243963743 0.4753586300337612 1.015180351519451 6.684374873299003 0.5448450849298672 1.169777240753719 6.785276722578655 0.4518850614142883 1.25527594685839 2.898686781037839 0.5690366030963838 5.733488752061954 2.569444444444457 0.1926143828504343 9.689581790536392 2.568761228028555 0.3154837435426996 9.809863096617617 2.638205672472959 0.1228693606922653 9.879718693918775 2.778435358998887 0.1728554972352825 9.706626512573807 2.777752142582986 0.2957248579275478 9.826907818655032 2.708990914554484 0.3654698800857168 9.636770915272649 4.06864643045315 0.154092269083178 6.116161027358466 4.513888888889027 0 6.752404735808204 4.375000000000138 0 6.752404735808199 4.378569416520818 0.156452438214156 6.618513674394107 0.09947510515994346 0.6182115245638318 9.903891884713131 0.2254939694027046 0.6719634296939598 9.872584589397562 7.569444444444491 0 8.436343020944804 7.63888888888893 0 8.556624327025974 7.475447965571244 0.1673469831333624 8.570799450712574 7.430555555555974 0 1.46002726823682 1.666666666666994 0.8413466983803375 3.103871784679205 5.822842788527339 0.6022111796192113 4.658759833213001 6.588603978555348 0.1721342502191464 4.112928514869428 5.583037928682224 0.3356561510176951 4.929205404648713 4.013888888889188 0.4804526748971198 3.785465852472624 4.071958281326605 0.3725601828110201 3.878895552382324 4.178061730783497 0.5900162571680283 3.916825368426249 4.420977011494308 0.1592344259968783 8.008860494044633 4.343652800045836 0.2900752330861176 8.071725774624355 2.703265019232904 0.7152346862796208 9.836785336808862 2.631626365127687 0.5889831865849943 9.836785336808862 2.494940625203445 0.5934542599191731 9.757185157411394 0 0.5052735845683209 2.365056569932151 1.209899436687278 0.576659243965548 8.145147706603161 1.994351541677521 0.3223424794158472 9.449967130959477 1.994351541677521 0.1651922736545215 9.570248437040668 1.855462652788627 0.3149569154375784 9.650435974428103 3.88888888888904 0 6.391560817564674 3.95833333333348 0 6.511842123645847 0.1200104297255251 0.8784299758138989 4.865482150170482 0.2569990072398386 0.8276790397203027 4.809065132935613 0.6550844051322227 0.3967962354674483 7.608791060446396 0.8474978810297829 0.4964058134438177 7.503875429679757 0.7826485879271931 0.5985364458749409 7.61781234825511 0.7490555724727848 0.377942642744845 7.71838209913814 0.9414690483703452 0.4775522207212145 7.613466468371502 0.8139048655753747 0.2758120103137218 7.604445180562788 9.373188306620079 0.8305552204211667 8.040824058865883 9.372914592297954 0.5805552204211667 8.127720172296261 9.243491726115991 0.6748142101964312 8.167091125533947 9.325898945194812 0.8488018258454614 6.962360385974447 9.191918631781043 0.8571013393134244 6.881769615055617 9.332567717821259 0.869686977570312 6.700040114756484 5.570522744598183 0.1628053973752021 5.016618586936034 5.429181850750933 0.172850753642493 4.860771962303403 5.333545812406902 0.1312977228979161 4.992332793093974 5.346060996490943 0.3041484765404091 4.904919610806653 0.3772824560281209 0.1567107589618326 6.249015460029123 0.4070773736292044 0.4067107589618326 6.218152356139273 0.4952649527963566 0.3002882964422795 6.13165312891639 2.986111111111115 0 8.917468245269237 3.027110200514695 0.1583125885726747 8.733422335190667 2.881610556094605 0.1465711145190284 8.776313987772991 0.8116671567438868 0.5119302371502001 4.343684909657637 0.9355396997170713 0.7184298338606402 4.340519478019772 7.728348387902876 0.8457966998411031 2.114475974895334 7.499389543439401 0.8383036011577364 2.15653987543231 7.529544958146499 0.8699838310741765 2.003116024535602 3.599507760795016 0.1343924907420475 8.724212397236144 3.676922390570404 0.2844921065875924 8.694054035328252 0.1661036907307119 0.4206647918039093 7.637746230777844 0.3298832530432183 0.5212286488341179 7.559672320614927 9.295641940550013 0.8387782497676457 3.844215798483038 8.125023308511706 0.3226045522480697 0.3198926441343979 8.131804740953855 0.3594951279207325 0.5559598120971285 8.298343489243841 0.3031989695033304 0.4735091195078306 0.5534488475870682 0.144173940799725 2.979656933930046 8.678422728816571 0.8500697712203632 1.862196343266346 8.608965536971846 0.6254129857215823 1.802066729798225 8.54165391926683 0.7753432145012191 1.760741573012354 8.729036856421665 0.8706501079995652 1.731591604413462 8.659579664576942 0.6459933225007843 1.671461990945343 8.796348474126681 0.7207198792199284 1.772916761199334 4.51638672589408 0.1219123115275788 6.594378570254671 5.685697227747282 0.4169824399099872 0.7293603358687657 5.513876336957121 0.4237468674112321 0.906926821349663 5.684081303166709 0.3433511966028475 0.9290628197790815 8.766343284368123 0.473799172428566 5.359897993545747 3.454659364839613 0.8528704490180076 3.765212566810376 3.435420104084124 0.6928530281702583 3.834292311821633 3.457978427198027 0.7236559801433218 3.59206936067027 0.5736896311025477 0.7113811439425065 9.119536642377788 9.592994708586641 0 5.168289872410401 9.489219715983788 0.236080622313267 5.174158530925267 9.414329745683157 0.142801532610317 5.288239582139927 9.461298955676236 0.378882154923584 5.28293658135035 9.565073948279089 0.142801532610317 5.277067922835485 4.236111111111375 0.8413443704594912 4.476446813966893 10 0.3702874129341908 5.76166825469283 10 0.2487596359877774 5.834420198473689 10 0.3656084370609287 5.899170273059272 9.755794540015295 0.3864289214497922 5.80846205127067 9.755794540015295 0.2649011445033789 5.881213995051529 9.755794540015295 0.2695801203766408 5.743711976685087 2.074899602415869 0.8394810711406282 5.286211389918525 2.074899602415861 0.7168212046786019 5.431994836030062 0.6731170919873711 0.8325372073973485 6.665702904780605 0.7002998098119858 0.5825372073973485 6.758076659726806 0.762234223031953 0.8325372073973485 6.779529205958278 3.121279599564196 0.4433288273728086 0.4424513406964203 3.76736111111144 0.3650374291731627 3.305436982379658 3.750000000000315 0.4193069764982669 3.495882383674845 3.906250000000325 0.445730452674896 3.39455160770881 3.846121277854089 0.5533640919238118 3.193474303867052 3.828760166742964 0.6076336392489159 3.383919705162238 3.68987127785408 0.5269406157471827 3.294805079833086 1.803945079421257 0.4372599651322791 0.4643859725723792 8.108122765187925 0.1290241697953418 8.506786482270378 8.017123227024449 0.2936829739766575 8.460570853590346 8.116988238812198 0.2562450535680145 8.680375061850526 4.539197530864342 0.5 6.548193807261512 4.621378685939833 0.6232334723832579 6.661121570031263 0.5240627601168582 0.2497849660215848 0.5484038838233511 0.59658417034626 0.3850151095716897 0.4157508813070955 3.913169272381274 0.4046035933302035 6.618105143781747 6.875000000000049 0 6.992967347970727 6.805555555555616 0 7.11324865405189 6.929035664215505 0.1769647993731156 7.159227343912869 6.39148736533067 0.1216934405095022 6.482225931298508 6.401012677316823 0.2794693917749635 6.556914027246631 6.259757618730349 0.2764966324984015 6.36417915659453 3.307545214131125 0.8175024200026979 0.7959515953581219 0.4763299369788204 0.7628598753362784 2.451775674322118 0.4217625566816547 0.8403534983930341 2.307772876553882 8.807733975172576 0.5007603040972992 2.039002563808035 8.33333333333325 0.4521604938271477 9.278312163513036 3.213683705200197 0.5899825791522505 4.455952127889709 6.66666666666678 0.4999080589480228 6.348123996448598 1.775793650793896 0.4761169900058784 4.644618038766605 1.551726606236445 0.4717967834089606 4.684398362598738 1.893150290685684 0.287037037037036 4.672340015977698 1.669083246128233 0.2827168304401181 4.712120339809831 1.724499497034886 0.4359935332157555 4.769710597091022 9.842487462253445 0.2840042310042301 6.03632467930522 9.842487462253445 0.4055320079506435 5.963572735524361 9.598282002268739 0.3048247153930935 5.945616457516618 6.180232491900081 0.5761189400674661 9.821767707460754 6.111111111111109 0.6971549990142709 9.621298863992088 8.472222222222122 0 9.518874775675368 8.390301080877137 0.17526430534196 9.614072020885475 8.37843452332967 0.1423798160819943 9.384502334223541 0.9801782399138601 0.4723900932183021 9.376877754553133 8.693508914589223 0.4611002190252875 4.801877691955312 8.469914929927004 0.3549213888314977 4.751443802361433 8.623130339706112 0.2894990516944188 4.709621610245492 8.159722222222584 0.6406893004115235 3.123918669026461 8.279968122015321 0.462498310354152 2.999196807346915 2.499999999999988 0.4950730547060847 9.19812462612526 6.095377399887065 0.3614205341438297 7.835249935400433 6.079779720023769 0.2949484672406874 7.707905616442698 5.956624542358982 0.3378489207511925 7.86796724635599 6.034607660450968 0.5676665815924178 7.839603394133813 6.019009980587672 0.5011945146892756 7.712259075176078 6.157762838115755 0.5247661280819127 7.679541764220521 8.094120276180483 0.4721270778085195 1.104932538962351 8.051018964481464 0.5162073356752416 1.239471192989449 4.605266936497895 0.1238765246349262 6.083474039706173 4.648520904751862 0.3194967480329236 5.978313812103783 6.289274141978488 0.4283055226617843 5.915194177915085 2.16098984473065 0.1274477520337056 3.46320381243913 2.013888888889203 0 3.384528165535296 1.960073914653079 0.2057641370134061 3.478844161745572 3.680555555555532 0 9.639156081756443 3.819444444444437 0.1929529241866843 9.690637257967122 3.608766697932831 0.1709350702701045 9.703647257348544 1.781607219787365 0.3969176237917237 1.433691932528538 0.8433289887245212 0.5882171311777038 3.270020526916801 0.6378367798093111 0.5557478540768166 3.388024391555254 0.5087511395335188 0.4499217948765417 3.264590510287601 0.7046580648886452 0.394173940799725 3.301486807868264 0.7142433484487289 0.4823910719774288 3.146586645649148 0.1241235785979689 0.8764325442190615 5.97503414631399 0.3308788333618063 0.7886334050018153 5.945324415192426 3.455214790634375 0.597485880854659 5.429099908098674 3.589751027314688 0.5656485286349928 5.336790581397942 3.670106161201591 0.6267285593844575 5.54420256017646 4.375000000000263 0.8766461571940973 4.49688926852897 4.558300510475472 0.5976325987452682 8.289503449747421 4.339457272090382 0.5926978487410093 8.335634880030788 4.419501197143767 0.617751297696605 8.155775025925625 4.209967320261736 0.5313180827886714 3.780748938508671 9.030403159177553 0.8161024998142811 4.232871179937025 0.4644328413334367 0.8486133627168768 2.742762595358429 7.702816572319064 0.4748782983963189 6.184544775112219 9.345982270465637 0.142801532610317 5.413164000740281 8.766095234785855 0.5723234075884256 2.250296649838453 7.635351843573296 0.677890538429647 1.261842061551359 7.638888888889334 0.8235595799300259 1.339745678907605 9.068552277352737 0.7959746479156945 9.622606995930674 8.929327415719113 0.7959746479156945 9.621841807865131 9.051102089650318 0.8702850311353523 9.425068505677849 8.911877228016694 0.8702850311353523 9.424303317612306 8.952282554298755 0.6662596790510468 9.527275688683105 0.4401497938508472 0.8486133627168768 2.593944483553666 7.944444207477652 0.6443623228796544 7.810965058530414 1.5878253539806 0.1374457064871822 6.290139156598855 1.669874486571701 0.2970534160346723 6.327294593985235 0.1193906830415307 0.1217134700943665 7.919314186530009 0.2293112228071753 0 7.785264292225335 0.297105831242911 0.1796282905484566 7.957239121430673 8.047267402489295 0.4120453237452283 1.34453137899969 8.314354067970275 0.8365677807499143 2.469130697792548 8.194444444444827 0.8428497942386837 2.662840329048643 8.13349105931076 0.4117572316568291 1.890519790382684 8.281327941067129 0.5020820494764955 1.879667762527498 4.353142895220701 0.4658459747182211 4.103573350635699 0.6833723629759312 0.404324500512667 5.079018690326565 5.999273108983393 0.1318481436123457 8.417599651064382 4.71453813798211 0.5128068070675182 2.034815350014132 4.711677095311054 0.5101927619625685 2.278253797355235 4.832797504974451 0.4768059246812958 2.182624211872291 4.126984126984285 0.1874632569077005 6.254096467757628 4.027777777777939 0 6.150998205402336 4.207535319342036 0.154092269083178 6.116161027358469 5.756888722803602 0.5149264170212868 5.061827561783325 8.751084013560583 0.4860761939552994 0.9976497416816614 8.699572586615993 0.5920913146345339 0.8110512593699152 8.561777370078136 0.5238990915415449 0.9098768046335604 3.61111111111143 0.5108882614631642 3.44787897393766 3.750000000000315 0.5915812849648976 3.536993599266812 3.689871277854079 0.6992149242138134 3.335916295425053 6.736111111111464 0.8492798353909468 2.983590478598316 6.867026891481554 0.6838254802190862 3.004031526943227 6.936471335925995 0.8345456448281394 3.044125295636958 6.830336929018847 0.8658217135322387 3.198366854706669 6.961252709388937 0.7003673583603781 3.21880790305158 6.760892484574406 0.7151015489231854 3.158273086012939 9.548325576206842 0.2015624481354268 7.103478958492943 9.543340789175367 0.3322020038419632 7.0342900198562 0 0.7550106493086037 2.505455466969068 0 0.625838537496457 2.575944175603131 0.1987702060527949 0.7253538689748955 2.674523072441056 1.661157901496603 0.1548007314019903 2.138440848975748 1.568442792138307 0.3068981178120505 2.182828370308211 1.573951557308761 0.1520973864100602 2.346383932137178 1.787950867525553 0.1315202548260737 2.231972944790626 1.695235758167256 0.2836176412361338 2.276360466123088 5.935475534739442 0.6472913935354546 8.113224938394604 5.900232773252187 0.7170127015424772 7.991699656244274 5.708633255785695 0.6723676015352373 8.141501186572945 5.93300811427787 0.6825747017178194 8.249414534144979 5.897765352790614 0.752296009724842 8.127889251994649 3.481466646945517 0.5369086683275249 1.062371564144324 3.321952706990014 0.646982479137737 0.9253324444976785 3.456986773512742 0.3555344693969099 1.043845221908211 3.297472833557238 0.4656082802071219 0.906806102261565 3.337668445618807 0.4775859193394629 1.099137880424496 1.875000000000014 0.7995292835661338 9.558968544368906 2.055532347982798 0.86061936293624 9.595743983206386 1.986087903538357 0.86061936293624 9.475462677125165 1.916643459093901 0.6601486465023738 9.515556445818904 6.278547652017772 0.4729429819762793 9.856973916857051 9.819049898198086 0.4440539911865939 5.54892621227477 9.606136415709759 0.4682289184417281 5.703656289655203 9.5922094463583 0.5326125682182752 5.548001818594065 7.290489527843537 0.4110529671090024 3.690190502187218 4.861111111111347 0.4047891870604093 4.954528122851277 4.489784632513855 0.5756374054846832 6.705330014173511 4.395031546094113 0.5756374054846832 6.468509487089245 4.4669738275436 0.447549717012262 6.591139702391778 2.916666666666973 0 3.745372083778851 2.802330624853829 0.1590334233810342 3.811384028297738 2.777777777778092 0.1221824276708555 3.602565651345028 5.524201356207092 0.3754638667376944 1.040437561282773 5.347222222222663 0.2661591149949283 0.9122190979913533 5.39751401985832 0.2787328997039586 1.113580529026646 6.602262707453349 0.5856314460599593 7.292441764134008 6.72574281611325 0.5125962454330749 7.178045379220094 6.790146775326626 0.4269647993731156 7.319602418687746 6.599873854686674 0.3945638868690809 7.254802220190199 6.535469895473298 0.4801953329290402 7.113245180722547 5.278971480191036 0.4108755968512061 8.541827351485592 5.141127679661432 0.5066556659388528 8.565459880609223 5.27882286613711 0.5957800690876467 8.500069318761991 5.2245673989356 0.4721452545201549 8.455719323112724 5.224716012989526 0.2872407822837142 8.497477355836324 9.818549785357977 0.5705307111107266 7.470957191733767 10 0.3796831372318139 7.430689328354759 9.769928703243302 0.4108026158089286 7.491879665477217 6.833466440147189 0.8080536237866848 3.865653389860253 6.832638262252533 0.863101223282206 3.692469351349772 6.721660257954994 0.6711548470688908 3.812750657430941 6.898207907445449 0.696358775630372 3.775804305780746 2.086493849720696 0.4372599651322792 0.468377145460286 7.429945098994957 0.8383036011577364 2.27682118151349 7.658903943458432 0.8457966998411031 2.234757280976514 1.255735887640853 0.5243394852962167 5.105248603092024 1.341913807950477 0.4691608263610957 4.976761403119726 7.446767364402788 0.1647790771698518 0.752570857112042 7.627407159233569 0.3132453862890794 0.7582599172123485 5.070638146857696 0.4108755968512128 8.742296194954196 4.95370370370374 0.4907407407407438 8.636811864413229 7.961543704890873 0.1769140561797715 0.6905120313939164 7.996614741533258 0 0.5180405431371384 7.954762272448722 0.1400234805071087 0.4544448634311857 0.9056029852893323 0.5721210539605708 3.905618022160813 5.138888888889225 0.5049269452939176 3.184059322066835 9.394069383869038 0 1.230755028128453 9.354679727684157 0.1521883475396368 1.03082323009651 9.337386363131497 0.1367280939816838 1.295210548892409 7.962587191021065 0.6643431067362116 6.460534110740632 8.033391734015048 0.8252002151278254 6.435064393649737 1.006044606512365 0.5888407676083264 1.113000908556006 1.054424001754629 0.8388407676083264 1.146277518659327 0.924787277239959 0.8423258720076678 1.24095926162174 1.006989056771903 0.6811666396159942 1.288053430288109 0.8764078819976955 0.5923258720076678 1.207682651518418 8.957918728643765 0.4070213018127531 7.043664577284042 8.749985426579009 0.4456101125769538 7.04363611655384 8.825359423436982 0.6104828693606903 6.999739758536056 0.9401400326204168 0.6212102401711019 7.734312971996606 0.8385224935227837 0.4996894489666611 7.713956605048312 0.8721155089771919 0.720283252096757 7.613386854165282 5.41666666666679 0.5000000000000043 6.872686041889455 5.391267745915707 0.4309718649289294 6.747688594679648 5.833333333333746 0.5864197530864202 1.820871186480237 4.343907401215182 0.8436544704860945 5.96848068221204 4.174361709173427 0.8694972669833076 5.813092232154827 1.254799969844915 0.1276508421091242 0.105626180833225 1.195996349624243 0.3691590744029535 0.1464623591688128 9.132745060458532 0.8462343873563604 1.519219270721572 8.937370189755015 0.8706501079995652 1.611310298332306 3.369964212204671 0.1291801103130235 4.177590929686925 3.218997291520473 0.1590334233810337 4.292509252622445 3.382379731381483 0.1212225840006361 4.415189333994183 3.268043689568341 0.2802560073816698 4.481201278513067 3.419010610252539 0.2504026943136596 4.366282955577548 4.477212701169604 0.6988708778679411 6.581437249858995 2.629513697923224 0.4483346723876708 3.458751837520273 1.419764243121528 0.5921374112776083 5.170921862675428 0.1319445668307923 0.1243189231666929 8.630434412951924 0 0.2532826724626919 8.610189067401564 0.2017872291460173 0.341485963623566 8.750038622496835 9.815601396018677 0.5567177764591992 1.204439563664534 9.626522550938276 0.4919823503900102 1.195817579344058 9.810921154919598 0.439345336216286 1.373130931830128 9.569799380076681 0.521367836141355 1.339933157744064 9.57447962117576 0.6387402763842682 1.17124178957847 3.237901055583045 0.8175024200026979 0.6809959129957303 3.111573044594701 0.6669088692561376 0.7565302080059992 3.0677170052493 0.8494064492534397 0.7045254546669817 3.156056716208083 0.8513931142796813 0.4813794346744695 3.199912755553483 0.6688955342823792 0.5333841880134872 1.636904761905011 0.562536743092299 4.564430501379153 1.581488510998359 0.4092600403166616 4.506840244097962 8.464659822798287 0.8398847221265026 4.150675924059749 7.815693530805376 0.1439421255574311 3.367842738645211 7.843204921829384 0.3183047200727486 3.326669347330526 7.805289168802139 0.1743625945153174 3.223073468139779 7.594179039108435 0.1265844569696342 3.310247698544512 7.621690430132443 0.3009470514849516 3.269074307229827 7.632094792135681 0.2705265825270653 3.413843577735259 1.788432835821032 0.5799014188317669 7.042946923512208 2.010198376364663 0.6298572229135914 6.992399029721417 9.618557374510637 0.2015624481354268 7.224050033750824 9.696664103678739 0 7.359045692807953 9.559217372155953 0.1546183972869483 7.420487493873827 10 0.7568815007948859 0.8294552060520886 9.903906485589896 0.8794659590049758 0.6926689521910137 8.193229113562204 0.279977349614949 9.766452545334516 8.066693349637562 0.2964239384168675 9.853942753214366 4.864385852606475 0.6319717671692461 3.262688143849469 4.844195674798636 0.7104613885183012 3.051972590547496 5.003274741495368 0.7233184655495836 3.182500606462028 5.67752900813182 0.7104613885183029 5.457598712170992 5.836608074828556 0.7233184655495819 5.588126728085524 6.233959294266167 0.2895386114817114 7.382604635404984 3.242449102523305 0.4704946833459865 0.7568148180061747 3.401963042478808 0.3604208725357745 0.8938539376528203 9.346563018157177 0.2949938391509695 3.478541616941932 6.843882427633387 0.8550620439320987 7.692313298731436 6.77443798318895 0.6914817970185211 7.652219530037701 3.815004367417878 0.8527350872634357 9.423844600827557 8.852914324555172 0.5721538921686448 8.45873612614673 7.645953744660581 0.8261560938721219 7.092917118828893 7.736844542153473 0.6615490709625166 7.046674583810823 7.868668575270701 0.8353929770903947 7.067006119033879 7.77663689392557 0.8787038692746927 7.24855261686314 7.867527691418461 0.7140968463650874 7.20231008184507 7.644812860808342 0.7048599631468145 7.228221081640084 0.2809684155560565 0.3426051081649725 6.247691370062075 6.854747701392577 0.15387431099587 4.211845756171673 6.914203794034015 0.2708431330424156 4.165985209875725 4.418266938049838 0.852362667881735 5.390367795912674 4.317747151282266 0.695451766992335 5.2630238298032 4.42687406425817 0.6953226913973136 5.465760089727775 8.954242226169772 0.1570487328970166 4.337319779634007 9.024414398180154 0.7914395166556523 5.902237685255967 8.919143372457313 0.8632932218625484 5.981599061585094 8.805994063938996 0.1811122656256826 2.38454614446039 8.958084786072448 0 2.422137758945591 9.027889751738215 0.1728056634369725 2.354182385627394 9.096637860349736 0 7.955552604511046 9.267293773711671 0.1413413928820977 8.015217806124424 9.004083392612486 0.1206677416861482 8.008991524967406 1.49817472604005 0.5625955775455767 3.166967992176847 1.666666666666984 0.4135802469135803 3.264246859454104 1.442946068439329 0.4091896269012652 3.224313147957952 5.29570343191957 0.5687579308883031 6.91148164133627 5.200667338841745 0.471568654017234 8.162979921418099 5.092592592592635 0.553277483833036 8.270240264927768 5.209378421692665 0.6583168121799456 8.333966562745134 5.132267982756586 0.5048119800125819 8.352715206558589 1.253122973615235 0.5587950325302457 9.610947493911599 1.257755408029806 0.5884120667859905 9.835097490219283 1.319428073779247 0.6980357099880534 9.636441148015985 0.7122272858929306 0.1407813321464932 4.269703793064272 0.5733882261723455 0.2950606330168171 4.166639389314332 0.7337945061236835 0.3047369259490831 4.342861379450438 4.369105691056941 0.5500225835591692 8.673502552251982 7.879897041952548 0.8008675333127724 5.195824074328824 7.709431298386883 0.8382597928450903 5.165832534291376 2.659770607411643 0.4224203480714223 0.9180315044381465 2.638602679529551 0.5866314123343502 1.105562228485186 2.5586414815373 0.6255338977665642 0.9909927803394549 9.260488887018898 0.3139219192565393 3.208267509700438 5.55555555555568 0 6.872686041889454 7.157596399552153 0.8503764202021704 7.029642303570348 7.107391215863208 0.6903589993544226 6.978440742500425 7.033128149644442 0.8399825791522522 6.82148448081965 7.177491631519112 0.8701034885403267 6.819018200631897 7.127286447830167 0.7100860676925789 6.767816639561973 7.251754697737876 0.7204799087424971 6.975974462312672 9.688033860593533 0.6800064565699135 9.503603924606637 1.446166111550057 0.5879437765083306 2.79605749281559 1.290117946329186 0.5625955775455767 2.96659018359574 1.267712383577234 0.525348198962754 2.773146088899181 1.321312403122276 0.4042817283590484 2.878529867957558 9.42308470385176 0.5940849758384064 3.734745881359535 9.426093569086181 0.8440849758384064 3.669324465061914 2.689693806210321 0.5830615166756354 3.956602463249665 8.301787299181907 0.859543161111566 6.823521963762099 3.750000000000411 0 1.820871186480146 3.858829168735048 0.181047909221919 1.693407304320265 3.71994027984616 0.181047909221919 1.693407304320258 3.620505079593789 0.122240162714733 1.893590703773085 3.729334248328426 0.303288071936652 1.766126821613204 3.759393968482678 0.122240162714733 1.893590703773092 4.063161952212474 0.5835544324990256 2.262018194351089 4.162797619047999 0.5688198118753669 2.434592231556243 3.928762760448907 0.6236428154726866 2.410705769948017 6.597222222222337 0 0.3349364905388951 6.527850218610747 0.1782097967035744 0.39761742853582 6.757775795051481 0.1597524083904545 0.3744427275760008 2.217086823146347 0.1549217949782679 5.743041809204274 2.361111111111315 0.159033423381033 5.561334257953005 2.147012124093894 0.1479432720090957 5.602477818611106 9.306350980778728 0.4204435033750076 3.011098188058336 9.232678967832708 0.1704435033750077 3.058751593936981 9.390316501750917 0.3265130145404503 3.124903138635685 1.874893441430955 0.7938843390723458 1.220184168630719 1.99035215379268 0.87921426335979 1.153112414799975 1.920801150778745 0.87921426335979 1.033015926734306 1.99035215379268 0.6730986024321358 1.153647109341006 5.070489532803771 0.8457800690876467 8.540163087455717 4.932769604742921 0.853263890752325 8.617725360738399 5.640301123761867 0.7275165787626416 7.624436907960869 4.027777777777779 0 9.037749551350469 4.097222222222234 0 8.917468245269291 4.208504491573368 0.1594124993595319 9.01120579153854 4.013687108221145 0.1506593356000139 7.193625837520763 3.875944255316687 0.2734268369371296 7.099361594090803 5.515873015873213 0.1874632569076989 5.566774718722456 5.419670671060695 0.3437518352167986 5.62231716839663 5.459353210743228 0.1562885783090996 5.725415430751919 5.675001232708986 0.1220640804458481 5.734690470481764 5.635318693026454 0.309527337353547 5.631592208126474 7.324389863900308 0.8424796044259748 8.497637811600683 7.377983518484493 0.7003538159608795 8.461706195847167 7.484149210139798 0.8578742115349047 8.400411405191281 5.655245904177123 0.1459961275202412 5.526600923838174 5.774691581330364 0.2680602079660893 5.591418413242192 1.764612707791676 0.8097748528605604 7.673860142924743 1.750683279707653 0.6594516689668204 7.860837021628292 1.825396480168875 0.6859076736246141 7.630234588616444 7.23577123223335 0.8328074724212786 0.5921047142656268 9.095547685732898 0 3.866928419863712 6.463427409428746 0.5955064456909827 0.8214680353418446 6.251318848994492 0.5475952748776421 0.8593821756525897 9.809916934960832 0.08849287574115899 0.1009665645215371 9.899033435478465 0.08824456309863175 0.1900814756129417 9.710460863972351 0.1875716509956191 0.2896446336755941 3.194444444444757 0.3788047556978464 3.612022966010985 3.554849371000008 0.5082802606085111 5.016247624491339 3.649854858839142 0.5161914027554118 4.788017262458898 3.456893069915106 0.5342222643915564 4.852083905315576 3.728743294744311 0.1375717757185241 4.797744569139363 3.703008390716335 0.2657784296480339 4.862653393464758 3.623060380138081 0.8403194661058363 2.626366023191681 3.853060190355652 0.8443013643122435 2.609834298044421 7.835006964367102 0.5142976204848713 8.604534922537582 7.796226794919954 0.5093193501977153 8.802586986877353 6.111111111111128 0.6609371240407191 9.211747353806315 6.111111111111132 0.8195904256603781 9.291934891193762 5.972222222222258 0.841346698380341 9.198124626125377 5.972222222222245 0.7163466983803459 9.3584997009003 5.972222222222248 0.8750000000000049 9.438687238287745 6.11111111111112 0.6945904256603829 9.452309965968684 7.766025114704746 0.7035517198198036 9.852261171270666 9.23658517144387 0 8.917468245269653 9.167140726999444 0 8.797186939188467 9.275625087487043 0.1566609575056951 8.726874653019884 1.856673578345478 0.5549130876874857 6.460721732634658 6.875000000000398 0 1.70058988039911 8.077001908604043 0.8353929770903947 6.946724812952725 8.045455874452562 0.6949361382019608 6.897560734825172 8.16289841029301 0.859543161111566 6.82352196376209 8.247618840371839 0.8612722939097271 7.051755509380511 8.216072806220359 0.7208154550212932 7.002591431252958 8.130176304531389 0.6966652710001219 7.125794280443593 6.588603978555374 0.1721342502191464 3.872365902707082 6.527777777778057 0 3.745372083779054 6.70392834728725 0.1418531991111963 3.705731572052254 7.132593474751503 0.3391421294825007 6.668314131771315 7.109246007699781 0.4310478729151165 6.521418723383634 2.760618700393388 0.4788682787851988 3.192757835440276 2.924976065482561 0.5005225198038806 3.305001289368381 3.05555555555588 0.5049269452939176 3.424621934229064 3.948061679887281 0.6269021580456224 3.619160435815445 4.14414011125983 0.677767565937174 3.614443521851492 4.112234521781591 0.7364657403165309 3.750519951769069 1.406407836482008 0.775348198962754 2.692915504615074 1.475769163288128 0.775348198962754 2.572586210543041 1.336880274399243 0.775348198962754 2.572586210543032 2.120431419678467 0.69788085171686 9.553025942332599 3.172136866920678 0.4223168683486633 4.937472698655967 3.059150817314571 0.5505085537875199 4.991673976506583 3.123477426921342 0.4070399764844209 5.167094681098756 6.797144492594324 0.1666156057602664 5.774839058979638 6.657965084273026 0.3181013003354847 5.744540141610955 7.986111111111587 0 0.9789020439122424 8.027700056333739 0.1769140561797715 0.808894956095511 8.047267402489316 0.1620453237452283 1.023781229449898 8.008774506663986 0.7759355794586951 0.4315895078100955 8.149214441579231 0.848028750368229 0.3788072265594606 9.876351263864814 0.1256954443457114 0.4203504011296074 10 0.252088963441594 0.5553444496051871 9.811427428493886 0.3132670953413305 0.3958849428487372 9.815601396018677 0.6820929371063719 0.9975715816725287 9.584776531173064 0.8442754878330323 6.148412513370181 9.622589639913816 0.8442754878330323 6.275083350049324 9.423812941975021 0.869686977570312 6.329947247486842 9.461626050715772 0.869686977570312 6.456618084165985 9.527587386468021 0.7139624654033443 6.341792646024778 0.3943981373690867 0.1667839171683347 0.6292873704193374 10 0.5025854384967856 7.361321793071495 9.660854703785564 0 5.289178175296215 9.696296737677777 0 5.418952402076566 9.608035146392362 0.1853036385323898 5.477273369862665 3.437320565907771 0.4426317319735183 4.707829725071441 3.62439719398517 0.3302035076920424 4.757857993088821 4.583333333333665 0 3.264246859454252 4.543650793651132 0.1874632569077012 3.161148597098959 2.497655787648211 0.4442670179398739 9.809863096617617 2.354221526010529 0.5889141238700595 9.837000653045017 2.353850575917606 0.6790631136103534 9.594185810456411 2.497284837555288 0.5344160076801678 9.567048254029011 2.569444444444873 0.1635802469135801 1.62040234301146 2.615771965418287 0.3456022380799904 1.754030211081465 2.685216409862734 0.1820219911664103 1.713936442387745 2.766190194174804 0.1228541511845539 1.506811131442985 2.812517715148218 0.3048761423509642 1.640438999512991 2.696745749730357 0.286434398098134 1.546904900136705 6.56220877575427 0.4071825640108618 5.449054604148145 6.498015873016064 0.4374632569076999 5.286118337866458 1.359362405270387 0.8125955775455767 3.006637124026172 1.32922376146029 0.6315668550098194 3.134189655570061 1.220014492428668 0.8189712774642427 3.151325192084084 4.375000000000212 0 5.309029062834152 4.375000000000222 0.2214302873496317 5.208731258637371 4.305555555555763 0.2214302873496317 5.329012564718532 4.459261917872935 0.1543187963814857 5.35874352430006 4.459261917872944 0.3757490837311174 5.258445720103279 4.528706362317394 0.1543187963814857 5.238462218218899 4.72222222222226 0.1593158993741491 8.66340170417118 4.861111111111155 0 8.556624327025792 4.69976381065481 0.1377787132262369 8.489403159602382 4.357705791638004 0.5924441340886862 0.1654353234936306 4.452797040612133 0.4966722906597106 0.3380621884881941 4.539857011605543 0.4199870717356581 0.1726268649945635 4.514116323200021 0.6154736822783582 0.1911128604163418 4.609207572174149 0.5197018388493826 0.3637397254109054 3.793907350568481 0.1738711285370236 7.470087584792184 3.888888888889007 0 7.353811266214046 3.751146035984549 0.1227675013371157 7.259547022784086 2.898299002232975 0.8398211724260297 5.600290019695439 4.886473308446627 0.594004631493062 8.537537823350938 9.249776318182075 0.8159651643927656 9.398282241089998 9.213968036753325 0.8301283901798271 9.589840811300284 9.097698313699343 0.7004134213151794 9.494509504052715 1.895149638109666 0.6837507600040604 6.775153241016272 1.964594082554105 0.8473310069176386 6.815247009709999 2.099792458918631 0.72718822983123 6.894866228848441 7.159269293944996 0.4247041641310932 9.350171469463607 7.123062165382883 0.3244360877436726 9.21070059011064 6.967281714654561 0.3155357565179328 9.399268656072001 0.5157977404433505 0.4388652078658238 0.9525744439259586 0.7274112680626754 0.4923035475162424 0.8377245302689792 0.7268572195310696 0.3187138551887561 0.8478846663498164 2.223678781180198 0.5876867802544372 6.218006306533227 0.2114648472423042 0.5439633085701501 7.086751771510624 0 0.4997376082337661 7.084356936964294 7.856331403500484 0.1596805338941598 8.828742068766918 7.934641321569195 0.2869014176668324 8.882049342265905 8.611109237967788 0 1.099282099732367 7.951989495100456 0.801323146764114 9.045895238724825 8.010089526427898 0.6368522120266027 9.183844323782509 8.113655586882956 0.8355290652624887 9.175698636408349 7.933274559957378 0.8668580977479627 9.172740687058131 7.829708499502318 0.6681812445120767 9.180886374432291 6.250013721184188 0.8694724921924804 0.1202813060811743 6.180868474807525 0.6626041482741135 0.2010994666046748 6.180854753623336 0.7931316560816332 0.3213807726858491 6.060747241377334 0.8661230157015496 0.274859206236403 5.991601995000671 0.6592546717831829 0.3556773667599036 6.060760962561524 0.7355955078940299 0.1545779001552287 8.102836178459484 0.8252002151278254 6.555345699730916 2.919538946762173 0.8546726323322856 9.07348542867874 2.76113519716107 0.4845388250143541 8.245482775875022 2.626139766043216 0.4957601699422368 8.442952261912483 2.582564061037768 0.4713441849036022 8.268393331997849 9.027572143552966 0.8724925275315112 0.1202813060811724 9.094773165706894 0.6663799391783641 0.2005812416577751 8.042768158528215 0.8772807211308948 8.967352308245538 7.939202098073155 0.6786038678950088 8.975497995619698 8.100868189855657 0.7128097863933835 9.105301393303222 1.188877893444783 0.1573394417289152 2.377141755265393 1.304496117419824 0.3094368281389753 2.301247970516697 6.241876941392317 0.6027857239387796 0.7040026393888281 8.789965023297563 0.5381850160006514 1.880454758607716 8.722653405592535 0.4381152447802882 1.999504676596741 5.831426791700169 0.2864635269817116 9.844576109541359 4.013687108221161 0.1506593356000139 6.953063225358423 4.153777936300381 0.3385041605046442 6.986537104347929 3.941231844441002 0.2697316704353812 6.908733622135305 1.045047460849441 0.7021071689961467 9.835097490219283 0.8400673217883368 0.7304312962345989 9.803270173804357 1.180591206601068 0.5936914627077146 6.279990922360454 1.121645308246748 0.4905290445898691 6.165734991016889 1.111111111111306 0.6267239235359244 6.402310140913837 1.052165212756986 0.523561505418079 6.288054209570273 2.266615376365089 0.3893350854005267 7.341317718217082 2.112443237271617 0.4165850370872342 7.533880413563855 2.254873952648572 0.3872112235016605 7.555928107224063 3.611111111111233 0.8444020438559191 7.506582616498276 3.571393382214776 0.6984512829948837 7.65208816196909 3.571393382214773 0.8540492391389646 7.739879423847199 3.473268483746696 0.8746418920651868 7.52656192387351 3.433550754850238 0.7286911312041514 7.672067469344324 3.473268483746698 0.7190439359211059 7.438770661995401 5.651600986577447 0.7309869645978088 5.045540711667909 5.465235008372025 0.6288659449517241 5.080519274208064 5.58069388041263 0.7482617264120439 4.920954581300045 6.633828364019019 0.5787103835833279 7.03365471165633 6.171752774457113 0.4425109674227901 6.124915429543785 6.201923076923213 0.5142054447610058 6.32062568833746 4.606380168809793 0.8456049661658213 9.100061063266704 4.46676030037955 0.8297478872860092 9.192292039648436 4.455788163324003 0.8663724760782985 8.960037614765033 4.478104019259069 0.6961203633643076 9.114580103062881 5.858049119747614 0.5034836405912747 8.129169017018501 6.049648637214107 0.5481287405985147 7.979367486689828 5.822806358260358 0.5732049485982973 8.00764373486817 9.115148501401762 0.6261030380955216 9.69204799430554 7.297142527259826 0.53750168964585 4.886363187162321 7.444026049402646 0.3473867401933579 4.915868569145731 6.875000000000227 0 4.346778614184938 6.94444444444467 0 4.467059920266117 8.296560400335967 0.1555867935794694 2.430703888939012 6.527777777778202 0 1.339745962155575 8.390253628274476 0.5030464112745929 5.740270212596235 8.433785072796208 0.4437655655739564 5.596312768501701 8.289801888811752 0.6402643917772111 5.607639420803325 8.387994363647511 0.7220469767336257 5.667140401625211 8.431525808169242 0.6627661310329892 5.523182957530677 8.531977547631968 0.5255481505303712 5.655813749323586 2.569444444444728 0 4.10621600202235 3.333133619230176 0 0.6235246426625618 3.402777777778017 0 0.5236842472917986 3.489333317148774 0.1366368084118411 0.6851712483497189 8.218997011631441 0.1590334515699199 4.160485054571414 8.223602953790095 0.3171101048111269 4.209745967835719 8.175492318104798 0.2792297939925514 3.974992533277891 5.855005175958547 0.5728566681519034 8.837645998763804 5.993894064847435 0.6642033665322444 8.917833536151246 5.833333333333366 0.591346698380341 9.03774955135049 5.864166370454194 0.4100118626508077 8.875188979543726 6.003055259343083 0.5013585610311488 8.955376516931164 6.024727101968264 0.4828685308027111 8.75527296434448 0.5891188264476852 0.603411452773853 6.666494474469953 0.7188430182550091 0.6859486601712015 6.594790184770556 0.5619361086230705 0.853411452773853 6.574120719523753 3.710317460317564 0.6569387869482223 7.609680878853576 3.710317460317562 0.8125367430923032 7.697472140731684 3.670599731421104 0.6665859822312677 7.842977686202497 8.464826773779624 0.8476298183065887 4.865430966408193 8.363167253595467 0.8582028193033254 5.080749418348494 4.509402075521127 0.4248091590379144 8.710817574773246 4.457195658899289 0.4911590515570479 8.836977562511338 4.274480213232641 0.8430890991106 5.181685096724678 4.487711382494297 0.852362667881735 5.270086489831513 2.360759331843425 0.7004830983909869 3.97555820179977 1.406324718843698 0.525348198962754 2.372117367074417 0.3751890899377765 0.6402339870903617 7.080591710438339 2.762431974793381 0.4212387657756324 8.524638993277026 2.780374457916545 0.5745214041666045 8.394750058273729 2.897427405911236 0.4100174208477496 8.327169507239564 2.389702757850654 0.4078412604582608 8.780679544246382 2.3313492063492 0.4374632569077297 8.940378970237095 6.805555555555919 0.8492798353909468 2.863309172517151 6.806876492404976 0.6342592592592609 2.856445383308679 4.098384370585981 0.8531536733679348 4.200493870974936 0.6663091876515314 0.8407417491204563 1.135878834245341 6.111111111111157 0.413580246913589 9.037749551350537 2.361111111111309 0 5.669872981077567 6.616930271145018 0.1505821306049256 8.927488934530581 6.776701843155139 0.2900206562982236 8.901161265292663 8.411713023245408 0.6156680323208854 1.849780306016943 8.481170215090135 0.8403248178196663 1.909909919485063 8.423913904610453 0.8723442037415693 1.784941465148179 8.293973008589031 0.7126690215612357 1.873980198152768 8.354456712765728 0.6476874182427884 1.724811851680059 5.833333333333338 0.697003645007467 9.621534801538816 4.861111111111536 0.3732745761257251 1.48743062662848 7.846570885532578 0.6534520962912589 6.022314830371224 8.021443929655222 0.8162506856136869 6.042110479618219 8.084241785080383 0.6716409043381655 6.051641728536207 5.864818334277658 0.4102242778540464 5.834225032415037 6.03995152460211 0.5058159124375216 5.908500676123008 5.892691554359903 0.5109927367989788 5.978975086334634 5.219213415925373 0.6138807377795947 3.993562187386735 2.117746165904324 0.8292184630320578 8.479377184344248 8.859770425681205 0.4990458068824957 3.418279442044782 8.797427946418164 0.5299524265233267 3.289936476620464 2.160989844730654 0.3774477520337056 3.383016275051681 1.960073914653083 0.4557641370134061 3.398656624358123 8.473017481011878 0.8706719475821172 0.1175468903934225 8.54193593867895 0.6639623072972105 0.2014237117747683 10 0.7517058469130407 1.38479633479068 10 0.6264685446448124 1.313326961968315 9.758878225157083 0.7084910445698814 1.280129187882252 7.025623884136262 0.4124177907551599 5.888994781770782 6.936033381483217 0.4166156057602664 5.694651521592199 6.994573327093566 0.5964045921702559 5.845850411356205 7.359718808229699 0.8756083724777567 4.621230020361473 7.318781653104653 0.6884433794477571 4.545561974326489 8.212501584896181 0.6390111211350837 6.875071094939737 8.244047619047659 0.7794679600235177 6.924235173067291 2.63397057747953 0.529944934345989 9.646648433426478 8.333333333333307 0.5887364011102962 8.089944290191541 8.528054972959008 0.5495199621861262 7.957837368295617 8.575274519870359 0.5997812603470241 8.096742419890214 0.4944868972945339 0 2.912368767214296 0.4196234957695149 0.1530924336727549 2.920798684627155 0.3827851225027653 0.1530924336727549 3.051906510581969 0.5166104743203186 0.144173940799725 3.11076475988486 0.4417470727952997 0.2972663744724799 3.119194677297719 5.486111111111327 0 5.068466450671899 1.666666666666998 0 3.023684247291757 1.805555555555882 0.1635802469135803 3.103871784679216 1.668258071722038 0.1542817283590485 2.918532601763776 8.895406481141872 0.4730139404653617 2.266727795605247 1.435252725065735 0.8052047422497529 8.212993536477242 1.348803519962537 0.826659243965548 8.045248173260324 8.565988545063806 0.4930083861520258 5.788685626796525 8.42200536107935 0.6895072123552803 5.800012279098151 4.167868605857137 0.4378448249046303 6.825972383491423 8.125000000000341 0 3.384528165535667 8.141923259820661 0.1540317532286578 3.243140525061979 7.954582419694265 0.1439421255574311 3.367842738645224 0.1260188642427612 0.7363796801957072 9.669525093567088 0.2518101486095396 0.8624907236218067 9.651497697861773 0.3385951878823775 0.6541737191449191 9.660056077251394 8.12660508320721 0.6148609371139124 6.998273944130373 9.393643131843429 0.8336912010108617 2.719791767115076 9.303355165987846 0.8336912010108617 2.840950244124953 9.377027178933865 0.5836912010108617 2.793296838246308 2.802330624853833 0.4090334233810342 3.731196490910289 2.916666666666987 0.4135802469135801 3.504809471616505 2.777777777778097 0.3721824276708555 3.52237811395758 5.771620812730216 0.6834979576042959 6.231866503565072 6.751141967733993 0.1550790671441155 6.766294001836194 6.713263179855218 0.3981580046674841 6.788163330214571 6.614904711309496 0.2996429540131963 6.867753799280788 5.197855633638245 0.1513103149602683 5.81916160016843 8.319641305550558 0.2969663927874867 9.854634633047791 9.629573979765116 0.4448891808563107 5.987365559420928 9.787086517511671 0.5264933869130093 5.85021115317498 9.542881057526966 0.4257860943554594 5.832254875167237 3.914930555555605 0.4457304526748962 8.25090934073612 0.9190252739172177 0.8603369041947027 3.369769328315051 0.9281172416594319 0.6985540353724065 3.294802800773147 0.8255185020401072 0.7117798557874355 3.516182949084521 2.083333333333442 0.5913466983803374 7.353811266213954 2.152777777777878 0.6150876162095195 7.504996326523756 7.49765490406233 0.374274836844427 7.826352995281102 8.819235154500571 0 5.068579811271004 8.395380533341452 0.5433590648555601 4.715080148947716 8.618974518003672 0.64953789504935 4.765514038541594 8.531979163656917 0.506821960589115 4.819032681050031 7.986111111111049 0 9.398593469594172 8.124999999999911 0.1582752621694223 9.525889933172186 7.918533402970145 0.1278014705268468 9.459388761848221 5.038258995722618 0.3905098343372169 4.27911807052085 4.944889897317779 0.2313600788977845 4.225211396422814 4.893106930143404 0.3865718972577916 4.086302877674241 6.108998236744794 0.2804922738550865 9.844576109541359 6.249736748741415 0.2848666364282103 9.766424182027613 6.3480519088591 0.3455749639493165 9.856973916857051 6.527718364936575 0.4712993698721036 0.3841563174438812 6.666897703281103 0.5360409004593144 0.2011940733657847 6.757643941377309 0.4528419815589837 0.360981616484062 2.697412616627036 0.5723898313052704 4.433271230302427 6.939728386163864 0.5257009593514865 9.783051763823964 7.083333333333329 0.4319124311627986 9.62267668904907 7.078617275052751 0.3952288574067968 9.839624925225106 6.956074140206765 0.385340285184582 9.768440805752327 6.960790198487344 0.4220238589405837 9.551492569576293 0.3837918054621533 0.8435972512695928 5.686315911329914 0.4331563364114104 0.7886334050018153 5.872556046223728 0.5786945002768848 0.6364463320862126 5.838573834640647 0.5983403271606205 0.8478129270843973 5.79935112175024 4.351851851851869 0.49074074074076 8.877374476575589 9.214032280590743 0.8305552204211667 8.04409788165778 4.308558617836617 0.3846132457794851 5.394698335082376 4.308558617836608 0.1631829584298534 5.494996139279156 4.462264980153789 0.3175017548113391 5.424429294663902 6.180555555555673 0 6.992967347970664 3.176289428205442 0.4992516119251383 3.31809210034635 3.318497379452736 0.5286904446701151 3.30532396898115 10 0.6230312432541264 7.153229574837754 10 0.622649387761134 7.292062291286686 7.97278500319713 0.4021120779357125 4.018333052753536 8.010663657367765 0.1590334515699199 4.040203760574362 8.065388067843159 0.324568931224585 3.90292346426556 5.584259828162049 0.549299690797362 0.1908092790269849 5.497268842978462 0.4038902018449058 0.1729477710549419 6.805555555555602 0.2043266508098507 8.075499102701251 6.805555555555618 0 8.075499102701244 6.801966309412379 0.1220640804458531 7.939647367212299 6.940855198301263 0.1220640804458531 7.939647367212308 6.801966309412364 0.3263907312557037 7.939647367212306 0.4274735147143972 0.8306315764633188 6.62496489237512 0.4546562325390119 0.5806315764633188 6.71733864732132 0.3330926662321532 0.6802386432424913 6.769205564284528 9.260664056977525 0.5615747571232589 7.398066707479076 2.780709517855459 0.5153790027892878 7.229668077694947 2.759263164807005 0.4299860256988958 7.383894386145489 2.701753564453102 0.5571961820119584 7.350691202900171 9.270209004376943 0.6724837572343371 2.89888335833248 5.626308899510395 0.2827401931749939 2.105481751753185 5.433728788474468 0.2906703249123574 2.032979246740746 5.535365377747905 0.8284896213490569 5.378969890388335 5.430378205393799 0.6711874700900673 5.318355518168223 5.311679494312763 0.8426978487410104 5.368695996695289 5.465235008372015 0.8788659449517241 5.240894348982957 5.58393371945305 0.7073555663007809 5.190553870455892 9.675318285049588 0.3277312505985467 3.936082326795346 0.5978990387309508 0.8479746433476103 4.382391345672408 1.653964953570433 0.6452666005682822 7.685574688776856 0.6292139584485068 0.154324500512667 5.259803028837709 0.6976006080519555 0.3093879510182401 5.223359161463458 5.653719866241305 0.405921461452209 9.085951339402056 5.833333333333368 0.4135802469135877 9.037749551350515 5.719395750021784 0.5968260945378056 9.146887816559405 5.858284638910672 0.5104063414513933 9.227075353946869 5.67867117181861 0.5027475559900145 9.27527714199841 0 0.2575536810381407 5.010015623613464 0.1176217826423863 0.130065014588739 5.004874311560028 0.1890806722231075 0.3148704352469289 4.851831891397397 6.917674822021276 0.3660216846612288 6.968329027989149 7.013888888889277 0 2.422277716886195 6.87194124632463 0.1753074574863457 2.420511744628082 6.999364139548169 0.1402998066938881 2.253516774169281 5.208333333333776 0.1474596757584787 0.828692167361196 5.258625130969434 0.1600334604675091 1.030053598396489 5.416666666667106 0.1186994392364495 0.9421476684610087 6.763193817808061 0.863101223282206 3.812750657430939 8.296560400335949 0.1555867935794694 2.671266501101353 8.243195189017573 0.3202455977607807 2.726966598543548 8.461790908183078 0.297604614107325 2.651566568562633 2.062423382392218 0.1582464177677305 3.568367775460811 2.140079893789225 0.285694169801436 3.526762116283468 1.939163963711655 0.3640105547811365 3.54240246558991 7.163886943233358 0.2455409707222629 7.227116080466873 6.658048422999798 0.1721342502191464 3.992647208788259 6.726877942736689 0.3419450252453593 3.942711870283146 6.874385075292675 0.1698107750262129 3.935999357436307 6.773372791731672 0.1418531991111963 3.82601287813343 3.14734415417618 0.8450990336827847 4.572912316664014 3.308832300399029 0.7219562664703851 4.640449612894347 0.9027777777779519 0 6.752404735808001 7.228087409199485 0.8461692317464962 9.603911264261718 7.182793877810161 0.8568980903711405 9.450542965123729 4.738389607574963 0.5473347559425463 6.615464193020297 0.419759955543109 0.8739826459058962 9.885840362831306 0.5661305230597389 0.8615698856571411 9.689110536635663 0.561026212702731 0.7355525315630373 9.803270173804357 0.3333466868358117 0.7364733695277028 9.872584589397562 0.4797172543524417 0.7240606092789477 9.675854763201919 0.3384509971928196 0.8624907236218067 9.758424952228868 8.568008285625284 0.1420178205278556 2.643140396509938 7.86723727679177 0.8457966998411031 2.11447597489536 7.889331649406158 0.6887567233566778 1.963952511856652 7.976469812096328 0.7085404293502817 2.186203023756687 6.777024911908793 0.158296794386336 2.959968884694413 6.73611111111145 0 3.143965553373213 6.870664576649789 0.1243210831649124 3.067053883072309 4.882545738730137 0.4108769507945256 5.898060305214326 0.6740206687061635 0.1625740232022004 1.338684338549023 3.106413934857837 0.1570399764844209 5.337321367609822 5.972928137118027 0.8779596699427419 0.1175468903934088 6.110961108420065 0.8779596699427419 0.1202813060811743 5.921708349797401 0.7440826856442915 0.1545779001552287 5.922714270075295 0.8661230157015496 0.2721247905486375 6.172803814878893 0.5052282870880096 7.819305856776536 6.112034075442796 0.7114743345365977 7.823659315509916 6.998135666591683 0.4215103786509457 5.020687649603243 6.951189093930249 0.6033205580394212 4.988687856401835 4.380100090995182 0.4062241994848007 0.1816159022639371 4.293040120001772 0.4829094184088533 0.3470512257575677 9.126524105454257 0.5179751283976354 8.717374684236198 9.067241808284816 0.6176532282754987 8.682506573018845 9.027099247072446 0.5481747898470929 8.849250063566842 9.811427428493886 0.4391916817275873 0.4733767783091564 10 0.3780135498278507 0.6328362850656063 9.849467460936825 0.4191788112202712 0.7015750540378518 6.527777777778143 0.8492798353909468 2.863309172517121 6.70193446181374 0.720847967611451 2.803649432080956 2.285570708795945 0.7118837103726491 9.837000653045017 9.425866190897775 0.6798476598081478 7.979757679851415 7.90475591387256 0.5767193311846792 9.571604790414606 8.044211142438506 0.5855290652624887 9.376167479876955 7.863830115512927 0.6168580977479627 9.373209530526736 8.263888888889255 0.6406893004115244 2.943496709904716 8.333333333333702 0.8428497942386837 2.903402941210996 8.402777777778136 0.7978395061728407 3.063778015985896 8.541639557152388 0.8496137876208055 2.981555113629283 2.862856180783261 0.5488050003252087 6.39840323200802 3.014782779919265 0.6034130435178798 6.278518162977444 2.98213137187865 0.4482547229551198 6.448690422552866 2.795471424875619 0.3222639557168545 6.450060999284259 2.947398024011624 0.3768719989095257 6.330175930253683 2.828122832916235 0.4774222762796146 6.279888739708837 5.515873015873426 0.5625367430922982 1.878147998899835 0.9721696477628006 0.4125740232022004 1.404349766515081 1.124768962272521 0.4111592323916736 1.346245233527537 1.1269978768123 0.3779627178826019 1.588459760973703 1.666666666666683 0.1497646417830569 9.599062313062571 1.805555555555578 0 9.518874775675135 1.623086992945121 0.1395005826321315 9.453621714314117 4.802495796632739 0.5064805630170518 9.148587096344894 4.768118405602436 0.2912895035666776 9.260783342701222 1.041666666666688 0 9.158030857431475 0.9797907529608354 0.1531587046775569 9.146251399577405 0.9103463085163861 0.1531587046775569 9.266532705658577 1.088792439052409 0.1400510296619452 9.330630633178933 7.196533799308969 0.7195227200366336 8.571455544910002 5.132455857362972 0.1201386670978422 6.474125997304759 2.81332027712364 0.1573021089322821 1.639975640140439 2.940621582409124 0.280156260116836 1.566478197265684 3.055555555555572 0 8.797186939188069 1.735897921004286 0.841304238706622 1.139523500449277 1.851356633366011 0.720518502066412 1.072986441159564 2.506365770593678 0.8514933187274754 4.565174253831487 2.453751664170871 0.6812864480359031 4.675738559725308 5.813143155525679 0.5784896213490569 5.298782353000909 5.863579237510459 0.3959961275202413 5.326132080369576 4.746986560057829 0.4089942584255836 1.354043659270954 4.722222222222644 0.3729568651879164 1.567568846433386 7.020380405056114 0.1747041641310932 9.269983932076158 1.389272570994198 0.8435274101485721 1.456466630473883 1.402994032762736 0.7916932277196557 1.319610918917234 3.171946689898455 0.4903267116629005 8.649800949056491 3.293284627976361 0.2927050793147223 8.660447793238724 5.164344328703946 0.8220214763374494 4.830301646346264 5.025455439815058 0.8220214763374494 4.830301646346248 5.138909585461653 0.8777309322120683 4.635638421267112 5.16436502527646 0.6997524085495177 4.758317535185014 5.277798474350541 0.8777309322120683 4.635638421267128 9.495734668400008 0.4346779319189372 7.180559623640406 3.315178317094328 0.4079049135448008 3.398279637733807 7.1540987146272 0.5349794238683141 2.816351614614984 7.134755096912604 0.4207201729668597 2.719420906392507 7.341767493396874 0.3857407490985456 2.766378464294719 7.28729770569946 0.4859262380889151 2.647508932456976 7.223307990080732 0.5652060651220638 2.535952043472076 4.639958521131418 0.538580246913578 7.836789147928132 4.752139264485006 0.5385802469135789 7.642486400808886 3.472222222222183 0 9.518874775675215 5.02915455103197 0.3950015964476172 2.92442505234091 2.831468999924789 0.421510378650948 9.205809658500328 2.638888888888861 0.408653301619664 9.278312163512734 6.666666666667016 0 3.023684247292033 5.038559527219839 0.6909899344136495 4.500859647901615 5.028487746844629 0.6027050368133033 4.655419777565669 4.825578104145817 0.6932060636441202 4.561695381095758 6.856706125065045 0.4268326229795094 3.633562788403562 6.731839231878606 0.449906822897881 3.826012878133432 6.847355329036089 0.5930330476549979 3.793484606211552 6.846527151141432 0.6480806471505192 3.62030056770107 6.731011053983948 0.5049544223934023 3.65282883962295 1.289234624227676 0.4380850006153648 2.62132218655803 2.430555555555697 0 6.752404735808113 5.667266663328041 0.844095521833875 8.732690501044264 2.053571428571432 0.4374632569077299 8.860191432849636 4.444444444444733 0 3.985934695941277 4.308012359940761 0.1544493996232955 3.862585902425316 4.302454825758047 0.1291720556913239 4.056665218662945 0.7669539660585871 0 0.5241123709517951 0.7306577072232363 0 0.4228512209854446 0.7159924427335949 0.135230143550105 0.3593892911782856 3.819294441753393 0.3149932542439424 9.810918564048293 3.749849997308953 0.122040330057258 9.879718693918829 3.608616695241788 0.2929754003273626 9.823928563429716 3.819444444444863 0 1.700591436043791 3.680555555555974 0 1.700591436043784 7.152777777777867 0 6.511842123646059 7.01388888888898 0 6.511842123646046 7.083333333333412 0 6.632123429727226 7.24813489658866 0.1810478729151165 6.601606260771095 7.109246007699772 0.1810478729151165 6.601606260771081 7.178690452144227 0.1810478729151165 6.481324954689915 7.896144158218496 0.6125367109665232 3.37374711129396 2.558523727738158 0.5723898313052728 4.192708618140077 5.539985082898073 0.4297512664188674 1.199903003704398 5.673985234026301 0.5108731386101006 1.275614725465338 5.494452560490648 0.549280523646872 1.387093274518757 1.823705846241242 0.1234567901234565 4.632246247283971 3.486592691477777 0.4673397274201109 8.215990945311251 5.385312467318196 0.5067644275012448 1.277660780202405 2.772291511564987 0 0.6474343686137563 7.024998054344484 0.1229427471378601 7.066741005691951 6.955553609900051 0.1229427471378601 6.946459699610772 5.458933329994712 0.844095521833875 8.612409194963085 5.303233217592634 0.8220214763374476 8.679303440943706 5.408631956436851 0.8762342314097242 8.48028474235625 5.43408739625167 0.6982557077471718 8.602963856274151 5.589787508653748 0.7203297532435993 8.536069610293531 5.597822218883601 0.844095521833875 8.612409194963092 5.54752084532574 0.8762342314097242 8.480284742356258 3.611111111111537 0 1.580310129962608 3.486725789710986 0.1608897318311548 1.652122473111632 3.418256534518572 0.1228622610980502 1.533548356119319 7.017003037560255 0.7858499503253373 2.254973353360047 7.031335999679525 0.630888238980467 2.329360098444928 5.405639139107505 0.5111632446570186 0.8278822608754173 5.753361913815917 0.87104445477113 8.047737503561891 5.980204192769666 0.8459682467713473 8.019461255383549 5.977736772308093 0.8812515549537121 8.155650851133924 8.074794311421503 0.8399825176007695 4.157417072394807 8.213683200310395 0.8399825176007695 4.157417072394818 8.194435101416035 0.8426984779831679 4.347738525114119 8.213673857281691 0.6826809955839375 4.278658289405062 3.147344154176165 0.8450990336827847 4.813474928826357 3.008455265287276 0.8450990336827847 4.813474928826349 2.994987034982567 0.6456075874703047 4.786627835091081 2.421981424204064 0.6686468891071247 3.778478455703293 2.522403459403284 0.6136685183054981 3.962420458627617 2.549036574076911 0.7400706078921909 3.765241223607621 9.530459906214535 0.1917994500240203 9.088357591148299 3.553614693457147 0.3440654176043271 0.8796816383295328 3.394100753501644 0.4541392284145391 0.7426425186828873 2.778662638136266 0.4953983620777621 1.180030775608862 2.637717819171516 0.4087669497434119 1.104902340256833 4.027777777777777 0.8797186939188286 0.1202813060811742 2.266615376365085 0.1393350854005267 7.421505255604531 2.152777777777879 0 7.474092572295132 2.254873952648568 0.1372112235016605 7.636115644611511 9.874808955498153 0.8794772687741207 2.097793584229505 9.726464651253256 0.8351768836820392 2.163320888443838 9.370559127519918 0.4284396696051936 6.134664462149226 9.388187334543023 0.1784396696051936 6.060422879915843 9.239793199204151 0.364937956466848 6.129727545395463 6.358718586422915 0.1783055226617843 6.115663021383708 6.527777777777906 0 6.150998205402497 6.458042813901064 0.1514856945752183 6.000417981952648 1.597222222222547 0 3.143965553372925 6.666666666667004 0.4999999999999999 3.14308668036398 7.708333333333389 0 6.752404735808438 7.652361195273355 0.1810478729151193 6.910385660648931 7.800903206718018 0.1475910034021743 6.903024051431641 1.984126984127331 0.4374632569077024 2.840398447549036 2.176707095163259 0.5159528782567576 2.928271017311509 2.048658132586111 0.3097462314227557 2.878075513742651 1.317124803726029 0.5387676676704047 6.148666302855419 8.402777927648456 0 1.219466967325442 8.472222222222696 0 1.339745962155777 8.31033051124237 0.1558464330837155 1.364109319550977 4.959043302400181 0.8527050368133033 4.695513546259386 5.097952887861583 0.7304359690253717 4.623529435098153 5.753109663425962 0.8769948285953204 8.843499967944956 2.500000000000199 0.5830615166756324 5.611208515694538 2.331125083191115 0.6596422796682551 5.600331355008276 3.33333333333354 0.1553692348799318 5.341808477136453 3.402777777777993 0.1553692348799318 5.221527171055286 3.263888888889098 0 5.309029062834101 3.17585837930229 0.1570399764844209 5.217040061528655 3.245302823746732 0.3124092113643527 5.249819475831007 0.9122042338324947 0.3211717120648665 2.228581151089628 0.4126843938251238 0.8403534983930341 2.171127346394397 0.5916420025979323 0.8520393790933799 2.294771790966204 0.6007201654544633 0.8520393790933799 2.431417321125689 6.041666666666704 0.841346698380341 9.07784332004422 6.063338509291885 0.8228566681519034 8.877739767457534 6.229873973390546 0.8787270419647241 8.96918178084379 6.182101371571276 0.7015837101166275 8.809171996950816 6.160429528946096 0.7200737403450651 9.009275549537502 8.379774955686813 0.1558464330837155 1.484390625632152 6.740699989926301 0.3378029588600484 4.626482109648119 6.589757358134115 0.146513116903679 4.601063605823443 6.528876506926238 0.3057394043305238 4.654731676798386 2.083333333333442 0.4135802469135801 7.353811266213954 2.868668575270784 0.8353929770903921 7.159491189069735 2.718990447512144 0.8587706148399054 7.123753100769125 4.722222222222278 0 7.834936490538759 4.813041666430507 0.1706782408588453 7.97427596858989 4.870026917194744 0.1437107831153479 7.783012501580361 0.5242238927647906 0.6955475417121388 4.381862446835642 4.861111111111533 0.4086533016196627 1.58030857431786 2.780374457916549 0.8245214041666045 8.314562520886282 2.895265649003863 0.8473061458587299 8.205060999987637 2.916666666666709 0.8787270419647217 8.453197255876852 2.895265649003853 0.7260331878234516 8.342196541001112 2.780374457916539 0.7032484461313262 8.451698061899759 1.081313030974298 0.1350871627342926 5.964145331650551 1.09078782853465 0.2819247446164471 6.131367957459426 1.046743574247277 0.3850871627342926 6.010582443244134 4.813041666430504 0.1706782408588453 8.214838580752236 4.836189814578648 0.4114189815995824 8.254932349445955 4.944264560827758 0.3297101517837805 8.147672005936286 4.820821217698642 0.1450015964476173 2.884331283647174 4.90361051161216 0.3058587048392313 2.838103369047595 2.061030733968618 0.8465792428484588 8.180405713656368 2.025999122095126 0.6757977058805167 8.223439877056117 1.581488510998351 0.1592600403166616 4.667215318872856 1.73611111111136 0 4.587341226346997 1.754261401796792 0.1234567901234565 4.752527553365139 9.819049898198086 0.4288717455360608 5.679863465758636 9.574844438213381 0.3281644529785109 5.661907187750893 6.388888888889189 0.8492798353909473 3.58499700900415 6.527777777778095 0.8364197530864202 3.42462193422926 6.624304928919213 0.863101223282206 3.572188045268584 6.624304928919219 0.6995209763686263 3.492000507881135 6.485416040030314 0.7123810586731534 3.652375582656025 7.517361111111265 0.7753343621399187 5.760083960638756 7.5868055555557 0.7753343621399187 5.880365266719933 7.388820953673863 0.8545569066547971 5.776726801197453 7.458265398118298 0.8545569066547971 5.897008107278629 7.406182064784968 0.6298912687947158 5.866937780758334 4.65277777777817 0 2.18171510472371 4.695628930948002 0.1747997848721756 2.342942631346374 4.8167493406114 0.141412947590903 2.247313045863431 8.124999999999911 0.8221965991921903 9.581140247038888 8.043644802761424 0.6489159303768697 9.673964030471884 9.184355735297187 0.696027092821039 2.771223500085413 0.7500965126425344 0.8321756275265845 2.904580495276135 0.6650247093476271 0.8321756275265845 2.781341063203088 0.6872026190845232 0.5821756275265845 2.878475513038695 1.557599671288501 0.1580576740412472 7.176218513192937 1.736111111111234 0 7.23352996013276 1.686868540709887 0.1842654275518152 7.101110990757041 2.361111111111144 0 8.556624327025675 2.430555555555598 0 8.436343020944513 2.389702757850666 0.1578412604582609 8.620304469471485 1.597222222222435 0 5.309029062834019 5.763888888888889 0 9.398593469594067 4.357608581162348 0.8345646765063695 0.3800333416231335 4.514019112724364 0.8575942246960413 0.4057108785458448 9.285975383154877 0.1573344949815406 2.873497830718915 9.376263349010459 0.1573344949815406 2.752339353709039 9.359647396100897 0.4073344949815406 2.825844424840271 9.879718693918829 0.8735164000145412 4.166666666666665 9.879718693918829 0.8735164000145412 4.305555555555553 9.687620744616735 0.8112716077289128 4.303815215700443 9.807902050697908 0.6847880077434541 4.303815215700444 9.687620744616735 0.8112716077289128 4.164926326811555 1.597222222222502 0.8413466983803373 4.026028464634858 1.536124543948497 0.6522980242750357 4.131009771256281 1.466680099504055 0.8109513258946984 4.090916002562553 1.384674877575899 0.8822729062697163 3.908180119119763 1.323577199301895 0.6932242321644148 4.013161425741186 1.454119322020341 0.7236196046500536 3.948273887813491 4.022775627958605 0.1231062046848292 9.13840960530989 4.022775627958636 0.3369705574381016 9.140211979182638 4.203502341754193 0.2825187040443611 9.111865845497961 8.124999999999911 0 9.398593469594179 0.4418014055064109 0.4030924336727549 3.017933134462762 2.044913574495657 0.6591407716566322 5.559635498151405 2.053347305413333 0.819659700516004 5.702734477148088 1.631944444444672 0.842849794238683 5.008325797631089 0.5710611353774853 0 7.794062877946779 0.6449779686844698 0 7.700437993791091 0.5150306847082735 0 7.663354093880097 0.5805237748180507 0.1473328015181626 7.625916559953415 0.6544406081250354 0.1473328015181626 7.532291675797726 0.7104710587942469 0.1473328015181626 7.663000459864408 3.347501133787055 0.3546478105077123 5.366347827353438 7.159576046575376 0.6730358449123981 3.239374301125604 7.129234251801737 0.5322657571180693 3.137437847586557 3.888112362797003 0.5772006584194671 2.933490216509168 3.666665021655556 0.6226309545259523 2.917313889089861 0.1289471416585812 0.8782701430505849 2.502311093910605 0.3277173477113761 0.8486133627168768 2.671378699382593 6.866588937038776 0.1666156057602664 5.654557752898469 6.956179439691821 0.1624177907551599 5.848901013077052 7.070704960185277 0.1226614123799605 5.742769523828747 7.082439955432491 0.2850792031351205 5.921797555827961 6.992849452779446 0.2892770181402269 5.727454295649379 9.447460282425009 0.8492924393869811 7.891157459002047 8.298435855759092 0.4261088945233183 0.176375224917151 8.437767948763183 0.4758714314560543 0.3777989366919192 8.472438879725999 0.5368181824974507 0.2014237117747683 8.280774519742081 0.5915565731505864 0.171694127636261 8.420106612746173 0.6413191100833223 0.3731178394110292 8.246103588779265 0.5306098221091899 0.3480693525534119 2.687171414544791 0.3390137129080027 6.541374399327925 2.588594042156636 0.4845881937651554 6.531369065743215 4.473322502940569 0.406452438214156 6.694959126703482 0.4254941788437375 0.1498284778621227 0.9706464968506838 0.4928689218719421 0.3237872338001101 1.098053537822791 0.4743325704730894 0.3166123950304574 0.8360449783811325 10 0.5023184596578751 5.695481075794547 10 0.6216386046209305 5.761031834270697 8.055552499531103 0.8771403785738876 4.373521057801198 8.194432045391292 0.7198388565570556 4.494762274811453 8.074791255396757 0.7171228961746572 4.304440822092141 5.829590728158029 0.8427177733367694 6.519147706837709 5.987009040183287 0.8539279949333629 6.555307426910029 5.814320459085143 0.8529442749075286 6.723735558877749 5.967996165934954 0.7068722698408915 6.646919556060645 5.810577853909696 0.6956620482442981 6.610759835988325 8.597014348643146 0.8192494871247169 6.188852336971115 7.777777777777825 0 6.872686041889614 7.847222222222278 0 6.752404735808446 7.939792095606908 0.1475910034021743 6.903024051431649 8.07850459243592 0.5346475717546569 2.240822355224275 7.959630758116162 0.63044427159576 2.314255076698248 7.936681721236218 0.5957966998411031 2.094085429673998 7.982677225562774 0.4007164962343016 2.20735455557348 7.863803391243016 0.4965131960754047 2.280787277047453 9.394410719578033 0.845027769753929 6.089055110677505 9.376782512554929 0.595027769753929 6.163296692910889 9.46337387965696 0.75 6.21080869706563 9.406184734951918 0.6196869775703121 6.404188829720226 9.33722157487299 0.714714747324241 6.282435243332101 2.496163891498147 0 0.2340002699603302 2.495168849007189 0.1227223165890342 0.118382924701585 2.359020037619623 0.1227223165890342 0.1156173452587452 2.4658895935983 0.1982460405042032 0.3096274021059353 2.464894551107342 0.3209683570932375 0.1940100568471901 4.179163935676435 0.160621876711029 1.256995711783619 4.326542892125634 0.1455878178189122 1.315172294630014 4.339040161134966 0.3062096945299412 1.232419481427511 4.102178670660953 0.280756002374154 1.2749811093608 4.249557627110153 0.2657219434820372 1.333157692207196 4.089681401651621 0.120134125663125 1.357733922563303 0.1637795623125065 0.7048025232272824 7.75970637529144 0 0.6042386661970738 7.837780285454357 0.1639031727676435 0.7040921154532083 8.005659875155278 1.736111111111123 0.5495292835661338 9.398593469593937 1.875000000000013 0.4566794893274595 9.438687238287715 1.847199014649465 0.61061936293624 9.315087602350198 1.986087903538356 0.5177695686975656 9.355181371043976 8.599661097867557 0.1557898731510353 8.681643368839573 8.566981359305487 0.3549244652594734 8.554286691812454 8.439542483660098 0.1991345921084381 8.669830262161264 8.412432459131312 0.1501967576186703 8.823821952248156 8.379752720569243 0.3493313497271084 8.696465275221037 8.539871334776699 0.3059866307697057 8.708278381899344 1.455922426207957 0.6540235206442697 2.400752616772364 3.41718527063713 0.829480059135039 1.108467396150184 3.347740826192693 0.829480059135039 0.9882833735210524 3.558668322197795 0.8640674184325468 1.103085414524639 3.489223877753358 0.8640674184325468 0.9829013918955074 3.503631370612247 0.6935474775675857 1.112282241035064 3.120800136019825 0.5390997480538102 5.504548063831264 3.000278911564832 0.4492785756277805 5.413755950438517 2.909093506044515 0.5122635372694928 5.59405781001408 5.278822866137112 0.8457800690876467 8.419881781374544 5.34722222222227 0.812536743092299 8.230146496234056 5.478076400881302 0.8762342314097242 8.360003436275083 5.408631956436855 0.6887709745020232 8.274088217645673 5.340232600351697 0.7220143004973709 8.463823502786159 2.705413902872129 0.842397820738377 6.590344127070495 2.823923963195889 0.6705730241586412 6.640031100204606 4.981400825082844 0.8495635062048497 6.292836003761979 9.397400291977982 0.5836912010108617 2.536807056947355 9.42622002982422 0.8336912010108617 2.590393383154395 9.396644734551899 0.8423093028520157 2.423053008426375 9.27157948114742 0.6760005038628774 2.490875866229645 9.367824996705661 0.5923093028520157 2.369466682219334 1.597222222222365 0 6.992967347970409 6.52777777777815 0 2.783121635129673 1.081727829466949 0.8189712774642427 3.151672887385238 1.021395060451587 0.6571884086419465 3.196999044162829 0.9132470412999659 0.8382171311777038 3.069794207920094 1.103538383677808 0.8746005293523749 2.961125916850131 1.043205614662446 0.7128176605300787 3.006452073627722 1.211686402829429 0.6935718068166176 3.088330753092866 4.8622796730254 0.8739454398753028 0.1149397308885211 4.863559881281574 0.7848240840400524 0.3274390840836854 4.864329014988674 0.6587695239153553 0.2124993531951643 5.014286791166755 0.7157926894397004 0.1638265032511131 5.01556699942293 0.62667133360445 0.3763258564462774 5.013517657459656 0.8418472495643976 0.2787662341396343 4.361111111111402 0.4804526748971198 3.90574715855382 4.441343714646941 0.3791720556913239 3.976477681275505 3.020825708313605 0.8429600235155791 5.189078210705475 8.748473444497117 0.4070487328970167 4.295745366348642 8.605704008963766 0.4125806710455429 4.229619099984385 9.819049898198086 0.3120229444629095 5.615113391173053 1.259943740905311 0.4024181525070967 9.836558440992842 1.119545391217075 0.4804976025584841 9.671655931212126 1.388888888888928 0 8.797186939187981 1.458333333333369 0.170098581168231 8.937239858965286 1.520917128449193 0.122159213345268 8.724553928392892 9.567148324149962 0.5942754878330323 6.222654095603565 8.273543570242417 0.3523572514458181 8.984197027023026 8.481876903575749 0.4001967576186703 8.86391572094189 8.388089204683286 0.2925765737006646 9.050293429039822 5.133424167390029 0.8405277703717584 7.180628661057369 1.319444444444466 0.816762292599163 9.135904835902352 1.388888888888913 0.816762292599163 9.015623529821166 1.458333333333357 0.816762292599163 9.135904835902345 7.718940375352947 0.4486768532358884 8.150256181839335 7.59200075549067 0.5389963193417273 8.073688107288937 3.888888888888937 0.5561502936088806 9.15631738955749 3.710813492063535 0.5326841646286261 9.032163216421104 3.895277892417565 0.5566146899980908 8.930956850302948 4.723257845250563 0.7315396645713442 0.1911128604163418 4.722488711543464 0.8575942246960413 0.306052591304863 7.823197343041366 0.1484663091192276 0.630699675888833 7.861498195261929 0.3253803652989992 0.6993568188548719 7.854716762819779 0.2884897896263364 0.4632896508921411 7.569444444444438 0 9.398593469594154 7.500000000000009 0 9.278312163512982 7.62452401016593 0.1806228384681939 9.240391690376544 3.869833664055021 0.3055184748803334 1.758170991086826 3.899893384209272 0.1244705656584144 1.885634873246714 3.770398463802651 0.2467107283731473 1.958354390539653 2.455084313550126 0.6721664187423469 7.563139839744909 2.300888668914394 0.8377342751179574 7.65637218462791 2.376417866858048 0.8344321436243896 7.501141533493309 2.38215058990632 0.7075326445304123 7.338851722120811 2.227954945270588 0.8731005009060228 7.432084067003812 2.306621391962666 0.7108347760239802 7.494082373255412 8.413304567976033 0.4512800744558457 5.375217854292307 8.274579014768481 0.458626754077256 5.579724235412097 3.42742898860707 0.8396627381209286 7.066797881529557 3.496873433051519 0.8396627381209286 7.187079187610735 3.334379594857805 0.8746418920651868 7.285999311711158 3.403824039302254 0.8746418920651868 7.406280617792335 3.428475250131425 0.7143046301861155 7.239548539189035 7.500000000000092 0 6.39156081756491 7.651493577035628 0.1596077095474902 6.474686686259711 7.669356283108359 0.1376768877187468 6.324621730440374 4.722222222222307 0.4807182237314543 7.240053939706231 4.861111111111185 0.4092344259968763 7.326713408752118 4.660949044793422 0.6718459070805506 7.286344123708631 4.799837933682301 0.6003621093459726 7.373003592754518 4.660949044793416 0.5095965353428489 7.426093272679996 4.628962468003147 0.842960023515579 6.049951886708345 4.575825930140553 0.8597006787617796 5.846183529063794 1.123937296728488 0.8388407676083264 1.266586435298647 1.262757335087955 0.8388407676083264 1.26655882474051 1.263141017192816 0.6823681777568984 1.383279493059069 1.250452532634731 0.8435274101485721 1.456494241032019 3.806937363623509 0.8736428154726866 2.481041695599285 6.860468679173026 0.4011731940907527 6.840981935186992 7.106680800385128 0.4080942565673842 6.859206375502357 7.048345521396236 0.2810370037052443 6.892886264529838 9.633249273053618 0.4374267939762269 0.188678069154057 9.694568207877243 0.6124663803561851 0.128687577553251 6.880667529251887 0.313571636044891 8.439615170483947 2.35547946970638 0.8472969823733285 2.757652515478509 2.500000000000364 0.8364197530864199 2.702934097742004 2.491470784259727 0.8736919786612428 2.936879688790881 2.491470784259732 0.7101117317476626 2.856692151403433 2.346950253965749 0.7209889610345713 2.911410569139937 8.548481832795151 0.6903945890400296 1.951235076270935 8.476818771920932 0.408076653241207 4.355951181495101 6.388888888889328 0 1.099183349993218 6.222546803589849 0.1609149269027044 1.159750544583549 6.251302271815458 0.1450459398062476 1.001305330432107 2.916666666667042 0.4076276668204385 2.505442406800332 2.777781353302264 0.3730051714046813 2.530114309851557 3.876284583443414 0.5903923321417144 1.823810440592836 2.847222222222536 0 3.625090777697674 4.604708333097171 0.4206782408588453 8.17474481205851 4.560874921765924 0.3877787132262369 8.329028084827488 4.367120232996023 0.3808408070892393 8.218551920668272 9.815601396018677 0.6791055588185366 1.136013609482244 9.494674042183339 0 7.700702149121417 9.54238052320445 0.1546183972869483 7.645512566554466 9.492150925465495 0.1546183972869483 7.539184295809798 9.454373882614778 0.295959790169046 7.719185747206974 9.456896999332621 0.1413413928820977 7.880703600518594 7.916666666667151 0 0.8586207378310632 0.7117923906890591 0.3907813321464931 4.189600651617171 6.944444444444502 0.1586533016196638 8.1556866400887 6.940855198301264 0.2807173820655168 8.019834904599753 6.226988839822583 0.3331087146506836 6.238178858842069 6.219829697534033 0.1783055226617843 6.115663021383701 9.608772968807237 0.1320990691410974 1.237075807750826 9.678913289447863 0.3194040242146459 1.240683145307351 9.569383312622357 0.2842874166807342 1.037144009718883 8.888809757046705 0 7.353852351492742 8.888455142907702 0.1570213018127531 7.263824689135987 8.698471234308787 0.1273660142034075 7.385960515360983 2.113114067301967 0.5712448807085408 7.969913428014323 2.283527557803275 0.5623999129780395 7.806723817229374 2.135416666666755 0.5897532540696016 7.735535496512668 0 0.3634703051476028 7.7044921720075 1.044658901647002 0 2.424005284557003 1.132909905384377 0.1627368016526108 2.471013692900856 1.119433449000346 0.1573394417289152 2.256860449184219 9.136223724236451 0.4613040963187123 6.739727580550931 7.221306201921784 0.4081902927056326 9.839624925225106 7.082417313032899 0.5386623946503224 9.783051763823964 7.227171388899045 0.6036393598430744 9.844473876424061 6.42483228899423 0.484047121743259 8.68519499180735 6.597222222222287 0.5625367430923052 8.562352008267872 6.402893695025403 0.6664109701583338 8.644052382910537 9.444260366580934 0.8440849758384064 3.441397144827166 9.566787762954906 0.8249962037857419 3.241303709509232 9.36002063588421 0.8387925562234754 3.214533959508539 0.7520905222952023 0.5992079387762791 6.06017956685842 0.6714643648942942 0.6970208658606762 5.942031290024871 0.71660282168503 0.8492079387762791 6.134808827521869 4.818883721505811 0.4803719212119292 0.5868590351737372 2.631031390096818 0.5387566405388011 7.193929989394336 2.730925291602678 0.735980771152968 7.291018760992431 1.174053808787356 0.559680078759059 4.203987509803262 1.131436403703109 0.7095974907234575 4.22217944651088 8.007557464159589 0.8353929770903947 7.067006119033888 8.178174395927385 0.8612722939097271 7.172036815461674 7.579983610277393 0.1540183726452562 4.194375178302098 7.492876226406757 0.3168237700204582 4.147196491195473 7.412892616129623 0.162805397375202 4.179318620997188 7.494985234951316 0.1292143433068512 4.396704104166567 7.407877851080679 0.2920197406820532 4.349525417059941 7.574968845228451 0.2832327159521074 4.364581974364851 0.6539742459755227 0.1498284778621227 0.7943832407746041 1.875000000000035 0 8.676905633106827 1.827163473604213 0.1771737721226444 8.516911666444464 1.757719029159768 0.1771737721226444 8.637192972525632 1.875343370392392 0.1236874120287731 8.828501484316288 1.82750684399657 0.3008611841514175 8.668507517653925 1.944787814836838 0.1236874120287731 8.70822017823512 2.430555555555746 0 5.790154287158743 2.286531267590784 0.1549217949782679 5.86332311528545 2.412117867634183 0.1526104398265359 5.970677784406783 6.808123576425835 0.8660650734782395 0.1202813060811694 6.738547278307344 0.6591546466467687 0.2011940733657847 6.805555555555758 0.5864197530864206 4.948185144590799 6.777947763529692 0.5756833107237613 4.746612825439287 6.631594010552487 0.4721964276274403 4.680147667528002 6.659201802578552 0.4829328699900995 4.881719986679515 2.71469910392701 0.8514933187274754 4.685455559912663 2.939010820842839 0.8450990336827847 4.693193622745174 6.048825808955363 0.1548031919888993 6.393795348942007 5.902777777777931 0 6.271279511483629 5.887140604585529 0.1525280704766478 6.389824412671775 5.208333333333381 0.812536743092299 8.230146496234051 5.139933977248223 0.8457800690876467 8.419881781374539 4.165890140574776 0.8272006584194671 3.013677753896632 4.197567554528431 0.6694865992750818 2.951779179982558 4.337232969509561 0.8422859408556147 2.961785673377817 4.31485397452529 0.8736717053006383 3.176236414045919 4.346531388478946 0.7159576461562529 3.114337840131846 4.175188559544161 0.7008723637201054 3.166229920650661 0.7943845302513359 0.6797776369088286 6.851587094087902 2.289312401940741 0.8390769431287713 8.086791155663708 2.13047517841307 0.8465792428484588 8.060124407575207 1.311038453718067 0.3770234150834874 4.83421222242224 6.957718408626047 0.454790198894526 3.743549267706438 6.832851515439609 0.4778643988128977 3.935999357436309 6.041666666666813 0 6.271279511483639 9.472586114909747 0.3614183437228915 4.771875708581292 9.274048129024255 0.3891147737204539 4.875713009474353 9.369368391256083 0.487389575987603 4.958685390821558 0.5438359974342653 0.8361061013632288 4.785240820811254 5.321924577419945 0.8421948008306013 4.765721118118401 5.321945273992458 0.7199257330426696 4.693737006957153 2.103523511141218 0.5784896213490864 9.248465104652528 9.818549785357977 0.6940651865075744 7.540519327322412 4.314162681764072 0.8429600235155785 5.745265274892756 4.352514527423527 0.6866144940016732 5.803310363864798 4.182968835381773 0.7124572904988862 5.647921913807584 6.947558593115815 0.5358499503253373 2.21487958466631 6.405030918106544 0.6138656037932502 1.213101697963598 0.1743183328204768 0.6963586274250356 1.757087954809654 0.2907765991833641 0.8192005995620352 1.756518748835682 0.1164582663628873 0.8771580278630005 1.803790591024959 0.1803829688836024 0.7175115262560345 1.968140416228369 0.2968412352464898 0.8403534983930341 1.967571210254397 6.017178984872537 0.1671568761695371 4.776696920990753 9.213276050786774 0.1331346096232646 8.361781640062052 8.472209474822391 0.7753432145012191 1.640460266931176 8.354469460166014 0.8723442037415693 1.664660159067001 9.026350218663902 0.1623045260605924 3.659702543307248 1.351034315671149 0.6871961068979515 2.943642685034955 1.241825046639527 0.8746005293523749 2.960778221548977 1.543309989913809 0.5882092346678326 5.421698232227437 1.611931395174117 0.7172671442022281 5.451742339024804 1.596399183038302 0.6290579095343956 5.298979400937659 1.667790863799785 0.5224862882069665 5.393154456087546 1.006044606512365 0.4111592323916736 1.113000908556006 1.054424001754629 0.1611592323916736 1.146277518659327 1.128515348420961 0.3435129908082374 1.036279478845707 5.972222222222255 0.5049269452939287 9.117937088737953 5.972222222222356 0.8506245738573796 6.716503446738746 5.953209347974023 0.7035688487649081 6.808115575889362 6.458333333333327 0 9.639156081756461 6.621161599765071 0.1623438970266377 9.716731115649772 6.487204049006566 0.2189790409230793 9.736692610775872 4.214449563010749 0.1300398762033937 5.391829069459192 4.214449563010759 0.3514701635530253 5.291531265262411 4.217452625291604 0.2932228346332471 5.457514839823034 7.230873789496011 0.3975158804337099 2.868304157211411 3.72663623206298 0.3219020934455638 7.04728589440554 3.661014259910847 0.2975672862092916 7.262104378327378 2.112443237271614 0.1665850370872342 7.614067950951304 1.597222222222404 0 6.030716899321051 1.458333333333515 0 6.030716899321046 2.13225156089626 0.6671827224076379 8.54941032820564 2.097838728325303 0.8379642593755801 8.626657470887057 1.978857277015438 0.8292184630320578 8.479377184344244 1.981370770836509 0.7045072010998548 8.633598367703909 1.946957938265552 0.8752887380677969 8.710845510385326 2.100352222146373 0.713252997443377 8.780878654246724 1.044187891426572 0 1.461135064343756 0.9042770614749363 0.1625740232022004 1.446024849358348 1.059105290524436 0.1279627178826019 1.63013484381697 2.291666666667077 0.7964364956090177 1.940283144181002 2.222222222222641 0.7964364956090177 1.820001838099826 2.473847615530896 0.8798430341610203 1.996345347468393 2.404403171086459 0.8798430341610203 1.876064041387216 2.40440317108646 0.6762795297700381 1.875194693006983 8.879197947542821 0.150690532876936 2.238174606083988 5.139453431919589 0.8730274782134032 6.700989355694203 5.278520217968339 0.7189466304979077 6.61571709526682 5.082727584112252 0.7234001117850982 6.759705372415725 6.356389553429409 0.4023667473959891 2.603983060278517 6.458333333333702 0.4007201646090554 2.823215403823386 6.524398191876251 0.3927489592979666 2.607504550334502 5.545230536306022 0.2856818791464367 0.8921638591580564 8.255619544495506 0.4120453237452283 1.196685713308721 8.85969678744587 0.4565935065266935 3.180142210257471 8.382936507936563 0.5294679600235177 6.763860098292408 0.2836260128430212 0.1530924336727549 3.143902560527314 0.4077206308060747 0.1544315851414393 3.348545415898306 0.2694560010177253 0.1331399227578763 3.407108329531959 9.588890458506409 0.1438562215791563 8.219082933673519 9.576403339137549 0.1865273752834793 8.016288225382015 9.426449799741007 0.1413413928820977 8.011943983332527 3.715098343685531 0.4426317319735183 4.948392337233798 8.603539319226929 0.5898847221265027 4.230868884186659 3.046030243569503 0.8422240487345416 7.760248394590562 2.888319200226586 0.8440303045686914 7.658194998383715 2.818874755782132 0.8440303045686914 7.778476304464883 2.948238332684888 0.686254353303233 7.703788208516754 5.558756991239203 0.6241391970488487 7.833088140785078 5.416666666666716 0.5625367430922988 8.029677652765439 5.614473024927023 0.6210444547711299 7.967549966174424 0.4742508725548915 0.7016315018795301 0.4757818847785282 8.016741000002181 0.6634355295006691 2.592202728609371 7.924347518677768 0.6287879577460121 2.793361313743725 7.891160545629872 0.7410878967709695 2.591291036941233 4.204366637160156 0.5160703361595098 6.983923016438552 4.376201939190446 0.4378448249046303 7.106628764347494 4.314985264982385 0.3118881454496099 7.069517627014539 0.9722222222222537 0.8413466983803386 8.957562013962853 6.458333333333393 0.1586533016196635 8.275967946169839 0.7380815939874491 0.6956339631435404 0.502908750513839 9.487887980825175 0.6732390326583194 2.695803011816665 2.428564247387357 0.8056452742314631 1.221463324715125 2.359191047586009 0.6465879781544632 1.260246123948354 2.289103546675434 0.8409427039230002 1.142026773050542 2.489050924493291 0.8755338977665642 1.027397870681533 2.419677724691944 0.7164766016895643 1.066180669914762 2.559138425403867 0.6811791719980274 1.145617221579344 6.694387759326835 0.4815192715599988 5.668051129276164 8.059307117548169 0.6041620119300133 1.395060850920409 6.458333333333421 0 7.714655184457708 9.16619362609638 0.1706957406987198 8.131251386774771 8.3511881550791 0.848028750368229 0.2892410180296835 8.350271578695033 0.7187006979503463 0.171694127636261 5.96656825305614 0.1445797432834946 6.741247868063244 6.156067873761427 0.1671568761695371 4.536134308828412 6.111111111111328 0 4.467059920266085 6.250000000000215 0.1574763042202187 4.344745265428179 0.5662747137492969 0.6532528811802536 9.590741661658189 0.4199041462326669 0.6656656414290087 9.787471487853832 4.58341710088585 0.1302470757714599 9.879718693918807 4.536999750975328 0.3326765776303212 9.800579511583148 3.003817269378927 0.687143397708426 8.203263784939601 3.025218287041783 0.8398372518496962 8.314264499815341 3.025218287041773 0.7185642938144178 8.451400040828815 2.980806134884897 0.3732187971080104 8.44008203862666 6.079752043296181 0.8422269878670366 2.12351616978532 5.950517540409013 0.8168829838691105 2.049353180101996 6.111111111111224 0.586419753086421 7.113248654051826 2.200317288023188 0.3382279219419293 2.974010948647607 8.611562208599661 0.4274553581276168 0.33582463862707 8.47223011559557 0.3776928211948808 0.1344009268523018 8.437559184632754 0.3167460701534844 0.3107761517694527 3.104621171435007 0.8281752034202643 6.80209170894226 3.174065615879459 0.8281752034202643 6.681810402861093 3.402980949670386 0.8737126773840214 6.693211905594797 3.243713232216369 0.7018878808042855 6.742898878728894 3.333536505225935 0.8737126773840214 6.813493211675965 9.373927031060834 0.1288318480687032 8.838161320338024 8.901561489226484 0.8161024998142811 4.225220999917194 1.12531178360671 0.7152511556836543 1.414808130873382 1.112623299048625 0.876410388075328 1.488022878846333 1.251827019512953 0.7199377982239 1.604715936606754 8.472203486733571 0.592698477983168 4.427931485241039 0.6483165835498638 0.5390367300037011 0.984354123079544 0.7429445886316445 0.3998284778621227 1.000850450632731 0.2105848676807849 0.5288721046725375 1.015511316488198 0 0.3639880212009011 1.03169475853362 0.1876560491093766 0.4137941306068239 1.16099041038503 9.200122673092409 0.4111348518335992 5.003918306114114 8.972060810009356 0.473799172428566 4.998935957714018 9.043058026773476 0.3928971447867098 4.857471128633861 8.699616737222158 0.8719386141082044 1.130728887010064 3.31349206349218 0.7794679600235154 7.181980828955208 3.407587718765799 0.619130698144444 7.135530056433085 0.6585739865444868 0.60203937909338 2.169365221265962 6.760050488653963 0.1623438970266377 9.716731115649775 6.758918344252644 0.2832611024345377 9.83701242173095 6.804423411154232 0.1209172054079 9.879718693918825 6.891345754042899 0.1408315923868395 9.648159499671154 6.890213609641579 0.2617487977947395 9.768440805752327 6.84584068714131 0.3031754894134773 9.605453227483277 2.481562312078622 0.1526104398265359 6.090959090487958 2.406173126316967 0.178497464369122 6.235461417909216 2.630369038504383 0.1254406158356302 6.241272356193668 2.536542164821177 0.3039380802047522 6.325735568700623 2.611931350582832 0.2780510556621661 6.181233241279365 4.666666666666738 0.3742550021285609 7.535201005959473 4.722222222222292 0.1592344259968763 7.487088483527002 4.666666666666732 0.2150205761316846 7.642486400808879 4.541836640584482 0.1386593261356702 7.62326455333395 4.532450322130544 0.3664551608374299 0.9970524209102851 4.725074574125424 0.2452565001127157 0.9487658862312239 7.417029090496945 0.4021240505001575 1.131508615448962 7.455152021498872 0.1590402948208724 1.153882166181732 7.253751286386217 0.8429842348261738 4.232447164368328 2.884598660248356 0.4414897003901165 5.877369086398348 4.135591324343742 0.8430890991106 5.181685096724666 0.7894189307651091 0.1752606108002105 0.477752342644469 0.7384574074401168 0.3104907543503155 0.3130292628709595 0.7194441966564689 0.3041155208767383 0.5084740558717658 1.527777777777914 0 7.113248654051572 1.597222222222348 0 7.23352996013275 8.595247048605101 0.2940975278107488 7.646453500722922 2.55835036776145 0.80983666357303 0.5685616258470308 2.440817114605834 0.8425798516349288 0.3989757592239687 2.960784226062384 0.4278306079947642 1.422621346766177 2.777777777778223 0.4087669497434119 1.339745962155404 2.932313518192699 0.5884315007590497 1.397385566262149 2.932313518192709 0.4971984505024617 1.237010491487254 3.11531996647687 0.516262108753814 1.319885876098026 5.101234933807731 0.5451122844506884 6.012362651729773 5.212582630937852 0.4464225994109569 5.971034039088039 5.234648130937863 0.6659185138510497 5.86791829532921 9.231352560940227 0 2.178967754501724 7.800602344706583 0.8237114182818597 4.233163400213775 3.454659364839619 0.6028704490180075 3.685025029422927 2.761365155428239 0.7212404608817541 7.584898046444671 2.770653576274337 0 0.2321315478891138 2.773258452860009 0.1228693606922653 0.1137486231875288 2.959123616501627 0.1438781418273452 0.2608855218215014 8.147949036880348 0.7846475717546569 2.501775512607997 8.267858660405789 0.6212153525045713 2.428347187433077 8.147949036880343 0.6274973659933406 2.622056818689171 0.4582466289191408 0.4314065328833092 2.850479403372257 0.4360687191822448 0.1814065328833092 2.753344953536651 0.3243669443904763 0.334498966556064 2.892882696904324 7.6388888888889 0.7978395061728454 8.396249252251097 4.914341605175343 0.8780025834037448 8.98829465404015 2.294094766972648 0.5893956424494786 8.548213140834129 2.429715147563088 0.5092030251512124 8.634765905832117 2.605656107804919 0.5201715198946224 8.604285484506814 6.467965194496745 0.7132034310796347 8.35059452592183 6.606854083385628 0.6267836779932139 8.430782063309286 6.412525556188744 0.7306579050592427 8.512482437951949 2.554098641460032 0.4212387657756322 8.725107836745627 2.445862311302498 0.8344321436243896 7.380860227412139 2.297399389715038 0.8731005009060228 7.311802760922642 5.648113919590996 0.4154011022155037 6.185355823482725 3.823645404042748 0.5735596707818934 4.547247457653375 6.275502894250188 0.1387400332238638 1.426742294718355 6.17860525339516 0.2996549601265682 1.367028183227514 1.486574468001072 0.8354917477077218 7.726369730309557 1.583292794138291 0.84967681610626 7.901632063160993 9.811427428493886 0.4377083830167061 0.3667407273059451 10 0.4406641031685345 0.2775414510253422 9.872746363317511 0.6127479693966643 0.3067502357051391 2.265319263953709 0.495805519833841 8.690337613332872 8.981360990881136 0.8420361101138469 4.650093217100263 8.888034544721748 0.8623742151233711 4.864097254351198 3.323808021347296 0.5922240487345416 7.680060857203125 3.403824039302247 0.6246418920651868 7.566655692567227 3.338326184910732 0.5114724847109499 7.48571807298674 5.95702049495463 0.1711427152978693 5.076724613493795 5.778856077931502 0.1628053973752021 5.136899893017224 5.964790876785403 0.1236874120287676 5.26424831487514 5.910313621383374 0.2864928094039697 5.21240045113926 6.088478038406501 0.2948301273266369 5.152225171615831 2.062423382392223 0.4082464177677305 3.488180238073361 2.201900337091975 0.4563037260927421 3.646857713077233 2.074507464001671 0.5180749660917274 3.702373188316757 1.476757609881206 0.8614254027751909 6.003260390368651 1.615646498770094 0.8614254027751909 6.003260390368657 1.517939318460922 0.8786160099075444 6.231205193584886 1.656828207349811 0.8786160099075444 6.231205193584891 1.605808039453061 0.7400414126827353 6.083467378551322 1.254048665539697 0.126105061450952 5.288928654456013 1.159464754503466 0.3083071354695602 5.263349163566336 1.24046542204601 0.2870890343325788 5.457398110591596 0.4731994409820351 0.6840430292371718 6.554052172365071 2.082289755923729 0.1258797811029821 9.879718693918804 2.062752408712339 0.2910720547575036 9.810811049203084 6.39148736533068 0.1216934405095022 6.241663319136169 0.1743183328204768 0.577057363136059 1.827008926614314 0.1803829688836024 0.598210261967058 2.03806138803303 0.1785016839344908 0.4153985447587961 1.877315088186819 0.3588846528180933 0.4978952795778063 1.971174735611597 0.3528200167549677 0.4767423807468074 1.760122274192881 9.275151027154209 0.4941145243317362 8.640534699059941 4.058274345653219 0.6999990141452248 5.015157092148621 3.996702435454854 0.8430890991106 5.181685096724662 3.955966297511961 0.7124713871347886 5.238353613905034 9.374060880412159 0.1504308949922797 1.875847328396163 9.509279032473694 0.3227041588681402 1.810921774284885 9.567636288160065 0.1722732638758605 1.752928049667839 9.400306881590694 0.1367280939816838 1.652029458851815 9.535525033652231 0.3090013578575442 1.587103904740537 9.341949625904324 0.2871589889739635 1.710023183468861 2.291666666667092 0.7964364956090177 1.699720532018659 2.24793043258349 0.8797607796964505 1.51496367910248 2.178485988139039 0.8797607796964505 1.635244985183648 2.178485988139039 0.6761972753054684 1.634375636803415 5.524196487740563 0.8422269878670366 3.085766618434688 5.394924318731104 0.8177122449590577 3.011131296858339 5.80197426551837 0.8422269878670361 2.604641394109992 5.672702096508907 0.8177122449590606 2.530006072533648 3.556170234155423 0.1608897318311548 1.772403779192808 3.56556420263769 0.2831298945458878 1.845123296485754 0.345910435338034 0 7.353176286831487 0.2114648472423042 0.6668750880975179 7.294457125833016 0.3238864535319325 0.7906269203111892 7.304628504709268 0.1124216062896282 0.8762481677863287 7.371416993018222 0.1637795623125065 0.7170021122055386 7.488126251403502 0.2762011686021347 0.8407539444192098 7.498297630279754 0.3752444095548107 0.631380864730399 7.421337763094548 5.763888888889159 0 4.106216002022551 5.742848180677822 0.1881296115577477 3.985934695941371 5.676866088091219 0.1671573428936804 4.167109214658153 7.71179083536077 0.4212315447386695 9.821484678363237 7.838768971455593 0.570287438188354 9.852261171270666 0.8743818433149825 0.434911738186597 7.864525504020162 0.9759993824126156 0.5564325293910377 7.884881870968456 5.892655958507492 0.4710296227427214 7.769414129009602 5.908253638370788 0.5375016896458638 7.896758447967336 5.970639076599478 0.7008472835839468 7.741050276787425 3.864381390606965 0.8008672941360054 1.311450384255623 3.790370796328947 0.8343313910922748 1.476823305769758 1.17586777440728 0.8387986340723114 5.845784147895218 1.407313165436765 0.8614254027751909 5.882979084287475 6.784451528287454 0.822586279886655 8.596212306973795 6.606854083385626 0.8767836779932139 8.510969600696734 8.653196213747822 0.4634584592815073 1.778999988353725 8.680542808155741 0.5253432145012191 1.600419496359441 8.840579150902659 0.5587653527798534 1.749850019754833 7.067924553104378 0.2995630229575184 7.31960241868779 6.963683705200011 0.8399825791522522 6.701203174738469 6.848407885293803 0.6486631279170658 6.706181099099759 6.829168624538315 0.8086805487648137 6.637101354088502 6.948679507400506 0.8734512145926805 6.469426429109509 6.833403687494297 0.682131763357494 6.474404353470798 6.967918768155991 0.7134337937449327 6.538506174120766 8.725529471904867 0.5175421545463831 9.365103567520414 8.75013297951492 0.519565255482753 9.588006555677381 8.827278996540105 0.465889162876222 9.453090028437504 9.330381509875288 0.4228056634369726 2.410948529793854 9.236336383885121 0.1728056634369725 2.474529104809125 9.216756211484077 0.3301401584185132 2.564905300398127 7.865451476485237 0.7759355794586951 0.4330985143992679 7.723123418158185 0.8480378943844307 0.3853535640646869 2.703415021923933 0.8373305514955547 9.716504030727638 4.283894007455208 0.1300398762033937 5.271547763378031 8.580111725642018 0.7150153754049395 5.454392072794366 8.639859141502575 0.872274357994702 5.505997153634087 3.278473754279808 0.6293484175450166 9.440371296402521 3.209029309835368 0.8505238431152484 9.421182374909646 3.209029309835378 0.689515612662571 9.276844807612214 0.9672774986049191 0.3242472363547169 5.547425526231903 0.9717412247129606 0.1691837858491437 5.709344519914008 0.9845736856932537 0.126105061450952 5.531125162223814 1.106375981209992 0.2952888473000957 5.567328909849381 0.9801099595852121 0.2811685119565251 5.369206168541709 5.46430011890504 0.459802275046117 6.625748320923597 5.541162597989054 0.3116846926457623 6.658930854368716 2.522069028173555 0.1421903730267784 6.332585756237334 2.652438066677765 0.2676309888624086 6.422859907028741 2.152777777777849 0 7.955217796619825 2.204861111111181 0.2246656378600821 7.985288123140121 2.135416666666747 0.2246656378600821 7.865006817058942 1.994980553874771 0.1437170775667582 7.885946991542738 2.047063887208103 0.3683827154268403 7.916017318063034 2.064424998319205 0.1437170775667582 8.006228297623917 8.541666666666616 0 8.676905633107227 8.508986928104548 0.1991345921084381 8.549548956080107 8.669105542312003 0.1557898731510353 8.561362062758416 7.429945098994948 0.7206801827859284 2.364962573745329 7.500000000000396 0.8823765816281921 2.390137803036896 7.658903943458423 0.7281732814692952 2.322898673208353 3.194444444444765 0.4135802469135801 3.504809471616521 3.558777761593212 0.1366368084118411 0.8054833049473455 5.001193702413251 0.1608755968512061 8.702202426260472 4.791666666666698 0.1593158993741491 8.783683010252346 4.988336257061111 0.1228400476039078 8.870640411450026 4.918891812616666 0.282155946978057 8.857136482514253 5.128418848363218 0.2837156444551139 8.775655898522379 7.083163353783892 0.1220840525007846 9.879718693918829 6.944444444444438 0 9.759437387837654 6.944274464895006 0.1220840525007846 9.879718693918825 7.030064663382353 0.2629156448876242 9.768440805752327 7.030234642931784 0.1408315923868395 9.648159499671156 1.870086704014672 0.1222829745150533 2.981173776097934 1.732789220180825 0.2765647028741018 2.876022130569942 5.403884205948418 0.5150455544730942 4.798589241912254 5.391369021864375 0.5921948008306013 4.966189961587021 5.506827893904982 0.7115905822909211 4.806625268679001 0.6039971932208608 0.3996134438837076 0.7551614917851461 4.98512888143195 0.2893118505143537 0.4176160004094868 10 0.5117145852068534 5.15147943695864 10 0.3839089070555811 5.079839827174649 9.768094462988433 0.4925008629194464 5.089681835744616 5.792608755130175 0.4059214614522088 9.326513951564424 5.858284638910654 0.5968260945378053 9.387450428721772 1.180555555555602 0 8.43634302094444 8.221033799756984 0.6297439166768227 4.142002388718994 5.972222222222642 0.4086533016196631 1.5803085743179 6.611561955279525 0.3803110122434437 9.406872518334852 6.388888888888888 0.408270713401974 9.485767801171528 6.487204049006573 0.4689790409230802 9.576317536000966 0.355842957225044 0.5055371124444032 2.140331864802752 0.1754599883414416 0.423040377625393 2.046472217377974 0.3539616722759324 0.3227253952361414 1.979585564956541 8.889303181960919 0.5917355459705539 9.485927551207167 8.864815787062117 0.4258066085758292 9.318290028002252 8.966565311697352 0.3741536169056681 9.406276488919342 1.388888888888911 0.8415514497656397 9.166126532366441 1.319444444444464 0.8415514497656397 9.286407838447625 1.458333333333355 0.8415514497656397 9.286407838447619 9.843895655380383 0.5934544084371152 0.5629166595562519 9.693363116317208 0.5093931581934501 0.6950942952839052 9.655323083874269 0.5294060287007661 0.4668960195552097 9.29681842381213 0.1306395557065365 7.045693351007294 9.227553759415169 0.2876608575192896 7.075634609675609 9.096228016072541 0.1570213018127531 7.143867713967342 9.176454136783015 0.1291423004003754 7.260343444760807 9.307779880125644 0.2597818561069118 7.192110340469073 1.11255444851919 0.876410388075328 1.728557880450532 0.9824307559801746 0.7034425181650801 1.668907461629662 1.179324689233824 0.7184348125705355 1.759657511238081 3.260445062596646 0.1482584616481921 6.605669373426561 3.263888888889024 0 6.752404735808163 3.432980657351189 0.1438688848416896 6.665702759366163 4.69840691244759 0.842960023515579 6.170233192789525 2.895265649003858 0.5973061458587299 8.285248537375086 2.916666666666704 0.6287270419647217 8.5333847932643 4.193724279835383 0.8235596707818681 9.037749551350561 4.027777777777819 0.8422859408556082 9.154515015684794 3.173492228510433 0.857358246403778 6.217104059371767 3.290339827080364 0.6847960981224064 6.11525329442401 3.311292043014536 0.8274378517186284 6.289710052616885 3.128344894781482 0.8755357710735929 6.426374841875509 3.245192493351412 0.7029736227922214 6.324524076927752 3.10739267884731 0.732894017477371 6.251918083682633 4.466760300379574 0.8297478872860092 9.432854651810786 8.681249863534042 0.8376810329640543 3.627715416932676 8.542360974645153 0.8376810329640543 3.627715416932672 8.472222222222562 0.8714737917667386 3.413628304956876 8.54236097464516 0.7091548247307928 3.536534250272684 8.611111111111452 0.8714737917667386 3.413628304956881 0 0.4406721509472363 9.722346739399789 0 0.5588836755110698 9.725713729272865 0.1260188642427612 0.6126355806411978 9.694406433957294 1.150493479865005 0.8189712774642427 3.271562291541012 1.172304034075864 0.8746005293523749 3.081015321005905 5.311679494312773 0.5926978487410104 5.208320921920396 5.233788773148376 0.5720214763374494 5.030770489814882 7.106680800385143 0.1580942565673842 6.698831300727459 6.82477887481783 0.4068525898243801 9.83701242173095 6.829494933098409 0.4435361635803819 9.620064185554915 3.025218287041779 0.5898372518496962 8.39445203720279 6.225512318205869 0.4171568761695371 4.736603152297034 6.234798272732411 0.4211427152978693 4.916349538718912 6.065093092871545 0.5291433389102396 4.845548361624491 6.055807138345003 0.5251574997819074 4.665801975202614 9.138191923756011 0.5590838507739235 5.050909085412975 9.176879545565829 0.4702187026075227 5.187066019500044 10 0.5589060618487571 0.2741403617121038 8.818913451128406 0.8459355817430387 7.765209794913257 8.714163408759251 0.8497812603470241 7.936367345115325 4.583333333333398 0 7.594373878376411 4.583333333333404 0.1592344259968763 7.487088483527003 4.402947751695594 0.1386593261356702 7.623264553333952 8.172998091396106 0.1646070229096069 6.225036976465704 8.123394916792924 0.3851390628860914 6.276586107643347 8.005952380952492 0.2205320399764845 6.202547336580242 8.027871440664095 0.1396980012165794 6.332150395841071 7.978268266060912 0.3602300411930639 6.383699527018713 8.145313976504527 0.3043050241261863 6.406189166904175 8.127853159638054 0.8260131120375378 3.634425875789876 8.188744847954812 0.8762421371846979 3.425695856392417 8.194444444444446 0.1204819298434898 7.462170701029422 4.791666666666775 0.821483797734578 6.986495416312135 4.99453527850117 0.8405277703717584 6.940066048895028 8.741977420459399 0.8431545974109493 8.639534495199868 8.517860576184091 0.8520734757374064 8.588142907905709 8.757101965181736 0.8712926887836651 3.414226938176915 8.688351828715444 0.7089737217477194 3.537132883492719 4.836558264035677 0.8409665766189653 3.570821416135505 4.704963789012156 0.8528472658299207 3.50377975464956 4.864385852606469 0.8819717671692461 3.342875681236917 4.708238530507197 0.7348190329991668 3.341845964269865 4.839833005530719 0.7229383437882115 3.40888762575581 6.285943400105333 0.1715103786509538 8.478998467096764 6.174105397977557 0.3033585222632995 8.580536403297607 1.692531437389557 0.4390298661982653 9.493715483007886 1.484198104056227 0.3650498567436883 9.470034330168883 1.597222222222229 0.5250785576776906 9.575381160223637 1.737139065535136 0.6749243753898002 9.474536988887047 1.528805732201806 0.6009443659352232 9.450855836048042 1.624114947369133 0.5148956744557979 9.369190158832293 0.5156744817154608 0.2494634339492857 7.739853478528767 0.4612212467455282 0.4299381383641938 7.613532865793285 6.11111111111134 0.562536743092301 4.421238470330406 9.132417702626142 0.4855823358678963 3.575550386823406 9.027777777777914 0.1497548260231673 5.573977068654735 3.086811985867038 0.5919557264420252 0.1668838548461132 2.894347066640208 0.5839569426866541 0.1590410068335094 3.032404169447923 0.384440753989689 0.1471368986339726 2.871195680532576 0.4872724723516554 0.306177905467482 3.063660599759406 0.4952712561070265 0.3140207534800857 5.150667918888389 0.4533191992353655 4.994730600930687 5.308248167604388 0.4734925237285174 4.930150072702825 3.417348032070212 0.5546990138477734 8.443474296228583 3.383292086683924 0.5365342283778427 8.284273320762285 3.440262917214141 0.3390890785117523 8.333818425598103 2.56877031859364 0.8056452742314631 1.219433012802995 2.629256995699575 0.8755338977665642 1.025367558769402 4.83240931547208 0.5518396289217518 4.660136691529619 3.125000000000323 0.1635802469135801 3.464715702922792 3.125000000000314 0 3.625090777697689 3.263888888889211 0.1206657101241372 3.491741659929815 5.000000000000417 0.4950730547060828 1.660496111705315 2.083333333333567 0.41358024691358 4.948185144590523 2.222222222222452 0.5049269452939172 5.028372681977976 5.000000000000409 0.5864197530864201 1.820871186480211 5.168650793651199 0.5625367430922983 1.918241767593548 5.000000000000409 0.4086533016196627 1.82087118648021 5.803571428571852 0.5625367430922991 1.482937993204563 6.498015873015943 0.6489564961787277 7.657378372038112 6.52777777777785 0.5864197530864224 7.834936490538881 6.666666666666737 0.4950730547060868 7.754748953151436 6.666666666666729 0.5864197530864224 7.594373878376549 3.292957258873065 0.4270275448677392 8.018622702772097 3.301767676767771 0.5069210624766145 7.853160930854035 3.196456609924332 0.6336661975778541 7.994149841032174 3.366911155378894 0.6267451351012395 7.815550325941958 3.358100737484187 0.5468516174923641 7.98101209786002 4.332613168724268 0.8235596707818681 9.037749551350565 8.263888888889248 0.7978395061728407 3.063778015985886 8.194444444444814 0.8428497942386837 2.903402941210985 9.147831778061107 0.4935265297425369 6.444527250746446 3.775033677394455 0.4000996158455473 8.717083196850322 2.222222222222631 0.6328562486954374 1.980376912874724 2.291666666667067 0.8364197530864197 2.101527567336134 2.404403171086449 0.71626278724744 2.036439116162114 9.872183659743804 0.1220403300572577 5.97769363909471 9.872183659743804 0.1267193059305197 5.840191620728268 9.627978199759099 0.1428608144461211 5.886985417306109 4.794271239147234 0.7848240840400524 0.4267921376169039 4.653200069409124 0.8575942246960413 0.4054056448380815 4.161664516847496 0.1231062046848292 9.138409605309883 8.178348941662417 0.6044374847600603 1.488322767696926 9.185855359550665 0.1645189385784152 1.032010220301059 9.203075623459799 0.1552493390618661 1.232263993105809 8.886226051644011 0.5414395166556523 5.742267068797009 6.875000000000155 0 5.790154287159007 8.596706933587072 0.1227637030365637 8.866369877124416 8.536917170496213 0.272960460655234 8.893004890184189 8.724145809232459 0.278553576187599 8.750826306775608 8.66645879308758 0.8192494871247169 6.309133643052292 8.697413819008638 0.6825427089872653 6.140138957550677 6.790146775326633 0.2983043315850285 7.262239299578686 6.599873854686681 0.2659034190809938 7.197439101081138 7.867063492063501 0.5294679600235184 7.485547934779399 7.708333333333345 0.4007201646090564 7.393905034908017 7.797619047619046 0.4301881246325746 7.605829240860572 7.825678369291891 0.6346023545061654 7.672682120468798 7.666948210561735 0.5058545590917035 7.581039220597416 7.73639265500619 0.6051343944826473 7.460757914516243 0.583276689568671 0.4266921456722297 2.33268222280489 0.5868114190635991 0.4417826207216594 2.538015900238297 0.3810089296889901 0.4051117175380393 2.429781762466102 0.4979196503910528 0.3211745875871419 2.547871031710121 0.4943849208961246 0.3060841125377122 2.342537354276714 2.223678781180189 0.8376867802544372 6.37838138130812 2.00781263500562 0.8563901317667157 6.296607247938121 4.877159275474549 0.8353929770903928 2.237307576813754 4.857318005633276 0.6148609371139092 2.30603975171728 4.980158730159115 0.7794679600235164 2.370728585708426 4.84033383846316 0.8520820241135079 2.39092030802411 3.410576151302315 0.8268876237658783 5.55272332358078 3.324124275269825 0.6743735046205372 5.512419094070445 3.539015645837042 0.7036161831503358 5.62752174614823 8.837257086276551 0.1428971447867098 4.897731174505237 5.636474529016782 0.5907801842675264 6.184467151679595 1.94339963596237 0.1872599651322792 0.3908574830425707 1.868942264413167 0 0.5292270642639495 1.803574210607972 0.1365741920238815 0.3516216618613189 4.698489973619078 0.4274138299771255 1.698566497068032 4.837378862507963 0.3360671315967881 1.778754034455486 4.873078456451468 0.5003472058734059 1.757126985246859 4.710457318959014 0.5191077342308685 1.87538490799703 1.527777777777818 0.4135802469135788 8.797186939187984 1.688274584715324 0.3407540190362232 8.677286741219357 1.54938569582644 0.4271737721226444 8.597099203831899 1.557459447478419 0.5897506840396576 8.635880288097416 1.717956254415925 0.5169244561623019 8.515980090128789 1.696348336367304 0.5033309309532363 8.716067825484874 7.951388888889257 0.8428497942386828 3.083824900332719 7.812500000000361 0.6643335919732567 3.090296831991139 7.777777777778137 0.8214837977345739 3.030156178950552 7.924347518677767 0.8787879577460123 2.873548851131174 7.78545862978887 0.7002717554805862 2.880020782789594 7.95906974089999 0.721637751984695 2.933689504171761 6.80979061851164 0.8734512145926805 6.228863816947156 9.875154111813712 0.8772776834109657 1.517098563723891 9.718932726301531 0.8474125417830987 1.58110660041642 9.634032336970796 0.8340628810678065 1.412431416815462 0.129665152354148 0.1234497409204609 3.211209691258385 6.28396109586985 0.5000000000000062 3.324826948999546 6.388888888889227 0.4999999999999999 3.143086680363957 9.840664840429469 0.4086646548614775 4.96959617189478 0.2295622780325892 0.330974179161083 9.868130522481547 0.133454162745723 0.3302402915806075 9.768655417321602 0.2594730269884842 0.5022037212745691 9.740715111879108 4.166666666667043 0 2.542559022967198 8.059391664057895 0 0.6246204678707042 4.791666666666723 0 7.955217796619935 4.652777777777834 0 7.955217796619932 4.743597221986064 0.1706782408588453 8.094557274671065 8.910168192580368 0.5236761589825436 8.766343500288727 8.98977478429981 0.7108078256864481 8.805351226651782 9.486741220378569 0.75 2.34540381776139 9.591574012365561 0.8351768836820392 2.245317012790727 3.244047619047735 0.7794679600235154 7.302262135036378 3.193764852997847 0.8526594853365304 7.171185693021848 3.243368027601021 0.6321274453600457 7.119636561844206 5.053230494064232 0.8780025834037448 8.988294654040132 8.232865904675437 0.3432070623435891 8.004339770064849 6.936471335925987 0.5845456448281394 3.124312833024406 0.6261647667290835 0.2952896535935957 9.143843573975431 0.5491517915460514 0.1421309489160388 9.155623031829498 0.7714574196275018 0.1531587046775569 9.266532705658573 0.7320640076920637 0.3251787511802852 9.337523079706706 0.6550510325090317 0.1720200465027283 9.349302537560771 0.5097583796106134 0.3141509954187671 9.226613405877631 5.858284638910671 0.6881727929181466 9.227075353946844 8.522687401303621 0.5865677807499143 2.268661854323946 3.149552847076021 0.1590334233810337 4.412790558703612 3.263888888889163 0 4.346778614184728 3.312935286937031 0.1212225840006361 4.535470640075351 0.3983070649517674 0.1557899202339851 5.311096174900436 0.5790979198481634 0 5.351043203237194 0.5040737005234283 0.154324500512667 5.18865571240217 8.533197519771083 0.8729451841750042 4.99379311268213 8.525815513062824 0.7205750024815929 4.911031173910251 8.424155992878669 0.7311480034783295 5.126349625850551 8.533337239890633 0.4349406866535543 1.587103487006846 3.288437648969232 0.5108312473755066 0.5517620289714615 3.453114657060809 0.4433288273728087 0.4726537515184956 10 0.7433076774136763 4.166622724117959 9.879718693918829 0.8697912773991351 4.02773383522907 9.807902050697908 0.6810628851280479 4.16488238426285 8.735857312976332 0.6454555439291649 7.727735597894938 8.74946900668397 0.8459355817430387 7.644928488832079 9.027133786178837 0.8459355817430387 7.644978286859777 9.712087803988116 0.1865273752834793 7.94141655405242 9.834398718768018 0.3082408453778458 7.938068751080184 9.877689085220098 0.1217134700943665 7.916420039862528 9.735015313682577 0.2292350695137282 7.798987624727577 9.85732622846248 0.3509485396080947 7.795639821755341 9.691724947230497 0.4157624447972075 7.820636335945233 4.930555555555594 0 8.676905633106959 4.884157946587568 0.8456049661658213 9.100061063266683 0.09392855693056865 0.1243189231666929 8.75000344949224 0.2258731237613609 0 8.630430963459663 0.2957157860765859 0.2171670404568732 8.750035173004573 1.462127777824843 0.5903952087044751 3.477109946927387 1.358826813198331 0.5689712774642427 3.311656060234759 1.590636049014233 0.6252887380678165 3.383627969328905 6.527777777777775 0 9.518874775675286 6.69060604420952 0.1623438970266377 9.596449809568599 6.681006399723966 0.1303110122434429 9.446966287028584 5.050626333686926 0.3730027409798239 1.947379329939261 2.98611111111134 0 5.068466450671743 3.125000000000228 0 5.068466450671751 3.036969490413401 0.1570399764844209 5.217040061528647 3.826084359864786 0.1576071073199354 8.49790815206963 3.83405454519572 0.3077067231654803 8.588031096242911 0.7913239838739079 0.1498284778621227 1.034127060736052 0.7218795394294703 0.1498284778621227 0.9138457546548763 3.953893256306785 0.8527350872634357 9.423844600827586 2.734546830815851 0.4468233398812243 6.399880617186579 2.699813482948825 0.3754406158356302 6.281366124887396 0.7552580904861386 0.5021669730086287 4.814435268724458 0.9417734847636871 0.4748756895776686 4.66950162123052 0.9693920735177511 0.5092165785698908 4.82498465092517 0.7866979417002263 0.6792618082877198 4.864848071608893 6.00846652365797 0.5091718814970533 5.744148624785741 0.9811611537195319 0.4065983495634081 5.690090870363072 2.731903283059823 0.1771433318480924 2.942035546376775 2.569444444444797 0 2.903402941210627 2.578108799374739 0.1260677698118368 3.055428866665646 9.441807272832969 0.1331346096232646 8.238266491787297 5.92246054588724 0.1396529976604499 2.68575236968253 5.800694376733012 0.3097515788286843 2.695638176530593 6.028850099316271 0.292019745056439 2.666988869606303 3.384622761538783 0.4557444197176398 3.197810794265187 3.26388888888923 0.5478395061728389 3.143965553373006 3.406096840136514 0.6686250372981533 3.291572496782702 4.271178358746981 0.6904966261224756 5.115357442941188 4.441142589959012 0.8474075270118756 5.122420102969501 6.932146106705672 0.4102242778540469 7.72549365421448 6.793257217816803 0.4966440309404692 7.645306116827013 6.913326872077818 0.6050620439320987 7.732407067425168 6.90102853433902 0.5152863217861456 7.542776693713275 5.510826897525387 0.6138598898564063 8.203628873163961 5.649715786414279 0.5513231467641073 8.089075248324754 5.646875698665945 0.4610036806582721 8.237292221147433 5.552715467807274 0.4096805338941648 8.06334100074891 5.413826578918382 0.4722172769864637 8.177894625588117 9.323526863427649 0.3266978051927509 7.57701224582824 9.315930018770457 0.1291423004003754 7.500567156299667 9.363636499791568 0.2837606976873237 7.445377573732715 2.908469862675648 0.514578380850184 6.168034538477345 3.027745053771038 0.4140281034800952 6.21832172902219 2.841085106768007 0.2880373362418299 6.219692305753583 8.451266819339594 0.610282150909911 8.241666121106446 1.834057152236112 0.8097748528605604 7.79414144900592 1.72218168302718 0.84967681610626 7.901632063160999 1.73611111111112 0.4492939253491908 9.63915608175634 9.427226195469679 0.7039576837225231 9.829640904837575 9.417033549848377 0.8301283901798271 9.71505577580956 9.583695484515701 0.873829293542696 9.885414870971983 9.648697509822732 0.7172978935483931 9.851760026759395 9.63850486420143 0.8434686000056971 9.737174897731379 0.4980979056047055 0.5400626967384178 9.787471487853832 6.388888888889369 0.6279600372310911 0.6365150912240886 1.309942458977257 0.4079269847451593 8.21993308058055 5.416666666666722 0.582025707560297 7.828086851446965 0.8588501503977821 0.1752606108002105 0.3821690035262011 3.179437189948861 0.6714284208722763 6.622927498924897 3.338704907402878 0.843253217452012 6.5732405257908 3.408352523739788 0.7169658948360333 6.634329001658601 1.736111111111146 0.1635802469135788 8.837280707881719 0.9722222222222537 0.1635802469135819 8.957562013962853 0.9722222222222527 0 9.037749551350302 0.8409018640719512 0.1531587046775569 9.146251399577404 0.9797907529608364 0.3167389515911388 9.066063862189957 3.44641041833426 0.1557174908566958 7.212617365759898 3.307521529445367 0.1557174908566958 7.212617365759891 3.333333333333454 0 7.353811266214028 3.406724367830826 0.1368305926457631 7.43324872140844 3.267835478941933 0.1368305926457631 7.433248721408432 3.380912563942739 0.2925480835024589 7.292054820954302 7.547587444590675 0.8235596707818934 5.587449109244748 7.564948555701779 0.598894032921812 5.677660088805629 7.391098324494689 0.8466207240308579 5.625044243324737 7.408459435605794 0.6219550861707765 5.715255222885618 0.8383110134354088 0.1688853773266334 0.7926596495255473 0.859376062637583 0.4188853773266333 0.8796643455034018 1.850220354360243 0.3403242279215211 2.276209177191766 0.780346308516404 0.3005866882166529 9.101025628490877 0.703333333333372 0.147427983539096 9.112805086344942 0.5580406804349537 0.2895589324551348 8.990115954661803 4.797090357301452 0.8405010268308168 4.453523061183541 5.010071780375474 0.8382848976003462 4.392687327989398 4.889598857955745 0.8527050368133033 4.575232240178209 9.231907856994763 0 5.787727537263462 9.162463412550316 0.1497548260231673 5.812112930921439 9.404369063676654 0.1428608144461211 5.848043933355968 9.269683428904251 0.2926156404692885 5.754574770828398 6.81122308480744 0.1549183344252272 8.479708939177662 6.678920369126866 0.2796295963574034 8.558996280358716 9.515636743570964 0.1538699547251179 4.420048272389081 0.536924492860005 0.4999999999999999 6.578369195379043 5.26410136796247 0.1312977228979161 4.872051487012801 5.125212479073577 0.2860869099583254 4.958582002660831 7.964556017392072 0.4146588041813157 8.590596235733427 8.108122765187925 0.3790241697953418 8.58697401965782 8.064421029179822 0.3772208837726727 8.810400443993608 0.983518933578011 0 2.307789617408599 2.766405128215404 0.8314100031722813 5.80239174425957 4.097222222222603 0 2.422277716886024 4.233387910001487 0.152737350616468 2.343662420392504 4.127274298314758 0.1398710857115187 2.234774102471198 5.963498541538431 0.8419983392435102 3.957191656401886 5.234833861507479 0.6678015454250943 8.662842201373614 5.209378421692662 0.8457800690876467 8.540163087455714 5.053230494064232 0.6280025834037515 8.908107116652641 9.636814054933954 0.4810657149511846 3.174538656199164 9.407037487688161 0.3934784158815316 3.125546757177052 9.49100300866035 0.2995479270469743 3.239351707754401 3.550121071630466 0.3617488970546775 8.420646389081316 4.387423886303289 0.6265432098765438 7.24542625795098 4.248534997414402 0.7129629629629665 7.325613795338425 4.215588584272998 0.7047687211314233 7.122720510042038 2.058277601084817 0.4941883424462322 8.306055824579577 2.071006613593547 0.5115491222626332 8.12736565997287 1.410447518911214 0.3224453671287482 7.400062709239712 1.450070069845061 0.164387693087501 7.457374156179525 1.540097906491062 0.309957055213686 7.601690618074285 7.666400279913248 0.3229375985925231 3.136197982095528 7.63888888888924 0.1485750040772056 3.177371373410212 7.455290150219545 0.2751594610468399 3.22337221250026 9.485015748159999 0.5474619763722568 7.356074610019959 4.224679026607427 0.3849020745204154 3.862585902425307 1.5277777777778 0.566762292599163 9.095811067208622 1.667694621090699 0.6253950918236664 9.274068145418342 3.330988920155025 0.4497596446998727 9.60255487276017 3.398810093677653 0.4273254754532161 9.823928563429716 3.262265617967012 0.5352149796128797 9.778626309330456 3.192938795857798 0.4059692725603715 9.571813205953891 3.260759969380427 0.3835351033137148 9.793186896623435 3.329483271568439 0.2980797684007078 9.617115460053153 3.450922041584916 0.8323924386431006 8.241253777669415 3.484977986971205 0.8505572241130314 8.400454753135712 3.26682167778446 0.3109974298649181 7.208094722535391 3.153744592783654 0.1552799390082223 7.349288622989521 1.631944444444665 0.592849794238683 5.168700872405985 2.580410704760423 0.3155835939030284 9.522875342416009 2.649855149204827 0.122969211052594 9.592730939717168 2.789401619314853 0.2958247082878765 9.539920064453424 5.788840194466228 0.8468260945378056 9.186981585253122 5.658901716534817 0.8426978487410108 9.097416485211557 5.82255410787041 0.8769948285953204 8.963781274026118 5.77806096900327 0.7238209231331258 9.113013307928755 8.998755259889442 0.7959746479156945 9.742125783386802 5.927493564192059 0.5513231467641065 8.329637860487129 6.047181216752534 0.5834120487808794 8.115557082440203 9.498185164071034 0.6893032575869613 6.10090050921544 6.00846652365796 0.8455916345834752 5.904523699560633 2.936616043782335 0.7848637511930321 7.827021760389361 3.065979620685091 0.6270877999275737 7.752333664441231 2.838824132897719 0.6288940557617235 7.770561574315552 5.085472597818336 0.6555853783421914 7.667711776672061 5.138888888888948 0.8320257075602971 7.667711776672059 4.946583708929447 0.8235596707818942 7.594373878376421 5.057546427830593 0.8751543841386175 7.77519739677954 4.987545056292151 0.5777127458524889 5.46052070027036 5.005311179987934 0.4007319530742408 5.51669625353771 4.853967347390996 0.4784446989267297 5.387531510117797 4.871856411496851 0.4891643433450358 5.59374640005066 2.430555555555984 0.8413466983803375 1.620402343011452 2.361111111111533 0.6377831939893552 1.739814300712387 2.317374877027932 0.721107478076788 1.555057447796208 6.422849984758716 0.5000000000000062 3.565389561161898 5.303233011614887 0.1639284968873369 3.690474299920567 5.138888888889193 0 3.745372083778975 5.267245447228456 0.1495331999842562 3.84750274226699 2.299523637229533 0.1507646650342269 3.077109211002901 2.377632436603928 0.2768324348460637 3.10885383037675 2.84722222222263 0 1.941152492561268 2.882764721568076 0.1573021089322821 1.760256946221615 2.75466085430717 0.1820219911664103 1.834217748468921 2.708333333333757 0 1.700589880398916 1.97407876906769 0.7920759517337193 2.301385383797002 7.442810457516394 0.8008654078915507 6.787781590538179 7.581699346405282 0.8008654078915507 6.787781590538186 7.437620411327257 0.8261560938721219 6.972635812747715 7.576509300216143 0.8261560938721219 6.972635812747722 7.51931975773249 0.6270215017636727 6.887731361396303 1.141537651499641 0.4769838855227748 8.004572160212918 1.187112996536902 0.6966852251507236 7.956617048190108 1.088324670960791 0.6200259811851755 8.086749966007444 1.019962885773154 0.5203506227424022 7.946174419617202 4.873829707748358 0.850372633571695 6.811120752529762 5.007253875138291 0.6909004039434534 6.878500759535387 7.084482462030011 0.5906779245442386 9.844473876424061 7.200884823487593 0.8325634243018246 1.330859428844779 2.499325874149188 0.8056452742314631 1.339714318884162 2.260876103887768 0.1396651540957629 7.88263965276877 2.330320548332202 0.1396651540957629 8.00292095884995 4.559518023558698 0.842960023515579 6.170233192789515 4.62896246800314 0.842960023515579 6.290514498870692 4.345624278911734 0.8568784984001667 6.253206233991207 4.415068723356175 0.8568784984001667 6.373487540072384 4.460697858025824 0.6998385219157457 6.272441221378374 2.162753657402761 0.1649698794141743 8.142740355098667 4.558300510475464 0.8476325987452683 8.44987852452233 4.621850645976824 0.6476551823044333 8.486569212361069 8.677671524977947 0.65889118833834 2.377337168132134 8.822202597538048 0.5034356732141083 2.413099333981648 8.718898545707654 0.5594019642554067 2.334261523564299 8.574367473147554 0.7148574793796384 2.298499357714785 9.213098795431632 0.3277779983565483 2.908565177363656 9.260228137811312 0.6123358918101772 2.906304097374055 9.113679537142048 0.5327793951851849 2.989024849897441 9.166975952464217 0.519670386791718 2.803771086679375 2.152777777777874 0.8650876162095195 7.585183863911205 2.158510500826146 0.7381881171155422 7.422894052538707 5.058092154048419 0.4270440581715098 2.41572346896979 4.935796959659017 0.4208809076144194 2.316045220766964 3.160542727910061 0.5926978487410095 2.081006963809806 3.113056712731739 0.6272117198645681 1.948047952680858 1.805525383966935 0.8744202423850347 6.708643697666962 5.42581833349505 0.8738784180905758 4.137452111463162 5.576350537019195 0.7134939582639094 4.217399792510735 5.37268580074036 0.7244780760387863 4.101473142276516 4.814676549995619 0.454267744895692 2.411674806249907 5.641681076184419 0.6775573781738315 8.333485813204987 5.544680757577414 0.535914765303889 8.307751565629143 1.893150290685678 0.3734567901234565 4.832715090752593 1.581457764647774 0.8568219863334681 2.897548444367314 1.551854712909723 0.6694175638790447 2.880457114477515 1.720346653536658 0.6981686847138056 2.977735981754773 6.527850218610871 0.3324629505483176 0.481385346148904 6.666666666667027 0.1542531538447432 0.5130782865285309 6.757775795051605 0.3140055622351977 0.4582106451890848 0.1512255181223343 0.5904609346876126 4.307666024086195 0.3725602940178356 0.6540087461637449 4.293131530849864 0.3024534020304321 0.5002625651779768 4.446597041507041 6.034490436909719 0.6260786770727598 5.303325432870055 6.222681753428975 0.7042002939126533 5.39062434037597 6.034490436909714 0.7174253754530956 5.463700507644946 5.347222222222269 0.562536743092299 8.310334033621503 5.4780764008813 0.6262342314097242 8.440190973662528 7.249932064784975 0.8545569066547971 5.776726801197444 7.180487620340522 0.8545569066547971 5.897008107278612 7.052632630149249 0.8544927767354118 5.657158150250393 6.983188185704797 0.8544927767354118 5.77743945633156 7.080342472711841 0.7090496833902089 5.764011970369981 8.402754345582654 0.8426984779831679 4.468027965579509 8.547689290470768 0.8734527738581931 4.506362798975113 9.360920409548005 0.8423093028520157 2.299472627043681 6.658404923100483 0.8523397404155373 4.391642302750689 6.700241575518856 0.6780230511392986 4.470726364455247 6.658189801042512 0.728137940741109 4.236616914976659 6.319444444444746 0 3.625090777697868 3.884597900131292 0.7892883477170575 0.519840798518068 4.01262787057591 0.6236964865817485 0.6311300567844246 8.973989724488408 0.584086744583029 7.043666776990737 0.5653486318374014 0.7587362492345334 1.413570277568812 0.535313674234262 0.7587362492345334 1.565061673614594 0.6600980135668685 0.7587362492345334 1.527203231680649 0.1629002038208368 0.2901324815579116 6.734789408004945 0 0.3862565155364582 6.878064830497465 0.2143902066994285 0.2812117531185414 6.931816841379881 7.510074459817901 0.8165745965185978 0.8756226713511754 9.508345539521503 0 7.236409199246928 3.495167531149449 0.3305172757288717 7.215174721303196 3.560789503301583 0.3548520829651439 7.000356237381358 3.471061629163431 0.4953802289776245 7.045885287156597 5.547520845325753 0.8762342314097242 8.239722130193915 5.416666666666721 0.812536743092299 8.109865190152888 5.614473024927029 0.87104445477113 8.047737503561873 5.606438314697163 0.7472786861808542 8.211960531054658 5.580271341969832 0.5513231467641073 8.369731629180819 7.494756252159389 0.556551064770793 8.194512103473246 3.402777777777898 0 7.233529960132858 3.263888888889005 0 7.23352996013285 3.376965973889812 0.1557174908566958 7.09233605967872 5.556990680681105 0.8748896042990864 0.1051048806142585 5.69494300975285 0.8748896042990864 0.1056148420251116 5.656199091001468 0.8013813322605746 0.2964241210520965 5.654007171307411 0.6762709365596611 0.1908092790269849 5.518246761929722 0.8013813322605746 0.2959141596412434 3.813629416156729 0.4853198531724223 8.448930946037173 9.875154111813712 0.874428163502075 1.377203236719237 7.516971397574032 0.4147790771698519 0.7263011909597679 7.230873789496005 0.1475158804337099 2.94849169459886 7.30031823394045 0.2960908845109156 2.981897514635794 7.430555555555906 0.1485750040772056 3.057090067329026 7.341767493396871 0.1357407490985456 2.846566001682167 7.411211937841314 0.2843157531757513 2.879971821719101 9.483950458213064 0 1.717128951956767 9.619168610274599 0.1722732638758605 1.652203397845488 9.45183920370523 0.1367280939816838 1.551304807029464 1.805555555555882 0.8413466983803375 3.103871784679216 1.720346653536662 0.8568219863334681 2.897548444367324 1.591447675364272 0.6796480215456886 8.294925529728875 1.545114227960222 0.8744432792959358 8.157413550986458 1.504998470261074 0.7011025232614838 8.127180166511955 1.986701444289334 0.1459167738478483 8.531506048656562 1.869420473449066 0.3230905459704927 8.491793388075365 1.987044814681691 0.2696041858766214 8.683101899866021 9.087412307448787 0.6503776451908685 6.105826320993604 9.23009593204284 0.7039658982891452 6.179173527303227 9.16513572788195 0.6364672864095812 5.968195900213138 9.059864702159109 0.7083209916164773 6.047557276542265 0.7831378161084357 0.4974615237009685 2.178886295471651 0.8604700162025798 0.371910091582741 2.081572975014188 6.805555555555606 0.4086533016196644 7.834936490538905 6.793257217816808 0.3188775794737113 7.645306116827011 3.432504493325879 0.8540492391389646 7.73987942384719 3.334379594857801 0.8746418920651868 7.526561923873503 8.121459444090114 0.5791948159789031 9.821702859201219 7.994923680165476 0.4317200677580537 9.853942753214366 3.155073374857206 0.1723168683486633 4.626574160842347 3.273564217349526 0.2935394523492994 4.694984880651802 6.666666666667009 0.8492798353909468 3.103871784679483 6.597222222222548 0.8364197530864202 3.304340628148096 6.691448040129945 0.7022414666186589 3.358741929481552 6.760892484574391 0.8658217135322387 3.318648160787836 6.736111111111457 0.5992798353909468 3.063778015985764 1.014843482748263 0.5069574780994588 7.491205447479016 3.566317877495963 0.6840647819768477 7.219569231813801 3.541666666666791 0.8444020438559191 7.386301310417101 2.674612123454828 0.4402609342681604 0.1940100568471901 2.893356461581965 0.3858930355913023 0.1471368986339726 1.706349206349425 0.4374632569077009 5.246024569172458 2.008123235205005 0.1479432720090957 5.602477818611099 1.956039901871671 0.3854689921737052 5.592454376437665 1.871181582633164 0.2913716506816666 5.496184030292359 5.338616329771996 0.6430420603752974 4.421997537249396 5.328544549396786 0.5547571627749512 4.57655766691345 5.162813542849554 0.4091497554394324 4.480872825670321 5.352469203357191 0.4639069182143837 4.42999549754286 5.172885323224763 0.4974346530397786 4.326312696006267 5.287849558153264 0.5882848976003461 4.232312253214527 5.467433438285692 0.5547571627749512 4.33599505475112 8.726658680958298 0.5252120903308024 2.55160287860373 8.819369286013611 0 7.474131446507963 3.352036698577169 0.6825713472032572 8.557395979163866 3.473374636655076 0.4849497148550789 8.568042823346101 6.537409638941195 0.6893204210855191 8.596884819326135 4.011121307101258 0.3980944374915812 5.015895242478548 3.938677195132242 0.4264403292181068 4.867997607203174 3.793709540416697 0.3782066539295098 5.053187737609734 0.5942909268371792 0.6148992544296583 2.39956827779785 8.409030969631988 0.4223907979893541 3.225552024429618 4.163930938497621 0.1245718344232898 0.7274376566671366 4.014632617197304 0.2801473292187963 0.6486979976628927 5.624999999999998 0.5814410328451143 9.822003645007483 5.49737655080887 0.4301714707845801 9.849621820555383 5.899157307202569 0.3766693803779297 1.455888881346796 5.580506861132909 0.8468260945378056 9.307262891334304 5.294900497512779 0.3336788280818141 3.11375759152746 5.294900497512783 0.1700985811682341 3.033570054140012 5.138888888889229 0.1635802469135801 3.103871784679388 5.14540433586099 0.2870370370370374 2.964404299580083 5.145404335860993 0.1234567901234574 2.884216762192635 5.301415944484543 0.2935553712916915 2.894102569040707 4.942973505480518 0.6192397560309805 3.395315803321632 6.319444444444819 0.4650205761316908 2.743027866435923 8.266922497988896 0.5364690994515529 7.770726029021841 8.109453418710268 0.6249845528521356 7.697749407422526 3.0295151049885 0.8042684447948795 1.59534303546272 3.098959549432936 0.8042684447948795 1.715624341543895 2.86405256024428 0.8297931293084249 1.690872880211582 2.933497004688718 0.8297931293084249 1.811154186292758 2.976900998565684 0.6340615741033043 1.705907341356545 3.124999999999969 0.519387186592112 9.778626309330456 3.123494351413384 0.3677073102929472 9.793186896623435 4.096445696130323 0.8272006584194671 3.133959059977799 4.245409530080837 0.8736717053006383 3.296517720127087 8.228501037757894 0.8455165928286175 7.525918970163707 8.247618840371819 0.8612722939097271 7.292318121542849 6.89766242519074 0.5072187904826404 9.256024537852605 6.682837575690204 0.4960948732651264 9.18416523190195 6.766621753191936 0.46282563859499 9.312725586723868 0.9121043242390882 0 5.790966006467764 5.405749171378505 0.7498833125274322 0.2464671615101361 5.505366719375495 0.6748160266491111 0.4372764405371211 5.280497480897987 0.7152819439529341 0.4102936647612492 1.183855424593182 0.7103812729982664 9.835097490219283 1.38592644003086 0.7419254661489419 9.801343657796702 6.960098343413151 0.6300177125234436 2.61008197884377 6.958777406564092 0.8450382886551295 2.616945768052242 7.112640952200007 0.695223777645499 2.538170004908238 4.87910555497488 0.5897520575055561 1.109572447001588 4.635191704287143 0.582588709757755 1.128246918068698 4.764981003921164 0.4987463159311397 1.204057681504471 2.336728681872516 0.178497464369122 6.355742723990382 2.291666666666821 0 6.51184212364576 2.452624583729104 0.1421903730267784 6.4528670623185 1.180555555555594 0 8.676905633106788 5.20851123049334 0.5959191522845045 6.586944937993426 4.990858743377434 0.5473347559425463 6.579112509404677 5.012718596637253 0.600372633571695 6.73093321514233 3.739452757943989 0.1524152980208935 3.171075865896271 3.600563869055101 0.1524152980208935 3.171075865896263 3.750000000000334 0 3.264246859454198 3.887486448135636 0.1234027422288084 3.356823009286416 3.748597559246749 0.1234027422288084 3.356823009286408 3.738050317190403 0.2758180402497019 3.263652015728481 3.216788598620622 0.5950990336827847 4.613006085357742 3.818542596226689 0.8404725990722763 0.8484936375714049 3.946574329132773 0.6748807379369675 0.7451189327754197 4.016920621795441 0.8344081388646911 0.7552604143369308 3.907551876821108 0.8698639018089692 0.9548307837526715 4.035583609727191 0.7042720406736602 0.8514560789566863 3.83720558415844 0.7103365008812457 0.9446893021911604 7.42916325267414 0.577768866304917 4.661323789055205 5.788604675303173 0.8013231467641073 8.16926278571222 6.666666666666711 0.4543266508098507 8.235874177476138 7.083333333333379 0.8364197530864214 8.155686640088726 7.95842699621962 0.3896980012165794 6.612806776697134 7.790382465924503 0.4096077095474902 6.635061761034615 7.939792095606913 0.3975910034021743 6.822836514044202 0.2105848676807849 0.5447096948406505 0.882856027004964 0 0.3798256113690139 0.8990394690503862 0.1691196977105238 0.422456882005284 0.7663265614601379 5.609129763856744 0.7535896390724226 5.730579837538524 5.605855022361703 0.8716178719031766 5.892513627918216 5.956624542359003 0.3856884269240251 7.627404634193658 6.095377399887085 0.4092600403166622 7.594687323238101 6.686374715589464 0.4005821306049255 8.887395165836864 6.666666666666697 0.4135802469135791 9.037749551350602 6.895882683121265 0.3894385256932981 8.971328113418965 1.115016099410557 0.5756465134414936 9.835097490219283 0.980960254598062 0.4647908482411067 9.777815441490528 1.117204432286063 0.3896525991625999 9.836558440992842 0.5222671537844341 0.3603292782686902 2.690767067648067 9.554666536422113 0.4222732638758605 1.682747819207493 9.361091128674207 0.4004308949922797 1.805667097935818 9.387337129852742 0.3867280939816837 1.58184922839147 7.227040843996594 0.6003764202021704 7.069736072264079 7.072743174878722 0.527341219575286 7.195902299512478 5.811146345825853 0.3010895291395309 7.684706854727663 5.887180097914549 0.1356884269240251 7.66749840288737 5.757299581244716 0.1654011022155057 7.611582330216777 5.971934738785807 0.118028232830759 7.510570973861139 6.025781503366943 0.2537166597547841 7.583695498372025 5.313613326956424 0.3882560445153594 5.267700806139827 9.072215484277208 0.6911880838964534 7.030299876394377 9.123161666771274 0.5113771927512543 6.876181743070081 0.7907394668691586 0.3049455228080434 4.742819940315807 0.7945607293291823 0.4476994690949124 4.637749713505592 0.6080453350516338 0.4749907525258725 4.78268336099953 6.881491516167234 0.4247041641310932 9.109608857301257 6.821726464579097 0.5825146263515473 9.103977694514516 6.355344537951543 0.5223866989829056 6.043127414653107 7.075502588670208 0.3200205296545749 8.140178874106942 7.013888888888943 0.1586533016196638 8.275967946169876 2.243833368855534 0.1676179090052663 3.81862871581084 2.370614744068868 0.1550765620212302 3.695227224510704 2.230434289175089 0.1274477520337056 3.583485118520306 2.378826811021436 0.2825243140549358 3.533340259252186 2.252045435808101 0.2950656610389719 3.656741750552322 6.378867914913609 0.5846874967502583 1.998603097322373 1.972946041125008 0.6748624690700799 7.664670128459655 1.932611500618747 0.4763598899477945 7.693554215499754 6.736111111111361 0 3.865653389860243 2.778662638136257 0.5866314123343502 1.340405850383757 2.933198378550744 0.6750629130934001 1.237670379715607 7.865703393513946 0.4403250684151318 7.791674032726375 6.150793650793846 0.4374632569076999 5.246024569172718 1.388888888889272 0.8534427291193223 2.449392867380294 1.250000000000386 0.8534427291193223 2.449392867380284 1.336880274399249 0.6287909280820763 2.479420054956283 8.727148585843844 0.4394340926552122 5.790862609160769 3.906250000000336 0.1957304526748959 3.234176532933915 3.756813869055103 0.3481457506957895 3.14100553937598 3.90484755924675 0.3191331949037043 3.326752682766124 9.525625098535052 0.4723232301439436 4.89600645404405 2.755299358774249 0.5854092242882674 0.1590410068335094 2.65245134240544 0.5416403710285135 0.3530510636806995 4.596070043964536 0.8732334723832579 6.464394811640723 4.641699178634186 0.7161934958988369 6.363348492946714 4.427805433987221 0.7301119707834246 6.446321534148407 9.315628865622021 0.4718966133032644 7.983256856704458 9.638466656961882 0.8473089296858853 5.62145082675762 1.585615080364811 0.8528776547811522 3.878773081644311 1.44251218016265 0.7351505610508685 3.801018504822943 8.541644923179089 0 5.068479004280684 8.482742291553233 0.1607883014175585 5.117473318527948 8.539361170365176 0.1591921422825263 4.901794619821911 0.9018246872449084 0.1625740232022004 1.20438205164687 0.7209264488961317 0.3124025010643231 1.139325762389964 0.853445292002645 0.4125740232022004 1.171105441543549 8.835362375332037 0.586173387551937 5.075093581948885 9.309141214768218 0 9.037172952198652 9.23670872097977 0 9.157934757573294 5.698431167017462 0.6311583358612043 7.115550389402453 9.846958352912672 0.6009630353121294 4.529481198862828 9.62621386443946 0.5781524796770654 4.634782919694131 9.654860403610581 0.6671205174035406 4.455776972496336 5.103346160979441 0.8426978487410104 5.248414690614102 5.021446772826936 0.6704105945934993 5.319718790662812 4.131123938757046 0.8426978487410093 8.3757286487245 4.166897084210815 0.673305360868192 8.261849411169695 3.055555555555957 0 2.061433798642452 3.166030260620666 0.154161847944623 2.146986389390599 3.215971944999846 0.1419959775957443 1.965544771879995 4.536204744824007 0.8297478872860092 9.312573345729614 4.67582461325425 0.8456049661658213 9.220342369347881 0.755284512498517 0.6830676211281241 1.276660765780948 1.312320242941377 0 0.5205577585316525 1.242875798496938 0 0.4220142720797455 1.380039198951504 0.1858714005298605 0.3825328564761336 8.215580571277115 0.8723442037415693 1.664660159066988 8.268929512939094 0.7267816885016296 1.612768121139544 2.658049037373206 0.1531375203004305 6.744239015487941 2.803991275260285 0.1968233398812243 6.600349460655204 2.905564581928568 0.3291019610002255 6.673161085546412 2.879351084446208 0.1322786211190012 6.704935054618175 3.501948937770324 0.6040492391389645 7.779973192540915 3.541666666666784 0.594402043855919 7.546676385191994 3.590423779481981 0.5192018287280951 7.3888586659604 3.686399808558162 0.7163202553322524 7.29650570728754 4.848893405600776 0.4108755968512203 9.286744427897391 1.663527322386245 0.8647899515693644 9.681062351715488 1.66386634005474 0.7445107382086078 9.801343657796702 1.663527322386241 0.6643192351354983 9.600874814328023 1.133017138786597 0.5041005407868011 2.646733167236651 0.9400325420201605 0.395540971718256 2.623436629700273 1.021756035344664 0.4869047108524462 2.743359980433018 5.625000000000288 0 4.10621600202254 5.694444444444716 0 4.226497308103719 2.312569959187089 0.1513980192992155 0.2738066639483273 2.311574916696131 0.2741203358882496 0.1581893186895821 2.418444472674808 0.3496440598034187 0.3521993755367721 5.269739968137909 0.1267023176038249 6.958180880321679 8.263875851074927 0.1957292465489714 4.557278205436223 8.337930758631241 0.3538058997901783 4.486255202445808 8.188112942292198 0.349260423517901 4.674948744197412 4.88248611087495 0.1706782408588453 8.094557274671065 4.93055555555561 0 7.955217796619936 4.709627448813958 0.6692295810323934 3.067313822198973 4.590928737732918 0.8407399596833383 3.117654300726042 4.483717262797684 0.683025900538953 3.05575572681196 3.600563869055093 0.3217222745191604 3.242336315342015 3.611111111111439 0.1693069764982668 3.335507308899941 3.748597559246741 0.2927097187270752 3.428083458732159 5.513336921907202 0.1663566955899362 8.901749416077314 5.400489699684979 0.3620871482648375 8.916784579337463 5.442708333333355 0.1957304526749014 9.052784714610645 5.584275421796855 0.155921461452209 9.126045108095781 5.542056788148479 0.3222781570421451 8.990044972822595 9.879718693918829 0.1202813060811718 4.305555555555552 9.711807532296046 0.167911161622784 4.201242976217339 9.627154480279135 0.1538699547251179 4.339070831478619 9.095840368659744 0 5.069176381639799 9.026915068614901 0 5.189238369114118 9.202001646709816 0.1611348518335992 5.164836909828605 4.497160638488222 0.4967408189789334 4.102076833505856 9.654699769407419 0.534717496856647 1.508608341345022 6.805555555555683 0 6.150998205402517 7.274003727240722 0.3181517428644634 4.294151482110559 7.361111111111359 0.1553463454892614 4.341330169217185 7.356096346062415 0.2845606887961126 4.511536965279937 6.759724180093884 0.8086805487648137 6.516820048007325 6.879235062956074 0.8734512145926805 6.349145123028332 4.166666666666749 0.4086533016196643 7.594373878376396 7.986111111111471 0 3.143965553373311 7.944178057691028 0.1743625945153174 3.223073468139792 4.166666666666941 0.1507201646090532 4.306684845491053 4.004979498330242 0.1588032124747442 4.161203090159773 4.071323212976894 0.2879752681660681 4.111652306800282 4.233010381313598 0.1291720556913239 4.176946524744114 4.07756608402115 0.517784699677598 4.596728120048054 4.181714366760199 0.3282510004369109 4.669228695303239 4.270814949405979 0.4931550416782953 4.558334282923012 4.270814949405982 0.3025308358278572 4.508853620528349 7.083333333333538 0.3718169790848785 4.920276903371995 7.316380520407998 0.8701034885403267 6.819018200631906 7.392889820624094 0.6962595824124486 6.91896797149003 7.398079866813232 0.6709688964318774 6.734113749280494 6.391487365330674 0.3716934405095022 6.402038393911064 8.819432762639959 0.8042684170482884 1.099334017819924 7.361111111111519 0.590604193378987 1.578526288503572 6.388888888888899 0.3990058478048814 9.335242751255187 0.4271293063875076 0.1407813321464932 4.291251646760903 0.4463536079303507 0.2934709989599416 4.378970576629758 9.737490768545474 0 5.83183583995763 9.86530710880167 0.1267193059305197 5.688562399336607 9.621101648816964 0.1428608144461211 5.735356195914449 0.09066618636971835 0.8753524277156527 3.475399395929694 0.2209649272270924 0.6811002817924694 3.411073907311988 0.3116311135968107 0.8057478540768167 3.415453582592296 0.2333786609364313 0.8569145100782298 3.545227738955296 0.3636774017938054 0.6626623641550465 3.48090225033759 0.142712474566713 0.7322669377938825 3.540848063674988 8.541666666666803 0.5404917730382872 5.526683710199649 3.271650978927244 0.5361559128249679 8.516022483984422 3.392988917005151 0.3385342804767896 8.526669328166657 9.72580481636126 0.8539541807306413 3.960574874242217 9.653988173140339 0.6652257884595542 4.097723423275996 9.846086122442433 0.7237454581297764 3.96053093169351 1.738547271840049 0.5579496440157685 9.799531156531321 8.643895533279611 0.5377102197493593 0.7835499919500805 6.388667416810456 0.8789032329374444 9.879718693918816 6.249778527921567 0.8789032329374444 9.879718693918804 6.249999999999993 0.8221549990142661 9.701486401379558 6.249778527921556 0.7010582319517107 9.821767707460754 6.388888888888882 0.8221549990142661 9.701486401379569 1.924907097233066 0.4647215572206554 9.610342205734405 6.180555555555578 0.8195904256603781 9.171653585112605 6.29931841783497 0.6983174676251021 9.103085814605887 6.552333946386837 0.3128550184095767 6.720700791703125 6.542808634400685 0.1550790671441155 6.646012695755003 6.545407110842355 0.2767725076536177 6.496115197326345 7.493763406853058 0.132281607642499 8.842772960941112 7.39976692797981 0.2996285907758615 8.73666677854656 2.847222222222602 0 2.422277716885955 2.986111111111491 0 2.422277716885963 2.986111111111484 0.1576276668204385 2.545536175494059 8.062487575001743 0.8636934153886728 5.566441611357641 8.157845019368901 0.7134660341275967 5.607303553267613 8.150912999922863 0.8497726187389238 5.710734922987888 7.911152751463145 0.8546321366156234 5.70713648961318 8.006510195830302 0.7044047553545472 5.74799843152315 7.918084770909185 0.7183255520042963 5.603705119892904 10 0.4880021619605858 4.308074997622491 9.807902050697908 0.554159644051997 4.234370771255999 9.832088838377217 0.4107991979458682 4.131798531772895 7.114118908640741 0.4930837556792851 0.8771896544257497 6.942672146163465 0.3997283741052078 0.8164223710017053 7.202468581529316 0.6047858966909468 1.033183825871842 7.031021819052041 0.5114305151168695 0.9724165424477972 0 0.368010056842963 3.40200706355636 0 0.2459495433529089 3.333010205501685 0.1397908486635772 0.2556397251903242 3.528908843775259 7.279919278168392 0.701177630685655 5.731898063444316 0.4174513646605745 0.144173940799725 3.202760809830206 0.5658416907583532 0.2986055259411643 3.323837532668712 2.847225797746707 0.1230051714046812 2.570208078545285 9.56208829727424 0.8365378565642164 9.170142074370485 9.669278178364289 0.6689120658675005 9.108270811494231 9.711091623807985 0.1686764445424281 2.799746206811443 9.658977164989501 0 2.97663110526483 9.692489155175858 0.1560695111654427 3.034458144088136 9.425055986776007 0.869686977570312 6.58450270476119 9.524683141426165 0.7164797639209051 6.722161816359736 0.1289471416585812 0.8767405062580187 2.641637522366272 4.812699295004601 0.3601990256252904 4.299361785638632 4.867809397687102 0.128838946727506 4.300647697319476 4.816026430512727 0.284050765087513 4.161739178570903 4.635519344567719 0.8528472658299207 3.383498448568385 4.794941408162032 0.8819717671692461 3.222594375155741 9.878396420688649 0.8767405062580187 2.511825936864077 10 0.7550106493086037 2.505455466969068 9.837310592615305 0.7162883379054765 2.689085839050199 9.038593913119204 0.8284592733397484 7.560278224026893 0.9027777777780834 0 3.625090777697577 0.9722222222225183 0 3.745372083778757 0.8055964310795235 0.1699971056537813 3.735432523979322 2.986111111111562 0 1.219484783685012 3.12500000000045 0 1.219605549349627 3.099673114951277 0.1778306079947642 1.342453936989505 4.086365066239892 0.8344081388646911 0.6349719176046936 3.887987040671141 0.8404725990722763 0.7282051408391678 9.440821580399701 0.879159041560782 9.885414870971983 9.284352291353677 0.709287431740609 9.829640904837575 2.169608115799661 0.8297931293084276 4.818186838322013 2.15277777777801 0.8413466983803373 4.988278913284249 1.964570471054176 0.8787270419647211 4.879617374083779 2.034014915498618 0.7200737403450583 4.919711142777507 2.050845253520269 0.7085201712731486 4.749619067815271 3.994831364636487 0.8282255112548795 7.070730443530215 3.825288697447053 0.8719182114763333 7.143734357003307 4.662239621764566 0.2826127670108146 1.072863184346058 4.378003062281047 0.1631829584298534 5.615277445360332 4.375000000000179 0 5.790154287158831 4.513888888889076 0.1238765246349221 5.684640006388868 8.153963799269421 0.6869517220550714 7.543560926237188 8.119907205955981 0.8414351292264539 7.371453222287798 8.173081601883347 0.7027074231361812 7.309960077616328 7.345260321250898 0.6078742115349046 8.320223867803836 7.247879875920448 0.5693771615317943 8.204473591011624 7.163810602075372 0.6270431156106586 8.429973216866669 1.775793650793896 0.6538834414726358 4.644618038766605 1.805555555555809 0.5913466983803368 4.467059920265829 1.944444444444694 0.5049269452939162 4.547247457653281 1.944444444444688 0.4135802469135794 4.707622532428176 1.77579365079389 0.562536743092299 4.804993113541499 1.944444444444688 0.5913466983803368 4.707622532428176 6.442580111036 0.1715103786509524 7.346126233839184 6.458333333333425 0 7.474092572295364 6.597222222222303 0.1213395322119129 7.336541915798866 5.753945812417486 0.1561519649247498 6.695376289692537 7.319376509229409 0.8545569066547971 5.897008107278622 1.250579945563767 0.1612979313802815 1.386097654473615 1.263268430121852 0.3224571637719551 1.312882906500664 1.265497344661631 0.2892606492628834 1.55509743394683 3.452363752373061 0.8786774944165835 2.233274166330702 3.541471732949806 0.6893277765657692 2.347366225437798 3.34901759139383 0.7213753431575929 2.292941100191768 5.091434681556994 0.5914351292264537 2.094712150044528 5.154642111186691 0.4215103786509437 2.02902506232385 5.232575535075988 0.319086476798937 2.23439502036011 5.077933423889697 0.3975760981479934 2.186616219291366 5.16936810544629 0.489011227374447 2.300082108080789 5.902777777777921 0 6.51184212364597 5.697884047017851 0.6504230427847772 1.376283226931192 5.611021821929505 0.4855235820099215 1.445273985400269 8.42758754430114 0.4904724688090616 7.801706740216496 8.371754793564325 0.4409525066229353 7.999556012009705 8.558004372798584 0.4737991724285658 5.079245171912634 8.561890485448808 0.5035293188277961 5.306426969555996 8.481913672570041 0.5927410174102374 5.177240003830224 6.010307598851699 0.8422269878670361 2.724922700191182 6.041809566787357 0.8236655227228821 2.903485444633747 6.21191462337125 0.8422269878670354 2.841320570068086 6.111111111111477 0.6844539757340715 2.783121635129636 6.180412655435589 0.8236655227228828 2.662757825625515 5.732529821073889 0.8422269878670366 3.206047924515876 5.902920677898452 0.8236655227228821 3.144048056796094 5.934136845593434 0.842226987867035 3.322445794392774 5.833333333333661 0.6844539757340716 3.264246859454324 6.288085376629507 0.8422269878670366 2.2437974758665 6.319301544324492 0.8236655227228828 2.422195213463171 6.489692401149048 0.8422269878670351 2.360195345743399 6.388888888889277 0.6844539757340717 2.301996410804954 4.202439812120486 0.8306075121271828 7.961619865146282 4.132995367676038 0.8306075121271828 8.08190117122745 0 0.3827830110500758 5.220811122779745 0.2014763327726299 0.5497238113720186 5.226758397936506 0.171328233990225 0.4110842648346591 5.317373597781478 7.708333333333675 0 3.38452816553563 7.746249086360921 0.1439421255574311 3.488124044726377 7.524734594663981 0.1265844569696342 3.430529004625678 1.805555555555824 0 4.22649730810349 1.875000000000261 0 4.346778614184664 1.961567164179372 0.170098581168231 4.216611501255432 1.649543946932141 0.8299014188317669 7.123134460899648 5.833333333333735 0 2.06143379864258 5.902777777778187 0 1.941152492561413 5.989344941957281 0.170098581168234 2.071319605490648 1.458333333333366 0 8.917468245269156 1.319444444444476 0 8.917468245269147 1.388888888888916 0.170098581168231 9.057521165046452 8.079624674157243 0.8220239160348528 4.744523459289944 0.6088156584624541 0.8458201489962057 7.282226785405525 0.5345721847721998 0.6364470693073949 7.341303813324063 0.4971731681748628 0.7906269203111892 7.168591609605524 0.6650808503742396 0.8472404295114802 7.063158199917692 0.5908373766839853 0.6378673498226693 7.12223522783623 6.874349631030367 0.5580536237866848 4.096100035767569 0.4813598720852807 0.5779368487965686 1.584584371980369 9.829017780328311 0.4177744757808664 2.596834958958895 9.666328372943617 0.5082242761898859 2.709976622405963 7.324389863900303 0.8424796044259748 8.738200423763004 7.365629039825456 0.8767396058415597 8.87228639246236 7.430555555555841 0.3732807567195944 3.867945575830991 9.648437906128802 0 6.853407127882297 9.600244437053844 0.2015624481354268 6.999286836378456 9.706730880270934 0.2015624481354268 6.945240084500679 9.591534258250324 0.1306395557065365 6.88841031136004 9.485047815033234 0.1306395557065365 6.942457063237818 4.791666666666817 0.1540113770664205 6.628087105135079 4.652777777777922 0 6.752404735808214 4.655275614782974 0.1219123115275788 6.59437857025468 4.724720059227419 0.2759236885939992 6.590342245662711 0.421005107394355 0.5806315764633188 6.46592689327416 0.3322686273575177 0.487843930743733 6.632090202864291 5.60325765206447 0.8177122449590606 2.409724766452479 5.464368763175573 0.6987676004782987 2.49171452470281 8.88941929467217 0.4278297095121991 9.54119301615922 1.666666666666984 0.5913466983803375 3.264246859454104 3.957387845311092 0.8553453899562051 7.440321590723288 3.824343209424694 0.7272636014325384 7.350525987593723 4.236111111111541 0 1.460028549651976 4.375000130402171 0.1575203387901702 1.58261672134181 4.305555685957733 0.1575203387901702 1.462336696675955 4.166666666667094 0.1236944964665178 1.49198353906366 4.305555685957724 0.281214835256688 1.614571710753494 4.236111111111532 0.1236944964665178 1.612263563729515 0.4058145930460989 0.1575417811847722 1.87350971478565 0.4027728974530497 0.1651836140513692 2.042666843976805 0.6136454540059874 0.129507750943498 1.940064729095718 0.5617925332358209 0.2946913649948672 2.046140579266609 5.585317460317652 0.4374632569076989 5.606868487416186 5.744445677153427 0.3720640804458481 5.774784239175494 0.9032126729819301 0 4.105964915159242 0.8333333333336165 0 3.985934695941094 5.686654857840187 0.1419572081869575 3.795969328580038 5.620693580702495 0.3079845752888592 3.702119402748906 7.846435929480712 0.4787090955868717 5.253780421207805 8.009934323813948 0.4604749377885007 5.106195776211476 2.013888888889342 0.7938843390723458 1.21999935061522 2.059796598237131 0.87921426335979 1.032831108718807 8.958333333333277 0 8.67690563310726 2.569444444444815 0.1586533016196625 2.582652791660836 2.638892464413371 0.2816584730243438 2.610301847238997 7.776417679228312 0.8391428916083861 6.537311840736995 7.772605397129091 0.8702125383754933 6.71827796922628 5.000000000000137 0.1540113770664205 6.74836841121627 5.061406634804603 0.2807136946702453 6.713581943567352 0.4946975883741805 0.4326950051725208 1.343194467753398 0.445963141681974 0.1739587559379873 1.297412113981851 0.326877720513176 0.367855450250424 1.373092068291909 7.553839102822636 0.8573013166886507 3.567891003126031 7.687810824885162 0.8625367109665232 3.413840879987665 3.996702435454862 0.5930890991106 5.101497559337215 3.974312652740818 0.5025230899660256 5.248945887035064 3.866499106175071 0.4094339908554256 5.175821009675915 4.00611622967743 0.3800398762033936 5.191360225990568 3.983726446963386 0.2894738670588193 5.338808553688417 4.113929776243178 0.4731289753139937 5.264485103349717 4.218366272882887 0.6263237943278039 4.641501292396743 4.129265690237106 0.4614197530864195 4.75239570477697 4.322514555621935 0.4367900950871169 4.714001867651929 9.094559384977345 0.7914395166556523 6.022923449653102 8.989288359254505 0.8632932218625484 6.102284825982228 7.297142527259822 0.8353411958186897 4.966550724549769 7.501097965053553 0.8382597928450903 5.045551228210186 6.32896975643071 0.4077759512654613 6.9072803691439 2.031011608623824 0.170098581168231 4.096330195174264 2.122067199701289 0.3377164901734973 4.049305521125111 2.174388924411081 0.1676179090052663 3.938910021892009 1.964570471054225 0.1212729580352789 3.917366925434416 2.05562606213169 0.2888908670405452 3.870342251385264 1.912248746344433 0.2913715392035099 4.027762424667518 4.470499915793125 0.4989747988982846 0.8095100210216514 4.595777279484308 0.4638149570631873 0.8621617341840462 0 0.3872194726003184 8.538678970733621 0.2017872291460173 0.4754227637611925 8.678528525828892 0.1510404160214245 0.4095436988158059 8.468385059787476 1.659806017338079 0.122159213345268 8.724553928392895 1.611969490942257 0.2993329854679124 8.564559961730533 1.590361572893635 0.2857394602588467 8.76464769708662 3.954040582114279 0.7892883477170575 0.6142162648481726 8.688436413895204 0.5967443566035702 5.084751931792589 8.612345713666659 0.7156862015852417 5.182746763710179 8.463754217957664 0.622945184175004 5.033886560304233 7.651493577035607 0.1596077095474902 6.715249298422055 0.3669366422224419 0.8699255637106145 9.325177491742318 4.955638229500297 0.3914129475909031 2.086937971088541 5.047072911056889 0.4828480768173566 2.200403859877963 8.105663653864021 0.458516651199656 0.4008516338040468 8.300126931617418 0.4325810717409609 0.5264090011735538 8.142025660685164 0.525935579458695 0.5745101851432988 7.973703470021601 0.4528496356384666 0.6040609960668735 8.168166747774999 0.4269140561797715 0.7296183634363805 4.807694820040568 0.4827940967787705 7.48708848352701 6.63813602301992 0.408296794386336 2.799593809919497 8.989257108888738 0.8264506545672142 1.78962647767551 8.817311617705462 0.8500697712203632 1.862196343266357 8.001061555778449 0.5202254082519584 0.2244764088868959 8.141501490693694 0.5923185791614924 0.171694127636261 9.509204767865384 0.3113355122452006 3.704800705888138 0.4908899639275315 0.4418079495040094 9.636925164985596 4.652777777778036 0 4.587341226347148 4.734477124183262 0.1991345921084484 4.672245677698568 4.665032679738824 0.1991345921084484 4.551964371617393 4.560847629144538 0.3509452633272525 4.633851840573505 4.548592727183751 0.1518106712188041 4.669228695303261 7.708333333333696 0.8214837977345739 2.909874872869375 7.854903074233325 0.8787879577460123 2.753267545049996 2.15153184010394 0.8409427039230002 1.139996461138396 2.082087395659489 0.634827042995346 1.260812461760596 2.127995105007279 0.7201569672827901 1.073644219864183 2.225657990206225 0.14521183221273 4.089246438875185 2.082087395659489 0.8409427039230002 1.260277767219564 5.972222222222439 0 4.707622532428422 6.041666666666876 0 4.827903838509603 7.529811182503451 0.4546904816886884 3.99230588972049 2.291666666666716 0 9.639156081756429 2.133240430566443 0.1651922736545215 9.570248437040732 2.280700406350772 0.1229692110525856 9.472449633636071 3.843605781676264 0.3874642209051071 2.756977420990359 7.089198520310596 0.8461692317464962 9.603911264261717 7.702819418129809 0.8546321366156234 5.827417795694334 7.633374973685374 0.8546321366156234 5.707136489613158 7.650736084796478 0.629966498755542 5.79734746917404 1.62790140073088 0.6622908106667439 5.967883535638899 1.678921568627629 0.800865407891553 6.115621350672468 1.669083109310596 0.6794814177990974 6.195828338855135 8.896272991389614 0.444487590698011 3.00652810760455 8.809366568859614 0.6420335934921516 2.870017462450889 8.978149153296592 0.6602696605972092 2.994143315612066 8.839306793128415 0.7119496794309828 2.911828369589775 3.324522915438728 0.1701064823911246 7.920210725069323 3.335416595340068 0.300742373544146 8.087706008385251 6.103634534110262 0.5101785617064545 0.6612762282407031 6.113076441712437 0.454988112645317 0.8166557645044646 6.040238549021932 0.4269544223610922 0.9395016061891625 6.03956618163475 0.2867519852511249 0.7356386824444201 6.030796641419758 0.4821448714222296 0.7841220699254009 8.604425694489958 0.8397345936163566 5.759150337188196 8.570414697058119 0.872274357994702 5.626278459715256 6.180555555555762 0 4.827903838509606 6.165353828287966 0.1711427152978693 4.956443307412632 6.319444444444647 0.1212729580352784 4.965039379523084 4.407172958439361 0.4016150026725271 0.9444007077478904 4.57549925597873 0.5830331007301551 0.9214540680137171 9.513774693645775 0 4.711751159950016 9.472826985287874 0 4.589887004065957 9.483881539604006 0.2223035700024376 4.686175170498179 7.095553843412088 0.6886617538581109 5.047147205054508 7.020633538374691 0.8533205580394212 5.028781625095563 6.924477328494888 0.7107583562828282 4.89384056138476 5.640783726691409 0.1729868389176225 1.462457029126155 5.555555555555975 0 1.580308574317889 4.250193429120444 0.1442420524969545 9.711213189050373 4.342664968098817 0.3466715543558158 9.632074006714706 4.250193429120456 0.2707256524824132 9.831494495131558 0.534183758068844 0.5128598753362785 2.18972357446239 7.869316594837017 0.8429600235155748 1.790629029522841 7.647448149822064 0.8718299033582348 1.745625340696492 5.568070739639817 0.172850753642493 4.860771962303415 5.555555555555776 0 4.948185144590736 5.709411633487067 0.1628053973752021 5.016618586936048 7.32988743166511 0.5282835038626513 7.212350706586901 1.89519017780788 0.8284896213490864 9.208371335958699 1.737139065535143 0.8753950918236664 9.314161914112066 7.254945419455865 0.8424796044259748 8.617919117681835 4.575825930140573 0.8597006787617796 5.605620916901458 4.37500000000008 0 7.474092572295232 4.513888888888964 0 7.474092572295238 1.805448924018221 0.841304238706622 1.259619988514946 3.819444444444684 0 4.827903838509443 3.958333333333571 0 4.827903838509449 3.938677195132254 0.1764403292181068 4.707622532428278 1.512096437841675 0.8568219863334681 2.777315126276999 1.581457764647795 0.8568219863334681 2.656985832204966 0.9550248630249596 0.6735393666607747 2.717428272311484 0.8884654201582342 0.8321756275265845 2.663717671728008 0.7587026517233966 0.6842150066199644 2.580315554874058 3.499327789107407 0.2869560615784826 4.252279025635062 3.348360868423209 0.3168093746464927 4.367197348570582 3.511743308284219 0.2789985352660952 4.48987742994232 7.090012000504457 0.8443326745237386 1.897202793578899 7.222222222222614 0.840604193378987 1.738901363278448 7.321211624813158 0.8699838310741765 1.882834718454409 7.321211624813163 0.7105880244531635 1.800864895252547 8.125000000000364 0.5478395061728407 2.983590478598425 4.86111111111139 0 4.226497308103648 4.809328143937016 0.1552118183600071 4.087588789355074 4.728920508798211 0.128838946727506 4.300647697319465 0 0.6349705402821257 5.078025911484104 0.1369885775143135 0.584099280326482 4.884266920557489 2.946225058930501 0.5723591109548173 6.514882178884909 2.847647686542347 0.71793359181197 6.504876845300199 2.978876466971117 0.7275174315175774 6.344709919309487 7.16381060207538 0.8770431156106588 8.510160754254112 3.680555555555874 0.8415812849648975 3.496899830573083 3.827148104439302 0.6866156503149812 3.416765825611522 3.896592548883746 0.8450343653500837 3.424675466654978 3.87861723544284 0.8769021580456224 3.579066667121716 4.025209784326268 0.7219365233957061 3.498932662160155 3.809172790998396 0.7184834430105199 3.57115702607826 2.694487726735503 0.5877880528736193 4.11420976671887 0 0.6348502164200783 4.940683937792358 6.25000000000002 0.8195904256603781 9.291934891193772 6.299318417834987 0.8787270419647241 9.089463086924958 6.041666666666808 0 6.511842123645978 2.893711204807866 0.3834124480076622 7.350838425884167 2.91515755785632 0.4688054250980542 7.196612117433625 2.736307702948103 0.313398473706558 7.220546471040755 2.291666666666871 0 5.549591674996391 8.8179372218012 0.5460916397111815 9.263601621372889 8.981710931857251 0.6202850311353523 9.384425605059642 8.842424616700004 0.7120205771059062 9.431239144577804 0.7051513807065146 0.144173940799725 3.221553173191053 1.957035537842517 0.4867360391167856 3.611023221612867 8.079621618132506 0.6991642946087404 4.650984596824924 7.91666361064218 0.8771403785738876 4.614083669963525 7.916662773450235 0.7135602866958539 4.533896615929076 2.401487185571737 0.5729724551322588 4.042811095870121 2.303912852545356 0.4751053498216038 4.124253510425741 4.362745098039522 0.8008654078915516 3.66046763242751 2.093309212958309 0.1649698794141743 8.263021661179828 2.222222222222269 0 8.316061714863334 2.056145888733783 0.1459167738478483 8.411224742575396 4.236111111111323 0.2214302873496317 5.208731258637361 4.305555555555772 0 5.18874775675298 4.150010195990138 0.1480944374915812 5.096082779866 4.288899084879036 0.1480944374915812 5.096082779866011 4.219454640434587 0.3695247248412129 5.116066281750392 2.382632188385653 0.4968479978906357 4.615009795283192 2.580500954290771 0.5185481873096836 4.602559822954995 0.6456217656916571 0.2494634339492857 7.77693737843976 8.342281326201238 0.8403248178196663 1.909909919485051 8.285025015721557 0.8723442037415693 1.784941465148167 6.721907766266334 0.6812241037136001 7.201143796272016 7.152607798228338 0.272804217109839 9.839624925225106 6.796515075320393 0.595390165949647 9.837128219045519 6.686281622254937 0.5132253701785423 9.67414064077647 4.395987336570071 0.1455878178189122 1.435452319295869 4.465431911416264 0.3031081566090824 1.437760466319848 2.490624809034351 0.4483346723876708 3.138001687970475 2.345357888814051 0.5784896213490551 2.991275510973083 2.335982697848055 0.526824293736726 3.185780489039209 2.482095593293726 0.5720266510489136 3.211572204244455 2.336828673073425 0.7021816000102981 3.064846027247063 2.491470784259722 0.6236919786612428 3.017067226178329 5.688882761823642 0.58954699494559 0.7144139659256299 5.234717025398583 0.6888845555485568 4.116145746640433 6.891170909023529 0.8325146263515473 9.384634075370586 6.891170909023524 0.6137068929052913 9.408248451356897 6.779804666966436 0.8797686830720617 9.45355452074665 6.779804666966431 0.660960949625806 9.477168896732959 6.726531131545511 0.712283309423609 9.319313820441927 1.38653359712515 0.4450762049626902 6.019673585897161 1.286267324013932 0.3301633676969828 6.114299269297957 3.591252641261939 0.8786774944165835 2.473836778493053 3.64819000488507 0.7523203098892701 2.412319451125161 4.37596737980541 0.3786962995647234 5.08605230400099 4.445411824249859 0.1572660122150918 5.066068802116609 4.289866464684225 0.305360449706673 4.97340382522963 5.672048122178131 0.1208525329136397 8.970492536652381 5.700767988419408 0.2767739943658488 9.058788093397663 5.629829488529754 0.2872092285035759 8.834492401379197 7.500000000000352 0.8214837977345739 3.030156178950532 7.36050802707613 0.8581033923475117 3.078218208937134 3.308780486257882 0.1590334233810332 3.811384028297764 3.19444444444475 0 3.745372083778868 3.333333333333647 0.1206657101241372 3.612022966010993 8.333333333333339 0.3704819298434898 7.381983163641985 9.13475573337896 0.8423093028520157 2.432972712394342 1.388888888888926 0.420098581168231 8.897146090271555 1.250000000000036 0.4135802469135819 8.797186939187966 1.45147268400475 0.372159213345268 8.68446015969916 8.604425694489954 0.8397345936163566 5.999712949350543 5.589457272090375 0.8426978487410108 9.217697791292732 5.719395750021786 0.8468260945378056 9.307262891334295 4.701465866429732 0.5340526136687924 5.842231743456869 4.713095238095408 0.4456202233979973 5.995892597370082 4.700402881587269 0.356497174192523 5.842845458041809 4.743656849841255 0.4108769507945256 5.657497693051974 1.136701932866151 0.8369221500819011 8.553959811051385 6.625133106813857 0.5580536237866847 3.825559621166512 6.624304928919201 0.613101223282206 3.65237558265603 0.4375074974566412 0.6836789997277573 4.651482035456954 4.968434343434662 0.5069210624766137 3.566772568688742 7.578550439288422 0.4590971433062327 1.854266003473671 7.624631328550207 0.3272481024383194 1.961632967772605 6.180555555555775 0 4.34677861418492 8.095343646416087 0.6127437295091787 2.112770302282715 8.008205483725916 0.5929600235155748 1.890519790382679 8.146136126832662 0.6223442037415693 1.884832226007955 0 0.6324323863083091 7.430505115926779 0.2114648472423042 0.5468111388331696 7.363716627617826 0.1637795623125065 0.5969381629411902 7.557385753188312 4.744596894273645 0.4007319530742408 5.50684464180152 2.48465419701559 0.1712387657756324 8.685014068051897 2.619470406517218 0.2959500277078155 8.759947910230423 4.807714831030109 0.8353929770903928 2.117026270732578 5.091434681556986 0.8414351292264537 2.255087224819425 5.021990237112547 0.8414351292264537 2.13480591873825 4.968593957031148 0.6768281063168464 2.190398390828278 7.966922037579451 0.4159590599658037 0.3679938281041427 3.242549419935345 0.1752345430883585 9.276432528956972 3.124999999999978 0 9.158030857431598 3.097703843892252 0.142869800522556 9.320077629017236 4.979873973390906 0.878727041964721 1.992866028135814 4.926477693309508 0.7141200190551138 2.048458500225844 5.140753099391945 0.7201621711911745 2.066238148231515 7.599732879736085 0.4158151237633826 0.4554276419924244 7.71020006963685 0.1278014705268468 9.33910745576704 8.294235008459893 0.5102839178437758 1.432498587704694 8.386701083668628 0.6044374847600603 1.340477102005958 9.55884375051563 0.8365655025436872 8.50901349418308 9.334530262087645 0.8442589897752644 8.439334822928108 6.923340417176343 0.822586279886655 8.596212306973797 3.153353475892735 0.5991451112111562 7.858660372293341 3.218496954503856 0.7189691838357812 7.821049767381265 3.679324035797742 0.5100489372698094 3.130373636829408 8.299315905525976 0.6957921864905607 0.8194570871634418 8.210854430021616 0.8537008718560268 0.7868944887919634 8.421794808838202 0.8420913146345339 0.8911833362025463 8.463554982585226 0.7067081114059152 0.7384422132058122 8.375093507080866 0.8646167967713813 0.7058796148343338 8.25261460376864 0.718317668627408 0.6341533657952294 7.392585732565491 0.4930837556792851 1.277729520384558 7.232359444941549 0.5756471799811097 1.188655449686242 7.38904868724946 0.5974147141789062 1.119638365640864 6.955477268742047 0.8770431156106588 8.38987944817293 7.024921713186492 0.7134628686970801 8.349785679479218 7.003817685918339 0.6996293954973138 8.549748734201975 5.706607700560223 0.2996562192955521 1.418224873542502 8.349412566459776 0.4146588041813112 2.7987279638783 8.568008285625281 0.3920178205278556 2.723327933897385 7.058823529411793 0.8008654078915531 9.066051035134425 7.128267973856232 0.8008654078915531 9.186332341215603 6.89117090902354 0.8325146263515473 9.144071463208238 6.960615353467978 0.8325146263515473 9.264352769289417 7.005549993990858 0.6333800342431004 9.172372946992049 7.239807192638491 0.4749996933317534 1.343649361073475 1.319444444444832 0 2.422277716885866 1.435062668419874 0.1520973864100602 2.34638393213717 1.258322337889234 0.1573394417289152 2.256860449184226 4.602771991812665 0.5385802469135763 6.065072965187124 4.73177831109294 0.6097006787617796 5.916519454715088 5.071593411715714 0.6209030892499701 2.323819399722951 4.910714285714665 0.7794679600235164 2.491009891789594 4.000249105330599 0.5333502442527316 4.78165714001458 4.089349687976378 0.6982542854941161 4.670762727634353 3.938677195132262 0.5561476913330483 4.598082789771098 4.027777777778041 0.7210517325744328 4.48718837739087 3.95046079908749 0.7366172771495663 4.672117397357395 2.012807331327849 0.2791273170988658 5.743572948860793 0.9077780481580752 0.1550634505055732 5.388636158620348 0.9122417742661167 0 5.550555152302453 1.046876530763148 0.126105061450952 5.408539542237826 9.306005163952538 0.879159041560782 9.881282804127125 9.282217133401211 0.8301283901798271 9.7109237089647 4.930555555555989 0 1.219464656074351 4.81643100450228 0.1589942584255836 1.153574815802339 4.879265956863138 0.1216379915274846 1.029477517687505 8.546579865063583 0.5917696355894191 1.320404635579199 8.718216709179432 0.494357263387403 1.329122014233558 8.560748680020138 0.6219386141082044 1.18325562629961 8.732385524135987 0.5245262419061884 1.191973004953969 5.208333333333391 0.8320257075602971 7.787993082753233 5.126990872275035 0.8751543841386175 7.895478702860714 8.852201549553786 0.4568560448462724 1.160578135763829 0.8400200314653702 0 5.904723654305796 0.6766155406712605 0.1672536981100748 5.866791696597717 0.6927094348492193 0.1435775374804469 6.027307527425311 3.662992698172952 0.8528704490180076 3.644931260729208 3.593548253728509 0.6944517339829051 3.637021619685751 3.791609933615475 0.72977260706363 3.719188456234385 9.258634287131827 0.8482748022671491 5.111652357088741 9.026615590222679 0.8623742151233711 5.104837599976404 7.430555555555806 0 4.346778614184981 7.291666666666906 0.1553463454892614 4.461611475298351 7.425540790506862 0.1292143433068512 4.516985410247733 1.067699231370443 0.2080778212467897 1.869289660946436 1.137143675814881 0.2080778212467897 1.989570967027611 1.180555555555971 0 1.941152492561173 1.245066393976956 0.1242632538263377 1.914197874662848 1.314510838421393 0.1242632538263377 2.034479180744023 1.201654514235867 0.3323410750731274 1.962616349129287 9.206574472783998 0.1391147737204539 4.916209415372616 9.312735750834072 0.300249625554053 5.011869943561422 9.15567110451514 0.2820119185071636 4.865422766081169 2.897427405911254 0.1600174208477496 8.006419357689774 1.418232770020625 0.826659243965548 7.924975639662219 1.279343881131735 0.826659243965548 7.924975639662203 1.377029460243836 0.66215099167327 7.816408879433162 6.520312913689667 0.396513116903679 4.801532449292063 8.40196332942222 0.1230741771090416 4.921501438106025 8.469115719299513 0.2822663193915679 4.875103152747863 0.3927347046893246 0.7890367300037011 0.8815101233544477 0.26166227855137 0.8484726083901091 0.8103066878952369 0.3405175108760919 0.8484726083901091 0.7395333439621575 7.096045083399101 0.4460323909773155 3.577927949844778 7.235816460715171 0.4995431671932611 3.484501820738607 7.028221851008547 0.8450382886551295 2.496664461971076 7.167752434525182 0.8501854889903695 2.584064565904547 8.479563429208863 0.5397613990760532 4.291275584554971 3.531119424610659 0.4502548041937325 3.130982097202538 3.541666666666996 0.4671464826711058 3.295413540206216 3.620426833409645 0.6554731454217548 3.183450861693609 4.194622514256942 0.5822946145458792 1.344287550625928 4.335022305250526 0.6720692066074476 1.31203532124357 4.32654289212563 0.3955878178189122 1.395359404881297 4.466942683119213 0.4853624098804805 1.363107175498938 4.354498739715478 0.4778824323647914 1.239524210018538 4.393689676758559 0.4001532401002877 9.011205791538565 3.125000000000259 0 4.587341226347064 4.155809510684328 0.8344081388646911 0.7552549661288549 4.046440765709996 0.8698639018089692 0.9548253355445956 3.369830826727019 0.6441536522948308 3.068407552022165 1.397235655059613 0.5609513258946984 4.050822233868825 1.52777777777806 0.5913466983803373 3.98593469594113 1.315230433131457 0.6322729062697163 3.868086350426035 9.161575180091948 0.3281944956283609 5.851461206696655 9.29626081486435 0.1784396696051936 5.944930369224225 9.403480831218285 0.3213004840513147 5.887392209131184 6.111111111111111 0.5695904256603779 9.372122428581243 5.972222222222237 0.5913466983803408 9.278312163512858 5.972222222222227 0.6250000000000047 9.518874775675226 6.689252388958799 0.8548617610070046 0.5575349106710966 3.570020142559587 0.40085488878884 4.202773426348927 2.131867826836658 0.1582464177677305 3.688649081541986 2.15347897346967 0.3258643267729968 3.761905713574003 5.908253638370809 0.5853411958186963 7.656195835805004 7.526949069869639 0.8605022584635789 6.025611183130163 7.474865736536308 0.6358366206034975 5.995540856609869 7.346325579098906 0.715059165118376 6.012183697168567 6.666666666666743 0 6.872686041889528 6.530429410242247 0.1445638868690809 6.974145839334123 6.61225307884512 0.1550790671441155 6.766294001836174 3.767063492063532 0.4638643527532748 8.869325238712143 4.013888888889167 0.4804526748971198 4.186403539409868 2.287121293917905 0.8372614887806199 9.716719346963798 7.797792832347318 0.8457966998411031 1.99419466881416 7.720907677177524 0.7970373927216217 1.851325625095283 7.645953744660575 0.576156093872122 7.173104656216342 7.868668575270696 0.5853929770903947 7.147193656421326 7.776636893925565 0.6287038692746927 7.328740154250588 4.280612308254879 0.8677512976966051 8.075587488538167 4.350056752699327 0.8677512976966051 7.955306182456999 4.246941009264201 0.6983588098237878 8.081989557064531 3.409816492130436 0.2847426686162651 0.9164479546097044 2.912777348989429 0.1208263187111607 0.1137486231875288 2.962906515828094 0.2647044605385059 0.1471368986339726 3.402777777778052 0 4.346778614184736 3.439408656649108 0.1291801103130235 4.2978722357681 3.45182417582592 0.1212225840006361 4.535470640075358 5.694444444444483 0 8.556624327025826 5.763888888888939 0 8.436343020944662 5.810350217353847 0.1947594842027857 8.5739298753664 1.736111111111147 0 8.67690563310682 1.805555555555593 0 8.556624327025652 1.688274584715325 0.1771737721226444 8.516911666444457 8.046703948528268 0.1596074044757284 5.099119458635883 8.1944402717128 0 5.188750165881125 1.764612707791681 0.5597748528605604 7.593672605537296 1.728936153501748 0.2088039730954475 2.346232643205856 8.350256593153999 0.1540317532286578 3.122859218980822 8.419701037598443 0.3300303785491959 3.122170670747586 1.800567754992969 0 0.4223188904672583 2.001263972079999 0.5571854206806135 5.692711034974653 1.961805555555742 0.4875257201646095 5.860318382372734 2.058031401536177 0.4508437456057742 5.843829607397781 3.369364401377085 0.3028857094268992 1.796796058511503 3.189931494432375 0.4462644223906238 1.740016620862606 3.321796450254613 0.4651581766260343 1.66715693425658 3.253327195062199 0.4271307058929297 1.548582817264267 3.30089514618467 0.2648582386937945 1.67822194151919 3.193764852997854 0.8526594853365304 6.930623080859503 3.332856913779215 0.7263721627205517 6.871430250646137 8.231047570246748 0.5179075997778926 5.723681679506631 2.708333333333687 0 2.903402941210635 2.638888888889248 0 2.78312163512946 2.801347727504273 0.1771433318480924 2.821754240295607 9.451619732959305 0 4.22971034056628 6.854132776685022 0.3236850860220829 4.041629111585386 6.78530325694813 0.15387431099587 4.091564450090498 1.6675229144118 0.8787897434078482 9.879718693918786 1.528634025522911 0.8787897434078482 9.879718693918781 1.524638433497357 0.8647899515693644 9.681062351715482 1.525494681242478 0.7435796949772127 9.801343657796702 2.36896808167398 0.4007646650342269 3.037015442309181 2.359592890707985 0.3490993374218977 3.231520420375307 3.603639915826636 0.5832604928668877 9.836867549917638 3.745224085871966 0.5302571058153223 9.64778611396593 3.747304718843547 0.4389092354249342 9.810918564048293 3.536626972331941 0.4168913815083544 9.823928563429716 3.53454633936036 0.5082392518987424 9.660796113347352 4.002240683901797 0.5102908816234463 7.510181353485911 4.002240683901782 0.4238711285370237 7.670556428260805 1.504681975123808 0.8052047422497529 8.333283615041477 8.940490258656348 0.5479337687870318 2.893224700205504 9.260173759350286 0.3622577841838859 7.33837994425328 8.04421114243851 0.8355290652624887 9.295979942489517 7.86383011551293 0.8668580977479627 9.293021993139298 1.350319798677084 0.8421374112776083 5.130828093981701 1.562500000000222 0.842849794238683 5.128607103712258 1.526954738593858 0.8790579095343956 5.258885632243933 1.700565849704972 0.7219077037730786 5.198744979203353 1.488385648381835 0.7211953208120039 5.200965969472795 4.791666666666805 0 6.752404735808225 5.604809822192351 0.8284896213490569 5.258688584307173 5.534679452816462 0.8788659449517241 5.120613042901795 6.458333333333472 0 6.03071689932132 6.597222222222358 0 6.030716899321328 6.527487258345515 0.1514856945752183 5.88013667587148 3.948179779753175 0.3697486971888758 0.5612754793591145 3.819700323275724 0.4641732023933692 0.4980950827193843 3.820650162513005 0.3685744884311739 0.3606733025618342 8.053653075977818 0.3717595661596561 2.087088449536037 3.263209297442292 0.8526594853365304 7.050904386940678 6.786311725479711 0.5955926576536408 7.342700835739667 4.918337850045205 0.4108755968512372 9.006088047041271 9.31276466715712 0.1291423004003754 7.261299279105817 8.623107909341922 0.5049681080395056 9.673549361954326 8.544679804595944 0.5674601615150719 9.85191335163961 8.671820987480192 0.4181514724999644 9.821636010314718 8.859990917113672 0.4738043574278936 9.684043099782683 8.781562812367694 0.5362964109034599 9.862407089467965 8.732849734229424 0.623113046443001 9.714320441107574 2.134451356123248 0.8049130876874857 6.540909270022118 2.205352359525507 0.6425998679419229 6.407448527684484 4.458754576113533 0.8545821165225231 0.7609022710741926 4.389293620913177 0.8545821165225231 0.8786847508542976 0.8894239006579505 0.6848797291405515 0.5304838762109807 0.9533366164691851 0.8424046594864318 0.488768104837172 1.081193675908513 0.7039006290207479 0.3826493137647574 7.252209435605801 0.8466207240308579 5.625044243324728 7.082619843532667 0.7011135007662697 5.612329412497264 1.875000000000312 0 3.384528165535287 1.944444444444752 0 3.504809471616464 1.597222222222248 0 9.158030857431509 1.45833333333336 0.170098581168231 9.177802471127631 1.553642548500678 0.1395005826321315 9.333340408232905 8.029731194963633 0.3624452364332639 6.136088503863137 8.079334369566816 0.1419131964567794 6.084539372685494 7.877689616441709 0.1376768877187468 6.204340424359215 7.90146843045285 0.2795900841755262 6.13788159164211 7.828086441838525 0.3582089276952313 6.255889555536856 6.620835291204989 0.8086805487648137 6.75738266016965 6.649211127958377 0.8761733505124025 6.940629702365815 6.718655572402822 0.8761733505124025 6.820348396284653 6.742268641385496 0.6848538992772162 6.825326320645956 4.64144722222392 0.1304139067154471 9.33253861570412 4.56242787484511 0.2836813958839119 9.340164622020977 5.502136752136805 0.5142054447610047 7.680729687870619 5.427774052564875 0.3899311726327343 7.541519009894034 5.342303967094791 0.4577514354320267 7.68887617347038 5.481192855983677 0.3757257278717295 7.775913349949646 3.173104975490903 0.514226312635681 9.252376267740729 2.970357888813684 0.5105021481982704 9.141659628590372 3.749054511977766 0.8553453899562051 7.560602896804459 3.749054511977769 0.6997474338121243 7.47281163492635 6.15442120813944 0.4585102017803465 1.120418213711547 7.387023785477544 0.1810478729151165 6.601606260771103 7.430555555555639 0 6.511842123646078 7.582049132591175 0.1596077095474902 6.594967992340879 0.6475597492759786 0.4138322703359514 2.102479166273001 0.7076669180443138 0.5158716494293312 2.312323869608462 6.763587155384082 0.665805214068119 1.15336274337107 6.673764925015954 0.5280001056226727 1.308939410017802 6.885223173025921 0.6574780854146829 1.221259901181889 6.795400942657793 0.5196729769692368 1.37683656782862 6.773711375463218 0.7335931296230673 1.274923364341301 7.357642762111295 0.502663943963598 1.741841741656855 7.386733864107782 0.6218299033582348 1.815961266347748 7.505090911932961 0.5338896539428459 1.748565719074879 0.7407302491051965 0.6014429515927329 3.491400675228175 0.9185319580993483 0.6103369041947027 3.449702962992264 5.542960782147144 0.6692295810323956 5.472939943822462 5.424262071066108 0.8407399596833388 5.523280422349528 5.319274898712003 0.6834378084243492 5.462666050129416 9.237243009571397 0.845027769753929 6.096270655962726 8.611348177844521 0.5382861473772307 0.2014237117747683 8.611139413714092 0.3791607860746609 0.1344009268523018 3.089133377601101 0.8767451351012396 7.895737863329394 3.067732359938231 0.7240512809599695 8.025299760615997 2.895265649003878 0.8473061458587299 7.964498387825294 2.915215026119465 0.632169897051762 7.956583657675964 3.109082754716689 0.6616088862942716 7.887823133180063 5.000000000000437 0 1.099183349993183 5.252737095966449 0.6851076270005141 1.052292795976306 1.219937924309439 0.8189712774642427 3.391843597622198 1.323238888935952 0.8403952087044751 3.557297484314826 3.732437142617388 0.8528704490180076 3.765212566810384 3.948061679887275 0.8769021580456224 3.699347973202892 3.873433710285853 0.5000000000000002 4.707622532428274 3.823645404042745 0.7032670328968349 4.598082789771089 4.219114333164864 0.8335544324990256 2.091791507840029 4.375000000000401 0.8773111952570489 2.035751217349914 7.432527192361207 0 0.5269400341389947 7.613166987191988 0.1484663091192276 0.5326290942393014 7.460442048132684 0.1305425831824618 0.3820522238126477 6.913743741260362 0.8544927767354118 5.657158150250384 9.027777777777734 0 8.5566243270261 9.097222222222168 0 8.67690563310728 3.971920056291984 0.5234431985273831 8.402400978172288 3.884404130511804 0.4778123616980318 8.597770065166593 0.8733013697004557 0.5821756275265846 2.597504921578739 0.8654553204536757 0.4777165992448404 2.807352893268228 6.75831775965576 0.8521633254049239 8.182959394267391 6.629060731930223 0.7289470033981378 8.257585974019374 7.569444444444477 0 8.917468245269472 9.490173753456435 0.340403570552166 6.042502893384874 6.95093596061166 0.4558964306848374 9.413879614143639 7.152777777777779 0.5311922665537442 9.502395382967899 0.6075114509156536 0.3888846511626436 4.61220142432995 1.527777777777818 0.5913466983803366 8.797186939187984 1.696348336367304 0.6810973824199941 8.716067825484874 10 0.363169342404256 4.236111111111107 7.325068809890777 0.1779070836604809 7.175675750987304 7.463957698779668 0.1779070836604809 7.175675750987308 7.361111111111143 0 7.113248654051935 7.3110187010895 0.1464609864924346 6.972856123860701 7.449907589978391 0.1464609864924346 6.972856123860705 7.413865288758025 0.3243680701529155 7.035283220796074 6.663183499360308 0.166027367101897 2.035002418392561 6.726487854979606 0.3393693823162104 1.964570480418337 6.868859911175239 0.1733420152143134 1.991001860668409 6.75864453941003 0.1424897119341572 1.888726340488148 6.616272483214395 0.3085170790360542 1.862294960238076 8.958305092040042 0.8042684170482884 1.099716826474294 9.093126143927059 0.825419032442089 0.980700711616318 6.801231133600977 0.8508814731519047 9.596565606883175 2.786260402312026 0.6592431128264695 0.7363942306933888 2.789286403240735 0.5598366635730299 0.6035540007470961 2.682135194043979 0.6532309940973402 0.5054053626882729 2.905079083063706 0.1228541511845539 1.266248519280649 2.83563463861926 0.2816211009279658 1.30634228797437 3.018641086903421 0.3006847591793181 1.389217672585142 3.684756515153851 0.8235596707818934 4.707622532428264 3.491794726229815 0.8415905324180382 4.771689175284942 3.564265924000888 0.8768572327876004 4.654878522577413 3.444949539119337 0.7184477652056386 4.718945165434092 8.649675785033262 0.516408671608409 9.184756183245021 8.766570929828397 0.7108870941679321 9.250891760302412 1.465460276260122 0.3736801957543556 3.380413423118164 1.682296136875304 0.4557641370134061 3.398656624358108 8.225959119738917 0.4555117528672519 5.414419796130002 8.722231390050037 0.7223895233348439 2.418637697851374 8.656076594058554 0.4258066085758292 9.037420260445675 4.79166666666707 0 1.941152492561373 4.69848997361907 0.1774138299771255 1.858941571842927 4.767934418063509 0.1774138299771255 1.979222877924103 4.98118188924248 0.1230027409798238 1.987473098632983 4.88800519619448 0.3004165709569493 1.905262177914537 4.911737444798042 0.1230027409798238 1.867191792551807 1.591713457052166 0.1548007314019903 2.018159542894572 1.597222222222622 0 2.18171510472354 1.504507112864325 0.1520973864100602 2.226102626056002 6.791401943565811 0.4305135451038939 0.8148513639200926 6.675787823115699 0.5353753061108986 0.8082104376269952 0.1541452116912289 0.5931284531279143 3.191731326373337 0.3081060721801021 0.5007106323901541 3.055427337587591 0.2376322123679114 0 4.999496727499336 0.1200104297255251 0.130065014588739 4.865482150170482 0.3090911019486326 0.1848054206581899 4.846454307336704 0 0.5117145852068534 5.15147943695864 1.04458256153786 0 1.942215186108469 1.114027005982298 0 2.062496492189644 1.001170681796771 0.2080778212467897 1.990633660574908 8.116801374022394 0.6660233043526107 5.842409809365849 8.021443929655238 0.8162506856136869 5.801547867455878 7.877041125562679 0.6708828222293103 5.83881137599114 4.836558264035682 0.5909665766189653 3.490633878748057 8.289801888811738 0.5997726187389237 5.871109997762796 8.433785072796194 0.4032737925356691 5.85978334546117 6.250000000000265 0.8492798353909473 3.825559621166499 6.250000000000261 0.6342592592592653 3.8255596211665 6.250000000000235 0.7849794238683179 3.985934695941407 6.102387430427308 0.8419983392435102 3.957191656401895 6.102387430427305 0.6269777631118282 3.957191656401896 7.172955418512647 0.5358499503253373 2.084746666848975 0.5554677013030282 0.603411452773853 6.415082720422793 7.370718957594114 0.8165745965185978 0.8759689129052135 7.440143771967891 0.8165745965185978 0.9952660746054356 7.171166698157466 0.8617021410116616 0.9362602149043895 7.240591512531243 0.8617021410116616 1.055557376604612 7.319317957364719 0.6782767375302594 0.9507383459059491 4.446799274626723 0.8049236668200661 1.791820531339438 1.005749085569226 0.8598437086201635 5.2951684113612 1.060973100468069 0.6256169708240682 5.309790551732089 1.180709687626715 0.7131620980750775 5.270532475883089 9.668433886345278 0.3598180119703934 6.86853231749482 9.716627355420236 0.1582555638349667 6.72265260899866 9.553237264324668 0.2888951195415032 6.81170254435418 5.97222222222241 0.8413466983803357 5.509497906302888 5.813143155525675 0.8284896213490569 5.378969890388356 6.034490436909715 0.8760786770727598 5.383512970257501 5.87541137021298 0.7045682984218167 5.333172491730414 9.02847980710164 0.1206759203614796 0.1202813060811724 8.958276242378746 0.298592947978066 0.1835838117417984 8.957574213054876 0.1779170276165863 0.3038651178229708 9.169217444339424 0.1559687851679989 0.2799339232079552 9.09901387961653 0.3338858127845852 0.3432364288685812 9.169919473663292 0.2766447055294785 0.1596526171267828 4.559865900383199 0.1592344259968783 8.008860494044637 9.524879026595787 0 1.206831858858503 9.485489370410907 0.1521883475396368 1.006900060826559 9.652090326845077 0.1320990691410974 1.086613394212728 1.523286115866264 0.1858714005298605 0.3841260623001889 5.985680053362616 0.6813094425900437 7.88081436934344 5.758837774408869 0.7063856505898263 7.909090617521782 7.360500654550506 0.8383036011577364 2.156539875432298 7.390656069257606 0.8699838310741765 2.00311602453559 3.862406306990565 0.5292165184932288 7.556597909301426 4.734477124183252 0.4491345921084484 4.832620752473463 4.873366013072145 0.3539237791688578 4.758776193346626 4.959043302400175 0.5074942238737127 4.782044061907433 7.005915780370429 0.8345456448281394 3.164406601718134 7.098104710649721 0.8384902000842587 3.33921455886187 6.899781373463281 0.8658217135322387 3.318648160787846 9.23351218598784 0.6573586530410727 5.133881466760181 9.140070897373416 0.8090838507739235 5.211827689127466 7.043904988921266 0.6380903569248847 9.474157341110036 7.050396505088483 0.5316022545022338 9.321933427605746 0.5614981946525922 0.6567304908228708 3.999708219001035 0.5685569981178652 0.8064358477992164 4.061766188067544 0.5943331505379575 0.6544104911468267 4.226328596179781 2.974523527508143 0.1228541511845539 1.386549952972593 0.8044422261348092 0.1284792087955593 7.772591498556153 3.106562051286187 0.1685899968277182 7.65824480629605 3.084300148339201 0.1552799390082223 7.469569929070687 2.91514765516831 0.1274493965690226 7.526828261395842 2.943892247951856 0.2827293355772449 7.402024312090175 2.966154150898842 0.2960393933967408 7.590699189315539 9.627005926460054 0.8323742093032842 8.84900718518019 9.446785941712822 0.8374535668260412 8.704833787167502 9.630629692228496 0.8365655025436872 8.623281602203209 9.489399306071183 0.6740190693697283 8.542954846304312 9.669619290818416 0.6689397118469713 8.687128244317 7.091869143764631 0.4091500405822318 0.7089653042446779 4.767851356892033 0.842960023515579 6.290514498870704 4.758710100269315 0.6402947794581253 6.317691115935748 2.500000000000017 0 8.797186939188025 2.623543085904477 0.1712387657756324 8.685014068051906 2.634816209501644 0.1247112619321832 8.872120781366551 5.642122719735026 0.1700985811682343 2.672726135896504 5.572678275290584 0.3336788280818153 2.632632367202776 5.836608074828556 0.8819717671692461 5.507939190698078 5.003274741495372 0.8819717671692461 3.10231306907458 6.110823627674716 0.118028232830759 7.270008361698814 9.026328582617273 0.4223683750514213 0.1835838117417984 9.237971813901819 0.4004201326028338 0.1596526171267828 1.311038453718063 0.1270234150834874 4.914399759809688 1.155014564869779 0.2930842867288871 4.827593111534812 1.093976111151947 0.1660608716453998 4.861378496315611 1.097824576547638 0.1248109575564658 5.014954013254069 0.941800687699354 0.2908718292018656 4.928147364979194 1.158863030265469 0.2518343726399532 4.981168628473272 3.02825939944781 0.4818615700698784 9.296021367800993 3.308780486257889 0.4090334233810331 3.731196490910316 3.333333333333653 0.3706657101241371 3.531835428623545 5.138888888889234 0.4135802469135801 3.023684247291941 9.024775235208805 0.4718044392634392 0.3841650533995735 9.163733169494094 0.5383387590816879 0.2005812416577751 9.236418466493351 0.4498561968148518 0.3602338587845579 5.615222996250739 0.1669824399099872 0.6930195832691413 5.684119425194919 0.1669824399099872 0.8086369285278934 5.764436904389608 0 0.7430033925720878 5.831134382194836 0.12935914748345 0.7429352857212268 5.900030811139017 0.12935914748345 0.8585526309799789 5.750816903000148 0.2963415873934372 0.8085688216770324 3.529364267686179 0.5694889647611188 4.735273252608046 7.386768764809323 0.8193771615317944 8.04409851623676 7.317324320364873 0.8193771615317944 7.923817210155589 7.511949269026602 0.8403194661058391 7.918743490763494 7.468162478280364 0.6596966276376335 8.007624210380094 7.581393713471053 0.8403194661058391 8.039024796844664 7.638888888888907 0 9.03774955135064 7.693968454610378 0.1806228384681939 9.120110384295373 7.786886959056041 0.1596805338941598 8.949023374848068 5.148960669264364 0.8382848976003462 4.39268732798941 5.028487746844634 0.8527050368133033 4.575232240178222 8.329758793640469 0.6521730686978251 0.9723346457149988 8.241297318136109 0.8100817540632912 0.9397720473435205 8.118818414823885 0.663782625919318 0.868045798304416 6.898347467051801 0.1580942565673842 6.819112606808614 3.333333333333426 0 7.834936490538709 3.229987172354503 0.8426978487410095 2.121100732503534 2.916666666667082 0 1.8208711864801 2.847222222222644 0 1.700589880398924 2.777777777778208 0 1.580308574317749 2.952209166012528 0.1573021089322821 1.639975640140447 7.382079032680672 0.8788829484388072 7.766854788314076 7.338292241934434 0.6982601099706016 7.855735507930675 7.532917190596163 0.7192024145446463 7.85066178853858 8.341811645243824 0.4371004461580482 1.730499416054789 8.487947612328805 0.4241874451287029 1.803759633377024 8.26387502490727 0.8426984779831679 4.46802244136885 8.055552499531093 0.8771403785738876 4.61408366996355 4.086620945070687 0.5485813412580604 0.536645881775449 2.905079083063692 0.1228541511845539 1.506811131442994 8.124992423022338 0.8771403785738876 4.493804974055929 3.385363565858356 0.8447207171170789 0.3948594238452111 3.307545214130887 0.8175024200026979 0.5811555176249671 3.225700874755924 0.8513931142796813 0.3815390393037063 3.277731107280953 0.6961138313967602 0.3470880942337312 3.798187739188765 0.1375717757185241 4.677463263058193 6.682837575690193 0.582514626351548 9.344540306676848 6.527777777777793 0.41358024691358 9.278312163512936 3.610417072878531 0.8755583120636823 0.1202813060811725 3.74930596176742 0.8755583120636823 0.1202813060811718 3.454808010302801 0.8447207171170789 0.3004855454687906 3.59369689919169 0.8447207171170789 0.3004855454687898 3.593002860959114 0.7202790291807611 0.180204239387618 2.638892464413366 0.1230051714046812 2.690489384626445 2.801351303028391 0.3001485032527736 2.729121989792592 5.913670394940032 0.6998514967472238 8.803771490133155 5.961442996759303 0.8769948285953204 8.963781274026129 5.891998552314853 0.7183415269756614 9.003875042719841 3.182501157176181 0.8772117198645681 1.988141721374586 0.1661036907307119 0.4366589229368885 7.502051185138205 9.568370773337023 0.4792350695137282 7.706599385495666 2.083333333333359 0.4071502057613257 9.318405932206563 2.192460317460319 0.4374632569077299 9.180941582399527 2.280700406350741 0.3729692110525856 9.39226209624859 5.993894064847439 0.8228566681519034 8.757458461376366 6.1604295289461 0.8787270419647241 8.848900474762623 0.7727777777778213 0.147427983539096 8.992523780263774 1.397235655059605 0.8109513258946984 4.211197308643721 1.536124543948493 0.8109513258946984 4.211197308643729 1.527777777778039 0.8787270419647213 4.36363284911695 1.666666666666928 0.8787270419647213 4.363632849116959 1.536124543948485 0.6896783678594197 4.348332849657206 9.829268705597988 0.3344825754129241 6.950707274247291 9.877462174672946 0.1329201272774974 6.804827565751131 9.83916518074729 0.2911756911124641 6.728119798745272 6.597222222222591 0.5992798353909468 2.823215403823401 7.799724600994264 0.7181714490797384 2.704937314040591 1.250035651045512 0.8436914627077146 5.999334541504401 1.407348816482092 0.7051168654829054 5.971878032552013 5.743698711081236 0.8284896213490569 5.258688584307187 5.965045992465276 0.8760786770727598 5.263231664176331 7.940445480677921 0.1419131964567794 6.084539372685486 7.916666666666779 0 6.15099820540259 7.738800727552812 0.1376768877187468 6.204340424359206 2.021114276860291 0.4751352368799062 8.454258905975145 2.140095728170155 0.4838810332234283 8.601539192517958 4.654265160054688 0.6052396032595554 0.1911128604163418 2.377941449133 0.8297931293084276 4.697905532240854 0.4104103375222098 0.4280434893876476 2.284334662570988 0.1754599883414416 0.4213591673812519 2.185874689115236 9.83916518074729 0.4115919520939275 6.795889873744994 9.829268705597988 0.4548988363943876 7.018477349247012 9.841371242791176 0.6001291746095538 6.933415579037609 9.680536423538467 0.5050483501855597 6.783470547285416 9.377510507676563 0.4831154837835105 7.502495409327459 9.187905890723769 0.4576015737401238 7.466447197448383 9.304752341422807 0.3791423004003754 7.570875899296764 4.034166781306447 0.8427503372448184 8.929154476430254 0.5981322801197804 0.6807889902434612 2.742842717302035 2.429217420561174 0.7388646537787527 3.233617260230135 0.8258192102092878 0.6703927587042883 2.94827077492219 0.8861519792246491 0.8321756275265845 2.902944618144599 1.016110552587129 0.7067761568789593 2.839602483852227 7.925775847944924 0.4096805338941598 8.788648300073199 7.92600650253058 0.5996388163035555 8.730938088605054 9.331099818416206 0.151616500216138 4.664696226940619 9.405729301865779 0.3739200702185755 4.638607826683364 9.452061814437524 0.1538699547251179 4.54242483907856 1.318540723996837 0.8386551986008538 0.6694688876632605 1.307508894547265 0.7001511681351698 0.5614468429864466 6.173734768762873 0.4978316637450272 0.8065934632963445 2.239052560244108 0.8297931293084276 4.697905532240847 2.034014915498624 0.8787270419647211 4.759336068002613 1.21921382237874 0.4787786254420072 6.053866456211477 0.9820126916980229 0.8382171311777038 3.189683612075868 5.469043319627682 0.4467822740996156 4.510572499597117 3.720926351884496 0.8343313910922748 1.597101743010658 1.297125772385739 0.3656003037735019 9.467324555114926 1.254617190449406 0.5956643938578389 9.470488596151364 7.200684483544773 0.496062949723368 4.022090963265798 7.343448171685193 0.4128053973752019 3.978849777528563 7.305532791404471 0.5057896322013757 4.185268477261713 2.568770318593626 0.8056452742314631 1.459995624965338 2.684144630144384 0.8794793894795168 1.393805085146866 2.683470504293128 0.6851246637109799 1.39377344187564 2.753589074588822 0.8794793894795168 1.514086391228042 8.333333333333464 0 5.910435593240278 8.344023459212913 0.1681349810389688 5.803101043677845 8.205134570324027 0.1681349810389688 5.803101043677836 8.32573896643545 0.1256009880009042 5.992496825781876 8.3364290923149 0.293735969039873 5.885162276219443 8.464627855324336 0.1256009880009042 5.992496825781885 3.991090609441357 0.389255887371864 4.040921784078598 7.276096249209427 0.1977201122899299 3.116996799241668 7.34554069365387 0.3462951163671355 3.150402619278602 7.14585892759397 0.3452359927236398 3.041804246548436 7.013888888889105 0.1352184883947394 4.715858207184954 6.875000000000208 0 4.82790383850963 6.798090691467451 0.146513116903679 4.721344911904625 5.418629213932733 0.8764486181388957 0.1051048806142585 7.638888888889237 0 3.264246859454453 7.500000000000347 0.1485750040772056 3.177371373410202 7.455290150219542 0.1265844569696342 3.310247698544502 0.142712474566713 0.6024247644887448 3.471810406133455 0.2825033232302903 0.4900544328361062 3.598712186352354 3.223189037228098 0.1552799390082223 7.22900731690835 5.858284638910675 0.8468260945378056 9.30726289133429 5.858284638910662 0.7218260945378103 9.467637966109212 7.935402617801038 0.7759355794586951 0.5354038531008347 7.844555030533224 0.8397674603699758 0.6704866543420447 7.856714795663952 0.6157030398286708 0.5840356190150018 7.774603889217423 0.8397674603699758 0.5681813156404779 4.24841682361474 0.4898419381240611 8.015262562570991 4.420977011494306 0.4092344259968782 8.089048031432082 4.271884256564926 0.5806075121271828 8.162088708614906 4.194560045116457 0.4614483192164221 8.144766451807179 8.146132241689841 0.3325913708784897 0.8655752205045175 8.173987740912143 0.1556773146987181 0.9153010022400733 8.165699587845419 0.3177226384439464 1.080461493858905 7.680962418275888 0.6781918073975168 5.624712617780031 3.20888641377381 0.579480059135039 1.068833837849505 3.168690801712241 0.5675024200026979 0.8765020596865749 5.679199957128928 0.1297330515791439 0.5717030217978646 5.814793863878337 0.259092199062594 0.6872522602057558 5.598882477934239 0.2967154914891311 0.6373365577536703 3.935535053885803 0.1588032124747442 4.040921784078596 4.097222222222506 0 4.106216002022427 4.163565936869158 0.1291720556913239 4.056665218662936 3.68055555555561 0 8.195780408782237 6.18055555555557 0.8195904256603781 9.412216197274951 6.041666666666686 0.8750000000000049 9.558968544368936 5.775988576967174 0.853377381713793 7.546097720327149 5.965163216006535 0.8655060877652504 7.639134550665192 1.642626570008442 0.8220730899310691 1.857875154897926 1.642626570008447 0.699205727872936 1.764389803340414 1.666666666667092 0.8771326379418669 1.727385834922515 1.848509435395821 0.8799056601119621 1.876259289779211 1.848509435395826 0.7570382980538291 1.782773938221698 1.824469338737176 0.7019787500430313 1.91326325819711 3.486810223928063 0.4178795758943404 3.663761919052219 3.440656565656869 0.4930789375233809 3.807335180850999 3.561982597162837 0.5959493865413885 3.907363201269948 3.608136255434031 0.520750024912348 3.763789939471168 7.236993599538611 0.8384902000842587 3.33921455886188 7.144804669259319 0.8345456448281394 3.164406601718145 1.042749325923548 0.4003246415572267 7.874439242395567 1.209899436687296 0.5766592439655481 7.884881870968472 7.579983610277388 0.4040183726452561 4.274562715689546 7.412892616129617 0.4128053973752019 4.259506158384637 10 0.6330885066268594 0.8988254449018753 9.810921154919598 0.427140329742385 1.229726732056638 10 0.4918757558115739 1.238348716377114 9.815601396018677 0.5445127699852982 1.061035363891043 3.480020595746757 0.5768876237658783 5.592817092274508 7.638888881912405 0.881467568011599 3.825559617138544 5.570404248649822 0.3038169771065879 4.706173896319705 5.696777953454665 0.1309662234640949 4.79358707860704 6.66666666666687 0.8364197530864206 4.867997607203344 6.639058874640805 0.8256833107237613 4.666425288051832 0.6898539738297254 0.5332081125360082 6.525053254531471 4.942973505480514 0.8692397560309805 3.47550334070908 4.946248246975555 0.7512115232002265 3.313569550329385 6.111111111111155 0.5913466983803424 9.037749551350512 6.132782953736336 0.5728566681519047 8.837645998763826 1.80555555555598 0.8771326379418669 1.727385834922523 1.987398324284709 0.8799056601119621 1.876259289779219 7.862268942836603 0.5201478998128922 0.2244764088868959 7.719940884509549 0.5922502147386279 0.1767314585523148 2.083333333333508 0 6.15099820540224 1.949128540567476 0.1311840450897702 6.051530723489584 1.998885518750156 0.1389799779236054 6.270207034036819 9.301803210843605 0 7.114882289644037 0 0.4955083395057859 0.9622892271203901 2.279713971928217 0.1863312613962728 0.9873876153534644 2.288319448329614 0.1631368675373475 1.142689750690888 2.480966908357474 0.1235365848911515 1.037244555833134 2.410809610210307 0.286673452428499 1.076690332706709 2.40220413380891 0.3098678462874243 0.9213881973692858 7.916663820212402 0.5864199081219663 4.467059823602131 8.079622664894675 0.5720239160348528 4.584147804497979 8.073301688865758 0.4755550930037824 4.741915302143511 7.910342844183486 0.4899510850908959 4.624827321247663 3.065057604333931 0.4615705537271616 1.65501010128541 3.176021256086227 0.2801643700303323 1.593215421941995 5.22569444444457 0.4457304526748999 6.882709484062874 5.329861111111247 0.5542695473251045 6.70228752494112 5.208897876364027 0.6230274782134032 6.741083124387934 0.523074328059557 0.1651836140513692 2.108567665680305 0.5749272488297236 0 2.002491815509413 0.7339468846124948 0.129507750943498 2.005965550799217 1.233691402808759 0.4452589287902677 8.65263177843827 3.416103718581107 0.4021123609044141 3.953534662757336 3.462257376852301 0.3269129992753737 3.809961400958557 9.040724477681444 0.1428971447867098 4.77881232286019 9.091627845950303 0 4.829598972151638 9.271714579932219 0.1391147737204539 4.797054203700683 7.163886943233368 0.1229427471378601 7.066741005691964 7.252683422100617 0.2694037336302947 6.926348475500735 4.652777777777866 0.821483797734578 7.227058028474465 4.591504600348975 0.8503621093459726 7.41309736144823 4.730393489237856 0.8503621093459726 7.413097361448235 7.077765481044741 0.6681215486704493 9.001341002547608 6.963386396077423 0.8672561407788961 8.973039518763798 6.910112860656487 0.6997707671304434 9.079361430621422 7.772605397129073 0.8702125383754933 6.958840581388619 7.640781364011845 0.6963686322476151 6.938509046165565 7.863496194621965 0.705605515465888 6.912598046370549 2.780160512708238 0.4125967204061997 6.169511923655904 5.200295523693486 0.3767023176038249 6.757712036853067 7.024921713186489 0.8770431156106588 8.510160754254102 0.6805953856885731 0.142770394553607 7.942317724920308 0.550648101712377 0.142770394553607 7.905233825009315 2.065006911678809 0.8049130876874857 6.420627963940943 1.989486213350937 0.6613032194542015 6.325674394314484 6.109666416287361 0.2744050872896976 0.8809559175000615 8.611094126096503 0.8426977901855954 7.23255273775043 8.024009521404128 0.609543161111566 6.743334426374632 7.845862123672753 0.5891428916083861 6.577405609430723 7.842049841573532 0.6202125383754933 6.758371737920009 0.8628559528522618 0.51773568045433 0.521093632138844 0.9078830629099925 0.5176652702866423 0.3451992192910117 1.023138976486929 0.5924046594864318 0.4656164383652467 5.069444444444634 0 5.790154287158891 5.20833333333352 0 5.790154287158899 5.128411189193794 0.1513103149602683 5.939442906249599 6.488143931609919 0.8314100031722833 6.828513120828847 6.609577281790425 0.7075833536846858 6.896456781305153 2.649546003067707 0.8587706148399054 7.003471794687949 2.604436642654695 0.8528719568016468 6.858697298509249 8.682019054394299 0.1617307650720728 3.626981606177675 8.818016885330579 0.1623045260605924 3.539421237226062 8.617364302965314 0.1245512918165134 3.426020867898246 8.685381188295555 0.2868558178771058 3.460632633507435 8.549383357359275 0.2862820568885862 3.548193002459048 1.435237530679359 0.8052047422497529 8.453564921122645 1.275590821755042 0.8369221500819011 8.553959811051396 1.822678275290488 0.3336788280818108 4.136423963867976 1.66666666666694 0.1635802469135799 4.146309770716034 1.597797446601616 0.2890206444401018 4.190145904469416 6.63659135612296 0.7306501562239665 9.531245351954514 7.266881210076615 0.5758912281005637 0.9050549559522092 4.588757023968116 0.7171471840249142 4.483352409446536 4.588757023968123 0.8405010268308168 4.333241755102357 4.551958362337892 0.8064760895133017 4.203363803521237 4.551958362337885 0.6831222467073991 4.353474457865417 4.930555555555959 0 1.941152492561379 4.86111111111152 0 1.820871186480204 5.05062633368693 0.1230027409798238 1.867191792551814 9.595931010227847 0.3976531599021799 2.35912048810538 9.624750748074085 0.1476531599021798 2.41270681431242 9.678125886788045 0.316329604444608 2.49470328270499 7.936507936508029 0.2205320399764845 6.322828642661408 7.986111111111212 0 6.271279511483766 7.808245171997246 0.1376768877187468 6.324621730440381 7.438537526103147 0.8459682467713415 4.883941685827288 8.83426758822576 0.8019080767427613 4.728238468826245 8.834271225431966 0.6642822918661323 4.884217834971828 6.805555555555619 0.1586533016196638 8.155686640088691 6.666666666666737 0.1586533016196644 7.915124027926336 6.527777777777843 0.1586533016196635 8.155686640088675 6.388888888889177 0.5992798353909472 3.665184546391596 6.527777777778082 0.5864197530864201 3.504809471616706 1.701388888889111 0.842849794238683 5.128607103712262 1.665843627482748 0.8790579095343956 5.258885632243937 7.075360224814883 0.8345456448281394 3.044125295636969 3.532141354680788 0.1577759512654591 4.421466710132873 5.234286957467293 0.5009602827209918 1.204480324194425 2.161588195672747 0.8298935176088738 4.020941767491718 2.173672277282213 0.6897220659328707 3.91438456818532 1.052904899426686 0.1573394417289152 2.137641836650348 1.188877893444796 0.1573394417289152 2.136579143103051 0.7324734022815549 0.5857683793242856 1.580461490089307 0.853402263719812 0.4855704828789165 1.668358144707059 9.877689085220098 0.1232802177586016 7.778798738929448 10 0.244993687852968 7.775450935957213 9.85732622846248 0.3525152872723298 7.658018520822262 10 0.4992661124195236 9.804416779553186 9.903897324975455 0.4992560670909049 9.900524894840055 9.903897324975455 0.6174675916547383 9.903891884713131 9.85175344475423 0.6522074184973756 9.755651911472526 9.755650769729685 0.6521973731687569 9.851760026759395 9.85175344475423 0.5339958939335422 9.75228492159945 3.759315722298523 0.8576336392489159 3.343825936468509 3.905908271181951 0.7026680045989996 3.263691931506948 9.510110501189629 0 5.300349834600658 9.482189740882077 0.142801532610317 5.409127885025741 7.061474354481339 0.3281716006413153 5.332176607241431 7.146672021223188 0.1566612219903696 5.339861639616451 7.137024555480563 0.1715103786509457 5.181062724378149 7.253641716093638 0.2923859845257957 5.248391673450247 7.338839382835488 0.12087560587485 5.256076705825269 7.263289181836262 0.2775368278652195 5.40719058868855 0.129665152354148 0.8753524277156527 3.349244206854593 0.3506300795812404 0.8057478540768167 3.289298393517195 3.493138519875618 0.5241557215300892 7.945434964458977 3.396637870926885 0.7307943742402041 7.920962102719054 5.279895394760967 0.5941808047470314 0.7396512123287045 4.248608380120885 0.160621876711029 1.136714220665849 4.395987336570085 0.1455878178189122 1.194890803512244 4.429141950596063 0.123618508585231 1.018472814915598 4.519573731610143 0.2692063264041432 1.114178075677261 4.372194775160944 0.2842403852962601 1.056001492830865 7.562799543245793 0.1623497096545151 3.701441879589455 7.359933972287985 0.1610529671090024 3.6500967334935 7.50000000000029 0.1232807567195944 3.827851807137272 7.359933972287979 0.2843337238285968 3.732576456851645 2.777781353302255 0.1230051714046812 2.690489384626453 5.891998552314856 0.8769948285953204 8.843499967944961 7.088023488350887 0.8458056464891206 6.554643754601654 7.107262749106373 0.6857882256413728 6.62372349961291 7.092258551306868 0.7192568610818011 6.39194675398395 6.26581070487506 0.8323280170295567 1.525586632012799 6.111111111111528 0.8364197530864202 1.66049611170535 6.328478680378968 0.8534687638533137 1.662169671591001 6.344289385253608 0.6857967808828704 1.607447729285894 4.5416353288887 0.8401964484779563 0.8225923499663108 4.486484505356973 0.6947785650004794 0.8426557821754648 5.277777777778121 0 3.023684247291945 5.433789386401672 0.1700985811682341 3.033570054140018 5.284293224749883 0.1234567901234574 2.884216762192641 9.462063144778183 0.3543686502747994 1.980789882906748 9.520420400464554 0.2039377552825196 1.922796158289702 9.655638552526089 0.3762110191583802 1.857870604178423 6.095909383843521 0.1711427152978693 5.076724613493802 5.972222222222422 0 5.188747756753111 6.103679765674293 0.1236874120287676 5.264248314875147 8.809421808104215 0.8440998247051198 2.709560966672599 8.978204392541191 0.8623358918101773 2.833686819833775 9.316687299144871 0.8589381285352162 6.226685531457969 9.259498154439825 0.7286251061055282 6.420065664112566 4.716889076450754 0.4942379116407387 8.048297409627967 4.77387432721499 0.4672704538972413 7.857033942618437 3.958333333333374 0 8.436343020944594 4.09722222222226 0 8.4363430209446 4.861275100846723 0.1219577441499549 9.879718693918779 5.000163989735619 0.1219577441499549 9.879718693918793 4.99999999999998 0 9.759437387837572 5.000000000000021 0.1777127166755184 9.701280190547831 5.138888888888918 0.1777127166755184 9.701280190547843 5.00016398973566 0.2996704608254733 9.82156149662905 2.847879803443324 0.4228554972352825 9.506157669105136 3.056213136776649 0.4516800716650506 9.605534127985486 2.84296149203396 0.5101860487308372 9.663693155463893 7.882555040766327 0.8162506856136869 6.04211047961821 5.038562025827657 0.8635620671788284 2.484635281571676 4.179163935676431 0.410621876711029 1.337182822034901 4.207119783266278 0.4929164912569083 1.181347627172143 1.835237225256193 0.8397506840396576 8.555692750709984 1.86965005782715 0.6689691470717154 8.478445608028565 1.837750719077264 0.7150394221074545 8.70991393406965 7.520906312615843 0.5133712533204935 1.195808977251268 6.788100016847251 0.8761733505124025 6.940629702365834 1.143534986508792 0.8424241744563288 6.693591033925388 1.0029914317628 0.6749613818536773 6.720715504075663 0.9705675563653018 0.8325372073973485 6.659247899877132 1.111111111111304 0.8767239235359244 6.482497678301282 0.9705675563653123 0.7092611309332729 6.509622148451557 1.143534986508802 0.7191480979922532 6.543965282499813 8.326908781560796 0.4855379534373593 8.879522049690355 8.263888888888783 0.1582752621694223 9.525889933172198 8.308990078885234 0.3006550782514166 9.391517491720373 5.306197290987091 0.3272322924411423 8.686483597068477 5.399903472833138 0.4883781719273838 8.783865917832868 5.234982475561405 0.4828970731886537 8.704600234097216 5.222125030209265 0.4448615239413554 8.873038219286769 5.293339845634952 0.289196743193844 8.854921582258031 7.510607042019629 0.1986768532358882 8.110162413145606 7.430555555555587 0 8.195780408782486 7.353280366447962 0.1613672280349112 8.059991336719534 4.882486110874951 0.4206782408588454 8.014369737283616 8.680555555555681 0 5.790154287159125 8.257392468516738 0.4403250684151321 6.850181781585702 8.176243259762089 0.5204002695031805 6.749468572280501 5.408350228749189 0.8734346943885365 0.3515720421243946 4.655442142217163 0.5348240840400524 0.5001532371445109 4.705492216549635 0.535744285649833 0.7676413726223119 3.421417304901373 0.5830615166756317 3.956602463249705 6.759724180093862 0.8086805487648137 6.75738266016967 2.361111111111529 0.7964364956090177 1.820001838099834 2.543292059975347 0.8798430341610203 1.876064041387224 9.900529049222195 0.3810545008641891 9.900524894840055 9.752282493976425 0.5339958069420412 9.851760026759395 2.043523213512143 0.7920759517337193 2.181104077715833 2.056842768729147 0.8799056601119621 1.996540595860396 1.987398324284694 0.8799056601119621 2.116821901941564 2.017032648907552 0.6719816118456814 2.116210874933831 7.244631445200507 0.4919575130035104 0.7368306057711373 1.516170635920369 0.6028776547811522 3.838679312950583 1.288559621599442 0.1364388232760251 4.284422437580773 1.268718351758177 0.3569766018246566 4.215690262677246 1.23015873015899 0.2205377785486315 4.398327745362273 1.389464113268272 0.1254403975265219 4.390614747938024 1.369622843427006 0.3459781760751534 4.321882573034496 1.428023734867458 0.261879220802547 4.207977265252996 4.866003604554042 0.2491968208589111 0.2472587362385247 4.752202380611688 0.2889658991902865 0.4198856012330882 1.993910678236064 0.4227948457680603 9.810811049203084 1.874559136558557 0.5571318556796726 9.799531156531321 2.078347097143123 0.5948640608941587 9.837000653045017 9.024935906982476 0.4042758534378298 6.889548643666441 8.843735379060901 0.4245583989545821 6.755110749276177 8.841351923414496 0.373876675986523 6.960625205948574 4.236111111111482 0 2.662840329048371 4.097222222222591 0 2.662840329048365 4.0519391150096 0.1374642209051072 2.716883652296647 4.81731900328019 0.5009839974667153 3.639901161146764 2.82156988560931 0.4990160025332846 3.880463773308998 2.500000000000209 0.499016002533284 5.458931135813186 3.289541225502393 0.4990160025332839 3.880463773309021 6.987031172251742 0.4980768357196363 6.767911045738703 8.090277777778144 0.8428497942386828 3.08382490033273 8.055555555555927 0.8428497942386837 2.903402941210974 8.090277777778152 0.6856995884773665 2.963543594251561 8.125000000000378 0.8428497942386837 2.783121635129807 1.875000000000019 0 9.158030857431509 1.895126026609733 0.628727041964721 4.839523605390054 1.79095935994306 0.7215768362034041 4.939758027124357 0.1460585805082219 0.3984273955316436 2.33132178901035 0.1460585805082219 0.3913498734401991 2.473371674859727 3.680555555555585 0 8.676905633106934 3.757970185330973 0.1500996158455449 8.646747271199041 3.530063316350582 0.1343924907420475 8.603931091154964 5.277774069646467 0.8492770886267835 3.665186687282326 5.294089689467841 0.8505996579482107 3.829674420673523 0.9554163354527145 0.8321756275265845 2.782559338083223 1.172802739905873 0.8746005293523749 2.840740636788755 1.253388731865781 0.2816026955552529 2.109624525204727 8.994221859523462 0.4595177561101545 1.22980200551077 9.114286168193988 0.5270056073843237 1.276695613570206 5.53809105113241 0.5065294348555772 0.743706749281811 2.72737586422129 0.3178098802946607 8.664141116636848 2.81216611165017 0.1465711145190284 8.656032681691812 2.945750024312806 0.2697899116270387 8.579584161986483 1.041733442272376 0 0.7408192651255785 1.180555555556038 0 0.7426869956753083 1.115758013333468 0.1823537584165638 0.8689040040981698 8.063236407566659 0.7216377519846959 2.753267545050015 7.993791963122217 0.8787879577460123 2.753267545050007 0.916533886044431 0.1585383527891643 1.608807442995889 0.9985122058861264 0.2865010706717662 1.656473341396945 1.883046699476119 0.6387096730959561 2.24882799391341 1.853412374853261 0.8466337213622368 2.249439020921143 1.896366254693122 0.7265393814741989 2.064264512057973 0.5164604999177543 0.4472171799457096 4.225505065972582 3.774897906573655 0.7139851498523416 0.1741868424384906 3.775591944806231 0.8384268377886593 0.2944681485196624 3.687195470975898 0.1576071073199354 8.497908152069623 3.60614767621533 0.2919995980619829 8.545214916198834 0.8399020571896352 0.4674370643835699 8.213662295561493 0.9759993824125974 0.5564325293910377 8.145147706603144 0.9076375972249608 0.4567571709482644 8.004572160212902 5.303819444444469 0.1957304526749014 9.052784714610635 5.416666666666693 0 9.037749551350487 5.374448033018315 0.1663566955899362 8.901749416077303 3.994106478787151 0.8306075121271828 8.081901171227443 3.823437831062179 0.8776651354283286 8.058940222418737 3.263888888888854 0.6634593850159876 9.618251234555514 3.194444444444414 0.8846348105862194 9.599062313062639 3.347918198724279 0.7351586537014678 9.501369912297125 1.327791210615167 0.8109513258946984 4.090916002562546 1.245785988687011 0.8822729062697163 3.908180119119755 6.458333333333447 0 6.511842123646002 6.612253078845131 0.1550790671441155 6.525731389673838 6.460931809775117 0.1216934405095022 6.361944625217345 2.63888888888928 0.1635802469135801 2.221808873417324 2.222222222222631 0.8364197530864197 1.981246261254957 6.736111111111503 0 1.941152492561453 6.593739054915869 0.166027367101897 1.914721112311381 6.689200094965591 0.1424897119341572 1.768445034406968 5.972222222222227 0.7547186939188326 9.799531156531334 9.159519589138235 0.8589381285352162 6.233901076743191 3.88888888888886 0.1929529241866843 9.570355951885922 3.749999999999956 0 9.518874775675243 3.888888888888854 0.1407332347052415 9.42071958228288 9.395489724246016 0.3913413928820977 7.844684072771022 8.798481300866129 0.8706501079995652 1.61131029833229 8.659592411977226 0.8706501079995652 1.611310298332284 0.4064522233575363 0.1520499663359298 8.511793585118841 0.4762948856727613 0.3692170067928029 8.631397794663751 0.4255480725481686 0.3033379418474162 8.421254328622336 6.156067873761433 0.4796936192618382 4.570500396280178 5.138888888889268 0.8810553555192381 2.383986169055238 5.119047619047995 0.6605233155427545 2.452718343958764 5.177450914716538 0.7446174226980664 2.566625039822014 4.179090552969962 0.8765432098765438 7.285520026644696 8.757394798153246 0.3923945816560306 7.945408956054995 8.679341238233215 0.318872177618079 8.091855718083881 8.870583073221695 0.4264775959620484 8.096184047393315 8.735428165410095 0.5262588563090724 8.140214504556901 8.622239890341646 0.4921758420030546 7.989439413218582 4.303864586904879 0.1587783504203283 0.9658211017532032 2.632324523872781 0.8420954585849854 2.829540688621408 2.62379530813215 0.7157874372462282 2.983298742282837 2.373646213447152 0.8001608214202308 6.967347868692648 2.254906962667786 0.6474918283378694 6.909908836513385 2.478082856101714 0.6530327782218777 6.953359125312607 3.798187739188753 0.3875717757185241 4.837838337833089 0 0.6364515816355996 5.357058218162754 0.1573907238145803 0.598891595870267 5.415874610945123 7.708439891903288 0.8235595799300259 1.219645836240172 7.566013957698349 0.854330958499621 1.141742502131983 7.770654025434129 0.8752962827956563 1.029854558815919 7.697565977104136 0.7296272412952773 1.072050784127107 7.839991911309076 0.6988558627256822 1.149954118235296 3.611111111111285 0.4650205761316856 6.070810668014873 3.635312979227841 0.5268909645739429 5.868516728024033 3.774201868116719 0.5618703884422573 6.028891802798936 3.84926024819521 0.4722548482689273 5.898407162289427 3.686169491189776 0.3754050359583554 5.940326027505364 5.673403736233379 0.4731090354260594 3.865653389860187 5.486111111111401 0.5349794238683117 3.945840927247628 5.567198870191113 0.5896155401733336 4.146069914376374 5.75449149531309 0.5277451517310813 4.065882376988934 0.133454162745723 0.3898578546721537 9.689952367041279 5.328069575413875 0.1600334604675091 1.150334904477662 5.34722222222266 0 0.9789020439120247 5.486111111111547 0.1186994392364495 1.062428974542182 9.023326228307376 0.1257979883938148 9.879718693918838 8.889013435001942 0.1778297095121991 9.701354704233555 8.884561885531603 0.3036276979060139 9.821636010314718 9.092806423003573 0.2766423424291472 9.840154439302806 8.95849362969814 0.3286740635475314 9.661790449617524 9.097257972473912 0.1508443540353324 9.719873133221643 8.196776905407248 0.3065202193663863 6.158578143748599 6.319444444444622 0 5.549591674996627 8.884437339418495 0.1257979883938148 9.879718693918843 8.888888888888832 0 9.759437387837679 8.750124546113062 0.1778297095121991 9.701354704233559 2.500000000000421 0.8413466983803375 1.740683649092628 2.543292059975352 0.7211897325413578 1.795876503999776 0.4669195475984886 0.3020140607184396 0.4966343679030818 2.192236194302227 0.6969998340539778 5.607955311097287 8.818181515098779 0.8551022191199292 0.264858721085093 8.818331551142458 0.7294786659561121 0.1445774150039169 8.749067001463825 0.6483925788350225 0.3460011267786851 2.569444444444421 0.158653301619664 9.238218394818993 2.762024555480349 0.171510378650948 9.165715889806588 2.772990815796319 0.294479589703542 9.239572053848615 2.649855149204823 0.122969211052594 9.352168327554757 2.580410704760391 0.2816225126722581 9.312074558861021 8.817927281401811 0.1570487328970166 4.335833712302914 8.680555555555863 0 4.346778614185075 8.694873559585032 0.1303069094118925 4.515453403146743 2.083333333333537 0.8773401335379738 5.575093815026746 2.097838728325301 0.5879642593755801 8.706845008274504 1.978857277015436 0.5792184630320578 8.559564721731689 1.986701444289332 0.3959167738478483 8.611693586044009 7.08061427516452 0.1285527027343369 3.808116706159938 7.079999350456939 0.2983634777605499 3.878462673735993 7.218326025229993 0.2896056698433394 3.712841355874333 7.246936075963553 0.6201034885403267 6.859111969325627 2.152777777778204 0.7964364956090177 1.699720532018651 2.109041543694602 0.8797607796964505 1.514963679102472 5.694444444444439 0.8797186939188272 9.879718693918786 5.833333333333333 0.8797186939188272 9.87971869391879 5.833333333333337 0.754718693918832 9.799531156531334 5.972222222222231 0.8750000000000049 9.679249850450123 5.833333333333337 0.8750000000000049 9.67924985045012 7.875281543895066 0.8551343944826472 7.621132989291149 7.736392655006177 0.8551343944826472 7.621132989291144 7.776636893925552 0.8787038692746927 7.48911522902549 7.735251771153955 0.7338382637573398 7.515874339939987 7.915525782814441 0.8787038692746927 7.489115229025494 5.486111111111141 0 8.917468245269321 5.347222222222253 0 8.91746824526931 5.443892477462764 0.1663566955899362 8.781468109996137 3.383538517022588 0.8399825791522508 3.934733134871306 3.541666666666957 0.8814676548820863 4.02602846463495 1.3194444444447 0.843867741917775 4.476469504443478 1.187541325074743 0.8704551905130299 4.416519682069893 7.240049131257273 0.4807443895667056 8.028590750254963 7.075502588670206 0.4977869811213325 8.140178874106947 0.3972683913609122 0.8407539444192098 7.469885545216767 0.356366442719779 0.8407539444192098 7.567096384340157 8.958149301153842 0.7979337687870318 3.063933795625169 9.133410111111642 0.8387925562234754 3.08168109747333 3.132541519365029 0.5967583143263107 8.172113865355778 3.005979026286305 0.4998546726974457 8.245184754804081 3.088129367208147 0.380139859584625 8.217743866779649 3.089357755259966 0.4630560489577065 8.358097286191175 6.650362495406663 0.7133904073140284 1.349473607121642 6.672052062601236 0.4994702546601977 1.451386810608961 6.771998513048501 0.7050632786605924 1.41737076493246 0.6394210808720648 0.8361061013632288 4.902476833112409 3.055502346380161 0.1208263187111607 9.879718693918797 3.055555555555531 0 9.759437387837574 2.916613457491267 0.1208263187111607 9.879718693918779 2.917271038712405 0.2936818159464432 9.826907818655032 2.917324247887776 0.1728554972352825 9.706626512573809 3.05621313677667 0.1728554972352825 9.706626512573827 1.666666666666955 0.3510435038212817 3.871381071101926 1.805555555555838 0.4135802469135799 3.985934695941146 1.805555555555848 0.4374632569077018 3.791193533714486 1.655059524809264 0.540340911688854 3.724125688111378 1.655059524809253 0.516457901694732 3.918866850338039 9.553957651097535 0.2919381297564862 2.260931926534045 7.661713581399718 0.5737114182818597 4.313350865096391 7.529811182503433 0.5814097249690939 4.230576315912137 6.38888888888888 0.1582707134019731 9.646142875946435 6.249999999999993 0.1582707134019731 9.646142875946431 6.38888888888888 0 9.759437387837639 6.348315160117678 0.2189790409230793 9.736692610775869 3.541666666667022 0 2.903402941210677 3.413384819797726 0.1986768532358955 2.938066251654955 3.531119424610663 0.1524152980208935 3.050794559815091 2.500000000000378 0.1586533016196625 2.46237148557966 2.361111111111533 0.8413466983803375 1.74068364909262 9.881042876086408 0.874428163502075 1.244260007902684 9.639921101243491 0.8340628810678065 1.279488187998909 2.286035025261927 0.8472969823733285 2.877933821559678 2.422026339815274 0.8736919786612428 3.05716099487205 7.872155094671588 0.4000643323873302 7.384802555355051 7.802710650227134 0.3007844969963865 7.505083861436223 9.031189292125427 0 2.78298603160329 9.100516887112963 0 2.662619558019624 9.038665431851893 0.1465538219109792 2.845914762975157 2.347187505688446 0.1863312613962728 0.8720465366532535 2.425950280237009 0 0.9879028951171022 2.548440442117703 0.1235365848911515 0.9219034771329235 2.034038526998553 0.8473310069176386 6.694965703628832 1.874969828411382 0.8744202423850347 6.588362391585795 4.367375330235879 0.5751312667980781 1.122398555251563 4.125179642543268 0.5822946145458792 1.063633980311419 4.269976610932357 0.4928366522521989 0.9975801797998116 4.351916751655367 0.4034585289632279 1.115293826660536 2.830093267546729 0.1523733457084931 4.8443014901988 2.499325874149179 0.6469919726118006 1.500089393659058 2.569444444444873 0.8413466983803375 1.62040234301146 2.684144630144375 0.7208260878598542 1.554180159921762 9.666256683002477 0.6716782265618941 6.736450891920779 9.54037999718267 0.5748854402113012 6.679354098899879 9.508197338846291 0.6945724177816132 6.537616455702482 7.617031889035127 0.8235596707818934 5.467167803163582 2.638888888888894 0.4426143828504343 9.489112947067721 2.50000000000002 0.3512676844700983 9.408925409680247 2.497284837555255 0.5004549264493976 9.356247470474024 1.805555555555985 0.7184793363222042 1.647198297535075 1.944444444444868 0.8413466983803374 1.740683649092596 1.987398324284714 0.7212523584922996 1.796071752391771 5.110280340686587 0.3129233262418466 2.134716772157285 7.15160063895466 0.1610529671090024 3.529815427412313 7.013888888889187 0 3.625090777697919 7.001180840097055 0.1492898032521447 3.462485990234009 4.096445696130339 0.8272006584194671 2.893396447815455 0.3615551200045831 0.6741806111314632 4.025253235160671 0.1402203441090819 0.610632799655331 4.039787728397001 0.2775758313820496 0.5117301278862458 3.90107818136468 3.380736487458987 0.8274378517186284 6.169428746535715 3.242936672954884 0.857358246403778 6.096822753290596 9.674401198566063 0.8492924393869811 8.070911435954718 9.755881688795398 0.7934113545232193 8.179343190905719 9.073863179046972 0.170095286849353 5.290053543009937 0.09947510515994346 0.6182420358998233 0.09607770356021565 0.09610811528686625 0.5000305113359906 0.09607770356021565 0.2456666973857979 0.3499058867902159 0.1475667140793927 0.1495585820989316 0.4674140351095655 0.2436444176396084 0.2490336872588751 0.4681174113540486 0.1475667140793927 6.490795564074295 0.4759738900413642 6.92997291827346 2.515306755746938 0.8344321436243896 7.501141533493318 2.439777557803283 0.8377342751179574 7.656372184627918 5.223060330633137 0.5451122844506885 5.78165165130361 3.347918198724277 0.8505238431152484 9.180619762747288 3.194444444444422 0.8389917695473225 9.133974596215369 3.321657545844005 0.8758526887930351 8.960220434525638 3.336242411234962 0.7263765319082836 9.103090645922482 4.45686833074773 0.8765432098765438 7.285520026644706 4.465039597763285 0.7269053192225163 7.344806121878872 4.526312775192176 0.6980270076111218 7.158766788905107 9.167098022774207 0.845027769753929 5.975584891565591 1.938685231075149 0.1604107988874005 0.5675173996590895 5.363534133912278 0.6005996579482106 4.030143264142156 0.1493891126789164 0.5953609259862227 9.030911831124516 0.351318682002733 0.4792125617232466 9.100815341581477 0.2019295693238166 0.4004102620950537 8.963030389689397 0.143713513597384 0.6095923606695191 8.875773552263638 0.3456430829212006 0.493443996406543 8.945677062720598 0.2931026262763003 0.688394660297712 9.013558504155718 4.620690642494821 0.5282032165910395 3.134837344451926 4.731793949176625 0.5159528782567564 2.990526812490723 4.505883763160352 0.5297491977633159 2.978968717103709 4.347393380462262 0.1594124993595319 9.011205791538526 4.337818477527894 0.3126799885279968 9.13911310393655 5.676957138493675 0.6569683423941626 4.527324871371667 5.588743970821065 0.4719145056686316 4.43698203608046 5.608655836184547 0.4357233862390462 4.582334675704658 3.347918198724265 0.8505238431152484 9.421182374909666 3.333333333333311 0.8846348105862194 9.59906231306266 2.420147912416843 0 0.5494337490824762 2.480735703537843 0.1569576360415673 0.5874758408489454 2.3753468817117 0.1513980192992155 0.3803865886818495 2.429881429704737 0.8056452742314631 1.45999562496533 2.317374877027941 0.8797607796964505 1.394682373021312 2.316700751176685 0.6854060539279136 1.394650729750086 4.314162681764095 0.5643903108652103 5.404404858533633 4.205035768788191 0.5645193864602317 5.201668598609058 4.418266938049847 0.5737929552313666 5.290069991715894 2.355479469706374 0.5972969823733285 2.837840052865958 8.472215040439703 0.4456101125769538 7.303875427388516 8.313492063492081 0.5294679600235177 7.204891553923359 8.328840203751112 0.4224304529846764 7.015983196224468 8.348681473592364 0.3929624929611587 7.24509044590289 8.487563180698732 0.3385726055381125 7.114967069689626 6.589154032620017 0.5744889406956519 6.850382449207244 6.741542563548421 0.6693964425351442 5.670651526628078 6.835888233854531 0.5211083824956781 5.641842922071016 6.89442817946488 0.7008973689056677 5.793041811835021 3.925619705409215 0.4558843538462774 5.394171277578222 4.065236828911575 0.4264902391942454 5.409710493892874 4.533201987356108 0.6431500085401989 4.129990629412813 8.055555555555479 0.5721965991921903 9.541046478345159 2.840604717590138 0 0.3345375246444635 1.805114692114118 0.4073672138965957 9.839624925225021 8.125000000000105 0 6.271279511483779 8.242442535840537 0.1646070229096069 6.345318282546884 8.097315885108525 0.1396980012165794 6.45243170192225 6.773966158233055 0.3336042518726817 2.71764030027397 6.846469356353247 0.158296794386336 2.839687578613248 6.924565368071114 0.3058126748200459 2.884776332001203 2.237512841537449 0.3618768613617426 7.786467277212974 2.185429508204118 0.1372112235016605 7.756396950692679 2.362972278758471 0.2768763775974235 7.804100112922804 8.972733988151933 0.5414395166556523 6.093259375304369 9.168293163805997 0.5454364153968706 6.29599019693759 9.103332959645108 0.4779378035173066 6.0850125698475 8.312876629801019 0.1556773146987181 1.155863614402425 6.458445409800197 0.8541845790095233 0.2653257331428162 6.527758000570591 0.6472741521780525 0.3462385004274292 6.458857017184417 0.7254254699918643 0.1450444270616446 8.541666666667115 0 1.700589880399296 7.288947608497856 0.3785527027343369 3.848210474853677 7.094503164053419 0.41353212660265 3.735947922511237 1.590361572893636 0.122159213345268 8.60427262231172 8.503229517240641 0.1532737925356692 5.819689576767448 8.495635150342627 0.2788747805365734 5.901750809309046 3.099347663387065 0.4990160025332842 4.361588997633698 3.102452556807489 0.5041324570638184 4.518642955101731 1.180555555555578 0 9.158030857431498 1.319444444444469 0.170098581168231 9.177802471127638 1.227681327941299 0.1400510296619452 9.330630633178956 9.549957469306229 0.6980391565690477 3.743324408525603 2.595408314370087 0.6932027584642949 7.271083368048453 2.566236587220511 0.5144181693232853 7.330755809956192 2.666130488726371 0.7116422999374522 7.427844581554287 10 0.625838537496457 2.575944175603131 7.297531853643923 0.8461692317464962 9.72419257034289 5.192369173685988 0.4128142798156403 4.011390508980201 5.157381713751554 0.4224308352708165 4.20372913675257 5.01222964817234 0.4184928981913911 4.01091394390596 3.486629715081567 0.829480059135039 1.228714426276912 3.359413044240914 0.7066345129498047 1.302173741401077 7.222222222222571 0 3.02368424729208 7.137207360320536 0.1977201122899299 3.116996799241656 7.091984900607115 0.1475158804337099 2.948491694598848 2.083333333333757 0.6377831939893552 1.739814300712371 2.01388888888932 0.8413466983803374 1.620402343011428 2.039597099250155 0.7211074780767879 1.555057447796192 1.388888888888909 0.3956478552797877 9.314496393063608 1.388888888888914 0.5116500309338707 9.185898146062572 1.388888888888904 0.5671007238771965 9.423101760383595 1.484198104056232 0.4810520323977712 9.341436083167846 4.358737099341795 0.5257849754378303 8.933493854953047 8.447810040063999 0.5140349569123955 1.475059756466331 9.867359704670188 0.1234989187098336 7.230627029526134 9.774735139436277 0 7.230375565582719 9.696628410268175 0.2015624481354268 7.095379906525588 5.364344941957221 0.1700985811682341 3.153851360221188 3.218997291520463 0.4090334233810337 4.45288432739734 5.025455439815053 0.4768106633978587 4.916832161994296 4.250404732024291 0.8545821165225231 0.8786862028901079 4.130178831067155 0.7244460183314925 0.9748873157179393 0.7248244173374406 0.8478129270843973 5.833012489065831 9.213691541352309 0.3831346096232646 8.441888577094215 9.35258043024119 0.4705881764493057 8.515764414674624 9.312110692328883 0.477393599398529 8.36453355845536 6.521081837893473 0.8709264557095009 6.22483571567972 6.87632093684941 0.5349794238683141 2.976726689389857 7.001580357019879 0.4588667279930518 3.08749493141722 6.941429957943301 0.4093005070332265 2.939908787782672 2.708333333333472 0 6.752404735808135 2.249560507897301 0.8766367700467236 5.841965185741173 2.289018924421553 0.6962964705627276 5.754545375730539 2.404354479767493 0.712268216106686 5.907149668177908 4.20243981212048 0.8306075121271828 8.202182477308629 5.303233217592634 0.8220214763374476 8.919866053106063 5.381123938757041 0.8426978487410108 9.097416485211575 5.188415393518534 0.822021476337451 9.118736358016864 9.470742436609525 0.5077646144167859 9.208141749252341 9.317105676978844 0.4679237824662047 9.331642168886514 4.596555615099549 0.3564006043235402 4.79012933522452 4.520933850733201 0.498654799830324 4.853299032542754 4.671110261777701 0.5405233797236807 4.700038520287046 4.48522586477819 0.4931994588340364 4.697021537891739 4.410671218100038 0.3090766834338958 4.787112352829213 9.714671121997249 0.1619639009469724 6.0420961015598 7.499897658191561 0.3077585146285622 9.821484678363237 7.499999999999986 0.1776634377349947 9.701203372282066 7.361008769302684 0.1300950768935674 9.879718693918829 7.291564324858237 0.2808152415026218 9.839624925225106 7.291666666666663 0.1507201646090544 9.719343619143935 6.397923124823405 0.8534687638533137 1.782450977672176 4.375000000000295 0 3.8656533898601 3.524103809284065 0.8528704490180076 3.644931260729203 3.406096840136504 0.8707855311253142 3.451947571557597 1.90410990393829 0.1665850370872342 7.493786644870117 1.855248851695405 0.3121543992134192 7.638103106764866 0.5941991379371975 0.591455580231892 9.032225869772587 0.7186717375131092 0.5919844574416879 9.244520984474267 0.5706016042764906 0.6199255637106145 9.264907389159188 3.878479456477694 0.280119087432847 0.474912806890891 3.958589212164369 0.3387167950307097 0.3350433815417291 3.750949839237524 0.2789448786751451 0.2743106300936107 9.076020642501806 0.4204435033750076 2.888106234490879 4.287810717327318 0.7849794238683128 4.872677010858151 4.35725516177177 0.7849794238683128 4.752395704776983 4.218366272882879 0.7849794238683128 4.752395704776974 4.288558777609307 0.5835544324990256 2.131885276533757 2.638660754469134 0.8517452870070059 2.2776023083696 2.638660754469139 0.6930919853873434 2.197414770982153 2.777777777778169 0.8413466983803375 2.221808873417332 2.777777777778156 0.8770461989223224 2.449612651794598 2.77777777777816 0.7183928973026599 2.36942511440715 2.638660754469126 0.7287914859293283 2.425218549359418 9.162692484664944 0 3.507103966665607 9.314778916968898 0.1515154232694378 3.571882808389514 9.329391292740052 0.1434784158815317 3.416057270266736 5.202868611834488 0.8405277703717584 7.060347354976209 5.229606196933707 0.8492238941302386 7.277220632123019 4.783832896994841 0.4490234294039919 6.377888787993077 2.361111111111152 0.4426143828504343 9.489112947067785 2.361111111111119 0.408653301619664 9.278312163512798 2.152777777777817 0 8.436343020944499 8.402777777778155 0 2.662840329048658 3.175000855832033 0.4704731430027176 8.241197170968931 3.130588703675151 0.2538546882610318 8.286827172392801 5.76507925576381 0.8522111796192113 4.498014662111697 5.706087759079979 0.8396155401733336 4.306444989151273 5.564707222383908 0.8738784180905758 4.37801472362551 5.635342033703026 0.726089597709787 4.408969465471158 6.785729591341913 0.3114162146114383 2.088913637289307 6.722425235722616 0.1380741993971249 2.159345575263532 6.580053179526981 0.3041015664990219 2.13291419501346 3.680555555555749 0 5.549591674996465 3.529930974352512 0.1404983210647499 5.657771380162557 3.659568612664628 0.1264100169345161 5.71849363553967 9.8514272201108 0.4301300274498844 1.816102118082406 9.695205834598619 0.5196858056589591 1.670355115368477 6.105457141945021 0.4952043171408742 6.825627885074855 8.750000000000334 0.590386069142834 3.502476134907508 8.720881536792319 0.4086597377396617 3.340425241366695 4.837378862507954 0.4274138299771255 1.939129109230382 4.87307845645146 0.5916939042537432 1.917502060021755 0.5543655047101297 0.142770394553607 8.19288294463766 0.4811315920331569 0.2940583700650935 8.191636042954588 0.3753147447198217 0.1512879755114865 8.331030315609404 0.4987819852251413 0.1520499663359298 8.422501230305405 0.6045988325384766 0.2948203608895368 8.283106957650592 6.110889639032679 0.8789032329374444 9.87971869391879 6.110889639032683 0.7539032329374493 9.799531156531334 6.11111111111112 0.8750000000000049 9.679249850450137 9.299059092121766 0.6089381285352162 6.300927113691353 8.88746132977502 0.5026905952034264 3.577181669210423 9.610140912203146 0.1582555638349667 6.776699360876437 4.457185397445169 0.4830153764544741 9.320199352046384 9.018188346536267 0.8525720164609054 5.74452405775666 1.473747786381055 0.6763360600718081 7.991671212284597 0.8376574914328094 0.8064325293910377 8.044941136353275 2.152777777778054 0 4.106216002022337 1.38888888888915 0.843867741917775 4.35618819836231 1.397235655059597 0.6548190678124735 4.340888198902565 1.527777777778032 0.7225947838824963 4.493323739375795 9.626484161538215 0.5903705312445415 5.226712821046299 9.858389698549782 0.6095842535319486 5.288510422260321 9.677439596747869 0.5395935474636643 5.408939357097884 4.583333333333433 0.821483797734578 7.106776722393294 4.387423886303297 0.8765432098765438 7.165238720563535 3.44868862660359 0.5743633655462129 1.627458848117702 3.283752496602675 0.6286318103410924 1.722673814654224 3.307299673310818 0.5542684447948795 1.51516253007116 3.486732580255528 0.4108897318311548 1.571941967720057 3.463185403547385 0.4852530973773678 1.779453252303121 4.235562104742058 0.4829721701414 9.011205791538579 7.805837099450616 0.8551343944826472 7.741414295372326 6.572863075736301 0.6209601291382516 1.223440703913131 5.969475255583477 0.12935914748345 0.7382713248987918 6.042313148273982 0.1573928377676749 0.615425483214094 5.817540830517569 0.1297330515791439 0.5670390609754296 5.887631756568841 0.2871258893468188 0.564406418521058 1.534713672044987 0.304833990567111 3.895166769569397 1.534713672044997 0.328717000561233 3.700425607342737 1.756237137720889 0.2848532049488588 3.957460694128128 1.7562371377209 0.3087362149429808 3.762719531901467 1.624284143098932 0.2625267016888101 3.786505230368939 9.14457687896026 0.5801283901798271 9.549197910682079 9.180385160389012 0.5659651643927656 9.357639340471792 0.09610811528686625 0.381788552655768 0.09947879287345406 0 0.4992967009751176 0.1955564964336697 0.1495585820989316 0.3491720764293428 0.2470455069528468 8.873936403608091 0.1432641006930679 5.989817520234213 8.85108498945181 0.33269819334828 6.030619610929579 9.012825292496986 0.2930189267162352 5.893921607810997 6.801482876168492 0.1247112619321824 5.113813914574623 1.940371765057519 0.8752887380678172 3.098618089470295 1.79896938234757 0.8752887380678165 3.343534200635192 1.763025982242308 0.7037783594168716 3.506470952868424 1.808069049376659 0.8752887380677969 8.951408122547665 6.395475062097262 0.1247112619321761 8.395349056044619 2.634816209501619 0.1247112619321832 9.112683393528901 5.347222222222241 0 9.158030857431655 5.196878418747739 0.1644585570492904 9.175545832062973 9.879718693918829 0.8797186939188281 6.52777777777777 9.879718693918829 0.8797186939188288 6.388888888888882 10 0.7594373878376569 6.388888888888881 9.8248854402113 0.7046041341301292 6.539841654520647 9.8248854402113 0.7046041341301299 6.400952765631759 9.704604134130129 0.8248854402113011 6.539841654520647 6.666666666666722 0.5625367430923052 8.843008389123945 6.6666666666667 0.5913466983803364 9.03774955135059 6.527777777777832 0.6538834414726415 8.923195926511369 6.547485826700596 0.4631188736972307 8.772841540997643 6.547485826700574 0.4919288289852619 8.967582703224288 1.736111111111494 0 2.422277716885894 0.5560992158649046 0 8.791315064448586 0.5649881047537993 0.147427983539096 8.866370599443233 0.6217298787489864 0.1520499663359298 8.654956091253144 0.6306187676378812 0.2994779498750258 8.730011626247792 0.4833846501694063 0.1520499663359298 8.649084216513778 6.728646247023008 0.146513116903679 4.601063605823448 4.39603376419358 0.5269857236934833 8.008948879881707 0.9011231119208698 0.8325372073973485 6.538966593795951 1.041666666666873 0.8767239235359244 6.362216372220102 3.124999999999964 0.8389917695473225 9.254255902296538 3.278473754279819 0.8505238431152484 9.300901068828455 3.263888888888864 0 9.158030857431612 0.8398369396141342 0.1688853773266334 0.5776137965270074 0.8373533463699965 0.1638322703359513 2.154498500176221 0.875359550876473 0.129507750943498 2.003548825061231 0.9502104383389713 0.2868471926724132 2.077631475974638 0.734658885282282 0.2933400212794493 2.094488139500511 6.597222222222303 0 7.474092572295367 6.359126984127183 0.4374632569076999 5.04555572570411 6.527777777777979 0.408653301619663 4.948185144590789 6.525887181277016 0.5077497411257808 5.085899939283397 6.357236387626219 0.5365596964138177 5.18327052039672 9.526619615320882 0.8340628810678065 1.465880834056446 9.37773439672649 0.6802972684241668 1.38674366755173 0.4892110282606074 0.5262948534111138 7.479638370844443 0.6830741866473018 0.4931529505143682 7.474896565497554 1.388888888889063 0.8436204739941171 6.5166476070197 1.527777777777946 0.8436204739941171 6.516647607019708 1.408386469345952 0.8042882185808358 6.648618376962938 1.547275358234835 0.8042882185808358 6.648618376962947 1.408386469345957 0.6479086925749529 6.533142554255752 7.315179797830504 0.5961536821006995 7.735888359487106 7.15976629699504 0.5115547843162082 7.718739193247107 5.975118873769067 0.5475952748776421 0.8602931203808958 5.965676966166892 0.6027857239387796 0.7049135841171342 5.90160861369138 0.37935914748345 0.7792760383208512 6.319444444444469 0.8195904256603781 9.171653585112622 6.368762862279436 0.8787270419647241 8.969181780843812 8.333333333333751 0 2.061433798642794 8.384798204886618 0.1774937009262967 2.15385765894949 7.175998029235035 0.412805397375202 4.169202654742139 7.121497466047698 0.3785527027343369 4.038563352067253 7.271284669071649 0.2913581001095389 4.001500631215677 7.146183920357436 0.461810255082503 3.891451660590913 3.520366486029367 0.8323924386431006 8.120972471588246 3.684548942173294 0.8776651354283286 8.058940222418734 4.305555555555991 0 1.339747243570808 4.375000000000428 0 1.460027268236663 4.465431781014521 0.1455878178189122 1.315171013214701 1.835807686822868 0.4781539761883105 2.179415554907044 5.279659016124167 0.6855243530159576 7.079732548548311 5.354568182067553 0.8449965826441992 7.132633847623866 2.026114600924124 0.3924475151428775 5.733018367030832 8.243432185356578 0.1556773146987181 1.035582308321252 8.263888888889351 0 1.219464656074597 8.240886066797929 0.1558464330837155 1.243828013469805 0.6957480385213247 0.8704514928853917 9.879718693918658 0.5609579492491801 0.8704514928853917 9.885840362831306 0.7009206123318836 0.8615698856571411 9.682988867723015 0.7022242064088022 0.7320213785425328 9.803270173804357 6.73611111111133 0 4.346778614184933 0.3215185688496635 0.3074354562531301 2.294189794042811 8.755607722283997 0.8734527738581931 4.626883648560598 4.027777777778056 0 4.226497308103596 0.9114661557132859 0.4727704117348587 4.468370850785009 4.295757457979988 0.4553148075148471 3.657400144992726 4.157748419044857 0.2965569075371959 3.755546758866379 4.378909465020553 0.5643004115226238 9.037749551350526 6.549984426322434 0.8521633254049239 8.06267808818621 6.549984426322432 0.6885830784913447 8.142865625573656 6.388888888888956 0.8364197530864208 8.155686640088664 6.388888888888966 0.8787270419647223 7.93836356168775 6.388888888888964 0.7151467950511431 8.018551099075196 6.549984426322442 0.7308903673696461 7.925542547172742 1.513863544080202 0.84967681610626 8.021904596759098 1.67005849437874 0.7241200954021958 8.103836590010729 1.614543478018295 0.8744432792959358 8.277703629550693 7.859730916633779 0.3734567901234571 2.891359751440917 0.1629002038208368 0.4139587124652228 6.663708391795654 0 0.5100827464437694 6.806983814288175 0.1637242426954723 0.606353424963981 6.800823753215891 1.458333333333588 0.843867741917775 4.476469504443486 1.597222222222477 0.8787270419647213 4.483914155198126 4.324349401056413 0.5396331899514003 9.63776036933946 4.328582650089501 0.4524295018588514 9.47982936203335 4.489787394913446 0.5321773891448704 9.473996775556291 7.235579326704765 0.8328074724212786 0.808131344984757 8.334705496064984 0.3706178977623694 0.6471676708470826 2.638730069911845 0.4346292766143914 9.809863096617617 2.847720984466276 0.4148703909992396 9.826907818655032 7.084011792088317 0.4820615252618494 2.968932742943748 7.018205032812111 0.2718369635986224 2.991861330379099 9.39071520958592 0.4794413815519978 7.012714084646463 9.294570937753882 0.2849154091443663 6.921518676058009 1.297125772385744 0.4816024794275848 9.338726308113889 3.325895724263934 0.5037778832242735 4.392321495383683 3.071236883551611 0.5884315007590497 1.1573267743162 2.943655076130423 0.1598235277562506 7.692925234687086 2.803247175743078 0.2872729243252732 7.625379617706574 6.987177123453748 0.857437798243407 4.572681468717667 6.840026490998454 0.7097775386589442 4.497263851202244 4.205035768788202 0.8430890991106 5.061403790643504 4.371698145514573 0.8474075270118756 5.002138796888328 4.22493672237959 0.7043174420465004 4.955892098393445 4.158794132420811 0.8569099150346248 4.901938446095761 7.152777777778171 0 2.422277716886214 7.208333333333721 0.2150205761316943 2.374165194453743 7.272323048952448 0.1357407490985456 2.485722083438643 3.541666960410605 0 0.5236839826329511 3.542616505904434 0.1544012860378046 0.4589993383910634 8.333333483204015 0 1.099185661244269 7.27142155529648 0.6015257104897416 0.1779111515147233 7.189547174611176 0.4547081738274492 0.1906406351678591 7.315315955262437 0.3876505695083685 0.1691953612482406 7.291933174642553 0.3281427706840043 0.3598359964160998 1.219178171333414 0.1350871627342926 6.205530120109273 8.05555555555593 0.5928497942386837 2.823215403823525 8.210523677570887 0.507508598419995 2.838821732572014 9.424945675495797 0.5612716077289128 4.326527205485741 0.142712474566713 0.6133464030745563 3.607436256878393 0 0.5019421474068416 3.468570256311258 0.1397908486635772 0.3895718157542029 3.595472036530157 2.49999999999999 0 9.759437387837556 2.499316783584089 0.1228693606922653 9.879718693918781 2.777777777777741 0 9.278312163512744 2.900913444369237 0.171510378650948 9.165715889806602 2.788744038093712 0.122969211052594 9.352168327554772 4.027808379061709 0.8797010262593176 9.879718693918829 3.888919490172809 0.8797010262593176 9.879718693918829 3.953893256306766 0.8527350872634357 9.664407212989932 3.815004367417866 0.8527350872634357 9.664407212989932 3.953923857590679 0.7324361135227533 9.784688519071103 4.58333333333372 0 2.301996410804878 8.445393869111918 0.8646167967713813 0.3941161363122224 8.514312326778988 0.6579071564864746 0.4779929576935681 8.322647966795071 0.7126455471396103 0.4482633735550609 3.353534736895288 0.6962732878735062 7.785472633980222 3.254363576902851 0.8422240487345416 7.639967088509401 5.69444444444444 0.7017223389262894 9.822003645007483 5.69444444444444 0.8220036450074623 9.701722338926267 9.857866815960541 0.3946077806968571 9.679690401854302 9.626056851400723 0.3786926625709123 9.626052526916359 9.768190035440181 0.4843745959128377 9.590005814181524 9.856474903991629 0.3827689825426272 9.521052345871603 9.62466493943181 0.3668538644166823 9.467414470933658 9.71434171995217 0.2770870492007018 9.557099058606436 8.774280559810212 0.1745583989545821 6.73470382970455 8.819426677999768 0 6.75241488625826 8.771897104163807 0.123876675986523 6.940218286376947 2.380214562717994 0.5063620593382505 9.101403780304768 2.211563769067194 0.5351720146263164 9.004033199191497 0.9750137858881962 0.1610045349925322 8.4844670646814 8.373700764660818 0.5189911207208839 5.250029831696368 8.442315447491044 0.700943836713563 5.269703069376542 3.472222515965915 0 0.4293101042563387 3.473172061459743 0.1544012860378046 0.364625460014451 9.483639892153134 0 1.91634213480278 9.571642156519157 0.2039377552825196 2.021284689313364 9.425282636466763 0.1504308949922797 1.974335859419825 2.833753991917758 0.8005085537875198 4.801056744774123 2.764309547473307 0.8005085537875198 4.921338050855292 2.770675318066737 0.6520018725149953 4.778889772258571 1.369042151809108 0.8786753216815157 2.130162817034022 1.366367948079305 0.7206997461767233 2.040981141740395 1.3690421518091 0.7321180508008379 2.277559273609616 8.055555555555481 0.4082752621694223 9.485796164478455 8.055555555555497 0.4521604938271477 9.278312163513002 7.912345801917159 0.3921257884650917 9.294120426672134 4.133720253525371 0.8282255112548795 7.070730443530216 4.248534997414413 0.8765432098765438 7.165238720563528 8.481919250806259 0.6332327904485247 5.394891091972481 8.293729530018268 0.6486945923416126 5.338493954112853 8.164788090860515 0.8627437295091787 2.373723459666436 8.11829268329603 0.6473913012638356 2.332939949306965 8.284697714385956 0.699311510259093 2.300295134491515 5.486111111111534 0 1.460027268236714 5.416666666667094 0 1.339745962155541 5.571339282246969 0.1729868389176225 1.34217572304498 2.555060614379589 0.1527924614790639 1.467793452109899 2.682361919665073 0.2756466126636178 1.394296009235144 0 0.6338446442766204 5.218997207089201 2.355479469706386 0.505950283992991 2.67746497809106 2.186828676055582 0.5347602392810309 2.774835559204383 5.858049119747617 0.8013231467641073 8.289544091793406 6.047181216752538 0.8812515549537121 8.275932157215109 7.091727614100605 0.700961498825053 5.912610462782073 6.994573327093561 0.8464045921702559 5.926037948743653 1.180555555555944 0 2.422277716885858 8.472222222222594 0 2.783121635129833 8.541666666667034 0 2.903402941211009 8.637452730069722 0.1420178205278556 2.763421702591113 2.10016367135522 0.8297931293084276 4.69790553224084 1.895126026609736 0.8787270419647211 4.759336068002606 9.656648373582836 0 7.228310147279573 1.848226969073478 0.7360144547599063 9.391031121643309 7.451523477125116 0.6288829484388072 7.726761019620353 9.561790093424822 0.1522444142552981 5.054072867075431 7.555079565721503 0.4306228384681938 9.039922846907924 7.424318962408613 0.3822816076424991 8.882866729634832 1.527671146240444 0.841304238706622 1.25961998851493 6.666559713443 0.1204475720335697 0.1202813060811716 6.666666666666656 0 0.240562612162341 6.805448602331886 0.1204475720335697 0.1202813060811694 6.827113286272144 0.2801999804240242 0.1597875431182774 6.827220239495801 0.1597524083904545 0.2800688491994467 5.688509402726487 0.506772883067014 4.247056895705716 5.617965641809844 0.6443727029482849 4.335755198411244 4.32915651817034 0.4820898436988392 6.615274806531215 9.219960852048455 0.1573344949815406 2.75307029844889 3.386108061528374 0.6706910691706404 6.351108454761865 3.269260462958442 0.843253217452012 6.452959219709623 3.203160913295319 0.7187889885256049 6.487773244020488 3.11459904552341 0.5675024200026979 0.6236899780597067 1.5894722902713 0.8614296166002227 2.513120360406609 1.45058340138242 0.7148723457195448 2.419954204819851 0.4974851248793868 0.3921309489160388 9.105265258350173 0.7197907529608372 0.4031587046775569 9.216174932179246 0.603384365842367 0.4220200465027283 9.298944764081446 4.437180013288065 0.8519703654488897 7.670367294480179 4.305555555555636 0.8364197530864227 7.514186340988957 4.522060155904519 0.8503621093459726 7.533378667529403 4.180961860310598 0.6045821165225231 0.9187818939615594 4.423157548003209 0.5974187687747221 0.9775464689017038 4.27836057961412 0.6868767310684024 1.043600269413311 5.721731355953336 0.6806106409951416 5.183616253073287 5.811365978205632 0.8521210196460847 5.113675425519205 5.943078637337376 0.7281996967188444 5.188159332942432 2.663441735964938 0.1590334233810342 3.811384028297732 5.220229722945607 0.5362582230466583 7.030277028455932 6.723403062319282 0.3079431048718076 3.38229845284654 6.79284750676373 0.1492898032521447 3.342204684152822 6.927400972302069 0.2736108864170571 3.265293013851919 2.377016194092599 0.8356314460599624 5.975620075676639 2.388449396786189 0.8766367700467236 5.84196518574118 8.053233003856327 0.5457322551043099 6.366332218746213 4.236111111111207 0.8364197530864227 7.393905034907778 4.452615711460091 0.8503621093459726 7.413097361448225 7.22222222222261 0 2.542559022967396 7.291666666667057 0 2.422277716886224 7.341767493396887 0.1357407490985456 2.606003389519824 2.772700647391322 0.5793454452595118 9.836785336808862 8.386669527595471 0.6297806992612794 1.588568229003719 8.379762208286525 0.4311896475849346 1.54454231824521 1.250000000000395 0 2.301996410804692 3.274495930908837 0.1986768532358955 2.938066251654949 3.33333333333368 0 3.023684247291839 3.384622761538788 0.1579049135448009 3.11762325687774 3.245733872649898 0.1579049135448009 3.117623256877734 3.325785359113944 0.3565817667806964 3.03200526124085 1.666666666666964 0.1874632569077019 3.711005996327029 1.534713672044995 0.1412537436535312 3.734791694794501 1.756237137720897 0.1212729580352789 3.797085619353231 9.556123671216962 0.7829252799093382 5.87415536119539 6.736111111111145 0 8.917468245269436 6.686374715589467 0.1505821306049256 8.807207628449417 6.895882683121267 0.139438525693298 8.891140576031518 0.1493891126789164 0.5926302653723712 9.166991649959581 0 0.5138279657441783 9.029206698067501 0.2019295693238166 0.3976796014812022 9.099110208524461 6.969225817907716 0.8658217135322387 3.438929466869022 6.899781373463259 0.8658217135322387 3.559210772950188 2.15277777777818 0.8364197530864197 2.101527567336126 2.126287213173588 0.7163254131983818 2.036634364554124 2.764309547473301 0.649788389178467 5.001525588242739 0.9716241252029424 0.8688614105774577 0.1175468903934132 1.110038911830342 0.8688614105774577 0.105626180833225 1.099223364074959 0.8614959695343161 0.3229014724765964 1.237638150702358 0.8614959695343161 0.3109807629164082 1.100337102229329 0.7303573801117738 0.2053545820831832 4.896808669138876 0.8486589113217071 7.997247414977676 4.800656079159122 0.6722185821036005 8.071268856015752 5.023799541413855 0.7238132954603247 8.057789627299627 1.206801914698479 0.4037488865774795 1.839311910133894 1.251114310513036 0.4456710653306898 1.630017232292146 1.068599747443912 0.4580778212467897 1.708413457571127 1.178781867899635 0.5920244244952075 1.691094613892237 1.316984035154202 0.5376954898258974 1.821993066455005 7.910343681375434 0.4035311769689296 4.785201912669565 6.132782953736331 0.8228566681519034 8.75745846137638 6.299318417834992 0.8787270419647241 8.848900474762639 7.958426996219632 0.1396980012165794 6.452431701922237 7.569444444444493 0 8.676905633107125 7.430555555555612 0 8.436343020944795 8.607688821458954 0.5013671077417543 1.454987290039573 8.461021109163791 0.6962071203494794 1.456452032036445 7.30902777777793 0.5253343621399187 5.800177729332467 7.215385577344987 0.4125530042744719 5.89804741925759 7.140149404629719 0.3726614123799605 5.782863292522476 7.272201648641216 0.2852144166544324 5.930850193314771 7.365843849074158 0.3979957745198792 5.832980503389647 9.319465799476417 0.8159651643927656 9.277142316525174 9.120791570944657 0.8702850311353523 9.303928581113023 5.694444444444841 0.1635802469135801 2.141621336030022 8.725521038502986 0.1758066085758292 9.237889103914286 8.680555555555465 0 9.398593469594221 8.586767856663013 0.1423798160819943 9.264221028142394 8.827270563138223 0.1241536169056681 9.325875564831378 9.573727827922426 0 1.815300998624954 9.624949583977031 0 1.913789529648616 9.661730092288451 0.2039377552825196 1.920243553135538 2.007633258815799 0 0.5343718731203582 9.846086122442433 0.5968422170537255 4.03001931868666 9.67817496081965 0.5218653423534253 3.995151183792892 1.770833333333562 0.842849794238683 5.008325797631095 1.825681582165287 0.8787270419647211 4.879617374083773 1.895126026609728 0.8787270419647211 4.999898680164947 5.705544394425854 0.4196297583822379 0.1634981873773627 5.736547818819834 0.4730927321060251 0.3543074664043476 5.649556833636248 0.3276832431535689 0.3364459584323045 6.319444444444651 0 4.827903838509609 0.4175043417919861 0.1848054206581899 4.920182583199553 0.3460454522112649 0 5.073225003362186 0.5055185391307645 0.154324500512667 5.052488327919087 4.08333333333362 0.2304526748971198 3.985934695941251 0.3323414222924745 0.6684897041679571 8.296504811683672 8.644580991221833 0.8221538921686448 8.498670611605871 8.55133045629486 0.6742273679060511 8.53018919248551 5.003407751600583 0.5141394876035311 8.643022153891906 9.144171019290033 0.8301283901798271 9.709359598756414 8.546561056390711 0.8417696355894191 1.508344069963902 8.685449945279613 0.8417696355894191 1.508344069963907 1.999689504287329 0.4874243431497238 5.459378839614416 8.956864769762861 0.7275947466514405 0.1445774150039169 8.957070403987665 0.8551022191199292 0.2648587210850892 9.024271426141592 0.6489896307667822 0.345158656661692 2.66095791706243 0.1421903730267784 6.573148368399687 4.824302898725586 0.1543320670493954 9.724974017828636 4.824466888461224 0.2762898111993503 9.845255323909857 5.974446506381884 0.4073928377676749 0.6564301966361534 4.15529161465994 0.1421075079139003 3.878895552382333 4.152190884862143 0.2712795636052242 3.949626075104009 1.250000000000181 0.8436204739941171 6.516647607019685 1.282423875397679 0.6860446484504459 6.578115211218217 1.250000000000192 0.7203443975300414 6.36702185559411 5.533813207620023 0.5677122449590606 2.449818535146201 7.320173955986299 0.5628350069700003 4.47157941161861 7.250729511541836 0.5149955007971607 4.672048255087223 9.779255511526788 0.4751981011317623 4.696179332312185 10 0.3763504968473664 4.659281017395005 9.840664840429469 0.4051389453846227 4.830478048409732 4.961178496091941 0.2879887021669384 4.354554371417512 6.787975191271062 0.7289229368144448 3.506308040520875 0.5483640393773217 0.7119641845903116 7.664441939753562 8.0861409874807 0.5047172551724037 1.760386872565339 8.080173228132677 0.2932658171255946 1.824285152035578 8.002237724377904 0.3815085854687655 1.69415223421823 7.954887652547834 0.4744686089843402 1.824285152035573 1.338942024901505 0.8042882185808358 6.7688996830441 6.388888888888971 0 7.834936490538874 6.234266288775967 0.1592600403166623 7.755062398013004 6.240479237770261 0.1285262082332657 7.909627213290037 7.025623884136257 0.1624177907551599 5.969182319158229 7.013888888889042 0 5.790154287159015 7.140149404629714 0.1226614123799605 5.863050829909923 4.735567071691666 0.160857108391614 2.616612414448818 4.626184486503553 0.1747997848721756 2.463223937427541 4.518500603845299 0.1241459787118454 2.585315366532234 4.561351757015142 0.298945763584021 2.505980280992555 4.318158207817603 0.5133604669428514 0.8656024219096381 6.623242157237316 0.3237981697711283 5.594114450743681 6.658255603705452 0.1666156057602664 5.534276446817285 6.793071813207087 0.2913268676924488 5.459342604638774 9.641443160720655 0.8332084564234897 4.80979350515552 9.551584380989889 0.8558489096746278 4.660871319951386 9.679252848064767 0.6890573660981175 4.758913665156889 9.656107018481233 0.8558489096746278 4.660358909145969 0.875253604565877 0.4160608716453998 4.91759684534559 4.519966470928033 0.5913887876152323 4.5750403002419 4.595588235294382 0.4491345921084484 4.511870602923666 1.666666666666944 0.5049269452939171 4.066122233328586 5.615056923528597 0.1561519649247498 6.695376289692529 5.481661230016154 0.1555327277210125 6.595677994403305 5.678807271252193 0.1525280704766478 6.510105718752932 4.720571044591192 0.122555561440866 4.793625528609884 4.546941549552468 0.2743662326596701 4.755231691484822 4.732825946551979 0.3216901535493145 4.758248673880129 4.931519604003899 0.7052369604485926 5.42294100945775 5.082863436600837 0.6275242145961037 5.552105752877663 4.949408668109754 0.7159566048668988 5.629155899390614 8.033391734015037 0.5752002151278254 6.595439468424635 7.312539864352026 0.5171099109292691 5.964807470683459 7.180487620340528 0.6045569066547971 5.816820569891163 5.288259697962689 0.3527689431601445 6.44209230503915 5.292709579057794 0.1972362154391319 6.358256434281789 5.281484863882531 0.3484723723031253 6.215714431847589 5.740905772909391 0.1947594842027857 8.69421118144756 5.625000000000028 0 8.676905633106989 5.582781366351647 0.1663566955899362 8.781468109996146 5.513336921907206 0.1663566955899362 8.661186803914973 5.62924269481657 0.3611161797927218 8.678492352255544 1.319480095489959 0.5936914627077146 5.959240772810681 1.145045945740508 0.473885796806604 5.900316062602293 8.272836881756785 0.8403248178196663 2.030191225566216 8.243180528172456 0.7030685473288449 2.101918274427528 0.6062807774530341 0 0.732075248392996 0.4266391019506007 0.1667839171683347 0.7737369859995242 0.5627322770026426 0.1498284778621227 0.9067627790975372 1.918373257172107 0.4828244548428766 5.904585169159965 2.771550600656788 0.80983666357303 0.6669993158681167 2.701673397940205 0.80983666357303 0.5671532573116982 2.631872721271295 0.80983666357303 0.6731637644551665 1.595110832365818 0.7401850433930308 9.476349490152428 2.109266470962955 0.4999920987771048 4.13133726672482 2.252643786750212 0.4975114266141401 3.973917093442565 4.063550923231596 0.4853966991875912 8.048150380794318 4.212643678160976 0.3140236130572867 7.975109703611493 4.158786899662694 0.2856299941496477 8.104613592847681 6.249999999999993 0.6417454246746441 9.474546516898103 6.319444444444453 0.8195904256603781 9.412216197274972 6.319444444444443 0.8221549990142661 9.581205095298376 6.432582444744201 0.7019236820863279 9.515884840369749 6.50202688918866 0.8797686830720617 9.453554520746618 6.43258244474421 0.6993591087324398 9.346895942346345 0.7530199512591202 0.4963969682405473 7.028928025758709 2.609353751442333 0.8433943305243102 0.3812382768257769 2.682876104952178 0.8433943305243102 0.4858404154339124 5.208333333333352 0 9.158030857431648 5.277777777777787 0 9.278312163512826 5.127433974303285 0.1644585570492904 9.295827138144144 2.648965952482008 0.7105721599343635 3.889349569179315 1.580099502487708 0.8299014188317669 7.002853154818474 6.250000000000215 0.812536743092301 4.501426007717858 6.250000000000215 0.8641139233050548 4.357410753099012 7.569444444444796 0.4700588018117796 3.063561998987467 7.569444444444808 0.3121552509907868 2.896714992554141 7.638888888889253 0.485064044648155 2.869781104175647 7.720842027744881 0.4449405878580311 2.978019220486785 7.720842027744894 0.2870370370370383 2.81117221405346 7.651397583300435 0.2720317942006628 3.00495310886528 8.402777777778191 0 2.181715104723974 0.9796428869452924 0.8704551905130299 4.295987289125684 7.993043130557306 0.6136934153886728 5.526347842663913 8.081468555478423 0.5997726187389238 5.670641154294159 7.841708307018708 0.6046321366156234 5.667042720919451 3.3333333333336 0 4.467059920265903 5.223522310576316 0.1263651854325082 8.351899256601641 5.21585631608468 0.2853970963574433 8.284732681785689 5.164344328703742 0.5720214763374543 8.839678515718587 5.057780701505555 0.3728400476039145 8.91073418014375 6.736111111111593 0.1542531538447432 0.6074521649050919 6.666666666667137 0.1542531538447432 0.727733470986255 6.73611111111158 0 0.7383394317497318 6.873916747866025 0.1497283741052078 0.7759307813295191 6.804472303421568 0.1497283741052078 0.8962120874106821 6.804472303421582 0.303981527949951 0.7653248205660421 7.43055555555557 0.5478395061728454 8.436343020944797 1.127613395421349 0.6741787678684037 6.919520381599199 1.025745075579396 0.8317545934120749 6.97833408348183 1.074090542064337 0.8424241744563288 6.813872340006549 0.9011231119208473 0.8325372073973485 6.779529205958293 0.9546459652778588 0.6642918008094234 6.885177247550944 4.930555555555937 0 2.422277716886068 5.077933423889691 0.1475760981479934 2.346991294066263 4.955638229500289 0.141412947590903 2.247313045863438 6.621161599765077 0.4123438970266385 9.556356040874867 7.951999485210799 0.5662506856136869 5.761454098762149 8.183100031327371 0.8355290652624887 9.295979942489524 7.905877455328209 0.4151883518537083 2.058583350254056 7.832999125335008 0.3159048480880099 2.245285197627511 6.845238095238278 0.5625367430922994 5.372033556495884 7.037818206274209 0.4840471217432451 5.284160986733433 6.990871633612775 0.6658573011317206 5.252161193532025 6.31955652091131 0.8541845790095233 0.2653257331428188 6.3195702420955 0.7236570712020036 0.1450444270616446 6.250411274534647 0.6473162350911565 0.3461438936663194 9.708472586717445 0.8249962037857419 3.053009463597652 9.719384436094979 0.8395478316474577 2.823159367081144 2.564601940888362 0.685974182159239 0.3358194960652107 0.1693684235366809 0.5873779346481274 6.636514534147801 0 0.4856731047468074 4.027558663059692 0.1373554872729677 0.3867704329777222 3.888849116027371 0.1402203441090819 0.61052983175597 3.900679724790029 1.736111111111338 0 5.068466450671679 1.72035788881394 0.1715103786509443 4.955870176965524 3.347740826192679 0.829480059135039 1.228737957669586 3.345005551382011 0.8771544538147658 1.413247476410054 6.666534812992731 0.7930895731685292 0.4158492578235081 7.863348835488996 0.2952312466796007 1.774561773524352 6.527777777777807 0.5049269452939155 9.117937088738026 2.353208017207218 0 0.8708026093035218 2.28573448344699 0 0.9861436880037326 2.206971708898426 0.1863312613962728 0.8702873295398841 0.4449536762907099 0.7906269203111892 7.276216419646281 1.323848945703601 0.3135222426389847 0.175351724704478 3.239067226243468 0.5946846005259074 6.421581487688446 3.074427934720049 0.5796065864941597 6.530151364758741 3.160807381437236 0.3996898447220875 6.454010335324208 3.10117734514263 0.4764336650684563 6.655356346560659 3.265816636666049 0.491511679100204 6.546786469490364 5.454023975828013 0.5282032165910377 5.540463466075411 5.56512728250981 0.5159528782567557 5.396152934114218 5.341441399074668 0.5301611056487093 5.385879040421171 7.958426996219615 0.1396980012165794 6.692994314084582 6.150793650793736 0.5625367430923054 7.537097065956923 6.296121889232667 0.6659638994835113 7.417536040451933 5.218405113708815 0.8382848976003462 4.272406021908244 5.29408968946783 0.8505996579482107 4.070237032835872 5.139450629912927 0.1218248447662335 9.879718693918793 5.139450629912968 0.2995375614417519 9.82156149662905 8.910396546446314 0.2808979777992762 7.090769601300188 8.771888337678433 0.123876675986523 7.180785317800519 8.720412637847399 0.2512426901899305 7.212905427525184 1.450070069845043 0.379408269219188 7.69793676834187 1.450070069845043 0.164387693087501 7.697936768341873 1.404794004076705 0.1420931083991227 7.89515971096483 1.404794004076705 0.3571136845308097 7.895159710964826 8.194238804623723 0.1206178977623694 0.7264442635062129 8.312670989979825 0.2762952124610876 0.7831245279152195 2.083333333333727 0.8364197530864197 2.221808873417295 8.977001595614329 0.4687873556267036 1.02954823270602 1.788432835821022 0.6712481172121043 7.203321998287104 1.944444444444564 0.8413466983803374 7.193436191439047 2.010198376364653 0.7212039212939287 7.152774104496313 5.005790544657303 0.4945709713816783 6.385433051346812 4.869033346552058 0.5473347559425463 6.248510748118706 7.500150002691038 0.1220958652159341 9.879718693918829 7.639038891579923 0.1220958652159341 9.87971869391883 7.499999999999994 0 9.759437387837659 7.63888888888887 0.1776634377349947 9.701203372282066 7.639038891579915 0.2997593029509289 9.821484678363237 4.436937041251665 0.8597006787617796 5.846183529063788 4.47528888691112 0.7033551492478741 5.90422861803583 7.358392052942304 0.1285527027343369 3.808116706159959 7.358392052942298 0.2518334594539314 3.890596429518105 9.136818495234763 0.1720794079058026 7.63225162642286 9.30544255727261 0 7.594423676404418 9.176928131598682 0.1291423004003754 7.500616954327336 1.973554348382728 0.1665850370872342 7.614067950951295 1.875000000000107 0 7.474092572295115 1.826138947757222 0.145569362126185 7.618409034189865 1.70245205432566 0.5989511229398004 5.752674336032882 1.616238101981001 0.5180239612110767 5.876465291526059 4.166666666666956 0 3.985934695941259 4.016402725771052 0.1421075079139003 3.878895552382323 7.949719845711014 0.3081406899411192 5.986444126951584 7.787052142810976 0.1662274934843398 6.05290295966868 8.508986928104537 0.4491345921084381 8.709924030854998 8.542456808215315 0.5212884842770829 8.491595240659908 8.644580991221822 0.5721538921686448 8.659045686380761 8.669105542311993 0.4057898731510353 8.721737137533307 8.702575422422772 0.4779437653196801 8.503408347338215 1.458333333333507 0.8436204739941171 6.396366300938538 1.587383762905362 0.8786160099075444 6.351486499666059 1.517939318460924 0.7222364839016615 6.356291983040036 1.6568282073498 0.8786160099075444 6.471767805747231 6.597222222222216 0 9.639156081756472 4.652777777777838 0 7.714655184457582 4.472392196140034 0.1386593261356702 7.743545859415124 0.6516666666667073 0.397427983539096 9.062447312865618 6.994645058813022 0.8455926576536408 7.302607067045974 7.026696340864322 0.6097981024146473 7.33961669968633 6.894083042001931 0.7006547015857395 7.400546487400819 6.830336929018827 0.8658217135322387 3.438929466869011 4.738270386585659 0.8353929770903928 2.237307576813746 4.70144494957427 0.8520820241135079 2.390920308024103 0.9750137858882046 0.5889954650074678 8.343795213378847 0.8389164606652423 0.5 8.412309802337194 7.691708921888551 0.4243625945153174 3.266909321911575 7.702113283891789 0.3939421255574311 3.411678592417007 7.480598792194849 0.3765844569696342 3.354083552316308 4.44444444444471 0.6266461571940973 4.45679549983525 5.972222222222221 0.8797186939188278 9.87971869391879 7.147184315979686 0.4477617961863763 6.212922833120983 9.670190044318939 0.2134421093146106 3.461560099069516 9.796027050102401 0.3359419117470586 3.472670211686312 9.874162994216539 0.1224998024324479 3.459959608929603 9.684578305912723 0.1560695111654427 3.302418416501228 9.810415311696184 0.2785693135978906 3.313528529118024 9.606442361798585 0.3695116204800533 3.315129019257936 5.391369021864377 0.8421948008306013 4.886002424199575 5.465235008372026 0.8788659449517241 5.000331736820619 6.812300205041351 0.8533205580394212 5.149062931176724 6.666666666666861 0.8364197530864206 5.108560219365689 6.666666666666854 0.715617837368544 5.242758631164643 6.666666666666851 0.8791980842821234 5.32294616855209 6.812300205041345 0.7325186423215446 5.283261342975679 6.763193817808101 0.863101223282206 3.572188045268595 6.527777777777795 0.5913466983803372 9.278312163512922 6.682837575690206 0.6738613247318835 9.18416523190194 0.1684172268845963 0.4186958717861565 9.389135087257474 0.3809935505242127 0.4587662387363841 9.461602937936894 0.3178063395635126 0.5041648560204793 9.25847984159136 3.965384303020634 0.8763055365755464 1.38391550508672 3.940876804738271 0.6771728307115519 1.355611078216712 3.866866210460253 0.7106369276678213 1.520983999730849 8.611441041920905 0.7932903597150933 0.4160788962326505 7.306438043983047 0.8384902000842587 3.459495864943055 7.414950213933738 0.8573013166886507 3.567891003126019 3.486810223928057 0.1678795758943405 3.743949456439668 3.486810223928065 0.2885452860184777 3.610600338671786 3.007557464159673 0.8353929770903921 7.159491189069743 3.124320408553403 0.8526594853365304 7.050904386940672 0.8567639514014388 0.4992960627056991 3.117343580869741 1.282423875397674 0.8424241744563288 6.693591033925403 6.388196472169366 0.1224579120267356 9.879718693918818 6.527085361058254 0.1224579120267356 9.879718693918822 6.486511632287052 0.341436952949815 9.856973916857051 5.902777777777962 0.8413466983803357 5.629779212384048 4.935866735543488 0.1507319530742408 5.55679002223143 4.870793426654389 0.3116089038687664 5.594360114635601 5.041146729166369 0.2889879975896002 5.435274228149594 1.142356857975173 0.447975336222513 5.297401294015865 1.006138026822369 0.4322020740186082 5.099105308811966 0.9487738179808943 0.5157732622039047 5.258917827854345 1.118337309309543 0.5420457826387717 5.14997803268971 3.45525930116668 0.4115538344897326 4.306634516556925 3.211559682450802 0.4128113066053072 4.297958365127672 3.374942122311812 0.3750004672249097 4.42063844649941 1.66666666666694 0.8413466983803373 4.146309770716034 1.666666666666932 0.7200737403450586 4.28344531172951 3.974885587181052 0.5943013643122435 2.539498372393153 3.19261954080552 0.2506960799917068 9.793186896623435 3.887943400866654 0.6053453899562051 7.400227822029562 2.964710093448314 0.8473061458587299 8.084779693906468 3.158577822045538 0.8767451351012396 8.016019169410567 7.128485268455258 0.5210304520673686 6.670686005782338 7.248134896588645 0.4310478729151165 6.761981335545992 7.272848750329928 0.5511513614554432 6.668219725594586 1.941742689542719 0.8371905996125872 2.443526232046119 3.619918995213113 0.3208383859030281 4.973207392865467 3.201572988530323 0.4968596966856325 2.206653323251673 4.184828566329355 0.3265712597641356 8.273680852622132 4.228231344107126 0.1308408070892393 8.378926995443159 4.340381325607731 0.2973778372746498 8.363489280064705 5.972222222222639 0.8364197530864202 1.660496111705348 6.12692181598617 0.8323280170295567 1.525586632012796 0.7840291924697009 0.2712496033491664 7.883762445618689 5.704465418420441 0.8346874967502537 3.487452635549452 6.517756803802491 0.8346874967502583 2.078790634709827 0.1704060839016031 0.4305045641217474 2.616267710797673 0.4053564330823713 0.4442664082195876 2.572677798404049 0.369176289954398 0.5300198956001859 2.714846607635597 9.186556124865293 0.8623358918101773 2.953957503252699 9.15340996325439 0.7011284480336526 3.011890617460226 2.769257927393273 0.1254406158356302 6.241272356193677 2.620451200967512 0.1526104398265359 6.090959090487967 2.745709771359457 0.1914897003901165 6.037744161173237 2.737189920974778 0.3169303162257467 6.128018311964636 4.722222222222321 0.821483797734578 7.106776722393303 0 0.3619035574833677 7.842113472940579 3.362526603135 0.382957993537297 4.183040042192152 7.430555555555914 0 2.903402941210925 7.500000000000359 0.1485750040772056 2.936808761247859 7.411211937841323 0.1357407490985456 2.726284695601 9.48309914530024 0.4858453638648412 9.768183969621791 9.345191240261236 0.5817440151512219 9.829640904837575 9.56666255461429 0.5950842249770919 9.851760026759395 8.45324295685918 0.8365677807499143 2.228568085630218 8.392746505282215 0.6768925985695806 2.19732551255364 8.411725770645678 0.8403248178196663 2.03019122556623 8.593346738511018 0.8782896986297241 2.131365070727376 8.532850286934053 0.7186145164493905 2.100122497650798 9.473123526398961 0.8440849758384064 3.570545815106976 9.628259765681207 0.8440989669606438 3.566250868436462 9.599396605863181 0.8440989669606438 3.437102198156652 9.562878933009841 0.6881839427990502 3.588981899674035 2.986768692332235 0.4134181093976264 9.826907818655032 3.054707488190064 0.3000001953658857 9.620094715278469 1.923534493503327 0.1582464177677305 3.568367775460802 4.803308219585729 0.4025685228221902 7.167743573275788 4.66441933069685 0.4740523205567682 7.081084104229902 6.666666666666847 0 5.429310368915477 6.79714449259434 0.1666156057602664 5.534276446817294 6.801482876168481 0.1247112619321824 5.354376526736966 6.658404923100485 0.6023397404155372 4.311454765363241 0.4991125536734143 0.8064358477992164 4.182047494148712 0.6507761524203692 0.8479746433476103 4.27077841013449 1.517887402797025 0 0.4159554693673665 1.447921038828647 0 0.5188331699730535 2.025029374458331 0.5344404907206425 7.824211775526225 1.95064344176022 0.6563540957090191 7.899048059961311 2.638888888889258 0.7134659520087423 2.609987726569486 2.777777777778151 0.6270461989223224 2.529800189182046 2.771213412761676 0.7191416575073077 2.73659431744889 0.7161427154674749 0.3789038095719803 0.145124775261522 0.859000423131662 0.4189342768220858 0.1679044876094375 0.7342260642668493 0.5968325595112962 0.1497196059844325 0.7565407562394912 0.5284195042896314 0.3176240935938699 0.6136830485753041 0.4883890370395259 0.2948443812459545 7.392640175275108 0.8429842348261738 4.23244716436834 7.391247872393457 0.7185926073039305 4.386617264463668 2.89247796347771 0.8794793894795168 1.51408639122805 2.839863857054894 0.7092725187879416 1.624650697121875 3.005326401799113 0.6837478342743962 1.529120852373012 4.819178057690777 0.4958463922498925 7.027668807626821 4.652777777778134 0 2.903402941210739 4.613095238095585 0.1874632569077012 3.040867291017791 4.489329237626603 0.1349764998195604 2.969410957330489 4.513888888889229 0 3.143965553373075 4.419884793182149 0.1349764998195604 3.089692263411657 1.011809776891504 0.5689712774642426 3.351899206381946 1.152242988595621 0.4706469879526433 3.282334515233598 0.9837622004286379 0.4898928416661044 3.200455835768454 1.311276040603099 0.8746005293523749 2.840500696834439 1.434317354278863 0.7314225156858429 2.83459821200032 1.328628752919196 0.6499487283151288 2.750198590338395 4.886055070568579 0.4672704538972421 7.662731195499193 4.80058247275031 0.3029452091122242 7.555445800649778 4.946583708929451 0.4444484560256674 7.488551342769977 4.939471361639194 0.2645995683591211 7.556908659892746 0.9524806988821268 0.8424046594864318 0.2948416220749874 0.9535944370364968 0.7112660700638895 0.1772947316815742 5.035697558027762 0.8486589113217071 8.237810027140023 5.105142002472204 0.6611956544140061 8.151894808510619 0.9532129422622215 0.6764585105762132 7.956617048190092 9.747802140970279 0.841834377705147 0.6254401726233749 4.658201468412561 0.8405010268308168 4.453523061183532 4.513888888889152 0.8766461571940973 4.496889268528977 1.438492063492324 0.4705377785486315 4.358233976668561 1.353313907823758 0.3797978188652931 4.478201837888146 1.527777777778034 0.593867741917775 4.436375735749765 1.442599622109467 0.5031277822344367 4.55634359696935 1.299603174603434 0.5644055204664065 4.40773732953995 1.695168263347222 0.5247954289922474 7.79414144900591 1.834057152236101 0.5597748528605604 7.954516523780816 1.666666666666739 0.465020576131687 7.995311565313514 1.884593261666355 0.4534919304273186 7.84515195001002 1.024531666707509 0.1660608716453998 4.741097190234436 1.180555555555793 0 4.827903838509311 1.241594009273625 0.1270234150834874 4.794118453728513 8.670551318206098 0.8440998247051198 2.468987731847982 8.522687401303614 0.8365677807499143 2.348849391711394 8.662791182955452 0.8782896986297241 2.251646376808552 7.675970185915047 0.5161013551191896 5.223788881170357 7.155891926449149 0.7858499503253373 2.254973353360066 2.37163404756572 0.1468227807369978 8.149611219893757 2.777094561361847 0.1228693606922653 9.879718693918779 2.777777777777749 0 9.759437387837554 3.333333333333559 0.1222449772566328 5.098649369839519 3.402777777778001 0.2776142121365647 5.131428784141872 3.40277777777788 0 7.714655184457543 3.245450940175082 0.1685899968277182 7.658244806296059 3.337279923386374 0.1368305926457631 7.553530027489607 9.204857766888251 0.151616500216138 4.663786321802755 9.08881429147117 0.2945136450028477 4.73215488418324 9.319804393721949 0.2907312739365918 4.750396765023733 0.7394418780104471 0.4250455768217953 0.438530593655011 4.081719631720006 0.4638643527532406 2.593405590333454 4.316026798890371 0.4715571624918349 2.426312860714 9.879718693918829 0.8797186939188288 6.249999999999995 9.704604134130129 0.8248854402113011 6.400952765631759 9.723994181751861 0.8442754878330323 6.205128955954056 9.669160928044334 0.6691609280443334 6.35608172158582 9.844275487833032 0.7239941817518611 6.205128955954056 8.469917868551757 0.4091921422825262 4.941888067444014 8.600349909648376 0.5321373264575304 4.947394827323969 0.5237863287293443 0.3290158843873205 2.197090254381599 0.6959406801060182 0.1638322703359513 2.156915225914207 0.9560733688156294 0.1660608716453998 4.861584315667784 1.112097257663913 0 4.94839096394266 0.95992183421132 0.1248109575564658 5.015159832606244 8.958349933607384 0 9.639153412316006 8.819585590831611 0.1778297095121991 9.581070728711886 9.027830128303581 0.1508443540353324 9.599589157699974 2.306714717975433 0.5159373401517368 3.253565476360986 7.569444444444816 0.1635802469135811 2.74302786643604 7.480656382285773 0.2993209960121267 2.686190926907282 1.52777777777806 0.4135802469135799 3.98593469594113 1.527777777778071 0.4374632569077018 3.79119353371447 7.336559076682351 0.1673469831333624 8.570799450712574 7.291666666666719 0 8.436343020944793 7.148351717715025 0.1312971465421623 8.528496957382817 8.546548308990426 0.6171128500906382 1.56849576257696 7.097666295452994 0.8450382886551295 2.376383155889905 7.16650028333644 0.683341889812866 2.351207926598345 7.291056210106063 0.8383036011577364 2.276821181513483 7.237196878969629 0.8501854889903695 2.463783259823376 7.306030866853075 0.6884890901481059 2.438608030531816 7.493355098801358 0.1623497096545151 3.581160573508277 7.430555555555861 0 3.625090777697949 7.290489527843549 0.1610529671090024 3.529815427412322 3.382379731381473 0.3712225840006361 4.575564408769079 7.052215760966693 0.8550620439320987 7.572031992650308 0.4967526562446352 0.5406269203111892 7.028724793475133 4.353953307286098 0.6323869508801884 4.926630663155835 4.141049294192335 0.6418893389029375 4.826430312363268 9.234898727227188 0 7.234141133355384 9.371209257601294 0 7.235096967700394 9.245860183540703 0.1291423004003754 7.380558122817163 0.9027777777779287 0 6.992967347970344 1.051461739875466 0.1643067092117783 7.010164607951854 0.9724800427897656 0.8688614105774577 9.879718693918745 1.044789640281894 0.833245758418689 9.714816184138028 0.8398095012207899 0.8615698856571411 9.682988867723102 9.909140420094495 0.1243189231666929 8.75000344949224 9.791939307626105 0.3299487083856759 8.701876366962983 9.7010797277206 0.205629785218983 8.701872917470723 9.777858117143449 0.1491226182518225 8.816964450893902 9.660657004675059 0.3547524034708054 8.768837368364643 9.868717697048954 0.2734415414185154 8.816967900386162 6.87500000000043 0 1.219464656074424 0.4746933972295174 0.4151836140513693 2.054131606039099 1.76097070121873 0.4604731174390432 6.152776788058848 1.537677387974818 0.4959416128542432 6.144671805942306 1.679513171838535 0.4574639663274389 5.98882625182987 9.246016584239161 0.5315260566155834 6.158359776157124 7.763412899054794 0.4306228384681938 9.320579227763993 7.777777777777742 0.5917093379676351 9.485892188520605 7.624524010165921 0.522332176435829 9.367784177996718 7.710200069636842 0.4695108084944819 9.466499943387216 7.849088958525714 0.3778014705268468 9.419294993154489 1.057109249940064 0.3751439445548722 7.006904016495815 4.274462956770739 0.5936544704860944 5.928386913518315 4.104917264728984 0.6194972669833076 5.772998463461102 1.262093445133818 0.5355204634735222 5.258143218166865 1.426121800614493 0.603318389454914 5.323816477750268 0.6182248935447119 0.5952835829454914 7.588833484072905 1.182569425776518 0.5372170574470441 7.557768235224881 1.453399727310282 0.1242632538263377 2.034479180744031 1.517335406584264 0.279063985228328 1.99120492499624 1.430129062396422 0.2763606402363978 2.199148008157669 4.444444444444701 0.8766461571940973 4.617170574610145 4.305555555555811 0.8766461571940973 4.617170574610135 4.357255161771775 0.6616255810624101 4.66194374695882 2.63813601110725 0.453563504390984 2.382618622382338 6.736111111111112 0.531192266553745 9.50239538296788 6.819895288612855 0.4115032787971871 9.4705806630149 3.139167800453712 0.4492785756277805 5.654318562600869 6.180555555555943 0.465020576131687 2.342090179498659 5.91990049751281 0.3851191572999251 2.672726135896514 6.041666666667044 0.4650205761316908 2.582652791661002 8.750718957468417 0.5383783956377107 0.2014237117747683 8.749570810531036 0.4712073873316797 0.3850075235165666 8.888518795269363 0.4230050635392038 0.1835838117417984 8.888014986202151 0.6001902550425466 0.1445774150039169 8.886866839264773 0.5330192467365156 0.3281612267457152 7.672349178099708 0.837201410677572 6.010921250074418 7.560409359080316 0.6977036691411509 6.126096839964355 9.877462174672946 0.1219240275832402 6.942349148697894 10 0.2548441548607375 6.947816338444506 9.829268705597988 0.3234864757186669 7.088228857194053 6.597222222222284 0.8125367430923052 8.642539545655321 6.715007083843023 0.6351230229789602 8.682127525603196 6.684635307630381 0.8777902904639748 8.730723471427506 6.802420169251119 0.7003765703506298 8.770311451375381 6.61519086318595 0.69032703355628 8.816638690056909 0.7660098258161359 0.5921896255080166 0.4479208377271476 2.723640089080274 0.5844321436243896 7.461047764799604 3.452380952381072 0.6238700038794345 7.334752179239452 3.431693620751817 0.4542677448956913 7.304819490579684 8.274579014768467 0.4181349810389687 5.843194812371567 8.752966729595517 0.5692494871247169 6.259188262622406 5.902777777777914 0 6.752404735808309 3.501948937770316 0.8540492391389646 7.860160729928364 4.934386621005266 0.7848240840400524 0.4253407851970705 5.084344397183347 0.8418472495643976 0.3766679352530193 3.113056712731744 0.8772117198645681 1.86786041529341 3.15646070660871 0.6814801646594476 1.762613570357197 2.990998161864491 0.707004849172993 1.85814341510606 5.870277209723547 0.5831103818883163 6.724231909068651 7.124216524216771 0.4053463454892614 4.331214202962135 6.927936933786722 0.4412898419563694 4.362081151754583 7.044783727969318 0.3669688220465457 4.170520795552795 9.882075146814085 0.8767405062580187 2.64364121231622 9.71938573942939 0.8395478316474577 2.687945155941684 0.1637242426954723 0.5960082867539778 7.07819687589201 9.374999999999954 0.8374535668260412 8.590565679147373 4.077566084021143 0.1764403292181068 4.707622532428285 4.270814949405972 0.1518106712188041 4.669228695303244 4.254158478729215 0.2999051087103853 4.817126330578614 4.150010195990159 0.1480944374915812 4.85552016770366 7.46865977463483 0.7418137344324114 1.807588872670571 7.456632164701839 0.5320435816587876 1.885775096832816 2.638888888889319 0.4135802469135801 1.58030857431774 2.75466085430718 0.4320219911664103 1.673842673694026 2.835634638619251 0.3728541511845539 1.466717362749265 5.564991888937012 0.4296065469765105 7.537563064936038 5.618410692355814 0.4154011022155057 7.77195740499165 5.544047992783883 0.2911268300872353 7.632746727015065 6.778843790120398 0.6938575513298276 4.853337849573725 6.778843790120403 0.857437798243407 4.692962774798827 6.751235998094332 0.6831211089671684 4.651765530422212 4.14500511856631 0.1300398762033937 5.271547763378019 8.008274932651718 0.1747997848721738 7.277033536217932 8.077719377096169 0.1747997848721738 7.156752230136763 7.986111111111132 0 7.233529960133136 7.799978337461425 0.1208887852437721 7.286441227936353 7.869422781905877 0.1208887852437721 7.166159921855185 7.891586603446463 0.2956885701159458 7.20966349793998 10 0.3773154750776795 0.4919055828497794 0.8654836405528734 0.8472404295114802 6.944743930018788 6.389029930952439 0.4207185815212929 0.1829622440780966 6.527714525334423 0.5355983579862478 0.2011940733657847 6.389069566586453 0.5966933638272418 0.1450444270616446 6.389073406188606 0.5323943757130978 0.3280066711397411 4.652777777777829 0 8.19578040878228 4.583333333333387 0 8.075499102701105 1.853412374853272 0.5966337213622368 2.089063946146245 8.48187690357574 0.1501967576186703 8.944103258329335 8.517323412218573 0.1423798160819943 9.14393972206123 8.6661513780315 0.1227637030365637 8.986651183205597 8.572363679139047 0.265143519118558 9.092841353916082 7.025103682313942 0.5063779599547464 7.626445523162627 3.472222222222585 0 2.783121635129502 3.402777777778133 0 2.903402941210671 3.343940375353289 0.1986768532358955 2.817784945573781 4.444453108981087 0.8797186939188284 0.1178015914396208 4.305555555555554 0.8797186939188284 0.1202813060811716 4.44451121966209 0.7373129186148697 0.1911128604163418 4.44451121966209 0.8575942246960413 0.3113941664975134 4.583408773087625 0.8575942246960413 0.3089144518559627 3.263888888889056 0 6.271279511483472 3.333333333333492 0 6.391560817564649 3.402777777777944 0 6.271279511483479 3.397820582904098 0.1824642882668142 6.2814742437421 3.467265027348534 0.1824642882668142 6.401755549823276 3.328376138459647 0.1824642882668142 6.40175554982327 0.7255596615473525 0.5321539981073627 9.099972709767492 7.38806018098075 0.8605022584635789 6.025611183130156 4.726411427744661 0.1268582850369452 0.5587869157809916 1.319828126549747 0.8435274101485721 1.576747936555051 1.181998892963641 0.876410388075328 1.608276574369365 5.200667338841749 0.1590319109249352 8.128613833966334 5.336716139982303 0.3187124448191 8.196643269401571 5.413826578918386 0.1596805338941648 8.143528538136351 5.282571295344059 0.1513045006354473 7.983365390470923 5.418620096484613 0.3109850345296121 8.05139482590616 6.94444444444459 0 5.910435593240184 6.998135666591674 0.1715103786509457 5.18106272437814 6.875000000000195 0 5.068466450671975 6.870927320612932 0.1247112619321824 5.234095220655799 2.137024555480711 0.8284896213490551 3.031369279666799 2.009816209501971 0.8752887380678172 2.978336783389126 1.83905659989505 0.8284896213490551 3.54746491776852 1.729524937903118 0.8752887380678165 3.46381550671636 6.355387844549773 0.1715103786509538 8.599279773177937 6.319444444444501 0 8.436343020944722 6.464919506541701 0.1247112619321761 8.51563036212579 2.708333333333312 0 9.158030857431562 2.831468999924808 0.171510378650948 9.04543458372542 2.704260653946077 0.1247112619321832 8.992402087447731 1.964634622252325 0.8284896213490864 9.088090029877531 1.946957938265543 0.8752887380677969 8.951408122547665 2.217676849473501 0.8372614887806199 9.596438040882667 3.854904162129137 0.1605893076721359 5.537592236749947 3.90195882385955 0.3200232985275615 5.484571720979181 3.833917219238015 0.286999324606652 5.706494197293152 8.19444444444442 0.49099095683095 8.094728048246687 8.666151378031508 0.3727637030365637 8.90646364581815 9.164467177976622 0.7938874116468528 0.4150023085787169 9.444132250861559 0.5843554245804161 5.101280832428573 9.600388958140528 0.5692890787367568 5.038601895651065 9.461425066371392 0.3751953960337209 5.026260088528675 9.637649787304584 0.5241736593273044 9.026486328272044 9.908795366082721 0.1301253765027281 9.162703994550824 9.908795366082721 0.1289606650045655 9.300468474006928 10 0.2590860415072936 9.165625489760679 9.856474903991629 0.262749502025964 9.213161006464155 9.856474903991629 0.2615847905278015 9.350925485920261 9.76527027007435 0.1326241255232359 9.348003990710406 3.823669255330362 0.4864078716293267 7.693467153228651 3.640873015873113 0.5625367430923032 7.737565909425401 3.724462906124033 0.5182731723929427 7.502577628995244 0.1202813060811716 0.8797186939188281 6.52777777777777 0.2896497296178525 0.8306315764633188 6.566337061497104 0.1693684235366809 0.7103502703821468 6.566337061497103 0.1513402382666252 0.7283784556522026 6.355171714634908 0.3207086618033061 0.6792913381966933 6.393730998354243 0.2716215443477967 0.8486597617333745 6.355171714634909 5.535365377747913 0.5784896213490569 5.218594815613442 3.888888888889157 0.6297073621149415 4.437707714996199 9.114950490991717 0.4099115425946526 1.881071777583271 2.601447958724558 0.5080827040772332 0.5403744127019535 2.726507582310791 0.4822570116444523 0.749178963726331 4.791666666666755 0 7.233529960132907 4.791666666666741 0.1592344259968763 7.366807177445835 4.930555555555624 0.1208887852437732 7.368270036688802 1.827163473604211 0.4271737721226444 8.597099203831911 1.835237225256191 0.5897506840396576 8.635880288097429 3.331320447725147 0.4663593431419573 1.852312938909147 3.783755291379654 0.6902018785206318 7.921475872611694 3.892882275506631 0.8776651354283286 7.93865891633757 4.704963789012161 0.6028472658299207 3.423592217262113 9.161753429026437 0 4.948218925373844 9.226893536174657 0 4.829063713701911 9.341840163008353 0.1391147737204539 4.915674156922888 2.871151539607357 0.4840471217432474 8.942336321370135 4.236111111111354 0 4.827903838509467 4.340259393850411 0.1518106712188041 4.789510001384421 4.219454640434598 0.1480944374915812 4.975801473784838 0.937575538831428 0.5351099513365418 1.809639242125564 4.216391132054847 0.4862917831154936 2.253738823508846 6.083657914700954 0.4109149269027045 1.320125619358446 5.902739655750007 0.4263687566928603 1.25970300993811 1.388888888888971 0 7.834936490538599 5.773909862864893 0.8346874967502537 3.367171329468284 6.448312359358044 0.8346874967502583 2.199071940790995 4.846526045854183 0.8343933056850352 3.977420839049298 0.8267832319041148 0.4050634505055731 5.204962313787338 0.9630020630569186 0.4208367127094779 5.403258298991238 1.020366271898393 0.3372655245241814 5.243445779948858 9.712306791334996 0.8046773953164617 0.9978075146903931 2.083333333333453 0 7.113248654051604 2.08333333333345 0.1635802469135801 7.193436191439053 2.227203096303214 0.1544097009652502 7.035936825655552 1.495179989656567 0.4631317269949122 8.257545525980131 1.408730784553369 0.4845862287107073 8.089800162763213 1.560196991484253 0.654881558356013 8.159416575501517 1.573790808671034 0.5076038008514193 8.066456586261987 4.525404507831734 0.5017263233933613 5.172134564435409 4.571973300367018 0.5066814642632207 5.319800951297421 5.924568688743171 0.8766299455894082 1.535133138190205 5.924568688743168 0.7130496986758283 1.615320675577652 6.079268282506701 0.7089579626189648 1.480411195885101 6.929919695103726 0.1402998066938881 2.133235468088095 6.846789375270399 0.2783740060910129 2.231147244708994 8.54791985852088 0.3005499171370515 3.184769707502662 1.458717015438636 0.8435274101485721 1.576747936555059 1.597222222222655 0.8771326379418669 1.607104528841339 5.99190499033168 0.3546735737921407 2.80603367576371 8.005952380952378 0.7794679600235183 7.645923009554306 8.159056593313444 0.8455165928286175 7.646200276244876 7.994047382080826 0.8648943628561362 7.759415927352765 8.097548419838716 0.7104109556847535 7.811242325220986 2.79460811579982 0.6711398276887623 1.971529261067646 2.864052560244267 0.8297931293084249 1.931435492373926 0.2958581262543852 0.1421309489160388 8.89146695007317 0.2019295693238166 0.2664498720827317 8.89147039956543 0.4037167984698339 0.359297989372912 8.891502123077762 2.15585093435656 0.1683247916965334 4.826129550731469 2.035112336153113 0.2917815818199899 4.750753265587266 4.622315113766742 0.4853398753244683 1.245372572835674 4.604320669903407 0.3955878178189122 1.395358550602157 4.629085007738587 0.3045820762444958 1.249281172942704 7.504216674821956 0 0.6296449173025698 7.574871623432302 0 0.5284186082923892 7.684856469652736 0.1484663091192276 0.6353339774028763 6.103934881354154 0.8760786770727598 5.503794276338674 3.720329433582028 0.5082959033284914 1.145112431506827 3.933827407782174 0.5508672941360054 1.110980781122641 3.814282949039599 0.457428609192486 0.9729472552438531 3.763499919796155 0.5772925110014552 1.029052677000233 3.976997893996303 0.6198639018089692 0.9949210266160471 3.883044378538731 0.6707311959449747 1.167086202879021 8.888871122444197 0 6.872696192339436 4.444444444444851 0.8773111952570489 1.915469911268747 3.471326716832001 0.8770197909404338 0.1202813060811725 3.453912504912585 0.7217405080575128 0.180204239387618 4.519966470928029 0.7180349448093296 4.644963417198632 4.409703838294867 0.5284568284129014 4.578776737485089 0.1539608604888732 0.402265839873216 2.923429172627775 0.1704060839016031 0.4305799390837702 2.755975441537271 0.1541452116912289 0.5967916049178603 2.918520082220538 0.324551295592832 0.5290247316007084 2.887973606497086 4.323038265789888 0.476827159950333 9.165656863748511 4.295980652621226 0.403267489168455 9.326031938523442 9.877689085220098 0.8797186939188282 7.779328365861822 9.672371589867325 0.8492924393869811 7.933573135149889 2.562277812180167 0.80983666357303 0.7826452640632091 2.386608654046362 0.8383725983664974 0.8642881679206392 0.9101268007648614 0.480332815904119 6.279645861015064 3.703423570920473 0.5842032742819631 0.1741868424384906 3.521528525305933 0.5904971536103826 0.180204239387618 3.609337020907321 0.4001777225311083 0.1499702755568579 3.525202293984773 0.4991220031548834 0.3301745149444759 3.707097339599312 0.4928281238264639 0.3241571179953485 0.9042125619447603 0 6.029857612904121 0.9136873595051123 0.1468375818821545 6.197080238712997 0.7569019653286095 0.1435775374804469 6.152441486023637 8.415736393177575 0.5512080678458444 8.581067536959747 3.39800186364972 0.6161287560584061 9.615493859248092 3.40277777777774 0.5288245744297664 9.457876159780621 9.849108106459735 0.3967511911406181 2.404974779527621 9.700763802214837 0.4828300435842191 2.259033683134716 5.347222222222571 0 2.903402941210776 5.208333333333682 0 2.90340294121077 5.214848780305443 0.1234567901234574 2.763935456111465 0.7495494063443535 0.3037749295461393 8.232899237160019 0.8172849463796792 0.2930950361108338 8.023809101811429 0.9939936146998249 0.3635196251652164 5.511871512672878 6.805555555555585 0 9.037749551350609 6.875000000000021 0 9.158030857431784 6.965327127565706 0.139438525693298 9.011421882112691 3.742134895807609 0.4968706575613617 3.825623131944851 3.924160001878787 0.3009107203886445 3.933882640519669 3.92450517542839 0.4710985895809215 3.840287921806319 3.822657394143255 0.3099870838082408 3.757191618961928 1.319444444444707 0 4.346778614184633 1.358004066043893 0.1364388232760251 4.164141131499605 1.458908557712723 0.1254403975265219 4.270333441856856 5.418375734191908 0.5294065376966548 0.419414932565078 7.065315045578995 0.4755695720226464 9.17800410977879 7.267156862745114 0.5508654078915531 9.266519878603052 7.1582840738886 0.6577634982626936 9.238281836745188 8.472222222222182 0 8.556624327026054 8.402777777777734 0 8.676905633107211 8.370098039215666 0.1991345921084381 8.549548956080091 5.000000000000055 0 7.834936490538764 8.125000000000359 0 3.143965553373322 2.063795986121967 0.1651922736545215 9.449967130959463 1.093976111151951 0.4160608716453998 4.781190958928163 1.068836644560155 0.3482629456640081 4.95608031150711 1.224860533408443 0.4322020740186082 4.962699422394538 1.100276495774243 0.5253577809430992 5.006493114391546 8.308990078885232 0.1423798160819943 9.264221028142366 4.413351845659621 0.8436544704860945 6.088761988293215 4.528425424773713 0.6866144940016735 6.107996975680383 4.314531680126748 0.7005329688862613 6.190970016882074 6.917732679009295 0.857437798243407 4.692962774798835 3.418263325063114 0.3728622610980502 1.453367850727744 7.221045083399114 0.1610529671090024 3.409534121331147 7.205474665941533 0.3587730793989323 3.382565367199558 7.206651804764972 0.1977201122899299 3.237278105322833 7.070625284541508 0.1492898032521447 3.342204684152843 1.319444444444628 0.8436204739941171 6.396366300938523 1.180555555555751 0.8767239235359244 6.36221637222012 5.881073095964574 0.8168829838691105 1.929071874020823 5.749700734650045 0.693048276104212 2.00350644703768 4.432777188255097 0.626368211483545 4.780188547365469 8.194433918321113 0.4457292465489713 4.51718124655188 3.402777777777914 0 6.752404735808172 0 0.375260415842201 7.015586413444227 3.045285584122822 0.5043890168650258 2.479802434245491 6.951189093930241 0.8533205580394212 5.149062931176732 6.80555555555574 0.8791980842821234 5.322946168552098 3.147141100908273 0.1323830225095153 2.975904017946481 3.227192587372319 0.3310598757454108 2.890286022309597 10 0.6142635381709115 1.169922762194825 0.1495585820989316 0.4102647360138635 0.432265423234492 0.3165602129259912 0.4754653043842673 0.3144427184929064 0.1670016308270596 0.5684406298343401 0.451574713568613 0.1691196977105238 0.4184039479003028 0.6362083017966591 0.3361213285375834 0.4836045162707066 0.5183855970550735 0.3186782798094554 0.32542862245023 0.4990763067209525 8.287181288386826 0.5180867191933112 8.46696726875823 8.319861026948907 0.568952127084873 8.273573796235571 8.439542483660111 0.449134592108438 8.349080112611485 8.300653594771223 0.3513891478290918 8.353863870666629 8.333333333333304 0.4022545557206536 8.160470398143971 8.180972138060021 0.4712066828055267 8.278357554290714 8.180620548327029 0.4402343653341263 2.510201684660704 8.227115955891508 0.498436587818153 2.671266501101349 8.091730356909377 0.4796264398306399 2.732252565705147 8.124401868356063 0.2923634391714256 2.62039743167668 6.041666666667036 0 2.662840329048451 5.991904990331678 0.1396529976604499 2.806033675763711 7.077227576778737 0.1566612219903696 5.460142945697619 7.152777777777962 0 5.309029062834338 7.269394938391036 0.12087560587485 5.376358011906436 4.84889340560076 0.1608755968512305 8.965994278347546 4.976118551550726 0.2837156444551383 9.039447750609453 0.1684382495248309 0.5867018908271409 8.546541220311628 0.3702254786708482 0.5456132079796946 8.618083040491904 0.3194786655462555 0.4797341430343078 8.407939574450486 4.23611111111115 0 8.436343020944609 4.348261092611754 0.1665370301854105 8.420905305566155 4.297675788551578 0.1308408070892393 8.258645689361993 9.480973248117845 0.4046183972869483 7.609493038806894 6.464772682883453 0.6034271563912058 7.35453154679037 4.186698212760772 0.5756374054846832 6.668978330557856 4.216460117522685 0.5131006623923837 6.49142021205708 4.13729094557839 0.6068784984001667 6.533862614847267 4.167052850340302 0.5443417553078672 6.356304496346492 4.296211380561243 0.68251590388485 6.490529978290655 9.832997762524986 0.7101133459495356 8.831316500271345 9.742138182619481 0.8323742093032842 8.831426913646981 9.909140420094495 0.8777391366462515 8.749889586624345 9.83662152829343 0.7143046391899386 8.605590917294364 9.745761948387926 0.8365655025436872 8.60570133067 5.246895359160976 0.7049087655591665 2.685104125040303 5.347222222222578 0.8413466983803382 2.743027866435876 7.200884823487579 0.4951803235263588 1.485227661905659 6.447620596267054 0.5071418247109117 7.244662963065266 3.0385216217719 0.7037109744938572 6.596343121090783 2.920011561448141 0.8755357710735929 6.546656147956671 4.371698145514562 0.5688378143615073 5.142403604853882 2.838232307590126 0.494006723578481 6.021374305981821 2.975531572189813 0.6019816604439844 6.029239514142549 5.189375766587071 0.4151193050091342 0.1703572641709621 5.133163018910603 0.5043008150418061 0.3341837674220752 1.448936465091712 0.1374457064871822 6.290139156598849 7.635420539889073 0.1620597505846111 1.823811564858737 7.766988566439309 0.1651883518537083 1.958692589394218 7.863348835488994 0.1315085854687655 1.85452730899308 7.852559624150127 0.2966969373224738 1.992348711906949 7.720991597599891 0.2935683360533766 1.857467687371468 5.625000000000147 0 6.511842123645952 2.218531709697996 0.8798572229135914 6.952305261027703 2.231066812033902 0.6800180443338222 7.046967087831075 5.114550715387189 0.5909268222534827 1.11323500101623 4.932289401884487 0.6292239850934214 0.9832739800629375 8.0584087151936 0.8260131120375378 3.754707181871041 8.407607997102453 0.6284807051158541 1.194678908953664 8.203007417088411 0.7326427170458674 1.237464388634393 8.24610872878743 0.6885624591791454 1.102925734607295 3.45406449629809 0.3477301134106132 0.3352319713609455 4.461507936508141 0.4714302873496317 5.399348490369823 4.421270000330692 0.5155456263115884 5.456053566276518 0 0.7550711216344809 3.332732082546914 0.129665152354148 0.8797186939188282 3.210956568752121 0.2209649272270924 0.6854665479956449 3.272786269209516 4.739476061427322 0.540763324299902 8.513127477477092 2.528666516122912 0.1982460405042032 0.4162073268394575 7.500000000000369 0.4135802469135811 2.783121635129759 7.430555555555911 0.3985750040772056 2.976902529941578 1.944444444444553 0.1635802469135801 7.433998803601394 8.159468939890719 0.3100481774957481 5.856923517041896 8.148778814011269 0.1419131964567794 5.964258066604329 8.28007333600214 0.2675141844576835 6.046319299145936 5.873013388882645 0.530127950801258 3.957191656401876 3.330669665102747 0.2944864521312081 9.823928563429716 9.564816224712331 0.4175587804883031 0.768214435140391 9.52677619226939 0.437571650995619 0.5400161594116955 9.559244419155888 0.5918343777051469 0.629556040658791 1.2514116111078 0.4112979313802815 1.465756452702506 3.858829168735062 0.181047909221919 1.452849116643004 3.819444444444876 0 1.46003324836653 3.739338759935952 0.1407817315712397 1.303061945103717 0.1573907238145803 0.5871653582732639 5.68285840930246 0.2067552547638374 0.5322015120054864 5.869098544196275 0.1688272497279585 0.409470159463244 5.75238250148559 0.375582504491796 0.4545354574613883 5.795062716403451 0.3262179735425388 0.5094993037291657 5.608822581509637 6.666666666666996 0.5864197530864202 3.264246859454377 0.8387193334052966 0.8424750696541197 0.5668696021717974 0.732404136792526 0.8531588934894209 0.3634000636268234 4.337232969509555 0.5922859408556147 3.041973210765264 4.165890140574771 0.5772006584194671 3.09386529128408 4.314853974525284 0.6236717053006383 3.256423951433367 8.312876629801043 0.1556773146987181 0.9153010022400738 8.19444444444494 0 0.8586207378310673 8.333127693512624 0.1206178977623694 0.7264442635062136 9.85732622846248 0.4854192880357086 7.588986012165989 9.627254931705782 0.3838534668006766 7.581101059931617 5.647204973875232 0.3063010815471574 3.428336745376401 6.242940993784313 0.6155060877652504 7.799509625440113 1.991586289524182 0.8465792428484588 8.060124407575195 1.978857277015452 0.8292184630320578 8.238814572181903 1.822876811351634 0.8744432792959358 8.157422323469536 1.857289643922577 0.7036617423279936 8.320737792950457 1.870018656431307 0.7210225221443944 8.14204762834375 5.13888888888906 0 6.150998205402409 5.223265134613357 0.1972362154391319 6.237975128200614 5.197855633638232 0.1513103149602683 6.059724212330774 1.738508179499382 0.2949671687744008 4.880493891821326 8.749148015645467 0.4229128152787237 0.1835838117417984 7.206468999925006 0.4215103786509457 5.221156493071877 7.159522427263571 0.6033205580394212 5.18915669987047 0.9169903840043512 0 2.188571004874728 9.589992671953897 0.4843714024933723 9.768183969621791 9.679669452474258 0.3946045872773918 9.857868557294569 9.541356489114666 0.3738787670042409 9.876476268272871 9.577420668561491 0.2682000270817808 9.734344825567439 9.48774388804113 0.3579668422977613 9.64466023789466 5.101891403225518 0.5202021423079978 3.931129178870588 8.86337463748773 0.4808736093108644 5.943444234267274 8.651018724778123 0.5291686862715688 5.920233733964738 5.329274884259291 0.5177519290123489 8.9349012163662 5.222711257061105 0.3185705002788092 9.005956880791363 1.909412832571 0.8292184630320578 8.359095878263069 1.753432366907182 0.8744432792959358 8.2777036295507 7.142500416073521 0.5068515744696354 5.079146998255917 8.005809189689851 0.8537008718560268 0.6685115640903683 8.0791810785528 0.8537008718560268 0.5646972187996291 8.017968954820578 0.6296364513147218 0.5820605287633254 8.765597281253417 0.302089287069236 4.851288609852212 4.499295708104566 0.388424470071111 1.173470409506931 5.753109663425965 0.6269948285953204 8.923687505332401 3.366046202456545 0.857510288065843 5.916815351652597 3.443289020425333 0.6843979118317214 5.799665694155757 3.34509398652236 0.7148685344696211 5.982921205622064 4.741175410758986 0.3279735388359544 4.505833454752053 6.597222222222468 0 3.865653389860238 6.66666666666689 0 3.985934695941415 6.519159534110904 0.1721342502191464 3.992647208788254 3.877513836882163 0.1421075079139003 3.878895552382314 4.500490042059109 0.4936195967475425 2.425593071667854 4.674851658299664 0.5268818089856835 2.431866528565591 8.272379948199653 0.1617572316568291 1.790629029522897 8.26388888888931 0 1.941152492561614 8.418515915284633 0.1488442306274838 1.863889246845132 1.04166666666682 0 6.992967347970358 0.9722222222223638 0 7.113248654051523 1.120906184319901 0.1643067092117783 7.130445914033033 9.267914707076509 0.1611348518335992 5.043879453562649 7.227040843996585 0.8503764202021704 7.149923609651528 9.54542991771822 0.7078627573965626 4.577930956845233 1.095189520023832 0.8317545934120749 7.098615389563008 0.5578983402571543 0.3645950239959692 8.848684177593206 0.4106642227886795 0.2171670404568732 8.767756767859193 9.640017214177275 0 7.711796560975984 9.637494097459431 0.1546183972869483 7.550278707664365 9.629778048423628 0.2292350695137282 7.742618913243238 9.724891622678609 0.2292350695137282 7.647385054353137 7.718871996837233 0.312671825314278 4.354750543096809 7.800601967959563 0.4823648709508814 4.393538692503654 7.741697191676858 0.4777297909271159 4.201041197907227 1.805555555555998 0.5438843390723458 1.420468194083828 1.666560035129328 0.5913042387066221 1.339807525902386 1.666666666667102 0.6271326379418669 1.567010760147619 6.111111111111242 0.8506245738573796 6.716503446738755 6.125897929072174 0.8539279949333629 6.555307426910038 6.010850375694904 0.8580006236123703 4.596727586640286 5.942596298125144 0.7102118032315815 4.627682328485921 5.848300522375945 0.4128053973752021 5.176993661710947 6.026464939399073 0.4211427152978693 5.116818382187518 5.935053139826731 0.523263734943954 5.001652282259895 5.880810422650075 0.6021210196460847 5.153769194212927 9.136686252729255 0.8676532282754987 8.722441058478008 9.444717085403859 0.5430833520450241 8.639126433105035 9.394508683825162 0.5874535668260412 8.433905221811656 9.533670213673513 0.455629785218983 8.448524623648087 9.491741960089541 0.3387643948422475 8.530383816511051 6.550311206076707 0.1424897119341572 1.768445034406958 6.454850166026985 0.166027367101897 1.914721112311371 6.319444444444852 0.121780315006399 1.800853386562352 6.480866761632263 0.2642700269405561 1.748427234489057 8.618346175413219 0.7002807905676666 9.85191335163961 8.855229183184969 0.6691170399560545 9.862407089467965 9.235998112828197 0 7.714704982485582 7.43055555555555 0 9.639156081756493 3.953794840920306 0.4048348725760025 7.818328715330514 3.775223412348886 0.4673716156683055 7.841239440298361 3.940518213046685 0.4334872209819672 7.750191069900067 3.906217815871678 0.2757853504656664 7.790860107111445 4.119089641618105 0.3709504778896641 7.72728034493222 1.458333333333426 0 7.714655184457434 1.319444444444537 0 7.714655184457418 1.380625625400608 0.164387693087501 7.577655462260692 0.9411317868259153 0.278803850352786 7.854082875447274 5.621612128039409 0.5395402992643545 7.689921517850497 6.536812013712298 0.6384481877216267 1.782450977672192 6.536812013712289 0.8534687638533137 1.782450977672184 5.780052736894751 0.4649560078496184 7.886495465139282 5.698543124213112 0.2950159142464278 7.801788190857343 5.762775441837659 0.500742298034202 7.713498056339009 5.828423640882946 0.2653032389549472 7.857704263527935 5.108006470272093 0.8635620671788284 2.604916587652852 5.208333333333703 0.8810553555192381 2.504267475136413 1.712071014452878 0.8220730899310691 1.978156460979102 1.917953879840258 0.8799056601119621 1.996540595860387 9.603199592292086 0.8248854402113011 6.470907159727028 4.112975444519797 0.5784896213490542 5.982938098252427 7.505898063084862 0.6709055550182188 1.037192885674972 7.578986111414855 0.8165745965185978 0.9949966603637841 7.710538130820643 0.691870879314254 0.9253049423589083 2.152777777777836 0 9.398593469594029 6.7932572178168 0.4102242778540469 7.484931042052124 6.774437983188946 0.6050620439320987 7.491844455262812 1.805555555555869 0.1635802469135803 3.34443439684156 0.7130422629447792 0.6827031727982436 6.217374449823937 4.595300678673688 0.8416939042537431 1.837314522634294 4.027777777778166 0 2.301996410804849 0.6033696252429426 0.3365327791401877 1.268308528733609 4.031226127085696 0.6331619086818847 1.235799156574393 4.003270279495848 0.5508672941360054 1.391634351437151 4.015767548505185 0.4614891708470344 1.228694427983366 9.554659737718659 0.4082555638349668 6.726373754264516 9.360245998092182 0.4115130162739238 6.674259425650908 9.358823524698192 0.2921525719804602 6.759588215740571 9.429566640548748 0.3806395557065365 6.892131456625897 6.829168624538324 0.5586805487648135 6.556913816701055 6.96368370520002 0.5899825791522522 6.621015637351022 6.250371638900632 0.4713414527852076 0.3840617106827714 6.25036779929848 0.5356404408993517 0.2010994666046748 0.9027777777780679 0 3.865653389859925 0.7638888888891793 0 3.865653389859917 0.7361519866350721 0.1699971056537813 3.855713830060491 9.685406329383813 0.6690951707463858 3.388888464356101 7.971840755052039 0.5367827255901714 6.093659610795861 0 0.5025854384967856 7.361321793071495 0 0.622649387761134 7.292062291286686 7.254945419455858 0.5924796044259748 8.537731580294391 6.805959379036921 0.2761843733322994 0.5864153632935172 6.875403823481363 0.1219312194875562 0.5970213240569942 6.943765015791351 0.271659593592764 0.7548939797179444 0.7770464301781213 0.4608372353430939 6.847972904201651 3.81944444444442 0 9.639156081756457 8.744708279533242 0.121669488078616 9.879718693918843 8.74483282564635 0.2994991975908151 9.821636010314718 3.727201720552465 0.1588032124747442 4.161203090159759 3.68055555555584 0 4.106216002022403 3.508853101093559 0.1291801103130235 4.177590929686932 0.5622275207882806 0.8486133627168768 2.630076704130069 0.7628193888024712 0.8321756275265845 2.668655171974728 0.7227978923918967 0.8520393790933799 2.467549541702092 0.558110783709206 0.7006527418102566 2.541737087029399 8.748572440886134 0.4123045260605924 3.499327468532336 5.853816104674371 0.1536858538780088 8.422467380820152 6.527777777777779 0.8797186939188284 9.879718693918816 6.388888888888879 0.7018736929330945 9.821767707460754 6.592897800267641 0.8508814731519047 9.716846912964336 6.454008911378741 0.6730364721661708 9.658895926506272 6.592897800267638 0.7306001670707331 9.837128219045519 6.074166002126879 0.1523667473959904 2.922166441287037 6.074166002126882 0.3673873235276812 2.922166441287036 5.954495001578826 0.8676169774904845 8.380917726722773 5.840321899104159 0.6689401242545918 8.354400103652644 6.029453996109078 0.7488685324441966 8.340788169074347 9.025923382146186 0.5389754475694704 0.2005812416577751 3.8502884154107 0.349793927708462 6.981364709142218 3.856181963872312 0.5941825375766183 7.072490399995727 3.762227715506305 0.5433171296850664 6.90032304031091 3.911535738760012 0.4948418731766322 6.952398739996173 3.188080078854557 0.1238214137796129 5.59335991187682 7.651463232733082 0.7970373927216217 1.971606931176457 0.7721017949979514 0.178922745385381 2.721676885913042 0.7709751636906694 0 2.907494203874673 0.8863339715018107 0.1455409717182559 2.810266601866766 3.680555555555989 0 1.460038157750322 3.75000000000044 0 1.339759720509423 3.600449871047064 0.1407817315712397 1.303066854487509 9.233050467816195 0.1572634314541049 0.612114650778572 9.163688054923277 0.1572634314541049 0.7328952008723812 9.236193142663176 0 0.738838675762622 9.35416895587214 0.1521883475396368 0.7877444010007637 9.284806542979222 0.1521883475396368 0.908524951094573 9.28166386813224 0.3094517789937417 0.781800926110523 0.9170826290327087 0.8431557069244909 4.791509993118865 0.4596143340531294 0 2.073462325568451 0.5799157646596368 0 2.13936314727195 0.4077614132829629 0.1651836140513692 2.179538175739342 10 0.5017574855922762 9.536825481734144 9.768190035440181 0.4858423674663313 9.483187606796204 9.856474903991629 0.3842367540961208 9.414234138486281 4.263851868501749 0.514012981894204 3.793476574910303 1.392434987553067 0.2795516122940767 9.385658877899175 1.865123287488522 0.5459945727080346 2.487762464447249 1.872298245098252 0.5871905996125872 2.724182612902187 1.92310620415892 0.4802537797103331 2.619366197604662 6.571150213321584 0.5924302781757766 1.36588810450429 1.358547404426858 0.4054475546567496 8.581979552169706 6.041666666666794 0.8506245738573796 6.836784752819922 5.972222222222342 0.836419753086421 7.033061116664376 5.883764903529581 0.8529442749075286 6.844016864958925 5.883764903529572 0.6893640279939497 7.004391939733816 4.434782912675884 0.8492018187830606 6.794026973943682 4.526625599520083 0.8732334723832579 6.584676117721887 4.516964067751384 0.7224352911663184 6.74657966193854 4.596070043964527 0.8732334723832579 6.704957423803062 8.311886980284999 0.4146070229096068 6.14484943907827 9.857518759873162 0.1299259320307377 1.947986951209775 10 0.2520217972466719 1.944240529561115 9.857518759873162 0.1220958652159341 1.80900197182213 9.804211332415289 0.3260336204984538 1.916497131486878 9.804211332415289 0.3338636873132574 2.055482110874523 3.826818649466461 0.4273000285094286 2.470882958749282 3.897428085095188 0.684834297668383 3.093256830910926 3.759315722298539 0.8576336392489159 3.103263324306169 3.675980743953741 0.7302645937748682 3.07708050349162 4.980158730159122 0.5294679600235164 2.210353510933529 1.250176895422399 0.8771355145795775 9.879718693918786 1.183678529170787 0.833245758418689 9.714816184138069 1.385749544608464 0.8647899515693644 9.681062351715489 6.66666666666703 0.8492798353909468 2.863309172517138 6.701934461813747 0.8715681322205042 2.723461894693509 6.523453355823202 0.8508814731519047 9.596565606883143 3.962124439619787 0.6724080488314979 6.949784652086796 1.295248996319469 0.4687523523646708 7.985198860088433 0 0.6216386046209305 5.761031834270697 9.025114940532905 0.4411943426788195 5.806746231148692 9.097266155822693 0 0.3347023730021141 9.027062591099799 0.1779170276165863 0.3980048786627401 9.238705822384347 0.1559687851679989 0.3740736840477246 4.792974153617552 0.3057000505278661 6.466957152417224 4.861111111111269 0.1540113770664205 6.507805799053918 4.99356696847408 0.2741500441642626 6.590370978793933 7.427171618251386 0.854330958499621 1.142011916373634 7.306345803648213 0.7160330995112828 1.097484187674148 1.212979430953227 0.8424241744563288 6.813872340006563 0.6524102912056399 0.8492079387762791 6.009674868923544 10 0.4980086567668263 4.590877611480882 1.301883176684574 0.8591763241487398 7.245020075878235 1.216517141152718 0.6909309175608147 7.11010550530853 8.159162826710704 0.4268709005342244 0.176375224917151 9.207191315980285 0.4016165002161379 4.742445127576425 9.324945355144539 0.5036303479380728 4.581755863834465 4.533157754847889 0.4827940967787716 7.96260062900154 1.503737681119544 0.5720730899310691 2.018250229672815 1.690483389305743 0.6687068112933059 2.045880377176688 1.172580587698326 0.6246005293523749 2.920731281118545 3.03698607455184 0.5199549668099777 6.075242702850491 3.024023800700069 0.7093399068477624 6.135439136805745 5.694444444444891 0.1186994392364495 0.942147668461003 5.761141922250118 0.2480585867198996 0.9420795616101419 9.858389698549782 0.6107101495374538 5.147539126655225 1.448846542252516 0.1579269847451593 8.120033547237714 1.319459638830869 0 8.19577163629905 1.335364754018616 0.1420931083991227 8.015432244562934 7.083333333333721 0 1.820871186480298 6.657658149829505 0.8424302781757766 1.656396097096537 6.657658149829512 0.6274097020440896 1.656396097096543 6.52780349687473 0.6958990420290904 1.617975888288449 0 0.6350147914370243 1.874280768803591 8.034000461836506 0.3169133599019693 8.314723612932534 8.055555555555543 0.1522545557206537 8.240657935531399 7.895111572947631 0.1646588041813157 8.390127392264816 7.841805737640821 0.1289555452288562 8.260685233554488 7.703160952684636 0.8702125383754933 6.838559275307448 7.645971410200983 0.671077946267044 6.753654823956029 6.250000000000229 0.8641139233050548 4.116848140936668 6.250000000000226 0.6490933471733726 4.11684814093667 2.638214763038078 0.8056452742314631 1.33971431888417 2.823033519033273 0.8794793894795168 1.393805085146874 1.77539187537127 0.5082389681889924 5.877257552230013 1.78705517412115 0.6525058176446594 5.968675796342854 1.822494553639373 0.4320494529813232 6.016153868759821 6.111111111111345 0.5349794238683179 4.146309770716299 6.160914335272479 0.4247586373649785 3.986837174232381 6.013301765699552 0.4817775527401708 3.958094134692868 7.22919924143454 0.4187484092929557 5.673901164998138 7.45489368587898 0.4440827714328743 5.724018375865309 7.28601531273077 0.2914098216729162 5.706703939055318 3.888888888888875 0 9.759437387837643 3.888738886197832 0.122040330057258 9.879718693918814 3.958333333333316 0.1929529241866843 9.690637257967108 5.282571295344055 0.4638412437277463 8.017731477922688 7.113349433365721 0.8568980903711405 9.330261659042558 6.990631453500347 0.6894127167226878 9.316302264819004 3.851089777481087 0.4504708123898077 1.223418666981934 4.452039848844029 0.8407399596833383 3.117654300726033 4.461338267813414 0.7144116649839766 3.270206467480063 9.235374277036538 0 5.309454474185788 9.096485388147659 0 5.309454474185813 9.869290279817683 0.1243189231666929 8.63043441295202 9.661229587443788 0.205629785218983 8.582303880930501 9.846885838136878 0.2681751447458492 8.559330790418795 9.638825145762983 0.3494860067981392 8.511200258397274 9.716176117954559 0.1438562215791563 8.439758304386313 7.230949734183 0.4505973315041324 9.127048999250084 8.107809590035441 0.3014354497732675 2.787952663147345 8.038678320743484 0.1290241697953418 8.38650517618921 8.177567209632361 0.2812787255159955 8.311101396856927 8.478475414076435 0.1245512918165134 3.185458255735898 4.097222222222284 0.4047891870604085 7.881373237493055 3.918650793650863 0.4673259301527116 7.904283962460902 5.406341647417134 0.1669824399099872 0.8086369285278991 6.719366482046859 0.3133816568834706 2.398142215167795 6.79186968016706 0.1380741993971249 2.279626881344717 8.859874804402423 0.6377101938862484 9.62877763483063 6.514091902389284 0.1380741993971249 2.279626881344687 6.514091902389284 0.353094775528812 2.279626881344687 5.775242909373822 0.2946916089050163 0.1634981873773627 5.56696735792643 0.2789520523676842 0.1729477710549419 8.021433939544886 0.5034836405912618 9.085989007418554 8.112212602972646 0.5794412149580426 9.007446076939267 5.347222222222385 0 6.271279511483595 5.335997507047121 0.1512361568639934 6.128737509049396 8.575020343430296 0.4419145438421568 7.850534361623985 8.766262178418776 0.5495199621861262 7.854862690933418 3.6111111111111 0 9.759437387837636 3.610961108420057 0.122040330057258 9.879718693918807 3.469877809043935 0.1709350702701045 9.703647257348521 4.698489973619075 0.3003706951650419 1.766014306571011 5.664085859938087 0.5547571627749512 4.657115300627321 0.6343124232477537 0.5950355028628629 2.600673908070487 0.7512231439498165 0.5110983729119655 2.718763177314505 0.711201647539242 0.5309621244787609 2.517657547041869 7.27514205472009 0.1654011022155085 7.777693555605268 7.430555555555555 0 7.71465518445782 7.428210459617885 0.1242748368444271 7.866446763974824 4.288100688100075 0.8345646765063695 0.2857166295748022 4.288100688100075 0.7142833704251978 0.1654353234936306 4.58333333333338 0.8457704912156192 9.604532839234331 2.207218852083481 0.1389799779236054 6.390488340117997 9.85732622846248 0.3527339882235618 7.51991072280916 5.153820690168896 0.4472362154391319 6.518631509056673 5.223443031773209 0.5431553677236365 6.393265479935561 2.734375000000098 0.445730452674898 7.569315272942761 2.541348422413604 0.5301625962992875 7.516176696753464 4.027777777777732 0 9.518874775675251 4.041860095787102 0.1442420524969545 9.590931882969189 4.18074898467599 0.1442420524969545 9.59093188296918 4.027777777777742 0.1407332347052415 9.420719582282871 4.041860095787111 0.284975287202196 9.492776689576809 8.981404673831792 0.8702850311353523 9.304008664328567 7.042396178208501 0.5628350069700004 4.712142023780933 7.152777777777987 0.4521604938271603 4.827903838509648 7.08880919392649 0.5853411958186897 4.926456955856031 1.666666666666921 0 4.467059920265823 1.512044066553913 0.1592600403166616 4.546934012791681 1.528353002157161 0.1254403975265219 4.390614747938031 5.424012626511984 0.8449965826441992 7.252915153705034 3.201555999964824 0.5039173690331034 2.78922820910709 3.343940375353297 0.4486768532358956 2.657409870798886 3.425334088824334 0.5389963193417319 2.781310639717125 5.765621559323632 0.496082630966893 8.427130946215119 3.71483126165359 0.4416490257072452 1.274757518233709 3.531012217147155 0.3907817315712397 1.343158321308221 3.617451526577744 0.5048491500037865 1.186634669245662 8.322049241202659 0.7329181898759145 1.33072630541091 6.041666666666732 0.2021604938271674 8.035405334007461 5.689221455679206 0.491295018724259 5.206840720571307 5.555555555555853 0 3.985934695941363 5.478321524506861 0.1419572081869575 3.916250634661198 5.617210413395739 0.1419572081869575 3.916250634661208 3.985462943186553 0.3801822258977403 1.728784772417133 3.789384724290602 0.431047909221919 1.733501073013985 3.946078218896358 0.4491343166758214 1.896342423270742 4.072362802339366 0.5395266488175356 1.819094139995984 3.915669307733609 0.5214402413636334 1.656252789739228 3.997718057623945 0.431047909221919 1.533033083824532 4.154411552229702 0.4491343166758213 1.695874434081289 8.212432232573978 0.6037008718560267 0.7076178961328323 8.423372611390562 0.5920913146345339 0.8119067435434153 8.376671309633224 0.6146167967713811 0.6266030221752028 9.83916518074729 0.4150019220197753 6.657038782535982 10 0.5100827464437694 6.806983814288175 9.841371242791176 0.6035391445354016 6.794564487828598 4.51388888888895 0 7.714655184457584 9.296374623436691 0 0.8566425530431688 9.365737036329609 0 0.7358620029493597 9.414350436645655 0.1521883475396368 0.9055482782813106 7.847222222222684 0.8235595799300259 1.219464372826483 7.909436355753525 0.8752962827956563 1.029673095402231 1.939531148459111 0.1222829745150533 3.101455082179109 6.319444444444876 0 1.219464656074388 6.688873315211315 0.6021633254049239 8.223053162961111 0.6667400835693356 0.1638322703359513 2.295800423955656 0.5806277653294241 0.1638322703359513 2.227885735973244 0.5507151681229541 0 2.278248345313399 0.4644723236896547 0.1422518422017609 2.392899963616869 0.3783600054497432 0.1422518422017609 2.324985275634456 6.799415466730808 0.4583214390826263 1.870720554587236 6.805555555555969 0.534979423868313 1.66049611170539 6.774747407720698 0.6494477072760727 1.7529916573783 1.319444444444485 0 8.676905633106799 1.358547404426858 0.1554475546567496 8.501792014782257 1.45147268400475 0.122159213345268 8.604272622311711 0.579558700589441 0 3.035608199287343 2.708333333333605 0 4.3467786141847 2.638888888889166 0 4.226497308103525 2.789677518120179 0.1676257067424612 4.219626989813719 3.03517672699057 0.8281752034202643 6.681810402861087 4.054835390946501 0.5374240235351405 9.039551925223256 9.673556081267947 0.5936102636056231 9.851760026759395 1.250000000000042 0 8.556624327025617 9.159528527578892 0.482682463896194 0.7337153774213031 9.067229741047427 0.5219799536039363 0.5816311205050548 4.463718444412981 0.5718028962632257 9.66984369843755 4.29756921195712 0.7065770824969035 9.706445044610714 4.463007205814152 0.6991212816903737 9.542681450827544 5.83333333333357 0 4.467059920266061 5.676866088091201 0.1671573428936804 4.40767182682049 5.696777953454681 0.1309662234640949 4.553024466444688 5.835666842343559 0.1309662234640949 4.553024466444702 4.049645197173655 0.2757396649500725 7.853904629273986 9.434462962461009 0.3753527283757097 9.876476268272871 3.383736454215357 0.6011181541745139 0.180204239387618 3.366256000696702 0.5380495444898875 0.3654659351917056 3.312598656528674 0.4497262644302437 0.1852616958040876 3.471544949816744 0.4107987230952396 0.1499702755568579 9.85175344475423 0.5936134570250884 9.673581871319129 9.85175344475423 0.595081228578582 9.566763663933807 8.680553532542028 0 1.219561094562703 8.713322319455857 0.152587627797984 1.280805212506607 8.402777777778219 0 1.700589880399284 0 0.6240338135932918 9.618762348729259 0.2125763236396164 0.5418278525425038 9.609293332413564 6.319444444444438 0 9.639156081756456 1.722181683027169 0.59967681610626 8.062007137935895 1.583292794138291 0.564697392237947 7.90163206316099 1.267543063357027 0.6167119380969444 2.628024378797653 1.180662788958164 0.8413637391341904 2.597997191221654 9.774940828982219 0 7.488836906598491 9.867565394216129 0.1234989187098336 7.489088370541907 3.966036993328187 0.5950343653500838 3.464769235348706 3.983398104439312 0.5407648180249796 3.27432383405352 0 0.3825746464710123 8.678496802316559 8.592131845748048 0.8365677807499143 2.469130697792571 8.73999576265053 0.8440998247051198 2.58926903792916 0.834636927410231 0.8704514928853917 9.879718693918745 9.867359704670188 0.1219240275832402 7.092488970722803 9.744821879343133 0 6.949500198029428 7.638888888889294 0 2.301996410805067 7.766988566439314 0.1651883518537083 2.199255201556582 7.628099677550424 0.1651883518537083 2.199255201556571 7.507209794416887 0.1214683973750618 2.381428959395446 7.635309471966908 0.2866567492287702 2.278687750146961 7.646098683305777 0.1214683973750618 2.381428959395457 4.930555555555639 0 7.233529960132912 7.916666666666696 0 7.113248654051959 7.847222222222245 0 7.233529960133128 7.73053389301699 0.1208887852437721 7.166159921855176 2.111924980072886 0.4078412604582609 8.700492006858921 4.722222222222598 0 2.542559022967228 8.125548015500762 0 0.7430033925722987 8.263876141489051 0.5253432145012191 1.600366498237441 5.699920305037454 0.5853411958186963 7.856664679273591 5.635687987412906 0.3796148120309221 7.944954813791924 7.638888888889245 0.8214837977345739 3.030156178950541 6.458333333333782 0 0.9789020439120479 6.1366140053613 0.1387400332238638 1.42674229471835 5.994104645896776 0.2654094136017935 1.502791445215864 8.819331145631228 0 2.42221230378582 2.133240430566412 0.4151922736545215 9.490060899653251 2.21767684947347 0.5872614887806199 9.516250503495186 9.794682504647227 0.7133410181950537 7.925892144691431 10 0.7437672727269008 7.771647375403365 9.85732622846248 0.5932836483218009 7.791306634269119 4.295655271300451 0.5040579834958874 1.827197999436291 2.062423382392204 0.1582464177677305 3.808930387623155 1.943660520112814 0.2795193758030093 3.740362617116409 1.525422486014025 0.4450762049626902 6.340423735446955 1.678921568627622 0.550865407891553 6.27599642544736 1.748715799257937 0.4096077095474902 6.348528717563498 0.4290032959002473 0.8475728983645285 4.337581344804574 6.847790293202305 0.4432762182546501 2.832823789404776 9.422946829943292 0.845027769753929 5.957924925920998 9.440996193749672 0.6279530496632673 5.957773541797154 9.613312641538322 0.8442754878330323 6.017282328613675 9.631362005344705 0.6272007677423705 6.017130944489832 0.969072699119181 0.5834952340219645 6.393901792358629 2.413194444444519 0.4746656378600821 7.945194354446406 8.264436904389662 0 0.7430033925722994 9.294604601316248 0.5754190324420889 0.781967879734776 9.160345748583557 0.619306444088942 0.6312110311349126 9.296438674818319 0.5438874116468528 0.5519193319154135 9.295621453813652 0.4072634314541048 0.654423678201804 9.16136260108096 0.4511508431009578 0.5036668296019408 3.332486655131049 0.1251102123263139 9.879718693918797 3.471375544019939 0.1251102123263139 9.879718693918807 3.333333333333315 0 9.759437387837602 3.330988920155046 0.1709350702701045 9.703647257348511 3.469031130841669 0.2960452825964185 9.823928563429716 7.222222222222399 0 5.429310368915515 7.216116465667626 0.1566612219903696 5.460142945697628 7.408283827279925 0.12087560587485 5.376358011906445 9.000161922865921 0.5570282428808825 6.763699118816916 9.882073843479674 0.8790323628112215 2.917989980661857 9.826398743237771 0.7040285665969636 3.058070492772885 9.837310592615305 0.7185801944586794 2.828220396256377 9.613488618265137 0.8332084564234897 4.917877298580976 9.457231910986167 0.8482748022671491 4.980556235358483 0.6077935272220785 0 6.518074467826171 9.527115407685869 0.5612716077289128 4.089144896109928 0.622830520204677 0 9.15752596711647 0.6317194090935792 0.147427983539096 8.992018889948776 0.4775378673062587 0.1421309489160388 9.034836835433332 4.375967379805421 0.1572660122150918 4.945787496035436 7.291666666666851 0 5.309029062834347 9.414455856378313 0.1391147737204539 5.031563089318253 9.533995443812426 0.2913591879757519 4.90617442467884 9.441441055905086 0 7.355668042958275 9.422081090235739 0.1546183972869483 7.419175262327293 6.299302427630561 0.8281216168398935 5.436421739033918 6.173379325798606 0.8760786770727598 5.383512970257507 2.510522936454611 0.1468227807369978 8.149611219893762 2.638888888888955 0 8.075499102701023 2.469209437221093 0.1396651540957629 8.002920958849955 4.748229399948986 0.1621076141533412 0.2875665958830846 4.862030623891339 0.1223385358219659 0.1149397308885211 4.865483519981003 0.1268582850369452 0.3621984671270458 1.597222222222413 0 5.790154287158707 1.527777777777973 0 5.669872981077532 0.2017872291460173 0.3472924169596012 8.888965678156872 0 0.254444299669421 8.888933954644539 0.2019295693238166 0.2722563254187669 9.030397455225465 0.5086038060106937 0.5386334050018153 5.721871038935324 7.668699945810298 0.8314097249690939 4.150388851029521 3.194125189392127 0.1235513818611036 9.879718693918797 3.055893881724371 0.296406879096386 9.826907818655032 0 0.388404689681743 8.960493944768505 0.2017872291460173 0.4754463536358881 8.821598612620802 4.557420658967297 0.1810478729151203 3.474292302660455 4.418531770078408 0.1810478729151203 3.474292302660445 4.444444444444761 0 3.504809471616587 4.446901248829665 0.1544493996232955 3.622023290262979 4.308012359940776 0.1544493996232955 3.62202329026297 1.90850104433949 0.8284896213490551 3.667746223849697 1.7580050135929 0.6813672761302074 3.680865915634038 0.3533383582607559 0.8064358477992164 4.203344260982323 0.2213347758955013 0.6799522478137576 4.221576617874778 0.1320035823652546 0.8735164000145412 4.287323198663099 0.2722239264743364 0.8677447633322468 4.090999815948991 0.1402203441090819 0.741261163346788 4.109232172841446 7.013888888889086 0 5.068466450671982 4.84092093330361 0.8284896213490551 2.973343768764847 1.458333333333559 0 5.06846645067167 1.597222222222448 0 5.068466450671674 1.58146899992505 0.1715103786509443 4.955870176965519 5.674254266636786 0.8284896213490569 5.378969890388348 6.180555555555668 0 7.233529960133007 6.319444444444552 0 7.233529960133011 6.303691222147121 0.1715103786509524 7.346126233839178 2.847222222222201 0 9.158030857431575 1.196012563273116 0.35818450702488 4.458800984106368 1.215853833114382 0.1376467284762485 4.527533159009895 1.355317946382398 0.2630871260027704 4.451087986682118 4.981155900769247 0.1624535654774085 0.2852969950594832 6.207606442316725 0.1318481436123457 8.537880957145568 6.983188185704803 0.6044927767354118 5.697251918944113 8.612205682683882 0.1818077769070109 0.877328073767129 8.608134986861629 0.1501298017486674 0.7145258715010663 8.472017481622732 0.1206178977623694 0.7264581310112606 8.469039558930303 0.2707476995110368 0.5823355296711649 8.473110254752559 0.3024256746693804 0.7451377319372277 2.303342917217163 0.5833956075315045 0.1767784892317013 2.134989115565108 0.5867922464431542 0.1806127229450576 2.23787268432303 0.3922137751957913 0.1581893186895821 2.162241269505675 0.4973745098457939 0.3388020416346397 2.33059507115773 0.4939778709341442 0.3349678079212833 8.750008433401813 0.8417355459705539 9.646089239281507 8.888897322290692 0.8417355459705539 9.646089239281501 8.819469478120361 0.8417355459705539 9.525805263759832 3.595286802911014 0.3482103407637257 1.136723992354921 3.622949698506182 0.5714960276250327 1.056989582518779 1.995252403505471 0.1430631800977459 2.598117682444455 2.034934943188 0.3305264370054483 2.735582032251512 1.986110762738968 0.2727675576781821 2.531429954339167 1.082685480997743 0.3360405391293916 1.79775443881545 1.265200044066868 0.3236337832132918 1.71935821353647 8.711116860979018 0.2985703116123929 9.066509429687976 7.80060163309665 0.660131326403826 4.393538885836846 7.708332496141622 0.8364199081219663 4.507154172312895 6.180555555555626 0 8.436343020944705 6.250000000000066 0 8.556624327025879 6.06871755342785 0.1318481436123457 8.53788095714555 4.88619378505585 0.141412947590903 2.127031739782263 5.006264563186821 0.2644156885707268 2.053071039772696 3.26388888888915 0 4.587341226347072 3.224517819301644 0.1723168683486633 4.746855466923524 3.382379731381469 0.1212225840006361 4.655751946156527 7.951989495100473 0.551323146764114 8.885520163949943 8.124999999999964 0.4521604938271477 8.917468245269513 8.042768158528233 0.6272807211308948 8.806977233470656 5.008902512664214 0.4946411587291685 4.14853655097369 5.833333333333677 0 3.023684247291972 5.902777777778115 0 3.143965553373153 6.004721557682426 0.1523667473959904 3.04244774736821 6.31944444444482 0 2.66284032904847 6.180555555555926 0 2.662840329048459 6.217500664540519 0.1523667473959891 2.523795522891052 6.216498955660898 0.1715103786509538 8.599279773177919 5.555555555555557 0.8797186939188272 9.879718693918804 5.543630147780867 0.7014755378161022 9.855681174424317 5.543630147780867 0.821756843897275 9.735399868343102 5.404741258891985 0.821756843897275 9.735399868343119 0 0.3775692161035322 9.507751939075956 0 0.5017574855922762 9.536825481734144 0 0.3761014445500386 9.614570146461276 0.133454162745723 0.2656695851834098 9.66087882438309 0.133454162745723 0.3913256262256474 9.583134159655959 5.902777777777981 0 5.068466450671938 7.812696437210684 0.516440850005514 6.984424431712032 7.721805639717787 0.4310478729151193 7.110854504117551 7.589981606600563 0.5072039667872411 7.010335431507047 5.785256410256567 0.5142054447610058 6.240438150949986 7.951999485210786 0.8162506856136869 5.921829173537042 3.33333333333333 0 0.2405626121623443 3.471315665218444 0.1254521689616677 0.1202813060811725 3.332426776329555 0.1254521689616677 0.1202813060811718 3.24478132372723 0.1933288273728087 0.3055430018852594 3.382763655612344 0.3187809963344764 0.1852616958040876 3.383670212616118 0.1933288273728087 0.3055430018852602 8.078504592435912 0.7846475717546569 2.381494206526821 8.02236858250804 0.8622999390249573 2.50086382093986 7.952924138063603 0.8622999390249573 2.380582514858683 9.796027050102401 0.4589523637251257 3.403607553696272 10 0.368010056842963 3.40200706355636 9.810415311696184 0.4015797655759577 3.244465871127984 5.293377523452214 0.8418472495643976 0.2689313838653716 3.819444444444786 0 3.143965553373032 3.8368055555559 0.1957304526748959 3.113895226852741 3.670008313499553 0.1524152980208935 3.050794559815097 4.513888888889113 0.4714302873496317 5.128543721249934 1.734866468922272 0.8167416612826867 0.9818219382349431 1.665528583047333 0.8167416612826867 0.8613558141382602 1.851463264903805 0.87921426335979 0.9125498026376233 1.850325181283997 0.6959559246424767 0.9152848789452304 3.954663658853153 0.2948216064266876 7.643087820041735 0.1583676738675522 0.7258881501800193 0.810070754877393 4.671756700780435 0.5220144495340857 3.540304247179356 4.016459717631298 0.5287984045180181 6.402086999934831 3.986697812869386 0.5913351476103176 6.579645118435607 4.096210980669856 0.6982136460104843 6.401196766168406 9.148888888889019 0.3997548260231673 5.643900601256567 9.126266679788332 0.4200952868493529 5.479832970341555 9.328204492687863 0.392801532610317 5.483087533342137 10 0.6126793137222193 4.097178279673514 10 0.3862565155364582 6.878064830497465 1.961567164179382 0.420098581168231 4.056236426480536 2.104944479966639 0.4176179090052663 3.898816253198282 1.895126026609783 0.3712729580352789 3.877273156740688 7.777777777778178 0.1637226612108351 1.740905651011621 2.922501335584044 0.5249985433014885 6.650036433789316 3.008880782301231 0.3450818015294164 6.573895404354784 7.07550258867019 0.4113672280349112 7.979803799332057 1.926239389380549 0.2931790755909208 9.810811049203084 1.737443403258603 0.2777514437194561 9.839624925225021 5.010234956213272 0.8398885978905786 0.5727790513297513 3.243954374621532 0.8772877948637453 0.9066005992896899 3.258361867480422 0.7067678539987843 1.035981448429247 3.218166255418853 0.6947902148664433 0.8436496702663161 5.083443881223836 0.5910640860496349 0.1638265032511131 2.550929831473678 0.1799860256988958 7.183425542676853 2.570089979957865 0.3331235459993264 7.054978516275495 2.519160148484302 0.1531375203004305 6.984801627650272 2.405504265253985 0.1393350854005267 7.18094264344219 2.424664413738172 0.2924726057009573 7.052495617040833 5.0907173080448 0.8492238941302386 7.517783244285347 4.282088122605426 0.4092344259968783 7.848485419269728 4.280612308254888 0.6177512976966051 7.915212413763269 8.750000000000446 0 1.820871186480485 2.430555555555583 0 8.676905633106848 2.56944444444447 0 8.676905633106857 2.554098641460044 0.1712387657756324 8.564732761970729 7.716633259069056 0.5512604112906125 6.876258894066773 9.867565394216129 0.1232802177586016 7.627196168555009 9.745254479436227 0 7.768165272460323 5.376984126984532 0.8125367430922982 1.958335536287279 5.493627638685878 0.8761652922351015 2.015587065578261 1.54188292165162 0.5416932277196558 1.39979845630469 8.644718964314807 0.8497812603470241 8.056648651196493 4.027777777778045 0.5913443704594912 4.436353045273155 1.449927342606952 0.1270234150834874 4.914399759809695 7.152777777778194 0 1.460027268236793 7.131240040777035 0.1581448064892423 1.282932205494245 7.261144591373547 0.1424362690299288 1.352535894384328 6.984712710620325 0.4198107750262129 4.046164697262455 7.009399164930064 0.503068327374379 3.899053005786113 1.736702714322198 0.1565985584358859 5.903921800478458 1.875000000000192 0 5.790154287158716 1.879684096123036 0.1311840450897702 5.931249417408409 3.057938290486025 0.1625967204061997 6.009136848881024 3.055555555555744 0 5.91043559323995 3.188080078854549 0.1238214137796129 5.833922524039165 4.174894436903148 0.1240433205449796 7.276606360187373 6.736111111111311 0.8364197530864206 4.98827891328452 6.848288234564843 0.857437798243407 4.813244080880004 2.689818720362572 0.4299860256988958 7.103238005289417 6.527777777777798 0.1635802469135791 9.198124626125486 6.387636101700462 0.5823280170295566 1.355359945501736 6.23835750846448 0.4932429439322611 1.34559121444079 5.30322930348327 0.5132055855141204 3.610288903423906 3.72309145230346 0.3362810707169593 2.366504908420139 9.608367932663411 0.3136826944217194 0.188678069154057 2.152777777778068 0 3.865653389859993 2.855531621038128 0.1591758214235431 3.104532445899758 2.986111111111453 0 3.143965553372993 3.008252212019384 0.1323830225095153 2.975904017946474 6.616514863146731 0.4801878740058311 3.99264720878826 2.005455157971418 0.8394810711406282 5.406492695999694 2.152777777777987 0.8773401335379738 5.454812508945576 6.04166666666687 0 5.068466450671946 5.091415334630936 0.6817358474549762 0.523764122578958 5.207630825024141 0.8441808047470314 0.9981473762595383 5.070475782463747 0.7234047898404528 0.9223317750230136 4.006511189384012 0.4899836336601976 0.6765153071246111 4.086366638970635 0.5844081388646911 0.7953506572003064 4.094488066783927 0.3745718344232898 0.7675333477385881 4.153073782514817 0.4589799732879808 0.6240684000792273 4.513888888889147 0 4.58734122634714 4.583333333333585 0 4.707622532428316 4.409703838294861 0.1518106712188041 4.669228695303254 9.844275487833032 0.7207080320520938 6.06572806663269 9.716459147576836 0.8442754878330323 6.071861486628704 1.811287331342801 0.8335407335915246 4.223188065809941 1.811287331342794 0.7122677755562459 4.360323606823417 7.916664155075314 0.4086534526690217 4.467059630268938 7.910343179046398 0.3121846296379513 4.62482712791447 0.3571349507606479 0.8370816128072078 9.229196084277589 0.4827918868026521 0.8699255637106145 9.320956773651485 3.263888888889078 0.4650205761316856 5.870341824546235 3.410576151302307 0.5419081998975639 5.793285935743124 3.312381117399334 0.5723788225354636 5.97654144720943 7.708333333333339 0.7978395061728454 8.516530558332267 7.787117613641705 0.8496388163035555 8.650750551217604 4.444444574846621 0.1575203387901702 1.462335415260642 4.446799274626715 0.5549236668200661 1.952195606114334 4.293300441118575 0.4491343166758213 2.016623729351933 4.293300441118578 0.5764455119328702 1.950847379365599 1.180624061495249 0 6.271273326463273 1.052233718696485 0.1468375818821545 6.197111163813426 1.149802232828477 0.1350871627342926 6.085242629008013 6.288085376629507 0.5572475639987237 2.2437974758665 6.096874763030836 0.5123255690352706 2.133401976633382 6.010307598851702 0.5572475639987269 2.724922700191181 5.819096985253033 0.5123255690352705 2.614527200958065 5.732529821073889 0.5572475639987239 3.20604792451587 5.541319207475224 0.5123255690352707 3.095652425282755 5.018668311370178 0.5014667544423801 7.594373878376428 5.011555964079921 0.3216178667758337 7.662731195499196 5.072084602440794 0.298795868904259 7.488551342769981 5.204461155715798 0.644675790655538 6.08386452443809 4.652777777778147 0 2.662840329048397 6.249736748741414 0.1265959230262372 9.879718693918818 5.049526504629643 0.5720214763374578 9.038548820629387 5.107516034488462 0.4864800333867415 9.25653263872934 5.057989529858852 0.4144585570492971 9.095358294675519 5.115770231364374 0.2872986046531982 9.128717998243701 5.107307206135165 0.4448615239413589 9.071908524197571 1.972946041125 0.8097748528605604 7.794141449005929 8.273543570242436 0.1501967576186703 8.823821952248144 8.256666335430378 0.2792209274140122 8.653702801411333 8.177567209632361 0.1290241697953418 8.62706778835155 8.133865473624255 0.1272208837726727 8.850494212687337 8.212964599422275 0.277417641391343 8.877129225747119 1.845238095238309 0.1874632569077009 5.326212106559911 1.944444444444654 0 5.429310368915202 1.938678790760566 0.1479432720090957 5.482196512529925 8.749362046400609 0.3120820260291098 0.3179847385941001 6.736111111111221 0.8393207319954464 6.369555763174741 9.068046962052094 0.6586039337966842 0.4791267742186642 5.763888888888943 0.4521604938271673 7.955217796619978 4.967864354674814 0.4828970731886816 9.16726239109509 4.976327379904024 0.3253341539005209 9.224071865141221 1.386214685159493 0.8420244244952075 1.972252123348729 1.431619032945299 0.6640975144262767 1.88897478568546 1.573182125563991 0.8220730899310691 1.978156460979094 1.507931040697997 0.8786753216815157 2.130162817034029 1.553335388483803 0.7007484116125848 2.04688547937076 7.291095418611127 0.3624231880960542 8.674515786657935 7.176758564151051 0.1950762049626918 8.660340662971308 7.285430073519734 0.132281607642499 8.722491654859933 7.23996641544851 0.3273578126051908 8.826207990805294 2.92902783046404 0.8494064492534397 0.9396215498351594 2.848107082580713 0.8366314123343502 1.139937006915142 2.967061457201781 0.7139192071980955 1.06749466901755 3.035621041288193 0.8772877948637453 1.026741012095476 3.047982205085109 0.7266942441171849 0.8671792119375674 8.53868964319599 0.1501298017486674 0.5942306979148411 8.541667565888417 0 0.7383532992549369 8.402572137957094 0.1206178977623694 0.6061629574250356 2.553517146139489 0.4667942996145973 0.7116429267114415 6.619428870766871 0.8521633254049239 8.182959394267385 6.537409638941185 0.8767836779932139 8.390688294615558 6.774747407720689 0.8644682834077597 1.752991657378292 6.76573889088313 0.7068985615835364 1.588516567994557 9.877689085220098 0.8640485788080726 7.912086852376305 9.228964033582701 0.8589381285352162 6.354182382824351 9.33608967641285 0.869686977570312 6.457444098853224 6.736111111111289 0.8791980842821234 5.443227474633265 7.252825051606134 0.5268535194042371 6.524126585645522 7.251626230981042 0.7159091350294473 6.621257219425157 1.503737681119554 0.8220730899310691 1.857875154897918 1.316770240715055 0.8420244244952075 1.851970817267554 8.732235627399886 0.8782896986297241 2.371927682889729 2.500000000000421 0.1635802469135801 1.740683649092628 2.339871131490077 0.1482547129929949 1.832870667494331 2.500000000000409 0.1200943398880383 1.950657592044077 2.33987113149007 0.2683490528810332 1.962657073058333 2.500000000000413 0.2836745868016184 1.87047005465663 5.724690348621566 0.1459961275202412 5.406319617757014 5.625000000000188 0 5.549591674996586 5.74444567715343 0.1220640804458481 5.614409164400604 5.749674188625471 0.3797330515791439 0.6080437743974891 7.088023488350895 0.5958056464891206 6.474456217214206 7.152777777778118 0 3.143965553373245 7.291666666667008 0 3.143965553373256 2.167283172769741 0.8379642593755801 8.74693877696823 2.01640238270999 0.8752887380677969 8.831126816466499 3.99197996250173 0.5578700018864438 1.987143307182361 2.204861111111201 0.4746656378600821 7.664537973590326 2.095082126160495 0.3912506749473162 7.764419583552767 9.907311489483501 0.8811572370349254 5.419166185214216 9.86530710880167 0.8811572370349254 5.550936161163871 9.680471037643715 0.8473089296858853 5.489680850807965 9.773159548160214 0.7284661667208109 5.492180369355522 1.795405094233732 0.1312975886365508 1.750500618227894 6.542808634400688 0.4050790671441155 6.565825158367558 5.899992689110805 0.3057279041763103 0.978978522231167 2.164861859387535 0.8598285483239969 3.759096190553596 4.944142278514381 0.523443198527385 5.275087020061886 4.724584751942665 0.4820315422339747 5.309766318267626 7.324346405228862 0.5508654078915541 6.224110371844047 7.365801266128672 0.5958056464891206 6.394268679826776 7.190147671357439 0.6466710543806747 6.307005771493365 7.188639176879496 0.4927020347839428 6.383081141103712 0.9822892453204839 0.5882171311777038 3.029399572188508 0.8925503825289927 0.4837581028959598 2.974202483043723 6.109261488003372 0.1538963508288493 9.724294803460177 0 0.4835643389177584 7.907036177640748 0.1777151482013803 0.4230025420772138 8.015919876491123 0.1639031727676435 0.5834177881738929 8.074915767341668 1.319444444444626 0 6.271279511483374 1.288622615777854 0.1350871627342926 6.085248814028114 2.035995000771408 0.5258116365907616 9.526836338490666 3.903248077748488 0.4928499530903633 8.778714808441128 7.980774745984617 0.2724760623939577 2.273790296909492 8.076602112857763 0.406407137914313 2.307258096560287 8.020421210426134 0.3843133093003722 0.1435174192172469 3.450882753268689 0.4252345430883567 9.31652629765075 4.385370014325405 0.6748392242677438 6.79078810608079 4.395031546094105 0.8256374054846832 6.628884561864137 6.671707151897788 0.8356314460599593 7.252347995440291 6.855756169924151 0.8455926576536408 7.302607067045951 6.686792693276223 0.8787270419647235 7.422379036720951 6.736993307644768 0.7243196996183643 7.371174837552674 6.552944289618406 0.7143584880246829 7.320915765947015 1.519514514289501 0.414387693087501 7.497467924873256 2.845703210723867 0.3774493965690226 7.486734492702116 4.166531145137496 0.1269210461018424 0.1202813060811716 4.027642256248608 0.1269210461018424 0.1202813060811742 4.166666666666666 0 0.2405626121623458 4.31049498745725 0.1483447419024839 0.3018972083451087 4.171606098568363 0.1483447419024839 0.3018972083451113 4.171470577039193 0.2752657880043263 0.1816159022639371 4.699714399398315 0.4946486969770246 6.249665852234011 1.540032679738747 0.550865407891553 5.955246275897567 1.470623886339626 0.6445568705992676 6.084238992855825 1.137728448517666 0.1174259203299122 4.326813728116148 1.1178871786764 0.3379636988785437 4.25808155321262 1.103582281631792 0.2550726488061607 4.387286966860243 9.857866815960541 0.3349902176053109 9.758393452134623 9.709620260714772 0.4879315236831629 9.709628584053963 9.758395865182736 0.3349901306138099 9.857868557294569 0.7917326404306813 0.8423258720076678 1.48889450263573 0.6969832587012141 0.8423258720076678 1.375261548523893 0.7457177053934205 0.6010621212422013 1.421043902295441 1.592796045601277 0.8167416612826867 0.7436974834243316 1.454141519884107 0.8386551986008538 0.6677442991046615 1.643751203906104 0.8757908641911546 0.5621150664404349 1.576691132015183 0.7144460627920084 0.6065552891423004 1.715345657732352 0.6925325254738413 0.6825084734619705 1.94444444444446 0 9.75943738783759 1.806887847703047 0.1279868019363992 9.879718693918786 1.945776736591939 0.1279868019363992 9.879718693918804 1.92490709723307 0.1651922736545215 9.69052974312187 3.704757423672291 0.5618703884422573 5.668047884555417 3.541666666666857 0.4650205761316856 5.709966749771354 3.504935091345433 0.5725308641975285 5.916815351652603 3.574379535789883 0.607510288065843 5.716346508183987 3.668025848350867 0.6693806765081004 5.874896486436666 3.055555555555852 0.5081390455737093 3.905747158553754 8.896731607856795 0.1241536169056681 9.446154201472009 9.035639646723324 0.2749979709410005 9.526873922377646 0.4494325636280309 0.8496070667791725 7.021514682519802 2.408986995024296 0.4773994292137203 7.824356652939202 10 0.2139400074443432 0.2963217847860847 10 0.3162228154931588 0.3066856665681342 1.989712802375706 0.87921426335979 0.913658710730672 7.138253028437063 0.1402998066938881 2.2535167741693 3.589751027314697 0.8156485286349928 5.176415506623048 3.709263862057319 0.8693822880241886 5.245416273933326 3.194444444444698 0 4.70762253242824 0.9753451958374524 0.833245758418689 9.594534878056786 0.770365056776348 0.8615698856571411 9.56270756164186 0.9768394126716236 0.8701151197462821 9.454075980296551 0.9138711361146366 0.7316850054034232 9.497908766263405 7.576509300216132 0.8261560938721219 7.213198424910065 7.70719244948112 0.8787038692746927 7.368833922944312 3.749370787859342 0.8766482891576179 9.879718693918829 3.814375155277212 0.7293833764210537 9.784688519071103 4.317979441858846 0.8765432098765438 7.285520026644701 3.900228588135082 0.8729893406170426 5.997726834715309 3.915981810432482 0.7014789619660968 6.110323108421465 3.90792363064167 0.7424866076003502 5.90038347363014 5.625000000000182 0 5.790154287158924 9.388755540678851 0.831728457933238 0.2675556710639891 9.387711553455642 0.7027677929286708 0.1512055742935128 9.317106479890064 0.6256158695800909 0.3517868159512879 1.371687390938929 0.7032552825805777 0.3703192746757307 1.313045049409693 0.6166622779016175 0.2053545820831832 1.456796099247277 0.5969256214135632 0.1649646925925476 1.322585580319269 0.583267545340091 0.3114270517613604 1.263943238790034 0.4966745406611308 0.1464623591688128 1.178834530481685 0.6030042018281453 0.351816941251996 2.3604369852603 0.8056452742314631 1.339714318884154 2.178485988139053 0.8797607796964505 1.394682373021304 9.282686291203053 0.4284396696051936 5.776718039559352 9.390794540015357 0.3928608144461211 5.679831603691095 3.378224930702321 0.1590334233810332 3.931665334378938 8.942322716315864 0.6514028904152152 6.576210954362802 9.000169314504433 0.8070282428808825 6.623000742714376 9.098387682654721 0.6641295821943068 6.750332218220557 1.736111111111301 0 5.790154287158712 3.177437012856609 0.847485880854659 5.268724833323764 2.749430311337695 0.8440303045686914 7.658194998383708 2.789712621868418 0.8772101563130627 7.521076926437303 1.389065784311292 0.8771355145795775 9.879718693918781 0.3460304863853394 0.431395993175875 9.655602010335379 5.352015739788504 0.1513045006354473 7.863084084389754 5.501592616090246 0.2809193126663694 7.933008638949173 5.566243542968463 0.1296148120309221 7.904861045098197 5.411748411539233 0.1257257278717296 7.735819581255919 5.561325287840974 0.2553405399026517 7.805744135815338 5.347097484661016 0.277030228507177 7.763967175106895 6.133057071360729 0.5087311869222622 6.437260652206067 7.79125008416225 0.4310478729151193 6.830198123261492 3.954296460945073 0.5034615501104267 0.515890229018928 7.847222222222234 0 8.676905633107168 2.498154804431366 0.5556452742314631 1.185058234373047 2.358694103719444 0.5909427039230002 1.105621682708465 5.487420010621511 0.1191599462614138 2.025294214365733 5.362975444520024 0.1715103786509436 2.069118831017581 5.460157836739846 0.1201938380793228 2.246918512166362 5.406466614592804 0.2917042167302664 2.254603544541375 5.530911180694291 0.2393537843407366 2.210778927889528 0.5833214318530539 0.3836098447654102 0.145124775261522 0.6014047806524283 0.6015385947047261 0.1497196059844325 6.633354377843778 0.8149036657997324 5.683366357455522 4.375000000000309 0 3.625090777697754 5.556864455065949 0.1191599462614138 2.145575520446906 5.486111111111504 0 2.18171510472374 5.529602281184284 0.1201938380793228 2.367199818247536 2.412040942584783 0.4299860256988958 7.343800617451745 2.49402048936515 0.4801468471191266 7.157806063399048 2.304201769002691 0.5501608214202308 7.248004249548717 2.376417866858052 0.5844321436243896 7.420953996105861 2.458397413638419 0.6345929650446204 7.234959442053164 0 0.4880021619605858 4.308074997622491 0.1512278839080977 0.39780379245095 4.447006015043336 0.1512255181223343 0.5926870240020301 4.449074355042022 2.936741129893587 0.4823838476453002 2.793197503828931 2.91317118016746 0.5552405157972078 2.594189823887896 3.411696245332202 0.4940543549637123 9.148762514073701 3.571924603174605 0.4429657905872052 9.115873529678396 7.797792832347321 0.8457966998411031 2.234757280976524 7.638888888889285 0.8823765816281921 2.390137803036906 4.864385852606485 0.8819717671692461 3.102313069074573 5.697719185939667 0.8819717671692461 5.507939190698071 6.180268072119153 0.118028232830759 7.390289667779987 4.187290930559726 0.6280685229789128 4.985895656911011 4.079477383993979 0.5349794238683128 4.912770779551862 4.201709802206122 0.433073861359894 4.900293340052345 4.118934853667006 0.4911835366021812 5.089020119837697 4.287810717327307 0.5064097112179444 5.012941818823705 2.053571428571426 0.1874632569077299 9.020566507624528 2.013888888888912 0 9.158030857431548 3.143298991795458 0.6087896294776735 6.18572632735059 3.281098806299561 0.5788692347925238 6.258332320595709 3.098151658066507 0.6269671541474884 6.394997109854332 10 0.2532826724626919 8.610189067401564 9.869290279817683 0.128963749295999 8.490616581369082 9.846885838136878 0.2728199708751554 8.419512958835856 2.283859560045539 0 0.7617581801852848 2.144128773887322 0 0.7553490213438869 7.77777777777814 0.5714837977345739 2.949968641563103 4.479819273639614 0.5826112443137672 1.245981520731963 8.057702620418214 0.8723328908105166 0.1051048806142993 8.195654949489953 0.8723328908105166 0.1056148420251408 8.212788591104593 0.848028750368229 0.2773089696614018 8.211308611147615 0.7203616411787456 0.171694127636261 2.847222222222482 0 4.587341226347048 2.916666666666919 0 4.707622532428224 2.760648823102292 0.1523733457084931 4.724020184117625 7.835357108172094 0.4244018885779227 0.5442486405617901 0.3117525869128067 0.3895544532783175 9.868130522481547 0.3908747478067002 0.5415244511486675 9.787471487853832 0.3043172884098449 0.6123321792473617 9.872584589397562 3.321729983017239 0.1343924907420475 8.724212397236126 9.566629528352319 0.8248854402113011 6.598791780322233 3.991435782990959 0.559443756564141 3.947327065365247 3.866435782990972 0.5789910816670212 3.746858221896619 7.882545050656005 0.551323146764114 9.246364082193432 0 0.3825982363457078 8.821566889108469 7.708333333333331 0.1507201646090564 7.554280109682919 7.706973234783788 0.3115772730006699 7.700031132854992 7.776417679228231 0.1608571083916135 7.740124901548722 7.902343163389768 0.1273757472913667 7.682539327884697 7.832898718945326 0.2780959119004231 7.642445559190969 8.799971851660338 0.4989444705619847 8.644272230932215 6.289682539682733 0.1874632569076999 5.32621210656017 6.388888888889076 0 5.429310368915461 9.346864087403311 0.8690018648124366 0.5889471204154657 9.273342147166009 0.6944208972545256 0.7105478470581967 9.232033615318791 0.825419032442089 0.7396588523115439 9.139734828787329 0.8647165221498314 0.5875745953952956 9.181043360634545 0.733718386962268 0.5584635901419484 2.881610556094619 0.3965711145190284 8.615938912998097 2.430555555555722 0 6.271279511483426 8.383798512414726 0.8365677807499143 2.348849391711384 8.342281326201224 0.8403248178196663 2.150472531647396 7.507064855771693 0.8261560938721219 7.092917118828888 2.696960683770954 0.8314100031722813 5.922673050340739 2.515905082981488 0.8356314460599624 5.975620075676647 6.532818263008922 0.8356314460599593 7.011785383277932 9.275800991946504 0.142801532610317 5.293308106010519 8.52071126378404 0.860282150909911 8.201572352412725 4.995873976952286 0.1265281566844398 4.389254543395991 4.863683374639107 0.2553671034119457 4.463404932611809 5.089243075357125 0.2856779121238722 4.443161217494027 8.000859586908355 0.6209030892499723 7.543283659546615 8.189351650400422 0.5914351292264539 7.411546990981529 8.005951189516443 0.4914994616137841 7.442538280122267 3.082165014158697 0.3150375825565736 6.10344418275788 3.218671168117302 0.1524408621503739 6.004742927116814 3.212306802527221 0.2762622759299868 5.928229857916021 2.292254732477839 0.7980573083250115 3.703580715314072 4.154411552229698 0.322828813142339 1.767922337907545 4.166666666667091 0.3736944964665178 1.572170649314943 3.997718057623942 0.3047424056884367 1.605080987650788 6.653202100823913 0.1805135451038939 0.8946410803290694 3.417192061181658 0.579480059135039 1.268805893097623 9.168643245439139 0.5014837264182264 1.409221084738148 8.33333333333378 0 1.580308574318104 3.760311076174682 0.5153793003141938 1.589917611287132 3.935324582866368 0.5573534457974654 1.497009810604093 5.763888888889212 0 3.384528165535495 5.833333333333648 0 3.504809471616673 5.697927611751501 0.1660273671019017 3.531240851866717 6.458333333333724 0 2.181715104723777 6.388888888889285 0 2.061433798642601 6.524294610471422 0.166027367101897 2.035002418392549 6.840823350702635 0.8715681322205042 2.723461894693521 6.842144287551693 0.6565475560888183 2.716598105485049 6.855156312821913 0.7166064208756338 2.557286027616047 4.626184486503549 0.4247997848721756 2.543411474814989 4.392806159400855 0.4429657905872123 2.547684500772547 3.400433364599495 0.555569880856324 9.663553488654774 3.331710062411482 0.6410252157693309 9.83962492522506 7.872155094671575 0.1500643323873302 7.545177630129952 0.3748370217574946 0.1586447052818953 0.4253444918571703 0.4473584319868965 0.2938748488320003 0.2926914893409147 6.96266062674203 0.8617021410116616 1.055106498949187 7.222222222222243 0 9.278312163512979 7.291666666666682 0 9.39859346959415 8.543130165505408 0.1617307650720728 3.62698160617767 8.611111111111445 0 3.504809471616868 8.478475414076422 0.1245512918165134 3.426020867898242 3.625699112816944 0.1678795758943405 3.743949456439668 3.472222222222526 0 3.745372083778876 3.472222222222535 0.1206657101241372 3.612022966010994 3.809120599234355 0.5464503629908518 5.487285562042707 3.902766911795339 0.6083207514331093 5.645835540295387 3.785459717684691 0.4105893076721359 5.577686005443667 3.879106030245675 0.4724596961143933 5.736235983696346 3.983469205807739 0.4570396706629877 5.555473661183638 4.345624278911731 0.6068784984001667 6.333393771378656 4.559518023558695 0.592960023515579 6.250420730176964 4.930555555555555 0 9.398593469593987 4.988545085414396 0.1644585570492904 9.29582713814413 4.780336111112808 0.1304139067154471 9.332538615704131 0.3287189578048053 0.4993871715035779 5.440797476162863 5.833333333333329 0.7017223389262901 9.822003645007483 3.07226505218956 0.5023987125967282 0.7803443596774261 5.224471401981992 0.5918472495643976 0.4549220143168736 5.339444107278966 0.6234346943885365 0.5375626725758966 5.372677662037082 0.5720214763374476 8.639209672249983 8.680528446041276 0.8496137876208055 2.981555113629293 8.749954491494972 0.8496137876208055 2.861284430210391 8.908778347087495 0.8623358918101773 2.953957503252677 0.8837464434630273 0.8424046594864318 0.3909751893239651 0.7831087040451798 0.6955635529758527 0.3270143376660066 5.69444444444463 0 5.669872981077755 5.763888888889074 0 5.549591674996595 5.813890121597872 0.1220640804458481 5.734690470481772 6.736111111111171 0 7.955217796620073 6.875000000000055 0 7.955217796620081 6.871410753856816 0.1220640804458531 7.819366061131136 2.220326797414726 0.8746222215920292 0.1122266821599462 2.359012510488891 0.8746222215920292 0.1156173452587452 2.209686390429168 0.8459764905465784 0.2962300682038029 2.208683820807477 0.7205987121386076 0.1806127229450576 2.071000677355003 0.8459764905465784 0.2928394051050039 2.282291475701004 0.4483346723876708 3.338470531439087 2.421768430400756 0.4963919807126824 3.49714800644296 2.300466799430406 0.4255050603587172 3.541693750055553 2.359947987098006 0.3257824244213764 3.377052409649194 8.185625472372998 0.4860573235194399 6.601573614330505 5.175768750797589 0.146842655835536 3.611255878485617 2.291666666666721 0 8.195780408782174 4.104925882217087 0.8450343653500837 3.304394160573821 4.034704911680411 0.6722350237695508 3.174106361097395 4.183668745630924 0.718706070650722 3.336665021246683 9.397956631460175 0.1391147737204539 4.797964108838547 9.502479268951518 0.1391147737204539 4.79745169803313 9.832294495152095 0.5896286970296691 4.959428201259992 9.690684193701877 0.6874983653547642 5.096459186561674 4.540162225756914 0.533895138745041 3.473262585693411 1.909412832571007 0.5792184630320578 8.278908340875622 1.861576306175171 0.5063922351547023 8.439664523763048 1.917256999844902 0.3959167738478482 8.33103720518794 4.581682155702302 0.122555561440866 4.793625528609876 2.266615376365097 0.1393350854005267 7.180942643442181 2.27159625044597 0.2937447863657769 7.103630815046122 1.597222222222261 0.1635802469135788 8.837280707881716 5.794134793066008 0.1459961275202412 5.526600923838183 1.380860966937725 0.1613448013991462 0.563273392674919 5.208333333333496 0 6.27127951148359 5.277777777777934 0 6.391560817564764 3.630774647243805 0.8106502821491857 2.295807163830747 3.521808196817499 0.8786774944165835 2.353555472411878 3.866499106175063 0.1594339908554256 5.256008547063362 3.988731524387214 0.3075284283470068 5.163343570176398 4.01112130710125 0.1480944374915812 5.096082779865995 3.793709540416689 0.1282066539295098 5.133375274997181 3.771319757702653 0.2876406447849354 5.200636065307584 1.887254901960962 0.550865407891553 6.075527581978751 6.895309003395714 0.8393254537235102 0.2801059249332772 6.897877024266007 0.7053905272017496 0.1598246188521079 6.825732705277223 0.6324150268920394 0.3610186922178926 5.844021320746242 0.3317753058580895 7.985048582485669 5.729848218271577 0.4309379587950294 8.118906034190445 7.043904988921271 0.8568980903711405 9.450542965123727 5.4071656054237 0.5384283014159121 9.112451648471714 5.217574822767942 0.7000240597411924 8.870411155795662 5.295465543932349 0.7207004321447557 9.047961587901174 5.218161049619782 0.5737330360786461 9.003329817300255 5.214457060185193 0.5177519290123525 9.133771521277001 5.102756998693843 0.7000240597411957 9.069281460706462 7.123681113261144 0.3203414916156126 0.1906406351678591 7.124748863662308 0.1976001875015425 0.3109219412490309 7.082265582932159 0.1227413041140701 0.1202813060811718 7.249449893912404 0.2532838872965318 0.1691953612482406 7.250517644313568 0.1305425831824618 0.2894766673294124 0.3424725488528116 0 1.0406503752054 0.4098472918810162 0.1739587559379873 1.168057416177507 0.5274041155342053 0.1498284778621227 1.039074649833861 4.376560901561269 0.4638643527532406 2.743929053372193 3.750000000000022 0.4638643527532706 9.199926999998153 6.917732679009291 0.607437798243407 4.773150312186283 5.208333333333771 0 0.9789020439120202 5.138888888889328 0.1474596757584787 0.9489734734423647 4.583333333333316 0 9.518874775675192 4.513888888888872 0 9.639156081756411 4.652777777777761 0 9.639156081756397 4.60636042786724 0.2024295018588612 9.560016899420736 4.467471538978351 0.2024295018588612 9.560016899420752 0.316464664409825 0.3236583750850701 2.582532929875873 6.881744649485801 0.8533205580394212 5.028781625095556 7.569444444444837 0.6323765816281921 2.430231571730629 9.451365332622755 0.581728457933238 0.5025436645511513 9.370677319226044 0.4059687851679988 0.5109907073844213 9.391345124297789 0.4876972431012369 0.3108581914202956 8.165577814291026 0.7126219169495838 8.902771099606596 10 0.6399075896891296 5.493104763036226 10 0.759227734652185 5.558655521512376 3.606153916237422 0.1824642882668142 6.401755549823285 3.630434299729659 0.3370678815970177 6.467924801265461 3.51374837034991 0.3268613020200934 6.28048376741785 9.295993411147872 0.4042758534378299 6.836189885968345 7.455026361049216 0.1580483025878288 2.254011754787529 7.462236155465699 0.2795166999628906 2.333444303377918 6.38550930298736 0.1427489592979666 2.527317012947037 7.78831690079087 0.2757316137367609 4.232631620296369 7.847221677073575 0.2803666937605265 4.425129114892795 7.8700468719132 0.4454246593733644 4.271419769703213 3.680555555555938 0 2.422277716886001 3.635548808196623 0.1773000285094286 2.420937578319376 3.704993252641063 0.1773000285094286 2.541218884400551 3.768098199662774 0.1589810422075308 2.367845046986765 3.698653755218335 0.1589810422075308 2.24756374090559 2.300888668914397 0.5877342751179574 7.576184647240462 0.9579403554280268 0.1617229827723274 3.815993147927769 6.689200094965599 0.4274691358024701 1.768445034406974 1.46212777782484 0.8403952087044751 3.557297484314835 1.59063604901423 0.8752887380678165 3.463815506716353 3.149226723672862 0.4024408621503739 5.964649158423084 3.35756005700619 0.3674614382820595 6.004742927116819 3.197718952183117 0.5097991085541519 6.07084878108628 9.093144726429905 0.825419032442089 0.7396588523115359 9.00084593989844 0.8647165221498314 0.5875745953952876 6.528252744533134 0.5971359063003085 0.1450444270616446 7.777777777777954 0 5.429310368915556 7.674872220861685 0.1778415622740994 5.366985409713358 7.660550733006728 0.1504957609484714 5.545618078150923 7.083333333333758 0 1.339745962155616 6.250000000000118 0.8506245738573796 6.716503446738762 7.834050303743853 0.7080966388660603 2.313343385030111 1.796894883488403 0.8761328207640537 7.671029630149153 4.734189567562575 0.8416939042537431 1.8373145226343 8.904870824861128 0.8223234075884257 2.330418774125382 8.801566773030734 0.8782896986297241 2.251580963708034 7.982677225562766 0.1507164962343016 2.348026406876025 8.084793181453882 0.306303289813771 2.476733885009909 8.157671511447077 0.1555867935794694 2.430703888938999 8.053653075977811 0.1217595661596561 2.227760300838582 8.155769031868928 0.2773463597391255 2.356467778972466 2.013888888889177 0 3.865653389859986 1.992978937947767 0.1582464177677305 3.688649081541979 1.895126026609787 0.1212729580352789 3.79708561935324 8.859866371000564 0.7959746479156945 9.742125783386808 2.377037622459532 0.7172020732269579 0.1767784892317013 2.378040192081222 0.8425798516349288 0.2923958344904465 3.192938795857819 0.1271446981306033 9.672905590542232 8.133865473624235 0.3293813775998204 9.010869287462217 7.960854968724744 0.4285440305367867 8.978921206142648 6.328008037681223 0.1592262874268449 4.520727991241039 0.7035056941496443 0.4110045349925322 8.342448116524194 0.3399476087421752 0 7.841267557102756 0.8984762207090563 0.3375855721902877 1.930623299899197 8.075152063567931 0.4648982163444048 6.495935278007043 8.11066073457758 0.3005551096081939 6.618940922603004 7.865922608211267 0.6581718292982109 7.540664360203143 0.4449446682344866 0.5870816128072078 9.173146699785292 0.4480326950605436 0.6785371930390998 9.027775953003893 0.4392690691529542 0.6013130474905042 9.018008420924414 0.4423570959790112 0.6927686277223962 8.872637674143011 0.9722222222222591 0 8.556624327025595 1.041666666666702 0 8.676905633106777 0.5147056489031855 0.8361061013632288 4.930929903621835 0.4299000023415085 0.7944294667713445 5.084313590572382 0.3654122470831921 0.8276790397203027 4.882793408798462 0.4232705568486204 0.6637851410835314 4.806162194584808 1.042652813219475 0 4.828109657861485 9.899033435478465 0.1256954443457114 0.3081734382162172 5.319544923304643 0.5145281548355476 3.774776636815104 5.442121900503766 0.4489079207556487 3.690474299920576 5.406134336117335 0.434512623852568 3.847502742266999 5.283557358918212 0.5001328579324669 3.931805079161527 0.1539608604888732 0.4099681779690011 3.060054240223589 0 0.5023859987067611 3.196358229009335 0.1541452116912289 0.6044939430136453 3.055145149816352 8.157669241494084 0.5508675333127722 5.115640096164358 9.778430699912178 0 8.630430963459759 4.654805902358896 0.1600668999520362 4.175450007614286 0 0.7594373878376569 6.388888888888881 0.1202813060811716 0.8797186939188288 6.388888888888882 0.1513402382666252 0.7283784556522034 6.216282825746021 2.083333333333631 0 3.745372083778817 1.730602345941054 0.1548007314019903 2.018159542894581 1.875000000000411 0 1.941152492561212 1.857395311970004 0.1315202548260737 2.111691638709458 6.568868746329686 0.4008548887888299 6.848962160134858 5.809087446644156 0.4550090006421161 8.275668451668871 7.316137472160323 0.1580483025878288 2.254011754787522 7.302248583271425 0.3730688787195231 2.326180538436222 7.368320905527995 0.1214683973750618 2.381428959395439 7.354432016639097 0.3364889735067562 2.453597743044139 3.278473754279839 0.6005238431152489 9.140525994053554 3.326578729770757 0.525758386203607 9.299021434272648 7.843788336673878 0.1507164962343016 2.348026406876007 7.712109242201471 0.2721848936093635 2.427458955466385 3.643823980234311 0.607510288065843 6.077190426427507 7.599255626947892 0.8314097249690939 4.030107472443523 7.70833332635684 0.881467568011599 3.945840923219722 3.592673162397473 0.8314100031722821 4.282907686265046 3.611111111111395 0.8814676548820863 4.146309770716127 0.7076918145947109 0.7170303891673075 7.584407989983077 7.724941226624055 0.7085674357155979 9.420414480759463 7.710576347901107 0.5474809362161566 9.255101520002849 3.541666666666965 0 3.865653389860049 3.44766937514677 0.1590334233810332 3.811384028297765 3.357560057006189 0.1524408621503739 6.004742927116819 3.472222222222405 0.2150205761316855 5.910435593239969 3.326968967743436 0.1238214137796129 5.83392252403917 3.326968967743437 0.3388419899112984 5.833922524039171 4.013687108221163 0.4006593356000139 6.872875687970975 8.814139270930553 0.4253104241831137 9.821636010314718 8.923881095818055 0.5434553625866091 9.862407089467965 9.708945979983962 0.1722732638758605 1.750375444513675 2.462250806375773 0.4532983417206614 6.959182148372467 2.348594923145456 0.4394959068207576 7.155323164164386 1.527777777778097 0 3.264246859454095 1.373501623994889 0.1591896269012652 3.184219379264222 1.396015831815681 0.1236801957543557 3.340319654424435 4.266163187203649 0.3898710857115187 2.154586565083758 0.5005731517054438 0.4835865291479309 8.959894511568772 8.611111111111018 0 9.278312163513062 8.541666666666575 0 9.398593469594211 8.447878967774123 0.1423798160819943 9.264221028142384 0.4260757094556783 0 7.421975040891891 0.3586905711379844 0.1804747044149081 7.511761816290051 0.5525537295246788 0.1473328015181626 7.507020010943162 9.312609640138916 0.3039363844439161 5.268546436383097 8.632375867761928 0.4264775959620484 8.199158724755513 8.519187592693479 0.3923945816560305 8.048383633417194 9.056551701483684 0.8571013393134244 6.879736211314704 8.263888888889046 0.7904917730382872 5.446496172812198 8.33333333333348 0.7904917730382872 5.566777478893366 8.131932019446195 0.8636934153886728 5.446160305276484 8.201376463890629 0.8636934153886728 5.566441611357652 8.201376463890632 0.6541851884269601 5.463346109173079 1.349266337955163 0.1580576740412472 7.296499819274093 1.251578788790988 0.3159421402150507 7.354351274901926 1.152312450835947 0.1578844661738036 7.411662721841726 1.311181180956174 0.164387693087501 7.457374156179512 2.500000000000394 0.1200943398880383 2.191220204206421 2.638888888889287 0.2836745868016185 2.111032666818982 2.499247122218373 0.3236578442790224 2.191654878396539 2.126287213173597 0.8799056601119621 1.876259289779227 2.126287213173598 0.67634215572098 1.875389941398994 5.90277777777789 0.836419753086421 7.153342422745541 5.814320459085129 0.8529442749075286 6.96429817104009 1.618830140270888 0.1771737721226444 8.396630360363282 1.666666666666717 0 8.316061714863304 1.518275792310589 0.1579269847451593 8.240323625801949 2.768145884588463 0.8755338977665642 1.02536755876941 0.6773133982339743 0.142770394553607 8.184775193423029 0.5714965509206391 0 8.324169466077844 0.621729878748986 0.1520499663359298 8.414393479090776 2.985431519664518 0.6026594853365304 6.970716849553217 9.146705832723299 0.8387782497676457 4.092428590665181 9.134367869652817 0.6748052442959396 4.195933444464291 8.611805419089599 0.5876810329640543 3.58762164823895 3.541666666666978 0 3.625090777697704 3.556254668372508 0.1678795758943405 3.623668150358495 3.402777777778098 0.1206657101241372 3.49174165992982 2.879106443428443 0.6620739075060946 7.633443502369148 3.263888888889202 0 3.625090777697697 3.40277777777809 0 3.625090777697703 8.342988014686856 0.1501967576186703 8.944103258329314 8.472222222222141 0 9.037749551350721 8.378434523329688 0.1423798160819943 9.143939722061209 9.695973939647992 0.1261110434261003 0.1009665645215371 2.086406489912117 0.4183247916965333 4.786035782037745 2.225295378801002 0.5096714900768706 4.866223319425197 2.086406489912123 0.5096714900768702 4.625660707262849 8.289801888811748 0.8497726187389238 5.710734922987899 7.336601307189572 0.5508654078915531 8.985863497746989 7.341388310630196 0.646599314807954 9.143474794796818 7.399135430434084 0.4954658305289801 9.176171275128668 7.39434842699346 0.3997319236125793 9.018559978078839 1.072685109955846 0.307013031575074 5.10965582844557 4.72222222222262 0 2.061433798642542 2.222222222222245 0 8.797186939188011 2.123015873015873 0.1874632569077299 8.900285201543362 2.181369424517327 0.1578412604582609 8.740585775552647 4.015173472332311 0.8403923321417144 1.663435365817947 4.03482874746507 0.8763055365755464 1.504192386682813 2.100163671355217 0.5797931293084275 4.778093069628287 2.242125716822652 0.498117921004961 4.696131244462961 2.986111111111303 0 5.790154287158773 4.374999999999979 0 9.639156081756417 5.21796921148615 0.6912637850570191 1.889767765780535 5.257651751168685 0.878727041964721 1.992866028135823 7.267156862745122 0.8008654078915531 9.186332341215607 7.365629039825445 0.8767396058415597 9.112849004624708 7.271674791459436 0.6776050137331129 9.020869182327335 2.63866075446913 0.6017452870070059 2.357789845757049 9.752766842070042 0.2305325722500691 2.924803408487141 9.68110831028655 0.3866020834155117 3.046332601088653 9.699710778918678 0.3992090167924972 2.811620663811961 2.639099623396116 0.6422766865658134 1.260186669725075 2.709218193691824 0.8366314123343502 1.139937006915134 3.338704907402874 0.593253217452012 6.653428063178247 3.174065615879455 0.5781752034202643 6.761997940248541 6.34230916558692 0.3066613547218567 1.687215744350604 6.206058449805735 0.2605203482302628 1.647287106962796 8.176464871553277 0.1774937009262967 2.274138965030644 6.458333333333672 0 3.14396555337319 6.319444444444766 0 3.384528165535527 6.411753610031364 0.1848810397154577 1.707233544268505 6.573175927218775 0.3273707516496149 1.65480739219521 4.434869541510075 0.1532674891684649 9.406219475910845 4.295980652621171 0.1532674891684649 9.406219475910863 4.305555555555523 0 9.518874775675226 4.319637873564893 0.1442420524969545 9.590931882969162 4.310062970630542 0.2975095416654194 9.478276583204799 3.966036993328197 0.8450343653500837 3.304394160573811 3.828760166742975 0.8576336392489159 3.223544630387343 5.237992131912975 0.4923484998898204 6.149284954957878 5.293743569115776 0.5679122593797511 6.264588136042165 5.362983209579986 0.6657883283913076 6.088921040001235 5.406475941549541 0.5219122008046125 6.155350516890946 8.141079233126444 0.1646588041813113 2.838821732572006 7.986111111111485 0 2.903402941210965 7.929175361078228 0.1234567901234572 2.851265982747198 3.593548253728501 0.8528704490180076 3.765212566810376 4.373309031349329 0.1587783504203283 0.8455389897004841 4.51390539964526 0 0.7408388388650387 4.498586395040514 0.123618508585231 0.8981907028628789 6.963632393650138 0.5828943684099984 0.1598246188521079 6.804302647691475 0.5366584878550176 0.2011940733657847 6.895543629750224 0.4033213230769428 0.1597875431182774 6.916973687335973 0.4990778621139647 0.3196121619703853 3.104437953211556 0.5422385991433596 5.333898867003635 3.018601825979501 0.4968611489104506 5.388019712308832 3.002239643171232 0.4999999999999999 5.217370515481203 1.716483741352161 0.8757908641911546 0.6797733971543636 5.305003588573878 0.1663566955899362 8.781468109996132 5.140082591302145 0.1608755968512061 8.702202426260479 5.127225145950003 0.1228400476039078 8.870640411450033 4.584300713138751 0.4072660122150917 4.985881264729172 1.249454195125681 0.5886551986008537 0.644413967586936 9.205507426629325 0.4738451081041731 9.215117518644533 5.486111111111542 0 1.219464656074372 5.397514019858315 0.1600334604675091 1.270616210558835 5.501894837802528 0.1729868389176225 1.221894416963807 7.986111111111525 0 1.700589880399229 8.133491059310751 0.1617572316568291 1.790629029522874 7.932793279933452 0.1315085854687655 1.734246002911933 8.002237724377885 0.1315085854687655 1.854527308993108 7.708333333333734 0 1.941152492561523 7.697544121994868 0.1651883518537083 2.078973895475392 7.565976095444631 0.1620597505846111 1.94409287093991 1.089568633552164 0.5211879704256593 3.65346498130706 0.905808171204745 0.5721210539605708 3.585183940987181 0.8778660830352343 0.492118159614352 3.735470078509171 8.748644206578255 0.6000980067820666 0.1445774150039169 4.804385263303926 0.850372633571695 6.690839446448585 4.747677529490531 0.7236061059549529 6.643392134443433 4.665514488408977 0.8732334723832579 6.584676117721897 1.373155177665015 0.4092600403166616 4.707309087566569 1.215853833114373 0.3876467284762485 4.687908233784791 1.339009010779149 0.2969067687929101 4.607407251535768 1.285298277558825 0.4815144703940235 4.536942743187572 7.152777777778099 0 3.384528165535587 4.166666666666924 0.8413443704594912 4.596728120048058 1.87092732061308 0.8752887380678172 2.978336783389119 1.785718418593856 0.7321107244012852 2.852200980464676 2.569216310024682 0.8517452870070059 2.397883614450768 2.708333333333704 0.8770461989223224 2.569893957875766 6.940018384381693 0.1312971465421623 8.408215651301633 7.776417679228229 0.1608571083916135 7.980687513711071 7.91666666666665 0 8.075499102701352 7.772361293196372 0.1289555452288562 8.140403927473322 9.02395801420414 0.3351804590706913 0.486669399685964 9.163649956971955 0.1572634314541049 0.5175066548651074 9.235601245488684 0.3132322166221038 0.4627382050709484 8.282465595600408 0.5980287503682289 0.5217279038926639 9.340530400446468 0.1611348518335992 5.159768385958014 9.387499610439548 0.3972154741468662 5.154465385168436 5.022046669525171 0.5148903648870728 6.981239440209714 4.90134109877236 0.5247352280870095 6.852294143844448 3.49665991930773 0.4273000285094286 2.501125115706817 3.491885758354911 0.5606502821491857 2.375994701218188 4.027777777778193 0.1236944964665178 1.732544869810676 4.038782273098166 0.2481650621249322 1.797308556577237 5.84480786235012 0.8407801842675264 5.983998308210988 4.027813479275681 0.4500442755941705 9.810918564048293 4.023544528744714 0.5301566122792234 9.648099421804604 4.162469119131519 0.5942950395000253 9.837180857756312 4.180784686173922 0.4013334039044407 9.831494495131558 4.176515735642955 0.4814457405894936 9.66867535288787 4.041860095787118 0.3371949766836388 9.642413059179852 7.066808721386769 0.4154011022155085 7.81778732429896 7.054510383647971 0.3256253800695554 7.628156950587067 2.551006756523064 0.4026104398265359 6.131052859181686 2.475617570761409 0.428497464369122 6.275555186602944 8.473925611936322 0.5012784093515417 3.667774725032001 3.20659330959427 0.54472194165249 0.3521455506502008 3.331302383197887 0.1232212672361799 2.695539234010428 4.529673742122582 0.3115848085965775 5.115783263582517 4.668825942141222 0.8353929770903928 2.117026270732571 4.513888888889289 0.8773111952570489 2.035751217349921 6.458333333333587 0 3.865653389860226 9.397163040868479 0.8482748022671491 5.106583833218149 9.553419748147448 0.8332084564234897 5.043904896440642 9.579514951545136 0.8542899089312745 5.232015821835875 9.534427486422906 0.7025647111984237 5.159138123339181 2.152777777777795 0 8.917468245269179 4.652777777778118 0 3.143965553373084 1.805555555555779 0 5.188747756752853 4.097222222222376 0 6.271279511483508 6.319444444444638 0 5.309029062834289 1.875000000000218 0 5.309029062834027 2.083333333333348 0 9.037749551350345 4.161664516847472 0.1231062046848292 9.378972217472274 4.175746834856841 0.2673482571817837 9.45102932476621 4.022775627958593 0.2638394393900707 9.280817024079902 9.069613758948893 0.8070282428808825 6.50271943663321 1.386259680006964 0.5245265991307143 0.5314439856077415 1.524086762592555 0.5886551986008537 0.6431653033046194 1.450438176398627 0.5276307135761222 0.3403164172970256 1.588265258984219 0.5917593130462616 0.4520377349939034 1.451259944384849 0.6804145116471154 0.521056953495811 1.190350628764334 0.1643067092117783 7.250727220114211 1.289616966719376 0.3223643832530255 7.193415773174411 6.111195361202224 0.5358936893070233 0.2010994666046748 6.249857492856183 0.4209718299289645 0.1829622440780966 6.90977169869582 0.5448450849298672 1.299910158571076 6.919895918774957 0.6126330004848157 1.421470779541307 8.781595418836048 0.5257072491713273 4.939234796423932 8.68734526399513 0.6748532609177654 4.893876184815531 6.1111111111111 0.701873692933094 9.821767707460754 5.36215402350224 0.4472362154391319 6.318162665588069 5.487145101169251 0.6206760439406191 6.257798750631426 7.569444444444782 0 3.384528165535619 2.708333333333302 0 9.639156081756331 2.847879803443329 0.1728554972352825 9.586345206492588 2.719299593649268 0.122969211052594 9.472449633635948 3.773980786373369 0.8049237950373066 6.615558459591201 3.802345265909277 0.6462589426476242 6.522986379606063 3.917253368424943 0.8413351476103176 6.539551349741882 3.856181963872325 0.8441825375766183 6.751740250445941 3.884546443408234 0.6855176851869359 6.659168170460806 3.74127386135666 0.6491063326139249 6.735175280310123 3.468938730341818 0.5713078077618479 2.911883430840413 3.586673335154754 0.5250462525468458 3.024611739000548 9.026986621175872 0 3.264703633931842 8.958204540398425 0 3.384602524171557 8.859641632745962 0.1586597377396617 3.260312062615094 8.906359592096159 0.5052713599100808 4.933628752868728 5.421460184232952 0.1513045006354473 7.98336539047093 5.552715467807279 0.1596805338941648 8.143528538136358 5.635687987412911 0.1296148120309221 8.025142351179372 5.632847899664572 0.2892953459250869 8.093171786614601 3.347501133787048 0.1992785756277805 5.453849719132259 3.333333333333534 0 5.429310368915275 4.582649535507478 0.2798215736559578 4.911509186135836 0.9844264723322954 0.4085383527891643 1.567132360152621 3.216788598620618 0.8450990336827847 4.69319362274519 3.425377035111999 0.8768572327876004 4.654878522577405 8.819370806209452 0.7979337687870318 3.063870059651584 5.969826145190256 0.5471742445957909 0.2010994666046748 5.842887584108739 0.4257539883596082 0.1634981873773627 5.984770946165156 0.4648430559270836 0.3645976539820375 5.864663433919155 0.5378344155470002 0.3180760875325914 5.849718632944255 0.6201656042157073 0.1545779001552287 3.518705565223768 0.3594175898849648 6.029726422996887 7.205697610275643 0.1654011022155085 7.6574122495241 7.361111111111109 0 7.594373878376651 7.222222222222223 0.1225982235844028 7.5141863409892 7.718922503810392 0.5011765744974526 7.944213207854396 7.809568316645649 0.6197874261293573 7.850011315859977 7.735032556456634 0.5159915028742608 7.766884012463218 7.678897479588337 0.6954538605884862 7.82522129559682 3.413384819797723 0.4965163594087345 3.018253789042402 3.527776132766657 0.6704704606987912 3.07768896386475 1.597222222222332 0 7.474092572295096 1.736111111111219 0 7.474092572295106 1.687250058868333 0.145569362126185 7.618409034189856 0 0.2548441548607375 6.947816338444506 9.597142789314361 0.4805325722500691 2.932527650511304 4.44069134987911 0.8693733944043645 9.628701574692045 4.579580238767958 0.7151438856199837 9.714359638251088 1.583049169702814 0.5111037146925166 2.792396798839333 8.541652577500251 0 4.346786748569272 8.407369630770013 0.158076653241207 4.39604766183357 8.55597058152942 0.1303069094118925 4.515461537530939 7.372994588657136 0.6765325140742924 7.129592074428482 7.29648528844104 0.8503764202021704 7.029642303570357 2.774858347316582 0.842397820738377 6.470062820989325 2.906087127745352 0.8519816604439844 6.309895894998613 2.989456005892593 0.8755357710735929 6.426374841875502 9.832997762524986 0.5906299326076035 8.759920266471299 10 0.6359948599505708 8.678382939448664 9.83662152829343 0.5948212258480066 8.534194683494318 5.196669590394441 0.1228400476039078 8.990921717531204 1.527777777777798 0.5915514497656397 9.246314069753895 1.52880573220181 0.716946541589306 9.322257589047005 6.481198054475811 0.1848810397154577 1.586952238187336 6.458333333333752 0 1.460027268236742 6.611616134994359 0.1570399764844211 1.495580593911519 7.291666666666891 0.3575068393164217 4.621986550073247 7.361111111111353 0.4053463454892614 4.421517706604633 7.181285067097404 0.4681813524592618 4.506224735344531 4.089681401651617 0.370134125663125 1.437921032814586 3.926285014480372 0.4210014197991304 1.32943263876305 7.246936075963544 0.8701034885403267 6.939299506713076 6.687087169696781 0.4020214212607661 9.83701242173095 6.658823370199344 0.590558997386033 9.837128219045519 10 0.2454229462930737 7.2234759801946 3.895939858576182 0.8763055365755464 1.504193942327619 1.811287331342796 0.5835407335915246 4.303375603197388 1.95017622023168 0.4971209805051041 4.38356314058484 1.666666666666935 0.4135802469135799 4.226497308103481 1.666666666666935 0.5913466983803373 4.226497308103481 1.811287331342806 0.4971209805051045 4.143000528422493 5.25101987740989 0.1562885783090996 5.84569673683308 3.821455862710924 0.1261180566397201 2.983592355596255 3.908261418266474 0.3218485093146161 3.073803335157138 3.70926386205731 0.6193822880241886 5.405791348708221 8.105158730158777 0.5294679600235177 6.844047635679832 7.938113019715159 0.5853929770903947 6.866537275565268 7.961238448655347 0.4829839804925691 6.977062822494743 8.128284159098964 0.427058963425692 6.954573182609307 7.061995934598697 0.5825634243018246 1.41104696623221 7.122255702484651 0.3924362690299288 1.432723431771759 2.569444444444611 0 6.271279511483437 2.591513472617993 0.1421903730267784 6.45286706231851 2.699813482948821 0.1254406158356302 6.361553662274844 3.283461392896473 0.8415905324180382 4.891970481366103 4.800582472750304 0.1437107831153479 7.662731195499185 4.305555555555742 0 5.669872981077658 4.236111111111289 0 5.790154287158824 5.547765968951294 0.4269366320552693 3.795969328580024 8.080488428004916 0.1500643323873302 7.424896324048787 8.125000000000004 0 7.474092572295486 8.263888888888898 0.1204819298434898 7.341889394948254 9.580909268888309 0.1582555638349667 6.645811435686871 9.386495529261833 0.1615130162739238 6.593697107073261 9.455816171718396 0.1306395557065365 6.811569138048251 3.750000000000122 0.5944020438559191 7.346207541723379 1.96729893996635 0.5036393147597555 4.213302258961884 1.077956103770717 0.5293525964809003 4.447013482439525 2.958814955003364 0.142869800522556 9.320077629017224 2.830892326430446 0.26583901157515 9.393933793059238 5.838809193926347 0.8353411958186963 7.936852216661057 4.93055555555584 0 4.106216002022479 4.79166666666695 0 4.106216002022468 4.878772588381466 0.1552118183600071 3.967307483273906 5.211466933525957 0.8441808047470314 0.7641174469908034 5.14683932740991 0.68406940263761 0.8084933205907889 5.081933499776906 0.8398885978905786 0.6754993650557045 5.271015646043957 0.8734346943885365 0.5620289072379957 5.20638803992791 0.7133232922791151 0.6064047808379811 5.335921473676961 0.7176154991355679 0.6950228627730801 1.59722222222232 0.465020576131687 7.634467647069994 1.486574468001072 0.5505123238394088 7.726369730309554 7.19771241830068 0.8008654078915531 9.066051035134432 7.18279387781017 0.8568980903711405 9.209980352961386 9.163819327462353 0.493652610329985 4.604598714560357 0.3455007427434013 0.5684800879473774 8.804245285652001 8.612574609949855 0.4117307650720728 3.586887837483949 2.500000000000186 0 5.910435593239919 9.794682504647227 0.5926666909157383 7.995148036877822 9.629081223415245 0.5358198146704604 7.955221846367547 9.834398718768018 0.4299016268122365 8.002991455780354 9.876162994876562 0.5367856060519764 8.103579791828825 9.71056171364458 0.4799387298066986 8.063653601318547 2.638888888889086 0 5.669872981077583 2.638888888889093 0.159033423381033 5.561334257953019 2.788572281589516 0.172442364843463 5.66364077139623 5.98010204978385 0.4943715517417935 6.40130957591579 3.958197811804163 0.2514646387391829 0.1243403545367528 4.102161654123918 0.2728883345398244 0.3059562568006899 3.958333333333333 0.1245435926373405 0.244621660617927 8.449743148249038 0.1423945816560306 8.008289864723466 8.380298703804591 0.2946491373766842 8.053167391472339 8.263888888888863 0.1522545557206537 8.120376629450242 8.432189474840108 0.1383627718753626 8.197347639761368 8.362745030395661 0.2906173275960163 8.242225166510242 8.548599289755836 0.2807573535313932 8.130138401783464 4.722725521321463 0.8774421232553752 0.1149397308885211 4.583645582865623 0.8774421232553752 0.1178015914396208 4.583703693546626 0.7350363479514166 0.1911128604163418 4.156342821456588 0.5178806503404835 5.346893989152216 7.29166666666671 0 8.195780408782468 7.152777777777819 0 8.195780408782452 7.214391477559085 0.1613672280349112 8.059991336719518 4.027001251685888 0.8272006584194671 3.013677753896623 9.858389698549782 0.6130402615854786 5.424556967133793 9.858389698549782 0.7354471459662 5.35311790785934 9.631549246709996 0.7015988386171599 5.423632573453089 0.1193906830415307 0.8640485788080726 7.914980999043787 0.2831702453540371 0.8407539444192098 7.77028151241738 0.2832938558091742 0.8400435366451356 8.016235012281218 9.732327715371314 0 1.962082953681374 9.874808955498153 0.1299259320307377 2.09732151142036 9.679020287913442 0.2039377552825196 2.069578113346123 5.292966755020763 0.1263651854325082 8.231617950520469 1.111717050343703 0.8413637391341904 2.718566425248013 1.172411267478118 0.7159642684865652 2.775609571017017 7.296184595381004 0.8767396058415597 8.992567698543532 2.309182643083572 0.454570522385481 7.010317346377756 2.373646213447159 0.5451882562624785 6.860431152176053 2.177908289968301 0.5017407078828888 6.858216487395122 2.625378456436449 0.6853705613395942 0.8221402396276394 5.277777777778093 0 3.504809471616636 5.208333333333656 0 3.384528165535461 5.10632430635315 0.146842655835536 3.490974572404439 6.875000000000379 0 2.662840329048534 6.944444444444834 0 2.542559022967369 6.802496801880187 0.1753074574863457 2.540793050709257 8.334342415069273 0.4135973763874873 3.745337623184807 4.097222222222334 0 7.233529960132875 4.083131552665596 0.1506593356000139 7.073344531439593 4.244338881347598 0.1240433205449796 7.156325054106205 2.638888888889194 0 3.745372083778838 2.64839252184665 0.1550765620212302 3.695227224510714 0.8791020699615676 0.3748109575564658 5.07117236228405 0.5506312759356259 0.5275361081022578 2.680184709469845 1.248846875574083 0.8771355145795775 0.105626180833225 1.23914506597307 0.7386314841138935 0.2053545820831832 7.524470805493659 0.1580483025878288 2.133730448706349 9.458297017443517 0.5537779335078898 1.106950828270072 9.51699257411277 0.4568657428560985 0.9922784437555888 0.1246727304490864 0.1329201272774974 6.803189015634004 0.1246727304490864 0.1219240275832402 6.940710598580767 0.3390629371485149 0.1482916258410441 6.924711101516142 9.791939307626105 0.4638855085233023 8.630366270295042 9.624937070151091 0.5380039945222671 8.783299831117723 9.628560835919535 0.5421952877626701 8.557574248140742 8.790325981236762 0.1586597377396617 3.380519010060421 8.65769028420174 0.2832110295561751 3.301730406341795 1.306687126561044 0.5473673700641766 0.3807063067876612 0.1547443494399373 0.5681280592813607 1.231069462141049 0.3424003985493138 0.5022514405505115 1.297115355922454 5.719395750021769 0.5050803675851838 9.434428479699459 5.208626154602308 0.4809538932563698 5.367461508694609 4.027777777777838 0.4638643527532625 9.199926999998187 4.161664516847525 0.3731062046848194 9.298784680084854 4.188722130016187 0.4466658754666973 9.138409605309922 3.888673801307693 0.4501655306943906 9.810918564048293 3.745008998290782 0.5945167881363442 9.836867549917638 3.884233724281123 0.609947693771142 9.784688519071103 3.884448811862307 0.54568801145012 9.595607083119397 5.486111111111307 0 5.549591674996574 5.38990876629879 0.1562885783090996 5.605134124670746 7.835311469428127 0.8267193311846792 9.611698559108332 7.794385671068493 0.8668580977479627 9.413303299220463 6.328008037681229 0.4717630305191459 4.555094078692802 6.25000000000022 0.4700130473125197 4.379111352879943 4.358222541576946 0.4422454360834045 4.870279362302943 0 0.6372099091011094 6.458401934564029 0.1693684235366809 0.5881227916456001 6.496961218283364 0.1513402382666252 0.6061509769156559 6.285795871421168 2.864577248300481 0.5033255350357807 5.118913226379616 3.656045751634116 0.1991345921084481 7.021268831754325 3.586601307189673 0.1991345921084481 6.900987525673152 3.541666666666796 0 6.992967347970521 3.515854862778706 0.1557174908566958 7.092336059678727 3.164407646239652 0.5950990336827848 4.883810854477634 3.107973084588674 0.517415902031448 4.732426557240466 5.172790605423878 0.8426978487410104 5.368695996695278 5.285373182177223 0.8407399596833388 5.523280422349517 5.082863436600841 0.8775242145961037 5.471918215490216 5.229347729888966 0.7182641742794426 5.565888268924354 5.116765153135621 0.7202220633371141 5.411303843270115 6.84429929681591 0.8544927767354118 5.777439456331552 7.648323997289815 0.8165745965185978 0.8745338908689164 7.839991911309089 0.8752962827956563 0.9093917893210515 4.521484293288465 0.8407399596833383 3.23793560680721 4.384298418969726 0.8736717053006383 3.296517720127095 2.48466314795656 0.1569576360415673 0.8015594790651237 2.539679776077024 0.2804942209327188 0.8509011397811559 5.277777777777816 0 8.797186939188139 5.27897148019103 0.1608755968512061 8.702202426260484 9.547443997341135 0.5193001089288571 0.3398836434475698 9.466755983944424 0.343540436163618 0.3483306862808399 8.95791784276777 0 8.196020292372435 8.840709201095265 0.1764775959620484 8.159064956061801 9.027789476200617 0.1706957406987198 8.130971522586599 1.434932426053477 0.8793335013481308 8.610228615836688 1.481281067843903 0.6845382435978837 8.507169209933704 1.321634358919586 0.7162556514300319 8.607564099862454 8.792097850036981 0.1881152447802882 1.959410907903022 2.262342356024162 0.5509316260913792 7.111328615702851 2.185343683324677 0.4051805056363987 7.059636266584588 2.131068002908891 0.5981018115887871 6.959227756720217 6.597222222222326 0 6.511842123646012 6.52777777777788 0 6.632123429727176 6.681697523289564 0.1550790671441155 6.646012695755012 8.474694802796577 0.3253281414595602 3.667040914277 8.613268917928005 0.4994117980361272 3.749887551493479 4.697189399364355 0.8476325987452683 8.449878524522333 4.793880715854034 0.853263890752325 8.617725360738405 1.319658238884019 0.1956710653306898 1.670612129586287 1.458547127772908 0.1956710653306898 1.670612129586295 1.388888888889324 0 1.580308574317669 1.319955539478783 0.1612979313802815 1.506351349996647 1.458844428367671 0.1612979313802815 1.506351349996654 1.389613778362367 0.3569689967109714 1.596654905265273 2.092143751228305 0.5798935176088738 3.98084799879799 5.008008803268329 0.1268582850369452 0.5628204819663842 2.719299593649263 0.3729692110525941 9.392262096248496 2.41958929523961 0.2816225126722496 9.312074558861049 2.708333333333537 0 5.549591674996415 2.569444444444648 0 5.549591674996408 3.055555555555822 0 4.467059920265887 2.43055555555576 0 5.549591674996399 3.402777777778077 0 3.865653389860049 2.708333333333632 0 3.865653389860012 8.220840614603311 0.4657590687620094 0.9964523117525264 6.733052357435733 0.1753074574863457 2.661074356790426 6.660228327089385 0.3180564167843123 2.525551040688974 4.782525410044107 0.7973347559425463 6.539018740710931 4.873829707748377 0.850372633571695 6.570558140367423 5.070489532803769 0.5957800690876534 8.700538162230595 9.199928950492442 0.8654383224197169 5.377978550198494 9.243514459718201 0.6745221731936404 5.280351765140148 9.191040061603548 0.7180103388806223 5.453034085193146 8.335534493421438 0 0.2231617324185634 8.473110337365476 0.1220299660488103 0.1175468903934225 8.334710773390968 0.1220299660488103 0.1056148420251408 8.230449927121603 0.1825810717409609 0.2819900669422918 8.368025771065641 0.3046110377897712 0.176375224917151 8.36884949109611 0.1825810717409609 0.2939221153105735 7.635352579470847 0.604330958499621 1.10146684515392 7.777778513675786 0.5735595799300259 1.179370179262108 7.839992647206627 0.6252962827956562 0.9895789018378557 8.063236407566666 0.8787879577460123 2.632986238968842 1.805555555555945 0 2.301996410804725 1.875000000000381 0 2.422277716885903 1.867825042390636 0.2088039730954475 2.346232643205866 9.046167914870388 0.428973038967188 4.690451841034992 8.970969660109283 0.5519080767427613 4.80806021073696 3.192916801678844 0 0.4320892769617494 3.341131706857865 0.8268876237658783 5.673004629661949 3.465823037172348 0.5936945868117494 9.836867549917638 3.46744630809419 0.7219389922148574 9.676492475142696 9.16715885597638 0 1.102178814069333 9.046437116346915 0.1645189385784152 1.029973250510087 9.063657380256046 0.1552493390618661 1.230227023314837 3.357124704048541 0.4351854508802112 7.161068234582248 6.672334195918562 0.4674550775175323 8.685905463888236 6.534363950986158 0.4372480050244813 8.601545580755205 0.1401849005530279 0.8766300232793212 7.089535310331566 0.3516497477953321 0.7906269203111892 7.161579538471544 0.2114648472423042 0.6672569435905104 7.155624409384084 0.1637242426954723 0.7262370900584937 7.008547482298361 0.3039091432485002 0.8496070667791725 7.014502611385822 4.089349687976371 0.8569099150346248 4.781657140014584 0 0.3864852551949184 4.940683937792359 6.692042244841303 0.3055004650301528 8.730292240601155 6.5540719999089 0.2752933925371017 8.645932357468125 7.737080476060131 0.4100274441175797 0.1676141365701108 7.822373916155295 0.4417507032220775 0.3920905454570067 2.641485569027659 0.8245214041666045 8.314562520886273 6.299318417834997 0.6287270419647254 8.929088012150084 5.486111111111296 0 5.790154287158914 5.555555555555733 0 5.91043559324009 5.389908766298779 0.1562885783090996 5.845696736833087 5.34722222222242 0 5.549591674996565 5.416666666666859 0 5.669872981077738 8.749266748864285 0.4999855590246467 3.662327182541866 1.126097360738832 0.1279627178826019 1.749335964349012 1.260052643604255 0.2522259717089396 1.842662652531863 8.9578195216138 0.1570213018127531 7.143589716042321 8.819311312845919 0 7.233605432542651 8.841252716384531 0.123876675986523 7.060550344706852 3.194444444444671 0.1222449772566328 5.098649369839512 8.040380963236817 0.3131385814446579 4.855948689327109 8.070773067129714 0.4816313205105812 4.895457773334915 8.217705835557608 0.4450980931438945 4.838117178591647 8.187313731664709 0.2766053540779713 4.798608094583841 1.484198104056226 0.1395005826321315 9.453621714314126 1.546202054325654 0.8614254027751909 5.882979084287483 2.065006911678818 0.5549130876874857 6.260252889166049 9.370437106875972 0.1244219398421221 0.5929429996713886 9.419050507192017 0.2766102873817589 0.7626292750033397 9.297932019136072 0.281685371296227 0.5869995247811479 5.833881348834069 0 0.6227220864909006 3.81944444444474 0 3.865653389860062 3.764588001705832 0.1678795758943405 3.743949456439676 3.946958281326612 0.1421075079139003 3.758614246301144 4.290978502802023 0.2763736938532941 9.266316917707893 2.778662638136262 0.8366314123343502 1.260218312996309 2.823918379391312 0.716110801813867 1.314277435987779 1.387081447993185 0.5 0.712184521806527 6.805555555555926 0 2.783121635129703 9.8514272201108 0.424313645018598 1.534877705853583 9.662348375030398 0.359578218949409 1.526255721533107 2.013888888888915 0 9.398593469593962 3.946665972031548 0.4817655852173506 2.663877621292712 5.694406322416679 0.2950681959293099 1.062573559712191 7.927121367552765 0.6934683322260026 0.7171433300045353 9.870692998590368 0.6095649350612907 2.929864437662373 9.708003591205671 0.5700804038975268 2.835033824081661 9.697091741828137 0.5555287760358111 3.064883920598169 6.944444444444487 0.4086533016196637 8.07549910270126 4.180960287579842 0.8545821165225231 0.9989690305351288 4.125178069812511 0.8322946145458792 1.143821116884988 3.976996321265545 0.8698639018089692 1.075108163189616 4.074396613299824 0.7021585163548485 1.119739402067799 7.878224185906549 0.4434489352292058 9.101797270577686 0.4566120644549989 0.3999664096064519 9.849453677131764 0.4117678030336381 0.2898379516336593 9.717584199613311 3.779761904761988 0.8125367430923032 7.817753446812855 3.640837826659199 0.8540492391389646 7.860160729928369 6.875000000000473 0 0.7383394317497496 6.805555555556015 0 0.8586207378309128 6.94336119231046 0.1497283741052078 0.8962120874106999 2.083333333333391 0 9.518874775675233 2.152777777777833 0 9.639156081756454 8.598151001999778 0.5024653931720454 4.073604755813339 8.466824512535133 0.4125806710455428 3.989051065082578 8.60640770940218 0.5002617040095971 3.911488166929772 2.66493055555565 0.1957304526748979 7.60940904163648 2.595486111111199 0.1957304526748979 7.72969034771765 2.708333333333423 0 7.714655184457509 2.804766187241532 0.1598235277562506 7.692925234687079 2.691918965019308 0.3555539804311485 7.70796039794722 5.606322327174558 0.8047571627749512 4.496370129526017 5.476585105113774 0.678635580865527 4.40732493288548 4.375000000000325 0 3.38452816553541 4.235924505613296 0.1541219261497838 3.46985691926238 3.281695884182204 0.6722296904927967 8.239456562621369 3.30299606481956 0.8398372518496962 8.314264499815351 3.315751829568493 0.6903944759627274 8.398657538087665 9.507450648726602 0.4539377552825197 1.852615927829356 8.234232535304967 0.8627437295091787 2.253442153585272 8.149552567187001 0.1590334515699199 4.040203748490236 8.263888888889195 0 4.106216002022708 8.220384195362552 0.1201963424226315 3.920723480729184 5.421460184232947 0.4013045006354473 7.903177853083481 9.111822647501345 0.4899379710205042 0.9105321178480438 9.247915573736105 0.4145189385784151 0.8312404186285447 8.431525808169239 0.872274357994702 5.626278459715251 8.362081363724805 0.872274357994702 5.505997153634083 4.754858454281146 0.1543320670493954 9.604692711747443 4.685414009836702 0.1543320670493954 9.724974017828664 4.638996659926181 0.3567615689082566 9.645834835493005 7.546874449608539 0.3589549565756001 7.093094063665466 7.582916750828904 0.1810478729151193 7.030666966730097 7.532824340807261 0.3275088594075539 6.890274436538864 5.160879126001436 0.8414351292264537 2.134805918738254 5.118762862279795 0.878727041964721 1.992866028135819 6.220238095238294 0.5306813586484911 5.116293955493933 6.041666666666867 0.5932181017407911 5.139204680461765 6.178664959054792 0.5990964395061178 5.206181245364552 0.1583676738675522 0.6000926391220773 0.6107609879491951 0.3253693046946118 0.6652932074924811 0.4929382832076095 0.3274873715780761 0.5152565255584438 0.6775718714356556 7.116013071895553 0.8008654078915541 6.023641528375414 7.046568627451101 0.8008654078915541 6.143922834456582 6.925128882649108 0.8464045921702559 6.04631925482482 5.293531000075571 0.1715103786509436 2.18940013709875 5.347222222222612 0 2.181715104723736 5.390713392295392 0.1201938380793228 2.367199818247531 6.948679507400531 0.8734512145926805 6.228863816947166 9.043834365778354 0.1789730389671879 4.611793035261323 8.927790890361273 0.3218701837538977 4.680161597641808 3.750405044673595 0.4052362370673321 0.1499702755568579 3.845036389250676 0.4629704304259998 0.2985271969752433 3.888344094324959 0.3753785436668681 0.1243403545367528 1.801581727701344 0.1247364223685311 6.707071602828066 6.467367569267843 0.8534687638533137 1.902732283753353 8.055550281110422 0 4.467062965468688 7.979787372327694 0.1535311769689296 4.584733504229876 7.91666587035487 0.1217132410915047 4.385035491208201 1.597222222222663 0 1.460027268236508 1.587071760900407 0.1312975886365508 1.630219312146711 8.605819390644349 0.121669488078616 9.879718693918843 8.611111111111061 0 9.759437387837686 8.459745525321612 0.17526430534196 9.734353326966634 8.598634414210505 0.17526430534196 9.734353326966634 8.593342693743793 0.296933793420576 9.854634633047791 8.665236577931282 0.3408561506046759 6.151469067915189 8.796593030288285 0.1894340926552122 6.071518990016846 4.307910385737838 0.4286181632865839 1.703494214669945 8.674154746530183 0.8406020630325798 9.225179242843808 8.750008433401788 0.8417355459705539 9.405526627119201 6.666666666666849 0.6291980842821234 5.403133705939537 5.694444444444444 0.1582542730473782 9.646040364040402 5.694387525919011 0.1325671761528623 9.879718693918822 5.831483710225596 0.1538963508288493 9.724294803460181 3.317438653545107 0.4162985526692784 7.38169959023079 3.382936507936621 0.5294679600235153 7.462637209811277 6.240933173742093 0.7251751165788776 5.240571384094056 6.213061865481146 0.5635419339804597 5.280414707902223 5.777483657265273 0.1717113998454505 0.2691130294024742 5.694894181555456 0.1229802090595658 0.1056148420251116 5.569208105817881 0.1559718433081184 0.2785626130800534 6.187714697844244 0.1548031919888993 6.393795348942017 6.319444444444565 0 6.511842123645995 6.322042920886235 0.1216934405095022 6.361944625217338 8.473685721060956 0.4117307650720728 3.827450449646284 5.57508438480604 0.4683637721705618 0.5701358386394584 5.725876095497271 0.5513813322605746 0.5408430552832773 5.578269918882398 0.6409283272061647 0.5551894686963226 7.501945093319303 0.876527160276019 0.1092792372250832 7.36090728067573 0.876527160276019 0.1149397308885625 7.511605144155364 0.7245650546604496 0.1767314585523148 7.512208402798025 0.8480378943844307 0.2916711894408774 7.653246215441598 0.8480378943844307 0.2860106957773981 5.4493406404595 0.5513813322605746 0.4819047900927454 5.639061345684228 0.4311143838397186 0.4488192771681817 5.4731387335877 0.3797330515791439 0.5491055092069573 8.216608265985045 0.4247997848721737 7.317127304911669 8.196766996143792 0.4542677448956914 7.088020055233248 8.231956406244075 0.3177622778333324 7.128218947212778 8.179724389545363 0.415535479654665 3.808560643023134 8.218997011631449 0.4090334515699199 4.000109979796517 8.082961282380293 0.4850465636074578 3.929257540500925 8.043688660294205 0.4915485916922029 3.737708203727542 3.26388888888899 0 7.714655184457536 2.639773749247373 0.8366314123343502 1.260218312996301 0.0918905935015215 0.1289606650045655 9.300763395468515 0.0918905935015215 0.1301253765027281 9.162998916012411 0 0.2590860415072936 9.165625489760679 0.2019295693238166 0.2710916139206043 9.168161934681571 0.2938201628253381 0.1421309489160388 9.165535360933301 3.328505051875824 0.3649486003221816 4.827250196954164 3.384939613526802 0.4426317319735183 4.978634494191333 3.244090323308982 0.5139074007667015 4.81092210978021 3.224517819301648 0.4223168683486633 4.666667929536075 3.35290583734093 0.5915905324180382 4.691501637897487 4.984425711851369 0.4174734230403885 6.501302614369786 5.132455857362962 0.3701386670978422 6.634501072079648 6.095909383843522 0.5143608170386604 4.987087768508733 3.346089098082317 0.8505572241130314 8.400454753135708 3.164107175930672 0.8398372518496962 8.314264499815346 0 0.7566352966371211 1.94426472578299 0 0.6373340323481446 2.014185697587651 0.1803829688836024 0.7198307671671548 2.108045345012428 4.621402806782343 0.8064760895133017 4.083082497440068 7.102888059643801 0.3263733515048541 8.632213293328178 3.205051486464406 0.3563045200563341 2.700480792019526 3.194444444444819 0.4076276668204385 2.505442406800347 3.052060069056346 0.4628681826176463 2.637260745108551 9.516670322511199 0 8.200591419370745 9.621551540278544 0.1438562215791563 8.35016316755031 9.474468354605104 0.1331346096232646 8.369346725664087 2.637823096738799 0.3575104938112139 3.25894365527215 2.786087176593667 0.4091758214235431 3.385188826755822 6.826227449239767 0.5822767810142954 0.1598246188521079 3.920732792608468 0.301182034885044 1.470831371150431 3.801242383809358 0.2609158572343647 1.321044199611145 3.950792512762734 0.120134125663125 1.357737065633057 2.560069253478782 0.1983346723876708 3.418658068826546 2.421180364589891 0.1983346723876708 3.418658068826541 2.500000000000317 0 3.504809471616486 2.578948077402211 0.1550765620212302 3.574945918429538 2.44005918851332 0.1550765620212302 3.574945918429533 2.500128441991786 0.353411234408901 3.488794515639593 7.000000000000387 0.4650205761316943 2.334071425759987 6.80249680188019 0.4253074574863457 2.380417975934345 7.083777406564097 0.5600588647868239 2.448551939538605 6.886274208443901 0.5203457461414753 2.494898489712964 9.8248854402113 0.5816317983961097 6.610019127171344 9.664050620958591 0.4831410040462678 6.598925186628162 8.994303710419105 0.4217726363095093 9.862407089467965 9.068235454585642 0.4468190019510269 9.70256152877077 0.4556530677243653 0 5.419537082672683 2.90639669523394 0.8467613500445874 2.356543975637386 2.906396695233932 0.7238075489669098 2.504160216627205 7.221015682064904 0.1241840623562583 0.1202813060811718 7.222421936325857 0 0.2352210369697343 7.360104285057437 0.1241840623562583 0.1149397308885625 7.388199993045149 0.25472664553872 0.1691953612482406 7.389606247306101 0.1305425831824618 0.2841350921368032 4.456605813913589 0.539274693884092 5.983601760690824 8.714025435666279 0.8221538921686448 8.378389305524706 8.838772125936675 0.8469929802938176 8.269208828963283 2.222222222222304 0 7.834936490538656 2.291666666666738 0 7.955217796619835 2.399764992776657 0.1396651540957629 7.88263965276878 8.99916111955967 0.5459746479156945 9.581964095312468 5.266114034838889 0.1228400476039078 8.870640411450038 7.361111111111136 0 8.075499102701315 7.512254901960849 0.8008654078915507 6.667500284457011 7.185457516339987 0.8008654078915541 6.143922834456592 3.611111111111246 0 6.872686041889352 3.680555555555689 0 6.992967347970526 3.725490196078566 0.1991345921084481 6.900987525673157 4.302253701070113 0.8474075270118756 5.122420102969491 9.292215096092306 0.825419032442089 0.8574627295920907 9.415945489645472 0.8715293457359554 0.7111589388181487 9.342423549408167 0.6969483781780444 0.8327596654608798 9.476126970418985 0.8715293457359554 0.8289628160986955 8.817499554923122 0.2971453376481966 8.092277514139635 8.704311279854673 0.2630623233421788 7.941502422801315 1.113454964592658 0.626410388075328 1.567681677075224 1.0691425687781 0.5844882093221176 1.776976354916971 7.519352034422841 0.1464609864924346 6.852574817779539 7.531956722569515 0.3060686960399248 6.695138074311988 4.827286785098709 0.4944107265327851 3.805937971898213 8.055550490268525 0.6271403785738876 4.453708015171586 0.5565961665783012 0.8458201489962057 7.389851595446282 0.486886899842402 0.6865740934154155 7.534972938894549 3.240348502725704 0.5743633655462129 1.908108196977885 3.098959549432932 0.5542684447948795 1.795811878931343 7.847222222222316 0 6.271279511483757 1.531572222269281 0.527858465612177 3.643212702944247 1.597222222222529 0.4374632569077018 3.510537152858405 1.46526922760056 0.3912537436535312 3.534322851325877 1.399619227647313 0.4816489523580063 3.666998401411719 9.250678890802517 0.4518853833842406 5.315537215681958 9.3054452090546 0.526573174253316 5.233360985841287 9.379244554291288 0.5082398550300339 5.361832182023201 4.305555685957728 0.4075203387901702 1.542523806927238 4.446799405028477 0.4624440056102364 1.67384737228224 6.319444444444655 0 4.346778614184924 6.388888888888905 0.6609371240407144 9.211747353806356 6.458333333333371 0.8413466983803364 9.077843320044281 6.438207306723873 0.7200737403450603 9.009275549537545 3.143077108828229 0.4820990527896437 1.477749576604868 3.065771169852257 0.3351327169270463 1.522382181282596 3.254040760580525 0.3006928690928144 1.415954897261452 0 0.5060491504967073 2.923146984856536 3.830448939764826 0.3744705656584145 1.925728641940434 8.611111111111052 0 8.7971869391884 8.738549986756439 0.1557898731510353 8.681643368839588 8.735595822475954 0.1227637030365637 8.866369877124432 6.180555555555689 0 6.511842123645988 8.852592635600169 0.444805221529471 4.797769967343775 7.083333333333726 0.840604193378987 1.738901363278437 6.951123111615568 0.8443326745237386 1.897202793578888 8.263888888888891 0 7.474092572295497 1.30586120095097 0.1609839728816268 5.47749851896959 1.319444444444657 0 5.309029062834007 1.184604221095245 0.126105061450952 5.409209960537181 8.402777777778311 0 0.7383394317498899 8.47222312144395 0 0.8586346053361149 6.121080446295551 0.3752662636009421 0.1325042303755533 6.121594592340001 0.4256358864571852 0.3336036969802281 6.26025672399396 0.3107140270791264 0.3154664744536498 4.729817626621795 0.5907399596833383 3.278029375500947 4.573670304522519 0.6935872255132589 3.357187195921343 4.733092368116832 0.7227117268525843 3.196283122508699 3.750000000000272 0.8797073621149415 4.357520177608745 0.833333333333325 0.1228055301980583 9.636894489792875 0.8412893510249473 0.3451956234163603 9.6552725434459 0.9775335287129476 0.2700573743378535 9.714015542948214 8.059307117548176 0.8541620119300133 1.314873313532964 2.913171180167456 0.6822867147195303 2.661618527490266 3.225675736961665 0.4492785756277806 5.283623032621186 1.643570864012701 0.5552047422497528 8.253096077654039 4.624425057267276 0.4378012967854019 8.526093847441135 3.480020595746753 0.8268876237658783 5.673004629661955 3.670106161201588 0.8767285593844575 5.624390097563907 1.180555555555857 0 3.625090777697594 1.111111111111422 0 3.504809471616414 1.225632314929792 0.1990669164650886 3.533146120696049 4.513888888888943 0 7.955217796619928 4.652777777777853 0 7.474092572295236 6.929919695103729 0.3902998066938881 2.213423005475544 3.704536341928929 0.8049237950373066 6.495277153510028 3.847808923980503 0.8413351476103176 6.419270043660709 4.080225444275976 0.8335544324990256 2.091791507840022 4.015173472332299 0.8403923321417144 1.903997977980292 1.995562467234358 0.8049130876874857 6.54090927002211 8.714163408759244 0.8497812603470241 8.176929957277672 8.678188844425563 0.6719351525156688 8.239257547938635 8.590155708228478 0.860282150909911 8.321853658493904 8.554181143894798 0.6824360430785558 8.384181249154867 8.342988014686878 0.1501967576186703 8.703540646166983 2.94780566776455 0.5076082858947116 4.288706734824986 2.808916778875673 0.5076082858947116 4.048144122662635 0.6710048235536625 0.8514429515927329 3.530490243464006 7.221045083399096 0.1610529671090024 3.650096733493489 7.361111111111406 0 3.745372083779116 7.219503164053414 0.1285527027343369 3.808116706159948 8.742437600576068 0.8398847221265026 4.150675924059758 8.020833333333684 0.5928497942386828 3.284293743801346 7.944178057691017 0.4243625945153174 3.30326100552724 8.402755171750311 0.1957292465489714 4.557283729646881 8.3333147232137 0 4.467070664823985 3.331302383197895 0.3732212672361799 2.535164159235534 3.192413494309004 0.2808489340566184 2.578235080456174 9.262592874249998 0.8442589897752644 8.320492818386052 4.027738564828441 0.1302059919653886 9.879718693918814 3.958294120384002 0.3231589161520729 9.810918564048293 5.425818333495042 0.6238784180905756 4.217639648850611 5.297001224981345 0.7121633156909219 4.303642131348888 6.18662955452517 0.5238971572452595 5.989469821623038 8.846257934097043 0.4029597186498494 7.813916263209368 8.655016099108563 0.2953543003058799 7.809587933899936 8.166875777596241 0.1825810717409609 0.3834883238403506 6.51876926094063 0.8424302781757766 1.415833484934184 6.465135521370823 0.6747582952053334 1.481392848710247 6.335255149319508 0.8323280170295567 1.40530532593163 6.35264996572559 0.8638656037932502 1.263047078393492 6.299016226155783 0.696193620822807 1.328606442169554 6.482530337776905 0.7062958819690268 1.339134601172109 8.657704141399396 0.1894340926552122 6.071518990016838 8.750000000000117 0 6.150998205402651 8.618643547643114 0.1514220579494638 6.230948283300994 6.111111111111523 0.280433616626062 1.760759617868623 6.388888888888881 0.1202813060811718 0.1202813060811716 6.249999999999995 0.1202813060811718 0.1202813060811743 6.388888888888884 0 0.2405626121623459 6.319516885277295 0.1782097967035744 0.3032435501592708 6.319516885277292 0.2984911027847462 0.1829622440780966 7.609794792780573 0.4854280976143501 4.118266648722972 1.097639534522037 0.5079824199214551 5.763340485045074 2.22222222222261 0.4086533016196625 2.30199641080475 9.283774993586771 0.4910256959924023 2.690763827551629 3.061503156050455 0.5820141230902258 8.553190478278989 3.031741251288535 0.6445508661825252 8.730748596779762 2.886904761904789 0.5625367430922994 8.653994908139047 3.027110200514709 0.4083125885726747 8.573047260415773 2.997348295752789 0.4708493316649741 8.750605378916548 2.249761920484787 0.6793153022894974 1.01841204585408 2.319135120286133 0.8383725983664974 0.97962924662085 2.449709298302643 0.7139064961330615 0.9037831434850696 9.233618167717866 0 8.437782322484072 9.16375823270789 0 8.317740899992746 9.35008748684799 0.1331346096232646 8.362981058011332 8.402777777777914 0 5.790154287159114 8.263888888889028 0 5.790154287159104 3.8343216704527 0.4819152033579244 1.424544689772996 3.263888888889243 0 2.903402941210665 7.569444444444467 0 8.195780408782495 5.719160230858723 0.8013231467641073 8.289544091793385 7.72259930453909 0.8393834913337261 2.734791404120372 5.334734531487278 0.2822350453248374 6.681172832835544 5.592624941476111 0.8013813322605746 0.3979223779501174 5.279737717028875 0.1233592540886456 0.1092792372250385 5.282408217954451 0 0.2143841178392971 5.418559770377842 0.1233592540886456 0.1051048806142585 5.428585275820561 0.279331097396764 0.1729477710549419 5.431255776746136 0.1559718433081184 0.2780526516692003 5.292433723397171 0.1559718433081184 0.2822270082799804 8.09534364641608 0.8627437295091787 2.25344215358526 8.699685838343417 0.4957967054837964 6.42472110711177 8.604546785175032 0.4706715450741806 6.268802414869466 3.261049257754559 0.5467644564824394 5.413545489621924 3.280952380952611 0.3722449772566329 5.048703989409621 5.416666666666766 0 7.113248654051775 5.34722222222233 0 6.992967347970604 8.333333333333234 0.4082752621694223 9.485796164478488 8.183100031327372 0.493804327431911 9.423276406067531 7.885909401704045 0.535986676412375 8.465002053607641 7.976908939867522 0.6213278722310592 8.591405219675115 7.847359886842552 0.7209666885346148 8.60534390647927 0.30115919705843 0.8403534983930341 2.105850029363459 4.600396825397016 0.3738765246349222 5.634694625958982 3.920785799512202 0.681367655425565 5.771173366938877 3.928843979303014 0.6403600097913116 5.981113001730201 3.785541567362743 0.6848597290592999 5.955807969499359 3.057340548531148 0.5029749882924398 6.878869438938639 2.938830488207379 0.4247997848721756 6.989557540579423 3.146484230093995 0.527459270208706 7.007400810855882 2.500000000000435 0.8413466983803375 1.500121036930284 4.293300571520336 0.3566546554659915 1.73827549551984 8.888888888888882 0 0.2405626121623485 8.889590918212752 0.1206759203614796 0.1202813060811762 8.81868532416599 0.1779170276165863 0.3038651178229745 7.777777777778162 0 2.542559022967437 7.638888888889268 0.1635802469135811 2.622746560354873 7.77777777777816 0.1635802469135811 2.622746560354885 7.913232781118313 0.1507164962343016 2.468307712957192 7.774343892229421 0.1507164962343016 2.46830771295718 5.628483167307042 0.4510067909702135 3.651522157947888 9.271219427031317 0.5570282428808826 6.71034036111882 9.239036768694938 0.6767152204511946 6.568602717921422 5.013344849469433 0.410857108391614 2.77698748922373 4.447447506725502 0.1631829584298534 5.494996139279168 4.444444444444647 0 5.429310368915326 4.598150806761828 0.1543187963814857 5.358743524300072 0.1684172268845963 0.2960439082178371 9.325826434691454 0.2603078203861178 0.1670832432132716 9.323199860943184 0.3703467962084128 0.3092141921293104 9.19059840015624 8.050300606135735 0.465887513141737 5.284029003727825 6.985005476667355 0.5041248489263699 4.537091684136979 6.809347554892669 0.5436295823719066 4.417060806575366 4.864187523124249 0.4896051240450423 3.958793626381904 3.27556110693756 0.8771544538147658 1.533499271831453 3.345005551381997 0.8771544538147658 1.653777223310834 3.182501157176195 0.8772117198645681 1.747582463814036 3.251945601620632 0.8772117198645681 1.867860415293418 3.263617819668882 0.7543661736793339 1.700766452124129 4.791666666666705 0 8.676905633106953 7.328630899262405 0.5153691333238135 5.588978658551289 7.368088130323445 0.4187484092929557 5.433338552835803 7.223093484879778 0.3254096312833253 5.544358667005357 7.21611646566763 0.4066612219903696 5.37995540831018 7.176659234606591 0.5032819460212274 5.535595514025665 2.624505058824036 0.4027924614790639 1.427699683416178 5.35481762662166 0.8407399596833388 5.643561728430692 5.152307881045278 0.8775242145961037 5.592199521571391 3.890900307155361 0.1261180566397201 3.103873661677429 5.294900497512788 0.4200985811682341 2.953382516752565 5.145404335860999 0.3734567901234574 2.804029224805188 9.078369400710571 0.8717562683224576 1.14661043453373 9.143754931865001 0.6971753007645466 1.027169301871687 0.1554406897715304 0.4002788659655037 5.967882800112537 0.3621959445353678 0.445344163963648 6.010563015030399 0.3242679394994889 0.3226128114214056 5.893846972319714 1.180628038089798 0 4.346736766374121 1.250072482534248 0 4.226455460292954 1.219187659688984 0.1364388232760251 4.164099283689093 1.254646902222357 0.1823537584165638 0.8689040040981775 1.387985168441275 0.1613448013991462 0.7854026298185824 1.393948820786659 0.284713592960161 0.925277146513974 1.394852541234749 0.1233687915610148 0.9984952545260294 1.260610554567742 0.3057225499775785 1.008778520793569 9.294007260307085 0.1615130162739238 6.709234517068555 9.229754673362773 0.1542758534378298 6.871164977385993 9.36332790276365 0.1306395557065365 6.927106548043545 2.777777777778011 0.8492798353909471 5.028372681978007 0.5004308115276446 0.5586226206887652 8.818462734500176 7.131440379043138 0.8325634243018246 1.45114073492594 7.152777777778179 0.840604193378987 1.61862005719727 6.989340363219398 0.8626330004848157 1.461564548235037 7.058784807663838 0.7032371938638027 1.499876031114353 7.037447408928797 0.6951964247866402 1.332396708843023 2.56944444444477 0 3.384528165535316 2.430555555555879 0 3.38452816553531 2.490624809034343 0.1983346723876708 3.29837676274537 8.027871440664068 0.1396980012165794 6.572713008003415 7.986111111111168 0 6.752404735808455 8.009236540051361 0.1475910034021743 6.782742745350482 2.039597099250164 0.8797607796964505 1.394682373021296 2.177240050464762 0.7207034836194506 1.315214178085504 2.039597099250164 0.6736451187687963 1.395217067562327 4.375000000000233 0 5.068466450671817 7.291666666666777 0 6.271279511483725 7.284830021789416 0.1625530042744719 6.098516262726217 7.183949021862045 0.1468963882948222 6.219998204066938 7.916666666666732 0 6.632123429727279 8.263881423253956 0 5.068470760958578 8.116145100069424 0.1596074044757284 4.978840053713336 8.263077868497318 0.1230741771090416 4.921499458970068 7.315647453039929 0.4450762049626918 8.820715737746205 7.152248760229469 0.4959416128542449 8.92920475891745 7.250720937309793 0.5718158108042515 8.855721422326551 0.8211440206149123 0.4631370043085152 2.027936620356661 6.525887181277012 0.8490964395061178 5.166087476670844 6.525887181277005 0.7282945237882412 5.3002858884698 8.813088126623697 0.4825224694159774 9.138732260520229 8.976861836679749 0.5567158608401482 9.25955624420698 3.262383240302255 0.1271446981306033 9.552624284461036 3.241043771348747 0.3023792412189618 9.43046334382402 1.089268084681699 0.4349570480530485 5.60138104029891 6.736111111111491 0 2.662840329048522 6.875000000000387 0 2.422277716886179 7.437620411327238 0.8261560938721219 7.213198424910066 7.501132894311414 0.6581818014324139 7.249867374057883 8.72088153679233 0.3346583630601997 3.139267849664837 7.71957792293053 0.4987506011558763 6.500156403350612 7.810223735765794 0.3801397495239747 6.405954511356194 7.887622453225648 0.4788408928249656 6.477901419013131 9.638335436126043 0 7.003546949907205 5.711567164179471 0.4200985811682343 2.712819904590232 6.103934881354167 0.7192967788135509 5.173594819191269 8.40276688417886 0 5.068472740094536 7.64942805472183 0.1540183726452562 4.314656484383274 7.569444444444695 0 4.346778614184991 7.564429679395753 0.1292143433068512 4.516985410247743 8.050462761511529 0.8414351292264539 7.491734528368966 9.09722222222255 0 3.62509077769807 9.249308654526505 0.1515154232694378 3.689869619421978 9.647919651129484 0 4.386532996466015 9.773347550083525 0 4.447485133296709 9.022399430307033 0 4.70928082434266 8.909465842986865 0.1789730389671879 4.610630099124277 8.906355954889953 0.1428971447867098 4.777649386723146 9.846958352912672 0.6087434408039525 4.670875481765393 7.494068038539755 0.832025707560292 7.270198909280932 4.375000000000473 0 0.7383397221568019 3.680026538007348 0.5040583871457547 6.764141249456169 3.843425230817811 0.5549237950373066 6.655652228284925 3.864379084967457 0.4491345921084481 6.820799988285712 3.749770579570811 0.3537381854386516 6.72659416495299 3.728816725421165 0.4595273883675101 6.561446404952203 7.876337857096688 0.3867595334608244 6.104452090846332 2.324318397093006 0.1372112235016605 7.756396950692689 3.125000000000408 0 1.941152492561284 8.748737070654638 0.8551022191199292 0.3592325994617991 8.88763328181011 0.8551022191199292 0.3591935798722429 8.642801860928614 0.8559024428423483 0.5502013390614148 8.781698072084087 0.8559024428423483 0.5501623194718585 8.780427820471536 0.7110046619622775 0.4801235696074493 3.520979335037536 0.1747997848721759 7.356368621757333 5.974099222842593 0.5431316560816332 0.5511332428609671 5.847160661761077 0.4217113998454505 0.5135319636336549 5.853991710596592 0.6161230157015496 0.504611676411521 5.277777777777769 0 9.7594373878376 5.278339518801819 0.1218248447662335 9.879718693918807 5.427932106364421 0.1707340829469281 9.72934051447419 5.28960495849958 0.2925589277131616 9.849621820555383 5.28904321747553 0.1707340829469281 9.729340514474176 2.849604957152686 0.1625967204061997 6.129418154962185 5.972222222222552 0 3.264246859454335 6.180555555555911 0 2.903402941210815 7.559866569162127 0.5263567453845946 9.197534143957753 4.073292904837249 0.5159528782567547 6.246411435382612 4.251864333408678 0.5784896213490542 6.223500710414777 4.153844097195 0.4825818904322322 6.108475994983454 4.236111111111406 0 3.86565338986009 4.238567915496324 0.1544493996232955 3.742304596344137 4.085847170215501 0.1421075079139003 3.758614246301154 6.983080741054026 0.8644682834077597 1.632710351297133 6.889087770939685 0.7271012838925754 1.513966325214216 9.416739941869597 0.4021883475396367 0.8300534284239958 0.9705675563653033 0.5825372073973485 6.579060362489688 1.143534986508794 0.5924241744563288 6.613403496537943 5.636643314635554 0.8396155401733336 4.186163683070103 5.495262777939484 0.8738784180905758 4.25773341754434 7.806478734888342 0.4285459781903872 1.884981747608014 7.152777777777843 0 6.752404735808406 7.037236355940687 0.1580942565673842 6.819112606808627 7.241574256645068 0.1464609864924346 6.852574817779523 7.195477279252367 0.3045552430598187 6.799001382698576 7.311018701089524 0.1464609864924346 6.732293511698355 7.33422235204232 0.4476001875015426 0.4784541405901727 0.1987702060527949 0.5977867689173378 2.745393083359049 0.5156942179371681 0.8458201489962057 7.487062434569673 5.120237673027327 0.2860763922192667 0.1703572641709621 5.122193713412839 0.1624535654774085 0.2796365013960007 5.141630124219972 0.1236228267418582 0.1092792372250385 5.290477683011657 0.2795946700499766 0.1729477710549419 8.158408889735824 0.7017296222242557 0.5292782475126905 9.349835983002125 0.453865493584142 9.706117173110446 2.148162776875496 0 0.9841133760915867 2.07807898101407 0 0.8649409781034514 0.4117856716996554 0.1814065328833092 2.604526841731888 0.5932406576808832 0.178922745385381 2.569864943566136 0.3874381683062741 0.1422518422017609 2.461630805793941 0.2875729342699232 0.1572123542804142 6.727683668141205 2.220976284548378 0.8409427039230002 1.260277767219572 6.520482123355347 0.8709601291382517 1.273386084343026 6.484243200191623 0.734825732931502 1.196687200580949 5.528377774439162 0.594095521833875 8.572315426269363 5.69198244974228 0.6454186685979824 8.465610265811822 5.713727991792962 0.5388550060366608 8.629714743303662 3.887988613401884 0.5904725990722763 0.8885838804347805 3.808133163815261 0.4960480938677829 0.7697485303590852 3.819444444444827 0 2.422277716886009 3.750000000000388 0 2.301996410804834 5.585801459732685 0.1459961275202412 5.406319617757001 6.597222222222515 0 3.625090777697888 5.486111111111128 0 9.158030857431665 10 0.5588836755110698 9.725713729272865 10 0.4406721509472363 9.722346739399789 4.660373182177354 0.8407399596833383 3.237935606807219 8.263888888889214 0.84135423453542 3.544903240310571 7.964043926364218 0.4827448698517796 4.167151074176507 7.8321682396321 0.5667900446476523 4.0910113258911 7.878787948746112 0.3647918674572973 4.122601748280242 8.010663635478229 0.2807466926614247 4.198741496565648 4.413351845659619 0.5936544704860945 6.168949525680665 4.315331609445941 0.4977467395692725 6.053924810249342 2.313865879110851 0.4656752173302779 3.776837347346088 2.186473006020548 0.5274464573292632 3.832352822585612 3.443519963926881 0.3103202115656944 3.144733569400986 8.020528155452109 0.4836109312661888 8.427827011024135 7.895111572947621 0.4146588041813158 8.309939854877374 8.164094903247964 0.4479762968802149 8.424204794948526 8.038678320743475 0.3790241697953419 8.306317638801765 4.019905243531916 0.8569099150346248 4.901938446095751 3.836805555555904 0.4457304526748959 3.033707689465293 3.759315722298544 0.6076336392489159 3.023075786918721 9.02582477355006 0.5995535665547642 0.1445774150039169 8.950310753792721 0.8431545974109493 8.759815801281054 9.067241808284798 0.8676532282754987 8.842722364559169 3.393967359883161 0.1701064823911246 8.040492031150492 3.26388888888897 0 7.955217796619873 3.27478256879031 0.1306358911530215 8.122713079935799 8.068900405024685 0.4108571083916145 6.718445113020596 8.092025833964874 0.3084481117937888 6.828970659950071 2.813710699400854 0.5123348220926955 4.20575142613184 0.9551941832451669 0.5821756275265844 2.862549982413013 3.54166666666713 0 0.9789764042517117 3.611111111111567 0 1.0992393532064 3.536503598531065 0.207428609192486 1.053174737633899 5.694444444444586 0 6.632123429727126 7.938113019715136 0.8353929770903947 7.187287425115056 8.00246467011555 0.6768281063168486 7.204929381188542 7.981018317067093 0.8414351292264539 7.371453222287791 7.846081338370005 0.8787038692746927 7.368833922944319 7.910432988770419 0.7201389985011466 7.386475879017804 5.589457272090373 0.5926978487410108 9.057322716517842 7.500000000000398 0 2.061433798642685 7.345711847340144 0.8444177241638349 0.2928508824032858 7.345108588697485 0.7209448844398538 0.1779111515147233 4.930555555555587 0 8.917468245269291 4.918337850045203 0.1608755968512305 9.086275584428719 5.057780701505554 0.1228400476039078 8.990921717531197 5.000000000000037 0 8.797186939188126 9.469636881332114 0.4863984564852248 6.546810858014553 3.472222222222566 0.7978395061728389 3.103871784679292 3.402777777778116 0.7978395061728389 3.224153090760459 3.369830826727022 0.8463141461219917 2.988220014634718 5.902777777777837 0.2021604938271674 8.035405334007445 5.972222222222291 0 8.075499102701182 5.85381610467438 0.1536858538780088 8.181904768657814 9.001984102920062 0.4645958045515557 9.117034422379724 9.053711763358482 0.4078799437114075 9.296592189861748 6.180555555555559 0.8221549990142661 9.581205095298355 7.581393713471046 0.5903194661058391 7.878649722069772 7.637528790339344 0.4108571083916135 7.82031243893617 7.59750376611729 0.6051343944826471 7.701320526678593 6.774854852371474 0.8544927767354118 5.657158150250374 2.780650057873287 0.8546726323322856 9.073485428678726 2.227954945270592 0.6231005009060228 7.351896529616364 8.228501037757884 0.8455165928286175 7.766481582326058 8.063491826525265 0.8648943628561362 7.879697233433946 6.906271476721324 0.4791523488525658 5.51709340309142 6.727700048149899 0.4166156057602664 5.494182678123566 6.868894243445408 0.4066612219903696 5.420049177003881 6.929927624928454 0.323276827750636 5.565109023599417 7.047465672016834 0.469197965082669 5.442959901971736 7.811238066988594 0.837201410677572 6.010921250074428 5.743378867655349 0.6675043479621243 0.3453871791822136 5.582781366351652 0.4163566955899362 8.861655647383589 5.741492566622581 0.3708525329136397 8.930398767958657 1.85409004905888 0.3457096746754323 3.654282994090207 1.825681582165347 0.1212729580352789 3.676804313272063 6.477714887169054 0.3509084068173547 1.801083470099623 1.124523116718163 0.8391423002104276 4.152396530815109 1.118169363164284 0.8704551905130299 4.296196528178212 2.85009450231774 0.8546726323322856 8.953204122597562 8.191200996546343 0.7007802185709235 9.821702859201219 8.194444444444361 0.8221965991921903 9.70142155312006 8.19120099654636 0.8785836193787333 9.879718693918839 8.341962137553008 0.7057220179060397 9.85191335163961 8.345205585451026 0.8271383985273065 9.731632045558449 5.416666666666726 0 8.075499102701123 7.365929732885476 0.8503764202021704 7.149923609651531 0.8641080291453677 0.66935800209742 1.542152761044388 5.000700577036111 0.8750830983770572 0.1149397308885211 5.141738389679704 0.8750830983770572 0.1092792372250385 5.154555470103248 0.8418472495643976 0.2731057404761517 5.152707695177467 0.7169303479414548 0.1638265032511131 2.710930013472096 0.8245214041666045 8.434843826967446 2.847222222222255 0.8787270419647217 8.573478561958016 3.699155111708286 0.8694030573889009 6.368916589015994 3.653691453637061 0.6743268524262074 6.472632924961348 3.796964035688634 0.7107382049992184 6.39662581511203 7.951085595648173 0.5690917384033304 3.853117792215518 4.128348647889574 0.2781343136949749 5.17888278649105 9.430618587649487 0.1244219398421221 0.7107468769519355 5.972365122342904 0.8236655227228821 3.02376675071492 6.249857099880042 0.8236655227228828 2.542476519544342 4.75137677325419 0.1450015964476173 3.004612589728341 4.710891666668351 0.1304139067154471 9.452819921785323 4.595029872313386 0.3328434085743083 9.493962045530884 4.572002777779462 0.1304139067154471 9.452819921785339 0.6549137140441965 0.1498284778621227 1.035121040829226 0.5373568903910075 0.1739587559379873 1.164103807172872 0.7654144174151971 0.1625740232022004 1.205376031740045 4.583333333333425 0.571483797734578 7.186964259780739 10 0.2467791364684351 7.499721837011032 9.769928703243302 0.2778986150455499 7.56091217413349 2.152777777777958 0 6.030716899321071 2.147642378701896 0.1549217949782679 5.863323115285443 2.018572985011925 0.1311840450897702 5.931249417408415 7.083333333333558 0.1352184883947394 4.595576901103787 6.956498187347956 0.3265083303511088 4.620995404928449 7.152777777778004 0.2905648338840008 4.590128456136002 9.087130407078568 0.5533689552397166 1.143033627015954 9.207194715749097 0.6208568065138858 1.18992723507539 9.457254021492687 0.740531210548392 0.6820479335648015 4.72297614772963 0.5991832617885622 9.845095451396686 4.755612379788561 0.4077448376223384 9.845255323909857 4.41950119714377 0.8677512976966051 8.075587488538176 5.412347306785871 0.58954699494559 0.6554757007350982 5.834578874922923 0.6288004545017717 0.6434118761390784 5.72396603198168 0.6801817867623463 0.4841873789097709 5.852081647081001 0.7449234702033214 0.4479560000380147 9.110867391343376 0.4831154837835105 7.352029703063145 7.777777777778228 0.8235595799300259 1.339745678907629 6.908688446561397 0.4445734590350751 1.016751358601064 7.881628597484287 0.3842358008613059 0.1435174192172469 2.362567670069079 0.8376867802544372 6.378381381308127 7.203418164684819 0.3567502280837743 0.5500852869060663 3.376736111111503 0.1957304526748967 2.196750267983789 3.307291666667066 0.1957304526748967 2.076468961902613 3.263888888889282 0 2.181715104723636 3.235474705065102 0.154161847944623 2.267267695471775 3.278877482842887 0.3498923006195198 2.162021552650752 1.364521203818683 0.4490669164650886 3.45295858330861 1.298871203865436 0.5394621251695637 3.585634133394452 1.302012653641152 0.3403206601186198 3.642847037792942 9.303355165987814 0.8336912010108617 2.600387631962627 9.273779870715494 0.8423093028520157 2.433047257234606 2.366091985192101 0.1544097009652502 7.035936825655561 3.818498956422192 0.8553453899562051 7.680884202885629 1.250068505939689 0 6.150992020382114 6.887053742903511 0.1912898419563694 4.612759730171955 7.013888888889111 0 4.587341226347293 2.359865173437266 0.8409427039230002 1.26027776721958 2.624505058824041 0.1527924614790639 1.34751214602873 2.708333333333772 0 1.460027268236572 2.835634638619255 0.1228541511845539 1.386529825361817 4.241146166135531 0.404801957901193 0.1816159022639371 4.171861977399399 0.3625179442958532 0.3923189292689134 2.847222222222297 0 7.955217796619861 2.591513472617997 0.3921903730267784 6.372679524931062 2.454081142686912 0.4798771532812156 6.439687626062035 1.389272570994184 0.8435274101485721 1.697029242636226 1.31715392281993 0.6855518346437797 1.728128873423768 1.504121363224428 0.6656005000796412 1.734033211054133 2.013888888889127 0 4.827903838509348 2.08640648991212 0.1683247916965334 4.705848244650296 1.89315029068568 0.1234567901234565 4.752527553365145 8.745371245586217 0.7148779380109139 9.766370545362665 6.913636296609573 0.8644682834077597 1.7529916573783 9.333365474742141 0.1434784158815317 3.173200163055697 0.8358119523929732 0 1.100177330086133 2.206965712452256 0.52542751628331 8.850037039323585 2.102436784940238 0.5977087577185864 8.860841168142416 2.824876361849836 0.7106274345814402 0.1590410068335094 3.017341281076666 0.7186262183368113 0.1668838548461132 1.319444444444913 0 0.9789020439118059 1.185202457777906 0.1823537584165638 0.9891853101793455 1.325408096790298 0.1233687915610148 1.118776560607198 6.361394925014514 0.7146723469570468 3.764722492027595 6.500283813903401 0.6153925115660994 3.7647224920276 6.596810965044537 0.7284937348483056 3.751913528292029 8.48117021509012 0.5903248178196663 2.070284994259959 8.204099125798002 0.4001967576186703 8.783728183554414 1.880731775787238 0.8335407335915246 4.343469371891114 1.736111111111365 0.8787270419647213 4.483914155198132 3.70425896303938 0.4076071073199378 8.568244077720903 7.078997909983114 0.1243210831649124 3.187335189153496 7.063427492525532 0.3220411954548423 3.160366435021908 6.825864558951395 0.8393254537235102 0.3744798033098313 3.097703843892241 0.4216943749523241 9.4595478565913 2.889370510558916 0.3928698005225559 9.36017139771095 2.690353447704502 0.8190366030963838 5.773582520755667 2.596782730119529 0.8766367700467236 5.721683879660019 2.527338285675079 0.8766367700467236 5.841965185741188 2.578802844490506 0.6956733731431073 5.705112113256929 6.549984426322439 0.6021633254049239 7.982490550798763 6.38888888888897 0.6287270419647223 7.858176024300302 4.02759117227996 0.4041219261497838 3.50995068795609 4.223669603652509 0.4549873340413354 3.505233773992137 4.085660564717378 0.2962294340636841 3.60338038786579 9.031803375235071 0.3169973252859869 3.001409641889924 8.985680532267658 0.5088897137211565 2.896615551205643 5.398009690413739 0.6824880949870196 4.544667324445934 5.208354029906102 0.6277309322120683 4.595544652573395 5.218425810281311 0.7160158298124145 4.440984522909341 0.5501314504944403 0.1672536981100748 5.833130329282125 0.3952283313755315 0.165902052459573 5.755840003513043 0.3818417714191034 0.1567107589618326 5.971340302139991 0.4791710586183977 0.3239644570719075 5.971137298088795 5.000000000000145 0.4040113770664204 6.668180873828824 4.851969854488551 0.4513461330089668 6.534982416118963 3.242549419935333 0.4540591175181267 9.415902756531036 2.690973762209321 0.5096453469111487 5.078489003733324 8.695736191575893 0.8019080767427613 4.728032070585824 8.765168719612358 0.8019080767427613 4.848320256608337 8.672009714671514 0.8729451841750042 4.993837391976994 8.602577186635049 0.8729451841750042 4.873549205954481 4.375000000000166 0 6.030716899321172 5.763888888889141 0 4.346778614184888 1.224860533408439 0.1822020740186082 5.042886959781986 5.486111111111152 0 8.436343020944641 5.483271023362828 0.1596805338941648 8.263809844217526 5.362411199465205 0.1263651854325082 8.351899256601644 7.632956927428637 0.5820257075602921 7.350386446668386 7.591571804657027 0.6871601020429392 7.537520632357785 9.546451833223937 0 4.055673650406016 7.226912377239797 0.8458056464891206 6.314081142439321 7.087568396289416 0.8734512145926805 6.228863816947177 3.188477931402315 0.4038722452242693 6.21392780725798 7.20948176138464 0.5375558093886666 8.721635453627194 3.168403993877388 0.8042684447948795 1.595346390064522 3.249520656370074 0.6814228986096452 1.548530378374613 8.125000000000476 0 0.9789020439122458 8.11671184693375 0.1620453237452283 1.144062535531078 6.420787845965474 0.5383498035687715 1.668813335460427 0.3912101897932715 0.8306315764633188 6.496789997164012 0.3731820045232158 0.8486597617333745 6.285624650301816 9.542196701865503 0.8473089296858853 5.718500890134251 10 0.2459495433529089 3.333010205501685 10 0.368959995330976 3.263947547511645 9.810415311696184 0.2795192520859036 3.175469013073309 9.131911125864786 0.6659663714160987 6.465341001892549 3.176076780010748 0.8398211724260297 5.600290019695455 3.10663233556631 0.8398211724260297 5.480008713614279 3.271687262413426 0.8268876237658783 5.552723323580773 9.275176220668078 0.6628892764592895 0.4804992992388344 9.409435073400768 0.6190018648124365 0.6312561478386978 8.819444444444777 0.840386069142834 3.542569903601234 3.958333333333552 0 5.068466450671792 9.280647015634838 0.4776073799817258 0.9093451276434948 2.982615624611903 0.8052405157972078 2.634283592581623 2.975841139678378 0.8467613500445874 2.476825281718563 8.750029621022588 0.1226805036114286 0.1202813060811762 8.818714945188582 0.3005975312280149 0.1835838117417984 6.797293811989377 0.8523397404155373 4.391642302750693 6.848288234564853 0.857437798243407 4.572681468717658 6.875000000000218 0 4.587341226347283 3.402777777778106 0.5478395061728389 3.384528165535358 7.36111111111123 0 6.150998205402556 1.382896115810654 0.7188948276258391 0.1649646925925476 7.859796566066423 0.5470373927216217 1.951216385955121 8.002237724377892 0.3815085854687655 1.954418069852919 3.874186705258398 0.4448638425125639 0.65575965436809 4.020749298389203 0.4138601821403473 0.6033127473227062 8.541653919266817 0.5253432145012191 1.92111664778725 8.624716421878546 0.498914001847847 1.905214403631016 3.791923821187295 0.3182069269438154 6.856657922450042 8.146136126832674 0.6223442037415693 1.624566390373267 8.224071630587448 0.5341014353983984 1.754699308190614 9.277463576559072 0.8690018648124366 0.494339124502001 9.346825281456866 0.8690018648124366 0.3962681543515356 3.541666666666986 0.8415812849648975 3.496899830573079 3.475541284580948 0.7123668160902117 3.444037930514146 8.194444444444848 0 2.301996410805128 4.025148975074266 0.6659476299741595 5.590411044426167 4.035472820284552 0.8694972669833076 5.572529619992482 5.533813207620017 0.8177122449590606 2.530006072533649 5.347222222222593 0.8810553555192381 2.504267475136416 5.203433154865064 0.7135552485851616 6.888650668780992 3.390909609662847 0.7015178193609787 1.660826696421156 3.379237391614597 0.8243633655462129 1.827920659590444 3.297849659901482 0.7015750854107811 1.874909888403739 9.8514272201108 0.2943691290917946 1.746629022865015 2.050869673669683 0.5246538565202896 2.701271887934352 2.008257247484151 0.5972969823733285 2.797746284172218 7.374934828928551 0.8328074724212786 0.8077851034307191 6.256439349550144 0.8534271563912058 7.314437778096631 6.28968253968263 0.8125367430923054 7.456909528569483 6.173496549339882 0.8655060877652504 7.518853244584041 6.213179089022406 0.6780428308575559 7.621951506939343 4.877159275474556 0.585392977090393 2.076932502038856 8.19615938864326 0.1209756822369382 0.1056148420251408 8.229474386317932 0.3035567539778991 0.176375224917151 0 0.5017567627530553 0.4627613673069874 0.1670016308270596 0.566957331123459 0.3449386625654017 0.1495585820989316 0.4087814373029824 0.3256293722312808 3.635091897484479 0.8049237950373066 6.615558459591195 3.717293074983436 0.8441825375766183 6.751740250445936 3.235366109918568 0.5439790415844382 8.357284042908223 3.276597058333752 0.3347776808877636 8.286013929109847 3.190953957761685 0.3273605868427524 8.402914044332093 2.160634748340641 0.1507646650342269 3.077109211002896 2.013888888889215 0 3.14396555337295 2.008975592903564 0.1222829745150533 2.98117377609794 2.708333333333513 0 6.030716899321103 8.050462761511547 0.8414351292264539 7.251171916206623 4.244718237319635 0.8429600235155785 5.624983968811582 4.104917264728991 0.8694972669833076 5.692810926073655 3.958333333333616 0 4.106216002022419 4.223562986477639 0.4931864892850193 0.7421711851483852 6.602262707453361 0.8356314460599593 7.132066689359115 6.786311725479722 0.8455926576536408 7.182325760964774 3.958333333333591 0 4.587341226347108 8.052312107657482 0.8785836193787333 9.879718693918839 8.043644802761442 0.8267193311846792 9.731979865189505 7.904755913872564 0.8267193311846792 9.731979865189505 8.040401354863423 0.7053029505634125 9.852261171270666 3.236361102627956 0.6866895661008229 4.757260265601877 3.184919132458398 0.8422240487345416 7.760248394590568 3.228022266489995 0.8767451351012396 7.8957378633294 8.402777777778105 0.84135423453542 3.544903240310581 6.804734655734739 0.5430895731685292 0.5507147258722553 6.895975637793489 0.4097524083904545 0.5093081956247481 9.479127684018703 0.4906338322690788 7.950877604318059 1.389102683328448 0.4456710653306898 1.951268510442359 0.2664767359870031 0.6262933051745252 0.1668760044135137 0.1670016308270596 0.6255899289300421 0.2629537079737293 2.275913444369603 0.8284896213490551 3.031369279666804 2.200837358520078 0.6757866037223836 2.885618853934691 5.398344749512787 0.2914904081712137 3.898099987068018 4.734958932853429 0.8732334723832579 6.464394811640735 3.928273613179499 0.181047909221919 1.573125998239096 3.95833333333375 0 1.700589880398985 4.097222222222644 0.1236944964665178 1.612263563729508 6.957678406139102 0.4529898914191095 1.162908864522258 8.743599190974628 0.8406020630325798 9.104897936762658 8.911860627742566 0.8702850311353523 9.183743374890524 8.842416183298122 0.8702850311353523 9.304024680971676 3.924662034342707 0.5806075121271828 8.121994939921166 0.2330717008513185 0.4861245914755074 3.816785086470268 0.2330717008513185 0.4997714160481108 3.674657810272006 0 0.4992169614200498 3.746323383254458 0.142712474566713 0.599699578501953 3.749563533076655 0.3757841754180315 0.600254033130014 3.677897960094203 2.041473920354924 0.5007708046711485 7.056760557593194 2.624266531282737 0.472945806574854 5.260493072040118 1.783967930408825 0.8466337213622368 2.129157714839965 8.474893697126134 0.4318077769070109 0.7980376136029509 8.470823001303881 0.4001298017486674 0.6352354113368881 8.505490774592037 0.6059024428423483 0.6855799308599354 8.639824837457356 0.5060322445910157 0.6207477896840177 3.40277777777817 0 2.181715104723643 3.333333333333734 0 2.061433798642467 3.446180555555955 0.1957304526748967 2.07646896190262 2.638888888888985 0 7.594373878376334 2.569444444444533 0 7.714655184457503 0.8296688893261219 0.4932545590545798 2.950493991094246 9.672959335581563 0.4854528706787878 4.918516231801229 7.66028378562026 0.7125920046643636 9.250164446720499 3.66211760684191 0.8314100031722821 4.403188992346221 3.819444444444709 0.8797073621149415 4.477801483689918 8.263871331383456 0 4.587351363178072 8.402750652058842 0 4.587356887388729 8.333311779920066 0.1957292465489714 4.677564428000967 5.571339282246974 0.291686278154072 1.185140041512791 9.323423581189276 0.683377883606257 2.147667842207055 9.407271032889529 0.4853535506085477 2.095410471353429 9.26083923551607 0.3961809703050598 2.152701645581431 9.325851637575351 0.4865942727063221 2.271278120648 9.427182691862436 0.4556297852189829 8.795460395755924 2.064696847949917 0.3930631800977459 2.558023913750734 9.466364040848017 0.4901104622962024 5.479856333757141 9.541254011148649 0.5833895519991524 5.365775282542479 9.45413452459192 0.6015189447329838 5.24775113080854 9.459199609763701 0.7127472521056022 5.444670883215331 7.385824964852453 0.8701034885403267 6.698736894550738 5.555555555555616 0 7.834936490538793 5.705132431857358 0.1296148120309221 7.904861045098211 5.550637300428129 0.1257257278717296 7.735819581255933 6.983188185704813 0.8544927767354118 5.536876844169218 2.216590580817489 0.8472969823733285 2.757652515478503 1.782092077294682 0.8757908641911546 0.566145539631439 6.597222222222396 0 5.549591674996643 6.736111111111283 0 5.549591674996652 6.727700048149888 0.1666156057602664 5.65455775289846 4.456085997363539 0.1525685228221902 6.967274729807153 5.741492566622576 0.1208525329136397 8.850211230571214 5.787953895087499 0.3156120171164254 8.747235472830612 2.300477084561639 0.8298935176088738 4.020941767491723 2.421393358393185 0.8705895807821131 3.94055113024922 8.286837925769232 0.5346475717546568 2.581963049995457 1.458333333333761 0 1.700589880398844 1.319444444444873 0 1.700589880398836 1.389102683328457 0.1956710653306898 1.790893435667463 5.223060330633127 0.7951122844506885 5.942026726078508 5.292504775077566 0.7951122844506885 6.062308032159685 5.189734158416179 0.8495635062048497 6.172554697680825 2.387152777777875 0.445730452674898 7.529221504249017 2.564394835463948 0.55983666357303 0.8615812524213424 2.727572594089113 0.8399825791522504 3.934733134871272 2.859583386019602 0.8494064492534397 0.8236878076798336 2.698701440144025 0.8755338977665642 0.9094338166140843 7.250729511541851 0.8128350069700004 4.511673180312327 7.323195730830655 0.8429842348261738 4.352728470449506 5.763850766861123 0.1763687566928603 1.09932793516321 5.76388888888932 0 1.219464656074379 5.710228171135858 0.1729868389176225 1.342175723044985 5.640783726691417 0.1729868389176225 1.22189441696381 5.710190049107661 0.3493555956104828 1.222039002133816 6.597222222222337 0.1605873269525764 6.370129050838706 2.131537798156738 0.1482547129929949 1.953151973575492 2.013888888889301 0 1.941152492561221 1.996284200858893 0.1315202548260737 2.111691638709467 3.954042154845022 0.5392883477170575 0.7745950044437854 1.922141845079747 0.8465792428484588 7.939843101494018 1.838767972551288 0.6962560589547189 8.00653867411639 5.625000000000171 0 6.030716899321266 5.544330840380457 0.1512361568639934 6.008456202968235 7.81310060621159 0.801323146764114 9.045895238724812 7.794385671068512 0.8668580977479627 9.172740687058116 8.865679242716723 0.1206677416861482 8.008711660779236 6.380270645222025 0.1721342502191464 3.992647208788252 6.250000000000263 0.1577730121329647 3.869536826064528 6.160914335272483 0.1397792134966606 3.98683717423238 6.291184980494268 0.3119134637158069 3.993549687079225 4.305672225036934 0.1299621649684907 0.1202813060811716 4.310611656938631 0.2783069068709746 0.1816159022639371 8.194444444444425 0.8387364011102963 7.929569215416638 7.385845705775083 0.1265844569696342 3.430529004625665 7.518089693465015 0.2889341666241493 3.506880106517172 7.315224122507207 0.2876374240786366 3.455534960421216 5.636474529016787 0.8407801842675264 6.104279614292146 5.705918973461225 0.8407801842675264 6.224560920373322 5.624775015745668 0.8795988882339986 6.422441787485726 5.636249544762293 0.720379072501525 6.255441890294263 5.555330571301229 0.8795988882339986 6.302160481404551 4.513888888889054 0 6.030716899321177 4.444444444444615 0 5.910435593240003 4.557142857143022 0.1956202233979974 5.925556671718787 5.763888888888923 0 8.676905633107001 7.653154860094638 0.8393834913337261 2.855072710201539 6.19636626043062 0.8323280170295567 1.405305325931625 5.99401313318762 0.8766299455894082 1.414851832109034 1.94444444444469 0.8413466983803368 4.627434995040728 1.89512602660974 0.7200737403450579 4.679148530615159 4.166666666666925 0.1507201646090532 4.547247457653395 2.003077891199171 0.5332364556788576 0.357925653116081 2.078709306016525 0.4280757210288549 0.1773129301710233 8.072626583052131 0.5162349140986278 7.294675492291417 8.029721285700173 0.5101927619625685 7.110509695118683 8.200338217467969 0.5360720787819009 7.215540391546468 4.023329441163531 0.5944162946002454 9.837180857756312 0 0.6074228303368299 7.973661754104238 8.218505046185097 0.5177531625838242 4.714457828205218 8.332517088984048 0.3188034236580131 4.771150620645548 3.312033152696029 0.8323924386431006 8.24125377766941 2.986111111111357 0 4.8279038385094 9.874162994216539 0.1234497409204609 3.321900092884889 6.255752324870562 0.5247805306959547 1.203332966902652 6.159752356024238 0.6984377879944323 1.366641738456615 6.116488454739017 0.52702469786758 1.241368263189713 6.17714717243032 0.7299753747581259 1.224383490918477 9.449244392019839 0.5910685807542413 2.193599032924764 10 0.6200006512227325 5.898808275317839 5.208354029906106 0.8777309322120683 4.515357115185948 3.194125189392135 0.1235513818611036 0.1202813060811718 3.244462068674923 0.3168802092339122 0.1852616958040876 6.532818263008918 0.8356314460599593 7.252347995440275 6.547903804387353 0.8787270419647235 7.422379036720933 2.986111111111263 0 6.511842123645806 2.873435719704736 0.1968233398812243 6.480068154574035 2.942880164149171 0.1968233398812243 6.600349460655212 3.055555555555708 0.1176360477525264 6.483706875812276 2.942880164149182 0.3144593876337507 6.451932906740506 2.986111111111273 0.1176360477525264 6.363425569731099 7.708332831004535 0.1586534526690218 4.507153978979701 1.943698790421653 0.5253798654723301 0.5322591871042631 1.938984385534432 0.4985306992274514 0.7089191037207819 6.736111111111516 0.534979423868313 2.021340029948909 5.356373889050593 0.8738784180905758 4.257733417544328 4.791666666666696 0 8.91746824526928 5.486111111111169 0 7.955217796619954 8.388626368648787 0.5022702333560767 8.735059227046639 6.811223084807432 0.1549183344252272 8.720271551340009 6.901550212373104 0.2943568601185252 8.814225188183254 4.159345883737433 0.4596333214207052 5.512877563712839 2.847222222222495 0 4.346778614184705 2.708333333333619 0 4.106216002022355 3.029721285700265 0.5101927619625676 7.115987612984952 1.800845788192322 0.5881199003400509 0.6420192993345957 1.713696446614553 0.6257908641911545 0.5375360706403928 1.856549448843884 0.5630508293234338 0.4277759584100602 1.85345015761495 0.7139107645312055 0.6054092851722767 5.13888888888914 0 4.707622532428362 5.000000000000246 0.1547891870604093 4.794153048076392 4.995873976952272 0.1265281566844398 4.629817155558334 5.902777777777811 0.841346698380341 9.077843320044206 5.950254867094523 0.6953391213868758 5.024038580534143 0.3712983910612492 0.8282926846125241 1.21287828839516 0.4271389093020968 0.7890367300037011 0.9973201427423094 0.5331623879912123 0.8407417491204563 1.114574263711611 0.4713526958098376 0.6690344337329804 1.268890382994924 2.73267007003146 0.4837755088679317 8.702197111777799 2.759890799678248 0.5989327541189902 8.55608328086806 1.922144194935559 0.4296495100560168 6.495576137042094 9.1627958012599 0.6625668648096892 5.819912859915724 9.164758096152157 0.871127348154037 5.827301851268176 9.156569749616015 0.7236993646149424 5.662199232416417 9.437386741906879 0 1.080292614590355 0.5108494786292448 0.2433395230517842 3.745245798633275 0.6220014652640267 0.4133366287055654 3.735306238833856 0.6667075421906343 0.1699971056537813 3.735432523979314 0.5558332562298529 0.1544315851414393 3.607497111257772 0.5111271793032452 0.3977711081932235 3.607370826112314 3.86811564932464 0.6731789223753093 5.52199021591643 3.763752473762576 0.6885989478267149 5.702752538429139 7.952841468020492 0.1367766455919562 2.611971259623963 8.757274890650192 0.4786831708598239 4.148149831670775 1.666666666666821 0.8364197530864219 6.712310967114348 1.736080939522499 0.8744202423850347 6.58836239158579 1.61668963109051 0.6787084609658705 6.604857338821834 7.563512482984192 0.832025707560292 7.390480215362109 7.631816043576403 0.7107295768349847 7.405502872092129 7.392640175275102 0.5929842348261738 4.312634701755787 2.41485454317332 0.1527924614790639 1.229261151859685 2.537344705054013 0.2763290463702154 1.163261733875506 2.559091278669649 0 0.5489966785926704 2.291666666666973 0 3.625090777697652 2.299878733619542 0.1274477520337056 3.463203812439134 1.251284198178764 0.5935274101485721 1.53615303926091 1.124768962272521 0.5888407676083264 1.346245233527537 2.847222222222417 0 5.790154287158765 2.745709771359469 0.1914897003901165 5.797181549010893 3.732437142617393 0.6028704490180077 3.685025029422936 5.417243130005579 0.8755617579818904 9.879718693918804 5.405317722230889 0.6973186018791655 9.855681174424317 7.941599539116028 0.1500643323873302 7.424896324048781 8.033207805101066 0.3248641172595039 7.348118594052407 7.824911209910773 0.2709531176311022 7.357526285770829 2.104950278761311 0.7229974957863834 8.934874814114636 2.056084922392505 0.5627519949755269 8.934225078821854 4.093019574473086 0.7169047143518567 9.837180857756312 2.876026388248384 0.5073235667064795 8.135981254976377 5.164930555555582 0.4457304526749081 8.972597177223182 3.611111111111267 0 6.391560817564664 3.635391494603504 0.1546035933302035 6.457730069006841 9.625139587113232 0 2.847148122379555 3.216608265985152 0.1747997848721756 7.069745077966884 3.106463969879801 0.3300797238803979 7.185503740823554 3.3357654414727 0.3397768966925304 5.562029424298359 5.76014628371359 0.8427177733367694 6.398866400756535 5.690476855014658 0.7223166615707681 6.429747370677476 9.158912342846939 0.4698791862608458 5.939563669451477 9.14622605164401 0.5414395166556523 5.732003064011389 9.286569749616014 0.621127348154037 5.657067230023598 9.299256040818943 0.5495670177592307 5.864627835463687 1.718988391376576 0.8299014188317669 7.243415766980826 1.796894883488418 0.8761328207640537 7.430467017986808 1.042844166543393 0 2.904082771081127 8.199413908433229 0.4621412726809537 2.353636760752349 9.304347527393787 0.871127348154037 5.587143697421742 9.157777777777898 0.8525720164609054 5.504365903910225 9.338817839381321 0.8654383224197169 5.37797855019847 9.337609811219437 0.7365656705737539 5.535811878704662 1.383955282865835 0.3742632538263377 2.074572949437751 1.384169077304992 0.3199343191570275 1.884220123850306 4.487711382494277 0.852362667881735 5.510649101993851 4.506381485696117 0.8597006787617796 5.725902222982622 6.249897128490198 0.5969466122349134 0.1450444270616446 1.111111111111144 0.1635802469135819 8.716999401800507 7.230435615534283 0.6433450123175279 8.886783213627979 1.938722710936585 0.4645207972349759 6.337502095246146 1.799479301672289 0.6063901317667157 6.336701016631837 1.881528434263397 0.5159978413142059 6.213481379243325 0 0.6164044363376254 4.236111111111109 0.1512255181223343 0.7210892983790698 4.37711046853064 6.432582444744227 0.8797686830720617 9.333273214665418 6.571471333633113 0.8797686830720617 9.333273214665446 7.979788125819879 0.1535311769689296 4.825295681363296 7.977259504083836 0.1596074044757284 4.978838152554701 7.851059203981407 0.275404397121393 4.749100944147104 9.025683091850187 0.8757391060039161 9.879718693918838 8.886794202961307 0.8757391060039161 9.879718693918843 8.996660573961917 0.6717137539196107 9.862407089467965 5.147377868334141 0.1475760981479934 2.226709987985093 5.224086555631135 0.1715103786509436 2.069118831017576 5.025082673944739 0.141412947590903 2.127031739782267 4.302832354445937 0.152737350616468 2.223381114311337 4.375000000000393 0 2.181715104723695 4.352125172013317 0.1327438357016222 2.012674613466396 9.896705395316319 0.874428163502075 1.106694912994175 9.696644272105084 0.8046773953164617 1.135372609598902 0.09392855693056865 0.1301253765027281 8.888930505152278 5.151306838813854 0.8692397560309805 3.35522203462792 9.318659827298532 0.576179805368073 0.1512055742935128 6.562208775754259 0.1571825640108619 5.609429678923039 8.125000000000419 0 1.700589880399248 0.3278570062660153 0.4084861609074504 0.1475667140793927 0.3408215604734545 0 8.648152558314283 0.3028055505732309 0 8.767721594854599 8.745362812184359 0.87314239204036 9.879718693918843 8.263888888888859 0 8.6769056331072 8.2470116540768 0.1290241697953418 8.506786482270389 1.25000000000002 0.4755492741115568 9.374912316754919 4.519966470928024 0.8413887876152323 4.735415375016794 7.318615736536296 0.8605022584635789 6.145892489211324 7.281851030653938 0.661367666355133 6.138817118265369 7.323305891553748 0.7063079049526995 6.308975426248097 0.4870606394149016 0 7.544457544869845 0.5279625880560348 0 7.447246705746455 8.074552930024906 0.4869958102430628 0.8900462656079642 7.963520276255856 0.5600817540632912 1.019959159860321 1.427448510488345 0.1364388232760251 4.043859825418437 1.496892954932787 0.3000190701896049 4.083953594112165 1.597222222222502 0.1635802469135799 4.026028464634858 1.465269227600544 0.1412537436535312 3.855073000875669 1.364939960310829 0.2776925669295563 3.912998130352977 7.753246201725565 0.1484663091192276 0.5283943371872664 7.853291711354509 0 0.5195495497263108 7.884811131132922 0.1400234805071087 0.352139524729619 8.888188346536269 0 5.91003113492436 9.027077235425164 0.1497548260231673 5.814135222501145 9.012124750144235 0.1432641006930679 5.989413061918272 0.4096754074055482 0.1421309489160388 9.16131464284247 0.5549680603039665 0 9.284003774525608 0.5155746483685284 0.1720200465027283 9.354994148573741 5.361949219522016 0.7951122844506885 5.942026726078515 5.442121900503775 0.1639284968873369 3.690474299920575 5.486111111111422 0 3.625090777697824 5.559038722862612 0.1660273671019017 3.531240851866707 5.628483167307052 0.1660273671019017 3.651522157947887 5.515049512254965 0.3299558639892386 3.596624374089458 9.794682504647227 0.5894825267759822 7.859266568227941 9.834398718768018 0.4267174626724805 7.867109987130471 9.85732622846248 0.4694251569027295 7.724681057805627 6.04180956678736 0.5386860988545729 2.903485444633746 6.211914623371253 0.5572475639987262 2.841320570068085 6.180412655435592 0.5386860988545736 2.662757825625514 5.902920677898452 0.5386860988545693 3.144048056796088 5.934136845593433 0.5572475639987222 3.322445794392768 6.319301544324492 0.53868609885457 2.422195213463171 6.489692401149048 0.5572475639987221 2.360195345743399 9.298278193445114 0.4024599790067271 9.840154439302806 9.213651213986232 0.4809727442151595 9.669795344140383 9.302922936186004 0.2745814574396473 9.716630707575675 6.796547038718401 0.5924302781757766 1.496021022321648 6.680191578128031 0.4849199901099338 1.603969945023232 0 0.6252289483293432 3.263694425005381 0 0.6208626821261678 3.401982063107853 2.777777777777966 0 5.910435593239935 2.708333333333526 0 5.790154287158758 7.791328637142161 0.8774668036097373 5.271978120984421 7.893447901316735 0.6783343369225097 5.279054438560037 7.722982157751069 0.7157265964548276 5.249062898522587 1.862599206349414 0.4249889770723105 5.43646997046765 1.799069060955126 0.4829094498131991 5.420480213762122 4.168227568227934 0.2138643527532406 2.784022822065904 4.031350097605167 0.3399824093929608 2.864212236451461 4.029789196044265 0.1261180566397201 2.863311049515096 4.165767000985797 0.1258557652902065 2.942386964442554 4.028889530363031 0.2519738219299266 3.022576378828112 4.167327902546699 0.339720118043447 2.94328815137892 0.5988582252792128 0.2932091516753106 4.904241785296782 0.7280408491313722 0.3888846511626436 4.885844937620663 0.7499194461094082 0.2791354580691328 5.089569209960169 0.7945879322648493 0.2636956087191095 4.896395457254267 2.398976862438412 0.4482460405042032 0.4850742721364527 2.483914705568941 0.540825892139132 0.3707885460788913 0.5560402799280189 0.1542793008703239 3.882619205328118 0.5113342030014111 0.3976188239221081 3.88249292018266 0.6671922665628007 0.3242764065241052 3.8726796455287 7.083333333333663 0 3.264246859454411 6.931736395652619 0.1492898032521447 3.342204684152833 6.940109021094223 0.1243210831649124 3.187335189153486 5.271344746251859 0.1201386670978422 6.474125997304764 5.266894865156754 0.2756713948188547 6.557961868062125 10 0.7518437052919851 1.10645897997631 9.898093363277187 0.1234559657180418 4.722944415482134 9.791722219441883 0 4.724506700797785 9.738758203706656 0.1522444142552981 4.894141446496861 1.518320016275771 0.8417593130462617 0.4766167307939455 1.640869628406846 0.7175501772374162 0.4154277208315844 1.908501044339485 0.5784896213490551 3.747933761237146 4.264066958701397 0.8322946145458792 1.143818949256876 4.319849176468727 0.8545821165225231 0.9989668629070168 1.253122973615234 0.833245758418689 9.594534878056844 1.455193989052911 0.8647899515693644 9.560781045634261 1.320922290613418 0.7349050713156465 9.49598225025575 1.254617190449405 0.8701151197462821 9.454075980296608 9.242971100907329 0 3.881962357473109 1.875000000000143 0 6.752404735808081 1.996458822987691 0.1663636448170208 6.647831426145981 1.871026172145791 0.1247364223685311 6.586790296746898 4.145618247852238 0.6669725530950008 6.536312481878994 1.736111111111124 0.1497646417830569 9.719343619143807 6.361394925014485 0.6503719354344175 3.925097566802504 6.361394925014489 0.8653925115660995 3.925097566802503 1.108038594449888 0.349448254797095 6.87984659909966 1.10239108438529 0.1386110194540011 6.8831071905557 1.181630602038371 0.3029177286657794 7.020585756618376 9.843229446672371 0.2823198914082107 3.623151989128983 9.71739244088891 0.1598200889757627 3.612041876512186 9.639256496774772 0.3732621982903733 3.624752479268895 9.199532806221804 0.5092360595984831 3.116684708144508 0.3704271881242862 0.3873248876057832 3.817183543044919 0.1373554872729677 0.4004172575503255 3.746721839829109 5.972189159327003 0.6719321105834049 0.4944775664874609 1.597222222222605 0 2.422277716885884 1.110168767389705 0.5008652829827549 3.982496830612284 1.030210007383738 0.4838440367328981 3.816030702457618 1.109722307309396 0.7043939602302871 3.78793636756842 1.162059677448081 0.5439958890420437 3.858519877187593 1.189681067315363 0.7214152064801439 3.954402495723087 1.235718133205799 0.4117229827723273 3.896180685315232 1.263339523073081 0.5891423002104276 3.992063303850726 0.3945425956142719 0.8276790397203027 4.737104325987881 0.2882140956366478 0.6752519380848311 4.603345540633581 5.566820995253311 0.1707340829469281 9.729340514474204 8.785896172510842 0.5189330464889148 6.567622584822062 0.4867558042068624 0.1542793008703239 4.006617153118916 0.3404968844220244 0 4.131229410565487 0.3458487893297376 0.143985364553999 3.941307775981175 5.35051031522425 0 0.740237813129263 1.029522615215684 0.3016023222788384 4.480158352451852 1.076964944225493 0.1376467284762485 4.527533159009888 0.9247798932126701 0.1639555938025899 4.419685113707751 0.9988395596287775 0.1174259203299122 4.326813728116141 7.908378513600414 0.4856049036752542 1.264343558364139 7.920418964556838 0.6041620119300133 1.154497813887418 6.16872635384161 0.4943670468028573 8.67983260144727 6.264004806136504 0.60387422706603 8.758606007749721 6.146787759872783 0.6767308952179321 8.638689992550454 2.302436350572088 0.4905532410382303 5.928507597722177 2.428022950615486 0.4882418858864983 6.035862266843512 1.736111111111453 0 2.903402941210587 1.800642259570239 0.1222829745150533 2.860892470016753 9.765701188033283 0.8542899089312745 5.350618389311784 8.333333333333645 0 3.98593469594154 4.514856268694309 0.1572660122150918 4.945787496035443 4.598150806761844 0.1543187963814857 5.118180912137733 4.65112660014674 0.122555561440866 4.913906834691051 8.283776359959166 0.3281587619037799 8.499711111324441 5.416666666667052 0 2.30199641080491 1.723780104263614 0.7130658125282974 5.856314836039042 5.208333333333593 0 4.587341226347197 5.065318421396725 0.1265281566844398 4.50953584947717 5.279387659120049 0.1420251113246644 4.481262290337131 4.305555555555888 0 3.264246859454234 4.16648006116886 0.1541219261497838 3.349575613181204 4.165767000985781 0.1258557652902065 3.182949576604898 1.656828207349804 0.6286160099075444 6.391580268359784 1.515584026697 0.5736922148702346 6.260255648854729 7.84173357080298 0.3058386042704913 0.3111315557873577 9.097810472356995 0.5567158608401481 9.00858671664767 2.628891955338559 0 0.4429861714492022 2.585410080556958 0.7080467732190049 5.854202642842 3.541666666666861 0 5.549591674996458 6.250000000000229 0.1574763042202187 4.104182653265835 8.79317441579847 0.2736274603359976 7.810009729955688 7.640996689294878 0.8706417983034931 0.1092792372250832 7.650656740130941 0.7186796926879238 0.1767314585523148 2.446460638537046 0.5787103835833438 5.89907742635226 4.675804872311726 0.4524295018588511 9.519923130727053 4.606360427867251 0.5481999930744805 9.645674962979834 7.777927780468795 0.1220958652159341 9.879718693918839 7.77777777777775 0 9.759437387837668 7.790280905433017 0.296817716187275 9.853942753214366 7.790130902741971 0.1747218509713409 9.733661447133198 7.929019791630843 0.1747218509713409 9.733661447133205 8.643131791737801 0.6491928025574416 0.5369698663783007 4.00805112510761 0.8784531119356118 6.699674877566354 4.036415604643517 0.7197882595459293 6.607102797581217 3.975344200090901 0.7226356495122301 6.819291698285276 8.534206440643588 0.8476298183065887 4.745187059680543 0.1202813060811744 0.8797186939188288 6.249999999999996 0.2716215443477996 0.8486597617333745 6.216282825746022 2.801810959058733 0.8447091153502344 4.212621744421652 3.321597641019185 0.1404983210647499 5.537490074081374 1.738058347428363 0.1434283786725709 5.443297886677631 1.146409388669931 0.1376467284762485 4.647814465091063 1.059829944266085 0.3037076001216483 4.681289122897363 1.276892286832201 0.2646701435597358 4.73431038639144 6.824794816311128 0.8399825791522522 6.701203174738456 6.894239260755556 0.8399825791522522 6.821484480819636 1.143476775901323 0.8598437086201635 5.295838829660554 9.216394181100918 0.3870977591373342 3.677554428071396 8.081495285543316 0.1201963424226315 3.92072349281331 8.13621969601871 0.2857318220772965 3.783443196504508 3.602300693216487 0.4201064823911246 8.080585799844231 3.640837826659185 0.6040492391389646 8.020535804703265 3.636299334246098 0.5088841117149669 7.883646723413875 6.388888888889099 0 4.467059920266095 0.4648014807150244 0.4520507426524769 0.3120007796750357 0.4525232127921486 0.5652003003176772 0.1668760044135137 0.4828848295143989 0.6699794925917928 0.3165956103979461 2.073629012541338 0.7225857204411457 2.832586357657018 2.049498749184519 0.5627519949755195 2.875238521033836 6.220238095238181 0.8125367430923054 7.577190834650651 6.104052104895433 0.8655060877652504 7.639134550665208 4.500658816656509 0.6147757269831242 1.108132537455154 4.623678222318684 0.7116911322364814 1.180034700783896 4.468305791671156 0.7117136667924937 1.297769303447161 2.629513697923228 0.3205171000585263 3.396132942473907 2.786087176593671 0.2813582490943987 3.322569931709456 6.588213705385067 0.8424302781757766 1.536114791015359 6.467367569267854 0.8534687638533137 1.662169671591006 3.888888888888902 0.5352388650422925 9.446558804057798 4.027777777777803 0.4429529241866744 9.490168414498495 4.027777777777796 0.3907332347052316 9.340532044895451 3.888888888888896 0.4830191755608496 9.296922434454753 4.930555555555895 0 3.143965553373101 4.791666666667006 0 3.143965553373092 4.890265662143078 0.1450015964476173 3.00461258972835 8.611111111111578 0 1.580308574318123 5.563150959954987 0.5907399596833388 5.68365549712443 5.39750417069803 0.4970285379924385 5.699104178104874 5.440208233104749 0.5279064502122762 5.827774771511213 5.474561537872067 0.7123578315865153 5.745921069189994 8.242875120688469 0.5600817540632912 0.8604954546843895 9.422086517511733 0.5329252799093382 5.721580705595405 9.434772808714662 0.4613649495145319 5.929141311035494 9.438656267127623 0.6540526280633754 5.80949050149974 3.335518766687221 0.4798787138690023 6.143454774331399 3.450180931903437 0.542458427850314 6.049147440454549 7.442703798632802 0.4942151223442959 4.103210091418063 9.328063339755802 0.5311999938442358 6.53252178245351 6.25000000000003 0.5695904256603794 9.131559816418896 3.415533542526753 0.8505572241130314 8.520736059216887 3.233551620375108 0.8398372518496962 8.434545805896525 7.777777777777738 0.4276634377349947 9.540828297507176 5.138888888888944 0.5820257075602973 7.828086851446956 5.138888888888938 0.562536743092299 8.029677652765431 5.282571295344061 0.4833302081957445 7.816140676604214 3.077899709731728 0.8450990336827847 4.693193622745182 1.92683975641444 0.1315202548260737 2.231972944790636 4.791666666667048 0 2.422277716886061 8.198306685818114 0.4896104884250252 3.674485183889215 7.361923200610647 0 0.8611445403496159 7.431348014984424 0 0.9804417020498379 7.516470593944575 0.1647790771698518 0.8688868349352432 7.291666666666664 0 7.714655184457821 4.723529709173116 0.1516886734614456 6.230430864846854 4.583333333333497 0 6.150998205402358 4.744155825386786 0.1238765246349262 6.083474039706184 9.043193219682003 0.8223234075884257 2.33009170862274 9.203655633389463 0.8423093028520157 2.312373472550233 1.597222222222471 0 4.58734122634699 6.319444444444533 0 7.7146551844577 5.347222222222637 0 1.700589880399051 5.208333333333748 0 1.700589880399046 5.36295593344675 0.1592600403166617 1.780463972924917 1.180624406085419 0 1.460054878794629 1.195541805183283 0.1279627178826019 1.629054658267844 9.787086517511671 0.5401632466839483 5.992342596114661 10 0.6336705109936716 6.040939718257519 9.844275487833032 0.6015134546076423 6.135469563532945 4.097222222222517 0 3.86565338986008 8.750006294549005 0 0.8587178103663395 8.680554431763259 0 0.9790123499053915 3.979700491264949 0.4888740811757242 6.052922301211533 7.913074364126826 0.8251399724782661 3.67965695893426 8.099346878608202 0.4990159691706894 4.091404818862346 6.467858645319588 0.1577759512654613 6.82709283175646 8.466188986798683 0.8711551182362576 9.879718693918843 8.327300097909788 0.8711551182362576 9.879718693918839 8.478061238916435 0.6982935167635641 9.85191335163961 8.484094474339921 0.8271383985273065 9.731632045558452 3.486366963955649 0.3138543159741544 4.736146676187168 3.569456359458871 0.2587943597191602 4.625592676786459 1.190043255353411 0.6186437468734067 0.1464623591688128 7.157467932795342 0.8458056464891206 6.434362448520487 7.018123951844961 0.8734512145926805 6.349145123028343 0.2832291004875889 0.8475728983645285 4.358878111638186 5.000000000000437 0.5003177109378087 1.179420204963165 9.551034236183401 0.4539377552825197 2.221568292868665 9.509060877053091 0.348222725136826 2.12337973129733 5.456349206349628 0.562536743092299 1.523031761898277 2.55652445825352 0.8755338977665642 0.9120567919813216 1.418232770020625 0.541679820097235 7.924975639662216 1.319444444444532 0.4650205761316871 7.794842721844864 3.472222222222541 0.4193069764982668 3.495882383674835 3.454067205983218 0.3272118900430676 3.309165012404664 6.89563089227578 0.40387431099587 4.201729789916646 2.916666666666734 0 8.075499102701034 3.680555555555705 0 6.51184212364584 3.541666666666818 0 6.511842123645832 3.704835939047942 0.1546035933302035 6.578011375088016 0 0.3856740290678915 9.096573763603569 5.794134793066016 0.1459961275202412 5.286038311675853 5.925592336517887 0.2696835395490088 5.361538869797889 1.36657021683019 0.1400510296619452 9.330630633178949 9.544763262569358 0.4515624481354268 6.948961229766536 5.347222222222654 0 1.219464656074367 5.156042940746982 0.8418472495643976 0.4793882489789726 7.083333333333623 0 3.745372083779094 3.904642111186457 0.5784896213490542 6.183406941721042 3.484171491249191 0.8403194661058363 2.626366023191673 3.452363752373048 0.8786774944165835 2.473836778493045 3.633374585880167 0.7342388474503005 5.751051162057709 5.277777777778212 0 1.099183349993194 6.080294820139342 0.8580006236123703 4.717008892721465 7.291666666667025 0 2.903402941210915 7.161429345051569 0.1475158804337099 2.828210388517682 7.272323048952433 0.1357407490985456 2.72628469560099 4.152575997110049 0.1506593356000139 6.953063225358425 8.333319238236292 0.4457292465489713 4.837935535341698 5.865832668793542 0.4023667473959904 2.962260209980753 5.349807806914621 0.8441808047470314 0.7594831454767812 5.409356519432621 0.8734346943885365 0.5573946057239734 7.653015221007745 0.5014012330559928 5.404842843961397 7.48512001935839 0.4923080800748491 5.5513835244713 7.542960351184947 0.3465899715670551 5.451201131021076 7.528638863329991 0.3192441702414271 5.629833799458641 7.638693733152789 0.4740554317303648 5.583475512398962 1.388888888888909 0 9.278312163512684 8.541666666667034 0.425998625320538 2.862620624284046 8.402777777778144 0.5478395061728407 2.903402941211001 8.425178431698289 0.4451296076815923 6.90785511361156 8.124999999999982 0 8.676905633107189 3.518705565223755 0.1443970137532793 6.27028903515923 4.293300653595086 0.8008654078915516 3.540186326346333 4.261395064116846 0.8595635822709085 3.676262756263911 6.149739264583785 0.8580006236123703 4.596727586640295 5.595238095238519 0.812536743092299 1.442844224510834 5.755917895092378 0.6891666886817072 1.517950094464316 5.716235355409841 0.8766299455894082 1.414851832109027 5.818881307189173 0.7145162452818863 1.348290834529385 1.45833333333366 0 3.143965553372916 3.819444444444558 0 7.474092572295215 3.958333333333435 0 7.474092572295213 3.863351795012908 0.1738711285370236 7.59036889087335 4.376201939190455 0.1878448249046303 7.026441226960049 4.375000000000123 0 6.992967347970545 4.52553044180797 0.1525685228221902 7.087556035888329 6.95342628094291 0.6670295198277112 5.519693800443334 6.774854852371485 0.6044927767354118 5.49678307547548 2.422792002635193 0 0.3378146152510127 2.558940814022758 0 0.3405801946938524 6.934266008502595 0.281372483922552 5.38520910351909 6.910609860295466 0.4372480050244818 5.337193483011093 2.847222222222376 0 6.511842123645797 2.916666666666811 0 6.632123429726975 4.583333333333531 0.1238765246349221 5.564358700307706 4.598150806761818 0.2781953210164079 5.493791855692439 9.707242028845748 0 4.785418719851151 7.102275284966311 0.8672561407788961 8.973039518763805 1.510947439756298 0.328860172311237 6.722027967301683 1.441502995311855 0.1702068706915728 6.762121735995406 1.293894079696987 0.3088178901455739 6.772542884661897 0.2544611882779846 0.8484726083901091 0.673284501016318 3.680555555555681 0 7.474092572295216 3.659868223926428 0.1747997848721759 7.35636862175734 10 0.5003768325616299 1.521868765031222 9.843778614487819 0.595748993201991 1.657346174546117 9.8514272201108 0.4206097152947529 1.674993554734201 9.472657788692654 0.6774861865340549 2.269379877248671 1.791626127471615 0.84967681610626 8.021913369242176 5.486111111111285 0 6.030716899321257 5.405441951491571 0.1512361568639934 6.008456202968226 0.6080079338542284 0 1.234479616988286 1.114103346091439 0 2.544286590638177 3.392705397204355 0.1481058602044239 1.089941053914071 3.48933331714876 0.1366368084118411 0.9257774703353929 3.159069348422709 0.6873070532806886 5.439704484103951 7.648324733187353 0.5665745965185977 0.9547210033857205 8.044110041910415 0.5306149280357983 0.737168707056407 7.98611111111145 0 3.384528165535653 8.05555555555588 0 3.504809471616831 7.885137975249807 0.1439421255574311 3.488124044726387 7.736279707340486 0.6918335472931955 5.927903452528525 4.236111111111265 0 6.271279511483512 2.097076728745473 0.2809283010684187 7.807407451696771 2.241325673829115 0.8477087577185864 9.021216242917315 7.650838157915484 0.8403194661058391 7.918743490763505 7.520967921569554 0.8788829484388072 7.766854788314086 6.388888888888933 0.5913466983803377 9.037749551350554 6.388888888888903 0.4831706725739572 9.21174735380637 6.111111111111129 0.4831706725739657 9.211747353806338 1.527777777778204 0.8771326379418669 1.727385834922507 6.666666666666814 0 5.910435593240163 0 0.7528781910656499 7.222412897693038 0 0.6230312432541264 7.153229574837754 4.607114353374655 0.4558422724318042 9.800579511583148 4.467737340853832 0.458840639557103 9.800579511583148 4.583599135208807 0.6021816289138611 9.845095451396686 5.991087848956222 0.6088850489269397 0.1545779001552287 7.967471191876085 0.5830611439665621 4.015265070576939 6.853895972731895 0.822586279886655 8.716493613054968 6.754079752074821 0.8777902904639748 8.851004777508681 6.550363500070029 0.6048617610070046 0.6920025577413593 6.689252388958923 0.5091149148517479 0.6413028282841806 7.291666666666707 0 6.992967347970762 7.430555555555598 0 6.992967347970765 7.380463145533955 0.1464609864924346 6.852574817779532 7.415260846492076 0.2896240151678057 5.460573733214173 7.583156048141433 0.2987171681489493 5.31403305270427 7.525315716314875 0.4444352766567434 5.414215446154493 0.1541452116912289 0.7273368926362274 3.122481345812398 0.2838103640453769 0.8476181987173992 3.138993470120077 5.028031563536125 0.5076908222466423 8.170643452324072 6.388961329721838 0.1782097967035744 0.3976174285357975 6.250072440832851 0.1782097967035744 0.3976174285357099 6.250000000000098 0 0.4293103689153143 6.25064648160717 0.1573928377676749 0.5210516048375621 6.111757592718183 0.1573928377676749 0.5210516048374745 6.250718922439923 0.3356026344712493 0.4893586644579577 3.590124168220181 0.3414305930662017 5.838774941620839 3.753214925225616 0.4382804053767735 5.796856076404902 4.098006597691242 0.5410650111727077 2.894297634751821 8.6669438618479 0.7995199621861262 7.797462293520728 5.679997184129668 0.1297330515791439 0.3636248401663084 5.552070360500641 0.2857048948872623 0.4309577691961387 5.760345911948034 0.3014444514245944 0.4215081855185595 5.984256800120707 0.4144734330708406 0.1634981873773627 0.6693683282310108 0 5.287225111923851 0.5442280703059321 0 5.216077795488313 0.5943441089062756 0.154324500512667 5.124837621088828 3.32165754584403 0.8758526887930351 8.719657822363288 0.4350878798384477 0.4012879755114864 8.301184922318765 0.5585551203437672 0.4020499663359298 8.392655837014765 7.916666666666673 0 8.556624327026007 8.125000000000371 0 2.903402941210977 8.702463244381558 0.3194867885634768 7.090741140569986 8.629046141011912 0.3229761267803613 7.29591633813045 5.433789386401662 0.4200985811682341 3.193945128914916 9.024271996264005 0.4683772721620395 3.098937406296348 3.761339699246187 0.6229893406170426 6.1581019094902 3.655163679480335 0.7304996286828855 6.004106593127929 8.263888888888967 0 6.511842123646137 8.333333333333425 0 6.391560817564971 7.845862123672671 0.1608571083916135 7.860406207629903 7.986111111111092 0 7.955217796620184 7.971787607834207 0.1273757472913667 7.802820633965879 5.982581885097295 0.6502728164167386 0.9704898793836272 5.973502949188493 0.4739640315705025 1.059995604291212 5.909071625019607 0.4820366890225466 0.8894727973235828 3.913090757005614 0.8118703884422573 5.868516728024044 3.357304952715912 0.692322223457459 7.004453614418555 5.687855136800266 0.1654011022155057 7.731863636297938 9.54775827652823 0.5748854402113012 6.418477905281269 8.188108422600727 0.1535311769689296 4.705021901939261 3.054049906968925 0.1271446981306033 9.672905590542214 1.912829258392467 0.721767354737733 0.4310757511840945 4.440957151754538 0.6257845321026062 9.869264186854402 6.205036367970502 0.3586059722055692 5.093907657219686 6.220238095238293 0.1874632569076999 5.205930800479002 6.250000000000201 0.1212729580352784 5.085320685604254 6.359126984127181 0.3087362149429784 5.102503729330138 0.9737481484014352 0 0.4290976562248535 0.9043704795622125 0 0.5257734121270308 8.575224433138262 0.5020297015233655 6.836339689197002 9.233629866140738 0.1706957406987198 8.25269213020691 7.007783132334285 0.1566612219903696 5.580424251778785 7.134043648074956 0.2793226343703302 5.653320794529694 8.194444444444425 0.1522545557206537 8.000095323369067 8.232865904675442 0.1909525066229354 7.839180937234802 8.110676496723096 0.1273757472913667 7.802820633965883 6.868859911175244 0.4233420152143134 2.071189398055858 6.593739054915877 0.45100679097021 1.914721112311387 6.663183499360312 0.416027367101897 2.11518995578001 4.383607126208524 0.8429600235155785 5.624983968811589 4.154411552229694 0.1991343166758213 1.856248654577029 4.127274298314768 0.1398710857115187 1.994211490308854 4.282680727568879 0.1327438357016222 1.89239330738522 4.243288359216569 0.272614921413141 2.065733611213906 4.270425613131495 0.3318781523774436 1.927770775482081 5.428704192023522 0.1462618218843247 7.186486322934119 8.302310349119882 0.1909525066229354 7.959462243315977 8.418720164035612 0.333347088278966 7.892253005338073 0.2198444019896662 0 8.891025697511559 0.1259158450590976 0.1301253765027281 9.029956202663858 0.3278454143829141 0.1421309489160388 9.032492647584748 1.319024877622668 0.7226681149741915 3.720105519655812 1.245785988687024 0.8822729062697163 3.667617506957409 1.126660105517284 0.8603369041947027 3.489647354232516 1.122446094203999 0.742609810464419 3.652455389573502 1.199898994452927 0.7007321128991778 3.542135366930919 5.694219460190105 0.8795988882339986 6.542723093566901 5.675206585941773 0.7325431631415271 6.634335222717517 9.430102878472514 0.7007303227456746 0.431123631874572 8.958333333333766 0 1.941152492561678 8.879311246356451 0.150690532876936 1.997677407022175 2.874210631685979 0.4098235277562505 7.65283146599336 0.1684172268845963 0.422631895778435 9.256774708534344 4.695514076686969 0.8235596707818933 8.029239237658011 4.827364224694431 0.8486589113217071 8.11752872105885 2.004747248122766 0.1297043775804362 2.355589988780624 1.935302803678315 0.1297043775804362 2.475871294861792 1.928127846068569 0.3385083506758836 2.399826221181754 1.271686289243519 0.650093626105126 4.137138379165877 1.193895078628635 0.8391423002104276 4.032157072544447 9.579053608429213 0.8112716077289128 4.234791316511089 9.617237680173737 0.8539541807306413 4.03043986394175 4.196718742759208 0.1398710857115187 2.11449279639003 4.236111111111517 0 1.941152492561344 5.234375000000218 0.4457304526748961 5.16368915131947 5.129387827646103 0.5384283014159065 5.263449853874251 5.131321660289754 0.3339864971902555 5.322829738093683 7.651397583300444 0.1234567901234572 2.851265982747178 2.465819224469949 0.5334647277928554 7.671407347888065 2.595486111111193 0.445730452674898 7.809877885105099 2.495251103887774 0.3353956067706608 7.777393509947758 2.725163671355393 0.8297931293084249 1.690872880211574 2.655719226910946 0.6711398276887623 1.730966648905294 4.236111111111334 0 5.068466450671806 3.785664643462885 0.733931320241516 1.078963353890973 0.7768145720672195 0.7035543430988289 9.45899285000163 0.8397828486242065 0.8419844574416879 9.415160064034776 0.2178064385606191 0 9.165094108371694 0.6777543208378438 0.8520393790933799 2.362686478948617 0.8285291443731874 0.6660324414193129 6.501213799896348 0.8996282546747475 0.8334952340219645 6.353808023664893 0.8488065325478142 0.8603369041947027 3.488792531228095 9.166567043787319 0 7.834991434241712 9.11598217484573 0.1645189385784152 0.9097119412991219 6.654251613189428 0.7118047965723618 7.079729043754238 0.5256727837019448 0.853411452773853 6.445945824312645 0.4551712557119794 0.7020712145072275 6.342886825502876 1.875000000000204 0 5.549591674996371 1.520893858412029 0.1365741920238815 0.3452582407614271 5.763888888889037 0 6.511842123645959 9.162671202425873 0.825419032442089 0.8604394024053531 8.33331547344388 0.5384277245321394 4.558235506191746 8.478250418331996 0.5691820204071645 4.59657033958735 1.526372520075015 0.8787897434078482 0.1051434812376058 1.665174276553524 0.8787897434078482 0.1092792372250432 1.519346603829256 0.8417593130462617 0.2701081738301533 1.658148360307765 0.8417593130462617 0.2742439298175908 1.522464357022272 0.7205490564541099 0.1649646925925476 2.708333333333591 0 4.587341226347043 1.587825353980593 0.3874457064871821 6.450514231373747 7.336931375455884 0.3275088594075511 6.701776342742212 4.413712580337871 0.511204791445768 7.844291297986056 4.531681940497351 0.6913109684784984 8.029327623495082 4.412236765987332 0.7197216631454948 7.911018292479596 1.388888888889067 0.8436204739941171 6.276084994857364 1.319480095489953 0.6873119367018317 6.244702637040726 1.319480095489952 0.8436914627077146 6.119615847585576 1.448530525061808 0.722307472615259 6.199822835768249 7.037402020052745 0.8461536821006996 7.655700822099629 6.913326872077823 0.8550620439320987 7.572031992650277 0.1573907238145803 0.6023476039237969 5.551921155818594 0.1688272497279585 0.4246524051137771 5.621445248001723 0.171328233990225 0.4145402728881892 5.453420142654949 7.368175966882802 0.8261560938721219 7.092917118828884 0.2829328186757948 0.7246592734104766 3.761792598413964 0.3732920449604004 0.611084286384031 3.829014151807577 0.3777413199141981 0.8486597617333745 6.007949492412684 0.3580954930304626 0.6372931667351899 6.047172205303092 0.5259262010288197 0.8492079387762791 5.976013501607952 0.5062803741450841 0.6378413437780944 6.01523621449836 0.4508653576478718 0.6978677005096536 6.150629660687315 0.326069249737421 0.5124844603784925 4.795414874162526 2.851848651332699 0.4591078576113278 8.79349703149887 2.67327722276127 0.3965711145190283 8.816407756466699 2.45789384123064 0.8766367700467236 5.721683879660012 2.230079192785095 0.1507646650342269 2.956827904921726 7.939491359177517 0.8237114182818597 4.233163327708968 7.958730115043173 0.6636939358826291 4.164083091999911 7.939488303152773 0.7008517968557473 4.380187077406301 2.291666666666846 0 6.030716899321078 8.631267988142783 0.5537463910152154 1.029044610871802 0 0.5140446972548782 5.428497277437208 7.107314119706599 0.1950762049626918 8.780621969052474 7.152777777777823 0 8.676905633107115 7.215985629075282 0.132281607642499 8.842772960941101 7.368175966882811 0.5761560938721219 7.012729581441436 7.471022554551327 0.5040631775326028 7.155344215764257 7.456972445750051 0.4726170803645565 6.952524588637655 7.311018701089509 0.3964609864924346 6.892668586473253 8.194444444444361 0.1582752621694223 9.646171239253356 8.193229113562218 0.1217020874455266 9.879718693918839 8.320856636432715 0.17526430534196 9.73435332696663 5.416666666666705 0 8.556624327025807 5.374448033018323 0.1663566955899362 8.661186803914964 5.389637010261259 0.2927218810224443 8.576743039571976 5.292966755020758 0.1263651854325082 8.472180562682812 3.779761904761974 0.5625367430923032 7.978128521587751 8.124999999999982 0 7.955217796620188 2.638888888889062 0 6.150998205402269 2.569444444444518 0 7.955217796619847 8.583901408645911 0.3612717602350284 7.006838987076717 2.620909003260063 0.8190366030963838 5.653301214674492 7.569444444444523 0 6.511842123646087 8.124996707096919 0 5.068468351830705 1.950176220231689 0.8335407335915246 4.22318806580995 0.5435770219841675 0 1.877246475551043 3.726047146810075 0.290385249825042 1.215030227830029 3.87559727576345 0.1496035182538023 1.251723093851942 3.937500899636856 0.2697376439169273 1.269705348359369 0.6859033603957622 0 2.784254771801626 9.442339804862183 0.8410685807542413 2.123604977749111 6.005052762260711 0.6161097709648757 1.341176143374271 7.182764991161354 0.5966207240308579 5.665138012018447 4.236111111111207 0.1586533016196643 7.393905034907778 2.936616043782346 0.5348637511930321 7.666646685614465 6.527777777777949 0.8791980842821234 5.563508780714422 6.507635760963888 0.7073197011220169 5.450338844751713 6.633354377843785 0.6941017500818558 5.577002157092136 3.913050226120711 0.1374642209051072 2.71688365229664 3.750000000000363 0 2.783121635129516 3.890900307155376 0.1261180566397201 2.863311049515088 2.533537841191194 0.4498986755936428 0.1940100568471901 2.445688439674116 0.5942324867243683 0.1767784892317013 2.380218206779983 0.4030506543886551 0.1581893186895821 5.972222222222453 0 0.4294883247656246 5.902777777778253 0 0.523862203142244 6.04166666666691 0 0.5236842472918461 5.972868703829525 0.1573928377676749 0.5212295606878724 5.192119382953123 0.8780025834037448 8.988294654040118 8.125000000000156 0.5404917730382872 5.526683710199626 8.066245681435152 0.4181349810389688 5.642725968902932 9.195653071621628 0.5149547304739842 8.254244630650938 4.615214298825313 0.4043187963814857 5.42907944995135 5.960541310541533 0.5932181017407911 4.899012164625818 4.513888888889013 0 6.99296734797055 6.845238095238274 0.6917348273744228 5.426044430907392 7.569444444444501 0 6.75240473580843 7.449907589978409 0.1464609864924346 6.732293511698364 7.007524658713676 0.357352595891997 0.3504281782861365 5.8817370695667 0.1881296115577477 3.985934695941379 5.902777777778057 0 3.865653389860211 6.022025446383607 0.1397792134966606 3.986837174232371 8.124995479047081 0 4.346781224358596 8.199050386603396 0.158076653241207 4.27575822136818 7.98611106829153 0.1217132410915047 4.264753750098109 2.064696847949906 0.1430631800977459 2.718398988525631 0.3403085561312053 0.3374950874716383 4.638666375035987 0.1512278839080977 0.405584197942773 4.588400297945901 0.1890806722231075 0.4376999517875145 4.782537971473532 0.1369885775143135 0.5805735708496272 4.74514879707244 0.2882164614224113 0.480368706533751 4.601277200634895 4.2383813099982 0.3085713257730793 3.587070737908773 3.216585545352725 0.1323830225095153 2.855622711865313 5.815606112689931 0.8676169774904845 8.380917726722751 3.28811561256174 0.1524408621503739 6.125024233197985 3.352602862132332 0.3349051504171881 6.255500271537784 3.449261120779318 0.1443970137532793 6.150007729078053 3.404043400007552 0.2968378759036532 6.124033756873737 4.356243625018498 0.8366739190268973 4.032842827914022 4.261395064116832 0.8595635822709085 3.916825368426257 6.550642498920256 0.4698604635837708 1.707233544268521 6.458333333333743 0.534979423868313 1.860964955173992 0.819602799182106 0.8321756275265845 2.784334893745232 6.944444444444549 0 6.391560817564869 7.013888888889005 0 6.271279511483703 7.114504577417589 0.1468963882948222 6.340279510148104 5.069444444444681 0.1547891870604093 4.914434354157569 5.208333333333576 0 4.827903838509538 5.194656923518018 0.1312977228979161 4.992332793093961 6.388888888888923 0.8413466983803364 9.198124626125429 6.111111111111145 0.841346698380341 9.198124626125388 1.182305064286489 0.1516757104884006 3.395300389227823 9.867992134528263 0.3719344438099339 1.105900929854338 9.68359353054694 0.4367764644575591 1.071991777141757 6.319444444444708 0 3.865653389860224 1.255311306490739 0.1472518441397952 9.595995828830402 1.297125772385738 0.1400510296619452 9.45091193926017 8.622983363228814 0.8271383985273065 9.731632045558451 6.458333333333393 0.8364197530864208 8.275967946169839 5.555555555555609 0 8.316061714863476 7.708333333333353 0 8.917468245269472 3.437320565907757 0.3148767092301511 4.938481487707818 6.1111111111111 0.5721549990142659 9.541111326604646 5.984471748097375 0.1717113998454505 0.378153371834976 5.845582859208718 0.1717113998454505 0.3783313276853739 5.985118229704447 0.3291042376131254 0.4698946077572238 5.265852370003089 0.821756843897275 9.735399868343146 1.127016226298927 0.1420931083991227 7.8951597109648 1.111111111111194 0 7.834936490538569 0.9400491275691216 0.1284792087955593 7.774486354896544 6.662342244712094 0.8508814731519047 9.596565606883159 6.640915778077552 0.8797686830720617 9.453554520746636 9.112299011917187 0.834086744583029 7.143869913674037 9.259389466243292 0.8488018258454614 7.080947188938196 3.455214790634384 0.847485880854659 5.268724833323779 8.608978284372116 0.8500697712203632 1.982477649347512 5.941405931250459 0.8580006236123703 4.717008892721454 5.919438576122547 0.7101216432584549 4.882499173649901 5.811365978205645 0.8521210196460847 4.873112813356858 5.740458872040828 0.8693957814603199 4.748526682988993 5.848531469957731 0.7273964050726901 4.757913043282036 1.805555555555975 0 1.820871186480036 1.661157901496618 0.1548007314019903 1.897878236813404 1.656516205344844 0.1312975886365508 1.750500618227886 5.369544623921266 0.6358522441340273 5.795434167350302 4.652777777778009 0 5.068466450671835 9.640932440618901 0.5283373065882367 9.221903312472294 9.408159548160274 0.5973089296858853 5.565926234534267 9.321040061603547 0.6154383224197169 5.447902082800327 5.901466504423465 0.5176161523546891 8.654482703635759 5.740905772909397 0.4447594842027857 8.774398718835005 5.910627698919113 0.3547713468535934 8.692025684415679 4.153044167875807 0.685368119749221 6.245521201616187 6.11241338292657 0.1450459398062476 1.001305330432102 6.080910948061753 0.2902740743861544 1.039401131651503 5.969475255583454 0.12935914748345 0.978833937061159 2.081980043878802 0.8773608037820939 0.1122266821599462 2.070337067271552 0.7233372943286723 0.1806127229450576 5.880810422650081 0.8521210196460847 4.993394119438039 6.010850375694895 0.8580006236123703 4.837290198802635 6.853895972731891 0.572586279886655 8.796681150442417 6.81122308480743 0.4049183344252272 8.800459088727457 4.066146879899307 0.8430890991106 5.061403790643494 4.60432066990341 0.1455878178189122 1.315171013214709 4.746986560057833 0.1589942584255836 1.273856121883506 4.722222222222648 0.1229568651879164 1.487381309045938 4.604320669903403 0.2685446830068286 1.462806360105136 2.50000000000016 0 6.391560817564603 3.888888888888906 0.3545975874585139 9.181959343993235 3.888888888888876 0.1407332347052415 9.180156970120489 3.402777777777823 0 8.43634302094457 3.333333333333384 0 8.316061714863393 3.263888888888935 0 8.436343020944566 3.33514782287683 0.2041417897347421 8.479362564037441 3.265703378432391 0.2041417897347421 8.359081257956262 3.40459226732128 0.2041417897347421 8.359081257956269 4.457896636044 0.3556969910273261 9.447361599656389 8.486527189699178 0.1303069094118925 4.635742235885026 8.485732498763157 0.2533810865209342 4.729328428529607 8.332512569292579 0.1230741771090416 4.801223778387397 1.660080493458671 0.5627519949755183 3.549730725345765 7.637528790339439 0.5891428916083861 6.376936765962089 7.728174603174702 0.4705320399764845 6.282734873967671 7.382079032680677 0.8788829484388072 7.526292176151729 7.191700146929106 0.1424362690299288 1.232254588303145 1.954646013368519 0.3103021146539924 7.785359758036563 2.042998792827163 0.1665850370872342 7.734349257032472 1.803545935365787 0.8797207866392434 0.1092792372250432 1.944438622427405 0.8797207866392434 0.1122266821599462 1.932795645820156 0.7256972771858218 0.1806127229450576 1.930107990293386 0.8459764905465784 0.2898919601701008 8.900044326183544 0.4731512327112977 4.214276098035032 0.5042643954792769 0.5147005050584437 1.198811331238905 0.6218212191324659 0.490570226982579 1.06982856489526 0.7323219225034665 0.5033157723226567 1.240083555806078 1.250000000000476 0 0.8586207378306302 1.180555555556025 0 0.9789020439117982 4.006116229677422 0.1300398762033937 5.271547763378015 4.646883468834728 0.800022583559165 8.593315014864558 8.178365211318344 0.5853411958186889 8.812793267936842 0.6818710579169185 0 2.451026096049286 0.6702748130642637 0.178922745385381 2.501134101389063 5.27707526946859 0.8441808047470314 0.8778660701783696 7.765867024983693 0.8267193311846792 9.731979865189496 6.619428870766885 0.8521633254049239 7.942396782105043 6.458333333333416 0.8787270419647223 7.818082255606583 1.593488714450527 0.6001796734958964 0.1649646925925476 1.528488450072641 0.4442917609794952 0.175351724704478 1.669343109533166 0.3949945524735162 0.1380771089897715 1.591292835859152 0.4783335050701432 0.3030418015823191 0.2662374716270265 0.1586447052818953 0.3564885709239589 0.1495585820989316 0.2843401496276067 0.3547735877740728 0.1166788895280949 0.1256954443457114 0.4161287305392463 0.2857985872386187 0.1667839171683347 0.560431449486126 0.1691196977105238 0.2924793615140461 0.5587164663362398 3.077719377096263 0.1747997848721756 7.069745077966878 3.19444444444456 0 7.113248654051674 3.084300148339209 0.1552799390082223 7.229007316908344 1.150770033487467 0.5689712774642426 3.111278251653652 6.720557061988547 0.5169731526801308 4.571562485795333 6.887053742903507 0.4412898419563694 4.692947267559404 2.882764721568086 0.4073021089322821 1.599881871446719 5.972222222222424 0.8432181017407911 5.099110911768042 6.508733578988485 0.4849095981506062 4.599812052945599 5.699954824878478 0.5187784839292987 7.563306172167442 2.912357627770837 0 0.438222993961091 2.98223483048742 0 0.5380690525175096 4.534136014377632 0.3043157434116475 8.473965444223923 4.487149981500644 0.1665370301854105 8.420905305566158 8.6805555555555 0 8.676905633107243 6.458333333333743 0 1.700589880399085 6.619755650521154 0.1424897119341572 1.64816372832579 3.018239973335095 0.1322786211190012 6.704935054618183 3.018239973335105 0.2499146688715276 6.556518500703476 7.582018788288632 0.7970373927216217 1.851325625095269 9.357719000098932 0.8587027444816586 4.229917560576907 3.601585799125238 0.1577759512654591 4.301185404051704 9.512254390885889 0.3281051711427068 5.465163117401936 9.836280415839303 0.5881504851371013 9.366847535021652 1.992978937947762 0.4082464177677305 3.768836618929427 7.87034765116245 0.3975910034021744 7.103492894900261 5.811628651520122 0.8168829838691105 2.04935318010199 5.632516527574767 0.8761652922351015 2.015587065578265 8.96191051448084 0.5145658993475024 1.807884893016869 8.88993805330243 0.3336865522872367 9.175768206174995 8.82316291059665 0.4294795638767119 9.007775645892703 8.900012837275385 0.2806436467479712 9.044811591547472 0.6749024572550848 0.1388846511626436 4.830861504703758 0.6302339710996439 0.154324500512667 5.024035257409661 0.8259636780852802 0.1248109575564658 5.016188929367145 5.811628651520127 0.5668829838691105 1.969165642714543 6.698025734482382 0.8422269878670351 2.480476651824603 6.889332962119658 0.8450382886551295 2.49666446197106 7.632243987690255 0.1623497096545151 3.581160573508289 7.739604185161955 0.3062918352119463 3.564475146617871 8.712246305373029 0.8559024428423483 0.6445752174379177 8.194433092153456 0.5926984779831679 4.427925482484508 8.074792302158926 0.5899825176007694 4.237604029765196 1.945431896906389 0.1279868019363992 0.1122266821599462 1.804539209844771 0.1279868019363992 0.1092792372250432 1.941750966900635 0 0.2215059193849894 2.014720867806421 0.1872599651322792 0.2895396123309696 1.873828180744803 0.1872599651322792 0.2865921673960665 1.877509110750557 0.3152467670686784 0.1773129301710233 8.338144743985163 0.8784807051158541 1.021774425094843 8.426606219489523 0.720572019750388 1.054337023466321 3.706250133489547 0.4750825194904184 5.243676296933456 3.825762968232169 0.5288162788796142 5.312677064243735 4.111265327282243 0.2744480444623432 9.831494495131558 5.512152777777805 0.4457304526749014 9.012690945916923 7.080135209038673 0.5379288406091524 1.077518642025108 8.696169724520313 0.510926452819873 6.714727386017875 1.519044211364364 0.332621326779394 8.462079354201077 1.427991848871306 0.1554475546567496 8.381510708701089 7.369282273915941 0.5098265875593373 8.632094241368462 7.774185475237932 0.8251399724782661 3.679656958934248 0 0.6200006512227325 5.898808275317839 3.934790632494663 0.8587356852106225 2.072047145166668 2.508664354930286 0.1260677698118368 3.175710172746815 2.499289163964299 0.3244024421995076 3.209840076038045 2.647553243819171 0.2482501974826923 3.273466352475351 2.638888888889215 0.1221824276708555 3.362003039182676 3.169117559395714 0.1778306079947642 1.462718470061707 3.091098054901416 0.1573021089322821 1.63997899474225 3.279367645629684 0.1228622610980502 1.533551710721106 3.14064685152603 0.8384315007590497 1.43748268955768 3.114606400958544 0.6426999455539293 1.452513796100841 3.031366852366598 0.8794793894795168 1.514089745829852 2.977569259447755 0.7179108902385665 1.371257151866171 9.089698921317376 0 4.59023790770407 8.955330398525888 0 4.589074971567025 3.472222222222209 0.8846348105862194 9.599062313062685 6.257981970547446 0.8459682467713473 8.019461255383575 6.257981970547453 0.7246952887360696 7.882325714370106 5.902777777778038 0 4.106216002022559 2.469209437221108 0.1396651540957629 7.762358346687611 8.936313415797168 0.4872374224117425 8.945120406964373 8.834342150152491 0.303285264608158 8.87289757613212 8.067908680519722 0.1747218509713409 9.733661447133207 4.36654040742177 0.5370466436876908 6.947782159014356 4.43478291267586 0.5992018187830606 7.114777123493473 4.26294761064557 0.6774273300379401 6.992071375584531 2.333540399340645 0.4749454986196179 7.698113950863111 3.450180931903423 0.8274378517186284 6.289710052616892 3.40814935184733 0.843253217452012 6.452959219709629 8.395379707173795 0.6903282962897566 4.625824384880344 8.540314652061909 0.7210825921647818 4.664159218275948 5.929725019569556 0.6080006236123703 4.757472757741576 9.214528718006729 0.5012509611198865 8.099290437354805 9.192474398114776 0.5590838507739235 5.401607116459084 8.513982395969803 0.8646167967713813 0.4912244303766822 7.92041822865928 0.8541620119300133 1.314873313532939 0.1401849005530279 0.1219240275832402 7.090414180405148 0.2648576310021143 0 6.945786857594646 0.3545751072524563 0.1482916258410441 7.074414683340523 4.930555555555605 0 8.19578040878228 6.217357764420182 0.476032270118872 2.523713019468107 6.004864457802763 0.4760322701188725 3.042530250791151 6.25000000000001 0.4685962734652586 9.268677941548621 3.269836489383785 0.8320141230902258 8.593284246972726 3.170054776425524 0.671851374939922 8.471205725843504 1.595734337616865 0.4823785143723973 8.413852260541464 1.435237530679359 0.5552047422497529 8.533752458510094 1.603808089268845 0.6449554262894104 8.452633344806983 5.625000000000423 0 1.460027268236719 8.551363695250718 0.8427410174102374 5.377705288075889 8.402777777777942 0.7904917730382872 5.4464961728122 8.363173974462725 0.8582028193033254 5.321308150216261 2.940236616393154 0.4271433318480924 2.98212931507051 2.775879251303972 0.496835789209748 3.0302609359173 0 0.4980086567668263 4.590877611480882 0.1369885775143135 0.5727931653578042 4.603754514169877 8.337939275492298 0.4080766532412069 4.115383146593294 8.474175111981712 0.4523420701215961 4.134011456181651 8.345289874938876 0.4478380523172602 4.260343537692367 1.872298245098267 0.8371905996125872 2.563807538127286 1.79780562360464 0.8614296166002227 2.392839054325451 1.728361179160189 0.8614296166002227 2.513120360406619 1.795103868702526 0.6986202162128099 2.534368875566835 10 0.6074228303368299 7.973661754104238 9.834398718768018 0.5505759540915519 7.933735563593962 3.669894315491517 0.1407817315712397 1.182788607927422 3.531005426602628 0.1407817315712397 1.182819824360782 6.694577551258295 0.8080536237866848 3.865653389860245 6.693749373363637 0.863101223282206 3.692469351349763 3.887943400866644 0.8553453899562051 7.560602896804456 2.002045493220652 0.4668949771930234 2.497119810022007 6.944848267925799 0.1219312194875562 0.7173026301381751 6.912902276629785 0.5058169355076876 7.393633074190131 2.61342041268894 0.5696924573616556 3.071815868138603 2.647198287704795 0.4091758214235431 3.064438677206024 2.809657126319825 0.3363191532716355 3.022883744984722 3.125000000000183 0 6.030716899321126 2.988493846041578 0.1625967204061997 6.129418154962192 3.149226723672855 0.1524408621503739 6.125024233197982 8.055555555555642 0 6.391560817564946 5.625000000000226 0 4.827903838509574 5.498626295195383 0.172850753642493 4.74049065622224 5.627333509010232 0.1309662234640949 4.673305772525863 3.020499444983487 0.3965711145190288 8.85650152516045 3.460486529908065 0.3555188971964355 5.778052686243726 3.460486529908064 0.1404983210647499 5.778052686243724 3.315233275429096 0.2643197348443628 5.701539617042926 3.680555555555926 0 2.662840329048342 3.843605781676273 0.1374642209051072 2.596602346215466 1.785196099993241 0.4553442149867454 7.697895298738325 1.519965080411579 0.6932728634856273 3.69069848218036 1.648473351600969 0.7281663928489687 3.597216504581878 1.136625781286573 0.5 1.193371687325696 0.9951322377578511 0.5923258720076678 1.44092697648995 1.006989056771903 0.5034851043993415 1.288053430288109 8.680555555555989 0 1.941152492561651 6.722425235722617 0.1380741993971249 2.399908187425892 5.922460545887224 0.1396529976604499 2.926314981844884 5.051497106481706 0.5177519290123453 5.085899421768739 4.089592589898258 0.526337964802079 8.217217640568769 4.157165605423713 0.5384283014159055 8.390763811984648 6.736111111111227 0 6.271279511483682 2.787001313220225 0.8494064492534397 0.7168292834390283 8.224285085573829 0.8582028193033254 5.321308150216259 7.986111111111099 0 8.195780408782518 6.456442736832563 0.8490964395061178 5.28636878275201 6.597222222222403 0.8791980842821234 5.443227474633257 7.500000000000377 0.8823765816281921 2.630700415199246 7.376085767858514 0.7325620706185616 2.551924652055222 7.583710415650208 0.7217600729619182 2.582370184189851 4.755258868479499 0.5694350240769473 3.119496112800449 5.588592201812691 0.569435024076945 5.525122234423941 6.219950611801677 0.4305649759230644 7.49338793013529 3.764588001705838 0.4178795758943405 3.663761919052228 8.218500526493628 0.8220239160348528 4.744530985947066 8.21850422001744 0.6647223940180207 4.625202064137845 8.333310953752409 0.8426984779831679 4.588308663933596 8.395376013649981 0.8476298183065887 4.745153306689565 0.3484340992944037 0 4.93383284197264 5.625000000000197 0 5.30902906283425 5.555555555555751 0 5.429310368915413 4.375000000000341 0 3.143965553373066 4.350440348737713 0.1349764998195604 2.969410957330481 4.235211445430234 0.1258557652902065 3.06266827052373 4.280096238612042 0.2608322651097669 3.008394980562322 6.541633982082688 0.5273113178912344 1.542758454884779 1.944444444444492 0 8.31606171486332 1.917256999844895 0.1459167738478483 8.411224742575389 6.860341977468146 0.5487276401997765 4.598099972542329 10 0.6042386661970738 7.837780285454357 5.625000000000211 0 5.068466450671912 8.333333333333695 0 3.023684247292166 5.908253638370805 0.8353411958186963 7.816570910579892 6.049648637214123 0.8459682467713473 7.899179949302383 8.101578499979123 0.4843856666526556 5.814494623974621 10 0.6372099091011102 6.319513045675142 9.8248854402113 0.5823766553935825 6.470465811306907 9.844275487833032 0.6017667030153137 6.274642001629203 0.3728625495148957 0.3764794458096605 3.665933739745967 0.2771463359365449 0.2771252873118752 3.73799776930307 0.7377549778344593 0.1550634505055732 5.2507812445496 0.3368452128042093 0 3.360606864147937 0.485235538901988 0.1544315851414393 3.481683586986442 0.3469709091136385 0.1331399227578763 3.540246500620095 8.386682274995756 0.8544374847600603 1.528416536390661 2.933497004688713 0.5797931293084249 1.891341723680206 8.500970252613701 0.872274357994702 5.505997153634086 8.474129955584326 0.5432903597150933 0.5514574880311711 8.608464018449645 0.4434201614637607 0.4866253468552535 8.434460994482738 0.3327108734896284 0.4615768599976362 1.94444444444457 0.5913466983803374 7.113248654051599 7.919519826304706 0.8260131120375378 3.754707181871028 4.513888888889121 0 5.068466450671825 0.4467308671725114 0.3172081971941684 9.523585127214826 0.2942085112513747 0.1670832432132716 9.453044558547273 0.4041049246546936 0.1501249539808968 9.628366785595976 0.2592454471125014 0.1397129976527625 9.647043630945758 0.3018713896303192 0.3067962408660341 9.542261972564608 9.61263517280425 0.5390881262242585 0.8190062208664948 9.478516475642929 0.6215293457359554 0.7534679662413808 6.88066752925188 0.1549183344252272 8.599990245258837 6.875000000000052 0 8.436343020944753 7.009462828826134 0.1312971465421623 8.528496957382806 4.097222222222479 0 4.587341226347116 9.684357006999754 0.1853036385323898 5.606757610402415 7.033641833201411 0.4244297226150534 7.481846905998786 4.377762354534612 0.7257450286596043 7.086579652617841 6.180555555555797 0 0.5236842472918671 6.319444444444785 0 0.5236842472919547 0 0.4982714374388993 2.646814186521125 1.302203702300714 0.3227471122194442 3.488937609585229 1.402951726082591 0.2649339394078868 3.570301877602496 2.179513371328944 0.4834105520566078 6.384809870366738 2.203895800567693 0.5499405225297334 6.554273859586697 0.5828459398714534 0.8239685791047336 8.575784982852369 3.002588881327108 0.6042272083353445 8.062910365528074 3.541666666666996 0.6394207911377365 3.336524755798183 6.388888888888892 0.5695904256603789 9.372122428581266 6.388888888888882 0.5721549990142669 9.541111326604669 6.5714713336331 0.6297686830720626 9.413460752052911 2.986111111111297 0 6.030716899321117 4.685497777389234 0.2845791428208553 9.845255323909857 6.80555555555598 0 1.339745962155591 1.626903891922868 0.8397506840396576 8.435411444628802 1.504376870497926 0.8793335013481308 8.489947309755522 1.603502984642963 0.7190841853877883 8.609297039521028 4.551958362337889 0.5564760895133017 4.283551340908685 7.248065315907057 0.463418412166026 6.091440891780261 7.116013071895559 0.5508654078915541 5.943453990987965 7.15767612814776 0.3249707950296318 6.036981682563076 7.790130902741963 0.3523852887063356 9.675427431577603 8.125000000000037 0 6.992967347970806 8.078680984495795 0.1475910034021743 6.90302405143166 8.009236540051342 0.1475910034021743 7.023305357512823 8.209792584703489 0.1429624929611587 7.084715371127984 8.163473569199247 0.2905534963633331 6.994772074588838 8.279237029147943 0.1429624929611587 6.964434065046822 2.083333333333575 0 4.707622532428182 2.152777777778016 0 4.827903838509355 2.225295378801007 0.1683247916965334 4.705848244650303 7.291666666666861 0.3718169790848785 5.120745746840631 7.227698082815376 0.4571581749035682 4.978736252024669 2.580101558623254 0.8587706148399054 7.123753100769113 2.515306755746948 0.8344321436243896 7.260578921330969 2.366843834159488 0.8731005009060228 7.191521454841472 2.446945392782627 0.7318711157459281 7.202025901558956 1.548361169979445 0.145569362126185 7.618409034189845 8.819444444444532 0 6.511842123646172 8.774298326254975 0.1745583989545821 6.494131067092463 9.479595168538182 0.5023676455532898 2.672389851546964 8.102408429247209 0.8100817540632912 0.9397720473435198 8.071965541132716 0.8537008718560268 0.7868944887919629 5.013344849469441 0.160857108391614 2.616612414448833 5.000000000000373 0 2.542559022967243 5.147377868334127 0.1475760981479934 2.467272600147439 2.304201769002699 0.8001608214202308 7.087629174773815 2.149087265253543 0.8798572229135914 7.072586567108871 4.561955914912049 0.4823374967971916 1.829890916702174 4.595300678673679 0.5916939042537431 1.997689597409189 7.46010051370205 0.8699838310741765 1.882834718454415 1.937670010155439 0.7124793376804044 2.759022686386987 5.018154845752029 0.2690976672859633 0.8792676411366871 6.72242523572262 0.3880741993971249 2.239533112650981 5.447737470938976 0.431696689353712 1.922195952010445 5.83333333333333 0.572003645007462 9.541347264151376 7.569444444444848 0 2.181715104723877 5.072084602440796 0.4279070836604858 7.433998803601535 2.959472536224506 0.3157252977578384 9.507829365915878 4.427186011234378 0.8528472658299207 3.503779754649543 8.194428351867478 0.8771403785738876 4.614091196620674 6.111111111111313 0.8432181017407911 5.099110911768049 6.103934881354165 0.8760786770727598 5.263231664176338 5.566425701450025 0.7227117268525849 5.601909244132186 6.164534360895026 0.2772882731474213 7.550978187416467 1.748366013072078 0.800865407891553 5.995340044591298 1.799479301672296 0.8563901317667157 6.176325941856945 1.868923746116745 0.8563901317667157 6.056044635775775 1.811734203633082 0.6572555396582687 6.140949087127186 8.125000000000398 0 2.422277716886292 8.263888888889285 0 2.422277716886304 8.227115955891513 0.1555867935794694 2.550985195020176 0.9033247756869309 0 8.195464599392 0.8366718949084166 0.1610045349925322 8.243588643128977 0.9044074349437422 0.1503246415572267 8.034498507780386 3.959568225507573 0.4533187150591872 2.973585862201013 4.095546030449105 0.4530564237096736 3.052661777128472 5.61236273875317 0.4825007023122923 3.223425124106729 5.28626675722301 0.3111563450615743 2.54746013753489 5.286266757223016 0.1475760981479934 2.467272600147441 5.416666666667032 0.1635802469135809 2.622746560354704 5.28429322474989 0.2870370370370383 2.723841687417742 5.284293224749895 0.1234567901234574 2.643654150030293 5.153893315305874 0.2710328882714508 2.568367727210479 2.58197954678048 0.5501608214202308 7.007441637386389 8.103586541560084 0.3282101971605983 2.320168961101554 5.891101478071903 0.4818799855274861 2.74783474082526 9.520058240221802 0 6.517793408785737 0.9827207683125438 0.1468375818821545 6.317398654914667 1.111111111111308 0 6.391560817564514 1.00218107327523 0.1370315193125302 6.509258919886743 1.510655058043262 0.5799014188317669 7.042946923512192 4.652777777777807 0.1593158993741491 8.783683010252343 4.652777777777805 0 8.917468245269276 4.515296384464208 0.1247865754787495 8.794408193015656 0.9855596615473516 0.4457342450209446 8.949861639778202 0.8542393033970492 0.4353127027849196 9.138551025392751 0.7861152171029193 0.4295819816464588 8.984823406079123 4.481255672557552 0.4665596137445755 8.577877299486079 2.291666666666766 0 7.474092572295141 8.931408817720611 0.8647165221498314 0.4931616974292151 8.930138566108059 0.7198187412697606 0.423122947564806 1.666666666666687 0 9.278312163512679 5.933610814898644 0.1600118626508077 8.67472013607512 5.810937011067031 0.1208525329136397 8.729929924490051 5.911214492632297 0.2808643955644475 8.848025733539332 7.457504625425171 0.6105022584635789 6.22608002659878 7.381223536103366 0.5230552627380507 6.093410546534994 4.588757023968119 0.5905010268308168 4.413429292489806 4.664279050451437 0.681889814446049 4.601597209853185 1.204833310360526 0.2981618060483525 3.994199583486267 1.232454700227808 0.4755811234864527 4.090082202021762 1.081623527146031 0.4565682205403397 4.132473492557136 1.176288070116852 0.2538647436059372 4.144176245431121 3.866435782990966 0.8289910816670212 3.827045759284067 3.709984036719166 0.6818615306850287 3.846886242315559 3.925608573989053 0.7058932397126436 3.781021648708068 3.392712187748882 0.3981058602044239 1.25027955086151 3.475968475017079 0.4702617907062787 1.192016650871206 3.451488601584304 0.2888875917756636 1.173490308635093 3.043967971952581 0.1228541511845539 1.506814486044795 1.455193989052916 0.7063414013350041 9.448595414487981 6.862291951208165 0.1492898032521447 3.462485990233998 6.666666666666984 0.158653301619663 3.424621934229273 6.773372791731713 0.1418531991111963 3.585450265971085 7.222222222222436 0.3373789822218997 4.755951975878692 7.11184062265295 0.4480534953647398 4.640190161149977 2.655862642634742 0.2852435912353799 3.136277065273593 2.647198287704787 0.1591758214235431 3.224813751980919 3.675150429286871 0.7139524707862559 9.836867549917638 7.185500975011412 0.8424796044259748 8.738200423763001 7.094952503298823 0.6650658843126298 8.657507097629697 6.992784861620782 0.822586279886655 8.716493613054975 7.094366157630928 0.8770431156106588 8.63044206033528 4.444444574846608 0.1575203387901702 1.702898027422987 4.559601215131936 0.3349341687672957 1.740968412785723 4.559601084730182 0.1774138299771255 1.858941571842921 4.583333333333748 0.1229568651879164 1.727943921208275 4.583333463735501 0.2804772039780866 1.609970762151077 1.386533597125145 0.5386966789568073 6.305135450127207 1.527777777777949 0.5936204739941171 6.436460069632263 0.9027777777778115 0 8.917468245269124 2.569444444444815 0.8364197530864199 2.582652791660836 0.4483429025572268 0.4084296713034801 0.4181928201249662 8.747867173261005 0.8500697712203632 1.982477649347523 8.732235627399907 0.8782896986297241 2.131365070727386 2.34444735116654 0.1569576360415673 0.7998002719517542 5.256075362907406 0.3025464718242617 6.03746351597775 7.737440629003261 0.4768197793271329 6.350091447531275 4.474206349206691 0.4374632569077013 3.121054828405231 4.350440348737708 0.3849764998195604 3.049598494717929 4.382117762691369 0.477262440675175 2.907512383416408 7.986111111111272 0 5.549591674996743 8.087070230850028 0.1650199798289647 5.517515298314565 8.002741219641042 0.1263976220184329 5.701515052247768 4.507994579945844 0.550022583559165 8.432939940089646 4.674730987796902 0.4854113119715052 8.382657357098912 5.135221515251589 0.5467997216439815 6.25953162047902 9.201567238073967 0.8462343873563604 1.39929723056165 5.694444444444609 0 6.150998205402443 7.067580111036112 0.1715103786509457 5.301344030459317 4.444594447135483 0.1220958652159339 0.1202813060811716 4.444453108981087 0 0.2380828975207924 4.583492000561018 0.1220958652159339 0.1178015914396208 4.449533879037181 0.2704406071184178 0.1816159022639371 4.449392540882785 0.1483447419024839 0.299417493703558 3.310993424302179 0.5449909993578873 2.902602018997827 7.853798394642395 0.5257514712477498 7.905166950524834 6.563619413966916 0.4663893603749507 5.773348746168018 6.454668765429693 0.4955668708963396 5.927882375222048 3.650502625946265 0.431047909221919 1.492945492847507 2.940236616393162 0.1771433318480924 2.821754240295614 2.940236616393169 0.3347709986685309 2.704450086741367 3.055555555555921 0.1576276668204385 2.665817481575234 2.916670242191144 0.1230051714046812 2.69048938462646 3.611111111111129 0 8.797186939188109 3.474945423332235 0.1527373506164627 8.875802235681636 3.460618871906127 0.1343924907420475 8.724212397236139 2.050003541539908 0.4438930656110911 6.419555486494355 1.942045762452368 0.2985876874710955 6.307362471423194 1.85999662986126 0.3889799779236054 6.430582108811707 6.560916158746706 0.4664565000302749 6.711789450036601 6.705310592272238 0.4637596159089291 6.650990620116315 1.404896046217283 0.4606522969065026 8.398732608879273 7.898354309227431 0.4906754521329312 3.662657980790762 4.71856439912815 0.5183108396041136 8.228374084329932 3.263209297442301 0.6026594853365304 6.890529312165784 3.402980949670382 0.6237126773840214 6.773399442982246 4.166666666666723 0.1547891870604084 7.921467006186785 4.351532567049865 0.1592344259968783 7.888579187963458 4.188534086062544 0.1209504778896641 7.767374113625951 4.234511097556798 0.2801849038865423 7.821016811050659 7.357574065795502 0.854330958499621 1.261842344799402 9.202664476806964 0.476881549559494 1.846111410941866 9.360273300614622 0.491499475746521 1.952820622962847 7.460100513702056 0.8699838310741765 2.123397330616783 2.983762473253253 0 0.7506699229163607 7.213167358902597 0.6554223145463514 6.010214042413834 3.203347767386828 0.4347478990317376 7.297739491811878 3.036302056943211 0.4906729160986143 7.275249851926419 3.001757962637155 0.8384315007590497 1.196916722793534 3.120712337258223 0.7157192956227951 1.124474384895942 4.594974886252403 0.1525685228221902 7.2078373419695 4.464313767599899 0.2766118433671698 7.13063243594282 0 0.6372099091011102 6.319513045675142 9.451020206021663 0.5801158293603519 0.1512055742935128 9.37033219262495 0.4043561565951127 0.1596526171267828 6.916737326476701 0.3371890772271625 7.37053465713821 4.577439024390271 0.800022583559165 8.713596320945765 3.876284583443423 0.8403923321417144 1.663436921462754 7.911573872622654 0.591435129226454 7.331359453594061 6.042985515661134 0.5475952748776423 1.220226093896105 8.491258061955492 0.5920913146345339 1.064087820061368 7.291666666666971 0 3.625090777697938 0.1241235785979689 0.1220403300572577 5.975396144055424 0.2929508283259274 0.165902052459573 5.828608372481741 0.1688272497279585 0.2879423825168307 5.825134445266448 0.1554406897715304 0.2787510890190903 6.040634743893396 0.2795642683694992 0.1567107589618326 6.044108671108689 1.5039514755587 0.517744155261759 1.827897404085369 1.527991572217354 0.4456710653306899 1.630518360892575 1.389486365433331 0.5391984754792619 1.667051491823677 1.528161459883082 0.5935274101485721 1.536654167861339 4.4421099697642 0.5046735392269673 4.99974114833312 6.121941875879291 0.2898970681432269 0.4389006507554144 6.12129539427222 0.132504230375552 0.3471594148331666 4.262152777777824 0.4457304526748962 8.291003109429861 7.883479693619149 0.8622999390249573 2.50086382093985 7.924347518677775 0.8787879577460123 2.632986238968832 4.556625187798076 0.5735596707818933 8.109426775045456 8.541667715758587 0 0.9789182226681379 8.45176641791115 0.1556773146987181 0.9153148697451209 1.111494898136156 0.5913637391341903 2.798557069577803 9.220937696925652 0.52045114480914 6.429260066424637 8.81944444444488 0 1.941152492561662 2.916666666667137 0 0.8636928957442157 2.847222222222686 0 0.9832496078377424 2.799830566018367 0.1724203480714223 0.8364725407127758 7.814035249174715 0.8622999390249573 2.380582514858665 7.675146360285817 0.7446765206531494 2.468723907090492 7.408283827279929 0.37087560587485 5.296170474518997 7.032830840521871 0.8672561407788961 8.85275821268263 7.134998482199912 0.7097357452048709 8.793771697257352 6.942282368809282 0.6898424206655511 8.772064886549327 4.421569616457767 0.1327438357016222 1.892393307385228 4.421569746859522 0.2902641744917925 1.77442014832803 8.472203026870066 0 5.188758839195147 2.960070660544058 0.5542684447948795 1.555249266768991 7.812101228265206 0.4690820980356972 3.542690225962652 7.660605228324373 0.5751399724782661 3.482930200543701 7.795171022356862 0.5064788365239543 3.397155453097246 9.163729205961365 0.8757391060039161 9.881282804127125 9.142076333362507 0.7058674961837432 9.829640904837575 3.768098199662789 0.4089810422075308 2.047094897436974 3.603167644107229 0.3547114948824275 2.142317598084559 3.718317291350641 0.4696313243567165 2.24137449393151 7.708333333333737 0 2.181715104723887 0.4736810127395735 0 2.346979187490472 0.559793330979485 0 2.414893875472884 3.104047784065999 0.857358246403778 6.096822753290592 3.058900450337048 0.8755357710735929 6.306093535794334 0.1207762281748276 0.1299259320307377 2.081502266108935 0.1754599883414416 0.2951095460821069 2.115984101548229 0.2962362165162691 0.1651836140513692 2.114260858708404 0.2992779121093184 0.1575417811847722 1.945103729517248 0.1785016839344908 0.2874677132155099 1.946826972357073 4.379480318745399 0.2978937521325485 7.79718855683983 5.347222222222262 0 8.676905633106971 5.20952703574659 0.1608755968512061 8.581921120179311 0.1166788895280949 0.1263935190958826 0.5570594327550731 0 0.252088963441594 0.5553444496051871 0.1691196977105238 0.2931774362642172 0.6996471685520668 4.658855359816913 0.8413887876152323 4.735415375016803 4.820154413511292 0.8527050368133033 4.695513546259376 7.841708307018694 0.8546321366156234 5.827417795694344 7.525308641975654 0.3985750040772056 3.221207227182008 4.583333333333371 0 8.556624327025787 4.560874921765915 0.1377787132262369 8.489403159602382 4.445851940019766 0.1247865754787495 8.674126886934493 4.562282417341205 0.2625652887049864 8.60690571951109 4.584740828908661 0.1247865754787495 8.674126886934493 8.402777777777757 0 7.955217796620198 8.371754793564332 0.1909525066229354 7.839180937234808 8.519187592693488 0.1423945816560306 7.888008558642296 6.388888888888955 0.5625367430923065 8.843008389123909 4.72222222222257 0 3.023684247291916 4.791666666667021 0 2.903402941210748 3.566317877495965 0.8396627381209286 7.066797881529565 1.897459367013493 0.5008799248291667 2.345621616198132 2.034381572745624 0.4217803293141553 2.354978961772891 8.722790087678849 0.4156616476580746 6.876723052455304 1.310990223092818 0 0.3128073126048806 3.629710667263836 0.8694030573889009 6.489197895097162 10 0.500806073778281 5.968549772218093 3.077696656463835 0.1323830225095153 2.855622711865306 2.962377717301082 0.3095263543576077 2.894255317031438 3.077696656463841 0.2900106893299538 2.738318558311058 3.680555555555898 0 3.143965553373024 3.680555555555717 0 6.271279511483495 3.750000000000166 0 6.150998205402325 3.588150009668205 0.1443970137532793 6.150007729078061 3.61111111111143 0 3.504809471616535 3.680555555555874 0.1693069764982668 3.455788614981116 3.541666666666987 0.1693069764982668 3.455788614981111 3.625699112816953 0.3371865523926073 3.574647293723077 3.695143557261396 0.1678795758943405 3.623668150358499 1.187175207558324 0.6625162626650459 3.677616344925837 1.102292420446767 0.5594038206597912 3.517984003312142 0.9905964241396557 0.6824579581552734 3.609966214843527 6.689120535284627 0.6479513341755339 0.5440737995791578 6.042985515661141 0.7975952748776421 1.059851019121203 4.791666666667036 0 2.662840329048404 7.847222222222211 0 7.955217796620179 0.4175686264415035 0.1331399227578763 3.666060024891426 4.861111111111141 0 9.037749551350451 5.069444444444487 0 8.676905633106966 9.027829033645137 0 0.4290372317892678 8.888137090877322 0.1779170276165863 0.3981999766101244 9.024724456749478 0.1572634314541049 0.5177017528124916 3.58644534320757 0.2784849921938115 7.118353122329943 4.236111111111569 0 0.978904882733673 1.526140808038195 0.1577345806665529 0.8615023461677201 1.53210446038358 0.2811033722275676 1.001376862863112 7.772263862574262 0.8546321366156234 5.707136489613168 7.923598686112861 0.8636934153886728 5.56644161135763 7.937149545477066 0.7411602189984101 5.4091093634265 7.791328637142144 0.8774668036097373 5.512540733146764 7.785814721938467 0.7320989402253607 5.549804241682038 7.576654238861318 0.285048644288643 2.581897802864079 7.576654238861321 0.1214683973750618 2.50171026547663 3.472222222222551 0.1693069764982668 3.335507308899936 3.472222222222558 0 3.264246859454184 3.315178317094338 0.1579049135448009 3.237904562958907 3.454067205983226 0.1579049135448009 3.237904562958913 0.4437097898825274 0.8168205991023719 0.3795924807819022 0.1510404160214245 0.4026106614651932 8.326466157344559 0.1510404160214245 0.3946622270402437 8.186350530108481 0 0.4946969374824639 8.183033273526705 0.1639031727676435 0.5913662225988423 8.215031394577744 0.314943588789068 0.4913315121566221 8.21834865115952 2.351805558405584 0 0.4396252459778884 2.286384545662623 0 0.5446644550758297 2.241583514957481 0.1513980192992155 0.3756172946752031 9.031226251104288 0.4868133637939359 4.128304905686452 9.074160669579776 0.5661024998142811 4.287462113428317 9.190463343125522 0.5887782497676457 4.147019524156473 9.147528924650032 0.5094891137473005 3.987862316414609 9.306895989166783 0.1504308949922797 1.759230409193164 9.208004976917335 0.1580155421438991 1.630190389585587 9.243058613654878 0.2947436361255829 1.580983163861283 9.333141990345318 0.1367280939816838 1.535412539648816 1.05721566107285 0.8603369041947027 3.36936604815133 1.096598029826414 0.6793081816589454 3.376681480238291 0.4583919386215115 0.5386334050018153 6.11936810022301 0.5465795177886636 0.4322109424822622 6.032868873000127 3.191000618152211 0.1482584616481921 6.485388067345385 3.324932312167253 0.3307227499150063 6.495582799604012 3.125000000000162 0.1176360477525264 6.363425569731106 3.258931694015204 0.3001003360193406 6.373620301989734 3.121556173707768 0.2658945094007185 6.457252819511847 9.365253244853154 0 1.701236684576119 0 0.3656084370609287 5.899170273059272 2.349304528972227 0.4363312613962728 0.9509825250113868 2.357910005373624 0.4131368675373475 1.10628466034881 2.550557465401484 0.3735365848911515 1.000839465491057 6.52777777777818 0 1.820871186480263 3.680555555555852 0 3.865653389860054 2.352633764853831 0.5141289104290845 6.18036459426477 6.25000000000022 0.5215902275252735 4.235096098261097 0.6957295847383125 0.8704514928853917 0.1145450947053765 0.8337810098234077 0.8704514928853917 0.1175468903934132 0.8144292737970316 0.8424046594864318 0.2918398263869507 0.8157513216569623 0.7128561523718235 0.1772947316815742 6.48720404900657 0.5986977348419078 9.856973916857051 6.552324071496432 0.5698605140749839 9.694102135902568 5.069444444444754 0 3.625090777697797 5.208333333333645 0 3.625090777697808 7.15277777777777 0.1507201646090544 9.719343619143935 3.836398079324678 0.5333738004437125 6.027617268980691 7.993043130557312 0.8636934153886728 5.446160305276468 7.860773081586593 0.8774668036097373 5.392259427065602 1.111111111111128 0 9.278312163512668 7.992712228923722 0.7250436685341359 2.332028257638827 8.263888888888868 0 7.955217796620193 4.180748984676043 0.3942420524969447 9.51074434558176 5.126990872275032 0.8751543841386175 8.136041315023057 6.73611111111143 0 3.384528165535555 3.040403794875673 0.3070784059911769 6.901994090695736 3.157128862223979 0.3822786211190012 6.785122592005637 2.997861144769967 0.4604538245392655 6.754622027752287 7.01676564799401 0.5176624848493467 8.699928642919168 7.176758564151044 0.4450762049626917 8.580153125583863 4.326789040839991 0.5134822303893135 6.782639746934811 4.236416004534904 0.7040905174202949 6.696436009703467 4.276167371116685 0.7276549307186724 6.861578421783012 4.21758639763127 0.5662979368402421 6.853430062637033 2.338185240830324 0.5161842446235592 6.342563287733917 0.7778546364225043 0 5.786898420126473 4.750237731925615 0.677086881344136 2.013188300805505 4.728920508798199 0.128838946727506 4.541210309481809 9.733170580362582 0.8440989669606438 3.516768224658164 1.250000000000183 0.5936204739941171 6.436460069632242 4.595300678673683 0.7190050995107919 1.931913247422857 5.378709155744149 0.3307704189676053 1.908430311381105 4.452039848844024 0.5907399596833383 3.197841838113482 8.468478488704772 0.1219970930431309 9.879718693918843 8.456001791804216 0.2972613983850909 9.854634633047791 0.1684172268845963 0.2930398307439189 9.466879751984603 3.541666666667004 0.7978395061728389 3.224153090760464 6.041666666666748 0 7.955217796620016 5.902777777777854 0 7.95521779662 5.972222222222294 0.2021604938271674 7.91512402792628 8.333333333333687 0.7978395061728407 3.184059322067064 7.291666666666879 0 4.827903838509654 7.43055555555577 0 4.827903838509666 7.361111111111334 0 4.707622532428488 7.291666666666883 0.2021604938271603 4.747716301122207 7.430555555555774 0.2021604938271603 4.747716301122219 7.361111111111319 0.2021604938271603 4.867997607203385 8.2638888888888 0 9.158030857431857 8.194444444444386 0 9.037749551350682 8.124999999999931 0 9.158030857431839 8.124999999999947 0.2021604938271478 9.077843320044394 8.263888888888818 0.2021604938271478 9.077843320044412 5.781464437560118 0.6887185775324893 7.648013446449381 5.703121740721048 0.7094803928675451 7.774628792132436 1.265593537376035 0.5126310451479016 6.703308034112746 1.16937272759868 0.3810441060346667 6.758861144539337 1.079738052128935 0.5532614097994226 6.810611748550509 1.10404939311716 0.479455693768859 6.691007830166454 1.391795834869392 0.441037708897162 0.175351724704478 8.216252962413396 0.5402374304354753 2.225584707810788 3.246881457301044 0.847485880854659 5.389006139404939 4.583333463735505 0.4075203387901702 1.542522952648098 3.252969496699069 0.5073106671298031 1.231392939631331 3.308013238829144 0.4278306079947642 1.382534610068345 7.93948934991494 0.5737114182818597 4.313350285079356 8.080106113479969 0.4090334515699199 4.240672011941792 8.18874484795483 0.8762421371846979 3.185133244230073 8.084578181288165 0.7190919314233807 3.245273897270648 9.010162455251976 0.4347036173487201 5.982024070565819 8.090888374099674 0.8162506856136869 5.921829173537054 7.706973234783781 0.1608571083916135 7.860406207629904 7.708333333333324 0 7.71465518445783 7.638888888888882 0.1507201646090564 7.674561415764101 5.109812014276464 0.5008738211651179 6.08128070460918 3.333333333333663 0.1206657101241372 3.371460353848645 3.31517831709433 0.278570623668938 3.345118057353373 3.472222222222543 0.289972686622404 3.442720803294402 3.496203008595585 0.5549237950373066 6.695745996978637 3.51715686274523 0.4491345921084481 6.860893756979424 3.586804479082145 0.5728472694924694 6.841794695459777 3.5658506249325 0.6786364724213279 6.67664693545899 9.088333333333464 0.8525720164609054 5.624647209991408 9.234903082949355 0.871127348154037 5.707425003502925 9.621723314288367 0 8.131977814969186 9.714117412686852 0.1865273752834793 8.078754854857248 9.72660453205571 0.1438562215791563 8.281549563148754 2.123015873016215 0.1874632569077024 2.920585984936491 2.152777777778122 0 2.90340294121061 0.6048369025335379 0 2.51975693822636 7.591645004128102 0.1208887852437721 7.16615992185517 7.555602702907736 0.2987958689042529 7.22858701879054 7.674561754956972 0.3019366581588913 7.083578234533329 3.448681836059048 0.8243633655462129 1.707639353509276 3.582037462995608 0.8343313910922748 1.597100187365837 6.624917984755848 0.6838518241122566 4.07147192032973 6.666451544608915 0.8757982003255719 4.071471920329728 3.819444444444614 0 6.030716899321158 3.82505838007866 0.1603844598266699 5.940326027505371 3.657594454112653 0.1443970137532793 6.029726422996894 1.388888888889095 0 5.429310368915182 0.1185614297481762 0.1220403300572577 5.833737318062992 0.1185614297481762 0.1267193059305197 5.69623529969655 0 0.2487596359877774 5.834420198473689 0.1688272497279585 0.2926213583900926 5.687632426900006 0.2873886794761347 0.165902052459573 5.686949546489309 5.486111111111417 0.5349794238683118 3.544903240310377 7.569444444444799 0.1485750040772056 3.057090067329036 7.569444444444807 0 2.903402941210934 7.720842027744885 0.1234567901234572 2.971547288828355 3.750000000000278 0 4.226497308103582 2.906087127745367 0.8519816604439844 6.06933328283627 2.339871131490072 0.3982547129929949 1.913058204881779 2.500000000000416 0.4135802469135801 1.820871186480076 2.500000000000403 0.3700943398880384 2.030845129431525 9.166627860720485 0 0.2366314028516486 9.167329890044355 0.1206759203614796 0.1163500967704763 9.308067527282139 0.1559687851679989 0.2760027138972591 7.222222222222419 0.1218169790848786 5.080651978146902 7.338839382835493 0.2426925849597285 5.147980927219001 6.666666666666744 0.1213395322119129 7.216260609717706 8.1863553164237 0.5232227991322902 5.289231773534063 7.429163252674154 0.8756083724777567 4.500948714280309 9.39099990732729 0 6.761215439376235 3.890051037252654 0.8531536733679348 4.080212564893749 3.680555555555845 0.8814676548820863 4.026028464634956 9.565279229637564 0.2134421093146106 3.511042742847813 9.643415173751702 0 3.498332140091104 9.612481626207533 0.1598200889757627 3.661524520290484 7.140070367805933 0.2455215247808826 4.002818772026333 7.00328561237856 0.2867795970727586 4.010420117221534 8.680537789110877 0 6.752414886258249 8.653335268428158 0.1656616476580746 6.856316132883677 1.666666666666808 0.8364197530864219 6.952873579276687 5.277777777778118 0.1635802469135801 3.103871784679393 1.805555555555828 0.1635802469135799 4.146309770716043 5.833333333333731 0.1635802469135801 2.141621336030028 1.944444444444703 0.1635802469135794 4.38687238287839 1.527777777777808 0.1635802469135788 8.957562013962882 2.43114362136673 0.7980573083250115 3.703580715314076 2.013888888888993 0 7.474092572295123 8.045222743666365 0.4581638820704662 5.975651646901114 7.968629593740575 0.4426483076321197 5.833189938625727 8.026520033652169 0.2683108184752122 5.875618831693004 8.082875789964929 0.2945326030574016 5.71446180876651 0.1255277257845261 0.4433855643854212 6.387530780263889 0.2948961493212071 0.5165259256664586 6.495465907196962 0.2768679640511513 0.5345541109365144 6.284300560334767 1.489609882289496 0.4395601581757863 4.811301497454409 9.876162994876562 0.6574599333312919 8.034323899642434 1.250000000000026 0.1635802469135819 8.957562013962864 1.925467246451341 0.2637164002921364 6.465436513219142 0.4249974106613585 0.8370816128072078 9.102718276868451 3.76700165553112 0.8640674184325468 1.223327535267575 8.022285912464934 0.1367766455919562 2.732252565705138 7.895905717987226 0.2602334357154135 2.800396913322538 5.773909862864892 0.5497080728819409 3.367171329468277 6.448312359358045 0.5497080728819453 2.199071940790995 4.423924446639635 0.4376675025216883 1.863342652244482 7.056811626895099 0.5623323457415879 8.836193242546823 3.796991338546517 0.8289910816670212 3.947327065365237 9.147210160828816 0.8717562683224576 1.266771759393709 6.397452482125665 0.4092262874268449 4.72119683470966 6.736111111111162 0 8.436343020944751 6.741778640362991 0.1549183344252272 8.599990245258834 6.603808395430588 0.1247112619321761 8.515630362125805 5.511566550925965 0.5720214763374476 8.879772284412329 2.743943193628627 0.4372480050244826 8.889303825092444 4.282556805854179 0.348840852572801 2.85003083818567 4.280995904293277 0.1349764998195604 2.849129651249305 4.310167270511959 0.1241459787118454 2.705596672613392 4.930555555555538 0 9.63915608175637 7.971391056212032 0.1655354796546651 3.608091799554497 5.675431570196253 0.8529442749075286 6.723735558877742 5.555330571301216 0.8795988882339986 6.542723093566893 7.19457093099327 0.2797742194217476 4.133458074701219 7.142003037560253 0.5008705264570317 2.327142137008766 4.077495569552053 0.6284531119356118 6.739768646260079 5.292966755020759 0.438901928524807 8.265984037972235 0.6236498856347044 0.5994779983549897 1.314969494825867 0.5749154389424977 0.8407417491204563 1.26918714105432 2.648392521846658 0.2772589896920857 3.552420792076899 0.4827978438986399 0 0.7000051711357421 1.597222222222566 0 2.903402941210577 7.784766660353624 0.5368993054818406 3.252386182591813 8.888888888889309 0 2.061433798642844 6.075816055699198 0.6637050458425178 1.141468737727372 5.93557019578807 0.542478527657736 1.180945653769377 5.618410692355818 0.1654011022155057 7.611582330216759 5.567593080912392 0.1462618218843247 7.427048935096462 5.48119285598368 0.1257257278717296 7.615538275174755 5.493230381340457 0.2719875497560543 7.448213331894769 3.520306582870251 0.4710177635149246 5.209194920925393 1.520917128449199 0.122159213345268 8.483991316230545 4.156395013220617 0.8769021580456224 3.579066667121736 4.314853974525274 0.8736717053006383 3.416799026208262 4.165693432190018 0.7505738633462608 3.491056221713421 4.302599072564487 0.6745371131921899 3.452175880938019 3.084240591487155 0.2805370827671933 6.678480998317754 3.121556173707758 0.1482584616481921 6.605669373426554 4.276179834467282 0.8568784984001667 6.373487540072376 6.7361111111115 0 2.422277716886163 6.805555555555943 0 2.301996410804988 6.652980791278173 0.1380741993971249 2.279626881344701 3.215971944999859 0.1419959775957443 1.724985514319445 0.8113770847027528 0.4580778212467898 1.938614326671688 6.55575725969158 0.4849759471650017 2.465234641804321 6.694966980806624 0.5175344453533808 2.478710679566507 6.614895414649054 0.48030118726416 2.337825816283142 6.580156760931816 0.2808231586950915 2.384666177405609 9.261551792994247 0.5953349255477886 1.322452706243332 1.209990603005466 0.826659243965548 8.045204310845024 1.066180853079108 0.8767024727261696 8.129583013941621 5.667266663328044 0.594095521833875 8.812878038431709 5.827827394842112 0.6669521899857784 8.692962023232463 5.205268444873217 0.2945131196307674 1.995158131008005 5.138186380579702 0.8441808047470314 0.8778660701783654 4.932289401884489 0.8792239850934214 0.903086442675491 7.013888888889277 0 1.941152492561472 7.231355263973851 0.4847782637473029 7.866574275221868 7.386768764809317 0.5693771615317944 7.883723441461868 3.689949524038231 0.372240162714733 1.933684472466813 3.472222222222551 0.1206657101241372 3.371460353848651 9.301595967440992 0.5234674393591225 6.012910875761102 5.555330571301225 0.6295988882339986 6.382348018791999 5.537969460190102 0.683868435559103 6.572793420087185 4.23731305030157 0.1878448249046303 7.026441226960042 4.236111111111239 0 6.992967347970538 6.727849367544931 0.8523397404155373 4.271360996669519 6.597007100164465 0.8757982003255719 4.191753226410897 0.6184538958127014 0.4671670404568732 8.733534873904826 5.763888888889047 0 6.271279511483618 4.709665281546129 0.4944602056370713 4.046654844641116 8.543130165505399 0.1617307650720728 3.867544218340013 8.430181027534305 0.2819271074947043 3.802333003127658 1.851051664231807 0.1469176237917236 1.473785701222266 1.736111111111551 0 1.460027268236516 1.725960649789295 0.1312975886365508 1.630219312146719 5.069444444444434 0 9.639156081756383 4.319903675440374 0.4006531901951963 9.831494495131558 7.075502588670206 0.1613672280349112 8.059991336719495 7.071913342526967 0.2834313084807642 7.92413960123055 5.763888888888991 0 7.233529960132973 0.9076448932532621 0.3300164654479897 4.573441077595225 0.7604321378187575 0.3028402449652335 4.541689169870297 1.295076759374225 0.4490669164650886 3.733614964164675 1.392683333380385 0.5903952087044751 3.757766327783451 1.221418303616507 0.5813398227348049 3.695954156037035 9.716340222212263 0.8365655025436872 8.327923552892219 5.15125414574023 0.3270281755728122 5.127649262435275 0.1202813060811719 0.123014020590719 1.108797087248841 0 0.2471666671227836 1.106908476369538 0.1876560491093766 0.2969727765287064 1.236204128220947 9.876084305183767 0.1234497409204609 3.187902966573719 9.750247299400307 0 3.314852370001637 9.686499616879953 0.1560695111654427 3.168421290190058 0 0.5023184596578751 5.695481075794547 1.765792780811761 0.5897506840396575 8.355223907241363 1.536124543948488 0.5609513258946984 4.291384846031177 1.307949940773887 0.5314891044433299 4.262746439821361 0.1207762281748276 0.1220958652159341 1.94251728672129 0.2372344945377149 0 1.941500204160049 0.1164582663628873 0.1220958652159341 1.804238467612229 0.1785016839344908 0.2796376464007063 1.807841992969428 0.2949599502973782 0.1575417811847722 1.806824910408186 5.094899884259506 0.5720214763374494 4.790207877652532 1.517841110895102 0.3269686539672406 1.720522867415329 3.680555555555728 0 6.030716899321151 7.222222222222241 0.1225982235844028 7.273623728826839 7.094442498788936 0.1229427471378601 6.946459699610784 8.052121670007203 0.1507164962343016 2.468307712957202 0.9750137858881962 0.8389954650074678 8.4844670646814 4.583333333333512 0.1238765246349221 5.804921312470039 4.674711380942343 0.1238765246349262 5.963192733625004 4.027777777777816 0.4638643527532766 8.879176850448321 3.845537555609185 0.3306514274757213 1.364817399369315 3.460618871906143 0.1343924907420475 8.483649785073787 3.391174427461694 0.1343924907420475 8.603931091154958 5.215767008895904 0.3292115842959331 7.742802778308581 5.141529046885232 0.1779070836604858 7.7146551844576 6.804866509409035 0.4042531538447432 0.6479437545772782 1.232438732240141 0.8591763241487398 7.124738769797059 0.8855683709373507 0.5860783255083072 0.1772947316815742 3.616804186762948 0.3430034769501377 6.814285549231143 9.704163950743382 0.8332084564234897 5.0327332371362 9.73025915414107 0.8542899089312745 5.220844162531433 7.916110971956781 0.1253561812595411 9.879718693918839 7.928464096921004 0.3000780322308819 9.853942753214366 5.431565352479124 0.283623801783181 7.29705342328926 2.443090657891586 0.8001608214202308 7.087629174773824 7.896144158218505 0.8625367109665232 3.293559573906511 8.11930040351038 0.8762421371846979 3.30541455031124 3.416945578231491 0.4492785756277805 5.493943487825987 3.385770346189939 0.5028551157345909 5.301504247626125 0.275463816864594 0.8486597617333745 6.080717861381382 1.380860966937725 0.8386551986008538 0.563273392674919 1.445039463329389 0.8417593130462617 0.3721458243642031 7.981790246361609 0.1421257884650917 9.093651583203526 9.832294495152095 0.5861029875528143 4.820310077774943 2.77625876627942 0.1274493965690226 7.526828261395836 9.433008092873429 0.374421939842122 0.6352520270946207 9.529086757591809 0.3119935908377412 0.4725920059910393 9.372987884548461 0.280390725010121 0.4435665539637651 2.437746636301791 0.8651726751175099 3.32042181873105 2.613420412688932 0.8196924573616556 3.232190942913498 2.604891196948315 0.6933844360228985 3.145386384412582 2.491470784259714 0.8736919786612428 3.177442300953224 3.189139468218229 0.1232187971080104 8.480175807320395 3.11969502377379 0.1232187971080104 8.359894501239218 7.57960441149509 0.1218732201524634 4.751709101293502 7.510159967050635 0.1218732201524634 4.871990407374668 9.602455194062511 0.1875716509956191 0.2960508005530481 9.587968269738152 0.1261110434261003 0.107372731398991 9.446356321019165 0.1559687851679989 0.2670253485257738 9.452269059620065 0.2820798285940992 0.1596526171267828 6.063338509291891 0.5728566681519026 8.556989617907769 6.072499703787539 0.4100118626508069 8.594532598687689 1.18055555555574 0 6.511842123645694 1.233169661978537 0.1702068706915728 6.641840429914215 1.071625517719662 0.1370315193125302 6.629540225967923 0.9418881004501458 0.129507750943498 1.882204825432759 7.249932064784955 0.8545569066547971 6.01728941335979 8.111527693615587 0.5689521270848731 8.554230177091608 7.635183694401674 0.2851319452360406 7.891916481065726 7.567099348506767 0.1242748368444271 7.866446763974835 8.675267905481398 0.2895383236445976 6.923828076471452 8.819461044718503 0 9.639153412316009 4.010780999831526 0.8335544324990256 2.21207281392119 3.876381808067959 0.8736428154726866 2.360760389518117 2.103482971442992 0.8473310069176386 6.815247009710005 2.079642820809108 0.8798572229135914 6.952305261027695 2.81662503724202 0.452881899496013 4.817454396463532 1.176341544242573 0.8822729062697163 3.78789881303858 1.057215661072832 0.8603369041947027 3.609928660313687 9.425229597738927 0 7.820983455202581 1.510947439756301 0.1702068706915728 6.641840429914238 1.66666666666682 0.1586533016196642 6.712310967114348 1.58782535398059 0.1374457064871822 6.530701768761193 1.587825353980587 0.2960990081068464 6.610889306148638 7.222222222222262 0 8.797186939188283 7.291666666666714 0 8.676905633107117 7.354874517964173 0.132281607642499 8.842772960941105 0.7244168772997572 0.4139555938025899 4.442822561609368 9.791939307626105 0.4639090983979979 8.77343635708695 10 0.5165350364833343 8.750056792440528 9.832997762524986 0.5906535224822991 8.90299035326321 6.850451474330524 0.8626330004848157 1.221001936072684 7.007556545516563 0.7243351414964774 1.176925085028622 5.000326199702943 0.1474596757584787 0.7133723866458958 4.816960865141664 0.1955478371718767 0.6883502701786983 4.879592156565639 0.1216379915274846 0.7938764308910423 3.566104363752173 0.1773000285094286 2.541218884400543 3.541666666667036 0 2.662840329048334 3.400746827642338 0.1232212672361799 2.57525792792926 8.815853068654599 0.4988953003928881 7.686789170170888 7.850005501550129 0.2773748889353262 6.385492614797686 8.468954180722468 0.3374973639838007 8.430834880977756 8.501633919284549 0.3883627718753626 8.237441408455096 3.235443533848041 0.1583125885726747 8.61314102910951 3.237258023391497 0.3624543783074168 8.535879266121206 3.091249668732896 0.2815313856806851 8.536692509404162 1.696348336367305 0.8397506840396576 8.555692750709976 1.573821314942363 0.8793335013481308 8.610228615836697 5.072084602440787 0.4279070836604859 7.754748953151323 5.210973491329678 0.5099327912207829 7.667711776672064 3.194444444444725 0 4.226497308103553 1.358004066043902 0.3864388232760251 4.003766056724709 0.8933303150375919 0.2798744080620389 5.215512833420942 3.265322896823338 0.4507090375454912 5.716772866542325 0.4151332650508939 0.143985364553999 3.817309828190377 1.615646498770103 0.8614254027751909 5.762697778206313 9.305479425853953 0.7161551179079659 5.893260066225348 4.434782912675869 0.8492018187830606 7.034589586106028 3.641313990684521 0.1438688848416896 6.785984065447344 0.4108065629664788 0.1421309489160388 8.909188544927789 3.395712714750528 0.1301186837504412 2.326131702915984 3.297854086481911 0.2842805316950642 2.291402987582948 3.439115492528312 0.325849136425338 2.220885560094962 5.233788567170446 0.1639284968873369 3.570192993839388 7.316401261330647 0.1265844569696342 3.31024769854449 7.300830843873065 0.3243045692595641 3.283278944412902 5.48611111111124 0 6.752404735808281 5.408628857026821 0.1267023176038249 6.717618268159356 6.11111111111155 0 1.099183349993205 4.445955476951312 0.4972949308517386 1.510271577544879 3.166030260620651 0.154161847944623 2.387549001552943 3.263888888889268 0 2.422277716885979 3.331302383197899 0.1232212672361799 2.454976621848085 3.261857938753448 0.1232212672361799 2.575257927929254 3.233443754929282 0.2773831151808029 2.420247906515049 5.547765968951305 0.1419572081869575 3.795969328580023 5.434332313899218 0.3058857050742944 3.741071544721595 2.818874755782142 0.5940303045686914 7.618101229689988 2.636583089115471 0.5397607572435894 7.673230161643849 2.625848178195648 0.678462448193081 7.564962653500691 8.997797363840343 0.8676532282754987 8.963003670640333 7.40600352112679 0.1673469831333624 8.691080756793744 8.031400361591928 0.3223907882743481 7.066808933597617 5.694444444444892 0 0.8586207378308491 5.545230536306024 0.1669824399099872 0.8086369285279026 5.555555555555994 0.1186994392364495 0.9421476684610122 6.260252884391807 0.3750130151932705 0.1325042303755533 8.194444444444422 0.8387364011102963 8.170131827578976 8.180972138060023 0.8189521270848731 8.353761333623005 8.298905624066309 0.6792342779947841 8.359553277253191 8.312377930450708 0.860282150909911 8.321853658493881 3.306841937998653 0.5083769761932262 7.029991792567718 1.844244716604813 0.8516404097531065 5.883771344991441 3.07420116996426 0.4376235383067231 2.827065975398622 4.167828815030431 0.8531536733679348 4.080212564893768 4.123668323591419 0.7127172556388433 4.011103237378755 9.849467460936825 0.4232317453252524 0.8316933137013307 10 0.5072929955689175 0.6995156779736774 0.1200104297255251 0.1234559657180418 4.723197353258177 0 0.2535209803067808 4.72857493731887 0.1890806722231075 0.3082613863762316 4.709547094485091 3.507892872115133 0.1349472887770102 8.290798882505234 3.496289521799004 0.2693397795190577 8.458386952715621 5.643721806568491 0.1402737144452557 3.401905365126348 7.102572594088898 0.8399825791522522 6.701203174738483 7.226912377239774 0.8458056464891206 6.554643754601667 5.252480132975506 0.5921948008306013 4.72562734942467 3.237847222222624 0.4457304526748967 2.036375193208885 3.472222222222337 0 7.594373878376378 8.226347611078028 0.4487948506459731 4.14507037089559 1.195570239238922 0.5180381939293313 3.420180246701824 1.296509311680361 0.4426514732185983 3.347635086511378 5.277777777778148 0 2.542559022967253 5.145404335861006 0.1234567901234574 2.643654150030291 3.27954253095946 0.5884315007590497 1.357298829564318 3.224498788829384 0.6679115598940888 1.206157159127304 6.58353634683373 0.1380741993971249 2.159345575263519 7.724921346512557 0.5259355794586951 0.5122899143092094 7.74450952090428 0.4882337694892034 0.6793314418030001 8.33333333333332 0 7.834936490539024 6.527777777777994 0 0.4293103689154244 6.527777777778118 0.1542531538447432 0.5130782865285084 0 0.3763504968473664 4.659281017395005 0.1512278839080977 0.2761456325314902 4.51540942095746 0.9550872222630712 0.1660608716453998 4.620815884153261 6.388888888889118 0 3.985934695941408 2.430555555555821 0 4.346778614184691 2.847222222222405 0 6.03071689932111 2.222222222222329 0 7.353811266213962 7.101549515630919 0.8617021410116616 1.055106498949196 6.989340363219412 0.8626330004848157 1.221001936072693 7.152777777778081 0 3.625090777697929 2.01388888888903 0 6.752404735808086 7.5359833319728 0.4278415622740994 5.2867978723259 9.462117541468396 0.5840628810678065 1.496425255418452 7.370849335629174 0.4477201122899299 3.28111395909465 7.275493165174094 0.5558235046374415 3.17153076088671 7.429952471520574 0.5066783964247172 3.111624028974068 7.455261113495878 0.6081033923475117 3.242335368790116 1.805555555555679 0.1635802469135801 7.193436191439038 2.083333333333655 0 3.264246859454125 2.23007919278508 0.1507646650342269 3.197390517084071 2.230434289175102 0.1274477520337056 3.342922506357959 7.353280366447954 0.4113672280349111 7.899616261944642 7.19786686561249 0.3267683302504197 7.882467095704643 6.385514840417649 0.8440811763211212 6.078462598671887 6.382192949004587 0.8709264557095009 6.224835715679712 5.767875611461905 0.8811583358612043 7.15564415809618 5.837320055906348 0.7175780889476253 7.195737926789906 7.500000000000005 0.1507201646090564 7.433998803601742 7.394513254335212 0.1779070836604809 7.295957057068486 7.291666666666676 0.1225982235844028 7.393905034908022 0.1224438317631494 0.8794772687741207 2.220047272979675 0.1207762281748276 0.8794772687741207 2.08197433891808 8.142132224991977 0.497303415181258 6.094070621603482 8.735290192317132 0.4986314881306931 8.341673852803936 8.575136546777395 0.5721538921686447 8.298201768137247 0.9817947111283239 0.6752302158603768 9.490820166416556 5.487145101169254 0.8706760439406191 6.177611213243978 5.568064074630319 0.7114562282081456 6.13089262213369 5.486920116914762 0.7502749321746177 6.328773489246094 3.196766996143882 0.454267744895691 7.138477252870412 0.8250809476032844 0.4995300152290509 5.345180326819019 4.441142589959024 0.8474075270118756 4.88185749080716 5.906845548559412 0.3266076278151314 8.555186505486098 5.929828664538944 0.1318481436123457 8.537880957145539 6.03010614610421 0.2918600062631534 8.655976766194819 0.8316786674764143 0.8325372073973485 6.659247899877116 8.750329930809759 0.5432903597150933 0.5506020038576711 8.792842537374327 0.6580068818649247 0.4799692443356574 8.930642375175273 0.5426335497664178 0.4621293443026875 9.268636560862188 0.8654383224197169 5.258122655468709 6.31944444444466 0.8641139233050548 4.237129447017842 6.458118211275574 0.8757982003255719 4.191753226410896 0.09609351441043235 0.8774155417899101 0.8312306983055195 4.444444444444491 0 8.316061714863448 5.972222222222632 0.158653301619663 1.901058723867691 1.805555555555679 0.8413466983803374 7.193436191439038 1.319444444444837 0.8534427291193223 2.329111561299118 1.520027845826865 0.8614296166002227 2.392839054325433 6.18055555555596 0 1.94115249256142 6.058789386401728 0.170098581168234 1.951038299409479 6.180555555555965 0.121780315006399 1.800853386562349 3.819444444444701 0 4.587341226347098 6.00305525934308 0.1600118626508077 8.795001442156293 5.902777777777813 0 8.676905633107012 5.880381455511466 0.1208525329136397 8.850211230571226 9.209821872437034 0.5847808779312678 9.829640904837575 9.162908825620914 0.405496841786773 9.840154439302806 0.242685008346145 0 5.837211245278285 3.094806763285187 0.3690674308264218 6.332047837709929 2.908146816282156 0.2430766635881566 6.333418414441322 4.035481437772633 0.8450343653500837 3.424675466654987 4.017506124331728 0.8769021580456224 3.579066667121726 7.924602937636376 0.8648943628561362 7.879697233433943 7.576654238861329 0.3714683973750619 2.42152272808918 5.721603017844933 0.5554239207747323 0.1908092790269849 5.285373182177219 0.5907399596833388 5.603467959736964 5.307539682539884 0.4374632569076989 5.52668095002872 5.172790605423874 0.5926978487410104 5.448883534082725 0.9797907529608374 0.403158704677557 9.226438936964858 7.648764846725427 0.5045465375398276 0.7980468956655602 7.771823228984737 0.5897674603699757 0.8690566915604399 7.750465541492879 0.3984663091192276 0.8292697131072282 1.797300966209542 0.8047883178214101 0.2374575062588911 1.926550676663911 0.6507648083679884 0.3087909919789056 1.799988621736313 0.6845091044606535 0.1281782690338479 0.6380014425623074 0.5564358477992164 4.101693265838592 0.6681240986647092 0.4887559754941034 4.31423598195836 7.569444444444545 0 6.271279511483741 5.969726559516927 0.5938889600089537 7.075902183691528 6.039171003961378 0.6080937807799123 6.879625819847074 5.881269240824165 0.6104134818300613 6.886857931986077 0.119551406119208 0.1292899076599623 5.420727523127286 0.1185614297481762 0.1292899076599623 5.560078068200098 0.2381128358673842 0 5.556201874213041 0.2883786558471665 0.165902052459573 5.547599001416497 0.1688272497279585 0.2951919601195352 5.551475195403555 9.177816971682855 0.5042499295002595 1.566945490461518 9.302953985110836 0.4829624813380441 1.472167640524748 9.233884887411163 0.2919774330435498 1.423258758137913 6.260184283161207 0.132504230375552 0.3471594148332542 5.706544132522735 0.853377381713793 7.425816414245972 5.55954227812855 0.8811583358612043 7.275925464177323 5.71053085509565 0.7345357175749971 7.347930612209179 5.698431167017448 0.8811583358612043 7.275925464177337 2.083333333333579 0.8413466983803368 4.627434995040735 2.222222222222458 0.8413466983803373 4.867997607203083 1.527777777777938 0.1586533016196642 6.712310967114339 1.527777777777941 0 6.632123429726894 1.372058550867419 0.1702068706915728 6.64184042991423 9.518708385247908 0 2.651968909311805 10 0.2451497339842057 8.053135167296556 9.877689085220098 0.1234362638898392 8.056482970268791 9.834398718768018 0.3099636391733185 8.078131681486447 8.160332818544115 0.5662506856136869 5.961922942230785 8.218223258455708 0.3919131964567793 6.00435183529806 3.433035714285721 0.8188198118753538 9.03036084254834 4.374999999999991 0 9.39859346959399 4.236111111111088 0 9.398593469594008 4.365425097065639 0.1532674891684649 9.285938169829627 1.920894663075348 0.2653461546127992 2.796169823412961 8.750510193337988 0.3792530343351409 0.1344009268523018 7.412892616129635 0.2860861540947964 4.021235732192991 0.8826326135857 0.3266342416443098 6.395067500907038 0.7995400999479036 0.5132918937841198 6.431476869657264 0.7533414065883588 0.4770727715024113 6.235007108325703 8.83553967923028 0.8223234075884257 2.450765493307078 5.763888888889179 0 3.865653389860203 9.103773464557516 0.4844661967111134 1.717071391334289 5.208333333333377 0 8.676905633106966 4.966253113583319 0.5986589113217072 8.037341183671403 9.877462174672946 0.8797186939188281 6.663569076891144 10 0.7574572711924812 6.666925280447995 9.877462174672946 0.8777385772736531 6.80271657956137 9.702347614884246 0.8248854402113011 6.675632953634022 9.8248854402113 0.7026240174849543 6.678989157190872 7.949341486396975 0.5508675333127724 5.396292917797449 1.686792693276397 0.8787270419647211 4.879617374083768 1.726475232958941 0.69126378505702 4.776519111728483 5.797052274196005 0.5142550563853385 1.153048243664739 6.805555555555587 0.4543266508098507 7.995311565313813 6.940855198301247 0.372064080445853 7.859459829824868 3.974917918352549 0.522931111094363 3.103888733457499 4.044239223208006 0.3215862179651023 3.152879250084597 1.527777777777938 0.8364197530864219 6.712310967114339 8.354586246614588 0.4866544019895169 7.656419217252315 1.565735288700941 0.3307704189676059 4.795181657329041 10 0.6372099091011094 6.458401934564029 0.5511618032389207 0.599207938776279 6.222825555607233 0.639349382406073 0.492785476256726 6.136326328384351 3.727610217286176 0.1594339908554256 5.256008547063356 3.680555555555762 0 5.309029062834123 3.541666666666881 0.1553692348799318 5.221527171055294 2.222222222222507 0 3.985934695941167 2.708333333333654 0.1221824276708555 3.482284345263852 9.690061201047094 0 0.2083392959205281 6.361394925014478 0.7295064348711543 4.056011011797764 4.097232796991941 0 0.3349269628174913 4.241061117782525 0.1483447419024839 0.3962615590002543 4.027788352547495 0.1245435926373405 0.33898601127307 1.258876451657412 0.2753559062427562 3.351091878117003 5.866534840668647 0.5878862996924783 1.313278733269633 5.779672615580301 0.4229868389176225 1.38226949173871 1.392757373134229 0.1276508421091242 0.1051434812376058 1.385297363592685 0 0.2107696620708308 1.45434633945137 0.1858714005298605 0.2804952059420838 8.135690125879592 0.1681349810389688 5.68281973759666 5.482728408295578 0.8734346943885365 0.4535802604332687 1.250106360704614 0 8.075437695319525 1.892288784269688 0.2907917546372603 6.088686160875959 1.887604688146832 0.1596077095474902 6.18815364278861 9.448402382602238 0.8587027444816586 4.16771497718747 1.114234084726344 0.833245758418689 9.594534878056823 1.115728301560516 0.8701151197462821 9.454075980296588 4.027777777778034 0.8797073621149415 4.598082789771102 7.152777777778208 0 1.21946465607445 7.291819774678531 0 1.219915533729865 1.319444444444476 0.816762292599163 8.895342223739991 1.180555555555588 0.8413466983803386 8.837280707881689 1.36548798160903 0.8793335013481308 8.730509921917861 1.29604353716458 0.7206801997284695 8.770603690611578 1.434932426053467 0.6960957939472938 8.828665206469879 9.842487462253445 0.4192018677215824 6.105704178464041 1.94433879642947 0.5438843390723458 1.180706988967353 1.805343276002801 0.591304238706622 1.100046320785911 1.99024650577726 0.62921426335979 0.9935387470709403 5.548732693887199 0.4986193101932198 9.185712041956847 7.569444444444435 0 9.639156081756493 1.938368190561184 0.8563901317667157 6.176325941856949 5.027511391024134 0.4243625945153144 6.833671895816657 5.133424167390064 0.5905277703717584 6.859878511507596 0.7666804525548631 0.1610045349925322 8.364185758600204 0.3287555642228048 0.3309162660599431 8.159352760308977 7.39737580682894 0.5180540147676826 8.078761826681035 8.958094146453936 0 3.144103647982792 9.024216841564098 0.1704435033750077 3.17910725865397 9.093679684999302 0.1704435033750077 3.058815329910543 8.929104476181164 0.1586597377396617 3.140020133871667 0.9733048814790999 0.1503246415572267 7.914533011089285 3.071202407081592 0.8384315007590497 1.317218156485477 2.961922407922161 0.8794793894795168 1.393825212757649 7.429952471520571 0.8581033923475117 3.19849951501831 7.569444444444793 0.8214837977345739 3.150437485031707 7.687810824885172 0.6840205087010971 3.179750199483752 7.54831885196095 0.7206401033140348 3.227812229470354 0.4227366727126401 0.5776790397203027 4.635680257915228 7.291666666666874 0.3239774729120388 4.880183134678285 8.481915078074437 0.8427410174102374 5.257426391122584 8.293725357286444 0.8582028193033254 5.201029253262956 8.46375562346206 0.8729451841750042 5.114072947596593 8.071682168822335 0.1315085854687655 1.974808615074296 8.000335244799736 0.2532681516284216 2.02085381118893 2.638888888889283 0.1200943398880383 2.191220204206429 2.195731657618034 0.8799056601119621 1.996540595860403 6.31944444444467 0 4.106216002022579 0.2526065068426562 0 7.23853940565675 0.3736737296014336 0 7.210127320593763 5.479948622369698 0.4776079164174443 4.649519559401035 5.582892310326262 0.6741529442352712 4.657555586167782 10 0.4856731047468074 4.027558663059692 9.832088838377217 0.4106962300465072 3.992690528165923 9.846086122442433 0.5967392491543645 3.890911315079689 7.856496587255449 0.4162274934843398 5.772246578812619 7.781538227607328 0.5208596300999633 5.84960385604161 7.724481262247489 0.5051278975640948 5.703162892767372 1.458348527719773 0 7.95520902413672 4.231108961291939 0.1231062046848292 9.258690911391039 7.053571428571597 0.5625367430922994 5.572502399964517 3.884448811862327 0.8527350872634357 9.544125906908757 0.8477388663158285 0.5643745506599899 9.433538117687803 4.064275809080938 0.5782255112548795 6.870261600061598 3.925626408316768 0.5941825375766183 6.791834019139667 2.916666666667031 0.8770461989223224 2.690175263956949 5.208333333333337 0 9.398593469594012 6.592897800267641 0.6008814731519054 9.556471838189434 2.215577185299822 0.1631368675373475 1.025589464877308 5.008652946830651 0.5898885978905786 0.8694355256307129 2.270426687045625 0.1482547129929949 1.953151973575499 2.430555555555965 0 1.941152492561244 2.430555555555957 0.1200943398880383 2.070938898125245 1.041666666667136 0 0.9789020439117903 0.9722222222226982 0 0.8586207378306149 9.567126790034749 0.2919807203304252 0.7007902817197349 2.6906174240082 0.2823035346345634 1.075308012614733 2.712670212248327 0.2959569329625738 0.8884371767960455 6.386998292388125 0.8490964395061178 5.166087476670838 9.459282470069713 0.8159651643927656 9.282065936837835 9.629472474079089 0.8365378565642164 9.295827500057788 0.1202813060811732 0.1234559657180418 4.584811736869948 0.3093619783042807 0.1848054206581899 4.708068690948474 0.2715091899892709 0.1526896668134484 4.513931017420843 5.095486111111319 0.4457304526748961 5.404251763481799 10 0.2535209803067808 4.72857493731887 9.898093363277187 0.130065014588739 4.865229212394439 9.840664840429469 0.2823094288440371 4.899771968333596 5.972222222222632 0.8364197530864202 1.901058723867691 8.231209150326791 0.4491345921084381 8.629736493467522 3.982535201450058 0.5618703884422573 5.828422959330322 7.276096249209431 0.4477201122899299 3.03680926185422 0.8117644079111304 0.4565398810332502 1.822554406611888 6.111111111111374 0.5349794238683179 3.825559621166494 5.625000000000074 0 7.474092572295289 2.081944916238179 0.1258797811029821 0.1122266821599462 2.014022130082346 0.3131397462352613 0.1773129301710233 8.402777927648479 0 0.9789043551630909 1.111111111111573 0 1.099183349992966 1.12386844619908 0.1611592323916736 1.025996212578159 1.193312890643518 0.1611592323916736 1.146277518659335 2.388725677330143 0.5883725983664974 0.9432241562787725 7.373366013071949 0.5508654078915507 6.8278753592319 7.462162491939188 0.4473263943839854 6.76767036642812 1.526874057330163 0.8386551986008538 0.7854026298185901 4.0278734009005 0.3810008086360496 0.1243403545367528 0.5558332562298769 0.1544315851414393 3.36693449909542 0.4074429301320981 0 3.245857776256914 0.5655639900843765 0.144173940799725 3.221149893027319 6.793257217816807 0.1602242778540469 7.565118579439565 6.793257217816807 0.2815638100659598 7.427567922943063 6.388673766831142 0.8757982003255719 4.071471920329722 6.500068691845392 0.7411907118916714 4.010634791190818 3.541666666666953 0 4.106216002022398 0 0.6282057690116827 2.854786463548906 0.1541452116912289 0.7266505615286208 2.986784628508722 0.1987702060527949 0.7276457255280984 2.813657629647232 5.555555555555987 0.1186994392364495 1.182710280623355 6.875000000000385 0 2.181715104723819 1.666666666666923 0.6287270419647213 4.443820386504406 5.069444444444743 0 3.865653389860144 3.055555555555545 0.6111669904040692 9.870321469355137 2.986768692332224 0.5434598754770077 9.697229288010167 6.998480108659938 0.1769647993731156 7.279508649994053 7.152777777777789 0.1225982235844028 7.393905034908011 7.094442498788917 0.1229427471378601 7.187022311773134 8.541820030902119 0.2561949644613337 0.1344009268523018 8.542643750932589 0.1341649984125234 0.2519478172457243 0.9056029852893415 0.8221210539605708 3.745409638308597 0.7568300854239063 0.8502946430236543 3.803595420793408 3.235474705065099 0.404161847944623 2.347455232859223 4.191950619672394 0.8595635822709085 3.796544062345078 0 0.6259139124584798 2.715651906342728 5.981263036103268 0.8526775415390966 0.889540904174442 5.911818591658815 0.8526775415390966 1.009822210255624 5.277955674937784 0.8459191522845045 6.546851169299708 5.278342320808472 0.8730274782134032 6.700989355694215 2.377847988005684 0.4953302344080646 0.7932858305688716 0.1202813060811719 0.123014020590719 1.247685976137729 0.2405626121623438 0 1.111111111111111 0.3079373551905484 0.1739587559379873 1.238518152083218 9.826398743237771 0.570506458196257 3.2630171906375 3.192821173522588 0.6269947834248368 9.870321469355137 3.194444444444429 0.7552391888279446 9.709946394580195 9.700561737454308 0.8249962037857419 3.320969736010744 10 0.3829595457180637 4.801565814307311 7.938830488207277 0.4247997848721738 7.236939767524201 3.680555555555866 0 3.625090777697708 0 0.2520217972466719 1.944240529561115 4.583333333333696 0 2.783121635129564 4.419884793182165 0.1349764998195604 2.849129651249314 4.449056159400849 0.1241459787118454 2.705596672613401 9.70171545957394 0.4814968275551066 8.898391364540903 9.868717697048954 0.4074019314308374 8.888527890510129 3.518705565223766 0.1443970137532793 6.029726422996886 7.777777734958172 0.1217132410915047 4.385035056179261 8.955759389212712 0 4.348264681516168 8.819444444444752 0 4.346778614185076 8.886314944768269 0 4.468545987597341 8.840450389229247 0.1789730389671879 4.490101115154594 8.90989483367369 0.1789730389671879 4.369819809073421 3.792581772430353 0.7161007490529516 7.022788565559889 7.077227576778727 0.4066612219903696 5.620518020472515 7.916666666666641 0.8797186939188282 9.879718693918839 7.904755913872584 0.7064380251035074 9.852261171270666 8.125000000000156 0 5.54959167499676 4.158786899662688 0.1308408070892393 8.258645689361984 5.694444444444802 0 2.783121635129612 5.781011608623917 0.1700985811682343 2.672726135896506 5.853016101442787 0.1396529976604499 2.806033675763702 3.333333333333516 0 5.910435593239963 7.384423668871648 0.4436519983762215 7.955327483591423 7.350935270510285 0.2856420648793382 7.971220304074198 1.467255323883169 0.4363917234212203 4.255033442397111 9.686762950086475 0.5062393887800047 6.130492526839213 4.166666666666664 0.8797186939188286 0.1202813060811716 7.510607042019622 0.4486768532358882 7.949787338370712 7.508261946081952 0.3229516900803153 8.021391380500269 3.32139004606507 0.8772117198645681 1.988141721374594 7.361111111111502 0.8823765816281921 2.390137803036889 8.711510581476722 0.8632932218625484 6.102284825982205 3.888888888888885 0.8797186939188286 0.1202813060811718 1.373155177665024 0.1592600403166616 4.546934012791674 9.044098285337267 0.4951290710253983 2.382735575148653 1.458333333333366 0.816762292599163 8.895342223739998 1.504376870497921 0.8793335013481308 8.730509921917868 1.448936465091708 0.1374457064871822 6.530701768761185 7.222222222222434 0.1218169790848786 4.840089365984555 7.29166666666687 0.1218169790848786 4.960370672065734 6.404699593763945 0.8323280170295567 1.525586632012804 9.843895655380383 0.5919711097262341 0.4562806085530407 9.716642018697893 0.7044456150807243 0.4069055279544036 7.986111090181072 0 3.865653401944478 8.040835500656467 0.1655354796546651 3.728373105635676 8.150939750918106 0.1201963424226315 3.800442174648007 7.260920269598152 0.4331470155340522 8.991355750806077 9.163245194411253 0.1542758534378298 6.989751780349742 7.092558189911626 0.1591500405822318 0.7887550206536724 7.092962013392517 0.281081260069788 0.647436912960917 1.250000000000102 0 7.594373878376238 8.171852873691643 0.8100817540632912 1.060053353424699 5.736711107772487 0.844095521833875 8.612409194963105 5.92444962040299 0.8228566681519034 8.637177155295202 5.822554107870408 0.8769948285953204 8.723218661863797 0 0.7568815007948859 0.8294552060520886 0.09609351441043235 0.8794659590049758 0.6926689521910137 0.1583676738675522 0.7279385673950849 0.6715090087628872 7.430555555555562 0 7.474092572295473 5.416666666666661 0.1202813060811716 9.879718693918807 5.427932106364421 0.2910153890280997 9.849621820555383 0.1513402382666252 0.7250923059524361 6.076881936424655 8.00534984604672 0.8399825176007695 4.037135778397765 7.988964249818808 0.8260131120375378 3.874988500036344 7.633572955615286 0.8397674603699758 0.7899583595258948 0.5718920840532706 0 1.105124919183942 6.974092760069547 0.349994539387919 8.703706581204207 6.95011197369632 0.1549183344252272 8.720271551340014 7.034771572010155 0.139438525693298 8.891140576031521 7.058752358383383 0.3345147306559898 8.874575605895714 4.623430931363178 0.4665429894653379 4.152316503031894 4.777953172941297 0.4616879078733088 4.064455284772682 4.865610005580129 0.1268582850369452 0.5612493244386502 2.847222222222425 0 5.549591674996421 2.916666666666862 0 5.669872981077598 0.4801167581369994 0 6.258882350842391 0.4137156816519392 0.1567107589618326 6.119214161759931 0.5980992549052351 0.1435775374804469 6.141520019729659 9.231019624536387 0.1784396696051936 6.067638425201065 9.323834376673428 0 6.143782660117468 9.175440241334556 0.1864982868616544 6.213087325597088 7.095068328580691 0.1624177907551599 6.089463625239407 7.209593849074147 0.1226614123799605 5.983332135991102 3.28223136604324 0.5042190596667926 3.082159024220613 10 0.6164044363376254 4.236111111111109 7.903974975750053 0.2869479180133644 2.125019091590068 3.299431616798936 0.5926978487410095 2.321569575972157 2.107227852275007 0.6306280275847398 7.096286008037907 9.097222222222289 0 6.752404735808538 4.027777777778111 0 3.264246859454215 4.026878112096893 0.1258557652902065 3.182949576604889 4.025475671343306 0.2492585075190148 3.275525726437098 4.026375337024525 0.1234027422288084 3.356823009286425 9.262200116424761 0.4080155421438991 1.67662707832824 7.998464236075272 0.1747218509713409 9.613380141052037 7.861442083489939 0.3025233214981876 9.553894127224915 1.666666666666808 0.1586533016196642 6.952873579276687 1.944444444444726 0 3.985934695941154 1.892122719734934 0.170098581168231 4.096330195174255 1.825681582165335 0.1212729580352789 3.917366925434408 8.541666666667012 0.8714737917667386 3.293346998875706 8.611084001596826 0.8496137876208055 3.101836419710458 8.687657520737297 0.8712926887836651 3.293945632095741 6.525887181277009 0.5990964395061178 5.246275014058291 7.222222222222634 0.840604193378987 1.498338751116109 7.499396915965023 0.8581033923475117 3.078218208937144 6.252598476441799 0.1216934405095022 6.241663319136162 7.444026049402642 0.1452262463661977 4.996056106533178 3.804071437187551 0.2867944767611861 5.868665375886232 9.726677046831501 0.8558489096746278 4.457517312351445 9.846958352912672 0.729365309689169 4.457517312351446 7.789205984038299 0.4715417713361657 1.352636494058444 9.876084305183767 0.8790323628112215 3.051953126763778 9.702483048421538 0.8249962037857419 3.186972609699574 5.486111111111343 0 4.827903838509561 1.022781060913646 0.8424046594864318 0.3921278719896641 1.169523726106477 0.8614959695343161 0.4201877223912731 4.4177055370562 0.4165370301854104 8.380811536872432 8.055555555556023 0 1.099183349993421 3.344227013234744 0.1306358911530215 8.242994386016978 3.205338124345857 0.1306358911530215 8.242994386016971 8.340309302812081 0.5471978685123422 0.4529444708359509 4.282088122605417 0.1592344259968783 8.008860494044626 4.236111111111164 0 7.955217796619918 4.097222222222275 0.1547891870604084 8.041748312267952 3.819444444444754 0 3.625090777697715 3.88748644813562 0.1234027422288084 3.597385621448758 3.763185560952263 0.2912823181231489 3.595962994109542 3.818042003691184 0.1234027422288084 3.477104315367582 3.541709948900414 0.2798534549994723 0.1499702755568579 3.542616505904189 0.1544012860378046 0.2702515816380304 9.586416575279042 0 7.107739072021692 1.256935894267218 0.1412537436535312 3.734791694794487 1.242654027472726 0.3029767264258585 3.8054127589435 4.818368511767655 0.5747718222652982 0.8481357557386424 4.940942348714697 0.7191125829839999 0.8337136930879145 8.785323948813971 0.3092799483790805 4.538494598035088 5.260212592918599 0.7202395501454688 6.199167705522376 8.451266819339589 0.860282150909911 8.321853658493895 6.074497206705156 0.8661097709648756 1.301082374680548 5.957399228781238 0.7427397165542837 1.376188244634023 0.4846760735279818 0 5.98120719295326 0.5820053607272762 0.1672536981100748 5.981004188902064 4.162115424700736 0.6458997732416353 3.460052321384754 5.029154551031965 0.1450015964476173 3.004612589728357 5.035669998003726 0.2684583865710747 2.865145104629053 6.768320152582443 0.54687558970685 2.601414616354243 7.083179386950007 0.8752707003331448 0.1202813060811718 7.222267989942541 0.8752707003331448 0.1149397308885625 7.206623244347611 0.8444177241638349 0.2981924575958951 7.206469297964295 0.7196884244969797 0.1779111515147233 2.08333333333378 0 1.339745962155364 2.013888888889328 0 1.460027268236533 1.920496108676258 0.1469176237917236 1.353504395141099 7.277167321217167 0.5533241772894307 2.348989965162183 7.324140371720763 0.4688478655345243 2.519792959594398 7.406863248493107 0.5921308905605663 2.422448946654138 7.431944510547365 0.4118755919906587 2.399639519928177 7.162019145111987 0.1591500405822318 0.6709409575680221 7.013905399645269 0 0.7408066747452802 7.01430922312616 0.1219312194875562 0.5994885670525247 5.27834232080845 0.8730274782134032 6.941551967856546 9.235999616094626 0 1.222340138929312 9.132498140374292 0.1552493390618661 1.350388348174816 9.266808880045989 0.1367280939816838 1.413334903961416 3.633460567731174 0.4438551825645026 5.121043024867275 2.777777777778184 0.1635802469135801 1.981246261254988 2.638888888889309 0.1635802469135801 1.740683649092636 6.666666666666978 0 3.50480947161672 7.903879269639349 0.8772807211308948 8.967352308245525 1.383955282865831 0.1242632538263377 2.154760486825199 7.497654904062336 0.1242748368444271 7.986728070055994 4.084967107785244 0.1991343166758213 1.976529960658198 4.097222222222628 0 1.941152492561337 4.057829853870318 0.1398710857115187 2.114492796390023 2.988493846041569 0.2802327681587261 6.22156421320983 3.945555840573043 0.2655102501427087 3.610627783971011 3.263888888889176 0 4.106216002022386 7.546362593942995 0.5038272894028299 2.487717944639439 9.836280415839303 0.5920865091293799 9.234487156298522 9.804652024779598 0.4473481025891837 9.152702673076336 9.856474903991629 0.3881727780883993 9.281873759763151 9.661126928771228 0.3244235755472562 9.269289915936923 9.692755319830933 0.4691619820874524 9.35107439915911 3.47222222222254 0.5915812849648974 3.536993599266802 2.638888888889037 0 6.632123429726958 3.205051486464391 0.4486768532358956 2.978160020348669 5.417700656724817 0.8706760439406191 6.057329907162801 5.348256212280367 0.8706760439406191 6.177611213243971 3.090270152758041 0.8429600235155791 5.30935951678665 5.289365578082694 0.8708062294003611 5.836327162490777 10 0.5140446972548782 5.428497277437208 4.861111111111166 0 8.075499102701109 3.393681764614708 0.2533399509866212 2.479111913959259 4.166666666667066 0 2.061433798642513 8.395183410879891 0.3756009880009041 6.032590594475607 4.206735390022835 0.8568784984001667 6.493768846153547 4.05614225731383 0.8413351476103176 6.539551349741886 4.146940013996497 0.8784531119356118 6.699674877566357 4.187008737352523 0.7353316103357785 6.561320293992878 5.460157836739832 0.1201938380793228 2.487481124328706 5.460157836739826 0.2837740849929037 2.567668661716155 5.329757927295811 0.2677699362273162 2.412194701508892 2.013888888889342 0 1.219464656074189 1.874893441430955 0 1.219649474089688 0.5560402799280055 0.1542793008703239 4.123181817490462 0.4097813601431676 0 4.247794074937033 0.572903501800166 0.1407813321464932 4.269954879927291 6.569728258347839 0.8653925115660995 3.804816260721332 6.63917270279226 0.8653925115660995 3.925097566802509 6.597639142939194 0.6734461353527843 3.925097566802511 5.902777777778176 0 2.181715104723752 1.875000000000274 0 4.106216002022322 1.73611111111139 0.1635802469135799 4.026028464634866 5.347222222222559 0 3.143965553373122 2.01388888888915 0 4.346778614184672 5.486111111111461 0 2.90340294121078 5.416666666667018 0.1635802469135809 2.863309172517052 1.527777777777805 0 9.037749551350331 2.523192216514726 0.6589314362601362 7.098133621491309 2.309934492050959 0.6732613223262536 7.165901975563667 5.125212479073568 0.1312977228979161 5.112614099175126 1.922141845079737 0.5965792428484586 8.100218176268914 1.972677954509992 0.490296320415217 7.990853602498119 0.4657859512853548 0.5666055651239568 0.4375021104590872 9.306856654038636 0.1206954412987889 0.1163500967704763 9.309446237657573 0.2766642264667878 0.1596526171267828 2.682864857133385 0.8196924573616556 3.111909636832329 2.70176896831722 0.8420954585849854 2.949821994702583 8.258189292399269 0.8762421371846979 3.305414550311251 1.250000000000025 0 9.037749551350313 4.406276868117621 0.4819132808066719 3.509669157390202 8.983861459243798 0.1578799437114075 9.09590995969263 8.794965482947433 0.1758066085758292 9.117607797833134 8.896715007582667 0.1241536169056681 9.205594258750224 8.991687577937668 0.2820335606170756 9.263754667092087 8.887371725846254 0.1570487328970166 4.215552406221741 3.596541030483945 0.4952211229234297 1.668914086159682 8.373737057831431 0.2902080109105111 6.186816902926147 8.519975537300692 0.4448504751256211 6.150632263431534 9.614552013933675 0 3.369183469811295 9.5096411992523 0 3.418666113589593 9.536416069819538 0.2134421093146106 3.381894072568004 2.430555555555807 0 4.587341226347033 0.1684382495248309 0.5797688534765282 8.404622317868711 7.071922732663595 0.4261497570192254 2.206493716724323 1.814186415848018 0.2843441319160212 6.383383121970933 4.223856209150633 0.8008654078915516 3.660467632427501 8.025733673889146 0.6853780368589475 0.9905430988335082 7.951025300975676 0.5522103389754278 0.8596660075854994 1.736111111111326 0 5.309029062834023 9.867565394216129 0.8762481677863287 7.488904158113927 5.216822312778577 0.1475760981479934 2.346991294066266 3.506765010352192 0.3480009668534502 5.061359288923585 3.350396825397045 0.4053692348799319 5.171581790625387 9.868717697048954 0.4073783415561419 8.745457803718221 8.805040266920386 0.1227637030365637 8.986651183205609 7.231811722411187 0.1591500405822318 0.5741634119709038 7.194557951717662 0.1976001875015425 0.4053593954005559 7.08410180042536 0.1219312194875562 0.5027110214554065 7.055708242698992 0.3195314069890988 0.4786328963905689 1.736111111111247 0 6.992967347970415 1.805555555555682 0 7.11324865405159 0.5633768488961928 0.4904306018758958 4.975857113705433 3.43321895658718 0.4968568207476545 4.133534442906018 4.621402806782347 0.5564760895133017 4.00289496005262 8.860036882587528 0.523470576255866 8.232493376242513 9.545443263642561 0.4365273752834793 7.84902831482051 7.399278687438324 0.4819132808066673 6.636983115500859 2.15277777777792 0 6.752404735808094 5.127225145949988 0.1228400476039078 9.111203023612376 2.361111111111355 0 4.707622532428196 2.291666666666904 0 4.827903838509363 2.291666666666915 0 4.587341226347027 2.152777777778025 0 4.587341226347017 1.067257488421711 0.8369221500819011 8.433678504970203 0.996645242316472 0.8767024727261696 8.24991695492113 0.507042223078694 0 2.632442829454719 4.565016063366548 0.5217878325984586 3.327699743932246 4.427830189047809 0.5547195782157586 3.386281857252131 1.527777777778051 0.8413466983803373 4.146309770716026 7.595171652789702 0.48191328080667 6.825481209297512 4.803634012007015 0.8416939042537431 1.957595828715477 4.922396874286411 0.7204209462184641 1.889028058208742 6.966109128384691 0.1597524083904545 0.2800688491994492 6.965041377983527 0.2824937125045245 0.1597875431182774 3.625614678599865 0.4108897318311549 1.812497547886535 6.458333333333371 0 8.917468245269415 6.388888888888931 0 8.797186939188236 6.547485826700578 0.1505821306049256 8.807207628449408 7.891829405799419 0.4824781790980267 5.944015233884309 6.527777777777844 0.8364197530864208 8.155686640088675 6.688873315211322 0.8521633254049239 8.062678088186219 1.326380338711668 0.1412537436535312 3.614510388713316 1.527777777777808 0.8413466983803366 8.957562013962882 8.620793117074665 0.8427410174102374 5.257432655308733 8.602633662462289 0.8729451841750042 5.114079211782742 4.436484430203779 0.7265189711305591 3.415769309241228 3.680555555555657 0 7.714655184457555 3.793907350568457 0.1738711285370236 7.710650196954523 3.745461507586981 0.1548348725760024 7.858422484024233 1.250000000000026 0.8413466983803386 8.957562013962864 6.743769697095064 0.4619279347825547 4.0915644500905 3.6111111111112 0 7.834936490538722 0.6651538274212065 0.5834952340219643 6.321506335548587 4.312718364702089 0.5092348789264198 8.480572239427222 1.17435213013375 0.7019811198977719 5.117637860808248 3.585376207083357 0.2835758888094416 5.166154689299521 0.8543897422621827 0.5048998952098682 1.346157963275652 3.750000000000039 0 8.556624327025759 0.7699628741281765 0 6.02579002656283 6.597222222222441 0 4.106216002022584 6.458333333333549 0 4.106216002022582 4.236782298314665 0.4641732023933692 0.4983569109543228 4.094742372883979 0.338745036816659 0.5088285723137307 7.710168641395622 0.3142814328826102 0.4873863682450051 3.328819167222067 0.3377264302706411 1.980579935140148 3.681701591540104 0.1227675013371157 7.13926571670291 5.120070778131369 0.1230027409798238 1.987473098632988 5.885050557134366 0.8676169774904845 8.501199032803928 5.788428331573488 0.7117124993243595 8.556983900741187 5.976166844203991 0.6904736456423879 8.581751861073286 2.22222222222256 0 3.023684247291786 3.414449995826447 0.8771544538147658 1.533495917229666 4.848893405600748 0.1608755968512305 9.206556890509884 4.930555555555575 0 9.158030857431628 5.057989529858851 0.1644585570492904 9.175545832062966 2.373560060581759 0.5382074897873794 3.893526456200062 6.527645924103961 0.5430895731685292 0.5503169048937708 6.388961329721977 0.4282097967035744 0.5320850756060826 6.388961329721983 0.5561698339346655 0.470354503774199 6.527645924103968 0.6710496103996203 0.4885863330618871 5.833333333333731 0.8413466983803375 2.141621336030028 2.152777777777891 0 7.233529960132782 2.301065150372517 0.6279508259338854 3.858869092945796 3.924348606573576 0.1605893076721359 5.657873542831121 3.819444444444637 0 5.549591674996471 3.798457501553516 0.1264100169345161 5.718493635539676 6.82172646457909 0.8325146263515473 9.264352769289401 6.710360222521997 0.8797686830720617 9.333273214665464 10 0.2592866168251781 6.389314217457295 9.879718693918829 0.1305275078075192 6.250013721184187 9.879718693918829 0.1287591090176589 6.389300496273103 9.857459099826521 0.3409378831266238 6.451879498336821 9.737177793745349 0.2121787741089649 6.312579002063712 9.857459099826521 0.3427062819164841 6.312592723247905 0 0.7577474118247056 2.225149346540225 0.2402917358066983 0 4.721718949721561 8.989257108888758 0.5764506545672142 1.629304401022585 2.916666666666765 0 7.594373878376347 0.4804983353442371 0 1.238433225992921 1.434193631382843 0.286283455400149 4.753711240173217 7.777776815004045 0.8364199081219663 4.38687293873655 7.882855882753787 0.5166815165497474 0.7391437973080834 4.086898377012122 0.5464503629908517 5.647660636817612 7.847222222222451 0 4.827903838509704 7.910343681375431 0.1535311769689296 4.705014375282112 7.718493300383979 0.1218732201524634 4.751709101293511 5.89936538070671 0.7039960706573538 1.234521377100899 9.725962160387418 0.8434686000056971 9.630673135223667 9.710489131472492 0.8365378565642164 9.430757006311511 4.58333333333356 0 5.188747756753001 3.194444444444663 0 5.188747756752926 3.12500000000021 0 5.309029062834093 9.232923881969505 0 4.130175149655269 5.559038722862617 0.4160273671019017 3.451053314479259 0.7473048405875279 0.142770394553607 8.064178077951802 3.465157159194979 0.1301186837504412 2.205850396834816 3.329889507041099 0.1482584616481921 6.485388067345391 8.819444444444567 0 6.030716899321479 8.680555555555678 0 6.030716899321472 6.110847859852524 0.1265959230262372 9.879718693918818 6.111111111111102 0 9.759437387837636 5.970372599114482 0.1538963508288493 9.724294803460179 9.875154111813712 0.1254384302214949 1.516873971906679 10 0.2484524508122139 1.384807215218184 9.875154111813712 0.123014020590719 1.377438708963953 9.686075266733312 0.1873049550735485 1.43700720658105 9.810921154919598 0.3103189756642675 1.304940449892555 9.810921154919598 0.3127433852950434 1.444375712835281 4.863171157142544 0.8792239850934214 0.7877666619601951 4.751702508550514 0.7194204335713776 0.8670577644038087 1.388924539934401 0.8436914627077146 5.999334541504408 3.105099962202649 0.6272877948637453 0.9871510636181431 1.666560035129346 0.841304238706622 1.019057376352594 0.9818879346459854 0.5770321300897522 1.600344564283817 4.026188731526386 0.2775246683785922 3.442151763013404 4.307066457660682 0.8397745920615683 1.387683405855046 4.104273191909521 0.8763055365755464 1.383912362016965 5.208333333333723 0 2.181715104723732 6.875000000000139 0 6.030716899321352 5.937298134107133 0.6354815745701203 1.113571327622734 3.576209454796657 0.1926317319735183 4.788017262458897 3.645653899241089 0.1926317319735183 4.908298568540072 3.680555555555799 0 4.827903838509438 3.659298850299879 0.1375717757185241 4.677463263058188 8.080108122742548 0.1590334515699199 4.160485054571403 2.500000000000378 0.8364197530864199 2.46237148557966 2.499771865580246 0.8517452870070059 2.277602308369592 2.361111111111533 0.1635802469135801 1.74068364909262 2.361111111111528 0 1.820871186480068 2.200982242601189 0.1482547129929949 1.832870667494323 4.738584688565284 0.3914269788498206 4.174164095933453 1.438486596253546 0.8786753216815157 2.250444123115197 6.736111111111267 0 5.790154287158996 6.596931702789969 0.1514856945752183 5.759855369790313 10 0.5071612811380484 9.297646895625693 7.296356821684228 0.8458056464891206 6.434362448520497 7.388060180980728 0.8605022584635789 6.266173795292501 2.291666666667091 0 1.700589880398892 9.722206156172273 0.1619639009469724 6.175363570885152 9.658032845999612 0 6.319954394095263 10 0.7587510567300497 3.058747727140766 9.876084305183767 0.8797186939188282 3.187649844067455 9.826398743237771 0.7047148977045701 3.193767210076561 5.049318417835352 0.6287270419647211 1.952772259442093 2.986111111111384 0 4.346778614184712 2.777777777778071 0 3.985934695941187 7.870046161240857 0.8237114182818597 4.35344506881906 7.986107301594442 0.8771403785738876 4.49380279891129 7.729291283044184 0.4819459852323079 9.128256071669545 1.818160243702382 0.1596077095474902 6.308434948869778 1.736111111111281 0 6.271279511483398 1.657269798425038 0.1374457064871822 6.410420462680027 6.666534812992855 0.4473427270132724 0.4996171754365921 6.663287080765143 0.1427489592979666 2.527317012947071 7.870046893802734 0.8237114182818597 4.112882033711927 9.117121545384624 0.5923093028520157 2.50296450995083 3.480648757132938 0.6864416777820652 8.025915404896722 3.44211162369024 0.5024989210342252 8.085965400037688 3.345610974741508 0.7091375737443402 8.061492538297765 6.736111111111223 0 0.3349364905388928 1.736111111111122 0.7995292835661338 9.558968544368874 1.356677356170049 0.853318389454914 5.283722709056541 1.318108265958025 0.6954558007325224 5.225803046285403 1.4947432058748 0.7323762989893096 5.353860584547635 6.180555555555765 0 4.587341226347263 3.944242663776712 0.1506593356000139 7.073344531439592 3.95833333333345 0 7.233529960132874 3.820590480428993 0.1227675013371157 7.139265716702914 9.709573819065618 0.8323742093032842 8.971842094409311 9.712856472379935 0.8365378565642164 9.167259078609561 4.930881755258498 0 0.7433009571155469 5.069444444444889 0.1474596757584787 0.8286921673611917 4.948710401307585 0.1216379915274846 0.9091962116063382 0 0.5140323169039066 2.083604212345513 8.813656522351767 0.4394340926552122 6.141854915668128 8.75810361176489 0.5527273145177606 6.0228056105964 7.078907273270573 0.1312971465421623 8.648778263463985 5.625548015500712 0 0.7430033925720969 4.724250346803346 0.1600668999520362 4.055168701533118 9.711092927142396 0.1686764445424281 2.664531995671984 9.829017780328311 0.2929483891567542 2.66320680272776 9.882075146814085 0.124271944614326 2.641175336263481 9.731183253273819 0.1476531599021798 2.472671816240711 9.849108106459735 0.2719251045165059 2.471346623296486 6.319444444444867 0 1.460027268236737 6.342309165586926 0.1848810397154577 1.586952238187331 6.20605844980574 0.1387400332238638 1.547023600799524 3.312381117399332 0.857358246403778 5.97654144720943 3.435490646900983 0.857510288065843 6.037096657733768 3.504935091345431 0.857510288065843 5.916815351652602 0.8127947151455039 0.6735640055533036 3.651663927079439 0.7405250631897931 0.8514429515927329 3.65162637254959 0.9183267721839448 0.8603369041947027 3.609928660313678 5.277777777778118 0.8413466983803375 3.103871784679393 5.694444444444826 0.8413466983803375 2.382183948192362 5.416666666667018 0.8413466983803382 2.863309172517052 5.55555555555592 0.8413466983803382 2.622746560354703 3.957556807241435 0.8272006584194671 3.13395905997779 4.035481437772651 0.8450343653500837 3.184112854492644 7.989862673103736 0.8541620119300133 1.194592007451793 7.982632362190127 0.7294582947256696 1.125081752860606 5.536877882730108 0.8047571627749512 4.616651435607192 5.601569983151947 0.8693957814603199 4.748526682988986 5.671014427596396 0.8693957814603199 4.628245376907811 10 0.4835643389177584 7.907036177640748 0.6747717578444757 0 6.638578434630313 5.668491170073175 0.1201938380793228 2.367199818247538 5.599046725628731 0.2837740849929029 2.327106049553814 5.616169445363385 0.2902924192475571 2.497366931176778 5.529602281184268 0.1201938380793228 2.607762430409883 1.713669592163332 0.7141939633355933 8.397053359316198 8.588259696954957 0.1894340926552122 5.951237683935661 8.611111111111239 0 5.910435593240294 1.301288413491805 0.8614959695343161 0.4125357138548387 3.376736111111499 0.4457304526748967 2.276937805371237 6.180555555555706 0 6.030716899321305 5.416666666666996 0 3.264246859454301 5.503233830846108 0.1700985811682341 3.153851360221196 5.574277362124054 0.1402737144452557 3.28162405904517 9.262719002507737 0.6887057571063995 0.9500340332498349 9.398811928742496 0.6132867246643103 0.870742334030336 9.384854343061086 0.5154750722039472 0.9981195819390548 3.40277777777786 0 7.95521779661988 3.221763514018716 0.7155859545738155 1.390666677867772 4.48279629010407 0.8436544704860945 5.968480682212046 2.534992198210242 0.8528719568016468 6.978978604590413 8.611020975388312 0 4.948237184474936 7.735844724357694 0.4958463922498914 3.109264093717033 6.646414368059236 0.15387431099587 4.091564450090494 2.865319648483419 0.5435874913109024 4.70264476707135 5.069444444444465 0 9.15803085743164 5.000000000000009 0 9.278312163512805 1.206146377310594 0.8369221500819011 8.674241117132567 8.958333333333464 0 5.549591674996773 8.888888888889031 0 5.429310368915605 4.11399360085507 0.7066786231904914 6.897719279207208 1.273995103859569 0.4781609043655079 3.191534811351166 8.680555555555642 0 6.511842123646162 5.069444444444526 0 7.233529960132918 5.211194493789016 0.1373619798988563 7.344097060488064 5.06944444444451 0.1208887852437732 7.368270036688807 2.498682817683064 0 1.101213661905183 2.555060614379603 0.1527924614790639 1.227230839947555 2.621172979563758 0.1235365848911515 1.035214243921004 7.320326732368923 0.1305425831824618 0.3839141214809373 1.945180399606071 0.4448625372458179 0.1773129301710233 2.001460209154654 0.6035790626601172 0.1806127229450576 5.278851962766137 0.8735617989773905 9.879718693918804 7.152777777778175 0 1.700589880399132 1.705595840511352 0.5516170514185801 8.35827227505068 1.753432366907189 0.6244432792959357 8.197516092163255 4.609149461493146 0.1621076141533412 0.2904284564341843 4.609290799647543 0.2842034793692751 0.1726268649945635 5.862067441154841 0.5623764616932702 8.518504581144484 7.437532574767876 0.1687484092929557 5.633807396304427 7.477728271724361 0.12087560587485 5.49663931798762 7.568834560286476 0.2713713668233214 5.492665721141835 7.569444444444613 0 5.549591674996709 7.547172716168815 0.12087560587485 5.376358011906454 2.635450793196258 0.8779041347840661 0.118382924701585 2.499301981808691 0.8779041347840661 0.1156173452587452 2.517327093779333 0.7204839864189949 0.1767784892317013 2.514189003468788 0.8425798516349288 0.2951614139332863 3.778708306501755 0.8693822880241886 5.365697580014501 3.739550605646038 0.8767285593844575 5.504108791482739 5.559182600375162 0 0.2107197226393701 5.55694185248371 0.1229802090595658 0.1051048806142585 3.574379535789879 0.857510288065843 5.796534045571434 7.484149210139773 0.8578742115349047 8.159848793028971 7.842901357472743 0.1421257884650917 9.093651583203513 7.759092034305338 0.3227486269332856 9.176012416148247 7.852010538751 0.3018063223592515 9.004925406700941 8.207789293913567 0.1608571083916145 6.798632650408055 8.292581878617021 0.3038196013527732 6.890380673565232 2.291666666667076 0 1.941152492561236 4.611079773333136 0.8401964484779563 0.9428733656403205 4.723956068551156 0.8792239850934214 1.023367748756651 4.536239334010914 0.8719390747309252 1.129551835081757 4.676862069228292 0.7511630598243467 1.053736233845246 4.563985774010273 0.7121355232088815 0.9732418507289151 7.995290785774654 0.728997154651683 0.8376655402819512 4.237672012672364 0.4638643527532406 2.984491665534527 5.76388888888927 0 2.422277716886085 5.711567164179479 0.1700985811682343 2.552444829815325 5.599046725628721 0.1201938380793228 2.487481124328705 5.625000000000363 0 2.662840329048431 4.72753340221016 0.1507319530742408 5.436508716150243 4.727533402210149 0.2746084777091629 5.57155704754261 4.722222222222511 0 3.985934695941292 4.791666666666963 0 3.865653389860125 0.1224438317631494 0.1299259320307377 2.219575200170531 0.243220059937977 0 2.217851957330706 0.2979038201045909 0.1651836140513692 2.252333792769999 9.879718693918834 0.1234362638898392 8.19382127107362 9.846885838136878 0.2672924854689955 8.280926389777953 6.366856275574047 0.6772180563460113 5.293480152870467 0.5213668856378373 0.8492079387762791 6.253688659497084 0.6033561368266009 0.7026193915501321 6.310950834698144 7.687810824885175 0.8625367109665232 3.173278267825322 0.4298280779522712 0.8064358477992164 4.065482829777165 0.5486567208138609 0.8502946430236543 3.927593368584199 9.506373615503456 0.6632854554508476 4.42422886019423 9.378939740033548 0.8520138477219348 4.419147884249421 9.488370225925907 0.8112716077289128 4.296993899900526 1.408866760068254 0.4998794407952228 7.589370008112816 7.306641323414068 0.8501854889903695 2.584064565904558 7.430555555555941 0.8823765816281921 2.51041910911807 3.541869838559276 0.8737126773840214 6.693211905594803 3.648051802431457 0.7178952149606397 6.812828726313732 3.541666666666911 0 4.827903838509432 3.611111111111343 0 4.948185144590607 3.506765010352202 0.1926317319735183 4.908298568540065 0.2366385627794127 0 0.5571689541005435 0.1199596732513178 0.1263935190958826 0.6963846731664842 0.2890793709618416 0.1667839171683347 0.6997566898975371 3.126814489543499 0.4541417897347421 8.439268795343706 4.092988973189174 0.8372036880925391 9.716899551675139 2.797727154893441 0.5348637511930321 7.907209297776802 2.917376783026842 0.4448811720407816 7.998504627540443 7.245735353386061 0.8461536821006996 7.775982128180829 3.560690258166196 0.4873880833041208 6.50547188576864 3.397820582904078 0.4324642882668142 6.602224393291895 3.501574582664992 0.6481770124893186 6.556675555654992 3.403192156973485 0.5257175057188261 6.46315395196825 8.401338105305403 0.4977686293332521 0.9478636006115522 4.51388888888891 0 8.917468245269273 8.848746327676471 0.1805215615715942 8.803714638196102 8.81944444444439 0 8.676905633107246 1.250000000000195 0 5.669872981077519 1.180555555555746 0 5.790154287158687 1.102327315670503 0.1691837858491437 5.707710624308544 6.385366402867024 0.4664144820208495 2.527234509524092 4.097222222222697 0 0.7383411741926029 3.947923900922381 0.1555754947955065 0.6596015151883591 4.094486494053185 0.1245718344232898 0.6071546081429753 1.875000000000018 0 9.639156081756369 5.498148636467953 0.1462618218843247 7.306767629015289 5.486111111111176 0 7.474092572295275 5.411748411539241 0.1257257278717296 7.495256969093582 3.234137721866749 0.4610628522113567 8.216930623496694 3.280467496130385 0.5893135011197153 8.099103143209842 3.322926832597389 0.4630283297961221 8.168186448822993 3.822044488513644 0.5606502821491857 2.345752544260653 8.958340655600491 0 0.5236452277027244 9.097266155822968 0 0.5234501297553402 9.01888888888902 0.5023268424840728 5.649032603649385 1.533741430123624 0.1233687915610148 1.239057866688381 1.533457855775122 0.2868965247063529 1.159034051027379 1.395363636268632 0.2846667229412963 1.285381948448526 1.263339523073073 0.8391423002104276 4.152438378625622 7.109902642041979 0.4907082307910668 1.274045672183392 8.141958001077438 0.8537008718560268 0.6712771435331949 8.306197078136684 0.8646167967713813 0.5902622695755653 2.754660854307161 0.5233686895467478 1.994592823243817 2.638888888889319 0.5913466983803375 1.58030857431774 2.500000000000426 0.5049269452939176 1.66049611170518 2.615771965418287 0.5233686895467478 1.754030211081465 9.876162994876562 0.4168476184130585 8.178720017534918 9.72304883301344 0.4372675761023757 8.266448309610052 3.589069820792314 0.5774378517186284 6.209522515229452 3.482893801026463 0.6849481397844714 6.055527198867182 9.160874637739196 0.1784396696051936 5.94695266080393 9.146622694811018 0.3217037702982615 6.026739046113782 9.846885838136878 0.4021119448834757 8.487820693750852 9.683507366430305 0.4804217241228436 8.415028671596552 2.847222222222452 0 5.068466450671735 6.989379084967351 0.5508654078915531 9.025957266440699 6.968425230817708 0.4450762049626918 8.860809506439917 6.89394195163298 0.6172561407788961 8.932945750070074 9.759437387837657 0 6.388888888888882 9.879718693918829 0.1287591090176589 6.528189385161991 9.737177793745349 0.2121787741089649 6.4514678909526 4.848739224458217 0.5193371521805525 8.136586893028806 4.525530441807962 0.4025685228221902 7.167743573275775 4.515868910039286 0.5017703416052508 7.008896967942636 3.398840458987966 0.4673859448306282 5.66090302874688 6.250299198068018 0.5431316560816332 0.550222298132661 6.250299198068024 0.6710916933127242 0.4884917263007773 0.8382455456706264 0 0.2280812771363285 0.8415375992687041 0.1215496320764411 0.1105343867429153 0.7936479096984923 0.1752606108002105 0.2784388743523528 8.268700299540697 0.8784807051158541 1.142055731176021 0.4281449876771536 0.8057478540768167 3.422436564605332 0.3498925350167743 0.8569145100782298 3.552210720968331 9.41431255700256 0.362290742724678 8.655154100896372 7.152777777777912 0 6.030716899321369 2.152777777778203 0 1.700589880398884 0.1202813060811708 0.8777304022929238 8.329524500838851 0 0.749021452097552 8.325302614940332 0.1202813060811708 0.8712910498046282 8.190222558545916 0.2887195556060017 0.8284461675228214 8.340270089709536 0.1684382495248309 0.6997372173274496 8.336048203811018 0.1684382495248309 0.7061765698157452 8.475350146103953 3.751146035984553 0.1227675013371157 7.018984410621741 2.081303297313669 0.1631368675373475 1.26094074485991 2.013888888888944 0 8.195780408782154 9.140000000000123 0.6025720164609054 5.574289436512082 8.346678182802464 0.1608571083916145 6.798632650408064 8.402777777777843 0 6.752404735808488 8.514464145984016 0.1656616476580746 6.856305982433922 6.527889854244762 0.8541845790095233 0.359699611519368 1.903501596680564 0.8097748528605604 7.673860142924752 5.138888888888883 0 9.518874775675194 2.786087176593677 0.1591758214235431 3.224813751980926 2.638888888889221 0 3.264246859454147 2.777777777778106 0.1221824276708555 3.362003039182683 6.102988052503191 0.8527857239387796 0.5695349923184553 6.103287250570972 0.6459173800204128 0.5559792744655168 6.111410309178892 0.7931316560816332 0.4157546510622882 6.250000000000243 0.8779600372310911 0.5020474441537158 3.472222222222205 0.1241459787118515 9.1232622384805 7.815693530805349 0.1439421255574311 3.608405350807554 1.957049132591278 0.4096077095474902 6.148059874094889 5.13888888888911 0 5.188747756753038 5.164930555555773 0.1957304526748961 5.203782920013187 5.105279993623092 0.1382560445153594 5.307794574833534 3.278056689342598 0.1992785756277805 5.574131025213429 3.263888888889084 0 5.549591674996444 3.257524523298995 0.1238214137796129 5.713641217957996 0.9309779580623505 0.6831350021172073 8.099393491882404 1.043303246610544 0.7467284539113451 8.040995751286705 0 0.3773154750776795 0.4919055828497794 7.730533893016984 0.3708887852437721 7.246347459242623 7.823103766401635 0.2684797886459464 7.076216625316039 3.391042085463623 0.1404983210647499 5.657771380162551 6.180555555555681 0 6.752404735808323 6.111111111111115 0 9.278312163512883 6.180555555555554 0 9.398593469594077 6.250000000000011 0.1490058478048805 9.255055213867713 6.319444444444445 0 9.398593469594081 6.388888888888898 0 9.27831216351291 3.496193352444349 0.7126562748409129 6.430314991160959 3.477593796291767 0.843253217452012 6.573240525790805 3.560469394711857 0.7431157347729221 6.550286370964956 0.5304856236107047 0.4558871031118902 5.872353042172533 0.6232554882281141 0.5164616368863539 5.975810497556756 1.249096279552386 0.1613448013991462 0.7854026298185748 7.569444444444849 0 1.700589880399166 7.430555555555953 0 1.70058988039915 7.496531651000181 0.1620597505846111 1.823811564858723 5.002548351961893 0 0.2242189681135597 5.003068436534932 0.1223385358219659 0.1092792372250385 9.161762870197565 0 5.907604385028714 3.094662731486235 0.8398372518496962 8.193983193734171 3.197684997976151 0.7165823869509357 8.134503260443701 1.516170635920373 0.8528776547811522 3.758491775563134 1.315230433131461 0.8822729062697163 3.787898813038586 4.097222222222351 0 6.992967347970536 9.047556842031886 0.8623358918101773 2.954021239226262 7.533878466332348 0.4756148913394701 1.049063135483069 7.663332246820781 0.4825998747508983 1.273712311359457 5.950517540409018 0.4755362854887735 1.888978105327101 1.636904761905009 0.6912637850570202 4.621378505005183 1.527777777778026 0.8787270419647213 4.604195461279293 1.650913444369501 0.1715103786509443 4.835588870884351 1.519371787051402 0.1270234150834874 4.794118453728527 3.590124168220179 0.1264100169345161 5.838774941620837 3.636607511221543 0.2708070306877954 5.958065771377756 2.291666666666947 0 4.106216002022342 9.334730013756028 0.1413413928820977 8.136658549556564 3.125000000000341 0 3.143965553373 7.834036626618027 0.715063743165632 0.8396406305336276 9.125996145928148 0.8571013393134244 6.75945490523354 9.266645231968365 0.869686977570312 6.577725404934407 7.512254901960862 0.5508654078915507 6.507125209682112 7.378056168089438 0.6466710543806713 6.590020609331431 1.031392585643994 0.5425918287551688 6.975073492025789 0.9067706219854451 0.5433744427404423 6.776268614502253 1.164633964468286 0.8317545934120749 6.978334083481844 1.301883176684596 0.8591763241487398 7.004457463715895 2.083333333333396 0 8.075499102700993 3.125000000000372 0.1576276668204385 2.545536175494067 1.31319505117703 0.4516047505345449 7.460862281721885 2.361111111111524 0.5464364956090177 1.900189375487283 2.361111111111514 0.5864197530864197 2.061433798642414 2.543292059975342 0.6298430341610203 1.956251578774673 6.707580467464352 0.5075766297772828 2.919875116000682 8.138344849469133 0.1608571083916145 6.678351344326877 1.265005659947302 0.5416932277196557 1.399297327704262 3.5972205772111 0.8726309545259523 3.117782732558475 3.527776132766661 0.8726309545259523 2.997501426477303 5.138888888888943 0 8.075499102701112 0.4091574103629552 0.1512879755114865 8.199085895216012 0.4823913230399279 0 8.200332796899081 0.5882081703532631 0.142770394553607 8.060938524244268 9.165310013708002 0.4019586180734391 9.413116840103729 9.281297395550094 0.4820870082532662 9.523200739096801 2.777777777778228 0.1587669497434119 1.259558424767957 2.624505058824045 0.3115594112224758 1.267324608641283 1.043049500558453 0 7.23273237950129 8.757101965181747 0.8712926887836651 3.173664326014576 8.20179303462875 0.5397613990760532 4.291269581798439 2.708333333333742 0 1.94115249256126 2.708333333333732 0.1635802469135801 2.101527567336156 2.685216409862719 0.1820219911664103 1.95449905455009 2.638888888889305 0 1.820871186480084 2.615771965418282 0.1820219911664103 1.834217748468914 4.566074900123267 0.8528472658299207 3.503779754649552 8.33461791703737 0.8706719475821172 0.1056148420251408 4.166666666667118 0 1.099187710378694 7.779989336469839 0.8755077457053613 0.1092792372250832 1.388888888888903 0.8415514497656397 9.406689144528841 3.427428988607079 0.5896627381209286 6.906422806754663 3.497076604943993 0.7133754155049499 6.887323745235017 4.573671801564757 0.8492018187830606 7.034589586106037 6.438191316519445 0.8281216168398935 5.436421739033925 5.833333333333608 0 3.985934695941381 6.708503319085255 0.8256833107237613 4.546143981970661 3.395781849426604 0.3742482721258666 8.203792880324542 1.685090943214543 0.8614254027751909 5.882979084287487 8.918190772120901 0.1805215615715942 8.92399594427728 6.950935960611675 0.1747041641310932 9.149702625994983 8.541604736300661 0.277023045950368 6.192728209761413 3.81399994326816 0.5177167274181533 2.137895781348592 3.917727140431162 0.6087356852106225 2.242273831677735 0.1237034657990712 0.1254384302214949 1.522314400179467 0.1237034657990712 0.123014020590719 1.382879137236742 0 0.2484524508122139 1.384807215218184 0.1392216714037994 0.3193351245339315 1.521695155289145 0.1392216714037994 0.3169107149031556 1.38225989234642 0.2629251372028706 0.1938966943124366 1.519767077307703 7.860773081586588 0.6274668036097373 5.472446964453047 7.757867524670326 0.5553083658838367 5.329934467863404 9.550804331413321 0.1560695111654427 3.222752389999715 2.013888888888988 0.8650876162095195 7.585183863911196 0.225646681056481 0 4.148434309774208 0.3021364007479963 0 4.01057287856905 0.2309985859641941 0.143985364553999 3.958512675189896 2.078197934257458 0.1549217949782679 5.743041809204267 6.527777777778139 0.8779600372310911 0.5020474441538259 6.389000965355999 0.7321446162406144 0.432436686757747 5.208333333333414 0 7.233529960132924 5.795059647642784 0.2833006659089309 8.131548017136039 7.856496587255435 0.1662274934843398 5.932621653587512 7.847222222222342 0 6.030716899321414 8.00988992512238 0.1419131964567794 5.964258066604318 7.009553465538677 0.1243210831649124 3.067053883072321 2.756376760114972 0.8473061458587299 8.20506099998763 6.388888888889305 0 1.580308574317911 1.736111111111509 0 2.181715104723548 5.949239106242741 0.4447594842027849 8.493742337978968 6.023939446023268 0.6176169774904837 8.421011495416494 1.112540919010462 0.8410349945238462 0.867211481900521 1.597222222222282 0 8.195780408782131 3.595850332613303 0.4487926798789962 6.649137789230356 6.550363500070036 0.7328217982380958 0.6302719859094756 5.46743343828568 0.8047571627749512 4.496370129526015 1.154326321056804 0.4451015236208475 7.4151508473841 1.351280208176019 0.4452747314882912 7.299987944816467 6.454953747431809 0.1427489592979666 2.407035706865867 6.45495374743181 0.3577695354296536 2.407035706865867 4.513888888889106 0 5.309029062834165 4.449056159400859 0.1241459787118454 2.465034060451059 8.580665330056943 0.3150350806561164 6.033298916477258 2.771491192328806 0.5118151204748351 1.824500748281579 2.794608115799839 0.5797931293084249 1.650779111517854 8.611805419089592 0.8376810329640543 3.747996723013847 3.95833333333381 0 0.7383466224006789 7.84722063153832 0.8364199081219663 4.507154607341834 7.079706212533026 0.4403039335848512 9.039723365896499 8.541666666666684 0 7.233529960133179 8.54165948488415 0.1956101125769538 7.263781658694798 8.611103929328605 0.1956101125769538 7.143500352613632 8.472222222222241 0.1204819298434898 7.221608088867101 8.472215040439707 0.3160920424204436 7.251859787428721 8.402777777777786 0.1204819298434898 7.341889394948266 0.9771999023242977 0.1688853773266334 0.792659649525555 8.432189474840104 0.1383627718753626 8.437910251923704 8.571078363728986 0.1383627718753626 8.437910251923718 2.500000000000259 0 4.467059920265866 1.458333333333534 0 5.549591674996357 1.597222222222423 0 5.549591674996364 1.529725014095022 0.1434283786725709 5.563579192758795 8.68052902262548 0 7.233544529844165 8.702470426164092 0.123876675986523 7.060489442008366 8.629053322794446 0.1273660142034075 7.265664639568831 2.615771965418275 0.3021163310544486 1.964004154032915 0.637199007997906 0.5140730887414144 9.56528692934436 2.84722222222219 0 9.639156081756333 4.038782273098161 0.1244705656584144 1.885634873246722 3.969337828653711 0.1244705656584144 2.00591617932789 4.652777777778205 0 1.460027268236678 4.534876225458961 0.1455878178189122 1.435452319295877 4.652777777778198 0.1229568651879164 1.607662615127106 5.741649238915514 0.7216069610795312 4.659200118753461 7.013888888888872 0 0.334936490538808 7.055304419217856 0.1976001875015425 0.4052958196254954 6.896664683940239 0.1597524083904545 0.3744427275759137 2.351948913948746 0.8705895807821131 3.820269824168046 2.490837802837638 0.8705895807821131 3.82026982416805 0.7244954769534643 0.1720200465027283 9.469583843641955 0.7324514946450864 0.3944101397210303 9.48796189729498 5.127433974303303 0.5068538859826799 9.426716278225996 7.916666666666969 0 3.745372083779162 7.270482375943476 0.8325634243018246 1.211029000419012 7.149656561340302 0.6942655653134864 1.166501271719526 9.420606903321243 0.871127348154037 5.809641885623583 9.424729297776166 0.7184362778399225 5.653836030438602 9.325075937803593 0.4206957406987198 8.214873677413252 8.064421029179805 0.1272208837726727 8.970775518768487 8.203309918068676 0.1272208837726727 8.970775518768505 5.971889961259222 0.8788004545017717 0.5080332843403994 5.963766902651301 0.7315861784405513 0.6482579077436279 1.204259404227242 0.4810351939103298 6.82429348867307 2.569444444444487 0 8.43634302094452 2.510522936454596 0.1468227807369978 8.390173832056096 3.625699112816952 0.5094608608592379 3.615758509315044 0.8553354487682197 0.1639555938025899 4.53996641978892 0.9027777777780287 0 4.587341226346956 0.8856427778186209 0.1660608716453998 4.741097190234429 8.194444444444759 0.84135423453542 3.665184546391736 7.930217526031054 0.8774668036097373 5.271978120984444 1.825757429598768 0.5256121259321526 7.181298528144499 6.388888888889111 0.5349794238683179 4.146309770716305 6.380270645222021 0.4571136740874643 3.992647208788253 6.388673766831139 0.6607776241938899 4.071471920329722 6.518944412052928 0.5479324505447183 4.078184433176568 2.735321742797075 0.4098235277562505 7.893394078155698 2.894160008801556 0.4446872789492826 7.805291810618924 8.402777777778095 0 3.865653389860372 8.473685721060956 0.1617307650720728 3.747262912258836 8.289828639807 0.1201963424226315 3.800442174648017 1.19236449898519 0.4515237666588223 7.254215345656585 7.331172638646704 0.4650746570538928 3.38521539795195 7.847222222222602 0 2.662840329048613 7.708333333333709 0.1635802469135811 2.74302786643605 7.883397023576041 0.1367766455919562 2.732252565705128 1.171835528829725 0.1386110194540011 7.003388496636878 1.636904761905004 0.812536743092299 4.724805576154047 6.984126984127169 0.8125367430922994 5.291846019108445 6.914682539682719 0.8125367430922994 5.412127325189612 1.597222222222523 0 3.625090777697617 1.736111111111411 0 3.625090777697625 4.166666666666815 0 6.391560817564681 6.359126984127069 0.8125367430923054 7.57719083465066 5.273327896682819 0.4055327277210125 6.635771763097016 2.500000000000203 0.8399825791522511 5.567469858937748 8.588632037137927 0.1423945816560306 8.008289864723473 8.472222222222197 0 8.075499102701375 8.571078363728997 0.1383627718753626 8.197347639761375 1.074032331456885 0.8598437086201635 5.175557523579378 3.354860833888734 0.1419959775957443 1.965544771880002 6.005052762260718 0.8661097709648756 1.180801068599369 6.143941651149607 0.8661097709648756 1.180801068599374 5.538194444444583 0.8042695473251045 6.66219375624741 9.23147456544239 0 3.387205076425891 2.083333333333579 0.1635802469135794 4.627434995040735 1.94444444444469 0.1635802469135794 4.627434995040728 2.222222222222458 0.16358024691358 4.867997607203083 1.987142560092374 0.2612246324065098 2.285566522766524 7.838020050978647 0.8713278722310592 8.511217682287665 2.484445100217329 0.4027924614790639 1.192856061517607 6.101590348881375 0.1285262082332657 7.909627213290021 8.402777777778127 0.8714737917667386 3.2933469988757 8.472222222222575 0.8714737917667386 3.173065692794532 7.500000000000038 0 8.797186939188295 2.991900242035856 0.2886923870158845 7.266128245272228 2.075180746146672 0.1604107988874005 0.7884945478826183 6.514273636495743 0.5007148638521554 2.052359254459768 5.707948585727182 0.5007148638521554 3.513884015799505 0.4025212693926442 0 9.542251823894908 0.5550436253137809 0.1501249539808968 9.612792392562461 0.445147211910462 0.1670832432132716 9.437470165513759 8.278885416634306 0.5756408030666638 8.593885136405515 8.103231821863066 0.6265062109582257 8.681148044738894 8.159203959923104 0.6954583380430988 8.5183788200296 2.22222222222265 0.5464364956090177 1.659626763324931 2.361111111111542 0.5913466983803375 1.580308574317724 2.178485988139048 0.6297607796964505 1.474869910408752 7.356096346062408 0.1292143433068512 4.637266716328897 7.494985234951299 0.1292143433068512 4.637266716328909 5.844021320746258 0.1296148120309221 7.904861045098225 5.774576876301801 0.1296148120309221 8.02514235117939 8.78221406071706 0.2732040541986023 4.705513885633956 5.16280191048553 0.5271309777907245 7.517783244285352 5.213834651785299 0.315269063559342 7.464378366569237 6.491665570236274 0.5375267617852459 3.931810079649348 3.680555555555518 0 9.398593469594047 3.819444444444416 0.1407332347052415 9.300438276201685 3.680555555555529 0.1241459787118515 9.243543544561712 3.475541284580956 0.8707855311253142 3.331666265476428 8.314454432353404 0.4056773146987181 0.8360244095809428 1.264986249627721 0.1279627178826019 1.74933596434902 8.779301883232025 0.4305215615715943 8.843808406889821 1.510655058043257 0.8299014188317669 7.123134460899637 1.371327621129029 0.8591763241487398 7.124738769797071 6.319444444444557 0 6.75240473580833 3.680555555555828 0 4.346778614184749 1.769612155450603 0.5159528782567571 3.633380136397925 7.15315893214483 0 0.5262150660625117 7.7718224930872 0.8397674603699758 0.7888695790436357 0.3419573291866578 0 0.4866996346223438 3.366911155378886 0.8767451351012396 7.895737863329407 3.297466710934449 0.8767451351012396 7.775456557248233 1.774970611609731 0.5665211664420965 5.276068675969825 5.971970337754426 0.1262671878530603 9.879718693918818 5.833333333333325 0 9.759437387837639 5.833081448865538 0.1262671878530603 9.879718693918822 5.970120714646696 0.2801635386819096 9.844576109541359 9.878396420688649 0.1265785768688975 2.370719240347921 9.878396420688649 0.124271944614326 2.509360060811338 10 0.2508505214832235 2.501209322855839 9.849108106459735 0.2742317367710773 2.332705802833069 9.727504527148383 0.1476531599021798 2.340856540788568 0 0.6330885066268594 0.8988254449018753 0.1583676738675522 0.6041455732270584 0.7408792476126739 1.458333333333734 0 2.181715104723531 5.967640260143668 0.4869815650373445 2.059238986950058 7.407473705054088 0.5038272894028299 2.728280556801774 7.560628565148366 0.5932107807365561 2.63985655709866 7.353003917356672 0.6040127783931994 2.609411024964031 9.908795366082721 0.8793045587012112 9.302891171605573 9.908795366082721 0.8793240796385209 9.163364407611294 10 0.7586286383397322 9.168708600419794 9.836280415839303 0.7158424152654277 9.305961580054277 9.836280415839303 0.7158619362027374 9.166434816059997 9.745075781922024 0.8365378565642164 9.300617387245778 8.329589599815876 0.1219970930431309 9.879718693918839 8.333333333333272 0 9.759437387837682 0.6956696143599148 0.515066625194472 5.799148117699044 0.4204902523446392 0.8569145100782298 3.678024245239661 0.4828758933238039 0.7072091531018841 3.736247582254329 0.6179411965350172 0.8502946430236543 3.803595420793401 0.4179981218870081 0.8677447633322468 3.829140436953035 0.4803837628661728 0.7180394063559011 3.887363773967703 9.682344540037823 0.537064214320266 6.463531767695477 9.857459099826521 0.4696699892912463 6.38209204773886 9.701734587659555 0.5564542619419972 6.267707958017773 9.367193956640948 0 5.785647465924328 7.430555555555581 0 9.158030857431811 7.394348426993459 0.1497319236125793 9.098747515466286 7.253751286386207 0.4983305803154352 4.347280025481711 6.727102594273955 0.8424302781757766 1.536114791015367 6.844191852165139 0.8644682834077597 1.632710351297122 2.771213412761671 0.8420954585849854 2.829540688621416 2.777777777778142 0.8770461989223224 2.690175263956942 3.672499841368154 0.6838452756975469 6.94585209008615 6.041666666667078 0.158653301619663 1.780777417786521 6.041666666667074 0 1.941152492561416 1.875000000000115 0.8413466983803374 7.313717497520217 3.878439494534925 0.8767285593844575 5.504108791482745 3.886134537041502 0.7462258263677651 5.64732804255992 9.443766737400228 0 0.2237228281694673 9.445145447775662 0.1206954412987889 0.107372731398991 7.402020840965966 0.5596583521978828 0.9728925238726656 7.379771076089856 0.4757246371008295 0.8046681736915937 7.525266350928042 0.4813536736884495 0.8837112074908409 0.08913836332837655 0.8232286287708426 0.0890824010774708 0.1901049278499122 0.9116910703956098 0.1009665645215357 0.1009665645215357 0.9115375583752328 0.1900489655990065 0.1670016308270596 0.7283581574776047 0.2559584054909845 0.2679681953485953 0.8168205991023719 0.2678425689350493 0.2561399941554361 0.7285116694979817 0.1668760044135137 9.826398743237771 0.7003486315013947 3.332054848179033 9.874162994216539 0.8753524277156527 3.459934608481096 9.859007586146044 0.7194513946762966 3.527853336826454 0.4096152301470339 0.8486597617333745 6.155823352032623 0.5578001112616555 0.8492079387762791 6.123887361227892 1.458333333333495 0 6.752404735808062 5.842374147214378 0.8526775415390966 0.8895409041744438 5.687304959271279 0.83954699494559 0.7936905585847576 5.833001072370561 0.8788004545017717 0.722688468798206 5.68697269830805 0.7183474494473617 0.6577582895521237 5.842041886251151 0.7314779960408682 0.7536086351418098 3.611111111111438 0.8415812849648975 3.376618524491908 3.541666666666636 0 9.63915608175642 7.508559260933172 0.8718299033582348 1.745625340696479 3.680555555555912 0 2.903402941210683 5.618408530327098 0.83954699494559 0.6780732133260055 5.76410464342638 0.8788004545017717 0.6070711235394538 7.262431212393889 0.3217842498578008 0.1906406351678591 6.250112076466866 0.8541845790095233 0.3596996115192579 6.859591219771066 0.1769647993731156 7.27950864999403 6.944444444444477 0 7.35381126621425 7.001590551150111 0.1602242778540469 7.444837273358431 6.862701662261239 0.1602242778540469 7.444837273358408 5.514174277493586 0.4104672666453295 7.353029669815742 5.5054945963132 0.4912584045285239 7.205871516506221 4.861111111111498 0 2.301996410804893 0.4582533213201355 0.8407539444192098 7.592368049194722 0.6175810965375246 0.8458201489962057 7.512334099424237 0.6790582360724444 0.8712102401711018 7.64180310028325 1.23641675650652 0.1609839728816268 5.597779825050759 3.333333333333352 0 8.797186939188091 9.760471567502734 0 2.510685253755562 8.125000000000078 0 6.511842123646123 8.19444444444451 0 6.632123429727303 8.166760329552957 0.1396980012165794 6.572713008003429 2.638214763038072 0.5556452742314631 1.419901856271618 2.823033519033268 0.6294793894795168 1.473992622534321 3.819444444444472 0 8.676905633106939 1.726242480205476 0.7530362522925791 6.428006767606117 1.547275358234838 0.5542882185808358 6.568430839575501 1.537436898917812 0.6829042284883802 6.488262752983275 5.233788773148175 0.8220214763374476 8.799584747024895 5.139933977248202 0.8457800690876467 8.660444393536903 8.818935676108348 0.8623742151233711 4.98417904213329 9.77261859828517 0 5.548436642616315 9.86530710880167 0.1292899076599623 5.552405167840156 3.865346188050213 0.8587356852106225 2.192328451247836 3.852839107228895 0.7323785006833091 2.251092429961112 8.603516744213225 0.1256009880009042 5.992496825781892 0.3778007103212489 0 0.9083385044690756 3.333333333333329 0.8797186939188282 0.1202813060811725 3.194444444444442 0.8797186939188282 0.1202813060811718 3.315919121413913 0.724439411035907 0.180204239387618 3.315919121413914 0.8447207171170789 0.3004855454687898 3.786737519427878 0.8441825375766183 6.872021556527111 9.449839876499329 0.1434784158815317 3.435265431344278 9.420976716681302 0.1434784158815317 3.306116761064469 9.401573846581924 0.5831634192592346 1.251066406670079 9.442976038698514 0.4707909750494902 1.400781340951495 9.859007586146044 0.5896092213711589 3.458815679284921 9.655034636248445 0.5575410762752544 3.529478827414873 8.402777777777676 0 9.398593469594211 5.286266757223022 0.3975760981479933 2.387085062759993 9.374639113696638 0.1519586180734392 9.457687119789291 9.419205300589098 0.3861883569668856 9.461743803881017 9.491813883987902 0.2342297388934464 9.532311255151855 9.58009875253935 0.1326241255232359 9.463357786841932 9.507490169140548 0.2845827435966751 9.392790335571094 7.638888888889287 0.1637226612108351 1.740905651011607 9.576028756592578 0.2563612289275509 9.575706769584738 9.44317770114867 0.1237371034043149 9.640603553802935 7.847222222222676 0 1.219464656074564 7.70843989190328 0 1.219646119488253 7.789205984038291 0.1479821914061397 1.352636777306525 3.397820582904082 0.1824642882668142 6.522036855904447 3.402777777777928 0 6.511842123645826 7.638888888889284 0 1.820871186480336 7.507981970547601 0.8459682467713415 4.763660379746121 7.49860769711859 0.8756083724777567 4.621230020361486 4.791666666667059 0 2.181715104723717 8.541666666667044 0 2.662840329048667 7.847222222222389 0 5.549591674996732 7.729995177451164 0.1504957609484714 5.665899384232098 7.86385233075216 0.1263976220184329 5.701515052247755 7.569444444444842 0 1.94115249256151 9.371397210757424 0 5.547511603657599 7.777777770801294 0.881467568011599 3.825559617138556 7.919519819327925 0.7074806800491369 3.834894715230434 0 0.3877826956047616 2.013713624778506 3.497467906921796 0.3263331731085038 6.555616185543614 2.569444444444624 0 6.030716899321094 7.292411876597446 0 0.5288019318072843 8.402777777778203 0 1.941152492561629 0 0.500806073778281 5.968549772218093 0.2067552547638374 0.5458713717764253 6.011229987135955 0.1554406897715304 0.4139487257364426 6.110014243052218 2.870792171948712 0.1771433318480924 2.942035546376782 2.777777777778125 0 3.02368424729181 2.716642732149239 0.1591758214235431 3.104532445899751 8.055555555555724 0 5.429310368915586 6.250000000000259 0.4427524360012827 3.869536826064529 2.361111111111413 0 3.745372083778828 7.574231447885083 0.8457339069164008 9.235454617094192 7.638888888888878 0.8417093379676351 9.405704651133156 7.708333333333741 0 1.70058988039918 3.830784143690632 0.8729893406170426 6.118008140796478 3.859148623226531 0.7143244882273602 6.265998672973685 3.917253368424952 0.8413351476103176 6.298988737579538 3.768599556152735 0.8694030573889009 6.248635282934823 3.710494810954315 0.7423923980059435 6.215645218328969 0.9943005722138181 0.8423258720076678 1.36126817826106 0.9956750590920402 0.7187362600829958 1.509489873835795 0.7309449922443358 0.5140045039444162 9.365869132001725 0.6615272003964774 0.5335899321598694 9.513416629608809 1.745154408111446 0.5810528750812226 3.437850196845468 2.488754326795139 0.8694810271100778 3.570062177137228 2.558198771239578 0.8694810271100778 3.690343483218404 6.944444444444432 0 0.2405626121623411 6.944337491220776 0.1204475720335697 0.1202813060811718 0.6640218152800687 0.7017375946163872 3.70984970956425 0.601636174300904 0.8514429515927329 3.651626372549583 0.4665708710896907 0.7083574616709627 3.584278534010511 8.559608878349991 0.1273660142034075 7.385945945649996 1.944444444444555 0 7.353811266213945 2.777777777778179 0 2.061433798642436 2.291666666666896 0 5.068466450671704 5.763888888889285 0 2.181715104723746 1.736111111111386 0 4.106216002022314 3.055555555555877 0 3.504809471616513 2.013888888889137 0 4.58734122634701 5.208333333333671 0 3.143965553373116 2.152777777778008 0 5.068466450671696 1.805555555555874 0 3.264246859454111 1.736111111111435 0 3.143965553372935 1.875000000000118 0 7.233529960132769 1.944444444444699 0 4.467059920265837 2.222222222222457 0 4.948185144590529 2.013888888889004 0 7.233529960132776 5.416666666667021 0 2.783121635129604 5.347222222222578 0.1635802469135809 2.743027866435876 7.708333333333711 0 2.662840329048601 1.597222222222257 0 8.917468245269163 7.013888888888941 0.8364197530864214 8.275967946169882 2.430555555555979 0 1.7005898803989 2.569444444444868 0 1.700589880398908 5.785679799854282 0.8766299455894082 1.535133138190202 1.594082877941805 0.8647899515693644 9.560781045634254 5.002214049187353 0.853263890752325 8.738006666819583 5.122674938508665 0.8780025834037448 8.868013347958948 5.12372002686797 0.7237826524913915 8.731270802307669 1.386804278863397 0.8771355145795775 0.1051434812376058 1.381389200539942 0.8417593130462617 0.2705908734257726 4.111304540231557 0.1442420524969545 9.711213189050374 1.111111111111146 0 8.797186939187959 1.180555555555587 0 8.917468245269138 0.9589084847230949 0.8088148179322687 4.515745657343045 1.048652436185854 0.8704551905130299 4.416519682069886 4.027790115009195 0 0.4292992532404334 4.025043812070198 0.1245718344232898 0.5127791418128707 4.163941513267106 0.1245718344232898 0.5127712020450717 4.025042049608498 0.2491154270606303 0.4224658998455073 3.888890651350588 0.1245435926373405 0.338993951040869 0.9027777777778034 0 9.158030857431473 0.3453000549941433 0.566662054727927 0.1668760044135137 7.430555555555683 0 6.030716899321388 5.61068342285709 0.5134504258943814 7.377497626148328 5.602003741676704 0.5942415637775759 7.230339472838807 8.280812148709551 0.1540317532286578 3.243140525061991 8.402777777778134 0 3.143965553373344 8.409030969631987 0.1245512918165134 3.305739561817066 7.782408217954493 0 0.2143841178393825 7.918948468985053 0.1218243736177675 0.1051048806142993 7.780126415636095 0.1218243736177675 0.1092792372250832 7.670385806992179 0.1658151237633826 0.2768933737951941 7.806926058022739 0.2876394973811501 0.1676141365701108 7.809207860341137 0.1658151237633826 0.2727190171844102 5.296960982481944 0.7115461890837 5.689734603762564 5.219921133638256 0.8708062294003611 5.7160458564096 5.094451236905562 0.7483304439964649 5.638372396903263 8.472222222222525 0 4.226497308103893 7.822209787489847 0.4610036806582738 8.957169062222242 8.819451766711602 0 0.5236452277027112 8.747030298795931 0.1501298017486674 0.4998177999488113 5.019860296441188 0.2843138985150714 2.717707541511873 0.7638130936975002 0 3.624235954693164 8.861957051009554 0.8647165221498314 0.5875745953952743 2.638888888889334 0 1.339745962155396 2.569444444444883 0 1.460027268236564 2.485616169935152 0.1527924614790639 1.347512146028722 5.069444444444661 0 5.309029062834203 5.005311179987938 0.1507319530742408 5.436508716150263 5.174724438067529 0.1382560445153594 5.42807588091471 9.718883874666119 0.1582555638349667 6.586861309885285 9.658032845999612 0 6.458843282984152 6.532871853873194 0.8455064456909827 0.7813742666481275 6.458333333333817 0.8779600372310911 0.5964213225303714 8.750007322267189 0 0.4292713493262083 8.749240879721851 0.1779170276165863 0.3982389961996806 8.608134087640458 0.1501298017486674 0.4998568195383675 3.534601603639418 0.1301186837504412 2.326131702915991 3.622144247746254 0.289099725957972 2.271699033016755 3.559039300724542 0.3074187122598697 2.445072870430542 9.462002371295412 0.3649575325840484 3.554318928445467 9.435227500728175 0.1515154232694378 3.591090969467056 10 0.5061932149929163 1.803093177260046 4.534876225458971 0.1455878178189122 1.194889707133535 4.444444444444891 0 1.099184446371873 4.568030839484949 0.123618508585231 1.018471718536889 5.734932938169154 0.5090962398322784 6.786988418843153 6.313323223971445 0.7326012690307528 8.730132005936712 6.438207306723896 0.6912637850570292 8.8145343873109 2.794608115799829 0.8297931293084249 1.81115418629275 1.319444444444622 0 6.511842123645709 1.250000000000176 0 6.632123429726871 2.690446355233799 0.8489327541189902 8.596177049561778 2.759890799678242 0.7276597960837118 8.613031284494088 9.047117157692879 0.5176887209925374 8.20439994276731 7.083506071415885 0 0.8600557598672922 0.290879640109433 0.1557899202339851 5.379573896069724 0.171328233990225 0.2850798278939474 5.38345009005678 0.7290931831697991 0.5202917486774356 3.793655860993982 0.6184259209071835 0.5045739438939782 3.940842542342786 3.402777777777755 0 9.158030857431637 0 0.256009213590482 5.560760948610795 1.66974582097523 0.5141668463835821 7.110996797605107 2.622084767618888 0.4457602271734924 3.143654256206172 6.597222222222433 0 4.587341226347272 6.736111111111326 0 4.587341226347277 6.659201802578559 0.146513116903679 4.721344911904618 8.418587080777513 0.5594167430183491 8.435059593629106 8.490164433905548 0.2478479440468973 7.374024074383918 0.3505246602455419 0 5.906101702302019 1.517627316455955 0.1312975886365508 1.750500618227878 1.532650494329917 0.391740500391183 0.1380771089897715 1.645079041519937 0.8466337213622368 2.129157714839957 7.222222222222323 0 6.391560817564891 5.994656031258485 0.3042156302210025 0.2960024177529159 8.921637070286373 0.152587627797984 1.161003153567896 6.619807944514477 0.8548617610070046 0.6519087890476423 5.208333333333389 0 7.955217796619942 1.527792972164209 0 8.075490330217896 6.020944951608562 0.4547048117642491 8.618433785414899 9.553672955475232 0.4612060573719874 8.895994764390769 9.512614500576351 0.3344616332876862 8.766440768214512 6.250000000000226 0.4424557280885367 4.104182653265836 2.569444444444853 0 1.941152492561252 2.569444444444845 0.1200943398880383 2.070938898125253 6.111111111111513 0 2.06143379864259 6.041666666667064 0 2.181715104723759 2.083333333333603 0 4.226497308103506 5.486111111111448 0 3.14396555337313 2.013888888889164 0 4.106216002022331 5.833333333333707 0 2.542559022967262 5.555555555555898 0 3.023684247291958 5.763888888889253 0 2.662840329048434 1.319444444444466 0 9.158030857431505 1.458333333333357 0 9.1580308574315 2.150342922806808 0 0.3296546581455673 2.011322422118202 0 0.3257712350314936 2.079021690962758 0 0.4309725288571684 2.102563014268874 0.1513980192992155 0.3717338715611295 2.173884246112925 0.1513980192992155 0.2704160008495283 7.569444444444438 0 7.714655184457831 2.847222222222467 0 4.827903838509392 8.541666666666995 0 3.625090777698038 8.680555555555884 0 3.625090777698043 8.612574609949847 0.1617307650720728 3.747262912258845 7.02732318884966 0.6274085092316919 1.210836087872792 7.720588235294176 0.5508654078915507 6.707594053150747 7.594304034551953 0.460473117439041 6.630344847070635 2.560915228704166 0.8736919786612428 3.057160994872056 1.527938085160593 0.1282040521437433 0.1051434812376058 1.459029657729964 0.3140754526736038 0.175351724704478 10 0.5138279657441783 9.029206698067501 9.804652024779598 0.4500787632030352 9.016622854241273 9.832997762524986 0.5879228618684476 9.039070172098272 0.1164582663628873 0.8772776834109657 1.66395652342316 0 0.7544357112739661 1.664525729397132 0.1743183328204768 0.6964782829730009 1.617253887207855 9.879718693918829 0.1202813060811714 4.166666666666663 9.879718693918829 0.1202813060811714 4.027777777777775 9.759437387837655 0 4.166666666666664 9.711807532296046 0.167911161622784 4.062354087328451 9.832088838377217 0.2881924677039554 4.062354087328449 8.194444444444819 0 2.783121635129811 8.157671511447065 0.1555867935794694 2.671266501101341 9.221951458965584 0.5745195706335172 1.024017512157978 4.086950568776166 0.8769021580456224 3.699347973202903 2.822747748864964 0.2608618445766848 7.323386577597383 1.042345460713384 0 3.144357455298277 1.180632123675103 0 3.144009759997123 1.112860619842056 0.1516757104884006 3.275019083146637 1.732641320352304 0.5632086782710448 0.1281782690338479 1.73044544176093 0.4413625098452916 0.2662553780236194 1.65459104667829 0.6465476308676718 0.2931429616263955 1.049739633763112 0.537217057447044 7.314160664100437 2.738648987818457 0.2712823764512115 8.851247829951495 4.293300653595096 0.5508654078915516 3.379811251571438 4.417705537056191 0.1665370301854105 8.541186611647326 1.941742689542699 0.8371905996125872 2.684088844208466 1.789791097981115 0.8568219863334681 2.777267138286155 1.787089343079021 0.6940125859460553 2.678234347365192 1.720346653536684 0.8568219863334681 2.656985832204976 3.737492919179069 0.8736428154726866 2.36076038951811 5.049526504629643 0.822021476337451 9.118736358016879 5.694444444444871 0 1.33974596215555 5.625000000000432 0 1.219464656074374 0.6630869671265301 0.8531588934894209 0.264264700689809 0.664409014986461 0.7236103863748127 0.1497196059844325 3.689871277854088 0.8576336392489159 3.223544630387335 6.944444444444483 0 8.797186939188276 2.694865103028864 0.5505085537875198 4.881244282161566 4.605683778455353 0.8719390747309252 1.249833141162932 8.741411698883342 0.8729451841750042 5.114135739478199 8.741112220491118 0.7353193992983752 5.029734970340485 0.6997396241199606 0.1208976602350968 0.1105343867429153 0.7874068295257723 0.2961582710353072 0.1679044876094375 5.296443576799762 0.4421125284214905 7.520354613095719 5.275499680646632 0.3036328115322154 7.615538275174746 8.749886701186794 0 2.301930997704642 0.9055693414437566 0.8389954650074678 8.364185758600218 9.454049898198146 0.4353036385323898 5.551233018179062 5.797090396224203 0.8378862996924782 1.273184964575908 5.855124244298731 0.8766299455894082 1.414851832109032 3.888888888889313 0 1.580310129962623 4.513888888889213 0 3.38452816553542 4.652777777778102 0 3.384528165535428 7.291666666666754 0 6.51184212364607 2.014232259281277 0.1236874120287731 8.828501484316291 2.112268350465245 0.2815286724870341 8.771900320680935 6.7713789062582 0.8715681322205042 2.603180588612339 10 0.5052735845683209 2.365056569932151 9.851655695755104 0.591352437011922 2.219115473539246 9.849108106459735 0.4038287132320626 2.262924893678246 0.8711311506174713 0.558077664854574 6.941483338562747 1.527777777778225 0 1.339745962155333 1.389399983923234 0.1612979313802815 1.386070043915479 1.394852541234735 0.1233687915610148 1.239057866688373 4.194622514256946 0.8322946145458792 1.264100440374646 4.132229039499364 0.7086001511214257 1.30826427740549 7.721805639717791 0.1810478729151193 7.030666966730102 7.708333333333371 0 6.992967347970778 7.870347651162454 0.1475910034021743 7.023305357512813 7.708333333333457 0 6.030716899321404 6.805555555555769 0 4.707622532428454 8.472222222222543 0 3.745372083779204 8.402777777778104 0 3.625090777698029 8.334342415069273 0.1635973763874874 3.665150085797358 8.403786859513724 0.1635973763874874 3.544868779716193 8.473231303958164 0.1635973763874874 3.665150085797368 9.232377510137443 0 1.702745475926827 8.240082798406334 0.6020734757374064 8.668330445293126 8.287759064713851 0.728579686695632 8.632479088231118 2.614225076510615 0.5950469656137498 0.1590410068335094 2.457893841230637 0.619715707570105 5.765422536416802 2.457893841230645 0.7166193491989746 5.619280757520185 7.986111111111238 0 6.030716899321423 7.847222222222261 0 6.992967347970786 4.513888888889271 0 2.422277716886045 9.359637005848381 0.8462343873563604 1.407712119760792 9.499659059436055 0.8340628810678065 1.336325820187539 7.318667389402041 0.2820135312550783 9.024052231137928 10 0.3733699758527643 2.573478299550391 1.458333333333506 0 6.271279511483388 1.597222222222394 0 6.271279511483393 1.518380909536151 0.1374457064871822 6.410420462680023 2.621001910789362 0.8489327541189902 8.475895743480605 6.718655572402817 0.8761733505124025 7.060911008446997 2.222222222222408 0 5.910435593239904 3.958333333333299 0 9.639156081756445 2.369323178063994 0.1274477520337056 3.342922506357963 1.66627646078083 0.50483197185196 1.179596172853936 1.665245008698817 0.4802693944280247 1.021894610639602 1.804311823920787 0.5667416612826867 0.9423447585715772 7.500259666581378 0 1.099815691062447 0.6889490542569517 0.8478129270843973 5.72153435226385 9.370569117749866 0.2756957214777541 9.570036102532097 3.950460799087482 0.8569099150346248 4.781657140014575 3.888888888889146 0.8797073621149415 4.598082789771094 5.347222222222275 0 8.195780408782291 1.667694621090699 0.8753950918236664 9.434443220193277 1.806583509979591 0.8753950918236664 9.434443220193309 9.881042876086408 0.123014020590719 1.2444954801474 9.75619698790012 0 1.376562236835895 9.691964031006005 0.1873049550735485 1.304063977764496 5.277777777778134 0.5913466983803382 2.783121635129599 5.25603542984222 0.5677122449590577 2.930943759470885 3.043939276105567 0.5417848136696466 7.92543373809214 0 0.6299664115382819 7.014707543370646 3.316325901745483 0.847485880854659 5.509287445486116 1.458416450972011 0 2.903450929201432 4.002451035166802 0.6698247689593718 6.291303705204527 3.974086555630903 0.8284896213490542 6.14331317302732 6.388888888888992 0 6.872686041889501 3.959894234894597 0.4638643527532406 2.824116590759616 5.902777777777942 0 6.030716899321284 6.041666666666823 0 6.030716899321296 6.003707223166538 0.1602242778540464 5.914412569802493 7.594753086420099 0.5714837977345739 3.194273338803514 3.379897663127605 0.2655831799300317 8.217731553658812 5.672702096508917 0.4812924918726407 2.369630997758757 5.256035429842211 0.4812924918726378 3.091318834245781 5.416666666667025 0.504926945293919 2.702934097742153 5.533813207620012 0.4812924918726414 2.610193609921098 5.394924318731112 0.4812924918726387 2.850756222083439 1.106897099798122 0.8822729062697163 3.908180119119748 4.670481253829055 0.6711922695271617 8.163056047316879 1.388888888889074 0 5.910435593239869 1.319444444444625 0 6.030716899321039 4.861111111111176 0.1208887852437732 7.48855134276997 10 0.4997376082337661 7.084356936964294 9.841371242791176 0.5931940063253982 7.071937610504717 0.7663675079485357 0 0.9798960240049571 6.11909308165856 0.8459682467713473 8.019461255383565 6.116625661196988 0.8812515549537121 8.15565085113394 0.4369759791064244 0.4026896668134484 4.478931758788688 0.4748287674214342 0.4348054206581898 4.67306943231632 7.153142421388677 0 0.3350000663138685 7.083697976944225 0 0.429373944690333 5.902777777778089 0.4650205761316872 3.464715702922947 3.91075630828478 0.1209504778896641 7.767374113625939 2.665846960061389 0.8293108937818878 4.291120595842858 3.774201868116726 0.8118703884422573 5.868516728024039 3.761339699246193 0.8729893406170426 5.997726834715303 1.810239651678587 0.1311840450897702 6.051530723489579 5.625000000000436 0.1186994392364495 1.062428974542184 8.487570362481268 0.1429624929611587 7.084715371128006 8.348681473592368 0.2634444228046485 7.193074805943095 8.894811259519919 0.8604828693606903 6.979322688514694 3.819444444444534 0 7.714655184457554 3.980200752729231 0.1209504778896641 7.647092807544766 6.666666666666659 0 9.759437387837648 6.665534522265341 0.1209172054079 9.879718693918822 1.597222222222261 0.8413466983803366 8.837280707881716 1.388888888889145 0 4.467059920265809 10 0.3789316954287745 3.537632914301298 9.796027050102401 0.4698740023109372 3.53923340444121 9.843229446672371 0.4162519819720893 3.689715181883881 0.4893063086654822 0.7916829955231125 9.550810203284529 0.4027488492686269 0.8624907236218067 9.635923304828259 2.916666666666888 0 5.18874775675291 6.597222222222669 0 0.9789020439120615 6.527777777778235 0 0.8586207378308814 4.734344199432723 0.4693399735583227 4.407392144318193 4.697545537802493 0.4353150362408077 4.277514192737073 5.733546670720369 0.4992449811333767 7.170860510573005 6.041666666666872 0.8432181017407911 4.978829605686877 8.611111111111494 0 2.542559022967503 8.680555555555946 0 2.422277716886337 5.416844563826682 0.5959191522845045 6.386476094524822 5.34843410944022 0.7165951962251237 6.332901564978917 3.402777777778241 0 0.9790865470106275 3.323260952759918 0.1481058602044239 0.969757031284939 3.419888872704323 0.1366368084118411 0.8055934477062613 9.874162994216539 0.8797186939188282 3.321646970378624 10 0.7550711216344809 3.332732082546914 7.708333333333689 0 3.143965553373287 7.735844724357698 0.1743625945153174 3.102792162058603 1.854686070103377 0.5342537583624613 3.521499607897629 1.041666666666696 0 8.917468245269127 6.112056790785964 0.450524493849308 0.507495886984536 9.166664436726286 0.1704435033750077 2.938324061666955 7.209995880033357 0.3448081285752711 8.9619012392493 7.137453332336913 0.2891704493058773 9.07241984622835 0.5861424505747119 0.3221450004836252 9.559600132936216 0.6949803069545826 0.1501249539808968 9.608891064969267 0.6949803069545728 0.2729304841789552 9.726910779087136 0.7244954769534544 0.2948255767007867 9.587603557759824 2.430555555555681 0 6.992967347970453 8.611232277790474 0.1341649984125234 0.349056111310184 8.750128488945947 0.1341649984125234 0.3490170917206278 6.458333333333672 0 0.5236842472919699 6.597222222222581 0 0.5236842472919925 5.208329625202028 0.8492770886267835 3.544905381201147 5.081862394369402 0.8692397560309805 3.475503340709088 8.608255254319216 0.2842948001611909 0.419602561932787 8.541666666666735 0 6.752404735808494 8.958174135752802 0 7.233617378399076 2.916666666666947 0 4.226497308103538 2.847222222222509 0 4.106216002022362 2.569444444444425 0 9.639156081756298 2.430555555555554 0 9.639156081756303 2.500000000000021 0.1926143828504343 9.569300484455139 1.942416323803384 0.588119900340051 0.8652455702818833 1.802494999310122 0.6548615616227376 0.7869917021561734 1.800879885651835 0.4771524601700871 0.7860182920104758 3.228022266489975 0.8767451351012396 8.136300475491742 6.633354377843789 0.5649036657997324 5.522991282680628 1.458333333333802 0 0.9789020439118135 1.595585252482632 0.1577345806665529 0.9817836522488957 1.464296985679187 0.1233687915610148 1.118776560607205 0.9401140765177379 0.3666161740359539 1.776427037994369 6.944159221778804 0.3719312194875562 0.6375129137291804 6.897068507421375 0.2816836278780107 0.4477798043409872 8.320529653301136 0.1411378091608995 7.724874125465277 8.459418542190026 0.1411378091608995 7.724874125465282 3.9359435506195 0.1594339908554256 5.376289853144535 3.888888888889087 0 5.429310368915301 3.993793051018025 0.1605893076721359 5.537592236749951 9.843229446672371 0.4026051573994859 3.831842458082143 9.689315569114804 0.5137742697064041 3.834303113709112 9.859007586146044 0.5868840353843671 3.736568806228121 9.705093708588475 0.6980531476912852 3.73902946185509 9.702237032818415 0.5039190559364066 3.679960604857544 5.625000000000389 0.1635802469135801 2.261902642111193 7.633472404307494 0.1289555452288562 8.140403927473313 5.683917469371467 0.87104445477113 8.168018809643055 6.458333333333434 0 6.992967347970675 6.527777777777837 0.8125367430923052 8.762820851736482 6.615190863185934 0.8777902904639748 8.851004777508667 2.847222222222359 0 6.752404735808142 3.898204611187429 0.8576336392489159 3.103263324306176 5.482259718939526 0.83954699494559 0.6753076338831749 5.468373385701865 0.7129816893341265 0.6108473511794739 0.2595029774849713 0.1938966943124366 1.384573916208691 2.486780171240341 0.4069576360415673 0.880495467423257 1.527494203429733 0.4135277331453381 1.099347071719435 6.04166666666679 0 6.992967347970659 9.868717697048954 0.4046712708169859 9.024607709345194 9.67336972182855 0.3409220682758428 9.012023865518966 0.1224438317631494 0.1265785768688975 2.359246696892361 0 0.2565045088996352 2.222897005670591 0.1754599883414416 0.2917621909202667 2.255655598270059 2.361111111111285 0 6.150998205402252 1.111111111111144 0.8413466983803386 8.716999401800507 7.569444444444484 0 6.992967347970772 1.527777777777807 0.4803425395127418 8.935435992433728 7.291666666667062 0 1.700589880399144 9.75385208009666 0.7934113545232193 8.042004890100891 5.694444444444841 0.8413466983803375 2.141621336030022 0.2439847718802431 0 1.385193161099012 0.8221152126895896 0.1660608716453998 4.862613412428686 4.457181155075643 0.8732334723832579 6.464394811640716 0.4849578382280114 0 3.37899594734505 10 0.2405626121623432 4.166666666666663 1.111111111111139 0.5049269452939206 8.877374476575408 1.250000000000026 0.4803425395127449 8.93543599243371 6.752282020134651 0.8325146263515473 9.144071463208221 6.684635307630373 0.8777902904639748 8.971286083589835 6.770250661098325 0.710304916815522 9.07760799544748 6.82352419651926 0.8777902904639748 8.971286083589854 3.425384737271114 0.718945100647944 2.962037193820175 9.237340634881424 0.8336912010108617 2.720522711854927 9.120541593758871 0.8623358918101773 2.833529970982673 2.886904761904784 0.6912637850570211 8.710942911765073 2.777777777777801 0.8787270419647217 8.693759868039182 4.043531000075339 0.8284896213490542 6.263594479108491 3.986697812869388 0.8413351476103176 6.419270043660711 7.152967026616246 0 0.7422416967816419 6.319444444444848 0 1.941152492561424 2.206468999925166 0.8284896213490551 2.911087973585628 7.569444444444458 0 9.158030857431811 0.4462160273026221 0.8284461675228214 8.521360031000118 9.578662545083397 0.1873049550735485 1.490456623822034 4.966253113583319 0.8486589113217071 8.11752872105885 3.175336879282787 0.4338914395351525 0.1852616958040876 0.1099205397656446 0.8640485788080726 7.774689155099396 0.273700102078151 0.8407539444192098 7.629989668472989 6.195342373516614 0.8539279949333629 6.435026120828875 6.312748504560142 0.8709264557095009 6.345117021760879 5.811628651520118 0.4804632307826906 2.129540717489439 5.545505330820195 0.8734346943885365 0.5601601851668039 5.614069498801147 0.7522351488903082 0.5398452613929221 9.576103007908564 0.8112716077289128 4.384792656610907 9.466672522016205 0.8520138477219348 4.506946640959802 1.988429681166594 0.7173341636998409 0.8381856906555365 2.055762595248958 0.87921426335979 0.8040667539711075 2.158026678617978 0.7175868617262873 0.9112466934344903 7.170993960075359 0.8617021410116616 1.175387805030379 3.611111111111596 0 0.6180581256684201 10 0.5017567627530553 0.4627613673069874 1.59722222222246 0 4.827903838509332 9.585947471561173 0.205629785218983 8.719453189003932 9.703148584029563 0 8.767580271533189 9.66272586098402 0.1491226182518225 8.834544722427111 9.876576056540632 0.8793240796385209 9.030006098975079 7.633716508240203 0.8702125383754933 6.718277969226273 5.41666666666703 0.8413466983803382 2.622746560354704 2.67626532691501 0.4414897003901165 6.077837929866956 2.734337121796897 0.5228997035623978 5.929700312192874 2.553281521007432 0.5271211464500789 5.982647337528782 9.204560699044725 0.5151149662889882 2.365017339076144 3.611111111111289 0 5.910435593239976 3.729013057109066 0.1264100169345161 5.838774941620845 4.466794889566478 0.8719390747309252 1.009270819407748 10 0.6348727322036843 9.097234176664038 9.832997762524986 0.7116982889418051 8.971017831859747 1.79629878545395 0.7185389806750238 5.356349265409603 7.131440379043152 0.8325634243018246 1.210578122763597 2.218946248528267 0.5040795714603477 1.181472549924117 2.21034077212687 0.5272739653192728 1.026170414586694 10 0.5095784092580261 8.465067803205699 9.83662152829343 0.5878881884973939 8.392275781051399 9.846885838136878 0.395178907532863 8.345901791307934 2.704454794070672 0.80983666357303 0.7800222886959718 7.013888888889098 0 4.827903838509637 6.595020643894754 0.7164665748292344 1.0758583070791 10 0.249406124798413 3.057008812201554 9.876084305183767 0.1259563838779521 3.049961089318303 9.810415311696184 0.2820258950433948 3.037527135817892 5.48611111111126 0 6.511842123645944 7.77777777777777 0.8797186939188282 9.87971869391883 6.5972222222226 0 2.662840329048504 6.458333333333712 0 2.662840329048486 6.524398191876251 0.1427489592979666 2.527317012947052 4.873829707748371 0.5043840106381154 6.686803121856615 3.435490646900991 0.857510288065843 5.796534045571428 0.9299923615379577 0.7156979377336374 8.298040998658106 7.708333333333503 0 5.549591674996718 2.360436985260295 0.5556452742314631 1.419901856271602 2.569444444444585 0 6.752404735808126 4.325587101649658 0.8256374054846832 6.749165867945306 4.365338468231439 0.8492018187830606 6.914308280024851 7.861421935996291 0.705386505205206 3.233418920865919 8.020833333333695 0.8428497942386828 3.204106206413898 3.224073763112925 0.6077905513371163 0.1668838548461132 3.611111111111422 0.8415812849648975 3.617181136654252 7.368088130323439 0.1687484092929557 5.513526090223252 8.541666666666984 0 3.865653389860381 0.8366413457002091 0 2.065975911474927 6.319444444444654 0 4.587341226347267 5.837320055906341 0.8811583358612043 7.275925464177353 8.339586525187531 0.1245512918165134 3.426020867898232 5.057546427830589 0.8751543841386175 8.015760008941886 4.652777777777978 0 5.549591674996512 4.796977846654595 0.1507319530742408 5.556790022231416 4.652777777777967 0.1238765246349221 5.684640006388879 3.585376207083367 0.1282066539295098 5.013093968916001 3.263888888889011 0 6.992967347970506 9.295442935324239 0.5094096541007482 5.086890687461319 9.893628856164696 0.8735164000145412 4.447485133296709 9.740587209077368 0.8558489096746278 4.599446890092603 3.125000000000115 0 7.233529960132845 1.166273688761353 0.1617229827723274 3.936274454008952 1.180555555555844 0 3.86565338985994 1.326380338711656 0.1412537436535312 3.855073000875662 6.944848267925555 0.1219312194875562 0.502647445680346 5.293531000075585 0.1715103786509436 1.948837524936406 5.417975566177072 0.1191599462614138 1.905012908284559 2.847222222222594 0.8770461989223224 2.569893957875774 5.833295211305577 0.1763687566928603 0.979046629082028 7.152777777777997 0.1352184883947394 4.715858207184962 7.286651901617962 0.2644328317015906 4.645502391085383 5.999273108983378 0.1318481436123457 8.658162263226712 5.625000000000023 0 8.91746824526933 6.737432047960544 0.5349794238683141 2.736164077227494 4.16666666666673 0 7.834936490538742 4.027777777777839 0.1547891870604084 7.921467006186777 4.049645197173661 0.1209504778896641 7.767374113625943 8.491239253282671 0.8420913146345339 0.7709020301213683 8.444537951525334 0.8646167967713813 0.5855983087531558 9.100541741616123 0 2.903320450995777 8.965680680124908 0.1465538219109792 2.966406031218746 1.875000000000252 0.8413466983803368 4.507153688959555 1.805555555555807 0.7200737403450581 4.524007923891858 3.445223737029578 0.5099021399854426 6.299904784875513 3.298182901744672 0.4338956713407097 6.370377817802094 5.013418992156404 0.8775242145961037 5.351636909409041 5.193862492167421 0.246840984701667 6.679902141818176 1.395824783156102 0.3912537436535312 3.814979232181941 6.0416666666668 0 6.752404735808318 3.263888888888884 0 0.3349364905387649 3.123472357234402 0 0.3377153985853281 3.333333333333577 0.1222449772566328 4.858086757677176 3.382379731381459 0.2434675612572689 4.806216171405455 1.686868540709897 0.520685180638237 6.940735915982147 7.637496586007479 0.8756083724777567 4.621230020361495 5.342950238287131 0.501451880005517 6.510405733975903 1.047314176731439 0.4608372353430939 6.668956606964533 2.638214763038082 0.464412223974875 1.259526781496723 9.396299136324679 0.4723035700024376 4.505533152683536 1.666666666666832 0 6.391560817564566 0.3135400042242762 0.5130972938744718 1.614481972518879 5.701327720901763 0.8788004545017717 0.5004911988059185 8.888888888888824 0 8.797186939188428 7.638888888888999 0 6.150998205402573 5.069444444444837 0 2.181715104723729 8.750000000000306 0 4.226497308103902 2.569444444444897 0 1.219464656074221 2.429238373238613 0 1.22149496798635 7.648135832358967 0.3595339616275018 8.015350824155338 8.298549129065087 0.1825810717409609 0.3912083652252005 8.472343388901567 0.1341649984125234 0.3492340671603513 8.47213774908032 0.2547828961748929 0.4315348214429814 8.333127693512655 0.1206178977623694 0.5119670348987291 0.6944444444444753 0 8.556624327025592 0.6250000000000335 0 8.676905633106774 0.5522854343045352 0.1520499663359298 8.534674785171966 6.458333333333428 0 0.3349364905388725 4.722571939016857 0.1220958652159339 0.1149397308885211 4.722430600862461 0 0.2327413223281419 6.409014915498473 0.8787270419647235 7.422379036720928 6.41545426504851 0.7321541983559294 7.383005548603377 6.448697455180997 0.691263785057029 7.525477299076231 7.013888888889209 0 3.384528165535577 1.666666666666915 0.8787270419647213 4.6041954612793 1.756237137720848 0.8787270419647211 4.7593360680026 6.250000000000199 0 5.18874775675312 6.388888888889088 0.1212729580352784 5.085320685604256 5.188207306724245 0.878727041964721 1.872584722054649 2.916666666666687 0.8787270419647217 8.693759868039196 6.458333333333398 0.8125367430923052 8.642539545655307 6.36876286227944 0.8787270419647241 8.728619168681483 6.438207306723879 0.8787270419647241 8.848900474762658 6.478459359942912 0.8787270419647235 7.542660342802105 4.725496963717596 0.8819717671692461 3.102313069074564 6.249712516563593 0.118028232830759 7.510570973861164 5.558830297050785 0.8819717671692461 5.507939190698057 6.333449250580947 0.8538742270660287 8.558137164281121 9.299542401382821 0 1.819362395129827 9.496295583355327 0.1428608144461211 5.963536444047587 3.560266222819399 0.8694030573889009 6.368916589015985 8.216608265985048 0.2952817147156636 7.265111664951873 5.68982481624357 0.4878108261272949 2.539891879381721 5.412047038465765 0.4878108261272919 3.021017103706405 6.597222222222641 0 1.460027268236749 7.847222075710129 0 4.10621608661163 7.718872373584253 0.1540183726452562 4.194375250806931 7.847222053820595 0.1217132410915047 4.264753822602916 7.916666602916747 0.1217132410915047 4.144472456101068 2.484942044083895 0.458437735710527 1.347480502757497 7.623283547267063 0.8573013166886507 3.688172309207209 8.958340655600214 0 0.3348974709494983 8.19444444444442 0.1522545557206537 8.240657935531406 8.177567209632361 0.1290241697953418 8.386505176189218 8.362745030395665 0.1383627718753626 8.317628945842531 8.345867795583604 0.2673869416707045 8.388072407168053 8.606473923295466 0.87314239204036 9.879718693918843 5.279807160583767 0.8764486181388957 0.1092792372250385 4.028939926141542 0.8531536733679348 4.080212564893758 4.122506175227944 0.8595635822709085 3.916825368426247 6.388888888889149 0.5349794238683179 3.825559621166505 7.67234917809968 0.837201410677572 6.251483862236764 7.706973234783878 0.8391428916083861 6.41703053465582 7.572391442099699 0.8812290379093165 6.430896889666753 7.640475787994601 0.7203719295177027 6.456366606757654 7.605851731310404 0.7184304485868885 6.290819934338598 3.184174473011717 0.8467613500445874 2.356543975637402 3.38291930792861 0.8786774944165835 2.35355547241187 9.826398743237771 0.5818719480819881 3.126431014080515 10 0.5023859987067611 3.196358229009335 9.810415311696184 0.4129452554616888 3.107879694570999 8.290837721542621 0.2837937188101189 3.720220176666181 8.220384195362559 0.1201963424226315 3.680160868566841 1.38798516844127 0.4113448013991462 0.86559016720603 1.525735973710355 0.4780864626818329 0.7881377061261972 6.625133106813824 0.8080536237866848 3.985934695941417 6.500283813903367 0.8653925115660995 3.925097566802505 9.877689085220098 0.8712910498046282 8.052884257741079 10 0.7353396286127009 8.045203267282622 9.876162994876562 0.6647024043278476 8.175121305007206 1.736111111111313 0 5.549591674996368 6.69144804012994 0.8658217135322387 3.438929466869 4.104739276718947 0.4991562914998675 3.3897229143008 6.967802626218239 0.520777806974058 1.284469485492489 1.736111111111292 0 6.030716899321056 7.071034995594552 0.2828225014384496 7.484931042052168 1.448936465091713 0.4810661804812992 6.415225946053999 1.372058550867424 0.5138273446856898 6.526364607207044 1.391556131324313 0.4744950892724086 6.658335377150282 1.468434045548602 0.441733925068018 6.547196715997237 1.805555555555828 0.8413466983803373 4.146309770716043 1.944444444444703 0.8413466983803368 4.38687238287839 3.935880227435405 0.8289910816670212 3.947327065365245 9.530936916947827 0 0.8402322403673665 9.601390626532808 0 0.7319891665140459 9.496372226688106 0 0.7454228063765858 9.501072297234467 0.1244219398421221 0.6025038030986148 9.53563698749419 0.1244219398421221 0.6973132370893956 2.610541422448806 0.8440303045686914 7.658194998383701 1.321458314665437 0.537217057447044 7.156830548287655 1.259795073208793 0.4143067092117783 7.0502583766456 7.640793443076213 0.1204083158031615 0.1092792372250832 7.667593085462856 0.2862234395665441 0.1676141365701108 1.388965457008438 0 3.02372845391597 8.867228166416936 0.3052135596506409 3.082614445851048 0.3761630649663279 0.1670832432132716 9.318979142852353 0.4762460371713931 0.3391032897159999 9.384277905887513 1.102100545661992 0.3918783236548568 5.423161682608717 9.775384699343281 0 0.3141100919564644 5.39948345271556 0.650188699609609 6.576921495820008 0.4833541360641738 0 9.163217578129442 4.044952283391085 0.3498523788246797 3.319505286660904 8.500970252613676 0.872274357994702 5.746559765796425 8.75000000000032 0 3.74537208377922 8.819444444444771 0 3.625090777698049 8.418125918036839 0.1429624929611587 6.964434065046831 8.460367841798572 0.3086241406192333 6.948054005591091 3.297466710934429 0.8767451351012396 8.016019169410569 9.326158786391833 0.6123872628557385 1.112791966453538 7.361111111111501 0 1.820871186480316 9.581431788247567 0.1306395557065365 7.038550133384949 9.718833417464122 0.8467927863505931 6.860178314291276 9.841371242791176 0.7245313636242461 6.863534517848127 2.083333333333685 0 2.783121635129435 2.053571428571778 0.1874632569077024 2.800304678855315 1.925807959061014 0.1430631800977459 2.718398988525625 6.318542414173131 0.5783827332989846 9.821767707460754 6.416857574290822 0.4752067752077978 9.856973916857051 8.0555555555555 0 9.759437387837679 8.054340224673341 0.1217020874455266 9.879718693918839 8.611111111111423 0 3.985934695941554 2.103523511141209 0.8284896213490864 9.088090029877536 8.125000000000409 0 1.941152492561593 0.3525905072400462 0.8513130474905042 8.821931707502028 0.3121517631222149 0.6797592150133256 8.672257980134738 0.3773152431674932 0.8284461675228214 8.63576946234193 0.5139451557363244 0.8239685791047336 8.690194414194181 0.4487816756910461 0.6752816265952378 8.726682931986989 9.027616153994117 0 7.594447980905847 2.152777777778231 0 1.219464656074197 6.597222222222582 0 2.903402941210856 2.638888888889339 0.1587669497434119 1.259558424767949 4.774626037433171 0.5378361684110862 4.20207789184041 0 0.2451497339842057 8.053135167296556 0.1193906830415307 0.1234362638898392 8.059377116936272 0.1777151482013803 0.3030645544382958 8.091060102197218 2.986111111111201 0 7.714655184457523 2.112013321254768 0.5883725983664974 0.9383065730608371 2.24037234573757 0.52470385976277 0.8637728881570015 2.070775348286186 0.5244511617363237 0.7907118853780477 4.027777777777986 0 5.188747756752965 0.6547546934927644 0.4888835637709881 8.917076566084216 5.625000000000311 0 3.625090777697833 5.555555555555872 0 3.504809471616654 6.666666666667056 0 2.061433798642621 6.597222222222618 0 1.94115249256144 2.638888888889253 0.8770461989223224 2.690175263956934 8.296054936466373 0.6710256028222794 8.505561220583832 3.278296381748242 0.829480059135039 1.108544551991453 3.140646851526044 0.8384315007590497 1.197037488458148 3.21009129597048 0.8384315007590497 1.317230894136281 4.097222222222269 0 8.195780408782255 4.228231344107135 0.1308408070892393 8.138364383280814 1.663891613307275 0.4744762419492395 0.8642374224753349 2.899595059589712 0.487095238240707 1.750539946034273 8.263888888889323 0 1.70058988039927 1.04166666666676 0 7.714655184457389 0.2841844788488144 0.8400435366451356 8.15067916641857 0.1639031727676435 0.7113345864497639 8.146457280520051 5.089215038954389 0.5263956375451565 2.512638424257287 5.200490990352261 0.5883628067480938 2.396997063368286 5.186989732684966 0.3945037756696336 2.488901132615124 7.246936075963568 0.8701034885403267 6.69873689455073 5.902777777778249 0 0.7383394317496528 5.784314706100789 0.8661230157015496 0.2601927421803403 5.782122786406731 0.7410126200006361 0.1545779001552287 7.361111111111478 0 2.783121635129747 6.180555555555758 0 5.068466450671949 4.445411824249872 0.1572660122150918 4.825506189954268 1.52777777777817 0 2.301996410804708 10 0.6299664115382819 7.014707543370646 3.888888888889178 0 3.985934695941241 7.370975319106389 0.1591500405822318 0.7898438011359961 7.708333207751554 0 4.346778686689824 6.458333333333719 0.465020576131687 2.502465254273581 7.034197892284604 0.8393254537235102 0.2801059249332797 7.034043945901288 0.714596154056655 0.1598246188521079 9.305555555555873 0 3.745372083779262 1.765792780811747 0.8397506840396576 8.675974056791151 1.877513493821106 0.8752887380677969 8.831126816466494 8.750000000000076 0 6.632123429727336 3.896583931395652 0.8694972669833076 5.81309223215482 3.460684123044306 0.3566201845060516 1.907720248534122 2.361111111111174 0 8.075499102701009 3.26388888888904 0 6.511842123645819 7.847222194315397 0.881467568011599 3.945840935303871 7.800602463311851 0.7051789862934587 4.072788248906016 7.935905415555836 0.7214500856123685 3.997041993591855 7.233331387677824 0.1229427471378601 6.946459699610793 4.333511403145834 0.8322946145458792 1.264099158959333 4.445955346549569 0.8397745920615683 1.387682124439733 7.649783692300204 0.6400082994999369 6.572688695466743 8.091730356909382 0.1367766455919562 2.611971259623973 8.263888888888799 0 9.639156081756525 0 0.5095784092580261 8.465067803205699 1.275590821755042 0.5869221500819011 8.634147348438844 1.245249337292966 0.4923697047386507 8.499127498808024 3.285855062866941 0.5261661993936588 5.577262673797758 1.388888888888916 0.486860873767394 9.035395143517299 7.740263009708766 0.1658151237633826 0.3762362420824829 10 0.3756766081073357 2.434837479086974 6.690279735649444 0.4692678757173899 6.495388281281182 9.667445119333092 0.1675587804883031 0.8302756451351658 9.632880429073367 0.1675587804883031 0.735466211144385 10 0.6344849354584616 6.737102753098692 0.4131438061079171 0 7.638082429025533 0.3025074201729172 0 7.582079164148112 9.758158148663441 0 3.046892097588546 9.882073843479674 0.1259563838779521 2.915997943216381 3.611314283003718 0.8737126773840214 6.813493211675978 5.000000000000413 0.83641975308642 1.740683649092762 4.873078456451465 0.8416939042537431 1.837314522634307 3.101848613892367 0.1438781418273452 0.2674182047151443 4.856985088063383 0.1265281566844398 4.629817155558324 0.6287444388306009 0.7314954493677556 9.479379254686553 0.5828748590077173 0.5419456102133428 9.386255536686647 5.902777777778139 0.4650205761316908 2.823215403823347 3.620505079593777 0.122240162714733 2.134153315935428 3.708047723700614 0.2812212049222638 2.079720646036192 3.543995572121696 0.2523588464651741 2.158288608046594 5.44389247746277 0.4163566955899362 8.621093035221245 0 0.6336705109936716 6.040939718257519 0.1513402382666252 0.6058977285079845 6.14662343332491 3.907273350180358 0.6658326510150404 5.383579004448192 5.317389642128992 0.4969276775216401 2.48400001804749 8.472222222222809 0 0.4294883247659318 8.472016582401562 0.1206178977623694 0.5117890790485619 10 0.3896664854623059 6.739213739288454 5.189515222575819 0.1230027409798238 1.867191792551818 8.750000000000327 0.840386069142834 3.662851209682404 7.635351843573288 0.854330958499621 1.26184234479944 10 0.6186305256520428 4.377519442066935 9.621858963542511 0.1522444142552981 4.928045269215763 9.502319376108396 0 5.053433933855176 9.474524726496 0.1391147737204539 4.905535491458585 6.180555555555906 0.4650205761316908 2.983590478598264 6.041666666666998 0.4650205761316872 3.224153090760606 0.4540366280784108 0.5490873771286009 3.548123803731203 4.174370326661533 0.5950343653500837 3.264300391880101 4.652777777777813 0 8.67690563310695 8.333333333333387 0 6.872686041889652 3.496664274904798 0.4718348654719077 6.168438270211466 8.289828639807 0.3701963424226314 3.880629712035465 4.114583333333671 0.4457304526748959 3.194082764240205 3.532856248772047 0.1701064823911246 8.040492031150503 3.499082454220457 0.3050537711681348 8.135510504873507 9.351559119025236 0.3850740929287788 9.608338408924595 5.052956713820279 0.4077847859132542 2.638240946916518 5.147618334622932 0.6104897447004686 2.626545120120538 4.097222222222459 0 4.827903838509457 6.180555555555618 0 8.67690563310704 6.072499703787551 0.1600118626508077 8.67472013607513 6.073025734482316 0.4929471524760906 3.402633331780231 6.350803512260136 0.4929471524760908 2.921508107455547 6.250000000000288 0.507052847523912 3.709161751289621 2.497284837555256 0.8418016248297335 9.516622545248916 3.75399338661775 0.8776651354283286 7.938658916337566 3.917597195390643 0.8693822880241886 5.365697580014506 1.8750000000003 0 3.625090777697633 5.99130279693289 0.8661230157015496 0.3692330846128421 9.234384348733972 0.3028029721087715 9.533714273562031 7.152777777778156 0 2.662840329048562 6.845997623063122 0.5334535927225306 3.528815699364352 6.720302551982026 0.6115753921364235 3.54808175058374 6.730481525905638 0.3903273679654138 3.561343971286231 2.70833333333379 0.1587669497434119 1.139277118686781 7.298643685878988 0.1687484092929557 5.633807396304418 7.291666666666836 0 5.549591674996691 7.146672021223173 0.1566612219903696 5.580424251778795 5.17850075324009 0.4969276775216401 2.724562630209833 8.125000000000316 0 3.625090777698009 1.765792780811755 0.8397506840396576 8.435411444628809 1.789640842355263 0.7350061416742601 6.256532930039611 2.041473920354914 0.4143510515847286 7.217135632368089 10 0.4992169614200498 3.746323383254458 9.859007586146044 0.6005308599569704 3.594441530029859 7.291063582631676 0.8581033923475117 3.198499515018298 7.305834959947733 0.6965935924317703 3.273467214425758 3.461674980166213 0.1524152980208935 3.171075865896258 9.757407779138932 0 8.057106143639592 6.663607912991294 0.4253074574863457 2.620980588096688 2.821066513693911 0.8433943305243102 0.2727896300210383 3.013531432920741 0.8513931142796813 0.2806324780336421 5.069444444444649 0 5.549591674996547 9.139058203393326 0.8070282428808825 6.62300074271439 6.172432496947877 0.8527857239387796 0.6639088706950957 6.31944444444493 0.8779600372310911 0.5964213225303563 3.3013428771882 0.4128113066053067 4.057395752965334 3.665594374176766 0.2984724781718931 6.611590704727178 1.662741288309725 0.5667416612826865 0.7191184876242895 4.680578584394667 0.8401964484779563 0.8234190288546617 4.793454879612685 0.8792239850934214 0.9039134119709922 1.310724417718626 0.1386110194540011 6.762825884474553 9.097663832144139 0.4008443540353324 9.559711445147308 2.109041543694615 0.8797607796964505 1.274401066940129 5.347222222222499 0 4.346778614184863 5.48611111111139 0 4.346778614184874 5.418276548008938 0.1420251113246644 4.481262290337144 2.2279549452706 0.8731005009060228 7.191521454841462 3.402777777777986 0 5.309029062834108 3.541666666666874 0 5.309029062834115 0.1237034657990712 0.8772776834109657 1.522538991996679 0.298021798619548 0.8192005995620352 1.615101217409201 0.9820635992249737 0.876410388075328 1.727473090986667 9.234701171501067 0.1519586180734392 9.453759740721935 9.167054989937203 0.1508443540353324 9.600354345765515 9.035956469490419 0.1241536169056681 9.44691938953755 9.103285828287188 0.2761122349791073 9.380279317334066 5.922603446007562 0.463318520383332 2.926397485267825 7.29166666666706 0 2.181715104723858 3.819444444444815 0 2.66284032904835 3.888888888889264 0 2.542559022967184 7.990655719985898 0.2693466722377644 9.026677550621351 1.256985769519194 0.8704551905130299 4.296238375988725 1.265332535689641 0.6814065164077283 4.280938376528979 7.602846587668551 0.4279070836604809 7.255863288374761 7.083333333333381 0.1586533016196638 8.155686640088721 4.166697267950598 0.8797010262593176 9.879718693918827 4.231877862078063 0.8372036880925391 9.716899551675137 2.986111111111089 0 9.158030857431587 0.7384300223841161 0.1388846511626436 4.709345282509501 10 0.6208626821261678 3.401982063107853 1.789802333258387 0.4215103786509442 4.915776408271803 1.242233805448787 0.523483033360518 7.141936029778554 8.680555555555872 0 3.865653389860386 7.430555555555948 0 1.941152492561497 7.859575347186405 0.1747218509713409 9.613380141052033 7.916666666666612 0 9.518874775675336 7.77964451408128 0.1278014705268468 9.459388761848215 7.515201899616025 0.6820944458008673 6.586555050477678 7.368748263783836 0.7270346843984371 6.473698520622341 7.502946997655259 0.6312290379093165 6.390803120973023 0.5200263881107475 0.1407813321464932 4.381567815465209 0.3761285479965923 0.1526896668134484 4.447125940343806 0.5466640198058215 0.1388846511626436 4.580395605885068 0.4729912396254247 0.291574317976092 4.577798367049617 0.61688907973958 0.2796659833091368 4.51224024217102 6.527777777777828 0.5407464038962715 8.155686640088682 6.688873315211307 0.5564899762147745 8.062678088186226 8.643607378931314 0.5086835797799291 6.10937312158531 8.51881525251051 0.4394340926552122 5.991331452629382 7.755920777924008 0.5735596707818934 5.54735534055104 7.700027192843768 0.7010264743916307 5.430116861313627 9.898093363277187 0.8784299758138989 4.865229212394439 10 0.7569802754898451 5.00820170792292 9.898093363277187 0.8785502996759462 5.002571186086184 9.730387858429282 0.8332084564234897 4.883973475862073 9.832294495152095 0.7117587560994361 5.026945971390553 9.832294495152095 0.7116384322373887 4.889603997698807 2.013888888888962 0 7.955217796619813 0.4753626515574144 0.5209115220214187 4.843551368985899 0.5108440279404345 0.3236900718208335 4.771936040577248 6.458333333333327 0 0.1202813060811716 6.31944444444444 0 0.1202813060811743 10 0.6255015851467854 9.511944141343939 9.85175344475423 0.7173575565795977 9.648700530928922 9.836280415839303 0.710426813138117 9.448784402016766 6.754079752074818 0.6277902904639748 8.93119231489613 6.615190863185928 0.7191369888443111 9.011379852283554 2.083333333333431 0 7.594373878376302 0.7755777177403729 0 2.190987730612713 6.554860484474757 0.863101223282206 3.692469351349751 8.124999999999927 0 9.639156081756511 5.555603585235217 0.5104522174238113 8.716971671852248 6.7361111111111 0 0.1202813060811694 6.597222222222214 0 0.1202813060811716 4.137290945578393 0.8568784984001667 6.373487540072372 3.750000000000108 0 7.594373878376383 3.502425101795642 0.1438688848416896 6.545421453284993 2.499325874149179 0.4692255211450432 1.500089393659058 8.957632790980714 0 5.789749828843183 5.694444444444745 0 3.745372083779018 7.222222222222275 0 6.872686041889582 7.29166666666673 0 6.752404735808415 6.180555555555855 0 3.625090777697871 3.402777777778011 0.1222449772566328 4.978368063758353 3.451824175825903 0.1212225840006361 4.776033252237703 0.1099205397656446 0.8797186939188282 7.641930668584913 0 0.7437672727269008 7.771647375403365 0.1637795623125065 0.720472638338038 7.626947888776957 3.06150315605045 0.7107411650549476 8.610138481905016 8.680555555555905 0 3.143965553373359 8.680555555555912 0.1759986253205381 3.022995699058949 8.611111111111462 0.1759986253205381 3.143277005140114 8.720881536792323 0.1586597377396617 3.260237703979247 8.790325981236773 0.1586597377396617 3.139956397898082 6.925128882649124 0.8464045921702559 5.805756642662476 9.53095015979418 0.5546773953164617 0.86490119584687 9.499064560985669 0.6679641199807721 1.032967349361929 0.5732351196084094 0.5936341660754385 3.803469135647942 0.9824008530777844 0.5248288280706834 0.7927827797122651 1.117187821232343 0.52338875294041 0.8774947481680683 0 0.3880402603141664 5.494573769712511 3.590423779481983 0.1747997848721759 7.236087315676164 3.541666666666794 0 7.233529960132865 2.98531947079291 0.3082122328798378 7.106866006330761 1.288559621599455 0.1364388232760251 4.04385982541843 5.442135793483143 0.6469519636055525 4.674750021297207 9.23611111111126 0 6.271279511483849 0 0.7557728690692403 2.783916452630912 8.583908590428443 0.1656616476580746 6.976587288515097 8.578929677534219 0.2668391689476817 7.03195615908436 4.791666666666927 0 4.587341226347158 4.798364953242652 0.128838946727506 4.420929003400643 4.926429532507836 0.1265281566844398 4.509535849477157 7.1527777777778 0 7.233529960133103 1.52614080803819 0.4077345806665529 0.9416898835551677 7.083333333333379 0 8.075499102701276 7.061995934598703 0.8325634243018246 1.330859428844763 6.919895918774963 0.8626330004848157 1.341283242153859 0.4087819020080561 0.1526896668134484 4.58035582686134 0.4466346903230658 0.1848054206581899 4.774493500388972 0.5793173738172852 0.1388846511626436 4.713625492402603 1.36635083221434 0.4473901491707235 4.148841132039861 3.958335095795275 0 0.523682659338337 3.878481218939394 0.1555754947955065 0.5652260488582544 1.652737238582727 0.84967681610626 8.021913369242167 1.683987922462747 0.8744432792959358 8.157422323469527 4.930555555555773 0 5.309029062834195 4.791666666666885 0 5.309029062834187 4.866422291099051 0.1507319530742408 5.436508716150255 7.500000000000323 0 3.504809471616784 3.299431616798939 0.8426978487410095 2.241382038584709 10 0.379952628789958 1.874728645390861 1.987398324284705 0.6299056601119621 1.956446827166667 4.325587101649665 0.8256374054846832 6.508603255782965 8.046353384311958 0.8713278722310592 8.390936376206511 3.907551876821094 0.8698639018089692 1.195390629749029 2.697570149251272 0.5038666644359686 4.701853211602073 1.597222222222314 0 7.714655184457444 1.527777777777879 0 7.594373878376263 4.030608624885282 0.6885546639379296 3.878217737850243 8.472222222222545 0.84135423453542 3.665184546391756 5.162813542849559 0.1591497554394324 4.400685288282874 5.55555555555555 0 9.759437387837629 5.55555555555555 0.1202813060811716 9.879718693918822 2.499247122218357 0.5399832574774039 2.462806159769778 2.499018987798224 0.5553087913979899 2.27803698255971 2.361111111111533 0.4600167425225979 1.739814300712387 2.20098224260119 0.4446912086020127 1.83200131911409 3.643823980234318 0.857510288065843 5.916815351652609 3.739550605646026 0.8767285593844575 5.744671403645082 7.790382465924514 0.1596077095474902 6.474686686259719 10 0.256009213590482 5.560760948610795 9.663298443752749 0 8.648011234992968 3.124999999999989 0 9.879718693918797 2.986111111111095 0 9.879718693918779 4.166480061168844 0.1541219261497838 3.590138225343548 2.916666666666996 0.1221824276708555 3.362003039182691 2.009215534484194 0 0.751246597257186 8.680555555555896 0 3.384528165535698 8.547919858520874 0.1245512918165134 3.305739561817072 2.975531572189807 0.8519816604439844 6.189614588917445 2.246392857256342 0.8383725983664974 0.8625289608072697 2.124626041778834 0.87921426335979 0.9177611348173729 0.5569300973742962 0.5947824746445171 3.651500087404124 0.4862710798346829 0 4.109932643731876 2.368968081673972 0.1507646650342269 3.197390517084076 2.377987532993949 0.2535155218455424 3.254385819650638 9.269701113425864 0.8423093028520157 2.190129773453116 2.650823732979529 0.8772101563130627 7.521076926437297 1.875000000000043 0 8.436343020944488 1.940371765057534 0.8752887380678172 2.85805547730795 6.666666666666838 0.8791980842821234 5.563508780714431 6.666666666666734 0 7.834936490538897 6.736111111111175 0.1586533016196644 7.794842721845172 1.666666666666814 0 6.872686041889242 1.597222222222378 0 6.75240473580807 5.000000000000421 0 1.580308574317867 2.430555555555922 0 2.662840329048277 2.500000000000373 0 2.542559022967108 6.875000000000056 0 8.195780408782415 5.972222222222634 0 1.820871186480244 6.527777777778106 0 3.264246859454369 6.458333333333395 0 8.195780408782394 6.597222222222542 0 3.384528165535544 6.458333333333654 0 3.384528165535534 6.5972222222223 0 7.714655184457713 5.902777777777883 0 7.233529960132988 5.972222222222339 0 7.113248654051825 7.013888888888941 0 8.195780408782429 6.527777777777808 0.8413466983803364 9.198124626125459 2.430555555555558 0 9.158030857431548 2.430555555555553 0.158653301619664 9.23821839481899 9.526431065668298 0.4359590224227329 0.188678069154057 9.597844083019384 0.1917994500240203 9.214043016835602 9.444207323388703 0.1519586180734392 9.337543436469772 9.649666962231414 0.1326241255232359 9.343214103522417 7.098996203233473 0.5964334400494169 0.1598246188521079 9.234135994317047 0.5064968644478343 2.532357713804165 7.054183365027841 0.4411691021880308 0.1906406351678591 9.515240407090364 0.4634421093146106 3.675242809100372 9.578220943134006 0.5940989669606438 3.730450934689022 8.701820312206376 0.1764775959620484 8.159064956061792 8.661787564824285 0.314840367837411 8.280913493121783 4.097035616724407 0.1541219261497838 3.469856919262371 4.097222222222531 0 3.625090777697735 4.016402725771064 0.1421075079139003 3.638332940219977 6.805555555555603 0 8.556624327025924 6.041666666666941 0 3.865653389860218 7.430555555555607 0 8.676905633107118 7.361111111111168 0 8.556624327025947 4.017506124331714 0.8769021580456224 3.819629279284071 9.514161529848305 0.205629785218983 8.605185080983802 9.569108060359078 0.1438562215791563 8.462639504439611 9.422024874685636 0.1331346096232646 8.481823062553389 3.521268620270359 0.1212225840006361 4.655751946156535 3.402777777777772 0 0.3349364905387656 1.388888888889171 0 3.985934695941122 2.95105500053906 0.1465711145190284 8.656032681691823 2.916666666666702 0 8.556624327025716 3.050250579329338 0.1232187971080104 8.480175807320386 8.263888888889298 0 2.18171510472396 9.642239779602022 0 2.063124089859201 6.801966309412383 0.2807173820655174 7.779272292437398 6.928556860562449 0.2822883582998999 7.669829456112975 6.430839369458957 0.8653925115660995 3.804816260721321 2.430555555555837 0 4.106216002022346 0.4617858887047412 0.5870289338470576 1.413273519509417 0.4130514420125347 0.8282926846125241 1.367491165737869 4.236111111111313 0 5.30902906283414 2.220976284548373 0.5909427039230002 1.34046530460702 2.358406949240189 0.4687821417688106 1.2609091015887 8.629072794929925 0.294152645026398 8.442647987656065 0.9568743500774448 0.2574704688260999 1.810669603301774 6.844299296815925 0.8544927767354118 5.536876844169208 0.7127881609356859 0.5214400572465141 3.641686812750164 6.041666666667115 0 0.9789020439120182 6.181857827371022 0.1450459398062476 0.8810240243509208 6.038919700027906 0.12935914748345 0.8585526309799771 2.43055555555571 0 6.511842123645771 7.01388888888888 0 0.1202813060811718 6.874999999999989 0 0.1202813060811694 4.513888888888918 0 8.67690563310695 7.497102306101395 0.854330958499621 1.022368513119374 9.557838413406984 0.5815836009138458 0.1512055742935128 9.608762932164762 0.6943396953088152 0.2798931518467638 7.136253165831209 0.1654011022155085 7.777693555605245 7.22222222222223 0 7.834936490538967 7.283835922003511 0.1613672280349112 7.939710030638365 7.14494703311463 0.1613672280349112 7.939710030638341 4.791666666666783 0 6.992967347970572 1.666666666667072 0 2.061433798642371 1.736111111111523 0 1.941152492561204 7.222222222222451 0.1553463454892614 4.581892781379516 3.008274932651824 0.1747997848721756 6.949463771885703 5.902777777778002 0 4.587341226347244 5.069444444444688 0 4.827903838509522 4.097222222222281 0 7.95521779661991 1.063651206726109 0.4464615464085173 4.576218896087147 5.272859522650345 0.1257257278717296 7.735819581255914 1.180555555555667 0 7.474092572295058 2.430327421135809 0.8517452870070059 2.157321002288416 2.543063925555191 0.7315883211680262 2.092232551114397 8.125000000000462 0 1.219464656074593 3.554265139771724 0.4407689658996269 2.319942455941913 9.028146951070674 0 9.519634624859876 2.081981747644068 0.5909427039230002 1.100704099490529 2.63888888888929 0.5913466983803375 2.061433798642428 2.63888888888929 0.4135802469135801 2.061433798642428 2.499247122218375 0.453563504390984 2.142056010219986 2.638136011107259 0.5449102027713215 2.222243547607442 2.361111111111514 0.4086533016196625 2.061433798642413 2.222222222222621 0.4950730547060822 2.141621336029854 2.222222222222631 0.4550897972286803 1.980376912874724 2.083333333333738 0.4086533016196625 2.061433798642397 2.083333333333738 0.5864197530864197 2.061433798642398 2.083333333333748 0.5464364956090177 1.900189375487267 6.255514550085874 0.8812515549537121 8.15565085113395 9.457491018473993 0.1434784158815317 3.181524668931095 9.870692998590368 0.3564889561280212 2.927872400216898 5.924568688743174 0.6266299455894082 1.454945600802756 9.879718693918834 0.8712910498046282 8.190222558545909 6.625133106813822 0.5580536237866847 4.146309770716312 6.777041513381727 0.5062140514114072 4.256709444737428 9.642895501977511 0 1.562954882893432 9.726581331924512 0.1722732638758605 1.598753980604505 0.9736421430235298 0.8490730119256552 7.673916604013513 1.018880226516361 0.8700259811851755 7.866577899066472 8.604548243839753 0.4605166640440074 8.379956536503517 2.986111111111214 0 7.474092572295179 3.01485570389476 0.1552799390082223 7.349288622989512 2.845703210723869 0.1274493965690226 7.406546955314667 0.6423479462446169 0.1407813321464932 4.149673573846123 8.194431407892214 0 4.707630059085693 8.124995479047072 0 4.587343836520949 8.049232570264344 0.1535311769689296 4.705014375282138 1.388888888889009 0 7.353811266213905 10 0.3877826956047616 2.013713624778506 7.777777777777784 0.1507201646090564 7.433998803601748 7.66108944857253 0.2716089498528284 7.366628765323796 5.417231209697361 0.8730274782134032 6.700989355694223 7.724941226624063 0.8668580977479627 9.293021993139288 6.180555555556003 0 0.9789020439120227 6.264004806136499 0.8538742270660287 8.678418470362276 7.916666659690188 0.881467568011599 3.825559617138568 8.819444444444438 0 0.1202813060811762 8.958333333333325 0 0.1202813060811724 2.627516239326512 0.5744889406956627 5.846130401016353 5.425818333495029 0.8738784180905758 4.378014723625506 4.861111111111363 0 4.707622532428335 4.8553339104321 0.2490837181253058 4.715820151739884 4.85945993348008 0.122555561440866 4.793625528609895 5.21097349132968 0.1779070836604858 7.594373878376429 5.208333333333392 0 7.714655184457598 5.342303967094792 0.1257257278717296 7.615538275174744 3.675779641427526 0.837304181628638 9.716586243836467 8.888778494944747 0 3.02374798326578 8.826902185180519 0.1465538219109792 2.96634229524516 0.3778353241811315 0 4.649758142773829 9.857866815960541 0.2704195112081131 9.650616859196111 10 0.3761014445500386 9.614570146461276 9.856474903991629 0.2585807130538832 9.49197880321341 6.819400685382089 0.3977639721063622 3.438379695549143 6.762664289729802 0.4984741688542175 3.320328102156981 6.787445663192752 0.6142958823864562 3.414823172184156 3.058900450337028 0.8755357710735929 6.546656147956678 5.856447252924332 0.1654011022155037 5.984886980014119 5.956238865710901 0.4876353139033204 6.795742153026364 4.375000000000245 0 4.827903838509476 4.305555555555806 0 4.707622532428299 3.54166666666706 0 2.181715104723651 3.551060635149339 0.122240162714733 2.013872009854253 8.888160454545412 0 4.948517823796685 8.125000000000057 0 6.752404735808466 5.072084602440789 0.1779070836604858 7.594373878376425 5.069444444444501 0 7.714655184457594 4.939471361639191 0.1437107831153479 7.66273119549919 8.333333333333302 0 8.316061714863709 8.3333333333333 0.1522545557206537 8.24065793553142 8.501633919284544 0.1383627718753626 8.317628945842545 4.236111111111378 0.1507201646090532 4.42696615157223 4.236111111111368 0 4.587341226347124 7.913219105503262 0.7269195374344504 8.82091592027481 8.094002250296066 0.5287133952176375 5.414083928594289 4.817971405386591 0.2847534754294518 5.880481519948027 4.72659335777776 0.2847534754294477 5.722210098793063 8.887332536839777 0.1623045260605924 3.419214289780735 8.819444444444354 0 9.158030857431921 2.083333333333774 0.5438843390723458 1.420468194083844 2.081303297313669 0.4570212066096933 1.261475439400941 1.920496108676258 0.4408019628640694 1.35403908968213 9.392289454754085 0 8.19422575171799 3.395712714750524 0.3801186837504412 2.406319240303432 5.416687363239424 0.8777309322120683 4.635638421267138 5.462701790835577 0.7471267136723883 4.676542571827728 0.4193218115798261 0.8513130474905042 8.947579998007571 7.013888888888932 0 8.676905633107104 1.217788467281161 0.853318389454914 5.283722709056534 4.513888888889086 0 5.549591674996502 4.305739163259107 0.879612687961762 9.879718693918827 4.232061469781595 0.716816376054301 9.837180857756312 0.8462980932456912 0.1468375818821545 6.317175994191689 0.6951429461780383 0 3.264650139617761 0.624924204808635 0 3.383673342530804 7.777777645219246 0.881467568011599 4.06612230180572 3.238562003840165 0.1778306079947642 1.342466674640308 3.263888888889339 0 1.21961828700043 3.323260952759903 0.1481058602044239 1.210211615433473 5.625000000000327 0.4650205761316872 3.304340628148031 6.597222222222614 0.465020576131687 2.261902642111238 4.305555555555971 0.1236944964665178 1.732544869810692 4.282680727568883 0.25643833216814 1.804066990715735 7.708333333333727 0 2.422277716886251 8.680400642252277 0 4.827993277747286 8.60874083722914 0.1591921422825263 4.78155071309426 8.767824558240086 0.1428971447867098 4.777442988482725 8.819315651509545 0 3.144039912009207 4.236111111111505 0 2.181715104723688 9.867992134528263 0.3841394502838349 1.249305129627827 6.368746872075008 0.8281216168398935 5.316140432952752 9.40716531459884 0.8654383224197169 5.253054131598117 9.544429760153267 0.7197282313509914 5.305608421719149 9.362077849476611 0.713713124686866 5.180176433101423 5.956624542358998 0.1356884269240251 7.787779708968546 6.597222222222627 0 1.700589880399094 1.913689161049252 0.8516404097531065 6.004052651072616 4.513888888889245 0 2.903402941210731 4.444444444444793 0 3.023684247291898 5.902777777778144 0 2.662840329048443 3.750000000000302 0 3.745372083778884 2.708333333333786 0 1.219464656074229 2.220905039905287 0 1.101213661905167 4.791666666666712 0 8.436343020944619 8.818932038902144 0 4.828199675987707 8.749499510865679 0 4.707911489965195 7.638888888888957 0 6.632123429727262 7.98611111111133 0 5.06846645067207 8.211991364103868 0.848028750368229 0.4853871512930264 6.063338509291887 0.8228566681519034 8.637177155295213 6.194560361692055 0.8538742270660287 8.558137164281106 2.497080569538803 0.842397820738377 6.470062820989307 2.234306303831974 0.8598285483239969 3.87937749663477 2.29458855111376 0.73041812910611 3.833993930942817 1.522482807046876 0.3504717967326801 1.867900486000847 2.769257927393259 0.1254406158356302 6.481834968356021 2.83870237183771 0.1254406158356302 6.361553662274853 4.583333333333743 0 1.820871186480191 4.722222222222636 0.1229568651879164 1.727943921208281 7.570190354431388 0 0.9801722878081864 2.222222222222357 0 6.872686041889267 2.152777777777905 0 6.992967347970435 1.319444444444576 0 7.233529960132727 1.259795073208789 0.1643067092117783 7.130445914033046 4.722222222222269 0 8.316061714863451 2.916666666667026 0 2.783121635129475 0.9415785119400196 0.4297966597621553 6.509323432250604 4.791666666666718 0 8.19578040878228 10 0.3854696585847238 5.630731001208963 6.736111111111105 0 9.879718693918825 6.597222222222213 0 9.879718693918822 0.507082871093828 0.5564358477992164 4.325466248131511 6.388888888889092 0.3712729580352784 4.924945610829363 6.527777777777978 0.2799262596549414 5.005133148216816 0.8357995471555772 0 6.391338156841518 0.8721340674955861 0.1797966597621553 6.469229663556867 6.617348248831783 0.6287270419647235 7.462472805414668 5.460157836739837 0.3701938380793227 2.407293586941258 6.520312913689669 0.146513116903679 4.721344911904614 6.520312913689665 0.2677860749389575 4.858480452918089 3.125000000000436 0 1.460050750449158 1.732275002609662 0 0.7449928803077288 1.593934129221085 0 0.7409624071167247 1.665029696927083 0.1577345806665529 0.8615023461677278 3.174310216073453 0.8772877948637453 0.7916449169272983 0.9956065114446156 0.1279627178826019 1.748251174885147 0.853035106964611 0.1585383527891643 1.726923774064065 0.8113972511559294 0.129507750943498 1.881120035968893 1.944414272855833 0.8744202423850347 6.468081085504627 4.727645912857 0.8405010268308168 4.573804367264708 4.583333333333591 0.8766461571940973 4.617170574610153 1.94188262040183 0.838119900340051 0.785365533941615 1.869241418872451 0.838119900340051 0.6706287683256419 1.80363308292993 0.838119900340051 0.7842566258485664 10 0.7559668617051569 7.500067251515427 8.19444444444442 0 8.075499102701363 7.81377337042034 0.7200287573387834 7.786175038267258 0.119551406119208 0.1274886664494017 5.283011421067991 0.2371731887615944 0 5.277870109014556 1.597222222222268 0 8.43634302094447 1.254646902222352 0.4323537584165638 0.949091541485625 1.253743181774267 0.5210089570174176 0.7956858960861221 4.375000000000038 0 8.436343020944616 4.513888888888928 0 8.436343020944619 2.192236194302222 0.819659700516004 5.702734477148095 2.319004952341752 0.8766367700467236 5.721683879660004 7.708333333333308 0.8417093379676351 9.525985957214331 9.512719819596875 0 6.776565954570508 8.403633695364924 0 0.332380030701472 0.4029769221242993 0.5986597617333744 6.254761546411965 7.034771572010145 0.139438525693298 9.131703188193868 7.757255269329616 0.8625367109665232 3.293559573906498 3.958333333333525 0 5.549591674996475 5.973139977495119 0.7054632654778761 0.8151103431198656 0.9093440712063692 0 2.666631380326546 0.9551965924779389 0.1455409717182559 2.689649379849541 0.4866547714204534 0 8.671033758367408 6.932146106705677 0.1602242778540469 7.565118579439589 7.066808721386773 0.1654011022155085 7.657412249524068 7.083333333333353 0.1225982235844028 7.51418634098917 5.347222222222216 0 9.879718693918807 5.208333333333325 0 9.879718693918793 1.714523485964373 0.8466337213622368 2.249439020921133 1.658916734715753 0.8614296166002227 2.392839054325441 4.861111111111097 0 9.518874775675179 1.804916204139042 0 0.8597296459237019 1.73600455254208 0 0.9790868619273361 5.069444444444674 0 5.068466450671863 7.374581604958196 0.2670432254510762 5.008241634008079 2.580410704760391 0.122969211052594 9.472449633635915 2.419589295239611 0.1229692110525856 9.472449633635943 1.041666666666917 0 4.587341226346961 7.873126695785224 0.2926251155027727 5.843982418676198 3.697557211086684 0.8640674184325468 1.10305419809128 3.838107432376658 0.8698639018089692 1.075117292572733 4.41164406603475 0.7265211912534485 1.029334251616902 5.763888888889024 0 6.752404735808299 1.650902209092229 0.8568219863334681 2.777267138286144 5.486111111111144 0 8.67690563310698 5.555555555555585 0 8.797186939188153 7.083333333333348 0 7.594373878376621 7.013888888888925 0 7.955217796620098 7.010299642745688 0.1220640804458531 7.819366061131152 6.573515372858051 0.4727616961473832 2.176702411330738 4.236111111111436 0 3.384528165535401 9.860683065743874 0.1236663449889449 3.747259405934836 10 0.2461661474213928 3.609826049592623 9.860683065743874 0.1224998024324479 3.608503077888613 9.703912512416245 0.1598200889757627 3.760585345471195 9.843229446672371 0.2834864339647076 3.761908317175206 1.319444444444926 0 0.7426869956753159 1.596938647874174 0.1635277331453381 1.139440840413163 1.66656010809763 0 1.099368168008504 7.641835886544133 0.8812290379093165 6.551178195747928 7.502946997655246 0.8812290379093165 6.551178195747921 7.63666350589538 0.7514415762848098 6.63733273524694 6.842466148152209 0.745046431242871 8.906576051003038 9.581490664508262 0.1444629236774659 9.621995842824633 3.19839103449748 0.1368305926457631 7.553530027489598 1.249096279552386 0.8386551986008538 0.7854026298185748 9.591512502039883 0 8.533743126972839 4.35586184826742 0.7042336892768045 1.174186337966761 8.617076325634132 0.8734527738581931 4.626677250320178 3.654820651527802 0.1282066539295098 5.133375274997175 7.291666666666687 0 7.233529960133113 4.001488093524602 0.5300865746554435 5.680811487827127 1.234078408912723 0.5817545934120749 7.018427852175575 1.104984593232478 0.4960613026238532 7.115812649544504 6.59722222222231 0 6.992967347970691 9.893628856164696 0.874775704225675 4.590125756523697 10 0.7482921042402162 4.44819617878254 9.846958352912672 0.7306246139003028 4.600157935578434 1.727417864885997 0.55478831782141 0.4152513114352038 0.1693684235366809 0.7083701537369719 6.705484564167329 0 0.6344849354584616 6.737102753098692 0.1637242426954723 0.7273456440528256 6.869793783235419 3.966028375840102 0.8694972669833076 5.69281092607365 3.808995050090476 0.8767285593844575 5.624390097563913 9.5099593538286 0.5329252799093384 6.07952712818528 1.683987922462732 0.8744432792959358 8.397984935631868 4.064275809080936 0.8282255112548795 6.950449137449046 3.925626408316766 0.8441825375766183 6.872021556527114 3.856181963872317 0.8441825375766183 6.992302862608284 0.1743183328204768 0.5675370509809275 1.685900363266109 0 0.5061932149929163 1.803093177260046 0.1785016839344908 0.4058782326036646 1.736206524838614 0.435832142542911 0.1796282905484566 8.028655241598655 5.741921533761196 0.8521210196460847 4.993394119438028 5.723164310685743 0.155921461452209 9.126045108095786 5.902777777777804 0.1635802469135877 9.077843320044245 5.810937011067018 0.1208525329136397 8.970492536652387 5.88038145551147 0.2844327798272274 9.010586305346122 6.180555555555547 0 9.879718693918818 6.041666666666657 0 9.879718693918818 2.291666666666833 0 6.271279511483418 1.268720987433353 0.2845280239526884 1.165870729273558 6.62377540084089 0.4984741688542175 3.560890714319311 6.507635760963892 0.5781216168398935 5.396327970340206 6.528896486931206 0.4720862298105942 5.622923055300744 2.892477963477724 0.8794793894795168 1.273523779065706 3.057066983957322 0.4534537480207502 7.770611382227889 6.736111111111557 0 0.9789020439120715 1.18620306562031 0.4608372353430939 6.909519219126885 9.734846059960415 0 3.597392965271816 7.953755981765292 0.1400234805071087 0.2486222998315462 7.951474179446896 0.2618478541248763 0.1435174192172469 1.455045240332197 0 0.7409624071167169 5.347242918794995 0.8777309322120683 4.51535711518596 5.705132431857352 0.1296148120309221 8.145423657260551 0 0.6172509164587466 1.031480734385109 1.42881339923396 0.8125955775455767 2.886359599311633 5.883334566042318 0.2856443273594261 5.694596701788058 0.8462531240134747 0.1550634505055732 5.264686881913606 0.7429966248677949 0 5.166165341538976 0.7900738158919121 0.1248109575564658 5.116991293046311 0.8985719620709275 0.1248109575564658 5.130896930410318 2.847222222222206 0 9.879718693918779 2.708333333333318 0 9.879718693918775 4.300553405736391 0.1231062046848292 9.138409605309869 5.671014427596379 0.8693957814603199 4.868807989070163 9.705911808111111 0.8365655025436872 8.486132294129778 9.416723444908282 0.1784396696051936 5.929292695159337 9.509538197045323 0 6.00543693007574 9.524831693720586 0.1428608144461211 5.83240625929108 6.940371765057369 0.1247112619321824 5.354376526736976 2.620909003260069 0.4780700264774167 5.544762491549929 2.770592395960493 0.4914789679398468 5.647069004993139 4.513889019291058 0.1575203387901702 1.582616721341818 3.958333333333676 0 3.143965553373039 3.960344751599814 0.1261180566397201 2.983592355596262 4.096322556541346 0.1258557652902065 3.062668270523722 2.013888888889249 0 2.662840329048259 2.222222222222426 0.8773401335379738 5.575093815026753 8.402777777777693 0 9.639156081756527 3.352905837340926 0.8415905324180382 4.771689175284935 4.652777777777782 0.8457704912156192 9.724814145315516 1.372058550867409 0.4202068706915728 6.802215504689121 9.096449464611075 0 3.144411705188415 0.3067809280381555 0.5053705206952072 6.145956461219354 8.147163821540605 0.1747997848721738 7.277033536217937 8.055555555555566 0 7.353811266214311 9.445907351165856 0.5058838024470528 4.459484475972405 7.361111111111184 0 6.632123429727247 1.536124543948497 0.4745315728082783 4.131009771256281 4.861111111111173 0 7.594373878376414 5.000000000000062 0.1208887852437732 7.488551342769975 1.111288006533507 0.8771355145795775 9.879718693918745 5.914819566986458 0.2822883582998945 5.858948753125325 6.041666666666913 0 4.106216002022568 0.5204051339264132 0.4637030420258408 9.497617943658284 3.192413494308997 0.1232212672361799 2.695539234010421 3.214554595216917 0.2556042897456952 2.768040310746245 10 0.6349705402821257 5.078025911484104 9.858389698549782 0.7328402086072208 5.215056896785786 6.085992669018063 0.2642146351572908 7.862470431719731 7.176237658125064 0.7439957466204559 8.927857665956708 3.727546894102079 0.8289910816670212 3.82704575928406 8.54166666666702 0 3.14396555337335 8.541666666666977 0 4.106216002022725 2.291666666666858 0 5.790154287158735 8.316456098521243 0.1290241697953418 8.386505176189232 6.620469183045557 0.2848018090533734 9.83701242173095 9.017730558840265 0 4.234147488123734 4.697189399364365 0.8476325987452683 8.209315912359976 4.145005118566299 0.1300398762033937 5.512110375540361 4.041575947361911 0.2906291838755296 5.500110937293833 5.466966133472817 0.8716178719031766 5.892513627918207 5.468000123530787 0.7422939158437958 6.039407941840928 1.394852541234744 0.3733687915610148 1.078682791913477 8.226041477625859 0.7118474067769147 8.776941910874834 6.666666666667053 0 2.542559022967335 6.190739838716663 0.132504230375552 0.2527855364567275 6.19073983871666 0.2527855364567237 0.1325042303755533 5.763888888889333 0 0.9789020439120215 3.149226723672847 0.2700769099029003 6.217170291445619 8.958207458245155 0 5.309094263843903 2.222222222222381 0 6.391560817564585 2.152777777777931 0 6.511842123645754 2.068329963194592 0.1389799779236054 6.390488340117991 5.686409734214625 0.8762342314097242 8.480284742356272 5.738126958015627 0.7438512089002087 8.424859448134354 9.579912224227634 0.673562835638385 0.4294235246946654 9.305279928603229 0.8717562683224576 1.27518664859285 9.323377319481338 0.705819149390264 1.254218196383788 0.8473513793628059 0.4951431621192448 9.283099300099526 10 0.3794644362805819 7.568797126367862 8.76388901334265 0.1303069094118925 4.635982387116426 8.157674819730303 0.5913593063510596 5.333291184306615 2.986111111111232 0 6.992967347970493 2.963155649252317 0.1334124480076622 7.150369582415552 1.527777777778252 0 0.8586207378306456 0.5845587953126625 0.1720200465027283 9.473485171235149 7.431575473292647 0 0.7444823209723765 8.656076594058545 0.1758066085758292 9.11760779783312 6.424832288994211 0.1715103786509538 8.719561079259115 0.9144843847179851 0.4608372353430939 7.066849334939667 9.027370564726702 0.1570213018127531 7.023247507262679 3.662992698172939 0.8528704490180076 3.885493872891554 3.726457299161324 0.8587356852106225 2.192328451247828 5.902777777777838 0 8.195780408782346 5.949825899955909 0.1208525329136397 8.970492536652403 7.708333333333335 0 9.158030857431811 7.600183795175188 0.1658151237633826 0.380470999134518 0.9140917122436438 0 1.941130396644604 0.9806202618173167 0 1.819786397016131 2.013888888888898 0 9.879718693918804 1.875000000000005 0 9.879718693918786 2.655719226910936 0.5797931293084249 1.89134172368019 2.615771965418277 0.4320219911664103 1.914405285856362 2.500000000000416 0.5913466983803375 1.820871186480076 7.013888888889072 0 5.309029062834329 9.027293038784631 0 8.075778966889576 8.726790353827834 0.1206677416861482 8.008711660779227 0.7883770074102476 0.8423258720076678 1.241953241714914 8.055555555555543 0 8.316061714863688 3.338739709500263 0.2709681213024741 1.283699838054617 6.875000000000171 0 5.549591674996663 6.938338687889848 0.1566612219903696 5.460142945697609 1.112493945002886 0 7.353013685582468 1.783579547938098 0.8757908641911546 0.3597422654640801 1.780022234308624 0.6805791820125646 0.3786412972728848 7.388130087339491 0.3895680385013756 2.631349848579298 6.242940993784315 0.7442331297299727 7.742561621814092 6.359126984127063 0.6912637850570278 7.680617905799534 1.465269227600557 0.1412537436535312 3.614510388713325 2.647553243819177 0.1260677698118368 3.175710172746822 1.319444444444669 0 5.068466450671663 0.8706955881759685 0.8712102401711018 7.774406740690323 0.9065549379681672 0.8064325293910377 7.924975639662173 0.9173535924700229 0.7412362213562773 7.806048149218242 5.763888888888896 0.8220036450074623 9.581441032845072 5.78884019446622 0.8468260945378056 9.427544197415468 0.4434632756055167 0.5370088069238861 9.350240530965255 2.708333333333392 0 8.195780408782195 2.430555555555644 0 7.714655184457496 2.360358233329483 0.5399832574774037 2.222243547607428 2.083333333333757 0.4600167425225978 1.739814300712371 5.347222222222459 0 4.827903838509551 0.1246727304490864 0.8797186939188281 6.661930526774017 0.1246727304490864 0.8777385772736531 6.801078029444243 0 0.7574572711924812 6.666925280447995 0.2940411539857674 0.8306315764633188 6.700489810493352 2.842277650466909 0.7045636555526846 9.836785336808862 2.916507847689586 0.6126192720056823 9.870321469355137 2.986084850765173 0.7378374822988552 9.870321469355137 5.653742780544173 0.4749612111955093 3.384548529059136 2.62090900326006 0.5621155406197651 5.697039871431281 6.666666666666769 0.1605873269525764 6.490410356919879 5.133424167390056 0.8405277703717584 6.940066048895043 5.012718596637244 0.850372633571695 6.811120752529776 2.50719108074623 0.8651726751175099 3.440703124812226 6.666666666666718 0.540746403896273 7.915124027926344 6.805555555555602 0.540746403896272 8.155686640088703 5.347222222222305 0 7.233529960132932 5.350083382677907 0.1373619798988563 7.344097060488073 6.736111111111335 0 4.106216002022588 0.3519756007685293 0 1.595578519043427 0.3820105583716686 0 1.444087122997645 7.226740150936565 0.8767396058415597 8.872286392462359 8.263888888888783 0 9.398593469594191 3.402777777778022 0 4.827903838509425 1.868893574527962 0.7308103741517503 6.373127515878169 3.823645404042737 0.8235596707818934 4.707622532428269 1.458333333333349 0 9.3985934695939 4.097222222222188 0 9.398593469594051 3.958333333333309 0.1407332347052415 9.300438276201678 4.092220072403038 0.1231062046848292 9.258690911391081 0.8591094857536958 0.8479746433476103 4.391059716215673 8.025717950287452 0.6645609487014452 5.332955316770902 5.625000000000336 0 3.143965553373136 6.319444444444893 0 0.9789020439120384 5.624999999999996 0 9.639156081756447 2.500000000000082 0 7.834936490538672 8.263888888889227 0 3.384528165535678 7.167423867752066 0.2717201333357971 8.936726597784343 7.704741030793505 0.8251399724782661 3.559375652853071 7.777777777777862 0 6.391560817564926 2.916666666667002 0 3.264246859454161 5.004162308204753 0 0.629552333927985 4.236111111111109 0 0.1202813060811716 4.097222222222221 0 0.1202813060811742 3.843646312561176 0.8118703884422573 5.748235421942869 4.383227770236484 0.1240433205449796 7.156325054106212 2.083333333333766 0.5913466983803374 1.580308574317708 1.944444444444527 0 7.834936490538637 1.904109903938275 0.1665850370872342 7.734349257032463 10 0.3774788113642323 1.452997697155757 9.8514272201108 0.2977116940973554 1.606122486858735 5.208333333333634 0 3.865653389860155 3.194444444444887 0 1.33979895502776 8.888888888889227 0 3.504809471616884 8.819315651509534 0 3.384602524171546 4.510135794323512 0.8693733944043645 9.748982880773232 7.986111111111049 0 9.639156081756509 0.355851383516024 0 6.849922415715056 8.280887793048077 0.848028750368229 0.3865272679443105 8.375093507080894 0.8646167967713813 0.4914023862268494 0.4544064767468198 0.5497753708510007 3.941358596840909 0.4797106470117166 0 0.9767666574522531 9.572842060219779 0.4260291889174667 9.338243384246844 8.161772660575419 0.7218962346919983 5.33815808657714 2.584751200191387 0.8344321436243896 7.380860227412146 9.611524615958734 0.1619639009469724 5.987516943544771 9.514160471230912 0.4373049550735485 1.521001045184039 7.91666666666702 0 3.264246859454477 0.7463771212036903 0 2.329872928654162 0.830183810230292 0.8334952340219645 6.474089329746056 8.402777777777745 0 8.195780408782547 8.402777777777741 0 8.436343020944882 0 0.3896664854623059 6.739213739288454 1.8052719812075 0.4574120722176839 1.260256841035378 4.678940757814646 0.1621076141533412 0.3869196494163032 4.653149804947618 0 0.5258209639642065 4.796194877846663 0.1268582850369452 0.4615515206602644 9.07033431794309 0.8647165221498314 0.492966599481831 3.26388888888931 0 1.700593235000742 3.285416389444296 0.1419959775957443 1.845263465798826 3.348812090074121 0.1228622610980502 1.653829662200487 8.128751561992624 0.8541620119300133 1.194592007451797 8.048325244642413 0.8752962827956563 1.029673095402234 5.83404428775679 0.1233443561467142 0.1056148420251116 5.835534493421414 0 0.2231617324185203 5.972443851731297 0.1233443561467142 0.1175468903934088 5.914393015575156 0.2950557559921647 0.1634981873773627 5.91588322123978 0.1717113998454505 0.2810450777707714 0.4824546821884529 0 4.582953065696791 5.486111111111196 0 7.233529960132944 5.555555555555634 0 7.353811266214116 5.763888888888948 0 8.195780408782326 7.255459538104569 0.1497319236125793 9.098747515466282 7.152777777777802 0 9.158030857431802 7.104216016454595 0.139438525693298 9.011421882112698 1.319444444444732 0 3.865653389859946 1.250000000000294 0 3.745372083778771 1.395824783156106 0.1412537436535312 3.734791694794493 9.879718693918829 0 4.236111111111107 9.879718693918829 0 4.09722222222222 10 0.1202813060811714 4.097222222222218 3.577337316559572 0.1349472887770102 8.411080188586411 3.472222222222693 0 0.8587923816225801 3.606153916237425 0.4324642882668142 6.321568012435836 3.704536341928932 0.5549237950373066 6.415089616122579 9.396422423518555 0.8632867246643103 0.9462371838876507 9.446630876834416 0.7348160704002658 0.9215341197564397 5.460813466308828 0.8421948008306013 4.765721118118412 5.416666666667107 0 0.8586207378308549 4.664745123118125 0.8416939042537431 1.957595828715469 9.302484199899361 0.845027769753929 5.973562599985886 9.300144273277311 0.871127348154037 5.825279559688472 3.402777777778184 0 1.941152492561299 3.433699246815451 0.2642361403104773 1.91798298309178 3.481616190704901 0.122240162714733 1.893590703773077 3.525018968482672 0.3179706153896297 2.028907173114399 9.058701553333195 0.8264506545672142 1.669345171594343 8.968293965309957 0.6971007625667794 1.700346895608487 1.870524540081563 0 0.7461017884007775 1.802017969271643 0.1604107988874005 0.7832832157028689 7.569444444444759 0 3.625090777697961 5.838809193926355 0.8353411958186963 7.696289604498716 6.593842636320699 0.1427489592979666 2.40703570686588 6.657658149829517 0.8424302781757766 1.415833484934192 6.659371012244235 0.8709601291382517 1.273386084343033 3.610481898970448 0.8766482891576179 9.879718693918807 3.536890752538631 0.837304181628638 9.716586243836446 8.194444444444903 0 1.339745962155765 5.952779010486758 0.1220640804458481 5.734690470481785 1.262757335087964 0.4111592323916736 1.106183749965615 1.128515348420961 0.5211945260248901 1.036279478845707 5.213463367322039 0 0.3179013427373071 0.5517760337467862 0.8699255637106145 9.439447796312891 2.01388888888898 0 7.714655184457469 1.875000000000092 0 7.71465518445746 3.847808923980506 0.5913351476103176 6.339082506273261 3.87208930747274 0.495938740940521 6.485439295102886 2.43055555555556 0 9.879718693918781 2.56944444444443 0 9.879718693918775 1.736111111111146 0.8413466983803366 8.837280707881719 1.643265759386805 0.8793335013481308 8.730509921917871 1.573821314942362 0.7206801997284673 8.770603690611596 0.1202813060811719 0.8790323628112215 2.919858838251876 0.1202813060811719 0.8767405062580187 2.780724281045699 0.3190515121339668 0.8486133627168768 2.810465458062019 8.541666666666597 0 9.639156081756527 5.208897876364018 0.8730274782134032 6.82127066177538 4.930555555555539 0 9.879718693918779 5.069444444444436 0 9.879718693918793 3.89450282452311 0.1603844598266699 5.820044721424201 3.958333333333514 0 5.790154287158819 0.1199596732513178 0.1241526465320646 0.8324695974877855 0 0.2505461656279471 0.8323600761423151 8.573357416484146 0.8559024428423483 0.6445752174378884 8.545673145786701 0.7205192396137295 0.6121154005223324 3.263888888888878 0 9.879718693918797 3.402777777777767 0 9.879718693918807 4.375000000000192 0 5.549591674996488 3.541666666666711 0 8.436343020944577 4.375000000000007 0 9.158030857431603 1.319444444444458 0 9.398593469593905 7.847222222222213 0 7.714655184457829 8.958333333333663 0 3.625090777698061 5.347222222222586 0.7224020538995761 2.584455012523865 6.250000000000139 0 6.150998205402481 9.547265904184236 0.8715293457359554 0.9303145986439443 0 0.6368208502714636 5.63009458078683 0.5808738192205797 0.3907813321464931 4.413373633910091 5.049318417835361 0.715146795051141 1.792397184667197 6.527777777777853 0.7151467950511446 7.77798848691286 6.617348248831787 0.7151467950511459 7.622847880189557 3.887486448135625 0.3734027422288084 3.51719808406131 4.256142657205217 0.8256374054846832 6.628884561864135 1.944444444444882 0.4574645859859259 1.500655731471284 1.944444444444882 0.6352310374526832 1.500655731471284 4.09722222222258 0 2.903402941210705 1.59722222222269 0 0.9789020439118212 5.008652946830651 0.8398885978905786 0.7892479882432664 5.416441682412326 0.8795988882339986 6.542723093566885 5.417006225442881 0.7526263664474018 6.611589019533998 0 0.622613735758335 8.254574786705088 8.194444444444741 0 4.226497308103875 6.875000000000298 0 3.625090777697907 2.633970577479498 0.8373305514955547 9.596222724646385 2.147146136373035 0.8472969823733285 2.877933821559672 0 0.8794772687741207 2.014307049505746 0.1164582663628873 0.8794772687741207 1.943695519809018 3.206116662493122 0.8771544538147658 1.41323473875925 8.749999999999975 0 8.075499102701393 9.874208715633188 0.8738889565739005 9.575853612633797 2.197368304808625 0.87921426335979 1.034861420630953 5.763888888889194 0 3.625090777697848 6.458333333333734 0 1.941152492561431 6.319444444444734 0.8492798353909473 3.705278315085317 3.402777777777955 0 6.030716899321135 0 0.3668105154185964 8.118057871996724 0.1510404160214245 0.2747242394013257 8.261490755814577 1.388888888888942 0 8.316061714863284 8.055555555555944 0 2.542559022967459 9.871869455591288 0.8785502996759462 5.151330947360313 9.344595471598655 0.1566609575056951 8.606593346938709 9.442897415172446 0.1288318480687032 8.717880014256849 1.250000000000036 0.5913466983803386 8.797186939187966 1.094802513919861 0.5366056271706063 8.732819315825711 4.513888888888987 0 7.233529960132892 4.374999999999985 0 9.879718693918813 4.513888888888879 0 9.879718693918807 9.097222222222214 0 0.1202813060811724 9.23607230516493 0 0.1163500967704763 5.339665044888664 0.7424241013035378 5.818405197168903 6.805555555555884 0 3.264246859454389 1.319444444444611 0 6.752404735808048 1.388888888889048 0 6.872686041889223 1.241279973274179 0.1386110194540011 6.883107190555714 2.430555555555612 0 8.195780408782179 2.500000000000049 0 8.316061714863352 8.616005500835172 0.8417696355894191 1.388062763882736 8.47711661194627 0.8417696355894191 1.388062763882728 8.47703363287404 0.8784807051158541 1.262337037257201 8.33814474398514 0.8784807051158541 1.262337037257193 8.481928022597614 0.7202503407052732 1.310653838984152 2.430555555555865 0 3.625090777697657 5.074862562329319 0 0.5284031777297657 5.051982640492939 0.1624535654774085 0.3831986961728684 4.936310259704695 0.1268582850369452 0.460100168240431 4.305555555555943 0 2.301996410804863 3.402777777777781 0 8.917468245269275 0.143713513597384 0.6095687707948236 8.732703465471728 3.888888888888921 0.8422859408556082 9.395077627847158 10 0.509314771735504 4.871390017868494 0.6933966516925332 0 9.5227761032682 3.818498956422216 0.8553453899562051 7.44032159072329 3.75584425300261 0.8719182114763333 7.26401566308448 1.458333333333621 0 3.865653389859954 0.290659072808247 0.8168205991023719 0.3800138020273964 0.2820251158487397 0.8484726083901091 0.5392000764079785 3.125000000000379 0 2.422277716885971 4.652777777778182 0 1.941152492561365 9.165003755682541 0.1519586180734392 9.332699899372653 9.097674396885772 0 9.399339971576136 8.966259053671893 0.1241536169056681 9.325859548188268 5.347222222222276 0 7.955217796619947 2.685863730615831 0.7212984653083763 0.1590410068335094 2.682725640305287 0.8433943305243102 0.2774239315350944 9.2814685206351 0.8305552204211667 8.165538625089919 1.115159776650796 0.126105061450952 5.529491266618351 4.23611111111142 0 3.625090777697745 10 0.3758321763667984 0.3852695318465682 8.263888888889269 0 2.662840329048646 8.125000000000384 0 2.662840329048634 9.874208715633188 0.8793045587012112 9.433030790671307 10 0.7531935152751117 9.451058186376564 0.3446006136039287 0 5.209392387845269 5.347222222222626 0 1.941152492561393 1.401149514639616 0.5172339981899869 7.187708628938436 8.317237830551315 0.8544374847600603 1.408135230309487 5.625000000000004 0 9.398593469594065 1.58828638024415 0.8417593130462617 0.3737390301882585 1.713717567874483 0.8757908641911546 0.4592373658347478 1.434932426053477 0.6293335013481308 8.690416153224138 7.777777777777795 0 7.353811266214299 7.6388888888889 0.1507201646090564 7.433998803601741 7.66108944857254 0.1208887852437721 7.286441227936347 4.11908964161812 0.2796037795093284 7.566905270157326 2.102436784940231 0.8477087577185864 9.021216242917308 5.352285420671005 0 0.3137269861265271 10 0.1202813060811718 4.236111111111107 4.305555555555716 0 6.150998205402344 3.611111111111487 0 2.542559022967168 2.079260653946426 0.8752887380678172 2.858055477307956 4.034828747465086 0.8763055365755464 1.263633038527308 3.984047290952399 0.7461694383845157 1.239551323710118 4.670772221641549 0.8397520575055561 1.149666215695302 1.916643459093909 0.86061936293624 9.355181371043923 3.541666666666746 0 7.955217796619888 6.597222222222253 0.8413466983803364 9.077843320044295 5.409527181493495 0.83954699494559 0.7936905585847633 6.801966309412382 0.1220640804458531 7.699084755049952 6.041666666666691 0 8.917468245269363 1.870270867115328 0.4920482829536892 0.3054911992048712 3.194444444444831 0 2.301996410804803 1.801581727701355 0.1247364223685311 6.466508990665726 1.653295970570674 0.2621821288557132 6.485368635781183 8.680706343257206 0.256845502023952 0.1344009268523018 0.6019138749749045 0.5058745367341722 3.513751400028622 0.8869547965186381 0.4874145637142644 5.818149468510412 7.013888888888915 0 7.23352996013309 2.056145888733773 0.1459167738478483 8.651787354737735 6.180555555555546 0 9.639156081756452 6.875000000000256 0 3.865653389860252 4.861111111111281 0 6.150998205402384 3.538224932500443 0.6968409091075292 6.267065824068221 3.555309027945554 0.551867345655715 6.379111321274606 8.825260216407017 0.8604828693606903 7.099664897294335 6.964753447840161 0.8393254537235102 0.1598246188521079 8.541666666666597 0 8.917468245269564 0 0.3758321763667984 0.3852695318465682 1.044491874178229 0.8221210539605708 3.745409638308605 7.847220966401233 0.1586534526690218 4.507154414008642 0.5434108903914773 0 5.755516563846932 2.649546003067694 0.8587706148399054 7.244034406850291 7.491198765571265 0.2661018522410476 5.183666361686445 5.272345948680055 0.513281079831384 4.10972869396083 2.013888888889081 0 5.790154287158721 7.686476333479563 0.8235596707818934 5.587449109244758 1.736111111111154 0 8.436343020944479 0 0.8785502996759462 5.211660729696218 4.375000000000455 0 0.9789034306978628 3.194444444444773 0.1206657101241372 3.371460353848639 0.9056432551847911 0 1.461273117134468 0.9727041759286225 0 1.33993923606231 0.8327933459769871 0.1625740232022004 1.324829021076902 8.680555555555863 0 4.10621600202273 9.870692998590368 0.4874083165463152 2.998224958970004 2.847222222222575 0 2.903402941210643 8.472222222222658 0 1.820871186480462 7.708333333333763 0 1.46002726823686 7.638888888889326 0 1.339745962155686 0.6250000000002769 0 4.106216002022253 0.6948793396485906 0 4.226246221240402 2.569444444444699 0 4.587341226347036 9.6543843960605 0 8.263058048845979 4.556594425945081 0.3258529295595596 8.647963988792721 1.388888888888923 0.566762292599163 8.855248455046269 8.98700065837078 0.8571013393134244 7.000078420094345 7.083333333333702 0 2.783121635129727 0.6250000000002901 0 3.86565338985991 5.902777777777962 0.1635802469135781 5.629779212384048 5.277777777778134 0.4135802469135809 2.783121635129599 0.1224438317631494 0 2.289073556807261 0.1207762281748276 0 2.151000622745666 0 0.1299259320307377 2.15272386558549 4.652777777778061 0 4.10621600202246 6.77485485237148 0.7336908610175352 5.550793949886987 9.829017780328311 0.2946328284203802 2.8028151985412 0 0.2502283284922782 2.779458539132697 0.1202813060811719 0.1259563838779521 2.9178668008064 0.1202813060811719 0.124271944614326 2.778258404992959 0.1704060839016031 0.3056784774976352 2.682639554566538 0.290687389982775 0.1814065328833092 2.821047816240241 0.1704060839016031 0.3073629167612613 2.822247950379978 4.556625187798078 0.8235596707818933 8.029239237658008 4.488945641588217 0.8677512976966051 7.955306182457003 1.540476951553844 0.4879590928730141 7.186104320041004 5.138888888889273 0 2.301996410804903 5.069444444444823 0 2.422277716886075 1.042758921136133 0 6.02988853800455 5.486111111111434 0 3.384528165535476 0.9027777777778194 0 8.436343020944413 3.819444444444665 0 5.068466450671787 5.572678275290595 0.4200985811682343 2.472257292427878 5.416666666667037 0.4135802469135809 2.542559022967255 4.097222222222188 0 9.639156081756436 7.847222222222184 0 9.639156081756504 8.265234131390415 0 0.3204479823331904 0 0.7554695389391752 8.607191865240988 0.1319445668307923 0.8777304022929238 8.487733242076306 0.1319445668307923 0.8777391366462515 8.630320550084026 0.1684382495248309 0.7061853041690729 8.617937454111672 0.3003828163556232 0.8284461675228214 8.498478830946992 9.882073843479674 0.124271944614326 2.77638954740294 10 0.2502283284922782 2.779458539132697 5.345165127550411 0.2630877077705859 7.485542763367553 4.930555555555831 0 4.346778614184824 5.212169441835586 0 0.7448721146432853 3.174509930177082 0.8772877948637453 1.026861777760091 10 0.2439476510701162 3.888180077708309 9.879718693918829 0.1236663449889449 3.888180077708311 9.7229481405912 0.1598200889757627 3.901506017244671 9.843229446672371 0.2801013950569342 3.901506017244669 0.8557559359720377 0.8423258720076678 1.361406231051772 0.6255358625101182 0.1501249539808968 9.729172371050421 0.7638888888888705 0 9.639156081756159 0.7638888888888606 0.1228055301980583 9.75717579587403 8.680555555555523 0 8.195780408782563 8.819444444444414 0 8.195780408782571 8.771264756650812 0.1764775959620484 8.279346262142971 1.3806373674092 0.8746005293523749 2.960734014924753 5.000000000000292 0 3.985934695941312 5.555555555555564 0 9.278312163512854 2.085846827154427 0.8752887380677969 8.951408122547672 2.916666666666639 0.8706043782417252 9.629758857192691 2.986111111111086 0.8706043782417252 9.750040163273916 6.319444444444545 0 7.474092572295358 0.7836980398506062 0 2.671568880573266 7.847222222222227 0 7.474092572295477 0.2223421460552729 0 7.51328041008771 0.1124216062896282 0.1232802177586016 7.509709003459304 9.234985763932961 0.2803007837656766 9.840154439302806 9.371170532948854 0.2531935331346592 9.876476268272871 5.90277777777777 0 9.879718693918818 5.763888888888882 0 9.879718693918822 7.01388888888888 0 9.879718693918829 6.874999999999994 0 9.879718693918825 6.875000000000034 0 8.917468245269445 2.20098224260118 0.3069080146126574 1.99324574226922 1.51269371043249 0.2555608424628885 1.843827306410722 1.383955282865845 0.1242632538263377 1.914197874662856 8.680676722234615 0.1341649984125234 0.2546822329334779 2.152777777777787 0 9.879718693918804 2.291666666666671 0 9.879718693918781 6.03354360805899 0.8527857239387796 0.6639088706950746 5.902445516815021 0.8788004545017717 0.6024071627170188 0 0.5071612811380484 9.297646895625693 2.43000754005529 0 0.1156173452587452 2.566156351442856 0 0.118382924701585 8.888473398323317 0 8.316301598453602 3.680555555556032 0 0.7383701822660467 0 0.8794772687741207 2.153195938394635 8.19444444444486 0 1.820871186480427 10 0.6360184498252663 8.821453026240572 1.821185025764197 0.5471108353937436 3.318469086970668 1.655059524809261 0.8528776547811522 3.758491775563142 2.77762777508672 0.8779041347840661 9.879718693918779 2.842303910812822 0.8373305514955547 9.716504030727641 8.402777777777768 0 7.714655184457853 8.263888888888879 0 7.714655184457848 3.156256430311482 0.8513931142796813 0.287165160927285 3.156256430311481 0.7311118081985095 0.1668838548461132 7.847222222222533 0 3.625090777697983 0.2685024122713713 0.1422518422017609 2.397780892665113 0.1460585805082219 0.2688304190706584 2.401102698165174 4.513888888889293 0 1.941152492561359 7.666948210561728 0.8551343944826472 7.741414295372326 7.549027243242406 0.7340173429214545 7.673332593147402 7.850510315224286 0 0.7402378131294687 7.750464805595342 0.1484663091192276 0.7490826005904241 10 0.749021452097552 8.325302614940332 9.879718693918834 0.8777304022929238 8.329524500838845 9.83662152829343 0.7078565523483155 8.323701666993706 9.83662152829343 0.7142959048366111 8.463003609286645 4.097222222222487 0.8413443704594912 4.476446813966884 3.958333333333598 0.8797073621149415 4.477801483689928 6.80555555555561 0.1213395322119129 7.216260609717723 6.108615448405817 0.5074692069225326 6.995714646304088 1.805525383966947 0.8744202423850347 6.468081085504624 1.868923746116734 0.8563901317667157 6.296607247938117 9.616538930563603 0.1476531599021798 2.158836884550079 9.653319438875023 0.3515909151846995 2.165290908037001 9.472280368741671 0.1442849698543064 2.116925707810408 8.263888888889245 0 3.143965553373333 8.055555534625519 0 3.985934708025655 3.402777777777774 0 0.1202813060811725 3.263888888888886 0 0.1202813060811718 6.944444444444756 0 3.504809471616742 1.171835528829744 0.1386110194540011 6.762825884474539 4.466794889566464 0.8719390747309252 1.249833141162924 5.416666666667036 0.591346698380338 2.542559022967255 6.319444444444828 0 2.422277716886116 6.893941951632984 0.8672561407788961 8.852758212682625 7.708333333333304 0.1776634377349947 9.580922066200902 7.636543792951214 0.1242748368444271 7.986728070056002 7.638888888888891 0 8.07549910270134 7.631127308369818 0.2532303820732833 8.051632894827977 8.608050728637284 0.1529597186498494 7.756515865796669 8.506383912661304 0.28353239081693 7.777946193568548 8.750016600274037 0 9.518872106234852 7.847222222222296 0 6.511842123646101 9.026984686082951 0 2.301538519101482 2.986111111111464 0 2.90340294121065 1.805555555555732 0 6.15099820540223 1.132349935438112 0.2756425387665313 6.760242680715605 0.3113595149084478 0.1739587559379873 1.37371131318223 8.819444444444416 0 9.879718693918843 8.958333333333297 0 9.879718693918838 7.721884192697708 0.8774668036097373 5.392259427065588 5.902777777777793 0.8750000000000049 9.558968544368923 6.041666666666838 0 5.790154287158952 5.883334566042308 0.1220640804458481 5.85497177656295 6.805555555555609 0 7.594373878376566 6.940855198301252 0.1220640804458531 7.699084755049975 8.263884367935976 0 4.346781224358606 5.763888888889239 0 2.90340294121079 0.442945906051575 0.4804961338587512 8.499410489146488 7.152777777777947 0 5.549591674996682 3.461560982158176 0.1407817315712397 1.303090385880183 3.348812090074135 0.1228622610980502 1.413299915299707 2.352581895370822 0.8736919786612428 3.17744230095322 0 0.7856090424278708 0.2919336125534622 0.1009665645215357 0.874071484052638 0.303817775997527 0.1670016308270596 0.6908920831550099 0.3697272158895051 7.063219475243546 0.2874651826613616 7.762123126197454 6.023939446023263 0.8676169774904845 8.501199032803939 2.998472274908491 0.8494064492534397 0.8200648377416327 3.105065485732644 0.8772877948637453 0.9071843000019495 6.317553847943678 0.8490964395061178 5.286368782752004 7.787052142811003 0.1662274934843398 5.812340347506336 7.708333333333485 0 5.79015428715906 3.417281345266535 0.1608897318311548 1.7724037791928 4.65277777777794 0 6.271279511483534 2.152777777778107 0 3.143965553372955 0.9310819629736699 0.4695687267098787 6.656664696118199 5.625000000000063 0 7.714655184457627 7.569444444444796 0 3.143965553373277 2.173185508388851 0.2772778004021975 0.1581893186895821 7.773456913028294 0.1421257884650917 9.213932889284685 0.2402409793324898 0 0.8343582083670884 9.829017780328311 0.4178498507428893 2.736542689698493 10 0.4982714374388993 2.646814186521125 9.837310592615305 0.5887212378479189 2.759955849968193 9.442722750177017 0.8710393349954327 0.107372731398991 9.527044334415876 0.831728457933238 0.2585783056925038 0 0.8811572370349254 5.349721740769772 8.26388888888885 0 9.879718693918839 8.402777777777747 0 9.879718693918843 9.096635229123663 0 6.993306248594364 5.416619579572194 0.7255180405185031 6.45745083313949 4.791666666666868 0 5.549591674996524 4.722222222222432 0 5.429310368915351 6.532871853873173 0.8455064456909827 1.021936878810473 6.422094410170041 0.8638656037932502 1.142765772312322 0.9759035140730945 0.8413637391341904 2.720341980910022 3.819444444444406 0 9.398593469594065 3.958333333333299 0 9.398593469594058 4.313783325792052 0.1240433205449796 7.036043748025035 2.618035351208831 0.1235365848911515 0.8124219775248809 3.958333333333394 0 7.955217796619902 3.884350396475862 0.1548348725760024 7.858422484024237 2.847222222222311 0 7.714655184457516 8.677495173081731 0.1529597186498494 7.636234559715501 8.541666666666655 0 7.714655184457861 8.528862986634472 0.1411378091608995 7.604592819384113 0.2784478152390085 0.8282926846125241 1.443790364938249 0.329062682260414 0.6474932841745593 1.538505260149425 0.3830164844093954 0.8282926846125241 1.518982561783651 6.242940993784321 0.8655060877652504 7.639134550665218 7.60290473365525 0.837201410677572 6.131202556155587 2.220671637100277 0.8746222215920292 9.879718693918804 5.347222222222397 0 6.03071689932125 5.267300078082682 0.1513103149602683 5.939442906249605 1.250000000000219 0 5.18874775675283 1.155416088963989 0.1822020740186082 5.163168265863154 1.115159776650808 0.126105061450952 5.288928654456004 8.055555555555603 0 6.872686041889633 9.235626372117977 0 7.955497660808413 8.54166666666671 0 6.992967347970837 2.777199632026945 0.5038523680157443 5.79615953457821 3.958333333333628 0 3.86565338986007 9.459290248932742 0.831728457933238 0.3643956524865329 9.567169335465875 0.841834377705147 0.4914080285941728 9.596020043403003 0.8626112373755772 0.3418776557462712 7.986111111111427 0 3.625090777697995 2.626119367344648 0.8755338977665642 0.802575292373279 0.5075205760242895 0.841455580231892 8.836149156350203 4.274462956770732 0.8436544704860945 6.088761988293211 4.206735390022843 0.8568784984001667 6.253206233991203 5.486111111111168 0 8.195780408782298 7.777777777777796 0 8.797186939188322 6.537303089764032 0.1577759512654613 6.706811525675299 3.53599524714842 0.7143239725690718 9.836867549917638 3.401882272387555 0.7616546015266532 9.83962492522506 5.672477089316748 0.8521210196460847 5.11367542551919 3.635762321940414 0.8396627381209286 6.946516575448396 8.611111111111207 0 6.39156081756499 6.3888888888893 0.121780315006399 1.680572080481183 0.8359427045568458 0 4.465553399087618 0.7664982601123955 0 4.585834705168786 0.7885003755470368 0.1639555938025899 4.418178592529582 1.319444444444845 0 2.181715104723524 5.944649131696871 0.7187873125039721 1.091439928861793 9.59969958833549 0.8046773953164617 1.041747828249433 6.527562655720022 0.8757982003255719 4.071471920329723 1.041735517196544 0 1.219492266632278 2.776418720801353 0.503853832324942 7.756746354694448 9.395843521411503 0 2.661963158120037 6.47804138225614 0.1505821306049256 8.68692632236823 1.80473251637164 0.8790579095343956 5.258885632243942 2.319004952341757 0.7539769035846973 5.626904713609196 7.083333333333724 0 2.301996410805024 7.152777777778169 0 2.181715104723851 2.361111111111228 0 7.11324865405162 3.263888888889135 0 4.827903838509416 5.208333333333508 0 6.030716899321243 5.277777777777958 0 5.910435593240074 8.337929932463584 0.5007751312243749 4.396999438378435 9.534701108579377 0.1875716509956191 0.4018681473470772 9.51430144565412 0 0.3205628095920112 9.378602235536031 0.1559687851679989 0.372842695319803 4.652777777777899 0 6.992967347970559 3.888888888888965 0 7.83493649053873 5.505633956292525 0.1559718433081184 0.3800608699780744 5.633560779921551 0 0.3127279409482441 5.616423034604312 0.1297330515791439 0.4651230970643293 4.027777777777901 0 7.113248654051704 1.180555555555729 0 6.752404735808033 0.1202813060811708 0.1234362638898392 8.193821271073627 0.2396719891227014 0 8.06000029030708 0.2979964542825511 0.1796282905484566 8.091683275568027 1.319444444444886 0 1.460027268236493 1.25006885052987 0 1.339773572713461 9.516230386157268 0 8.670892435046269 0 0.3829595457180637 4.801565814307311 1.59988431719049 0.2647782441676247 0.1380771089897715 1.999679445510953 0.8459764905465784 0.394157275816605 1.853151003155666 0.8757908641911546 0.4640075811105843 2.499771865580255 0.6017452870070059 2.117227233594696 0 0.256778574109364 5.286887615055049 0.6715949491629333 0.1388846511626436 4.587557455250164 6.467965194496739 0.8767836779932139 8.510969600696718 6.537409638941178 0.8767836779932139 8.631250906777893 7.708333333333323 0 9.87971869391883 7.847222222222195 0 9.879718693918839 4.583333333333739 0.8773111952570489 1.915469911268753 3.69915511170829 0.6194030573889009 6.288729051628545 4.316899274435118 0.8663724760782985 8.960037614765028 9.701987424322507 0 9.292757091609085 9.785371422623353 0 9.164188670160858 9.669768114780418 0 9.159398782972868 9.73305096053226 0.1326241255232359 9.21464568207419 8.124996707096953 0 4.827905739668363 8.0467039485283 0.1596074044757284 4.858556846473542 8.118673721805468 0.1535311769689296 4.825297582521931 3.19444444444478 0 3.264246859454174 4.652777777777874 0 7.233529960132902 9.139548296985446 0.424701663887726 2.246440864009577 10 0.3861014853606205 2.153116096515768 9.804211332415289 0.4601133086124024 2.125372698441531 9.849108106459735 0.2775790919329176 2.193034306111238 6.73611111111121 0 6.511842123646022 6.805555555555642 0 6.6321234297272 7.358602147409963 0.8782701430505857 9.879718693918829 9.723917061957886 0.1476531599021798 2.207130308582838 0 0.8797186939188288 6.319444444444438 0 0.8797186939188281 6.458333333333325 1.269497580457072 0.5542882185808358 6.56843083957548 6.836241042655756 0.2711426046302824 9.455969704943264 3.541666666667008 0 3.143965553373017 3.40277777777812 0 3.143965553373012 10 0.5019421474068416 3.468570256311258 8.311886980284996 0.1646070229096069 6.225036976465718 8.194444444444564 0 6.150998205402614 8.218223258455705 0.1419131964567794 6.084539372685509 1.527777777777792 0 9.518874775675112 2.15277777777818 0.1586533016196625 2.101527567336126 2.065728645303334 0.2901735564457362 2.151785407403195 0.801034957194026 0.5123338671595037 6.616635439788323 3.402777777777972 0 5.549591674996451 9.166666666666808 0 6.391560817565011 9.537981965005647 0.7108362425175836 0.5581360079822119 7.777777777777916 0 5.910435593240236 7.84722222222237 0 5.79015428715907 9.147510927269387 0.1432641006930679 5.987390770338568 6.389000965355853 0.8541845790095233 0.3596996115193455 6.38888888888923 0.8779600372310911 0.5020474441538034 1.870429735056585 0 0.3228237900965906 6.944444444444461 0 9.278312163512961 6.87500000000001 0 9.398593469594131 7.013888888888902 0 9.398593469594141 6.950935960611663 0.1747041641310932 9.39026523815733 8.250416582504462 0.8189521270848731 8.474042639704177 8.381822374895147 0.860282150909911 8.442134964575054 5.763888888888884 0 9.63915608175645 3.680555555555552 0 9.879718693918829 3.541666666666656 0 9.879718693918807 10 0.8797186939188281 6.458333333333325 10 0.8797186939188288 6.319444444444438 6.458333333333379 0 8.676905633107074 1.319444444444557 0 7.474092572295072 5.548113278244101 0.8762936847292495 1.504944819710496 6.24256865456318 0.1236874120287676 5.264248314875149 2.083676703725713 0.1236874120287731 8.948782790397466 5.424183194241438 0.8761652922351015 1.895305759497087 4.027777777778027 0 4.707622532428282 0 0.4963743059109815 7.635459663351227 2.361111111111439 0 3.264246859454135 6.852516091590047 0.4667748053321977 6.703809225088735 7.785714048747487 0.8648943628561362 7.879697233433943 9.867992134528263 0.2551130897318164 1.181114647690255 9.749035010614671 0.1320990691410974 1.180238175562196 6.242823770243053 0.8760786770727598 5.263231664176341 2.638888888889005 0 7.113248654051641 2.569444444444554 0 7.233529960132808 2.708333333333444 0 7.233529960132818 2.689818720362568 0.1799860256988958 7.183425542676864 8.478245898640525 0.8734527738581931 4.6266434973292 8.055552262652487 0 4.948187045749522 7.986111111111364 0 4.827903838509728 7.708333333333409 0 6.511842123646094 7.933296775196591 0.1263976220184329 5.821796358328932 7.661089448572552 0.1208887852437721 7.045878615774004 2.078420037348018 0.1222829745150533 2.86089247001677 1.939531148459126 0.1222829745150533 2.860892470016765 7.986110357619179 0 4.587341661376309 0.8466978612574229 0.8382171311777038 2.951184483520727 2.500000000000431 0 1.580308574317732 5.049318417835356 0.878727041964721 1.872584722054645 9.096581372890874 0 1.22030316913834 6.843882427633385 0.8550620439320987 7.451750686569095 6.725119565354003 0.7337890858968223 7.520318457075819 1.180555555555781 0 5.068466450671654 3.124800285896835 0 0.7445305427313638 3.053007203594062 0 0.6351305398417095 6.458333333333325 0 9.879718693918822 6.319444444444437 0 9.879718693918818 1.049414109168654 0.2688014762162363 9.836558440992842 0.9730042369064301 0.3652062852208631 9.877457101955372 0.9052139137890214 0.2443551622744995 9.877457101955372 5.833333333333448 0.586419753086421 7.113248654051814 0.7644358867980374 0 8.195464599391986 7.986111111111507 0 2.422277716886282 6.319444444444587 0 6.030716899321312 4.65307074577632 0.7236454259581229 9.845095451396686 4.510428762322051 0.747248329146868 9.869264186854402 0.119551406119208 0 5.48620344234789 0.1185614297481762 0 5.625553987420702 0 0.1292899076599623 5.490079636334945 9.269632216895868 0.4855823358678963 3.798478308726302 1.458333333333774 0 1.4600272682365 4.698518661640907 0.6799485059835124 0.9933562313424595 4.097222222222413 0 5.54959167499648 4.07556067412186 0.1300398762033937 5.391829069459188 1.875000000000181 0 6.03071689932106 5.720740556575432 0.8661230157015496 0.3616909990783612 9.417611677366651 0 5.889944419384121 4.652777777778159 0 2.422277716886053 3.125000000000122 0 6.9929673479705 0.349105568095064 0 2.980071629917886 0.3859439413618135 0 2.848963803963072 0.2742421665700451 0.1530924336727549 2.988501547330745 3.333333333333298 0 9.278312163512805 3.263888888888852 0 9.39859346959399 5.138888888888949 0 7.594373878376423 7.430555555555578 0 7.233529960133117 1.120393335674867 0.5321810788721688 8.569779725076589 8.680555555555527 0 9.879718693918843 8.541666666666634 0 9.879718693918843 10 0.3775692161035322 9.507751939075956 9.097056625027211 0 7.474168885890627 8.680555555556133 0 0.5236842472922675 0.3382234173168368 0 9.664753471295519 0.4907457732379735 0.1501249539808968 9.735294039963073 0.3458862956957814 0.1397129976527625 9.753970885312853 3.465157159194967 0.1301186837504412 2.446413008997158 3.604046048083857 0.1301186837504412 2.446413008997166 7.70833333333352 0 5.309029062834377 8.57513654677739 0.8221538921686448 8.378389305524696 2.22475596338656 0.3901058900716752 7.204642084371217 10 0.3668105154185964 8.118057871996724 6.388888888889237 0 3.023684247292009 4.097222222222494 0 4.346778614184773 4.166666666666932 0 4.46705992026595 7.638888888888888 0 7.594373878376649 6.319444444444805 0 2.903402941210826 6.111111111111425 0 3.504809471616688 6.180555555555878 0 3.384528165535519 6.041666666666988 0 3.384528165535513 7.708333333333342 0 7.47409257229547 6.458333333333695 0 2.903402941210838 7.500000000000016 0 7.353811266214294 7.569444444444455 0 7.474092572295471 0 0.8771580278630005 1.874402120721687 5.61696528977019 0.8762342314097242 8.360003436275095 9.876576056540632 0.1301253765027281 9.02934568591461 9.68122808132023 0.1917994500240203 9.085474595387375 9.804652024779598 0.3219248265267484 9.083989919777341 9.868717697048954 0.2792479947545506 8.955894956046198 9.745293753589586 0.1491226182518225 8.957379631656233 1.143476775901335 0.8598437086201635 5.05527621749821 6.249999999999999 0.1582707134019731 9.405580263784056 9.581229808368427 0.8440989669606438 3.665029518391401 3.755844253002613 0.8719182114763333 7.023453050922136 10 0.3803254852167071 3.12736137095466 10 0.6359081071074677 2.99141153114472 0 0.631074965532614 6.875953844307704 10 0.8735164000145412 4.236111111111109 9.147914459209385 0.8717562683224576 1.026349125322765 0.9041976985790945 0.8490730119256552 7.553635297932333 4.301802460990215 0.8693733944043645 9.628701574692052 4.371246905434631 0.8693733944043645 9.748982880773228 4.930555555555667 0 6.992967347970577 1.7696121554506 0.8284896213490551 3.667746223849689 3.867901945997954 0.1264100169345161 5.838774941620851 5.486111111111108 0 9.639156081756433 0.2757219958527048 0.1567107589618326 6.17967363547333 0.3421230723377651 0 6.31934182455579 0.2458090318657006 0.1858943492031399 6.318017734588743 9.508522224442771 0 1.486849286265508 3.496873433051521 0.8396627381209286 6.94651657544839 3.332653741886743 0.8526594853365304 6.930623080859512 2.083333333333532 0 5.669872981077553 7.639528240306348 0 0.8597095183133188 7.612215268123428 0.1484663091192276 0.7501713810726831 3.819444444444513 0 7.955217796619898 0 0.5165350364833343 8.750056792440528 0.6972360081104123 0.8389954650074678 8.484467064681395 6.721845392215087 0.5517594862881822 6.779251988548047 6.53436395098614 0.1247112619321761 8.635911668206969 1.389783666028094 0.5048253415288536 1.502790712234036 8.407553794328347 0.5754276182741843 9.85191335163961 1.250000000000191 0.8767239235359244 6.241935066138961 8.378971687295209 0.8520734757374064 8.588142907905695 8.427460728857056 0.7123556266473174 8.47365354545471 8.402777777777713 0 8.917468245269543 8.640522808173433 0.1383627718753626 8.317628945842554 0.2492284477397531 0 2.777579907987236 0.1289471416585812 0.124271944614326 2.639171646313533 0.2993532255601843 0.1814065328833092 2.681961057560814 3.471326716831997 0.8770197909404338 9.879718693918807 3.381477597140482 0.8323924386431006 8.120972471588239 10 0.3825746464710123 8.678496802316559 0.1166788895280949 0 0.4866996346223439 0 0.1263935190958826 0.6259153536882848 0 0.1256954443457114 0.4849846514724579 2.152777777778174 0 2.181715104723574 2.065728645303329 0.1315202548260737 2.231972944790643 0.3526180779294009 0.2847557487079954 0.1475667140793927 0.4760982740550485 0.38507159917566 0.145124775261522 0.5008593457184342 0.261341186976205 0.145124775261522 7.45750462542518 0.8605022584635789 6.145892489211333 0.9750474297337943 0.8221210539605708 3.625128332227425 8.958226734664921 0 6.993028250669344 3.541666666666789 0 7.474092572295211 5.00000000000021 0 5.42931036891537 6.960790198487348 0.1408315923868395 9.527878193589984 6.891345754042908 0.1408315923868395 9.407596887508802 9.615159310123328 0.8558489096746278 4.538494753261909 1.448947626382132 0 0.3123246130092613 7.929019791630839 0.4247218509713409 9.573286372358307 1.458333333333444 0 7.474092572295086 1.241748478520335 0.8746005293523749 2.720171402762396 6.944444444444832 0 2.061433798642645 8.534072299768775 0.1256009880009042 6.112778131863063 8.124999999999991 0 7.714655184457838 0.3480891372864356 0 2.008185008537513 4.791666666666832 0 6.271279511483547 8.819015453757926 0 4.587588904235933 3.101529358840059 0.2674295236884487 0.1471368986339726 4.112975444519789 0.8284896213490542 6.143313173027323 0.8349392599295394 0 0.6213567512452987 10 0.6240338135932918 9.618762348729259 3.125000000000245 0 4.827903838509408 8.819444444444752 0 4.10621600202273 5.73753339329327 0.630403316994581 7.253349783311096 5.575567919154183 0.645363780622209 7.322187504977776 2.708333333333727 0 2.181715104723604 6.458333333333432 0 7.233529960133017 6.530429410242244 0.1445638868690809 7.214708451496465 0 0.6290530882466305 8.393876728998025 5.069444444444445 0 9.398593469593999 9.232589152519648 0 6.754438139549451 1.185172746004965 0.8701151197462821 9.333794674215394 8.263888888888864 0 8.195780408782532 8.124999999999977 0 8.195780408782525 1.028380132103188 0.1248109575564658 5.135235319335238 0 0.6351389238419252 0.7602636987873694 3.541666666667048 0 2.422277716885993 8.746939617526166 0.1529597186498494 7.756515865796679 8.611111111111093 0 7.83493649053904 8.65807648158237 0.1423945816560306 7.888008558642305 7.708333207751572 0 4.106216074527481 3.055555555555518 0 9.278312163512769 7.29223102438121 0 0.3296584911212592 7.77777727544897 0.1586534526690218 4.627435285060878 7.847221468730265 0 4.587341661376284 10 0.6125763458228582 3.958070276066542 4.791666666666734 0 7.474092572295241 7.926663600217458 0 0.4157352044355717 7.643261355505131 0 0.4214789680767792 6.38888888888927 0 2.542559022967302 0 0.1265785768688975 2.292395362307321 8.242120710751941 0.8765062109582257 8.600960507351463 8.178348941662424 0.8544374847600603 1.408135230309482 1.866339327932856 0.8761328207640537 7.550748324067985 1.251443337408078 0.876410388075328 1.72855788045054 7.989399204113175 0 0.7402378131294722 8.192541964866699 0.1217595661596561 2.227760300838594 8.630174315791727 0.8719386141082044 1.250913754603146 8.263888888889213 0 3.625090777698019 2.154819988301804 0.7529577238196141 7.150859367898723 1.250000000000143 0 7.113248654051549 1.180555555555689 0 7.233529960132715 2.077701691928597 0.8472969823733285 2.757652515478497 0 0.4918757558115739 1.238348716377114 0.1876560491093766 0.4259991370807248 1.30439461015852 0.1547443494399373 0.5803330657552617 1.374473661914538 0.9777539508559033 0.8424750696541197 0.7824995134447178 4.236111111111494 0 2.42227771688603 3.541666666666672 0 8.917468245269291 7.43055555555555 0 9.879718693918829 7.569444444444435 0 9.87971869391883 7.916666666666916 0 4.707622532428545 2.291666666666961 0 3.865653389859998 3.958333333333321 0 9.158030857431665 1.250000000000421 0 1.820871186480004 9.542976417473897 0.8340628810678065 1.18586340664944 3.881348068318283 0.120134125663125 1.478015502873957 5.694444444444834 0 2.301996410804916 5.486111111111474 0 2.662840329048432 0.2883969731445587 0.8496070667791725 6.864799029561441 3.95833333333332 0 9.879718693918814 3.81944444444444 0 9.879718693918829 3.686399808558164 0.8719182114763333 7.143734357003304 4.930755269659148 0 0.1149397308885211 5.07179308230274 0 0.1092792372250385 9.721884143986163 0 0.7606215224746355 9.687319453726438 0 0.6658120884838548 4.722564932681085 0 0.6255187677425924 0 0.8782701430505849 2.294175630367811 4.747244587611807 0.1955478371718767 0.8044970201894954 4.652848655151226 0 0.7416655177533895 4.63752965054648 0.123618508585231 0.8990173817512297 9.589392889999198 0.2779544663205257 8.881532301637691 0.7638888888889191 0 9.15803085743147 9.764148990293759 0 2.777714740347164 8.680555555555539 0 7.71465518445787 0.8333333333333773 0 8.316061714863228 2.727729885730446 0.5105263034865003 5.780609782607803 9.389075567001392 0 6.021074604140628 3.19293879585781 0.1271446981306033 9.432342978379825 0 0.6256141348298581 1.593338137853587 0.1547443494399373 0.5766291360314165 1.514589510795157 0.1547443494399373 0.7055703680234898 1.445943034736903 7.358766015173458 0.1242748368444271 7.986728070055977 9.515560958224807 0 2.39899014396843 9.392696094388402 0 2.408984392776662 9.444767861248259 0.1442849698543064 2.247215256190056 8.265234131390127 0 0.1056148420251408 8.403633695364634 0 0.1175468903934225 1.734002755390404 0.1365741920238815 0.2473563462148147 1.737683685396159 0.2645609939602807 0.1380771089897715 3.402777777777901 0 6.992967347970513 3.819444444444429 0 9.158030857431672 6.736111111111173 0 7.474092572295385 6.736111111111173 0.1213395322119129 7.336541915798882 8.194444444444475 0 7.113248654051982 8.263888888888928 0 6.992967347970819 8.348681473592379 0.1429624929611587 7.084715371127997 2.180362809243795 0.5007708046711485 7.297323169755549 1.937530043187709 0.682149121603504 0.1281782690338479 8.472222222222356 0 5.669872981077944 7.986111111111084 0 9.879718693918839 8.124999999999961 0 9.879718693918839 1.276862478961354 0.4528524601113293 1.24642378150242 9.665068856955502 0.4722361758047648 0.930439450471984 3.541666666666829 0 6.271279511483487 4.513897553425531 0 0.1178015914396208 4.374999999999996 0 0.1202813060811716 7.978880800197978 0.8752962827956563 0.909391789321055 0 0.379952628789958 1.874728645390861 3.958333333333361 0 8.676905633106941 7.502548351961963 0 0.2242189681136458 7.571793082302763 0 0.1092792372250832 7.430755269659191 0 0.1149397308885625 7.458850977646902 0.1305425831824618 0.1691953612482406 7.530644059949674 0.1305425831824618 0.2784745984733238 8.024009521404123 0.859543161111566 6.823521963762079 7.842049841573526 0.8702125383754933 6.838559275307457 5.833333333333771 0 1.099183349993202 5.902777777778224 0 0.97890204391202 0.5501870252862056 0.1388846511626436 4.859314575213184 4.216384458440938 0.8784531119356118 6.819956183647529 7.907464495423082 0.8713278722310592 8.631498988368833 7.856562058086139 0.8496388163035555 8.771031857298773 7.973682768838096 0.7261450272617812 8.695086731543046 8.033787377418626 0.8765062109582257 8.721241813432613 8.02458520617504 0.7478340831892849 8.555553862613108 9.491474401757545 0 3.646593433824341 2.152777777777806 0 8.676905633106838 2.638888888889138 0 4.707622532428209 10 0.5140323169039066 2.083604212345513 1.319444444444446 0 9.879718693918786 1.458333333333339 0 9.879718693918781 0 0.3802864352497057 8.396760068290703 2.291666666667067 0.1586533016196625 2.101527567336133 2.291666666667061 0 2.181715104723581 2.361111111111506 0.1200943398880383 2.191220204206415 2.361111111111511 0.2787476415077009 2.111032666818967 2.056842768729161 0.8799056601119621 1.755977983698051 4.861111111111414 0 3.745372083778957 5.278811767835917 0.8706760439406191 6.29789251932514 2.361111111111206 0 7.594373878376318 0 0.8766300232793212 7.15290120173316 0 0.8762481677863287 7.291733918182093 0.1124216062896282 0.8766300232793212 7.23258427656929 0 0.3747589498435459 8.2581734992328 0 0.3751297900784132 2.852794426103429 0.1539608604888732 0.279048817550707 2.989701681470482 5.489399204113139 0 0.7402378131292664 5.208333333333536 0 5.549591674996554 6.527777777777811 0 9.03774955135059 2.171881229384679 0.8477087577185864 8.900934936836142 4.166666666666982 0 3.504809471616568 4.028939926141531 0.8531536733679348 4.320775177056104 8.216608265985059 0.1747997848721738 7.156752230136776 8.333333333333353 0.1204819298434898 7.221608088867092 8.194444444444464 0.1204819298434898 7.221608088867079 9.096521679869607 0 5.789749828843167 9.653063578704328 0 5.042262274550735 4.652777777777767 0 9.879718693918807 4.79166666666665 0 9.879718693918779 4.7222222222222 0 9.759437387837588 4.754858454281152 0.1543320670493954 9.845255323909857 3.096554644959149 0.1583125885726747 8.613141029109499 7.484127943915037 0.3752956867778918 2.527056724536094 0.9027777777777768 0 9.639156081756248 1.041666666666669 0 9.639156081756285 1.046977973157399 0.1472518441397952 9.716277134911586 8.125000000000185 0 5.309029062834428 8.263884716157222 0 5.3090314719623 7.152777777777803 0 7.95521779662012 6.388888888888986 0 7.353811266214187 6.319444444444493 0 8.676905633107058 7.083333333333524 0 5.188747756753161 0.4639727824401665 0.4170832432132716 9.262929758360055 0.8017981416406108 0.8712102401711018 7.894372237381425 0.983209225510523 0.4851818983157046 0.1464623591688128 1.032091865288854 0.5839128917802611 0.3237570908503871 1.051235291609669 0.610369642871287 0.1464623591688128 9.097574795241005 0 9.639918600381547 6.597222222222245 0 9.158030857431767 0.1573907238145803 0.8435972512695928 5.547427022441028 0.1257912843667784 0.1259565875306473 9.571661410365753 7.361111111111112 0 9.518874775675322 7.291666666666671 0 9.639156081756486 2.708333333333732 0.8413466983803375 2.101527567336156 2.612736504419784 0.8798430341610203 1.996345347468401 2.682180948864226 0.7211897325413577 2.036439116162128 2.751625393308673 0.8798430341610203 1.996345347468409 2.612736504419799 0.8798430341610203 1.755782735306056 4.305555555555967 0 1.820871186480176 4.166666666667082 0.1236944964665178 1.732544869810684 9.83916518074729 0.2870146728526256 6.587272917269506 2.291666666666793 0 6.992967347970444 6.805555555555834 0 3.745372083779075 2.638888888888924 0 8.556624327025693 0 0.8811572370349254 5.488610629658661 2.912804297818887 0.8672331040571299 0.1137486231875288 8.61111111111147 0 3.023684247292185 1.597222222222237 0 9.639156081756333 1.736111111111126 0 9.639156081756337 6.597222222222316 0 6.752404735808347 4.792047232986695 0 0.7441279264110481 6.875000000000044 0 7.233529960133067 6.111111111111317 0 4.948185144590775 0.949982779981003 0.8700259811851755 7.986543395757575 0 0.6359948599505708 8.678382939448664 0.143713513597384 0.7290521841367557 8.804099699271774 2.630359673148604 0.8736919786612428 3.177442300953231 3.055555555555683 0 6.872686041889324 3.611111111111239 0 7.353811266214041 8.125000000000018 0 7.233529960133144 10 0.6364650521036366 6.597955250428466 6.250000000000414 0.121780315006399 1.680572080481178 4.333503307251146 0.1386593261356702 7.743545859415121 4.216481837758078 0.2596098040253342 7.675983482502321 9.053405505333021 0.1578799437114075 9.216175249130671 1.732137283256907 0.1247364223685311 6.586790296746893 2.290349484349725 0 1.221494967986342 1.180555555555757 0 5.549591674996345 4.027777777777829 0 8.075499102701077 5.000000000000234 0 4.948185144590687 8.633025981719666 0.123876675986523 6.940208135927191 0.4550753184103959 0 5.696255805938515 4.236111111111097 0 9.879718693918813 4.166666666666642 0 9.759437387837629 4.097222222222209 0 9.879718693918814 4.180748984676011 0.1442420524969545 9.831494495131558 8.541651644046347 0 5.309037736148452 5.147541835719539 0.8398885978905786 0.7892479882432707 3.519625376347873 0.8274378517186284 6.169428746535723 3.574379535789869 0.857510288065843 6.037096657733777 3.09466273148622 0.8398372518496962 8.434545805896519 2.986111111111145 0.8787270419647217 8.57347856195803 6.597222222222296 0.8364197530864224 7.794842721845161 9.162933065693014 0 1.582464169845641 9.198831250673621 0.1552493390618661 1.472465983862216 2.152777777777832 0 8.195780408782166 6.875000000000044 0 8.676905633107099 0 0.6186305256520428 4.377519442066935 0.5081318791951867 0.5416829955231125 9.376269796130826 7.849504024540609 0 0.1051048806142993 7.710681971191653 0 0.1092792372250832 3.460546434732911 0.8758526887930351 8.960220434525668 0.1176217826423863 0 5.208333333333327 0.119551406119208 0 5.347314553459 0 0.1274886664494017 5.213474645386763 1.543309989913804 0.8382092346678326 5.501885769614885 1.426121800614487 0.853318389454914 5.404004015137716 3.600409520038339 0.700427192335671 6.136438681929876 2.43055555555595 0 2.181715104723588 2.569444444444838 0 2.181715104723596 1.87265136214173 0 0.1092792372250432 2.013544049203348 0 0.1122266821599462 6.527777777778139 0.4999999999999999 2.902524068201617 3.888888888889064 0 5.910435593239988 0.769657018813007 0 0.1105343867429153 0.9019218601909529 0 0.1175468903934132 6.640915778077558 0.8797686830720617 9.212991908584282 6.571471333633113 0.7211153814523981 9.253085677278001 7.59750376611729 0.8551343944826472 7.621132989291146 7.494068038539738 0.832025707560292 7.510761521443289 7.637748005036666 0.8787038692746927 7.489115229025491 0.7245263924262833 0.4849731140972658 8.503627720508169 2.777777777778016 0 4.94818514459056 3.130947600494896 0.8320141230902258 8.593284246972718 3.200392044939327 0.8320141230902258 8.713565553053897 3.055555555555576 0.8787270419647217 8.693759868039209 6.249999999999998 0.4778611390623512 9.419202991464962 7.527851338420351 0.2509508989856233 0.1691953612482406 0.902777777777767 0.1228055301980583 9.757175795874117 1.875000000000431 0.8413466983803374 1.62040234301142 1.970152654805713 0.8797607796964505 1.514963679102464 0.2713217221025953 0.1512879755114865 8.262113929185384 5.903633695364858 0 0.33238003070142 6.042522584253516 0 0.3322020748510221 10 0.7570632162847724 8.88948050483711 9.909140420094495 0.8793240796385209 8.889590918212747 7.71495083796588 0 0.5241838512403542 7.986111111111573 0 1.21946465607459 6.264004806136506 0.8538742270660287 8.437855858199953 6.319444444444507 0.8364197530864208 8.275967946169832 6.398520750052298 0.8767836779932139 8.390688294615551 7.712169441835656 0 0.744872114643512 7.573919904363742 0 0.745960895125771 6.589926567799798 0.8709601291382517 1.153104778261856 6.659371012244251 0.8709601291382517 1.032823472180689 3.087684417779532 0.1322786211190012 6.825216360699357 8.172676266307501 0.8765062109582257 8.480679201270291 5.224432672819802 0.8418472495643976 0.3724486087633817 5.339405378116777 0.8734346943885365 0.4550892670224047 3.819444444444626 0 5.790154287158813 2.708333333333646 0 3.625090777697667 0 0.2467791364684351 7.499721837011032 6.728815456688685 0.8709601291382517 1.153104778261866 4.236111111111124 0 8.917468245269285 7.976908939867521 0.8713278722310592 8.511217682287674 8.103231821863066 0.8765062109582257 8.600960507351452 0.650790202034305 0.135230143550105 0.2556591620044373 0.6445491218615851 0.2561278037852017 0.145124775261522 0.9877712166283976 0.8603369041947027 3.489647354232507 2.777777777777859 0 7.834936490538685 0.348225642882031 0 5.488014803841969 9.085500466795073 0 4.115141212045873 9.082269736941425 0.1432641006930679 6.110098826315408 9.097222222222342 0 6.271279511483852 4.744155825386798 0.1238765246349262 5.842911427543843 4.796037802222206 0.1608769507945256 5.70744307348187 4.674711380942352 0.2477530492698483 5.857678452855036 4.791666666666853 0 5.790154287158865 4.865482246666646 0.1608769507945256 5.827724379563049 4.813600269831238 0.1238765246349262 5.963192733625021 8.52071126378403 0.860282150909911 8.442134964575068 7.08333333333346 0 6.150998205402537 8.958260084815207 0 1.220023405900053 5.852413908044233 0.8661230157015496 0.36941104046324 5.833001072370564 0.8788004545017717 0.5082112401907972 9.096321992663533 0 8.196300156560607 1.458348527719757 0 8.19577163629906 0 0.3845842522606364 5.358527224839039 1.724503969253711 0.8528776547811522 3.638210469481973 3.541666666666995 0 3.38452816553536 0.2753049577380139 0.8370816128072078 9.100374089019869 0.2696293586564815 0.8513130474905042 8.945235810158987 0 0.3685700913555434 4.517886734492441 0.9587051886969131 0.5342543937977355 8.500286978706605 3.472425394114825 0.8737126773840214 6.813493211675973 6.940109021094244 0.1243210831649124 2.946772576991144 3.750000000000259 0.8797073621149415 4.598082789771088 3.681024767577894 0.2786732306521316 0.1499702755568579 3.818963817229258 0.2488155372516674 0.1243403545367528 2.629726691726527 0.8705895807821131 3.820269824168055 8.867925745310558 0.8706501079995652 1.731591604413473 6.095513431247884 0.1356884269240251 7.787779708968561 9.625260150036961 0 1.714576346802602 2.682180948864235 0.8798430341610203 1.876064041387232 0.1236574419811874 0.8794659590049758 0.5585845275826742 4.791866380770259 0 0.1149397308885211 4.652786442314419 0 0.1178015914396208 0.5068553912396795 0.5411356195616068 8.672507992344155 0.5795758186204063 0.4760185454406635 8.553835440998739 10 0.8697912773991351 4.097178279673514 6.934456092641669 0.1169688220465457 4.060355455726646 7.291666666666684 0 7.955217796620143 4.203164697969824 0.8282255112548795 6.950449137449048 2.98676869233221 0.1728554972352825 9.586345206492613 2.916666666666624 0 9.518874775675137 2.88937051055892 0.142869800522556 9.440358935098402 3.028259399447801 0.142869800522556 9.440358935098427 2.789712621868428 0.8772101563130627 7.280514314274959 1.385600795887759 0 0.625028664961395 1.510947439756304 0.4202068706915728 6.561652892526793 1.547275358234832 0.4629415202005001 6.728805914350392 0.8350095322461677 0.3664791962199336 9.877457101955372 0.1392216714037994 0.442233145731329 1.590566223164612 0.2939660208437367 0.5221893789249608 1.443171120047928 9.231106058884096 0 5.068641123190071 0.7701362441454855 0 1.46756556043698 0.6753868624160184 0 1.353932606325143 9.064406113036444 0.5506271356671351 9.862407089467965 6.736111111111317 0 4.827903838509624 8.472222222222252 0 7.113248654052004 10 0.8735164000145412 4.374999999999996 1.800981896215297 0.4327751197578094 0.1281782690338479 9.58978761643832 0 7.605468290231316 4.444444444444843 0 2.061433798642527 4.861111111111306 0 5.6698729810777 0 0.3628493952595555 1.170158234439541 5.625000000000379 0 2.422277716886083 5.555555555555927 0 2.542559022967254 0.7397740041966133 0.8458201489962057 7.524656433750129 8.194444444444757 0 3.745372083779184 8.125000000000309 0 3.865653389860352 6.395328238439022 0.8534271563912058 7.314437778096636 4.930555555555923 0 2.662840329048413 5.06944444444481 0 2.66284032904842 4.943900405024992 0.160857108391614 2.736893720530002 8.263888888888946 0 6.752404735808479 7.777777777777763 0 7.834936490539011 7.847222222222582 0 3.143965553373298 5.000000000000124 0 6.872686041889416 8.247809655762778 0.8353411958186889 8.852887036630571 8.30952724285077 0.8520734757374064 8.708424213986856 3.055555555555984 0 1.580311928919559 5.075959891416558 0.1234567901234574 2.76393545611146 0.4786739200421752 0 7.912683677270738 5.138888888888934 0 8.556624327025798 5.20833333333338 0 8.436343020944626 4.791666666666685 0 9.158030857431616 4.722222222222231 0 9.27831216351278 4.305555555555565 0 9.037749551350448 0.3050084866969008 0 7.450387125954878 3.125000000000095 0 7.714655184457529 7.291666666666989 0 3.384528165535596 7.222222222222535 0 3.504809471616762 10 0.3683252475580454 7.154108444911335 9.720246919245197 0.841834377705147 0.49136147783608 9.749097627182325 0.8626112373755772 0.3418311049881784 6.87500000000007 0 6.75240473580838 9.027084186010759 0 7.113648457374007 9.602075850713078 0 0.9415840229126153 9.633565653253639 0.1675587804883031 0.9450610675429545 9.519368836490358 0.1521883475396368 0.8921146384187707 9.550858639030917 0.3197471280279399 0.89559168304911 6.458333333333538 0 4.827903838509615 6.58975735813411 0.146513116903679 4.841626217985789 6.458333333333535 0.1212729580352784 4.965039379523089 6.458333333333435 0 6.752404735808337 1.595200998911896 0.1365741920238815 0.2432205902273774 5.261563827397564 0.8780025834037448 8.868013347958939 5.122674938508693 0.8780025834037448 9.108575960121296 8.19444444444459 0 5.669872981077928 5.625000000000059 0 8.195780408782309 8.958333333333254 0 8.917468245269607 8.874484711364843 0.1227637030365637 8.866369877124447 1.211430909788195 0.8421374112776083 5.130828093981693 3.194444444444805 0 2.783121635129489 2.705195704978871 0 0.7604573414416113 2.690617424008208 0.1235365848911515 0.9192805017656862 1.234612735106004 0.1591896269012652 3.184219379264205 1.250000000000325 0 3.264246859454069 1.25174950873094 0.1516757104884006 3.275019083146654 0.6239522072480688 0 9.643057409349353 8.062487575001771 0.8636934153886728 5.325878999195309 6.145072206980942 0.5000000000000062 3.565389561161887 9.594525578483889 0.1491226182518225 8.960262627417155 2.916640406320725 0.8672331040571299 9.879718693918779 5.069444444444496 0 8.195780408782284 10 0.1217134700943665 7.984313896222919 9.877689085220098 0 7.987661699195154 10 0.1234362638898392 8.124376826629183 3.54166696041036 0 0.3349362258799181 3.70774761579325 0.2629412196770569 6.741654462224229 3.816433625108868 0.1190723348353672 6.828356438666242 2.15277777777797 0 5.790154287158728 9.58377606747017 0.8740434124693506 0.107372731398991 9.528764870748795 0.7057718704025886 0.1512055742935128 1.319521012563988 0 3.14400975999714 9.615934946092686 0 1.433399869024524 9.629935245279038 0 3.646875609050114 3.209923201185247 0.1228622610980502 1.413287177648904 3.125000000000329 0 3.384528165535343 9.491778981139802 0.8473089296858853 5.614203936674459 9.37018918259554 0.871127348154037 5.705344932163791 0.2744265177724007 0.8476181987173992 2.983592456923509 9.096407180893323 0 2.42181069344295 9.23954102444953 0 2.903256715022214 7.777777777778186 0 2.061433798642723 7.847222222222628 0 1.941152492561549 7.836433010883763 0.1651883518537083 2.078973895475418 0.3487136461658517 0.8677447633322468 3.953138384743833 9.266878529852121 0.8632867246643103 0.9492138567009131 1.944444444444849 0 2.061433798642389 2.013888888889285 0 2.181715104723566 2.083333333333722 0 2.301996410804743 8.973890517458443 0.834086744583029 7.143591915749017 5.555555555555814 0 4.467059920266044 5.625000000000268 0 4.346778614184878 5.537977199202322 0.1671573428936804 4.407671826820486 7.51347049384708 0.1452262463661977 5.116337412614357 7.430555555555754 0 5.068466450672011 7.361111111111308 0.1218169790848786 5.080651978146911 7.430555555555724 0 5.5495916749967 8.111527693615585 0.8189521270848731 8.474042639704166 9.893628856164696 0 4.516929577741153 9.879718693918829 0 4.374999999999996 9.893628856164696 0.1202813060811718 4.447485133296709 10 0.1202813060811718 4.374999999999996 1.392683333380389 0.8403952087044751 3.677578790396003 1.585615080364823 0.8528776547811522 3.638210469481966 3.541666666666841 0 6.030716899321143 0.8393913985546266 0 5.425080025994599 9.416785566967686 0 1.600512032753767 4.590928737732902 0.8407399596833383 3.358216912888387 5.486111111111526 0 1.700589880399058 1.319444444444694 0 4.587341226346976 1.458333333333583 0 4.587341226346984 1.442599622109462 0.1592600403166616 4.667215318872849 0.2831815099020084 0.1572123542804142 6.593530919144958 0.3421230723377622 0 6.458230713444678 0.2458090318656977 0.1858943492031399 6.456906623477629 1.041666666666988 0 3.384528165535228 0.9729207239558086 0 3.264650139617773 0 0.8771580278630005 1.735513231832798 0 0.8772776834109657 1.595679164231 5.13888888888922 0 3.264246859454285 6.805555555555719 0 5.669872981077829 4.943974547711953 0.8775242145961037 5.471918215490208 4.513888888889305 0 1.700589880399015 4.49663045567883 0.8528472658299207 3.383498448568376 6.458333333333359 0 9.158030857431756 6.04166666666668 0 9.158030857431708 7.638888763307119 0 4.226497380608647 2.708333333333358 0 8.67690563310687 2.742721667205716 0.1465711145190284 8.776313987772976 7.790286472189326 0.1234567901234572 3.091828594909531 9.667379029433441 0 0.3205162588339183 0 0.8784299758138989 4.935429867115584 0 0.8785502996759462 5.07277184080733 8.471617777439365 0.5024027038692666 9.706547984687401 4.285828902885384 0.8784531119356118 6.699674877566359 7.932793279933446 0.1315085854687655 1.97480861507428 10 0.6254944792818928 1.733172205455386 6.111111111111197 0 7.834936490538851 3.125000000000422 0 1.700593235000734 9.159519589138213 0.8589381285352162 6.474463688905534 0.6250629122615354 0.2710226142159936 9.849453677131764 0.7021882486317467 0.3711852314133636 9.877457101955372 0.7634159386402779 0.2437031904331551 9.877457101955372 9.903906485589896 0.1241526465320646 0.8314447224540304 9.800611880906215 0 0.8314666313233838 9.896705395316319 0.1241526465320646 0.9684669093329697 9.849467460936825 0.2917114270203677 0.9010988451145607 9.746172856253144 0.1675587804883031 0.9011207539839141 1.28529827755882 0.1376467284762485 4.64781446509107 5.763888888889057 0 6.030716899321275 5.833333333333504 0 5.910435593240108 7.013888888888914 0 7.714655184457767 7.152777777777784 0 7.714655184457798 5.763888888888973 0 7.474092572295307 5.694444444444514 0 7.594373878376466 1.403505127796632 0.4529911590999371 1.365935000677388 1.684816957352342 0.1234567901234565 4.872808859446307 8.73559582247594 0.1227637030365637 9.106932489286763 4.146940013996485 0.8784531119356118 6.940237489728698 5.258959667020259 0.1230027409798238 1.987473098632992 7.361111111111303 0 5.188747756753179 7.291666666666865 0 5.068466450672002 6.180555555555694 0 6.27127951148365 0.6944444444447415 0 3.745372083778741 5.902777777777963 0 5.549591674996602 5.97222222222241 0.1635802469135781 5.509497906302888 5.863579237510455 0.1459961275202412 5.406319617757022 2.986111111111478 0 2.662840329048306 8.263888888889255 0 2.903402941210989 7.847222222222233 0 8.43634302094484 7.777777777777794 0 8.31606171486367 5.769364749481905 0.8353411958186963 7.816570910579878 6.052706867414624 0.132504230375552 0.250051120768962 7.938113019715153 0.8353929770903947 6.946724812952715 8.263888888888994 0 6.271279511483792 6.458333333333544 0 4.587341226347268 6.527777777777987 0 4.707622532428443 6.536341371014556 0.1592262874268449 4.641009297322215 7.546362593942984 0.417407536316411 2.648093019414338 9.872183659743804 0 5.908399197341309 10 0.1220403300572577 5.902627775086729 10 0.1267193059305197 5.765125756720287 1.319444444444899 0 1.21946465607415 1.180624406085433 0 1.219492266632286 1.256032502875268 0.1233687915610148 1.239085477246509 5.833333333333544 0 4.948185144590761 5.763888888889095 0 5.068466450671926 7.616617160613268 0.12087560587485 5.256076705825288 5.138888888888953 0.1208887852437732 7.488551342769979 7.522200559683647 0.1208887852437721 7.286441227936349 8.541666666666634 0 8.195780408782554 0.624924204808611 0 3.624235954693156 1.319444444444645 0 5.54959167499635 10 0.375260415842201 7.015586413444227 9.23313342872475 0 8.197499574509887 5.972222222222243 0 9.037749551350526 4.027777777778189 0 1.820871186480161 0.1164582663628873 0 1.734944025858827 0 0.1220958652159341 1.735961108420068 0.1164582663628873 0.1254384302214949 1.663731931605948 0 0.2475342954374291 1.664749014167189 0 0.1254384302214949 1.595454572413788 5.486111111111168 0 7.714655184457613 0.9875132200297172 0.8431557069244909 4.91199711855222 1.005574033565018 0.8598437086201635 5.055482036850384 9.247962259291249 0.7350429929867679 1.115943756167247 4.513888888889316 0 1.460027268236671 4.583333333333766 0 1.339745962155503 2.430555555555993 0 1.460027268236556 0.7671708763435585 0 7.712760328116984 0.776633515784124 0.1473328015181626 7.544614010123619 0.8706046831246863 0.1284792087955593 7.654205048815363 5.073280552946699 0 0.744872114643281 0.7654280398798617 0 0.7391582239503351 7.916666666667115 0 1.339745962155735 5.683917469371475 0.87104445477113 7.927456197480711 9.876162994876562 0.5447340404769261 8.243695419064899 0 0.3780135498278507 0.6328362850656063 0.9858623708148568 0.1610789315279953 3.191906828247923 3.31339881906597 0.8772877948637453 1.026784621918822 5.694444444444466 0 9.037749551350505 7.013888888889026 0 6.03071689932136 9.537669331177675 0.1853036385323898 5.599510720319254 0 0.1267193059305197 5.626236867831398 10 0.6252289483293432 3.263694425005381 5.208333333333548 0 5.309029062834213 0.6492135554256089 0.8492079387762791 6.254904583000561 0.6535194534897164 0.853411452773853 6.447161747816121 0.8012511437315331 0.8712102401711018 7.654125434609144 7.083333333333495 0 5.669872981077848 7.209593849074166 0.1226614123799605 5.742769523828756 1.660080493458668 0.8752887380678165 3.584096812797529 7.09007798281913 0.8533205580394212 5.149062931176742 3.819444444444921 0 0.7383466224006726 1.041666666666956 0 3.865653389859933 1.805555555555657 0 7.594373878376283 2.013888888889315 0 1.700589880398876 5.745646358798557 0.6026223628471696 7.403240733379731 0 0.6356528221040034 2.153588169324912 6.248109403499239 0.8490964395061178 5.166087476670835 7.222222222222468 0.1553463454892614 4.341330169217175 7.152777777778022 0 4.346778614184959 7.142789425975016 0.1169688220465457 4.180636761807833 2.221329367036417 0 0.2278440274186915 2.291118651166401 0 0.1156173452587452 2.152432938092237 0 0.1122266821599462 2.243673530242909 0.1513980192992155 0.1581893186895821 9.879718693918829 0 6.319444444444438 10 0.1287591090176589 6.458744940717548 10 0.1305275078075192 6.31945816562863 0 0.6365944382150743 3.127108248448396 5.557165436897817 0.1420251113246644 4.481262290337147 0 0.3702874129341908 5.76166825469283 3.541666666667086 0 1.700589880398963 2.843386113720368 0 0.1137486231875288 2.705045240331744 0 0.118382924701585 0.8666465668316776 0.5008642247968321 1.508940556913192 3.402777777778227 0 1.219541131159161 7.451523477125116 0.8788829484388072 7.646573482232906 10 0.3880402603141664 5.494573769712511 8.055555555555543 0 8.79718693918835 10 0.8794772687741207 2.014307049505746 10 0.8771580278630005 1.874402120721687 1.458333333333381 0 8.436343020944461 3.055555555555903 0 3.023684247291825 9.606850538729166 0.1865273752834793 7.885047842568081 9.514456440330679 0 7.93827080268002 9.236703914475195 0 0.9819175048583682 8.402777777777796 0 7.23352996013317 8.263888888888909 0 7.233529960133156 10 0.3737748816403873 1.593113546036375 1.527777777778021 0 4.707622532428157 1.380482898162513 0.1270234150834874 4.794118453728521 4.722222222222222 0.8457704912156192 9.845095451396686 3.819444444444578 0 6.99296734797053 3.885878069553307 0.1190723348353672 6.948637744747415 3.817579661093283 0.2418398361724829 6.974654807398626 0.1199596732513178 0 0.6260248750337551 7.93668172123621 0.8457966998411031 2.234757280976543 0.7111404256743469 0 7.582051544050302 0.9034477863699162 0 0.3318114063101768 4.236111111111113 0 9.158030857431617 7.152777777777811 0 8.917468245269458 7.285430073519722 0.132281607642499 8.963054267022276 0.2756580804281762 0.8513130474905042 8.684641076107091 8.611093344666426 0 6.872696192339417 6.188537526103008 0.8459682467713473 7.899179949302399 6.319444444444528 0.8787270419647223 7.818082255606575 1.326571387371231 0.1236801957543557 3.460600960505603 7.369670372044281 0.8718299033582348 1.745625340696472 5.347222222222218 0 9.639156081756411 0.2376420705279526 0.8513130474905042 8.804210112647409 4.375000000000417 0 1.700589880399007 8.520330855577635 0.4155860683297254 9.854634633047791 6.926988905736136 0.8761733505124025 6.940629702365847 5.360383167368918 0.4137645980457233 9.849621820555383 3.124999999999988 0.7503230721605534 9.870321469355137 3.263888888888883 0.7643535045050476 9.83962492522506 9.589026423070191 0.1476531599021798 2.289126432929726 0 0.8797186939188281 6.597222222222214 0 0.8777385772736531 6.736369724892439 4.513888888889067 0 5.790154287158837 4.652777777777958 0 5.790154287158847 4.652777777777946 0 6.030716899321188 4.722222222222399 0 5.910435593240026 5.690823973869236 0.1266693803779297 1.415795112653067 0.9041550735577517 0 3.144760735461999 6.85045147433051 0.8626330004848157 1.461564548235025 8.193636716956194 0.1230741771090416 4.801216251730274 8.749893401331578 0 7.113309556750499 9.517292341226964 0 3.164925351176409 0.7638888888889024 0 9.398593469593822 8.680537789110854 0 6.992977498420593 0.455402500530421 0 5.143728502318572 7.912724448755113 0.8752962827956563 0.7910088646194605 0.1207762281748276 0 2.012111733856777 0.1164582663628873 0 1.873832914747715 0 0.1220958652159341 1.874849997308957 9.86530710880167 0 5.756769975949648 0.2401617321619585 0 1.661803853624506 0.1237034657990712 0 1.593526494432346 9.195156634205642 0.8442589897752644 8.199052074953912 7.249807176386854 0.4438982529131662 2.206988697342545 10 0.8794659590049758 0.6232245077465692 9.843895655380383 0.841834377705147 0.5559957281789304 3.268237221725984 0.1529922633432886 0.8197657470295487 3.263689174785724 0 0.7439468420191042 10 0.1299259320307377 2.013834976696601 9.857518759873162 0 1.878596418957616 10 0.1220958652159341 1.874849997308957 2.013888888888911 0 9.639156081756386 6.736111111111154 0 8.676905633107097 6.616930271145026 0.1505821306049256 8.686926322368242 3.644831213276866 0.7317143745672932 7.963883155727208 7.663332246820774 0.1590402948208724 1.273712594607538 9.125409152829523 0.8571013393134244 7.000356418019367 3.612257147095657 0.1227675013371157 7.25954702278408 0 0.5072929955689175 0.6995156779736774 0.5168869739994961 0 7.006638068673418 0.6048260748843767 0.1491565387290671 6.972407894514435 3.402777777778256 0 0.7384803250249534 9.097009601059955 0 7.714759926188215 0 0.8782701430505849 2.4330645192567 6.666666666666736 0.8364197530864224 7.67456141576399 6.774437983188953 0.8550620439320987 7.572031992650253 8.819395818943686 0 7.714679488959328 8.86563061721599 0.1206677416861482 7.768173353118337 8.796234798272277 0.1206677416861482 7.888430354698058 9.323491900783534 0 1.34887938319746 5.349504024540595 0 0.1051048806142585 5.210681971191629 0 0.1092792372250385 10 0.6256141348298581 1.593338137853587 4.697669375146789 0.8409665766189653 3.570821416135497 1.875000000000426 0 1.700589880398868 1.875000000000431 0.1635802469135801 1.62040234301142 6.94444444444488 0 1.099183349993258 9.663774128886137 0.8626112373755772 0.236060308952242 5.624999999999994 0 9.879718693918822 5.486111111111105 0 9.879718693918807 0 0.1219240275832402 7.153780071806741 0 0.1234989187098336 7.291918130610072 0.1124216062896282 0 7.301905297058344 0.1124216062896282 0.1219240275832402 7.233463146642872 4.722222222222664 0 1.09918334999317 4.677542115613393 0.1589942584255836 1.153574815802332 4.706919728373836 0.123618508585231 1.018471718536896 0.5815627711066365 0 4.979108047326063 1.528353002157174 0.1254403975265219 4.150052135775688 5.347222222222444 0 5.068466450671886 1.944444444444878 0 1.5803085743177 8.464627855324318 0.1256009880009042 6.233059437944233 1.6666666666671 0 1.580308574317684 9.879718693918829 0 6.458333333333327 4.236121685880828 0 0.3349269628174888 4.397350445122028 0.8719390747309252 1.129552931460467 3.819444444444485 0 8.436343020944589 2.754822315918979 0.1334124480076622 7.27065088849671 10 0.3750544017334565 1.313562434213031 9.23203235382187 0 1.938797620942572 8.680555555555664 0 6.27127951148382 7.847222222222618 0 2.422277716886263 7.222222222222626 0 1.580308574317966 3.402777777778106 0 3.384528165535355 3.263888888889218 0 3.384528165535349 0.9722222222224667 0 4.70762253242813 10 0.6198898298631765 4.520160065293922 1.041666666666862 0 6.511842123645676 7.292219971068861 0 0.7448285625264146 4.027777777777964 0 5.669872981077647 4.166666666666752 0.1586533016196643 7.514186340988949 4.097222222222312 0 7.47409257229522 4.119089641618109 0.1209504778896641 7.647092807544773 4.04964519717368 0.1209504778896641 7.526811501463598 0.5792862534719662 0 5.866994700648913 0.611160163704802 0 6.014868560268852 1.736004552542067 0 1.21964947408968 1.666666666666949 0 3.985934695941138 1.686792693276447 0.1212729580352789 3.9173669254344 5.118762862279807 0.878727041964721 1.752303415973476 0 0.123014020590719 1.317130420582174 0.1237034657990712 0 1.454637605543457 0 0.1254384302214949 1.456565683524899 7.914764187088923 0.1217595661596561 2.227760300838563 7.152777777777828 0 8.436343020944777 2.699011286885872 0.7096361634694451 1.86634704119989 8.402763688611358 0 4.346786748569264 3.125000000000107 0 7.474092572295188 7.500000000000048 0 6.872686041889599 0.1124216062896282 0.8797186939188282 7.510238630391678 5.694444444444647 0 5.188747756753089 9.602383937975569 0 9.033713357285565 9.306992932132776 0.1508443540353324 9.60428172483287 4.935989675953561 0.8384323902707951 5.706829358896944 5.08103224474937 0.8708062294003611 5.716045856409593 3.472222222222262 0 8.556624327025748 2.569216310024697 0.8517452870070059 2.157321002288424 2.222222222222626 0 2.061433798642405 1.736111111111116 0 9.879718693918786 1.666666666666678 0 9.759437387837567 1.597222222222228 0 9.879718693918781 1.666666666666674 0.1497646417830569 9.839624925225021 9.097222222222186 0 9.879718693918838 9.235268336333364 0 9.881282804127125 9.165823891888891 0 9.76100149804596 9.23530408658509 0.1508443540353324 9.721437243429929 9.166702416918383 0.1508443540353324 9.840154439302806 10 0.6207447383664652 3.819075327035315 9.846086122442433 0.7319138506733833 3.821535982662283 9.859007586146044 0.7220586369033858 3.667193473810716 10 0.3856740290678915 9.096573763603569 1.868653185070812 0.5623908899349488 0.1281782690338479 0 0.7559668617051569 7.500067251515427 8.958185084953239 0 7.714734432661976 8.888789266009526 0 7.834991434241696 1.666666666666899 0 4.948185144590505 9.307309754899869 0 9.524327191992775 7.7777777777782 0 1.580308574318033 3.051719447053701 0.8797186939188282 0.1137486231875288 4.930555555555864 0 3.625090777697788 5.903633695364624 0 0.1175468903934088 5.765234131390117 0 0.1056148420251116 7.638888888888869 0 9.518874775675329 10 0.874775704225675 4.517640623226984 1.974078769067701 0.5420759517337193 2.141010309022104 2.112967657956585 0.4507292533533817 2.221197846409561 4.301838162488087 0.6264647458118506 9.869264186854402 4.371430513138163 0.7489860823661264 9.869264186854402 0.8376979800447875 0.1503246415572267 7.912638154748893 1.250000000000008 0 9.518874775675101 9.425937325938049 0.8473089296858853 5.49600270193241 5.06944444444472 0 4.346778614184838 10 0.8797186939188281 6.597222222222214 10 0.8777385772736531 6.736369724892439 2.08333333333348 0 6.632123429726921 1.998885518750141 0.1389799779236054 6.510769646199158 7.973323714083792 0.8772807211308948 8.847071002164373 9.546580680003967 0.8715293457359554 0.7207197422453748 6.666666666666777 0 6.391560817564849 7.500000000000272 0.1232807567195944 4.068414419299616 2.361111111111314 0.8773401335379738 5.57509381502676 8.194444444444423 0 8.556624327026029 8.263888888888861 0 8.436343020944868 9.369846668056809 0.4956003991078442 3.61382200070463 5.277777777778176 0 2.061433798642563 5.069444444444782 0 3.143965553373108 9.514683356885312 0.1288318480687032 8.832148122276978 1.180555555555557 0 9.879718693918786 1.111111111111111 0 9.759437387837533 1.041666666666665 0 9.879718693918745 1.116422417601846 0.1472518441397952 9.836558440992842 0.6329305431548566 0 6.991100311788069 5.694444444444508 0 8.075499102701148 6.805555555555557 0 9.518874775675304 6.829494933098412 0.1623438970266377 9.596449809568606 6.821901309598456 0.1408315923868395 9.527878193589977 9.374961194053821 0 0.1163500967704763 9.513249987790847 0 0.107372731398991 8.172676266307501 0.8765062109582257 8.721241813432624 0.3785883986537693 0 1.308893961898633 5.143252294402139 0 0.4214635375141749 3.402777777777962 0 5.790154287158794 9.232136929109377 0 3.627385272746781 0 0.3796831372318139 7.430689328354759 6.736111111111108 0 9.639156081756475 6.875 0 9.639156081756482 6.87500000000036 0 2.903402941210881 6.736111111111499 0 2.181715104723803 2.152777777777982 0 5.549591674996384 9.740401759662703 0 3.886857106004301 7.15277777777777 0 9.879718693918829 7.291666666666662 0 9.879718693918829 7.222222222222216 0 9.759437387837657 7.222222222222215 0.1507201646090544 9.839624925225106 9.516815906787507 0 9.408110887740612 4.583626301331876 0.8778749347425036 9.87971869391883 2.500000000000012 0.2459384221051796 9.426024491596813 6.041666666666657 0 9.639156081756454 9.879718693918829 0 3.958333333333331 10 0.1236663449889449 3.818735633263866 10 0.1202813060811714 3.958333333333329 8.958432934978024 0 9.158014840788812 7.013888888888912 0 9.158030857431795 0 0.509314771735504 4.871390017868494 0.1176217826423863 0 5.069444444444438 0 0.130065014588739 4.935429867115585 0 0.1274886664494017 5.074585756497875 10 0.3747589498435459 8.2581734992328 0.9041606116695431 0 7.47329499166362 0.9439791175026043 0.1578844661738036 7.531944027922878 0 0.6125763458228582 3.958070276066542 0 0.6126793137222193 4.097178279673514 0.1402203441090819 0.7375360407313819 3.970299341403851 1.73611111111135 0 4.827903838509338 4.93055555555576 0 5.549591674996538 4.175965085636384 0.8736717053006383 3.416799026208253 3.432504493325859 0.8540492391389646 7.980442036009528 3.571393382214744 0.8540492391389646 7.980442036009537 6.66234224471208 0.8508814731519047 9.837128219045519 6.527777777777942 0 5.669872981077809 7.22161913818724 0.8581033923475117 3.078218208937122 5.9027777777778 0 8.917468245269347 5.833333333333358 0 8.797186939188174 1.541599347303122 0.4552209608649938 1.239587103256241 4.930555555555733 0 6.030716899321221 4.989522300304905 0.1513103149602683 5.939442906249587 6.10738869660416 0.7214912045565132 8.50271187005918 6.20007491177787 0.7351257820197408 8.397726300551515 6.116625661196974 0.8812515549537121 8.396213463296274 5.474185703336426 0.581194231734927 9.855681174424317 5.416006698589738 0.4924909268442031 9.7053029949797 0.3449625113957492 0 5.764442876309587 0.3743294534201101 0.6908032450082682 0.1668760044135137 5.069444444444883 0 0.9789020439120159 3.541666666666696 0 8.676905633106928 0.2715068242035075 0.8475728983645285 4.515999357419529 0.2572698835954867 0.8276790397203027 4.670679516547383 5.208333333333327 0 9.639156081756397 6.736111111111187 0 6.752404735808367 7.500000000000178 0 5.429310368915534 7.569444444444629 0 5.309029062834366 7.638888888889083 0 5.188747756753199 7.477728271724377 0.12087560587485 5.256076705825278 0 0.8780704976172594 5.625600447409266 5.208333333333737 0 1.941152492561389 6.16482184433153 0.1592600403166623 7.634781091931828 6.180555555555646 0 7.71465518445769 6.026068986803447 0.1356884269240251 7.667498402887386 5.069444444444507 0 7.474092572295252 5.208333333333396 0 7.474092572295256 7.569444444444472 0 7.233529960133115 4.930555555555619 0 7.474092572295246 7.638888888888921 0 7.113248654051944 0 0.759227734652185 5.558655521512376 8.68055555555549 0 9.639156081756525 4.077495569552051 0.8784531119356118 6.819956183647527 8.072185664085479 0.1263976220184329 5.821796358328942 0.2203313387238663 0 3.353623882134901 0.2978462468197797 0 3.486762053223037 0.2304570350332956 0.1331399227578763 3.53326351860706 3.472222222222365 0 6.632123429727002 3.571869546240079 0.1438688848416896 6.66570275936617 0.3783983004227015 0 8.131416410475062 0.3666613961234723 0.1586447052818953 0.2780757039503094 0.4423812536831035 0 0.4082867676486943 0.5149026639125054 0.135230143550105 0.2756337651324387 0 0.6256915147846062 0.4875499206310907 0.1583676738675522 0.7225440924427471 0.5289134902700872 0.1255277257845261 0.4426407073879484 6.527084096128325 10 0.8764325442190615 5.902265777345296 10 0.8780704976172594 5.764489336298154 4.58375229836486 0 0.4288908025512426 8.201659981865053 0 0.4219462392312492 1.319444444444746 0 3.625090777697601 6.597222222222422 0.158653301619663 4.988278913284515 6.597222222222419 0 5.068466450671963 6.527777777777974 0.1212729580352784 5.085320685604263 1.805555555555804 0.8787270419647213 4.604195461279305 1.756237137720853 0.7574540839294424 4.655908996853736 10 0.4955083395057859 0.9622892271203901 9.849467460936825 0.4073941551571396 0.9643486031845645 3.458331688322224 0.8726309545259523 2.877220120396128 6.597222222222257 0 8.917468245269426 0 0.8767405062580187 2.572390947712367 0 0.7535374430576138 0.5482979414447828 0.1236574419811874 0.874071484052638 0.4159890090898741 0.3451819701696677 0 4.516528256256294 6.944444444444501 0 6.87268604188956 1.598250176646256 0.8753950918236664 9.314161914112066 1.528805732201805 0.8753950918236664 9.434443220193288 3.096198195305655 0.2700144986531593 9.474108443884283 10 0.3872194726003184 8.538678970733621 10 0.3802864352497057 8.396760068290703 3.125000000000366 0 2.662840329048314 0 0.3827541301987802 2.292787593237598 2.361111111111557 0 1.33974596215538 0 0.1292899076599623 5.351190747446058 10 0.1234559657180418 4.515367292425502 4.027777777777864 0 7.594373878376388 3.958333333333416 0 7.714655184457557 3.263888888889069 0 6.03071689932113 6.250000000000426 0 1.339745962155563 8.738549986756453 0.1557898731510353 8.441080756677252 7.863032849213872 0.4182899579750157 9.853942753214366 7.917109038836786 0.5014411821560201 9.706203924485031 6.623775400840907 0.4071274704738804 3.400515639544418 9.869290279817683 0.8777304022929238 8.487733242076404 4.236111111111382 0 4.346778614184782 4.302454825758035 0.1291720556913239 4.297227830825291 0 0.8780704976172594 5.764489336298154 0 0.8764325442190615 5.902265777345296 7.228087409199476 0.8461692317464962 9.844473876424061 0.1185614297481762 0 5.76444287630959 0 0.1220403300572577 5.902627775086729 0 0.1267193059305197 5.765125756720287 2.708333333333564 0 5.068466450671728 2.720268177423978 0.8772101563130627 7.400795620356126 8.541666666666623 0 8.436343020944896 10 0.3845093175697289 9.234338243059673 10 0.3805732935774505 9.366698621782803 10 0.1224998024324479 3.541090416328754 9.860683065743874 0 3.678523772670967 10 0.1236663449889449 3.679846744374977 0 0.8794659590049758 0.6232245077465692 3.956930892580072 0.1234027422288084 3.477104315367591 3.888888888889344 0 1.099199007389923 4.861111111111473 0 2.78312163512958 4.959710106587529 0.1450015964476173 2.884331283647182 9.620219737258861 0 6.19328355741612 0.531038456973039 0.8514429515927329 3.525812848278252 3.680555555555683 0.8444020438559191 7.386301310417108 3.616955364113718 0.8719182114763333 7.264015663084474 2.152777777778082 0 3.625090777697649 1.18105426138592 0 2.663128256993392 2.083333333333437 0.8650876162095195 7.464902557830026 2.013888888889001 0.8413466983803374 7.313717497520225 1.935783772377304 0.8761328207640537 7.430467017986816 4.791666666666726 0 7.714655184457585 0 0.5003768325616299 1.521868765031222 0 0.6293180645537031 1.453222288972968 5.41666666666691 0 4.707622532428386 5.487720992453367 0.1420251113246644 4.601543596418322 4.809875879035781 0.1216379915274846 0.9100231809018394 3.194444444444482 0 8.556624327025734 3.472222222222345 0 7.113248654051688 9.21778764391432 0.8717562683224576 1.148647404324702 6.666666666666681 0 9.278312163512942 6.597222222222229 0 9.398593469594115 4.724720059227425 0.1219123115275788 6.474097264173519 8.611097021944696 0 4.467068054650445 7.291666666666897 0 4.587341226347311 4.305555555555587 0 8.55662432702578 8.472137687222205 0 4.707671338733794 8.541581079052449 0 4.587390640379708 8.625357616692785 0.1303069094118925 4.635775988876005 5.626345242501229 0 0.1056148420251116 5.488392913429482 0 0.1051048806142585 10 0.2505461656279471 0.8323600761423151 1.044582561537847 0 2.182777798270813 0 0.5142375733670899 6.528579407214727 9.65501896941146 0 3.985808660706482 5.697645880128105 0.8741391970488488 7.672713066010203 0.9746583582334731 0.1215496320764411 9.879718693918745 2.152777777777866 0 7.714655184457478 9.874808955498153 0 2.027930979168202 4.513888888889134 0 4.827903838509483 0.7173481610088868 0.6869066867958175 6.409631614639498 0.7204976841121137 0.853411452773853 6.567665714620263 5.834523700208242 0.8522111796192113 4.618295968192879 0.8402363592015556 0 4.949625880055735 1.319444444444597 0 6.992967347970385 0 0.1299259320307377 2.013834976696601 8.49609683755417 0.7504193192240585 1.173504829704562 10 0.6343915629390685 3.676948050837053 7.847222222222632 0 2.181715104723914 7.984208631533372 0.1217595661596561 2.107478994757399 10 0.6365944382150743 3.127108248448396 7.500000000000242 0 4.467059920266157 5.964099163614529 0.8527857239387796 0.7841901767762619 0.4891621179759241 0 9.649179078262005 7.65243974825327 0.8774668036097373 5.271978120984411 3.680555555555629 0 7.955217796619893 0.6291199500161274 0 2.668575050031122 9.650870251650133 0 4.236531656366197 2.847222222222563 0 3.143965553372986 3.768098199662786 0.1589810422075308 2.127282434824421 3.68055555555595 0 2.181715104723658 3.689949524038228 0.122240162714733 2.013872009854261 0.1202813060811716 0 6.458333333333327 0 0.1287591090176589 6.458744940717548 0.1202813060811716 0.1287591090176589 6.528189385161991 0.1255277257845261 0.3146534582207988 6.45731823086185 0.1255277257845261 0.1858943492031399 6.387462179033185 9.166556272722545 0 3.023747983265802 5.972222222222402 0 5.669872981077775 3.819446206906142 0 0.334934902585288 3.68055584929925 0 0.3349362258799174 3.750002056205395 0 0.4293085163028618 3.750000293743695 0.1245435926373405 0.3389952743354984 3.819444444444442 0.1245435926373405 0.2446216606179246 8.956658796844003 0 4.107491032026042 3.958335095795033 0 0.3349349025852904 0.1255277257845261 0.4431323159777498 6.248358342167631 1.388888888889066 0 6.391560817564547 8.090732770033361 0.2609991627440469 0.1435174192172469 8.091708310837033 0.1400234805071087 0.2491322612423877 4.737039695650719 0.1543187963814857 5.358743524300085 4.097222222222439 0 5.068466450671797 5.247945197684542 0.6279830330408782 2.525896007604099 3.633710368445338 0.8768572327876004 4.534597216496243 3.703154812889782 0.7565645949025419 4.545338779920238 9.870692998590368 0.35398231317053 3.065814277472314 0.6922749646491264 0 9.037244661035302 7.708333333333313 0 9.639156081756497 0.9272396514699868 0.8423258720076678 1.482602059333217 1.045562378304794 0.876410388075328 1.609356759918491 5.347400119382237 0.8459191522845045 6.426569863218541 5.417700656724804 0.8706760439406191 6.297892519325146 3.050250579329353 0.1232187971080104 8.239613195158043 0.3703267294566335 0 2.561058933478883 0.2750057221668031 0.1422518422017609 2.539065021622868 0 0.2592866168251781 6.389314217457295 0 0.1305275078075192 6.31945816562863 0.1255277257845261 0.3164218570106591 6.318031455772934 6.944444444444622 0 5.429310368915496 2.844873584364364 0 0.7542928928545616 6.31944444444451 0 8.195780408782383 9.842487462253445 0.2924914087544916 6.175377292069344 0.1202813060811719 0 1.319444444444445 10 0.8764325442190615 6.041154666234184 10 0.7561512381378903 6.110599110678629 10 0.8797186939188288 6.180555555555548 9.844275487833032 0.8442754878330323 6.13568451150961 6.04166666666676 0 7.714655184457675 7.433502553210816 0.8812290379093165 6.430896889666744 7.460451623080335 0.7417312963728954 6.305509867394344 0 0.6207447383664652 3.819075327035315 0.142712474566713 0.7348741800209717 3.68018820065925 0.1402203441090819 0.7457044332749887 3.831304392372624 5.342772341127263 0.1555327277210125 6.595677994403298 5.416666666666806 0 6.632123429727111 5.269739968137931 0.1267023176038249 6.717618268159349 7.708333333333648 0 3.625090777697973 0.3472356665109991 0 5.627365348914781 0 0.1289606650045655 9.37391720683061 0 0.2549172525352129 9.444443286509934 0 0.1259565875306473 9.514970524123761 0.0918905935015215 0 9.371290633082342 0.0918905935015215 0.1259565875306473 9.441816712761666 9.717459595465089 0.2996578496294005 0.9753050164352781 6.041666666667004 0 3.143965553373162 6.04166666666702 0 2.903402941210806 6.111111111111457 0 3.023684247291988 6.111111111111488 0 2.542559022967278 6.180555555555939 0 2.422277716886109 2.013888888889042 0 6.511842123645746 7.083333333333362 0 9.037749551350625 5.866534840668654 0.8378862996924782 1.152903658494731 4.874530103267499 0.8775242145961037 5.59219952157137 5.013418992156391 0.8775242145961037 5.592199521571384 8.680555555555467 0 9.158030857431907 10 0.6199087813078293 7.705021798939875 0 0.3828321281741983 2.989419493699244 6.875000000000387 0 1.94115249256146 6.597222222222378 0 5.790154287158985 7.013888888889058 0 5.549591674996672 10 0.6309171872740962 9.369121319381449 0.902844553383487 0 0.7408192651255707 4.305555555555833 0 4.226497308103614 7.500000000000355 0 3.023684247292102 0.1392216714037994 0.4459370754551741 1.450450374283993 0 0.624208216073725 0.3809138696278795 4.30555555555592 0 2.783121635129547 1.045157607476978 0 2.664855824664536 7.152777777777975 0 5.068466450671992 2.91666666666666 0 9.037749551350405 7.970659802407196 0.5837175479713921 9.852261171270666 6.11175759271841 0.1573928377676749 0.7357067892952793 6.180555555556026 0 0.738339431749672 1.527777777778072 0 3.745372083778785 1.597222222222511 0 3.865653389859961 7.777777777778141 0 3.023684247292122 7.708333333333321 0 7.955217796620179 6.041666666666885 0 4.587341226347254 2.01388888888892 0 8.676905633106834 0 0.3861014853606205 2.153116096515768 5.559498945907806 0.2729913347887593 4.567226836515788 0.1193906830415307 0 7.990555845862636 0 0.1234362638898392 8.124376826629183 0 0.1217134700943665 7.984313896222919 9.417359989710757 0.8690018648124366 0.4931081357740794 10 0.6348532112663746 9.236760940658318 3.402777777778198 0 1.700589880398955 8.819451766711328 0 0.3348974709495022 3.472222222222477 0 4.707622532428255 0.3424725488528115 0 1.179539264094289 2.986111111111439 0 3.384528165535337 4.317979441858866 0.8765432098765438 7.044957414482358 7.744590804730258 0.8622999390249573 2.500863820939838 7.65315486009465 0.8393834913337261 2.614510098039196 7.785458629788884 0.8787879577460123 2.63298623896882 3.750000000000187 0 5.669872981077638 10 0.631085989736944 0.6301454391238908 3.819444444444892 0 1.219481473949335 6.319444444444542 0 0.3349364905388753 6.458333333333488 0 5.790154287158975 6.388888888889038 0 5.910435593240144 6.067169560916851 0.1387400332238638 1.547023600799521 5.972222222222639 0.158653301619663 1.660496111705348 6.111111111111525 0.121780315006399 1.680572080481176 0.9727017637989392 0 6.150954910261584 6.111111111111271 0 5.910435593240127 6.875000000000042 0 7.474092572295408 7.361111111111272 0 5.669872981077866 7.348482737963055 0.1226614123799605 5.742769523828765 9.325077421474395 0 6.638900729554157 6.186070105641425 0.8812515549537121 8.275932157215118 0.9139953483581211 0.8270321300897522 1.642019647127084 6.458333333333533 0 5.068466450671956 1.736111111111399 0 3.865653389859969 6.319444444444644 0 5.06846645067195 1.80555555555585 0 3.745372083778801 6.388888888888978 0.8787270419647223 7.697800949525408 6.478459359942907 0.7574540839294459 7.646087413950978 6.547903804387349 0.8787270419647235 7.66294164888328 6.617348248831791 0.8787270419647235 7.542660342802108 6.041666666667081 0 1.700589880399074 9.857459099826521 0.4689251322937735 6.521645363603296 1.458333333333571 0 4.827903838509325 8.491239403152839 0.8420913146345339 1.011466953534569 8.4075893382998 0.8784807051158541 1.142058042426866 6.944444444444496 0 8.316061714863594 9.877689085220098 0 7.848772810306266 10 0.1217134700943665 7.845425007334031 10 0.1232802177586016 7.707803706400951 2.01388888888907 0 6.030716899321066 10 0.2575536810381407 5.010015623613464 10 0.130065014588739 4.935429867115585 10 0.1274886664494017 5.074585756497875 9.840664840429469 0.1522444142552981 4.964342101218007 6.597222222222266 0 8.676905633107086 6.666666666666706 0 8.797186939188261 2.42407535683556 0 0.7635173872986545 4.583333333333611 0 4.226497308103629 5.208333333333766 0 1.219464656074362 1.121203930170785 0.483908987316634 0.1464623591688128 0.6449573174678593 0.1407813321464932 4.388729664830305 0.5747322575341008 0 4.456885028544352 8.958220034520135 0 2.181649691623492 1.597222222222636 0 1.941152492561196 1.522844171754733 0.1242632538263377 1.914197874662864 0.2996364315832531 0 9.293916103629414 6.736111111111175 0 7.714655184457726 1.956474081037298 0.4235962065597929 2.231361917782903 9.583926541781256 0 5.672959728482809 4.722222222222539 0 3.504809471616604 4.791666666666977 0 3.62509077769778 2.847222222222283 0 8.195780408782204 0.1202813060811744 0 6.319444444444439 0.1202813060811744 0.1305275078075192 6.250013721184188 0 0.6317843207119793 3.537607913852791 10 0.8767405062580187 2.572390947712367 10 0.8782701430505849 2.4330645192567 2.773791666584882 0.8779041347840661 0.1137486231875288 3.680555555556004 0 1.219486383333128 5.628201435683654 0.8741391970488488 7.792994372091366 0.6703883408821476 0 5.051457340495803 1.040810749079842 0 0.1175468903934132 1.179225535707241 0 0.105626180833225 6.736111111111177 0 7.23352996013305 2.98611111111117 0 8.195780408782207 9.706769188186307 0.8539541807306413 3.819654202468741 9.71969065188992 0.8440989669606438 3.665311693617173 9.166531418219355 0 2.542484478127323 4.027777777778142 0 2.783121635129531 0.1202813060811719 0 1.041666666666667 0 0.123014020590719 1.178241531693285 0 0.1241526465320646 1.039778055787364 0.240562612162346 0 6.388888888888884 3.194444444444513 0 8.075499102701041 5.347222222222598 0 2.422277716886081 1.180555555555874 0 3.384528165535237 0.4097223446085834 0 8.533743126972471 1.041666666666839 0 6.752404735808017 9.235620909352185 0 9.641482710589834 9.375558851547757 0 9.645410089657188 9.393166797495113 0 3.156600845301011 3.61111111111146 0 3.023684247291851 7.361111111111511 0 2.30199641080505 9.597832564180909 0 9.543040393994335 9.732075531593729 0.1444629236774659 9.636781665758839 9.730683619624818 0.1326241255232359 9.47814360977614 3.888888888888907 0 8.797186939188116 6.545746418741491 0.8777902904639748 8.97128608358982 6.525620392131993 0.7565173324286989 8.902718313083085 0.3022051497335621 0.1575417811847722 1.665407378981705 10 0.6324323863083091 7.430505115926779 7.222619299298246 0 0.6255794774044026 0.1373554872729677 0.2676517095429438 3.818914975120434 0 0.3800982379852714 3.676389242347521 0.1397908486635772 0.2568062677468211 3.667665171821482 3.472222222222446 0.1222449772566328 5.098649369839526 3.515931762638923 0.2504516311861426 5.043276888083754 0.8577563534275785 0.8767024727261696 8.249916954921115 0.9805250201537646 0 5.671506876682978 1.042690415196631 0 5.789332110862301 8.402777777777883 0 6.271279511483804 8.395183410879888 0.1256009880009042 6.112778131863054 9.303551683347941 0.1294564297303442 9.881282804127125 5.90277777777777 0 9.639156081756447 7.010862948735109 0.4591919655396507 2.064260109304637 9.167363878180113 0 9.278200047011312 6.111111111111146 0 8.797186939188203 9.236116238765408 0 0.3307711636914181 3.681505394793078 0.1544012860378046 0.2702515816380297 5.069444444444768 0 3.384528165535453 9.874162994216539 0 3.529980303711957 9.644618235407741 0.1444629236774659 9.743283428266551 9.51037526799492 0 9.649542156502047 9.506305272048149 0.1237371034043149 9.761891139244852 4.930555555555851 0 3.865653389860133 10 0.6359861255972432 8.535795631440944 10 0.7554695389391752 8.607191865240988 5.763888888888902 0 9.158030857431694 5.625000000000015 0 9.158030857431687 0 0.3653954317186734 4.377519442066935 6.553129618938276 0.4586565651572077 9.856973916857051 8.706897174514157 0.1420178205278556 2.883703008672289 0 0.7203068882029029 0.1851601046376865 0 0.6828408138803082 0.2989289150362071 0.3946097769392229 0 2.709877045283646 10 0.1259563838779521 2.987311245250845 9.876084305183767 0 3.118205399623011 10 0.1234497409204609 3.125253122506262 10 0.3800982379852714 3.676389242347521 10 0.8777391366462515 8.680445142179904 10 0.8777304022929238 8.537857834172184 9.909140420094495 0.8777304022929238 8.607302278616626 6.666666666666868 0 4.948185144590794 4.513961002043361 0 0.3323996095691237 4.444444444444501 0 7.834936490538754 0.1401849005530279 0 7.158856330820621 0.7413288191341094 0 1.818301782424219 6.319444444444464 0 9.158030857431733 6.18055555555557 0 9.158030857431713 4.020236957207171 0.120134125663125 1.47801394722915 4.089681401651613 0.2438286221296427 1.509968936640842 5.397521689028379 0.8716178719031766 5.772232321837031 0.1200104297255251 0 4.930052283054892 10 0.6313245069432236 4.80156581430731 9.846958352912672 0.7342788854885267 4.740169401689256 1.827439948227498 0.6535055683339418 2.392228027317718 1.936574332954815 0 0.6365098316412129 0.1202813060811719 0 1.180555555555555 9.507604681173865 0 5.543475487943059 10 0.1254384302214949 1.456565683524899 9.875154111813712 0 1.449197177270669 10 0.123014020590719 1.317130420582174 9.231907856994756 0 6.02829014942585 10 0.874071484052638 0.4806289892537692 10 0.7535374430576138 0.5482979414447828 9.843895655380383 0.715905861757785 0.481069161877144 0.3437711754744954 0 1.869906189428451 0 0.6359081071074677 2.99141153114472 0.8366153207879938 0 7.833041634198164 1.180555555555957 0 2.181715104723516 4.236111111111468 0 2.903402941210714 8.680555555555857 0 0.3349364905390584 4.236111111111303 0 5.549591674996482 9.371488855600983 0.1237371034043149 9.757759072399994 1.527777777778199 0 1.82087118648002 1.458333333333747 0 1.941152492561188 3.611111111111107 0 0.2405626121623443 3.680555555555552 0 0.1202813060811718 3.541666666666663 0 0.1202813060811725 3.612060950348634 0.1544012860378046 0.1499702755568579 7.291666666667082 0 1.460027268236805 8.125000000000142 0 5.790154287159093 0.1241235785979689 0 5.906101702302021 0.6053392165637725 0 8.192225045684452 0.3759738652585198 0.8168205991023719 0.2742487358124772 0.4163000570245107 0.8739826459058962 0.1073727313989635 0.5248554331187995 0.8531588934894209 0.257092337383396 0.5232110212803898 0.7271415393953171 0.1497196059844325 5.972222222222582 0 2.783121635129624 10 0.1241526465320646 0.9008891668984749 9.903906485589896 0 0.763888888888889 9.896705395316319 0 0.9009110757678283 3.906987088551674 0.1589810422075308 2.127282434824429 3.958333333333727 0 2.181715104723673 5.833333333333521 0 5.429310368915434 8.749871207065095 0 3.264321218090371 9.619693705589629 0 7.994639514164358 9.650140905181246 0 7.863399131350424 4.583333333333442 0 7.113248654051731 8.749999999999911 0 9.037749551350757 5.902777777777971 0 5.309029062834273 6.034235321229843 0.1236874120287676 5.384529620956309 7.430708663567424 0 1.21991553372988 5.347222222222351 0 6.752404735808273 8.133560779921568 0 0.3127279409483405 6.213761076836701 0.8638656037932502 1.263047078393487 3.541666666666891 0 5.068466450671774 0.1246727304490864 0 6.870263860107351 0 0.1219240275832402 7.014891182917853 0 0.1329201272774974 6.87736959997109 1.805555555555907 0 2.783121635129418 2.986111111111071 0 9.639156081756358 1.801482876168647 0.8752887380678172 2.858055477307939 7.925532140290938 0.1272208837726727 8.970775518768477 7.881944444444805 0.8428497942386828 3.204106206413885 3.629710667263849 0.8694030573889009 6.248635282934816 5.625000000000135 0 6.752404735808291 0.4813731361183844 0.2762359974069968 9.849453677131764 0.3365136585761923 0.2658240410788625 9.868130522481547 5.625000000000297 0 3.865653389860188 3.680555555555882 0 3.384528165535365 1.31944444444445 0 9.639156081756347 1.180555555555561 0 9.639156081756326 2.013888888889056 0 6.271279511483407 2.152777777777944 0 6.271279511483412 1.088415837278979 0.8700259811851755 7.986806570249309 0 0.3750544017334565 1.313562434213031 5.872435559609255 0.5856647342197978 7.251048047960457 5.356394585623089 0.7516093503026441 4.426311918545425 5.408877080062416 0.1419572081869575 3.795969328580014 7.986111111111068 0 9.158030857431832 2.81216611165015 0.1465711145190284 8.896595293854157 3.888888888889289 0 2.061433798642498 3.819444444444839 0 2.181715104723666 2.152777777778189 0 1.941152492561229 7.291666666666799 0 6.03071689932138 7.2790382935186 0.1226614123799605 5.863050829909934 5.185016200211845 0.3703844676450976 2.665282682497976 4.236111111111196 0 7.474092572295225 4.26405886280671 0.1386593261356702 7.623264553333944 9.096521679869603 0 6.030312441005554 10 0.1265785768688975 2.43128425119621 10 0.124271944614326 2.569925071659628 9.878396420688649 0 2.439434989151709 6.597222222222609 0 2.422277716886144 7.430555555555904 0 3.143965553373268 7.361111111111449 0 3.264246859454432 7.385845705775101 0.1265844569696342 3.189966392463326 9.634344262506959 0 5.777256681942601 9.641220813449095 0 5.928885903334262 0 0.7561512381378903 6.110599110678629 0 0.8764325442190615 6.041154666234184 0 0.8797186939188288 6.180555555555548 0.1513402382666252 0.8486597617333745 6.146838381301576 5.902777777777952 0 5.79015428715894 6.875000000000044 0 7.71465518445775 6.666666666667077 0 1.580308574317924 10 0.3630663745048946 3.958114218615246 9.898093363277187 0 4.92979934527885 4.375000000000144 0 6.511842123645858 1.11213485964107 0 5.909613416943475 0 0.3704323166348266 1.733620082042655 9.37437460921463 0 7.474364844894245 3.472222222222635 0 1.820871186480131 2.986111111111136 0 8.676905633106891 10 0.1329201272774974 6.738480711082201 10 0.2616792362951563 6.669447874021978 10 0.1287591090176589 6.597633829606435 9.83916518074729 0.1582555638349667 6.656305754329729 7.013888888889339 0 0.9789020439120988 3.524103809284051 0.8528704490180076 3.885493872891549 1.597222222222497 0 4.106216002022306 0 0.3820664839328319 0.7629545447290851 1.596399183038296 0.8790579095343956 5.379166938325108 0.9031908809547633 0 1.21963031942299 2.083333333333751 0 1.820871186480052 8.333333333333663 0 3.504809471616854 0 0.1232802177586016 7.707803706400951 0.1099205397656446 0 7.711375113029357 0 0.1217134700943665 7.845425007334031 10 0.8774155417899101 0.900675142749964 9.000845939898166 0.8647165221498314 0.3988268386420615 8.542522584253831 0 0.3322020748513048 2.708333333333578 0 4.827903838509385 10 0.6344456963804677 2.294567861298088 7.364058108766361 0.8812290379093165 6.551178195747913 7.388771962507629 0.7513325264496432 6.617791660571404 0.09066618636971835 0.1224998024324479 3.475424396378201 0.09066618636971835 0 3.406556202271666 0 0.1224998024324479 3.402201527439865 0 0.1234497409204609 3.26414201139515 0.09066618636971835 0.1234497409204609 3.337364880333486 8.680555555555513 0 8.436343020944905 1.113563485341588 0 1.581388759866788 0.6741860709069816 0 0.8515377622732681 0 0.7532056800395739 4.730848268120351 0 0.874775704225675 4.656529512115872 0 0.8784299758138989 4.796540978226695 0.1369885775143135 0.8276790397203027 4.740123960991826 0.1369885775143135 0.7024547439459776 4.674431250885482 10 0.624208216073725 0.3809138696278795 9.872746363317511 0.7366827214282152 0.3315387890292424 9.882073843479674 0 2.845353364632199 10 0.1259563838779521 2.848422356361956 10 0.124271944614326 2.708813960548516 0 0.6343915629390685 3.676948050837053 0.9027777777779744 0 6.51184212364566 3.194444444444549 0 7.594373878376362 6.805959379036796 0.1219312194875562 0.5026474456804332 6.041666666667089 0 1.460027268236729 5.899157307202565 0.1266693803779297 1.536076418734245 8.194444444444796 0 3.264246859454501 1.920783071697314 0.8757908641911546 0.5712903484878477 3.123494351413359 0.1271446981306033 9.552624284461018 1.577375485142434 0.8786753216815157 2.250444123115206 5.902777777778194 0 1.70058988039907 3.746989180664426 0.1190723348353672 6.708075132585067 10 0.1305275078075192 6.180569276739741 9.879718693918829 0 6.180555555555549 9.842487462253445 0.1619639009469724 6.105919126440706 0 0.1287591090176589 6.597633829606435 0 0.2616792362951563 6.669447874021978 0 0.1329201272774974 6.738480711082201 0.1629002038208368 0.1572123542804142 6.662975363589402 0.1629002038208368 0.2859714632980732 6.593942526529179 5.317389642128981 0.410507924435221 2.644375092822387 5.360880812201781 0.367121515600963 2.509109656796389 0.3775644478254834 0 4.788143759162057 9.879718693918829 0 6.597222222222214 6.319444444444858 0 1.70058988039908 3.263888888889324 0 1.460063488099962 5.416666666666973 0 3.745372083778995 0 0.7517058469130407 1.38479633479068 0 0.874428163502075 1.316894948337457 0 0.8772776834109657 1.456790275342111 0.1202813060811719 0.8772776834109657 1.387345830897666 9.882073843479674 0.8767405062580187 2.778855423455679 10 0.7557728690692403 2.783916452630912 4.791666666666824 0 6.511842123645887 7.847222222222227 0 8.91746824526949 0.1202813060811716 0 6.597222222222214 0.7023749875992948 0 7.111381617869249 0 0.6198898298631765 4.520160065293922 0.1512255181223343 0.7223486025902035 4.519751091757627 0.0918905935015215 0.8793240796385209 9.16365932907288 0 0.7586286383397322 9.168708600419794 0.1493891126789164 0.7164056924457287 9.098939309721056 0.6917127153875879 0.8699255637106145 9.435546468719696 3.830448939764822 0.1244705656584144 2.005916179327882 3.848547139427208 0.2834516078659452 2.071764815509814 3.125000000000135 0 6.752404735808157 6.041666666666719 0 8.676905633107024 3.691895254801745 0.8729893406170426 6.118008140796471 8.333333333333719 0 2.542559022967481 0.5936609764651171 0.8531588934894209 0.1497196059844325 6.041666666666849 0 5.549591674996615 1.736111111111143 0 8.917468245269166 2.430555555555892 0 3.143965553372965 2.291666666667 0 3.14396555337296 5.765234131390351 0 0.3204479823331228 5.748096386073112 0.1297330515791439 0.4728431384492081 4.652777777777994 0 5.309029062834174 0.3452381129098808 0 0.6260248750337549 8.263888888889337 0 1.46002726823693 8.402777777778235 0 1.460027268236944 5.277798474350559 0.8777309322120683 4.395075809104782 5.855124244298724 0.8766299455894082 1.655414444271375 10 0.6359029124408085 7.569326753300236 0.1199596732513178 0 0.764913763922644 0 0.1241526465320646 0.9008891668984749 0 0.1263935190958826 0.7648042425771737 0.2338634428003083 0.8677447633322468 3.970343283952555 4.097222222222547 0 3.384528165535392 6.875000000000449 0 0.9789020439120892 10 0.1329201272774974 6.87736959997109 9.877462174672946 0 6.871902410224478 10 0.1219240275832402 7.014891182917853 5.347222222222534 0 3.625090777697815 10 0.7532056800395739 4.730848268120351 9.898093363277187 0.874775704225675 4.725217746283616 9.74505171618986 0.8558489096746278 4.734538879852522 6.597222222222343 0 6.271279511483673 7.476918149498545 0.6362038710310221 2.535765568177544 5.277777777778008 0 4.948185144590711 7.986111090181064 0 4.106216014106822 5.97222222222231 0 7.5943738783765 6.110823627674705 0.118028232830759 7.510570973861155 1.458333333333609 0 4.106216002022298 7.430555555555824 0 4.106216002022637 7.343448171685186 0.162805397375202 4.059037314916011 7.430555555555835 0.1232807567195944 3.948133113218439 7.274003727240732 0.162805397375202 4.179318620997178 7.569444444444828 0.8823765816281921 2.510419109118079 8.541666666666792 0 5.790154287159119 9.882073843479674 0 2.984242253521089 5.347222222222585 0 2.662840329048428 0.4844852916251043 0 8.911091480214761 0.6228305202046845 0 8.916963354954127 8.333333333333293 0 8.797186939188371 3.26388888888923 0 3.143965553373006 3.819444444444649 0 5.309029062834128 3.750000000000212 0 5.188747756752954 0.903212672981917 0 4.346527527321585 8.263888888889015 0 6.030716899321447 5.208333333333709 0 2.422277716886079 9.879718693918834 0 8.124999999999984 0 0.124271944614326 2.708813960548516 0.1202813060811719 0 2.847222222222219 0 0.1259563838779521 2.848422356361956 1.875000000000248 0 4.587341226347002 7.638888888889259 0 2.783121635129768 7.790286472189337 0.1234567901234572 2.851265982747188 1.736111111111538 0 1.70058988039886 0.7638888888889259 0 8.436343020944399 1.665843627482736 0.8790579095343956 5.499448244406283 4.166666666666899 0 4.948185144590634 10 0.8785502996759462 5.07277184080733 10 0.8784299758138989 4.935429867115584 0.344555634779568 0 8.263360830868454 9.714683053712584 0 0.897643709353575 9.685969792924528 0.1320990691410974 0.9718279718049389 9.764697529844582 0.1320990691410974 1.042673080653687 2.777777777778236 0 1.099183349993061 2.760061868452646 0.1235365848911515 1.035214243921012 2.569444444444756 0 3.625090777697662 0 0.874071484052638 0.4806289892537692 1.736111111111259 0 6.752404735808076 6.736111111111307 0 5.068466450671968 6.388888888888948 0 8.316061714863558 2.569444444444425 0 9.158030857431552 6.87500000000032 0 3.384528165535565 10 0.1220403300572577 6.041516663975617 10 0.2525678378647769 6.110974829604254 10 0.6364515816355996 5.357058218162754 0.3347928387017598 0 8.908747292366179 9.394521865918882 0 6.518619423472975 10 0.8790323628112215 2.850414393807432 10 0.8767405062580187 2.711279836601255 10 0.3628493952595555 1.170158234439541 7.152777777778135 0 2.903402941210904 9.867359704670188 0 7.022042232249387 9.097285671271443 0 0.9798805350673961 1.597222222222677 0 1.219464656074165 0.9728603864495674 0 8.075130658412492 0.6304283751355463 0.8615698856571411 9.566608889235054 2.847222222222674 0 1.219464656074236 8.541588447351847 0 4.827948998452424 8.471342996286186 0.1230741771090416 4.801257531378376 7.013888888888913 0 7.474092572295431 5.000000000000413 0.1586533016196627 1.740683649092762 5.069444444444859 0 1.700589880399042 5.12007077813138 0.1230027409798238 1.746910486470645 4.166666666666767 0 7.353811266214048 10 0.6172509164587466 1.031480734385109 7.847222222222634 0 1.700589880399201 4.930555555555971 0 1.700589880399035 4.861111111111525 0.1229568651879164 1.727943921208288 0 0.1202813060811714 4.097222222222218 0 0.1202813060811718 4.236111111111107 0.09364309869122645 0 4.097222222222217 0.09364309869122645 0.1202813060811718 4.166666666666661 0.09364309869122645 0.1202813060811714 4.027777777777771 5.563072083130316 0.8761652922351015 2.135868371659435 10 0.8797186939188282 3.124999999999997 10 0.8790323628112215 2.989303282696321 0.4859776876688369 0 4.861872035024907 5.301702431738446 0.1591497554394324 4.400685288282887 5.277777777778141 0.8810553555192381 2.624548781217588 1.456071827885444 0 0.1051434812376058 1.31811442459613 0 0.105626180833225 1.87500000000044 0 1.460027268236524 2.56944444444481 0 2.662840329048284 5.347222222222481 0 4.587341226347209 5.277777777778047 0 4.467059920266029 10 0.6376033928175359 8.961154357828974 5.495608450849805 0 0.312217979537391 1.111111111111275 0 6.872686041889194 8.112212602972665 0.8772807211308948 8.847071002164386 8.181657047417087 0.8772807211308948 8.967352308245555 4.722222222222252 0 8.797186939188116 4.72222222222249 0 4.467059920265982 10 0.631074965532614 6.875953844307704 1.042827865223671 0 5.308358644534644 0.9813029410790707 0 5.184409367827902 0.9130196951914108 0 5.304020255609724 0.9853516066185477 0.126105061450952 5.284590265531085 6.819895288612859 0.1303110122434429 9.446966287028591 0 0.8774155417899101 0.900675142749964 0.7632055796078947 0.8334952340219645 6.353585362941915 5.817735653470098 0.1356884269240251 7.787779708968531 0 0.3664514134126681 3.818516518545783 9.518999939674723 0 9.162281778733792 7.638888888889186 0 3.745372083779138 9.599624943950307 0 0.4263336056279475 3.749519372784811 0.1242719446143269 0.1202813060811718 0 0.3854696585847238 5.630731001208963 2.986111111111505 0 2.18171510472362 3.125000000000393 0 2.181715104723628 0.1257912843667784 0 9.501135330686431 0.2176818778683 0 9.427981519324334 7.430555555555954 0 2.181715104723865 1.805555555556003 0 1.339745962155349 2.499999999999985 0 9.278312163512727 2.489033739684043 0.1229692110525856 9.352168327554786 9.32485321470973 0 8.07278500828585 7.507209794416869 0.1214683973750618 2.621991571557796 7.418421732257825 0.2572091464736075 2.565154632029039 4.652777777778216 0 1.219464656074337 3.680555555555697 0 6.752404735808183 10 0.8793240796385209 8.959035362657197 10 0.8777391366462515 8.819334031068793 0 0.3792782968318676 6.041301715998952 5.138888888889332 0 0.8586207378308471 4.305555555555607 0 8.075499102701095 4.375000000000055 0 7.955217796619926 4.7222222222223 0 7.353811266214068 4.166666666666839 0 5.910435593239995 4.097222222222389 0 6.030716899321167 4.236111111111276 0 6.030716899321169 10 0.874428163502075 1.178006059448569 5.763888888888962 0 7.714655184457645 5.625000000000065 0 7.955217796619968 5.277777777777833 0 7.834936490538773 1.180555555555769 0 5.309029062833998 0.9727295999603471 0 4.226204373429912 1.041739149200909 0 4.346736766374114 1.068356486607208 0.1174259203299122 4.206490574224468 0.1193906830415307 0 7.851666956973748 6.31944444444452 0 7.955217796620042 6.250000000000071 0 8.075499102701208 5.694444444444774 0 3.264246859454318 0.1401849005530279 0 7.019967441931731 0 0.5147291819568913 6.249853653254032 9.027777777778224 0 1.820871186480516 9.097222222222682 0 1.700589880399349 9.860683065743874 0 3.817412661559855 10 0.6338446442766204 5.218997207089201 2.84722222222255 0 3.38452816553533 2.70833333333366 0 3.384528165535323 0 0.3803254852167071 3.12736137095466 6.034607660450984 0.8655060877652504 7.759415856746369 1.032428797642665 0.2509160190074178 5.23541621703842 8.327633736843705 0.8762421371846979 3.425695856392426 4.791666666666663 0 9.398593469593983 5.347222222222531 0 3.865653389860169 3.680555555555598 0 8.436343020944584 9.881042876086408 0 1.316253948454115 9.650600449402914 0.270470343063601 9.857868557294569 9.51228748604332 0.2497445227904501 9.876476268272871 0 0.6399075896891296 5.493104763036226 5.208333333333611 0 4.346778614184851 3.472222222222289 0 8.075499102701052 3.438448427670699 0.1349472887770102 8.170517576424057 2.083333333333367 0 8.556624327025666 9.875154111813712 0 1.588086066159557 10 0.1254384302214949 1.595454572413788 9.8514272201108 0.1722732638758605 1.677334581111614 4.305555555556019 0 0.8586227706809539 3.819444444444728 0 4.106216002022411 0 0.8794659590049758 0.7621133966354581 10 0.8794659590049758 0.7621133966354581 2.041473920354913 0.5921175030514858 7.217135632368089 7.847222222222657 0 1.460027268236882 5.000000000000346 0 3.023684247291932 2.152777777778095 0 3.384528165535301 2.013888888889191 0 3.625090777697642 0.8450501705464819 0.1585383527891643 1.487611614714442 3.402777777777751 0 9.639156081756408 0 0.3650877216231237 7.977994941590461 4.932337279041992 0 0.3277811628904274 9.507349140714325 0 2.14512021420609 3.263888888888918 0 8.676905633106912 10 0.8774155417899101 1.039564031638853 9.590342788681602 0 4.819322542570054 10 0.8772776834109657 1.456790275342111 10 0.874428163502075 1.316894948337457 0.1259158450590976 0 8.960470141956009 0 0.1301253765027281 8.958374949596728 0.09392855693056865 0 8.819444444444429 2.158510500826151 0.8731005009060228 7.311802760922633 8.541666666666789 0 6.030716899321465 9.872183659743804 0 6.047288086230196 9.751902353662633 0 6.116732530674643 2.186095532292064 0.6238713055771712 7.215220895770498 3.611111111111377 0 4.467059920265918 3.589854405855441 0.1375717757185241 4.557181956977011 0 0.6276702353549997 4.661554348196487 5.496614741533238 0 0.5180405431369697 5.543051145741355 0.1297330515791439 0.568937442355034 0.8375243437332125 0 3.026103928274039 6.736111111111527 0 1.460027268236757 0.6249999999999809 0 9.879718693918658 0.5596543551722615 0 9.765559056749964 0.4902099107278362 0 9.885840362831306 0.5560914180656928 0.1501249539808968 9.849453677131764 2.847222222222522 0 3.865653389860018 3.125000000000274 0 4.34677861418472 2.50000000000021 0 5.429310368915231 3.263888888889188 0 3.865653389860043 8.125000000000302 0 4.106216002022697 9.654292356995946 0 5.55072237802622 5.31738964212898 0.5882743759019783 2.644375092822387 0.7711829449919704 0 0.3247989026596789 2.986111111111324 0 5.309029062834085 0 0.3733699758527643 2.573478299550391 0.1460585805082219 0.266523786816087 2.539743518628591 7.569551003014388 0 1.219646119488229 1.875000000000325 0 3.143965553372943 7.500000000000207 0 4.948185144590843 5.34722222222228 0 7.714655184457603 0.6086212040183714 0 7.949767577181731 10 0.1263935190958826 0.7648042425771737 0.129665152354148 0 3.280401013196565 7.013888888888956 0 6.752404735808393 7.013888888889319 0 1.219464656074434 5.34722222222237 0 6.511842123645936 5.201900301807408 0.1201386670978422 6.59440730338593 2.493670265926688 0 0.6540358876906117 4.861111111111541 0 1.339745962155518 4.791666666667103 0 1.219464656074344 5.416666666666835 0 6.150998205402427 7.013888888888936 0 8.436343020944767 4.375063448617827 0 0.3348793242106745 9.237061293998639 0 9.399259888360595 1.735288071927187 0.8790579095343956 5.379166938325112 10 0.1220958652159341 1.735961108420068 10 0.2475342954374291 1.664749014167189 2.847222222222246 0 8.676905633106882 10 0.5142375733670899 6.528579407214727 0 0.6364650521036366 6.597955250428466 6.527777777778101 0.4950730547060832 3.344434396841813 9.369634812620749 0 5.06357259931948 3.749098151782238 0.8404725990722763 0.9687801463914669 4.513888888889172 0 4.106216002022453 9.882075146814085 0 2.71013915349274 1.250000000000243 0 4.707622532428143 5.069444444444778 0.8413466983803375 3.224153090760556 5.012417949924965 0.8692397560309805 3.355222034627912 3.680555555555685 0 7.233529960132872 2.013888888888931 0 8.436343020944495 0.1259158450590976 0.8793240796385209 9.030616615724327 5.764436904389612 0 0.528526163964679 3.194444444444587 0 6.63212342972699 9.867565394216129 0 7.697170239931826 3.263888888889296 0 1.941152492561292 8.819331145631249 0 2.181649691623476 0.1289471416585812 0 2.708135463542792 0.7781211805636147 0 1.706877719786603 0 0.6359861255972432 8.535795631440944 4.930555555555799 0 4.827903838509511 0.1202813060811719 0 0.9027777777777778 0.3337817035526355 0 0.3394308467154828 0.1246727304490864 0 6.731374971218463 10 0.4405272939278445 9.900524894840055 10 0.5587388184916778 9.903891884713131 0.3336616831408292 0 9.160873390280859 2.569444444444501 0 8.195780408782188 5.416666666667076 0 1.820871186480225 6.180555555555989 0 1.219464656074384 1.666666666666704 0 8.797186939187991 5.625000000000243 0 4.587341226347222 0 0.8767405062580187 2.711279836601255 0 0.8790323628112215 2.850414393807432 7.013888888889164 0 3.865653389860261 7.013273964181582 0.1698107750262129 3.935999357436317 7.150058719608955 0.1285527027343369 3.928398012241115 0.244954036530258 0 6.661930526774018 4.097222222222213 0 9.158030857431658 0 0.6376033928175359 8.961154357828974 0.143713513597384 0.7306371271290251 8.943801030860175 2.708333333333487 0 6.51184212364579 5.208333333333385 0 8.195780408782285 5.138888888889298 0 1.820871186480215 9.02777777777791 0 5.669872981077931 8.5416666666671 0 1.941152492561641 3.958333333333657 0 3.384528165535382 9.876351263864814 0.874071484052638 0.4159947389109188 6.805555555555781 0 4.226497308103764 4.930555555555706 0.1540113770664205 6.628087105135093 4.930555555555713 0 6.511842123645901 5.063011412918524 0.1201386670978422 6.594407303385918 7.847222222222561 0 3.384528165535641 9.594010592962739 0.1244219398421221 0.4970574642719097 9.440933009183418 0.1244219398421221 0.4971040150300025 8.819444444444368 0 8.917468245269593 9.882075146814085 0 2.571250264603852 9.027777777777901 0 6.150998205402674 3.472222222222439 0 5.188747756752941 7.649048855939544 0.1218732201524634 4.631427795212335 8.40275802035824 0 4.827915245461445 0 0.8793045587012112 9.376339904429255 9.877462174672946 0 6.73301352133559 5.069444444444796 0 2.903402941210764 10 0.8793045587012112 9.376339904429255 8.6805564547773 0 0.7383532992549662 8.611111111111663 0 0.6180581256687411 7.222222222222365 0 5.910435593240202 7.291666666666818 0 5.790154287159035 7.708333333333567 0 4.587341226347343 7.013888888889248 0 2.903402941210892 3.333333333333761 0 1.580311928919574 5.486111111111365 0 4.587341226347219 4.305555555555697 0 6.632123429727027 2.916666666666782 0 7.11324865405166 5.493706515510547 0.8407399596833388 5.643561728430701 5.536410577917266 0.8716178719031766 5.772232321837039 2.708333333333798 0 0.9832496078377349 9.336751714557058 0.8632867246643103 1.07151213570285 0 0.1234559657180418 4.654256181314391 0.1200104297255251 0 4.791163394166004 0 0.130065014588739 4.796540978226696 8.888988490533578 0 9.278296146869963 4.375000000000383 0 2.422277716886037 3.472222222222213 0 9.037749551350462 10 0.3650877216231237 7.977994941590461 9.171852119973241 0 4.003518693557576 0.1392216714037994 0.3159925595283707 1.662201691295426 1.257126942926797 0.1236801957543557 3.340319654424417 6.805555555555662 0 0.4293103689153597 6.597222222222427 0 4.827903838509618 5.208333333333695 0 2.662840329048425 10 0.8793045587012112 9.237451015540366 10 0.8793240796385209 9.097924251546086 5.902777777777828 0 8.436343020944683 5.833333333333389 0 8.316061714863505 9.231755243308449 0 1.462542129685719 9.096599955393685 0 1.46038653415824 7.28894760849785 0.1285527027343369 3.928398012241126 7.21223387041947 0.1169688220465457 4.060355455726667 4.020236957207186 0.120134125663125 1.237454599073645 8.819426045454051 0 2.903413563873293 0.0918905935015215 0 9.232401744193453 0.1259158450590976 0 9.099359030844898 0 0.1301253765027281 9.097263838485617 0 0.1289606650045655 9.235028317941719 0.1202813060811732 0.874775704225675 4.587085067671429 9.757180868591774 0 6.663569076891145 3.611111111111511 0 2.061433798642482 7.91666666666665 0 9.037749551350652 2.152777777778158 0 2.422277716885919 1.458333333333788 0 1.219464656074157 4.791666666666645 0 9.639156081756369 0.7638888888889267 0 8.917468245269127 7.569444444444819 0 2.662840329048591 10 0.8794772687741207 2.153195938394635 10 0.7577474118247056 2.225149346540225 9.874808955498153 0.8782701430505849 2.23877327620268 10 0.8782701430505849 2.294175630367811 0 0.8793045587012112 9.237451015540366 0 0.8793240796385209 9.097924251546086 5.208333333333368 0 8.917468245269305 5.138888888888918 0 9.037749551350469 6.250000000000096 0 7.594373878376524 5.628274741495224 0.8819717671692461 5.628220496779231 0 0.1243189231666929 8.81944789393669 7.569444444444444 0 7.955217796620172 2.986111111111548 0 1.460047395847357 2.916666666667111 0 1.33976608976618 0.6939714941958234 0.1208976602350968 9.879718693918658 2.013888888889094 0 5.549591674996377 9.62182371036538 0 1.300456640207971 4.513888888888885 0 9.398593469593987 6.051216661750001 0.2558485865222662 0.1325042303755533 2.916666666666845 0 6.150998205402285 2.916666666666836 0.1176360477525264 6.243144263649924 3.055555555555728 0.1176360477525264 6.243144263649931 4.652777777778049 0 4.346778614184805 6.944444444444692 0 3.985934695941429 7.073344981530576 0.1169688220465457 4.060355455726656 1.527777777777819 0 8.556624327025636 1.87500000000017 0 6.271279511483403 1.929441074305705 0.1389799779236054 6.390488340117987 9.303721752254056 0 5.184530055585435 0.3785562979615832 0 6.189540526286598 3.593548253728494 0.7343381039000938 3.925587641585278 0.9969951277919245 0.4176613658230152 0.1679044876094375 4.792221897183961 0 0.3292325153102608 0 0.7543686005529743 6.944826482181163 0 0.8777385772736531 6.875258613781329 0 0.8766300232793212 7.014012312844272 0.1637242426954723 0.8496070667791725 6.938979613898526 1.408957685108134 0.4150620192806704 1.218922823450282 7.083333333333367 0 7.113248654051919 7.013888888888935 0 6.99296734797074 5.485886126856779 0.8795988882339986 6.422441787485718 7.569444444444713 0 4.106216002022649 9.908795366082721 0 9.232106822731865 10 0.1301253765027281 9.097263838485617 10 0.1289606650045655 9.235028317941719 5.069444444444621 0 6.030716899321233 5.000000000000181 0 5.910435593240056 6.458333333333719 0 2.422277716886131 4.791666666667082 0 1.700589880399028 4.652777777778193 0 1.700589880399022 1.805555555555798 0 4.70762253242817 7.013888888888888 0 9.639156081756484 6.319444444444575 0 6.271279511483657 10 0.6259139124584798 2.715651906342728 1.041735172606371 0 6.271273326463255 9.418055775311048 0 3.52860662279186 7.713463367322122 0 0.3179013427374553 7.852285420671079 0 0.3137269861266714 9.232002159421022 0 6.995339652335278 9.616473324900905 0 3.235186343500126 8.68055555555592 0 2.903402941211018 8.749981601009615 0 2.783132257792117 9.627308623516925 0.841834377705147 0.5968078166627852 10 0.3855054672024675 6.598366857812688 10 0.6348502164200783 4.940683937792358 2.708333333333699 0 2.662840329048291 2.847222222222588 0 2.662840329048299 8.263872559433338 0 4.827913266325487 7.291666666666933 0 4.106216002022625 5.073375091685584 0 0.3221206692269448 8.958233710453971 0 7.955272740322874 5.625000000000094 0 7.233529960132958 8.090444424835749 0.7537869320891204 8.771125876408648 1.527860895416465 0 2.783169623120262 5.763888888889125 0 4.587341226347229 0.09364309869122645 0.8697912773991351 4.027733835229068 0 0.8697912773991351 4.097178279673514 0 0.7433076774136763 4.166622724117959 0 0.8735164000145412 4.236111111111109 0.09364309869122645 0.8735164000145412 4.166666666666663 3.819444444444574 0 7.233529960132875 4.93055555555591 0 2.903402941210756 6.875000000000231 0 4.106216002022594 6.17349654933987 0.8655060877652504 7.759415856746384 4.305555555555625 0 7.594373878376404 0 0.6254944792818928 1.733172205455386 7.77777702428583 0 4.467060355295107 1.458333333333718 0 2.422277716885875 9.876576056540632 0 9.09874851409565 5.833333333333751 0 1.580308574317898 7.7083333333337 0 2.903402941210945 5.000000000000316 0 3.50480947161662 0.1099205397656446 0 7.572486224140468 0 0.1232802177586016 7.568914817512063 0.1124216062896282 0 7.440794185947233 8.333333333333236 0 9.278312163513032 0.4154916287805277 0.1261110434261 9.885840362831306 2.638888888888866 0 9.518874775675078 2.361111111111151 0 9.518874775675172 2.430555555555554 0 9.398593469593884 2.569444444444421 0 9.398593469593887 5.935608317816268 0.8661097709648756 1.301082374680546 8.541666666666577 0 9.158030857431896 8.402777777777693 0 9.158030857431875 3.055555555555666 0 7.353811266214013 0 0.6199087813078293 7.705021798939875 0.6239522072481006 0 9.402494797187016 1.592194543296892 0 0.3139178188333168 4.236111111111217 0 7.233529960132881 8.541666666666771 0 6.271279511483813 9.376012651917094 0 0.3295401749634965 3.125000000000027 0 8.676905633106902 0 0.3794644362805819 7.568797126367862 1.042652813219463 0 5.068672270023828 6.805555555555746 0 5.188747756753144 6.458333333333387 0 8.436343020944733 2.638888888888884 0 9.037749551350382 1.805555555555707 0 6.632123429726908 4.097232796992182 0 0.523674719570538 10 0.388404689681743 8.960493944768505 7.569444444444661 0 4.827903838509677 9.660960135080387 0 9.664327979436255 0 0.1305275078075192 6.180569276739741 0.1202813060811744 0 6.18055555555555 0.1554406897715304 0.1567107589618326 6.110229191028883 0.1554406897715304 0.2872382667693518 6.179687356657521 7.083333333333341 0 9.518874775675313 6.736111111111471 0 2.903402941210869 0 0.6348727322036843 9.097234176664038 9.656854063128776 0 7.486771488295346 7.986111111111106 0 8.43634302094485 6.18055555555579 0 4.106216002022577 9.375474060332788 0 8.676905633107316 6.180555555555816 0 3.865653389860227 7.777777777778105 0 3.504809471616807 0.1202813060811708 0 8.124999999999989 0.7667806111250519 0 1.220624299516164 8.263888888889376 0 0.9789020439122464 10 0.8766300232793212 7.014012312844272 10 0.8777385772736531 6.875258613781329 10 0.7543686005529743 6.944826482181163 9.841371242791176 0.8467927863505931 6.932720348511235 6.249999999999994 0 9.518874775675272 7.916666666666663 0 7.594373878376652 5.694444444444442 0 9.518874775675254 5.280638938233459 0.1373619798988563 7.464378366569235 3.888888888889373 0 0.6180581256684354 3.819446206906386 0 0.5236826593383308 0.6638784525906748 0 1.943147297254542 10 0.874775704225675 4.656529512115872 8.194444444444349 0 9.518874775675354 10 0.3792782968318676 6.041301715998952 5.559391664057854 0 0.624620467870505 0 0.8640485788080726 7.841091819847808 8.126345242501237 0 0.1056148420251408 8.02091862389134 0.1400234805071087 0.1435174192172469 2.291666666666691 0 8.676905633106843 9.467561357283806 0.8632867246643103 1.047588966432899 9.442341390124076 0.6973496057321169 1.177082927761936 3.194444444444622 0 6.150998205402297 3.194444444444613 0.1176360477525264 6.243144263649935 0.09610811528686625 0.2795057446069523 0.0891149110914046 0.0891165005176319 0.1767374388397886 0.0891149110914046 0.2386750826165635 0.2471375810230522 0.1475667140793927 0.1495585820989316 0.2468892683805271 0.2366816251707973 8.198196006437065 0.8541620119300133 1.314873313532969 3.81944444444477 0 3.384528165535373 0 0.3734453508147871 2.713186030289989 9.496887924363868 0 8.444147990136837 0 0.2787719342460792 0.1885937039648586 8.40277777777834 0 0.5238622031424054 8.54166666666725 0 0.5236842472922382 9.857459099826521 0.4694167408835749 6.242919609642602 0.3569042464537491 0 4.359407010474951 6.781007029886074 0.8626330004848157 1.341283242153851 0.1193906830415307 0.8712910498046282 8.05577840440856 0 0.7353396286127009 8.045203267282622 0.4012345511300383 0 3.746861482531997 0.2608122606250798 0.143985364553999 3.818799226943641 0.2632476220156893 0.1331399227578763 3.667549423644689 3.750000000000145 0 6.632123429727013 10 0.3820664839328319 0.7629545447290851 2.847222222222187 0 9.398593469593933 10 0.5587693298276695 0.09607770356021565 8.40277777777812 0 3.384528165535688 10 0.1265785768688975 2.292395362307321 10 0.2565045088996352 2.222897005670591 10 0.1299259320307377 2.15272386558549 9.849108106459735 0.1476531599021798 2.262532662747969 0 0.5587693298276695 0.09607770356021565 0 0.4405273711474468 0.09947879287345406 10 0.4405273711474468 0.09947879287345406 0 0.5587388184916778 9.903891884713131 0 0.4405272939278445 9.900524894840055 7.847222222222202 0 9.15803085743182 7.777777777777753 0 9.278312163512991 5.536410577917255 0.8716178719031766 6.012794933999384 2.847222222222226 0 8.917468245269227 2.773705098390533 0.1247112619321832 8.872120781366565 0 0.8797186939188282 7.708333333333325 0 0.1220403300572577 6.041516663975617 0 0.2525678378647769 6.110974829604254 3.402777777778146 0 2.662840329048328 6.527777777778167 0 2.301996410804959 0.7663551027111217 0 6.511619462922681 5.34722222222241 0 5.790154287158905 9.235431318229857 0 2.421885238283214 0 0.6348532112663746 9.236760940658318 5.763888888889082 0 5.309029062834265 0.3530776531163489 0 2.145056340300049 10 0.6290530882466305 8.393876728998025 9.876162994876562 0.6711417568161431 8.314423247300144 3.819444444444595 0 6.511842123645845 7.152777777778003 0 4.5873412263473 0 0.3630663745048946 3.958114218615246 1.458333333333464 0 7.23352996013274 7.986111111111093 0 8.9174682452695 0.6250000000000331 0 8.436343020944404 0.3447304013323454 0 1.736996050469908 4.166666666666864 0 5.42931036891531 0.3584894143680402 0 3.135472643114455 10 0.8784299758138989 4.796540978226695 6.111111111111301 0 5.429310368915448 1.875000000000027 0 8.917468245269166 3.958333333333641 0 3.625090777697725 2.986111111111222 0 7.233529960132836 2.893711204807869 0.1334124480076622 7.27065088849672 1.527777777778046 0 4.226497308103474 0 0.8738889565739005 9.519162726391745 0.7778664744100261 0 5.301130749287857 4.86116547772864 0 0.859447707126344 9.497057450868375 0 0.9550176627751552 9.874162994216539 0 3.391091414823069 10 0.1234497409204609 3.26414201139515 9.876084305183767 0 3.257094288511899 10 0.8738889565739005 9.519162726391745 0.3547452567046707 0 2.283129274361644 2.079642820809094 0.8798572229135914 7.192867873190043 2.430555555555735 0 6.030716899321085 9.424950536526222 0 8.325305985594781 0.4555850440810662 0 1.803680854847372 2.089066056381711 0.7144471992863601 7.271708992228905 3.750000000000252 0 4.707622532428268 5.27777777777808 0 3.985934695941339 5.208333333333623 0 4.106216002022504 9.215718089601621 0 4.59766824435955 10 0.3619035574833677 7.842113472940579 0 0.3756766081073357 2.434837479086974 2.222222222222535 0 3.504809471616477 3.125000000000059 0 8.195780408782213 3.124999999999956 0 9.398593469593971 10 0.3751297900784132 2.852794426103429 10 0.3734453508147871 2.713186030289989 10 0.8797186939188282 7.708333333333325 7.430555555555616 0 6.752404735808422 3.197789339225917 0.8755357710735929 6.546656147956686 1.111111111111394 0 3.985934695941108 1.137728448517679 0.1174259203299122 4.086251115953806 5.069444444444706 0 4.587341226347181 5.00000000000027 0 4.467059920266005 7.569444444444645 0 5.068466450672021 0.3713635536199654 0 6.999625997539437 4.375000000000049 0 8.195780408782273 0.7667661383481456 0 6.271019740639847 2.708333333333674 0 3.143965553372978 7.43055555555595 0 2.422277716886232 7.437765349972433 0.1214683973750618 2.50171026547662 0 0.3789316954287745 3.537632914301298 1.396015831815668 0.1236801957543557 3.58088226658678 10 0.5147291819568913 6.249853653254032 6.180555555555753 0 5.309029062834286 2.013888888888911 0 8.917468245269173 5.208333333333481 0 6.511842123645931 3.263888888889117 0 5.068466450671758 3.402777777778003 0 5.068466450671767 1.043049500558432 0 7.473294991663634 0.9722222222223244 0 7.59437387837621 1.458333333333634 0 3.62509077769761 1.388888888889196 0 3.504809471616432 1.319444444444759 0 3.384528165535254 0.7677178742526362 0 7.953007130889265 4.236111111111528 0 1.700589880398999 4.09722222222264 0 1.700589880398992 0.6499929845798319 0 7.45698475418066 1.658916734715734 0.8614296166002227 2.633401666487787 9.857518759873162 0 1.739707530068728 9.732672871686873 0 1.661126929561619 1.666666666666853 0 5.910435593239882 9.61472727210861 0 2.193413638238848 10 0.8712910498046282 8.120778114101471 10 0.8640485788080726 7.979980708736697 7.222222222222493 0 3.985934695941449 3.124999999999965 0 9.639156081756376 0.1202813060811732 0 4.652777777777774 6.250000000000286 0 3.745372083779045 3.402777777777838 0 8.19578040878222 3.194444444444859 0 1.820871186480115 0.6698949805682974 0 5.789177931162524 0.5295679284021468 0 0.3390956949395977 9.236111111111239 0 6.511842123646192 3.263888888889002 0 7.474092572295195 0.4862710798346961 0 3.869370031569531 3.541666666667072 0 1.941152492561307 9.56214479635449 0.8473089296858853 5.49196658621787 9.647374946744058 0.8542899089312745 5.35290412472169 10 0.1224998024324479 3.402201527439865 5.625000000000394 0 2.181715104723744 0.9033247756869487 0 7.954901987229657 4.653141958728121 0 0.3320943758613605 3.194444444444635 0 5.669872981077612 3.263888888889076 0 5.790154287158789 8.059182600375191 0 0.2107197226394402 7.988392913429498 0 0.1051048806142993 3.541666666666851 0 5.790154287158801 4.375000000000258 0 4.587341226347133 0 0.6146653013333854 8.114459159469012 9.910884785362553 0.7202359844134036 9.903891884713131 9.762638230116783 0.7549657659274223 9.851760026759395 0.9037639243305869 0 4.828109657861479 0.7698057682045472 0 4.82913875462238 1.726272651794249 0.8786160099075444 6.351486499666064 9.301036596031732 0.1244219398421221 0.4983350037579241 0 0.6142635381709115 1.169922762194825 0 0.6264685446448124 1.313326961968315 1.319444444444859 0 1.94115249256118 6.944444444444793 0 3.023684247292057 7.502946997655268 0.8812290379093165 6.310615583585576 2.569444444444567 0 6.992967347970465 2.500000000000133 0 6.872686041889288 6.180555555555554 0 0.3349364905387877 10 0.7202459427505215 9.814775384195499 9.910884785362553 0.8230042901805681 9.910883499482368 9.85175344475423 0.7549757242645401 9.762643526241764 6.666666666667147 0 0.6180581256685533 6.59722222222269 0 0.7383394317497165 3.055555555555928 0 2.542559022967139 4.791721033284194 0 0.979729013207511 0.9136281916029203 0 1.70058527648409 9.870692998590368 0.4797059784505302 2.86159989137419 4.79166666666691 0 4.8279038385095 4.30555555555567 0 7.113248654051714 7.430555555555931 0 2.662840329048581 5.426663600217394 0 0.4157352044354011 9.283010004626478 0 4.71135366561757 3.055555555555608 0 8.316061714863382 8.81946104471848 0 9.398590800153704 0.7721858922389206 0 7.469307088506552 6.73611111111147 0 0.5236842472920078 3.819444444444801 0 2.903402941210691 8.957632790980711 0 6.030312441005538 7.569444444444678 0 4.587341226347334 5.9027777777782 0 1.460027268236728 10 0.3631693424042556 4.097222222222218 10 0.3864852551949184 4.940683937792359 2.84722222222239 0 6.271279511483453 9.236585171443901 0 8.676905633107305 8.749999999999954 0 8.556624327026075 8.819444444444402 0 8.436343020944911 10 0.8640485788080726 7.841091819847808 10 0.8753524277156527 3.402176526991358 10 0.8797186939188282 3.263888888888886 9.166666666667208 0 0.6180581256688048 9.09730425377429 0 0.738838675762614 4.444444444444867 0 1.580308574317838 4.652832144395308 0 0.9797290132075041 7.638888888889113 0 4.70762253242851 0.1320035823652546 0 4.217878754218654 9.898093363277187 0 4.790910456389961 9.893628856164696 0 4.655818466630041 10 0.1234559657180418 4.654256181314391 8.055555555555689 0 5.910435593240257 0.4844758231075974 0 9.408186408199988 0.266169247918825 0.8569145100782298 3.679513643992925 0.2636771174611939 0.8677447633322468 3.830629835706299 6.25000000000022 0 4.226497308103751 4.444444444444683 0 4.948185144590651 0.2444048846791433 0 6.114435035635356 0.1241235785979689 0 6.04499059119091 7.430555555555562 0 7.95521779662016 0.927747795781132 0.8767024727261696 8.129319839449888 4.375000000000371 0 2.662840329048381 4.444444444444821 0 2.542559022967213 3.541666666666647 0 9.158030857431653 3.680555555555537 0 9.158030857431672 8.560730021217488 0.8719386141082044 1.130634759772811 4.722222222222383 0 6.391560817564713 6.111111111111597 0 0.6180581256684865 6.041666666667139 0 0.738339431749651 0 0.3805732935774505 9.366698621782803 1.180555555555709 0 6.992967347970373 4.513888888889341 0 0.9789023343191533 3.958333333333467 0 6.992967347970533 4.236111111111452 0 3.143965553373057 6.250000000000457 0 0.8586207378308521 10 0.8712910498046282 8.259667002990358 10 0.8777304022929238 8.398968945283297 0 0.1234989187098336 7.43080701949896 9.420231550642127 0 6.892103364565801 0.3335371224485101 0 9.423760801233502 0 0.8797186939188282 7.569444444444437 5.000000000000398 0 2.061433798642554 3.611111111111159 0 8.316061714863405 4.375000000000282 0 4.106216002022445 0.7788864870611631 0 5.065362977859809 0.4849578382279875 0 3.619558559507403 7.847222222222218 0 8.195780408782515 7.222222222222458 0 4.467059920266136 7.013888888889227 0 3.143965553373234 9.373903030773189 0 5.304385950315197 5.852413908043999 0.8661230157015496 0.1545779001552287 7.430555555555592 0 8.917468245269461 2.986111111111533 0 1.700589880398932 3.125000000000044 0 8.436343020944555 3.125000000000171 0 6.271279511483468 2.986111111111283 0 6.271279511483461 0.3774790774913948 0 0.7704744906139418 0.9031888134149983 0 6.271242401362826 0 0.8777304022929238 8.398968945283297 0 0.8712910498046282 8.259667002990358 0 0.3845093175697289 9.234338243059673 9.424243999245967 0.8632867246643103 1.198051379970998 0.7638888888890344 0 6.992967347970329 8.199255855096247 0.8784807051158541 1.262337037257189 8.680555555555932 0 2.662840329048678 7.986111111111116 0 7.474092572295481 0.5066020397918423 0 3.153861726311568 2.777777777777793 0 8.797186939188046 6.458333333333506 0 5.549591674996634 8.47222222222257 0 3.264246859454518 9.096582630211545 0 7.233895376324098 3.124999999999997 0 0.1202813060811718 3.032404169447922 0.1438781418273452 0.1471368986339726 6.458333333333456 0 6.271279511483664 9.680803587633132 0 1.012429131761364 2.01388888888923 0 2.903402941210604 3.472222222222393 0 6.15099820540231 9.097321823866906 0 9.158014840788834 1.944444444444468 0 9.278312163512719 1.875000000000022 0 9.398593469593923 0.3823985704783777 0 6.053975561921957 0.6106931196377162 0 4.833418964515481 4.513888888889037 0 6.511842123645865 7.152777777777779 0 9.639156081756486 2.563018723088366 0 0.7630803168088487 3.958333333333537 0 5.309029062834133 4.444444444444449 0 9.278312163512769 4.236111111111075 0 9.639156081756434 0.5026784418664075 0 4.338110243641339 6.527777777777827 0 8.556624327025908 6.875000000000185 0 5.309029062834319 2.708333333333337 0 8.917468245269212 3.263888888889256 0 2.662840329048322 4.097222222222667 0 1.219469201496463 0.8416199596434346 0 1.588761388718427 1.940470616590241 0.1247364223685311 6.46650899066573 3.888888888889239 0 3.023684247291865 1.944444444444605 0 6.391560817564574 1.875000000000155 0 6.511842123645742 10 0.622613735758335 8.254574786705088 4.375000000000018 0 8.917468245269271 0.3783863972588879 0 6.586405608655786 8.958320146158291 0 0.979464496084939 9.027865204657106 0 0.8592031868739741 7.152777777778039 0 4.106216002022616 7.083333333333579 0 4.226497308103781 1.662692838812468 0.1247364223685311 6.466508990665721 1.736111111111204 0 7.714655184457451 7.916666666667068 0 1.820871186480377 5.60412389726091 0.8788659449517241 5.000331736820632 9.874808955498153 0 2.16681986805709 3.680555555555816 0 4.587341226347093 3.541666666666928 0 4.587341226347087 4.933830297050921 0.8819717671692461 3.22259437515575 6.041666666666774 0 7.233529960132997 0.607963427924771 0 6.26009827434587 0.3562188955291894 0 8.421569572105909 1.597222222222262 0 8.676905633106816 8.749951374499251 0 7.59439818287815 8.629053322794427 0.1273660142034075 7.50622725173117 3.051719447053702 0 0.2340299292687006 2.982275002609257 0 0.1137486231875288 1.944444444444777 0 3.023684247291774 4.513888888889328 0 1.219464656074329 4.375000000000441 0 1.219465752453039 0.1016737232734552 0.08824456309863175 0.1907886343648598 0 0.2139400074443432 0.2963217847860847 0.1016737232734552 0.1256954443457114 0.3088805969681352 0.2512323053723868 0.1586447052818953 0.2492404373528478 1.730996299775402 0 0.3180535748207541 4.097222222222564 0 3.143965553373048 10 0.6369566606934388 6.180340607578884 0.6660280828995482 0 2.207277835254362 7.361111111111369 0 4.226497308103804 10 0.3862503241999403 6.458813541948251 4.930555555555612 0 7.71465518445759 10 0.6276702353549997 4.661554348196487 10 0.6256915147846062 0.4875499206310907 6.041666666666735 0 8.436343020944694 1.319444444444493 0 8.436343020944451 8.263888888888838 0 8.91746824526953 6.111111111111248 0 6.391560817564814 5.532125538707495 0.8693957814603199 4.868807989070151 5.625000000000322 0 3.384528165535486 3.888888888889028 0 6.872686041889361 10 0.4946969374824639 8.183033273526705 3.541666666666804 0 6.752404735808177 4.305555555555857 0 3.745372083778921 4.930555555555694 0 6.75240473580824 4.861111111111262 0 6.632123429727063 9.621462782059847 0 6.586727903579356 7.569444444444732 0 3.865653389860305 4.652777777778023 0 4.827903838509492 0.7680996069756372 0 3.146396612593535 0 0.8762481677863287 7.43062280707098 3.402777777777766 0.8846348105862194 9.719343619143867 1.66161696292405 0.6835780612292583 0.1281782690338479 9.619206262813965 0 6.72251920269273 7.986111111111149 0 6.992967347970795 4.166666666667017 0 3.023684247291881 9.235372722042854 0 7.474414642921913 9.643955981959349 0 8.421266790083537 9.027100844933452 0 1.340184730760032 2.847222222222616 0 2.181715104723612 5.902777777777789 0 9.158030857431694 5.486111111111418 0 3.865653389860178 5.763888888889108 0 4.827903838509581 5.694444444444676 0 4.707622532428404 3.333333333333627 0 3.985934695941216 0.9027777777777866 0 9.398593469593825 0.833333333333354 0 9.278312163512641 6.597222222222308 0 7.233529960133033 6.527777777777874 0 7.113248654051858 10 0.3634703051476028 7.7044921720075 4.453742863414162 0.8736717053006383 3.416799026208272 6.87499999999998 0 0.3349364905388056 7.916666666667072 0 2.301996410805097 9.490032602064712 0 7.011646001874561 1.044119040897137 0 1.701670065947956 10 0.6356528221040034 2.153588169324912 10 0.8772776834109657 1.595679164231 10 0.7544357112739661 1.664525729397132 10 0.8771580278630005 1.735513231832798 9.843778614487819 0.8474125417830987 1.65968720092353 0 0.8712910498046282 8.120778114101471 0 0.8640485788080726 7.979980708736697 10 0.130065014588739 4.796540978226696 3.958333333333691 0 2.903402941210698 2.708333333333501 0 6.271279511483446 1.458333333333595 0 4.346778614184641 0.3775076773830613 0 7.996972256337708 7.638888888889049 0 5.669872981077885 9.652987626693594 0 3.110594251366751 4.37500000000006 0 7.71465518445758 8.47222222222234 0 6.150998205402635 6.623775400840907 0.5848939219406377 3.400515639544416 6.623775400840916 0.4984741688542175 3.27935546045402 10 0.3827541301987802 2.292787593237598 9.878396420688649 0 2.30054610026282 0 0.8777391366462515 8.819334031068793 0 0.8793240796385209 8.959035362657197 0 0.7570632162847724 8.88948050483711 0.143713513597384 0.8513130474905042 8.873654557091857 10 0.3825982363457078 8.821566889108469 5.138888888889172 0 4.226497308103671 3.95833333333378 0 1.219472344566218 5.486111111111516 0 1.941152492561399 5.833333333333483 0 6.391560817564795 2.361111111111384 0 4.226497308103516 8.887625959543218 0.8551022191199292 0.1445774150039169 5.869939896903848 0.5067141880559094 7.133514040212718 10 0.6282057690116827 2.854786463548906 7.430555555555841 0 3.865653389860293 7.013888888889276 0 2.181715104723831 0 0.631085989736944 0.6301454391238908 7.291666666666952 0 3.865653389860282 5.833333333333411 0 7.834936490538821 6.518847607821541 0.4984741688542237 3.461095729089608 2.569444444444783 0 3.143965553372971 7.847221343148252 0 4.346779121718764 7.986110357619188 0 4.346779049213956 5.277777777777828 0 8.31606171486346 7.361111111111541 0 1.339745962155647 7.500000000000383 0 2.542559022967415 4.236111111111587 0 0.7383411741926121 6.389000965355752 0.8541845790095233 0.1450444270616446 1.319444444444681 0 4.827903838509318 1.875000000000074 0 7.955217796619804 7.222222222222236 0 7.353811266214285 7.29166666666667 0 7.474092572295474 7.152777777777783 0 7.474092572295463 1.597222222222484 0 4.346778614184649 6.875000000000227 0 0.5236842472919206 9.659764232001358 0 0.5317333936965599 9.506686648222036 0 0.5317799444546527 7.361111111111141 0 9.037749551350636 2.847222222222324 0 7.474092572295172 0 0.3855054672024675 6.598366857812688 9.485820151190257 0 4.819834953375472 9.446567445886275 0 9.283043584108434 9.37699923619421 0 9.403187267427949 0.1907902237910871 0.08849287574115686 0.1016737232734552 0.3047332191039245 0.1261110434261 0.1016737232734552 6.180555555555978 0 1.460027268236732 0 0.124271944614326 2.569925071659628 0.1289471416585812 0 2.569246574653904 0.1460585805082219 0.1422518422017609 2.469818446968962 9.665494665219054 0.7366546498449278 0.128687577553251 5.347222222222287 0 7.474092572295264 8.402773605046118 0 5.309031471962303 9.635983341236507 0 3.844887988933007 9.612684703083836 0 6.060016088090768 0 0.1234497409204609 3.125253122506262 0 0.1259563838779521 2.987311245250845 0 0.249406124798413 3.057008812201554 0.1539608604888732 0.1530924336727549 3.057945991775191 0 0.6359029124408085 7.569326753300236 3.611111111111407 0.8814676548820863 3.905747158553778 9.910874758755137 0.2788342191923409 9.900524894840055 10 0.2788240702195435 9.811401756410596 9.910874758755137 0.1766037015561943 9.910876861570541 9.768741574715678 0.2327698489419616 9.857868557294569 9.857866815960541 0.2327596999691643 9.768745418865109 3.33333333333379 0 1.099347725481028 3.958333333333765 0 1.460031692721723 7.291666666666916 0 4.34677861418497 0.129665152354148 0 3.141512124307677 0 0.6360184498252663 8.821453026240572 8.888868283372545 0 1.099759035623991 8.819387755415121 0 1.219640597245683 3.888888888888862 0 9.278312163512862 0 0.8790323628112215 2.989303282696321 0 0.8797186939188282 3.124999999999997 0 0.7587510567300497 3.058747727140766 0.1541452116912289 0.8476181987173992 3.053036901367953 10 0.3639880212009011 1.03169475853362 9.867992134528263 0.256251715673162 1.042651171784334 9.236155044711856 0 0.5234501297553482 0.6654554665239465 0 0.3191210918115962 9.35313558770261 0 4.829973618839775 9.582905287966257 0 3.745654259005052 9.477499277761808 0.8690018648124366 0.5985079238426918 3.402777777777895 0 7.474092572295202 9.239541024449498 0 2.662694102859888 9.329828990305113 0 2.782098238012337 3.958333333333503 0 6.030716899321163 9.416129844592183 0 2.035777360615525 8.055555555555969 0 2.061433798642764 4.930555555555745 0 5.790154287158879 5.625000000000438 0 0.9789020439120307 5.486111111111549 0 0.9789020439120282 6.180555555555657 0 7.474092572295348 8.680555555556039 0 1.460027268236956 8.541666666667137 0 1.460027268236952 1.597222222222384 0 6.511842123645732 8.958204540398443 0 2.903477299846879 4.236111111111395 0 4.106216002022437 5.277777777777898 0 6.872686041889438 4.652777777777931 0 6.511842123645875 7.986111111111519 0 1.941152492561577 4.930555555555816 0 4.587341226347169 0 0.128963749295999 8.401852284575973 0 0.1234362638898392 8.26326571551807 0 0.2524000131858383 8.331784666760722 0.1510404160214245 0.1512879755114865 8.331558373629829 5.701659981864995 0 0.4219462392311438 5.625000000000406 0 1.941152492561403 2.986111111111068 0 9.398593469593958 1.875000000000361 0 2.66284032904825 0.1320035823652546 0 4.356767643107542 0 0.1202813060811718 4.374999999999996 0.1512278839080977 0.1526896668134484 4.444486572976398 8.611084578181025 0 7.353825835925331 7.500000000000277 0 3.985934695941471 8.125000000000409 0 2.181715104723947 9.809211062089094 0.9114971659217251 9.898326276726543 9.695270341795045 0.873829293542696 9.898326276726543 9.750079721480773 0.8434686000056971 9.750086303485936 5.763888888889312 0 1.460027268236724 1.944444444444818 0 2.54255902296708 10 0.7853960808327434 9.707824003651895 9.898326276726543 0.9115071242588428 9.80920977620891 9.898326276726543 0.8738889565739005 9.69526678089607 8.26443690438969 0 0.5285261639648149 9.650870251650133 0 4.09764276747731 6.041666666666764 0 7.474092572295338 5.902777777777866 0 7.474092572295322 7.708333333333316 0 9.398593469594157 1.458333333333502 0 6.511842123645724 0 0.2437372717992136 4.445922847981058 0 0.1234559657180418 4.515367292425502 0.9762949865008494 0 2.78547304668176 3.472222222222664 0 1.339788161285889 3.487700978963024 0.1228622610980502 1.413276383907033 9.235448747444481 0 3.144347969214852 0.09392855693056865 0.8777391366462515 8.749889586624345 3.958333333333475 0 6.752404735808192 1.38888888888912 0 4.948185144590493 4.236111111111257 0 6.511842123645856 5.902777777778129 0 2.903402941210797 7.013905399645025 0 0.5261514902874512 3.541666666667115 0 1.219517599766487 8.749945333984691 0 1.339825464838765 10 0.128963749295999 8.401852284575973 10 0.2524000131858383 8.331784666760722 10 0.1234362638898392 8.26326571551807 9.846885838136878 0.1438562215791563 8.350994007593204 4.792348382783086 0 0.5282833726218652 9.665141068403221 0 1.149994226669873 0.907030630272784 0 2.905858326743136 0 0.1265785768688975 2.43128425119621 0 0.2508505214832235 2.501209322855839 9.027777777777681 0 9.037749551350792 3.12499999999998 0.8706043782417252 9.750040163273932 3.263888888888875 0.8846348105862194 9.719343619143855 3.402777777777807 0 8.676905633106923 8.055555555555541 0 7.834936490539015 8.402777777777825 0 6.992967347970828 7.916666541084912 0 4.226497380608672 0.3827778216268027 0 6.720558357652034 7.573384152788544 0 0.3221360997894904 0.1319445668307923 0 8.422097630126334 2.708333333333433 0 7.474092572295163 1.319459638830883 0 7.955209024136704 3.541666666666723 0 8.19578040878223 1.666666666666874 0 5.429310368915193 3.194444444444402 0 9.518874775675181 4.583333333333478 0 6.632123429727039 7.986111111111102 0 7.714655184457833 0 0.3737748816403873 1.593113546036375 9.753205376186802 0 2.24514374609769 8.402777777777901 0 6.030716899321457 10 0.8697912773991351 3.958289390784624 9.846086122442433 0.8539541807306413 3.891130429797771 9.475025309797761 0.8654383224197169 5.373942434483931 9.625140890447643 0 2.711933911240096 0 0.8735164000145412 4.374999999999996 0.1512255181223343 0.8475728983645285 4.446554912975083 7.430555555555788 0 4.587341226347323 9.322571857062369 0 2.288310608092289 6.111111111111233 0 6.872686041889489 4.791666666666941 0 4.346778614184814 0.2183526128015501 0 0.3105955801180213 7.291666666666691 0 9.158030857431807 10 0.3704323166348266 1.733620082042655 7.916666666666822 0 5.669872981077906 2.635600795887743 0 0.869938841049654 0 0.874775704225675 4.517640623226984 0 0.7482921042402162 4.44819617878254 10 0.3798256113690139 0.8990394690503862 8.957259323158812 0 4.828436036014593 4.236111111111553 0 1.219467033868352 0 0.6369566606934388 6.180340607578884 10 0.8811572370349254 5.349721740769772 9.858389698549782 0.8542899089312745 5.28117394486734 0.5020521064761884 0 8.444450772159033 2.291666666666987 0 3.384528165535305 0.7669331553162839 0 4.345021006143416 2.777777777777883 0 7.353811266213995 0 0.5589060618487571 0.2741403617121038 10 0.3877654745821292 6.180354328763077 7.083333333333384 0 8.556624327025936 6.736111111111402 0 3.625090777697898 8.541666666666647 0 7.955217796620207 9.429703682738436 0 4.937545001459814 9.163144708075183 0 6.874719445630615 3.54166666666694 0 4.346778614184743 4.027777777778079 0 3.745372083778902 9.809201035481678 0.08830692526449579 9.898326276726543 9.691059910168914 0.1260074193861352 9.898326276726543 9.756193092687084 0.1444629236774659 9.756194834021111 9.898326276726543 0.1259565875306473 9.691074578628085 9.898326276726543 0.08829677629169845 9.809203138297082 10 0.2142533638223458 9.703625163472083 6.875000000000339 0 3.143965553373223 5.208333333333464 0 6.752404735808266 5.132455857362954 0.1201386670978422 6.714688609467094 10 0.6317843207119793 3.537607913852791 4.513888888889259 0 2.662840329048389 3.61111111111108 0 9.278312163512849 0 0.3774788113642323 1.452997697155757 5.069444444444581 0 6.752404735808254 5.138888888889034 0 6.632123429727089 8.459418542190036 0.1411378091608995 7.48431151330294 8.541666666666664 0 7.474092572295518 1.736111111111271 0 6.511842123645737 7.013888888888922 0 8.91746824526945 7.152777777778057 0 3.865653389860272 6.736111111111295 0 5.309029062834311 2.569444444444451 0 8.917468245269202 6.597222222222273 0 8.436343020944745 9.539352514941964 0 4.317509097276661 3.333333333333327 0.8846348105862194 9.83962492522506 6.597222222222613 0 2.18171510472379 0.1224438317631494 0 2.42796244569615 0.2513909734217306 0 2.497209020350055 0.1908120866018341 0.9116910703956098 9.898326276726547 0.2276925875162187 0.8624907236218067 9.770910866124108 0.2151572275711377 0.7741817940174165 9.872584589397562 0.26490775313165 0.8624907236218067 9.872584589397562 8.541666666667005 0 3.384528165535694 9.305555555555513 0 8.556624327026128 0.3638234195612016 0 2.419774804521129 10 0.3828321281741983 2.989419493699244 2.500000000000344 0 3.023684247291797 0.6073856115455647 0 4.590114915061887 7.986111111111253 0 5.790154287159082 0.1202813060811719 0 2.986111111111108 8.125000000000126 0 6.030716899321434 7.847222222222183 0 9.398593469594166 8.402777777777779 0 7.47409257229551 1.59722222222265 0 1.700589880398852 8.611111111111072 0 8.316061714863732 0 0.2142533638223458 9.703625163472083 0.1016737232734576 0.08829677629169845 9.809203138297086 0.1016737232734576 0.1259565875306473 9.691074578628088 0.2351278860191806 0.1397129976527625 9.766456799208093 0.133454162745723 0.2280097739444609 9.779007384052088 7.986111111111521 0 2.181715104723932 3.26388888888895 0 8.195780408782216 0.3465302370807504 0 5.348373607970943 5.20833333333356 0 5.068466450671874 10 0.7597075367108718 5.283604692688218 10 0.8785502996759462 5.211660729696218 10 0.3664514134126681 3.818516518545783 9.366247808141628 0 0.9789408320451057 8.680529022625461 0 7.474107142006504 6.180555555555634 0 7.955217796620031 7.708333333333345 0 8.195780408782504 9.51151089113484 0 7.475677076440778 3.402777777778158 0 2.422277716885985 7.15277777777789 0 6.271279511483714 1.87500000000034 0 2.903402941210598 2.847222222222333 0 7.233529960132828 2.569444444444599 0 6.511842123645781 9.701904627139168 0.9117032237083005 0.107372731398991 9.809910297049008 0.9117032237083005 0.1009665645215371 9.771779798795976 0.8626112373755772 0.2296541420747881 9.783623224888053 0.7743144610838777 0.128687577553251 4.722222222222459 0 4.948185144590667 2.986111111111155 0 8.436343020944552 3.472222222222411 0 5.669872981077626 0.2499464584353198 0 3.072067679863232 5.972222222222284 0 8.556624327025851 9.879718693918834 0 8.263888888888872 2.980747359843662 0 0.3311827156916851 3.125000000000189 0 5.790154287158781 5.069444444444598 0 6.511842123645918 8.472222222222214 0 7.594373878376684 3.541666666667144 0 0.7383701822660377 4.930555555555948 0 2.181715104723724 5.347222222222269 0 8.436343020944632 3.125000000000151 0 6.511842123645813 2.289028635880973 0 0.3330453212443663 9.657717788428435 0 2.582535527279414 5.555555555555991 0 1.099183349993201 7.291666666666702 0 8.917468245269459 3.333333333333707 0 2.542559022967153 5.555555555555955 0 2.06143379864257 2.777777777777938 0 6.391560817564621 10 0.8779596699427419 3.680405552864509 9.860683065743874 0.8779596699427419 3.747818214424368 9.859007586146044 0.8440989669606438 3.597899032057315 6.805555555555948 0 1.82087118648028 6.736111111111514 0 1.700589880399102 7.499999999999993 0 7.834936490539 4.932463764641119 0 0.5268320202020318 9.165988676969231 0 7.354110054380454 0.1202813060811708 0 8.263888888888879 0.5755776276657426 0.135230143550105 0.145124775261522 4.097222222222652 0 1.460028549651968 0.4201623098550099 0.1261110434261 0.1305089898709167 0.4948805918023184 0 0.1305089898709167 4.16666666666709 0 1.580308574317824 2.013888888889269 0 2.422277716885912 1.458333333333647 0 3.384528165535263 4.375000000000103 0 7.233529960132888 5.763888888888954 0 7.955217796619986 4.305629578943102 0 0.4292436748658201 4.236121685881072 0 0.5236747195705472 10 0.8779596699427419 3.819294441753398 10 0.7477509473418771 3.888694943649137 0 0.3877654745821292 6.180354328763077 9.3066509470193 0 0.4276111451139619 7.916666666667044 0 2.783121635129788 6.111111111111213 0 7.353811266214171 7.569444444444837 0 2.42227771688624 0.1202813060811732 0 4.513888888888886 4.236111111111159 0 8.195780408782264 4.16666666666671 0 8.316061714863434 3.819444444444587 0 6.752404735808188 1.944444444444474 0 8.797186939188 6.041666666666861 0 5.309029062834281 4.236111111111176 0 7.714655184457573 3.472222222222609 0 2.301996410804819 0.3187765372979958 0 0.2321827131443718 7.78490197928168 0 0.6264891899419209 4.652777777777823 0 8.436343020944619 0 0.8753524277156527 3.541065415880247 0.142712474566713 0.8569145100782298 3.610893758905849 10 0.8753524277156527 3.541065415880247 0.2522848884464278 0 4.426212087551988 9.869290279817683 0 8.42209763012643 5.277777777777984 0 5.42931036891539 4.097222222222424 0 5.309029062834138 0.3047332191039269 0.1261110434261 9.898326276726547 0.1907902237910895 0.08849287574115686 9.898326276726547 0.2225706632633549 0.2282058733939193 9.868130522481547 4.652777777777773 0 9.398593469593973 6.736111111111118 0 9.398593469594124 2.430555555555629 0 7.95521779661984 0.5543264874807461 0 3.498422430421826 3.194444444444434 0.8797186939188282 9.879718693918797 7.363066825207792 0 0.4275756227971038 8.68048405710806 0 4.587382505995511 10 0.7533120976583947 3.610359857633648 9.685077696173742 0 9.783741147698525 9.579485052889572 0.1260074193861352 9.885414870971983 9.379059719545525 0 8.91689164611749 3.263888888889353 0 0.9791637028518965 0.6307681299241181 0 0.1105343867429153 8.124999999999968 0 8.917468245269513 9.899033435478465 0.874071484052638 0.3038177759975285 9.899033435478465 0.9115375583752328 0.1900489655990079 10 0.7856090424278708 0.2919336125534622 9.872746363317511 0.77414879575081 0.2177699786307218 7.291666666667042 0 2.662840329048572 0.2522258729119631 0 8.35265318568189 8.95844953525215 0 9.398574783510593 1.94444444444463 0 5.910435593239892 3.958333333333702 0 2.662840329048358 1.041666666666679 0 9.398593469593862 1.180555555555568 0 9.398593469593886 9.759437387837652 0 9.898326276726543 1.458333333333376 0 8.676905633106808 10 0.1256954443457114 0.3460957625835689 10 0.08824456309863175 0.2280037999802934 9.899033435478465 0 0.2398554534104259 1.18062803808981 0 4.106174154211778 3.333333333333569 0 4.948185144590592 5.902777777777862 0 7.714655184457659 0.1016737232734552 0 0.240562612162344 0 0.08824456309863175 0.2280037999802934 0 0.1256954443457114 0.3460957625835689 1.875000000000397 0 2.181715104723557 0.09610811528686625 0.279557957800019 9.910876861570541 0 0.2788240702195435 9.811401756410596 0.0891165005176319 0.1767896520328553 9.910876861570541 4.027777777778216 0 1.339751668055876 0.1016737232734576 0.9115071242588428 9.809209776208913 0 0.9115071242588428 9.771994610593477 0.1260188642427612 0.8624907236218067 9.733695700508672 0.1260188642427612 0.7739978478806495 9.78346808887993 2.291666666666754 0 7.714655184457488 1.388888888889297 0 2.061433798642355 6.388888888889012 0 6.391560817564832 7.986111111111185 0 6.511842123646111 9.405535070263017 0 4.476201582807937 9.448669132438656 0 4.379711680666098 0.2981105977598367 0.9116910703956098 0.1073727313989635 5.277777777777845 0 7.353811266214093 3.125000000000353 0 2.903402941210658 7.708333333333551 0 4.827903838509687 0.3319500754088819 0 3.870859430322795 3.888888888889205 0 3.504809471616548 6.111111111111363 0 3.985934695941397 8.680555555555548 0 0.1202813060811762 8.611232277790165 0.1341649984125234 0.1344009268523018 2.291666666666778 0 7.233529960132791 3.81944444444485 0 1.941152492561321 4.583387699950871 0 0.8594479975334944 0.5557155242791337 0 3.989651337650708 1.597222222222243 0 9.398593469593891 1.73611111111113 0 9.398593469593891 0.5700931661708809 0 0.241043376613832 4.375000000000405 0 1.941152492561352 2.777777777778151 0 2.542559022967123 1.041739149200922 0 4.106174154211771 3.680555555555961 0 1.941152492561315 9.447260002045656 0 8.791173741127444 8.124999999999984 0 8.436343020944857 0.09364309869122645 0 3.958333333333328 0 0.1202813060811714 3.958333333333329 0.1373554872729677 0.143985364553999 3.889068230745453 4.722222222222644 0 1.580308574317853 4.791666666667094 0 1.460027268236685 7.152777777777819 0 6.992967347970753 0.6285122163534991 0 3.145993332429802 0.2405626121623464 0 9.898326276726547 2.708333333333298 0 9.398593469593921 2.291666666666715 0 9.398593469594012 7.70833333333343 0 6.27127951148375 4.375000000000357 0 2.903402941210723 0 0.7853960808327434 9.707824003651895 0 0.8738889565739005 9.658051615280637 9.389192615493023 0 3.399457952512051 1.180555555555984 0 1.700589880398829 8.542522584253522 0 0.1175468903934225 8.333323319562979 0 4.948190926044115 10 0.3880187229898006 6.319526766859334 2.847222222222659 0 1.46002726823658 10 0.2549172525352129 9.444443286509934 10 0.1289606650045655 9.37391720683061 10 0.1259565875306473 9.514970524123761 9.856474903991629 0.1326241255232359 9.421452723534088 0 0.3862503241999403 6.458813541948251 5.06944444444448 0 8.917468245269298 8.68055555555553 0 7.955217796620216 10 0.9115375583752328 0.2279712899663596 10 0.874071484052638 0.3417401003648802 0 0.874071484052638 0.3417401003648802 0 0.9115375583752328 0.2279712899663596 9.618314737299105 0 2.327139870444578 9.654039062302999 0 2.450720251827272 4.097222222222616 0 2.18171510472368 0.3141058562235159 0 9.784166639557853 3.750000000000129 0 7.113248654051699 9.908795366082721 0 9.370995711620756 0 0.1259565875306473 9.653859413012652 0 0.08829677629169845 9.77198797268165 0.1016737232734576 0 9.759437387837655 9.898326276726543 0 9.759437387837652 10 0.08829677629169845 9.77198797268165 10 0.1259565875306473 9.653859413012652 3.194444444444915 0 0.8594862250937554 10 0.4963743059109815 7.635459663351227 7.152777777777931 0 5.790154287159025 0 0.7533120976583947 3.610359857633648 0 0.8779596699427419 3.680405552864509 8.611967028697972 0 0.2378281964745987 3.958333333333739 0 1.941152492561329 7.083333333333551 0 4.707622532428468 9.749008973736515 0 8.35265318568198 5.416666666666726 0 7.594373878376437 9.874208715633188 0.1259565875306473 9.571661410365813 9.772534992359731 0 9.677239385190813 9.364908088537579 0 1.937288829591863 0.4258932214855865 0 7.102502510553007 7.15277777777799 0 4.827903838509645 7.986111111111494 0 2.662840329048624 9.441763025972111 0 5.42527425320101 7.847222222222593 0 2.903402941210955 0 0.1236663449889449 3.818735633263866 0 0.2439476510701162 3.888180077708309 9.874208715633188 0 9.501135330686489 1.31944444444472 0 4.10621600202229 0.227465007640236 0 9.677239385190756 9.64786253055831 0 9.885414870971983 3.5416666666671 0 1.460036602105501 3.402777777778212 0 1.460060133498175 0 0.6313245069432236 4.80156581430731 2.430555555555665 0 7.233529960132801 9.368312689795125 0 6.996295486680288 9.341960141129576 0 4.598578149497415 10 0.2132967762916983 9.910876861570541 10 0.315527293927845 9.900524894840055 1.594960716774332 0 0.1051434812376058 1.666906948804229 0.1365741920238815 0.1380771089897715 1.180555555555805 0 4.587341226346968 1.111111111111367 0 4.467059920265794 9.910876861570543 0.7204725535359706 0.09607770356021565 1.875000000000238 0 4.827903838509343 10 0.7203068882029029 0.1851601046376865 9.910876861570543 0.8232407820835332 0.0890824010774708 4.440691349879064 0.8693733944043645 9.869264186854402 1.733762473252841 0 0.1092792372250432 1.662056523360508 0 0.214422718462649 3.055555555555717 0 6.391560817564636 0.1234567733521121 0.8779596699427419 3.749025437951585 1.112272309668109 0 5.42863995061582 1.042827865223659 0 5.548921256696989 6.042522584253512 0 0.1175468903934088 6.121295394272217 0.132504230375552 0.1325042303755533 7.013888888889138 0 4.106216002022604 0.08913836332837655 0.7204298888872883 9.903891884713131 9.376051457863539 0 0.5222191410274266 0 0.7202459427505215 9.814775384195499 0.08913836332837655 0.8231981946544527 9.910883499482368 10 0.8738889565739005 9.658051615280637 10 0.9115071242588428 9.771994610593477 10 0.1301253765027281 8.958374949596728 9.876576056540632 0 8.959859625206761 9.868717697048954 0.1491226182518225 8.88640889533835 3.680555555555737 0 5.790154287158808 8.680555555555481 0 8.917468245269578 0.3306368338021733 0 3.621047958260666 0.1166788895280949 0 0.347810745733455 10 0.3164838814584924 9.693273196741597 2.777777777778098 0 3.504809471616499 0.2170998720433385 0 3.888064329531515 0.1234567733521121 0 3.818619885087073 0 0.3164838814584924 9.693273196741597 6.111967028697959 0 0.237828196474583 6.180555555555551 0 0.1202813060811743 5.069444444444848 0 1.941152492561384 7.430555555555885 0 3.384528165535607 0.240562612162344 0 0.1016737232734552 0.3513210218389472 0 9.885840362831306 0 0.2132445630986316 0.0891149110914046 1.180646721873813 0 7.955165161721404 0 0.3155273711474473 0.09947879287345406 0 0.315527293927845 9.900524894840055 0 0.2132967762916983 9.910876861570541 10 0.7865375583752323 0.0890824010774708 10 0.6837693298276697 0.09607770356021565 0 0.6837693298276697 0.09607770356021565 0 0.7865375583752323 0.0890824010774708 0.08913836332837655 0.72046040022328 0.09607770356021565 0 0.7865071242588424 9.910883499482368 0 0.6837388184916781 9.903891884713131 10 0.6837388184916781 9.903891884713131 5.138888888889246 0 2.783121635129595 0 0.3162228154931588 0.3066856665681342 0 0.4406641031685345 0.2775414510253422 4.166666666666655 0 9.278312163512815 0.1234567733521121 0.1236663449889449 3.748466629462053 10 0.7865071242588424 9.910883499482368 9.785716476635127 0 8.890415180762311 9.909140420094495 0 8.819444444444429 1.388888888889351 0 1.099183349992982 2.986111111111246 0 6.752404735808151 9.783004081715909 0 9.427686597862808 9.323059989383642 0 3.277264567223624 6.250000000000409 0 1.82087118648025 6.944460955200833 0 0.6205253686640994 0 0.3880187229898006 6.319526766859334 1.180624061495248 0 6.030710714300938 3.680555555555778 0 5.06846645067178 0 0.1224998024324479 3.541090416328754 0.09066618636971835 0 3.545445091160555 0.1397908486635772 0.1331399227578763 3.598929538557613 4.930555555555997 0 0.9789020439120099 6.11111111111153 0 1.580308574317904 3.402777777778065 0 4.106216002022391 10 0.682627775065579 9.700832388882658 7.995608450849828 0 0.312217979537499 0.1234567733521121 0 3.679730996198184 0.2141229597218304 0 3.614064976247631 0 0.1236663449889449 3.679846744374977 10 0.5060491504967073 2.923146984856536 0.9722222222224064 0 6.63212342972684 9.371025817998268 0 3.627385272746799 10 0.1243189231666929 8.81944789393669 4.791666666666842 0 6.030716899321206 4.583333333333522 0 5.669872981077676 8.819320079331293 0 6.993038401119079 9.43619074591459 0 0.627618929096039 9.876351263864814 0 0.3520324163238162 10 0.254444299669421 8.888933954644539 6.666666666666735 0 7.35381126621421 9.67928748639023 0 4.893502513276607 9.769962818868475 0 5.008358451831832 1.875000000000288 0 3.865653389859978 6.388888888889092 0 4.948185144590783 0 0.682627775065579 9.700832388882658 5.763888888889067 0 5.790154287158931 6.944444444444479 0 7.834936490538927 9.487656586684878 0 5.77000979185944 3.402777777778039 0 4.58734122634708 10 0.6828408138803082 0.2989289150362071 0 0.2461661474213928 3.609826049592623 0.5456729089132684 0 5.07991041100523 0 0.8697912773991351 3.958289390784624 0.1402203441090819 0.8677447633322468 3.900898839508112 9.896705395316319 0 1.039799964656717 10 0.1241526465320646 1.039778055787364 9.867992134528263 0.1320990691410974 1.113984227108081 2.566156351443293 0 0.9858725832049722 4.166666666667151 0 0.6180581256684509 3.055555555555544 0.8706043782417252 9.870321469355137 4.097222222222293 0 7.714655184457564 0 0.8779596699427419 3.819294441753398 5.000000000000068 0 7.353811266214079 7.70833333333336 0 7.23352996013312 0.6276093712235193 0 4.345272093006435 0 0.7477509473418771 3.888694943649137 7.43055555555574 0 5.309029062834356 1.041757832984925 0 7.95516516172139 5.763888888888911 0 8.917468245269337 0.3559917029134294 0 0.1305089898709167 5.972222222222678 0 0.8586207378308381 0.1257912843667784 0 9.64002421957532 9.874208715633188 0 9.64002421957538 7.222222222222426 0 4.948185144590823 9.667400773872973 0 9.422896710674818 8.819444444444422 0 7.955217796620226 5.63276355292081 0 0.5208061225798003 3.333333333333654 0 3.504809471616524 9.372507056606754 0 8.437782322484082 9.38861733709877 0 2.166066908995172 8.333333333333341 0 7.353811266214331 3.81944444444444 0 0.1202813060811718 3.888888888888887 0.1245435926373405 0.1243403545367528 0.9027777777777761 0 9.879718693918745 0.8333333333333244 0.1228055301980583 9.877457101955372 3.958333333333332 0 0.1202813060811742 8.333881348834131 0 0.6227220864911214 3.472222222222502 0 4.226497308103568 4.444444444444469 0 8.79718693918811 8.263888888889204 0 3.865653389860363 0.4015241430415397 0 9.034395582871721 5.48611111111149 0 2.422277716886085 7.432346340144972 0 0.3277965934529696 10 0.123014020590719 1.178241531693285 10 0.2471666671227836 1.106908476369538 0.7638888888888697 0 9.879718693918658 2.500000000000401 0 2.06143379864242 4.863048636907652 0 0.4271342164236459 0.6753526941841921 0 6.140002518867178 10 0.6146653013333854 8.114459159469012 0.9027777777778709 0 7.714655184457374 9.881042876086408 0 1.177365059565226 9.374157225222255 0 9.881282804127125 9.441776074823167 0.1237371034043149 9.876476268272871 9.777748271402727 0 1.106053913110832 0.6753306589173261 0 8.071627930213225 4.375000000000027 0 8.676905633106948 9.394782398147314 0 7.952223838016516 0.9128446431872029 0 5.064333881098908 3.888888888888888 0 0.240562612162346 0.6072202455217079 0 0.9728130484476181 9.508973641669417 0 9.885414870971983 0.8333333333333124 0 9.759437387837401 9.389825011082861 0 1.47095701888486 0.7726790459796655 0 1.943547122382589 3.263888888888862 0 9.639156081756397 9.438686422447235 0 9.766697675099106 0 0 2.083333333333332 9.6705842204757 0 8.90799545229552 0.6742206847667476 0 4.711902742321224 10 0.1267193059305197 5.626236867831398 10 0 5.694444444444438 9.86530710880167 0 5.617881087060759 0 0 9.027777777777768 0 0 5.416666666666661 6.18055555555597 0 1.700589880399076 7.152777777777769 0 0.1202813060811718 0 0 2.36111111111111 0 0 2.638888888888887 0 0 8.472222222222211 0 0.128963749295999 8.540741173464863 0.1319445668307923 0 8.560986519015223 10 0 4.305555555555552 9.869290279817683 0 8.560986519015319 10 0 8.472222222222211 10 0.128963749295999 8.540741173464863 0 0 5.694444444444438 10 0.8766300232793212 7.15290120173316 0 0 1.527777777777778 10 0 9.027777777777768 10 0 2.36111111111111 10 0 3.194444444444442 0 0 0.4166666666666666 10 0.1274886664494017 5.213474645386763 9.871869455591288 0 5.217447995441866 9.871869455591288 0 5.078559106552976 10 0 5.138888888888884 9.876351263864814 0 0.4909213052127052 10 0.1256954443457114 0.4849846514724579 10 0 0.4166666666666666 10 0.1232802177586016 7.568914817512063 10 0 7.63888888888888 9.867565394216129 0 7.558281351042938 10 0 6.249999999999993 10 0 7.083333333333325 9.867359704670188 0 7.160931121138276 10 0.1219240275832402 7.153780071806741 0 0.8777304022929238 8.537857834172184 10 0 3.749999999999996 0 0 6.249999999999993 0 0 5.138888888888884 0 0 3.194444444444442 0 0 4.305555555555552 10 0.8780704976172594 5.625600447409266 0 0 1.25 0 0 3.749999999999996 0 0 7.083333333333325 0 0 6.527777777777771 0 0 9.583333333333329 10 0 2.083333333333332 10 0 6.527777777777771 10 0 9.583333333333329 0 0 0.6944444444444444 10 0 4.027777777777774 0 0 7.916666666666657 0 0 0.9722222222222221 7.291866380770302 0 0.1149397308885625 10 0 1.805555555555554 10 0 1.25 0 0 6.805555555555548 0 0.874428163502075 1.178006059448569 10 0 6.805555555555548 10 0 1.527777777777778 0 0.8797186939188282 3.263888888888886 10 0.8797186939188282 7.569444444444437 0 0 4.861111111111105 10 0 2.916666666666664 9.652138876679736 0 0.107372731398991 10 0 2.638888888888887 10 0 7.916666666666657 0 0 5.972222222222215 0 0 7.63888888888888 10 0 5.972222222222215 10 0 3.472222222222219 0 0 1.805555555555554 9.519816045370003 0 8.910878448056444 0 0.9115375583752328 0.0890824010774708 10 0.9115375583752328 0.0890824010774708 10 0.08824456309863175 0.0891149110914046 9.899033435478465 0 0.1009665645215371 10 0.9115071242588428 9.910883499482368 0 0.9115071242588428 9.910883499482368 0 0.08829677629169845 9.910876861570541 0.1016737232734576 0 9.898326276726547 0.1016737232734552 0 0.1016737232734552 0 0.08824456309863175 0.0891149110914046 9.898326276726543 0 9.898326276726543 10 0.08829677629169845 9.910876861570541 10 0 8.194444444444436 0 0 8.194444444444436 10 0 0.9722222222222221 0 0 7.361111111111103 10 0 0.6944444444444444 10 0.1263935190958826 0.6259153536882848 9.903906485589896 0 0.625 0 0 2.916666666666664 10 0.3155273711474473 0.09947879287345406 0 0.8774155417899101 1.039564031638853 10 0 4.583333333333329 0 0 9.305555555555546 10 0 9.305555555555546 0 0 4.583333333333329 0 0.8753524277156527 3.402176526991358 9.907311489483501 0 5.486111111111105 10 0.1292899076599623 5.490079636334945 10 0 5.416666666666661 10 0.1292899076599623 5.351190747446058 9.907311489483501 0 5.347222222222216 10 0 4.861111111111105 0 0 4.027777777777774 10 0.8762481677863287 7.43062280707098 10 0.8762481677863287 7.291733918182093 0 0 3.472222222222219 0 0.8777391366462515 8.680445142179904 9.907375434766092 0 7.430555555555545 10 0 7.361111111111103 9.907375434766092 0 7.291666666666657 10 0.1234989187098336 7.291918130610072 10 0.1234989187098336 7.43080701949896 10 0.8811572370349254 5.488610629658661 0 0.1243189231666929 8.680559005047801 0 0 8.749999999999989 0.09392855693056865 0 8.680555555555539 9.760144546589576 0 0.1009665645215371 0 0 0.1388888888888888 10 0 8.749999999999989 9.909140420094495 0 8.680555555555539 10 0.1243189231666929 8.680559005047801 10 0 0.1388888888888888 10 0.2132445630986316 0.0891149110914046 10 0 9.861111111111111 0 0 9.861111111111111 4.264619825408491 0.6825778775760725 7.91733197516888 4.20753531934205 0.154092269083178 5.875598415196126 3.17928710120985 0.6845505559336172 5.012582241399826 2.576635525190682 0.8651726751175099 3.320421818731057 2.146653759504406 0 0.5382552962344318 7.291666666666674 0.1507201646090544 9.478781006981599 4.463416563260233 0.3160243727346807 3.179456400536693 0.7577143106509727 0.8444665647234777 5.145856422765222 0.7643736132613452 0.1542793008703239 4.002900511409302 3.043169862489542 0.6880590571983638 4.934086688860082 9.541771407833954 0.370576462395826 7.816292093895745 3.113324212510694 0.7545797307577568 8.736512057295581 2.620374275918131 0.1799860256988958 7.063144236595688 9.418387214149559 0.8488018258454614 6.846822975979153 9.139716346549584 0.2949755027312423 2.196752188679113 3.224235298752454 0.5299218310734091 7.401757974567827 4.326542892125626 0.2692823142854299 1.467407308707553 5.183035688531051 0.4969839878910106 4.852251633766434 4.911737444798046 0.2459596061677403 1.774264527279891 7.439589026525169 0.2731571733284319 5.738795926982979 4.626069632242521 0.8235596707818933 8.149520543739186 9.62156581468782 0.1244219398421221 0.6311361590592046 4.765184664858047 0.5352998946774329 0.9744342226772933 1.275758167843644 0.4326876406916692 2.407168942841392 6.388888888889224 0.25 0.5637780159856871 4.337158664052639 0.280982726910128 4.37911529978141 8.888896211156043 0.25 0.5637944569512289 0.2556799377666867 0.1938966943124366 1.661184608734184 1.900708210361268 0.7568934176383173 1.541759633626119 4.315884778999523 0.513615446901319 9.70075868198596 7.826699713774068 0.8625367109665232 3.173278267825333 3.819444444444686 0.1245435926373405 0.4333694173709673 $EndNodes $Elements 4 26864 1 26864 2 4 9 3048 1 3 1590 43 1602 1603 1604 2 114 1590 3 1605 1602 1606 3 9 1591 4 1607 1608 1609 4 4 1591 79 1608 1610 1611 5 78 1589 7 1612 1613 1614 6 7 1589 148 1613 1615 1616 7 8 1592 44 1617 1618 1619 8 113 1592 8 1620 1617 1621 9 10 1514 9 1622 1623 1624 10 1514 1591 9 1625 1607 1623 11 11 1542 10 1626 1627 1628 12 10 1542 1514 1627 1629 1622 13 12 198 11 1630 1631 1632 14 198 1542 11 1633 1626 1631 15 13 1221 12 1634 1635 1636 16 12 1221 198 1635 1637 1630 17 14 169 13 1638 1639 1640 18 169 1221 13 1641 1634 1639 19 15 1507 14 1642 1643 1644 20 14 1507 169 1643 1645 1638 21 16 195 15 1646 1647 1648 22 195 1507 15 1649 1642 1647 23 17 1178 16 1650 1651 1652 24 16 1178 195 1651 1653 1646 25 18 164 17 1654 1655 1656 26 164 1178 17 1657 1650 1655 27 19 1176 18 1658 1659 1660 28 18 1176 164 1659 1661 1654 29 20 191 19 1662 1663 1664 30 191 1176 19 1665 1658 1663 31 21 1588 20 1666 1667 1668 32 20 1588 191 1667 1669 1662 33 22 153 21 1670 1671 1672 34 153 1588 21 1673 1666 1671 35 23 1578 22 1674 1675 1676 36 22 1578 153 1675 1677 1670 37 24 184 23 1678 1679 1680 38 184 1578 23 1681 1674 1679 39 25 1274 24 1682 1683 1684 40 24 1274 184 1683 1685 1678 41 26 1165 25 1686 1687 1688 42 1165 1274 25 1689 1682 1687 43 27 149 26 1690 1691 1692 44 149 1165 26 1693 1686 1691 45 28 1238 27 1694 1695 1696 46 27 1238 149 1695 1697 1690 47 29 1124 28 1698 1699 1700 48 1124 1238 28 1701 1694 1699 49 30 183 29 1702 1703 1704 50 183 1124 29 1705 1698 1703 51 31 1240 30 1706 1707 1708 52 30 1240 183 1707 1709 1702 53 32 158 31 1710 1711 1712 54 158 1240 31 1713 1706 1711 55 33 1273 32 1714 1715 1716 56 32 1273 158 1715 1717 1710 57 34 196 33 1718 1719 1720 58 196 1273 33 1721 1714 1719 59 35 1099 34 1722 1723 1724 60 34 1099 196 1723 1725 1718 61 36 166 35 1726 1727 1728 62 166 1099 35 1729 1722 1727 63 37 1248 36 1730 1731 1732 64 36 1248 166 1731 1733 1726 65 38 1196 37 1734 1735 1736 66 1196 1248 37 1737 1730 1735 67 39 175 38 1738 1739 1740 68 175 1196 38 1741 1734 1739 69 40 1577 39 1742 1743 1744 70 39 1577 175 1743 1745 1738 71 41 197 40 1746 1747 1748 72 197 1577 40 1749 1742 1747 73 42 1580 41 1750 1751 1752 74 41 1580 197 1751 1753 1746 75 43 206 42 1754 1755 1756 76 206 1580 42 1757 1750 1755 77 43 1590 206 1603 1758 1754 78 44 1513 45 1759 1760 1761 79 44 1592 1513 1618 1762 1759 80 45 1543 46 1763 1764 1765 81 1513 1543 45 1766 1763 1760 82 46 202 47 1767 1768 1769 83 46 1543 202 1764 1770 1767 84 47 1186 48 1771 1772 1773 85 202 1186 47 1774 1771 1768 86 48 170 49 1775 1776 1777 87 48 1186 170 1772 1778 1775 88 49 1168 50 1779 1780 1781 89 170 1168 49 1782 1779 1776 90 50 200 51 1783 1784 1785 91 50 1168 200 1780 1786 1783 92 51 1166 52 1787 1788 1789 93 200 1166 51 1790 1787 1784 94 52 162 53 1791 1792 1793 95 52 1166 162 1788 1794 1791 96 53 1211 54 1795 1796 1797 97 162 1211 53 1798 1795 1792 98 54 186 55 1799 1800 1801 99 54 1211 186 1796 1802 1799 100 55 1167 56 1803 1804 1805 101 186 1167 55 1806 1803 1800 102 56 154 57 1807 1808 1809 103 56 1167 154 1804 1810 1807 104 57 1148 58 1811 1812 1813 105 154 1148 57 1814 1811 1808 106 58 179 59 1815 1816 1817 107 58 1148 179 1812 1818 1815 108 59 1253 60 1819 1820 1821 109 179 1253 59 1822 1819 1816 110 60 1529 61 1823 1824 1825 111 1253 1529 60 1826 1823 1820 112 61 152 62 1827 1828 1829 113 61 1529 152 1824 1830 1827 114 62 1582 63 1831 1832 1833 115 152 1582 62 1834 1831 1828 116 63 944 64 1835 1836 1837 117 63 1582 944 1832 1838 1835 118 64 181 65 1839 1840 1841 119 64 944 181 1836 1842 1839 120 65 1163 66 1843 1844 1845 121 181 1163 65 1846 1843 1840 122 66 160 67 1847 1848 1849 123 66 1163 160 1844 1850 1847 124 67 1262 68 1851 1852 1853 125 160 1262 67 1854 1851 1848 126 68 192 69 1855 1856 1857 127 68 1262 192 1852 1858 1855 128 69 1583 70 1859 1860 1861 129 192 1583 69 1862 1859 1856 130 70 168 71 1863 1864 1865 131 70 1583 168 1860 1866 1863 132 71 1263 72 1867 1868 1869 133 168 1263 71 1870 1867 1864 134 72 1288 73 1871 1872 1873 135 1263 1288 72 1874 1871 1868 136 73 172 74 1875 1876 1877 137 73 1288 172 1872 1878 1875 138 74 1586 75 1879 1880 1881 139 172 1586 74 1882 1879 1876 140 75 178 76 1883 1884 1885 141 75 1586 178 1880 1886 1883 142 76 1579 77 1887 1888 1889 143 178 1579 76 1890 1887 1884 144 77 205 78 1891 1892 1893 145 77 1579 205 1888 1894 1891 146 205 1589 78 1895 1612 1892 147 79 207 80 1896 1897 1898 148 79 1591 207 1610 1899 1896 149 80 1201 81 1900 1901 1902 150 207 1201 80 1903 1900 1897 151 81 177 82 1904 1905 1906 152 81 1201 177 1901 1907 1904 153 82 1537 83 1908 1909 1910 154 177 1537 82 1911 1908 1905 155 83 1572 84 1912 1913 1914 156 1537 1572 83 1915 1912 1909 157 84 173 85 1916 1917 1918 158 84 1572 173 1913 1919 1916 159 85 1224 86 1920 1921 1922 160 173 1224 85 1923 1920 1917 161 86 1222 87 1924 1925 1926 162 86 1224 1222 1921 1927 1924 163 87 161 88 1928 1929 1930 164 87 1222 161 1925 1931 1928 165 88 1182 89 1932 1933 1934 166 161 1182 88 1935 1932 1929 167 89 190 90 1936 1937 1938 168 89 1182 190 1933 1939 1936 169 90 1228 91 1940 1941 1942 170 190 1228 90 1943 1940 1937 171 91 156 92 1944 1945 1946 172 91 1228 156 1941 1947 1944 173 92 1151 93 1948 1949 1950 174 156 1151 92 1951 1948 1945 175 93 187 94 1952 1953 1954 176 93 1151 187 1949 1955 1952 177 94 1249 95 1956 1957 1958 178 187 1249 94 1959 1956 1953 179 95 1187 96 1960 1961 1962 180 95 1249 1187 1957 1963 1960 181 96 151 97 1964 1965 1966 182 96 1187 151 1961 1967 1964 183 97 1574 98 1968 1969 1970 184 151 1574 97 1971 1968 1965 185 98 1539 99 1972 1973 1974 186 98 1574 1539 1969 1975 1972 187 99 182 100 1976 1977 1978 188 99 1539 182 1973 1979 1976 189 100 1232 101 1980 1981 1982 190 182 1232 100 1983 1980 1977 191 101 159 102 1984 1985 1986 192 101 1232 159 1981 1987 1984 193 102 1271 103 1988 1989 1990 194 159 1271 102 1991 1988 1985 195 103 199 104 1992 1993 1994 196 103 1271 199 1989 1995 1992 197 104 1100 105 1996 1997 1998 198 199 1100 104 1999 1996 1993 199 105 167 106 2000 2001 2002 200 105 1100 167 1997 2003 2000 201 106 1573 107 2004 2005 2006 202 167 1573 106 2007 2004 2001 203 107 1538 108 2008 2009 2010 204 107 1573 1538 2005 2011 2008 205 108 176 109 2012 2013 2014 206 108 1538 176 2009 2015 2012 207 109 1173 110 2016 2017 2018 208 176 1173 109 2019 2016 2013 209 110 194 111 2020 2021 2022 210 110 1173 194 2017 2023 2020 211 111 1326 112 2024 2025 2026 212 194 1326 111 2027 2024 2021 213 112 204 113 2028 2029 2030 214 112 1326 204 2025 2031 2028 215 204 1592 113 2032 1620 2029 216 115 1511 114 2033 2034 2035 217 1511 1590 114 2036 1605 2034 218 116 992 115 2037 2038 2039 219 992 1511 115 2040 2033 2038 220 117 203 116 2041 2042 2043 221 203 992 116 2044 2037 2042 222 118 1192 117 2045 2046 2047 223 117 1192 203 2046 2048 2041 224 119 171 118 2049 2050 2051 225 171 1192 118 2052 2045 2050 226 120 1169 119 2053 2054 2055 227 119 1169 171 2054 2056 2049 228 121 201 120 2057 2058 2059 229 201 1169 120 2060 2053 2058 230 122 1420 121 2061 2062 2063 231 121 1420 201 2062 2064 2057 232 123 163 122 2065 2066 2067 233 163 1420 122 2068 2061 2066 234 124 1202 123 2069 2070 2071 235 123 1202 163 2070 2072 2065 236 125 188 124 2073 2074 2075 237 188 1202 124 2076 2069 2074 238 126 1193 125 2077 2078 2079 239 125 1193 188 2078 2080 2073 240 127 155 126 2081 2082 2083 241 155 1193 126 2084 2077 2082 242 128 1158 127 2085 2086 2087 243 127 1158 155 2086 2088 2081 244 129 180 128 2089 2090 2091 245 180 1158 128 2092 2085 2090 246 130 1303 129 2093 2094 2095 247 129 1303 180 2094 2096 2089 248 131 1360 130 2097 2098 2099 249 130 1360 1303 2098 2100 2093 250 132 150 131 2101 2102 2103 251 150 1360 131 2104 2097 2102 252 133 1383 132 2105 2106 2107 253 132 1383 150 2106 2108 2101 254 134 959 133 2109 2110 2111 255 959 1383 133 2112 2105 2110 256 135 189 134 2113 2114 2115 257 189 959 134 2116 2109 2114 258 136 1241 135 2117 2118 2119 259 135 1241 189 2118 2120 2113 260 137 157 136 2121 2122 2123 261 157 1241 136 2124 2117 2122 262 138 1225 137 2125 2126 2127 263 137 1225 157 2126 2128 2121 264 139 185 138 2129 2130 2131 265 185 1225 138 2132 2125 2130 266 140 208 139 2133 2134 2135 267 139 208 185 2134 2136 2129 268 141 165 140 2137 2138 2139 269 165 208 140 2140 2133 2138 270 142 1479 141 2141 2142 2143 271 141 1479 165 2142 2144 2137 272 143 1497 142 2145 2146 2147 273 142 1497 1479 2146 2148 2141 274 144 174 143 2149 2150 2151 275 174 1497 143 2152 2145 2150 276 145 1199 144 2153 2154 2155 277 144 1199 174 2154 2156 2149 278 146 193 145 2157 2158 2159 279 193 1199 145 2160 2153 2158 280 147 1506 146 2161 2162 2163 281 146 1506 193 2162 2164 2157 282 148 1510 147 2165 2166 2167 283 147 1510 1506 2166 2168 2161 284 148 1589 1510 1615 2169 2165 285 149 1517 1165 2170 2171 1693 286 1238 1285 149 2172 2173 1697 287 1285 1517 149 2174 2170 2173 288 961 1074 150 2175 2176 2177 289 150 1383 961 2108 2178 2177 290 1074 1360 150 2179 2104 2176 291 1187 1556 151 2180 2181 1967 292 151 1556 1535 2181 2182 2183 293 1535 1574 151 2184 1971 2183 294 152 1171 933 2185 2186 2187 295 933 1582 152 2188 1834 2187 296 152 1172 1171 2189 2190 2185 297 152 1529 1172 1830 2191 2189 298 153 1140 1139 2192 2193 2194 299 1139 1141 153 2195 2196 2194 300 153 1578 1140 1677 2197 2192 301 1141 1588 153 2198 1673 2196 302 154 1581 943 2199 2200 2201 303 943 1587 154 2202 2203 2201 304 154 1587 1148 2203 2204 1814 305 1167 1581 154 2205 2199 1810 306 155 1159 960 2206 2207 2208 307 960 1193 155 2209 2084 2208 308 1158 1159 155 2210 2206 2088 309 156 1562 1151 2211 2212 1951 310 1228 1563 156 2213 2214 1947 311 156 1563 1562 2214 2215 2211 312 963 1241 157 2216 2124 2217 313 157 1425 963 2218 2219 2217 314 1225 1425 157 2220 2218 2128 315 158 1273 932 1717 2221 2222 316 932 1522 158 2223 2224 2222 317 158 1522 1240 2224 2225 1713 318 1232 1557 159 2226 2227 1987 319 159 1555 1271 2228 2229 1991 320 159 1557 1555 2227 2230 2228 321 934 1262 160 2231 1854 2232 322 160 1523 934 2233 2234 2232 323 1163 1523 160 2235 2233 1850 324 161 1536 1182 2236 2237 1935 325 1222 1223 161 2238 2239 1931 326 1223 1536 161 2240 2236 2239 327 1166 1531 162 2241 2242 1794 328 162 1212 1211 2243 2244 1798 329 162 1531 1212 2242 2245 2243 330 1202 1203 163 2246 2247 2072 331 1203 1503 163 2248 2249 2247 332 163 1503 1420 2249 2250 2068 333 164 1176 931 1661 2251 2252 334 931 1177 164 2253 2254 2252 335 1177 1178 164 2255 1657 2254 336 165 1441 208 2256 2257 2140 337 165 1501 1441 2258 2259 2256 338 1479 1501 165 2260 2258 2144 339 166 1601 1099 2261 2262 1729 340 1248 1532 166 2263 2264 1733 341 1532 1601 166 2265 2261 2264 342 1100 1551 167 2266 2267 2003 343 167 1551 1534 2267 2268 2269 344 1534 1573 167 2270 2007 2269 345 942 1477 168 2271 2272 2273 346 168 1583 942 1866 2274 2273 347 168 1533 1263 2275 2276 1870 348 1477 1533 168 2277 2275 2272 349 924 1221 169 2278 1641 2279 350 169 1515 924 2280 2281 2279 351 1507 1515 169 2282 2280 1645 352 170 1186 916 1778 2283 2284 353 916 1547 170 2285 2286 2284 354 170 1547 1168 2286 2287 1782 355 949 1024 171 2288 2289 2290 356 171 1169 949 2056 2291 2290 357 1024 1192 171 2292 2052 2289 358 970 976 172 2293 2294 2295 359 172 1518 970 2296 2297 2295 360 976 1586 172 2298 1882 2294 361 1288 1518 172 2299 2296 1878 362 173 1566 1224 2300 2301 1923 363 1541 1566 173 2302 2300 2303 364 173 1572 1541 1919 2304 2303 365 1040 1497 174 2305 2152 2306 366 174 1500 1040 2307 2308 2306 367 1199 1500 174 2309 2307 2156 368 175 1072 1071 2310 2311 2312 369 1071 1519 175 2313 2314 2312 370 175 1577 1072 1745 2315 2310 371 175 1519 1196 2314 2316 1741 372 176 1552 1173 2317 2318 2019 373 1538 1569 176 2319 2320 2015 374 176 1569 1552 2320 2321 2317 375 1201 1567 177 2322 2323 1907 376 177 1576 1537 2324 2325 1911 377 1567 1576 177 2326 2324 2323 378 972 974 178 2327 2328 2329 379 178 976 972 2330 2331 2329 380 974 1579 178 2332 1890 2328 381 178 1586 976 1886 2298 2330 382 1148 1149 179 2333 2334 1818 383 1149 1150 179 2335 2336 2334 384 1150 1253 179 2337 1822 2336 385 180 1454 1158 2338 2339 2092 386 1303 1435 180 2340 2341 2096 387 1435 1454 180 2342 2338 2341 388 944 1546 181 2343 2344 1842 389 986 1163 181 2345 1846 2346 390 181 1546 986 2344 2347 2346 391 182 1559 1232 2348 2349 1983 392 1539 1570 182 2350 2351 1979 393 182 1570 1559 2351 2352 2348 394 183 1240 926 1709 2353 2354 395 926 1516 183 2355 2356 2354 396 183 1516 1124 2356 2357 1705 397 184 1143 1140 2358 2359 2360 398 1140 1578 184 2197 1681 2360 399 184 1526 1143 2361 2362 2358 400 1274 1526 184 2363 2361 1685 401 208 209 185 2364 2365 2136 402 209 210 185 2366 2367 2365 403 210 1225 185 2368 2132 2367 404 935 1167 186 2369 1806 2370 405 186 1528 935 2371 2372 2370 406 1211 1528 186 2373 2371 1802 407 1151 1561 187 2374 2375 1955 408 187 1560 1249 2376 2377 1959 409 187 1561 1560 2375 2378 2376 410 188 952 951 2379 2380 2381 411 951 1202 188 2382 2076 2381 412 188 1193 952 2080 2383 2379 413 957 958 189 2384 2385 2386 414 189 1241 957 2120 2387 2386 415 958 959 189 2388 2116 2385 416 1182 1565 190 2389 2390 1939 417 190 1564 1228 2391 2392 1943 418 190 1565 1564 2390 2393 2391 419 191 1141 1089 2394 2395 2396 420 1089 1527 191 2397 2398 2396 421 191 1588 1141 1669 2198 2394 422 191 1527 1176 2398 2399 1665 423 938 942 192 2400 2401 2402 424 192 1544 938 2403 2404 2402 425 942 1583 192 2274 1862 2401 426 1262 1544 192 2405 2403 1858 427 193 1502 1199 2406 2407 2160 428 193 1505 1502 2408 2409 2406 429 193 1506 1505 2164 2410 2408 430 1173 1550 194 2411 2412 2023 431 194 1549 1326 2413 2414 2027 432 194 1550 1549 2412 2415 2413 433 1178 1179 195 2416 2417 1653 434 1179 1180 195 2418 2419 2417 435 1180 1507 195 2420 1649 2419 436 1043 1545 196 2421 2422 2423 437 196 1585 1043 2424 2425 2423 438 1099 1585 196 2426 2424 1725 439 196 1545 1273 2422 2427 1721 440 947 1452 197 2428 2429 2430 441 197 1580 947 1753 2431 2430 442 197 1452 1072 2429 2432 2433 443 1072 1577 197 2315 1749 2433 444 1221 1520 198 2434 2435 1637 445 1520 1599 198 2436 2437 2435 446 198 1599 1542 2437 2438 1633 447 199 1553 1100 2439 2440 1999 448 1271 1554 199 2441 2442 1995 449 199 1554 1553 2442 2443 2439 450 909 1166 200 2444 1790 2445 451 200 1584 909 2446 2447 2445 452 1168 1584 200 2448 2446 1786 453 950 1169 201 2449 2060 2450 454 201 1170 950 2451 2452 2450 455 201 1420 1170 2064 2453 2451 456 202 1521 1186 2454 2455 1774 457 202 1600 1521 2456 2457 2454 458 1543 1600 202 2458 2456 1770 459 203 948 945 2459 2460 2461 460 945 992 203 2462 2044 2461 461 203 1192 948 2048 2463 2459 462 1326 1548 204 2464 2465 2031 463 204 1548 1513 2465 2466 2467 464 1513 1592 204 1762 2032 2467 465 974 975 205 2468 2469 2470 466 205 1579 974 1894 2332 2470 467 975 1510 205 2471 2472 2469 468 1510 1589 205 2169 1895 2472 469 946 947 206 2473 2474 2475 470 206 1511 946 2476 2477 2475 471 947 1580 206 2431 1757 2474 472 206 1590 1511 1758 2036 2476 473 207 1568 1201 2478 2479 1903 474 1514 1568 207 2480 2478 2481 475 207 1591 1514 1899 1625 2481 476 208 1441 209 2257 2482 2364 477 209 211 210 2483 2484 2366 478 209 1056 211 2485 2486 2483 479 209 1441 1056 2482 2487 2485 480 211 212 210 2488 2489 2484 481 212 1425 210 2490 2491 2489 482 210 1425 1225 2491 2220 2368 483 211 213 212 2492 2493 2488 484 211 214 213 2494 2495 2492 485 211 1056 214 2486 2496 2494 486 213 1355 212 2497 2498 2493 487 1355 1480 212 2499 2500 2498 488 212 1480 1425 2500 2501 2490 489 214 215 213 2502 2503 2495 490 215 216 213 2504 2505 2503 491 216 1355 213 2506 2497 2505 492 214 294 215 2507 2508 2502 493 214 629 294 2509 2510 2507 494 214 1056 629 2496 2511 2509 495 215 217 216 2512 2513 2504 496 215 1029 217 2514 2515 2512 497 294 1029 215 2516 2514 2508 498 217 218 216 2517 2518 2513 499 218 518 216 2519 2520 2518 500 518 1355 216 2521 2506 2520 501 217 219 218 2522 2523 2517 502 217 1353 219 2524 2525 2522 503 1029 1353 217 2526 2524 2515 504 219 220 218 2527 2528 2523 505 220 1033 218 2529 2530 2528 506 218 1033 518 2530 2531 2519 507 219 221 220 2532 2533 2527 508 219 282 221 2534 2535 2532 509 219 1353 282 2525 2536 2534 510 221 222 220 2537 2538 2533 511 222 315 220 2539 2540 2538 512 315 1033 220 2541 2529 2540 513 221 223 222 2542 2543 2537 514 221 1266 223 2544 2545 2542 515 282 1266 221 2546 2544 2535 516 223 224 222 2547 2548 2543 517 224 1076 222 2549 2550 2548 518 222 1076 315 2550 2551 2539 519 223 225 224 2552 2553 2547 520 223 519 225 2554 2555 2552 521 223 1266 519 2545 2556 2554 522 225 226 224 2557 2558 2553 523 226 1289 224 2559 2560 2558 524 224 1289 1076 2560 2561 2549 525 225 227 226 2562 2563 2557 526 225 1194 227 2564 2565 2562 527 519 1194 225 2566 2564 2555 528 227 228 226 2567 2568 2563 529 228 286 226 2569 2570 2568 530 286 1289 226 2571 2559 2570 531 227 229 228 2572 2573 2567 532 227 263 229 2574 2575 2572 533 227 1194 263 2565 2576 2574 534 229 230 228 2577 2578 2573 535 230 1409 228 2579 2580 2578 536 228 1409 286 2580 2581 2569 537 229 231 230 2582 2583 2577 538 229 1295 231 2584 2585 2582 539 263 1295 229 2586 2584 2575 540 231 232 230 2587 2588 2583 541 232 1467 230 2589 2590 2588 542 230 1467 1409 2590 2591 2579 543 231 233 232 2592 2593 2587 544 231 366 233 2594 2595 2592 545 231 1295 366 2585 2596 2594 546 233 234 232 2597 2598 2593 547 234 260 232 2599 2600 2598 548 260 1467 232 2601 2589 2600 549 233 235 234 2602 2603 2597 550 233 1115 235 2604 2605 2602 551 366 1115 233 2606 2604 2595 552 235 236 234 2607 2608 2603 553 236 1299 234 2609 2610 2608 554 234 1299 260 2610 2611 2599 555 235 237 236 2612 2613 2607 556 235 256 237 2614 2615 2612 557 235 1115 256 2605 2616 2614 558 237 238 236 2617 2618 2613 559 238 364 236 2619 2620 2618 560 364 1299 236 2621 2609 2620 561 237 239 238 2622 2623 2617 562 237 1260 239 2624 2625 2622 563 256 1260 237 2626 2624 2615 564 239 240 238 2627 2628 2623 565 240 1047 238 2629 2630 2628 566 238 1047 364 2630 2631 2619 567 239 241 240 2632 2633 2627 568 239 368 241 2634 2635 2632 569 239 1260 368 2625 2636 2634 570 241 242 240 2637 2638 2633 571 242 246 240 2639 2640 2638 572 246 1047 240 2641 2629 2640 573 241 243 242 2642 2643 2637 574 241 1308 243 2644 2645 2642 575 368 1308 241 2646 2644 2635 576 243 244 242 2647 2648 2643 577 244 1404 242 2649 2650 2648 578 242 1404 246 2650 2651 2639 579 243 245 244 2652 2653 2647 580 243 248 245 2654 2655 2652 581 243 1308 248 2645 2656 2654 582 245 247 244 2657 2658 2653 583 247 510 244 2659 2660 2658 584 510 1404 244 2661 2649 2660 585 245 249 247 2662 2663 2657 586 248 1384 245 2664 2665 2655 587 245 1384 249 2665 2666 2662 588 246 1197 1047 2667 2668 2641 589 1048 1197 246 2669 2667 2670 590 246 1404 1048 2651 2671 2670 591 249 250 247 2672 2673 2663 592 250 1338 247 2674 2675 2673 593 247 1338 510 2675 2676 2659 594 1308 1460 248 2677 2678 2656 595 248 1431 1384 2679 2680 2664 596 248 1460 1431 2678 2681 2679 597 249 251 250 2682 2683 2672 598 249 362 251 2684 2685 2682 599 249 1384 362 2666 2686 2684 600 251 252 250 2687 2688 2683 601 252 253 250 2689 2690 2688 602 253 1338 250 2691 2674 2690 603 251 254 252 2692 2693 2687 604 251 1077 254 2694 2695 2692 605 362 1077 251 2696 2694 2685 606 252 1267 253 2697 2698 2689 607 254 255 252 2699 2700 2693 608 255 1267 252 2701 2697 2700 609 253 1184 1183 2702 2703 2704 610 1183 1338 253 2705 2691 2704 611 253 1267 1184 2698 2706 2702 612 254 257 255 2707 2708 2699 613 254 258 257 2709 2710 2707 614 254 1077 258 2695 2711 2709 615 257 259 255 2712 2713 2708 616 259 369 255 2714 2715 2713 617 369 1267 255 2716 2701 2715 618 1115 1396 256 2717 2718 2616 619 256 1397 1260 2719 2720 2626 620 1396 1397 256 2721 2719 2718 621 258 261 257 2722 2723 2710 622 257 1188 259 2724 2725 2712 623 261 1188 257 2726 2724 2723 624 258 262 261 2727 2728 2722 625 258 1283 262 2729 2730 2727 626 1077 1283 258 2731 2729 2711 627 259 370 369 2732 2733 2714 628 259 1093 370 2734 2735 2732 629 259 1188 1093 2725 2736 2734 630 1299 1301 260 2737 2738 2611 631 1301 1455 260 2739 2740 2738 632 1455 1467 260 2741 2601 2740 633 262 264 261 2742 2743 2728 634 264 363 261 2744 2745 2743 635 363 1188 261 2746 2726 2745 636 262 265 264 2747 2748 2742 637 262 365 265 2749 2750 2747 638 262 1283 365 2730 2751 2749 639 1194 1476 263 2752 2753 2576 640 263 1482 1295 2754 2755 2586 641 1476 1482 263 2756 2754 2753 642 265 266 264 2757 2758 2748 643 266 1189 264 2759 2760 2758 644 264 1189 363 2760 2761 2744 645 265 267 266 2762 2763 2757 646 265 1152 267 2764 2765 2762 647 365 1152 265 2766 2764 2750 648 267 268 266 2767 2768 2763 649 268 270 266 2769 2770 2768 650 270 1189 266 2771 2759 2770 651 267 269 268 2772 2773 2767 652 267 271 269 2774 2775 2772 653 267 1152 271 2765 2776 2774 654 269 1309 268 2777 2778 2773 655 268 560 270 2779 2780 2769 656 268 1309 560 2778 2781 2779 657 271 272 269 2782 2783 2775 658 272 287 269 2784 2785 2783 659 287 1309 269 2786 2777 2785 660 560 566 270 2787 2788 2780 661 566 1293 270 2789 2790 2788 662 270 1293 1189 2790 2791 2771 663 271 273 272 2792 2793 2782 664 271 753 273 2794 2795 2792 665 271 1152 753 2776 2796 2794 666 273 274 272 2797 2798 2793 667 274 1132 272 2799 2800 2798 668 272 1132 287 2800 2801 2784 669 273 275 274 2802 2803 2797 670 273 1284 275 2804 2805 2802 671 753 1284 273 2806 2804 2795 672 275 276 274 2807 2808 2803 673 276 360 274 2809 2810 2808 674 360 1132 274 2811 2799 2810 675 275 277 276 2812 2813 2807 676 275 321 277 2814 2815 2812 677 275 1284 321 2805 2816 2814 678 277 278 276 2817 2818 2813 679 278 1174 276 2819 2820 2818 680 276 1174 360 2820 2821 2809 681 277 279 278 2822 2823 2817 682 277 1406 279 2824 2825 2822 683 321 1406 277 2826 2824 2815 684 279 280 278 2827 2828 2823 685 280 1053 278 2829 2830 2828 686 1053 1174 278 2831 2819 2830 687 279 281 280 2832 2833 2827 688 279 1417 281 2834 2835 2832 689 1406 1417 279 2836 2834 2825 690 281 283 280 2837 2838 2833 691 283 288 280 2839 2840 2838 692 288 1053 280 2841 2829 2840 693 281 284 283 2842 2843 2837 694 281 285 284 2844 2845 2842 695 281 1417 285 2835 2846 2844 696 282 1492 1266 2847 2848 2546 697 1353 1494 282 2849 2850 2536 698 282 1494 1492 2850 2851 2847 699 284 1268 283 2852 2853 2843 700 283 289 288 2854 2855 2839 701 283 1268 289 2853 2856 2854 702 285 290 284 2857 2858 2845 703 290 631 284 2859 2860 2858 704 631 1268 284 2861 2852 2860 705 285 291 290 2862 2863 2857 706 285 1006 291 2864 2865 2862 707 285 1417 1006 2846 2866 2864 708 286 1409 993 2581 2867 2868 709 993 1437 286 2869 2870 2868 710 286 1437 1289 2870 2871 2571 711 287 1132 1113 2801 2872 2873 712 1113 1287 287 2874 2875 2873 713 1287 1309 287 2876 2786 2875 714 289 295 288 2877 2878 2855 715 295 603 288 2879 2880 2878 716 603 1053 288 2881 2841 2880 717 289 296 295 2882 2883 2877 718 289 805 296 2884 2885 2882 719 289 1268 805 2856 2886 2884 720 291 292 290 2887 2888 2863 721 292 1057 290 2889 2890 2888 722 290 1057 631 2890 2891 2859 723 291 293 292 2892 2893 2887 724 291 361 293 2894 2895 2892 725 291 1006 361 2865 2896 2894 726 293 297 292 2897 2898 2893 727 297 301 292 2899 2900 2898 728 301 1057 292 2901 2889 2900 729 293 298 297 2902 2903 2897 730 293 1350 298 2904 2905 2902 731 361 1350 293 2906 2904 2895 732 629 706 294 2907 2908 2510 733 706 903 294 2909 2910 2908 734 903 1029 294 2911 2516 2910 735 296 299 295 2912 2913 2883 736 299 1244 295 2914 2915 2913 737 295 1244 603 2915 2916 2879 738 296 300 299 2917 2918 2912 739 296 1341 300 2919 2920 2917 740 805 1341 296 2921 2919 2885 741 298 302 297 2922 2923 2903 742 297 1317 301 2924 2925 2899 743 302 1317 297 2926 2924 2923 744 298 303 302 2927 2928 2922 745 298 311 303 2929 2930 2927 746 298 1350 311 2905 2931 2929 747 300 306 299 2932 2933 2918 748 306 307 299 2934 2935 2933 749 307 1244 299 2936 2914 2935 750 300 308 306 2937 2938 2932 751 300 309 308 2939 2940 2937 752 300 1341 309 2920 2941 2939 753 301 1318 1057 2942 2943 2901 754 1317 1335 301 2944 2945 2925 755 301 1335 1318 2945 2946 2942 756 303 304 302 2947 2948 2928 757 304 1058 302 2949 2950 2948 758 1058 1317 302 2951 2926 2950 759 303 305 304 2952 2953 2947 760 303 1075 305 2954 2955 2952 761 311 1075 303 2956 2954 2930 762 305 312 304 2957 2958 2953 763 312 325 304 2959 2960 2958 764 325 1058 304 2961 2949 2960 765 305 313 312 2962 2963 2957 766 305 1164 313 2964 2965 2962 767 1075 1164 305 2966 2964 2955 768 306 1035 307 2967 2968 2934 769 308 320 306 2969 2970 2938 770 320 1035 306 2971 2967 2970 771 1012 1244 307 2972 2936 2973 772 307 1433 1012 2974 2975 2973 773 1035 1433 307 2976 2974 2968 774 309 310 308 2977 2978 2940 775 310 997 308 2979 2980 2978 776 308 997 320 2980 2981 2969 777 309 314 310 2982 2983 2977 778 309 367 314 2984 2985 2982 779 309 1341 367 2941 2986 2984 780 314 322 310 2987 2988 2983 781 322 1234 310 2989 2990 2988 782 310 1234 997 2990 2991 2979 783 311 1108 1075 2992 2993 2956 784 1098 1108 311 2994 2992 2995 785 311 1350 1098 2931 2996 2995 786 313 316 312 2997 2998 2963 787 316 1364 312 2999 3000 2998 788 312 1364 325 3000 3001 2959 789 313 317 316 3002 3003 2997 790 313 318 317 3004 3005 3002 791 313 1164 318 2965 3006 3004 792 314 327 322 3007 3008 2987 793 314 1414 327 3009 3010 3007 794 367 1414 314 3011 3009 2985 795 315 1468 1033 3012 3013 2541 796 1076 1114 315 3014 3015 2551 797 1114 1468 315 3016 3012 3015 798 317 1451 316 3017 3018 3003 799 316 1498 1364 3019 3020 2999 800 1451 1498 316 3021 3019 3018 801 318 319 317 3022 3023 3005 802 319 323 317 3024 3025 3023 803 323 1451 317 3026 3017 3025 804 318 326 319 3027 3028 3022 805 318 617 326 3029 3030 3027 806 318 1164 617 3006 3031 3029 807 319 324 323 3032 3033 3024 808 319 1386 324 3034 3035 3032 809 326 1386 319 3036 3034 3028 810 320 996 966 3037 3038 3039 811 966 1035 320 3040 2971 3039 812 320 997 996 2981 3041 3037 813 1284 1483 321 3042 3043 2816 814 1361 1406 321 3044 2826 3045 815 321 1483 1361 3043 3046 3045 816 327 330 322 3047 3048 3008 817 330 331 322 3049 3050 3048 818 331 1234 322 3051 2989 3050 819 324 328 323 3052 3053 3033 820 328 1444 323 3054 3055 3053 821 1444 1451 323 3056 3026 3055 822 324 329 328 3057 3058 3052 823 324 1069 329 3059 3060 3057 824 324 1386 1069 3035 3061 3059 825 965 1044 325 3062 3063 3064 826 325 1364 965 3001 3065 3064 827 1044 1058 325 3066 2961 3063 828 617 618 326 3067 3068 3030 829 618 1296 326 3069 3070 3068 830 1296 1386 326 3071 3036 3070 831 327 345 330 3072 3073 3047 832 327 346 345 3074 3075 3072 833 327 1414 346 3010 3076 3074 834 329 332 328 3077 3078 3058 835 332 342 328 3079 3080 3078 836 342 1444 328 3081 3054 3080 837 329 333 332 3082 3083 3077 838 329 334 333 3084 3085 3082 839 329 1069 334 3060 3086 3084 840 330 343 331 3087 3088 3049 841 330 1365 343 3089 3090 3087 842 345 1365 330 3091 3089 3073 843 343 344 331 3092 3093 3088 844 344 1357 331 3094 3095 3093 845 331 1357 1234 3095 3096 3051 846 333 1090 332 3097 3098 3083 847 332 359 342 3099 3100 3079 848 332 1090 359 3098 3101 3099 849 334 335 333 3102 3103 3085 850 335 336 333 3104 3105 3103 851 336 1090 333 3106 3097 3105 852 334 1067 335 3107 3108 3102 853 334 1068 1067 3109 3110 3107 854 334 1069 1068 3086 3111 3109 855 335 337 336 3112 3113 3104 856 335 338 337 3114 3115 3112 857 335 1067 338 3108 3116 3114 858 337 1073 336 3117 3118 3113 859 336 1073 1039 3118 3119 3120 860 1039 1090 336 3121 3106 3120 861 338 339 337 3122 3123 3115 862 339 340 337 3124 3125 3123 863 340 1073 337 3126 3117 3125 864 338 349 339 3127 3128 3122 865 338 358 349 3129 3130 3127 866 338 1067 358 3116 3131 3129 867 339 341 340 3132 3133 3124 868 339 1429 341 3134 3135 3132 869 349 1429 339 3136 3134 3128 870 341 347 340 3137 3138 3133 871 347 511 340 3139 3140 3138 872 511 1073 340 3141 3126 3140 873 341 348 347 3142 3143 3137 874 341 1264 348 3144 3145 3142 875 341 1429 1264 3135 3146 3144 876 359 524 342 3147 3148 3100 877 524 635 342 3149 3150 3148 878 635 1444 342 3151 3081 3150 879 343 520 344 3152 3153 3092 880 343 799 520 3154 3155 3152 881 343 1365 799 3090 3156 3154 882 520 521 344 3157 3158 3153 883 521 522 344 3159 3160 3158 884 522 1357 344 3161 3094 3160 885 346 354 345 3162 3163 3075 886 354 541 345 3164 3165 3163 887 541 1365 345 3166 3091 3165 888 346 355 354 3167 3168 3162 889 346 1438 355 3169 3170 3167 890 1414 1438 346 3171 3169 3076 891 348 350 347 3172 3173 3143 892 350 1427 347 3174 3175 3173 893 347 1427 511 3175 3176 3139 894 348 351 350 3177 3178 3172 895 348 352 351 3179 3180 3177 896 348 1264 352 3145 3181 3179 897 358 578 349 3182 3183 3130 898 578 1030 349 3184 3185 3183 899 1030 1429 349 3186 3136 3185 900 351 1037 350 3187 3188 3178 901 1037 1449 350 3189 3190 3188 902 350 1449 1427 3190 3191 3174 903 352 353 351 3192 3193 3180 904 353 356 351 3194 3195 3193 905 356 1037 351 3196 3187 3195 906 352 571 353 3197 3198 3192 907 352 602 571 3199 3200 3197 908 352 1264 602 3181 3201 3199 909 353 357 356 3202 3203 3194 910 353 1368 357 3204 3205 3202 911 571 1368 353 3206 3204 3198 912 355 549 354 3207 3208 3168 913 354 984 541 3209 3210 3164 914 549 984 354 3211 3209 3208 915 355 550 549 3212 3213 3207 916 355 562 550 3214 3215 3212 917 355 1438 562 3170 3216 3214 918 357 547 356 3217 3218 3203 919 547 576 356 3219 3220 3218 920 576 1037 356 3221 3196 3220 921 357 548 547 3222 3223 3217 922 357 570 548 3224 3225 3222 923 357 1368 570 3205 3226 3224 924 358 579 578 3227 3228 3182 925 358 809 579 3229 3230 3227 926 358 1067 809 3131 3231 3229 927 359 580 524 3232 3233 3147 928 359 730 580 3234 3235 3232 929 359 1090 730 3101 3236 3234 930 1055 1112 360 3237 3238 3239 931 360 1174 1055 2821 3240 3239 932 1112 1132 360 3241 2811 3238 933 981 1004 361 3242 3243 3244 934 361 1006 981 2896 3245 3244 935 1004 1350 361 3246 2906 3243 936 362 1078 1077 3247 3248 2696 937 362 1079 1078 3249 3250 3247 938 362 1384 1079 2686 3251 3249 939 363 1189 1123 2761 3252 3253 940 1123 1315 363 3254 3255 3253 941 363 1315 1188 3255 3256 2746 942 1047 1434 364 3257 3258 2631 943 364 1300 1299 3259 3260 2621 944 364 1434 1300 3258 3261 3259 945 1082 1084 365 3262 3263 3264 946 365 1283 1082 2751 3265 3264 947 1084 1152 365 3266 2766 3263 948 366 1457 1115 3267 3268 2606 949 1295 1448 366 3269 3270 2596 950 1448 1457 366 3271 3267 3270 951 367 1356 1038 3272 3273 3274 952 1038 1414 367 3275 3011 3274 953 1341 1356 367 3276 3272 2986 954 1260 1410 368 3277 3278 2636 955 368 1443 1308 3279 3280 2646 956 1410 1443 368 3281 3279 3278 957 370 371 369 3282 3283 2733 958 371 1376 369 3284 3285 3283 959 369 1376 1267 3285 3286 2716 960 370 372 371 3287 3288 3282 961 370 624 372 3289 3290 3287 962 370 1093 624 2735 3291 3289 963 372 373 371 3292 3293 3288 964 373 744 371 3294 3295 3293 965 744 1376 371 3296 3284 3295 966 372 374 373 3297 3298 3292 967 372 1175 374 3299 3300 3297 968 624 1175 372 3301 3299 3290 969 374 375 373 3302 3303 3298 970 375 1119 373 3304 3305 3303 971 373 1119 744 3305 3306 3294 972 374 376 375 3307 3308 3302 973 374 377 376 3309 3310 3307 974 374 1175 377 3300 3311 3309 975 376 380 375 3312 3313 3308 976 380 381 375 3314 3315 3313 977 381 1119 375 3316 3304 3315 978 377 378 376 3317 3318 3310 979 378 1311 376 3319 3320 3318 980 376 1311 380 3320 3321 3312 981 377 379 378 3322 3323 3317 982 377 1348 379 3324 3325 3322 983 1175 1348 377 3326 3324 3311 984 379 384 378 3327 3328 3323 985 384 473 378 3329 3330 3328 986 473 1311 378 3331 3319 3330 987 379 385 384 3332 3333 3327 988 379 442 385 3334 3335 3332 989 379 1348 442 3325 3336 3334 990 380 382 381 3337 3338 3314 991 380 878 382 3339 3340 3337 992 380 1311 878 3321 3341 3339 993 382 383 381 3342 3343 3338 994 383 474 381 3344 3345 3343 995 474 1119 381 3346 3316 3345 996 382 386 383 3347 3348 3342 997 382 1339 386 3349 3350 3347 998 878 1339 382 3351 3349 3340 999 386 387 383 3352 3353 3348 1000 387 1337 383 3354 3355 3353 1001 383 1337 474 3355 3356 3344 1002 385 388 384 3357 3358 3333 1003 388 1208 384 3359 3360 3358 1004 384 1208 473 3360 3361 3329 1005 385 389 388 3362 3363 3357 1006 385 1204 389 3364 3365 3362 1007 442 1204 385 3366 3364 3335 1008 386 390 387 3367 3368 3352 1009 386 395 390 3369 3370 3367 1010 386 1339 395 3350 3371 3369 1011 390 391 387 3372 3373 3368 1012 391 1328 387 3374 3375 3373 1013 1328 1337 387 3376 3354 3375 1014 389 392 388 3377 3378 3363 1015 392 394 388 3379 3380 3378 1016 394 1208 388 3381 3359 3380 1017 389 393 392 3382 3383 3377 1018 389 1105 393 3384 3385 3382 1019 389 1204 1105 3365 3386 3384 1020 390 402 391 3387 3388 3372 1021 395 1133 390 3389 3390 3370 1022 390 1133 402 3390 3391 3387 1023 402 403 391 3392 3393 3388 1024 403 404 391 3394 3395 3393 1025 404 1328 391 3396 3374 3395 1026 393 396 392 3397 3398 3383 1027 392 1226 394 3399 3400 3379 1028 396 1226 392 3401 3399 3398 1029 393 397 396 3402 3403 3397 1030 393 398 397 3404 3405 3402 1031 393 1105 398 3385 3406 3404 1032 394 1066 1025 3407 3408 3409 1033 1025 1208 394 3410 3381 3409 1034 394 1226 1066 3400 3411 3407 1035 395 1134 1133 3412 3413 3389 1036 395 1388 1134 3414 3415 3412 1037 1339 1388 395 3416 3414 3371 1038 397 1245 396 3417 3418 3403 1039 1022 1226 396 3419 3401 3420 1040 396 1245 1022 3418 3421 3420 1041 398 399 397 3422 3423 3405 1042 399 401 397 3424 3425 3423 1043 401 1245 397 3426 3417 3425 1044 398 400 399 3427 3428 3422 1045 398 1250 400 3429 3430 3427 1046 1105 1250 398 3431 3429 3406 1047 400 423 399 3432 3433 3428 1048 399 1102 401 3434 3435 3424 1049 423 1102 399 3436 3434 3433 1050 400 424 423 3437 3438 3432 1051 400 435 424 3439 3440 3437 1052 400 1250 435 3430 3441 3439 1053 1102 1103 401 3442 3443 3435 1054 1103 1104 401 3444 3445 3443 1055 1104 1245 401 3446 3426 3445 1056 402 1144 403 3447 3448 3392 1057 1133 1272 402 3449 3450 3391 1058 402 1272 1144 3450 3451 3447 1059 403 405 404 3452 3453 3394 1060 403 406 405 3454 3455 3452 1061 403 1144 406 3448 3456 3454 1062 405 1107 404 3457 3458 3453 1063 1107 1321 404 3459 3460 3458 1064 1321 1328 404 3461 3396 3460 1065 406 407 405 3462 3463 3455 1066 407 408 405 3464 3465 3463 1067 408 1107 405 3466 3457 3465 1068 406 422 407 3467 3468 3462 1069 406 475 422 3469 3470 3467 1070 406 1144 475 3456 3471 3469 1071 407 409 408 3472 3473 3464 1072 407 1398 409 3474 3475 3472 1073 422 1398 407 3476 3474 3468 1074 409 410 408 3477 3478 3473 1075 410 1106 408 3479 3480 3478 1076 1106 1107 408 3481 3466 3480 1077 409 411 410 3482 3483 3477 1078 409 1379 411 3484 3485 3482 1079 409 1398 1379 3475 3486 3484 1080 411 412 410 3487 3488 3483 1081 412 432 410 3489 3490 3488 1082 432 1106 410 3491 3479 3490 1083 411 413 412 3492 3493 3487 1084 411 414 413 3494 3495 3492 1085 411 1379 414 3485 3496 3494 1086 413 1320 412 3497 3498 3493 1087 412 512 432 3499 3500 3489 1088 412 1320 512 3498 3501 3499 1089 414 415 413 3502 3503 3495 1090 415 416 413 3504 3505 3503 1091 416 1320 413 3506 3497 3505 1092 414 1060 415 3507 3508 3502 1093 414 1061 1060 3509 3510 3507 1094 414 1379 1061 3496 3511 3509 1095 415 417 416 3512 3513 3504 1096 415 419 417 3514 3515 3512 1097 415 1060 419 3508 3516 3514 1098 417 418 416 3517 3518 3513 1099 418 1013 416 3519 3520 3518 1100 1013 1320 416 3521 3506 3520 1101 417 1302 418 3522 3523 3517 1102 419 420 417 3524 3525 3515 1103 420 1302 417 3526 3522 3525 1104 1002 1013 418 3527 3519 3528 1105 418 1118 1002 3529 3530 3528 1106 418 1302 1118 3523 3531 3529 1107 419 421 420 3532 3533 3524 1108 419 1125 421 3534 3535 3532 1109 1060 1125 419 3536 3534 3516 1110 421 425 420 3537 3538 3533 1111 425 452 420 3539 3540 3538 1112 452 1302 420 3541 3526 3540 1113 421 426 425 3542 3543 3537 1114 421 427 426 3544 3545 3542 1115 421 1125 427 3535 3546 3544 1116 475 476 422 3547 3548 3470 1117 476 1254 422 3549 3550 3548 1118 1254 1398 422 3551 3476 3550 1119 424 429 423 3552 3553 3438 1120 429 1153 423 3554 3555 3553 1121 423 1153 1102 3555 3556 3436 1122 424 430 429 3557 3558 3552 1123 424 1227 430 3559 3560 3557 1124 435 1227 424 3561 3559 3440 1125 426 1191 425 3562 3563 3543 1126 425 453 452 3564 3565 3539 1127 425 1191 453 3563 3566 3564 1128 427 428 426 3567 3568 3545 1129 428 1190 426 3569 3570 3568 1130 1190 1191 426 3571 3562 3570 1131 427 431 428 3572 3573 3567 1132 427 1390 431 3574 3575 3572 1133 1125 1390 427 3576 3574 3546 1134 431 433 428 3577 3578 3573 1135 433 434 428 3579 3580 3578 1136 434 1190 428 3581 3569 3580 1137 430 436 429 3582 3583 3558 1138 436 437 429 3584 3585 3583 1139 437 1153 429 3586 3554 3585 1140 430 438 436 3587 3588 3582 1141 430 484 438 3589 3590 3587 1142 430 1227 484 3560 3591 3589 1143 431 439 433 3592 3593 3577 1144 431 446 439 3594 3595 3592 1145 431 1390 446 3575 3596 3594 1146 512 513 432 3597 3598 3500 1147 513 1389 432 3599 3600 3598 1148 432 1389 1106 3600 3601 3491 1149 433 440 434 3602 3603 3579 1150 439 1094 433 3604 3605 3593 1151 433 1094 440 3605 3606 3602 1152 440 441 434 3607 3608 3603 1153 441 1369 434 3609 3610 3608 1154 434 1369 1190 3610 3611 3581 1155 1131 1227 435 3612 3561 3613 1156 435 1275 1131 3614 3615 3613 1157 1250 1275 435 3616 3614 3441 1158 436 443 437 3617 3618 3584 1159 438 1251 436 3619 3620 3588 1160 436 1251 443 3620 3621 3617 1161 443 444 437 3622 3623 3618 1162 444 1229 437 3624 3625 3623 1163 437 1229 1153 3625 3626 3586 1164 484 485 438 3627 3628 3590 1165 485 509 438 3629 3630 3628 1166 509 1251 438 3631 3619 3630 1167 446 447 439 3632 3633 3595 1168 447 451 439 3634 3635 3633 1169 451 1094 439 3636 3604 3635 1170 440 445 441 3637 3638 3607 1171 440 1370 445 3639 3640 3637 1172 1094 1370 440 3641 3639 3606 1173 445 448 441 3642 3643 3638 1174 448 449 441 3644 3645 3643 1175 449 1369 441 3646 3609 3645 1176 442 1206 1204 3647 3648 3366 1177 442 1394 1206 3649 3650 3647 1178 1348 1394 442 3651 3649 3336 1179 443 528 444 3652 3653 3622 1180 443 1160 528 3654 3655 3652 1181 443 1251 1160 3621 3656 3654 1182 528 529 444 3657 3658 3653 1183 529 530 444 3659 3660 3658 1184 530 1229 444 3661 3624 3660 1185 445 450 448 3662 3663 3642 1186 445 523 450 3664 3665 3662 1187 445 1370 523 3640 3666 3664 1188 446 1402 447 3667 3668 3632 1189 446 1390 1065 3596 3669 3670 1190 1065 1402 446 3671 3667 3670 1191 447 546 451 3672 3673 3634 1192 447 642 546 3674 3675 3672 1193 447 1402 642 3668 3676 3674 1194 448 551 449 3677 3678 3644 1195 450 1312 448 3679 3680 3663 1196 448 1312 551 3680 3681 3677 1197 551 552 449 3682 3683 3678 1198 552 746 449 3684 3685 3683 1199 746 1369 449 3686 3646 3685 1200 523 574 450 3687 3688 3665 1201 574 575 450 3689 3690 3688 1202 575 1312 450 3691 3679 3690 1203 546 587 451 3692 3693 3673 1204 587 879 451 3694 3695 3693 1205 879 1094 451 3696 3636 3695 1206 453 454 452 3697 3698 3565 1207 454 742 452 3699 3700 3698 1208 742 1302 452 3701 3541 3700 1209 453 455 454 3702 3703 3697 1210 453 1372 455 3704 3705 3702 1211 1191 1372 453 3706 3704 3566 1212 455 456 454 3707 3708 3703 1213 456 1367 454 3709 3710 3708 1214 454 1367 742 3710 3711 3699 1215 455 457 456 3712 3713 3707 1216 455 696 457 3714 3715 3712 1217 455 1372 696 3705 3716 3714 1218 457 458 456 3717 3718 3713 1219 458 459 456 3719 3720 3718 1220 459 1367 456 3721 3709 3720 1221 457 1294 458 3722 3723 3717 1222 696 697 457 3724 3725 3715 1223 697 1294 457 3726 3722 3725 1224 458 460 459 3727 3728 3719 1225 458 553 460 3729 3730 3727 1226 458 1294 553 3723 3731 3729 1227 460 461 459 3732 3733 3728 1228 461 633 459 3734 3735 3733 1229 633 1367 459 3736 3721 3735 1230 460 462 461 3737 3738 3732 1231 460 1351 462 3739 3740 3737 1232 553 1351 460 3741 3739 3730 1233 462 463 461 3742 3743 3738 1234 463 1101 461 3744 3745 3743 1235 461 1101 633 3745 3746 3734 1236 462 464 463 3747 3748 3742 1237 462 554 464 3749 3750 3747 1238 462 1351 554 3740 3751 3749 1239 464 465 463 3752 3753 3748 1240 465 466 463 3754 3755 3753 1241 466 1101 463 3756 3744 3755 1242 464 467 465 3757 3758 3752 1243 464 1297 467 3759 3760 3757 1244 554 1297 464 3761 3759 3750 1245 465 468 466 3762 3763 3754 1246 467 1049 465 3764 3765 3758 1247 465 1049 468 3765 3766 3762 1248 468 469 466 3767 3768 3763 1249 469 1377 466 3769 3770 3768 1250 466 1377 1101 3770 3771 3756 1251 964 1050 467 3772 3773 3774 1252 467 1297 964 3760 3775 3774 1253 467 1050 1049 3773 3776 3764 1254 468 470 469 3777 3778 3767 1255 468 472 470 3779 3780 3777 1256 468 1049 472 3766 3781 3779 1257 470 471 469 3782 3783 3778 1258 471 569 469 3784 3785 3783 1259 569 1377 469 3786 3769 3785 1260 470 1304 471 3787 3788 3782 1261 472 558 470 3789 3790 3780 1262 558 1304 470 3791 3787 3790 1263 471 991 569 3792 3793 3784 1264 471 1430 991 3794 3795 3792 1265 1304 1430 471 3796 3794 3788 1266 472 559 558 3797 3798 3789 1267 472 1314 559 3799 3800 3797 1268 1049 1314 472 3801 3799 3781 1269 1208 1209 473 3802 3803 3361 1270 1209 1363 473 3804 3805 3803 1271 473 1363 1311 3805 3806 3331 1272 474 1120 1119 3807 3808 3346 1273 474 1340 1120 3809 3810 3807 1274 1337 1340 474 3811 3809 3356 1275 475 477 476 3812 3813 3547 1276 475 1235 477 3814 3815 3812 1277 1144 1235 475 3816 3814 3471 1278 477 478 476 3817 3818 3813 1279 478 577 476 3819 3820 3818 1280 577 1254 476 3821 3549 3820 1281 477 479 478 3822 3823 3817 1282 477 481 479 3824 3825 3822 1283 477 1235 481 3815 3826 3824 1284 479 480 478 3827 3828 3823 1285 480 1195 478 3829 3830 3828 1286 478 1195 577 3830 3831 3819 1287 479 1154 480 3832 3833 3827 1288 481 482 479 3834 3835 3825 1289 482 1154 479 3836 3832 3835 1290 1154 1465 480 3837 3838 3833 1291 480 1442 1195 3839 3840 3829 1292 480 1465 1442 3838 3841 3839 1293 481 483 482 3842 3843 3834 1294 481 743 483 3844 3845 3842 1295 481 1235 743 3826 3846 3844 1296 483 544 482 3847 3848 3843 1297 544 585 482 3849 3850 3848 1298 585 1154 482 3851 3836 3850 1299 483 545 544 3852 3853 3847 1300 483 1298 545 3854 3855 3852 1301 743 1298 483 3856 3854 3845 1302 484 486 485 3857 3858 3627 1303 484 1129 486 3859 3860 3857 1304 484 1227 1129 3591 3861 3859 1305 486 487 485 3862 3863 3858 1306 487 1181 485 3864 3865 3863 1307 485 1181 509 3865 3866 3629 1308 486 488 487 3867 3868 3862 1309 486 495 488 3869 3870 3867 1310 486 1129 495 3860 3871 3869 1311 488 489 487 3872 3873 3868 1312 489 492 487 3874 3875 3873 1313 492 1181 487 3876 3864 3875 1314 488 490 489 3877 3878 3872 1315 488 1156 490 3879 3880 3877 1316 495 1156 488 3881 3879 3870 1317 490 491 489 3882 3883 3878 1318 491 1277 489 3884 3885 3883 1319 489 1277 492 3885 3886 3874 1320 490 493 491 3887 3888 3882 1321 490 883 493 3889 3890 3887 1322 490 1156 883 3880 3891 3889 1323 493 494 491 3892 3893 3888 1324 494 496 491 3894 3895 3893 1325 496 1277 491 3896 3884 3895 1326 492 1257 1181 3897 3898 3876 1327 492 1319 1257 3899 3900 3897 1328 1277 1319 492 3901 3899 3886 1329 493 1157 494 3902 3903 3892 1330 883 1307 493 3904 3905 3890 1331 493 1307 1157 3905 3906 3902 1332 494 497 496 3907 3908 3894 1333 494 498 497 3909 3910 3907 1334 494 1157 498 3903 3911 3909 1335 1129 1130 495 3912 3913 3871 1336 1130 1286 495 3914 3915 3913 1337 495 1286 1156 3915 3916 3881 1338 497 506 496 3917 3918 3908 1339 506 884 496 3919 3920 3918 1340 884 1277 496 3921 3896 3920 1341 498 499 497 3922 3923 3910 1342 499 1313 497 3924 3925 3923 1343 497 1313 506 3925 3926 3917 1344 498 500 499 3927 3928 3922 1345 498 561 500 3929 3930 3927 1346 498 1157 561 3911 3931 3929 1347 500 501 499 3932 3933 3928 1348 501 1292 499 3934 3935 3933 1349 1292 1313 499 3936 3924 3935 1350 500 502 501 3937 3938 3932 1351 500 1382 502 3939 3940 3937 1352 561 1382 500 3941 3939 3930 1353 502 503 501 3942 3943 3938 1354 503 504 501 3944 3945 3943 1355 504 1292 501 3946 3934 3945 1356 502 1333 503 3947 3948 3942 1357 502 1381 1333 3949 3950 3947 1358 502 1382 1381 3940 3951 3949 1359 503 505 504 3952 3953 3944 1360 503 507 505 3954 3955 3952 1361 503 1333 507 3948 3956 3954 1362 505 595 504 3957 3958 3953 1363 595 632 504 3959 3960 3958 1364 632 1292 504 3961 3946 3960 1365 507 508 505 3962 3963 3955 1366 508 1145 505 3964 3965 3963 1367 505 1145 595 3965 3966 3957 1368 506 885 884 3967 3968 3919 1369 506 1362 885 3969 3970 3967 1370 1313 1362 506 3971 3969 3926 1371 507 555 508 3972 3973 3962 1372 507 557 555 3974 3975 3972 1373 507 1333 557 3956 3976 3974 1374 555 556 508 3977 3978 3973 1375 556 591 508 3979 3980 3978 1376 591 1145 508 3981 3964 3980 1377 509 1181 1116 3866 3982 3983 1378 1116 1252 509 3984 3985 3983 1379 509 1252 1251 3985 3986 3631 1380 510 1338 1185 2676 3987 3988 1381 1185 1418 510 3989 3990 3988 1382 510 1418 1404 3990 3991 2661 1383 511 1378 1073 3992 3993 3141 1384 1374 1378 511 3994 3992 3995 1385 511 1427 1374 3176 3996 3995 1386 512 514 513 3997 3998 3597 1387 512 1276 514 3999 4000 3997 1388 512 1320 1276 3501 4001 3999 1389 514 515 513 4002 4003 3998 1390 515 516 513 4004 4005 4003 1391 516 1389 513 4006 3599 4005 1392 514 517 515 4007 4008 4002 1393 514 638 517 4009 4010 4007 1394 514 1276 638 4000 4011 4009 1395 515 567 516 4012 4013 4004 1396 517 1198 515 4014 4015 4008 1397 515 1198 567 4015 4016 4012 1398 567 568 516 4017 4018 4013 1399 568 1117 516 4019 4020 4018 1400 1117 1389 516 4021 4006 4020 1401 638 639 517 4022 4023 4010 1402 639 640 517 4024 4025 4023 1403 640 1198 517 4026 4014 4025 1404 1033 1478 518 4027 4028 2531 1405 518 1487 1355 4029 4030 2521 1406 1478 1487 518 4031 4029 4028 1407 519 1488 1194 4032 4033 2566 1408 1266 1496 519 4034 4035 2556 1409 519 1496 1488 4035 4036 4032 1410 520 1031 521 4037 4038 3157 1411 799 800 520 4039 4040 3155 1412 800 1031 520 4041 4037 4040 1413 521 525 522 4042 4043 3159 1414 521 527 525 4044 4045 4042 1415 521 1031 527 4038 4046 4044 1416 525 526 522 4047 4048 4043 1417 526 1486 522 4049 4050 4048 1418 522 1486 1357 4050 4051 3161 1419 523 648 574 4052 4053 3687 1420 523 1258 648 4054 4055 4052 1421 523 1370 1258 3666 4056 4054 1422 580 985 524 4057 4058 3233 1423 524 636 635 4059 4060 3149 1424 524 985 636 4058 4061 4059 1425 525 589 526 4062 4063 4047 1426 527 1087 525 4064 4065 4045 1427 525 1087 589 4065 4066 4062 1428 589 590 526 4067 4068 4063 1429 590 644 526 4069 4070 4068 1430 644 1486 526 4071 4049 4070 1431 1031 1416 527 4072 4073 4046 1432 527 1255 1087 4074 4075 4064 1433 527 1416 1255 4073 4076 4074 1434 528 649 529 4077 4078 3657 1435 528 650 649 4079 4080 4077 1436 528 1160 650 3655 4081 4079 1437 529 531 530 4082 4083 3659 1438 529 1220 531 4084 4085 4082 1439 649 1220 529 4086 4084 4078 1440 531 532 530 4087 4088 4083 1441 532 685 530 4089 4090 4088 1442 685 1229 530 4091 3661 4090 1443 531 533 532 4092 4093 4087 1444 531 588 533 4094 4095 4092 1445 531 1220 588 4085 4096 4094 1446 533 534 532 4097 4098 4093 1447 534 1259 532 4099 4100 4098 1448 532 1259 685 4100 4101 4089 1449 533 535 534 4102 4103 4097 1450 533 1246 535 4104 4105 4102 1451 588 1246 533 4106 4104 4095 1452 535 536 534 4107 4108 4103 1453 536 538 534 4109 4110 4108 1454 538 1259 534 4111 4099 4110 1455 535 537 536 4112 4113 4107 1456 535 596 537 4114 4115 4112 1457 535 1246 596 4105 4116 4114 1458 537 1213 536 4117 4118 4113 1459 536 539 538 4119 4120 4109 1460 536 1213 539 4118 4121 4119 1461 596 597 537 4122 4123 4115 1462 597 1265 537 4124 4125 4123 1463 537 1265 1213 4125 4126 4117 1464 539 540 538 4127 4128 4120 1465 540 779 538 4129 4130 4128 1466 779 1259 538 4131 4111 4130 1467 539 542 540 4132 4133 4127 1468 539 586 542 4134 4135 4132 1469 539 1213 586 4121 4136 4134 1470 542 543 540 4137 4138 4133 1471 543 1329 540 4139 4140 4138 1472 540 1329 779 4140 4141 4129 1473 984 1446 541 4142 4143 3210 1474 541 1413 1365 4144 4145 3166 1475 541 1446 1413 4143 4146 4144 1476 542 581 543 4147 4148 4137 1477 542 1242 581 4149 4150 4147 1478 586 1242 542 4151 4149 4135 1479 581 582 543 4152 4153 4148 1480 582 630 543 4154 4155 4153 1481 630 1329 543 4156 4139 4155 1482 545 598 544 4157 4158 3853 1483 544 1233 585 4159 4160 3849 1484 598 1233 544 4161 4159 4158 1485 545 599 598 4162 4163 4157 1486 545 604 599 4164 4165 4162 1487 545 1298 604 3855 4166 4164 1488 546 1324 587 4167 4168 3692 1489 642 643 546 4169 4170 3675 1490 643 1324 546 4171 4167 4170 1491 548 572 547 4172 4173 3223 1492 572 1005 547 4174 4175 4173 1493 547 1005 576 4175 4176 3219 1494 570 1432 548 4177 4178 3225 1495 548 573 572 4179 4180 4172 1496 548 1432 573 4178 4181 4179 1497 550 1146 549 4182 4183 3213 1498 983 984 549 4184 3211 4185 1499 549 1146 983 4183 4186 4185 1500 562 563 550 4187 4188 3215 1501 563 564 550 4189 4190 4188 1502 564 1146 550 4191 4182 4190 1503 551 667 552 4192 4193 3682 1504 551 790 667 4194 4195 4192 1505 551 1312 790 3681 4196 4194 1506 667 668 552 4197 4198 4193 1507 668 1366 552 4199 4200 4198 1508 552 1366 746 4200 4201 3684 1509 994 995 553 4202 4203 4204 1510 553 1294 994 3731 4205 4204 1511 995 1351 553 4206 3741 4203 1512 554 956 954 4207 4208 4209 1513 954 1297 554 4210 3761 4209 1514 554 1351 956 3751 4211 4207 1515 555 1352 556 4212 4213 3977 1516 557 812 555 4214 4215 3975 1517 812 1352 555 4216 4212 4215 1518 556 592 591 4217 4218 3979 1519 556 593 592 4219 4220 4217 1520 556 1352 593 4213 4221 4219 1521 557 813 812 4222 4223 4214 1522 557 814 813 4224 4225 4222 1523 557 1333 814 3976 4226 4224 1524 559 672 558 4227 4228 3798 1525 672 675 558 4229 4230 4228 1526 675 1304 558 4231 3791 4230 1527 559 673 672 4232 4233 4227 1528 559 674 673 4234 4235 4232 1529 559 1314 674 3800 4236 4234 1530 560 687 566 4237 4238 2787 1531 560 794 687 4239 4240 4237 1532 560 1309 794 2781 4241 4239 1533 1126 1127 561 4242 4243 4244 1534 561 1157 1126 3931 4245 4244 1535 1127 1382 561 4246 3941 4243 1536 562 686 563 4247 4248 4187 1537 562 737 686 4249 4250 4247 1538 562 1438 737 3216 4251 4249 1539 563 565 564 4252 4253 4189 1540 563 1330 565 4254 4255 4252 1541 686 1330 563 4256 4254 4248 1542 565 583 564 4257 4258 4253 1543 583 656 564 4259 4260 4258 1544 656 1146 564 4261 4191 4260 1545 565 584 583 4262 4263 4257 1546 565 625 584 4264 4265 4262 1547 565 1330 625 4255 4266 4264 1548 687 692 566 4267 4268 4238 1549 692 693 566 4269 4270 4268 1550 693 1293 566 4271 2789 4270 1551 567 688 568 4272 4273 4017 1552 567 806 688 4274 4275 4272 1553 567 1198 806 4016 4276 4274 1554 688 689 568 4277 4278 4273 1555 689 690 568 4279 4280 4278 1556 690 1117 568 4281 4019 4280 1557 991 1459 569 4282 4283 3793 1558 569 1456 1377 4284 4285 3786 1559 569 1459 1456 4283 4286 4284 1560 1368 1484 570 4287 4288 3226 1561 570 1489 1432 4289 4290 4177 1562 1484 1489 570 4291 4289 4288 1563 602 645 571 4292 4293 3200 1564 645 831 571 4294 4295 4293 1565 831 1368 571 4296 3206 4295 1566 573 659 572 4297 4298 4180 1567 659 722 572 4299 4300 4298 1568 722 1005 572 4301 4174 4300 1569 573 708 659 4302 4303 4297 1570 573 709 708 4304 4305 4302 1571 573 1432 709 4181 4306 4304 1572 574 658 575 4307 4308 3689 1573 648 1070 574 4309 4310 4053 1574 574 1070 658 4310 4311 4307 1575 658 666 575 4312 4313 4308 1576 666 1316 575 4314 4315 4313 1577 575 1316 1312 4315 4316 3691 1578 1005 1007 576 4317 4318 4176 1579 1007 1411 576 4319 4320 4318 1580 576 1411 1037 4320 4321 3221 1581 1195 1436 577 4322 4323 3831 1582 577 1408 1254 4324 4325 3821 1583 577 1436 1408 4323 4326 4324 1584 579 705 578 4327 4328 3228 1585 705 734 578 4329 4330 4328 1586 734 1030 578 4331 3184 4330 1587 579 797 705 4332 4333 4327 1588 579 1290 797 4334 4335 4332 1589 809 1290 579 4336 4334 3230 1590 730 731 580 4337 4338 3235 1591 731 732 580 4339 4340 4338 1592 732 985 580 4341 4057 4340 1593 581 660 582 4342 4343 4152 1594 581 718 660 4344 4345 4342 1595 581 1242 718 4150 4346 4344 1596 582 1392 630 4347 4348 4154 1597 660 684 582 4349 4350 4343 1598 684 1392 582 4351 4347 4350 1599 584 1412 583 4352 4353 4263 1600 583 824 656 4354 4355 4259 1601 583 1412 824 4353 4356 4354 1602 625 626 584 4357 4358 4265 1603 626 627 584 4359 4360 4358 1604 627 1412 584 4361 4352 4360 1605 585 1470 1154 4362 4363 3851 1606 1233 1474 585 4364 4365 4160 1607 585 1474 1470 4365 4366 4362 1608 1213 1269 586 4367 4368 4136 1609 586 1243 1242 4369 4370 4151 1610 586 1269 1243 4368 4371 4369 1611 587 880 879 4372 4373 3694 1612 587 881 880 4374 4375 4372 1613 587 1324 881 4168 4376 4374 1614 588 1219 1217 4377 4378 4379 1615 1217 1246 588 4380 4106 4379 1616 588 1220 1219 4096 4381 4377 1617 589 651 590 4382 4383 4067 1618 589 661 651 4384 4385 4382 1619 589 1087 661 4066 4386 4384 1620 590 1462 644 4387 4388 4069 1621 651 662 590 4389 4390 4383 1622 662 1462 590 4391 4387 4390 1623 592 1014 591 4392 4393 4218 1624 1014 1018 591 4394 4395 4393 1625 1018 1145 591 4396 3981 4395 1626 593 594 592 4397 4398 4220 1627 594 715 592 4399 4400 4398 1628 715 1014 592 4401 4392 4400 1629 593 600 594 4402 4403 4397 1630 593 669 600 4404 4405 4402 1631 593 1352 669 4221 4406 4404 1632 600 601 594 4407 4408 4403 1633 601 1358 594 4409 4410 4408 1634 594 1358 715 4410 4411 4399 1635 595 652 632 4412 4413 3959 1636 595 747 652 4414 4415 4412 1637 595 1145 747 3966 4416 4414 1638 596 653 597 4417 4418 4122 1639 596 754 653 4419 4420 4417 1640 596 1246 754 4116 4421 4419 1641 653 664 597 4422 4423 4418 1642 664 665 597 4424 4425 4423 1643 665 1265 597 4426 4124 4425 1644 599 1331 598 4427 4428 4163 1645 598 1345 1233 4429 4430 4161 1646 1331 1345 598 4431 4429 4428 1647 604 605 599 4432 4433 4165 1648 605 606 599 4434 4435 4433 1649 606 1331 599 4436 4427 4435 1650 600 1095 601 4437 4438 4407 1651 669 729 600 4439 4440 4405 1652 729 1095 600 4441 4437 4440 1653 1095 1473 601 4442 4443 4438 1654 601 1472 1358 4444 4445 4409 1655 601 1473 1472 4443 4446 4444 1656 602 646 645 4447 4448 4292 1657 602 867 646 4449 4450 4447 1658 602 1264 867 3201 4451 4449 1659 989 1054 603 4452 4453 4454 1660 603 1244 989 2916 4455 4454 1661 603 1054 1053 4453 4456 2881 1662 604 1310 605 4457 4458 4432 1663 604 1298 1136 4166 4459 4460 1664 1136 1310 604 4461 4457 4460 1665 605 607 606 4462 4463 4434 1666 605 608 607 4464 4465 4462 1667 605 1310 608 4458 4466 4464 1668 607 777 606 4467 4468 4463 1669 777 778 606 4469 4470 4468 1670 778 1331 606 4471 4436 4470 1671 608 609 607 4472 4473 4465 1672 609 1281 607 4474 4475 4473 1673 607 1281 777 4475 4476 4467 1674 608 610 609 4477 4478 4472 1675 608 1256 610 4479 4480 4477 1676 608 1310 1256 4466 4481 4479 1677 610 611 609 4482 4483 4478 1678 611 612 609 4484 4485 4483 1679 612 1281 609 4486 4474 4485 1680 610 670 611 4487 4488 4482 1681 610 671 670 4489 4490 4487 1682 610 1256 671 4480 4491 4489 1683 611 613 612 4492 4493 4484 1684 611 1147 613 4494 4495 4492 1685 670 1147 611 4496 4494 4488 1686 613 614 612 4497 4498 4493 1687 614 654 612 4499 4500 4498 1688 654 1281 612 4501 4486 4500 1689 613 615 614 4502 4503 4497 1690 613 616 615 4504 4505 4502 1691 613 1147 616 4495 4506 4504 1692 615 655 614 4507 4508 4503 1693 614 1137 654 4509 4510 4499 1694 655 1137 614 4511 4509 4508 1695 616 780 615 4512 4513 4505 1696 615 1395 655 4514 4515 4507 1697 780 1395 615 4516 4514 4513 1698 616 781 780 4517 4518 4512 1699 616 1270 781 4519 4520 4517 1700 1147 1270 616 4521 4519 4506 1701 617 619 618 4522 4523 3067 1702 617 1142 619 4524 4525 4522 1703 617 1164 1142 3031 4526 4524 1704 619 620 618 4527 4528 4523 1705 620 622 618 4529 4530 4528 1706 622 1296 618 4531 3069 4530 1707 619 621 620 4532 4533 4527 1708 619 755 621 4534 4535 4532 1709 619 1142 755 4525 4536 4534 1710 621 1278 620 4537 4538 4533 1711 620 623 622 4539 4540 4529 1712 620 1278 623 4538 4541 4539 1713 755 756 621 4542 4543 4535 1714 756 1380 621 4544 4545 4543 1715 621 1380 1278 4545 4546 4537 1716 623 634 622 4547 4548 4540 1717 634 698 622 4549 4550 4548 1718 698 1296 622 4551 4531 4550 1719 623 699 634 4552 4553 4547 1720 623 700 699 4554 4555 4552 1721 623 1278 700 4541 4556 4554 1722 1091 1092 624 4557 4558 4559 1723 624 1093 1091 3291 4560 4559 1724 1092 1175 624 4561 3301 4558 1725 625 789 626 4562 4563 4357 1726 625 1010 789 4564 4565 4562 1727 625 1330 1010 4266 4566 4564 1728 626 628 627 4567 4568 4359 1729 626 990 628 4569 4570 4567 1730 789 990 626 4571 4569 4563 1731 628 647 627 4572 4573 4568 1732 647 714 627 4574 4575 4573 1733 714 1412 627 4576 4361 4575 1734 628 704 647 4577 4578 4572 1735 628 724 704 4579 4580 4577 1736 628 990 724 4570 4581 4579 1737 629 707 706 4582 4583 2907 1738 629 889 707 4584 4585 4582 1739 629 1056 889 2511 4586 4584 1740 1200 1332 630 4587 4588 4589 1741 630 1392 1200 4348 4590 4589 1742 630 1332 1329 4588 4591 4156 1743 631 1057 1032 2891 4592 4593 1744 1032 1086 631 4594 4595 4593 1745 1086 1268 631 4596 2861 4595 1746 652 663 632 4597 4598 4413 1747 663 887 632 4599 4600 4598 1748 887 1292 632 4601 3961 4600 1749 1101 1453 633 4602 4603 3746 1750 633 1440 1367 4604 4605 3736 1751 633 1453 1440 4603 4606 4604 1752 634 1052 698 4607 4608 4549 1753 699 701 634 4609 4610 4553 1754 701 1052 634 4611 4607 4610 1755 636 637 635 4612 4613 4060 1756 637 901 635 4614 4615 4613 1757 901 1444 635 4616 3151 4615 1758 636 657 637 4617 4618 4612 1759 636 713 657 4619 4620 4617 1760 636 985 713 4061 4621 4619 1761 657 1504 637 4622 4623 4618 1762 637 1491 901 4624 4625 4614 1763 637 1504 1491 4623 4626 4624 1764 638 819 639 4627 4628 4022 1765 638 874 819 4629 4630 4627 1766 638 1276 874 4011 4631 4629 1767 639 641 640 4632 4633 4024 1768 639 1391 641 4634 4635 4632 1769 819 1391 639 4636 4634 4628 1770 641 694 640 4637 4638 4633 1771 694 1336 640 4639 4640 4638 1772 640 1336 1198 4640 4641 4026 1773 641 695 694 4642 4643 4637 1774 641 876 695 4644 4645 4642 1775 641 1391 876 4635 4646 4644 1776 642 702 643 4647 4648 4169 1777 642 810 702 4649 4650 4647 1778 642 1402 810 3676 4651 4649 1779 702 703 643 4652 4653 4648 1780 703 719 643 4654 4655 4653 1781 719 1324 643 4656 4171 4655 1782 644 1462 1096 4388 4657 4658 1783 1096 1464 644 4659 4660 4658 1784 1464 1486 644 4661 4071 4660 1785 646 825 645 4662 4663 4448 1786 825 1490 645 4664 4665 4663 1787 645 1490 831 4665 4666 4294 1788 646 837 825 4667 4668 4662 1789 646 999 837 4669 4670 4667 1790 867 999 646 4671 4669 4450 1791 704 710 647 4672 4673 4578 1792 710 1524 647 4674 4675 4673 1793 647 1524 714 4675 4676 4574 1794 1026 1028 648 4677 4678 4679 1795 648 1258 1026 4055 4680 4679 1796 1028 1070 648 4681 4309 4678 1797 650 716 649 4682 4683 4080 1798 716 770 649 4684 4685 4683 1799 770 1220 649 4686 4086 4685 1800 650 717 716 4687 4688 4682 1801 650 749 717 4689 4690 4687 1802 650 1160 749 4081 4691 4689 1803 661 979 651 4692 4693 4385 1804 651 848 662 4694 4695 4389 1805 651 979 848 4693 4696 4694 1806 652 849 663 4697 4698 4597 1807 747 1020 652 4699 4700 4415 1808 652 1020 849 4700 4701 4697 1809 653 850 664 4702 4703 4422 1810 754 1214 653 4704 4705 4420 1811 653 1214 850 4705 4706 4702 1812 1137 1138 654 4707 4708 4510 1813 1138 1261 654 4709 4710 4708 1814 1261 1281 654 4711 4501 4710 1815 1088 1282 655 4712 4713 4714 1816 655 1395 1088 4515 4715 4714 1817 655 1282 1137 4713 4716 4511 1818 824 839 656 4717 4718 4355 1819 839 840 656 4719 4720 4718 1820 840 1146 656 4721 4261 4720 1821 713 841 657 4722 4723 4620 1822 841 902 657 4724 4725 4723 1823 902 1504 657 4726 4622 4725 1824 658 721 666 4727 4728 4312 1825 658 838 721 4729 4730 4727 1826 658 1070 838 4311 4731 4729 1827 708 720 659 4732 4733 4303 1828 720 969 659 4734 4735 4733 1829 659 969 722 4735 4736 4299 1830 660 711 684 4737 4738 4349 1831 660 1530 711 4739 4740 4737 1832 718 1530 660 4741 4739 4345 1833 977 978 661 4742 4743 4744 1834 661 1087 977 4386 4745 4744 1835 978 979 661 4746 4692 4743 1836 848 912 662 4747 4748 4695 1837 912 913 662 4749 4750 4748 1838 913 1462 662 4751 4391 4750 1839 849 1121 663 4752 4753 4698 1840 663 888 887 4754 4755 4599 1841 663 1121 888 4753 4756 4754 1842 664 712 665 4757 4758 4424 1843 664 1231 712 4759 4760 4757 1844 850 1231 664 4761 4759 4703 1845 712 844 665 4762 4763 4758 1846 844 845 665 4764 4765 4763 1847 845 1265 665 4766 4426 4765 1848 721 857 666 4767 4768 4728 1849 857 1424 666 4769 4770 4768 1850 666 1424 1316 4770 4771 4314 1851 667 1415 668 4772 4773 4197 1852 790 791 667 4774 4775 4195 1853 791 1415 667 4776 4772 4775 1854 1237 1366 668 4777 4199 4778 1855 668 1400 1237 4779 4780 4778 1856 668 1415 1400 4773 4781 4779 1857 669 863 729 4782 4783 4439 1858 669 1385 863 4784 4785 4782 1859 1352 1385 669 4786 4784 4406 1860 671 740 670 4787 4788 4490 1861 740 745 670 4789 4790 4788 1862 745 1147 670 4791 4496 4790 1863 671 741 740 4792 4793 4787 1864 671 783 741 4794 4795 4792 1865 671 1256 783 4491 4796 4794 1866 673 1343 672 4797 4798 4233 1867 672 733 675 4799 4800 4229 1868 672 1343 733 4798 4801 4799 1869 674 676 673 4802 4803 4235 1870 676 987 673 4804 4805 4803 1871 987 1343 673 4806 4797 4805 1872 674 677 676 4807 4808 4802 1873 674 748 677 4809 4810 4807 1874 674 1314 748 4236 4811 4809 1875 733 785 675 4812 4813 4800 1876 785 804 675 4814 4815 4813 1877 804 1304 675 4816 4231 4815 1878 677 678 676 4817 4818 4808 1879 678 736 676 4819 4820 4818 1880 736 987 676 4821 4804 4820 1881 677 679 678 4822 4823 4817 1882 677 1009 679 4824 4825 4822 1883 748 1009 677 4826 4824 4810 1884 679 680 678 4827 4828 4823 1885 680 1423 678 4829 4830 4828 1886 678 1423 736 4830 4831 4819 1887 679 681 680 4832 4833 4827 1888 679 682 681 4834 4835 4832 1889 679 1009 682 4825 4836 4834 1890 681 683 680 4837 4838 4833 1891 683 829 680 4839 4840 4838 1892 829 1423 680 4841 4829 4840 1893 682 723 681 4842 4843 4835 1894 681 1445 683 4844 4845 4837 1895 723 1445 681 4846 4844 4843 1896 682 725 723 4847 4848 4842 1897 682 726 725 4849 4850 4847 1898 682 1009 726 4836 4851 4849 1899 683 832 829 4852 4853 4839 1900 683 859 832 4854 4855 4852 1901 683 1445 859 4845 4856 4854 1902 711 868 684 4857 4858 4738 1903 868 1401 684 4859 4860 4858 1904 684 1401 1392 4860 4861 4351 1905 685 1230 1229 4862 4863 4091 1906 685 1291 1230 4864 4865 4862 1907 1259 1291 685 4866 4864 4101 1908 737 784 686 4867 4868 4250 1909 784 786 686 4869 4870 4868 1910 786 1330 686 4871 4256 4870 1911 687 1305 692 4872 4873 4267 1912 794 795 687 4874 4875 4240 1913 795 1305 687 4876 4872 4875 1914 688 1327 689 4877 4878 4277 1915 806 807 688 4879 4880 4275 1916 807 1327 688 4881 4877 4880 1917 689 691 690 4882 4883 4279 1918 689 782 691 4884 4885 4882 1919 689 1327 782 4878 4886 4884 1920 691 787 690 4887 4888 4883 1921 787 798 690 4889 4890 4888 1922 798 1117 690 4891 4281 4890 1923 782 808 691 4892 4893 4885 1924 691 1354 787 4894 4895 4887 1925 808 1354 691 4896 4894 4893 1926 692 771 693 4897 4898 4269 1927 692 1306 771 4899 4900 4897 1928 1305 1306 692 4901 4899 4873 1929 771 772 693 4902 4903 4898 1930 772 773 693 4904 4905 4903 1931 773 1293 693 4906 4271 4905 1932 695 900 694 4907 4908 4643 1933 900 1393 694 4909 4910 4908 1934 694 1393 1336 4910 4911 4639 1935 876 1458 695 4912 4913 4645 1936 695 1481 900 4914 4915 4907 1937 1458 1481 695 4916 4914 4913 1938 696 894 697 4917 4918 3724 1939 696 1161 894 4919 4920 4917 1940 696 1372 1161 3716 4921 4919 1941 894 895 697 4922 4923 4918 1942 895 896 697 4924 4925 4923 1943 896 1294 697 4926 3726 4925 1944 1052 1419 698 4927 4928 4608 1945 698 1439 1296 4929 4930 4551 1946 1419 1439 698 4931 4929 4928 1947 700 820 699 4932 4933 4555 1948 699 1059 701 4934 4935 4609 1949 820 1059 699 4936 4934 4933 1950 700 821 820 4937 4938 4932 1951 700 890 821 4939 4940 4937 1952 700 1278 890 4556 4941 4939 1953 701 1334 1052 4942 4943 4611 1954 1059 1128 701 4944 4945 4935 1955 1128 1334 701 4946 4942 4945 1956 702 822 703 4947 4948 4652 1957 810 1421 702 4949 4950 4650 1958 702 1421 822 4950 4951 4947 1959 703 1042 719 4952 4953 4654 1960 822 823 703 4954 4955 4948 1961 823 1042 703 4956 4952 4955 1962 704 1499 710 4957 4958 4672 1963 724 892 704 4959 4960 4580 1964 892 1499 704 4961 4957 4960 1965 705 1001 734 4962 4963 4329 1966 797 826 705 4964 4965 4333 1967 826 1001 705 4966 4962 4965 1968 707 904 706 4967 4968 4583 1969 706 1461 903 4969 4970 2909 1970 904 1461 706 4971 4969 4968 1971 889 1493 707 4972 4973 4585 1972 707 1485 904 4974 4975 4967 1973 707 1493 1485 4973 4976 4974 1974 709 833 708 4977 4978 4305 1975 708 1450 720 4979 4980 4732 1976 833 1450 708 4981 4979 4978 1977 709 834 833 4982 4983 4977 1978 709 835 834 4984 4985 4982 1979 709 1432 835 4306 4986 4984 1980 1499 1508 710 4987 4988 4958 1981 1508 1525 710 4989 4990 4988 1982 710 1525 1524 4990 4991 4674 1983 711 869 868 4992 4993 4857 1984 711 931 869 4994 4995 4992 1985 711 1530 931 4740 4996 4994 1986 712 928 844 4997 4998 4762 1987 712 929 928 4999 5000 4997 1988 712 1231 929 4760 5001 4999 1989 713 911 841 5002 5003 4722 1990 713 962 911 5004 5005 5002 1991 713 985 962 4621 5006 5004 1992 714 1447 1412 5007 5008 4576 1993 714 1595 1447 5009 5010 5007 1994 1524 1595 714 5011 5009 4676 1995 715 1015 1014 5012 5013 4401 1996 715 1017 1015 5014 5015 5012 1997 715 1358 1017 4411 5016 5014 1998 717 853 716 5017 5018 4688 1999 716 1575 770 5019 5020 4684 2000 853 1575 716 5021 5019 5018 2001 749 750 717 5022 5023 4690 2002 750 1155 717 5024 5025 5023 2003 717 1155 853 5025 5026 5017 2004 1242 1509 718 5027 5028 4346 2005 1509 1597 718 5029 5030 5028 2006 718 1597 1530 5030 5031 4741 2007 1042 1043 719 5032 5033 4953 2008 1043 1322 719 5034 5035 5033 2009 1322 1324 719 5036 4656 5035 2010 720 972 969 5037 5038 4734 2011 720 973 972 5039 5040 5037 2012 720 1450 973 4980 5041 5039 2013 838 1452 721 5042 5043 4730 2014 721 858 857 5044 5045 4767 2015 721 1452 858 5043 5046 5044 2016 969 970 722 5047 5048 4736 2017 970 971 722 5049 5050 5048 2018 971 1005 722 5051 4301 5050 2019 725 961 723 5052 5053 4848 2020 961 1469 723 5054 5055 5053 2021 723 1469 1445 5055 5056 4846 2022 724 893 892 5057 5058 4959 2023 724 965 893 5059 5060 5057 2024 724 990 965 4581 5061 5059 2025 726 727 725 5062 5063 4850 2026 727 1074 725 5064 5065 5063 2027 725 1074 961 5065 2175 5052 2028 726 728 727 5066 5067 5062 2029 726 1323 728 5068 5069 5066 2030 1009 1323 726 5070 5068 4851 2031 728 735 727 5071 5072 5067 2032 735 864 727 5073 5074 5072 2033 864 1074 727 5075 5064 5074 2034 728 861 735 5076 5077 5071 2035 728 964 861 5078 5079 5076 2036 728 1323 964 5069 5080 5078 2037 863 966 729 5081 5082 4783 2038 966 967 729 5083 5084 5082 2039 967 1095 729 5085 4441 5084 2040 730 738 731 5086 5087 4337 2041 730 1039 738 5088 5089 5086 2042 730 1090 1039 3236 3121 5088 2043 731 1036 732 5090 5091 4339 2044 738 739 731 5092 5093 5087 2045 739 1036 731 5094 5090 5093 2046 962 985 732 5006 4341 5095 2047 732 986 962 5096 5097 5095 2048 732 1036 986 5091 5098 5096 2049 733 877 785 5099 5100 4812 2050 733 993 877 5101 5102 5099 2051 733 1343 993 4801 5103 5101 2052 734 1000 999 5104 5105 5106 2053 999 1030 734 5107 4331 5106 2054 734 1001 1000 4963 5108 5104 2055 861 862 735 5109 5110 5077 2056 862 1435 735 5111 5112 5110 2057 735 1435 864 5112 5113 5073 2058 736 988 987 5114 5115 4821 2059 736 1114 988 5116 5117 5114 2060 736 1423 1114 4831 5118 5116 2061 737 872 784 5119 5120 4867 2062 737 1038 872 5121 5122 5119 2063 737 1438 1038 4251 5123 5121 2064 738 788 739 5124 5125 5092 2065 738 1378 788 5126 5127 5124 2066 1039 1378 738 5128 5126 5089 2067 788 846 739 5129 5130 5125 2068 846 934 739 5131 5132 5130 2069 934 1036 739 5133 5094 5132 2070 741 1209 740 5134 5135 4793 2071 740 1025 745 5136 5137 4789 2072 740 1209 1025 5135 5138 5136 2073 783 1034 741 5139 5140 4795 2074 1034 1363 741 5141 5142 5140 2075 741 1363 1209 5142 3804 5134 2076 1118 1302 742 3531 3701 5143 2077 742 1440 1118 5144 5145 5143 2078 1367 1440 742 4605 5144 3711 2079 743 1272 1135 5146 5147 5148 2080 1135 1298 743 5149 3856 5148 2081 1235 1272 743 5150 5146 3846 2082 1119 1120 744 3808 5151 3306 2083 1120 1407 744 5152 5153 5151 2084 744 1407 1376 5153 5154 3296 2085 1025 1066 745 3408 5155 5137 2086 1066 1270 745 5156 5157 5155 2087 745 1270 1147 5157 4521 4791 2088 746 1366 1161 4201 5158 5159 2089 1161 1405 746 5160 5161 5159 2090 746 1405 1369 5161 5162 3686 2091 1018 1019 747 5163 5164 5165 2092 747 1145 1018 4416 4396 5165 2093 1019 1020 747 5166 4699 5164 2094 748 1323 1009 5167 5070 4826 2095 748 1314 1050 4811 5168 5169 2096 1050 1323 748 5170 5167 5169 2097 749 751 750 5171 5172 5022 2098 749 1252 751 5173 5174 5171 2099 1160 1252 749 5175 5173 4691 2100 751 752 750 5176 5177 5172 2101 752 852 750 5178 5179 5177 2102 852 1155 750 5180 5024 5179 2103 751 766 752 5181 5182 5176 2104 751 1116 766 5183 5184 5181 2105 751 1252 1116 5174 3984 5183 2106 766 767 752 5185 5186 5182 2107 767 1236 752 5187 5188 5186 2108 752 1236 852 5188 5189 5178 2109 1084 1085 753 5190 5191 5192 2110 753 1152 1084 2796 3266 5192 2111 1085 1284 753 5193 2806 5191 2112 754 1215 1214 5194 5195 4704 2113 754 1217 1215 5196 5197 5194 2114 754 1246 1217 4421 4380 5196 2115 755 757 756 5198 5199 4542 2116 755 1108 757 5200 5201 5198 2117 755 1142 1108 4536 5202 5200 2118 757 758 756 5203 5204 5199 2119 758 759 756 5205 5206 5204 2120 759 1380 756 5207 4544 5206 2121 757 1097 758 5208 5209 5203 2122 757 1098 1097 5210 5211 5208 2123 757 1108 1098 5201 2994 5210 2124 758 760 759 5212 5213 5205 2125 758 761 760 5214 5215 5212 2126 758 1097 761 5209 5216 5214 2127 760 1279 759 5217 5218 5213 2128 1279 1399 759 5219 5220 5218 2129 759 1399 1380 5220 5221 5207 2130 761 762 760 5222 5223 5215 2131 762 765 760 5224 5225 5223 2132 765 1279 760 5226 5217 5225 2133 761 763 762 5227 5228 5222 2134 761 865 763 5229 5230 5227 2135 761 1097 865 5216 5231 5229 2136 763 764 762 5232 5233 5228 2137 764 1371 762 5234 5235 5233 2138 762 1371 765 5235 5236 5224 2139 763 1210 764 5237 5238 5232 2140 865 866 763 5239 5240 5230 2141 866 1210 763 5241 5237 5240 2142 1210 1475 764 5242 5243 5238 2143 764 1466 1371 5244 5245 5234 2144 764 1475 1466 5243 5246 5244 2145 765 1280 1279 5247 5248 5226 2146 765 1325 1280 5249 5250 5247 2147 765 1371 1325 5236 5251 5249 2148 766 768 767 5252 5253 5185 2149 766 1257 768 5254 5255 5252 2150 1116 1257 766 5256 5254 5184 2151 768 769 767 5257 5258 5253 2152 769 851 767 5259 5260 5258 2153 851 1236 767 5261 5187 5260 2154 768 1346 769 5262 5263 5257 2155 1257 1319 768 3900 5264 5255 2156 1319 1346 768 5265 5262 5264 2157 769 915 851 5266 5267 5259 2158 769 1342 915 5268 5269 5266 2159 769 1346 1342 5263 5270 5268 2160 1219 1220 770 4381 4686 5271 2161 770 1540 1219 5272 5273 5271 2162 770 1575 1540 5020 5274 5272 2163 771 1344 772 5275 5276 4902 2164 771 1306 1286 4900 5277 5278 2165 1286 1344 771 5279 5275 5278 2166 772 774 773 5280 5281 4904 2167 772 775 774 5282 5283 5280 2168 772 1344 775 5276 5284 5282 2169 774 776 773 5285 5286 5281 2170 776 1123 773 5287 5288 5286 2171 1123 1293 773 5289 4906 5288 2172 775 1349 774 5290 5291 5283 2173 774 793 776 5292 5293 5285 2174 774 1349 793 5291 5294 5292 2175 775 1347 1207 5295 5296 5297 2176 1207 1349 775 5298 5290 5297 2177 1344 1347 775 5299 5295 5284 2178 793 1091 776 5300 5301 5293 2179 1091 1315 776 5302 5303 5301 2180 776 1315 1123 5303 3254 5287 2181 777 854 778 5304 5305 4469 2182 777 1261 854 5306 5307 5304 2183 777 1281 1261 4476 4711 5306 2184 854 855 778 5308 5309 5305 2185 855 856 778 5310 5311 5309 2186 856 1331 778 5312 4471 5311 2187 1162 1291 779 5313 5314 5315 2188 779 1329 1162 4141 5316 5315 2189 779 1291 1259 5314 4866 4131 2190 781 870 780 5317 5318 4518 2191 870 1401 780 5319 5320 5318 2192 780 1401 1395 5320 5321 4516 2193 781 871 870 5322 5323 5317 2194 781 873 871 5324 5325 5322 2195 781 1270 873 4520 5326 5324 2196 782 1183 808 5327 5328 4892 2197 782 1185 1183 5329 5330 5327 2198 782 1327 1185 4886 5331 5329 2199 783 1388 1034 5332 5333 5139 2200 1256 1375 783 5334 5335 4796 2201 1375 1388 783 5336 5332 5335 2202 784 1318 786 5337 5338 4869 2203 872 1032 784 5339 5340 5120 2204 1032 1318 784 5341 5337 5340 2205 785 827 804 5342 5343 4814 2206 785 1455 827 5344 5345 5342 2207 877 1455 785 5346 5344 5100 2208 1010 1330 786 4566 4871 5347 2209 786 1335 1010 5348 5349 5347 2210 1318 1335 786 2946 5348 5338 2211 787 886 798 5350 5351 4889 2212 787 1340 886 5352 5353 5350 2213 787 1354 1340 4895 5354 5352 2214 788 847 846 5355 5356 5129 2215 788 1374 847 5357 5358 5355 2216 788 1378 1374 5127 3994 5357 2217 789 1044 990 5359 5360 4571 2218 1010 1011 789 5361 5362 4565 2219 1011 1044 789 5363 5359 5362 2220 790 792 791 5364 5365 4774 2221 790 1316 792 5366 5367 5364 2222 1312 1316 790 4316 5366 4196 2223 792 949 791 5368 5369 5365 2224 949 950 791 5370 5371 5369 2225 950 1415 791 5372 4776 5371 2226 792 1024 949 5373 2288 5368 2227 792 1424 1024 5374 5375 5373 2228 1316 1424 792 4771 5374 5367 2229 793 1092 1091 5376 4557 5300 2230 793 1394 1092 5377 5378 5376 2231 1349 1394 793 5379 5377 5294 2232 794 796 795 5380 5381 4874 2233 794 1287 796 5382 5383 5380 2234 794 1309 1287 4241 2876 5382 2235 796 1126 795 5384 5385 5381 2236 1126 1307 795 5386 5387 5385 2237 795 1307 1305 5387 5388 4876 2238 796 1127 1126 5389 4242 5384 2239 796 1426 1127 5390 5391 5389 2240 1287 1426 796 5392 5390 5383 2241 797 830 826 5393 5394 4964 2242 797 1334 830 5395 5396 5393 2243 1290 1334 797 5397 5395 4335 2244 886 1321 798 5398 5399 5351 2245 798 1373 1117 5400 5401 4891 2246 1321 1373 798 5402 5400 5399 2247 799 801 800 5403 5404 4039 2248 799 1413 801 5405 5406 5403 2249 1365 1413 799 4145 5405 3156 2250 801 802 800 5407 5408 5404 2251 802 803 800 5409 5410 5408 2252 803 1031 800 5411 4041 5410 2253 801 905 802 5412 5413 5407 2254 801 906 905 5414 5415 5412 2255 801 1413 906 5406 5416 5414 2256 802 907 803 5417 5418 5409 2257 905 968 802 5419 5420 5413 2258 802 968 907 5420 5421 5417 2259 907 908 803 5422 5423 5418 2260 908 1416 803 5424 5425 5423 2261 803 1416 1031 5425 4072 5411 2262 827 1458 804 5426 5427 5343 2263 804 1430 1304 5428 3796 4816 2264 804 1458 1430 5427 5429 5428 2265 805 1268 1086 2886 4596 5430 2266 1086 1356 805 5431 5432 5430 2267 805 1356 1341 5432 3276 2921 2268 806 811 807 5433 5434 4879 2269 806 1336 811 5435 5436 5433 2270 1198 1336 806 4641 5435 4276 2271 811 1048 807 5437 5438 5434 2272 1048 1418 807 5439 5440 5438 2273 807 1418 1327 5440 5441 4881 2274 1183 1184 808 2703 5442 5328 2275 1184 1407 808 5443 5444 5442 2276 808 1407 1354 5444 5445 4896 2277 1067 1068 809 3110 5446 3231 2278 1068 1419 809 5447 5448 5446 2279 809 1419 1290 5448 5449 4336 2280 1402 1403 810 5450 5451 4651 2281 1403 1436 810 5452 5453 5451 2282 810 1436 1421 5453 5454 4949 2283 811 1197 1048 5455 2669 5437 2284 811 1393 1197 5456 5457 5455 2285 1336 1393 811 4911 5456 5436 2286 813 1247 812 5458 5459 4223 2287 1247 1385 812 5460 5461 5459 2288 812 1385 1352 5461 4786 4216 2289 814 815 813 5462 5463 4225 2290 815 817 813 5464 5465 5463 2291 817 1247 813 5466 5458 5465 2292 814 816 815 5467 5468 5462 2293 814 1381 816 5469 5470 5467 2294 1333 1381 814 3950 5469 4226 2295 816 1109 815 5471 5472 5468 2296 815 818 817 5473 5474 5464 2297 815 1109 818 5472 5475 5473 2298 816 1110 1109 5476 5477 5471 2299 816 1111 1110 5478 5479 5476 2300 816 1381 1111 5470 5480 5478 2301 818 989 817 5481 5482 5474 2302 989 1012 817 5483 5484 5482 2303 1012 1247 817 5485 5466 5484 2304 818 1054 989 5486 4452 5481 2305 818 1055 1054 5487 5488 5486 2306 818 1109 1055 5475 5489 5487 2307 874 875 819 5490 5491 4630 2308 875 1459 819 5492 5493 5491 2309 819 1459 1391 5493 5494 4636 2310 821 1396 820 5495 5496 4938 2311 820 1457 1059 5497 5498 4936 2312 1396 1457 820 5499 5497 5496 2313 890 891 821 5500 5501 4940 2314 891 1397 821 5502 5503 5501 2315 821 1397 1396 5503 2721 5495 2316 822 828 823 5504 5505 4954 2317 822 1442 828 5506 5507 5504 2318 1421 1442 822 5508 5506 4951 2319 828 842 823 5509 5510 5505 2320 842 932 823 5511 5512 5510 2321 932 1042 823 5513 4956 5512 2322 824 943 839 5514 5515 4717 2323 824 1447 943 5516 5517 5514 2324 1412 1447 824 5008 5516 4356 2325 837 1494 825 5518 5519 4668 2326 825 1495 1490 5520 5521 4664 2327 1494 1495 825 5522 5520 5519 2328 830 1476 826 5523 5524 5394 2329 826 1488 1001 5525 5526 4966 2330 1476 1488 826 5527 5525 5524 2331 827 1455 1301 5345 2739 5528 2332 1301 1481 827 5529 5530 5528 2333 827 1481 1458 5530 4916 5426 2334 828 843 842 5531 5532 5509 2335 828 1465 843 5533 5534 5531 2336 1442 1465 828 3841 5533 5507 2337 832 1478 829 5535 5536 4853 2338 829 1468 1423 5537 5538 4841 2339 829 1478 1468 5536 5539 5537 2340 830 1334 1128 5396 4946 5540 2341 1128 1482 830 5541 5542 5540 2342 830 1482 1476 5542 2756 5523 2343 831 1484 1368 5543 4287 4296 2344 1461 1484 831 5544 5543 5545 2345 831 1490 1461 4666 5546 5545 2346 859 860 832 5547 5548 4855 2347 860 1487 832 5549 5550 5548 2348 832 1487 1478 5550 4031 5535 2349 834 1500 833 5551 5552 4983 2350 833 1502 1450 5553 5554 4981 2351 1500 1502 833 5555 5553 5552 2352 835 836 834 5556 5557 4985 2353 836 1040 834 5558 5559 5557 2354 1040 1500 834 2308 5551 5559 2355 835 1485 836 5560 5561 5556 2356 1432 1489 835 4290 5562 4986 2357 835 1489 1485 5562 5563 5560 2358 836 1041 1040 5564 5565 5558 2359 836 1493 1041 5566 5567 5564 2360 1485 1493 836 4976 5566 5561 2361 999 1000 837 5105 5568 4670 2362 1000 1492 837 5569 5570 5568 2363 1492 1494 837 2851 5518 5570 2364 1070 1071 838 5571 5572 4731 2365 1071 1072 838 2311 5573 5572 2366 1072 1452 838 2432 5042 5573 2367 839 935 840 5574 5575 4719 2368 839 1581 935 5576 5577 5574 2369 943 1581 839 2200 5576 5515 2370 935 936 840 5578 5579 5575 2371 936 983 840 5580 5581 5579 2372 983 1146 840 4186 4721 5581 2373 841 1171 902 5582 5583 4724 2374 911 933 841 5584 5585 5003 2375 933 1171 841 2186 5582 5585 2376 843 926 842 5586 5587 5532 2377 926 1522 842 5588 5589 5587 2378 842 1522 932 5589 2223 5511 2379 843 927 926 5590 5591 5586 2380 843 1470 927 5592 5593 5590 2381 1465 1470 843 5594 5592 5534 2382 844 924 845 5595 5596 4764 2383 844 1520 924 5597 5598 5595 2384 928 1520 844 5599 5597 4998 2385 924 925 845 5600 5601 5596 2386 925 1269 845 5602 5603 5601 2387 845 1269 1265 5603 5604 4766 2388 847 938 846 5605 5606 5356 2389 846 1544 934 5607 5608 5131 2390 938 1544 846 2404 5607 5606 2391 847 939 938 5609 5610 5605 2392 847 940 939 5611 5612 5609 2393 847 1374 940 5358 5613 5611 2394 848 1534 912 5614 5615 4747 2395 979 980 848 5616 5617 4696 2396 980 1534 848 5618 5614 5617 2397 1020 1021 849 5619 5620 4701 2398 1021 1535 849 5621 5622 5620 2399 849 1535 1121 5622 5623 4752 2400 1214 1216 850 5624 5625 4706 2401 1216 1576 850 5626 5627 5625 2402 850 1576 1231 5627 5628 4761 2403 915 1561 851 5629 5630 5267 2404 851 1562 1236 5631 5632 5261 2405 1561 1562 851 5633 5631 5630 2406 852 1564 1155 5634 5635 5180 2407 1236 1563 852 5636 5637 5189 2408 1563 1564 852 5638 5634 5637 2409 1155 1565 853 5639 5640 5026 2410 853 1565 1536 5640 5641 5642 2411 1536 1575 853 5643 5021 5642 2412 854 1526 855 5644 5645 5308 2413 854 1261 1143 5307 5646 5647 2414 1143 1526 854 2362 5644 5647 2415 855 1517 856 5648 5649 5310 2416 855 1274 1165 5650 1689 5651 2417 1165 1517 855 2171 5648 5651 2418 855 1526 1274 5645 2363 5650 2419 856 1345 1331 5652 4431 5312 2420 856 1596 1345 5653 5654 5652 2421 1517 1596 856 5655 5653 5649 2422 858 945 857 5656 5657 5045 2423 945 948 857 2460 5658 5657 2424 948 1424 857 5659 4769 5658 2425 858 946 945 5660 5661 5656 2426 858 947 946 5662 2473 5660 2427 858 1452 947 5046 2428 5662 2428 859 957 860 5663 5664 5547 2429 859 958 957 5665 2384 5663 2430 859 1445 958 4856 5666 5665 2431 957 963 860 5667 5668 5664 2432 963 1480 860 5669 5670 5668 2433 1480 1487 860 5671 5549 5670 2434 861 954 862 5672 5673 5109 2435 861 1297 954 5674 4210 5672 2436 964 1297 861 3775 5674 5079 2437 954 955 862 5675 5676 5673 2438 955 1454 862 5677 5678 5676 2439 862 1454 1435 5678 2342 5111 2440 863 1035 966 5679 3040 5081 2441 863 1433 1035 5680 2976 5679 2442 1385 1433 863 5681 5680 4785 2443 864 1360 1074 5682 2179 5075 2444 1303 1360 864 2100 5682 5683 2445 864 1435 1303 5113 2340 5683 2446 865 981 866 5684 5685 5239 2447 865 1004 981 5686 3242 5684 2448 865 1097 1004 5231 5687 5686 2449 981 982 866 5688 5689 5685 2450 982 1361 866 5690 5691 5689 2451 866 1361 1210 5691 5692 5241 2452 867 1030 999 5693 5107 4671 2453 867 1429 1030 5694 3186 5693 2454 1264 1429 867 3146 5694 4451 2455 869 1088 868 5695 5696 4993 2456 1088 1395 868 4715 5697 5696 2457 1395 1401 868 5321 4859 5697 2458 931 1527 869 5698 5699 4995 2459 869 1089 1088 5700 5701 5695 2460 869 1527 1089 5699 2397 5700 2461 871 1200 870 5702 5703 5323 2462 1200 1392 870 4590 5704 5703 2463 1392 1401 870 4861 5319 5704 2464 873 1022 871 5705 5706 5325 2465 1022 1023 871 5707 5708 5706 2466 1023 1200 871 5709 5702 5708 2467 872 1086 1032 5710 4594 5339 2468 1038 1356 872 3273 5711 5122 2469 872 1356 1086 5711 5431 5710 2470 873 1226 1022 5712 3419 5705 2471 1066 1226 873 3411 5712 5713 2472 873 1270 1066 5326 5156 5713 2473 874 1002 875 5714 5715 5490 2474 874 1013 1002 5716 3527 5714 2475 874 1276 1013 4631 5717 5716 2476 1002 1003 875 5718 5719 5715 2477 1003 1456 875 5720 5721 5719 2478 1456 1459 875 4286 5492 5721 2479 876 1391 991 4646 5722 5723 2480 991 1430 876 3795 5724 5723 2481 1430 1458 876 5429 4912 5724 2482 993 1409 877 2867 5725 5102 2483 1409 1467 877 2591 5726 5725 2484 877 1467 1455 5726 2741 5346 2485 1034 1339 878 5727 3351 5728 2486 878 1363 1034 5729 5141 5728 2487 1311 1363 878 3806 5729 3341 2488 880 1258 879 5730 5731 4373 2489 879 1370 1094 5732 3641 3696 2490 1258 1370 879 4056 5732 5731 2491 881 882 880 5733 5734 4375 2492 882 1026 880 5735 5736 5734 2493 1026 1258 880 4680 5730 5736 2494 881 937 882 5737 5738 5733 2495 881 1322 937 5739 5740 5737 2496 881 1324 1322 4376 5036 5739 2497 937 1532 882 5741 5742 5738 2498 882 1027 1026 5743 5744 5735 2499 882 1532 1027 5742 5745 5743 2500 1156 1306 883 5746 5747 3891 2501 883 1306 1305 5747 4901 5748 2502 1305 1307 883 5388 3904 5748 2503 885 1346 884 5749 5750 3968 2504 884 1319 1277 5751 3901 3921 2505 884 1346 1319 5750 5265 5751 2506 1342 1346 885 5270 5749 5752 2507 885 1387 1342 5753 5754 5752 2508 1362 1387 885 5755 5753 3970 2509 886 1328 1321 5756 3461 5398 2510 886 1337 1328 5757 3376 5756 2511 886 1340 1337 5353 3811 5757 2512 888 1362 887 5758 5759 4755 2513 887 1313 1292 5760 3936 4601 2514 887 1362 1313 5759 3971 5760 2515 1121 1122 888 5761 5762 4756 2516 1122 1387 888 5763 5764 5762 2517 888 1387 1362 5764 5755 5758 2518 1056 1441 889 2487 5765 4586 2519 1441 1501 889 2259 5766 5765 2520 889 1501 1493 5766 5767 4972 2521 890 1399 891 5768 5769 5500 2522 1278 1380 890 4546 5770 4941 2523 1380 1399 890 5221 5768 5770 2524 891 1410 1397 5771 5772 5502 2525 1399 1422 891 5773 5774 5769 2526 891 1422 1410 5774 5775 5771 2527 893 1491 892 5776 5777 5058 2528 1491 1504 892 4626 5778 5777 2529 892 1504 1499 5778 5779 4961 2530 965 1364 893 3065 5780 5060 2531 1364 1498 893 3020 5781 5780 2532 893 1498 1491 5781 5782 5776 2533 894 1237 895 5783 5784 4922 2534 1161 1366 894 5158 5785 4920 2535 894 1366 1237 5785 4777 5783 2536 895 897 896 5786 5787 4924 2537 895 899 897 5788 5789 5786 2538 895 1237 899 5784 5790 5788 2539 897 898 896 5791 5792 5787 2540 898 994 896 5793 5794 5792 2541 994 1294 896 4205 4926 5794 2542 897 951 898 5795 5796 5791 2543 899 1203 897 5797 5798 5789 2544 897 1203 951 5798 5799 5795 2545 951 952 898 2380 5800 5796 2546 952 953 898 5801 5802 5800 2547 953 994 898 5803 5793 5802 2548 899 1503 1203 5804 2248 5797 2549 1237 1400 899 4780 5805 5790 2550 1400 1503 899 5806 5804 5805 2551 1300 1434 900 3261 5807 5808 2552 900 1481 1300 4915 5809 5808 2553 900 1434 1393 5807 5810 4909 2554 901 1451 1444 5811 3056 4616 2555 901 1498 1451 5812 3021 5811 2556 1491 1498 901 5782 5812 4625 2557 1171 1508 902 5813 5814 5583 2558 1499 1504 902 5779 4726 5815 2559 902 1508 1499 5814 4987 5815 2560 903 1495 1029 5816 5817 2911 2561 1461 1490 903 5546 5818 4970 2562 1490 1495 903 5521 5816 5818 2563 904 1484 1461 5819 5544 4971 2564 904 1489 1484 5820 4291 5819 2565 1485 1489 904 5563 5820 4975 2566 906 909 905 5821 5822 5415 2567 909 1584 905 2447 5823 5822 2568 905 1584 968 5823 5824 5419 2569 906 910 909 5825 5826 5821 2570 906 1446 910 5827 5828 5825 2571 1413 1446 906 4146 5827 5416 2572 907 916 908 5829 5830 5422 2573 907 1547 916 5831 2285 5829 2574 968 1547 907 5832 5831 5421 2575 916 917 908 5833 5834 5830 2576 917 918 908 5835 5836 5834 2577 918 1416 908 5837 5424 5836 2578 910 1531 909 5838 5839 5826 2579 909 1531 1166 5839 2241 2444 2580 910 1471 1212 5840 5841 5842 2581 1212 1531 910 2245 5838 5842 2582 1446 1471 910 5843 5840 5828 2583 911 944 933 5844 5845 5584 2584 911 1546 944 5846 2343 5844 2585 962 1546 911 5847 5846 5005 2586 912 914 913 5848 5849 4749 2587 912 1551 914 5850 5851 5848 2588 1534 1551 912 2268 5850 5615 2589 914 1472 913 5852 5853 5849 2590 913 1473 1462 5854 5855 4751 2591 1472 1473 913 4446 5854 5853 2592 1359 1472 914 5856 5852 5857 2593 914 1553 1359 5858 5859 5857 2594 1551 1553 914 5860 5858 5851 2595 1342 1428 915 5861 5862 5269 2596 1428 1560 915 5863 5864 5862 2597 1560 1561 915 2378 5629 5864 2598 916 1521 917 5865 5866 5833 2599 1186 1521 916 2455 5865 2283 2600 917 919 918 5867 5868 5835 2601 917 1045 919 5869 5870 5867 2602 917 1521 1045 5866 5871 5869 2603 919 920 918 5872 5873 5868 2604 920 1255 918 5874 5875 5873 2605 1255 1416 918 4076 5837 5875 2606 919 921 920 5876 5877 5872 2607 919 923 921 5878 5879 5876 2608 919 1045 923 5870 5880 5878 2609 921 922 920 5881 5882 5877 2610 922 977 920 5883 5884 5882 2611 977 1255 920 5885 5874 5884 2612 921 1550 922 5886 5887 5881 2613 923 1549 921 5888 5889 5879 2614 1549 1550 921 2415 5886 5889 2615 922 978 977 5890 4742 5883 2616 922 1552 978 5891 5892 5890 2617 1550 1552 922 5893 5891 5887 2618 1045 1046 923 5894 5895 5880 2619 1046 1548 923 5896 5897 5895 2620 1548 1549 923 5898 5888 5897 2621 924 1515 925 2281 5899 5600 2622 924 1520 1221 5598 2434 2278 2623 1243 1269 925 4371 5602 5900 2624 925 1594 1243 5901 5902 5900 2625 1515 1594 925 5903 5901 5899 2626 927 1516 926 5904 2355 5591 2627 1240 1522 926 2225 5588 2353 2628 1470 1474 927 4366 5905 5593 2629 1474 1593 927 5906 5907 5905 2630 927 1593 1516 5907 5908 5904 2631 929 930 928 5909 5910 5000 2632 930 1599 928 5911 5912 5910 2633 928 1599 1520 5912 2436 5599 2634 929 1568 930 5913 5914 5909 2635 1231 1567 929 5915 5916 5001 2636 1567 1568 929 5917 5913 5916 2637 1514 1542 930 1629 5918 5919 2638 930 1568 1514 5914 2480 5919 2639 1542 1599 930 2438 5911 5918 2640 1176 1527 931 2399 5698 2251 2641 931 1530 1177 4996 5920 2253 2642 932 1545 1042 5921 5922 5513 2643 1273 1545 932 2427 5921 2221 2644 944 1582 933 1838 2188 5845 2645 934 1523 1036 2234 5923 5133 2646 934 1544 1262 5608 2405 2231 2647 935 1528 936 2372 5924 5578 2648 935 1581 1167 5577 2205 2369 2649 936 1471 983 5925 5926 5580 2650 1212 1471 936 5841 5925 5927 2651 936 1528 1212 5924 5928 5927 2652 1322 1585 937 5929 5930 5740 2653 937 1601 1532 5931 2265 5741 2654 1585 1601 937 5932 5931 5930 2655 939 942 938 5933 2400 5610 2656 940 941 939 5934 5935 5612 2657 941 1477 939 5936 5937 5935 2658 939 1477 942 5937 2271 5933 2659 940 1449 941 5938 5939 5934 2660 1374 1427 940 3996 5940 5613 2661 1427 1449 940 3191 5938 5940 2662 941 1411 1051 5941 5942 5943 2663 1051 1477 941 5944 5936 5943 2664 941 1449 1411 5939 5945 5941 2665 1447 1587 943 5946 2202 5517 2666 946 992 945 5947 2462 5661 2667 946 1511 992 2477 2040 5947 2668 948 1192 1024 2463 2292 5948 2669 1024 1424 948 5375 5659 5948 2670 949 1169 950 2291 2449 5370 2671 1170 1415 950 5949 5372 2452 2672 951 1203 1202 5799 2246 2382 2673 952 960 953 5950 5951 5801 2674 952 1193 960 2383 2209 5950 2675 960 1463 953 5952 5953 5951 2676 953 995 994 5954 4202 5803 2677 953 1463 995 5953 5955 5954 2678 954 956 955 4208 5956 5675 2679 956 1463 955 5957 5958 5956 2680 1159 1454 955 5959 5677 5960 2681 955 1463 1159 5958 5961 5960 2682 956 1351 995 4211 4206 5962 2683 995 1463 956 5955 5957 5962 2684 957 1241 963 2387 2216 5667 2685 958 1469 959 5963 5964 2388 2686 1445 1469 958 5056 5963 5666 2687 959 1469 1383 5964 5965 2112 2688 1159 1463 960 5961 5952 2207 2689 1383 1469 961 5965 5054 2178 2690 986 1546 962 2347 5847 5097 2691 1425 1480 963 2501 5669 2219 2692 964 1323 1050 5080 5170 3772 2693 990 1044 965 5360 3062 5061 2694 966 996 967 3038 5966 5083 2695 996 1464 967 5967 5968 5966 2696 967 1096 1095 5969 5970 5085 2697 967 1464 1096 5968 4659 5969 2698 1168 1547 968 2287 5832 5971 2699 968 1584 1168 5824 2448 5971 2700 969 976 970 5972 2293 5047 2701 972 976 969 2331 5972 5038 2702 970 1518 971 2297 5973 5049 2703 971 1007 1005 5974 4317 5051 2704 971 1008 1007 5975 5976 5974 2705 971 1518 1008 5973 5977 5975 2706 973 974 972 5978 2327 5040 2707 973 975 974 5979 2468 5978 2708 973 1505 975 5980 5981 5979 2709 1450 1505 973 5982 5980 5041 2710 1505 1506 975 2410 5983 5981 2711 1506 1510 975 2168 2471 5983 2712 1087 1255 977 4075 5885 4745 2713 978 1569 979 5984 5985 4746 2714 1552 1569 978 2321 5984 5892 2715 979 1569 980 5985 5986 5616 2716 980 1573 1534 5987 2270 5618 2717 980 1569 1538 5986 2319 5988 2718 1538 1573 980 2011 5987 5988 2719 981 1006 982 3245 5989 5688 2720 1006 1417 982 2866 5990 5989 2721 982 1406 1361 5991 3044 5690 2722 982 1417 1406 5990 2836 5991 2723 983 1471 984 5926 5992 4184 2724 984 1471 1446 5992 5843 4142 2725 1036 1523 986 5923 5993 5098 2726 986 1523 1163 5993 2235 2345 2727 988 1437 987 5994 5995 5115 2728 987 1437 1343 5995 5996 4806 2729 988 1114 1076 5117 3014 5997 2730 1076 1289 988 2561 5998 5997 2731 1289 1437 988 2871 5994 5998 2732 989 1244 1012 4455 2972 5483 2733 1391 1459 991 5494 4282 5722 2734 1343 1437 993 5996 2869 5103 2735 997 998 996 5999 6000 3041 2736 998 1464 996 6001 5967 6000 2737 997 1234 998 2991 6002 5999 2738 1234 1357 998 3096 6003 6002 2739 1357 1486 998 4051 6004 6003 2740 998 1486 1464 6004 4661 6001 2741 1001 1496 1000 6005 6006 5108 2742 1000 1496 1492 6006 6007 5569 2743 1488 1496 1001 4036 6005 5526 2744 1002 1118 1003 3530 6008 5718 2745 1118 1440 1003 5145 6009 6008 2746 1440 1453 1003 4606 6010 6009 2747 1453 1456 1003 6011 5720 6010 2748 1097 1098 1004 5211 6012 5687 2749 1098 1350 1004 2996 3246 6012 2750 1008 1051 1007 6013 6014 5976 2751 1051 1411 1007 5942 4319 6014 2752 1008 1533 1051 6015 6016 6013 2753 1008 1288 1263 6017 1874 6018 2754 1263 1533 1008 2276 6015 6018 2755 1008 1518 1288 5977 2299 6017 2756 1010 1335 1011 5349 6019 5361 2757 1011 1058 1044 6020 3066 5363 2758 1011 1317 1058 6021 2951 6020 2759 1011 1335 1317 6019 2944 6021 2760 1012 1433 1247 2975 6022 5485 2761 1276 1320 1013 4001 3521 5717 2762 1015 1016 1014 6023 6024 5013 2763 1016 1018 1014 6025 4394 6024 2764 1015 1557 1016 6026 6027 6023 2765 1017 1555 1015 6028 6029 5015 2766 1555 1557 1015 2230 6026 6029 2767 1016 1019 1018 6030 5163 6025 2768 1016 1559 1019 6031 6032 6030 2769 1557 1559 1016 6033 6031 6027 2770 1358 1359 1017 6034 6035 5016 2771 1359 1554 1017 6036 6037 6035 2772 1554 1555 1017 6038 6028 6037 2773 1019 1570 1020 6039 6040 5166 2774 1559 1570 1019 2352 6039 6032 2775 1020 1570 1021 6040 6041 5619 2776 1021 1574 1535 6042 2184 5621 2777 1021 1570 1539 6041 2350 6043 2778 1539 1574 1021 1975 6042 6043 2779 1022 1245 1023 3421 6044 5707 2780 1023 1245 1104 6044 3446 6045 2781 1104 1332 1023 6046 6047 6045 2782 1023 1332 1200 6047 4587 5709 2783 1025 1209 1208 5138 3802 3410 2784 1027 1028 1026 6048 4677 5744 2785 1027 1519 1028 6049 6050 6048 2786 1027 1248 1196 6051 1737 6052 2787 1196 1519 1027 2316 6049 6052 2788 1027 1532 1248 5745 2263 6051 2789 1028 1071 1070 6053 5571 4681 2790 1028 1519 1071 6050 2313 6053 2791 1029 1495 1353 5817 6054 2526 2792 1057 1318 1032 2943 5341 4592 2793 1468 1478 1033 5539 4027 3013 2794 1034 1388 1339 5333 3416 5727 2795 1411 1449 1037 5945 3189 4321 2796 1038 1438 1414 5123 3171 3275 2797 1073 1378 1039 3993 5128 3119 2798 1041 1497 1040 6055 2305 5565 2799 1479 1497 1041 2148 6055 6056 2800 1041 1501 1479 6057 2260 6056 2801 1493 1501 1041 5767 6057 5567 2802 1042 1545 1043 5922 2421 5032 2803 1043 1585 1322 2425 5929 5034 2804 1045 1600 1046 6058 6059 5894 2805 1521 1600 1045 2457 6058 5871 2806 1046 1543 1513 6060 1766 6061 2807 1513 1548 1046 2466 5896 6061 2808 1046 1600 1543 6059 2458 6060 2809 1197 1434 1047 6062 3257 2668 2810 1404 1418 1048 3991 5439 2671 2811 1050 1314 1049 5168 3801 3776 2812 1051 1533 1477 6016 2277 5944 2813 1052 1334 1290 4943 5397 6063 2814 1290 1419 1052 5449 4927 6063 2815 1054 1174 1053 6064 2831 4456 2816 1055 1174 1054 3240 6064 5488 2817 1109 1112 1055 6065 3237 5489 2818 1059 1448 1128 6066 6067 4944 2819 1059 1457 1448 5498 3271 6066 2820 1061 1062 1060 6068 6069 3510 2821 1062 1125 1060 6070 3536 6069 2822 1061 1063 1062 6071 6072 6068 2823 1061 1064 1063 6073 6074 6071 2824 1061 1379 1064 3511 6075 6073 2825 1063 1065 1062 6076 6077 6072 2826 1065 1390 1062 3669 6078 6077 2827 1062 1390 1125 6078 3576 6070 2828 1064 1408 1063 6079 6080 6074 2829 1063 1403 1065 6081 6082 6076 2830 1063 1408 1403 6080 6083 6081 2831 1064 1398 1254 6084 3551 6085 2832 1254 1408 1064 4325 6079 6085 2833 1379 1398 1064 3486 6084 6075 2834 1065 1403 1402 6082 5450 3671 2835 1069 1439 1068 6086 6087 3111 2836 1068 1439 1419 6087 4931 5447 2837 1386 1439 1069 6088 6086 3061 2838 1108 1142 1075 5202 6089 2993 2839 1142 1164 1075 4526 2966 6089 2840 1078 1283 1077 6090 2731 3248 2841 1079 1080 1078 6091 6092 3250 2842 1080 1082 1078 6093 6094 6092 2843 1082 1283 1078 3265 6090 6094 2844 1079 1081 1080 6095 6096 6091 2845 1079 1431 1081 6097 6098 6095 2846 1384 1431 1079 2680 6097 3251 2847 1081 1466 1080 6099 6100 6096 2848 1080 1083 1082 6101 6102 6093 2849 1080 1466 1083 6100 6103 6101 2850 1325 1371 1081 5251 6104 6105 2851 1081 1431 1325 6098 6106 6105 2852 1371 1466 1081 5245 6099 6104 2853 1083 1084 1082 6107 3262 6102 2854 1083 1085 1084 6108 5190 6107 2855 1083 1475 1085 6109 6110 6108 2856 1466 1475 1083 5246 6109 6103 2857 1085 1483 1284 6111 3042 5193 2858 1475 1483 1085 6112 6111 6110 2859 1089 1282 1088 6113 4712 5701 2860 1141 1282 1089 6114 6113 2395 2861 1093 1315 1091 6115 5302 4560 2862 1092 1348 1175 6116 3326 4561 2863 1092 1394 1348 5378 3651 6116 2864 1188 1315 1093 3256 6115 2736 2865 1096 1473 1095 6117 4442 5970 2866 1462 1473 1096 5855 6117 4657 2867 1099 1601 1585 2262 5932 2426 2868 1100 1553 1551 2440 5860 2266 2869 1377 1453 1101 6118 4602 3771 2870 1102 1230 1103 6119 6120 3442 2871 1153 1230 1102 6121 6119 3556 2872 1103 1162 1104 6122 6123 3444 2873 1103 1291 1162 6124 5313 6122 2874 1230 1291 1103 4865 6124 6120 2875 1162 1332 1104 6125 6046 6123 2876 1204 1205 1105 6126 6127 3386 2877 1205 1250 1105 6128 3431 6127 2878 1106 1373 1107 6129 6130 3481 2879 1106 1389 1373 3601 6131 6129 2880 1107 1373 1321 6130 5402 3459 2881 1110 1112 1109 6132 6065 5477 2882 1111 1426 1110 6133 6134 5479 2883 1110 1113 1112 6135 6136 6132 2884 1110 1426 1113 6134 6137 6135 2885 1111 1382 1127 6138 4246 6139 2886 1127 1426 1111 5391 6133 6139 2887 1381 1382 1111 3951 6138 5480 2888 1113 1132 1112 2872 3241 6136 2889 1113 1426 1287 6137 5392 2874 2890 1423 1468 1114 5538 3016 5118 2891 1115 1457 1396 3268 5499 2717 2892 1181 1257 1116 3898 5256 3982 2893 1373 1389 1117 6131 4021 5401 2894 1340 1354 1120 5354 6140 3810 2895 1354 1407 1120 5445 5152 6140 2896 1121 1556 1122 6141 6142 5761 2897 1535 1556 1121 2182 6141 5623 2898 1122 1428 1387 6143 6144 5763 2899 1122 1558 1428 6145 6146 6143 2900 1556 1558 1122 6147 6145 6142 2901 1189 1293 1123 2791 5289 3252 2902 1124 1239 1238 6148 6149 1701 2903 1124 1516 1239 2357 6150 6148 2904 1157 1307 1126 3906 5386 4245 2905 1448 1482 1128 6151 5541 6067 2906 1129 1131 1130 6152 6153 3912 2907 1129 1227 1131 3861 3612 6152 2908 1131 1347 1130 6154 6155 6153 2909 1130 1344 1286 6156 5279 3914 2910 1130 1347 1344 6155 5299 6156 2911 1275 1347 1131 6157 6154 3615 2912 1134 1135 1133 6158 6159 3413 2913 1135 1272 1133 5147 3449 6159 2914 1134 1136 1135 6160 6161 6158 2915 1134 1375 1136 6162 6163 6160 2916 1134 1388 1375 3415 5336 6162 2917 1136 1298 1135 4459 5149 6161 2918 1136 1375 1310 6163 6164 4461 2919 1137 1139 1138 6165 6166 4707 2920 1137 1282 1139 4716 6167 6165 2921 1139 1140 1138 2193 6168 6166 2922 1140 1143 1138 2359 6169 6168 2923 1143 1261 1138 5646 4709 6169 2924 1139 1282 1141 6167 6114 2195 2925 1144 1272 1235 3451 5150 3816 2926 1148 1587 1149 2204 6170 2333 2927 1149 1595 1150 6171 6172 2335 2928 1149 1587 1447 6170 5946 6173 2929 1447 1595 1149 5010 6171 6173 2930 1150 1598 1253 6174 6175 2337 2931 1524 1525 1150 4991 6176 6177 2932 1150 1595 1524 6172 5011 6177 2933 1525 1598 1150 6178 6174 6176 2934 1151 1562 1561 2212 5633 2374 2935 1229 1230 1153 4863 6121 3626 2936 1154 1470 1465 4363 5594 3837 2937 1564 1565 1155 2393 5639 5635 2938 1286 1306 1156 5277 5746 3916 2939 1158 1454 1159 2339 5959 2210 2940 1251 1252 1160 3986 5175 3656 2941 1372 1405 1161 6179 5160 4921 2942 1329 1332 1162 4591 6125 5316 2943 1400 1415 1170 4781 5949 6180 2944 1170 1503 1400 6181 5806 6180 2945 1420 1503 1170 2250 6181 2453 2946 1172 1508 1171 6182 5813 2190 2947 1172 1525 1508 6183 4989 6182 2948 1172 1598 1525 6184 6178 6183 2949 1529 1598 1172 6185 6184 2191 2950 1173 1552 1550 2318 5893 2411 2951 1177 1179 1178 6186 2416 2255 2952 1177 1597 1179 6187 6188 6186 2953 1530 1597 1177 5031 6187 5920 2954 1179 1509 1180 6189 6190 2418 2955 1179 1597 1509 6188 5029 6189 2956 1180 1515 1507 6191 2282 2420 2957 1509 1594 1180 6192 6193 6190 2958 1180 1594 1515 6193 5903 6191 2959 1536 1565 1182 5641 2389 2237 2960 1185 1338 1183 3987 2705 5330 2961 1267 1376 1184 3286 6194 2706 2962 1376 1407 1184 5154 5443 6194 2963 1327 1418 1185 5441 3989 5331 2964 1249 1558 1187 6195 6196 1963 2965 1187 1558 1556 6196 6147 2180 2966 1190 1405 1191 6197 6198 3571 2967 1369 1405 1190 5162 6197 3611 2968 1191 1405 1372 6198 6179 3706 2969 1194 1488 1476 4033 5527 2752 2970 1421 1436 1195 5454 4322 6199 2971 1195 1442 1421 3840 5508 6199 2972 1393 1434 1197 5810 6062 5457 2973 1199 1502 1500 2407 5555 2309 2974 1201 1568 1567 2479 5917 2322 2975 1204 1206 1205 3648 6200 6126 2976 1206 1207 1205 6201 6202 6200 2977 1207 1275 1205 6203 6204 6202 2978 1205 1275 1250 6204 3616 6128 2979 1206 1349 1207 6205 5298 6201 2980 1206 1394 1349 3650 5379 6205 2981 1207 1347 1275 5296 6157 6203 2982 1361 1483 1210 3046 6206 5692 2983 1210 1483 1475 6206 6112 5242 2984 1212 1528 1211 5928 2373 2244 2985 1265 1269 1213 5604 4367 4126 2986 1215 1541 1214 6207 6208 5195 2987 1214 1541 1216 6208 6209 5624 2988 1217 1218 1215 6210 6211 5197 2989 1218 1566 1215 6212 6213 6211 2990 1215 1566 1541 6213 2302 6207 2991 1216 1572 1537 6214 1915 6215 2992 1537 1576 1216 2325 5626 6215 2993 1541 1572 1216 2304 6214 6209 2994 1217 1219 1218 4378 6216 6210 2995 1219 1540 1218 5273 6217 6216 2996 1540 1571 1218 6218 6219 6217 2997 1218 1571 1566 6219 6220 6212 2998 1222 1571 1223 6221 6222 2238 2999 1224 1571 1222 6223 6221 1927 3000 1223 1575 1536 6224 5643 2240 3001 1223 1571 1540 6222 6218 6225 3002 1540 1575 1223 5274 6224 6225 3003 1566 1571 1224 6220 6223 2301 3004 1228 1564 1563 2392 5638 2213 3005 1231 1576 1567 5628 2326 5915 3006 1232 1559 1557 2349 6033 2226 3007 1345 1512 1233 6226 6227 4430 3008 1233 1512 1474 6227 6228 4364 3009 1562 1563 1236 2215 5636 5632 3010 1239 1285 1238 6229 2172 6149 3011 1239 1512 1285 6230 6231 6229 3012 1239 1593 1512 6232 6233 6230 3013 1516 1593 1239 5908 6232 6150 3014 1243 1509 1242 6234 5027 4370 3015 1243 1594 1509 5902 6192 6234 3016 1247 1433 1385 6022 5681 5460 3017 1249 1560 1558 2377 6235 6195 3018 1253 1598 1529 6175 6185 1826 3019 1310 1375 1256 6164 5334 4481 3020 1397 1410 1260 5772 3277 2720 3021 1492 1496 1266 6007 4034 2848 3022 1271 1555 1554 2229 6038 2441 3023 1280 1422 1279 6236 6237 5248 3024 1279 1422 1399 6237 5773 5219 3025 1325 1460 1280 6238 6239 5250 3026 1280 1443 1422 6240 6241 6236 3027 1280 1460 1443 6239 6242 6240 3028 1512 1596 1285 6243 6244 6231 3029 1285 1596 1517 6244 5655 2174 3030 1295 1482 1448 2755 6151 3269 3031 1296 1439 1386 4930 6088 3071 3032 1300 1301 1299 6245 2737 3260 3033 1300 1481 1301 5809 5529 6245 3034 1443 1460 1308 6242 2677 3280 3035 1431 1460 1325 2681 6238 6106 3036 1326 1549 1548 2414 5898 2464 3037 1387 1428 1342 6144 5861 5754 3038 1345 1596 1512 5654 6243 6226 3039 1353 1495 1494 6054 5522 2849 3040 1355 1487 1480 4030 5671 2499 3041 1358 1472 1359 4445 5856 6034 3042 1553 1554 1359 2443 6036 5859 3043 1377 1456 1453 4285 6011 6118 3044 1408 1436 1403 4326 5452 6083 3045 1422 1443 1410 6241 3281 5775 3046 1558 1560 1428 6235 5863 6146 3047 1502 1505 1450 2409 5982 5554 3048 1512 1593 1474 6233 5906 6228 2 5 9 300 3049 2 6246 6395 6398 6399 6400 3050 6252 2 6395 6401 6400 6402 3051 6248 4 6392 6403 6404 6405 3052 4 79 6392 1611 6406 6404 3053 6249 6 6394 6407 6408 6409 3054 6 6286 6394 6410 6411 6408 3055 8 6251 6393 6412 6413 6414 3056 113 8 6393 1621 6414 6415 3057 6246 6247 6391 6416 6417 6418 3058 6246 6391 6395 6418 6419 6399 3059 6247 6248 6316 6420 6421 6422 3060 6247 6316 6391 6422 6423 6417 3061 6316 6248 6392 6421 6405 6424 3062 6250 6249 6390 6425 6426 6427 3063 6390 6249 6394 6426 6409 6428 3064 6251 6250 6317 6429 6430 6431 3065 6317 6250 6390 6430 6427 6432 3066 6251 6317 6393 6431 6433 6413 3067 6253 6252 6303 6434 6435 6436 3068 6303 6252 6395 6435 6402 6437 3069 6254 6253 6318 6438 6439 6440 3070 6253 6303 6318 6436 6441 6439 3071 6255 6254 6312 6442 6443 6444 3072 6312 6254 6318 6443 6440 6445 3073 6256 6255 6333 6446 6447 6448 3074 6255 6312 6333 6444 6449 6447 3075 6257 6256 6389 6450 6451 6452 3076 6256 6333 6389 6448 6453 6451 3077 6258 6257 6296 6454 6455 6456 3078 6296 6257 6389 6455 6452 6457 3079 6259 6258 6384 6458 6459 6460 3080 6258 6296 6384 6456 6461 6459 3081 6260 6259 6306 6462 6463 6464 3082 6306 6259 6384 6463 6460 6465 3083 6261 6260 6370 6466 6467 6468 3084 6260 6306 6370 6464 6469 6467 3085 6262 6261 6364 6470 6471 6472 3086 6364 6261 6370 6471 6468 6473 3087 6263 6262 6294 6474 6475 6476 3088 6294 6262 6364 6475 6472 6477 3089 6264 6263 6359 6478 6479 6480 3090 6263 6294 6359 6476 6481 6479 3091 6265 6264 6297 6482 6483 6484 3092 6297 6264 6359 6483 6480 6485 3093 6266 6265 6357 6486 6487 6488 3094 6265 6297 6357 6484 6489 6487 3095 6267 6266 6355 6490 6491 6492 3096 6355 6266 6357 6491 6488 6493 3097 6268 6267 6311 6494 6495 6496 3098 6311 6267 6355 6495 6492 6497 3099 6269 6268 6360 6498 6499 6500 3100 6268 6311 6360 6496 6501 6499 3101 6270 6269 6307 6502 6503 6504 3102 6307 6269 6360 6503 6500 6505 3103 6271 6270 6372 6506 6507 6508 3104 6270 6307 6372 6504 6509 6507 3105 6272 6271 6305 6510 6511 6512 3106 6305 6271 6372 6511 6508 6513 3107 6273 6272 6374 6514 6515 6516 3108 6272 6305 6374 6512 6517 6515 3109 6274 6273 6313 6518 6519 6520 3110 6313 6273 6374 6519 6516 6521 3111 6275 6274 6343 6522 6523 6524 3112 6274 6313 6343 6520 6525 6523 3113 6276 6275 6376 6526 6527 6528 3114 6275 6343 6376 6524 6529 6527 3115 6277 6276 6308 6530 6531 6532 3116 6308 6276 6376 6531 6528 6533 3117 6278 6277 6379 6534 6535 6536 3118 6277 6308 6379 6532 6537 6535 3119 6279 6278 6304 6538 6539 6540 3120 6304 6278 6379 6539 6536 6541 3121 6280 6279 6338 6542 6543 6544 3122 6279 6304 6338 6540 6545 6543 3123 6281 6280 6287 6546 6547 6548 3124 6287 6280 6338 6547 6544 6549 3125 6282 6281 6336 6550 6551 6552 3126 6281 6287 6336 6548 6553 6551 3127 6283 6282 6326 6554 6555 6556 3128 6326 6282 6336 6555 6552 6557 3129 6284 6283 6314 6558 6559 6560 3130 6314 6283 6326 6559 6556 6561 3131 6285 6284 6322 6562 6563 6564 3132 6284 6314 6322 6560 6565 6563 3133 6286 6285 6302 6566 6567 6568 3134 6302 6285 6322 6567 6564 6569 3135 6286 6302 6394 6568 6570 6411 3136 79 80 6388 1898 6571 6572 3137 79 6388 6392 6572 6573 6406 3138 80 81 6300 1902 6574 6575 3139 80 6300 6388 6575 6576 6571 3140 81 82 6331 1906 6577 6578 3141 6300 81 6331 6574 6578 6579 3142 82 83 6298 1910 6580 6581 3143 82 6298 6331 6581 6582 6577 3144 83 84 6334 1914 6583 6584 3145 6298 83 6334 6580 6584 6585 3146 84 85 6381 1918 6586 6587 3147 6334 84 6381 6583 6587 6588 3148 85 86 6309 1922 6589 6590 3149 85 6309 6381 6590 6591 6586 3150 86 87 6369 1926 6592 6593 3151 6309 86 6369 6589 6593 6594 3152 87 88 6288 1930 6595 6596 3153 87 6288 6369 6596 6597 6592 3154 88 89 6367 1934 6598 6599 3155 6288 88 6367 6595 6599 6600 3156 89 90 6361 1938 6601 6602 3157 89 6361 6367 6602 6603 6598 3158 90 91 6310 1942 6604 6605 3159 90 6310 6361 6605 6606 6601 3160 91 92 6373 1946 6607 6608 3161 6310 91 6373 6604 6608 6609 3162 92 93 6351 1950 6610 6611 3163 92 6351 6373 6611 6612 6607 3164 93 94 6289 1954 6613 6614 3165 93 6289 6351 6614 6615 6610 3166 94 95 6375 1958 6616 6617 3167 6289 94 6375 6613 6617 6618 3168 95 96 6293 1962 6619 6620 3169 95 6293 6375 6620 6621 6616 3170 96 97 6362 1966 6622 6623 3171 6293 96 6362 6619 6623 6624 3172 97 98 6290 1970 6625 6626 3173 97 6290 6362 6626 6627 6622 3174 98 99 6350 1974 6628 6629 3175 6290 98 6350 6625 6629 6630 3176 99 100 6299 1978 6631 6632 3177 99 6299 6350 6632 6633 6628 3178 100 101 6348 1982 6634 6635 3179 6299 100 6348 6631 6635 6636 3180 101 102 6291 1986 6637 6638 3181 101 6291 6348 6638 6639 6634 3182 102 103 6347 1990 6640 6641 3183 6291 102 6347 6637 6641 6642 3184 103 104 6383 1994 6643 6644 3185 6347 103 6383 6640 6644 6645 3186 104 105 6292 1998 6646 6647 3187 104 6292 6383 6647 6648 6643 3188 105 106 6341 2002 6649 6650 3189 6292 105 6341 6646 6650 6651 3190 106 107 6315 2006 6652 6653 3191 106 6315 6341 6653 6654 6649 3192 107 108 6380 2010 6655 6656 3193 6315 107 6380 6652 6656 6657 3194 108 109 6328 2014 6658 6659 3195 108 6328 6380 6659 6660 6655 3196 109 110 6295 2018 6661 6662 3197 109 6295 6328 6662 6663 6658 3198 110 111 6330 2022 6664 6665 3199 6295 110 6330 6661 6665 6666 3200 111 112 6301 2026 6667 6668 3201 111 6301 6330 6668 6669 6664 3202 112 113 6387 2030 6670 6671 3203 6301 112 6387 6667 6671 6672 3204 6387 113 6393 6670 6415 6673 3205 6287 6329 6336 6674 6675 6553 3206 6329 6287 6337 6674 6676 6677 3207 6337 6287 6338 6676 6549 6678 3208 6366 6288 6367 6679 6600 6680 3209 6288 6366 6368 6679 6681 6682 3210 6288 6368 6369 6682 6683 6597 3211 6351 6289 6352 6615 6684 6685 3212 6352 6289 6353 6684 6686 6687 3213 6353 6289 6375 6686 6618 6688 3214 6290 6350 6378 6630 6689 6690 3215 6362 6290 6363 6627 6691 6692 3216 6363 6290 6378 6691 6690 6693 3217 6344 6291 6345 6694 6695 6696 3218 6291 6344 6348 6694 6697 6639 3219 6345 6291 6347 6695 6642 6698 3220 6340 6292 6341 6699 6651 6700 3221 6292 6340 6342 6699 6701 6702 3222 6292 6342 6383 6702 6703 6648 3223 6293 6356 6375 6704 6705 6621 3224 6356 6293 6382 6704 6706 6707 3225 6293 6362 6382 6624 6708 6706 3226 6359 6294 6377 6481 6709 6710 3227 6294 6364 6365 6477 6711 6712 3228 6294 6365 6377 6712 6713 6709 3229 6295 6325 6327 6714 6715 6716 3230 6325 6295 6330 6714 6666 6717 3231 6295 6327 6328 6716 6718 6663 3232 6296 6335 6386 6719 6720 6721 3233 6335 6296 6389 6719 6457 6722 3234 6384 6296 6386 6461 6721 6723 3235 6297 6354 6357 6724 6725 6489 3236 6354 6297 6358 6724 6726 6727 3237 6358 6297 6359 6726 6485 6728 3238 6298 6321 6331 6729 6730 6582 3239 6321 6298 6332 6729 6731 6732 3240 6332 6298 6334 6731 6585 6733 3241 6346 6299 6348 6734 6636 6735 3242 6299 6346 6349 6734 6736 6737 3243 6299 6349 6350 6737 6738 6633 3244 6319 6300 6320 6739 6740 6741 3245 6300 6319 6388 6739 6742 6576 3246 6320 6300 6331 6740 6579 6743 3247 6301 6323 6324 6744 6745 6746 3248 6323 6301 6387 6744 6672 6747 3249 6301 6324 6330 6746 6748 6669 3250 6302 6322 6323 6569 6749 6750 3251 6302 6323 6396 6750 6751 6752 3252 6302 6390 6394 6753 6428 6570 3253 6390 6302 6396 6753 6752 6754 3254 6318 6303 6319 6441 6755 6756 3255 6319 6303 6397 6755 6757 6758 3256 6391 6303 6395 6759 6437 6419 3257 6303 6391 6397 6759 6760 6757 3258 6338 6304 6339 6545 6761 6762 3259 6339 6304 6340 6761 6763 6764 3260 6340 6304 6379 6763 6541 6765 3261 6305 6349 6374 6766 6767 6517 3262 6349 6305 6378 6766 6768 6769 3263 6305 6372 6378 6513 6770 6768 3264 6306 6368 6370 6771 6772 6469 3265 6368 6306 6371 6771 6773 6774 3266 6371 6306 6384 6773 6465 6775 3267 6307 6360 6382 6505 6776 6777 3268 6307 6363 6372 6778 6779 6509 3269 6363 6307 6382 6778 6777 6780 3270 6308 6342 6379 6781 6782 6537 3271 6342 6308 6385 6781 6783 6784 3272 6308 6376 6385 6533 6785 6783 3273 6309 6369 6371 6594 6786 6787 3274 6309 6371 6386 6787 6788 6789 3275 6381 6309 6386 6591 6789 6790 3276 6358 6310 6373 6791 6609 6792 3277 6310 6358 6377 6791 6793 6794 3278 6361 6310 6377 6606 6794 6795 3279 6353 6311 6355 6796 6497 6797 3280 6311 6353 6356 6796 6798 6799 3281 6311 6356 6360 6799 6800 6501 3282 6312 6318 6320 6445 6801 6802 3283 6312 6320 6321 6802 6803 6804 3284 6312 6321 6333 6804 6805 6449 3285 6343 6313 6344 6525 6806 6807 3286 6344 6313 6346 6806 6808 6809 3287 6346 6313 6374 6808 6521 6810 3288 6322 6314 6324 6565 6811 6812 3289 6324 6314 6325 6811 6813 6814 3290 6325 6314 6326 6813 6561 6815 3291 6315 6337 6339 6816 6817 6818 3292 6337 6315 6380 6816 6657 6819 3293 6315 6339 6341 6818 6820 6654 3294 6388 6316 6392 6821 6424 6573 3295 6316 6388 6397 6821 6822 6823 3296 6391 6316 6397 6423 6823 6760 3297 6317 6387 6393 6824 6673 6433 3298 6387 6317 6396 6824 6825 6826 3299 6317 6390 6396 6432 6754 6825 3300 6318 6319 6320 6756 6741 6801 3301 6388 6319 6397 6742 6758 6822 3302 6321 6320 6331 6803 6743 6730 3303 6321 6332 6333 6732 6827 6805 3304 6323 6322 6324 6749 6812 6745 3305 6323 6387 6396 6747 6826 6751 3306 6324 6325 6330 6814 6717 6748 3307 6325 6326 6327 6815 6828 6715 3308 6327 6326 6336 6828 6557 6829 3309 6328 6327 6329 6718 6830 6831 3310 6329 6327 6336 6830 6829 6675 3311 6328 6329 6380 6831 6832 6660 3312 6329 6337 6380 6677 6819 6832 3313 6333 6332 6389 6827 6833 6453 3314 6332 6334 6335 6733 6834 6835 3315 6332 6335 6389 6835 6722 6833 3316 6335 6334 6381 6834 6588 6836 3317 6335 6381 6386 6836 6790 6720 3318 6337 6338 6339 6678 6762 6817 3319 6339 6340 6341 6764 6700 6820 3320 6342 6340 6379 6701 6765 6782 3321 6383 6342 6385 6703 6784 6837 3322 6343 6344 6345 6807 6696 6838 3323 6343 6345 6376 6838 6839 6529 3324 6344 6346 6348 6809 6735 6697 3325 6345 6347 6385 6698 6840 6841 3326 6376 6345 6385 6839 6841 6785 3327 6349 6346 6374 6736 6810 6767 3328 6347 6383 6385 6645 6837 6840 3329 6350 6349 6378 6738 6769 6689 3330 6351 6352 6354 6685 6842 6843 3331 6351 6354 6373 6843 6844 6612 3332 6352 6353 6355 6687 6797 6845 3333 6354 6352 6357 6842 6846 6725 3334 6352 6355 6357 6845 6493 6846 3335 6356 6353 6375 6798 6688 6705 3336 6354 6358 6373 6727 6792 6844 3337 6360 6356 6382 6800 6707 6776 3338 6358 6359 6377 6728 6710 6793 3339 6361 6365 6367 6847 6848 6603 3340 6365 6361 6377 6847 6795 6713 3341 6362 6363 6382 6692 6780 6708 3342 6372 6363 6378 6779 6693 6770 3343 6365 6364 6366 6711 6849 6850 3344 6366 6364 6370 6849 6473 6851 3345 6365 6366 6367 6850 6680 6848 3346 6368 6366 6370 6681 6851 6772 3347 6369 6368 6371 6683 6774 6786 3348 6371 6384 6386 6775 6723 6788 2 6 9 300 3349 1 7001 6852 7004 7005 7006 3350 6858 7001 1 7007 7004 7008 3351 6854 6998 3 7009 7010 7011 3352 3 6998 114 7010 7012 1606 3353 6855 6999 5 7013 7014 7015 3354 5 6999 6892 7014 7016 7017 3355 7 7000 6857 7018 7019 7020 3356 148 7000 7 7021 7018 1616 3357 6852 6995 6853 7022 7023 7024 3358 6852 7001 6995 7005 7025 7022 3359 6853 6920 6854 7026 7027 7028 3360 6853 6995 6920 7023 7029 7026 3361 6920 6998 6854 7030 7009 7027 3362 6856 6919 6855 7031 7032 7033 3363 6919 6999 6855 7034 7013 7032 3364 6857 6994 6856 7035 7036 7037 3365 6856 6994 6919 7036 7038 7031 3366 6857 7000 6994 7019 7039 7035 3367 6859 6909 6858 7040 7041 7042 3368 6909 7001 6858 7043 7007 7041 3369 6860 6923 6859 7044 7045 7046 3370 6859 6923 6909 7045 7047 7040 3371 6861 6916 6860 7048 7049 7050 3372 6916 6923 6860 7051 7044 7049 3373 6862 6936 6861 7052 7053 7054 3374 6861 6936 6916 7053 7055 7048 3375 6863 6992 6862 7056 7057 7058 3376 6862 6992 6936 7057 7059 7052 3377 6864 6902 6863 7060 7061 7062 3378 6902 6992 6863 7063 7056 7061 3379 6865 6987 6864 7064 7065 7066 3380 6864 6987 6902 7065 7067 7060 3381 6866 6912 6865 7068 7069 7070 3382 6912 6987 6865 7071 7064 7069 3383 6867 6978 6866 7072 7073 7074 3384 6866 6978 6912 7073 7075 7068 3385 6868 6972 6867 7076 7077 7078 3386 6972 6978 6867 7079 7072 7077 3387 6869 6900 6868 7080 7081 7082 3388 6900 6972 6868 7083 7076 7081 3389 6870 6961 6869 7084 7085 7086 3390 6869 6961 6900 7085 7087 7080 3391 6871 6903 6870 7088 7089 7090 3392 6903 6961 6870 7091 7084 7089 3393 6872 6955 6871 7092 7093 7094 3394 6871 6955 6903 7093 7095 7088 3395 6873 6921 6872 7096 7097 7098 3396 6921 6955 6872 7099 7092 7097 3397 6874 6957 6873 7100 7101 7102 3398 6873 6957 6921 7101 7103 7096 3399 6875 6899 6874 7104 7105 7106 3400 6899 6957 6874 7107 7100 7105 3401 6876 6962 6875 7108 7109 7110 3402 6875 6962 6899 7109 7111 7104 3403 6877 6896 6876 7112 7113 7114 3404 6896 6962 6876 7115 7108 7113 3405 6878 6967 6877 7116 7117 7118 3406 6877 6967 6896 7117 7119 7112 3407 6879 6968 6878 7120 7121 7122 3408 6878 6968 6967 7121 7123 7116 3409 6880 6917 6879 7124 7125 7126 3410 6917 6968 6879 7127 7120 7125 3411 6881 6986 6880 7128 7129 7130 3412 6880 6986 6917 7129 7131 7124 3413 6882 6948 6881 7132 7133 7134 3414 6948 6986 6881 7135 7128 7133 3415 6883 6913 6882 7136 7137 7138 3416 6913 6948 6882 7139 7132 7137 3417 6884 6944 6883 7140 7141 7142 3418 6883 6944 6913 7141 7143 7136 3419 6885 6910 6884 7144 7145 7146 3420 6910 6944 6884 7147 7140 7145 3421 6886 6950 6885 7148 7149 7150 3422 6885 6950 6910 7149 7151 7144 3423 6887 6893 6886 7152 7153 7154 3424 6893 6950 6886 7155 7148 7153 3425 6888 6997 6887 7156 7157 7158 3426 6887 6997 6893 7157 7159 7152 3427 6889 6922 6888 7160 7161 7162 3428 6922 6997 6888 7163 7156 7161 3429 6890 6930 6889 7164 7165 7166 3430 6889 6930 6922 7165 7167 7160 3431 6891 6907 6890 7168 7169 7170 3432 6907 6930 6890 7171 7164 7169 3433 6892 6990 6891 7172 7173 7174 3434 6891 6990 6907 7173 7175 7168 3435 6892 6999 6990 7016 7176 7172 3436 114 6991 115 7177 7178 2035 3437 114 6998 6991 7012 7179 7177 3438 115 6906 116 7180 7181 2039 3439 115 6991 6906 7178 7182 7180 3440 116 6934 117 7183 7184 2043 3441 6906 6934 116 7185 7183 7181 3442 117 6904 118 7186 7187 2047 3443 117 6934 6904 7184 7188 7186 3444 118 6937 119 7189 7190 2051 3445 6904 6937 118 7191 7189 7187 3446 119 6984 120 7192 7193 2055 3447 6937 6984 119 7194 7192 7190 3448 120 6914 121 7195 7196 2059 3449 120 6984 6914 7193 7197 7195 3450 121 6977 122 7198 7199 2063 3451 6914 6977 121 7200 7198 7196 3452 122 6894 123 7201 7202 2067 3453 122 6977 6894 7199 7203 7201 3454 123 6975 124 7204 7205 2071 3455 6894 6975 123 7206 7204 7202 3456 124 6970 125 7207 7208 2075 3457 124 6975 6970 7205 7209 7207 3458 125 6915 126 7210 7211 2079 3459 125 6970 6915 7208 7212 7210 3460 126 6980 127 7213 7214 2083 3461 6915 6980 126 7215 7213 7211 3462 127 6951 128 7216 7217 2087 3463 127 6980 6951 7214 7218 7216 3464 128 6895 129 7219 7220 2091 3465 128 6951 6895 7217 7221 7219 3466 129 6960 130 7222 7223 2095 3467 6895 6960 129 7224 7222 7220 3468 130 6981 131 7225 7226 2099 3469 6960 6981 130 7227 7225 7223 3470 131 6911 132 7228 7229 2103 3471 131 6981 6911 7226 7230 7228 3472 132 6971 133 7231 7232 2107 3473 6911 6971 132 7233 7231 7229 3474 133 6963 134 7234 7235 2111 3475 133 6971 6963 7232 7236 7234 3476 134 6905 135 7237 7238 2115 3477 134 6963 6905 7235 7239 7237 3478 135 6969 136 7240 7241 2119 3479 6905 6969 135 7242 7240 7238 3480 136 6897 137 7243 7244 2123 3481 136 6969 6897 7241 7245 7243 3482 137 6993 138 7246 7247 2127 3483 6897 6993 137 7248 7246 7244 3484 138 6947 139 7249 7250 2131 3485 138 6993 6947 7247 7251 7249 3486 139 6898 140 7252 7253 2135 3487 139 6947 6898 7250 7254 7252 3488 140 6941 141 7255 7256 2139 3489 6898 6941 140 7257 7255 7253 3490 141 6918 142 7258 7259 2143 3491 141 6941 6918 7256 7260 7258 3492 142 6988 143 7261 7262 2147 3493 6918 6988 142 7263 7261 7259 3494 143 6933 144 7264 7265 2151 3495 143 6988 6933 7262 7266 7264 3496 144 6901 145 7267 7268 2155 3497 144 6933 6901 7265 7269 7267 3498 145 6939 146 7270 7271 2159 3499 6901 6939 145 7272 7270 7268 3500 146 6927 147 7273 7274 2163 3501 146 6939 6927 7271 7275 7273 3502 147 6908 148 7276 7277 2167 3503 147 6927 6908 7274 7278 7276 3504 6908 7000 148 7279 7021 7277 3505 6940 6996 6893 7280 7281 7282 3506 6893 6997 6940 7159 7283 7282 3507 6893 6996 6950 7281 7284 7155 3508 6974 6975 6894 7285 7206 7286 3509 6894 6976 6974 7287 7288 7286 3510 6894 6977 6976 7203 7289 7287 3511 6951 6952 6895 7290 7291 7221 3512 6952 6953 6895 7292 7293 7291 3513 6953 6960 6895 7294 7224 7293 3514 6896 6985 6962 7295 7296 7115 3515 6896 6967 6965 7119 7297 7298 3516 6965 6985 6896 7299 7295 7298 3517 6897 6983 6949 7300 7301 7302 3518 6949 6993 6897 7303 7248 7302 3519 6969 6983 6897 7304 7300 7245 3520 6898 6942 6941 7305 7306 7257 3521 6898 6943 6942 7307 7308 7305 3522 6898 6947 6943 7254 7309 7307 3523 6899 6958 6957 7310 7311 7107 3524 6899 6959 6958 7312 7313 7310 3525 6899 6962 6959 7111 7314 7312 3526 6961 6982 6900 7315 7316 7087 3527 6900 6973 6972 7317 7318 7083 3528 6900 6982 6973 7316 7319 7317 3529 6901 6932 6931 7320 7321 7322 3530 6931 6939 6901 7323 7272 7322 3531 6901 6933 6932 7269 7324 7320 3532 6902 6989 6938 7325 7326 7327 3533 6938 6992 6902 7328 7063 7327 3534 6987 6989 6902 7329 7325 7067 3535 6903 6955 6954 7095 7330 7331 3536 6954 6956 6903 7332 7333 7331 3537 6956 6961 6903 7334 7091 7333 3538 6904 6934 6926 7188 7335 7336 3539 6926 6935 6904 7337 7338 7336 3540 6935 6937 6904 7339 7191 7338 3541 6963 6964 6905 7340 7341 7239 3542 6964 6966 6905 7342 7343 7341 3543 6966 6969 6905 7344 7242 7343 3544 6924 6925 6906 7345 7346 7347 3545 6906 6991 6924 7182 7348 7347 3546 6925 6934 6906 7349 7185 7346 3547 6928 6929 6907 7350 7351 7352 3548 6907 6990 6928 7175 7353 7352 3549 6929 6930 6907 7354 7171 7351 3550 6927 6928 6908 7355 7356 7278 3551 6928 7003 6908 7357 7358 7356 3552 6994 7000 6908 7039 7279 7359 3553 6908 7003 6994 7358 7360 7359 3554 6923 6924 6909 7361 7362 7047 3555 6924 7002 6909 7363 7364 7362 3556 6995 7001 6909 7025 7043 7365 3557 6909 7002 6995 7364 7366 7365 3558 6942 6944 6910 7367 7147 7368 3559 6910 6946 6942 7369 7370 7368 3560 6910 6950 6946 7151 7371 7369 3561 6911 6981 6959 7230 7372 7373 3562 6959 6985 6911 7374 7375 7373 3563 6911 6985 6971 7375 7376 7233 3564 6912 6978 6976 7075 7377 7378 3565 6976 6979 6912 7379 7380 7378 3566 6979 6987 6912 7381 7071 7380 3567 6913 6944 6943 7143 7382 7383 3568 6943 6945 6913 7384 7385 7383 3569 6945 6948 6913 7386 7139 7385 3570 6914 6979 6977 7387 7388 7200 3571 6914 6989 6979 7389 7390 7387 3572 6984 6989 6914 7391 7389 7197 3573 6956 6980 6915 7392 7215 7393 3574 6915 6982 6956 7394 7395 7393 3575 6970 6982 6915 7396 7394 7212 3576 6916 6925 6923 7397 7398 7051 3577 6916 6926 6925 7399 7400 7397 3578 6916 6936 6926 7055 7401 7399 3579 6966 6968 6917 7402 7127 7403 3580 6917 6983 6966 7404 7405 7403 3581 6917 6986 6983 7131 7406 7404 3582 6941 6946 6918 7407 7408 7260 3583 6946 6996 6918 7409 7410 7408 3584 6918 6996 6988 7410 7411 7263 3585 6990 6999 6919 7176 7034 7412 3586 6919 7003 6990 7413 7414 7412 3587 6994 7003 6919 7360 7413 7038 3588 6991 6998 6920 7179 7030 7415 3589 6920 7002 6991 7416 7417 7415 3590 6995 7002 6920 7366 7416 7029 3591 6921 6953 6952 7418 7292 7419 3592 6952 6955 6921 7420 7099 7419 3593 6921 6957 6953 7103 7421 7418 3594 6930 6931 6922 7422 7423 7167 3595 6931 6932 6922 7321 7424 7423 3596 6932 6997 6922 7425 7163 7424 3597 6923 6925 6924 7398 7345 7361 3598 6991 7002 6924 7417 7363 7348 3599 6926 6934 6925 7335 7349 7400 3600 6926 6936 6935 7401 7426 7337 3601 6927 6929 6928 7427 7350 7355 3602 6927 6939 6929 7275 7428 7427 3603 6990 7003 6928 7414 7357 7353 3604 6929 6931 6930 7429 7422 7354 3605 6929 6939 6931 7428 7323 7429 3606 6933 6940 6932 7430 7431 7324 3607 6940 6997 6932 7283 7425 7431 3608 6933 6988 6940 7266 7432 7430 3609 6936 6992 6935 7059 7433 7426 3610 6935 6938 6937 7434 7435 7339 3611 6935 6992 6938 7433 7328 7434 3612 6938 6984 6937 7436 7194 7435 3613 6938 6989 6984 7326 7391 7436 3614 6988 6996 6940 7411 7280 7432 3615 6942 6946 6941 7370 7407 7306 3616 6943 6944 6942 7382 7367 7308 3617 6943 6947 6945 7309 7437 7384 3618 6947 6993 6945 7251 7438 7437 3619 6945 6949 6948 7439 7440 7386 3620 6945 6993 6949 7438 7303 7439 3621 6950 6996 6946 7284 7409 7371 3622 6949 6986 6948 7441 7135 7440 3623 6983 6986 6949 7406 7441 7301 3624 6951 6954 6952 7442 7443 7290 3625 6951 6980 6954 7218 7444 7442 3626 6954 6955 6952 7330 7420 7443 3627 6957 6958 6953 7311 7445 7421 3628 6958 6960 6953 7446 7294 7445 3629 6954 6980 6956 7444 7392 7332 3630 6956 6982 6961 7395 7315 7334 3631 6959 6981 6958 7372 7447 7313 3632 6958 6981 6960 7447 7227 7446 3633 6962 6985 6959 7296 7374 7314 3634 6963 6965 6964 7448 7449 7340 3635 6963 6971 6965 7236 7450 7448 3636 6965 6967 6964 7297 7451 7449 3637 6964 6968 6966 7452 7402 7342 3638 6967 6968 6964 7123 7452 7451 3639 6971 6985 6965 7376 7299 7450 3640 6966 6983 6969 7405 7304 7344 3641 6970 6975 6973 7209 7453 7454 3642 6973 6982 6970 7319 7396 7454 3643 6973 6974 6972 7455 7456 7318 3644 6974 6978 6972 7457 7079 7456 3645 6973 6975 6974 7453 7285 7455 3646 6976 6978 6974 7377 7457 7288 3647 6977 6979 6976 7388 7379 7289 3648 6979 6989 6987 7390 7329 7381 3 1 11 23216 3649 9014 9884 9860 11059 11199 11200 11201 11202 11203 11204 3650 7831 9884 7832 10315 11205 11206 11207 11208 11209 11210 3651 9045 8660 9324 9696 11211 11212 11213 11214 11215 11216 3652 9243 9719 249 9823 11217 11218 11219 11220 11221 11222 3653 831 9686 9213 9913 11223 11224 11225 11226 11227 11228 3654 9438 10042 1465 10923 11229 11230 11231 11232 11233 11234 3655 9301 9999 1210 10641 11235 11236 11237 11238 11239 11240 3656 1204 1105 9261 9700 3386 11241 11242 11243 11244 11245 3657 658 9392 10051 10357 11246 11247 11248 11249 11250 11251 3658 9999 10486 1210 10641 11252 11253 11236 11240 11239 11254 3659 7996 9968 9315 10604 11255 11256 11257 11258 11259 11260 3660 7832 10315 9884 10540 11209 11210 11206 11261 11262 11263 3661 247 9243 249 9823 11264 11219 2663 11265 11221 11220 3662 658 10051 1070 10357 11248 11266 4311 11249 11267 11250 3663 831 9213 571 9913 11225 11268 4295 11226 11269 11227 3664 658 9392 1070 10051 11246 11270 4311 11248 11266 11247 3665 9477 9850 1283 10125 11271 11272 11273 11274 11275 11276 3666 1142 9642 9283 10442 11277 11278 11279 11280 11281 11282 3667 8950 9576 9265 9733 11283 11284 11285 11286 11287 11288 3668 752 9626 10039 10864 11289 11290 11291 11292 11293 11294 3669 7829 9884 9014 11059 11295 11199 11296 11297 11202 11204 3670 573 10086 9215 10131 11298 11299 11300 11301 11302 11303 3671 497 9747 9224 9974 11304 11305 11306 11307 11308 11309 3672 282 9695 9350 10322 11310 11311 11312 11313 11314 11315 3673 553 9411 1351 9684 11316 11317 3741 11318 11319 11320 3674 760 761 9255 10871 5215 11321 11322 11323 11324 11325 3675 8193 10023 9407 10471 11326 11327 11328 11329 11330 11331 3676 1283 9850 9477 10320 11272 11271 11273 11332 11333 11334 3677 1465 9438 1470 10042 11231 11335 5594 11230 11336 11229 3678 312 9572 9365 9723 11337 11338 11339 11340 11341 11342 3679 8193 9407 9703 10471 11328 11343 11344 11329 11345 11330 3680 1504 10150 9631 10367 11346 11347 11348 11349 11350 11351 3681 9742 10307 9954 10767 11352 11353 11354 11355 11356 11357 3682 7996 9315 9753 10604 11257 11358 11359 11258 11360 11259 3683 9265 9576 8950 10340 11284 11283 11285 11361 11362 11363 3684 9370 9932 1203 9969 11364 11365 11366 11367 11368 11369 3685 7921 8561 8637 9410 11370 11371 11372 11373 11374 11375 3686 8191 8263 9389 9701 11376 11377 11378 11379 11380 11381 3687 1089 1527 9977 10435 2397 11382 11383 11384 11385 11386 3688 7871 9250 7869 10754 11387 11388 11389 11390 11391 11392 3689 8249 8124 8862 9417 11393 11394 11395 11396 11397 11398 3690 9138 9437 9592 10067 11399 11400 11401 11402 11403 11404 3691 573 709 9215 10086 4304 11405 11300 11298 11299 11406 3692 9655 9777 484 10762 11407 11408 11409 11410 11411 11412 3693 7848 10214 9596 10927 11413 11414 11415 11416 11417 11418 3694 897 1203 9370 9932 5798 11366 11419 11420 11364 11365 3695 8102 8897 9238 10043 11421 11422 11423 11424 11425 11426 3696 9326 10305 1066 10667 11427 11428 11429 11430 11431 11432 3697 831 9213 9686 10753 11225 11224 11223 11433 11434 11435 3698 9859 10304 8999 10419 11436 11437 11438 11439 11440 11441 3699 312 9365 304 9723 11339 11442 2958 11340 11443 11341 3700 9301 10486 9999 10641 11444 11252 11235 11238 11240 11254 3701 6992 7772 9505 10253 11445 11446 11447 11448 11449 11450 3702 9124 9806 9454 10347 11451 11452 11453 11454 11455 11456 3703 6959 10139 9692 10174 11457 11458 11459 11460 11461 11462 3704 1475 1210 9301 9999 5242 11237 11463 11464 11235 11236 3705 569 9303 1377 10777 11465 11466 3786 11467 11468 11469 3706 7753 7703 9495 9698 11470 11471 11472 11473 11474 11475 3707 1090 9694 9333 9783 11476 11477 11478 11479 11480 11481 3708 8100 9868 9238 9985 11482 11483 11484 11485 11486 11487 3709 9378 9605 1277 10057 11488 11489 11490 11491 11492 11493 3710 7857 8999 9859 10304 11494 11438 11495 11496 11436 11437 3711 496 9224 497 10517 11497 11306 3908 11498 11499 11500 3712 9668 9679 1407 10143 11501 11502 11503 11504 11505 11506 3713 9326 1066 9812 10667 11429 11507 11508 11430 11509 11431 3714 8238 9375 9958 10487 11510 11511 11512 11513 11514 11515 3715 9072 10315 9588 10395 11516 11517 11518 11519 11520 11521 3716 282 1492 9695 10322 2847 11522 11310 11313 11315 11523 3717 573 9629 10086 10131 11524 11525 11298 11301 11303 11526 3718 595 9456 652 10709 11527 11528 4412 11529 11530 11531 3719 8055 9840 10306 10726 11532 11533 11534 11535 11536 11537 3720 9365 9572 312 9930 11338 11337 11339 11538 11539 11540 3721 374 9986 377 9991 11541 11542 3309 11543 11544 11545 3722 8074 9797 9457 10422 11546 11547 11548 11549 11550 11551 3723 8862 9417 8124 10624 11397 11398 11394 11552 11553 11554 3724 8796 6936 7772 10356 11555 11556 11557 11558 11559 11560 3725 617 1142 9283 10442 4524 11279 11561 11562 11281 11280 3726 553 1351 9411 10407 3741 11317 11316 11563 11564 11565 3727 9346 10314 9768 10805 11566 11567 11568 11569 11570 11571 3728 1313 9747 497 9974 11572 11304 3925 11573 11307 11309 3729 741 1034 9316 9705 5140 11574 11575 11576 11577 11578 3730 6936 9505 7772 10356 11579 11446 11556 11560 11559 11580 3731 760 9255 10021 10871 11322 11581 11582 11323 11583 11324 3732 8189 8820 8851 9204 11584 11585 11586 11587 11588 11589 3733 7921 9410 8637 10545 11373 11374 11372 11590 11591 11592 3734 8412 10183 9532 10266 11593 11594 11595 11596 11597 11598 3735 8279 9612 10046 11032 11599 11600 11601 11602 11603 11604 3736 573 709 1432 9215 4304 4306 4181 11300 11605 11405 3737 653 596 597 9225 4417 4122 4418 11606 11607 11608 3738 8131 8132 8133 9226 11609 11610 11611 11612 11613 11614 3739 497 496 506 9224 3908 3918 3917 11306 11615 11497 3740 7988 7992 8930 9232 11616 11617 11618 11619 11620 11621 3741 1328 391 387 9232 3374 3373 3375 11622 11623 11624 3742 8490 8420 8489 9220 11625 11626 11627 11628 11629 11630 3743 606 605 599 9237 4434 4433 4435 11631 11632 11633 3744 378 377 376 9246 3317 3310 3318 11634 11635 11636 3745 8100 8102 8897 9238 11637 11421 11638 11484 11422 11423 3746 7978 7979 7977 9246 11639 11640 11641 11642 11643 11644 3747 247 250 249 9243 2673 2672 2663 11264 11219 11645 3748 346 345 354 9248 3075 3163 3162 11646 11647 11648 3749 760 761 758 9255 5215 5214 5212 11322 11649 11321 3750 9008 8669 8667 9247 11650 11651 11652 11653 11654 11655 3751 8270 8329 8201 9273 11656 11657 11658 11659 11660 11661 3752 7970 7971 7972 9280 11662 11663 11664 11665 11666 11667 3753 7862 7865 7964 9285 11668 11669 11670 11671 11672 11673 3754 261 363 264 9285 2745 2744 2743 11674 11675 11676 3755 1164 617 1142 9283 3031 4524 4526 11677 11279 11561 3756 7996 7987 8942 9315 11678 11679 11680 11257 11681 11682 3757 9079 8362 8813 9301 11683 11684 11685 11686 11687 11688 3758 401 1104 1103 9310 3445 3444 3443 11689 11690 11691 3759 873 1226 1066 9326 5712 3411 5713 11692 11429 11693 3760 816 815 1109 9318 5468 5472 5471 11694 11695 11696 3761 741 1034 783 9316 5140 5139 4795 11575 11697 11574 3762 8938 8996 8410 9330 11698 11699 11700 11701 11702 11703 3763 8643 8693 7937 9333 11704 11705 11706 11707 11708 11709 3764 1039 336 1090 9333 3120 3106 3121 11710 11478 11711 3765 269 272 271 9335 2783 2782 2775 11712 11713 11714 3766 278 276 1174 9338 2818 2820 2819 11715 11716 11717 3767 9005 8427 9051 9349 11718 11719 11720 11721 11722 11723 3768 1113 1112 1132 9354 6136 3241 2872 11724 11725 11726 3769 8899 8640 8495 9347 11727 11728 11729 11730 11731 11732 3770 8889 7922 7876 9358 11733 11734 11735 11736 11737 11738 3771 1284 275 321 9358 2805 2814 2816 11739 11740 11741 3772 307 1012 1433 9364 2973 2975 2974 11742 11743 11744 3773 305 304 312 9365 2953 2958 2957 11745 11339 11442 3774 1454 955 862 9368 5677 5676 5678 11746 11747 11748 3775 1074 864 727 9366 5075 5074 5064 11749 11750 11751 3776 1297 554 464 9362 3761 3750 3759 11752 11753 11754 3777 8324 8557 8558 9373 11755 11756 11757 11758 11759 11760 3778 961 723 1469 9373 5053 5055 5054 11761 11762 11763 3779 1010 1330 625 9377 4566 4266 4564 11764 11765 11766 3780 8329 9801 9273 10630 11767 11768 11661 11769 11770 11771 3781 8367 8365 8366 9383 11772 11773 11774 11775 11776 11777 3782 834 1500 1040 9384 5551 2308 5559 11778 11779 11780 3783 1164 617 9283 9776 3031 11561 11677 11781 11782 11783 3784 9116 10248 9480 10372 11784 11785 11786 11787 11788 11789 3785 377 9986 9246 9991 11542 11790 11636 11544 11791 11545 3786 9436 9977 1527 10435 11792 11382 11793 11794 11386 11385 3787 374 9986 9991 10601 11541 11545 11543 11795 11796 11797 3788 9068 8191 8263 9389 11798 11376 11799 11800 11377 11378 3789 1407 9668 9323 9679 11503 11801 11802 11502 11803 11501 3790 332 10006 9694 10553 11804 11805 11806 11807 11808 11809 3791 1427 9209 940 10455 11810 11811 5940 11812 11813 11814 3792 8521 9739 9394 10361 11815 11816 11817 11818 11819 11820 3793 7857 10304 9859 10464 11496 11436 11495 11821 11822 11823 3794 7988 9232 8930 10490 11619 11620 11618 11824 11825 11826 3795 8935 10094 9873 10797 11827 11828 11829 11830 11831 11832 3796 9202 9983 1594 10010 11833 11834 11835 11836 11837 11838 3797 606 9237 9628 10192 11631 11839 11840 11841 11842 11843 3798 1328 9232 387 10485 11622 11623 3375 11844 11845 11846 3799 8195 9703 10468 10621 11847 11848 11849 11850 11851 11852 3800 8523 8521 9394 10361 11853 11817 11854 11855 11819 11818 3801 1105 1204 9261 10461 3386 11242 11241 11856 11857 11858 3802 9054 9362 8065 10363 11859 11860 11861 11862 11863 11864 3803 1090 9333 336 9783 11478 11711 3106 11479 11865 11480 3804 1463 9684 10130 10508 11866 11867 11868 11869 11870 11871 3805 645 10047 9213 10753 11872 11873 11874 11875 11435 11876 3806 9276 9468 10275 10547 11877 11878 11879 11880 11881 11882 3807 9317 9839 1107 9979 11883 11884 11885 11886 11887 11888 3808 332 342 10006 10553 3079 11889 11804 11807 11809 11890 3809 658 838 1070 9392 4729 4731 4311 11246 11270 11891 3810 569 1377 9303 10314 3786 11466 11465 11892 11893 11894 3811 9455 10555 9678 11090 11895 11896 11897 11898 11899 11900 3812 8132 8133 9226 10742 11610 11613 11614 11901 11902 11903 3813 8168 9645 9271 10227 11904 11905 11906 11907 11908 11909 3814 8318 9388 8251 10520 11910 11911 11912 11913 11914 11915 3815 9375 8238 9958 10110 11510 11512 11511 11916 11917 11918 3816 9763 10738 10269 10804 11919 11920 11921 11922 11923 11924 3817 8561 8637 9410 9798 11371 11374 11375 11925 11926 11927 3818 8660 9324 9696 10358 11212 11215 11216 11928 11929 11930 3819 8899 9347 8495 9795 11730 11731 11729 11931 11932 11933 3820 9763 9942 10738 10804 11934 11935 11919 11922 11924 11936 3821 1266 9350 282 10727 11937 11312 2546 11938 11939 11940 3822 758 9255 761 9791 11649 11321 5214 11941 11942 11943 3823 8523 8521 8522 9394 11853 11944 11945 11854 11946 11817 3824 376 378 9246 10557 3318 11634 11635 11947 11948 11949 3825 9250 9687 7871 9987 11950 11951 11387 11952 11953 11954 3826 8191 9701 9389 9835 11379 11380 11378 11955 11956 11957 3827 9831 10033 7981 10622 11958 11959 11960 11961 11962 11963 3828 7996 7987 9315 9968 11678 11682 11257 11255 11256 11964 3829 658 9894 9392 10357 11965 11966 11246 11249 11251 11967 3830 8055 10306 9990 10726 11534 11968 11969 11535 11970 11536 3831 304 9365 305 10389 11442 11745 2953 11971 11972 11973 3832 1284 9358 321 10486 11739 11740 2816 11974 11975 11976 3833 8451 9176 9398 9697 11977 11978 11979 11980 11981 11982 3834 8270 9273 8201 10468 11659 11660 11658 11983 11984 11985 3835 10172 10438 710 10525 11986 11987 11988 11989 11990 11991 3836 645 9213 831 10753 11874 11225 4294 11875 11433 11435 3837 8189 9204 8851 10742 11587 11588 11586 11992 11993 11994 3838 1594 9202 9832 9983 11835 11995 11996 11834 11997 11833 3839 9453 9981 1405 10377 11998 11999 12000 12001 12002 12003 3840 8738 9753 9641 10566 12004 12005 12006 12007 12008 12009 3841 1277 9605 9378 10293 11489 11488 11490 12010 12011 12012 3842 1454 9368 862 9833 11746 11747 5678 12013 12014 12015 3843 1164 9776 9283 9930 11781 11782 11677 12016 12017 12018 3844 1204 9700 9261 9872 11243 11244 11242 12019 12020 12021 3845 8315 9414 9680 10311 12022 12023 12024 12025 12026 12027 3846 1475 9301 1210 10339 11463 11237 5242 12028 12029 12030 3847 1427 940 1449 10455 5940 5938 3191 11812 12031 11813 3848 1379 9445 1064 10434 12032 12033 6075 12034 12035 12036 3849 497 9224 506 9974 11306 11615 3917 11307 12037 11308 3850 9237 9636 605 10134 12038 12039 11633 12040 12041 12042 3851 282 9350 9695 9769 11312 11311 11310 12043 12044 12045 3852 8237 9375 8238 10487 12046 11510 12047 12048 11513 11515 3853 9488 10334 9105 10503 12049 12050 12051 12052 12053 12054 3854 7831 9345 9884 10315 12055 12056 11205 11208 11210 12057 3855 9005 9349 9051 10662 11721 11722 11720 12058 12059 12060 3856 827 9234 804 9845 12061 12062 5343 12063 12064 12065 3857 9369 10130 9684 10508 12066 11867 12067 12068 11871 11870 3858 9278 10046 9612 11032 12069 11600 12070 12071 11604 11603 3859 9088 8127 9357 10522 12072 12073 12074 12075 12076 12077 3860 8195 10468 10166 10621 11849 12078 12079 11850 12080 11851 3861 8686 9342 9851 10706 12081 12082 12083 12084 12085 12086 3862 401 9310 1103 10722 11689 11690 3443 12087 12088 12089 3863 8131 9226 8133 10723 11612 11613 11611 12090 12091 12092 3864 9388 9729 8251 10520 12093 12094 11911 11915 11914 12095 3865 1321 9317 1107 9979 12096 11885 3459 12097 11887 11886 3866 9873 10094 8935 11040 11828 11827 11829 12098 12099 12100 3867 8578 8465 8464 10452 12101 12102 12103 12104 12105 12106 3868 1027 9678 10555 11090 12107 11896 12108 12109 11900 11899 3869 8331 10262 9413 10568 12110 12111 12112 12113 12114 12115 3870 1341 10369 9313 10669 12116 12117 12118 12119 12120 12121 3871 9289 10387 9892 10760 12122 12123 12124 12125 12126 12127 3872 7964 9285 9987 10263 11672 12128 12129 12130 12131 12132 3873 8173 9390 8606 10328 12133 12134 12135 12136 12137 12138 3874 401 1104 9310 10606 3445 11691 11689 12139 12140 12141 3875 8414 9532 8412 10183 12142 11595 12143 12144 11593 11594 3876 9088 9357 8123 10522 12074 12145 12146 12075 12147 12076 3877 9742 9539 10307 10767 12148 12149 11352 11355 11357 12150 3878 8329 9273 8270 10630 11661 11659 11656 11769 12151 11770 3879 1191 9282 425 10497 12152 12153 3563 12154 12155 12156 3880 9872 9989 385 10838 12157 12158 12159 12160 12161 12162 3881 7848 9596 7846 10927 11415 12163 12164 11416 12165 11417 3882 9014 9860 9884 10979 11201 11200 11199 12166 12167 12168 3883 9391 9934 8255 10223 12169 12170 12171 12172 12173 12174 3884 9390 9786 8606 10328 12175 12176 12134 12138 12137 12177 3885 955 862 9368 9847 5676 11747 11748 12178 12179 12180 3886 554 9362 1297 9847 11754 11752 3761 12181 12182 12183 3887 9072 7861 9588 10315 12184 12185 11518 11516 11517 12186 3888 9208 9663 8633 10218 12187 12188 12189 12190 12191 12192 3889 606 605 9237 10192 4434 11633 11631 11841 11843 12193 3890 8897 8100 9238 9985 11638 11484 11422 12194 11486 11485 3891 1237 1366 894 10377 4777 5785 5783 12195 12196 12197 3892 332 342 9694 10006 3079 12198 11806 11804 11805 11889 3893 7946 9712 8967 9796 12199 12200 12201 12202 12203 12204 3894 7867 9250 7871 9987 12205 11387 12206 12207 11953 11952 3895 376 9246 377 9986 11635 11636 3310 12208 11542 11790 3896 7964 9285 7865 9987 11672 11673 11669 12129 12209 12128 3897 377 9246 378 9991 11636 11634 3317 11544 12210 11791 3898 9246 9989 378 9991 12211 12212 11634 11791 12210 12213 3899 1066 9326 1226 10305 11429 11693 3411 11428 12214 11427 3900 9815 9883 7826 11091 12215 12216 12217 12218 12219 12220 3901 8318 8251 8347 10520 11912 12221 12222 11913 12223 11914 3902 9460 10033 9831 10622 12224 11958 12225 12226 11961 11963 3903 9741 9892 9289 10387 12227 12124 12228 12229 12122 12123 3904 7857 9859 8999 10419 11495 11438 11494 12230 11440 11439 3905 8146 9288 8902 9807 12231 12232 12233 12234 12235 12236 3906 7864 9266 7830 9815 12237 12238 12239 12240 12241 12242 3907 1066 873 9326 9812 5713 11692 11429 11507 11508 12243 3908 1226 9326 873 9813 11693 11692 5712 12244 12245 12246 3909 8256 9575 9395 10223 12247 12248 12249 12250 12251 12252 3910 9762 9876 9355 10388 12253 12254 12255 12256 12257 12258 3911 407 409 9296 10400 3472 12259 12260 12261 12262 12263 3912 8427 9051 9349 10711 11719 11722 11723 12264 12265 12266 3913 9378 10057 1277 10881 11491 11492 11490 12267 12268 12269 3914 336 9333 9976 10665 11711 12270 12271 12272 12273 12274 3915 9096 9578 9337 10231 12275 12276 12277 12278 12279 12280 3916 8737 10993 10185 11006 12281 12282 12283 12284 12285 12286 3917 8691 8886 8256 9395 12287 12288 12289 12290 12249 12291 3918 9044 8604 9331 10577 12292 12293 12294 12295 12296 12297 3919 1064 9445 1379 10381 12033 12032 6075 12298 12299 12300 3920 9096 9337 9578 10449 12277 12276 12275 12301 12302 12303 3921 9282 10008 425 10196 12304 12305 12153 12306 12307 12308 3922 10275 10547 9468 10676 11881 11882 11878 12309 12310 12311 3923 8738 9753 9260 10035 12004 12312 12313 12314 12315 12316 3924 596 597 9225 10822 4122 11607 11608 12317 12318 12319 3925 354 9248 345 10476 11647 11648 3163 12320 12321 12322 3926 9460 7981 10033 10622 12323 11959 12224 12226 11963 11962 3927 10185 10993 9529 11006 12282 12324 12325 12285 12326 12286 3928 595 10028 9456 10709 12327 12328 11527 11529 11531 12329 3929 1359 10344 9393 10599 12330 12331 12332 12333 12334 12335 3930 890 9220 891 9834 12336 12337 5500 12338 12339 12340 3931 632 652 595 9456 4413 4412 3959 12341 11527 11528 3932 9421 9896 8184 10906 12342 12343 12344 12345 12346 12347 3933 760 9255 758 10647 11322 11649 5212 12348 12349 12350 3934 8916 9868 8100 9985 12351 11482 12352 12353 11485 11487 3935 840 9952 656 10901 12354 12355 4720 12356 12357 12358 3936 386 9315 395 10433 12359 12360 3369 12361 12362 12363 3937 8942 9315 7987 10622 11681 11682 11679 12364 12365 12366 3938 7862 7865 9285 10564 11668 11673 11671 12367 12368 12369 3939 7858 7855 9275 10494 12370 12371 12372 12373 12374 12375 3940 8938 8996 9330 10933 11698 11703 11701 12376 12377 12378 3941 8155 9054 8065 10363 12379 11861 12380 12381 11863 11862 3942 385 9872 379 9989 12159 12382 3332 12158 12383 12157 3943 379 9872 442 9991 12382 12384 3334 12385 12386 12387 3944 1416 9551 9208 10346 12388 12389 12390 12391 12392 12393 3945 596 9225 653 10528 11608 11606 4417 12394 12395 12396 3946 1132 9354 1112 9955 11725 11726 3241 12397 12398 12399 3947 7902 8937 8921 9464 12400 12401 12402 12403 12404 12405 3948 890 891 9220 10535 5500 12337 12336 12406 12407 12408 3949 9432 9712 9050 10902 12409 12410 12411 12412 12413 12414 3950 9316 741 9705 9710 11575 11576 11577 12415 12416 12417 3951 9066 9643 9214 10745 12418 12419 12420 12421 12422 12423 3952 606 9237 599 10542 11631 11632 4435 12424 12425 12426 3953 9742 9954 9348 10767 11354 12427 12428 11355 12429 11356 3954 692 10129 9683 10534 12430 12431 12432 12433 12434 12435 3955 571 9213 831 11007 11268 11225 4295 12436 12437 12438 3956 8685 9342 8686 10465 12439 12081 12440 12441 12442 12443 3957 1105 1205 1204 10461 6127 6126 3386 11856 11858 12444 3958 1109 9318 815 9956 11695 11696 5472 12445 12446 12447 3959 1174 9338 276 9955 11716 11717 2820 12448 12449 12450 3960 1191 425 9282 10008 3563 12153 12152 12451 12304 12305 3961 9361 9956 1054 10853 12452 12453 12454 12455 12456 12457 3962 8737 9529 10993 11006 12458 12324 12281 12284 12286 12326 3963 9840 9459 10306 10726 12459 12460 11533 11537 11536 12461 3964 989 1054 9956 10853 4452 12453 12462 12463 12457 12456 3965 554 9362 9847 10229 11754 12183 12181 12464 12465 12466 3966 9706 9707 470 10314 12467 12468 12469 12470 12471 12472 3967 1304 9706 470 10314 12473 12469 3787 12474 12471 12470 3968 852 9626 9416 10039 12475 12476 12477 12478 12479 11290 3969 7902 9464 8921 10832 12403 12404 12402 12480 12481 12482 3970 7826 9883 9815 10095 12216 12215 12217 12483 12484 12485 3971 8427 9349 9005 10432 11723 11721 11718 12486 12487 12488 3972 9694 10006 9320 10553 11805 12489 12490 11808 12491 11809 3973 652 9456 10132 10709 11528 12492 12493 11530 12494 11531 3974 8889 7922 9358 10786 11733 11738 11736 12495 12496 12497 3975 8249 9417 8862 10281 11396 11397 11395 12498 12499 12500 3976 569 469 1377 10314 3785 3769 3786 11892 11894 12501 3977 7946 9712 9796 10527 12199 12204 12202 12502 12503 12504 3978 390 9871 9988 10978 12505 12506 12507 12508 12509 12510 3979 263 9266 1295 9841 12511 12512 2586 12513 12514 12515 3980 8420 9220 8490 10419 11630 11628 11625 12516 12517 12518 3981 8202 9465 9075 10621 12519 12520 12521 12522 12523 12524 3982 8637 9410 9798 10545 11374 11926 11927 11591 12525 11592 3983 354 346 9248 10257 3162 11646 11647 12526 12527 12528 3984 827 804 9234 10541 5343 12062 12061 12529 12530 12531 3985 8365 8366 9383 10428 11773 11776 11777 12532 12533 12534 3986 387 9232 391 10203 11623 11624 3373 12535 12536 12537 3987 7971 9280 7970 10204 11667 11665 11662 12538 12539 12540 3988 395 9315 386 10203 12360 12359 3369 12541 12542 12543 3989 7876 9358 7922 10208 11737 11738 11734 12544 12545 12546 3990 275 321 9358 10210 2814 11740 11741 12547 12548 12549 3991 8330 10262 8331 10568 12550 12110 12551 12552 12113 12115 3992 269 9335 271 10202 11712 11713 2775 12553 12554 12555 3993 801 10240 9466 11089 12556 12557 12558 12559 12560 12561 3994 890 9220 821 10535 12336 12562 4940 12406 12563 12407 3995 8897 9985 9238 10043 12194 11486 11422 11426 11425 12564 3996 9531 10316 1284 10486 12565 12566 12567 12568 11974 12569 3997 260 10267 9590 10550 12570 12571 12572 12573 12574 12575 3998 8324 8557 9373 10337 11755 11760 11758 12576 12577 12578 3999 9014 10395 9860 10979 12579 12580 11201 12166 12168 12581 4000 8363 9921 9821 10698 12582 12583 12584 12585 12586 12587 4001 9228 10018 10010 10392 12588 12589 12590 12591 12592 12593 4002 8813 9079 9301 10786 11685 11686 11687 12594 12595 12596 4003 9365 304 9723 9774 11442 11443 11341 12597 12598 12599 4004 1285 10226 9548 10403 12600 12601 12602 12603 12604 12605 4005 9069 9348 8562 10454 12606 12607 12608 12609 12610 12611 4006 9421 8184 9951 10906 12344 12612 12613 12345 12614 12346 4007 1313 9747 9974 10496 11572 11309 11573 12615 12616 12617 4008 8251 9729 9388 9917 12094 12093 11911 12618 12619 12620 4009 271 9335 272 10316 11713 11714 2782 12621 12622 12623 4010 1284 275 9358 10316 2805 11741 11739 12566 12624 12625 4011 1433 9364 1012 10317 11743 11744 2975 12626 12627 12628 4012 8146 9667 9288 9807 12629 12630 12231 12234 12236 12631 4013 9296 9839 407 10400 12632 12633 12260 12262 12261 12634 4014 1427 940 9209 9961 5940 11811 11810 12635 12636 12637 4015 9395 9575 8256 10684 12248 12247 12249 12638 12639 12640 4016 8362 9301 9079 9851 11688 11686 11683 12641 12642 12643 4017 442 9991 9872 10859 12386 12387 12384 12644 12645 12646 4018 1432 573 9215 10551 4181 11300 11605 12647 12648 12649 4019 1103 9310 1104 11025 11690 11691 3444 12650 12651 12652 4020 9990 10306 9459 10726 11968 12460 12653 11970 12461 11536 4021 1594 9202 1180 9832 11835 12654 6193 11996 12655 11995 4022 834 9384 1040 10352 11778 11779 5559 12656 12657 12658 4023 700 10142 9666 10448 12659 12660 12661 12662 12663 12664 4024 8967 9712 9295 9796 12200 12665 12666 12203 12667 12204 4025 8686 9342 8685 10024 12081 12439 12440 12668 12669 12670 4026 9498 10314 9346 10805 12671 11566 12672 12673 11569 11571 4027 7837 10415 9227 10464 12674 12675 12676 12677 12678 12679 4028 9500 9994 7900 10336 12680 12681 12682 12683 12684 12685 4029 9044 9331 8604 10996 12294 12293 12292 12686 12687 12688 4030 9363 9910 9539 10191 12689 12690 12691 12692 12693 12694 4031 8410 9330 8996 10188 11702 11703 11699 12695 12696 12697 4032 8929 8289 9306 10364 12698 12699 12700 12701 12702 12703 4033 10015 10071 1411 10455 12704 12705 12706 12707 12708 12709 4034 7978 9246 7977 10033 11642 11643 11641 12710 12711 12712 4035 7988 7992 9232 10035 11616 11621 11619 12713 12714 12715 4036 8003 8738 9260 10035 12716 12313 12717 12718 12315 12314 4037 7978 7979 9246 10036 11639 11644 11642 12719 12720 12721 4038 7979 10034 9246 10036 12722 12723 11644 12721 12720 12724 4039 9335 7870 10007 10701 12725 12726 12727 12728 12729 12730 4040 9394 9551 920 10719 12731 12732 12733 12734 12735 12736 4041 9075 8202 9077 9465 12521 12737 12738 12520 12739 12519 4042 8935 8104 10094 10797 12740 12741 11827 11830 11832 12742 4043 8942 7996 9315 10451 11680 11257 11681 12743 12744 12745 4044 8636 9316 8381 10451 12746 12747 12748 12749 12750 12751 4045 484 9777 9655 10145 11408 11407 11409 12752 12753 12754 4046 9208 9551 1416 10983 12389 12388 12390 12755 12756 12757 4047 390 1133 9871 10978 3390 12758 12505 12508 12510 12759 4048 9014 9884 10395 10979 11199 12760 12579 12166 12581 12167 4049 8699 9348 9069 10759 12761 12606 12762 12763 12764 12765 4050 9815 9883 9651 10095 12215 12766 12767 12484 12768 12485 4051 8191 9389 9068 10038 11378 11800 11798 12769 12770 12771 4052 7858 9275 7855 10771 12372 12371 12370 12772 12773 12774 4053 840 9431 9952 10901 12775 12776 12354 12356 12358 12777 4054 706 10393 707 10921 12778 12779 4583 12780 12781 12782 4055 8451 9697 9398 9935 11980 11981 11979 12783 12784 12785 4056 883 10534 9683 10975 12786 12434 12787 12788 12789 12790 4057 1509 9202 1594 10010 12791 11835 6192 12792 11837 11836 4058 1164 9283 1142 9899 11677 11279 4526 12793 12794 12795 4059 709 1432 9215 9901 4306 11605 11405 12796 12797 12798 4060 7937 9333 8693 9904 11708 11709 11705 12799 12800 12801 4061 9651 9815 9327 9883 12767 12802 12803 12766 12804 12215 4062 8127 9088 9357 10759 12072 12074 12073 12805 12806 12807 4063 9700 9872 385 10838 12021 12159 12808 12809 12161 12160 4064 9045 9696 9324 9740 11214 11215 11213 12810 12811 12812 4065 8615 9267 8616 10471 12813 12814 12815 12816 12817 12818 4066 6992 7772 6936 9505 11445 11556 7059 11447 11579 11446 4067 9328 10738 9942 10804 12819 11935 12820 12821 11936 11924 4068 9088 8123 8127 10522 12146 12822 12072 12075 12077 12147 4069 8640 9347 8899 10163 11732 11730 11727 12823 12824 12825 4070 8124 9417 10284 10624 11398 12826 12827 11553 12828 11554 4071 1475 1210 9999 10486 5242 11236 11464 12829 11252 11253 4072 10010 10018 542 10392 12589 12830 12831 12592 12832 12593 4073 8581 10584 9050 10902 12833 12834 12835 12836 12413 12837 4074 9892 10760 10387 10886 12126 12127 12123 12838 12839 12840 4075 7869 9250 7871 10701 11388 11387 11389 12841 12842 12843 4076 1594 1509 1180 9202 6192 6190 6193 11835 12654 12791 4077 9498 9346 10314 10479 12672 11566 12671 12844 12845 12846 4078 9432 9050 10584 10902 12411 12834 12847 12412 12837 12413 4079 9891 10389 9774 10815 12848 12849 12850 12851 12852 12853 4080 7970 9280 7972 10768 11665 11666 11664 12854 12855 12856 4081 8686 9342 10024 11001 12081 12670 12668 12857 12858 12859 4082 831 9213 645 11007 11225 11874 4294 12437 12860 12438 4083 1359 9997 9393 10344 12861 12862 12332 12330 12331 12863 4084 571 9913 9213 11007 11269 11227 11268 12436 12438 12864 4085 8259 9392 8674 10453 12865 12866 12867 12868 12869 12870 4086 8699 10038 9348 10759 12871 12872 12761 12763 12765 12873 4087 8820 8851 9204 10560 11585 11588 11589 12874 12875 12876 4088 9488 10110 9105 10334 12877 12878 12051 12049 12050 12879 4089 1210 10339 9301 10641 12029 12030 11237 11239 11238 12880 4090 741 9316 783 10399 11575 11697 4795 12881 12882 12883 4091 7992 8930 9232 10090 11617 11620 11621 12884 12885 12886 4092 261 363 9285 9918 2745 11676 11674 12887 12888 12889 4093 9335 10007 7870 11006 12727 12726 12725 12890 12891 12892 4094 761 9648 9255 10871 12893 12894 11321 11325 11324 12895 4095 7978 9246 10033 10991 11642 12712 12710 12896 12897 12898 4096 247 250 9243 10323 2673 11645 11264 12899 12900 12901 4097 920 9551 9394 10060 12732 12731 12733 12902 12903 12904 4098 8967 10397 9295 10445 12905 12906 12666 12907 12908 12909 4099 496 506 9224 10293 3918 11615 11497 12910 12911 12912 4100 8738 8003 9260 10566 12716 12717 12313 12007 12913 12914 4101 1284 1085 9531 10486 5193 12915 12567 11974 12568 12916 4102 8065 9362 9054 11028 11860 11859 11861 12917 12918 12919 4103 9006 10097 9995 10866 12920 12921 12922 12923 12924 12925 4104 408 407 9839 10400 3464 12633 12926 12927 12634 12261 4105 1330 9377 1010 10416 11766 11764 4566 12928 12929 12930 4106 363 264 9285 10790 2744 11675 11676 12931 12932 12933 4107 9515 10010 9228 10018 12934 12590 12935 12936 12588 12589 4108 8693 9333 8643 10262 11709 11707 11704 12937 12938 12939 4109 8381 9316 8636 10493 12747 12746 12748 12940 12941 12942 4110 7871 9250 7867 10701 11387 12205 12206 12842 12943 12843 4111 9683 10534 9239 10975 12434 12944 12945 12789 12946 12790 4112 7988 9232 9968 10035 11619 12947 12948 12713 12949 12714 4113 1064 9445 10381 10434 12033 12300 12298 12035 12950 12036 4114 625 9377 1330 10458 11765 11766 4266 12951 12952 12953 4115 8132 9226 8131 10632 11614 11612 11609 12954 12955 12956 4116 7871 9637 9250 10754 12957 12958 11387 11390 11392 12959 4117 10008 10104 425 10196 12960 12961 12305 12308 12307 12962 4118 8667 9008 9247 10002 11652 11653 11654 12963 12964 12965 4119 584 9714 9421 10280 12966 12967 12968 12969 12970 12971 4120 9054 10300 9362 10363 12972 12973 11859 11862 11864 12974 4121 8189 8820 9204 10586 11584 11589 11587 12975 12976 12977 4122 305 9365 312 9930 11745 11339 2957 12978 11539 11538 4123 899 1203 9370 10739 5797 11366 12979 12980 12981 12982 4124 8495 9347 8640 10083 11731 11732 11728 12983 12984 12985 4125 8191 9389 10038 10759 11378 12771 12769 12986 12873 12987 4126 307 1012 9364 10200 2973 11744 11742 12988 12989 12990 4127 8415 8414 9318 10576 12991 12992 12993 12994 12995 12996 4128 8415 9318 8712 10576 12993 12997 12998 12994 12999 12995 4129 727 1074 9366 10139 5064 11749 11750 13000 13001 13002 4130 723 9373 961 10139 11763 11761 5053 13003 13004 13005 4131 9601 9966 8405 10424 13006 13007 13008 13009 13010 13011 4132 8042 8041 9233 10488 13012 13013 13014 13015 13016 13017 4133 8738 9260 9753 10566 12313 12312 12004 12007 12009 12913 4134 9088 8123 9357 9982 12146 12145 12074 13018 13019 13020 4135 8168 10227 9271 10845 11907 11908 11906 13021 13022 13023 4136 336 9333 1039 9976 11711 11710 3120 12271 13024 12270 4137 1533 1477 9709 10324 2277 13025 13026 13027 13028 13029 4138 897 9370 1203 10739 11419 11366 5798 13030 12982 12981 4139 8330 8331 8181 10568 12551 13031 13032 12552 13033 12113 4140 1379 10381 9445 10678 12299 12300 12032 13034 13035 13036 4141 8667 9247 8669 10101 11654 11655 11651 13037 13038 13039 4142 9314 9892 10387 10886 13040 12123 13041 13042 12839 12838 4143 7838 10415 7837 10464 13043 12674 13044 13045 12677 12679 4144 8540 9055 9209 11081 13046 13047 13048 13049 13050 13051 4145 8237 8238 9375 10110 12047 11510 12046 13052 11916 11918 4146 8461 8982 9367 10102 13053 13054 13055 13056 13057 13058 4147 8924 9583 8930 10090 13059 13060 13061 13062 12886 13063 4148 8489 9220 8420 10616 11629 11630 11626 13064 13065 13066 4149 1034 783 9316 10177 5139 11697 11574 13067 13068 13069 4150 334 9945 10273 10553 13070 13071 13072 13073 13074 13075 4151 8415 9318 8414 10183 12993 12992 12991 13076 12144 13077 4152 8415 8712 9318 10186 12998 12997 12993 13078 13079 13080 4153 9286 10105 8047 10758 13081 13082 13083 13084 13085 13086 4154 8461 9367 8560 10107 13055 13087 13088 13089 13090 13091 4155 8451 9176 8845 9398 11977 13092 13093 11979 13094 11978 4156 261 9285 264 10320 11674 11675 2743 13095 13096 13097 4157 821 9220 890 10142 12562 12336 4940 13098 13099 13100 4158 8048 8047 10105 10758 13101 13082 13102 13103 13086 13085 4159 816 815 9318 10118 5468 11696 11694 13104 13105 13106 4160 816 9318 1109 10121 11694 11695 5471 13107 13108 13109 4161 272 9335 269 10119 11714 11712 2783 13110 13111 13112 4162 278 276 9338 10120 2818 11717 11715 13113 13114 13115 4163 278 9338 1174 10122 11715 11716 2819 13116 13117 13118 4164 1113 9354 1132 10119 11724 11725 2872 13119 13120 13121 4165 1112 9354 1113 10121 11726 11724 6136 13122 13123 13124 4166 9666 10142 9446 10448 12660 13125 13126 12663 13127 12664 4167 1454 955 9368 10130 5677 11748 11746 13128 13129 13130 4168 9261 10371 1105 10461 13131 13132 11241 11857 11856 13133 4169 9228 10392 10010 10437 12591 12592 12590 13134 13135 13136 4170 391 9232 1328 10737 11624 11622 3374 13137 13138 13139 4171 606 9628 9237 10542 11840 11839 11631 12424 12426 13140 4172 8302 8936 9263 10582 13141 13142 13143 13144 13145 13146 4173 8461 9367 9770 10102 13055 13147 13148 13056 13149 13057 4174 1203 899 9370 10587 5797 12979 11366 13150 13151 13152 4175 1433 307 9364 10053 2974 11742 11743 13153 13154 13155 4176 9069 9348 8699 10789 12606 12761 12762 13156 13157 13158 4177 8704 10088 9304 10238 13159 13160 13161 13162 13163 13164 4178 334 10273 329 10553 13072 13165 3084 13073 13166 13074 4179 407 9296 409 10434 12260 12259 3472 13167 13168 13169 4180 7916 10462 9876 10761 13170 13171 13172 13173 13174 13175 4181 7830 9266 7864 10540 12238 12237 12239 13176 13177 13178 4182 7584 9608 10447 10808 13179 13180 13181 13182 13183 13184 4183 637 10150 1504 10367 13185 11346 4623 13186 11349 11351 4184 599 9237 605 10134 11632 11633 4433 13187 12041 12040 4185 8365 9383 8367 10197 11777 11775 11772 13188 13189 13190 4186 8526 9480 9116 10248 13191 11786 13192 13193 11784 11785 4187 8362 8813 9301 10138 11684 11687 11688 13194 13195 13196 4188 8643 9333 7937 10165 11707 11708 11706 13197 13198 13199 4189 464 1297 9362 10147 3759 11752 11753 13200 13201 13202 4190 1469 9373 723 10148 11762 11763 5055 13203 13204 13205 4191 7876 8889 9358 10265 11735 11736 11737 13206 13207 13208 4192 8146 8902 9288 10532 12233 12232 12231 13209 13210 13211 4193 9008 8669 9247 10677 11650 11655 11653 13212 13213 13214 4194 1090 1039 9333 10113 3121 11710 11478 13215 13216 13217 4195 1107 9317 1321 10538 11885 12096 3459 13218 13219 13220 4196 8083 9274 8080 10190 13221 13222 13223 13224 13225 13226 4197 8102 9238 8100 10094 11423 11484 11637 13227 13228 13229 4198 7964 7862 9285 10263 11670 11671 11672 12130 12132 13230 4199 250 249 9243 10080 2672 11219 11645 13231 13232 13233 4200 346 345 9248 10160 3075 11648 11646 13234 13235 13236 4201 8489 8490 9220 10164 11627 11628 11629 13237 13238 13239 4202 8674 9392 8259 10773 12866 12865 12867 13240 13241 13242 4203 8367 9383 8366 10001 11775 11776 11774 13243 13244 13245 4204 7979 7977 9246 10264 11640 11643 11644 13246 13247 13248 4205 464 9362 554 10229 11753 11754 3750 13249 12464 12466 4206 7972 9280 7971 10003 11666 11667 11663 13250 13251 13252 4207 8938 9330 8410 10424 11701 11702 11700 13253 13254 13255 4208 1295 9266 263 10673 12512 12511 2586 13256 13257 13258 4209 9021 8633 9208 10282 13259 12189 13260 13261 13262 13263 4210 8042 9233 8041 10009 13014 13013 13012 13264 13265 13266 4211 7862 9285 10014 10564 11671 13267 13268 12367 13269 12368 4212 8409 8917 9467 10099 13270 13271 13272 13273 13274 13275 4213 8324 9373 8558 10383 11758 11759 11757 13276 13277 13278 4214 8562 9348 9069 10789 12607 12606 12608 13279 13156 13158 4215 9335 9755 7870 10701 13280 13281 12725 12728 12730 13282 4216 1500 9384 834 10086 11780 11778 5551 13283 13284 13285 4217 386 10203 9315 10433 12542 12543 12359 12361 12363 13286 4218 9138 9592 9175 10067 11401 13287 13288 11402 13289 11403 4219 8329 8201 9273 10166 11657 11660 11661 13290 13291 13292 4220 1161 1405 9981 10377 5160 11999 13293 13294 12003 12002 4221 9068 9389 8263 10350 11800 11377 11799 13295 13296 13297 4222 8409 9467 9940 10099 13272 13298 13299 13273 13300 13274 4223 8330 8181 10262 10568 13032 13301 12550 12552 12115 13033 4224 10387 10760 9517 10886 12127 13302 13303 12839 13304 12840 4225 727 9366 864 10275 11750 11751 5074 13305 13306 13307 4226 9228 10010 9515 10437 12590 12934 12935 13134 13308 13135 4227 727 9366 9722 10139 11750 13309 13310 13000 13311 13001 4228 9308 9774 10389 10815 13312 12849 13313 13314 12853 12852 4229 9010 10108 9453 10627 13315 13316 13317 13318 13319 13320 4230 9055 8540 9209 10958 13046 13048 13047 13321 13322 13323 4231 7725 9502 7696 10565 13324 13325 13326 13327 13328 13329 4232 1454 9819 9368 9833 13330 13331 11746 12013 12015 13332 4233 723 9373 10139 10148 11763 13005 13003 13204 13333 13205 4234 1571 1540 1218 9420 6218 6217 6219 13334 13335 13336 4235 9303 9650 1377 10777 13337 13338 11466 11469 11468 13339 4236 9276 10016 9468 10547 13340 13341 11877 11880 11882 13342 4237 929 10117 928 10585 13343 13344 5000 13345 13346 13347 4238 8704 10238 9304 11045 13162 13163 13161 13348 13349 13350 4239 9596 10087 7846 10927 13351 13352 12163 11417 12165 13353 4240 722 572 9390 10131 4300 13354 13355 13356 13357 13358 4241 1351 9684 9411 10229 11319 11320 11317 13359 13360 13361 4242 9230 9683 10129 10534 13362 12431 13363 13364 12435 12434 4243 9286 9756 8047 10105 13365 13366 13083 13081 13082 13367 4244 9363 9763 10269 10804 13368 11921 13369 13370 11923 11922 4245 8251 9388 8318 10067 11911 11910 11912 13371 13372 13373 4246 8401 9208 8633 10218 13374 12189 13375 13376 12191 12190 4247 969 9434 972 10941 13377 13378 5038 13379 13380 13381 4248 7836 7838 7837 10464 13382 13044 13383 13384 12677 13045 4249 8560 9367 8461 10600 13087 13055 13088 13385 13386 13387 4250 9006 9995 8285 10866 12922 13388 13389 12923 13390 12924 4251 864 9366 1074 10174 11751 11749 5075 13391 13392 13393 4252 8633 9208 8401 10561 12189 13374 13375 13394 13395 13396 4253 9208 8633 9663 10066 12189 12188 12187 13397 13398 13399 4254 8465 10098 9343 10138 13400 13401 13402 13403 13404 13405 4255 573 10131 9215 10551 11301 11302 11300 12649 12648 13406 4256 9054 8155 10300 10363 12379 13407 12972 11862 12974 12381 4257 8982 8461 9367 10600 13053 13055 13054 13408 13387 13386 4258 8495 9817 9347 10083 13409 13410 11731 12983 12985 13411 4259 8168 9271 9645 9998 11906 11905 11904 13412 13413 13414 4260 9338 10207 7879 10575 13415 13416 13417 13418 13419 13420 4261 7879 10208 9338 10575 13421 13422 13417 13419 13418 13423 4262 1527 9436 869 9977 11793 13424 5699 11382 13425 11792 4263 8495 9795 9347 9817 11932 11933 11731 13409 13410 13426 4264 758 9751 9255 9791 13427 13428 11649 11941 11943 13429 4265 260 232 10267 10550 2600 13430 12570 12573 12575 13431 4266 264 10032 9285 10790 13432 13433 11675 12933 12932 13434 4267 460 9824 10229 10407 13435 13436 13437 13438 13439 13440 4268 1475 1210 764 10339 5242 5238 5243 12028 13441 12029 4269 8315 9680 9414 10591 12024 12023 12022 13442 13443 13444 4270 8116 10227 8168 10845 13445 11907 13446 13447 13021 13023 4271 9291 9989 9872 10838 13448 12157 13449 13450 12160 12162 4272 1237 9773 9270 10739 13451 13452 13453 13454 13455 13456 4273 9066 9214 9643 9921 12420 12419 12418 13457 13458 13459 4274 8633 10066 9208 10282 13399 13397 12189 13263 13262 13460 4275 1358 9393 1359 9997 13461 12332 6034 13462 12861 12862 4276 9021 9208 8633 10561 13260 12189 13259 13463 13394 13396 4277 9868 9985 8916 10496 11487 12353 12351 13464 13465 13466 4278 9814 10140 9332 10911 13467 13468 13469 13470 13471 13472 4279 9317 10063 1321 10538 13473 13474 12096 13220 13219 13475 4280 9694 9783 1090 10553 11481 11479 11476 11808 13476 13477 4281 9193 10258 9205 10296 13478 13479 13480 13481 13482 13483 4282 9995 10097 9387 10866 12921 13484 13485 12924 13486 12925 4283 8157 8193 9407 10468 13487 11328 13488 13489 13490 13491 4284 8257 9951 9431 10519 13492 13493 13494 13495 13496 13497 4285 709 9901 9215 10086 12796 12797 11405 11406 11299 13498 4286 9392 9894 658 10325 11966 11965 11246 13499 13500 13501 4287 9362 9598 8065 10363 13502 13503 11860 11864 11863 13504 4288 1297 9362 10147 10676 11752 13201 13202 13505 13506 13507 4289 9340 10199 292 10612 13508 13509 13510 13511 13512 13513 4290 9814 9879 9293 10911 13514 13515 13516 13470 13517 13518 4291 625 9377 9931 10826 11765 13519 13520 13521 13522 13523 4292 1210 764 10339 10641 5238 13441 12029 11239 12880 13524 4293 390 9988 9871 10203 12507 12506 12505 13525 13526 13527 4294 557 9757 9262 10118 13528 13529 13530 13531 13532 13533 4295 278 9338 9767 10120 11715 13534 13535 13113 13536 13114 4296 278 9767 9338 10122 13535 13534 11715 13116 13118 13537 4297 9209 1427 9961 10152 11810 12635 12636 13538 13539 13540 4298 475 9231 9908 10852 13541 13542 13543 13544 13545 13546 4299 1089 9977 9603 10435 11383 13547 13548 11384 13549 11385 4300 9006 8995 9995 10097 13550 13551 12922 12920 12921 13552 4301 1277 10293 9378 10881 12010 12011 11490 12268 12267 13553 4302 8558 9373 8557 10696 11759 11760 11756 13554 13555 13556 4303 9263 10075 8936 10536 13557 13558 13142 13559 13560 13561 4304 1400 10618 9374 10713 13562 13563 13564 13565 13566 13567 4305 9365 10389 9891 10815 11973 12848 13568 13569 12851 12853 4306 7978 10036 9246 10991 12719 12720 11642 12896 12898 13570 4307 597 653 9225 10559 4418 11606 11607 13571 13572 13573 4308 8288 9637 9944 10835 13574 13575 13576 13577 13578 13579 4309 955 9847 9368 10130 12178 12179 11748 13130 13129 13580 4310 840 9431 656 9952 12775 13581 4720 12354 12355 12776 4311 1448 9953 9841 10769 13582 13583 13584 13585 13586 13587 4312 8255 9934 9391 11136 12170 12169 12171 13588 13589 13590 4313 8193 8157 9407 10023 13487 13488 11328 11326 11327 13591 4314 9017 8184 8185 9421 13592 13593 13594 13595 13596 12344 4315 379 9989 9872 10492 12383 12157 12382 13597 13598 13599 4316 379 9872 9991 10492 12382 12387 12385 13597 13600 13598 4317 8606 10041 9390 10288 13601 13602 12134 13603 13604 13605 4318 1040 9384 1500 10658 11779 11780 2308 13606 13607 13608 4319 8237 8238 8236 10487 12047 13609 13610 12048 13611 11513 4320 9456 10028 632 10893 12328 13612 12341 13613 13614 13615 4321 7547 9496 1178 10592 13616 13617 13618 13619 13620 13621 4322 9411 10229 9824 10407 13360 13436 13622 11564 13440 13439 4323 6981 10139 6959 10174 13623 11457 7372 13624 11460 11462 4324 9275 9478 10204 10394 13625 13626 13627 13628 13629 13630 4325 8690 9739 9440 10282 13631 13632 13633 13634 13635 13636 4326 8315 9680 8248 10311 12024 13637 13638 12025 13639 12026 4327 710 10438 1525 10525 11987 13640 4990 11990 13641 11991 4328 1120 1407 9679 10143 5152 11502 13642 13643 11506 11505 4329 8521 8522 9394 10232 11944 11946 11817 13644 13645 13646 4330 9230 9944 9637 10835 13647 13575 13648 13649 13579 13578 4331 816 9318 9879 10118 11694 13650 13651 13104 13652 13105 4332 816 9879 9318 10121 13651 13650 11694 13107 13109 13653 4333 9335 9875 269 10119 13654 13655 11712 13112 13111 13656 4334 9360 9881 7880 10124 13657 13658 13659 13660 13661 13662 4335 9354 9886 1113 10121 13663 13664 11724 13124 13123 13665 4336 1113 9886 9354 10119 13664 13663 11724 13119 13121 13666 4337 7843 9906 10181 10997 13667 13668 13669 13670 13671 13672 4338 1359 9393 1358 10599 12332 13461 6034 12333 13673 12334 4339 9243 9596 10214 10927 13674 11414 13675 13676 11418 11417 4340 9529 10185 9354 10993 12325 13677 13678 12324 13679 12282 4341 8461 9367 10107 10711 13055 13091 13089 13680 13681 13682 4342 8691 9395 8256 10684 12290 12249 12289 13683 12639 12638 4343 8651 10188 9585 10999 13684 13685 13686 13687 13688 13689 4344 8132 9226 9794 10742 11614 13690 13691 11901 13692 11902 4345 9360 10124 7880 10671 13660 13661 13659 13693 13694 13695 4346 407 9839 9296 9908 12633 12632 12260 13696 13697 13698 4347 9266 9841 263 9909 12515 12513 12511 13699 13700 13701 4348 1313 499 9747 10029 3924 13702 11572 13703 13704 13705 4349 9232 10203 387 10485 12537 12535 11623 11846 11845 13706 4350 9321 9463 10221 11020 13707 13708 13709 13710 13711 13712 4351 9047 9609 9385 11193 13713 13714 13715 13716 13717 13718 4352 9472 10304 9859 10419 13719 11436 13720 13721 11439 11441 4353 290 292 10199 10612 2888 13509 13722 13723 13513 13512 4354 9332 9879 9814 10911 13724 13514 13469 13471 13470 13518 4355 9203 10438 10172 10525 13725 11986 13726 13727 11989 11991 4356 8323 10041 8606 10288 13728 13601 13729 13730 13603 13605 4357 435 10045 9611 11094 13731 13732 13733 13734 13735 13736 4358 8889 9358 9625 10786 11736 13737 13738 12495 13739 12496 4359 496 10293 9224 10517 12910 12911 11497 11498 11500 13740 4360 7850 7846 10087 10927 13741 13352 13742 13743 13353 12165 4361 9250 9755 7869 10754 13744 13745 11388 11392 11391 13746 4362 1532 10555 9455 11090 13747 11895 13748 13749 11898 11900 4363 9346 9880 9804 10903 13750 13751 13752 13753 13754 13755 4364 9488 9958 8238 10110 13756 11512 13757 12877 11918 11917 4365 8464 10098 9630 10452 13758 13759 13760 12105 13761 13762 4366 8954 8588 9537 10163 13763 13764 13765 13766 13767 13768 4367 1070 9392 838 11019 11270 11891 4731 13769 13770 13771 4368 897 951 1203 9932 5795 5799 5798 11420 11365 13772 4369 6959 10174 9692 10533 11460 11461 11459 13773 13774 13775 4370 9245 9876 10388 10761 13776 12258 13777 13778 13779 13174 4371 8065 9598 9362 10237 13503 13502 11860 13780 13781 13782 4372 9363 9942 9763 10804 13783 11934 13368 13370 11922 11936 4373 9641 9753 9260 10566 12005 12312 13784 12008 12913 12009 4374 8704 8062 10238 11045 13785 13786 13162 13348 13350 13787 4375 8202 10166 9465 10621 13788 13789 12519 12522 12524 12080 4376 8699 9348 10038 10789 12761 12872 12871 13157 13790 13158 4377 852 1563 1236 9416 5637 5636 5189 12477 13791 13792 4378 8331 9792 10295 11008 13793 13794 13795 13796 13797 13798 4379 8451 9398 8845 10611 11979 13094 13093 13799 13800 13801 4380 8686 9851 9342 11001 12083 12082 12081 12857 12859 13802 4381 1089 1527 869 9977 2397 5699 5700 11383 13425 11382 4382 1360 150 6981 10139 2104 13803 13804 13805 13623 13806 4383 9411 9347 9725 10634 13807 13808 13809 13810 13811 13812 4384 9683 10129 771 10274 12431 13813 13814 13815 13816 13817 4385 9124 9454 9806 10602 11453 11452 11451 13818 13819 13820 4386 572 722 9390 10633 4300 13355 13354 13821 13822 13823 4387 8238 9488 9092 9958 13757 13824 13825 11512 13826 13756 4388 7980 9752 10034 10492 13827 13828 13829 13830 13831 13832 4389 7980 10036 9752 10492 13833 13834 13827 13830 13832 13835 4390 873 9813 9326 9882 12245 12246 11692 13836 13837 13838 4391 9326 9812 873 9882 11508 12243 11692 13837 13836 13839 4392 7830 9815 9266 9884 12241 12242 12238 13840 13841 13842 4393 852 9416 1236 10039 12477 13791 5189 12478 13843 12479 4394 8189 9794 9204 10742 13844 13845 11587 11992 11994 13692 4395 8930 10090 9583 10490 12886 13063 13060 11825 13846 13847 4396 9230 9808 687 10129 13848 13849 13850 13363 13851 13852 4397 9414 9896 9415 10565 13853 13854 13855 13856 13857 13858 4398 8690 10066 9440 10522 13859 13860 13633 13861 13862 13863 4399 7848 7846 7850 10927 12164 13741 13864 11416 13743 12165 4400 730 580 10113 10733 3235 13865 13866 13867 13868 13869 4401 9239 10534 9902 10975 12944 13870 13871 12946 13872 12790 4402 9142 9420 8821 10586 13873 13874 13875 13876 13877 13878 4403 629 707 10103 10921 4582 13879 13880 13881 13882 12781 4404 8989 8901 9960 10552 13883 13884 13885 13886 13887 13888 4405 8651 9585 10617 10999 13686 13889 13890 13687 13891 13688 4406 654 10498 9391 10509 13892 13893 13894 13895 13896 13897 4407 9224 9747 497 10517 11305 11304 11306 11500 11499 13898 4408 9487 9506 9329 10241 13899 13900 13901 13902 13903 13904 4409 1500 9384 10086 10126 11780 13285 13283 13905 13906 13907 4410 9753 10035 8738 10604 12316 12314 12004 11360 13908 13909 4411 9424 9709 1477 10324 13910 13025 13911 13912 13029 13028 4412 576 9423 1411 10285 13913 13914 4320 13915 13916 13917 4413 192 10456 9709 10579 13918 13919 13920 13921 13922 13923 4414 9005 9816 9349 10662 13924 13925 11721 12058 12060 13926 4415 9411 9684 553 10969 11320 11318 11316 13927 13928 13929 4416 9337 10449 9096 10752 12303 12301 12277 13930 13931 13932 4417 354 10257 9248 10476 12526 12527 11647 12320 12322 13933 4418 8967 8397 10397 10445 13934 13935 12905 12907 12909 13936 4419 8554 9369 9912 10567 13937 13938 13939 13940 13941 13942 4420 9079 9625 9301 10786 13943 13944 11686 12596 12595 13739 4421 969 9984 9434 10941 13945 13946 13377 13379 13381 13947 4422 1204 9872 9261 10461 12019 12020 11242 11858 11857 13948 4423 914 9429 912 10689 13949 13950 5848 13951 13952 13953 4424 9480 9116 10372 10865 11786 11787 11788 13954 13955 13956 4425 553 460 1351 10407 3730 3739 3741 11563 11565 13438 4426 9213 10047 645 11007 11873 11872 11874 12438 12860 13957 4427 1085 9531 9999 10441 12915 13958 13959 13960 13961 13962 4428 9375 10110 10150 10367 11916 13963 13964 13965 11351 13966 4429 8862 10281 9417 10624 12499 12500 11397 11552 11554 13967 4430 1285 1512 10226 10403 6231 13968 12600 12603 12605 13969 4431 657 1504 9631 10367 4622 11348 13970 13971 11350 11349 4432 8030 9743 9229 10149 13972 13973 13974 13975 13976 13977 4433 928 10117 9541 10585 13344 13978 13979 13346 13980 13347 4434 9763 9942 9328 10738 11934 12820 13981 11919 12819 11935 4435 657 637 1504 10367 4618 4623 4622 13971 11349 13186 4436 9105 9092 8238 9488 13982 13825 13983 12051 13757 13824 4437 8191 9835 9389 10759 11955 11956 11378 12986 12987 13984 4438 7970 9724 9280 10768 13985 13986 11665 12854 12856 13987 4439 9293 9814 9759 9879 13516 13988 13989 13515 13990 13514 4440 8516 9031 9419 10081 13991 13992 13993 13994 13995 13996 4441 9317 9979 1321 10063 11886 12097 12096 13473 13474 13997 4442 9321 9463 9718 10221 13707 13998 13999 13709 14000 13708 4443 475 9908 422 10852 13543 14001 3470 13544 14002 13545 4444 9066 7849 9643 10745 14003 14004 12418 12421 12423 14005 4445 654 1261 10498 10509 4710 14006 13892 13895 13897 14007 4446 558 470 9706 9707 3790 12469 14008 14009 12467 12468 4447 1304 558 470 9706 3791 3790 3787 12473 12469 14008 4448 9321 9992 9463 11020 14010 14011 13707 13710 13712 14012 4449 9631 10150 10110 10367 11347 13963 14013 11350 13966 11351 4450 9692 10139 9366 10174 11458 13001 14014 11461 13393 11462 4451 1235 9928 10068 10596 14015 14016 14017 14018 14019 14020 4452 9434 9984 969 10180 13946 13945 13377 14021 14022 14023 4453 629 706 707 10921 2907 4583 4582 13881 12781 12780 4454 8858 9502 7725 10565 14024 13324 14025 14026 13327 13329 4455 727 9722 9366 10275 13310 13309 11750 13305 13307 14027 4456 9024 9960 9322 10646 14028 14029 14030 14031 14032 14033 4457 8256 9395 8886 10223 12249 12291 12288 12250 14034 12251 4458 9954 10307 1464 10767 11353 14035 14036 11356 14037 11357 4459 9277 10181 9906 10997 14038 13668 14039 14040 13672 13671 4460 9880 10348 9804 10903 14041 14042 13751 13755 13754 14043 4461 9176 8845 9398 9802 13092 13094 11978 14044 14045 14046 4462 1490 10047 645 10753 14047 11872 4665 14048 11875 11876 4463 9143 8817 8818 9400 14049 14050 14051 14052 14053 14054 4464 8408 10105 9862 11190 14055 14056 14057 14058 14059 14060 4465 569 9768 9303 10777 14061 14062 11465 11467 11469 14063 4466 666 10279 9894 10981 14064 14065 14066 14067 14068 14069 4467 165 6941 208 10155 14070 14071 2140 14072 14073 14074 4468 10182 10292 447 11031 14075 14076 14077 14078 14079 14080 4469 8388 9761 9372 10161 14081 14082 14083 14084 14085 14086 4470 597 10027 9225 10822 14087 14088 11607 12319 12318 14089 4471 883 9902 10534 10975 14090 13870 12786 12788 12790 13872 4472 9314 9892 9741 10387 13040 12227 14091 13041 12229 12123 4473 7855 9275 10494 10771 12371 12374 12375 12773 14092 12774 4474 9245 9876 9762 10388 13776 12253 14093 13777 12256 12258 4475 9774 9891 9365 10389 12850 13568 12597 12849 11973 12848 4476 9363 9539 9962 10191 12691 14094 14095 12692 14096 12693 4477 9446 9263 10025 10778 14097 14098 14099 14100 14101 14102 4478 389 9700 385 10838 14103 12808 3362 14104 12161 12809 4479 8490 9760 9220 10164 14105 14106 11628 13239 13238 14107 4480 9193 9114 8843 9205 14108 14109 14110 13480 14111 14112 4481 9804 9880 9302 10348 13751 14113 14114 14042 14115 14041 4482 7900 9500 10336 10699 12682 12683 12684 14116 14117 14118 4483 8973 8363 9821 10698 14119 12584 14120 14121 12586 12585 4484 1322 9402 1324 10222 14122 14123 5036 14124 14125 14126 4485 8967 8397 7944 10397 13934 14127 14128 12905 14129 13935 4486 9220 891 9834 9864 12337 12339 12340 14130 14131 14132 4487 9457 10034 8074 10422 14133 14134 11548 11550 11549 14135 4488 8362 9301 9943 10138 11688 14136 14137 13194 14138 13195 4489 1295 10256 9266 10673 14139 14140 12512 13256 13258 14141 4490 9821 9921 9449 10698 12583 14142 14143 12586 14144 12587 4491 464 10147 9362 10229 13200 13201 11753 13249 12466 14145 4492 8818 9400 8817 10560 14053 14054 14050 14146 14147 14148 4493 6984 1169 201 9525 14149 2060 14150 14151 14152 14153 4494 8193 9703 9407 10468 11344 11343 11328 13491 13490 11848 4495 8454 9437 9138 10067 14154 11399 14155 14156 11402 11404 4496 1400 9773 9374 10618 14157 14158 13564 13562 13563 14159 4497 6947 1225 185 9514 14160 2132 14161 14162 14163 14164 4498 1218 9420 1540 10386 13335 13336 6217 14165 14166 14167 4499 9894 10279 9371 10981 14065 14168 14169 14068 14170 14069 4500 961 9373 1469 10687 11761 11762 5054 14171 14172 14173 4501 9346 9768 9804 9880 11568 14174 13752 13750 13751 14175 4502 8367 9383 10001 10081 11775 13245 13243 14176 14177 14178 4503 9414 10565 9415 10691 13856 13857 13855 14179 14180 14181 4504 1111 10140 9879 10990 14182 14183 14184 14185 14186 14187 4505 9227 10115 7837 10464 14188 14189 12676 12678 12677 14190 4506 821 9220 10142 10535 12562 13100 13098 12563 14191 12407 4507 8124 9417 8249 10284 11398 11396 11393 12827 14192 12826 4508 321 9358 10210 10486 11740 12548 12549 11975 14193 11976 4509 666 9894 10655 10981 14066 14194 14195 14067 14196 14068 4510 8381 10184 9316 10493 14197 14198 12747 12940 12942 14199 4511 9250 9637 7871 9687 12958 12957 11387 11950 11951 14200 4512 8047 10105 9756 10677 13082 13367 13366 14201 14202 14203 4513 8261 9439 8319 9924 14204 14205 14206 14207 14208 14209 4514 9748 10002 9212 10819 14210 14211 14212 14213 14214 14215 4515 9453 10050 9010 10627 14216 14217 13317 13319 13318 14218 4516 9010 9453 10108 10368 13317 13316 13315 14219 14220 14221 4517 572 9390 10285 10633 13354 14222 14223 13821 14224 13822 4518 1407 9679 9323 10792 11502 11803 11802 14225 14226 14227 4519 8561 9410 7921 10454 11375 11373 11370 14228 14229 14230 4520 864 9366 10174 10275 11751 13393 13391 13306 14231 13307 4521 1379 9963 9445 10434 14232 14233 12032 12034 12036 14234 4522 9310 401 9754 10722 11689 14235 14236 12089 14237 12087 4523 8131 9744 9226 10723 14238 14239 11612 12090 12092 14240 4524 8811 9797 8074 10422 14241 11546 14242 14243 11549 11551 4525 8329 8463 9801 10630 14244 14245 11767 11769 11771 14246 4526 801 9466 9915 11089 12558 14247 14248 12559 14249 12560 4527 9423 10071 1411 10285 14250 12705 13914 13917 13916 14251 4528 8954 10163 9537 10363 13766 13767 13765 14252 14253 14254 4529 8030 10149 9229 10674 13975 13976 13974 14255 14256 14257 4530 9872 10461 1204 10859 13948 11858 12019 12645 14258 14259 4531 312 1364 9572 9723 3000 14260 11337 11340 11342 14261 4532 9603 9977 9436 10435 13547 11792 14262 13549 11794 11385 4533 7583 7584 7530 10808 14263 14264 14265 14266 14267 13182 4534 9011 7880 10124 10671 14268 13661 14269 14270 13695 13694 4535 723 10139 9722 10148 13003 13311 14271 13204 14272 13333 4536 1448 9841 9953 10659 13584 13583 13582 14273 14274 14275 4537 9280 7971 10003 10069 11667 13251 13252 14276 14277 14278 4538 8996 10188 9330 10933 12696 12697 11703 12378 12377 14279 4539 1360 10139 6981 10174 13805 13623 13804 14280 13624 11462 4540 9047 9385 10179 11193 13715 14281 14282 13716 14283 13717 4541 838 9392 658 10325 11891 11246 4729 14284 13500 13499 4542 9194 10248 9116 10372 14285 11784 14286 14287 11787 11789 4543 1132 9354 9955 10119 11725 12399 12397 13120 14288 13121 4544 9354 1112 9955 10121 11726 12398 12399 13124 14289 13122 4545 9361 1054 9956 10122 12454 12453 12452 14290 14291 14292 4546 8355 9809 8711 10661 14293 14294 14295 14296 14297 14298 4547 7877 10208 7879 10575 14299 13421 14300 14301 13419 13423 4548 8778 7879 10207 10575 14302 13416 14303 14304 13420 13419 4549 9747 10029 499 10893 13704 13705 13702 14305 14306 14307 4550 1233 10234 1474 10403 14308 14309 4364 14310 14311 14312 4551 351 9913 9543 10603 14313 14314 14315 14316 14317 14318 4552 8388 10161 9372 10702 14084 14085 14083 14319 14320 14321 4553 865 9791 9648 10837 14322 14323 14324 14325 14326 14327 4554 580 10594 10113 10733 14328 14329 13865 13869 13868 14330 4555 1490 10588 10047 10753 14331 14332 14047 14048 11876 14333 4556 1463 953 9684 10508 5953 14334 11866 11869 11871 14335 4557 815 9956 9318 10118 12446 12447 11696 13106 13105 14336 4558 276 9955 9338 10120 12449 12450 11717 13115 13114 14337 4559 1109 9318 9956 10121 11695 12447 12445 13108 14338 13109 4560 1174 9338 9955 10122 11716 12450 12448 13117 14339 13118 4561 9761 9818 9372 10890 14340 14341 14082 14342 14343 14344 4562 7921 10191 9410 10545 14345 14346 11373 11590 11592 14347 4563 9583 10090 8924 10868 13063 13062 13059 14348 14349 14350 4564 1469 9373 10148 10558 11762 13205 13203 14351 14352 14353 4565 8094 9781 9731 10766 14354 14355 14356 14357 14358 14359 4566 8399 9663 10445 10544 14360 14361 14362 14363 14364 14365 4567 9323 9668 1407 10715 11801 11503 11802 14366 14367 14368 4568 453 1191 425 10497 3566 3563 3564 14369 12155 12154 4569 1233 9476 10234 10403 14370 14371 14308 14310 14312 14372 4570 8065 10237 9362 11028 13780 13781 11860 12917 12919 14373 4571 1404 9823 9895 10607 14374 14375 14376 14377 14378 14379 4572 9369 10567 8554 10836 13942 13940 13937 14380 14381 14382 4573 9667 9807 8146 10900 12631 12234 12629 14383 14384 14385 4574 9254 9803 413 9903 14386 14387 14388 14389 14390 14391 4575 7704 9495 7703 9698 14392 11471 14393 14394 11475 11474 4576 7916 8679 10462 10761 14395 14396 13170 13173 13175 14397 4577 10258 10296 9193 11189 13483 13481 13478 14398 14399 14400 4578 345 9916 9248 10160 14401 14402 11648 13236 13235 14403 4579 9411 553 10407 10969 11316 11563 11564 13927 14404 13928 4580 864 10174 9833 10275 13391 14405 14406 13306 14407 14231 4581 1486 1464 9954 10307 4661 14036 14408 14409 11353 14035 4582 801 9848 9466 10240 14410 14411 12558 12556 12557 14412 4583 1178 9496 7547 10201 13617 13616 13618 14413 14414 14415 4584 9105 9488 8238 10110 12051 13757 13983 12878 11918 12877 4585 9373 10102 8558 10383 14416 14417 11759 13278 13277 14418 4586 9233 10050 8042 10488 14419 14420 13014 13016 13015 14421 4587 9238 8102 10043 10094 11423 11424 11425 13229 14422 13227 4588 890 821 891 10535 4940 5501 5500 12406 12408 12563 4589 9225 9936 653 10528 14423 14424 11606 12396 12395 14425 4590 1012 10123 9364 10200 14426 14427 11744 12990 12989 14428 4591 8430 9588 9790 11130 14429 14430 14431 14432 14433 14434 4592 7725 7696 7641 10565 13326 14435 14436 13327 14437 13328 4593 9288 9965 8146 10532 14438 14439 12231 13210 13209 14440 4594 336 9783 9333 10665 11865 11480 11711 12272 12274 14441 4595 9194 10248 10372 10914 14285 11789 14287 14442 14443 14444 4596 9313 9844 1341 10669 14445 14446 12118 12120 12119 14447 4597 9347 9411 9725 10969 13807 13809 13808 14448 14449 13927 4598 9548 10226 9205 10403 12601 14450 14451 12604 14452 12605 4599 9078 10258 9193 11189 14453 13478 14454 14455 14399 14398 4600 730 10113 580 10594 13866 13865 3235 14456 14328 14329 4601 581 660 718 10392 4342 4345 4344 14457 14458 14459 4602 9280 9724 7970 10204 13986 13985 11665 12540 12539 14460 4603 9425 10324 1518 11046 14461 14462 14463 14464 14465 14466 4604 576 1411 9423 10455 4320 13914 13913 14467 14468 12708 4605 8347 8251 9729 10520 12221 12094 14469 12223 12095 11914 4606 942 192 9709 10579 2401 13920 14470 14471 13922 13921 4607 9310 9920 1104 11025 14472 14473 11691 12652 12651 14474 4608 9260 10035 9753 10604 12315 12316 12312 14475 11360 13909 4609 9126 9195 8315 9414 14476 14477 14478 14479 12022 14480 4610 9884 10540 10315 11056 11262 11263 11210 14481 14482 14483 4611 9217 9818 9761 10890 14484 14340 14485 14486 14342 14344 4612 9405 10326 1340 10485 14487 14488 14489 14490 14491 14492 4613 7937 9333 9904 9946 11708 12801 12799 14493 14494 14495 4614 1428 9419 915 10531 14496 14497 5862 14498 14499 14500 4615 968 9848 9401 10217 14501 14502 14503 14504 14505 14506 4616 730 580 731 10594 3235 4338 4337 14456 14507 14328 4617 9017 8184 9421 9896 13592 12344 13595 14508 12342 12343 4618 7862 10014 9285 10263 13268 13267 11671 13230 12132 14509 4619 654 9391 9948 10509 13894 14510 14511 13895 14512 13896 4620 730 731 10113 10594 4337 14513 13866 14456 14329 14507 4621 7712 10338 9591 10518 14514 14515 14516 14517 14518 14519 4622 9409 10501 246 10507 14520 14521 14522 14523 14524 14525 4623 8516 9419 9031 10524 13993 13992 13991 14526 14527 14528 4624 249 9719 9243 10080 11218 11217 11219 13233 13232 14529 4625 7584 10447 7530 10808 13181 14530 14264 13182 14267 13183 4626 9453 9822 1405 10008 14531 14532 12000 14533 14534 14535 4627 9457 9797 8074 10493 11547 11546 11548 14536 14537 14538 4628 658 10325 9894 10595 13500 13501 11965 14539 14540 14541 4629 9329 9813 9758 10913 14542 14543 14544 14545 14546 14547 4630 9798 9801 8463 10630 14548 14245 14549 14550 14246 11771 4631 8604 9972 9331 10577 14551 14552 12293 12297 12296 14553 4632 10006 10367 636 10733 14554 14555 14556 14557 14558 14559 4633 7592 7752 9734 10418 14560 14561 14562 14563 14564 14565 4634 9308 9891 9774 10815 14566 12850 13312 13314 12852 12851 4635 8995 9995 10097 10241 13551 12921 13552 14567 14568 14569 4636 972 9434 969 10180 13378 13377 5038 14570 14022 14021 4637 903 706 10136 10393 2909 14571 14572 14573 14574 12778 4638 8318 10230 9388 10520 14575 14576 11910 11913 11915 14577 4639 960 9369 10130 10807 14578 12066 14579 14580 14581 14582 4640 8414 9532 10183 10576 12142 11594 12144 12996 14583 14584 4641 7864 9266 9815 10495 12237 12242 12240 14585 14586 14587 4642 8296 9633 10353 10933 14588 14589 14590 14591 14592 14593 4643 1454 9368 9819 10130 11746 13331 13330 13128 14594 13129 4644 1448 1059 9953 10769 6066 14595 13582 13585 13587 14596 4645 9358 8889 9625 10265 11736 13738 13737 13207 14597 13208 4646 9274 10116 8083 10816 14598 14599 13221 14600 14601 14602 4647 9288 9667 8146 9965 12630 12629 12231 14438 14439 14603 4648 728 10547 10275 10676 14604 11881 14605 14606 12309 12311 4649 1499 10172 9203 10548 14607 13726 14608 14609 14610 14611 4650 9024 9322 9960 10536 14030 14029 14028 14612 14613 14614 4651 389 385 388 10838 3362 3357 3363 14104 14615 12161 4652 9144 7652 9560 10189 14616 14617 14618 14619 14620 14621 4653 1571 9420 1218 10319 13334 13335 6219 14622 14623 14624 4654 9208 10983 1416 11074 12755 12756 12390 14625 14626 14627 4655 9862 10105 9241 11190 14056 14628 14629 14059 14630 14060 4656 9468 10016 9538 10547 13341 14631 14632 11882 14633 13342 4657 9283 9899 1164 9930 12795 12793 11677 12017 12016 14634 4658 572 10285 1005 10633 14223 14635 4174 13821 14636 14224 4659 8288 10660 9637 10835 14637 14638 13574 13577 13579 14639 4660 9231 8023 10176 10360 14640 14641 14642 14643 14644 14645 4661 9884 10979 9860 11059 12167 12168 11200 11204 11203 14646 4662 670 10399 9298 10667 14647 14648 14649 14650 14651 14652 4663 9182 7642 7753 9698 14653 14654 14655 14656 11473 14657 4664 475 9231 9681 9908 13541 14658 14659 13543 14660 13542 4665 1085 9999 9531 10486 13959 13958 12915 12916 12568 11252 4666 1404 10607 9895 10614 14377 14378 14376 14661 14662 14663 4667 7824 10308 9883 10761 14664 14665 14666 14667 14668 14669 4668 9301 9625 9079 9851 13944 13943 11686 12643 12642 14670 4669 1226 9326 9813 10305 11693 12246 12244 12214 14671 11427 4670 8432 9718 9463 10495 14672 13998 14673 14674 14675 14676 4671 660 9439 718 10392 14677 14678 4345 14459 14458 14679 4672 9876 10462 7916 11157 13171 13170 13172 14680 14681 14682 4673 920 10247 9551 11080 14683 14684 12732 14685 14686 14687 4674 9429 10073 912 10689 14688 14689 13950 13953 13952 14690 4675 8704 8064 10088 10238 14691 14692 13159 13162 13164 14693 4676 9126 9414 8315 10311 14479 12022 14478 14694 12025 12027 4677 9551 10247 920 10719 14684 14683 12732 12736 12735 14695 4678 9734 10418 7752 10598 14564 14565 14561 14696 14697 14698 4679 9266 1295 9841 10256 12512 12514 12515 14140 14699 14139 4680 8237 10110 9375 10318 13052 11916 12046 14700 14701 14702 4681 8521 9394 9853 10232 11817 14703 14704 13644 14705 13645 4682 296 10302 10369 10669 14706 14707 14708 14709 12121 14710 4683 9390 9704 8173 10288 14711 14712 12133 13604 14713 14714 4684 9464 9825 8921 10832 14715 14716 12404 12482 12481 14717 4685 8937 9464 7902 10270 12405 12403 12400 14718 14719 14720 4686 8259 8674 8439 10453 12867 14721 14722 12868 14723 12869 4687 8195 9703 8193 10468 11847 11344 14724 11849 13491 11848 4688 1441 10103 9324 10608 14725 14726 14727 14728 14729 14730 4689 9862 10105 8408 10677 14056 14055 14057 14731 14732 14203 4690 1235 481 9928 10596 3826 14733 14015 14018 14020 14734 4691 8173 9704 9390 10328 14712 14711 12133 12136 12138 14735 4692 9903 418 10966 11012 14736 14737 14738 14739 14740 14741 4693 8615 10252 9267 10471 14742 14743 12813 12816 12818 14744 4694 9130 10290 9441 10321 14745 14746 14747 14748 14749 14750 4695 8345 10108 9010 10627 14751 13315 14752 14753 13318 13320 4696 1350 9623 10331 10500 14754 14755 14756 14757 14758 14759 4697 9275 9918 9478 10394 14760 14761 13625 13628 13630 14762 4698 9641 10068 9871 10158 14763 14764 14765 14766 14767 14768 4699 1235 9928 481 10068 14015 14733 3826 14017 14769 14016 4700 7720 10338 7712 10518 14770 14514 14771 14772 14517 14519 4701 7996 7991 9968 10604 14773 14774 11255 11258 11260 14775 4702 1427 10152 9209 10455 13540 13538 11810 11812 11814 14776 4703 1313 10029 9747 10496 13703 13704 11572 12615 12617 14777 4704 903 10136 9521 10393 14572 14778 14779 14573 14780 14574 4705 1324 10249 9402 10439 14781 14782 14123 14783 14784 14785 4706 8877 8738 9641 10566 14786 12006 14787 14788 12008 12007 4707 7980 10034 9752 11018 13829 13828 13827 14789 14790 14791 4708 9114 9205 9193 10258 14112 13480 14108 14792 13478 13479 4709 746 1405 1161 9927 5161 5160 5159 14793 14794 14795 4710 407 408 409 10400 3464 3473 3472 12261 12263 12927 4711 9813 10355 9758 10913 14796 14797 14543 14547 14546 14798 4712 1309 9875 9808 10637 14799 14800 14801 14802 14803 14804 4713 9247 10002 9748 10819 12964 14210 14805 14806 14213 14215 4714 9394 9843 8523 10361 14807 14808 11854 11819 11855 14809 4715 9254 9903 413 10636 14389 14390 14388 14810 14811 14812 4716 9322 9688 9024 10056 14813 14814 14030 14815 14816 14817 4717 9748 9862 9212 10002 14818 14819 14212 14210 14211 14820 4718 8477 9460 7981 10264 14821 12323 14822 14823 14824 14825 4719 9818 10161 9372 10890 14826 14085 14341 14344 14343 14827 4720 7831 7832 7833 10315 11207 14828 14829 11208 14830 11209 4721 584 583 9421 10458 4263 14831 12968 14832 14833 14834 4722 9371 10655 9894 10981 14835 14194 14169 14170 14068 14196 4723 9054 9362 10300 11028 11859 12973 12972 12918 14836 12919 4724 6942 10155 9740 10255 14837 14838 14839 14840 14841 14842 4725 8331 9413 9792 11008 12112 14843 13793 13796 13798 14844 4726 7922 10124 9358 10786 14845 14846 11738 12497 12496 14847 4727 7753 7642 7703 9698 14654 14848 11470 11473 11475 14657 4728 8410 10188 9601 10424 12695 14849 14850 13254 13009 14851 4729 8554 9912 9620 10567 13939 14852 14853 13940 14854 13941 4730 8133 9745 9226 10742 14855 14856 11613 11903 11902 14857 4731 843 9438 1465 10923 14858 11231 5534 14859 11233 11232 4732 9335 10119 272 10316 13112 13110 11714 12623 12622 14860 4733 275 10120 9358 10316 14861 14862 11741 12625 12624 14863 4734 9364 10123 1012 10317 14427 14426 11744 12628 12627 14864 4735 7865 9987 9285 10564 12209 12128 11673 12369 12368 14865 4736 8502 9846 9958 10133 14866 14867 14868 14869 14870 14871 4737 10099 10301 8160 10639 14872 14873 14874 14875 14876 14877 4738 8231 10359 10241 10549 14878 14879 14880 14881 14882 14883 4739 9757 10118 557 10697 13533 13531 13528 14884 14885 14886 4740 9031 9419 10081 10950 13992 13995 13996 14887 14888 14889 4741 681 10148 9721 10939 14890 14891 14892 14893 14894 14895 4742 1377 9650 9303 9720 13338 13337 11466 14896 14897 14898 4743 363 9285 9918 10681 11676 12888 12889 14899 14900 14901 4744 8329 9273 9801 10166 11661 11768 11767 13290 14902 13291 4745 9446 10025 8300 10616 14099 14903 14904 14905 14906 14907 4746 9346 9768 10314 10479 11568 11567 11566 12846 12845 14908 4747 9293 10094 9873 11040 14909 11828 14910 14911 12098 12100 4748 9231 9716 8023 10360 14912 14913 14640 14643 14645 14914 4749 1027 10555 1532 11090 12108 13747 5745 12109 13749 11900 4750 1302 10966 418 11012 14915 14737 3523 14916 14741 14740 4751 9025 6912 9616 9836 14917 14918 14919 14920 14921 14922 4752 8465 10114 9343 10452 14923 14924 13402 12106 14925 14926 4753 9588 10315 9345 10395 11517 12057 14927 11520 14928 11521 4754 681 9721 10195 10939 14892 14929 14930 14893 14931 14894 4755 9286 447 10182 10292 14932 14077 14933 14934 14075 14076 4756 9392 9894 10325 10595 11966 13501 13499 14935 14541 14540 4757 8412 10183 10266 11055 11593 11598 11596 14936 14937 14938 4758 9017 9421 8185 10591 13595 13596 13594 14939 14940 14941 4759 9648 10641 865 10837 14942 14943 14324 14326 14325 14944 4760 7858 7856 7855 10494 14945 14946 12370 12373 12375 14947 4761 9517 10387 9289 10760 13303 12122 14948 13302 12125 12127 4762 8185 9421 8184 10484 13596 12344 13593 14949 14950 14951 4763 1448 9953 1059 10659 13582 14595 6066 14273 14952 14274 4764 9743 10421 9863 10430 14953 14954 14955 14956 14957 14958 4765 9077 9465 8202 10166 12739 12519 12737 14959 13788 13789 4766 9205 10226 1512 10403 14450 13968 14960 14452 13969 12605 4767 9282 10196 425 10497 12306 12307 12153 12156 12155 14961 4768 1107 9979 9839 10737 11887 11888 11884 14962 14963 14964 4769 9758 9813 9326 10355 14543 12246 14965 14797 14966 14796 4770 9648 9791 9343 10837 14323 14967 14968 14326 14969 14327 4771 9550 10367 10006 10733 14970 14554 14971 14972 14557 14559 4772 1470 1465 843 9438 5594 5534 5592 11335 14858 11231 4773 1191 9981 9282 10497 14973 14974 12152 12154 12156 14975 4774 292 9340 9837 10199 13510 14976 14977 13509 14978 13508 4775 9598 10088 8064 10238 14979 14692 14980 14981 14693 13164 4776 9266 10495 7864 10540 14587 14585 12237 13178 13177 14982 4777 8319 9924 9439 10224 14208 14209 14205 14983 14984 14985 4778 380 9460 10433 10557 14986 14987 14988 14989 14990 14991 4779 7872 7870 10007 11006 14992 12726 14993 14994 12892 12891 4780 271 10202 9335 10316 12554 12555 11713 12621 12623 14995 4781 9047 9385 9609 10457 13715 13714 13713 14996 14997 14998 4782 9204 9775 8851 10742 14999 15000 11588 11994 11993 15001 4783 9301 10138 8813 10786 13195 13196 11687 12595 12594 15002 4784 7998 9877 9646 10965 15003 15004 15005 15006 15007 15008 4785 8916 9868 10040 10944 12351 15009 15010 15011 15012 15013 4786 1441 9324 10103 10155 14727 14726 14725 15014 15015 15016 4787 8300 9708 9959 10616 15017 15018 15019 14906 15020 15021 4788 1116 10864 10243 10959 15022 15023 15024 15025 15026 15027 4789 9756 10105 9286 10677 13367 13081 13365 14202 15028 14203 4790 263 9266 9909 10673 12511 13699 13700 13257 15029 13258 4791 8812 8074 9797 10493 15030 11546 15031 15032 14538 14537 4792 1324 719 10249 10439 4656 15033 14781 14783 14785 15034 4793 1051 1411 10015 10071 5942 12706 15035 15036 12704 12705 4794 8083 9965 9274 10190 15037 15038 13221 13224 13226 15039 4795 9752 10036 7980 11149 13834 13833 13827 15040 15041 15042 4796 9550 636 10367 10733 15043 14555 14970 14972 14559 14558 4797 9591 10338 10217 10518 14515 15044 15045 14518 15046 14519 4798 8256 8215 9575 10223 15047 15048 12247 12250 12252 15049 4799 9465 10044 9075 10621 15050 15051 12520 12524 12523 15052 4800 9280 9780 10069 10986 15053 15054 14276 15055 15056 15057 4801 9538 9468 10547 10676 14632 11882 14633 15058 12311 12310 4802 7914 9658 10058 10436 15059 15060 15061 15062 15063 15064 4803 9402 10404 9549 10563 15065 15066 15067 15068 15069 15070 4804 7824 7823 10308 10761 15071 15072 14664 14667 14669 15073 4805 7551 9541 198 10499 15074 15075 15076 15077 15078 15079 4806 363 9285 10681 10790 11676 14901 14899 12931 15080 12932 4807 9349 9765 9051 10662 15081 15082 11722 12060 12059 15083 4808 9282 10104 10008 10196 15084 12960 12304 12306 12308 12962 4809 8405 9966 9601 11000 13007 13006 13008 15085 15086 15087 4810 1284 1085 753 9531 5193 5191 2806 12567 15088 12915 4811 8414 8416 8412 9532 15089 15090 12143 12142 11595 15091 4812 9380 10243 10864 10959 15092 15023 15093 15094 15027 15026 4813 9078 9193 10296 11189 14454 13481 15095 14455 14400 14399 4814 896 9932 9649 10969 15096 15097 15098 15099 15100 15101 4815 9220 9666 890 10142 15102 15103 12336 13100 13099 12660 4816 8399 10218 9663 10544 15104 12192 14360 14363 14365 15105 4817 9472 9859 10304 10464 13720 11436 13719 15106 11823 11822 4818 1350 10331 361 10500 14756 15107 2906 14757 15108 14758 4819 907 9401 968 9848 15109 14503 5421 15110 14501 14502 4820 914 1551 912 9429 5851 5850 5848 13949 13950 15111 4821 9643 10745 7849 10997 12423 14005 14004 15112 15113 15114 4822 8450 9426 8725 10362 15115 15116 15117 15118 15119 15120 4823 8409 8275 8917 10099 15121 15122 13270 13273 13275 15123 4824 9075 9465 9077 10350 12520 12739 12738 15124 15125 15126 4825 9238 9868 8100 10094 11483 11482 11484 13229 13228 15127 4826 1322 9402 10222 10342 14122 14126 14124 15128 15129 15130 4827 1239 1512 9205 10226 6230 14960 15131 15132 14450 13968 4828 9421 9714 584 9931 12967 12966 12968 15133 15134 15135 4829 9072 7833 10315 10395 15136 14830 11516 11519 11521 15137 4830 7902 10270 9464 10832 14719 14720 12403 12480 12482 15138 4831 10222 10292 587 11163 15139 15140 15141 15142 15143 15144 4832 9417 10052 8249 10284 15145 15146 11396 12826 14192 15147 4833 8421 9468 8499 10398 15148 15149 15150 15151 15152 15153 4834 989 9956 10123 10853 12462 15154 15155 12463 15156 12457 4835 9400 8817 9935 10776 14054 15157 15158 15159 15160 15161 4836 9903 10966 10005 11012 14738 15162 15163 14739 15164 14740 4837 9232 9979 1328 10737 15165 15166 11622 13139 13138 14964 4838 1191 9282 9981 10008 12152 14974 14973 12451 15167 12304 4839 9340 9499 10199 10612 15168 15169 13508 13511 13513 15170 4840 9351 9727 10209 10830 15171 15172 15173 15174 15175 15176 4841 9099 10133 9958 10970 15177 14870 15178 15179 15180 15181 4842 9310 9750 1103 10722 15182 15183 11690 12089 12088 15184 4843 9226 9745 8133 10723 14856 14855 11613 12092 12091 15185 4844 956 10130 9684 10229 15186 11867 15187 15188 13361 15189 4845 9322 10056 9024 10646 14815 14816 14030 14032 14031 15190 4846 7866 10007 9458 10465 15191 15192 15193 15194 15195 15196 4847 7866 9458 10007 10701 15193 15192 15191 15197 12729 15198 4848 9415 10565 10085 10691 13857 15199 15200 14180 15201 14181 4849 8215 9934 9575 10223 15202 15203 15048 15049 12252 12174 4850 9646 9877 8002 10847 15004 15204 15205 15206 15207 15208 4851 9217 9761 9818 9885 14485 14340 14484 15209 15210 15211 4852 9329 9758 9813 9882 14544 14543 14542 15212 13838 15213 4853 9287 9816 9762 9876 15214 15215 15216 15217 12253 15218 4854 1000 9474 734 9727 15219 15220 5104 15221 15222 15223 4855 275 9358 10120 10210 11741 14862 14861 12547 15224 12548 4856 9358 10124 7922 10208 14846 14845 11738 12546 12545 15225 4857 9466 9848 801 10217 14411 14410 12558 15226 15227 14506 4858 8410 9330 10188 10424 11702 12697 12695 13254 14851 13255 4859 9329 9506 9487 10930 13900 13899 13901 15228 15229 15230 4860 9006 10684 10097 10866 15231 15232 12920 12923 12925 15233 4861 8554 9912 9369 10836 13939 13938 13937 14381 14380 15234 4862 9287 9762 9816 10583 15216 15215 15214 15235 15236 15237 4863 9833 10174 9366 10275 14405 13393 15238 14407 13307 14231 4864 9760 9834 9220 10889 15239 12340 14106 15240 15241 15242 4865 7981 7982 9831 10622 15243 15244 11960 11962 11961 15245 4866 9443 10353 9633 10933 15246 14589 15247 15248 14593 14592 4867 8461 9770 9367 10711 13148 13147 13055 13680 13682 15249 4868 840 10366 9431 10901 15250 15251 12775 12356 12777 15252 4869 1359 1554 10344 10599 6036 15253 12330 12333 12335 15254 4870 1499 710 1508 10525 4958 4988 4987 15255 15256 11990 4871 8421 9941 9468 10398 15257 15258 15148 15151 15153 15259 4872 9373 8324 10337 10383 11758 12576 12577 13278 15260 13276 4873 692 9683 1305 10534 12432 15261 4873 12433 15262 12434 4874 1504 9631 10150 10548 11348 11347 11346 15263 15264 15265 4875 9868 8916 10040 10496 12351 15010 15009 13464 15266 13465 4876 8954 8588 8589 9537 13763 15267 15268 13765 15269 13764 4877 9306 9966 9601 10424 15270 13006 15271 15272 13009 13011 4878 8502 9057 9846 10133 15273 15274 14866 14869 14871 15275 4879 9208 9021 10282 10561 13260 13261 13262 13396 15276 13463 4880 8465 9343 10114 10138 13402 14924 14923 13403 15277 13404 4881 9895 10607 9408 10614 14378 15278 15279 14662 15280 14663 4882 8450 9137 8725 9426 15281 15282 15117 15115 15116 15283 4883 7810 10205 10358 11099 15284 15285 15286 15287 15288 15289 4884 7992 9232 10035 10090 11621 12714 12715 12884 15290 12885 4885 1339 386 395 10433 3350 3369 3371 15291 12362 12361 4886 10245 10354 1096 10767 15292 15293 15294 15295 15296 15297 4887 632 9456 595 10028 12341 11527 3959 13612 12327 12328 4888 9021 8633 8401 10561 13259 13375 15298 13463 13395 13394 4889 9585 10188 9409 10999 13685 15299 15300 13688 15301 13689 4890 9498 10078 8071 10639 15302 15303 15304 15305 15306 15307 4891 1412 9714 584 10280 15308 12966 4352 15309 12969 12971 4892 8674 9392 10052 10823 12866 15310 15311 15312 15313 15314 4893 9692 10174 9366 10533 11461 13393 14014 13774 15315 13775 4894 8297 8974 9820 9990 15316 15317 15318 15319 15320 15321 4895 9572 9723 1364 10799 11342 14261 14260 15322 15323 15324 4896 9332 9759 9814 9879 15325 13988 13469 13724 13514 13990 4897 8041 10009 9233 10488 13265 13266 13013 13017 13016 15326 4898 9456 632 10029 10893 12341 15327 15328 13613 14307 13614 4899 596 9893 9225 10528 15329 15330 11608 12394 12396 15331 4900 1454 10130 9819 10807 13128 14594 13330 15332 15333 14581 4901 8302 9263 9959 10582 13143 15334 15335 13144 15336 13145 4902 9719 10080 249 10635 14529 13233 11218 15337 15338 15339 4903 9498 10019 8071 10078 15340 15341 15304 15302 15303 15342 4904 9031 9632 9419 10950 15343 15344 13992 14887 14889 15345 4905 656 9952 9431 10310 12355 12776 13581 15346 15347 15348 4906 8002 9877 10329 10847 15204 15349 15350 15207 15351 15208 4907 1302 10005 10966 11012 15352 15162 14915 14916 14740 15164 4908 9229 9863 10421 10430 15353 14954 15354 15355 14958 14957 4909 8297 9990 9820 10888 15319 15320 15318 15356 15357 15358 4910 9333 9946 7937 10165 14495 14493 11708 13199 13198 15359 4911 8521 9394 9739 9853 11817 11816 11815 14704 15360 14703 4912 9585 9409 10617 10999 15300 15361 13889 13688 13891 15301 4913 7858 10014 9275 10771 15362 15363 12372 12772 12774 15364 4914 8938 9645 9330 10424 15365 15366 11701 13253 13255 15367 4915 9371 10112 10655 10981 15368 15369 14835 14170 14196 15370 4916 9299 10301 10099 10639 15371 14872 15372 15373 14875 14877 4917 9358 1284 10316 10486 11739 12566 12624 11976 12569 11974 4918 8668 9716 10002 10597 15374 15375 15376 15377 15378 15379 4919 8157 9634 9407 10023 15380 15381 13488 13591 11327 15382 4920 654 9948 1261 10509 14511 15383 4710 13895 14007 14512 4921 7720 1168 10338 10518 15384 15385 14770 14772 14519 15386 4922 1540 10297 9672 10386 15387 15388 15389 14166 15390 15391 4923 9834 10164 9220 10889 15392 13238 12340 15242 15241 15393 4924 734 9474 1000 10625 15220 15219 5104 15394 15395 15396 4925 914 9997 9429 10689 15397 15398 13949 13951 13953 15399 4926 1340 9405 10143 10326 14489 15400 15401 14488 15402 14487 4927 9006 8467 10684 10866 15403 15404 15231 12923 15233 15405 4928 852 752 9626 10039 5178 11289 12475 12478 11290 11291 4929 9008 9862 9247 10002 15406 15407 11653 12965 12964 14820 4930 464 9824 10147 10229 15408 15409 13200 13249 14145 13436 4931 9176 9398 9697 11096 11978 11981 11982 15410 15411 15412 4932 8821 9926 9420 10459 15413 15414 13874 15415 15416 15417 4933 1090 9333 9694 10113 11478 11477 11476 13215 15418 13216 4934 816 10118 9879 10697 13104 13652 13651 15419 15420 14886 4935 9304 10577 8704 11045 15421 15422 13161 13349 13348 15423 4936 8103 8935 8104 10094 15424 12740 15425 15426 12741 11827 4937 1341 9844 9313 9942 14446 14445 12118 15427 15428 15429 4938 9340 9950 9499 10612 15430 15431 15168 13511 15170 15432 4939 9638 10140 9814 10911 15433 13467 15434 15435 13470 13472 4940 852 1563 9416 10345 5637 13792 12477 15436 15437 15438 4941 1547 968 907 9401 5832 5421 5831 15439 15109 14503 4942 9680 10172 9714 10820 15440 15441 15442 15443 15444 15445 4943 1113 10121 9886 10693 13123 13665 13664 15446 15447 15448 4944 9886 10119 1113 10692 13666 13119 13664 15449 15450 15451 4945 269 10119 9875 10692 13111 13656 13655 15452 15453 15451 4946 816 9879 10121 10693 13651 13653 13107 15454 15448 15455 4947 9808 9875 9297 10637 14800 15456 15457 14803 15458 14804 4948 9280 10069 9462 10986 14276 15459 15460 15055 15461 15056 4949 9872 9991 9334 10859 12387 15462 15463 12645 15464 12646 4950 8224 8300 10025 10616 15465 14903 15466 15467 14907 14906 4951 8409 9940 8275 10099 13299 15468 15121 13273 15123 13300 4952 827 9234 9845 10070 12061 12065 12063 15469 15470 15471 4953 9693 9778 9101 10892 15472 15473 15474 15475 15476 15477 4954 9126 9195 9414 10565 14476 14480 14479 15478 13856 15479 4955 9506 10613 9487 10930 15480 15481 13899 15230 15229 15482 4956 8921 9464 8937 10298 12404 12405 12401 15483 15484 15485 4957 1242 10010 542 10392 15486 12831 4149 15487 12832 12592 4958 1540 9420 1571 10297 13336 13334 6218 15387 15488 15489 4959 9234 10070 827 10541 15471 15469 12061 12530 12529 15490 4960 761 9255 9648 9791 11321 12894 12893 11942 14323 11943 4961 9894 10279 666 10595 14065 14064 14066 14540 15491 15492 4962 9409 9895 246 10501 15493 15494 14522 14520 14521 15495 4963 9445 10002 9716 10597 15496 15375 15497 15498 15379 15378 4964 8668 10002 9445 10597 15376 15496 15499 15377 15498 15378 4965 373 9986 9838 11042 15500 15501 15502 15503 15504 15505 4966 8685 8686 8687 10465 12440 15506 15507 12441 15508 12442 4967 7641 7696 10085 10565 14435 15509 15510 14437 15199 13328 4968 576 10455 9423 10603 14467 14468 13913 15511 15512 15513 4969 9231 10176 8023 10798 14642 14641 14640 15514 15515 15516 4970 7867 9250 9987 10701 12205 11952 12207 12943 15517 12843 4971 9209 10015 940 10455 15518 15519 11811 11814 11813 12707 4972 8430 10642 9588 11130 15520 15521 14429 14432 14434 15522 4973 9302 9804 9768 9880 14114 14174 15523 14113 14175 13751 4974 9215 10086 9629 10131 11299 11525 15524 11302 11526 11303 4975 652 9456 632 10580 11528 12341 4413 15525 15526 15527 4976 373 374 9838 9986 3298 15528 15502 15500 15501 11541 4977 7981 9460 8477 10622 12323 14821 14822 11962 15529 12226 4978 1358 9547 715 10599 15530 15531 4411 13673 15532 15533 4979 8706 8002 10329 10847 15534 15350 15535 15536 15351 15207 4980 8843 9205 9114 10418 14111 14112 14109 15537 15538 15539 4981 8818 9400 9926 10776 14053 15540 15541 15542 15543 15159 4982 9549 10404 10402 10563 15066 15544 15545 15069 15546 15070 4983 8615 8614 10252 10471 15547 15548 14742 12816 14744 15549 4984 8668 9445 10101 10474 15499 15550 15551 15552 15553 15554 4985 496 9605 10293 10517 15555 12012 12910 11498 13740 15556 4986 8925 10402 10404 10563 15557 15544 15558 15559 15070 15546 4987 10444 10447 9608 10808 15560 13180 15561 15562 13184 13183 4988 8157 9407 9634 10468 13488 15381 15380 13489 15563 13490 4989 8120 7826 9883 11091 15564 12216 15565 15566 12220 12219 4990 9347 9795 8899 10163 11933 11931 11730 12825 12824 15567 4991 9529 10575 8737 10993 15568 15569 12458 12324 12281 15570 4992 9298 670 10667 10791 14649 14650 14651 15571 15572 15573 4993 8015 10474 10848 10929 15574 15575 15576 15577 15578 15579 4994 9819 10130 9368 10807 14594 13129 13331 15333 15580 14581 4995 9519 10389 9365 10815 15581 11973 15582 15583 13569 12853 4996 660 718 9439 10717 4345 14678 14677 15584 15585 15586 4997 1138 654 1261 10498 4708 4710 4709 15587 14006 13892 4998 8989 9960 9855 10552 13885 15588 15589 13886 15590 13887 4999 9611 10430 435 11094 15591 15592 13733 13735 13734 15593 5000 9896 10085 9415 10565 15594 15200 13854 13858 13857 15199 5001 9229 9863 9743 10421 15353 14955 13973 15354 14953 14954 5002 9261 9700 1105 10371 11244 11245 11241 13131 13132 15595 5003 9055 9209 9854 10958 13047 15596 15597 13321 15598 13322 5004 8414 10183 9318 10576 12144 13077 12992 12996 12995 14583 5005 8712 9318 10186 10576 12997 13079 13080 12999 15599 12995 5006 8604 9331 9972 10996 12293 14552 14551 12687 15600 12688 5007 9445 9963 1379 10678 14233 14232 12032 13035 13034 15601 5008 334 1069 329 10273 3086 3060 3084 13072 13165 15602 5009 9361 10123 9956 10853 15603 15154 12452 12455 12457 15156 5010 9006 8995 8285 9995 13550 15604 13389 12922 13388 13551 5011 596 9225 9893 10822 11608 15330 15329 12317 15605 12318 5012 1047 246 10501 10507 2641 14521 15606 15607 14525 14524 5013 1448 1059 1128 10659 6066 4944 6067 14273 15608 14952 5014 8886 9395 8691 10303 12291 12290 12287 15609 15610 15611 5015 9383 10081 8367 10197 14178 14176 11775 13190 13189 15612 5016 8461 10102 9770 10383 13056 13149 13148 15613 15614 14418 5017 9307 10425 8923 10644 15615 15616 15617 15618 15619 15620 5018 9358 10208 7876 10265 12546 12544 11737 13207 13206 15621 5019 9932 9969 9497 10962 11369 15622 15623 15624 15625 15626 5020 9408 9895 9823 10607 15279 14375 15627 15278 14379 14378 5021 1543 202 1600 11017 1770 2456 2458 15628 15629 15630 5022 9365 9930 305 10389 11538 12978 11745 11973 11972 15631 5023 7767 7595 9828 9907 15632 15633 15634 15635 15636 15637 5024 10217 10338 1168 10518 15044 15385 15638 15046 15386 14519 5025 485 484 9777 10762 3627 11408 15639 15640 11412 11411 5026 9252 9641 9871 10158 15641 14765 15642 15643 14767 14766 5027 834 10086 9384 10352 13284 13285 11778 12656 12658 15644 5028 9323 10715 1407 10792 14366 14367 11802 14226 14225 15645 5029 8938 9330 9645 10215 11701 15366 15365 15646 15647 15648 5030 8561 9798 9410 9801 11925 11926 11375 15649 15650 14548 5031 9539 9910 9363 10236 12690 12689 12691 15651 15652 15653 5032 9262 9757 9929 10748 13529 15654 15655 15656 15657 15658 5033 9313 10369 10302 10669 12117 14707 15659 12120 14710 12121 5034 9614 10085 7696 10565 15660 15509 15661 15662 13328 15199 5035 9348 9801 8562 10454 15663 15664 12607 12611 12610 15665 5036 706 10136 10393 10921 14571 14574 12778 12780 12782 15666 5037 307 9364 10053 10200 11742 13154 13155 12988 15667 12989 5038 8042 9735 9233 10009 15668 15669 13014 13264 13266 15670 5039 9274 9965 8083 10116 15038 15037 13221 14598 14599 15671 5040 8502 9958 9846 10487 14868 14867 14866 15672 15673 11514 5041 8251 9917 9388 10067 12618 12619 11911 13371 13373 15674 5042 734 9727 9474 10625 15222 15223 15220 15394 15396 15675 5043 9464 9674 9340 10987 15676 15677 15678 15679 15680 15681 5044 1358 9393 9997 10850 13461 12862 13462 15682 15683 15684 5045 9241 10105 9862 10677 14628 14056 14629 15685 14731 14203 5046 8657 9881 7881 10084 15686 15687 15688 15689 15690 15691 5047 447 10292 9286 10909 14076 14934 14932 15692 15693 15694 5048 897 9932 9370 10739 11420 11364 11419 13030 12981 15695 5049 9209 10022 8540 11081 15696 15697 13048 13050 13049 15698 5050 10113 10594 9413 10733 14329 15699 15700 13868 15701 14330 5051 1105 10371 9611 10461 13132 15702 15703 11856 15704 13133 5052 265 10320 9458 10441 15705 15706 15707 15708 15709 15710 5053 9976 10113 1378 10920 15711 15712 15713 15714 15715 15716 5054 605 9636 9237 10192 12039 12038 11633 12193 11843 15717 5055 9329 10241 9506 10549 13903 13904 13900 15718 15719 14882 5056 9601 10188 9330 10424 14849 12697 15720 13009 13255 14851 5057 9367 10102 8982 10600 13057 13058 13054 13387 13408 15721 5058 1010 9377 9993 10416 11764 15722 15723 12929 15724 12930 5059 246 10501 9895 10763 14521 15495 15494 15725 15726 15727 5060 9364 1433 10053 10317 11743 13153 13154 12628 15728 12626 5061 350 10152 9543 10309 15729 15730 15731 15732 15733 15734 5062 9069 9742 9348 10454 15735 12428 12606 12609 12611 15736 5063 9195 8315 9414 9896 14477 12022 14480 15737 13853 15738 5064 9137 9426 8450 10277 15283 15115 15281 15739 15740 15741 5065 9351 9474 9727 10830 15742 15223 15171 15174 15176 15743 5066 9696 9740 9045 11086 12812 12810 11214 15744 15745 15746 5067 8820 9204 9926 10560 11589 15747 15748 12874 15749 12875 5068 1340 10143 9679 10326 15401 11506 15750 14488 15751 15402 5069 10047 10588 9521 10753 14332 15752 15753 11876 15754 14333 5070 9620 9912 9369 10567 14852 13938 15755 14854 13942 13941 5071 9820 10108 9453 10368 15756 13316 15757 15758 14221 14220 5072 8128 10066 8690 10522 15759 13859 15760 15761 13861 13863 5073 447 9286 10182 10909 14932 14933 14077 15692 15762 15693 5074 374 10601 9991 10986 11795 11796 11543 15763 15764 15765 5075 9075 10044 9465 10350 15051 15050 12520 15124 15126 15766 5076 1594 9832 1515 9983 11996 15767 5903 11834 15768 11997 5077 7996 7991 7987 9968 14773 15769 11678 11255 11964 14774 5078 9262 10266 10183 11055 15770 11598 15771 15772 14938 14937 5079 606 10192 9628 10842 11841 11842 11840 15773 15774 15775 5080 1416 10346 9208 11074 12391 12392 12390 14626 14625 15776 5081 9630 10098 9343 10452 13759 13401 15777 13761 14925 13762 5082 718 10010 581 10392 15778 15779 4344 14458 14457 12592 5083 8562 9801 9348 10789 15664 15663 12607 13279 13158 15780 5084 9731 9781 8094 10554 14355 14354 14356 15781 15782 15783 5085 1014 10100 9522 10405 15784 15785 15786 15787 15788 15789 5086 442 1348 9991 10859 3336 15790 12386 12644 12646 15791 5087 9473 993 10541 10788 15792 15793 15794 15795 15796 15797 5088 7870 9755 9335 11006 13281 13280 12725 12891 12890 15798 5089 9379 9958 10133 10970 15799 14870 15800 15801 15181 15180 5090 499 9638 9747 10893 15802 15803 13702 14306 14305 15804 5091 249 9719 245 9823 11218 15805 2662 11221 15806 11222 5092 854 9628 9451 10509 15807 15808 15809 15810 15811 15812 5093 8560 10107 9367 10600 13090 13091 13087 13385 13387 15813 5094 8094 8482 9781 10766 15814 15815 14354 14357 14359 15816 5095 1400 1415 10618 10713 4781 15817 13562 13565 13567 15818 5096 9374 10587 1400 10713 15819 15820 13564 13566 13565 15821 5097 8300 9959 9446 10616 15019 15822 14904 14906 14905 15020 5098 8188 10624 10349 10973 15823 15824 15825 15826 15827 15828 5099 9548 10312 1596 10403 15829 15830 15831 12604 15832 15833 5100 9450 10199 361 10500 15834 15835 15836 15837 15108 15838 5101 9303 9768 10314 10805 14062 11567 11893 15839 11571 11570 5102 8482 10162 9781 10766 15840 15841 15815 15816 14359 15842 5103 8273 8160 10301 10639 15843 14873 15844 15845 14877 14876 5104 1054 10122 9361 10853 14292 14290 12454 12456 12455 15846 5105 9175 10067 9592 10216 13289 11403 13287 15847 15848 15849 5106 9099 10058 10133 10970 15850 15851 15177 15179 15181 15852 5107 1304 9706 10314 10479 12473 12470 12474 15853 12845 15854 5108 9497 9932 9370 9969 15623 11364 15855 15622 11367 11369 5109 348 10152 10309 10683 15856 15734 15857 15858 15859 15860 5110 8686 10024 8685 11001 12668 12669 12440 12857 15861 12858 5111 9091 9578 9096 10231 15862 12275 15863 15864 12278 12280 5112 9907 10402 9549 10404 15865 15545 15866 15867 15066 15544 5113 8127 9357 10522 10759 12073 12076 12077 12805 15868 12806 5114 1096 967 10245 10767 5969 15869 15294 15296 15295 15870 5115 6942 9740 10205 10255 14839 15871 15872 14840 15873 14841 5116 9300 9834 9760 10889 15874 15239 15875 15876 15240 15242 5117 8302 9959 9263 10536 15335 15334 13143 15877 13559 15878 5118 1594 1515 925 9983 5903 5899 5901 11834 15879 15768 5119 9854 10015 9423 10071 15880 15881 15882 15883 14250 12704 5120 9461 9260 10035 10176 15884 12315 15885 15886 15887 15888 5121 9488 10110 9631 10150 12877 14013 15889 15890 11347 13963 5122 8103 8935 10094 11040 15424 11827 15426 15891 12100 12099 5123 8015 10848 8014 10929 15576 15892 15893 15577 15894 15578 5124 9138 9592 9437 10663 11401 11400 11399 15895 15896 15897 5125 365 10320 265 10441 15898 15705 2750 15899 15708 15710 5126 9072 7831 7833 10395 15900 14829 15136 11519 15137 15901 5127 1236 9416 1563 10169 13791 13792 5636 15902 15903 15904 5128 8478 10349 8188 10624 15905 15825 15906 15907 15823 15824 5129 6981 150 6911 10139 13803 15908 7230 13623 15909 13806 5130 8640 10083 9347 10163 12984 12985 11732 12823 12825 15910 5131 7592 9734 9548 10418 14562 15911 15912 14563 15913 14564 5132 9743 10149 8030 10729 13977 13975 13972 15914 15915 15916 5133 9603 7622 10413 10935 15917 15918 15919 15920 15921 15922 5134 9451 9628 854 10312 15808 15807 15809 15923 15924 15925 5135 9220 8489 10164 10616 11629 13237 13238 13066 15926 13064 5136 1551 912 9429 10440 5850 13950 15111 15927 15928 15929 5137 9466 10445 9663 10544 15930 14361 15931 15932 14365 14364 5138 8366 10001 9383 10428 13244 13245 11776 12534 12533 15933 5139 1373 1321 10063 10538 5402 13474 15934 15935 13475 13219 5140 8477 9730 9460 10264 15936 15937 14821 14823 14825 15938 5141 9024 9043 9960 10646 15939 15940 14028 14031 14033 15941 5142 9055 9854 9209 10153 15597 15596 13047 15942 15943 15944 5143 292 9837 9340 10612 14977 14976 13510 13512 13511 15945 5144 8241 10215 9645 11070 15946 15647 15947 15948 15949 15950 5145 8982 8560 8461 10600 15951 13088 13053 13408 13386 13385 5146 7997 7998 9646 10965 15952 15005 15953 15954 15007 15006 5147 9263 8936 10075 10582 13142 13558 13557 13145 15955 13146 5148 894 10377 9649 10739 12196 15956 15957 15958 15959 15960 5149 9371 10279 9894 10595 14168 14065 14169 15961 14540 15492 5150 8296 9790 10246 10353 15962 15963 15964 14590 15965 15966 5151 9644 9757 1333 10911 15967 15968 15969 15970 15971 15972 5152 9680 9714 9386 10820 15442 15973 15974 15443 15975 15444 5153 8201 9273 10166 10468 11660 13291 13292 11984 12078 11985 5154 1180 9202 1509 10201 12654 12791 6190 15976 15977 15978 5155 9227 7837 10115 10415 12676 14189 14188 12675 15979 12674 5156 8080 10190 9274 10816 13225 13226 13222 15980 14600 15981 5157 718 9439 10010 10392 14678 15982 15778 14458 12592 14679 5158 740 10399 670 10667 15983 14647 4788 15984 14650 14652 5159 9637 10660 9230 10835 14638 15985 13648 13579 13649 14639 5160 8237 10318 9375 10487 14700 14701 12046 12048 11515 15986 5161 1359 1017 1554 10599 6035 6037 6036 12333 15254 15987 5162 9357 9982 8123 10522 13019 13020 12145 12076 12147 15988 5163 617 9283 9776 10442 11561 11782 11783 11562 15989 11281 5164 9350 9771 1266 10322 15990 15991 11937 11314 15992 15993 5165 9615 10199 361 10331 15994 15835 15995 15996 15107 15997 5166 8257 9431 8441 10519 13494 15998 15999 13495 16000 13496 5167 9232 9988 391 10203 16001 16002 11624 12537 12536 13527 5168 10234 10380 1474 10403 16003 16004 14309 14312 14311 16005 5169 9262 10118 9757 10697 13532 13533 13529 16006 14884 14886 5170 9461 9681 9260 10176 16007 16008 15884 15886 15888 16009 5171 9324 10205 9740 10255 16010 15871 12811 16011 14841 15873 5172 7880 9881 9360 10671 13658 13657 13659 13694 13693 16012 5173 8340 10184 8381 10493 16013 14197 16014 16015 12940 14199 5174 384 385 9989 10838 3333 12158 16016 16017 12162 12161 5175 7881 10084 9881 10843 15690 15691 15687 16018 16019 16020 5176 8820 9926 9204 10586 15748 15747 11589 12977 12976 16021 5177 1053 9767 278 10122 16022 13535 2830 16023 13116 13537 5178 278 9767 277 10120 13535 16024 2817 13113 16025 13536 5179 7996 9753 9315 10451 11359 11358 11257 12745 12744 16026 5180 9316 9749 8381 10451 16027 16028 12747 12751 12750 16029 5181 625 9931 9377 10458 13520 13519 11765 12951 12953 16030 5182 7971 10069 9280 10204 14278 14276 11667 12538 12540 16031 5183 9239 9781 10162 10766 16032 15841 16033 16034 15842 14359 5184 10012 10064 8292 10656 16035 16036 16037 16038 16039 16040 5185 1085 753 9531 10441 5191 15088 12915 13960 13962 16041 5186 9402 10365 8926 10563 16042 16043 16044 15068 16045 16046 5187 9446 9959 9708 10616 15822 15018 16047 14905 15021 15020 5188 8409 10016 9940 10605 16048 16049 13299 16050 16051 16052 5189 877 9473 993 10541 16053 15792 5102 16054 15793 15794 5190 9703 10252 8614 10471 16055 15548 16056 11345 15549 14744 5191 346 10160 9248 10257 13234 13235 11646 12528 12527 16057 5192 7843 10181 9906 10617 13669 13668 13667 16058 16059 16060 5193 9124 10347 9454 11183 11454 11455 11453 16061 16062 16063 5194 9267 10212 8616 10471 16064 16065 12814 12818 12817 16066 5195 9347 9649 9932 10969 16067 15097 16068 14448 15101 15100 5196 890 9666 9220 9834 15103 15102 12336 12338 12340 16069 5197 665 9433 712 10559 16070 16071 4758 16072 16073 16074 5198 9185 10402 9907 10404 16075 15865 16076 16077 15867 15544 5199 1313 497 506 9974 3925 3917 3926 11573 12037 11307 5200 8003 10035 9260 10566 12718 12315 12717 12914 12913 16078 5201 9316 9867 783 10399 16079 16080 11697 12883 12882 16081 5202 670 9866 9298 10399 16082 16083 14649 14647 14648 16084 5203 10035 10176 9260 10566 15887 15888 12315 16078 12913 16085 5204 9324 10255 1441 10608 16011 16086 14727 14729 14728 16087 5205 9055 10153 9209 11081 15942 15943 13047 13051 13050 16088 5206 9743 9236 10421 10430 16089 16090 14953 14956 14958 16091 5207 1000 9474 1001 10625 15219 16092 5108 15395 16093 15396 5208 7977 10033 9246 10264 12711 12712 11643 13248 13247 16094 5209 7979 9246 10034 10264 11644 12723 12722 13246 16095 13247 5210 1006 361 9615 10199 2896 15995 16096 16097 15994 15835 5211 8923 10379 9307 10644 16098 16099 15617 15619 15618 16100 5212 9377 9892 1330 10458 16101 16102 11766 12953 12952 16103 5213 8388 8389 10161 10702 16104 16105 14084 14319 14321 16106 5214 312 1364 316 9572 3000 2999 2998 11337 16107 14260 5215 9247 10381 10002 10819 16108 16109 12964 14806 14215 16110 5216 8321 9704 10235 10870 16111 16112 16113 16114 16115 16116 5217 9194 8526 9116 10248 16117 13192 14286 14285 11784 13193 5218 435 1275 9611 10045 3614 16118 13733 13731 13732 16119 5219 8279 9612 8335 10046 11599 16120 16121 11601 16122 11600 5220 292 10199 9837 10500 13509 14978 14977 16123 16124 15838 5221 9142 10216 9420 10586 16125 16126 13873 13876 13878 16127 5222 9366 10139 1074 10174 13001 13002 11749 13393 13392 11462 5223 8843 9193 9205 10268 14110 13480 14111 16128 16129 16130 5224 9419 8516 10081 11095 13993 13994 13995 16131 16132 16133 5225 9649 10377 9270 10739 15956 16134 16135 15959 13455 15960 5226 929 928 930 10585 5000 5910 5909 13345 16136 13346 5227 7551 198 1221 10499 15076 1637 16137 15077 16138 15078 5228 9553 10172 9680 10820 16139 15440 16140 16141 15443 15445 5229 8401 9208 10218 10561 13374 12190 13376 13395 16142 13396 5230 1330 9892 9377 10416 16102 16101 11766 12928 12930 16143 5231 7720 7709 1168 10518 16144 16145 15384 14772 15386 16146 5232 9126 9414 10311 10565 14479 12027 14694 15478 16147 13856 5233 149 9548 7630 10800 16148 16149 16150 16151 16152 16153 5234 9884 10315 9345 11056 11210 12057 12056 14481 16154 14482 5235 9445 10474 8668 10597 15554 15552 15499 15498 15377 16155 5236 8642 9898 9788 10387 16156 16157 16158 16159 16160 16161 5237 733 10541 993 10788 16162 15793 5101 16163 15797 15796 5238 572 1005 722 10633 4174 4301 4300 13821 13823 14636 5239 1297 9847 9362 10676 12182 12183 11752 13505 13507 16164 5240 9633 10215 8240 11070 16165 16166 16167 16168 16169 15950 5241 350 348 10152 10309 3172 15856 15729 15732 15734 15857 5242 670 9298 9866 10791 14649 16083 16082 15573 16170 15571 5243 6981 6911 6959 10139 7230 7373 7372 13623 11457 15909 5244 206 9511 7561 10391 16171 16172 16173 16174 16175 16176 5245 9243 9823 247 10323 11220 11265 11264 12900 12899 16177 5246 960 953 1463 10508 5951 5953 5952 16178 11869 14335 5247 8685 10024 9342 10465 12669 12670 12439 12441 12443 16179 5248 9044 9331 9711 10577 12294 16180 16181 12295 16182 12296 5249 9370 9773 899 10739 16183 16184 12979 12981 12980 13456 5250 9423 10071 10015 10455 14250 12704 15881 14468 12707 12709 5251 489 1277 9605 10057 3885 11489 16185 16186 11493 11492 5252 8811 8812 8074 9797 16187 15030 14242 14241 11546 15031 5253 391 9988 9232 10737 16002 16001 11624 13137 13139 16188 5254 9382 10292 10222 11163 16189 15139 16190 16191 15142 15144 5255 9247 9756 8669 10101 16192 16193 11655 13039 13038 16194 5256 9383 10197 8365 10428 13190 13188 11777 12533 12532 16195 5257 8759 8083 10116 10816 16196 14599 16197 16198 14602 14601 5258 9213 10047 9521 10753 11873 15753 16199 11435 15754 11876 5259 290 9499 284 9950 16200 16201 2858 16202 16203 15431 5260 9195 9896 9414 10565 15737 13853 14480 15479 13856 13858 5261 250 10080 9243 10323 13231 13232 11645 12901 12900 16204 5262 380 10433 9460 10569 14988 14987 14986 16205 16206 16207 5263 942 938 192 10579 2400 2402 2401 14471 13921 16208 5264 8674 10052 9392 10773 15311 15310 12866 13240 13242 16209 5265 9647 10788 1343 10917 16210 16211 16212 16213 16214 16215 5266 804 9706 9234 10541 16216 16217 12062 12531 12530 16218 5267 9285 10032 264 10320 13433 13432 11675 13097 13096 16219 5268 8841 8968 9653 10878 16220 16221 16222 16223 16224 16225 5269 8983 8354 9640 10874 16226 16227 16228 16229 16230 16231 5270 8950 9733 9265 10779 11286 11287 11285 16232 16233 16234 5271 915 9971 9419 10578 16235 16236 14497 16237 16238 16239 5272 8321 10288 9704 10870 16240 14714 16111 16114 16116 16241 5273 9387 10097 10684 10866 13484 15232 16242 13486 15233 12925 5274 1122 9507 10168 10531 16243 16244 16245 16246 16247 16248 5275 1300 9556 364 10111 16249 16250 3259 16251 16252 16253 5276 8241 9645 10227 11070 15947 11909 16254 15948 16255 15949 5277 783 9867 9316 10177 16080 16079 11697 13069 13068 16256 5278 9315 9871 395 10177 16257 16258 12360 16259 16260 16261 5279 9462 10069 9780 10986 15459 15054 16262 15461 15057 15056 5280 7991 8738 10035 10604 16263 12314 16264 14775 13909 13908 5281 9273 10468 8270 10630 11985 11983 11659 11770 12151 16265 5282 9348 9742 9069 10759 12428 15735 12606 12765 12764 16266 5283 9224 10293 9605 10517 12911 12012 16267 11500 15556 13740 5284 9336 10005 9903 10966 16268 15163 16269 16270 14738 15162 5285 8055 9840 8053 10306 11532 16271 16272 11534 16273 11533 5286 475 9681 9231 10596 14659 14658 13541 16274 16275 16276 5287 9961 10152 1427 10628 13539 13540 12635 16277 16278 16279 5288 9871 10068 1135 10158 14764 16280 16281 14767 16282 14768 5289 7596 9907 7533 10402 16283 16284 16285 16286 16287 15865 5290 780 9654 781 10875 16288 16289 4518 16290 16291 16292 5291 9211 9479 10304 10540 16293 16294 16295 16296 16297 16298 5292 9275 10204 10059 10394 13627 16299 16300 13628 16301 13629 5293 9050 9712 8142 10902 12410 16302 16303 12413 16304 12414 5294 9611 10045 9268 11094 13732 16305 16306 13735 16307 13736 5295 8540 10022 9209 10958 15697 15696 13048 13323 13322 16308 5296 8851 9775 9204 10560 15000 14999 11588 12876 12875 16309 5297 9384 9693 9101 10892 16310 15474 16311 16312 15476 15475 5298 1295 229 10256 10673 2584 16313 14139 13256 14141 16314 5299 8191 10038 9068 10759 12769 12770 11798 12986 16315 12873 5300 9275 10014 7858 10813 15363 15362 12372 16316 16317 16318 5301 9547 10100 715 10599 16319 16320 15531 15533 15532 16321 5302 351 9543 9913 10309 14315 14314 14313 16322 16323 15733 5303 7981 9831 7982 10033 11960 15244 15243 11959 16324 11958 5304 1358 9547 10599 10850 15530 15533 13673 15682 16325 16326 5305 7642 7704 7703 9698 16327 14393 14848 14657 11475 14394 5306 1103 9750 9310 11025 15183 15182 11690 12650 12652 16328 5307 653 9936 9225 10559 14424 14423 11606 13573 13572 16329 5308 511 340 9976 10683 3140 16330 16331 16332 16333 16334 5309 572 9390 10131 10285 13354 13357 13358 14223 16335 14222 5310 9502 9614 7696 10565 16336 15661 13325 13329 13328 15662 5311 9296 9963 409 10434 16337 16338 12259 13169 13168 14234 5312 7869 9755 9250 10701 13745 13744 11388 12841 12843 13282 5313 1358 594 715 9547 4410 4399 4411 15530 15531 16339 5314 929 9399 10117 10585 16340 16341 13343 13345 13347 16342 5315 1051 1477 9424 10015 5944 13911 16343 15035 16344 16345 5316 461 9824 10407 11159 16346 13440 16347 16348 16349 16350 5317 9035 10805 10020 10903 16351 16352 16353 16354 16355 16356 5318 9971 10169 1561 10175 16357 16358 16359 16360 16361 16362 5319 8646 9806 9546 11113 16363 16364 16365 16366 16367 16368 5320 8682 10087 9699 10775 16369 16370 16371 16372 16373 16374 5321 9347 9411 10163 10634 13807 16375 12825 13812 16376 13810 5322 1321 9979 1107 10737 12097 11887 3459 16377 14962 14964 5323 1283 10320 365 10915 11332 15898 2751 16378 16379 16380 5324 708 9629 573 10131 16381 11524 4302 16382 11301 11526 5325 9402 10342 1322 10439 15130 15128 14122 14784 16383 16384 5326 9052 9187 9415 10085 16385 16386 16387 16388 15200 16389 5327 8381 9749 9316 10184 16028 16027 12747 14197 14198 16390 5328 8415 9759 9318 10183 16391 16392 12993 13076 13077 16393 5329 8415 9318 9759 10186 12993 16392 16391 13078 16394 13079 5330 9372 9761 8388 10187 14082 14081 14083 16395 16396 16397 5331 9315 9730 8942 10451 16398 16399 11681 12744 12743 16400 5332 8636 9730 9316 10451 16401 16402 12746 12749 12751 16400 5333 7659 9709 192 10456 16403 13920 16404 16405 13918 13919 5334 899 9773 9370 10587 16184 16183 12979 13152 13151 16406 5335 8289 9998 9306 10364 16407 16408 12699 12703 12702 16409 5336 9602 10628 9493 10683 16410 16411 16412 16413 16414 16415 5337 939 942 9709 10579 5933 14470 16416 16417 13922 14471 5338 1551 9429 914 10343 15111 13949 5851 16418 16419 16420 5339 9333 8693 9904 10262 11709 12800 12801 12939 16421 12937 5340 376 9246 9986 10557 11635 11790 12208 11947 16422 11948 5341 378 9989 9246 10557 12212 12211 11634 11949 11948 16423 5342 604 605 9636 10134 4432 12039 16424 16425 12042 12041 5343 9211 10304 10004 10540 16295 16426 16427 16296 16428 16297 5344 1238 7630 149 9548 16429 16150 1697 16430 16148 16149 5345 9743 10135 8024 10421 16431 16432 16433 14953 16434 16435 5346 9420 9926 8821 10586 15414 15413 13874 13878 13877 16021 5347 9539 10191 9910 10879 12693 12694 12690 16436 16437 16438 5348 8217 8379 10882 11051 16439 16440 16441 16442 16443 16444 5349 9047 10179 9385 11113 14282 14281 13715 16445 16446 16447 5350 9402 10156 8926 10365 16448 16449 16044 16042 16043 16450 5351 9324 10155 1441 10255 15016 15014 14727 16011 16086 14842 5352 1059 9953 1128 10659 14595 16451 4944 14952 15608 14274 5353 9237 10134 599 10542 12040 13187 11632 12426 12425 16452 5354 506 9974 9224 10293 12037 11308 11615 12912 12911 16453 5355 9340 9674 9464 9825 15677 15676 15678 16454 14715 16455 5356 9068 10038 9389 10350 12770 12771 11800 13295 13297 16456 5357 9247 9862 9748 10002 15407 14818 14805 12964 14210 14820 5358 9788 9898 8642 11060 16157 16156 16158 16457 16458 16459 5359 1441 1056 10103 10608 2487 16460 14725 14728 14730 16461 5360 149 7630 7534 10800 16150 16462 16463 16151 16464 16152 5361 660 10213 9439 10392 16465 16466 14677 14459 14679 16467 5362 8691 9978 9395 10684 16468 16469 12290 13683 12638 16470 5363 558 9707 9706 11180 14009 12467 14008 16471 16472 16473 5364 9372 10187 8388 10702 16395 16396 14083 14320 14319 16474 5365 8296 10215 9633 10933 16475 16165 14588 14591 14593 16476 5366 9024 9688 9322 10536 14814 14813 14030 14612 14614 16477 5367 9300 9760 9834 9864 15875 15239 15874 16478 14131 16479 5368 9343 10641 9648 10837 16480 14942 14968 14969 14326 14944 5369 9532 10183 9262 10266 11594 15771 16481 11597 15770 11598 5370 9254 10636 413 10678 14810 14811 14388 16482 16483 16484 5371 9251 9579 10393 10921 16485 16486 16487 16488 12782 16489 5372 9143 9400 8818 10776 14052 14053 14051 16490 15542 15159 5373 9286 10292 10182 11031 14934 14075 14933 16491 14078 14080 5374 9052 10085 9896 10565 16388 15594 16492 16493 13858 15199 5375 7630 1238 7612 9548 16429 16494 16495 16149 16496 16430 5376 8189 9204 9794 10586 11587 13845 13844 12975 16497 12976 5377 542 10010 1242 10018 12831 15486 4149 12830 16498 12589 5378 7918 10133 9658 11115 16499 16500 16501 16502 16503 16504 5379 920 10060 9394 11174 12902 12903 12733 16505 16506 16507 5380 7880 9881 7878 10124 13658 16508 16509 13661 16510 13662 5381 9229 10421 8030 10674 15354 16511 13974 14256 14255 16512 5382 8604 9972 9785 10996 14551 16513 16514 12687 16515 15600 5383 9333 9792 8643 10262 16516 16517 11707 12939 12938 16518 5384 652 10132 9456 10580 12493 12492 11528 15525 15527 16519 5385 8667 10002 9247 10101 12963 12964 11654 13037 13039 16520 5386 8399 8400 10218 10544 16521 16522 15104 14363 15105 16523 5387 8217 8875 8379 11051 16524 16525 16439 16442 16444 16526 5388 8461 8939 10102 10383 16527 16528 13056 15613 14418 16529 5389 9372 9818 9761 9885 14341 14340 14082 16530 15211 15210 5390 9326 9813 9758 9882 12246 14543 14965 13837 15213 13838 5391 9762 9816 9355 9876 15215 16531 12255 12253 12254 15218 5392 8926 10404 9402 10563 16532 15065 16044 16045 15068 15070 5393 1239 1285 1512 10226 6229 6231 6230 15132 13968 12600 5394 8360 10098 9943 11102 16533 16534 16535 16536 16537 16538 5395 9446 9263 9959 10025 14097 15334 15822 14099 16539 14098 5396 8427 9349 10432 10711 11723 12488 12486 12264 16540 12265 5397 8002 8707 9646 10847 16541 16542 15205 15207 15206 16543 5398 9379 10133 10058 10970 15800 15851 16544 15801 15852 15181 5399 9504 10738 9328 10804 16545 12819 16546 16547 12821 11924 5400 862 9833 9368 9847 12014 12015 11747 12180 12179 16548 5401 511 9976 10628 10683 16331 16549 16550 16332 16415 16333 5402 9143 8817 9400 10776 14049 14054 14052 16490 15159 15161 5403 6941 10155 6942 10255 14074 14837 7306 16551 14840 14842 5404 8934 10359 8231 10549 16552 14878 16553 16554 14881 14883 5405 485 9777 9235 10762 15639 16555 16556 15640 16557 11412 5406 8938 9330 10215 10933 11701 15648 15646 12376 16476 12377 5407 8432 9080 9718 10495 16558 16559 14672 14674 14676 16560 5408 9355 9816 9762 10583 16531 15215 12255 16561 15237 15236 5409 9419 10524 8516 11095 14528 14526 13993 16131 16133 16562 5410 8451 9935 9398 10611 12783 12784 11979 13799 13801 16563 5411 9318 9879 10118 10697 13650 13652 13105 16564 14886 15420 5412 1328 9979 9232 10485 15166 15165 11622 11844 11846 16565 5413 8588 9537 10163 10836 13764 13767 13768 16566 16567 16568 5414 9419 9632 9031 10154 15344 15343 13992 16569 16570 16571 5415 1034 9316 9705 10177 11574 11577 11578 13067 16572 13068 5416 9274 9471 10190 10532 16573 16574 13226 16575 16576 16577 5417 1469 9676 9373 10558 16578 16579 11762 14351 14353 16580 5418 9274 9928 9471 10532 16581 16582 16573 16575 16577 16583 5419 1358 10599 9393 10850 13673 12334 13461 15682 15684 16325 5420 1475 9999 9301 10339 11464 11235 11463 12028 12030 16584 5421 8023 9716 9231 11151 14913 14912 14640 16585 16586 16587 5422 9546 9806 8646 10563 16364 16363 16365 16588 16589 16590 5423 8930 9232 10090 10490 11620 12885 12886 11825 13847 11826 5424 8023 9231 10798 11151 14640 15514 15515 16585 16591 16586 5425 351 353 9913 10603 3193 16592 14313 14316 14318 16593 5426 9176 9802 9398 11096 14044 14045 11978 15410 15412 16594 5427 9798 9857 9273 10720 16595 16596 16597 16598 16599 16600 5428 1238 7612 9548 10226 16494 16496 16430 16601 12601 16602 5429 9306 9998 8289 10424 16408 16407 12699 15272 16603 16604 5430 7988 9968 9232 10490 12948 12947 11619 11824 11826 16605 5431 8318 10067 9388 10230 13372 13373 11910 14575 14576 16606 5432 1532 10401 9455 10555 16607 16608 13748 13747 11895 16609 5433 9230 9808 9489 10534 13848 16610 16611 13364 16612 16613 5434 10476 10584 10257 10902 16614 16615 13933 16616 16617 12837 5435 10012 10656 8292 10942 16038 16039 16037 16618 16619 16620 5436 1324 10222 9402 10249 14125 14126 14123 14781 14782 16621 5437 1300 9556 10111 10450 16249 16253 16251 16622 16623 16624 5438 9044 9711 9331 10996 16181 16180 12294 12686 12688 16625 5439 1470 10042 9438 10234 11336 11229 11335 16626 16627 16628 5440 9354 9886 10121 10693 13663 13665 13124 16629 15448 15447 5441 9354 10119 9886 10692 13121 13666 13663 16630 15449 15451 5442 9335 9875 10119 10692 13654 13656 13112 16631 15451 15453 5443 9318 10121 9879 10693 13109 13653 13650 16632 15455 15448 5444 373 375 9986 11042 3303 16633 15500 15503 15505 16634 5445 7946 8967 7931 9796 12201 16635 16636 12202 16637 12203 5446 9480 10248 9202 10372 11785 16638 16639 11788 16640 11789 5447 8657 9881 10084 10904 15686 15691 15689 16641 16642 16643 5448 9245 9883 10308 10761 16644 14665 16645 13778 14669 14668 5449 9520 9215 10086 10892 16646 11299 16647 16648 16649 16650 5450 9223 10064 10012 10656 16651 16035 16652 16653 16038 16040 5451 9549 9907 7596 10402 15866 16283 16654 15545 16286 15865 5452 9740 10155 9324 10255 14838 15016 12811 14841 16011 14842 5453 9315 9968 7987 10622 11256 11964 11682 12366 12365 16655 5454 8454 9437 10067 10230 14154 11404 14156 16656 16606 16657 5455 8365 10197 9510 10428 13188 16658 16659 12532 16660 16195 5456 9016 10668 9854 11147 16661 16662 16663 16664 16665 16666 5457 9504 10269 10738 10804 16667 11920 16545 16547 11924 11923 5458 9489 9808 9230 9944 16610 13848 16611 16668 13647 16669 5459 8897 8916 8100 9985 16670 12352 11638 12194 11485 12353 5460 8478 10624 8188 10973 15907 15823 15906 16671 15826 15828 5461 269 9875 9335 10202 13655 13654 11712 12553 12555 16672 5462 201 6914 6984 9525 16673 7197 14150 14152 14151 16674 5463 395 9871 9315 10203 16258 16257 12360 12541 12543 13526 5464 9338 9881 7879 10207 16675 16676 13417 13415 13416 16677 5465 7879 9881 9338 10208 16676 16675 13417 13421 13422 16678 5466 8921 9825 9464 10298 14716 14715 12404 15483 15485 16679 5467 9460 9730 8477 10622 15937 15936 14821 12226 15529 16680 5468 9780 9280 10394 10986 15053 16681 16682 15057 16683 15055 5469 413 9803 9254 10678 14387 14386 14388 16483 16482 16684 5470 9743 9863 9236 10430 14955 16685 16089 14956 16091 14957 5471 8657 10084 10207 10904 15689 16686 16687 16641 16688 16642 5472 725 9722 723 10139 16689 14271 4848 16690 13003 13311 5473 9100 9105 10334 10503 16691 12050 16692 16693 12054 12053 5474 9541 10117 928 10712 13978 13344 13979 16694 16695 16696 5475 718 10010 9439 10717 15778 15982 14678 15586 15585 16697 5476 9286 9540 10292 11031 16698 16699 14934 16491 14080 16700 5477 8657 10207 9881 10904 16687 16677 15686 16641 16643 16688 5478 9697 9935 8817 10776 12785 15157 16701 16702 15161 15160 5479 810 9748 11031 11196 16703 16704 16705 16706 16707 16708 5480 9551 10346 1416 11080 12393 12391 12388 14686 16709 16710 5481 7964 7865 8793 9987 11669 16711 16712 12129 16713 12209 5482 373 375 374 9986 3303 3302 3298 15500 11541 16633 5483 374 376 377 9986 3307 3310 3309 11541 11542 12208 5484 384 385 379 9989 3333 3332 3327 16016 12383 12158 5485 378 9989 379 9991 12212 12383 3323 12210 12385 12213 5486 377 378 379 9991 3317 3323 3322 11544 12385 12210 5487 379 442 1348 9991 3334 3336 3325 12385 15790 12386 5488 8297 8056 8974 9990 16714 16715 15316 15319 15321 16716 5489 1028 9447 1027 9678 16717 16718 6048 16719 12107 16720 5490 656 9431 839 10310 13581 16721 4718 15346 16722 15347 5491 8267 10187 9772 10732 16723 16724 16725 16726 16727 16728 5492 7869 7871 7867 10701 11389 12206 16729 12841 12943 12842 5493 10045 10274 9733 11144 16730 16731 16732 16733 16734 16735 5494 8989 7927 8901 10552 16736 16737 13883 13886 13888 16738 5495 9447 9678 1028 10051 16720 16719 16717 16739 16740 16741 5496 9138 9437 8454 10663 11399 14154 14155 15895 16742 15896 5497 586 10010 9983 10018 16743 11838 16744 16745 16746 12589 5498 9116 9480 8525 10865 11786 16747 16748 13956 16749 13954 5499 9419 1428 10168 10531 14496 16750 16751 14500 16247 14498 5500 9709 9793 7644 10472 16752 16753 16754 16755 16756 16757 5501 960 9911 9369 10807 16758 16759 14578 14580 14582 16760 5502 9731 9781 9239 10766 14355 16032 16761 14358 16034 14359 5503 8125 9622 10318 10487 16762 16763 16764 16765 15986 16766 5504 1359 10343 9997 10344 16767 16768 12861 12330 12863 16769 5505 9522 10100 9407 10471 15785 16770 16771 16772 11330 16773 5506 8319 9439 8261 10437 14205 14204 14206 16774 16775 16776 5507 8526 8525 9116 9480 16777 16748 13192 13191 11786 16747 5508 741 9710 9316 10399 12417 12415 11575 12881 12883 16778 5509 489 10057 9605 10975 16186 11493 16185 16779 16780 16781 5510 9307 9782 8923 10425 16782 16783 15617 15615 15616 16784 5511 7830 9884 9266 10540 13840 13841 12238 13176 13178 11262 5512 1499 9203 10525 10548 14608 13727 15255 14609 16785 14610 5513 9699 10087 9290 10775 16370 16786 16787 16373 16788 16374 5514 9679 10143 9405 10326 11506 15400 16789 15751 14487 15402 5515 9879 10140 9332 10990 14183 13468 13724 14186 16790 14187 5516 9714 10172 628 10820 15441 16791 16792 15444 16793 15445 5517 7533 9907 8702 10402 16284 16794 16795 16287 16796 15865 5518 878 380 10433 10557 3339 14988 16797 16798 14990 14989 5519 9772 10187 9371 10732 16724 16799 16800 16727 16801 16728 5520 9096 10231 9337 10752 12278 12279 12277 13931 13930 16802 5521 8925 10402 9185 10404 15557 16075 16803 15558 16077 15544 5522 8297 8056 9990 10888 16714 16716 15319 15356 15358 16804 5523 9258 9658 10133 11115 16805 16500 16806 16807 16504 16503 5524 407 9908 9296 10434 13696 13697 12260 13167 13169 16808 5525 1107 9839 9317 10538 11884 11883 11885 13218 13220 16809 5526 9223 10656 10012 10942 16653 16038 16652 16810 16618 16620 5527 9903 10005 9336 11012 15163 16268 16269 14739 16811 15164 5528 1235 481 743 10068 3826 3844 3846 14017 16812 14769 5529 9434 972 9830 10180 13378 16813 16814 14021 16815 14570 5530 1086 10612 9950 10801 16816 15432 16817 16818 16819 16820 5531 710 1525 1508 10525 4990 4989 4988 11990 15256 13641 5532 1006 9615 361 10331 16096 15995 2896 16821 15107 15996 5533 8697 9534 8041 10488 16822 16823 16824 16825 13017 16826 5534 1203 9370 9969 10587 11366 11367 11368 13150 16827 13151 5535 9310 1104 9920 10606 11691 14473 14472 12140 16828 12141 5536 9324 10358 10205 11099 11930 15285 16010 16829 15289 15288 5537 8024 10135 9743 10938 16432 16431 16433 16830 16831 16832 5538 9374 9773 1400 10587 14158 14157 13564 15819 15820 16406 5539 9291 9872 9700 10838 13449 12021 16833 13450 12809 12160 5540 9785 9972 9331 10996 16513 14552 16834 16515 12688 15600 5541 1490 645 831 10753 4665 4294 4666 14048 11433 11875 5542 1533 9709 168 10324 13026 16835 2275 13027 16836 13028 5543 9139 7778 9176 11096 16837 16838 16839 16840 15410 16841 5544 10349 10624 9382 10973 15824 16842 16843 15827 16844 15828 5545 9460 380 9986 10557 14986 16845 16846 14991 16422 14989 5546 8557 9692 9373 10337 16847 16848 11760 12578 12577 16849 5547 8983 9640 10164 10874 16228 16850 16851 16229 16852 16230 5548 9067 10048 9897 10231 16853 16854 16855 16856 16857 16858 5549 9416 9626 852 10345 12476 12475 12477 15437 15436 16859 5550 8125 10318 8237 10487 16764 14700 16860 16765 12048 15986 5551 891 9864 9220 10535 14132 14130 12337 12408 12407 16861 5552 8296 9790 9083 10246 15962 16862 16863 15964 16864 15963 5553 9665 10257 9289 10901 16865 16866 16867 16868 16869 16870 5554 9450 361 10199 10331 15836 15835 15834 16871 15997 15107 5555 258 1283 10125 11182 2729 11275 16872 16873 16874 16875 5556 9641 9753 8739 11084 12005 16876 16877 16878 16879 16880 5557 9091 9578 10231 10918 15862 12280 15864 16881 16882 16883 5558 9392 9772 8259 10773 16884 16885 12865 13242 13241 16886 5559 8929 9306 9966 10364 12700 15270 16887 12701 16888 12702 5560 8651 9039 9585 10188 16889 16890 13686 13684 13685 16891 5561 8968 10108 9653 10878 16892 16893 16221 16225 16224 16894 5562 722 9390 9984 10131 13355 16895 16896 13356 16897 13357 5563 9265 10340 8950 10779 11361 11362 11285 16233 16232 16898 5564 9205 10258 9114 10418 13479 14792 14112 15539 15538 16899 5565 9647 9726 1343 10788 16900 16901 16212 16210 16211 16902 5566 9519 10815 9365 11013 15583 13569 15582 16903 16904 16905 5567 8350 9510 8365 10197 16906 16659 16907 16908 13188 16658 5568 9439 9995 8261 10437 16909 16910 14204 16776 16775 16911 5569 760 10021 9255 10647 11582 11581 11322 12348 12350 16912 5570 1545 932 1042 9403 5921 5513 5922 16913 16914 16915 5571 9146 8646 8532 9403 16916 16917 16918 16919 16920 16921 5572 968 9401 1547 10338 14503 15439 5832 16922 16923 16924 5573 576 9423 10285 10603 13913 13917 13915 15511 16925 15512 5574 9535 9859 9257 9973 16926 16927 16928 16929 16930 16931 5575 9241 11031 9748 11196 16932 16704 16933 16934 16708 16707 5576 1494 9695 10588 10943 16935 16936 16937 16938 16939 16940 5577 9687 9987 9285 10263 11954 12128 16941 16942 12132 12131 5578 9950 10612 9444 10801 15432 16943 16944 16819 16945 16820 5579 827 785 804 10541 5342 4814 5343 12529 12531 16946 5580 9798 9801 9273 9857 14548 11768 16597 16595 16596 16947 5581 712 9433 665 10712 16071 16070 4758 16948 16949 16950 5582 8760 10230 9635 10663 16951 16952 16953 16954 16955 16956 5583 9384 10126 1500 10658 13907 13905 11780 13608 13607 16957 5584 8025 8024 10135 10421 16958 16432 16959 16960 16435 16434 5585 9767 10122 1053 10206 13537 16023 16022 16961 16962 16963 5586 277 10120 9767 10210 16025 13536 16024 16964 16965 15224 5587 7877 7879 8778 10575 14300 14302 16966 14301 14304 13419 5588 8415 8712 8414 10576 12998 16967 12991 12994 12996 12999 5589 8355 9869 10661 10811 16968 16969 14296 16970 16971 16972 5590 8725 9426 9137 10127 15116 15283 15282 16973 16974 16975 5591 9254 10848 10474 10929 16976 15575 16977 16978 15579 15578 5592 9461 10360 8004 11062 16979 16980 16981 16982 16983 16984 5593 8499 9468 8421 11028 15149 15148 15150 16985 16986 16987 5594 9280 10003 7972 10768 13252 13250 11666 12856 12855 16988 5595 9394 10719 920 11174 12734 12735 12733 16506 16505 16989 5596 8249 10284 10052 10773 14192 15147 15146 16990 16209 16991 5597 9235 10243 485 10762 16992 16993 16556 16557 15640 16994 5598 240 10501 246 10763 16995 14521 2640 16996 15725 15727 5599 1524 10172 714 10691 16997 16998 4676 16999 17000 17001 5600 8035 8042 10050 10488 17002 14420 17003 17004 14421 13015 5601 9289 10257 9665 10760 16866 16865 16867 12125 17005 17006 5602 9308 10389 9519 10815 13313 15581 17007 13314 15583 12853 5603 8558 10102 9373 10696 14417 14416 11759 13554 13556 17008 5604 1518 1008 9425 10633 5977 17009 14463 17010 17011 17012 5605 1341 9942 9313 10369 15427 15428 12118 12116 12117 17013 5606 246 9895 9409 10507 15494 15493 14522 14524 14523 17014 5607 734 1000 1001 10625 5104 5108 4963 15394 16093 15395 5608 1587 1447 9415 10691 5946 17015 17016 17017 14180 17018 5609 1040 9384 9702 10352 11779 17019 17020 12657 17021 12658 5610 7843 10181 7842 10997 13669 17022 17023 13670 17024 13671 5611 1584 10217 1168 10518 17025 15638 2448 17026 15386 15046 5612 9434 9830 972 10941 16814 16813 13378 13381 13380 17027 5613 8121 9663 8633 10066 17028 12188 17029 17030 13399 13398 5614 9031 9419 10154 10524 13992 16569 16570 14527 17031 14528 5615 9304 10088 8704 10577 13160 13159 13161 15421 15422 17032 5616 8364 8365 9510 10428 17033 16659 17034 17035 16660 12532 5617 8925 8647 10402 10563 17036 17037 15557 15559 15546 17038 5618 7644 9709 7707 9793 16754 17039 17040 16753 17041 16752 5619 9355 10462 9876 11157 17042 13171 12254 17043 14680 14682 5620 501 9638 499 10893 17044 15802 3933 17045 14306 15804 5621 9764 10185 8716 10993 17046 17047 17048 17049 17050 12282 5622 8096 9406 10615 10649 17051 17052 17053 17054 17055 17056 5623 523 9610 10357 11145 17057 17058 17059 17060 17061 17062 5624 9349 9816 9005 10432 13925 13924 11721 12488 12487 17063 5625 228 9356 9766 11041 17064 17065 17066 17067 17068 17069 5626 8420 9220 10419 10616 11630 12518 12516 13065 17070 13066 5627 8729 9597 8022 9669 17071 17072 17073 17074 17075 17076 5628 9423 9854 10668 11147 15882 16662 17077 17078 16666 16665 5629 712 928 10117 10712 4997 13344 17079 16948 16696 16695 5630 8815 9441 9130 10290 17080 14747 17081 17082 14745 14746 5631 1042 1545 9403 10439 5922 16913 16914 17083 17084 17085 5632 9871 10203 9988 10604 13526 13527 12506 17086 17087 17088 5633 9460 9986 380 10569 16846 16845 14986 16206 16205 17089 5634 9288 8902 9807 10532 12232 12235 12236 13210 17090 13211 5635 9767 10210 10120 10905 16965 15224 13536 17091 17092 17093 5636 10122 10206 9767 10904 16963 16961 13537 17094 17095 17096 5637 9358 10316 9531 10486 12624 12565 17097 11976 12568 12569 5638 9304 10407 9824 11159 17098 13440 17099 17100 16350 16349 5639 1531 10427 9442 10518 17101 17102 17103 17104 17105 17106 5640 9356 9860 10979 11059 17107 12168 17108 17109 14646 11203 5641 7906 10436 7914 11013 17110 15062 17111 17112 17113 17114 5642 7913 7906 7914 11013 17115 17111 17116 17117 17113 17112 5643 1260 10535 9973 11058 17118 17119 17120 17121 17122 17123 5644 9458 7866 10465 10564 15193 15194 15195 17124 17125 17126 5645 1027 1532 882 11090 5745 5742 5743 12109 17127 13749 5646 843 10062 9438 10923 17128 17129 14858 14859 11232 17130 5647 8047 9756 9286 10758 13366 13365 13083 13085 13084 17131 5648 9314 10387 8287 10787 13041 17132 17133 17134 17135 17136 5649 1218 9852 9420 10386 17137 17138 13335 14165 14167 17139 5650 8898 10109 9687 10780 17140 17141 17142 17143 17144 17145 5651 9350 9769 282 10727 12045 12043 11312 11940 11939 17146 5652 9350 1266 9771 10727 11937 15991 15990 11940 17147 11938 5653 8350 8364 8365 9510 17148 17033 16907 16906 16659 17034 5654 8668 9445 10002 10101 15499 15496 15376 15551 16520 15550 5655 9260 10176 9681 10566 15888 16009 16008 12913 17149 16085 5656 681 9721 679 10195 14892 17150 4832 14930 17151 14929 5657 738 1378 10113 10920 5126 15712 17152 17153 15716 15715 5658 228 10409 9356 11041 17154 17155 17064 17067 17069 17156 5659 581 1242 542 10392 4150 4149 4147 14457 12832 15487 5660 9403 8646 9806 10563 16921 16363 17157 17158 16590 16589 5661 7866 9987 9458 10701 17159 17160 15193 15197 15198 15517 5662 8121 9663 10066 10397 17028 13398 17030 17161 17162 17163 5663 9008 9247 9862 10677 11653 15407 15406 13212 14731 13213 5664 8729 9597 9669 10703 17071 17076 17074 17164 17165 17166 5665 9280 9462 9838 10986 15460 17167 17168 15055 17169 15461 5666 9464 9340 9837 10987 15678 14976 17170 15679 17171 15680 5667 9434 10235 9704 10870 17172 16112 17173 17174 16116 16115 5668 9426 10362 10065 11088 15120 17175 17176 17177 17178 17179 5669 597 9225 10027 10559 11607 14088 14087 13571 17180 13572 5670 9821 9943 8973 10698 17181 17182 14120 12586 14121 17183 5671 8054 10368 9990 10650 17184 17185 17186 17187 17188 17189 5672 623 699 700 10448 4552 4555 4554 17190 12662 17191 5673 733 877 993 10541 5099 5102 5101 16162 15793 16054 5674 585 1233 544 10651 4160 4159 3849 17192 17193 17194 5675 409 9963 9296 10400 16338 16337 12259 12263 12262 17195 5676 256 9472 1396 10211 17196 17197 2718 17198 17199 17200 5677 9271 9998 8168 10845 13414 13412 11906 13022 13021 17201 5678 1039 9976 9333 10113 13024 12270 11710 13217 13216 15711 5679 475 10596 9231 10852 16274 16275 13541 13544 13546 17202 5680 9305 10661 9869 10811 17203 16969 17204 17205 16972 16971 5681 9602 10152 10628 10683 17206 16279 16410 16413 16415 15860 5682 9406 10082 8096 10615 17207 17208 17051 17052 17053 17209 5683 7591 9548 7592 9734 17210 15912 17211 17212 14562 15911 5684 502 9644 1333 10911 17213 15969 3947 17214 15971 15970 5685 6363 10277 9617 10384 17215 17216 17217 17218 17219 17220 5686 8669 9756 9247 10677 16193 16192 11655 13214 13213 14202 5687 9544 10310 10072 10366 17221 17222 17223 17224 17225 17226 5688 467 1297 10147 10676 3760 13202 17227 17228 13506 13505 5689 1306 771 9683 10129 4900 13814 17229 17230 12431 13813 5690 956 995 9684 10130 5962 17231 15187 15186 11867 17232 5691 7785 7530 10447 10808 17233 14530 17234 17235 13183 14267 5692 1206 1204 10461 10859 3648 11858 17236 17237 14259 14258 5693 9268 10430 9611 11094 17238 15591 16306 16307 13735 15593 5694 9303 9768 569 10314 14062 14061 11465 11893 11892 11567 5695 1561 9971 1562 10169 16359 17239 5633 16358 17240 16357 5696 9133 10290 9442 10574 17241 17242 17243 17244 17245 17246 5697 8956 9096 10449 10752 17247 12301 17248 17249 13932 13931 5698 801 9848 802 10217 14410 17250 5407 15227 17251 14506 5699 8269 8841 8968 9653 17252 16220 17253 17254 16221 16222 5700 501 500 499 9638 3932 3928 3933 17044 15802 17255 5701 502 503 1333 9644 3942 3948 3947 17213 15969 17256 5702 8740 8877 8738 9641 17257 14786 17258 17259 12006 14787 5703 8983 8354 8357 9640 16226 17260 17261 16228 17262 16227 5704 7997 7998 8850 9646 15952 17263 17264 15953 17265 15005 5705 8911 9066 7849 9643 17266 14003 17267 17268 14004 12418 5706 8850 8002 8707 9646 17269 16541 17270 17265 16542 15205 5707 9257 9859 9535 10415 16927 16926 16928 17271 17272 17273 5708 9419 10175 915 10531 17274 17275 14497 14500 14499 17276 5709 9243 10080 9719 10635 13232 14529 11217 17277 15337 15339 5710 878 10433 9705 10557 16797 17278 17279 16798 17280 14990 5711 401 9310 9754 10606 11689 14236 14235 12139 17281 12140 5712 9761 10161 8388 10890 14086 14084 14081 14342 17282 14827 5713 9281 10309 10152 10683 17283 15734 17284 17285 15860 15859 5714 9051 9765 9349 10711 15082 15081 11722 12266 12265 17286 5715 8238 9958 8502 10487 11512 14868 17287 11513 15672 11514 5716 9044 9840 9711 10996 17288 17289 16181 12686 16625 17290 5717 424 9863 429 10145 17291 17292 3552 17293 17294 17295 5718 1237 9270 9773 10618 13453 13452 13451 17296 14159 17297 5719 961 10139 9373 10687 13004 13005 11761 14171 14173 17298 5720 557 9262 9757 10679 13530 13529 13528 17299 17300 17301 5721 9348 10354 10245 10767 17302 15292 17303 12429 15295 15297 5722 1138 10498 1261 10509 15587 14006 4709 17304 14007 13897 5723 8967 9295 9712 10445 12666 12665 12200 12907 17305 12908 5724 8359 10098 8360 11102 17306 16533 17307 17308 16536 16538 5725 316 9572 1364 10799 16107 14260 2999 17309 15323 15322 5726 9316 9730 8636 10493 16402 16401 12746 12942 12941 17310 5727 9928 10234 482 10651 17311 17312 17313 17314 17315 17316 5728 9235 9777 485 10243 16555 15639 16556 16992 16993 17317 5729 9293 9873 10094 10797 14910 11828 14909 17318 11832 11831 5730 8821 9673 9926 10459 17319 17320 15413 15415 15417 17321 5731 9255 9751 758 10647 13428 13427 11649 12350 12349 17322 5732 8711 10661 9809 11109 14297 14298 14294 17323 17324 17325 5733 9841 9953 9211 10769 13583 17326 17327 13586 17328 13587 5734 7831 9884 9345 10395 11205 12056 12055 15901 14928 12760 5735 9209 9961 940 10015 12636 12637 11811 15518 15519 17329 5736 1000 9474 9727 11118 15219 15223 15221 17330 17331 17332 5737 9749 10184 8863 10821 16390 17333 17334 17335 17336 17337 5738 780 870 781 9654 5318 5317 4518 16288 16289 17338 5739 6351 10169 9508 10175 17339 17340 17341 17342 17343 16362 5740 8643 9792 9333 10165 16517 16516 11707 13197 13199 17344 5741 502 9638 501 9644 17345 17044 3938 17213 17346 17347 5742 8287 9741 9314 10787 17348 14091 17133 17135 17134 17349 5743 9590 10211 9479 10464 17350 17351 17352 17353 17354 17355 5744 304 9774 9365 10389 12599 12597 11442 11971 11973 12849 5745 8084 8146 9965 10532 17356 14439 17357 17358 14440 13209 5746 9256 10003 9668 10768 17359 17360 17361 17362 17363 16988 5747 9340 9674 10612 10987 15677 17364 13511 15680 17365 15681 5748 1432 9215 9901 10551 11605 12797 12798 12647 17366 12648 5749 9256 9668 10003 11042 17361 17360 17359 17367 17368 17369 5750 1509 9202 10010 10201 12791 11836 12792 15977 17370 15978 5751 1073 511 340 9976 3141 3140 3126 17371 16330 16331 5752 9760 10164 8490 10889 14107 13239 14105 15240 17372 15393 5753 6993 1225 6947 9514 17373 14160 7251 17374 14162 14164 5754 385 9700 389 9872 12808 14103 3362 12159 17375 12021 5755 10152 9543 10654 11081 15730 17376 17377 17378 17379 17380 5756 1540 9420 10297 10386 13336 15489 15387 14166 15391 14167 5757 9314 9741 8287 10387 14091 17348 17133 13041 17132 12229 5758 9434 9704 10288 10870 17173 14714 17381 17174 16241 16116 5759 9524 9665 9289 10901 17382 16867 17383 17384 16869 16868 5760 9229 9743 8030 10421 13973 13972 13974 15354 16511 14953 5761 8225 10069 10259 10991 17385 17386 17387 17388 17389 17390 5762 9220 9760 8490 10419 14106 14105 11628 12518 12517 17391 5763 485 486 484 10762 3858 3857 3627 15640 11411 17392 5764 9251 10103 9579 10921 17393 17394 16485 16488 16489 13882 5765 9472 10142 1396 10769 17395 17396 17197 17397 17398 17399 5766 228 9766 9356 10409 17066 17065 17064 17154 17155 17400 5767 1448 1128 9841 10659 6067 17401 13584 14273 14275 15608 5768 9246 9991 9986 10601 11791 11545 11790 17402 11797 11796 5769 9493 9976 340 10683 17403 16330 17404 16414 16334 16333 5770 8563 10107 10074 10743 17405 17406 17407 17408 17409 17410 5771 9088 9742 9357 10759 17411 17412 12074 12807 12806 16266 5772 8958 9765 9685 10974 17413 17414 17415 17416 17417 17418 5773 9066 9214 9921 10745 12420 13459 13457 12421 17419 12422 5774 8096 10082 9406 10649 17208 17207 17051 17054 17056 17420 5775 9732 9769 9337 9878 17421 17422 17423 17424 17425 17426 5776 9017 9896 9421 10591 14508 12342 13595 14939 14941 17427 5777 8409 9467 8917 10605 13272 13271 13270 16050 17428 17429 5778 228 9766 10673 11041 17066 17430 17431 17067 17432 17068 5779 8942 9730 9315 10622 16399 16398 11681 12364 12366 16680 5780 9925 10649 10762 11110 17433 17434 17435 17436 17437 17438 5781 7762 6370 9592 10663 17439 17440 17441 17442 15897 17443 5782 1051 10015 9424 10071 15035 16344 16343 15036 17444 12704 5783 424 9863 10145 10430 17291 17295 17293 17445 17446 14957 5784 687 9808 9230 10534 13849 13848 13850 17447 13364 16613 5785 9685 9765 8958 10743 17414 17413 17415 17448 17449 17450 5786 9248 9916 345 10476 14402 14401 11648 12322 12321 17451 5787 8132 9794 9226 10632 13691 13690 11614 12954 12956 17452 5788 9226 9744 8131 10632 14239 14238 11612 12956 12955 17453 5789 9326 9523 10305 10667 17454 17455 11427 11430 11432 17456 5790 899 897 1203 10739 5789 5798 5797 12980 12982 13030 5791 9596 10214 7848 10704 11414 11413 11415 17457 17458 17459 5792 1396 10211 9472 10460 17199 17200 17197 17460 17461 17462 5793 8909 10162 10615 10835 17463 17464 17465 17466 17467 17468 5794 7543 7561 206 9511 17469 16173 17470 17471 16171 16172 5795 8004 10090 9461 11062 17472 17473 16981 16983 16982 17474 5796 9215 9901 9520 10086 12797 17475 16646 11299 16647 13498 5797 261 9918 9285 10320 12887 12888 11674 13095 13097 17476 5798 1250 1105 9611 10461 3431 15703 17477 17478 15704 11856 5799 9065 9972 9880 10994 17479 17480 17481 17482 17483 17484 5800 1073 340 9493 9976 3126 17404 17485 17371 17403 16330 5801 8935 10183 9873 11040 17486 17487 11829 12099 12098 17488 5802 348 347 10152 10683 3143 17489 15856 15858 15860 17490 5803 8581 9050 8142 10902 12835 16303 17491 12836 16304 12413 5804 8037 10149 8030 10674 17492 13975 17493 17494 14255 14257 5805 523 9799 9610 11145 17495 17496 17057 17060 17062 17497 5806 9657 10209 9727 10830 17498 15172 17499 17500 15176 15175 5807 247 249 245 9823 2663 2662 2657 11265 15806 11221 5808 8916 8098 9868 10944 17501 17502 12351 15011 15013 17503 5809 1524 10438 10172 10691 17504 11986 16997 16999 17001 17505 5810 9419 9971 915 10175 16236 16235 14497 17274 17275 16360 5811 9732 9878 9337 10752 17424 17425 17423 17506 13930 17507 5812 585 9476 1233 10651 17508 14370 4160 17192 17194 17509 5813 9011 10124 10114 10671 14269 17510 17511 14270 17512 13695 5814 9990 10368 9282 10650 17185 17513 17514 17188 17515 17189 5815 1531 1166 10427 10518 2241 17516 17101 17104 17106 17517 5816 9428 10295 9125 11082 17518 17519 17520 17521 17522 17523 5817 9203 9502 10438 10525 17524 17525 13725 13727 11991 17526 5818 6959 9692 10139 10687 11459 11458 11457 17527 17298 17528 5819 7878 10124 9881 10208 16510 13662 16508 17529 16678 15225 5820 9891 9365 10815 11013 13568 13569 12851 17530 16905 16904 5821 8468 9924 9436 10866 17531 17532 17533 17534 17535 17536 5822 8646 9546 8304 11113 16365 17537 17538 16366 17539 16367 5823 1283 365 9850 10915 2751 17540 11272 16378 17541 16379 5824 9599 10337 8324 10383 17542 12576 17543 17544 13276 15260 5825 7921 9410 10191 10454 11373 14346 14345 14229 17545 14230 5826 6898 6941 6942 10255 7257 7306 7305 17546 14840 16551 5827 1283 9850 10320 10915 11272 11334 11332 16378 16380 17541 5828 9262 9873 9757 10748 17547 17548 13529 15656 15658 17549 5829 9400 9935 8817 10560 15158 15157 14054 14148 14147 17550 5830 9050 9712 9432 10260 12410 12409 12411 17551 17552 17553 5831 9524 10257 9665 10901 17554 16865 17382 17384 16868 16870 5832 9025 9836 9616 10985 14920 14921 14919 17555 17556 17557 5833 9281 10152 9543 10654 17284 15730 17558 17559 17376 17377 5834 6938 10253 9505 10610 17560 11449 17561 17562 17563 17564 5835 248 10146 9719 11117 17565 17566 17567 17568 17569 17570 5836 9446 9959 8300 10025 15822 15019 14904 14099 14903 16539 5837 9567 10025 9263 10778 17571 14098 17572 17573 14102 14101 5838 9354 10185 9764 10993 13677 17046 17574 13679 17049 12282 5839 1547 9401 907 10470 15439 15109 5831 17575 17576 17577 5840 9712 9916 9796 10527 17578 17579 12204 12504 12503 17580 5841 7547 7600 9496 10592 17581 17582 13616 13619 13621 17583 5842 656 824 9952 10310 4355 17584 12355 15346 15348 17585 5843 487 485 10243 10762 3863 16993 17586 17587 16994 15640 5844 1205 1206 1204 10461 6200 3648 6126 12444 11858 17236 5845 8718 7916 8679 10462 17588 14395 17589 17590 14396 13170 5846 1477 9709 9424 10015 13025 13910 13911 16345 16344 17591 5847 489 9925 10057 10975 17592 17593 16186 16779 16781 17594 5848 1306 9683 771 10274 17229 13814 4900 17595 13816 13815 5849 8041 9534 10009 10488 16823 17596 13265 13017 15326 16826 5850 9229 10149 9743 10729 13976 13977 13973 17597 15914 15916 5851 9205 10296 10258 11189 13482 13483 13479 17598 14398 14400 5852 232 10267 10550 11030 13430 12575 13431 17599 17600 17601 5853 9384 9778 9693 10892 17602 15472 16310 16312 15475 15477 5854 9706 9707 9299 11180 12467 17603 17604 16472 17605 16473 5855 247 10323 9823 10607 12899 16177 11265 17606 14379 17607 5856 9468 10016 8421 11028 13341 17608 15148 16987 16986 17609 5857 9522 10100 1014 10824 15785 15784 15786 17610 17611 17612 5858 8648 10629 10341 10885 17613 17614 17615 17616 17617 17618 5859 163 6894 1420 10587 17619 17620 2068 17621 17622 17623 5860 9425 1518 10515 11046 14463 17624 17625 14464 17626 14465 5861 1518 9425 1008 10324 14463 17009 5977 14462 17627 14461 5862 8704 8062 8064 10238 13785 17628 14691 13162 14693 13786 5863 258 10320 1283 11182 17629 11332 2729 16873 16875 17630 5864 1085 9999 1084 10441 13959 17631 5190 13960 17632 13961 5865 9876 10462 9355 10761 13171 17042 12254 13174 17633 13175 5866 9193 9205 10268 10296 13480 16129 16130 13481 17634 13482 5867 654 9948 9391 10498 14511 14510 13894 13892 13893 17635 5868 581 10010 1242 10392 15779 15486 4150 14457 15487 12592 5869 9227 10211 9590 10464 17636 17350 17637 12678 17353 17355 5870 6360 10127 9507 10154 17638 17639 17640 17641 17642 17643 5871 824 9952 10310 10906 17584 15348 17585 17644 17645 17646 5872 10152 10654 9281 11081 17377 17559 17284 17378 17647 17379 5873 9289 10257 10760 10901 16866 17006 12125 16869 17648 16870 5874 9310 10329 9877 10847 17649 15349 17650 17651 15208 15351 5875 9432 10584 10476 10902 12847 16614 17652 12412 16616 12837 5876 9476 10234 10403 11189 14371 14312 14372 17653 17654 17655 5877 9125 9428 8638 10295 17520 17656 17657 17519 17658 17518 5878 7984 8075 9831 10490 17659 17660 17661 17662 17663 17664 5879 9798 10053 9857 10720 17665 17666 16595 16598 16600 17667 5880 907 9401 9848 10470 15109 14502 15110 17576 17668 17577 5881 7720 7712 7709 10518 14771 17669 16144 14772 16146 14517 5882 8315 9414 9896 10591 12022 13853 15738 13442 17427 13443 5883 1314 10523 10233 10547 17670 17671 17672 17673 17674 17675 5884 1447 943 1587 9415 5517 2202 5946 17015 17016 17676 5885 8543 9052 9187 9415 17677 16385 17678 17679 16386 16387 5886 8646 8532 9403 9806 16917 16920 16921 16363 17157 17680 5887 9573 10243 1116 10864 17681 15024 17682 17683 15022 15023 5888 9045 9740 9324 10205 12810 12811 11213 17684 16010 15871 5889 687 9808 10534 10637 13849 16613 17447 17685 17686 14803 5890 9672 10297 9420 10386 15388 15489 17687 15390 14167 15391 5891 8606 9786 9390 10041 12176 12175 12134 13601 13602 17688 5892 9448 10312 9548 10403 17689 15829 17690 17691 12604 15833 5893 9224 9974 9747 10496 11308 11309 11305 17692 12617 12616 5894 8242 8240 9633 10215 17693 16167 17694 17695 16165 16166 5895 720 9629 9830 11177 17696 17697 17698 17699 17700 17701 5896 9507 9426 10065 11088 17702 17176 17703 17704 17178 17177 5897 9327 9883 9815 11091 12804 12215 12802 17705 12218 12220 5898 9788 9328 10159 10387 17706 17707 17708 16160 17709 17710 5899 7821 7820 10308 10877 17711 17712 17713 17714 17715 17716 5900 10380 10403 10234 11189 16005 14312 16003 17717 17655 17654 5901 9199 8858 9502 10581 17718 14024 17719 17720 17721 17722 5902 7984 9831 9968 10490 17661 17723 17724 17662 16605 17663 5903 1405 9822 1369 10008 14532 17725 5162 14534 17726 14535 5904 8231 8183 10241 10359 17727 17728 14880 14878 14879 17729 5905 1384 248 9719 11117 2664 17567 17730 17731 17569 17568 5906 1027 882 9678 11090 5743 17732 12107 12109 11899 17127 5907 9458 9987 7866 10564 17160 17159 15193 17124 17126 14865 5908 10152 10153 9543 11081 17733 17734 15730 17378 17380 16088 5909 7978 10033 7977 10991 12710 12711 11641 12896 17735 12897 5910 8249 10052 9417 10281 15146 15145 11396 12498 12500 17736 5911 9536 10615 10162 10835 17737 17464 17738 17739 17468 17467 5912 7836 7837 10115 10464 13383 14189 17740 13384 14190 12677 5913 1085 1084 753 10441 5190 5192 5191 13960 16041 17632 5914 9838 10003 9668 11042 17741 17360 17742 15504 17369 17368 5915 8886 10223 9395 10303 14034 12251 12291 15609 15611 17743 5916 9431 10310 9544 10366 15347 17221 17744 15251 17224 17226 5917 9293 10094 9644 10797 14909 17745 17746 17318 17747 11832 5918 8172 10228 9947 10918 17748 17749 17750 17751 17752 17753 5919 8300 9959 9708 11038 15019 15018 15017 17754 17755 17756 5920 9420 9852 1218 10319 17138 17137 13335 14624 14623 17757 5921 1170 1400 10587 10713 6180 15820 17758 17759 15821 13565 5922 784 10416 9674 10886 17760 17761 17762 17763 17764 17765 5923 1545 10423 9403 10439 17766 17767 16913 17085 17084 17768 5924 9235 9777 9655 10762 16555 11407 17769 16557 11410 11412 5925 1571 10297 9420 10319 15488 15489 13334 14622 14624 17770 5926 9211 9446 9708 10769 17771 16047 17772 17328 17773 17774 5927 9380 10243 9573 10864 15092 17681 17775 15093 17683 15023 5928 9420 10216 9142 10459 16126 16125 13873 15416 17776 17777 5929 504 632 10028 10893 3960 13612 17778 17779 13615 13614 5930 8241 8240 10215 11070 17780 16166 15946 15948 15950 16169 5931 9400 9935 9697 10776 15158 12785 17781 15159 16702 15160 5932 8360 9943 9821 11102 16535 17181 17782 16536 17783 16537 5933 1573 9501 6315 10375 17784 17785 17786 17787 17788 17789 5934 7932 10397 9982 11004 17790 17791 17792 17793 17794 17795 5935 9872 9989 9291 10492 12157 13448 13449 13598 17796 13599 5936 9334 9991 9872 10492 15462 12387 15463 17797 13598 13600 5937 9139 6312 7778 11096 17798 17799 16837 16840 16841 17800 5938 9898 10159 9328 10387 17801 17707 17802 16161 17710 17709 5939 9423 10015 9854 10455 15881 15880 15882 14468 17803 12707 5940 8845 9398 9802 10286 13094 14045 14046 17804 17805 17806 5941 9881 10208 10124 10905 16678 15225 13662 17807 17808 17809 5942 8818 9926 9400 10560 15541 15540 14053 14146 14148 15749 5943 1416 10983 10470 11074 12756 17810 17811 14626 17812 14627 5944 260 9590 10267 10919 12572 12571 12570 17813 17814 17815 5945 429 10145 9863 10967 17294 17295 17292 17816 17817 17818 5946 1314 10489 10233 10523 17819 17820 17672 17670 17671 17821 5947 9393 10599 9547 10850 12334 15533 17822 15684 16326 16325 5948 9144 7652 9115 9560 14616 17823 17824 14618 17825 14617 5949 9489 10534 9808 10637 16612 16613 16610 17826 14803 17686 5950 8926 10156 9402 10404 16449 16448 16044 16532 15065 17827 5951 9052 9415 9896 10085 16387 13854 16492 16388 15594 15200 5952 9995 10241 8183 10359 14569 17728 17828 17829 17729 14879 5953 9568 9785 9302 10096 17830 17831 17832 17833 17834 17835 5954 9507 10065 1122 10168 17703 17836 16243 16244 16245 17837 5955 8589 8954 9537 10363 15268 13765 15269 17838 14253 14252 5956 1379 1061 10381 10678 3511 17839 12299 13034 13036 17840 5957 1396 10142 9472 10535 17396 17395 17197 17841 17842 14191 5958 9436 10435 1527 10592 11794 11386 11793 17843 17844 17845 5959 9539 9742 9348 10767 12148 12428 17846 12150 12429 11355 5960 1551 9429 10343 10440 15111 16420 16418 15927 17847 15928 5961 8950 9576 9733 10926 11283 11288 11286 17848 17849 17850 5962 8268 8388 10161 10890 17851 14084 17852 17853 14827 17282 5963 8981 8668 10474 10597 17854 15552 17855 17856 16155 15377 5964 932 9403 1545 10423 16915 16913 5921 17857 17766 17767 5965 482 10234 9928 11015 17312 17311 17313 17858 17859 17860 5966 905 801 802 10217 5412 5407 5413 17861 17251 15227 5967 8911 9643 7849 10997 17268 14004 17267 17862 15113 15112 5968 462 9824 464 10229 17863 15408 3747 17864 13249 13436 5969 461 10407 9800 11159 16347 17865 17866 16348 17867 16349 5970 8839 9471 8082 10190 17868 17869 17870 17871 17872 16574 5971 8725 9426 10127 10362 15116 16975 16973 15119 17873 15120 5972 201 6914 9525 9949 16673 16674 14152 17874 17875 17876 5973 1544 9430 10456 10579 17877 17878 17879 17880 13923 17881 5974 1528 10072 9441 10427 17882 17883 17884 17885 17886 17887 5975 9933 10590 9425 10668 17888 17889 17890 17891 17892 17893 5976 7820 9878 10308 10877 17894 17895 17712 17716 17715 17896 5977 8740 9641 8739 11084 17259 16877 17897 17898 16879 16878 5978 9687 10109 9242 10780 17141 17899 17900 17144 17901 17145 5979 9211 10004 9841 10256 16427 17902 17327 17903 14699 17904 5980 6394 7745 7667 9560 17905 17906 17907 17908 17909 17910 5981 7595 7617 7767 9828 17911 17912 15632 15633 15634 17913 5982 10341 10629 9381 10885 17614 17914 17915 17617 17916 17618 5983 8521 9853 9739 10282 14704 15360 11815 17917 13636 17918 5984 9478 9275 10204 10813 13625 13627 13626 17919 17920 16316 5985 1396 1115 10211 10460 2717 17921 17199 17460 17462 17922 5986 257 259 9918 10059 2712 17923 17924 17925 17926 17927 5987 9492 9621 9213 11016 17928 17929 17930 17931 17932 17933 5988 1064 1379 1061 10381 6075 3511 6073 12298 17839 12299 5989 8577 10828 9701 11161 17934 17935 17936 17937 17938 17939 5990 9002 8490 10164 10889 17940 13239 17941 17942 15393 17372 5991 9101 9693 9384 10648 15474 16310 16311 17943 17944 17945 5992 9658 10552 7918 11115 17946 17947 16501 16503 16502 17948 5993 977 10247 920 11080 17949 14683 5884 17950 14685 14687 5994 9440 9739 8690 10299 13632 13631 13633 17951 17952 17953 5995 296 10302 9526 10369 14706 17954 17955 14708 17956 14707 5996 720 9830 9629 10941 17698 17697 17696 17957 17958 17027 5997 8269 9653 9020 10985 17254 17959 17960 17961 17962 17963 5998 9347 9684 9411 10969 17964 11320 13807 14448 13927 13929 5999 9571 10649 9925 11110 17965 17433 17966 17967 17436 17438 6000 9723 10250 1364 10799 17968 17969 14261 15324 15323 17970 6001 9411 9684 9347 10163 11320 17964 13807 16375 12825 17971 6002 6947 9514 185 10255 14162 14163 14161 17972 17973 17974 6003 9219 9809 9869 10666 17975 17976 17977 17978 17979 17980 6004 9220 9834 9760 9864 12340 15239 14106 14130 16479 14131 6005 9209 10153 10152 11081 15943 17733 13538 13050 17378 16088 6006 7861 9588 10315 10894 12185 11517 12186 17981 17982 17983 6007 8668 10101 8665 10474 15551 17984 17985 15552 17986 15553 6008 9758 10097 9654 10241 17987 17988 17989 17990 17991 14568 6009 9423 1411 10071 10455 13914 12705 14250 14468 12709 12708 6010 9543 10152 9209 10153 15730 13538 17992 17734 15943 17733 6011 9274 9965 9928 10532 15038 17993 16581 16575 16583 14440 6012 9477 9564 9290 10125 17994 17995 17996 11274 17997 17998 6013 9800 10407 9304 11159 17865 17098 17999 17867 17100 16349 6014 896 9649 697 10969 15098 18000 4925 15099 18001 15100 6015 835 9901 10086 10352 18002 13498 18003 18004 15644 18005 6016 636 10367 10006 11087 14555 14554 14556 18006 18007 18008 6017 619 9642 1142 10442 18009 11277 4525 18010 11280 11282 6018 9437 10417 853 10573 18011 18012 18013 18014 18015 18016 6019 9356 9815 9884 10673 18017 13842 18018 18019 18020 18021 6020 6394 7667 6390 9560 17907 18022 6428 17908 18023 17909 6021 8925 10404 8926 10563 15558 16532 18024 15559 16045 15070 6022 9132 8261 8319 9924 18025 14206 18026 18027 14208 14207 6023 9251 10393 10136 10921 16487 14574 18028 16488 15666 12782 6024 8079 9609 10055 10190 18029 18030 18031 18032 18033 18034 6025 10197 10378 8840 10645 18035 18036 18037 18038 18039 18040 6026 8532 9146 9403 10347 16918 16919 16920 18041 18042 18043 6027 546 587 9540 10292 3692 18044 18045 18046 16699 15140 6028 7778 9802 9176 11096 18047 14044 16838 16841 15410 16594 6029 1243 1594 9983 10010 5902 11834 18048 18049 11838 11837 6030 524 10006 636 10733 18050 14556 4059 18051 14558 14557 6031 7988 9968 7991 10035 12948 14774 18052 12713 16264 12949 6032 826 10625 10221 11020 18053 18054 18055 18056 13711 18057 6033 9101 10648 9384 10892 17943 17944 16311 15476 16312 18058 6034 9183 7644 9793 10472 18059 16753 18060 18061 16757 16756 6035 296 295 9526 10302 2883 18062 17955 14706 17954 18063 6036 587 10292 879 11163 15140 18064 3694 15143 18065 15144 6037 9486 9855 9322 9960 18066 18067 18068 18069 14029 15588 6038 1587 9415 10530 10691 17016 18070 18071 17017 18072 14180 6039 975 9830 9475 10011 18073 18074 18075 18076 18077 18078 6040 8006 8004 10360 11062 18079 16980 18080 18081 16984 16983 6041 9369 9911 960 10508 16759 16758 14578 12068 16178 18082 6042 9208 10470 10983 11074 18083 17810 12755 14625 14627 17812 6043 1403 10182 9748 10995 18084 18085 18086 18087 18088 18089 6044 9470 10504 9660 10940 18090 18091 18092 18093 18094 18095 6045 9927 10377 1366 10618 18096 12197 18097 18098 18099 18100 6046 1384 9719 10173 11117 17730 18101 18102 17731 18103 17569 6047 9947 10228 8172 11016 17749 17748 17750 18104 18105 18106 6048 728 964 10547 10676 5078 18107 14604 14606 12311 18108 6049 10241 10359 9506 10549 14879 18109 13904 14882 15719 14883 6050 9373 9676 1469 10687 16579 16578 11762 14173 14172 18110 6051 9392 10325 838 11019 13499 14284 11891 13771 13770 18111 6052 6924 9512 10313 10562 18112 18113 18114 18115 18116 18117 6053 7810 10358 7812 11099 15286 18118 18119 15287 18120 15288 6054 8710 10090 9923 10868 18121 18122 18123 18124 18125 14350 6055 8425 8184 9896 10906 18126 12343 18127 18128 12347 12346 6056 8259 9772 9392 10453 16885 16884 12865 12868 12870 18129 6057 9395 9978 8691 10303 16469 16468 12290 15611 15610 18130 6058 9446 10025 9567 10778 14099 17571 18131 14100 17573 14101 6059 1180 9832 9202 10201 12655 11995 12654 15976 15978 18132 6060 699 9446 9953 10142 18133 18134 18135 18136 18137 13125 6061 9126 8315 8248 10311 14478 13638 18138 14694 13639 12025 6062 9790 10020 9064 11130 18139 18140 18141 14433 18142 18143 6063 1313 9974 1362 10029 11573 18144 3971 13703 18145 18146 6064 9213 9621 9492 9913 17929 17928 17930 11227 18147 18148 6065 647 628 9714 10172 4572 16792 18149 18150 15441 16791 6066 9047 9385 10457 11113 13715 14998 14996 16445 18151 16446 6067 465 10523 10147 10734 18152 18153 18154 18155 18156 18157 6068 1040 9702 9384 10658 17020 17019 11779 13606 13608 18158 6069 7932 9796 10397 11004 18159 18160 17790 17793 17795 18161 6070 8891 10615 10162 10649 18162 17464 18163 18164 18165 17055 6071 8583 8638 9125 9428 18166 17657 18167 18168 17520 17656 6072 8905 8430 9588 9790 18169 14429 18170 18171 14430 14431 6073 8096 10615 8891 10649 17053 18162 18172 17054 18164 17055 6074 8557 9373 9692 10696 11760 16848 16847 13555 18173 13556 6075 9425 10668 10590 10968 17892 17893 17889 18174 18175 18176 6076 9447 9678 9455 10555 16720 11897 18177 18178 11895 11896 6077 9332 10140 9879 10911 13468 14183 13724 13471 13518 13472 6078 257 10059 9918 10912 17925 17926 17924 18179 18180 18181 6079 9817 10083 8495 10664 13411 12983 13409 18182 18183 18184 6080 1260 1410 10535 11058 3277 18185 17118 17121 17123 18186 6081 9493 10628 9976 10683 16411 16549 17403 16414 16333 16415 6082 9257 9810 9864 10708 18187 18188 18189 18190 18191 18192 6083 9625 9851 9342 10706 14670 12082 18193 18194 12086 12085 6084 8287 10298 9741 10787 18195 18196 17348 17135 17349 18197 6085 8866 8743 10444 11136 18198 18199 18200 18201 18202 18203 6086 587 10222 9540 10292 15141 18204 18044 15140 16699 15139 6087 8354 9869 9640 10874 18205 18206 16227 16231 16230 18207 6088 9653 9889 8841 10878 18208 18209 16222 16224 16223 18210 6089 9234 9790 9588 11130 18211 14430 18212 18213 14434 14433 6090 626 9931 9714 10820 18214 15135 18215 18216 15444 18217 6091 9260 9988 9871 10978 18218 12506 18219 18220 12510 12509 6092 1156 9925 9683 11144 18221 18222 18223 18224 18225 18226 6093 9424 10015 9854 10071 16344 15880 18227 17444 15883 12704 6094 9335 9875 10701 10869 13654 18228 12728 18229 18230 18231 6095 9256 10003 9838 11042 17359 17741 18232 17367 15504 17368 6096 8242 8241 8240 10215 18233 17780 17693 17695 16166 15946 6097 8331 9792 8338 10295 13793 18234 18235 13795 18236 13794 6098 8321 8260 9704 10288 18237 18238 16111 16240 14714 18239 6099 6940 9702 10128 10694 18240 18241 18242 18243 18244 18245 6100 9601 9966 9306 10017 13006 15270 15271 18246 18247 18248 6101 9408 9966 9601 10017 18249 13006 18250 18251 18246 18248 6102 6935 6938 9505 10610 7434 17561 18252 18253 17563 17562 6103 956 9684 995 10229 15187 17231 5962 15188 18254 13361 6104 9236 9736 9754 9877 18255 18256 18257 18258 18259 18260 6105 8561 9801 9410 10454 15649 15650 11375 14228 14230 15665 6106 941 1051 1411 10015 5943 5942 5941 18261 12706 15035 6107 8450 10030 9426 10362 18262 18263 15115 15118 15120 18264 6108 8993 10703 10219 10817 18265 18266 18267 18268 18269 18270 6109 9654 9882 781 10875 18271 18272 16289 16292 16291 18273 6110 9431 9779 8441 10519 18274 18275 15998 13496 16000 18276 6111 9730 10264 8965 10493 15938 18277 18278 17310 18279 18280 6112 8243 10105 8408 11190 18281 14055 18282 18283 14058 14060 6113 1563 10169 9416 10345 15903 15904 13792 15438 15437 18284 6114 9758 10882 8379 11051 18285 16440 18286 18287 16444 16443 6115 9267 10252 9703 10471 14743 16055 18288 12818 11345 14744 6116 840 839 656 9431 4719 4718 4720 12775 13581 16721 6117 8217 10882 9639 11051 16441 18289 18290 16442 18291 16443 6118 1236 9416 10169 11076 13791 15904 15902 18292 18293 18294 6119 7753 9495 7703 10581 11472 11471 11470 18295 18296 18297 6120 9468 9941 8421 10016 15258 15257 15148 13341 17608 18298 6121 8468 9436 9978 10866 17533 18299 18300 17534 18301 17535 6122 9440 10299 8690 10522 17951 17952 13633 13862 13861 18302 6123 404 1321 1107 10737 3460 3459 3458 18303 14962 16377 6124 9346 10020 10805 10903 18304 16352 11569 13753 16356 16355 6125 9785 9302 10096 10844 17831 17834 17835 18305 18306 18307 6126 9137 10127 9426 10277 16974 16975 15283 15739 15741 18308 6127 8864 9745 10089 10728 18309 18310 18311 18312 18313 18314 6128 413 9903 9803 10543 14390 14391 14387 18315 18316 18317 6129 1225 9514 6993 10276 14164 17374 17373 18318 18319 18320 6130 9286 10219 9874 10909 18321 18322 18323 15693 18324 18325 6131 626 10151 9931 10820 18326 18327 18214 18216 18217 18328 6132 1323 10275 728 10547 18329 14605 5069 18330 14604 11881 6133 192 7692 1583 9709 18331 18332 1862 13920 18333 18334 6134 9130 9441 8536 10321 14747 18335 18336 14748 18337 14749 6135 9091 10231 9897 10918 15864 16857 18338 16881 18339 16882 6136 9423 10668 10041 11147 17077 18340 18341 17078 18342 16666 6137 8589 9537 10300 10363 15269 18343 18344 17838 12974 14253 6138 467 10147 9538 10676 17227 18345 18346 17228 15058 13506 6139 8235 10025 9959 10536 18347 16539 18348 18349 15878 18350 6140 583 9421 9952 10280 14831 18351 18352 18353 18354 12970 6141 8760 9635 9166 10663 16953 18355 18356 16954 18357 16955 6142 168 10324 9709 10948 16836 13028 16835 18358 18359 18360 6143 9270 9889 9817 10739 18361 18362 18363 13455 18364 18365 6144 9982 10397 9796 11004 17791 18160 18366 17794 18161 17795 6145 8511 9133 9442 10574 18367 17243 18368 18369 17245 17244 6146 9101 9778 9693 10976 15473 15472 15474 18370 18371 18372 6147 8307 10048 9067 10231 18373 16853 18374 18375 16856 16858 6148 9274 10190 9965 10532 13226 15039 15038 16575 14440 16576 6149 6935 9505 6938 10253 18252 17561 7434 18376 17560 11449 6150 7659 7692 192 9709 18377 18331 16404 16403 13920 18334 6151 7785 10447 10444 10808 17234 15560 18378 17235 15562 13183 6152 8569 10235 8570 10571 18379 18380 18381 18382 18383 18384 6153 9883 10095 7824 10761 12485 18385 14666 14668 14667 18386 6154 9421 9827 8185 10591 18387 18388 13596 14941 14940 18389 6155 8615 8616 8614 10471 12815 18390 15547 12816 15549 12817 6156 1362 10029 9974 11021 18145 18146 18144 18391 18392 18393 6157 9417 10357 9610 11145 18394 17058 18395 18396 17062 17061 6158 808 1407 10715 10792 5444 14367 18397 18398 15645 14225 6159 9899 10389 9930 10436 18399 15631 14634 18400 18401 18402 6160 9694 9904 9783 10553 18403 18404 11481 11808 13477 18405 6161 9322 9960 9855 10646 14029 15588 18067 14032 18406 14033 6162 361 10331 9450 10500 15107 16871 15836 15108 15837 14758 6163 8818 9926 9673 10776 15541 17320 18407 15542 18408 15543 6164 8069 8653 10078 10988 18409 18410 18411 18412 18413 18414 6165 9250 9808 9875 10754 18415 14800 18416 11392 18417 18418 6166 8599 10209 9861 10910 18419 18420 18421 18422 18423 18424 6167 8563 10074 10107 10841 17407 17406 17405 18425 18426 18427 6168 1231 10559 10117 10730 18428 18429 18430 18431 18432 18433 6169 1323 728 964 10547 5069 5078 5080 18330 18107 14604 6170 8925 8647 9185 10402 17036 18434 16803 15557 16075 17037 6171 9398 10286 8845 10611 17806 17804 13094 13801 13800 18435 6172 8788 10516 9724 10851 18436 18437 18438 18439 18440 18441 6173 9261 10461 9872 10859 11857 13948 12020 18442 12645 14259 6174 1323 10275 10547 11037 18329 11881 18330 18443 18444 18445 6175 9287 9878 9732 10752 18446 17424 18447 18448 17506 17507 6176 939 10015 9961 10579 18449 17329 18450 16417 18451 18452 6177 9479 10315 9590 10464 18453 18454 17352 17354 17353 18455 6178 1191 425 10008 10104 3563 12305 12451 18456 12960 12961 6179 9012 8788 9724 10851 18457 18438 18458 18459 18440 18439 6180 721 10325 658 10595 18460 13500 4727 18461 14539 14541 6181 1000 10322 9474 11118 18462 18463 15219 17330 17332 18464 6182 8516 9031 9161 10524 13991 18465 18466 14526 18467 14527 6183 9236 9754 9736 10371 18257 18256 18255 18468 18469 18470 6184 10024 10465 8888 10564 16179 18471 18472 18473 18474 17125 6185 853 9437 10408 10417 18013 18475 18476 18012 18477 18011 6186 9202 10372 10248 10914 16640 11789 16638 18478 14444 14443 6187 1070 10051 9392 11019 11266 11247 11270 13769 13771 18479 6188 7962 9630 8953 11195 18480 18481 18482 18483 18484 18485 6189 1236 10039 9416 11076 13843 12479 13791 18292 18294 18486 6190 9517 9665 10257 10760 18487 16865 18488 13302 17006 17005 6191 9840 10491 10005 10996 18489 18490 18491 17290 18492 18493 6192 522 10307 1486 10795 18494 14409 4050 18495 18496 18497 6193 1233 9476 585 10234 14370 17508 4160 14308 18498 14371 6194 535 10333 533 10952 18499 18500 4102 18501 18502 18503 6195 6343 9842 7760 10414 18504 18505 18506 18507 18508 18509 6196 8235 9959 8302 10536 18348 15335 18510 18349 15877 15878 6197 9603 10413 10303 10935 15919 18511 18512 15920 18513 15921 6198 7670 10272 7731 11017 18514 18515 18516 18517 18518 18519 6199 6382 9507 6360 10127 18520 17640 6776 18521 17638 17639 6200 8477 8965 9730 10264 18522 18278 15936 14823 15938 18277 6201 9434 10571 10235 10870 18523 18384 17172 17174 16115 18524 6202 7619 7551 1221 10499 18525 16137 18526 18527 16138 15077 6203 522 10469 10307 10795 18528 18529 18494 18495 18497 18530 6204 920 10247 977 10719 14683 17949 5884 12735 18531 14695 6205 9553 9680 9386 10820 16140 15974 18532 16141 15975 15443 6206 10041 10288 8323 10968 13605 13730 13728 18533 18534 18535 6207 9461 10176 8004 10360 15886 18536 16981 16979 16980 14644 6208 9238 9985 9868 10496 11486 11487 11483 18537 13464 13466 6209 9768 9880 9346 10805 14175 13750 11568 11570 11569 18538 6210 10167 11031 9241 11196 18539 16932 18540 18541 16934 16707 6211 9287 9769 9732 9878 18542 17421 18447 18446 17424 17426 6212 7799 7624 9964 10477 18543 18544 18545 18546 18547 18548 6213 939 9709 1477 10015 16416 13025 5937 18449 16345 17591 6214 7900 9994 9500 10545 12681 12680 12682 18549 18550 18551 6215 9457 9291 10422 10838 18552 18553 11550 18554 18555 13450 6216 1191 426 425 10104 3562 3543 3563 18456 12961 18556 6217 1587 9415 943 10530 17016 17676 2202 18071 18557 18070 6218 9443 10246 9790 10353 18558 15963 18559 15246 15966 15965 6219 1363 10557 9705 10735 18560 17280 18561 18562 18563 18564 6220 9261 9611 10371 10461 18565 15702 13131 11857 13133 15704 6221 1305 687 692 10534 4872 4267 4873 15262 12433 17447 6222 1459 9804 9768 10844 18566 14174 18567 18568 18569 18570 6223 1035 10827 10053 10879 18571 18572 18573 18574 18575 18576 6224 8386 10294 9792 11002 18577 18578 18579 18580 18581 18582 6225 9253 9645 10215 11070 18583 15647 18584 18585 15950 15949 6226 8015 8016 8014 10848 18586 18587 15893 15576 15892 18588 6227 8320 8925 8926 10563 18589 18024 18590 18591 16045 15559 6228 9855 9960 9486 10552 15588 18069 18066 15590 18592 13887 6229 8225 10259 8779 10991 17387 18593 18594 17388 18595 17389 6230 733 9726 10541 10788 18596 18597 16162 16163 15796 16902 6231 6912 6979 9616 9836 7380 18598 14918 14922 14921 18599 6232 1565 853 10417 10573 5640 18012 18600 18601 18016 18015 6233 1191 10008 426 10104 12451 18602 3562 18456 18556 12960 6234 9880 9972 9302 10994 17480 18603 14113 17483 18604 17484 6235 9586 10351 9499 10685 18605 18606 18607 18608 18609 18610 6236 10219 10670 9874 10909 18611 18612 18322 18325 18324 18613 6237 9433 10117 712 10559 18614 17079 16071 16074 16073 18429 6238 1127 1382 1111 10140 4246 6138 6139 18615 14182 18616 6239 422 9908 10434 10852 14001 16808 18617 14002 18618 13545 6240 9124 9806 8443 10602 11451 18619 18620 13818 18621 13819 6241 787 10326 9679 10937 18622 15751 18623 18624 18625 18626 6242 9333 9783 9694 9904 11480 11481 11477 12801 18403 18404 6243 9429 10044 8515 10682 18627 18628 18629 18630 18631 18632 6244 9462 10259 10069 10991 18633 17386 15459 18634 17390 17389 6245 8106 10023 9662 10797 18635 18636 18637 18638 18639 18640 6246 9653 10161 9818 10890 18641 14826 18642 18643 14344 14827 6247 9895 10617 9277 10763 18644 18645 18646 15726 18647 18648 6248 687 10534 795 10637 17447 18649 4875 17685 18650 17686 6249 8387 10341 9827 11186 18651 18652 18653 18654 18655 18656 6250 8521 9739 8860 10282 11815 18657 18658 17917 18659 13636 6251 617 619 1142 10442 4522 4525 4524 11562 11280 18010 6252 9630 10220 8953 11195 18660 18661 18481 18485 18484 18662 6253 572 10131 9659 10285 13358 18663 18664 14223 18665 16335 6254 9441 10072 1528 10366 17883 17882 17884 18666 18667 17225 6255 8569 10235 10571 10870 18379 18384 18382 18668 18524 16115 6256 1018 1014 9522 10405 4394 15786 18669 18670 15788 15787 6257 721 666 10279 10595 4728 14064 18671 18461 15492 15491 6258 583 9952 9421 10458 18352 18351 14831 14834 14833 18672 6259 9535 9973 9257 11194 16929 16930 16928 18673 18674 18675 6260 7822 7824 7823 10308 18676 15071 18677 18678 15072 14664 6261 7821 7820 7822 10308 17711 18679 18680 17713 18678 17712 6262 9263 9446 9953 10778 14097 18134 18681 14102 18682 14100 6263 9283 9899 9930 10436 12795 14634 12017 18683 18401 18400 6264 9221 9728 9745 9865 18684 18685 18686 18687 18688 18689 6265 699 9953 9446 10448 18135 18134 18133 17191 13127 18690 6266 8682 10775 9699 11001 16372 16373 16371 18691 18692 18693 6267 9450 10331 9623 10500 16871 14755 18694 15837 14759 14758 6268 284 290 285 9499 2858 2857 2845 16201 18695 16200 6269 1404 510 9823 10607 2661 18696 14374 14377 14379 18697 6270 9541 9964 7624 10477 18698 18544 18699 18700 18548 18547 6271 8409 9940 9467 10605 13299 13298 13272 16050 17429 16051 6272 936 1212 1528 9441 5927 5928 5924 18701 17884 18702 6273 8536 9130 8815 9441 18336 17081 18703 18335 17080 14747 6274 9978 10684 8467 10866 16470 15404 18704 18301 15405 15233 6275 9876 10308 7823 10761 18705 15072 18706 13174 15073 14669 6276 1509 10201 10010 10717 15977 17370 12792 18707 16697 18708 6277 8331 8337 8338 9792 18709 18710 18235 13793 18234 18711 6278 753 1284 9531 10316 2806 12567 15088 18712 12565 12566 6279 753 9531 271 10316 15088 18713 2794 18712 12621 12565 6280 1433 1385 9530 10317 5681 18714 18715 12626 18716 18717 6281 9995 9439 10392 10437 16909 14679 18718 16911 13136 16776 6282 9124 8532 9806 10347 18719 17680 11451 11454 11456 18041 6283 1035 9910 10827 10879 18720 18721 18571 18574 18576 16437 6284 9270 10377 9927 10618 16134 18096 18722 17297 18098 18100 6285 8905 9790 9588 10894 18171 14430 18170 18723 17983 18724 6286 9248 9916 9712 10527 14402 17578 18725 18726 12504 17580 6287 8658 9528 10207 10576 18727 18728 18729 18730 18731 18732 6288 6363 9617 6290 10384 17217 18733 6691 17218 18734 17219 6289 256 1396 9472 10535 2718 17197 17196 18735 17842 17841 6290 8385 8292 10064 10656 18736 16036 18737 18738 16040 16039 6291 8866 10444 9970 11136 18200 18739 18740 18201 18741 18202 6292 8900 7864 10495 10540 18742 14585 18743 18744 14982 13177 6293 8737 9529 7875 10575 12458 18745 18746 15569 18747 15568 6294 8659 9528 8658 10576 18748 18727 18749 18750 18730 18732 6295 8653 10605 10078 10988 18751 18752 18410 18414 18413 18753 6296 8785 9690 10856 11033 18754 18755 18756 18757 18758 18759 6297 9416 10378 10197 10645 18760 18035 18761 18762 18038 18040 6298 290 285 9499 10199 2857 18695 16200 13722 15169 18763 6299 8589 10300 8155 10363 18344 13407 18764 17838 12381 12974 6300 9421 9931 584 10458 15133 15134 12968 14833 14832 16030 6301 8737 8716 10185 10993 18765 17047 12283 12281 12282 17050 6302 9895 10507 246 10614 17014 14524 15494 14662 18766 18767 6303 9530 10053 1433 10317 18768 13153 18715 18716 12626 15728 6304 9531 10202 271 10316 18769 12554 18713 12565 12621 14995 6305 10074 10743 10107 10841 17409 17410 17406 18427 18426 18770 6306 9741 10298 9314 10787 18196 18771 14091 17349 17134 18197 6307 8995 8231 8183 10241 18772 17727 18773 14567 17728 14880 6308 8468 9978 9436 11153 18300 18299 17533 18774 18775 18776 6309 1565 853 1536 10417 5640 5642 5641 18600 18777 18012 6310 586 1242 10010 10018 4151 15486 16743 16745 12589 16498 6311 9709 10456 9793 10579 13919 18778 16752 13922 18779 13923 6312 8000 8024 10329 10938 18780 18781 18782 18783 18784 16830 6313 9970 10444 9391 11136 18739 18785 18786 18741 13589 18202 6314 7896 7900 9994 10336 18787 12681 18788 18789 12685 12684 6315 1528 9441 1212 10427 17884 18702 5928 17885 18790 17886 6316 9010 10050 9453 10368 14217 14216 13317 14219 14221 18791 6317 9417 10052 10284 10773 15145 15147 12826 18792 16991 16209 6318 311 9899 9623 10389 18793 18794 18795 18796 18797 18399 6319 9238 10029 9747 10893 18798 13704 18799 18800 14305 14307 6320 1494 10588 1353 10943 16937 18801 2849 16938 18802 16939 6321 8217 9639 8875 11051 18290 18803 16524 16442 16526 18291 6322 8633 9663 8398 10218 12188 18804 18805 12191 18806 12192 6323 8000 8024 8705 10329 18780 18807 18808 18782 18809 18781 6324 9214 9449 9699 10922 18810 18811 18812 18813 18814 18815 6325 9471 10068 9928 10596 18816 14016 16582 18817 14020 14019 6326 9683 9925 883 10975 18222 18818 12787 12789 12788 17594 6327 9845 10289 695 10450 18819 18820 18821 18822 18823 18824 6328 8020 8729 8022 9669 18825 17073 18826 18827 17075 17074 6329 8387 9827 8226 11186 18653 18828 18829 18654 18830 18655 6330 8934 9506 10359 10549 18831 18109 16552 16554 14883 15719 6331 9228 9506 10089 10244 18832 18833 18834 18835 18836 18837 6332 9722 10139 9373 10148 13311 13005 18838 14272 13205 13333 6333 7980 10034 10036 10492 13829 12724 13833 13830 13835 13831 6334 8729 9597 10703 10817 17071 17166 17164 18839 18270 18840 6335 1127 10140 1111 10990 18615 14182 6139 18841 14185 14187 6336 8074 10264 9457 10493 18842 18843 11548 14537 14536 18280 6337 8422 9941 8421 10398 18844 15257 18845 18846 15151 15259 6338 8589 9537 8588 10836 15269 13764 15267 18847 16566 16568 6339 6352 6351 9508 10175 6685 17341 18848 18849 17343 17342 6340 9871 9988 9260 10604 12506 18218 18219 17086 14475 17087 6341 8785 9937 9690 11033 18850 18851 18754 18757 18759 18852 6342 9418 10113 9976 10920 18853 15711 18854 18855 15714 15716 6343 9409 10617 9895 10763 15361 18644 15493 18856 15726 18648 6344 8185 9827 9421 10484 18388 18387 13596 14949 14951 18857 6345 9943 10339 9301 10698 18858 12030 14136 17183 18859 18860 6346 8081 9609 8079 10190 18861 18029 18862 18863 18032 18034 6347 9379 10250 9723 10799 18864 17968 18865 18866 15324 17970 6348 721 858 1452 10279 5044 5046 5043 18671 18867 18868 6349 9322 9855 9486 10273 18067 18066 18068 18869 18870 18871 6350 9808 9944 9489 10637 16669 16668 16610 14803 17826 18872 6351 9308 10389 9774 10858 13313 12849 13312 18873 18874 18875 6352 9050 10574 9432 10584 18876 18877 12411 12834 12847 18878 6353 9660 10504 8517 10940 18091 18879 18880 18094 18881 18095 6354 9196 9118 8530 10643 18882 18883 18884 18885 18886 18887 6355 8506 10544 8399 11034 18888 14363 18889 18890 18891 18892 6356 6351 6354 9508 10169 6843 18893 17341 17339 17340 18894 6357 1027 9678 9447 10555 12107 16720 16718 12108 18178 11896 6358 1519 9447 1028 11019 18895 16717 6050 18896 18897 18898 6359 8399 8507 10260 10445 18899 18900 18901 14362 18902 18903 6360 9741 10387 9289 10867 12229 12122 12228 18904 18905 18906 6361 8269 9020 9003 10985 17960 18907 18908 17961 18909 17962 6362 9221 9745 9728 10749 18686 18685 18684 18910 18911 18912 6363 8658 9528 8659 10207 18727 18748 18749 18729 18913 18728 6364 271 9531 753 10202 18713 15088 2794 12554 18914 18769 6365 1343 9726 9647 11180 16901 16900 16212 18915 18916 18917 6366 9416 9626 9510 10039 12476 18918 18919 12479 18920 11290 6367 623 700 9666 10448 4554 12661 18921 17190 12663 12662 6368 9228 10359 9506 10613 18922 18109 18832 18923 15480 18924 6369 9469 9632 9216 11073 18925 18926 18927 18928 18929 18930 6370 9281 9621 9492 10390 18931 17928 18932 18933 18934 18935 6371 8802 9645 8168 10227 18936 11904 18937 18938 11907 11909 6372 8241 9645 8802 10227 15947 18936 18939 16254 18938 11909 6373 9653 10161 9020 10985 18641 18940 17959 17963 17962 18941 6374 8082 9471 8839 10532 17869 17868 17870 18942 18943 16577 6375 9534 10488 8697 10758 16826 16825 16822 18944 18945 18946 6376 1405 9981 9453 10008 11999 11998 12000 14534 14533 15167 6377 7579 10402 10347 10423 18947 18948 18949 18950 18951 18952 6378 1494 1495 1353 10588 5522 6054 2849 16937 18801 18953 6379 9414 10172 10438 10691 18954 11986 18955 14179 17505 17001 6380 8188 10349 10156 10973 15825 18956 18957 15826 18958 15827 6381 9455 9828 9447 10555 18959 18960 18177 11895 18178 18961 6382 1580 206 7561 10391 1757 16173 18962 18963 16175 16174 6383 1344 10274 10077 11066 18964 18965 18966 18967 18968 18969 6384 9859 9973 9535 10415 16931 16929 16926 17273 17272 18970 6385 745 10667 670 10791 18971 14650 4790 18972 15573 15572 6386 9446 9567 10448 10778 18131 18973 13127 14100 18974 17573 6387 9837 10593 297 10858 18975 18976 18977 18978 18979 18980 6388 8545 10446 10356 10732 18981 18982 18983 18984 18985 18986 6389 9646 9877 9319 10965 15004 18987 18988 15007 18989 15008 6390 1495 1353 10588 10943 6054 18801 18953 18990 16939 18802 6391 9365 10058 9658 10436 18991 15060 18992 18993 15064 15063 6392 778 854 9628 10312 5305 15807 18994 18995 15925 15924 6393 1151 1561 10169 10175 2374 16358 18996 18997 16362 16361 6394 712 10117 9433 10712 17079 18614 16071 16948 16950 16696 6395 361 10199 291 10500 15835 18998 2894 15108 18999 15838 6396 9302 9568 10096 10844 17832 17833 17834 18307 18306 19000 6397 8995 8183 9995 10241 18773 17828 13551 14567 14569 17728 6398 9067 9897 9091 10231 16855 18338 19001 16856 15864 16857 6399 9490 10273 9945 10553 19002 13071 19003 19004 13075 13074 6400 9428 9125 10382 11082 17520 19005 19006 17521 19007 17522 6401 780 10061 9691 10875 19008 19009 19010 16290 19011 19012 6402 6942 9740 10155 10695 14839 14838 14837 19013 19014 19015 6403 1156 9683 1286 11144 18223 19016 3916 18224 19017 18225 6404 9944 10335 8393 10554 19018 19019 19020 19021 19022 19023 6405 8706 10329 9870 10847 15535 19024 19025 15536 19026 15351 6406 9861 10209 8599 10830 18420 18419 18421 19027 19028 15175 6407 10117 10559 9398 10730 18429 19029 19030 18432 19031 18433 6408 9831 10490 8075 10947 17663 17664 17660 19032 19033 19034 6409 9432 9915 1446 10376 19035 19036 19037 19038 19039 19040 6410 185 1225 210 9514 2132 2368 2367 14163 19041 14164 6411 9553 9600 9386 10740 19042 19043 18532 19044 19045 19046 6412 1239 10226 9205 10380 15132 14450 15131 19047 19048 19049 6413 9517 9289 9665 10760 14948 16867 18487 13302 17005 12125 6414 9524 9431 10366 10901 19050 15251 19051 17384 15252 12777 6415 8924 8485 8930 9583 19052 19053 13061 13059 13060 19054 6416 9795 9912 8553 10836 19055 19056 19057 19058 19059 15234 6417 8729 8022 9597 10817 17073 17072 17071 18839 18840 19060 6418 9499 9950 9586 10685 15431 19061 18607 18609 18608 19062 6419 9211 9953 9446 10769 17326 18134 17771 17328 17774 13587 6420 9757 9339 9929 10748 19063 19064 15654 15658 15657 19065 6421 8624 9505 7772 10253 19066 11446 19067 19068 11450 11449 6422 9146 9403 10347 10402 16919 18042 18043 19069 18948 19070 6423 9410 9857 9798 10053 19071 16595 11926 19072 17665 17666 6424 9429 10682 8515 11077 18630 18631 18629 19073 19074 19075 6425 1088 1089 9977 10755 5701 11383 19076 19077 19078 19079 6426 9602 9976 9493 10628 19080 17403 16412 16410 16411 16549 6427 8807 10385 9752 10783 19081 19082 19083 19084 19085 19086 6428 6959 10139 6911 10687 11457 15909 7373 17527 19087 17298 6429 586 1243 9983 10010 4369 18048 16744 16743 11838 18049 6430 7813 9685 8958 10743 19088 17415 19089 19090 17449 17448 6431 9413 8331 10568 11008 12112 12113 12114 14844 19091 13796 6432 9548 10403 9205 10598 12604 14452 14451 19092 19093 19094 6433 9474 9351 9861 10830 15742 19095 19096 15743 19027 15174 6434 721 10279 1452 10325 18671 18867 5043 18460 19097 19098 6435 9049 8502 9846 10487 19099 14866 19100 19101 15673 15672 6436 9228 10613 9506 11093 18923 15480 18832 19102 19103 19104 6437 328 10467 342 10553 19105 19106 3080 19107 11890 19108 6438 654 9661 9948 10498 19109 19110 14511 13892 17635 19111 6439 9211 9708 9446 9959 17772 16047 17771 19112 15822 15018 6440 219 9769 9732 10924 19113 17421 19114 19115 19116 19117 6441 9638 9644 502 10911 17347 17213 17345 15435 17214 15970 6442 869 1527 931 9436 5699 5698 4995 13424 19118 11793 6443 9042 9898 8642 10387 19119 16156 19120 19121 16159 16161 6444 9455 9678 9447 10785 11897 16720 18177 19122 19123 19124 6445 7670 7731 9675 11017 18516 19125 19126 18517 19127 18518 6446 7949 10654 10390 11016 19128 19129 19130 19131 19132 19133 6447 8583 9428 9125 10382 18168 17520 18167 19134 19005 19006 6448 8211 8863 10184 10821 19135 17333 19136 19137 17337 17336 6449 912 10073 9429 10440 14689 14688 13950 15929 15928 19138 6450 6360 9507 6356 10154 17640 19139 6800 17641 19140 17642 6451 9264 10351 9586 10685 19141 18605 19142 19143 18608 18610 6452 7846 9596 7848 10704 12163 11415 12164 19144 17458 17457 6453 9257 9535 10181 10415 16928 19145 19146 17271 19147 17272 6454 8242 9633 8296 10215 17694 14588 19148 17695 16475 16165 6455 8338 9792 10294 10295 18234 18578 19149 18236 19150 13794 6456 9280 10069 9780 10394 14276 15054 15053 16681 16682 19151 6457 790 10655 9885 10849 19152 19153 19154 19155 19156 19157 6458 1363 473 10557 10735 3805 19158 18560 18562 18564 19159 6459 487 10243 10057 10762 17586 19160 19161 17587 19162 16994 6460 9676 10102 6967 10696 19163 19164 19165 19166 19167 17008 6461 8641 10711 10107 10743 19168 13681 19169 19170 17410 19171 6462 1525 10438 10242 10525 13640 19172 19173 13641 19174 11991 6463 9290 9564 9477 10775 17995 17994 17996 16788 19175 19176 6464 9273 9801 9798 10630 11768 14548 16597 11770 14550 11771 6465 9039 9585 10188 11097 16890 13685 16891 19177 19178 19179 6466 8563 8641 10107 10743 19180 19169 17405 17408 17410 19170 6467 8304 9546 8646 10563 17537 16365 17538 19181 16589 16588 6468 835 10086 834 10352 18003 13284 4985 18004 12656 15644 6469 722 9984 9390 10633 16896 16895 13355 13823 13822 19182 6470 535 533 534 10952 4102 4097 4103 18501 19183 18502 6471 9795 9817 8495 10619 13426 13409 11932 19184 19185 19186 6472 9335 10701 10202 10869 12728 19187 12555 18229 19188 18230 6473 824 10280 9952 10906 19189 18354 17584 17644 17646 19190 6474 426 428 10104 10478 3568 19191 18556 19192 19193 19194 6475 9265 9733 10045 10274 11287 16732 19195 19196 16730 16731 6476 417 9903 418 10966 19197 14736 3517 19198 14737 14738 6477 10008 10368 10050 10650 19199 18791 19200 19201 19202 17189 6478 1028 1519 1027 9447 6050 6049 6048 16717 16718 18895 6479 7980 9752 7986 11018 13827 19203 19204 14789 19205 14790 6480 8706 8002 8705 10329 15534 19206 19207 15535 18809 15350 6481 6924 6925 9512 10562 7345 19208 18112 18115 18117 19209 6482 501 9644 9638 10893 17346 17347 17044 17045 15804 19210 6483 229 1295 263 10673 2584 2586 2575 16314 13257 13256 6484 7967 10004 9053 10304 19211 19212 19213 19214 19215 16426 6485 8864 10723 9745 10728 19216 15185 18309 18312 18314 19217 6486 666 857 10279 10981 4768 19218 14064 14067 14069 19219 6487 10004 10304 7967 10540 16426 19214 19211 16428 19220 16297 6488 1231 850 10559 10730 4761 19221 18428 18431 18433 19222 6489 9310 9877 9646 10847 17650 15004 19223 17651 15206 15208 6490 426 10104 10008 10478 18556 12960 18602 19192 19224 19193 6491 9321 9657 9474 10946 19225 19226 19227 19228 19229 19230 6492 6940 10128 9702 10648 18242 18241 18240 19231 19232 19233 6493 9329 9758 9654 10241 14544 17989 19234 13903 17991 17990 6494 9512 10356 8545 10446 19235 18983 19236 19237 18981 18982 6495 1294 896 697 10969 4926 4925 3726 19238 18001 15099 6496 8399 10260 8507 11034 18901 18900 18899 18891 19239 19240 6497 8136 9775 10283 10749 19241 19242 19243 19244 19245 19246 6498 9407 10100 9703 10471 16770 19247 11343 11330 11345 16773 6499 566 687 9808 10129 4238 13849 19248 19249 13852 13851 6500 9473 10541 9726 10788 15794 18597 19250 15795 16902 15796 6501 1547 10338 9401 10470 16923 16924 15439 17575 17577 19251 6502 8863 10091 9749 10821 19252 19253 17334 17336 17335 19254 6503 8122 10066 9982 10397 19255 19256 19257 19258 17791 17162 6504 9393 9997 9618 10344 12862 19259 19260 12331 19261 12863 6505 159 6291 1271 9554 19262 19263 1991 19264 19265 19266 6506 9910 10191 9410 10879 12694 14346 19267 16437 19268 16438 6507 9655 10045 9733 11144 19269 16732 19270 19271 16734 16733 6508 9506 10241 9487 10359 13904 13902 13899 18109 19272 14879 6509 8195 8193 8194 10468 14724 19273 19274 11849 19275 13491 6510 9477 9290 9850 10125 17996 19276 11271 11274 11276 17997 6511 8416 8412 9532 10266 15090 11595 15091 19277 11597 11596 6512 8563 10107 8641 10711 17405 19169 19180 19278 19168 13681 6513 8461 10107 8560 10711 13089 13090 13088 13680 19279 13681 6514 9410 9801 9798 9857 15650 14548 11926 19071 16595 16947 6515 8430 9790 9064 11130 14431 18141 19280 14432 18142 14433 6516 7656 10324 168 10948 19281 16836 19282 19283 18358 18360 6517 8320 8926 10365 10563 18590 16043 19284 18591 16046 16045 6518 8626 10533 10337 10834 19285 19286 19287 19288 19289 19290 6519 9940 10016 9467 10605 16049 19291 13298 16051 17429 16052 6520 9623 9899 311 10860 18794 18793 18795 19292 19293 19294 6521 9295 9466 10240 11089 19295 12557 19296 19297 12561 12560 6522 8881 8923 10425 10644 19298 15616 19299 19300 15620 15619 6523 7725 9502 8858 10581 13324 14024 14025 19301 17722 17721 6524 9897 10048 9521 10231 16854 19302 19303 16857 19304 16858 6525 9781 9944 8393 10554 19305 19020 19306 15783 19022 19021 6526 7547 9496 7599 10201 13616 19307 19308 14414 19309 14415 6527 535 9893 10333 10952 19310 19311 18499 18501 18503 19312 6528 9621 10390 9281 10654 18935 18933 18931 19313 17559 19129 6529 9258 10552 9658 11115 19314 17946 16805 16807 16503 17948 6530 9762 10388 9355 11111 12256 12257 12255 19315 19316 19317 6531 8658 10576 10207 10957 18730 18731 18729 19318 19319 19320 6532 9457 10422 9523 10838 11550 19321 19322 18554 19323 18555 6533 374 9838 9986 10601 15528 15501 11541 11795 11797 19324 6534 9536 10129 9683 10274 19325 12431 19326 19327 13815 13817 6535 10008 10050 9485 10650 19200 19328 19329 19201 19330 19202 6536 9373 10337 9599 10383 12577 17542 19331 13278 17544 15260 6537 9590 10267 9345 10550 12571 19332 19333 12574 19334 12575 6538 7996 9753 7991 10604 11359 19335 14773 11258 14775 11360 6539 7991 9753 8738 10604 19335 12004 16263 14775 13908 11360 6540 8340 8381 8636 10493 16014 12748 19336 16015 12941 12940 6541 1512 10380 9205 10403 19337 19048 14960 13969 14452 16005 6542 1001 9474 1000 10322 16092 15219 5108 19338 18462 18463 6543 9475 9830 975 10537 18074 18073 18075 19339 19340 19341 6544 10065 10362 9632 11088 17175 19342 19343 17178 19344 17179 6545 9421 9951 8184 10484 12613 12612 12344 14951 14950 19345 6546 9541 10117 9399 10585 13978 16341 19346 13980 16342 13347 6547 394 1066 10305 10667 3407 11428 19347 19348 11432 11431 6548 9469 9216 10040 11073 18927 19349 19350 18928 19351 18929 6549 794 1309 9808 10637 4241 14801 19352 19353 14803 14802 6550 8234 8704 10577 11045 19354 15422 19355 19356 15423 13348 6551 9290 9699 10775 11001 16787 16373 16788 19357 18693 18692 6552 9603 9977 1089 10755 13547 11383 13548 19358 19079 19078 6553 1287 1309 10637 10692 2876 14802 19359 19360 19361 19362 6554 8515 10044 9429 11077 18628 18627 18629 19074 19073 19363 6555 7597 10413 7622 10935 19364 15918 19365 19366 15922 15921 6556 9758 8472 10809 11051 19367 19368 19369 18287 19370 19371 6557 9923 10090 9317 10868 18122 19372 19373 18125 19374 14350 6558 1313 1362 887 10029 3971 5759 5760 13703 19375 18145 6559 1313 1292 499 10029 3936 3935 3924 13703 13705 19376 6560 9788 9898 9328 10387 16157 17802 17706 16160 17710 16161 6561 10104 10478 428 10670 19193 19194 19191 19377 19378 19379 6562 9928 10234 9274 11015 17311 19380 16581 17859 19381 17860 6563 8420 10419 9708 10616 12516 19382 19383 13065 15021 17070 6564 232 1467 260 10267 2589 2601 2600 13430 12570 19384 6565 1275 9611 10045 10461 16118 13732 16119 19385 19386 15704 6566 8335 10046 9612 10462 16122 11600 16120 19387 19388 19389 6567 9567 10025 9446 10448 17571 14099 18131 18973 13127 19390 6568 8176 10773 9772 11022 19391 16886 19392 19393 19394 19395 6569 9745 10089 9728 10749 18310 19396 18685 18912 18911 19397 6570 9728 9745 9269 10089 18685 19398 19399 19396 19400 18310 6571 9743 10329 8024 10938 19401 18781 16433 16831 16830 18784 6572 9274 9476 10234 10651 19402 14371 19380 19403 17316 17509 6573 839 10310 9431 10366 16722 15347 16721 19404 15251 17226 6574 1526 9451 855 10475 19405 19406 5645 19407 19408 19409 6575 6925 9858 9512 10562 19410 19411 19208 19209 18117 19412 6576 9473 10541 9588 10642 15794 19413 19414 19415 15521 19416 6577 9461 10035 8004 10176 15885 19417 16981 15886 18536 15887 6578 790 9885 9818 10849 19154 15210 19418 19155 19419 19156 6579 585 10234 9476 10651 18498 14371 17508 17192 17509 17316 6580 8668 10002 9716 11151 15376 15375 15374 19420 16587 19421 6581 993 9473 877 10409 15792 16053 5102 19422 19423 19424 6582 9139 9176 9697 11096 16839 11982 19425 16840 15411 15410 6583 853 10408 9437 10573 18476 18475 18013 18015 18014 19426 6584 9720 9824 463 11159 19427 19428 19429 19430 19431 16350 6585 1573 6315 9501 10440 17786 17785 17784 19432 19433 19434 6586 1300 1434 364 9556 3261 3258 3259 16249 16250 19435 6587 9363 9962 9539 10236 14095 14094 12691 15652 15651 19436 6588 9455 9447 9828 10785 18177 18960 18959 19122 19437 19123 6589 9931 10151 626 10826 18327 18326 18214 13522 19438 19439 6590 9133 8511 9442 11034 18367 18368 17243 19440 19441 19442 6591 1519 1027 9447 10555 6049 16718 18895 19443 18178 12108 6592 8671 10056 9689 10652 19444 19445 19446 19447 19448 19449 6593 9711 9840 9331 10996 17289 19450 16180 16625 12688 17290 6594 1486 10307 9954 10795 14409 11353 14408 18496 19451 18497 6595 1250 9611 1105 10371 17477 15703 3431 19452 13132 15702 6596 364 10111 9556 10501 16252 16253 16250 19453 19454 19455 6597 7914 9658 7918 10133 15059 16501 19456 19457 16499 16500 6598 8974 9820 9990 10368 15317 15320 15321 19458 17185 15758 6599 764 9648 10339 10641 19459 19460 13441 13524 12880 14942 6600 9472 1396 10460 10769 17197 17460 17461 17397 19461 17398 6601 8127 10522 9835 10759 12077 19462 19463 12805 13984 15868 6602 1292 499 10029 10893 3935 13705 19376 19464 14307 14306 6603 9449 9943 9821 10698 19465 17181 14143 14144 12586 17183 6604 9413 10295 9792 11008 19466 13794 14843 14844 13798 13797 6605 9430 10920 10579 11052 19467 19468 17881 19469 19470 19471 6606 1146 9524 10366 10901 19472 19051 19473 19474 15252 17384 6607 9595 9655 9235 9777 19475 17769 19476 19477 16555 11407 6608 10356 10446 9512 10732 18982 19237 19235 18985 19478 18986 6609 934 1544 9430 10456 5608 17877 19479 19480 17878 17879 6610 1302 417 418 10966 3522 3517 3523 14915 14737 19198 6611 8003 7991 8738 10035 19481 16263 12716 12718 12314 16264 6612 7988 7991 7992 10035 18052 19482 11616 12713 12715 16264 6613 7980 10034 7979 10036 13829 12722 19483 13833 12721 12724 6614 7978 7980 7979 10036 19484 19483 11639 12719 12721 13833 6615 9234 9588 10541 10642 18212 19413 12530 19485 19416 15521 6616 8935 8984 10183 11040 19486 19487 17486 12099 17488 19488 6617 8175 10284 8249 10773 19489 14192 19490 19491 16990 16991 6618 591 9522 1014 10824 19492 15786 4393 19493 17611 17610 6619 6964 10102 9676 10600 19494 19163 19495 19496 19497 15721 6620 9164 8840 10378 10645 19498 18036 19499 19500 18040 18039 6621 8605 8464 9630 10452 19501 13760 19502 19503 13761 12105 6622 9705 10264 9730 10493 19504 15938 19505 19506 17310 18280 6623 9049 8502 9057 9846 19099 15273 19507 19100 15274 14866 6624 7762 9592 9138 10663 17441 11401 19508 17442 15895 15897 6625 9031 10154 9161 10524 16570 19509 18465 14527 18467 17031 6626 9260 9871 9641 10068 18219 14765 13784 19510 14763 14764 6627 8176 10284 10773 11022 19511 16991 19391 19393 19395 19512 6628 9340 9837 10199 10500 14976 14978 13508 19513 15838 16124 6629 8807 9752 10481 10783 19083 19514 19515 19084 19516 19085 6630 9391 9970 9494 10842 18786 19517 19518 19519 19520 19521 6631 1359 1553 10343 10344 5859 19522 16767 12330 16769 19523 6632 1568 9399 929 10585 19524 16340 5913 19525 13345 16342 6633 8958 9685 7813 10974 17415 19088 19089 17416 19526 17417 6634 9077 9465 10166 10789 12739 13789 14959 19527 19528 19529 6635 8422 8421 8499 10398 18845 15150 19530 18846 15152 15151 6636 8916 10040 9985 11073 15010 19531 12353 19532 19533 19351 6637 9756 10219 8993 10703 19534 18267 19535 19536 18265 18266 6638 9456 10362 9985 10580 19537 19538 19539 15527 19540 19541 6639 1362 887 10029 11021 5759 19375 18145 18391 18393 19542 6640 7776 7568 9580 10443 19543 19544 19545 19546 19547 19548 6641 9061 8905 8430 9588 19549 18169 19550 19551 14429 18170 6642 936 9441 1528 10366 18701 17884 5924 19552 18667 18666 6643 9736 9877 7998 10965 18260 15003 19553 19554 15006 15008 6644 1166 7658 10427 10518 19555 19556 17516 17517 17106 19557 6645 9655 9777 9595 10145 11407 19477 19475 12753 19558 12754 6646 9674 10416 9314 10886 17761 19559 19560 17764 13042 17765 6647 628 626 9714 10820 4567 18215 16792 16793 15444 18216 6648 8136 10742 9775 10749 19561 15001 19241 19244 19246 19562 6649 9061 9588 8430 10642 19551 14429 19550 19563 15520 15521 6650 6967 9676 6964 10102 19165 19495 7451 19164 19494 19163 6651 7917 7914 7918 10133 19564 19456 19565 19566 16499 19457 6652 8063 8065 9598 10363 19567 13503 19568 19569 13504 11863 6653 9287 9732 10079 10752 18447 19570 19571 18448 19572 17506 6654 591 1018 1014 9522 4395 4394 4393 19492 15786 18669 6655 7886 9713 9939 10351 19573 19574 19575 19576 19577 19578 6656 394 10305 9523 10667 19347 17455 19579 19348 17456 11432 6657 9851 9301 10339 10698 12643 12030 19580 19581 18860 18859 6658 856 1345 9448 10961 5652 19582 19583 19584 19585 19586 6659 9319 9754 9736 9877 19587 18256 19588 18987 18260 18259 6660 9134 7767 9828 9907 19589 15634 19590 19591 15636 15635 6661 9406 10162 10615 10649 19592 17464 17052 17056 17055 18165 6662 7657 7726 181 9542 19593 19594 19595 19596 19597 19598 6663 9893 535 10822 10952 19310 19599 15605 19312 19600 18501 6664 9473 10267 9588 10541 19601 19602 19414 15794 19413 19603 6665 10390 10654 7949 11167 19129 19128 19130 19604 19605 19606 6666 9442 10427 7711 10518 17102 19607 19608 17105 19609 17106 6667 9269 10089 9745 10728 19400 18310 19398 19610 18314 18313 6668 9212 10002 9862 10872 14211 14820 14819 19611 19612 19613 6669 10198 10822 535 10952 19614 19599 19615 19616 18501 19600 6670 8314 10110 10318 10895 19617 14702 19618 19619 19620 19621 6671 9274 10234 9928 10651 19380 17311 16581 19403 17314 17316 6672 9211 9479 10256 10460 16293 19622 17903 19623 19624 19625 6673 8414 8416 9532 10576 15089 15091 12142 12996 14584 19626 6674 8055 8341 9840 10726 19627 19628 11532 11535 11537 19629 6675 9756 9874 9286 10219 19630 18323 13365 19534 18321 18322 6676 7967 7834 9479 10304 19631 19632 19633 19214 16294 19634 6677 8550 10253 10161 10702 19635 19636 19637 19638 14321 19639 6678 1173 176 6295 9558 2019 19640 19641 19642 19643 19644 6679 232 1467 10267 11030 2589 19384 13430 17599 17601 19645 6680 9083 9790 8296 10353 16862 15962 16863 19646 14590 15966 6681 8553 9795 8552 9912 19057 19647 19648 19056 19649 19055 6682 7621 9828 10401 10555 19650 19651 19652 19653 16609 18961 6683 8750 9662 8106 10023 19654 18637 19655 19656 18635 18636 6684 8468 8531 9436 9924 19657 19658 17533 17531 17532 19659 6685 1124 7615 7546 9552 19660 19661 19662 19663 19664 19665 6686 1446 9915 9432 10476 19036 19035 19037 19666 17652 19667 6687 7875 10208 9529 10265 19668 19669 18745 19670 19671 15621 6688 546 9540 1324 10249 18045 19672 4167 19673 14781 19674 6689 8989 9855 9960 10646 15589 15588 13885 19675 14033 18406 6690 9640 10164 9834 10889 16850 15392 19676 19677 15242 15393 6691 840 656 1146 10901 4720 4261 4721 12356 19474 12357 6692 8741 9641 8740 11084 19678 17259 19679 19680 17898 16878 6693 7667 6390 9560 10688 18022 18023 17909 19681 19682 19683 6694 9399 10117 9541 10286 16341 13978 19346 19684 19685 19686 6695 930 1568 929 10585 5914 5913 5909 16136 13345 19525 6696 8839 9471 10190 10798 17868 16574 17871 19687 19688 19689 6697 9873 10183 9293 11040 17487 19690 14910 12098 14911 17488 6698 9847 10130 956 10229 13580 15186 19691 12465 15188 15189 6699 9578 9521 10231 10918 19692 19304 12280 16883 16882 19693 6700 8106 8109 10023 10797 19694 19695 18635 18638 18640 19696 6701 9132 9924 8319 10224 18027 14208 18026 19697 14983 14985 6702 7561 9511 7562 10391 16172 19698 19699 16175 19700 16176 6703 789 626 10151 10826 4563 18326 19701 19702 19439 19438 6704 7947 9898 7956 10902 19703 19704 19705 19706 19707 19708 6705 824 10310 10280 10906 17585 19709 19189 17644 19190 17645 6706 9438 10116 9073 10296 19710 19711 19712 19713 19714 19715 6707 9682 10600 10107 10841 19716 15813 19717 19718 18426 19719 6708 951 9932 9497 10962 13772 15623 19720 19721 15625 15624 6709 8950 10615 9733 10779 19722 19723 11286 16232 16234 19724 6710 9760 9220 10164 10889 14106 13238 14107 15240 15393 15241 6711 8124 10284 10009 10624 12827 19725 19726 11553 19727 12828 6712 6340 10440 10343 11077 19728 17847 19729 19730 19731 19732 6713 9199 8858 8755 9502 17718 19733 19734 17719 19735 14024 6714 302 297 10593 10858 2923 18976 19736 19737 18980 18979 6715 9415 9896 9414 10691 13854 13853 13855 14180 14179 19738 6716 7876 10208 7875 10265 12544 19668 19739 13206 19670 15621 6717 8020 8022 9597 9669 18826 17072 19740 18827 17076 17075 6718 9881 10084 9264 10843 15691 19741 19742 16019 19743 16020 6719 8989 9960 9043 10646 13885 15940 19744 19675 15941 14033 6720 9412 10049 9796 10397 19745 19746 19747 19748 18160 19749 6721 9458 10202 265 10441 19750 19751 15707 15709 15708 19752 6722 9761 9372 10161 10890 14082 14085 14086 14342 14827 14343 6723 9408 10017 9601 10614 18251 18246 18250 15280 19753 19754 6724 1357 10705 10307 11075 19755 19756 19757 19758 19759 19760 6725 9094 10128 8437 10589 19761 19762 19763 19764 19765 19766 6726 8548 8545 10356 10732 19767 18983 19768 19769 18985 18984 6727 9165 9635 10230 10645 19770 16952 19771 19772 19773 19774 6728 9859 10415 7838 10464 17273 13043 19775 11822 13045 12679 6729 721 838 658 10325 4730 4729 4727 18460 13500 14284 6730 7658 7711 10427 10518 19776 19607 19556 19557 17106 19609 6731 9853 10504 9470 10561 19777 18090 19778 19779 19780 19781 6732 7657 7743 9542 10526 19782 19783 19596 19784 19785 19786 6733 9228 9506 10244 11093 18832 18837 18835 19102 19787 19103 6734 8034 8697 10488 10758 19788 16825 19789 19790 18946 18945 6735 6985 9692 6959 10687 19791 11459 7374 19792 17527 17528 6736 9670 9792 9413 10295 19793 14843 19794 19795 19466 13794 6737 8469 10097 9758 10241 19796 17987 19797 19798 17990 14568 6738 9438 10296 9073 10602 19713 19714 19712 19799 19800 19801 6739 10002 10381 9593 10819 16109 19802 19803 14215 19804 16110 6740 9066 9921 9643 10708 13457 13458 12418 19805 19806 19807 6741 1324 9540 546 10222 19672 18045 4167 14125 19808 18204 6742 1324 9540 10222 10249 19672 18204 14125 14781 16621 19674 6743 9736 9754 9319 10371 18256 19587 19588 18469 19809 18470 6744 1122 10168 1428 10531 16245 16750 6143 16246 14498 16247 6745 1326 194 6301 9562 2027 19810 19811 19812 19813 19814 6746 586 1242 1243 10010 4151 4370 4369 16743 18049 15486 6747 9209 10022 9602 10628 15696 19815 19816 19817 16410 19818 6748 9627 10571 9434 10870 19819 18523 19820 19821 17174 18524 6749 7956 9898 9665 10902 19704 19822 19823 19707 19824 19708 6750 8738 8877 8003 10566 14786 19825 12716 12007 12914 14788 6751 10242 10438 9502 10525 19172 17525 19826 19174 17526 11991 6752 1470 9438 843 10380 11335 14858 5592 19827 19828 19829 6753 8055 8341 8053 9840 19627 19830 16272 11532 16271 19628 6754 9360 10114 10124 10671 19831 17510 13660 13693 13695 17512 6755 9476 9274 9965 10651 19402 15038 19832 17509 19833 19403 6756 9565 10681 9285 10790 19834 14901 19835 19836 12932 15080 6757 10295 10332 9125 11082 19837 19838 17519 17523 17522 19839 6758 9857 10245 967 10767 19840 15869 19841 19842 15870 15295 6759 9356 10673 9766 11041 18019 17430 17065 17069 17068 17432 6760 9237 9807 9636 10134 19843 19844 12038 12040 12042 19845 6761 9963 10474 9584 10678 19846 19847 19848 15601 19849 19850 6762 9868 10094 9638 11092 15127 19851 19852 19853 19854 19855 6763 8804 8231 10241 10549 19856 14880 19857 19858 14882 14881 6764 9923 10090 8710 11062 18122 18121 18123 19859 19860 17474 6765 914 9429 9997 10343 13949 15398 15397 16419 16768 16420 6766 8427 10432 9770 10711 12486 19861 19862 12264 15249 16540 6767 9521 10136 9251 10393 14778 18028 19863 14780 16487 14574 6768 9292 10626 9565 10681 19864 19865 19866 19867 19834 19868 6769 374 9838 10601 10986 15528 19324 11795 15763 15765 17169 6770 7546 1124 9552 10226 19662 19663 19664 19869 19870 19871 6771 9491 9903 9336 11012 19872 16269 19873 19874 16811 14739 6772 8651 9039 7965 9585 16889 19875 19876 13686 19877 16890 6773 6382 6356 6360 9507 6707 6800 6776 18520 17640 19139 6774 8314 8512 10895 10896 19878 19879 19619 19880 19881 19882 6775 9375 10006 10367 11087 19883 14554 13965 19884 18008 18007 6776 10058 10436 9365 11013 15063 18993 18991 19885 16904 17114 6777 10390 10654 9621 11016 19129 19313 18935 19132 17933 19133 6778 9025 7802 6912 9836 19886 19887 14917 14920 14922 19888 6779 8804 8934 8231 10549 19889 16553 19856 19858 14881 16554 6780 8437 10128 9520 10589 19762 19890 19891 19765 19892 19766 6781 8869 7949 10390 11016 19893 19130 19894 19895 19132 19131 6782 8441 9431 8257 10782 15998 13494 15999 19896 19897 19898 6783 439 10502 10292 10909 19899 19900 19901 19902 15694 19903 6784 390 9988 402 10978 12507 19904 3387 12508 19905 12509 6785 9913 10603 353 11067 14318 16593 16592 19906 19907 19908 6786 1313 9974 10029 10496 11573 18146 13703 12615 14777 12616 6787 8176 9772 10187 11022 19392 16724 19909 19393 19910 19394 6788 9219 9869 9751 10666 17977 19911 19912 17978 19913 17979 6789 8530 10286 9399 10477 19914 19684 19915 19916 19917 19918 6790 9357 9954 9742 10307 19919 11354 17412 19920 11352 11353 6791 9447 1519 10429 11019 18895 19921 19922 18898 19923 18896 6792 8227 10591 9827 10740 19924 18389 19925 19926 19927 19928 6793 379 9991 9989 10492 12385 12213 12383 13597 13599 13600 6794 9195 9052 9896 10565 19929 16492 15737 15479 13858 16493 6795 9544 10366 10072 10782 17224 17225 17223 19930 19931 19932 6796 9752 10385 9261 10783 19082 19933 19934 19085 19935 19086 6797 9064 10020 9790 10353 18140 18139 18141 19936 15966 19937 6798 9227 9590 10315 10464 17637 18454 19938 12678 18455 17353 6799 10014 10263 7862 10813 14509 13230 13268 16318 19939 19940 6800 6979 9616 9836 9949 18598 14921 18599 19941 19942 19943 6801 256 9472 9973 10535 17196 19944 19945 18735 17119 17842 6802 7721 10338 7661 10716 19946 19947 19948 19949 19950 19951 6803 8314 8442 8258 10110 19952 19953 19954 19617 19955 19956 6804 9269 9745 9728 9865 19398 18685 19399 19957 18689 18688 6805 8526 9480 10248 10680 13191 11785 13193 19958 19959 19960 6806 7872 10007 7870 10701 14993 12726 14992 19961 12730 12729 6807 8741 8740 8739 11084 19679 17897 19962 19680 16879 17898 6808 9518 9355 10462 10761 19963 17042 19964 19965 13175 17633 6809 1357 331 10705 11075 3095 19966 19755 19758 19760 19967 6810 9187 8543 9415 10714 17678 17679 16386 19968 19969 19970 6811 9222 10184 9749 10821 19971 16390 19972 19973 17335 17337 6812 1543 7662 202 11017 19974 19975 1770 15628 15630 19976 6813 9506 10613 10244 11093 15480 19977 18837 19103 19787 19104 6814 1518 9425 10515 10633 14463 17625 17624 17010 19978 17011 6815 390 402 1133 10978 3387 3391 3390 12508 12759 19905 6816 9356 9884 9766 10673 18018 19979 17065 18019 17430 18020 6817 9243 9823 10323 10607 11220 16177 12900 19980 17607 14379 6818 9257 9973 10535 11058 16930 17119 19981 19982 17123 17122 6819 9052 9896 9415 10556 16492 13854 16387 19983 19984 19985 6820 801 9915 9466 10653 14248 14247 12558 19986 19987 19988 6821 1526 854 855 9451 5644 5308 5645 19405 19406 15809 6822 9787 10408 10067 10972 19989 19990 19991 19992 19993 19994 6823 9238 9638 9868 10094 19995 19852 11483 13229 15127 19851 6824 9245 9651 9883 10095 19996 12766 16644 19997 12485 12768 6825 10337 10533 9366 10834 19286 15315 19998 19289 19999 19290 6826 8750 8106 8109 10023 19655 19694 20000 19656 19695 18635 6827 813 10317 10118 10679 20001 20002 20003 20004 20005 20006 6828 8424 9806 8646 11113 20007 16363 20008 20009 16366 16368 6829 8386 9792 8337 11002 18579 18711 20010 18580 20011 18581 6830 9745 10723 9269 10728 15185 20012 19398 18314 19610 19217 6831 8020 9669 9597 10925 18827 17076 19740 20013 20014 20015 6832 9443 10289 9845 10450 20016 18819 20017 20018 18822 18824 6833 9449 9214 10463 10922 18810 20019 20020 18815 20021 18813 6834 9985 10362 9216 10580 19538 20022 20023 19540 20024 19541 6835 474 383 9581 10485 3344 20025 20026 20027 20028 20029 6836 8472 10355 9758 10809 20030 14797 19367 19368 19369 20031 6837 292 1057 9837 10612 2889 20032 14977 13512 15945 20033 6838 9213 9947 10228 10918 20034 17749 20035 20036 17753 17752 6839 9544 9431 10366 10782 17744 15251 17224 19930 19932 19898 6840 9634 9262 9929 10748 20037 15655 20038 20039 15657 15656 6841 856 9448 10542 10961 19583 20040 20041 19584 20042 19585 6842 6340 10144 10440 11077 20043 20044 19728 19730 19732 20045 6843 9081 9854 8655 10668 20046 20047 20048 20049 20050 16662 6844 7739 6390 7667 10688 20051 18022 20052 20053 19681 19683 6845 8843 10268 9205 10418 16128 16129 14111 15537 15539 20054 6846 9439 10213 660 10717 16466 16465 14677 15585 15584 20055 6847 8266 8313 9433 10611 20056 20057 20058 20059 20060 20061 6848 9897 10231 9521 10918 16857 19304 19303 18339 19693 16882 6849 9211 9953 9841 10659 17326 13583 17327 20062 14275 14274 6850 9217 9885 9818 10873 15209 15210 14484 20063 20064 20065 6851 9329 9882 9813 10876 15212 13838 14542 20066 20067 20068 6852 9219 9869 9809 10874 17977 17976 17975 20069 20070 18207 6853 9817 9889 9270 10878 18362 18361 18363 20071 20072 18210 6854 9816 9876 9287 10877 15218 15217 15214 20073 20074 20075 6855 7875 9529 8737 11006 18745 12458 18746 20076 12284 12326 6856 9336 10005 9840 10491 16268 18491 20077 20078 18489 18490 6857 8626 9692 10337 10533 20079 16849 19287 19285 19286 13774 6858 782 1185 10017 10505 5329 20080 20081 20082 20083 20084 6859 9321 9474 9718 10946 19227 20085 13999 19228 20086 19229 6860 1108 311 9899 10860 2992 18793 20087 20088 19294 19293 6861 1448 9841 10460 10769 13584 20089 20090 13585 19461 13586 6862 9468 10275 9833 10834 11878 14407 20091 20092 20093 20094 6863 1041 10352 10695 10949 20095 20096 20097 20098 20099 20100 6864 1433 9530 1385 10053 18715 18714 5681 13153 20101 18768 6865 10085 10565 9614 10691 15199 15662 15660 15201 20102 14181 6866 782 10017 9557 10505 20081 20103 20104 20082 20105 20083 6867 9636 10134 9807 10158 12042 19845 19844 20106 20107 20108 6868 9304 10238 10407 11045 13163 20109 17098 13349 20110 13350 6869 8888 10465 7966 10564 18471 20111 20112 18474 20113 17125 6870 7627 6995 7555 10686 20114 20115 20116 20117 20118 20119 6871 9094 10128 10589 11086 19761 19766 19764 20120 20121 20122 6872 1347 10045 10274 11066 20123 16730 20124 20125 18969 20126 6873 9521 10048 9251 10231 19302 20127 19863 19304 20128 16858 6874 9254 9584 10474 10678 20129 19847 16977 16482 19850 19849 6875 975 10011 9475 10373 18076 18077 18075 20130 20131 20132 6876 9431 9951 8257 10556 13493 13492 13494 20133 20134 20135 6877 9458 265 10202 10869 15707 19751 19750 20136 19188 20137 6878 9858 10732 9512 10981 20138 19478 19411 20139 20140 20141 6879 9479 10304 7834 10464 16294 19634 19632 17354 20142 11823 6880 9818 10618 1415 10713 20143 15817 20144 20145 15818 13567 6881 9758 10097 8379 10882 17987 20146 18286 18285 16440 20147 6882 9985 10040 8916 10496 19531 15010 12353 13466 13465 15266 6883 8576 8577 9701 11161 20148 17936 20149 20150 17938 17937 6884 8401 8633 8398 10218 13375 18805 20151 13376 18806 12191 6885 8505 9086 9897 10936 20152 20153 20154 20155 20156 20157 6886 8329 10166 9801 10789 13290 14902 11767 20158 15780 19528 6887 8593 10805 9035 10903 20159 16351 20160 20161 16354 16356 6888 9696 10048 8230 11137 20162 20163 20164 20165 20166 20167 6889 465 1049 10523 10734 3765 20168 18152 18155 18157 20169 6890 9092 9488 8491 9980 13824 20170 20171 20172 20173 20174 6891 8538 9481 10472 10899 20175 20176 20177 20178 20179 20180 6892 7657 181 944 9542 19595 1842 20181 19596 20182 19597 6893 6966 10600 6964 10781 20183 19496 7342 20184 20185 20186 6894 1403 1065 10182 10995 6082 20187 18084 18087 18089 20188 6895 9601 10017 9306 10614 18246 18247 15271 19753 20189 19754 6896 8004 10035 9461 10090 19417 15885 16981 17472 17473 15290 6897 1363 9705 741 9710 18561 11576 5142 20190 12417 12416 6898 168 1533 1477 9709 2275 2277 2272 16835 13025 13026 6899 10100 10405 1014 11035 15789 15787 15784 20191 20192 20193 6900 8337 9792 8386 10294 18711 18579 20010 20194 18577 18578 6901 295 296 9526 10369 2883 17955 18062 20195 17956 14708 6902 1090 9783 333 10553 11479 20196 3097 13476 20197 13477 6903 9092 9958 9488 9980 13826 13756 13824 20172 20174 20198 6904 8042 8035 8041 10488 17002 20199 13012 13015 13017 17004 6905 8034 8697 8041 10488 19788 16824 20200 19789 13017 16825 6906 9440 9619 10522 10795 20201 20202 13862 20203 20204 20205 6907 9581 9968 9831 10490 20206 17723 20207 20208 17663 16605 6908 370 10394 9838 10986 20209 20210 20211 20212 17169 16683 6909 7618 7596 7533 10402 20213 16285 20214 20215 16287 16286 6910 8583 8638 9428 11008 18166 17656 18168 20216 20217 20218 6911 8020 9597 8022 10925 19740 17072 18826 20013 20219 20014 6912 787 9679 10792 10937 18623 14227 20220 18624 20221 18625 6913 1404 510 244 9823 2661 2660 2649 14374 20222 18696 6914 10026 10680 8870 10862 20223 20224 20225 20226 20227 20228 6915 9293 9644 9873 10797 17746 20229 14910 17318 11831 17747 6916 9665 10257 10584 10902 16865 16615 20230 19824 12837 16617 6917 1420 6894 6977 10587 17620 7203 20231 17622 20232 17623 6918 8554 8553 9912 10836 20233 19056 13939 14381 15234 19059 6919 9234 9588 10267 10541 18212 19602 20234 12530 19603 19413 6920 625 789 1010 10826 4562 4565 4564 13521 20235 19702 6921 9257 9864 9760 10708 18189 16479 20236 18190 20237 18191 6922 9674 10801 784 10886 20238 20239 17762 17764 17763 20240 6923 9446 10025 9856 10448 14099 20241 20242 13127 20243 19390 6924 370 9838 10394 11178 20211 20210 20209 20244 20245 20246 6925 9520 10086 9901 10352 16647 13498 17475 20247 18005 15644 6926 1378 10628 9976 10920 20248 16549 15713 15715 15714 20249 6927 1446 10476 9432 10736 19666 17652 19037 20250 20251 20252 6928 8041 9534 8697 10009 16823 16822 16824 13265 20253 17596 6929 9997 10343 9618 10344 16768 20254 19259 12863 19261 16769 6930 7781 6921 9034 9555 20255 20256 20257 20258 20259 20260 6931 8338 9792 8337 10294 18234 18711 18710 19149 20194 18578 6932 9827 10341 8227 10740 18652 20261 19925 19927 19926 20262 6933 6351 6354 6352 9508 6843 6842 6685 17341 18848 18893 6934 9641 9807 8902 10532 20263 12235 20264 20265 13211 17090 6935 9387 10684 9978 10866 16242 16470 20266 13486 18301 15233 6936 929 9399 1568 10725 16340 19524 5913 20267 20268 20269 6937 721 10279 10325 10595 18671 19098 18460 18461 14541 15492 6938 7543 7562 7561 9511 20270 19699 17469 17471 16172 19698 6939 546 451 587 10292 3673 3693 3692 18046 15140 20271 6940 9444 9939 9825 10612 20272 20273 20274 16943 20275 20276 6941 9481 10294 9961 10579 20277 20278 20279 20280 18451 20281 6942 1357 1234 10307 10705 3096 20282 19757 19755 19756 20283 6943 9556 10825 9330 10933 20284 20285 20286 20287 12377 20288 6944 6312 9802 7778 11096 20289 18047 17799 17800 16841 16594 6945 411 9803 413 10678 20290 14387 3492 20291 16483 16684 6946 7886 9713 10351 10671 19573 19578 19576 20292 20293 20294 6947 9277 9895 9906 10617 18646 20295 14039 18645 16059 18644 6948 8916 9985 8486 11073 12353 20296 20297 19532 20298 19533 6949 9415 1447 10280 10691 17015 20299 20300 14180 20301 17018 6950 9073 10457 9438 10602 20302 20303 19712 19800 19799 20304 6951 688 10193 9811 10846 20305 20306 20307 20308 20309 20310 6952 9766 10256 229 10673 20311 16313 20312 17430 16314 14141 6953 10156 10349 9382 10973 18956 16843 20313 18958 16844 15827 6954 8204 10207 10084 10957 20314 16686 20315 20316 20317 19319 6955 9458 10032 265 10869 20318 20319 15707 20136 20137 20320 6956 858 1452 10279 11011 5046 18867 18868 20321 20322 20323 6957 9052 9415 8543 10556 16387 17679 17677 19983 20324 19984 6958 6317 6390 7739 10688 6432 20051 20325 20326 20053 19683 6959 8900 10495 10004 10540 18743 20327 20328 18744 16428 14982 6960 8865 10181 9859 11168 20329 20330 20331 20332 20333 20334 6961 9206 9456 9662 10709 20335 20336 20337 20338 20339 11531 6962 6343 6345 9842 10414 6838 20340 18504 18507 18509 20341 6963 1007 576 1411 10285 4318 4320 4319 20342 13916 13915 6964 9362 10147 9824 10229 13201 15409 20343 12466 13436 14145 6965 8026 8054 10306 10650 20344 20345 20346 20347 20348 17187 6966 335 9945 10665 10772 20349 20350 20351 20352 20353 20354 6967 9910 10236 9539 10879 15653 15651 12690 16437 16436 20355 6968 9052 8754 10085 10565 20356 20357 16388 16493 15199 20358 6969 9511 10391 206 11011 16176 16174 16171 20359 20360 20361 6970 7998 8850 9646 9877 17263 17265 15005 15003 15004 20362 6971 8002 9646 8850 9877 15205 17265 17269 15204 20362 15004 6972 8269 8841 9653 9889 17252 16222 17254 20363 18208 18209 6973 8118 8241 10227 11070 20364 16254 20365 20366 16255 15948 6974 1286 9683 10274 11144 19016 13815 20367 19017 16735 18225 6975 9388 10067 9787 10408 13373 19991 20368 20369 19989 19990 6976 9165 10230 8760 10645 19771 16951 20370 19772 20371 19773 6977 10233 10489 9467 10523 17820 20372 20373 17671 20374 17821 6978 8671 10620 10056 10652 20375 20376 19444 19447 19449 20377 6979 9526 9994 9500 10336 20378 12680 20379 20380 12683 12685 6980 1345 10403 9448 10961 20381 17691 19582 19586 19585 20382 6981 9481 10022 9961 10294 20383 20384 20279 20277 20278 20385 6982 9078 9114 9193 10258 20386 14108 14454 14453 13478 14792 6983 8238 8502 8236 10487 17287 20387 13609 11513 13611 15672 6984 9700 10305 9582 10838 20388 20389 20390 12809 20391 20392 6985 1343 9647 673 11180 16212 20393 4797 18915 20394 18916 6986 9221 10283 9775 10749 20395 19242 20396 18910 19246 19245 6987 8739 9641 8740 9753 16877 17259 17897 16876 20397 12005 6988 8738 8740 9641 9753 17258 17259 12006 12004 12005 20397 6989 1001 9474 10322 10731 16092 18463 19338 20398 20399 20400 6990 9752 9261 10481 10783 19934 20401 19514 19085 19516 19935 6991 775 1344 10077 11066 5284 18966 20402 20403 18968 18967 6992 9407 9703 9547 10468 11343 20404 20405 13490 20406 11848 6993 9839 9979 9317 10737 11888 11886 11883 14963 20407 14964 6994 9238 9747 9638 10893 18799 15803 19995 18800 15804 14305 6995 725 723 961 10139 4848 5053 5052 16690 13004 13003 6996 9275 10059 9918 10394 16300 17926 14760 13628 14762 16301 6997 7764 9616 6978 9826 20408 20409 20410 20411 20412 20413 6998 8168 9998 9645 10424 13412 13413 11904 20414 15367 16604 6999 8242 8296 8295 10215 19148 20415 20416 17695 20417 16475 7000 7627 6920 6995 10686 20418 7029 20114 20117 20119 20419 7001 9067 9091 8504 10231 19001 20420 20421 16856 20422 15864 7002 8562 9069 8699 10789 12608 12762 20423 13279 13157 13156 7003 781 9654 870 9882 16289 17338 5317 18272 20424 18271 7004 9449 10339 9943 10698 20425 18858 19465 14144 17183 18860 7005 8578 10114 8465 10452 20426 14923 12101 12104 12106 14926 7006 9214 9699 9449 9921 18812 18811 18810 13459 14142 20427 7007 9292 9478 10626 10681 20428 20429 19864 19867 19868 20430 7008 8069 10078 10019 10988 18411 15342 20431 18412 20432 18413 7009 6976 6894 9969 10587 7287 20433 20434 20435 16827 17623 7010 7600 7599 7547 9496 20436 19308 17581 17582 13616 19307 7011 9610 9799 9417 11145 17496 20437 18395 17062 18396 17497 7012 9836 10161 8550 10253 20438 19637 20439 20440 19635 19636 7013 8116 8802 8168 10227 20441 18937 13446 13445 11907 18938 7014 8118 8241 8802 10227 20364 18939 20442 20365 18938 16254 7015 1165 149 7534 10800 1693 16463 20443 20444 16464 16151 7016 9455 10404 10222 10973 20445 20446 20447 20448 20449 20450 7017 1008 10071 9425 10633 20451 20452 17009 17012 17011 20453 7018 846 10579 10920 11052 20454 19468 20455 20456 19471 19470 7019 9036 9921 9699 10745 20457 20427 20458 20459 20460 17419 7020 9124 10374 9454 10602 20461 20462 11453 13818 13820 20463 7021 8298 8495 10083 10664 20464 12983 20465 20466 18184 18183 7022 9391 10509 9970 10842 13896 20467 18786 19519 19521 20468 7023 997 10236 9910 10879 20469 15653 20470 20471 16437 20355 7024 8954 10163 10363 10634 13766 14254 14252 20472 20473 16376 7025 9828 9907 7621 10401 15636 20474 19650 19651 19652 20475 7026 1447 943 9415 10280 5517 17676 17015 20299 20300 20476 7027 9701 10828 9677 11161 17935 20477 20478 17938 20479 17939 7028 8531 8468 9436 11153 19657 17533 19658 20480 18775 18774 7029 520 10240 9484 11074 20481 20482 20483 20484 20485 20486 7030 8296 8295 10215 10933 20415 20417 16475 14591 16476 20487 7031 9206 9662 9456 10030 20337 20336 20335 20488 20489 20490 7032 9375 9958 9488 10110 11511 13756 20491 11916 12877 11917 7033 256 1396 1115 10211 2718 2717 2616 17198 17921 17199 7034 1348 10741 9991 10859 20492 20493 15790 15791 12646 20494 7035 1452 10325 10279 11011 19097 19098 18867 20323 20322 20495 7036 8775 7753 9495 10895 20496 11472 20497 20498 20499 20500 7037 257 255 259 10059 2708 2713 2712 17925 17927 20501 7038 7689 7691 7651 10896 20502 20503 20504 20505 20506 20507 7039 1133 10068 9871 10978 20508 14764 12758 12759 12510 20509 7040 932 1042 9403 10473 5513 16914 16915 20510 20511 20512 7041 9635 10230 9437 10663 16952 16657 20513 16955 15896 16956 7042 9589 9715 9292 10510 20514 20515 20516 20517 20518 20519 7043 9673 9926 9400 10776 17320 15540 20520 18408 15159 15543 7044 9086 10796 9897 10936 20521 20522 20153 20157 20156 20523 7045 9443 9330 10825 10933 20524 20285 20525 15248 20288 12377 7046 9118 9399 8530 10643 20526 19915 18883 18887 18886 20527 7047 9253 10227 9645 11070 20528 11909 18583 18585 15949 16255 7048 8429 8432 9080 9718 20529 16558 20530 20531 16559 14672 7049 9053 10304 10004 11038 19215 16426 19212 20532 20533 20534 7050 750 852 752 9626 5179 5178 5177 20535 11289 12475 7051 1178 1177 9496 10201 2255 20536 13617 14413 14415 20537 7052 9466 9295 10240 10445 19295 19296 12557 15930 20538 12908 7053 9384 10086 9520 10352 13285 16647 20539 12658 20247 15644 7054 9838 9986 9256 11042 15501 20540 18232 15504 17367 15505 7055 9446 9953 9211 9959 18134 17326 17771 15822 19112 20541 7056 9263 9953 9446 9959 18681 18134 14097 15334 15822 20541 7057 9749 9636 10091 11084 20542 20543 19253 20544 20545 20546 7058 7689 7651 10382 10896 20504 20547 20548 20505 20549 20506 7059 9682 10600 6966 10781 19716 20183 20550 20551 20184 20186 7060 9101 8644 10648 10892 20552 20553 17943 15476 18058 20554 7061 9371 9512 10732 10981 20555 19478 16801 14170 20141 20140 7062 9553 9980 9600 10740 20556 20557 19042 19044 19046 20558 7063 9517 10159 9898 10387 20559 17801 20560 13303 16161 17709 7064 9270 9773 9889 10739 13452 20561 18361 13455 18365 13456 7065 9518 10095 10916 11041 20562 20563 20564 20565 20566 20567 7066 9835 10522 9619 10795 19462 20202 20568 20569 20205 20204 7067 8410 9601 10188 10999 14850 14849 12695 20570 13689 20571 7068 9708 10419 9220 10616 19382 12518 20572 15021 13066 17070 7069 8670 10809 8472 11051 20573 19368 20574 20575 19371 19370 7070 9245 10095 9883 10761 19997 12485 16644 13778 14668 18386 7071 8554 7756 9620 9912 20576 20577 14853 13939 14852 20578 7072 9775 10742 9221 10749 15001 20579 20396 19246 18910 19562 7073 9603 9977 9395 11153 13547 20580 20581 20582 20583 20584 7074 1124 183 7615 9552 1705 20585 19660 19663 19665 20586 7075 9679 10326 9223 10937 15751 20587 20588 18625 20589 18626 7076 257 255 10059 10912 2708 20501 17925 18179 18181 20590 7077 10147 10523 9341 10734 18153 20591 20592 18156 20593 18157 7078 9565 10626 9478 10681 19865 20429 20594 19834 20430 19868 7079 647 9714 714 10172 18149 20595 4574 18150 16998 15441 7080 931 9436 1527 10592 19118 11793 5698 20596 17844 17843 7081 9322 9855 10273 10646 18067 18871 18869 14032 20597 18406 7082 8314 8442 10110 10895 19952 19956 19617 19619 19621 20598 7083 9295 9915 9466 11089 20599 14247 19295 19297 12560 14249 7084 1096 10354 9954 10767 15293 20600 20601 15296 11356 15297 7085 1505 10744 1502 11177 20602 20603 2409 20604 20605 20606 7086 1178 9496 1177 10592 13617 20536 2255 13620 20607 13621 7087 9213 9913 9492 11007 11227 18147 17930 12438 20608 12864 7088 8079 10055 9609 11193 18031 18030 18029 20609 13718 20610 7089 7767 7617 8853 9828 17912 20611 20612 15634 20613 17913 7090 9835 10522 9357 10759 19462 12076 20614 13984 12806 15868 7091 327 9916 345 10160 20615 14401 3072 20616 13236 14403 7092 9412 9982 10049 10397 20617 20618 19745 19748 19749 17791 7093 9275 9478 9918 10813 13625 14761 14760 16316 20619 17919 7094 9448 10403 9548 10598 17691 12604 17690 20620 19092 19094 7095 7916 10462 8718 11157 13170 17590 17588 14681 20621 14682 7096 9731 9902 9781 10554 20622 20623 14355 15781 15783 20624 7097 8168 9645 8404 10424 11904 20625 20626 20414 20627 15367 7098 9449 9214 9921 10463 18810 13459 14142 20020 20628 20019 7099 9394 9739 9551 10247 11816 20629 12731 20630 14684 20631 7100 9715 10076 9292 10510 20632 20633 20515 20519 20518 20634 7101 288 10206 10302 10685 20635 20636 20637 20638 20639 20640 7102 8538 10472 9793 10899 20177 16757 20641 20178 20642 20179 7103 7547 7606 7600 10592 20643 20644 17581 13619 17583 20645 7104 8931 10089 10359 10728 20646 20647 20648 20649 20650 18313 7105 9577 10388 10917 11111 20651 20652 20653 20654 20655 19317 7106 9510 9829 9626 10520 20656 20657 18918 20658 20659 20660 7107 201 9525 950 10713 14152 20661 2450 20662 20663 20664 7108 9682 6966 10600 10841 20550 20183 19716 19718 19719 20665 7109 7743 9698 9542 10526 20666 20667 19783 19786 19785 20668 7110 9825 9939 9340 10612 20273 20669 16454 20275 13511 20276 7111 9243 10087 9596 10927 20670 13351 13674 13676 11417 13353 7112 1243 1509 1594 10010 6234 6192 5902 18049 11837 12792 7113 9443 9789 9330 10933 20671 20672 20524 15248 12377 20673 7114 7980 7985 10034 11018 20674 20675 13829 14789 14791 20676 7115 9456 9985 10362 11027 19539 19538 19537 20677 20678 20679 7116 9327 9909 9718 10495 20680 20681 20682 20683 14676 20684 7117 720 972 9830 10941 5037 16813 17698 17957 17027 13380 7118 9278 9940 10233 11032 20685 20686 20687 12071 20688 20689 7119 7693 9709 7644 10472 20690 16754 20691 20692 16756 16755 7120 721 666 857 10279 4728 4768 4767 18671 19218 14064 7121 285 10199 9615 10751 18763 15994 20693 20694 20695 20696 7122 9420 9926 9673 10459 15414 17320 20697 15416 17321 15417 7123 308 9910 997 10236 20698 20470 2980 20699 20469 15653 7124 9667 10134 9807 10900 20700 19845 12631 14383 14385 20701 7125 10044 10350 8515 10682 15766 20702 18628 18632 18631 20703 7126 9467 9940 9276 10016 13298 20704 20705 19291 13340 16049 7127 8449 9701 8577 10828 20706 17936 20707 20708 17934 17935 7128 9391 9948 9661 10498 14510 19110 20709 13893 19111 17635 7129 9471 8082 10190 10532 17869 17872 16574 16577 16576 18942 7130 9250 9875 9755 10754 18416 20710 13744 11392 13746 18417 7131 9428 8638 10295 11008 17656 17658 17518 20217 13797 20218 7132 8518 8517 10504 10940 20711 18879 20712 20713 18095 18881 7133 9783 9945 334 10553 20714 13070 20715 13477 13073 13075 7134 665 9433 10027 10718 16070 20716 20717 20718 20719 20720 7135 1233 585 1474 10234 4160 4365 4364 14308 14309 18498 7136 9602 10022 9418 10628 19815 20721 20722 16410 20723 19818 7137 9382 10222 10973 11090 16190 20449 16844 20724 20725 20726 7138 9588 9590 10315 10894 20727 18454 11517 17983 17982 20728 7139 9293 9757 9644 10911 20729 15967 17746 13517 15970 15972 7140 807 10193 688 10846 20730 20305 4880 20731 20308 20310 7141 10010 10392 9439 10437 12592 14679 15982 13135 16776 13136 7142 1596 1285 9548 10403 6244 12602 15831 15832 12604 12603 7143 6312 9139 6333 11096 17798 20732 6449 17800 20733 16840 7144 803 1416 10470 11074 5425 17811 20734 20735 17812 14626 7145 7975 10991 10033 11112 20736 12897 20737 20738 20739 20740 7146 9443 9330 9789 10825 20524 20672 20671 20525 20741 20285 7147 9291 9700 9582 10838 16833 20390 20742 13450 20391 12809 7148 9288 9807 9667 10134 12236 12631 12630 20743 20700 19845 7149 7536 7776 7568 9580 20744 19543 20745 20746 19544 19545 7150 7721 9675 9660 10716 20747 20748 20749 19949 20750 20751 7151 1155 9626 10408 10573 20752 20753 20754 20755 19426 20756 7152 9222 9749 9636 10091 19972 20542 20757 20758 20543 19253 7153 9747 10029 9238 10496 13704 18798 18799 12617 18537 14777 7154 9345 9590 9588 10267 19333 20727 14927 19332 19602 12571 7155 1151 1561 1562 10169 2374 5633 2212 18996 17240 16358 7156 789 9931 626 10826 20759 18214 4563 19702 19438 13522 7157 8471 10787 9788 11043 20760 20761 20762 20763 20764 20765 7158 9239 9781 9731 9902 16032 14355 16761 13871 20622 20623 7159 9748 10182 9247 10995 18085 20766 14805 18088 20767 18089 7160 9183 9793 8542 10472 18060 20768 20769 18061 20770 16757 7161 7670 7662 1543 11017 20771 19974 20772 18517 15628 19976 7162 6940 10128 6893 10694 18242 20773 7282 18243 20774 18244 7163 9250 9875 9808 11057 18416 14800 18415 20775 20776 20777 7164 9257 9864 9810 11058 18189 18188 18187 19982 20778 20779 7165 9356 9884 9815 11059 18018 13842 18017 17109 20780 11204 7166 9510 9626 10230 10520 18918 20781 20782 20658 14577 20659 7167 1156 883 9683 9925 3891 12787 18223 18221 18222 18818 7168 9431 10556 8257 10782 20133 20134 13494 19898 19897 20783 7169 9277 9906 10181 10617 14039 13668 14038 18645 16060 16059 7170 9335 9875 9755 10701 13654 20710 13280 12728 13282 18228 7171 1266 10322 9771 10731 15992 15993 15991 20784 20785 20399 7172 1463 960 10130 10807 5952 14579 11868 20786 14581 14580 7173 9659 10131 9390 10285 18663 13357 20787 18665 14222 16335 7174 546 9540 587 10222 18045 18044 3692 19808 15141 18204 7175 349 10000 9905 11140 20788 20789 20790 20791 20792 20793 7176 9124 9454 10374 11183 11453 20462 20461 16061 20794 16062 7177 7962 10452 9630 11195 20795 13761 18480 18483 18485 20796 7178 1185 10017 10505 10607 20080 20083 20084 20797 20798 20799 7179 8315 8248 9680 10591 13638 13637 12024 13442 13444 20800 7180 985 636 9550 10733 4061 15043 20801 20802 14972 14558 7181 9018 9712 9050 10260 20803 12410 20804 20805 17551 17553 7182 9016 8608 10668 11147 20806 20807 16661 16664 16666 20808 7183 9284 9654 9758 10097 20809 17989 20810 20811 17987 17988 7184 9590 9588 10267 10919 20727 19602 12571 17815 17814 20812 7185 9467 10099 9647 10233 13274 20813 20814 20373 20815 20816 7186 201 1169 950 9525 2060 2449 2450 14152 20661 14153 7187 9505 9858 6935 10610 20817 20818 18252 17563 18253 20819 7188 8866 9970 10444 11129 18740 18739 18200 20820 20821 20822 7189 9538 10147 9362 10676 18345 13201 20823 15058 13507 13506 7190 313 312 9572 9930 2963 11337 20824 20825 11540 11539 7191 9787 10067 9422 10972 19991 20826 20827 19992 20828 19993 7192 8441 9779 9431 10782 18275 18274 15998 19896 19898 20829 7193 7861 9072 7833 10315 12184 15136 20830 12186 14830 11516 7194 9895 10501 9409 10763 15495 14520 15493 15726 18856 15727 7195 585 482 10234 10651 3850 17312 18498 17192 17316 17315 7196 797 10625 9992 10806 20831 20832 20833 20834 20835 20836 7197 975 10373 9475 10537 20130 20131 18075 19340 19339 20837 7198 9487 9654 9387 10241 20838 20839 20840 13902 20841 17991 7199 9415 10280 943 10310 20300 20476 17676 20842 20843 19709 7200 9291 9457 9989 10838 18552 20844 13448 13450 12162 18554 7201 336 9976 1073 10665 12271 17371 3118 12272 20845 12273 7202 8086 8088 9690 11009 20846 20847 20848 20849 20850 20851 7203 9683 9925 9406 11144 18222 20852 20853 18225 20854 18226 7204 9156 7760 9842 10414 20855 18505 20856 20857 18509 18508 7205 8749 10176 10035 10566 20858 15887 20859 20860 16078 16085 7206 9441 9779 8536 10321 20861 20862 18335 14749 18337 20863 7207 533 10333 1246 11154 18500 20864 4104 20865 20866 20867 7208 1314 10233 748 10547 17672 20868 4811 17673 20869 17674 7209 993 9473 10409 10788 15792 19424 19422 15797 20870 15795 7210 8589 9060 8155 10300 20871 20872 18764 18344 13407 20873 7211 9880 10348 9065 10994 14041 20874 17481 17483 17482 20875 7212 1133 1135 9871 10068 6159 16281 12758 20508 14764 16280 7213 7969 9643 10181 11168 20876 20877 20878 20879 20334 20880 7214 1495 903 10136 10588 5816 14572 20881 18953 20882 20883 7215 7969 10708 9643 11168 20884 19806 20876 20879 20880 20885 7216 439 9613 10502 10909 20886 20887 19899 19902 19903 20888 7217 1359 1553 9997 10343 5859 20889 12861 16767 16768 19522 7218 9017 8425 8184 9896 20890 18126 13592 14508 12343 18127 7219 9267 10100 9522 10471 20891 15785 20892 12818 16772 16773 7220 6394 9192 7745 9560 20893 20894 17905 17908 17910 20895 7221 9752 10492 10036 11149 13832 13835 13834 15040 15042 20896 7222 9587 9679 9668 10143 20897 11501 20898 20899 11504 11506 7223 9012 9724 10768 10851 18458 13987 20900 18459 20901 18440 7224 1347 10045 1130 10274 20123 20902 6155 20124 20903 16730 7225 9521 10048 9897 10393 19302 16854 19303 14780 20904 20905 7226 9888 10254 859 10781 20906 20907 20908 20909 20910 20911 7227 6942 10155 6941 10695 14837 14074 7306 19013 20912 19014 7228 8321 8566 8260 10288 20913 20914 18237 16240 18239 20915 7229 9593 9212 10002 10819 20916 14211 19803 19804 14215 14214 7230 9394 10247 9551 10719 20630 14684 12731 12734 12736 14695 7231 8329 8270 8463 10630 11656 20917 14244 11769 14246 12151 7232 337 9905 10665 10683 20918 20919 20920 20921 20922 20923 7233 9011 10114 9022 10671 17511 20924 20925 14270 20926 17512 7234 9688 10075 9263 10536 20927 13557 20928 16477 13559 13561 7235 9700 9261 9872 10385 11244 12020 12021 20929 20930 19933 7236 9521 9251 10048 10393 19863 20127 19302 14780 20905 16487 7237 9752 9872 9261 10385 20931 12020 19934 19082 19933 20930 7238 9292 10681 9565 10932 19867 19834 19866 20932 20933 20934 7239 1392 582 630 9487 4347 4154 4348 20935 20936 20937 7240 9588 9590 9345 10315 20727 19333 14927 11517 12057 18454 7241 201 9949 9525 10713 17874 17875 14152 20662 20664 20938 7242 9581 9831 9405 10490 20207 20939 20940 20208 20941 17663 7243 8224 10025 9856 10616 15466 20241 20942 15467 20943 14907 7244 8191 8252 9701 9835 20944 20945 11379 11955 11957 20946 7245 980 9501 1573 10375 20947 17784 5987 20948 17787 17789 7246 7737 9115 7652 9560 20949 17823 20950 20951 14617 17825 7247 7670 9675 7662 11017 19126 20952 20771 18517 19976 19127 7248 986 10521 1523 11052 20953 20954 5993 20955 20956 20957 7249 9387 10097 9995 10241 13484 12921 13485 20841 14569 14568 7250 9118 8530 9399 10477 18883 19915 20526 20958 19917 19916 7251 7707 7644 7693 9709 17040 20691 20959 17039 20690 16754 7252 9182 7753 8533 9698 14655 20960 20961 14656 20962 11473 7253 9366 9833 10275 10834 15238 14407 13307 19999 20094 20093 7254 9256 9668 9587 10768 17361 20898 20963 17362 20964 17363 7255 285 1006 9615 10199 2864 16096 20693 18763 15994 16097 7256 8898 7871 9637 9687 20965 12957 20966 17142 14200 11951 7257 968 10217 9401 10338 14504 14505 14503 16922 16924 15044 7258 6976 9616 9949 10587 20967 19943 20968 20435 20969 20970 7259 8045 9744 10729 10954 20971 20972 20973 20974 20975 20976 7260 9219 10164 9640 10874 20977 16850 20978 20069 16230 16852 7261 780 1401 9654 9691 5320 20979 16288 19010 20980 20981 7262 8789 8941 9482 10214 20982 20983 20984 20985 20986 20987 7263 8654 10016 8409 10605 20988 16048 20989 20990 16050 16052 7264 6353 10175 10154 10531 20991 20992 20993 20994 20995 17276 7265 8474 9972 9065 10994 20996 17479 20997 20998 17482 17484 7266 404 9979 1321 10737 20999 12097 3460 18303 16377 14964 7267 10233 10523 9467 10547 17671 20374 20373 17674 21000 17675 7268 1505 9830 10011 11177 21001 18078 21002 20604 21003 17700 7269 1403 9748 10381 10995 18086 21004 21005 18087 21006 18088 7270 9521 10136 903 10588 14778 14572 14779 15752 20883 20882 7271 9324 9685 10358 11099 21007 21008 11930 16829 15288 21009 7272 9541 10286 10117 10609 19685 19686 13978 21010 21011 21012 7273 9231 10434 9908 10852 21013 16808 13542 13546 13545 18618 7274 7579 9549 7596 10402 21014 16654 21015 18947 16286 15545 7275 9897 10048 8505 10936 16854 21016 20154 20156 20155 21017 7276 8532 9403 9806 10347 16920 17157 17680 18041 11456 18042 7277 9412 9796 9982 10397 19747 18366 20617 19748 17791 18160 7278 8860 9739 8690 10282 18657 13631 21018 18659 13634 13636 7279 1485 9579 10352 10949 21019 21020 21021 21022 20100 21023 7280 1232 6348 9574 10855 21024 21025 21026 21027 21028 21029 7281 335 9945 9783 10665 20349 20714 21030 20351 14441 20350 7282 9649 9932 896 10739 15097 15096 15098 15959 21031 15695 7283 9340 10612 9837 10987 13511 15945 14976 15680 17171 17365 7284 9981 9990 9820 10368 21032 15320 21033 21034 15758 17185 7285 6330 6301 194 9562 6669 19810 21035 21036 19814 19813 7286 1485 10352 9579 11036 21021 21020 21019 21037 21038 21039 7287 9995 10359 8183 10437 17829 17729 17828 16911 21040 21041 7288 9267 9522 10100 10405 20892 15785 20891 21042 15789 15788 7289 9663 10240 9295 10445 21043 19296 21044 14361 12908 20538 7290 6967 10102 6964 10600 19164 19494 7451 21045 19496 15721 7291 8240 10348 9633 11070 21046 21047 16167 16169 16168 21048 7292 6925 6934 9858 10562 7349 21049 19410 19209 19412 21050 7293 9385 10042 10457 10923 21051 21052 14998 21053 21054 11234 7294 10219 10703 9312 10817 18266 21055 21056 18269 21057 18270 7295 1003 10054 10700 11012 21058 21059 21060 21061 21062 21063 7296 10463 10922 9214 11117 20021 18813 20019 21064 21065 21066 7297 9718 9909 9463 10495 20681 21067 13998 14676 14675 20684 7298 9211 9708 9472 10769 17772 21068 21069 17328 17397 17773 7299 861 10275 9833 10676 21070 14407 21071 21072 21073 12309 7300 9518 9577 10388 10917 21074 20651 21075 21076 20652 20653 7301 1505 10011 10744 11177 21002 21077 20602 20604 20606 21003 7302 9519 10389 9899 10436 15581 18399 21078 21079 18400 18402 7303 7962 8605 8953 9630 21080 21081 18482 18480 18481 19502 7304 7946 9796 7931 10527 12202 16637 16636 12502 21082 12503 7305 9928 9965 9274 10651 17993 15038 16581 17314 19403 19833 7306 8157 8194 8193 10468 21083 19273 13487 13489 13491 19275 7307 10467 10487 9509 11087 21084 21085 21086 21087 21088 21089 7308 8074 8965 10264 10493 21090 18277 18842 14537 18280 18279 7309 9165 8760 8453 10645 20370 21091 21092 19772 21093 20371 7310 8387 10037 10341 11186 21094 21095 18651 18654 18656 21096 7311 9325 9737 9888 10432 21097 21098 21099 21100 21101 21102 7312 9403 932 10473 11143 16915 20510 20511 21103 21104 21105 7313 1003 10054 9650 10700 21058 21106 21107 21060 21108 21059 7314 893 1364 10250 10799 5780 17969 21109 21110 17970 15323 7315 9538 10676 9362 11028 15058 13507 20823 21111 12919 21112 7316 1338 1185 10505 10607 3987 20084 21113 21114 20798 20797 7317 9705 9710 1363 10735 12416 20190 18561 18563 18562 21115 7318 9228 9487 10359 10613 21116 19272 18922 18923 18924 15481 7319 7579 9549 10402 10423 21014 15545 18947 18950 18952 21117 7320 9309 9820 9981 9990 21118 21033 21119 21120 21032 15320 7321 9653 10108 9270 10878 16893 21121 21122 16224 20072 16894 7322 295 10206 9526 10302 21123 21124 18062 18063 17954 20636 7323 259 9918 10059 10394 17923 17926 17927 21125 16301 14762 7324 844 712 665 10712 4762 4758 4763 21126 16949 16948 7325 9770 10432 9349 10711 19861 12488 21127 15249 12265 16540 7326 8749 8004 10035 10176 21128 19417 20859 20858 15887 18536 7327 8958 10662 9765 10974 21129 15083 17413 17416 17418 21130 7328 520 9484 10049 11075 20483 21131 21132 21133 21134 21135 7329 6964 10600 9676 10781 19496 19497 19495 20185 21136 20186 7330 9868 10496 10040 10944 13464 15266 15009 15013 15012 21137 7331 329 10273 9671 10553 13165 21138 21139 13166 21140 13074 7332 9257 9859 10419 10535 16927 11439 21141 19981 21142 21143 7333 10320 10441 365 10915 15710 15899 15898 16380 16379 21144 7334 9209 9961 10022 10628 12636 20384 15696 19817 19818 16277 7335 1369 1405 746 9822 5162 5161 3686 17725 21145 14532 7336 9431 10519 9952 10901 13496 21146 12776 12777 12358 21147 7337 9326 9758 10809 11051 14965 19369 21148 21149 19370 18287 7338 176 6328 6295 9558 21150 6663 19640 19644 19643 21151 7339 7721 7661 7730 10716 19948 21152 21153 19949 21154 19950 7340 9856 10025 9244 10448 20241 21155 21156 20243 21157 19390 7341 311 10389 9623 10858 18796 18797 18795 21158 21159 18875 7342 337 10665 9493 10683 20920 21160 21161 20921 16414 20922 7343 6976 9969 9616 10587 20434 21162 20967 20435 20970 16827 7344 9543 9913 9294 10603 14314 21163 21164 14317 21165 14318 7345 9129 8531 10413 11153 21166 21167 21168 21169 21170 20480 7346 9066 9921 9036 10745 13457 20457 21171 12421 20459 17419 7347 8470 8469 9758 10241 21172 19797 21173 21174 17990 19798 7348 9295 9466 9915 10445 19295 14247 20599 12908 21175 15930 7349 9276 9467 10016 10547 20705 19291 13340 11880 13342 21000 7350 1370 9610 523 9799 21176 17057 3666 21177 17495 17496 7351 10006 10487 10467 11087 21178 21084 21179 18007 21087 21089 7352 9253 10215 9633 11070 18584 16165 21180 18585 16168 15950 7353 9257 9973 9859 10535 16930 16931 16927 19981 21143 17119 7354 8336 8287 10387 10787 21181 17132 21182 21183 17136 17135 7355 7543 9511 206 10686 17471 16171 17470 21184 21185 21186 7356 9493 10665 9905 10683 21160 20919 21187 16414 20923 20922 7357 1212 9441 936 10376 18702 18701 5927 21188 21189 21190 7358 9752 10034 9291 11018 13828 21191 21192 14790 21193 14791 7359 256 9973 9472 10211 19945 19944 17196 17198 17200 21194 7360 8432 10495 9463 10582 14674 14675 14673 21195 21196 21197 7361 7843 7842 10181 10617 17023 17022 13669 16058 16060 21198 7362 6893 10128 6940 10648 20773 18242 7282 21199 19231 19233 7363 7689 10382 9542 10896 20548 21200 21201 20505 21202 20549 7364 9304 10088 9598 10238 13160 14979 21203 13163 14981 13164 7365 1088 10755 9977 11079 19077 19078 19076 21204 21205 21206 7366 9874 10219 9312 10670 18322 21056 21207 18612 21208 18611 7367 9228 10089 9506 10359 18834 18833 18832 18922 18109 20647 7368 9351 9861 10209 10910 19095 18420 15173 21209 18424 18423 7369 9105 8491 9092 9488 21210 20171 13982 12051 13824 20170 7370 9600 9980 9553 10250 20557 20556 19042 21211 21212 21213 7371 9094 8645 10128 11086 21214 21215 19761 20120 20122 21216 7372 9477 10024 8888 10564 21217 18472 21218 21219 18474 18473 7373 10107 10600 6917 10841 15813 21220 21221 18426 21222 19719 7374 9554 9842 6345 10414 21223 20340 21224 21225 20341 18509 7375 9705 10433 9460 10557 17278 14987 21226 17280 14991 14990 7376 6945 9514 10205 11099 21227 21228 21229 21230 15289 21231 7377 9552 10226 1516 10380 19870 21232 21233 21234 21235 19049 7378 9468 9362 10676 11028 21236 13507 12310 16987 21112 12919 7379 1007 1411 10071 10285 4319 12705 21237 20342 14251 13916 7380 8789 9482 9966 10214 20984 21238 21239 20985 21240 20986 7381 840 1146 10366 10901 4721 19473 15250 12356 15252 19474 7382 8900 7830 7864 10540 21241 12239 18742 18744 13177 13176 7383 9261 9872 10481 10859 12020 21242 20401 18442 21243 12645 7384 7659 7707 7692 9709 21244 21245 18377 16403 18334 17039 7385 8937 9464 10037 10298 12405 21246 21247 15484 21248 15485 7386 9291 10034 9752 10492 21191 13828 21192 17796 13832 13831 7387 6378 9617 6363 10277 21249 17217 6693 21250 17215 17216 7388 7822 10308 7883 11169 18678 21251 21252 21253 21254 21255 7389 932 9996 9403 10423 21256 21257 16915 17857 17767 21258 7390 9961 10015 9481 10579 17329 21259 20279 18451 20280 18452 7391 9336 9903 9669 10966 16269 21260 21261 16270 21262 14738 7392 9441 10366 936 10376 18666 19552 18701 21190 21189 21263 7393 9759 9814 9293 11040 13988 13516 13989 21264 14911 21265 7394 6976 6977 6894 10587 7289 7203 7287 20435 17623 20232 7395 9165 9635 8760 10230 19770 16953 20370 19771 16951 16952 7396 1308 9810 10146 11117 21266 21267 21268 21269 17570 21270 7397 9447 10051 1028 11019 16739 16740 16717 18898 18897 18479 7398 9415 10085 9187 10714 15200 16389 16386 19969 19968 21271 7399 854 9451 1526 10509 15809 19405 5644 15810 21272 15811 7400 7991 10035 9968 10604 16264 12949 14774 14775 11260 13909 7401 10292 10502 9613 10909 19900 20887 21273 15694 20888 19903 7402 9114 10418 10258 10598 15538 16899 14792 21274 21275 14698 7403 9325 10383 9770 10558 21276 15614 21277 21278 21279 21280 7404 7558 7592 7752 9734 21281 14560 21282 21283 14561 14562 7405 9466 10240 9663 10445 12557 21043 15931 15930 14361 20538 7406 9321 9718 9463 10946 13999 13998 13707 19228 21284 20086 7407 7900 7908 9994 10545 21285 21286 12681 18549 18551 21287 7408 8264 10362 9985 11027 21288 19538 21289 21290 20679 20678 7409 285 9615 1006 10751 20693 16096 2864 20694 21291 20695 7410 7947 10527 9898 10902 21292 21293 19703 19706 19708 21294 7411 8670 10157 10809 11051 21295 21296 20573 20575 19370 21297 7412 9474 9657 10830 10946 19226 17500 15743 19229 21298 19230 7413 8607 10114 9713 10671 21299 21300 21301 21302 20294 17512 7414 375 10569 9986 11042 21303 17089 16633 16634 15505 21304 7415 6985 6959 6911 10687 7374 7373 7375 19792 19087 17527 7416 8424 8646 8304 11113 20008 17538 21305 20009 17539 16366 7417 209 1441 10255 10608 2482 16086 21306 21307 16087 14728 7418 9443 10825 9556 10933 20525 20284 21308 15248 20287 20288 7419 6991 1511 10562 10686 21309 21310 21311 21312 21313 21314 7420 9211 10460 9841 10769 19623 20089 17327 17328 13586 19461 7421 7946 9712 10527 10902 12199 12504 12502 21315 21294 12414 7422 1234 10236 10307 10705 21316 21317 20282 20283 19756 21318 7423 7889 10084 7881 10843 21319 15690 21320 21321 16018 16020 7424 9409 9906 9895 10617 21322 20295 15493 15361 18644 16059 7425 8526 8525 9480 10680 16777 16747 13191 19958 19960 21323 7426 8930 9583 8485 10490 13060 19054 19053 11825 21324 13846 7427 1232 182 6299 10855 1983 21325 21326 21027 21327 21328 7428 9518 10388 10095 11041 21075 21329 20562 20565 20567 21330 7429 9305 9869 9809 10666 17204 17976 21331 21332 17980 17979 7430 6353 10154 10175 10524 20993 20992 20991 21333 21334 17031 7431 9247 9748 10381 10819 14805 21004 16108 14806 16110 14213 7432 9390 9704 9984 10941 14711 21335 16895 21336 13947 21337 7433 7671 9560 7652 10189 21338 14617 21339 21340 14621 14620 7434 1054 10206 10122 10853 21341 16963 14292 12456 15846 21342 7435 9266 9884 9815 10673 13841 13842 12242 13258 18021 18020 7436 6976 9949 6977 10587 20968 21343 7289 20435 20232 20969 7437 1008 9425 10071 10324 17009 20452 20451 17627 21344 14461 7438 9218 10695 10352 10949 21345 20096 21346 21347 20100 20099 7439 9517 10160 355 10257 21348 21349 21350 18488 21351 16057 7440 9584 10400 9452 11003 21352 21353 21354 21355 21356 21357 7441 9638 9814 9293 10911 15434 13516 21358 15435 13517 13470 7442 9455 10973 10222 11090 20448 20449 20447 11898 20726 20725 7443 9396 10680 10026 10862 21359 20223 21360 21361 20226 20228 7444 8549 10253 8550 10702 21362 19635 21363 21364 19638 19639 7445 9468 9941 10275 10834 15258 21365 11878 20092 20094 21366 7446 692 1306 1305 9683 4899 4901 4873 12432 15261 17229 7447 995 1463 953 9684 5955 5953 5954 17231 14334 11866 7448 8458 8267 10446 10732 21367 21368 21369 21370 18986 16726 7449 1495 10588 10136 10943 18953 20882 20881 18990 21371 16939 7450 7965 9585 9039 11097 19877 16890 19875 21372 19177 19179 7451 8045 10729 10149 10954 20973 15916 21373 20974 21374 20975 7452 8298 8495 8640 10083 20464 11728 21375 20465 12984 12983 7453 9257 10181 9859 10415 19146 20330 16927 17271 17273 19147 7454 1246 10333 9893 11154 20864 19311 21376 20866 21377 20867 7455 1034 10177 9705 10433 13067 16572 11578 21378 17278 21379 7456 9300 9864 9810 10708 16478 18188 21380 21381 18192 18191 7457 9548 10418 9734 10598 15913 14564 15911 19092 14696 14698 7458 10040 10496 9224 10944 15266 17692 21382 15012 21383 21137 7459 9838 10394 9280 10986 20210 16681 17168 17169 15055 16683 7460 7812 10358 9685 11099 18118 21008 21384 18120 21009 15288 7461 537 535 10198 10822 4112 19615 21385 21386 19614 19599 7462 9347 10083 9725 10634 12985 21387 13808 13812 13811 21388 7463 362 1079 9719 11044 3249 21389 21390 21391 21392 21393 7464 9793 10472 9481 10899 16757 20176 21394 20642 20180 20179 7465 9334 10481 9872 10859 21395 21242 15463 15464 12645 21243 7466 9526 10369 9313 10699 17956 12117 21396 21397 21398 21399 7467 9500 10369 9526 10699 21400 17956 20379 14118 21397 21399 7468 9498 9707 9706 10314 21401 12467 21402 12671 12470 12472 7469 8554 8553 8552 9912 20233 19648 21403 13939 19649 19056 7470 9621 9492 10390 11016 17928 18934 18935 17933 19132 17931 7471 9297 9875 9808 10754 15456 14800 15457 21404 18418 18417 7472 1306 9683 692 10129 17229 12432 4899 17230 12430 12431 7473 1463 9684 995 10130 11866 17231 5955 11868 17232 11867 7474 9370 9817 9889 10739 21405 18362 21406 12981 18365 18364 7475 7889 8657 7881 10084 21407 15688 21320 21319 15690 15689 7476 9209 10152 9961 10628 13538 13539 12636 19817 16277 16279 7477 9850 10125 9290 10635 11276 17997 19276 21408 21409 21410 7478 9366 10337 9692 10533 19998 16849 14014 15315 13774 19286 7479 9499 10671 9615 10751 21411 21412 21413 21414 20695 21415 7480 9487 9387 9995 10241 20840 13485 21416 13902 14569 20841 7481 8665 8981 8668 10474 21417 17854 17985 17986 15552 17855 7482 681 679 680 10195 4832 4827 4833 14930 21418 17151 7483 9217 9653 9818 10890 21419 18642 14484 14486 14344 18643 7484 8792 7862 10263 10813 21420 13230 21421 21422 19940 19939 7485 8530 9168 9196 10643 21423 21424 18884 18886 18885 21425 7486 6903 9620 7756 9912 21426 20577 21427 21428 20578 14852 7487 8086 8088 8785 9690 20846 21429 21430 20848 18754 20847 7488 8895 8656 8936 9688 21431 21432 21433 21434 21435 21436 7489 9314 10801 9674 10886 21437 20238 19560 13042 17764 20240 7490 9705 9457 10264 10493 21438 18843 19504 19506 18280 14536 7491 9456 10043 10028 10893 21439 21440 12328 13613 13615 21441 7492 8863 9749 10091 11084 17334 19253 19252 21442 20545 20544 7493 9304 10407 9800 11045 17098 17865 17999 13349 21443 20110 7494 9238 10043 9456 10893 11425 21439 21444 18800 13613 21441 7495 9175 8454 9138 10067 21445 14155 13288 13289 11402 14156 7496 8429 8432 9718 10946 20529 14672 20531 21446 20086 21447 7497 677 10195 9721 10898 21448 14929 21449 21450 21451 21452 7498 677 678 10195 10898 4817 21453 21448 21450 21452 21454 7499 8785 8110 9937 11033 21455 21456 18850 18757 18852 21457 7500 307 10200 10053 10827 12988 15667 13155 21458 18572 21459 7501 10030 10362 9456 10580 18264 19537 20489 21460 15527 19541 7502 988 10917 10388 11111 21461 20652 21462 21463 19317 20655 7503 1011 9993 789 10151 21464 21465 5362 21466 19701 21467 7504 474 9581 383 10569 20026 20025 3344 21468 21469 21470 7505 9523 10735 9457 10838 21471 21472 19322 19323 18554 21473 7506 8569 10571 9627 10870 18382 19819 21474 18668 19821 18524 7507 9510 10230 9626 10645 20782 20781 18918 21475 21476 19773 7508 9787 9917 9422 10067 21477 21478 20827 19991 20826 15674 7509 1151 10169 6351 10175 18996 17339 21479 18997 17342 16362 7510 8028 10703 8993 10817 21480 18265 21481 21482 18268 18270 7511 1168 7709 200 10518 16145 21483 1786 15386 21484 16146 7512 8583 9428 9938 11008 18168 21485 21486 20216 21487 20217 7513 8419 9708 8300 10616 21488 15017 21489 21490 14906 15021 7514 8469 8379 9758 10097 21491 18286 19797 19796 17987 20146 7515 9264 10084 9881 10904 19741 15691 19742 21492 16643 16642 7516 839 9431 840 10366 16721 12775 4719 19404 15250 15251 7517 7959 8671 9689 10652 21493 19446 21494 21495 19448 19447 7518 9329 9646 9813 10913 21496 21497 14542 14545 14547 21498 7519 9657 9727 9474 10830 17499 15223 19226 17500 15743 15176 7520 9385 10042 9609 10457 21051 21499 13714 14998 14997 21052 7521 8128 8690 8126 10522 15760 21500 21501 15761 21502 13861 7522 362 9719 10635 11044 21390 15337 21503 21391 21504 21392 7523 681 10195 680 10939 14930 21418 4833 14893 21505 14931 7524 9260 9681 9461 9988 16008 16007 15884 18218 21506 21507 7525 8485 10064 8943 10490 21508 21509 21510 21324 21511 21512 7526 1347 10274 1344 11066 20124 18964 5299 20125 18967 18969 7527 8319 10224 9439 10437 14983 14984 14205 16774 16776 21513 7528 1179 1177 10201 10717 6186 20537 21514 21515 18708 21516 7529 832 9888 9737 11108 21517 21098 21518 21519 21520 21521 7530 9982 10066 8122 10522 19256 19255 19257 15988 21522 13863 7531 9630 10098 8464 10811 13759 13758 13760 21523 21524 21525 7532 9312 10219 9756 10703 21056 19534 21526 21055 19536 18266 7533 415 413 9903 10636 3503 14390 21527 21528 14812 14811 7534 8159 8071 10078 10639 21529 15303 21530 21531 15307 15306 7535 1306 1286 9683 10274 5277 19016 17229 17595 13815 20367 7536 1526 9451 10475 10509 19405 19409 19407 21272 21532 15811 7537 9868 9224 10496 10944 21533 17692 13464 15013 21137 21383 7538 455 9981 10497 11105 21534 14975 21535 21536 21537 21538 7539 9073 9438 10457 10816 19712 20303 20302 21539 21540 21541 7540 8917 10078 9467 10099 21542 21543 13271 13275 13274 21544 7541 8288 9944 9637 10754 13576 13575 13574 21545 12959 21546 7542 1369 10008 9822 10478 17726 14535 17725 21547 21548 19224 7543 8863 10091 8914 11084 19252 21549 21550 21442 21551 20545 7544 7689 9542 9698 10896 21201 20667 21552 20505 21553 21202 7545 1120 9679 1340 10143 13642 15750 3810 13643 15401 11506 7546 279 10210 9767 10751 21554 16965 21555 21556 21557 21558 7547 326 9486 1386 10672 21559 21560 3036 21561 21562 21563 7548 8910 8094 9781 10554 21564 14354 21565 21566 15783 15782 7549 1041 10352 9702 10695 20095 17021 21567 20097 21568 20096 7550 9432 10376 1446 10736 19038 19039 19037 20251 20250 21569 7551 869 9436 931 10482 13424 19118 4995 21570 21571 21572 7552 9007 10105 8047 10677 21573 13082 21574 21575 14201 14203 7553 8345 8765 9010 10108 21576 21577 14752 14751 13315 21578 7554 8146 8084 8902 10532 17356 21579 12233 13209 13211 17358 7555 9758 10355 9326 10809 14797 14966 14965 19369 21148 20031 7556 8461 8939 8982 10102 16527 21580 13053 13056 13058 16528 7557 1560 915 10175 10531 5864 17275 21581 21582 17276 14499 7558 8536 9441 8815 10574 18335 17080 18703 21583 21584 21585 7559 179 1148 7668 9614 1818 21586 21587 21588 21589 21590 7560 611 9866 10764 11078 21591 21592 21593 21594 21595 21596 7561 332 328 342 10553 3078 3080 3079 11807 11890 19107 7562 8589 10300 9537 11132 18344 18343 15269 21597 21598 21599 7563 8437 9094 8645 10128 19763 21214 21600 19762 21215 19761 7564 9436 10413 8531 11153 21601 21167 19658 18775 20480 21170 7565 1235 10068 9681 10596 14017 21602 21603 14018 16276 14019 7566 604 10134 9636 10158 16425 12042 16424 21604 20106 20108 7567 9510 9626 9416 10645 18918 12476 18919 21475 18762 21476 7568 9134 8481 8537 10404 21605 21606 21607 21608 21609 21610 7569 8485 9583 10064 10490 19054 21611 21508 21324 21512 13846 7570 9950 10302 9586 10685 21612 21613 19061 19062 18608 20639 7571 10077 10274 9265 11066 18965 19196 21614 18968 21615 18969 7572 164 7547 1178 10592 21616 13618 1657 21617 13620 13619 7573 8221 9856 10025 10977 21618 20241 21619 21620 21621 21622 7574 1051 10071 9424 10324 15036 17444 16343 21623 13912 21344 7575 6329 9677 9558 10375 21624 21625 21626 21627 21628 21629 7576 9584 10474 9963 10597 19847 19846 19848 21630 21631 16155 7577 9633 10215 9443 10933 16165 21632 15247 14593 15248 16476 7578 7799 10477 9964 10609 18546 18547 18545 21633 21634 21635 7579 7657 7743 7689 9542 19782 21636 21637 19596 21201 19783 7580 1011 9993 10151 10953 21464 21467 21466 21638 21639 21640 7581 233 10211 10460 10550 21641 17462 21642 21643 21644 21645 7582 332 342 359 9694 3079 3100 3099 11806 21646 12198 7583 7959 7939 8671 10652 21647 21648 21493 21495 19447 21649 7584 9412 9504 10236 10269 21650 21651 21652 21653 21654 16667 7585 986 10370 9428 11052 21655 21656 21657 20955 21658 21659 7586 9963 10474 9445 10597 19846 15554 14233 21631 15498 16155 7587 8825 7762 6306 9592 21660 21661 21662 21663 21664 17441 7588 10001 8922 10756 11126 21665 21666 21667 21668 21669 21670 7589 7621 10401 7631 10555 19652 21671 21672 19653 21673 16609 7590 9372 9525 10161 10713 21674 21675 14085 21676 21677 20664 7591 9037 10328 9569 10406 21678 21679 21680 21681 21682 21683 7592 9487 10613 9228 11093 15481 18923 21116 21684 19102 19104 7593 751 9829 750 10864 21685 21686 5172 21687 21688 21689 7594 9583 9979 9232 10090 21690 15165 21691 13063 12885 21692 7595 676 10233 9647 10898 21693 20815 21694 21695 21696 21697 7596 411 9963 9803 10678 21698 21699 20290 20291 16684 15601 7597 364 9556 1434 10501 16250 19435 3258 19453 21700 19454 7598 1531 9442 10376 10653 17103 21701 21702 21703 21704 21705 7599 596 537 597 10822 4115 4123 4122 12317 12319 21386 7600 9007 8408 10105 10677 21706 14055 21573 21575 14203 14732 7601 8658 10207 8204 10957 18729 20314 21707 19318 20316 19319 7602 868 9691 9977 11124 21708 21709 21710 21711 21712 21713 7603 6293 1187 9507 10384 21714 21715 21716 21717 21718 21719 7604 9285 9918 9478 10813 12888 14761 21720 21721 17919 20619 7605 474 1340 1337 10485 3809 3811 3356 20027 21722 14491 7606 9827 10591 9386 10740 18389 21723 21724 19927 19045 19928 7607 7689 9698 7691 10896 21552 21725 20502 20505 20507 21553 7608 6935 9858 9505 10356 20818 20817 18252 21726 11580 21727 7609 8915 8176 10187 11022 21728 19909 21729 21730 19910 19393 7610 986 9428 10521 11052 21657 21731 20953 20955 20957 21658 7611 9215 9520 10406 10892 16646 21732 21733 16650 21734 16648 7612 9438 10457 10042 10923 20303 21052 11229 11232 11234 21054 7613 785 827 10070 10541 5342 15469 21735 16946 15490 12529 7614 666 1316 1424 10655 4314 4771 4770 14195 21736 21737 7615 790 792 1316 10655 5364 5367 5366 19152 21737 21738 7616 9213 9578 9521 10047 21739 19692 16199 11873 15753 21740 7617 295 288 10206 10302 2878 20635 21123 18063 20636 20637 7618 656 839 824 10310 4718 4717 4355 15346 17585 16722 7619 9684 10130 9537 10229 11867 21741 21742 13361 21743 15189 7620 6293 9507 1187 10531 21716 21715 21714 21744 21745 16248 7621 8449 10682 9701 10828 21746 21747 20706 20708 17935 21748 7622 282 1492 1494 9695 2847 2851 2850 11310 16935 11522 7623 9045 8488 8660 9696 21749 21750 11211 11214 11216 21751 7624 9583 10090 9232 10490 13063 12885 21691 13846 11826 13847 7625 9690 11009 8088 11110 20850 20851 20847 21752 21753 21754 7626 9957 10104 427 10794 21755 21756 21757 21758 21759 21760 7627 9846 9958 9509 10487 14867 21761 21762 15673 21085 11514 7628 1013 10096 1002 11012 21763 21764 3527 21765 21766 21767 7629 8672 9024 10056 10646 21768 14816 21769 21770 15190 14031 7630 9845 10020 9234 10479 21771 21772 12065 21773 21774 21775 7631 1048 246 10507 10614 2670 14524 21776 21777 18767 18766 7632 537 1265 10027 10198 4125 21778 21779 21385 21780 21781 7633 1130 10274 10045 11144 20903 16730 20902 21782 16733 16735 7634 9321 9463 10075 10946 13707 21783 21784 19228 21785 21284 7635 6396 9560 6390 10688 21786 18023 6754 21787 19683 19682 7636 9287 10079 9878 10752 19571 21788 18446 18448 17507 19572 7637 397 10606 9754 10928 21789 17281 21790 21791 21792 21793 7638 520 10049 9484 10240 21132 21131 20483 20481 20482 21794 7639 9386 10341 9827 10740 21795 18652 21724 19045 19927 20262 7640 8193 8192 10023 10471 21796 21797 11326 11329 11331 21798 7641 9743 10135 9236 10938 16431 21799 16089 16831 21800 16832 7642 1509 1179 10201 10717 6189 21514 15977 18707 18708 21515 7643 10057 10243 9235 10762 19160 16992 21801 19162 16557 16994 7644 7980 7986 7985 11018 19204 21802 20674 14789 20676 19205 7645 9341 10078 10605 10988 21803 18752 21804 21805 18753 18413 7646 752 751 750 10864 5176 5172 5177 11292 21688 21687 7647 7730 9675 7721 10716 21806 20747 21153 21154 19949 20751 7648 9081 9135 10472 10668 21807 21808 21809 20049 21810 21811 7649 8191 8252 8263 9701 20944 21812 11376 11379 11381 20945 7650 9391 10444 9970 11129 18785 18739 18786 21813 20822 20821 7651 462 464 554 10229 3747 3750 3749 17864 12464 13249 7652 7883 10308 9878 11169 21251 17895 21814 21254 21815 21255 7653 8999 10304 9708 10419 11437 21816 21817 11440 19382 11441 7654 8517 10504 9660 11166 18879 18091 18880 21818 21819 21820 7655 9030 8540 10022 11081 21821 15697 21822 21823 15698 13049 7656 1073 9976 9493 10665 17371 17403 17485 20845 21160 12273 7657 9485 10478 10104 10670 21824 19193 21825 21826 19377 19379 7658 7595 7621 9828 9907 21827 19650 15633 15637 15636 20474 7659 6966 6917 10600 10841 7403 21220 20183 20665 19719 21222 7660 8182 8261 9995 10437 21828 16910 21829 21830 16911 16775 7661 9312 9874 9756 10219 21207 19630 21526 21056 19534 18322 7662 9670 10294 9792 10295 21831 18578 19793 19795 13794 19150 7663 6943 10205 9514 10255 21832 21228 21833 21834 17974 15873 7664 9287 9816 9652 10583 15214 21835 21836 15235 21837 15236 7665 10072 10310 935 10366 17222 21838 21839 17225 21840 17226 7666 9438 843 10380 10810 14858 19828 19829 21841 21842 21843 7667 9507 10065 9632 11088 17703 19343 21844 17704 19344 17178 7668 9903 10636 9669 10966 14812 21845 21260 14738 21262 21846 7669 9391 9494 9948 10842 19518 21847 14510 19519 21848 19520 7670 339 9905 337 10683 21849 20918 3123 21850 20921 20923 7671 7898 10270 9922 10815 21851 21852 21853 21854 21855 21856 7672 10286 10477 8530 10609 19918 19916 19914 21012 21857 21635 7673 8152 8050 9735 10890 21858 21859 21860 21861 21862 21863 7674 8007 8004 10176 10360 21864 18536 21865 21866 14644 16980 7675 1271 6291 6347 9554 19263 6642 21867 19265 21868 19266 7676 9305 9751 9791 10811 21869 13429 21870 17205 21871 21872 7677 6396 6390 6317 10688 6754 6432 6825 21787 20326 19683 7678 380 382 10433 10569 3337 21873 14988 16205 16207 21874 7679 8719 10304 7857 10464 21875 11496 21876 21877 11821 11823 7680 674 9647 676 10233 21878 21694 4802 21879 21693 20815 7681 9213 10228 9947 11016 20035 17749 20034 17932 18104 18106 7682 693 10077 10129 10960 21880 21881 21882 21883 21884 21885 7683 1042 10439 9403 10473 17083 17084 16914 20512 20511 21886 7684 426 10008 1190 10478 18602 21887 3570 19192 21888 19224 7685 9807 10134 9237 10900 19845 12040 19843 14385 21889 20701 7686 9375 10110 9488 10150 11916 12877 20491 13964 15890 13963 7687 9499 9713 9615 10671 21890 21891 21413 21411 21412 20294 7688 8999 7857 8719 10304 11494 21876 21892 11437 21875 11496 7689 9502 10525 9203 10793 17526 13727 17524 21893 21894 21895 7690 855 9451 854 10312 19406 15809 5308 21896 15924 15923 7691 1079 10173 9719 11044 21897 18101 21389 21393 21392 21898 7692 9374 10618 9818 10713 13563 20143 21899 13566 20145 13567 7693 7656 168 9709 10948 19282 16835 21900 19283 18359 18358 7694 807 10017 10193 10846 21901 21902 20730 20731 20310 21903 7695 9384 9520 10086 10892 20539 16647 13285 16312 16649 16648 7696 10053 10200 9364 10827 15667 12989 13154 18572 21904 21459 7697 9407 10100 9522 10824 16770 15785 16771 21905 17610 17612 7698 7609 9832 1507 10201 21906 21907 21908 21909 21910 18132 7699 8973 9821 8363 9943 14120 12584 14119 17182 21911 17181 7700 1204 389 1105 9700 3365 3384 3386 11243 11245 14103 7701 8323 8606 10041 10968 13729 13601 13728 18534 18533 21912 7702 521 9484 520 11075 21913 20483 3157 21914 21133 21135 7703 8425 9951 8184 10906 21915 12612 18126 18128 12346 12614 7704 9654 9691 1401 11124 20980 20981 20979 21916 21917 21713 7705 9928 10532 9288 11150 16583 13210 21918 21919 21920 21921 7706 9433 10026 8266 10611 21922 21923 20058 20060 20059 21924 7707 9768 9804 9302 10844 14174 14114 15523 18569 18307 18570 7708 9325 9888 9770 10432 21099 21925 21277 21100 19861 21101 7709 233 10460 10256 10550 21642 19624 21926 21643 21927 21644 7710 8563 7758 10074 10841 21928 21929 17407 18425 18427 21930 7711 8789 9966 9482 10963 21239 21238 20984 21931 21932 21933 7712 9313 10336 9526 10699 21934 20380 21396 21398 21397 14117 7713 9302 9785 9568 10994 17831 17830 17832 18604 21935 21936 7714 8028 8993 10219 10817 21481 18267 21937 21482 18269 18268 7715 8081 8079 8080 10190 18862 21938 21939 18863 13225 18032 7716 9822 9927 449 10873 21940 21941 21942 21943 21944 21945 7717 8074 10034 9457 10264 14134 14133 11548 18842 18843 16095 7718 7981 9460 10033 10264 12323 12224 11959 14824 16094 14825 7719 8874 8870 10680 10862 21946 20224 21947 21948 20228 20227 7720 1230 10330 685 11188 21949 21950 4862 21951 21952 21953 7721 9712 10260 9018 10445 17553 20805 20803 17305 21954 18902 7722 1300 10450 10111 10919 16622 16623 16251 21955 21956 21957 7723 10207 10576 9361 10957 18731 21958 21959 19319 21960 19320 7724 9456 10362 10030 11027 19537 18264 20489 20677 21961 20678 7725 9619 9835 9440 10522 20568 21962 20201 20202 13862 19462 7726 9234 9588 10642 11130 18212 15521 19485 18213 15522 14434 7727 6363 6378 6290 9617 6693 6690 6691 17217 18733 21249 7728 9524 10519 9431 10901 21963 13496 19050 17384 12777 21147 7729 9333 9493 9976 10665 21964 17403 12270 12274 12273 21160 7730 265 10032 9458 10320 20319 20318 15707 15705 15706 16219 7731 10303 10413 7792 10935 18511 21965 21966 18513 21967 15921 7732 8609 10590 9933 10668 21968 17888 21969 21970 17891 17893 7733 9323 9668 9587 9679 11801 20898 21971 11803 20897 11501 7734 9714 9931 9386 10820 15135 21972 15973 15444 15975 18217 7735 1302 10005 452 10196 15352 21973 3541 21974 21975 21976 7736 9353 10788 9647 10917 21977 16210 21978 21979 16213 16215 7737 1568 9399 10585 10725 19524 16342 19525 20268 21980 20269 7738 9351 10209 9861 10830 15173 18420 19095 15174 19027 15175 7739 9504 10804 9328 11179 16547 12821 16546 21981 21982 21983 7740 9346 9804 9633 10903 13752 21984 21985 13753 21986 13754 7741 721 658 9894 10595 4727 11965 21987 18461 14540 14539 7742 721 9894 666 10595 21987 14066 4728 18461 15491 14540 7743 7821 10308 9876 10877 17713 18705 21988 17714 20075 17715 7744 929 10117 9399 10725 13343 16341 16340 20267 20269 21989 7745 1531 10376 9442 10427 21702 21701 17103 17101 17102 21990 7746 1220 10411 9919 10972 21991 21992 21993 21994 21995 21996 7747 9446 9856 9666 10448 20242 21997 13126 13127 12663 20243 7748 9954 10307 9357 10795 11353 19920 19919 19451 21998 18497 7749 7824 9883 7826 10095 14666 12216 21999 18385 12483 12485 7750 9238 9456 10029 10893 21444 15328 18798 18800 14307 13613 7751 10041 10668 8608 11147 18340 20807 22000 18342 20808 16666 7752 176 6328 9558 10375 21150 21151 19644 22001 21628 22002 7753 7967 9479 7834 10540 19633 19632 19631 19220 22003 16298 7754 8362 9943 8361 10138 14137 22004 22005 13194 22006 14138 7755 6991 10562 9511 10686 21311 22007 22008 21312 21186 21313 7756 6957 9034 6921 9555 22009 20256 7103 22010 20260 20259 7757 455 10497 10426 11105 21535 22011 22012 21536 22013 21537 7758 9820 9990 9309 10888 15320 21120 21118 15357 22014 15358 7759 814 557 10118 10697 4224 13531 22015 22016 14886 14885 7760 9266 10256 9766 10673 14140 20311 22017 13258 17430 14141 7761 9646 10355 9813 10913 22018 14796 21497 21498 14547 14798 7762 9558 9677 6329 10710 21625 21624 21626 22019 22020 22021 7763 512 1320 9803 11173 3501 22022 22023 22024 22025 22026 7764 8321 8566 10288 10870 20913 20915 16240 16114 16241 22027 7765 627 628 626 9714 4568 4567 4359 22028 18215 16792 7766 10027 10198 1265 10982 21780 21781 21778 22029 22030 22031 7767 9931 10151 9386 10820 18327 22032 21972 18217 15975 18328 7768 9541 10117 9433 10609 13978 18614 22033 21010 22034 21011 7769 7624 9541 7611 9964 18699 22035 22036 18544 22037 18698 7770 9203 10334 9488 10503 22038 12049 22039 22040 12052 12054 7771 977 920 1255 11080 5884 5874 5885 17950 22041 14685 7772 1013 9491 10096 11012 22042 22043 21763 21765 21767 19874 7773 10010 10201 9202 10717 17370 15978 11836 16697 22044 18708 7774 8828 10074 6948 11099 22045 22046 22047 22048 22049 22050 7775 8008 10360 9716 11003 22051 14914 22052 22053 22054 22055 7776 9498 10020 8907 10805 22056 22057 22058 12673 22059 16352 7777 9632 9469 10950 11073 18925 22060 15345 18930 22061 18928 7778 9077 9465 10038 10350 12739 22062 22063 15125 16456 15126 7779 293 361 291 10500 2895 2894 2892 22064 18999 15108 7780 9317 10090 9923 11062 19372 18122 19373 22065 19859 17474 7781 1338 1185 1183 10505 3987 5330 2705 21113 22066 20084 7782 8530 10286 9802 10643 19914 17805 22067 18886 22068 22069 7783 8243 9007 8408 10105 22070 21706 18282 18281 14055 21573 7784 9007 8048 8047 10105 22071 13101 21574 21573 13082 13102 7785 10153 10654 9543 11081 22072 17376 17734 16088 17380 17379 7786 1223 9672 1540 10297 22073 15389 6225 22074 15387 15388 7787 9376 9729 9917 10410 22075 12620 22076 22077 22078 22079 7788 9409 9535 10617 10763 22080 22081 15361 18856 18648 22082 7789 8506 8399 8507 11034 18889 18899 22083 18890 19239 18891 7790 1317 302 297 10593 2926 2923 2924 22084 18976 19736 7791 9991 10741 9334 10859 20493 22085 15462 12646 15464 20494 7792 1302 10005 10196 10966 15352 21976 21974 14915 22086 15162 7793 7762 8786 6370 10663 22087 22088 17439 17442 17443 22089 7794 463 9824 461 11159 19428 16346 3743 19431 16348 16350 7795 327 9504 9916 10160 22090 22091 20615 20616 14403 22092 7796 9436 9967 8531 10413 22093 22094 19658 21601 21167 22095 7797 1490 9521 10588 10753 22096 15752 14331 14048 14333 15754 7798 1323 728 10275 11037 5069 14605 18329 18443 18445 22097 7799 9453 9927 9820 10377 22098 22099 15757 12001 22100 18096 7800 9762 10583 9287 10924 15237 15235 15216 22101 22102 22103 7801 9270 9820 9927 10377 22104 22099 18722 16134 18096 22100 7802 427 1125 9957 10794 3546 22105 21757 21759 21758 22106 7803 9227 10415 9859 10464 12675 17273 22107 12678 11822 12679 7804 9668 9838 9280 10003 17742 17168 22108 17360 13252 17741 7805 8157 9634 10023 10748 15380 15382 13591 22109 22110 20039 7806 1094 10292 439 10502 22111 19901 3604 22112 19899 19900 7807 816 814 10118 10697 5467 22015 13104 15419 14886 22016 7808 7667 9560 7748 10688 17909 22113 22114 19681 22115 19682 7809 9820 9927 9453 10108 22099 22098 15757 15756 13316 22116 7810 9270 9927 9820 10108 18722 22099 22104 21121 15756 22116 7811 1499 704 10172 10548 4957 22117 14607 14609 14611 22118 7812 9331 10996 10005 11012 12688 18492 22119 22120 15164 22121 7813 8885 9821 9921 10889 22122 12583 22123 22124 22125 22126 7814 9523 9326 10157 10667 17454 22127 22128 17456 22129 11430 7815 480 11015 478 11083 22130 22131 3828 22132 22133 22134 7816 8146 9965 9667 11047 14439 14603 12629 22135 22136 22137 7817 9403 9996 932 11143 21257 21256 16915 21103 21105 22138 7818 6987 6912 7802 9836 7071 19887 22139 22140 19888 14922 7819 8300 9708 8419 11038 15017 21488 21489 17754 22141 17755 7820 7601 9832 10201 10372 22142 18132 22143 22144 22145 22146 7821 9390 9984 9704 10288 16895 21335 14711 13604 14714 22147 7822 808 10715 10505 10792 18397 22148 22149 18398 22150 15645 7823 8565 10544 10546 10940 22151 22152 22153 22154 22155 22156 7824 530 10330 685 11184 22157 21950 4090 22158 22159 22160 7825 287 10119 269 10692 22161 13111 2785 22162 15452 15451 7826 816 10121 1110 10693 13107 22163 5476 15454 22164 15448 7827 287 1113 10119 10692 2873 13119 22161 22162 15451 15450 7828 1110 10121 1113 10693 22163 13123 6135 22164 15446 15448 7829 8086 9690 9937 11009 20848 18851 22165 20849 22166 20850 7830 9356 10979 9884 11059 17108 12167 18018 17109 11204 14646 7831 8702 9907 9185 10402 16794 16076 22167 16796 16075 15865 7832 7581 9549 1099 10401 22168 22169 22170 22171 22172 22173 7833 8688 9079 9625 9851 22174 13943 22175 22176 14670 12642 7834 6942 6946 9740 10695 7370 22177 14839 19013 19015 22178 7835 9382 10973 9678 11090 16844 22179 22180 20724 11899 20725 7836 9518 10916 9900 11041 20564 22181 22182 20565 22183 20566 7837 1116 9573 1257 10243 17682 22184 5256 15024 22185 17681 7838 482 1154 10234 11015 3836 22186 17312 17858 17860 22187 7839 218 219 9732 10924 2523 19114 22188 22189 19116 19115 7840 9484 9663 9208 11074 22190 12187 22191 20485 14625 22192 7841 9474 10830 9718 10946 15743 22193 20085 19229 20086 21298 7842 9804 10348 9633 10903 14042 21047 21984 13754 21986 14043 7843 1334 9992 10659 10778 22194 22195 22196 22197 22198 22199 7844 9778 10126 9693 10976 22200 22201 15472 18372 18371 22202 7845 8511 9442 10260 10574 18368 22203 22204 18369 22205 17245 7846 1573 9501 1534 10440 17784 22206 2270 19432 22207 19433 7847 163 9969 6894 10587 22208 20433 17619 17621 17623 16827 7848 8789 9482 8941 10963 20984 20983 20982 21931 22209 21932 7849 10150 10367 637 11087 11351 13186 13185 22210 22211 18008 7850 9497 9932 951 10508 15623 13772 19720 22212 22213 22214 7851 9078 10258 10116 11047 14453 22215 22216 22217 22218 22219 7852 9227 9590 10115 10315 17637 22220 14188 19938 22221 18454 7853 8008 9716 10597 11003 22052 15379 22222 22053 22223 22054 7854 8029 8794 9485 10488 22224 22225 22226 22227 22228 22229 7855 9037 8149 9569 10328 22230 22231 21680 21678 21679 22232 7856 9910 10236 308 11123 15653 20699 20698 22233 22234 22235 7857 9752 9872 9334 10481 20931 15463 22236 19514 21395 21242 7858 9959 10025 9263 10536 16539 14098 15334 15878 13559 18350 7859 8350 9510 10197 10645 16906 16658 16908 22237 18038 21475 7860 9046 9940 10016 10956 22238 16049 22239 22240 22241 22242 7861 6913 7786 8828 11099 22243 22244 22245 22246 22048 22247 7862 8470 10241 9758 10913 21174 17990 21173 22248 14546 22249 7863 9214 9699 10173 10922 18812 22250 22251 18813 22252 18814 7864 9399 10286 9541 10609 19684 19685 19346 22253 21010 21012 7865 9426 9507 10127 11088 17702 17639 16975 17177 22254 17704 7866 6329 9558 6328 10375 21626 21151 6831 21627 22002 21628 7867 7703 7704 7702 9495 14393 22255 22256 11471 22257 14392 7868 9367 9770 10383 10558 13147 15614 22258 22259 21280 21279 7869 8175 8124 8249 10284 22260 11393 19490 19489 14192 12827 7870 789 9993 1010 10826 21465 15723 4565 19702 20235 22261 7871 9757 9873 9339 10748 17548 22262 19063 15658 19065 17549 7872 10107 10743 9359 10841 17410 22263 22264 18426 22265 18770 7873 7601 10201 9975 10372 22143 22266 22267 22144 22268 22145 7874 9397 10126 9778 10976 22269 22200 22270 22271 18372 22202 7875 1316 10112 1424 10655 22272 22273 4771 21737 21736 15369 7876 792 10112 1316 10655 22274 22272 5367 21738 21737 15369 7877 7671 9560 10189 10272 21338 14620 21340 22275 22276 22277 7878 8448 10899 10022 10958 22278 22279 22280 22281 16308 22282 7879 586 10018 9983 10982 16745 16746 16744 22283 22284 22285 7880 8113 10379 8923 10644 22286 16098 22287 22288 15619 16100 7881 246 1047 1197 10507 2641 2668 2667 14524 22289 15607 7882 9309 10497 9981 11105 22290 14975 21119 22291 21538 21537 7883 956 9847 954 10130 19691 22292 4208 15186 22293 13580 7884 432 10538 9805 10887 22294 22295 22296 22297 22298 22299 7885 1435 1454 862 9833 2342 5678 5111 22300 12014 12013 7886 563 564 10458 10760 4189 22301 22302 22303 22304 22305 7887 7627 7555 7638 10686 20116 22306 22307 20117 22308 20118 7888 1395 9691 868 11124 22309 21708 5697 22310 21711 21713 7889 9719 10146 9214 11117 17566 22311 22312 17569 21065 17570 7890 8895 9688 8936 10075 21434 21435 21433 22313 13558 20927 7891 6945 10074 9514 11099 22314 22315 21227 21230 21231 22050 7892 9309 10426 10497 11105 22316 22011 22290 22291 21537 22013 7893 9255 9943 9821 10871 22317 17181 22318 11324 22319 22320 7894 9203 9631 9488 10334 22321 15889 22039 22038 12049 22322 7895 7739 7667 7748 10688 20052 22114 22323 20053 22115 19681 7896 576 1037 10455 10603 3221 22324 14467 15511 15513 22325 7897 8072 8907 10020 10805 22326 22057 22327 22328 16352 22059 7898 7930 9904 9490 10620 22329 22330 22331 22332 22333 22334 7899 784 686 10416 10886 4868 22335 17760 17763 17765 22336 7900 8869 10390 7949 11167 19894 19130 19893 22337 19605 19604 7901 1481 827 9845 10070 5530 12063 22338 22339 15470 15469 7902 548 10131 573 10551 22340 11301 4179 22341 12649 13406 7903 9436 9977 9603 11153 11792 13547 14262 18775 20582 20584 7904 564 10458 10760 10901 22301 22304 22305 22342 17648 22343 7905 266 10032 10790 11057 22344 13434 22345 22346 22347 22348 7906 1573 980 1534 9501 5987 5618 2270 17784 22206 20947 7907 7916 9816 9876 11157 22349 15218 13172 14681 14680 22350 7908 9525 10702 9505 10849 22351 22352 22353 22354 22355 22356 7909 9134 9828 9455 9907 19590 18959 22357 19591 22358 15636 7910 9301 10339 9648 10641 12030 19460 22359 11238 14942 12880 7911 9952 9431 10310 10906 12776 15347 15348 17646 17645 22360 7912 9749 10091 9222 10821 19253 20758 19972 17335 19973 19254 7913 426 1190 428 10478 3570 3569 3568 19192 19194 21888 7914 337 1073 340 9493 3117 3126 3125 21161 17404 17485 7915 8314 10110 8258 10318 19617 19955 19954 19618 22361 14702 7916 9372 10161 9818 10713 14085 14826 14341 21676 20145 21677 7917 6365 10573 10417 10663 22362 18016 22363 22364 22365 22366 7918 9719 10173 9214 10745 18101 22251 22312 22367 12422 22368 7919 9800 10407 9513 11045 17865 22369 22370 21443 22371 20110 7920 1220 649 10411 10972 4086 22372 21991 21994 21996 22373 7921 9564 9290 10125 10635 17995 17997 17998 22374 21410 21409 7922 8043 9752 7980 11149 22375 13827 22376 22377 15041 15040 7923 9638 9747 9238 9868 15803 18799 19995 19852 11483 22378 7924 9641 9753 9252 9871 12005 22379 15641 14765 15642 22380 7925 9260 9753 9641 9871 12312 12005 13784 18219 14765 22380 7926 9279 9747 9638 9868 22381 15803 22382 22383 19852 22378 7927 9644 9757 9293 9873 15967 20729 17746 20229 14910 17548 7928 9339 9757 9644 9873 19063 15967 22384 22262 20229 17548 7929 9651 9771 9245 9883 22385 22386 19996 12766 16644 22387 7930 9327 9771 9651 9883 22388 22385 12803 12804 12766 22387 7931 9459 9711 9331 11063 22389 16180 22390 22391 22392 22393 7932 9833 9847 861 10676 16548 22394 21071 21073 21072 16164 7933 1438 355 9517 10160 3170 21350 22395 22396 21348 21349 7934 9670 10295 9413 11008 19795 19466 19794 22397 14844 13797 7935 9411 10363 10163 10634 22398 14254 16375 13810 16376 20473 7936 9750 10330 1230 11188 22399 21949 22400 22401 21951 21953 7937 7782 7651 7691 10896 22402 20503 22403 22404 20507 20506 7938 6992 6936 6935 9505 7059 7426 7433 11447 18252 11579 7939 240 1047 246 10501 2629 2641 2640 16995 14521 15606 7940 1122 1558 9507 10531 6145 22405 16243 16246 16248 22406 7941 8589 9060 10300 11132 20871 20873 18344 21597 21599 22407 7942 10307 10469 9357 10795 18529 22408 19920 18497 21998 18530 7943 6913 8828 6948 11099 22245 22047 7139 22246 22049 22048 7944 8518 10504 9853 10561 20712 19777 22409 22410 19779 19781 7945 9375 10006 9550 10367 19883 14971 22411 13965 14970 14554 7946 8221 9856 8224 10025 21618 20942 22412 21619 15466 20241 7947 9037 10328 10406 11065 21678 21683 21681 22413 22414 22415 7948 730 10113 9694 10733 13866 15418 22416 13867 22417 13868 7949 9327 10495 9718 11091 20683 14676 20682 17705 22418 22419 7950 9492 9344 10209 10640 22420 22421 22422 22423 22424 22425 7951 9496 10224 9924 10897 22426 14985 22427 22428 22429 22430 7952 1254 422 10434 10852 3550 18617 22431 22432 18618 14002 7953 1126 9902 9489 10534 22433 22434 22435 22436 16612 13870 7954 9302 10348 9880 10994 14115 14041 14113 18604 17483 20875 7955 787 10063 10326 10937 22437 22438 18622 18624 18626 22439 7956 8491 9488 9105 10503 20170 12051 21210 22440 12053 12052 7957 9227 9973 9859 10415 22441 16931 22107 12675 17273 18970 7958 6945 9514 6943 10205 21227 21833 7384 21229 21832 21228 7959 9976 10628 9418 10920 16549 20723 18854 15714 18855 20249 7960 8818 9673 9167 10776 18407 22442 22443 15542 22444 18408 7961 9224 9731 9868 10517 22445 22446 21533 11500 22447 22448 7962 9352 9761 9735 10431 22449 22450 22451 22452 22453 22454 7963 1038 10159 9844 11179 22455 22456 22457 22458 22459 22460 7964 9953 10448 699 10778 18690 17191 18135 18682 22461 18974 7965 170 7661 10338 10716 22462 19947 22463 22464 19951 19950 7966 7597 7792 10413 10935 22465 21965 19364 19366 15921 21967 7967 9767 10120 9338 10905 13536 13114 13534 17091 22466 17092 7968 9338 10122 9767 10904 13118 13537 13534 22467 17095 17094 7969 665 10027 9433 10559 20717 20716 16070 16072 16074 17180 7970 7703 9495 7702 10581 11471 22257 22256 18296 22468 18297 7971 6995 10657 7555 10686 22469 22470 20115 20119 20118 22471 7972 8909 10162 8891 10615 17463 18163 22472 17465 18162 17464 7973 8449 8576 8577 9701 22473 20148 20707 20706 17936 20149 7974 9453 10050 10008 10368 14216 19200 14533 14221 19199 18791 7975 8073 8159 8071 10078 22474 21529 22475 22476 15303 21530 7976 9390 10131 9704 10941 13357 22477 14711 21336 21337 22478 7977 909 1531 9442 10518 5839 17103 22479 22480 17105 17104 7978 418 9491 9903 10543 22481 19872 14736 22482 18317 22483 7979 1323 726 728 11037 5068 5066 5069 18443 22097 22484 7980 9213 9621 10228 11016 17929 22485 20035 17932 18106 17933 7981 9264 9586 10302 10685 19142 21613 22486 19143 20639 18608 7982 10446 10690 8459 11119 22487 22488 22489 22490 22491 22492 7983 9325 9770 9888 10558 21277 21925 21099 21278 22493 21279 7984 9295 9796 9712 9916 12667 12204 12665 22494 17578 17579 7985 7975 10033 7976 11112 20737 22495 22496 20738 22497 20739 7986 8890 10418 9114 10598 22498 15538 22499 22500 21274 14698 7987 893 10799 10250 10802 21110 17970 21109 22501 22502 22503 7988 9208 9663 9484 10066 12187 22190 22191 13397 22504 13398 7989 9626 9635 9416 10645 22505 22506 12476 21476 18762 19774 7990 7698 7668 1148 9614 22507 21586 22508 22509 21590 21589 7991 9543 10152 350 10455 15730 15729 15731 22510 22511 14776 7992 1411 941 10015 10455 5941 18261 12706 12708 12707 22512 7993 8868 9933 7728 10948 22513 22514 22515 22516 22517 22518 7994 9046 9940 8409 10016 22238 13299 22519 22239 16048 16049 7995 726 10275 728 11037 22520 14605 5066 22484 22097 18445 7996 7536 9177 7776 9580 22521 22522 20744 20746 19545 22523 7997 9691 10061 9284 10875 19009 22524 22525 19011 22526 19012 7998 8602 8563 10074 10743 22527 17407 22528 22529 17409 17408 7999 9638 9279 9868 11092 22382 22383 19852 19854 19853 22530 8000 7984 8940 8075 10490 22531 22532 17659 17662 17664 22533 8001 8063 9598 10238 10363 19568 14981 22534 19569 22535 13504 8002 8266 9433 8313 10609 20058 20057 20056 22536 22537 22034 8003 9134 9907 9455 10404 19591 22358 22357 21608 20445 15867 8004 1454 955 10130 10807 5677 13130 13128 15332 14581 22538 8005 9296 10400 9584 11003 12262 21352 22539 22540 21355 21357 8006 9628 10312 10271 10542 15925 22541 22542 13140 22543 22544 8007 636 637 10367 11087 4612 13186 14555 18006 18008 22211 8008 9760 9257 10419 10535 20236 21141 17391 22545 21142 19981 8009 355 10160 346 10257 21349 13234 3167 21351 12528 16057 8010 10116 10258 9078 11189 22215 14453 22216 22546 14455 14398 8011 7994 9736 7998 10965 22547 19553 22548 22549 15006 19554 8012 8609 10590 10668 10968 21968 17893 21970 22550 18176 18175 8013 8712 10576 10186 10993 12999 15599 13080 22551 22552 22553 8014 9261 10481 9516 10859 20401 22554 22555 18442 22556 21243 8015 1338 10505 10323 10607 21113 22557 22558 21114 17607 20798 8016 1373 1107 1321 10538 6130 3459 5402 15935 13219 13218 8017 9350 10420 9771 10731 22559 22560 15990 22561 20785 22562 8018 9577 9647 9353 10046 22563 21978 22564 22565 22566 22567 8019 9854 10472 9081 10958 22568 21809 20046 15598 22569 22570 8020 9452 10400 9923 11003 21353 22571 22572 21356 22573 21357 8021 8530 9399 10286 10643 19915 19684 19914 18886 22069 20527 8022 9294 10603 9913 11067 21165 14318 21163 22574 19906 19908 8023 439 9613 433 10502 20886 22575 3593 19899 22576 20887 8024 10161 10253 9525 10702 19636 22577 21675 14321 22351 19639 8025 6908 10011 1510 10373 22578 22579 22580 22581 22582 20132 8026 6924 9511 6991 10562 22583 22008 7348 18115 21311 22007 8027 9267 10405 10100 11035 21042 15789 20891 22584 20191 20193 8028 1357 331 1234 10705 3095 3051 3096 19755 20283 19966 8029 10009 10284 9417 10624 19725 12826 22585 19727 11554 12828 8030 9353 9726 9647 10788 22586 16900 21978 21977 16210 16902 8031 8530 9802 9168 10643 22067 22587 21423 18886 21425 22068 8032 512 9803 10287 11173 22023 22588 22589 22024 22590 22025 8033 8152 9735 9761 10890 21860 22450 22591 21861 14342 21862 8034 8267 9772 8322 10446 16725 22592 22593 21368 22594 22595 8035 8603 10425 8019 10996 22596 22597 22598 22599 22600 22601 8036 326 9776 9486 10442 22602 22603 21559 22604 22605 15989 8037 8313 10286 9433 10611 22606 22607 20057 20061 20060 18435 8038 9506 10359 10089 10728 18109 20647 18833 22608 18313 20650 8039 10446 10453 8459 10690 22609 22610 22489 22487 22488 22611 8040 1077 10125 9850 10635 22612 11276 22613 22614 21408 21410 8041 8556 8314 10318 10896 22615 19618 22616 22617 22618 19880 8042 604 599 605 10134 4165 4433 4432 16425 12041 13187 8043 7820 10079 9878 10877 22619 21788 17894 17716 17896 22620 8044 8755 9502 8858 10565 19735 14024 19733 22621 14026 13329 8045 9454 9806 9403 10347 11452 17157 22622 11455 18042 11456 8046 8682 9699 10087 10745 16371 16370 16369 22623 22624 20460 8047 9210 9897 10796 10936 22625 20522 22626 22627 20523 20156 8048 8182 8319 8261 10437 22628 14206 21828 21830 16775 16774 8049 8917 9467 10078 10605 13271 21543 21542 17428 18752 17429 8050 404 1107 9839 10737 3458 11884 22629 18303 14963 14962 8051 8761 8891 10162 10649 22630 18163 22631 22632 18165 18164 8052 1475 1483 1210 10486 6112 6206 5242 12829 11253 22633 8053 677 9721 10233 10898 21449 22634 22635 21450 21697 21451 8054 1285 1238 149 9548 2172 1697 2173 12602 16148 16430 8055 9276 10547 10275 11037 11880 11881 11879 22636 18445 18444 8056 9441 10321 10072 10782 14749 22637 17883 22638 19931 22639 8057 9513 10407 10238 11045 22369 20109 22640 22371 13350 20110 8058 9434 9984 9704 10941 13946 21335 17173 13381 21337 13947 8059 9346 9804 9768 11054 13752 14174 11568 22641 22642 22643 8060 10008 10050 9822 10478 19200 22644 14535 19224 21548 22645 8061 10105 10349 8048 10758 22646 22647 13102 13086 13103 22648 8062 9788 10291 8471 11043 22649 22650 20762 20764 20763 22651 8063 9709 9793 9481 10579 16752 21394 22652 13922 20280 18779 8064 9285 9478 10263 10813 21720 22653 12132 21721 19940 17919 8065 9372 9885 10655 10849 16530 19153 22654 22655 19157 19156 8066 9497 9912 6982 10812 22656 22657 22658 22659 22660 22661 8067 461 459 9800 10407 3733 22662 17866 16347 17865 22663 8068 10425 10491 8019 10996 22664 22665 22597 22601 22600 18493 8069 9807 10134 9288 10158 19845 20743 12236 20107 22666 20108 8070 9616 9826 7764 10984 20413 20411 20408 22667 22668 22669 8071 683 10558 10148 10939 22670 14352 22671 22672 14895 22673 8072 9822 10008 9453 10050 14535 14533 14531 22644 14216 19200 8073 1505 193 1502 10744 2408 2406 2409 20602 20603 22674 8074 9518 9577 9355 11111 21074 22675 19963 22676 19316 20654 8075 9626 10230 9635 10645 20781 16952 22505 21476 19774 19773 8076 986 9428 10370 10521 21657 21656 21655 20953 22677 21731 8077 1397 1260 1410 10535 2720 3277 5772 22678 18185 17118 8078 452 10196 10005 11121 21975 21976 21973 22679 22680 22681 8079 9706 9726 675 11180 22682 22683 22684 16472 22685 18917 8080 9277 9895 9823 10704 18646 14375 22686 22687 22688 22689 8081 530 9890 10330 11184 22690 22691 22157 22158 22160 22692 8082 9858 10356 9512 10732 21727 19235 19411 20138 19478 18985 8083 9881 10124 9360 10905 13662 13660 13657 17807 22693 17808 8084 9227 10315 10115 10464 19938 22221 14188 12678 14190 18455 8085 8757 10007 7866 10465 22694 15191 22695 22696 15194 15196 8086 9646 10355 7997 10965 22018 22697 15953 15007 15954 22698 8087 8038 8030 10149 10729 22699 13975 22700 22701 15916 15915 8088 8045 8038 10149 10729 22702 22700 21373 20973 15916 22701 8089 1103 1104 1162 11025 3444 6123 6122 12650 22703 12651 8090 579 9566 358 10000 22704 22705 3227 22706 22707 22708 8091 9799 10281 9417 11163 22709 12500 20437 22710 22711 22712 8092 1481 10070 9845 10450 22339 15470 22338 22713 18822 22714 8093 6943 9514 6945 10255 21833 21227 7384 21834 22715 17974 8094 1095 1096 967 10245 5970 5969 5085 22716 15869 15294 8095 9760 9864 9257 10535 16479 18189 20236 22545 19981 16861 8096 529 1220 649 10411 4084 4086 4078 22717 22372 21991 8097 8029 9485 8794 10650 22226 22225 22224 22718 22719 19330 8098 811 10507 1393 10814 22720 22721 5456 22722 22723 22724 8099 8794 10050 9485 10488 22725 19328 22225 22229 22228 14421 8100 467 9538 10147 10523 18346 18345 17227 22726 18153 22727 8101 9712 9916 9915 11089 17578 22728 22729 22730 14249 22731 8102 9441 10574 9779 10736 21585 22732 20861 22733 22734 22735 8103 10104 10670 427 10794 19377 22736 21756 21760 21759 22737 8104 9489 10335 9944 10554 22738 19018 16668 22739 19021 19023 8105 9818 9885 9372 10849 15210 16530 14341 19419 22655 19156 8106 9863 10145 9229 10967 17295 22740 15353 17817 22741 17818 8107 1403 10381 9748 10819 21005 21004 18086 22742 14213 16110 8108 1084 10441 9999 10980 17632 13961 17631 22743 22744 22745 8109 9489 9944 9781 10554 16668 19305 22746 22739 15783 19021 8110 9647 10046 9577 10898 22567 22565 22563 21696 22747 22748 8111 10417 10573 9437 10663 18016 18014 18011 22365 15896 22366 8112 9252 9753 9641 11084 22379 12005 15641 22749 16878 16880 8113 870 9882 9654 10930 20424 18271 17338 22750 22751 22752 8114 9842 10252 9156 10414 22753 22754 20856 18509 20857 22755 8115 7584 10447 9608 10475 13181 13180 13179 22756 22757 22758 8116 9300 9864 9834 10907 16478 14131 15874 22759 22760 22761 8117 9278 10046 9647 10898 12069 22567 22762 22763 21696 22748 8118 618 10672 622 10750 22764 22765 4530 22766 22767 22768 8119 990 10151 626 10820 22769 18326 4569 22770 18216 18328 8120 1531 909 9442 10653 5839 22479 17103 21703 21705 22771 8121 9073 10116 9438 10816 19711 19710 19712 21539 21541 14602 8122 8536 9779 9441 10574 20862 20861 18335 21583 21585 22732 8123 9441 10072 10366 10782 17883 17225 18666 22638 19932 19931 8124 865 10331 9791 10837 22772 22773 14322 14325 14327 22774 8125 814 557 813 10118 4224 4222 4225 22015 20003 13531 8126 9011 7880 7878 10124 14268 16509 22775 14269 16510 13661 8127 816 814 815 10118 5467 5462 5468 13104 13106 22015 8128 1053 278 1174 10122 2830 2819 2831 16023 13117 13116 8129 287 272 269 10119 2784 2783 2785 22161 13111 13110 8130 287 1113 1132 10119 2873 2872 2801 22161 13120 13119 8131 278 277 276 10120 2817 2813 2818 13113 13115 16025 8132 816 1109 1110 10121 5471 5477 5476 13107 22163 13108 8133 1110 1112 1113 10121 6132 6136 6135 22163 13123 13122 8134 1562 10169 9971 11076 17240 16357 17239 22776 22777 18293 8135 9418 10022 9961 10628 20721 20384 22778 20723 16277 19818 8136 1464 1096 9954 10767 4659 20601 14036 14037 11356 15296 8137 924 925 1515 9480 5600 5899 2281 22779 22780 22781 8138 7576 10347 7579 10402 22782 18949 22783 22784 18947 18948 8139 913 914 912 10689 5849 5848 4749 22785 13952 13951 8140 8538 8542 9793 10472 22786 20768 20641 20177 16757 20770 8141 9372 10702 9525 10849 14320 22351 21674 22655 22354 22356 8142 9785 10096 9568 10425 17835 17833 17830 22787 22788 22789 8143 987 10898 9647 10917 22790 21696 22791 22792 16213 22793 8144 9674 9825 9340 10612 16455 16454 15677 17364 13511 20275 8145 9278 9577 10046 10898 22794 22565 12069 22763 22748 22747 8146 9578 9521 10047 10588 19692 15753 21740 22795 14332 15752 8147 8603 8613 8019 10425 22796 22797 22598 22596 22597 22798 8148 8511 10260 9442 11034 22204 22203 18368 19442 19441 19240 8149 1359 1358 1017 10599 6034 5016 6035 12333 15987 13673 8150 1539 1574 6350 9617 1975 22799 22800 22801 22802 22803 8151 9304 10238 9824 10407 13163 22804 17099 17098 13440 20109 8152 170 7730 7661 10716 22805 21152 22462 22464 19950 21154 8153 9429 10350 10044 10682 22806 15766 18627 18630 18632 20703 8154 8403 10336 10291 10699 22807 22808 22809 22810 22811 14117 8155 9077 10038 9465 10789 22063 22062 12739 19527 19529 13790 8156 9148 8565 10546 10940 22812 22153 22813 22814 22155 22154 8157 871 9882 870 10930 22815 20424 5323 22816 22750 22752 8158 9610 9799 1370 11072 17496 21177 21176 22817 22818 22819 8159 8050 10627 9735 10890 22820 22821 21859 21863 21862 22822 8160 9550 10594 10370 10733 22823 22824 22825 14972 22826 14330 8161 10010 10224 9515 10437 22827 22828 12934 13135 13308 21513 8162 9350 9883 9771 10420 22829 22387 15990 22559 22560 22830 8163 1077 1283 9850 10125 2731 11272 22613 22612 11276 11275 8164 1003 10700 1118 11012 21060 22831 6008 21061 22832 21062 8165 6940 6996 9702 10694 7280 22833 18240 18243 18245 22834 8166 7976 10033 9831 11112 22495 11958 22835 22497 22836 20739 8167 9767 10206 280 10685 16961 22837 22838 22839 22840 20640 8168 9264 10302 10206 10685 22486 20636 22841 19143 20640 20639 8169 10222 10404 10156 10973 20446 17827 22842 20449 18958 20450 8170 1002 10096 10054 11012 21764 22843 22844 21766 21063 21767 8171 9526 10336 9500 10699 20380 12683 20379 21397 14118 14117 8172 6366 9592 6370 10663 22845 17440 6851 22846 17443 15897 8173 9288 9807 9641 10532 12236 20263 22847 13210 20265 17090 8174 8839 10532 9471 10566 18943 16577 17868 22848 22849 22850 8175 9290 9850 9561 10024 19276 22851 22852 22853 22854 22855 8176 9561 9850 9342 10024 22851 22856 22857 22854 12670 22855 8177 9915 9916 9712 10476 22728 17578 22729 19667 22858 17451 8178 8540 9030 9055 11081 21821 22859 13046 13049 13051 21823 8179 9725 10407 9411 10634 22860 11564 13809 13811 13810 22861 8180 9287 10583 9652 10924 15235 21837 21836 22102 22862 22103 8181 9724 10516 9323 10851 18437 22863 22864 18440 22865 18441 8182 9496 10201 1177 10717 14415 20537 20536 22866 21516 18708 8183 9517 9289 10387 10867 14948 12122 13303 22867 18906 18905 8184 8367 10197 10081 11095 13189 15612 14176 22868 16132 22869 8185 332 9694 1090 10553 11806 11476 3098 11807 13476 11808 8186 9859 9973 9472 10535 16931 19944 13720 21143 17842 17119 8187 6965 9676 6967 10696 22870 19165 7297 22871 19167 19166 8188 9339 9873 9644 10797 22262 20229 22384 22872 17747 11831 8189 1469 10148 723 10558 13203 13204 5055 14351 22873 14352 8190 9755 10185 8912 11146 22874 22875 22876 22877 22878 22879 8191 9250 10701 9875 10869 12843 18228 18416 22880 18231 18230 8192 9361 10207 9528 10576 21959 18728 22881 21958 18732 18731 8193 9281 9492 9621 10309 18932 17928 18931 17283 22882 22883 8194 443 9594 436 10178 22884 22885 3617 22886 22887 22888 8195 1351 995 9684 10229 4206 17231 11319 13359 13361 18254 8196 6973 9497 6982 10812 22889 22658 7319 22890 22660 22659 8197 693 773 10077 10960 4905 22891 21880 21883 21885 22892 8198 348 10309 341 10683 15857 22893 3142 15858 22894 15859 8199 9685 10251 9765 10743 22895 22896 17414 17448 17450 22897 8200 9859 9472 10419 10535 13720 13721 11439 21143 21142 17842 8201 9078 9073 10116 10296 22898 19711 22216 15095 19715 19714 8202 6290 10384 9617 11085 18734 17219 18733 22899 22900 22901 8203 6935 9858 6904 10610 20818 22902 7338 18253 22903 20819 8204 862 861 9833 9847 5109 21071 12014 12180 16548 22394 8205 9526 10200 295 10369 22904 22905 18062 17956 20195 22906 8206 9704 9984 9434 10288 21335 13946 17173 14714 17381 22147 8207 9216 9974 9469 10040 22907 22908 18927 19349 19350 22909 8208 9001 9716 8668 10597 22910 15374 22911 22912 15377 15379 8209 8176 10284 8175 10773 19511 19489 22913 19391 19491 16991 8210 566 692 687 10129 4268 4267 4238 19249 13851 12430 8211 9240 10111 9556 10450 22914 16253 22915 22916 16624 16623 8212 10343 10440 9429 11077 17847 15928 16420 19731 19073 19732 8213 8372 10340 8952 10955 22917 22918 22919 22920 22921 22922 8214 9986 10569 9256 11042 17089 22923 20540 15505 17367 21304 8215 767 10039 9971 11050 22924 22925 22926 22927 22928 22929 8216 9308 9519 10389 10858 17007 15581 13313 18873 18875 22930 8217 1232 6299 6348 10855 21326 6636 21024 21027 21029 21327 8218 9577 10917 988 11111 20653 21461 22931 20654 21463 20655 8219 9287 10308 9878 10877 22932 17895 18446 20074 17896 17715 8220 282 9695 1494 9769 11310 16935 2850 12043 22933 12044 8221 10056 10620 9272 10652 20376 22934 22935 19449 22936 20377 8222 7620 9541 7624 10477 22937 18699 22938 22939 18548 18700 8223 9973 1260 11058 11194 17120 17121 17122 18675 22940 22941 8224 9356 10916 10095 11041 22942 20563 22943 17069 20567 20566 8225 9457 9291 10034 10422 18552 21191 14133 11550 14135 18553 8226 9765 10662 9311 10974 15083 22944 22945 17418 22946 21130 8227 9512 9858 6926 10356 19411 22947 22948 19235 22949 21727 8228 1584 1168 200 10518 2448 1786 2446 17026 21484 15386 8229 9436 9924 8531 9967 17532 19659 19658 22093 22094 22950 8230 9401 10546 10544 10940 22951 22152 22952 22953 22156 22155 8231 9321 9718 9474 10625 13999 20085 19227 22954 15396 22955 8232 9860 10916 7887 11059 22956 22957 22958 11203 22959 22960 8233 9214 10745 9643 10997 12422 12423 12419 22961 15112 15114 8234 9961 10579 10294 10920 18451 20281 20278 22962 22963 19468 8235 10271 10312 9628 11152 22541 15925 22542 22964 22965 22966 8236 9311 9765 9685 10251 22945 17414 22967 22968 22895 22896 8237 9446 10142 9708 10769 13125 22969 16047 17774 17773 17399 8238 8956 10449 9878 10752 17248 22970 22971 17249 17507 13932 8239 8625 9797 10422 10809 22972 11551 22973 22974 22975 22976 8240 10118 10317 9262 10679 20002 22977 13532 20005 17301 20006 8241 9613 10670 10219 10909 22978 18611 22979 20888 18325 18613 8242 8607 9022 10114 10671 22980 20924 21299 21302 17512 20926 8243 802 907 968 9848 5417 5421 5420 17250 14501 15110 8244 9376 9917 9787 10410 22076 21477 22981 22077 22982 22078 8245 9492 9213 9947 11016 17930 20034 22983 17931 18104 17932 8246 9300 9640 9834 10889 22984 19676 15874 15876 15242 19677 8247 630 9487 582 10392 20936 20937 4154 22985 22986 22987 8248 9375 10318 9622 10487 14701 16763 22988 11515 16766 15986 8249 8372 9589 10340 10955 22989 22990 22917 22920 22922 22991 8250 10242 10525 9502 10793 19174 17526 19826 22992 21893 21895 8251 6366 10417 9592 10663 22993 22994 22845 22846 15897 22365 8252 1393 10814 10507 10825 22723 22724 22721 22995 22996 22997 8253 1073 9493 337 10665 17485 21161 3117 20845 20920 21160 8254 9050 10260 9432 10574 17551 17552 12411 18876 18877 22205 8255 9423 9854 10071 10668 15882 15883 14250 17077 22998 16662 8256 7657 9542 944 10526 19596 20182 20181 19784 22999 19785 8257 9518 10388 9577 11111 21075 20651 21074 22676 20654 19317 8258 611 10791 9866 11078 23000 16170 21591 21594 21596 23001 8259 9092 8492 9958 9980 23002 23003 13826 20172 20198 23004 8260 8266 9433 10609 10680 20058 22034 22536 23005 23006 23007 8261 9488 10150 9631 10548 15890 11347 15889 23008 15265 15264 8262 8569 8321 8570 10235 23009 23010 18381 18379 18380 16113 8263 9345 10550 10267 11030 19334 12575 19332 23011 17601 17600 8264 9472 9708 9211 10304 21068 17772 21069 13719 16295 21816 8265 1560 1428 915 10531 5863 5862 5864 21582 14499 14498 8266 7696 9614 9502 10770 15661 16336 13325 23012 23013 23014 8267 245 9823 9719 10146 15806 11222 15805 23015 17566 23016 8268 463 9824 9720 10147 19428 19427 19429 23017 23018 15409 8269 8031 8030 10421 10674 23019 16511 23020 23021 16512 14255 8270 735 9833 861 10275 23022 21071 5077 23023 21070 14407 8271 665 10712 9433 10718 16949 16950 16070 20718 20720 23024 8272 8451 8819 9176 9697 23025 23026 11977 11980 11982 23027 8273 10307 10469 522 11075 18529 18528 18494 19759 23028 23029 8274 9584 10474 8012 10929 19847 23030 23031 23032 23033 15579 8275 9348 9954 10354 10767 12427 20600 17302 12429 15297 11356 8276 9331 10700 10054 11012 23034 21059 23035 22120 21063 21062 8277 9785 10096 10054 10844 17835 22843 23036 18305 23037 18306 8278 7689 9542 7743 9698 21201 19783 21636 21552 20666 20667 8279 9366 10275 9941 10834 13307 21365 23038 19999 21366 20094 8280 1169 9525 6984 10610 14153 14151 14149 23039 23040 23041 8281 9995 10213 9439 10866 23042 16466 16909 12924 23043 23044 8282 8688 8686 9079 9851 23045 23046 22174 22176 12642 12083 8283 8825 9592 6306 10459 21663 21664 21662 23047 23048 23049 8284 9061 8905 9588 10894 19549 18170 19551 23050 17983 18723 8285 8648 9600 10341 10629 23051 23052 17615 17613 17614 23053 8286 8159 10078 8160 10639 21530 23054 23055 21531 14876 15307 8287 566 9808 10092 10129 19248 23056 23057 19249 23058 13852 8288 8952 10340 9715 10955 22918 23059 23060 22921 23061 22922 8289 8282 10239 9599 10383 23062 23063 23064 23065 17544 23066 8290 7780 7641 10085 10565 23067 15510 23068 23069 15199 14437 8291 8503 9100 9105 10334 23070 16691 23071 23072 12050 16692 8292 9285 10014 9918 10813 13267 23073 12888 21721 20619 16318 8293 7721 9660 10338 10716 20749 23074 19946 19949 19951 20750 8294 8235 8300 9959 10025 23075 15019 18348 18347 16539 14903 8295 9922 10220 7898 10815 23076 23077 21853 21855 21854 23078 8296 701 1334 10659 10778 4942 22196 23079 23080 22198 22197 8297 9303 9880 9768 10805 23081 14175 14062 15839 11570 18538 8298 8336 8642 9788 10387 23082 16158 23083 21182 16160 16159 8299 10069 10204 7860 10813 16031 23084 23085 23086 23087 17920 8300 9724 10204 10059 10494 14460 16299 23088 23089 23090 23091 8301 9809 10661 9305 11109 14298 17203 21331 17324 23092 17325 8302 579 9566 10000 10806 22704 22708 22706 23093 23094 23095 8303 9211 9708 9959 11038 17772 15018 19112 23096 17756 17755 8304 920 9551 1255 11080 12732 23097 5874 14685 22041 14686 8305 9348 10245 9857 10767 17303 19840 23098 12429 19842 15295 8306 9359 10107 10711 10743 22264 13681 23099 22263 19171 17410 8307 10444 10447 7785 11129 15560 17234 18378 20821 23100 23101 8308 8544 7782 7691 10896 23102 22403 23103 23104 20507 22404 8309 1588 7594 9603 10746 23105 23106 23107 23108 23109 23110 8310 9375 9509 9958 10487 23111 21761 11511 11515 11514 21085 8311 9513 10407 9725 10634 22369 22860 23112 23113 13811 22861 8312 1148 7698 9614 10530 22508 22509 21590 23114 23115 23116 8313 6938 9525 10253 10610 23117 22577 17560 17562 17564 23041 8314 9739 10247 9394 10719 20631 20630 11816 23118 12734 14695 8315 1241 157 6969 9682 2124 23119 23120 23121 23122 23123 8316 9525 10161 9836 10253 21675 20438 23124 22577 20440 19636 8317 832 10254 9888 11108 23125 20906 21517 21519 21521 23126 8318 9053 10004 10582 11038 19212 23127 23128 20532 23129 20533 8319 8307 10048 10231 11137 18373 16858 18375 23130 23131 20167 8320 8025 8024 8001 10135 16958 23132 23133 16959 23134 16432 8321 323 10707 10467 10724 23135 23136 23137 23138 23139 23140 8322 7695 7696 9614 10085 23141 15661 23142 23143 15660 15509 8323 9280 9668 10003 10768 22108 17360 13252 12856 16988 17363 8324 9465 9393 10621 10850 23144 23145 12524 23146 23147 15684 8325 7597 7622 7549 10935 19365 23148 23149 19366 23150 15922 8326 326 10442 9486 10672 22604 22605 21559 21561 21563 23151 8327 7792 10413 10303 11153 21965 18511 21966 23152 23153 21170 8328 8024 8001 10135 10938 23132 23134 16432 16830 16832 23154 8329 9830 10180 972 10537 16815 14570 16813 19341 23155 23156 8330 8814 10290 9130 10321 23157 14745 23158 23159 14748 14750 8331 934 10456 9430 11052 19480 17878 19479 23160 19469 23161 8332 7547 164 7606 10592 21616 23162 20643 13619 20645 21617 8333 9477 10564 8888 10771 21219 18474 21218 23163 23164 23165 8334 266 10790 270 11057 22345 23166 2770 22346 23167 22347 8335 7717 1166 7658 10427 23168 19555 23169 23170 19556 17516 8336 1449 940 10015 10455 5938 15519 23171 12031 12707 11813 8337 8256 8742 8215 10223 23172 23173 15047 12250 15049 23174 8338 8347 8251 8764 9729 12221 23175 23176 14469 23177 12094 8339 851 9971 767 10039 23178 22926 5260 23179 22924 22925 8340 6908 6927 1510 10011 7278 23180 22580 22578 22579 23181 8341 1134 10177 9871 11101 23182 16261 23183 23184 23185 23186 8342 1459 819 9804 10844 5493 23187 18566 18568 18570 23188 8343 10040 10950 9469 11073 23189 22060 19350 19351 18928 22061 8344 9367 9770 10102 10383 13147 13149 13057 22258 14418 15614 8345 985 524 636 10733 4058 4059 4061 20802 14558 18051 8346 9023 9966 8405 11000 23190 13007 23191 23192 15085 15087 8347 341 10309 10141 10683 22893 23193 23194 22894 23195 15859 8348 9337 10588 9695 10943 23196 16936 23197 23198 16940 16939 8349 9636 9749 9222 9867 20542 19972 20757 23199 23200 23201 8350 9252 9749 9636 9867 23202 20542 23203 23204 23199 23201 8351 1562 1561 851 9971 5633 5630 5631 17239 23178 16359 8352 8798 9815 7826 11091 23205 12217 23206 23207 12219 12218 8353 9479 10315 7834 10540 18453 23208 19632 16298 22003 11263 8354 326 1386 1296 10672 3036 3071 3070 21561 23209 21562 8355 8870 10283 10026 10862 23210 23211 20225 20227 20226 23212 8356 484 10145 9655 11094 12752 12753 11409 23213 23214 23215 8357 9814 10140 9279 10335 13467 23216 23217 23218 23219 23220 8358 8719 7834 10304 10464 23221 19634 21875 21877 11823 20142 8359 9644 10028 10043 10893 23222 21440 23223 19210 21441 13615 8360 9543 9621 9294 9913 23224 23225 21164 14314 21163 18148 8361 939 938 942 10579 5610 2400 5933 16417 14471 16208 8362 9488 9379 9958 10150 23226 15799 13756 15890 23227 23228 8363 9955 10121 1055 10122 14289 23229 23230 14339 23231 23232 8364 1055 10121 9956 10122 23229 14338 23233 23231 14291 23232 8365 274 10119 9955 10120 23234 14288 23235 23236 14337 23237 8366 9956 10118 817 10123 14336 23238 23239 15154 23240 23241 8367 1384 362 1079 9719 2686 3249 3251 17730 21389 21390 8368 469 466 1377 9720 3768 3770 3769 23242 14896 23243 8369 7593 7592 9548 10418 23244 15912 23245 23246 15913 14563 8370 8471 8634 10787 11043 23247 23248 20760 20763 20765 23249 8371 8272 8211 8863 10184 23250 19135 23251 23252 17333 19136 8372 1402 1403 1065 10182 5450 6082 3671 23253 20187 18084 8373 8935 8984 8413 10183 19486 23254 23255 17486 23256 19487 8374 8919 8915 8176 10187 23257 21728 23258 23259 19909 21729 8375 325 312 304 9723 2959 2958 2960 23260 11443 11340 8376 1043 10342 9549 10439 23261 23262 23263 23264 23265 16384 8377 9450 10199 9615 10331 15834 15994 23266 16871 15996 15997 8378 8086 9690 8785 9937 20848 18754 21430 22165 18850 18851 8379 9202 9832 9480 10372 11995 23267 16639 16640 11788 22146 8380 1122 1428 1558 10531 6143 6146 6145 16246 22406 14498 8381 7711 9442 10290 10427 19608 17242 23268 19607 23269 17102 8382 706 294 10136 10921 2908 23270 14571 12780 15666 23271 8383 9340 9825 9464 10832 16454 14715 15678 23272 12482 14717 8384 8867 9145 9793 10899 23273 23274 23275 23276 20642 23277 8385 8296 10246 8501 10933 15964 23278 23279 14591 23280 23281 8386 9403 9996 9454 10347 21257 23282 22622 18042 11455 23283 8387 741 1363 1034 9705 5142 5141 5140 11576 11578 18561 8388 1111 9879 10693 10990 14184 15455 23284 14185 23285 14186 8389 9397 9693 10126 10976 23286 22201 22269 22271 22202 18371 8390 9445 10474 9963 10678 15554 19846 14233 13035 15601 19850 8391 9284 9758 9654 9882 20810 17989 20809 23287 18271 15213 8392 9654 9758 9329 9882 17989 14544 19234 18271 15212 15213 8393 1204 389 9700 9872 3365 14103 11243 12019 12021 17375 8394 9768 10777 1459 10844 14063 23288 18567 18569 18568 23289 8395 8922 8882 10137 10880 23290 23291 23292 23293 23294 23295 8396 8784 10372 9975 10914 23296 22268 23297 23298 23299 14443 8397 9257 10181 9643 11168 19146 20877 23300 23301 20880 20334 8398 8866 8255 8743 11136 23302 23303 18198 18201 18203 13588 8399 9625 10265 8889 10706 14597 13208 13738 18194 23304 23305 8400 9543 10152 9281 10309 15730 17284 17558 15733 17283 15734 8401 9388 9917 9787 10067 12619 21477 20368 13373 19991 15674 8402 9572 9658 9365 10058 23306 18992 11338 23307 18991 15060 8403 588 10333 533 11154 23308 18500 4095 23309 20865 20867 8404 8173 9704 8260 10288 14712 18238 23310 14713 18239 14714 8405 1470 10234 9438 10380 16626 16627 11335 19827 19829 16003 8406 8000 10329 9877 10938 18782 15349 23311 18783 23312 18784 8407 335 1067 9945 10772 3108 23313 20349 20352 20354 23314 8408 8905 10246 9790 10894 23315 15963 18171 18723 18724 23316 8409 9480 9964 8525 10865 23317 23318 16747 13954 16749 23319 8410 1032 10612 1086 10801 23320 16816 4594 23321 16818 16820 8411 9323 10505 10012 10963 23322 23323 23324 23325 23326 23327 8412 9724 10059 9503 10494 23088 23328 23329 23089 23330 23090 8413 985 9550 732 10733 20801 23331 4341 20802 23332 14972 8414 9703 10100 9267 10471 19247 20891 18288 11345 12818 16773 8415 9433 10117 9541 10712 18614 13978 22033 16950 16694 16696 8416 1075 1164 9899 9930 2966 12793 23333 23334 14634 12016 8417 10004 10495 9266 10540 20327 14587 23335 16428 13178 14982 8418 8339 10184 9797 11104 23336 23337 23338 23339 23340 23341 8419 9419 10168 10081 10950 16751 23342 13995 14889 14888 23343 8420 7568 7566 9580 10443 23344 23345 19544 19548 19547 23346 8421 9353 9647 9577 10917 21978 22563 22564 21979 20653 16213 8422 8152 9761 9735 11022 22591 22450 21860 23347 23348 23349 8423 851 9971 10039 11076 23178 22925 23179 23350 18486 22777 8424 9488 9379 10150 10802 23226 23228 15890 23351 23352 23353 8425 7959 9689 8671 10056 21494 19446 21493 23354 19444 19445 8426 1580 206 10391 11011 1757 16174 18963 23355 20361 20360 8427 6306 7762 6370 9592 21661 17439 6469 21664 17440 17441 8428 9279 10335 10140 10554 23219 23220 23216 23356 23357 19023 8429 9501 9677 9207 9701 23358 23359 23360 23361 23362 20478 8430 9706 9234 10020 10479 16217 21772 23363 15854 21775 21774 8431 10084 10207 9361 10957 16686 21959 23364 20317 21960 19319 8432 800 9848 801 10240 23365 14410 5404 23366 12556 14412 8433 6315 9501 6337 10375 17785 23367 6816 17788 23368 17789 8434 8543 10556 9415 10714 20324 19984 17679 19970 19969 23369 8435 6924 10313 9511 10562 18114 23370 22583 18115 22007 18116 8436 7855 7852 9564 10494 23371 23372 23373 12375 23374 23375 8437 367 1038 9844 11179 3274 22457 23376 23377 22459 22458 8438 588 9919 10333 11154 23378 23379 23308 23309 20867 23380 8439 9797 10184 8339 10493 23337 23336 23338 14538 23381 14199 8440 9719 9214 10173 11117 22312 22251 18101 17569 18103 21065 8441 588 9919 533 10333 23378 23382 4095 23308 18500 23379 8442 8360 8973 8363 9943 23383 14119 23384 16535 21911 17182 8443 9464 9837 9340 10832 17170 14976 15678 12482 23272 23385 8444 9025 8774 9836 10985 23386 23387 14920 17555 17557 23388 8445 9733 10615 9265 10779 19723 23389 11287 16234 16233 19724 8446 185 9514 210 10255 14163 19041 2367 17973 23390 17974 8447 1386 9486 326 10724 21560 21559 3036 23391 23392 23393 8448 478 11015 9563 11083 22131 23394 23395 22133 23396 22134 8449 9665 10257 9524 10584 16865 17554 17382 20230 23397 16615 8450 9524 10476 10257 10736 23398 13933 17554 23399 23400 20252 8451 8341 9711 9840 10726 23401 17289 19628 19629 11537 23402 8452 9522 10405 10212 10883 15788 23403 23404 23405 23406 23407 8453 635 636 10006 11087 4060 14556 23408 23409 18007 18006 8454 576 1037 1411 10455 3221 4321 4320 14467 12708 22324 8455 8358 8360 9821 11102 23410 17782 23411 23412 17783 16536 8456 9469 10081 10168 10950 23413 23342 23414 22060 23343 14888 8457 9127 9199 8755 9502 23415 19734 23416 23417 19735 17719 8458 1108 9899 10666 10860 20087 23418 23419 20088 23420 19294 8459 10154 10175 9419 10531 20992 17274 16569 20995 14500 17276 8460 8104 10043 8102 10094 23421 11424 23422 12741 13227 14422 8461 7781 6921 9555 10511 20255 20260 20258 23423 23424 23425 8462 9496 9202 10201 10717 23426 15978 14415 22866 18708 22044 8463 998 1464 10307 10767 6001 14035 23427 23428 11357 14037 8464 8927 9699 9036 9921 23429 20458 23430 23431 20457 20427 8465 9474 9657 9321 10625 19226 19225 19227 15396 22954 23432 8466 791 790 9818 10849 4774 19418 23433 23434 19419 19155 8467 903 706 294 10136 2909 2908 2910 14572 23270 14571 8468 1495 903 1029 10136 5816 2911 5817 20881 23435 14572 8469 510 10607 1404 10614 18697 14377 2661 23436 14661 14663 8470 8593 8072 9035 10805 23437 23438 20160 20159 16351 22328 8471 533 9893 1246 10333 23439 21376 4104 18500 20864 19311 8472 8977 9012 8788 9724 23440 18457 23441 23442 18438 18458 8473 1392 9487 630 10930 20935 20936 4348 23443 23444 15229 8474 10213 10482 660 10717 23445 23446 16465 20055 15584 23447 8475 10033 10991 10003 11112 12897 23448 23449 20739 23450 20740 8476 966 10053 9857 10879 23451 17666 23452 23453 23454 18575 8477 9517 9328 9898 10159 23455 17802 20560 20559 17801 17707 8478 7859 8888 10564 10771 23456 18474 23457 23458 23165 23164 8479 7630 9548 7591 10800 16149 17210 23459 16152 23460 16153 8480 9584 10400 9963 10887 21352 17195 19848 23461 23462 23463 8481 1495 10136 1029 10943 20881 23435 5817 18990 23464 21371 8482 793 10076 10170 10932 23465 23466 23467 23468 23469 23470 8483 9705 10557 9457 10735 17280 23471 21438 18563 21472 18564 8484 7534 7630 7591 10800 16462 23459 23472 16464 23460 16152 8485 860 10254 832 11108 23473 23125 5548 23474 21519 23126 8486 7967 8719 7834 10304 23475 23221 19631 19214 19634 21875 8487 9336 9669 9903 10848 21261 21260 16269 23476 23477 23478 8488 8003 8749 10035 10566 23479 20859 12718 12914 16078 20860 8489 9778 10126 9397 11177 22200 22269 22270 23480 23481 23482 8490 8691 10303 9978 11153 15610 18130 16468 23483 18776 23153 8491 9812 10157 9326 10667 23484 22127 11508 11509 11430 22129 8492 9723 9774 304 10953 12598 12599 11443 23485 23486 23487 8493 1238 9548 1285 10226 16430 12602 2172 16601 12600 12601 8494 9705 9710 9457 10493 12416 23488 21438 19506 14536 23489 8495 9316 9710 9705 10493 12415 12416 11577 12942 19506 23489 8496 363 10681 9565 10790 14899 19834 23490 12931 19836 15080 8497 9010 10050 8971 10627 14217 23491 23492 13318 23493 14218 8498 8787 9482 8941 10516 23494 20983 23495 23496 23497 23498 8499 9705 10177 9730 10433 16572 23499 19505 17278 23500 21379 8500 9134 9455 8481 10404 22357 23501 21605 21608 21610 20445 8501 520 10049 344 11075 21132 23502 3153 21133 23503 21134 8502 9463 9909 9718 10221 21067 20681 13998 13708 14000 23504 8503 6913 6945 10205 11099 7385 21229 23505 22246 15289 21230 8504 9514 10074 6945 10276 22315 22314 21227 18320 23506 23507 8505 8922 10137 8882 10756 23292 23291 23290 21666 23508 23509 8506 9582 9319 9813 10928 23510 23511 23512 23513 23514 23515 8507 1306 771 1286 10274 4900 5278 5277 17595 20367 13816 8508 9456 9206 10132 10709 20335 23516 12492 11531 12494 20338 8509 9850 365 10441 10915 17540 15899 23517 17541 21144 16379 8510 9419 10175 10154 10524 17274 20992 16569 14528 17031 21334 8511 210 10251 9514 11185 23518 23519 19041 23520 23521 23522 8512 735 864 9833 10275 5073 14406 23022 23023 14407 13306 8513 9274 10190 9609 10816 13226 18034 23523 14600 23524 15981 8514 1130 10045 11094 11144 20902 13736 23525 21782 23526 16733 8515 9482 10171 8941 10516 23527 23528 20983 23498 23497 23529 8516 8282 10239 10383 11134 23062 23066 23065 23530 23531 23532 8517 805 1341 9844 10669 2921 14446 23533 23534 14447 12119 8518 7980 10036 8951 11149 13833 23535 23536 15041 23537 15042 8519 9281 10654 10390 11167 17559 19129 18933 23538 19604 19606 8520 1446 10376 9915 10653 19039 19040 19036 23539 19988 21704 8521 9352 10187 9772 11022 23540 16724 23541 23542 19394 19910 8522 342 359 9694 10006 3100 21646 12198 11889 11805 23543 8523 1445 10148 683 10558 23544 22671 4845 23545 22670 14352 8524 9601 9895 9409 9906 23546 15493 23547 23548 21322 20295 8525 9408 9895 9601 9906 15279 23546 18250 23549 23548 20295 8526 658 1070 574 10357 4311 4310 4307 11249 23550 11267 8527 9615 10671 9360 10751 21412 13693 23551 20695 23552 21415 8528 855 9451 10312 10475 19406 15923 21896 19408 23553 19409 8529 9458 10701 9250 10869 15198 12843 23554 20136 22880 18230 8530 9539 9962 10191 10454 14094 14096 12693 23555 17545 23556 8531 535 9893 533 10333 19310 23439 4102 18499 18500 19311 8532 8362 8361 8813 10138 22005 23557 11684 13194 13196 22006 8533 10307 10705 9412 11075 19756 23558 23559 19759 23560 19760 8534 7581 7582 9549 10401 23561 23562 22168 22171 22173 23563 8535 9823 9895 9408 10704 14375 15279 15627 22688 23564 22689 8536 9636 9749 9252 11084 20542 23202 23203 20546 22749 20544 8537 8968 9820 10108 10878 23565 15756 16892 16225 16894 23566 8538 1126 9902 1157 10140 22433 23567 4245 23568 23569 23570 8539 9677 9701 9501 10828 20478 23361 23358 20477 23571 17935 8540 8497 9795 8495 10619 23572 11932 23573 23574 19185 19184 8541 1157 10140 9902 11103 23569 23570 23567 23575 23576 23577 8542 10144 9429 10440 11077 23578 15928 20044 20045 19732 19073 8543 8488 9696 9045 11086 21751 11214 21749 23579 15745 15744 8544 9440 10522 10469 10795 13862 23580 23581 20203 18530 20204 8545 970 1518 10515 10633 2297 17624 23582 23583 19978 17010 8546 217 218 219 9732 2517 2523 2522 23584 19114 22188 8547 9459 9331 10005 11063 22390 22119 23585 22391 23586 22392 8548 9589 10340 9715 10510 22990 23059 20514 20517 20519 23587 8549 9331 9711 9459 9840 16180 22389 22390 19450 12459 17289 8550 10247 10466 661 11068 23588 23589 23590 23591 23592 23593 8551 9348 9465 10245 10354 23594 23595 17303 17302 15292 23596 8552 219 9732 9769 10943 19114 17421 19113 23597 23598 23599 8553 9644 10094 10043 10797 17745 14422 23223 17747 23600 11832 8554 9898 10527 9248 10902 21293 18726 23601 19708 23602 21294 8555 213 9570 211 10251 23603 23604 2492 23605 23606 23607 8556 9465 9348 10245 10789 23594 17303 23595 19529 23608 13158 8557 8605 9630 7962 10452 19502 18480 21080 19503 20795 13761 8558 8144 8183 10359 10437 23609 17729 23610 23611 21041 21040 8559 9409 9601 10507 10614 23547 23612 14523 23613 18767 19753 8560 9489 9902 1126 10140 22434 22433 22435 23614 23568 23570 8561 795 1126 9489 10534 5385 22435 23615 18649 16612 22436 8562 9724 10715 10059 11178 23616 23617 23088 23618 23619 23620 8563 9471 8839 10566 10798 17868 22848 22849 19689 23621 19687 8564 8569 8321 10235 10870 23009 16113 18379 18668 16115 16114 8565 8837 10258 9078 11047 23622 14453 23623 23624 22217 22219 8566 1510 6927 1506 10011 23180 23625 2168 22579 23626 23181 8567 8916 8964 10040 11073 23627 23628 15010 19532 19351 23629 8568 9440 10346 10282 11080 23630 23631 13635 23632 23633 16710 8569 672 675 9726 11180 4229 22683 23634 23635 18917 22685 8570 10282 10346 9551 11080 23631 12393 23636 23633 14686 16710 8571 8528 9073 10296 10602 23637 19714 23638 23639 19801 19800 8572 793 10741 10076 10932 23640 23641 23465 23468 23470 23642 8573 9498 10314 9706 10479 12671 12470 21402 12844 15854 12845 8574 1499 10525 902 10548 15255 23643 5815 14609 23644 16785 8575 7899 7898 10220 10815 23645 23077 23646 23647 23078 21854 8576 8187 9515 8143 11010 23648 23649 23650 23651 23652 23653 8577 9100 10503 10334 10793 16693 12054 16692 23654 23655 23656 8578 6925 6926 9512 9858 7400 22948 19208 19410 19411 22947 8579 8055 8053 9990 10306 16272 23657 11969 11534 11968 16273 8580 1094 9799 879 10292 23658 23659 3696 22111 18064 23660 8581 9255 9791 9751 10811 11943 13429 13428 23661 21872 21871 8582 8492 9958 9980 10970 23003 20198 23004 23662 23663 15180 8583 198 1599 9541 10585 2437 23664 15075 23665 13980 23666 8584 9340 9939 9499 9950 20669 23667 15168 15430 15431 23668 8585 299 295 10200 10369 2913 22905 23669 23670 22906 20195 8586 9386 10151 9931 10826 22032 18327 21972 23671 13522 19439 8587 9715 10340 9516 10510 23059 23672 23673 20519 23674 23587 8588 9378 9849 10293 10756 23675 23676 12011 23677 23678 23679 8589 9362 9468 10300 11028 21236 23680 12973 12919 14836 16987 8590 7976 7982 9831 10033 23681 15244 22835 22495 11958 16324 8591 767 9971 769 11050 22926 23682 5258 22927 23683 22928 8592 9261 9516 10461 10859 22555 23684 11857 18442 14259 22556 8593 9249 10764 9866 11078 23685 21592 23686 23687 21596 21595 8594 8556 10318 9938 10896 22616 23688 23689 22617 23690 22618 8595 9287 9732 9769 10924 18447 17421 18542 22102 19117 19116 8596 9367 10254 9888 10781 23691 20906 23692 23693 20909 20911 8597 1017 1555 1554 10599 6028 6038 6037 15987 15254 23694 8598 9331 9840 9459 10005 19450 12459 22390 22119 23585 18491 8599 9280 9838 9462 10003 17168 17167 15460 13252 23695 17741 8600 8625 10157 9797 10809 23696 23697 22972 22974 22976 21296 8601 9356 9900 10916 11041 23698 22181 22942 17069 20566 22183 8602 9693 9778 9384 10126 15472 17602 16310 22201 13907 22200 8603 1386 10672 9486 10854 21562 21563 21560 23699 23700 23701 8604 8432 9084 10495 10582 23702 23703 14674 21195 21197 23704 8605 9537 10163 9411 10363 13767 16375 23705 14253 22398 14254 8606 9478 9280 10204 10394 23706 12540 13626 13630 13629 16681 8607 1420 6977 9949 10587 20231 21343 23707 17622 20969 20232 8608 998 10236 9539 10307 23708 15651 23709 23427 12149 21317 8609 9905 10000 9344 11140 20789 23710 23711 20792 23712 20793 8610 466 9720 469 10734 23243 23242 3768 23713 23714 23715 8611 288 280 10206 10685 2840 22837 20635 20638 20640 22840 8612 9510 10520 10230 10645 20658 14577 20782 21475 19773 23716 8613 6370 8786 6364 10663 22088 23717 6473 17443 23718 22089 8614 7975 7974 10991 11112 23719 23720 20736 20738 20740 23721 8615 435 1275 1250 9611 3614 3616 3441 13733 17477 16118 8616 8279 9032 8335 9612 23722 23723 16121 11599 16120 23724 8617 8049 8152 8050 9735 23725 21858 23726 23727 21859 21860 8618 9099 10058 7917 10133 15850 23728 23729 15177 19566 15851 8619 9286 9613 10219 10909 23730 22979 18321 15693 18325 20888 8620 9280 10003 9462 10069 13252 23695 15460 14276 15459 14277 8621 8931 10359 9506 10728 20648 18109 23731 20649 22608 20650 8622 7956 9665 9898 10387 19823 19822 19704 23732 16161 23733 8623 9143 8818 9167 10776 14051 22443 23734 16490 22444 15542 8624 9471 9681 9231 10798 23735 14658 23736 19689 15514 23737 8625 9937 10674 9594 11033 23738 23739 23740 18852 23741 23742 8626 1320 10543 9803 11173 23743 18316 22022 22026 22025 23744 8627 9846 9509 10467 10487 21762 21086 23745 15673 21084 21085 8628 7994 7999 7998 9736 23746 23747 22548 22547 19553 23748 8629 9195 8754 9052 10565 23749 20356 19929 15479 16493 20358 8630 9713 10114 8607 10452 21300 21299 21301 23750 23751 14926 8631 9305 9751 9869 10666 21869 19911 17204 21332 17979 19913 8632 171 1169 6937 10610 2056 23752 23753 23754 23755 23039 8633 9319 9582 9813 10355 23510 23512 23511 23756 14796 23757 8634 6956 9911 9620 9912 23758 23759 23760 23761 14852 23762 8635 9768 9880 9303 9972 14175 23081 14062 23763 23764 17480 8636 1370 445 523 9610 3640 3664 3666 21176 17057 23765 8637 9432 10476 9524 10736 17652 23398 23766 20251 23399 20252 8638 10022 10899 9481 10958 22279 20180 20383 16308 23767 22282 8639 9247 10381 9748 10995 16108 21004 14805 20767 18088 21006 8640 1485 10352 1493 10949 21021 23768 4976 21022 23769 20100 8641 545 10134 10158 11150 23770 20108 23771 23772 23773 23774 8642 8296 9083 8501 10246 16863 23775 23279 15964 23278 16864 8643 1308 1460 9810 11117 2677 23776 21266 21269 21270 23777 8644 9412 10307 10236 10705 23559 21317 21652 23558 21318 19756 8645 8301 8419 8300 10616 23778 21489 23779 23780 14906 21490 8646 9508 10197 9416 10378 23781 18761 23782 23783 18760 18035 8647 9266 9766 9884 10673 22017 19979 13841 13258 18020 17430 8648 9412 9982 9796 11004 20617 18366 19747 23784 18161 17794 8649 1013 9491 418 10543 22042 22481 3519 23785 22482 22483 8650 9718 9909 9327 10221 20681 20680 20682 14000 23786 23504 8651 9276 9468 9941 10275 11877 15258 23787 11879 21365 11878 8652 9481 10899 8538 10958 20180 20178 20175 23767 23788 22282 8653 9693 10658 6932 10744 23789 23790 23791 23792 23793 23794 8654 1064 10381 9593 10434 12298 19802 23795 12035 23796 12950 8655 1428 1342 915 10578 5861 5269 5862 23797 16237 23798 8656 10117 10261 1231 10730 23799 23800 18430 18432 18431 23801 8657 10442 10672 618 10750 23151 22764 23802 23803 22766 22768 8658 8670 8472 8875 11051 20574 23804 23805 20575 16526 19371 8659 1006 291 361 10199 2865 2894 2896 16097 15835 18998 8660 8390 8388 10187 10702 23806 16396 23807 23808 16474 14319 8661 7930 9490 10539 10646 22331 23809 23810 23811 23812 23813 8662 1482 10659 1128 11020 23814 15608 5541 23815 23816 23817 8663 8422 9941 10398 10834 18844 15259 18846 23818 23819 21366 8664 9473 9353 9726 10992 23820 22586 19250 23821 23822 23823 8665 9347 9817 9795 9932 13410 13426 11933 16068 23824 23825 8666 9650 10054 1003 10777 21106 21058 21107 13339 23826 23827 8667 9522 9407 10023 10471 16771 11327 23828 16772 11331 11330 8668 9024 9688 8407 10056 14814 23829 23830 14816 23831 14817 8669 9409 9895 9601 10614 15493 23546 23547 23613 19753 14662 8670 9202 9496 10224 10717 23426 22426 23832 22044 23833 22866 8671 8360 8363 9821 9943 23384 12584 17782 16535 17181 21911 8672 9468 10676 9538 11028 12310 15058 14632 16987 21111 21112 8673 9224 9868 9747 10517 21533 22378 11305 11500 13898 22447 8674 9547 10884 10468 11170 23834 23835 20406 23836 23837 23838 8675 9410 10454 9857 10767 14230 23839 19071 23840 19842 23841 8676 9977 10755 9395 11079 19078 23842 20580 21205 23843 21206 8677 9810 10093 1308 10146 23844 23845 21266 21267 21268 23846 8678 6984 6938 6937 10610 7436 7435 7194 23040 23755 17562 8679 732 9550 10370 10733 23331 22825 23847 23332 22826 14972 8680 6327 9558 6329 10710 23848 21626 6830 23849 22020 22019 8681 452 11063 10497 11121 23850 23851 23852 22679 23853 23854 8682 8916 8486 8964 11073 20297 23855 23627 19532 23629 20298 8683 9456 10029 632 10580 15328 15327 12341 15527 15526 23856 8684 780 615 9691 10061 4513 23857 19010 19008 19009 23858 8685 793 1091 10741 10932 5300 23859 23640 23468 23642 23860 8686 9724 9668 10715 11178 23861 14368 23616 23618 23620 23862 8687 490 883 9925 10975 3889 18818 23863 23864 17594 12788 8688 9152 8515 10682 11077 23865 18631 23866 23867 19075 19074 8689 620 618 622 10750 4528 4530 4529 23868 22767 22766 8690 6937 1169 6984 10610 23752 14149 7194 23755 23040 23039 8691 8323 8173 8260 10288 23869 23310 23870 13730 18239 14713 8692 9362 9824 9598 10363 20343 23871 13502 11864 13504 23872 8693 10213 10482 9439 10866 23445 23873 16466 23044 23043 23874 8694 219 10727 9769 10924 23875 17146 19113 19115 19117 23876 8695 8307 8230 10048 11137 23877 20163 18373 23130 20167 20166 8696 9428 8583 9938 10382 18168 21486 21485 19006 23878 19134 8697 9514 9685 9324 11099 23879 21007 23880 21231 16829 21009 8698 9451 9628 10312 11152 15808 15925 15923 23881 22966 22965 8699 9352 9885 9761 10431 23882 15211 22449 22452 22454 23883 8700 7695 7641 7696 10085 23884 14435 23141 23143 15509 15510 8701 8072 10020 9035 10805 22327 16353 23438 22328 16351 16352 8702 8306 9657 8179 10757 23885 23886 23887 23888 23889 23890 8703 9038 10266 9798 10630 23891 23892 23893 23894 14550 23895 8704 920 918 9551 10060 5873 23896 12732 12902 12904 23897 8705 545 10134 604 10158 23770 16425 4164 23771 21604 20108 8706 9300 9760 9864 10708 15875 16479 16478 21381 18191 20237 8707 210 9514 1225 10276 19041 14164 2368 23898 18318 18320 8708 9672 10408 9437 10417 23899 18475 23900 23901 18011 18477 8709 8251 9729 9917 10954 12094 12620 12618 23902 23903 23904 8710 879 10292 9799 11163 18064 23660 23659 18065 22710 15144 8711 744 9668 10143 11042 23905 11504 23906 23907 23908 17369 8712 10086 10126 9778 11177 13906 22200 23909 23910 23480 23482 8713 9284 10882 9758 11051 23911 18285 20810 23912 18287 16443 8714 9509 9958 9846 10133 21761 14867 21762 23913 14871 14870 8715 9916 10476 9915 11089 17451 19667 22728 22731 14249 23914 8716 9778 10086 9215 10892 23909 11299 23915 15477 16650 16649 8717 8762 8095 9731 11092 23916 23917 23918 23919 23920 23921 8718 8931 10089 8141 10359 20646 23922 23923 20648 23924 20647 8719 9393 9703 9547 10599 23925 20404 17822 12334 15533 23926 8720 7622 9603 10413 10435 15917 15919 15918 23927 23928 13549 8721 7752 8769 7558 9734 23929 23930 21282 14561 21283 23931 8722 9265 10274 10045 11066 19196 16730 19195 21615 20126 18969 8723 7593 7592 7591 9548 23244 17211 23932 23245 17210 15912 8724 8187 8847 8143 9515 23933 23934 23650 23648 23649 23935 8725 323 10467 9671 10724 23137 23936 23937 23138 23938 23139 8726 9458 9250 10032 10869 23554 23939 20318 20136 20320 22880 8727 9320 10467 10006 10487 23940 21179 12489 23941 21178 21084 8728 1361 10210 9533 10486 23942 23943 23944 23945 23946 14193 8729 10053 10827 9410 10879 18572 23947 19072 18575 19268 18576 8730 987 676 9647 10898 4804 21694 22791 22790 21696 21695 8731 9403 9454 9996 11143 22622 23282 21257 21103 22138 23948 8732 1472 10689 1473 10850 23949 23950 4446 23951 23952 23953 8733 489 1277 491 9605 3885 3884 3883 16185 23954 11489 8734 802 9848 968 10217 17250 14501 5420 17251 14504 14506 8735 1233 10651 9476 10961 17194 17509 14370 23955 23956 23957 8736 8867 9793 10332 10899 23275 23958 23959 23276 23960 20642 8737 1422 9864 9810 10907 23961 18188 23962 23963 23964 22761 8738 7795 6314 9843 10512 23965 23966 23967 23968 23969 23970 8739 8073 8071 10019 10078 22475 15341 23971 22476 15342 15303 8740 9284 10097 9758 10882 20811 17987 20810 23911 18285 20147 8741 8517 9123 10504 11166 23972 23973 18879 21818 21820 23974 8742 9143 9697 8817 10776 23975 16701 14049 16490 15161 16702 8743 9518 10388 9900 10917 21075 23976 22182 21076 23977 20652 8744 1035 320 9910 10879 2971 23978 18720 18574 16437 23979 8745 9768 9972 9303 10777 23763 23764 14062 14063 11469 23980 8746 9564 9243 10087 10635 23981 20670 23982 22374 23983 17277 8747 283 10302 9950 10685 23984 21612 23985 23986 19062 20639 8748 9238 9985 9456 10043 11486 19539 21444 11425 21439 12564 8749 902 10525 9631 10548 23643 23987 23988 23644 15265 16785 8750 9514 9324 9685 10608 23880 21007 23879 23989 23990 14729 8751 9608 10498 1138 10509 23991 15587 23992 23993 17304 13897 8752 8251 8764 9729 10954 23175 23177 12094 23902 23904 23994 8753 8481 10404 9455 10973 21610 20445 23501 23995 20448 20450 8754 8906 9840 10491 10925 23996 18489 23997 23998 23999 24000 8755 976 10180 9984 10515 24001 14023 24002 24003 24004 24005 8756 6935 6992 9505 10253 7433 11447 18252 18376 11449 11448 8757 9393 10044 9465 10621 24006 15050 23144 23145 12524 15052 8758 1434 10501 9556 10507 21700 19454 19435 24007 24008 14525 8759 9370 9889 9773 10739 21406 20561 16183 12981 13456 18365 8760 8968 8493 9820 10878 24009 24010 23565 16225 23566 24011 8761 8716 10186 9764 10993 24012 24013 17048 17050 17049 22552 8762 1422 9810 9864 11058 23962 18188 23961 24014 20779 20778 8763 9808 9875 1309 11057 14800 14799 14801 20776 24015 20777 8764 9815 9884 7830 11059 13842 13840 12241 20780 24016 11204 8765 6314 6324 9843 10512 6811 24017 23966 23970 23969 24018 8766 8200 10900 10271 11175 24019 24020 24021 24022 24023 24024 8767 9795 9932 9817 10619 23824 23825 13426 19184 19186 24025 8768 10036 10492 9334 11149 13835 17797 24026 15042 24027 20896 8769 9297 9755 9875 10754 24028 20710 15456 21404 18417 13746 8770 9562 9843 6324 10512 24029 24017 24030 24031 24018 23969 8771 8620 10030 8346 10883 24032 24033 24034 24035 24036 24037 8772 681 683 10148 10939 4837 22671 14890 14893 14895 22672 8773 9587 9668 9256 11042 20898 17361 20963 24038 17367 17369 8774 837 825 9695 10047 4668 24039 24040 24041 24042 24043 8775 8308 8230 9696 10048 24044 20164 24045 24046 20162 20163 8776 1078 1077 9850 10635 3248 22613 24047 24048 21408 22614 8777 661 10247 9619 10466 23590 24049 24050 23589 24051 23588 8778 9463 10075 8432 10582 21783 24052 14673 21196 21195 15955 8779 8341 9711 9044 9840 23401 16181 24053 19628 17288 17289 8780 350 348 347 10152 3172 3143 3173 15729 17489 15856 8781 10043 10094 8104 10797 14422 12741 23421 23600 12742 11832 8782 424 429 430 10145 3552 3558 3557 17293 24054 17294 8783 1445 681 683 10148 4844 4837 4845 23544 22671 14890 8784 464 467 1297 10147 3757 3760 3759 13200 13202 17227 8785 8037 8038 8030 10149 24055 22699 17493 17492 13975 22700 8786 8045 8038 8044 10149 22702 24056 24057 21373 24058 22700 8787 837 10047 9695 11118 24041 24042 24040 24059 24060 24061 8788 9982 10066 9484 10397 19256 22504 24062 17791 24063 17162 8789 990 789 626 10151 4571 4563 4569 22769 18326 19701 8790 1011 789 1044 10151 5362 5359 5363 21466 24064 19701 8791 325 9723 304 10953 23260 11443 2960 24065 23486 23485 8792 9508 10169 9971 10175 17340 16357 24066 17343 16360 16362 8793 8045 10149 8044 10954 21373 24058 24057 20974 24067 21374 8794 1011 10151 1044 10953 21466 24064 5363 21638 24068 21639 8795 1564 10345 9626 10573 24069 16859 24070 24071 20756 24072 8796 9012 9724 8977 10768 18458 23442 23440 20900 24073 13987 8797 9765 10251 9359 10743 22896 24074 24075 17450 22263 22897 8798 1228 6373 156 10345 24076 24077 1947 24078 24079 24080 8799 7998 9877 9736 10938 15003 18260 19553 24081 24082 23312 8800 9737 9888 832 10939 21098 21517 21518 24083 24084 24085 8801 10117 10286 9433 10609 19686 22607 18614 21011 22034 21012 8802 429 430 10145 10967 3558 24054 17294 17816 17818 24086 8803 7582 9907 9549 10401 24087 15866 23562 23563 22173 20475 8804 9709 10324 9424 10948 13028 13912 13910 18359 24088 18360 8805 9374 10161 9653 10985 24089 18641 24090 24091 17963 18941 8806 832 9737 829 11108 21518 24092 4853 21519 24093 21520 8807 8322 10446 9772 10453 22594 22595 22592 24094 18129 22609 8808 609 10764 610 11100 24095 24096 4478 24097 24098 24099 8809 8867 9793 7687 10332 23275 24100 24101 23959 24102 23958 8810 10122 10206 9361 10853 16963 24103 14290 15846 12455 21342 8811 9942 9328 10804 11179 12820 12821 11936 24104 21983 21982 8812 10042 10234 1154 11015 16628 22186 24105 24106 22187 17860 8813 1280 1422 9810 10907 6236 23962 24107 24108 23964 23963 8814 7930 10539 8673 10646 23810 24109 24110 23811 24111 23812 8815 9453 9927 9822 10627 22098 21940 14531 13319 24112 24113 8816 6356 9507 6293 10531 19139 21716 6704 24114 21744 16248 8817 1034 1339 10177 10433 5727 24115 13067 21378 21379 15291 8818 7599 9496 9975 10201 19307 24116 24117 19309 22266 14415 8819 7690 10332 9793 10456 24118 23958 24119 24120 18778 24121 8820 9481 9424 10015 10958 24122 16344 21259 23767 24123 24124 8821 956 954 9847 10229 4208 22292 19691 15188 12465 24125 8822 931 10482 9436 10592 21571 21572 19118 20596 17843 24126 8823 9582 9813 10305 10928 23512 14671 20389 23513 24127 23514 8824 9977 10482 868 11124 24128 24129 21710 21712 21711 24130 8825 9897 10048 9210 10393 16854 24131 22625 20904 24132 20905 8826 9127 10311 9502 10565 24133 24134 23417 24135 13329 16147 8827 9936 10559 850 10730 16329 19221 24136 24137 19222 18433 8828 10212 10405 9522 10471 23403 15788 23404 16066 16772 24138 8829 1388 10177 1134 11101 24139 23182 3415 24140 23184 23186 8830 9609 10457 10042 10816 14997 21052 21499 23524 24141 21540 8831 1395 868 9691 9977 5697 21708 22309 24142 21709 21710 8832 9561 9290 10024 11001 22852 22853 22854 24143 12858 19357 8833 1181 1116 1257 10243 3982 5256 3898 24144 22185 15024 8834 9505 10732 9858 10981 24145 20138 20817 24146 20139 20141 8835 10505 10715 9323 10792 22148 14366 23322 22150 14226 15645 8836 9340 10199 9922 10500 13508 24147 24148 19513 24149 15838 8837 529 444 10411 11165 3658 24150 22717 24151 24152 24153 8838 7929 7943 9846 10891 24154 24155 24156 24157 24158 24159 8839 9280 10069 9478 10204 14276 24160 23706 12540 13626 16031 8840 8403 9586 10291 10336 24161 24162 22809 22807 22808 24163 8841 8355 10661 8701 10811 14296 24164 24165 16970 24166 16971 8842 6290 6350 1574 9617 6630 22799 24167 18733 22803 22802 8843 8689 8471 10291 11043 24168 22650 24169 24170 22651 20763 8844 7622 9603 10746 10935 15917 23109 24171 15922 24172 15920 8845 8019 10425 8613 10491 22597 22798 22797 22665 24173 22664 8846 1035 10053 966 10879 18573 23451 3040 18574 23453 18575 8847 9518 9355 10388 11111 19963 12257 21075 22676 19317 19316 8848 859 10558 9888 10781 24174 22493 20908 20910 20909 24175 8849 848 1534 9501 10073 5614 22206 24176 24177 24178 24179 8850 695 1481 9845 10450 4914 22338 18821 18823 18822 22713 8851 9720 10019 9341 10988 24180 24181 24182 24183 21805 20432 8852 9395 9977 9603 10755 20580 13547 20581 23842 19358 19078 8853 9375 10367 10150 11087 13965 11351 13964 19884 22210 18008 8854 9701 9835 8252 10299 11957 20946 20945 24184 24185 24186 8855 326 9486 9776 10724 21559 22603 22602 23392 24187 23393 8856 9337 9695 9769 10943 23197 12044 17422 23198 23598 16940 8857 9626 9829 9388 10520 20657 24188 24189 20659 11915 20660 8858 8620 10030 10883 11114 24032 24037 24035 24190 24191 24192 8859 8696 10069 7860 10813 24193 23085 24194 24195 23087 23086 8860 8234 8062 8704 11045 24196 13785 19354 19356 13348 13787 8861 957 859 10254 10781 5663 20907 24197 24198 20911 20910 8862 504 632 595 10028 3960 3959 3958 17778 12327 13612 8863 9715 10340 9589 10955 23059 22990 20514 23061 22991 22922 8864 228 286 10409 11041 2569 24199 17154 17067 17156 24200 8865 538 9728 10952 11192 24201 24202 24203 24204 24205 24206 8866 9462 10259 9334 10741 18633 24207 24208 24209 22085 24210 8867 1268 9950 283 10302 24211 23985 2853 24212 23984 21612 8868 9382 10281 9799 11163 24213 22709 24214 16191 22710 22712 8869 9922 10270 9308 10815 21852 24215 24216 21855 13314 21856 8870 7670 7731 7662 9675 18516 24217 20771 19126 20952 19125 8871 7722 9660 7721 9675 24218 20749 24219 24220 20747 20748 8872 9223 10326 10063 10937 20587 22438 24221 20589 22439 18626 8873 9837 10612 1057 10987 15945 20033 20032 17171 24222 17365 8874 9699 9921 8927 10698 20427 23431 23429 24223 24224 12587 8875 1097 9751 758 9791 24225 13427 5209 24226 11941 13429 8876 9403 9806 9454 11143 17157 11452 22622 21103 23948 24227 8877 6984 9525 6938 10610 14151 23117 7436 23040 17562 23041 8878 266 10869 10032 11057 24228 20320 22344 22346 22348 24229 8879 9349 9888 9737 10432 24230 21098 24231 12488 21102 21101 8880 538 10952 1259 11192 24203 24232 4111 24204 24233 24205 8881 6339 9501 6315 10440 24234 17785 6818 24235 19434 19433 8882 8077 8023 10798 11151 24236 15515 24237 24238 16591 16585 8883 8448 8538 10899 10958 24239 20178 22278 22281 22282 23788 8884 9601 9895 9408 10614 23546 15279 18250 19753 15280 14662 8885 7611 7624 7620 9541 22036 22938 24240 22035 22937 18699 8886 8823 10586 9794 11198 24241 16497 24242 24243 24244 24245 8887 9723 9774 9381 10629 12598 24246 24247 24248 17914 24249 8888 9594 10674 10149 11033 23739 14257 24250 23741 24251 23742 8889 9372 10161 9525 10702 14085 21675 21674 14320 22351 14321 8890 9240 9588 9590 10919 24252 20727 24253 24254 17815 20812 8891 8784 9975 9110 10914 23297 24255 24256 23298 24257 23299 8892 9352 9772 10773 11022 23541 16886 24258 23542 19395 19394 8893 1562 9971 851 11076 17239 23178 5631 22776 23350 22777 8894 9334 9462 10036 10259 24208 24259 24026 24207 24260 18633 8895 8311 10503 9100 10793 24261 16693 24262 24263 23654 23656 8896 1350 361 293 10500 2906 2895 2904 14757 22064 15108 8897 9657 10757 8306 10946 23890 23888 23885 19230 24264 24265 8898 1430 9845 804 10479 24266 12064 5428 24267 24268 21773 8899 9570 10251 213 10765 23607 23605 23603 24269 24270 24271 8900 349 9905 10000 10772 20790 20789 20788 24272 24273 24274 8901 1079 1384 9719 10173 3251 17730 21389 21897 18101 18102 8902 350 9543 351 10309 15731 14315 3178 15732 16322 15733 8903 9296 9923 10400 11003 24275 22571 12262 22540 21357 22573 8904 9240 9590 9588 10894 24253 20727 24252 24276 17983 20728 8905 219 217 9732 10943 2522 23584 19114 23597 23599 24277 8906 9319 9877 9736 10965 18987 18260 19588 18989 19554 15008 8907 8481 9455 9134 10785 23501 22357 21605 24278 24279 19122 8908 1254 10434 9593 10852 22431 23796 24280 22432 24281 18618 8909 9522 10212 10471 10883 23404 16066 16772 23405 24282 23406 8910 511 10628 10152 10683 16550 16279 24283 16332 15860 16415 8911 9272 10665 9945 10772 24284 20350 24285 24286 20354 20353 8912 537 10198 10027 10822 21385 21780 21779 21386 14089 19614 8913 9802 10117 9398 10261 24287 19030 14045 24288 24289 23799 8914 7843 7841 7842 10617 24290 24291 17023 16058 21198 24292 8915 1074 10139 1360 10174 13002 13805 2179 13392 14280 11462 8916 9841 10659 1482 11020 14275 23814 24293 24294 23815 23817 8917 414 413 10636 10678 3495 14811 24295 24296 16484 16483 8918 8165 10484 9951 10867 24297 19345 24298 24299 24300 24301 8919 1155 1564 9626 10573 5635 24070 20752 20755 20756 24071 8920 1401 1395 868 11124 5321 5697 4859 21917 21711 22310 8921 523 9610 450 10357 17057 24302 3665 17059 24303 17058 8922 8211 10184 9746 10821 19136 24304 24305 19137 24306 17337 8923 587 451 879 10292 3693 3695 3694 15140 18064 20271 8924 210 9514 10276 11185 19041 18320 23898 23520 24307 23521 8925 9393 9465 9997 10850 23144 24308 12862 15684 15683 23146 8926 10125 10912 257 11182 24309 18179 24310 16874 24311 24312 8927 9755 9875 9250 10701 20710 18416 13744 13282 12843 18228 8928 8762 8099 8095 11092 24313 24314 23916 23919 23921 24315 8929 9442 10290 9133 10861 17242 17241 17243 24316 24317 24318 8930 761 9648 865 9791 12893 14324 5229 11942 14322 14323 8931 7935 9490 7930 10646 24319 22331 24320 24321 23811 23813 8932 1075 9930 9899 10389 23334 14634 23333 24322 18399 15631 8933 9553 10172 704 10548 16139 22117 24323 24324 22118 14611 8934 7822 9878 7883 10308 24325 21814 21252 18678 21251 17895 8935 7822 9883 7824 10308 24326 14666 18676 18678 14664 14665 8936 7820 9878 7822 10308 17894 24325 18679 17712 18678 17895 8937 7822 7823 9876 10308 18677 18706 24327 18678 18705 15072 8938 7821 7822 9876 10308 18680 24327 21988 17713 18705 18678 8939 9767 10210 9360 10751 16965 24328 24329 21557 23552 21558 8940 545 10158 1298 11150 23771 24330 3855 23772 24331 23773 8941 296 289 295 10302 2882 2877 2883 14706 18063 24332 8942 7974 10003 10991 11112 24333 23448 23720 23721 20740 23450 8943 9456 9985 9238 10029 19539 11486 21444 15328 18798 24334 8944 740 9710 10399 10667 24335 16778 15983 15984 14652 24336 8945 8847 8143 9515 10437 23934 23649 23935 24337 13308 24338 8946 9480 9983 9202 10248 24339 11833 16639 11785 16638 24340 8947 7706 8868 7728 10948 24341 22515 24342 24343 22517 22516 8948 7738 7666 6994 10373 24344 24345 24346 24347 24348 24349 8949 793 10170 10076 10510 23467 23466 23465 24350 20634 24351 8950 8775 8533 7753 10895 24352 20960 20496 20498 20500 24353 8951 9809 10513 8747 11133 24354 24355 24356 24357 24358 24359 8952 1588 7594 191 9603 23105 24360 1669 23107 24361 23106 8953 9409 10507 9895 10614 14523 17014 15493 23613 14662 18767 8954 9711 10700 9331 11063 24362 23034 16180 22393 22392 24363 8955 9426 10362 10030 10580 15120 18264 18263 24364 21460 19541 8956 8949 10001 10756 10950 24365 21667 24366 24367 24368 24369 8957 8661 9825 9939 10832 24370 20273 24371 24372 24373 14717 8958 7998 9736 7999 10938 19553 23748 23747 24081 24374 24082 8959 829 9737 832 10939 24092 21518 4853 24375 24084 24083 8960 1334 10106 9992 10778 24376 24377 22194 22197 22199 24378 8961 9757 9929 555 10679 15654 24379 24380 17300 24381 24382 8962 1428 10168 1342 10578 16750 24383 5861 23797 23798 24384 8963 7888 8912 10185 11146 24385 22875 24386 24387 22879 22878 8964 8565 10544 9591 10546 22151 24388 24389 22153 24390 22152 8965 8884 9821 8885 10889 24391 22122 24392 24393 22124 22126 8966 1446 984 10476 10736 4142 24394 19666 20250 20252 24395 8967 986 10594 10370 11052 24396 22824 21655 20955 21659 24397 8968 9707 10078 9498 10639 24398 15302 21401 24399 15305 15307 8969 8064 8063 8065 9598 24400 19567 24401 14980 13503 19568 8970 8627 6899 7750 9692 24402 24403 24404 24405 24406 24407 8971 9370 9826 9497 9969 24408 24409 15855 11367 15622 24410 8972 329 1069 9671 10273 3060 24411 21139 13165 21138 15602 8973 1126 795 9489 10637 5385 23615 22435 24412 17826 18650 8974 9378 10001 9849 10756 24413 24414 23675 23677 23679 21667 8975 449 10431 9822 10873 24415 24416 21942 21944 21943 24417 8976 9465 9348 10038 10354 23594 12872 22062 23596 24418 17302 8977 830 1482 1128 11020 5542 5541 5540 24419 23816 23815 8978 822 10167 10473 10923 24420 24421 24422 24423 24424 24425 8979 9215 9520 9901 10406 16646 17475 12797 21733 24426 21732 8980 9712 9295 9916 11089 12665 22494 17578 22730 22731 19297 8981 10128 10648 8644 10892 19233 20553 24427 24428 20554 18058 8982 9940 10239 9721 10956 24429 24430 24431 22242 24432 24433 8983 9096 9578 8428 10449 12275 24434 24435 12301 24436 12302 8984 9455 9828 9134 10785 18959 19590 22357 19122 24279 19437 8985 9250 9458 9987 10701 23554 17160 11952 12843 15517 15198 8986 9299 10078 9707 10639 24437 24398 17603 15373 24399 15307 8987 8236 8125 8237 10487 24438 16860 13610 13611 12048 16765 8988 9493 9333 9946 10665 21964 14495 24439 21160 24440 12274 8989 9231 9681 9471 10596 14658 23735 23736 16275 18817 16276 8990 6290 9617 1574 11085 18733 22803 24167 22899 24441 22900 8991 9419 9632 9507 10168 15344 21844 24442 16751 16244 24443 8992 9462 9334 9991 10741 24208 15462 24444 24209 20493 22085 8993 830 1128 10659 11020 5540 15608 24445 24419 23817 23816 8994 1229 685 10330 11188 4091 21950 24446 24447 21953 21952 8995 7666 6919 6994 10373 24448 7038 24345 24349 24348 24449 8996 1291 11025 1162 11192 24450 22703 5313 24451 24452 24453 8997 9393 9997 9465 10044 12862 24308 23144 24006 15050 24454 8998 9866 10791 9249 11078 16170 24455 23686 21596 23687 23001 8999 8208 10638 9494 10821 24456 24457 24458 24459 24460 24461 9000 6360 10127 10154 11088 17638 17643 17641 24462 24463 22254 9001 6989 9836 9525 9949 24464 23124 24465 24466 17875 19942 9002 9792 10294 9418 11002 18578 24467 24468 18581 24469 18582 9003 8369 8909 8891 10615 24470 22472 24471 24472 18162 17465 9004 9250 9987 9458 10032 11952 17160 23554 23939 20318 24473 9005 9291 9989 9457 10034 13448 20844 18552 21191 14133 24474 9006 9260 9988 9461 10035 18218 21506 15884 12315 15885 24475 9007 9462 9991 9334 10036 24444 15462 24208 24259 24026 24476 9008 9348 9465 10038 10789 23594 22062 12872 13158 13790 19529 9009 9463 9992 9321 10075 14011 14010 13707 21783 21784 24477 9010 545 604 1298 10158 4164 4166 3855 23771 24330 21604 9011 1438 346 355 10160 3169 3167 3170 22396 21349 13234 9012 346 327 345 10160 3074 3072 3075 13234 13236 20616 9013 1038 1438 10159 10160 5123 24478 22455 24479 24480 22396 9014 1038 1414 1438 10160 3275 3171 5123 24479 22396 24481 9015 8268 8388 8389 10161 17851 16104 24482 17852 16105 14084 9016 869 9977 9436 10482 13425 11792 13424 21570 21572 24128 9017 9252 10158 9871 11101 15643 14767 15642 24483 23185 24484 9018 7599 9496 7600 10897 19307 17582 20436 24485 24486 22428 9019 8061 8954 10363 10634 24487 14252 24488 24489 20473 20472 9020 1152 265 10202 10441 2764 19751 24490 24491 19752 15708 9021 9551 10282 9208 10346 23636 13262 12389 12393 12392 23631 9022 684 868 10482 11124 4858 24129 24492 24493 24130 21711 9023 8143 9515 10437 11010 23649 13308 24338 23652 24494 23653 9024 9208 10561 9551 10983 13396 24495 12389 12755 12757 24496 9025 9206 10030 9456 10132 20488 20489 20335 23516 12492 24497 9026 8297 9820 10664 10888 15318 24498 24499 15356 24500 15357 9027 8451 8845 8265 10611 13093 24501 24502 13799 24503 13800 9028 1038 10160 10159 11179 24479 24480 22455 22458 22460 24504 9029 1038 1414 10160 11179 3275 24481 24479 22458 24504 24505 9030 585 544 482 10651 3849 3848 3850 17192 17315 17193 9031 8874 10680 10248 10862 21947 19959 24506 21948 24507 20228 9032 1162 11025 10244 11192 22703 24508 24509 24452 24510 24453 9033 9608 10447 10444 11129 13180 15560 15561 24511 20821 23101 9034 6373 10169 156 10345 24512 24513 24077 24080 24079 18284 9035 8061 10363 10238 10634 24488 22535 24514 24489 24515 20473 9036 9484 10240 9663 11074 20482 21043 22190 20485 22192 20486 9037 9417 10052 9678 10281 15145 24516 24517 12500 24518 17736 9038 8283 9599 8282 10239 24519 23064 24520 24521 23062 23063 9039 1101 9720 463 11159 24522 19429 3744 24523 19431 19430 9040 9497 10508 951 11158 22212 22213 19720 24524 24525 24526 9041 611 10764 612 11078 21593 24527 4484 21594 24528 21595 9042 8663 9053 10582 11038 24529 23128 24530 24531 23129 20532 9043 6942 6941 6946 10695 7306 7407 7370 19013 22178 20912 9044 8024 9743 8705 10329 16433 24532 18807 18781 18809 19401 9045 1230 9750 685 10330 22400 24533 4862 21949 21950 22399 9046 9038 8987 10266 10630 24534 24535 23891 23894 23895 24536 9047 9236 10135 9743 10421 21799 16431 16089 16090 14953 16435 9048 6905 6966 6964 10781 7343 7342 7341 24537 20185 20184 9049 732 10370 10594 10733 23847 22824 24538 23332 14330 22826 9050 6935 6926 9858 10356 7337 22947 20818 21726 21727 22949 9051 8554 9620 8564 10567 14853 24539 24540 13940 24541 14854 9052 9854 9424 10071 10668 18227 17444 15883 16662 22998 24542 9053 520 521 1031 11074 3157 4038 4037 20484 24543 24544 9054 7776 10443 9580 10823 19546 19547 19545 24545 24546 24547 9055 9255 9648 9943 10871 12894 24548 22317 11324 22320 12895 9056 1126 10637 9489 10990 24412 17826 22435 24549 24550 24551 9057 1459 9768 9804 11054 18567 14174 18566 24552 22643 22642 9058 9423 10529 9786 10603 24553 24554 24555 15512 24556 24557 9059 1156 490 883 9925 3880 3889 3891 18221 18818 23863 9060 8949 10081 10001 10950 24558 14177 24365 24367 24369 14888 9061 9754 10371 397 10928 18470 24559 21790 21792 21791 24560 9062 1061 9545 10381 10678 24561 24562 17839 17840 13036 24563 9063 9323 10768 9724 10851 24564 13987 22864 22865 18440 20901 9064 7593 9548 7612 10226 23245 16496 24565 24566 16602 12601 9065 9480 9832 9202 9983 23267 11995 16639 24339 11833 11997 9066 1462 9954 10354 11005 24567 20600 24568 24569 24570 24571 9067 9271 9527 9624 9998 24572 24573 24574 13414 24575 24576 9068 9342 9625 9531 9999 18193 24577 24578 24579 13958 24580 9069 7555 10657 7638 10686 22470 24581 22306 20118 22308 22471 9070 8264 9985 8233 11027 21289 24582 24583 21290 24584 20679 9071 6930 7794 9693 10225 24585 24586 24587 24588 24589 24590 9072 7930 9490 9904 10539 22331 22330 22329 23810 24591 23809 9073 8489 9002 8490 10164 24592 17940 11627 13237 13239 17941 9074 8803 6930 7794 9693 24593 24585 24594 24595 24586 24587 9075 1229 10330 9890 11188 24446 22691 24596 24447 24597 21953 9076 9118 10477 9399 10643 20958 19917 20526 18887 20527 24598 9077 9260 9681 9988 10978 16008 21507 18218 18220 12509 24599 9078 1173 9558 6295 10570 19642 19643 19641 24600 24601 24602 9079 9817 9889 8498 10984 18362 24603 24604 24605 24606 24607 9080 8229 10591 8227 10740 24608 19924 24609 24610 19926 19928 9081 1234 10236 998 10307 21316 23708 6002 20282 23427 21317 9082 9681 10068 1235 10978 21602 14017 21603 24599 24611 20509 9083 9822 9927 9217 10627 21940 24612 24613 24112 24614 24113 9084 9455 10401 9828 10555 16608 19651 18959 11895 18961 16609 9085 7886 9939 9713 10989 19575 19574 19573 24615 24616 24617 9086 9992 10625 9321 10806 20832 22954 14010 20835 24618 20836 9087 685 10330 532 11184 21950 24619 4089 22159 24620 22160 9088 6963 959 189 10781 24621 2116 24622 24623 24624 24625 9089 867 1264 10640 11140 4451 24626 24627 24628 24629 24630 9090 8283 8282 8280 10239 24520 24631 24632 24521 24633 23062 9091 374 9991 1175 10986 11543 24634 3300 15763 24635 15764 9092 606 607 10192 10842 4463 24636 11841 15773 15775 24637 9093 9337 9769 9695 10449 17422 12044 23197 12303 24638 24639 9094 1585 1601 1099 10401 5932 2262 2426 24640 22172 24641 9095 1146 9524 983 10366 19472 24642 4186 19473 24643 19051 9096 9459 10426 9990 10888 24644 24645 12653 24646 15358 24647 9097 10468 10884 10013 11170 23835 24648 24649 23837 24650 23838 9098 9448 10312 856 10542 17689 24651 19583 20040 20041 22544 9099 6972 7789 8805 9826 24652 24653 24654 24655 24656 24657 9100 9639 9746 9298 10791 24658 24659 24660 24661 15571 24662 9101 9442 10861 9133 11034 24316 24317 17243 19441 19440 24663 9102 9308 10593 9837 10858 24664 18975 24665 18873 18978 18980 9103 7758 10107 8846 10841 24666 24667 24668 21930 24669 18426 9104 8810 8950 9576 10340 24670 11283 24671 24672 11363 11362 9105 8000 8705 9877 10329 18808 24673 23311 18782 15349 18809 9106 1229 685 9890 10330 4091 24674 24596 24446 22691 21950 9107 1186 7730 170 10716 24675 22805 1778 24676 22464 21154 9108 396 10606 397 10928 24677 21789 3403 24678 21791 21793 9109 9344 9492 10209 10390 22420 22422 22421 24679 24680 18934 9110 8581 9074 9050 10584 24681 24682 12835 12833 12834 24683 9111 8368 10586 8823 11198 24684 24241 24685 24686 24243 24245 9112 1403 1408 10381 10819 6083 24687 21005 22742 16110 24688 9113 9469 9849 9383 10001 24689 24690 24691 24692 13245 24414 9114 7984 9968 9831 10622 17724 17723 17661 24693 11961 16655 9115 9890 10411 444 11165 24694 24150 24695 24696 24153 24152 9116 1401 9691 1395 11124 20981 22309 5321 21917 22310 21713 9117 9342 9561 10024 11001 22857 22854 12670 12859 12858 24143 9118 9430 10456 9914 11052 17878 24697 24698 19469 24699 23161 9119 1164 318 617 9776 3006 3029 3031 11781 11783 24700 9120 9616 9370 9889 10587 24701 21406 24702 20970 24703 13151 9121 1259 10952 9865 11192 24232 24704 24705 24233 24706 24205 9122 9814 10335 9279 10554 23218 23219 23217 24707 23356 19023 9123 7886 9939 7885 10351 19575 24708 24709 19576 24710 19577 9124 6956 9620 6903 9912 23760 21426 7333 23761 21428 14852 9125 771 10129 10077 10274 13813 21881 24711 13816 18965 13817 9126 9608 10808 7584 10998 13184 13182 13179 24712 24713 24714 9127 432 1389 9805 10538 3600 24715 22296 22294 22295 24716 9128 1288 1518 10324 11046 2299 14462 24717 24718 14466 14465 9129 8503 9105 10110 10334 23071 12878 24719 23072 12879 12050 9130 6391 6316 7628 10396 6423 24720 24721 24722 24723 24724 9131 9841 9909 9266 10495 13701 13699 12515 24725 14587 20684 9132 1047 10501 1434 10507 15606 21700 3257 15607 24007 14525 9133 421 427 9957 10104 3544 21757 24726 24727 21755 21756 9134 9857 10454 9348 10767 23839 12611 23098 19842 12429 23841 9135 9535 9277 10617 10763 24728 18645 22081 22082 18648 18647 9136 994 10508 9932 10969 24729 22214 24730 24731 15101 24732 9137 1430 9845 10479 11054 24266 21773 24267 24733 24734 24735 9138 732 9550 985 10370 23331 20801 4341 23847 24736 22825 9139 9444 9950 9939 10612 16944 23668 20272 16943 20276 15432 9140 421 427 1125 9957 3544 3546 3535 24726 22105 21757 9141 8818 9167 9673 9926 22443 22442 18407 15541 17320 24737 9142 9342 9999 9531 10441 24579 13958 24578 24738 13962 13961 9143 7564 10391 10690 10747 24739 24740 24741 24742 24743 24744 9144 9637 10092 9808 10129 24745 23056 24746 24747 13852 23058 9145 9468 10300 8499 10398 23680 24748 15149 15153 15152 24749 9146 9851 10339 9561 10698 19580 24750 24751 19581 24752 18860 9147 952 951 10508 11158 2380 22213 24753 24754 24526 24525 9148 9865 10952 9728 11192 24704 24202 18689 24706 24206 24205 9149 8826 9142 10216 10459 24755 16125 24756 24757 17777 17776 9150 529 10411 530 11184 22717 24758 3659 24759 22158 24760 9151 10017 9482 10505 10607 24761 24762 20083 20799 20798 24763 9152 9754 10606 9319 10928 17281 24764 19587 21792 23515 21793 9153 9493 9602 9281 10829 16412 24765 24766 24767 24768 24769 9154 9463 9909 9841 10495 21067 13701 24770 14675 24725 20684 9155 9666 10448 9856 10750 12663 20243 21997 24771 24772 24773 9156 10012 10505 9557 10963 23323 20105 24774 23326 24775 23327 9157 9918 257 10912 11182 17924 18179 18180 24776 24312 24311 9158 9702 10352 9218 10695 17021 21346 24777 21568 21345 20096 9159 7762 9138 8786 10663 19508 24778 22087 17442 22089 15895 9160 1178 1179 1177 10201 2416 6186 2255 14413 20537 21514 9161 9525 9836 6989 10253 23124 24464 24465 22577 24779 20440 9162 7930 7934 9904 10620 24780 24781 22329 22332 22334 24782 9163 9994 10084 7896 10336 24783 24784 18788 12685 18789 24785 9164 675 558 9706 11180 4230 14008 22684 22685 16472 16471 9165 9455 9907 9828 10401 22358 15636 18959 16608 19651 20475 9166 9485 10650 8029 10817 19330 22718 22226 24786 24787 24788 9167 9281 9602 9493 10683 24765 16412 24766 17285 16414 16413 9168 9413 9550 10594 11008 24789 22823 15699 14844 24790 24791 9169 9856 10025 9446 10616 20241 14099 20242 20943 14905 14907 9170 8126 8690 10299 10522 21500 17952 24792 21502 18302 13861 9171 159 6291 9554 10572 19262 19266 19264 24793 24794 24795 9172 8122 8121 10066 10397 24796 17030 19255 19258 17162 17161 9173 9340 9499 9939 10989 15168 23667 20669 24797 24617 24798 9174 8152 9735 8049 11022 21860 23727 23725 23347 24799 23348 9175 557 9757 555 10679 13528 24380 3975 17299 24381 17300 9176 6965 6964 6967 9676 7449 7451 7297 22870 19165 19495 9177 7943 10487 9846 10891 24800 15673 24155 24159 24158 24801 9178 9460 10033 9986 10569 12224 24802 16846 16206 17089 24803 9179 969 9984 976 10180 13945 24002 5972 14022 24001 14023 9180 8266 10026 9433 10680 21923 21922 20058 23005 23007 20223 9181 8267 9028 10187 10732 24804 24805 16723 16726 16728 24806 9182 9469 10001 9383 10081 24692 13245 24691 23413 14178 14177 9183 9415 10310 943 10530 20842 20843 17676 18070 18557 24807 9184 9669 10636 9957 10966 21845 24808 24809 21262 24810 21846 9185 7658 7711 7717 10427 19776 24811 23169 19556 23170 19607 9186 9489 10140 10335 10554 23614 23220 22738 22739 19023 23357 9187 1441 10155 208 10255 15014 14073 2257 16086 24812 14842 9188 10465 10564 10024 10915 17125 18473 16179 24813 24814 24815 9189 571 831 645 11007 4295 4294 4293 12436 12860 12437 9190 9699 9921 9214 10745 20427 13459 18812 20460 12422 17419 9191 1116 9829 10864 10959 24816 21689 15022 15025 15027 24817 9192 8403 7890 9586 10336 24818 24819 24161 22807 24163 24820 9193 532 10330 9865 11184 24619 24821 24822 24620 24823 22160 9194 9505 10187 10112 10702 24824 24825 24826 22352 24827 16474 9195 9362 10300 9468 10676 12973 23680 21236 13507 12310 24828 9196 9229 10145 9863 10430 22740 17295 15353 15355 14957 17446 9197 9440 10066 10469 10522 13860 24829 23581 13862 23580 13863 9198 9183 7644 7793 9793 18059 24830 24831 18060 24832 16753 9199 7870 10185 9755 11006 24833 22874 13281 12891 15798 12285 9200 9986 10033 9256 10569 24802 24834 20540 17089 22923 24803 9201 9719 10087 9243 10635 24835 20670 11217 15337 17277 23983 9202 769 9971 10578 11050 23682 16239 24836 23683 24837 22928 9203 1470 843 927 10380 5592 5590 5593 19827 24838 19828 9204 9390 10633 9984 10968 13822 19182 16895 24839 24840 24841 9205 939 942 1477 9709 5933 2271 5937 16416 13025 14470 9206 699 10142 9953 10769 18136 18137 18135 24842 13587 17399 9207 9264 9526 10302 10843 24843 17954 22486 19743 24844 24845 9208 8015 8012 10474 10929 24846 23030 15574 15577 15579 23033 9209 475 9908 9681 11125 13543 14660 14659 24847 24848 24849 9210 248 245 9719 10146 2655 15805 17567 17565 17566 23015 9211 465 463 9720 10147 3753 19429 24850 18154 23018 23017 9212 681 682 9721 10148 4835 24851 14892 14890 14891 24852 9213 723 9722 682 10148 14271 24853 4842 13204 24852 14272 9214 789 10151 9993 10826 19701 21467 21465 19702 22261 19439 9215 9627 9830 9434 10571 24854 16814 19820 19819 18523 24855 9216 9564 10171 10080 10494 24856 24857 24858 23374 24859 24860 9217 7782 10382 7651 10896 24861 20547 22402 22404 20506 20549 9218 6944 9740 7809 10205 24862 24863 24864 24865 24866 15871 9219 813 557 812 10679 4222 4214 4223 20004 24867 17299 9220 7964 8792 7862 10263 24868 21420 11670 12130 13230 21421 9221 955 954 9847 10130 5675 22292 12178 13130 13580 22293 9222 1348 1394 10741 10859 3651 24869 20492 15791 20494 24870 9223 8047 10219 9756 10758 24871 19534 13366 13085 17131 24872 9224 248 245 1384 9719 2655 2665 2664 17567 17730 15805 9225 466 465 463 9720 3754 3753 3755 23243 19429 24850 9226 681 682 679 9721 4835 4834 4832 14892 17150 24851 9227 723 725 682 9722 4848 4847 4842 14271 24853 16689 9228 9699 9214 10173 10745 18812 22251 22250 20460 22368 12422 9229 10279 10325 9435 11011 19098 24873 24874 20322 24875 20495 9230 10197 10378 9508 11098 18035 23783 23781 24876 24877 24878 9231 9779 10574 9432 10736 22732 18877 24879 22734 20251 22735 9232 700 890 9666 10142 4939 15103 12661 12659 12660 13099 9233 8002 9877 8705 10329 15204 24673 19206 15350 18809 15349 9234 530 9890 685 10330 22690 24674 4090 22157 21950 22691 9235 253 1267 252 9503 2698 2697 2689 24880 24881 24882 9236 9239 9925 9683 10975 24883 18222 12945 12946 12789 17594 9237 423 10722 9863 10945 24884 24885 24886 24887 24888 24889 9238 8440 8257 10556 10782 24890 20134 24891 24892 20783 19897 9239 785 10070 1455 10541 21735 24893 5344 16946 24894 15490 9240 6936 6935 9505 10356 7426 18252 11579 11560 11580 21726 9241 9330 10188 9556 10933 12697 24895 20286 12377 20287 14279 9242 9374 9616 9889 10587 24896 24702 24897 15819 24703 20970 9243 8345 9010 8971 10627 14752 23492 24898 14753 23493 13318 9244 7946 10527 7947 10902 12502 21292 24899 21315 19706 21294 9245 9459 10726 10426 10888 12461 24900 24644 24646 24647 24901 9246 9999 10339 1466 10980 16584 24902 24903 22744 24904 24905 9247 9798 10266 9038 11116 23892 23891 23893 24906 24907 24908 9248 8291 8292 10656 10942 24909 16039 24910 24911 16620 16619 9249 9591 10338 7712 10546 14515 14514 14516 24390 24912 24913 9250 9266 10256 10004 10540 14140 17904 23335 13178 16428 24914 9251 9289 9952 10519 10901 24915 21146 24916 16869 21147 12358 9252 9685 9765 9311 10974 17414 22945 22967 17417 22946 17418 9253 9279 9868 9731 10517 22383 22446 24917 24918 22448 22447 9254 9458 10202 10701 10869 19750 19187 15198 20136 18230 19188 9255 9121 10785 10443 10823 24919 24920 24921 24922 24547 24923 9256 189 1241 6969 10781 2120 23120 24924 24624 24925 24926 9257 10370 10594 9428 11052 22824 24927 21656 21659 21658 24397 9258 9951 9952 9431 10519 24928 12776 13493 13497 13496 21146 9259 8867 10332 9145 10899 23959 24929 23273 23276 23277 23960 9260 9833 10398 9468 10834 24930 15153 20091 20093 20092 23819 9261 985 9550 636 10367 20801 15043 4061 24931 14555 14970 9262 9799 10292 1094 10502 23660 22111 23658 24932 22112 19900 9263 1026 1028 1027 9678 4677 6048 5744 24933 12107 16719 9264 8340 8339 10184 10493 24934 23336 16013 16015 14199 23381 9265 609 10192 10764 11100 24935 24936 24095 24097 24099 24937 9266 9495 9698 7704 10675 11474 14394 14392 24938 24939 24940 9267 1430 876 9845 11054 5724 24941 24266 24733 24735 24942 9268 1361 321 10210 10486 3045 12549 23942 23945 14193 11975 9269 9380 9777 9594 9937 24943 24944 24945 24946 23740 24947 9270 9362 9847 10300 10676 12183 24948 12973 13507 24828 16164 9271 602 867 1264 10640 4449 4451 3201 24949 24626 24627 9272 9547 9407 10468 10884 20405 13490 20406 23834 23835 24950 9273 8619 10883 10212 11114 24951 23406 24952 24953 24954 24191 9274 9746 11048 9639 11104 24955 24956 24658 24957 24958 24959 9275 9397 10011 9830 11177 24960 18078 24961 23481 17700 21003 9276 9411 10407 9725 10969 11564 22860 13809 13927 14449 14404 9277 7556 6391 7628 10396 24962 24721 24963 24964 24723 24722 9278 8125 10318 9622 10568 16764 16763 16762 24965 24966 24967 9279 9484 10066 9663 10397 22504 13398 22190 24063 17163 17162 9280 9809 9869 8355 10874 17976 16968 14293 20070 24968 18207 9281 873 9813 9882 10876 12245 13838 13836 24969 20068 20067 9282 873 9882 9812 10875 13836 13839 12243 24970 24971 18273 9283 9818 9885 790 10873 15210 19154 19418 20064 24972 20065 9284 7916 9876 9816 10877 13172 15218 22349 24973 20073 20075 9285 8498 9889 9817 10878 24603 18362 24604 24974 20071 18210 9286 8283 8324 9599 10337 24975 17543 24519 24976 17542 12576 9287 7683 160 7664 9914 24977 24978 24979 24980 24981 24982 9288 9652 9311 9887 10662 24983 24984 24985 24986 24987 22944 9289 8934 9506 8931 10359 18831 23731 24988 16552 20648 18109 9290 8439 8676 10453 10823 24989 24990 14723 24991 24992 24993 9291 10004 10304 9211 11038 16426 16295 16427 20533 23096 20534 9292 8464 8605 9630 10811 19501 19502 13760 21524 21523 24994 9293 9341 10019 9720 10734 24181 24180 24182 20593 23715 24995 9294 1308 10146 248 11117 21268 17565 2656 21269 17568 17570 9295 1524 647 714 10172 4675 4574 4676 16997 16998 18150 9296 1056 1441 209 10608 2487 2482 2485 16461 21307 14728 9297 828 822 10473 10923 5504 24422 24996 24997 24424 24423 9298 898 951 9932 10508 5796 13772 24998 24999 22214 22213 9299 8899 8495 8497 9795 11729 23573 25000 11931 23572 11932 9300 8530 9168 9802 10286 21423 22587 22067 19914 17805 25001 9301 8847 10224 10437 10914 25002 21513 24337 25003 25004 25005 9302 6366 6365 10417 10663 6850 22363 22993 22846 22365 22364 9303 8120 8798 7826 11091 25006 23206 15564 15566 12219 23207 9304 9255 9640 9869 10647 25007 18206 25008 12350 25009 25010 9305 10338 10470 1547 10716 19251 17575 16923 19951 25011 25012 9306 9549 10342 9907 10404 23262 25013 15866 15066 15867 25014 9307 9390 9984 10288 10968 16895 22147 13604 24839 18535 24840 9308 1421 10194 1436 11196 25015 25016 5454 25017 25018 25019 9309 1180 1507 9832 10201 2420 21907 12655 15976 18132 21910 9310 9351 9474 9861 10322 15742 19096 19095 25020 25021 18463 9311 9479 7967 10304 10540 19633 19214 16294 16298 16297 19220 9312 9522 9206 10405 10883 25022 25023 15788 23405 23407 25024 9313 860 1487 10254 11108 5549 25025 23473 23474 23126 25026 9314 7944 7932 9796 10397 25027 18159 25028 14129 18160 17790 9315 9450 10199 9922 10989 15834 24147 25029 25030 25031 25032 9316 461 9800 633 11159 17866 25033 3734 16348 25034 17867 9317 8483 8922 8882 10756 25035 23290 25036 25037 23508 21666 9318 9506 10089 10244 10728 18833 18836 18837 22608 25038 18313 9319 10070 10267 1455 10541 25039 25040 24893 15490 24894 19603 9320 9471 10176 9681 10798 25041 16009 23735 19689 23737 15516 9321 8126 10299 8190 10522 24792 25042 25043 21502 25044 18302 9322 839 935 10310 10366 5574 21838 16722 19404 17226 21840 9323 9498 9346 10020 10805 12672 18304 22056 12673 16352 11569 9324 337 9493 340 10683 21161 17404 3125 20921 16334 16414 9325 992 6906 1511 10562 25045 25046 2040 25047 21310 25048 9326 8605 8578 8464 10452 25049 12103 19501 19503 12105 12104 9327 7599 9975 9496 10897 24117 24116 19307 24485 22428 25050 9328 704 628 10172 10820 4577 16791 22117 25051 15445 16793 9329 7860 10069 7971 10204 23085 14278 25052 23084 12538 16031 9330 9970 10509 9628 10842 20467 15812 25053 19521 15774 20468 9331 9565 10263 9478 10626 25054 22653 20594 19865 20429 25055 9332 9468 10300 9847 10676 23680 24948 25056 12310 16164 24828 9333 222 10727 9762 11106 25057 25058 25059 25060 25061 25062 9334 9799 10502 1370 11072 24932 25063 21177 22819 22818 25064 9335 1370 445 9610 11072 3640 23765 21176 22818 22817 25065 9336 9328 9898 9788 11060 17802 16157 17706 25066 16457 16459 9337 7579 10347 7574 10423 18949 25067 25068 18950 25069 18951 9338 609 608 10192 11100 4472 25070 24935 24097 24937 25071 9339 9368 9819 9555 9833 13331 25072 25073 12015 25074 13332 9340 1472 9997 10689 10850 25075 15399 23949 23951 23953 15683 9341 9207 9701 9677 11161 23362 20478 23359 25076 20479 17938 9342 1064 9593 1254 10434 23795 24280 6085 12035 22431 23796 9343 9276 9941 9468 10016 23787 15258 11877 13340 13341 18298 9344 6978 9616 6974 9826 20409 25077 7457 20412 25078 20413 9345 9526 10336 10302 10843 20380 25079 17954 24845 24844 25080 9346 9481 10294 10579 10899 20277 20281 20280 20180 25081 25082 9347 9321 10221 9718 10625 13709 14000 13999 22954 22955 18054 9348 10112 10187 9505 10732 24825 24824 24826 25083 24145 16728 9349 9256 9986 9838 10601 20540 15501 18232 25084 19324 11797 9350 9729 9388 9917 10410 12093 12619 12620 22079 22078 25085 9351 8906 10306 9840 10925 25086 11533 23996 23998 24000 25087 9352 1350 10331 9623 10860 14756 14755 14754 25088 19292 25089 9353 10323 10505 253 10715 22557 25090 25091 25092 25093 22148 9354 7900 7907 9500 10699 25094 25095 12682 14116 14118 25096 9355 8453 9164 10378 10645 25097 19499 25098 21093 18040 19500 9356 8126 8690 8190 10299 21500 25099 25043 24792 25042 17952 9357 6342 10343 9618 11077 25100 20254 25101 25102 25103 19731 9358 9047 10457 9609 10816 14996 14997 13713 25104 23524 21540 9359 9517 9898 9328 10160 20560 17802 23455 21348 25105 25106 9360 9414 9614 10565 10691 25107 15662 13856 14179 14181 20102 9361 7622 10746 7588 10935 24171 25108 25109 15922 25110 24172 9362 7764 9025 6978 9616 25111 25112 20410 20408 20409 14919 9363 8498 8496 9817 10984 25113 25114 24604 24606 24605 25115 9364 1158 6951 155 10807 25116 25117 2088 25118 25119 25120 9365 8910 8094 8482 9781 21564 15814 25121 21565 15815 14354 9366 333 1090 336 9783 3097 3106 3105 20196 11865 11479 9367 9441 10290 8815 10574 14746 17082 17080 21585 21584 17246 9368 176 10375 9558 11068 22001 21628 19644 25122 25123 25124 9369 1118 10700 10005 11012 22831 25125 25126 22832 15164 21062 9370 6963 9676 959 10781 25127 25128 24621 24623 24625 21136 9371 7749 10514 9475 10863 25129 25130 25131 25132 25133 25134 9372 8337 9792 8980 11002 18711 25135 25136 20011 25137 18581 9373 9328 10159 9517 10160 17707 20559 23455 25105 21348 24480 9374 9270 9653 9889 10618 21122 18208 18361 17297 25138 25139 9375 8175 8249 10052 10773 19490 15146 25140 19491 16209 16990 9376 9958 10150 9379 10799 23227 23228 15799 25141 18866 25142 9377 8453 9164 9165 10378 25097 25143 21092 25098 25144 19499 9378 8565 9184 9591 10544 25145 25146 24389 22151 24388 25147 9379 382 9581 386 10433 25148 25149 3347 21873 12361 25150 9380 9592 10417 9437 10663 22994 18011 11400 15897 15896 22365 9381 542 10392 10018 11093 12832 12593 12830 25151 25152 25153 9382 521 520 344 11075 3157 3153 3158 21914 23503 21133 9383 9520 10128 9218 10589 19890 25154 25155 19892 25156 19766 9384 1459 9804 1391 11054 18566 25157 5494 24552 25158 22643 9385 9509 10150 9958 10799 25159 23227 21761 25160 25141 25142 9386 327 9916 9504 10705 20615 22091 22090 25161 25162 25163 9387 8102 8105 8897 10043 25164 25165 11421 11424 11426 25166 9388 8045 10632 9744 10954 25167 17453 20971 20974 20976 25168 9389 7630 7612 7593 9548 16495 24565 25169 16149 23245 16496 9390 9310 9646 9877 10606 19223 15004 17650 12140 25170 25171 9391 1114 9577 988 11111 25172 22931 5117 25173 21463 20654 9392 622 10672 10448 10750 22765 25174 25175 22767 24773 22768 9393 8182 9995 8183 10437 21829 17828 25176 21830 21040 16911 9394 7955 7947 7956 10902 25177 19705 25178 25179 19707 19706 9395 1375 10177 1388 11101 25180 24139 5336 25181 24140 23186 9396 9183 7793 8542 9793 24831 25182 20769 18060 20768 24832 9397 9525 10713 9372 10849 20664 21676 21674 22354 22655 25183 9398 9351 9474 10322 11118 15742 18463 25020 25184 18464 17332 9399 7753 8775 9495 10581 20496 20497 11472 18295 18297 25185 9400 9251 10048 9696 11137 20127 20162 25186 25187 20165 20167 9401 537 9893 535 10822 25188 19310 4112 21386 19599 15605 9402 6376 7760 8876 10414 25189 25190 25191 25192 25193 18508 9403 9851 9999 9561 10339 25194 25195 24751 19580 24750 16584 9404 9789 10215 9330 10933 25196 15648 20672 20673 12377 16476 9405 9074 10574 9050 10584 25197 18876 24682 24683 12834 18878 9406 9805 10287 432 10887 25198 25199 22296 22298 22297 25200 9407 9349 9770 9888 10432 21127 21925 24230 12488 21101 19861 9408 9437 9635 9626 10230 20513 22505 25201 16657 20781 16952 9409 630 9487 10392 10613 20936 22987 22985 25202 25203 15481 9410 9435 10690 10446 11119 25204 22487 25205 25206 22490 22492 9411 9752 9334 10492 11149 22236 17797 13832 15040 20896 24027 9412 471 10314 9768 10479 25207 11567 25208 25209 14908 12845 9413 9383 9849 9469 10578 24690 24689 24691 25210 25211 25212 9414 1280 9810 10463 10907 24107 25213 25214 24108 25215 23964 9415 8811 8074 10034 10422 14242 14134 25216 14243 14135 11549 9416 9234 9588 10070 10267 18212 25217 15471 20234 25039 19602 9417 10019 10078 9341 10988 15342 21803 24181 20432 21805 18413 9418 7881 9881 10351 10843 15687 25218 25219 16018 25220 16019 9419 8499 10300 9468 11028 24748 23680 15149 16985 16987 14836 9420 475 406 9908 11125 3469 25221 13543 24847 24849 25222 9421 9490 9945 9783 10553 19003 20714 25223 19004 13477 13075 9422 471 9768 991 10479 25208 25224 3792 25209 25225 14908 9423 7900 7901 7907 10699 25226 25227 25094 14116 25096 25228 9424 6974 9826 9616 9969 25078 20413 25077 25229 21162 24410 9425 1043 1322 10342 10439 5034 15128 23261 23264 16384 16383 9426 9484 10469 10066 10522 25230 24829 22504 25231 13863 23580 9427 8144 8182 8183 10437 25232 25176 23609 23611 21040 21830 9428 8810 9576 8808 10481 24671 25233 25234 25235 25236 25237 9429 8752 9639 11048 11104 25238 24956 25239 25240 24959 24958 9430 944 181 1546 9542 1842 2344 2343 20182 25241 19597 9431 8958 7817 10662 10974 25242 25243 21129 17416 21130 25244 9432 7564 10391 7563 10690 24739 25245 25246 24741 25247 24740 9433 284 9499 285 10685 16201 18695 2845 25248 25249 18609 9434 1291 9750 11025 11192 25250 16328 24450 24451 24453 25251 9435 386 9581 10203 10433 25149 25252 12542 12361 13286 25150 9436 177 6331 1537 10730 25253 25254 1911 25255 25256 25257 9437 1534 980 848 9501 5618 5617 5614 22206 24176 20947 9438 558 10489 9707 11180 25258 25259 14009 16471 16473 25260 9439 9515 9604 9396 10018 25261 25262 25263 12936 25264 25265 9440 9365 9774 9723 10629 12597 12598 11341 25266 24248 24249 9441 1478 829 9737 11108 5536 24092 25267 25268 21520 24093 9442 530 10411 9890 11184 24758 24694 22690 22158 22692 24760 9443 7930 9490 7935 10620 22331 24319 24320 22332 25269 22333 9444 9375 9488 9958 10150 20491 13756 11511 13964 23227 15890 9445 8307 9067 8504 10231 18374 20421 25270 18375 20422 16856 9446 9091 9096 8504 10231 15863 25271 20420 15864 20422 12278 9447 10066 10346 9440 10469 25272 23630 13860 24829 23581 25273 9448 9244 9486 9960 10977 25274 18069 25275 25276 25277 25278 9449 973 9830 1505 11177 25279 21001 5980 25280 20604 17700 9450 9759 10183 8984 11040 16393 19487 25281 21264 19488 17488 9451 537 10027 597 10822 21779 14087 4123 21386 12319 14089 9452 9101 9778 8434 10892 15473 25282 25283 15476 25284 15477 9453 465 10147 9720 10734 18154 23018 24850 18155 23715 18156 9454 8434 9778 9101 10976 25282 15473 25283 25285 18370 18372 9455 9637 9808 9230 10129 24746 13848 13648 24747 13363 13852 9456 8772 8565 9184 9591 25286 25145 25287 25288 25146 24389 9457 8821 9673 9167 9926 17319 22442 25289 15413 24737 17320 9458 7695 10085 9614 10530 23143 15660 23142 25290 23115 25291 9459 1136 1135 10158 11101 6161 16282 25292 25293 24484 25294 9460 6378 10031 9617 10277 25295 25296 21249 21250 17216 25297 9461 609 610 608 11100 4478 4477 4472 24097 25071 24098 9462 1478 832 829 11108 5535 4853 5536 25268 24093 21519 9463 8358 8359 8360 11102 25298 17307 23410 23412 16536 17308 9464 1375 1388 1134 11101 5336 3415 6162 25181 23184 24140 9465 1136 1134 1135 11101 6160 6158 6161 25293 25294 23184 9466 860 832 1487 11108 5548 5550 5549 23474 25026 21519 9467 9703 10100 9547 10599 19247 16319 20404 23926 15533 16321 9468 9119 9734 7752 10598 25299 14561 25300 25301 14697 14696 9469 8696 9478 10069 10813 25302 24160 24193 24195 23086 17919 9470 9447 10429 1519 10555 19922 19921 18895 18178 19443 25303 9471 9659 10131 548 10551 18663 22340 25304 25305 22341 13406 9472 9467 9276 9940 10547 20705 20704 13298 21000 25306 11880 9473 1505 10011 193 10744 21002 25307 2408 20602 22674 21077 9474 521 10346 1031 11074 25308 25309 4038 24544 24543 15776 9475 9681 10068 9260 10566 21602 19510 16008 17149 12913 25310 9476 6330 9562 194 10570 21036 19814 21035 25311 25312 25313 9477 6914 6989 9525 9949 7389 24465 16674 17876 17875 24466 9478 8012 10474 9584 10597 23030 19847 23031 25314 21630 16155 9479 8627 6899 9692 10533 24402 24407 24405 25315 13774 25316 9480 10347 10402 9403 10423 18948 19070 18042 18951 17767 18952 9481 461 459 633 9800 3733 3735 3734 17866 25033 22662 9482 10212 10405 9206 10883 23403 25023 25317 23406 25024 23407 9483 10263 10626 8792 10813 25055 25318 21421 19940 21422 25319 9484 822 10194 10167 10923 25320 25321 24420 24423 24425 25322 9485 9332 10693 9879 10990 25323 15455 13724 16790 14186 23285 9486 9308 9623 9519 10858 25324 25325 17007 18873 22930 21159 9487 7701 9502 7725 10581 25326 13324 25327 25328 19301 17721 9488 8888 10024 9477 10771 18472 21217 21218 23164 23163 25329 9489 285 10685 9499 10751 25249 18609 18695 20694 21414 25330 9490 9455 10401 1532 11090 16608 16607 13748 11898 13749 25331 9491 9982 10307 9357 10857 25332 19920 13019 25333 25334 25335 9492 9871 10068 9260 10978 14764 19510 18219 12510 18220 20509 9493 810 702 1421 11196 4650 4950 4949 16706 25017 25336 9494 7825 7824 10095 10761 25337 18385 25338 25339 18386 14667 9495 8221 10025 8223 10977 21619 25340 25341 21620 25342 21621 9496 9211 9472 10460 10769 21069 17461 19623 17328 19461 17397 9497 8908 9944 9781 10835 25343 19305 25344 25345 25346 13578 9498 9383 9469 10081 10578 24691 23413 14178 25210 25347 25211 9499 8983 10164 9856 10874 16851 25348 25349 16229 25350 16852 9500 1525 1598 10242 10770 6178 25351 19173 25352 25353 25354 9501 10271 10312 9448 10542 22541 17689 25355 22543 20040 22544 9502 9564 10080 9275 10494 24858 25356 25357 23374 12374 24859 9503 9746 9866 9298 10791 25358 16083 24659 24662 15571 16170 9504 1097 758 761 9791 5209 5214 5216 24226 11942 11941 9505 9210 10048 9897 10936 24131 16854 22625 22627 20156 21017 9506 10115 10315 7835 10464 22221 25359 25360 14190 25361 18455 9507 7852 9564 10494 10927 23372 23374 23375 25362 25363 25364 9508 9823 9895 9277 11071 14375 18646 22686 25365 25366 25367 9509 9783 9945 9272 10665 20714 24285 25368 14441 24284 20350 9510 9486 9244 9960 10672 25274 25275 18069 21563 25369 25370 9511 1486 998 1464 10307 6004 6001 4661 14409 14035 23427 9512 9585 10115 7837 10415 25371 14189 25372 25373 12674 15979 9513 8281 9612 8279 10239 25374 11599 25375 25376 25377 25378 9514 10042 10234 9274 10816 16628 19380 25379 24141 14600 25380 9515 331 10049 10705 11075 25381 25382 19966 19967 19760 21134 9516 8529 8530 10477 10609 25383 19916 25384 25385 21635 21857 9517 10303 10413 9603 11153 18511 15919 18512 23153 20582 21170 9518 9231 10596 9471 10798 16275 18817 23736 15514 19689 25386 9519 853 1575 1536 9672 5021 5643 5642 25387 25388 25389 9520 9505 10610 9525 10849 17563 23041 22353 22355 22354 25390 9521 10049 9412 10705 11075 19745 23558 25382 21134 19760 23560 9522 9710 10184 9797 10493 25391 23337 25392 23489 14538 14199 9523 9720 10088 10019 10988 25393 25394 24180 24183 20432 25395 9524 9682 10254 963 11185 25396 25397 25398 25399 25400 25401 9525 9402 9549 10439 10563 15067 23265 14784 15068 25402 15069 9526 1223 1575 9672 10417 6224 25389 22073 25403 23901 25404 9527 8283 8325 8324 10337 25405 25406 24975 24976 12576 25407 9528 9457 10735 9989 10838 21472 25408 20844 18554 12162 21473 9529 810 9748 10182 11031 16703 18085 25409 16705 14078 16704 9530 763 9648 764 10641 25410 19459 5232 25411 13524 14942 9531 763 865 9648 10641 5230 14324 25410 25411 14942 14943 9532 9844 10291 9763 11060 25412 25413 25414 25415 25416 25417 9533 9678 10973 9455 11090 22179 20448 11897 11899 11898 20725 9534 7931 8967 7944 9796 16635 14128 25418 16637 25028 12203 9535 1261 10509 9948 10842 14007 14512 15383 25419 21848 20468 9536 10467 10707 9258 10724 23136 25420 25421 23139 25422 23140 9537 9316 9730 9705 10177 16402 19505 11577 13068 16572 23499 9538 9302 9880 9768 9972 14113 14175 15523 18603 23763 17480 9539 7975 7976 7974 11112 22496 25423 23719 20738 23721 22497 9540 8275 10099 9940 11032 15123 13300 15468 25424 20689 25425 9541 9276 9940 9721 10956 20704 24431 25426 25427 24432 22242 9542 8617 10252 8316 10621 25428 25429 25430 25431 25432 25433 9543 9337 9578 9521 10231 12276 19692 25434 12279 19304 12280 9544 10167 10249 703 10473 25435 25436 25437 24421 25438 25439 9545 8730 8393 10335 10554 25440 19019 25441 25442 19023 19022 9546 10074 9359 10743 10841 25443 22263 17409 18427 18770 22265 9547 9671 10467 9258 10724 23936 25421 25444 23938 25422 23139 9548 835 834 836 10352 4985 5557 5556 18004 25445 12656 9549 9412 10236 9962 10269 21652 19436 25446 21653 25447 21654 9550 9219 9642 9809 10666 25448 25449 17975 17978 17980 25450 9551 1232 9574 6348 10572 21026 21025 21024 25451 25452 25453 9552 1211 10072 1528 10427 25454 17882 2373 25455 17885 17887 9553 1223 9672 10297 10417 22073 15388 22074 25403 25456 23901 9554 7574 10347 9996 10423 25067 23283 25457 25069 21258 18951 9555 7586 7584 10808 10998 25458 13182 25459 25460 24714 24713 9556 8902 9641 8741 9807 20264 19678 25461 12235 25462 20263 9557 1252 9829 1116 10959 25463 24816 3984 25464 15025 24817 9558 1250 1205 1105 10461 6128 6127 3431 17478 11856 12444 9559 159 1271 1555 9554 1991 2229 2228 19264 25465 19265 9560 9742 9357 10307 10857 17412 19920 11352 25466 25335 25334 9561 9765 9887 9311 10662 25467 24984 22945 15083 22944 24987 9562 8368 8822 8823 10586 25468 25469 24685 24684 24241 25470 9563 1585 1099 9549 10401 2426 22169 25471 24640 22173 22172 9564 9139 9697 6333 11096 19425 25472 20732 16840 20733 15411 9565 9452 10287 9803 10379 25473 22588 25474 25475 25476 25477 9566 9643 10093 9810 10146 25478 23844 25479 25480 21267 23846 9567 8671 7939 10620 10652 21648 25481 20375 19447 20377 21649 9568 9356 9651 9815 10673 25482 12767 18017 18019 18021 25483 9569 365 1082 9850 10441 3264 25484 17540 15899 23517 25485 9570 9453 10108 9927 10627 13316 22116 22098 13319 24113 13320 9571 6962 7750 6899 9692 25486 24403 7111 25487 24407 24406 9572 9030 10022 11002 11081 21822 25488 25489 21823 25490 15698 9573 9426 10127 10362 11088 16975 17873 15120 17177 17179 22254 9574 8697 9534 10349 10624 16822 25491 25492 25493 15824 25494 9575 8252 9701 10299 11161 20945 24184 24185 25495 25496 17938 9576 1291 9750 1162 11025 25250 25497 5313 24450 22703 16328 9577 1223 1575 1540 9672 6224 5274 6225 22073 15389 25389 9578 9551 9739 9394 9853 20629 11816 12731 25498 14703 15360 9579 9874 10182 1065 10995 25499 20187 25500 25501 20188 18089 9580 9255 9869 9751 10647 25008 19911 13428 12350 17322 25009 9581 9409 9585 9556 10188 15300 25502 25503 15299 24895 13685 9582 7809 6910 7766 9740 25504 25505 25506 24863 25507 25508 9583 807 10193 10017 10614 20730 21902 21901 25509 19754 25510 9584 1241 9682 6969 10781 23121 23122 23120 24926 24925 20551 9585 8661 10832 9939 10989 24372 24373 24371 25511 24617 25512 9586 1516 9552 1124 10226 21233 19663 2357 21232 19871 19870 9587 350 351 348 10309 3178 3177 3172 15732 15857 16322 9588 8541 9854 9081 10958 25513 20046 25514 25515 22569 15598 9589 8032 10219 8047 10758 25516 24871 25517 25518 13085 24872 9590 9922 10199 9450 10500 24147 15834 25029 24149 15837 15838 9591 9471 9274 10190 11015 16573 13226 16574 25519 25520 19381 9592 8696 8792 10626 10813 25521 25318 25522 24195 25319 21422 9593 8673 10539 9855 10646 24109 25523 25524 24111 18406 23812 9594 9215 9569 9659 10328 25525 25526 25527 25528 25529 21679 9595 1195 1436 10194 11083 4322 25016 25530 25531 25532 25533 9596 8602 8563 7758 10074 22527 21928 25534 22528 21929 17407 9597 6906 6924 6991 10562 7347 7348 7182 25048 21311 18115 9598 8071 9498 8907 10805 15304 22058 25535 25536 22059 12673 9599 627 647 628 9714 4573 4572 4568 22028 16792 18149 9600 9435 10453 10446 10690 25537 22609 25205 25204 22487 22611 9601 1001 10221 9474 10731 25538 25539 16092 20398 20400 25540 9602 281 284 285 10685 2842 2845 2844 25541 25249 25248 9603 1126 1307 9902 10534 5386 25542 22433 22436 13870 25543 9604 9417 10051 9678 10052 25544 16741 24517 15145 24516 25545 9605 9444 9788 10787 11043 25546 20761 25547 25548 20765 20764 9606 9419 10168 9507 10531 16751 16244 24442 14500 16248 16247 9607 6342 6340 10343 11077 6701 19729 25100 25102 19731 19730 9608 9918 10059 9275 10912 17926 16300 14760 18180 25549 18181 9609 1306 692 771 10129 4899 4897 4900 17230 13813 12430 9610 956 1463 995 10130 5957 5955 5962 15186 17232 11868 9611 955 956 954 10130 5956 4208 5675 13130 22293 15186 9612 189 6905 6963 10781 25550 7239 24622 24624 24623 24537 9613 9263 10025 9567 10536 14098 17571 17572 13559 25551 18350 9614 8771 9544 7660 10321 25552 25553 25554 25555 25556 25557 9615 1384 10173 1431 11117 18102 25558 2680 17731 25559 18103 9616 9751 10666 756 11138 19913 25560 25561 25562 25563 25564 9617 281 10685 285 10751 25541 25249 2844 25565 20694 25330 9618 9765 9887 9359 10251 25467 25566 24075 22896 24074 25567 9619 7562 10391 9511 10412 19700 16176 19698 25568 25569 25570 9620 1257 10243 9573 10881 22185 17681 22184 25571 25572 25573 9621 176 1173 1552 9558 2019 2318 2317 19644 25574 19642 9622 631 9950 1086 10612 25575 16817 4595 25576 16816 15432 9623 10036 10259 8951 11149 24260 25577 23535 15042 23537 25578 9624 9441 10376 1212 10427 21190 21188 18702 17886 18790 21990 9625 418 9903 416 10543 14736 25579 3518 22482 25580 18317 9626 1094 439 433 10502 3604 3593 3605 22112 22576 19899 9627 9977 9978 9395 11153 25581 16469 20580 20584 20583 18776 9628 822 1421 10167 10194 4951 25582 24420 25320 25321 25015 9629 9274 9471 9928 11015 16573 16582 16581 19381 17859 25519 9630 7758 8846 6986 10841 24668 25583 25584 21930 25585 24669 9631 9864 10535 1410 11058 16861 18185 25586 20779 18186 17123 9632 7843 10704 9906 10997 25587 25588 13667 13670 13672 25589 9633 9476 9667 9448 10961 25590 25591 25592 23956 19585 25593 9634 6343 7760 6376 10414 18506 25189 6529 18507 25192 18508 9635 10003 10601 10033 11112 25594 25595 23449 23450 20739 25596 9636 9587 9668 9323 10768 20898 11801 21971 20964 24564 17363 9637 9270 9889 9773 10618 18361 20561 13452 17297 14159 25138 9638 610 10764 9866 11100 24096 21592 25597 24098 25598 24099 9639 9406 10274 9683 11144 25599 13815 20853 20854 18225 16735 9640 6900 6973 6982 10812 7317 7319 7316 25600 22660 22890 9641 9302 9972 9768 10777 18603 23763 15523 25601 14063 23980 9642 454 10497 452 11063 25602 23852 3698 25603 23850 23851 9643 9688 9992 9321 10806 25604 14010 25605 25606 24618 20835 9644 1104 9920 1162 11025 14473 25607 6123 12651 22703 14474 9645 8794 9485 10050 10650 22225 19328 22725 22719 19202 19330 9646 9587 10768 9323 10851 20964 24564 21971 25608 22865 20901 9647 10111 10450 9240 10919 16623 22916 22914 21956 24254 21957 9648 9229 10421 10145 10430 15354 25609 22740 15355 17446 14958 9649 9310 9877 9754 10606 17650 18259 14236 12140 17281 25170 9650 625 9931 789 10826 13520 20759 4562 13521 19702 13522 9651 9598 10237 8065 10988 13782 13780 13503 25610 25611 25612 9652 9708 10304 9472 10419 21816 13719 21068 19382 13721 11441 9653 382 9581 10433 10569 25148 25150 21873 21874 16207 21470 9654 9471 10068 9681 10566 18816 21602 23735 22849 17149 25310 9655 555 9757 507 9929 24380 25613 3972 24379 25614 15654 9656 8481 9455 10785 10973 23501 19122 24278 23995 25615 20448 9657 753 273 1284 10316 2795 2804 2806 18712 12566 25616 9658 273 753 271 10316 2795 2794 2792 25616 12621 18712 9659 1433 1247 1385 10317 6022 5460 5681 12626 18717 25617 9660 7600 9967 9496 10592 25618 25619 17582 17583 13621 25620 9661 9257 10535 9864 11058 19981 16861 18189 19982 20779 17123 9662 936 10376 10366 10736 21189 21263 19552 25621 25622 21569 9663 10360 11003 8009 11062 22055 25623 25624 16984 25625 25626 9664 1430 1458 804 9845 5429 5427 5428 24266 12064 25627 9665 7595 7621 7617 9828 21827 25628 17911 15633 17913 19650 9666 10033 10601 10003 10991 25595 25594 23449 12897 23448 25629 9667 8944 8403 10291 10699 25630 22809 25631 25632 22811 22810 9668 6928 9475 10011 10373 25633 18077 25634 25635 20132 20131 9669 343 9916 10049 11089 25636 25637 25638 25639 25640 22731 9670 1581 10310 935 10818 25641 21838 5577 25642 25643 25644 9671 6973 9826 9497 10812 25645 24409 22889 22890 22659 25646 9672 8670 8875 10157 11051 23805 25647 21295 20575 21297 16526 9673 9234 10020 9845 10353 21772 21771 12065 25648 25649 19937 9674 8222 8983 9856 10874 25650 25349 25651 25652 25350 16229 9675 9791 10331 9343 10837 22773 25653 14967 14327 14969 22774 9676 9459 9990 10726 10888 12653 11970 12461 24646 24901 15358 9677 9351 9727 9474 11118 15171 15223 15742 25184 17332 17331 9678 1143 9608 1138 10509 25654 23992 6169 25655 17304 23993 9679 9143 8819 8817 9697 25656 25657 14049 23975 16701 23027 9680 9485 9613 10478 10670 25658 25659 21824 21826 19379 22978 9681 9305 9869 9751 10811 17204 19911 21869 17205 21872 16972 9682 9754 10371 9236 10945 18470 18468 18257 25660 25661 25662 9683 6320 10643 9802 10725 25663 22068 25664 25665 25666 25667 9684 297 10500 9837 10858 25668 16124 18977 18979 18978 25669 9685 443 9594 10178 11165 22884 22888 22886 25670 25671 25672 9686 9234 9845 9790 10353 12065 25673 18211 25648 15966 25649 9687 8288 8167 9637 10660 25674 25675 13574 14637 14638 25676 9688 8898 9637 8167 10660 20966 25675 25677 25678 25676 14638 9689 9395 9977 9691 10684 20580 21709 25679 12638 25680 25681 9690 9382 10222 10156 10973 16190 22842 20313 16844 18958 20449 9691 1392 9487 10930 11124 20935 15229 23443 25682 25683 25684 9692 9706 10639 10020 11130 25685 25686 23363 25687 18143 25688 9693 177 10261 6331 10730 25689 25690 25253 25255 25257 23801 9694 674 9647 10233 10489 21878 20815 21879 25691 17820 25692 9695 9678 9417 10281 11163 24517 12500 24518 25693 22712 22711 9696 1543 10272 7670 11017 25694 18514 20772 15628 18517 18519 9697 9626 9388 10230 10520 24189 14576 20781 20659 14577 11915 9698 257 10125 254 10912 24310 25695 2707 18179 25696 24309 9699 9222 9494 10091 10192 25697 25698 20758 25699 25700 25701 9700 9534 9613 9233 10488 25702 25703 25704 16826 13016 25705 9701 8207 10271 8200 10900 25706 24021 25707 25708 24019 24020 9702 1365 10476 9916 11089 25709 17451 25710 25711 22731 23914 9703 9365 9658 9572 9930 18992 23306 11338 11538 11540 25712 9704 306 307 1035 10827 2934 2968 2967 25713 18571 21458 9705 8794 10050 10368 10650 22725 18791 25714 22719 17189 19202 9706 418 9903 9491 11012 14736 19872 22481 14741 19874 14739 9707 1482 9841 1128 10659 24293 17401 5541 23814 15608 14275 9708 7764 6978 8805 9826 20410 25715 25716 20411 24656 20412 9709 8943 10490 10064 10947 21511 21512 21509 25717 25718 19034 9710 9257 9643 9810 10708 23300 25479 18187 18190 18192 19806 9711 192 1583 942 9709 1862 2274 2401 13920 14470 18333 9712 9044 8722 9840 10996 25719 25720 17288 12686 17290 25721 9713 8311 10311 10503 10793 25722 25723 24261 24263 23656 25724 9714 9802 10286 9399 10643 17805 19684 25725 22068 20527 22069 9715 9406 9683 9536 10162 20853 19326 25726 19592 17738 25727 9716 9537 9684 9411 10163 21742 11320 23705 13767 16375 17971 9717 1163 7664 9914 10521 25728 24981 25729 25730 25731 25732 9718 9379 9488 9980 10802 23226 20174 25733 23353 25734 23351 9719 9975 10224 9110 10914 25735 25736 24255 23299 24257 25005 9720 8200 10271 8933 11175 24021 25737 25738 24022 25739 24023 9721 7794 9103 9693 10225 25740 25741 24586 24590 24589 25742 9722 9582 10305 9813 10355 20389 14671 23512 23757 14796 25743 9723 8944 10291 9763 10699 25631 25413 25744 25632 25745 22811 9724 9249 9746 9639 10791 25746 24658 25747 24455 24661 24662 9725 8631 10231 9096 10752 25748 12278 25749 25750 13931 16802 9726 9484 10346 10066 10469 25751 25272 22504 25230 24829 25273 9727 306 10200 9910 10369 25752 25753 25754 25755 25756 22906 9728 8661 9825 8232 9939 24370 25757 25758 24371 25759 20273 9729 10033 10601 9256 11112 25595 25084 24834 20739 25760 25596 9730 1001 10322 1000 10731 19338 18462 5108 20398 25761 20399 9731 851 10039 1236 11076 23179 13843 5261 23350 18292 18486 9732 9549 9403 10439 10563 25762 17084 23265 15069 25402 17158 9733 9501 10073 1534 10440 24178 24179 22206 19433 22207 19138 9734 9503 10323 253 10715 25763 25091 24880 25764 25093 25092 9735 1057 292 290 10612 2889 2888 2890 20033 13723 13512 9736 8563 10107 7758 10841 17405 24666 21928 18425 21930 18426 9737 9439 10224 10010 10437 14984 22827 15982 16776 13135 21513 9738 8448 8539 8538 10958 25765 25766 24239 22281 23788 25767 9739 8304 8320 10365 10563 25768 19284 25769 19181 16046 18591 9740 9398 10117 9802 10286 19030 24287 14045 17806 17805 19686 9741 6934 203 9858 10562 25770 25771 21049 21050 19412 25772 9742 9186 7647 9559 11135 25773 25774 25775 25776 25777 25778 9743 8201 10166 8195 10468 13292 12079 25779 11984 11849 12078 9744 9975 10372 9202 10914 22268 16640 25780 23299 18478 14443 9745 6978 6972 8805 9826 7079 24654 25715 20412 24656 24655 9746 9563 10055 9609 10190 25781 18030 25782 25783 18034 18033 9747 9647 10898 9577 10917 21696 22747 22563 16213 20653 22793 9748 258 10125 257 11182 16872 24310 2710 16873 24311 16874 9749 9623 9899 9519 10389 18794 21078 25325 18797 15581 18399 9750 10370 10594 9550 11008 22824 22823 22825 25784 24791 24790 9751 9696 9218 10155 11086 25785 25786 25787 15744 25788 25789 9752 1384 1431 248 11117 2680 2679 2664 17731 17568 25559 9753 1308 248 1460 11117 2656 2678 2677 21269 23777 17568 9754 8304 10365 9546 10563 25769 25790 17537 19181 16588 16046 9755 9306 10193 10017 10846 25791 21902 18247 25792 21903 20310 9756 9667 9965 9288 10651 14603 14438 12630 25793 25794 19833 9757 9455 10342 10222 10404 25795 15129 20447 20445 20446 25014 9758 1499 704 710 10172 4957 4672 4958 14607 11988 22117 9759 9540 10222 9382 10292 18204 16190 25796 16699 16189 15139 9760 8141 10359 10089 11010 23924 20647 23922 25797 25798 25799 9761 9261 9872 9752 10481 12020 20931 19934 20401 19514 21242 9762 252 9503 1267 10912 24881 24882 2697 25800 25801 25802 9763 9236 10329 9743 10938 25803 19401 16089 21800 16831 18784 9764 9514 9359 10251 10743 25804 24074 23519 25805 22897 22263 9765 9317 9979 9583 10090 11886 21690 25806 19372 13063 21692 9766 9318 10183 9532 10576 13077 11594 25807 12995 14584 14583 9767 9528 10186 9318 10576 25808 13079 25809 18732 12995 15599 9768 6325 9558 9843 10570 25810 25811 25812 25813 25814 24602 9769 1386 9486 10273 10854 21560 18870 25815 23699 25816 23700 9770 8867 7729 7687 9793 25817 25818 24101 23275 24100 25819 9771 218 9652 9732 11127 25820 25821 22188 25822 25823 25824 9772 9773 9889 9370 10587 20561 21406 16183 16406 13151 24703 9773 9399 10117 9802 10261 16341 24287 25725 25825 24288 23799 9774 9336 9669 9957 10966 21261 24809 25826 16270 24810 21262 9775 9491 10054 9785 10096 25827 23036 25828 22043 17835 22843 9776 9320 9846 10467 10487 25829 23745 23940 23941 21084 15673 9777 9655 11094 10045 11144 23214 13736 19269 19271 16733 23526 9778 835 836 1485 10352 5556 5561 5560 18004 21021 25445 9779 9302 10777 9768 10844 25601 14063 15523 18307 18569 23289 9780 9696 10155 9740 11086 25787 14838 12812 15744 15746 25788 9781 9694 10113 9413 10733 15418 15700 25830 22417 15701 13868 9782 9668 9724 9323 10768 23861 22864 11801 17363 24564 13987 9783 7832 7834 10315 10540 25831 23208 11209 11261 11263 22003 9784 10003 9256 10601 11112 17359 25084 25594 23450 25596 25760 9785 1440 1118 1003 10700 5145 6008 6009 25832 21060 22831 9786 1556 9507 1187 10384 25833 21715 2180 25834 21719 21718 9787 436 10178 9594 10967 22887 22888 22885 25835 25836 25837 9788 9337 9878 9769 10449 17425 17426 17422 12303 24639 22970 9789 1472 913 1473 10689 5853 5854 4446 23949 23950 22785 9790 10211 9479 10460 10550 17351 19625 17462 21645 21644 25838 9791 9450 10220 9630 11195 25839 18660 25840 25841 18485 18662 9792 162 1166 7717 10427 1794 23168 25842 25843 23170 17516 9793 7596 9549 7579 10423 16654 21014 21015 25844 18950 21117 9794 970 10515 9984 10633 23582 24004 25845 23583 19182 19978 9795 9724 8872 10494 10516 25846 25847 23089 18437 25848 25849 9796 9410 10454 10767 10879 14230 23841 23840 19268 25850 25851 9797 9744 9376 10729 10954 25852 25853 20972 20976 20975 25854 9798 9640 9869 9219 10874 18206 17977 20978 16230 20069 18207 9799 9270 9889 9653 10878 18361 18208 21122 20072 16224 18210 9800 9321 9992 9688 10075 14010 25604 25605 21784 20927 24477 9801 9353 9473 9860 10992 23820 25855 25856 23823 25857 23821 9802 9751 9791 1097 10860 13429 24226 24225 25858 25859 25860 9803 8787 8941 9482 10963 23495 20983 23494 25861 21932 22209 9804 9033 9784 7940 11131 25862 25863 25864 25865 25866 25867 9805 7671 7737 7652 9560 25868 20950 21339 21338 14617 20951 9806 10249 10439 703 10473 14785 25869 25436 25439 25438 21886 9807 6344 9842 9554 10572 25870 21223 25871 25872 24794 25873 9808 9487 9228 10392 11093 21116 12591 22987 21684 25153 19102 9809 8069 8653 8073 10078 18409 25874 25875 18411 22476 18410 9810 9269 10244 10089 10728 25876 18836 19400 19610 18313 25038 9811 8310 10406 10892 11065 25877 21734 25878 25879 25880 22414 9812 6969 6905 189 10781 7242 25550 24924 24925 24624 24537 9813 9350 10322 10420 10731 11314 25881 22559 22561 22562 20399 9814 712 844 928 10712 4762 4998 4997 16948 16695 21126 9815 8810 8950 8880 9576 24670 25882 25883 24671 25884 11283 9816 6289 1249 187 10531 25885 1959 25886 25887 25888 25889 9817 8992 8033 8114 9738 25890 25891 25892 25893 25894 25895 9818 9435 10325 10279 10595 24873 19098 24874 25896 15492 14541 9819 1386 1296 10672 10854 3071 23209 21562 23699 23701 25897 9820 9031 10154 9632 11088 16570 16571 15343 25898 19344 24463 9821 1213 1265 10198 10982 4126 21781 25899 25900 22031 22030 9822 382 383 386 9581 3342 3348 3347 25148 25149 20025 9823 8274 10099 10046 10301 25901 25902 25903 25904 25905 14872 9824 537 1213 1265 10198 4117 4126 4125 21385 21781 25899 9825 9878 10079 9287 10877 21788 19571 18446 17896 20074 22620 9826 8221 8224 8223 10025 22412 25906 25341 21619 25340 15466 9827 8353 9809 8355 10874 25907 14293 25908 25909 24968 20070 9828 873 1022 9813 10876 5705 25910 12245 24969 20067 25911 9829 1270 873 9812 10875 5326 12243 25912 25913 24971 24970 9830 7916 9816 8635 10877 22349 25914 25915 24973 25916 20073 9831 8494 8498 9817 10878 25917 24604 25918 25919 20071 24974 9832 667 9818 790 10873 25920 19418 4195 25921 24972 20064 9833 1170 10587 9949 10713 17758 20969 25922 17759 20938 15821 9834 8292 10364 10012 10942 25923 25924 16037 16619 16618 25925 9835 9621 9913 9213 10228 18148 11227 17929 22485 20035 25926 9836 9324 9740 9696 10155 12811 12812 11215 15016 25787 14838 9837 9215 10892 10406 11065 16650 21734 21733 25927 22414 25880 9838 1326 1549 194 9562 2414 2413 2027 19812 19814 25928 9839 9495 10525 10242 10793 25929 19174 25930 25931 22992 21895 9840 9434 9830 9627 10180 16814 24854 19820 14021 25932 16815 9841 465 9720 466 10734 24850 23243 3754 18155 23713 23715 9842 7681 9179 7653 10863 25933 25934 25935 25936 25937 25938 9843 9650 9972 9331 10054 25939 14552 25940 21106 23035 25941 9844 7572 158 9996 10631 25942 25943 25944 25945 25946 25947 9845 9284 9882 9654 10875 23287 18271 20809 22526 16292 18273 9846 9214 9643 9810 10146 12419 25479 25948 22311 21267 25480 9847 9280 10394 9838 11178 16681 20210 17168 25949 20246 20245 9848 9663 10218 9466 10544 12192 25950 15931 14365 15932 15105 9849 9437 9672 9592 10067 23900 25951 11400 11404 11403 25952 9850 8402 9064 10020 11130 25953 18140 25954 25955 18143 18142 9851 9735 9761 9217 10431 22450 14485 25956 22453 25957 22454 9852 9594 9937 9777 10674 23740 24947 24944 23739 25958 23738 9853 9650 9720 1377 11159 14898 14896 13338 25959 25960 19430 9854 9250 10790 10032 11057 25961 13434 23939 20775 22348 22347 9855 8311 9100 9109 10793 24262 25962 25963 24263 25964 23654 9856 9649 9270 9817 10739 16135 18363 25965 15959 18364 13455 9857 8872 7854 10494 10516 25966 25967 25847 25849 25848 25968 9858 9983 10010 9515 10018 11838 12934 25969 16746 12936 12589 9859 9406 9925 9683 10162 20852 18222 20853 19592 25727 25970 9860 9662 10023 9339 10797 18636 25971 25972 18639 22872 18640 9861 1347 1130 1344 10274 6155 6156 5299 20124 18964 20903 9862 8697 10349 8478 10624 25492 15905 25973 25493 15907 15824 9863 274 10119 10120 10316 23234 23237 23236 25974 14863 14860 9864 817 10123 10118 10317 23240 23241 23238 25975 20002 14864 9865 1283 262 365 10320 2730 2749 2751 11332 15898 25976 9866 9448 9667 9476 10258 25591 25590 25592 25977 25978 25979 9867 202 7662 9675 11017 19975 20952 25980 15630 19127 19976 9868 8666 8669 9756 10101 25981 16193 25982 25983 16194 13038 9869 9549 9402 10342 10404 15067 15130 23262 15066 25014 15065 9870 9708 10142 9472 10769 22969 17395 21068 17773 17397 17399 9871 9610 10009 9799 10502 25984 25985 17496 25986 24932 25987 9872 9243 10323 10214 10607 12900 25988 13675 19980 25989 17607 9873 6345 9554 6344 9842 21224 25871 6696 20340 25870 21223 9874 507 9929 9757 11155 25614 15654 25613 25990 25991 25992 9875 9681 10176 9231 10798 16009 14642 14658 23737 15514 15516 9876 9038 10545 9798 11116 25993 12525 23893 24907 24906 25994 9877 9517 9665 9289 10867 18487 16867 14948 22867 18905 25995 9878 535 536 10198 10952 4107 25996 19615 18501 19616 25997 9879 10186 10576 9528 10993 15599 18732 25808 22552 25998 22553 9880 1264 9492 10309 11007 25999 22883 26000 26001 26002 20608 9881 429 9863 10178 10967 17292 26003 26004 17816 25837 17817 9882 9177 9580 7536 10690 22523 20746 22521 26005 26006 26007 9883 1190 10008 1369 10478 21887 17726 3611 21888 21547 19224 9884 8739 9753 10451 11084 16876 16026 26008 16879 26009 16880 9885 9974 10040 9224 10756 22909 21382 11308 26010 26011 26012 9886 9152 8515 8513 10682 23865 26013 26014 23866 26015 18631 9887 9834 9864 891 10907 14131 14132 12339 22760 26016 22761 9888 9510 9573 9383 11050 26017 26018 26019 26020 26021 26022 9889 8386 8337 8980 11002 20010 25136 26023 18580 25137 20011 9890 489 9605 491 10975 16185 23954 3883 16779 26024 16780 9891 1228 6310 6373 10345 26025 6609 24076 24078 24080 26026 9892 9275 10494 10080 10912 12374 24859 25356 25549 26027 26028 9893 7605 10413 9967 10435 26029 22095 26030 26031 26032 23928 9894 9833 9847 9468 10398 16548 25056 20091 24930 15153 26033 9895 9368 9847 9833 10398 12179 16548 12015 26034 24930 26033 9896 7656 1263 168 10324 26035 1870 19282 19281 16836 26036 9897 9234 9790 10020 10353 18211 18139 21772 25648 19937 15966 9898 1540 9672 770 10386 15389 26037 5272 14166 26038 15390 9899 10062 10457 9438 10923 26039 20303 17129 17130 11232 21054 9900 10054 10096 9491 11012 22843 22043 25827 21063 19874 21767 9901 9417 9799 9610 10009 20437 17496 18395 22585 25984 25985 9902 6358 10169 10345 10378 26040 18284 26041 26042 26043 26044 9903 418 9491 1013 11012 22481 22042 3519 14741 21765 19874 9904 9296 9963 9584 10400 16337 19848 22539 12262 21352 17195 9905 9073 8444 10457 10602 26045 26046 20302 19800 20304 26047 9906 9215 9659 9569 10551 25527 25526 25525 12648 26048 25305 9907 9497 9911 9369 10508 26049 16759 26050 22212 12068 18082 9908 9442 10518 7711 10861 17105 19609 19608 24316 26051 26052 9909 9250 9637 9808 10754 12958 24746 18415 11392 18418 12959 9910 7888 8892 8912 11146 26053 26054 24385 24387 22878 26055 9911 9678 10281 10052 10785 24518 17736 24516 19124 26056 26057 9912 10116 11047 10258 11189 22218 22219 22215 22546 14398 26058 9913 7814 8958 7813 10974 26059 19089 26060 26061 19526 17416 9914 1156 1306 1286 9683 5746 5277 3916 18223 19016 17229 9915 995 553 1351 9684 4203 3741 4206 17231 11319 11318 9916 10069 10259 9780 10626 17386 26062 15054 26063 26064 26065 9917 8208 8210 10638 10821 26066 26067 24456 24459 24461 26068 9918 9617 10384 10277 11085 17219 17220 17216 22900 26069 22901 9919 9248 10527 9712 10902 18726 12504 18725 23602 12414 21294 9920 9570 9685 9324 10608 26070 21007 26071 26072 14729 23990 9921 9037 8149 8171 9569 22230 26073 26074 21680 26075 22231 9922 8273 8159 8160 10639 26076 23055 15843 15845 14876 21531 9923 316 313 312 9572 2997 2963 2998 16107 11337 20824 9924 8336 9042 8642 10387 26077 19120 23082 21182 16159 19121 9925 9356 10916 9860 11059 22942 22956 17107 17109 11203 22960 9926 9020 10161 9836 10985 18940 20438 26078 17962 17557 18941 9927 9237 10271 9667 10542 26079 26080 26081 12426 26082 22543 9928 9787 9917 9388 10410 21477 12619 20368 22982 25085 22078 9929 9520 10128 8437 10892 19890 19762 19891 16648 26083 24428 9930 811 10193 10507 10814 26084 26085 22720 22722 22724 26086 9931 1108 1098 311 10860 2994 2995 2992 20088 19293 26087 9932 9234 10267 10070 10541 20234 25039 15471 12530 15490 19603 9933 9594 9380 9937 11033 24945 24946 23740 23741 18852 26088 9934 8873 9939 9586 10351 26089 26090 26091 26092 18605 19577 9935 822 1442 10194 10923 5506 26093 25320 24423 25322 26094 9936 1333 9757 10697 10911 15968 14884 26095 15971 26096 15972 9937 9503 10080 10494 10912 26097 24859 23330 25802 26028 26027 9938 9654 10097 9387 10241 17988 13484 20839 17991 20841 14568 9939 9381 10341 9600 10629 17915 23052 26098 17914 23053 17614 9940 9824 10238 9598 10363 22804 14981 23871 23872 13504 22535 9941 6942 10205 6943 10255 15872 21832 7308 14840 21834 15873 9942 6914 6989 6984 9525 7389 7391 7197 16674 14151 24465 9943 8113 8923 8881 10644 22287 19298 26099 22288 19300 15619 9944 9222 10091 9494 10821 20758 25698 25697 19973 24460 19254 9945 7579 7596 7618 10402 21015 20213 26100 18947 20215 16286 9946 10135 10421 9236 10430 16435 16090 21799 26101 16091 14958 9947 755 756 10666 11138 4542 25560 26102 26103 25564 25563 9948 9841 10004 9266 10256 17902 23335 12515 14699 14140 17904 9949 10256 10460 9479 10550 19624 19625 19622 21927 25838 21644 9950 8808 10481 9576 10783 25236 25237 25233 26104 26105 19516 9951 7730 7722 7721 9675 26106 24219 21153 21806 20747 24220 9952 7560 10396 9664 10477 26107 26108 26109 26110 26111 26112 9953 537 535 536 10198 4112 4107 4113 21385 25996 19615 9954 9569 9686 9294 10228 26113 26114 26115 26116 26117 26118 9955 9504 10527 10160 10738 26119 26120 22092 16545 26121 26122 9956 8712 8659 10576 10993 26123 18750 12999 22551 22553 26124 9957 8747 10513 8220 11133 24355 26125 26126 24358 26127 24359 9958 9046 10016 9941 10956 22239 18298 26128 22240 26129 22241 9959 339 337 340 10683 3123 3125 3124 21850 16334 20921 9960 9374 9889 9773 10587 24897 20561 14158 15819 16406 24703 9961 7566 10429 9580 10443 26130 26131 23345 23346 19547 26132 9962 8066 8065 10237 10988 26133 13780 26134 26135 25612 25611 9963 9369 9911 9497 9912 16759 26049 26050 13938 22656 23762 9964 9424 9481 10472 10958 24122 20176 26136 24124 22570 23767 9965 9327 9815 9651 10673 12802 12767 12803 26137 25483 18021 9966 9253 9789 9645 10814 26138 26139 18583 26140 26141 26142 9967 7676 10180 1586 10515 26143 26144 26145 26146 26147 24005 9968 1287 10637 9886 10692 19359 26148 26149 19360 15449 19361 9969 9801 9857 9348 10245 16947 23098 15663 26150 17303 19840 9970 9437 10408 9626 10573 18475 20753 25201 18014 20756 19426 9971 9327 9909 9815 10673 20680 26151 12802 26137 18021 15029 9972 9803 9963 411 10887 21699 21698 20290 26152 26153 23462 9973 9482 10214 10323 10607 20986 25988 26154 24763 17607 25989 9974 9839 9923 9317 10400 26155 19373 11883 12634 26156 22571 9975 6363 10127 10277 10384 26157 18308 17215 17218 17220 26158 9976 8081 8079 9609 11193 18862 18029 18861 26159 13718 20609 9977 8598 10454 9962 10857 26160 23556 26161 26162 26163 26164 9978 10042 10457 9438 10816 21052 20303 11229 24141 21541 21540 9979 7836 10115 7835 10464 17740 25360 26165 13384 25361 14190 9980 1061 10381 9545 10995 17839 24562 24561 26166 26167 21006 9981 9974 10029 9216 11021 18146 26168 22907 18392 26169 18393 9982 784 686 786 10416 4868 4870 4869 17760 26170 22335 9983 9440 9619 10795 10931 20201 20205 20203 26171 26172 26173 9984 9635 10378 9416 10645 26174 18760 22506 19774 18762 18040 9985 9888 10558 9367 10781 22493 22259 23692 20909 23693 24175 9986 9408 9482 9966 10607 26175 21238 18249 15278 26176 24763 9987 191 7594 7535 9603 24360 26177 26178 24361 26179 23106 9988 9127 9502 8755 10565 23417 19735 23416 24135 22621 13329 9989 9482 10017 9966 10607 24761 18248 21238 24763 26176 20799 9990 9538 10016 9467 10547 14631 19291 26180 14633 21000 13342 9991 8826 10216 9592 10459 24756 15848 26181 24757 23049 17777 9992 306 1035 9910 10827 2967 18720 25754 25713 18721 18571 9993 9313 9763 9844 10291 26182 25414 14445 26183 25412 25413 9994 6337 6315 6339 9501 6816 6818 6817 23367 24234 17785 9995 8032 9756 8047 10219 26184 13366 25517 25516 24871 19534 9996 7929 9846 10539 10891 24156 26185 26186 24157 26187 24158 9997 9257 9973 11058 11194 16930 17122 19982 18674 22940 18675 9998 9531 9999 9625 10486 13958 24580 24577 12568 26188 11252 9999 6900 6982 9912 10812 7316 22657 26189 25600 22661 22660 10000 9404 10189 9560 10272 26190 14620 26191 26192 22277 22276 10001 9348 9801 10245 10789 15663 26150 17303 13158 23608 15780 10002 10081 10168 9419 10578 23342 16751 13995 25347 16238 24384 10003 10026 10283 9396 10862 23211 26193 21360 20226 21361 23212 10004 8785 9690 8861 10856 18754 26194 26195 18756 26196 18755 10005 7578 10226 9552 10268 26197 19870 26198 26199 26200 26201 10006 9264 10206 9767 10685 22841 16961 26202 19143 22839 20640 10007 929 1567 10117 10725 5916 26203 13343 20267 21989 26204 10008 9433 10286 8313 10609 22607 22606 20057 22034 22537 21012 10009 9242 10129 10077 10960 26205 21881 26206 26207 21885 21884 10010 8252 10299 8262 11161 24185 26208 26209 25495 26210 25496 10011 9709 10472 7693 10948 16755 20692 20690 18359 26211 26212 10012 7875 10265 9529 11006 19670 19671 18745 20076 12326 26213 10013 9245 10095 10388 11041 19997 21329 13777 26214 21330 20567 10014 434 10478 9822 11072 26215 21548 26216 26217 26218 26219 10015 7839 8651 9585 10617 26220 13686 26221 26222 13889 13890 10016 8741 9807 9641 11084 25462 20263 19678 19680 16878 26223 10017 10116 9078 10296 11189 22216 15095 19715 22546 14400 14455 10018 6325 9558 6327 9843 25810 23848 6715 25812 26224 25811 10019 9283 9809 9642 10666 26225 25449 11278 26226 25450 17980 10020 9854 10015 9424 10958 15880 16344 18227 15598 24124 24123 10021 8847 10224 8319 10437 25002 14983 26227 24337 16774 21513 10022 7003 9475 10514 11197 26228 25130 26229 26230 26231 26232 10023 9279 9747 9868 10517 22381 22378 22383 24918 22447 13898 10024 9458 10441 10320 10915 15709 15710 15706 26233 16380 21144 10025 9375 9622 9550 10006 22988 26234 22411 19883 14971 26235 10026 9721 10239 9599 10956 24430 23063 26236 24432 26237 24433 10027 434 9822 441 11072 26216 26238 3608 26217 26239 26218 10028 9283 9899 9809 10666 12795 26240 26225 26226 17980 23418 10029 9499 9939 9713 10351 23667 19574 21890 18606 19578 19577 10030 9469 10168 10081 10578 23414 23342 23413 25211 25347 24384 10031 848 9501 980 10466 24176 20947 5617 26241 26242 26243 10032 8491 9980 9488 10503 20173 20174 20170 22440 12052 26244 10033 9469 10040 9974 10756 19350 22909 22908 26245 26010 26012 10034 9408 9966 10017 10607 18249 18248 18251 15278 20799 26176 10035 9736 9877 9236 10938 18260 18258 18255 24082 21800 23312 10036 9325 9888 9737 10939 21099 21098 21097 26246 24083 24085 10037 975 1510 10011 10373 2471 22579 18076 20130 20132 22582 10038 1373 10538 10063 10839 15935 13475 15934 26247 26248 26249 10039 7855 10494 9564 10771 12375 23374 23373 12773 26250 14092 10040 8607 9022 8579 10114 22980 26251 26252 21299 26253 20924 10041 8225 10259 10069 10626 17387 17386 17385 26254 26063 26065 10042 9239 9683 9781 10534 12945 26255 16032 12944 26256 12434 10043 7945 9982 7932 10397 26257 17792 26258 26259 17790 17791 10044 8244 8304 8320 10365 26260 25768 26261 26262 19284 25769 10045 9109 9100 10334 10793 25962 16692 26263 25964 23655 23654 10046 705 826 797 10625 4965 4964 4333 26264 20831 18053 10047 1525 10242 10438 10770 19173 19172 13640 25352 26265 25353 10048 546 1324 643 10249 4167 4171 4170 19673 26266 14781 10049 6991 1511 6906 10562 21309 25046 7182 21311 25048 21310 10050 9580 10453 8676 10823 26267 24990 26268 24546 24993 24992 10051 9135 7769 10472 10948 26269 26270 21808 26271 26212 26272 10052 9891 10270 9308 10593 26273 24215 14566 26274 24664 26275 10053 9221 10333 9893 10952 26276 19311 26277 26278 19312 18503 10054 233 366 10256 10460 2595 26279 21926 21642 19624 26280 10055 8069 8073 10019 10078 25875 23971 20431 18411 15342 22476 10056 9395 9978 9977 10684 16469 25581 20580 12638 25681 16470 10057 764 10339 9648 10871 13441 19460 19459 26281 12895 26282 10058 9821 9921 9300 10463 12583 26283 26284 26285 26286 20628 10059 722 10131 9984 10941 13356 16897 16896 26287 13947 22478 10060 9424 9709 9481 10015 13910 22652 24122 16344 21259 17591 10061 9559 9984 9425 10968 26288 26289 26290 26291 18174 24840 10062 10266 10630 8411 11055 23895 26292 26293 14937 26294 26295 10063 6901 6932 10658 10744 7320 23790 26296 26297 23794 23793 10064 10291 10336 9313 10699 22808 21934 26183 22811 21398 14117 10065 9632 10168 9419 10950 24443 16751 15344 15345 14889 23343 10066 9081 8541 8655 9854 25514 26298 20048 20046 20047 25513 10067 7809 9740 9045 10205 24863 12810 26299 24866 17684 15871 10068 9650 9303 10577 11128 13337 26300 26301 26302 26303 26304 10069 8697 8052 8478 10349 26305 26306 25973 25492 15905 26307 10070 218 9732 9652 10924 22188 25821 25820 22189 22862 19116 10071 1351 956 995 10229 4211 5962 4206 13359 18254 15188 10072 9678 10281 10785 10973 24518 26057 19124 22179 25615 26308 10073 9353 9860 9473 10788 25856 25855 23820 21977 15795 26309 10074 9530 10317 1385 10679 18716 18717 18714 26310 26311 20006 10075 9900 10803 9860 10916 26312 26313 26314 22181 22956 26315 10076 1126 796 10637 10990 5384 26316 24412 24549 24551 26317 10077 779 9728 538 11192 26318 24201 4130 26319 24204 24206 10078 1523 10521 9914 11052 20954 25731 26320 20956 24699 20957 10079 9473 9726 9353 10788 19250 22586 23820 15795 21977 16902 10080 9811 10193 9306 10846 20306 25791 26321 20309 25792 20310 10081 9683 9925 9239 10162 18222 24883 12945 25727 16033 25970 10082 1462 10354 10689 11005 24568 26322 26323 24569 26324 24570 10083 8774 9020 9836 10985 26325 26078 23387 23388 17557 17962 10084 9327 9771 10420 10731 22388 22560 26326 26327 22562 20785 10085 8875 9758 8379 11051 26328 18286 16525 16526 16444 18287 10086 452 10005 11063 11121 21973 23586 23850 22679 23854 22680 10087 9425 9984 10633 10968 26289 19182 17011 18174 24841 24840 10088 9438 10062 843 10810 17129 17128 14858 21841 21843 26329 10089 491 9605 496 10517 23954 15555 3895 26330 11498 15556 10090 8096 8891 8761 10649 18172 22630 26331 17054 22632 18164 10091 8525 9964 9480 10680 23318 23317 16747 21323 19960 26332 10092 6940 6893 6996 10694 7282 7281 7280 18243 22834 20774 10093 9739 9853 9551 10282 15360 25498 20629 13636 23636 17918 10094 9573 9849 9378 10001 26333 23675 26334 26335 24413 24414 10095 9267 10405 10212 10471 21042 23403 16064 12818 16066 24138 10096 10258 10418 9205 10598 16899 15539 13479 21275 19093 14698 10097 10295 10332 9430 10899 19837 26336 26337 26338 26339 23960 10098 9263 10659 9992 10778 26340 22195 26341 14102 22199 22198 10099 9574 9842 6344 10572 26342 25870 26343 25453 25872 25873 10100 8743 8255 8742 10223 23303 26344 26345 26346 23174 12173 10101 935 10310 10072 10818 21838 17222 21839 25643 26347 25644 10102 9671 10273 9490 10553 21138 19002 26348 21140 19004 13074 10103 1197 1048 246 10507 2669 2670 2667 22289 14524 21776 10104 7582 7596 7581 9549 26349 26350 23561 23562 22168 16654 10105 9337 10136 9521 10588 26351 14778 25434 23196 15752 20882 10106 10252 10621 8617 11069 25433 25431 25428 26352 26353 26354 10107 9403 9806 9546 10563 17157 16364 26355 17158 16588 16590 10108 7711 10290 9442 10861 23268 17242 19608 26051 24316 24318 10109 8554 7756 8564 9620 20576 26356 24540 14853 24539 20577 10110 6922 6930 8803 9693 7167 24593 26357 26358 24595 24587 10111 7973 10069 8225 10991 26359 17385 26360 26361 17388 17390 10112 10482 10592 1530 10717 24126 26362 26363 23447 26364 26365 10113 9771 9883 9327 10420 22387 12804 22388 22560 26326 22830 10114 9289 9952 9951 10519 24915 24928 26366 24916 13497 21146 10115 1275 1250 9611 10461 3616 17477 16118 19385 15704 17478 10116 8335 9612 9032 10462 16120 23724 23723 19387 26367 19388 10117 157 6897 9682 10276 26368 26369 23123 26370 26371 26372 10118 9529 10208 7875 10575 19669 19668 18745 15568 18747 13423 10119 8659 10207 9528 10575 18913 18728 18748 26373 26374 13420 10120 9577 1114 10784 11111 25172 26375 26376 20654 26377 25173 10121 6324 9562 6325 9843 24030 26378 6814 24017 25812 24029 10122 9302 10348 9568 10506 14115 26379 17832 26380 26381 26382 10123 9218 10589 10128 11086 25156 19766 25154 25789 20122 20121 10124 9531 9625 9358 10486 24577 13737 17097 12568 11976 26188 10125 8485 9583 8924 10868 19054 13059 19052 26383 14349 14348 10126 997 9539 998 10236 26384 23709 5999 20469 23708 15651 10127 9643 10708 9257 11168 19806 18190 23300 20880 23301 20885 10128 8312 9924 8468 10866 26385 17531 26386 26387 17534 17536 10129 8720 8785 8861 10856 26388 26195 26389 26390 26196 18756 10130 8524 10232 8520 10504 26391 26392 26393 26394 26395 26396 10131 778 10312 9628 10542 18995 15925 18994 26397 13140 22544 10132 8784 8783 9110 9975 26398 26399 24256 23297 24255 26400 10133 7673 7749 9475 10863 26401 25131 26402 26403 25133 25132 10134 9478 9285 10263 10681 21720 12132 22653 20430 26404 14901 10135 10187 10702 9505 10732 16474 22352 24824 16728 24145 26405 10136 9398 10261 10117 10730 24289 23799 19030 19031 18432 23801 10137 9329 9506 9920 10549 13900 26406 26407 15718 26408 15719 10138 10013 10468 9407 10884 24649 13490 26409 24648 24950 23835 10139 9285 10263 10014 10813 12132 14509 13267 21721 16318 19940 10140 9352 10773 10284 11022 24258 16991 26410 23542 19512 19395 10141 231 10256 9766 10550 26411 20311 26412 26413 26414 21927 10142 694 695 10289 10825 4643 18820 26415 26416 26417 26418 10143 9320 9904 9694 10553 26419 18403 12490 12491 11808 18405 10144 8772 7713 7648 9591 26420 26421 26422 25288 26423 26424 10145 9733 10274 9406 11144 16731 25599 26425 16734 20854 16735 10146 775 10077 10510 11066 20402 26426 26427 20403 26428 18968 10147 9489 9279 10140 10554 26429 23216 23614 22739 23357 23356 10148 1192 6904 9858 10610 26430 22902 26431 26432 20819 22903 10149 603 10206 1054 10853 26433 21341 4453 26434 12456 21342 10150 963 10276 9682 11185 26435 26371 25398 25400 25399 24307 10151 9302 9804 10348 10506 14114 14042 14115 26380 26382 26436 10152 9799 9417 10281 10624 20437 12500 22709 26437 13967 11554 10153 9476 9965 9667 10651 19832 14603 25590 17509 25793 19833 10154 7546 9552 7578 10226 19664 26198 26438 19869 26197 19870 10155 9550 9622 9375 10318 26234 22988 22411 26439 14701 16763 10156 9150 7795 9843 10512 26440 23967 26441 26442 23969 23968 10157 1421 1195 1436 10194 6199 4322 5454 25015 25016 25530 10158 822 1442 1421 10194 5506 5508 4951 25320 25015 26093 10159 9039 10188 10246 11097 16891 26443 26444 19177 26445 19178 10160 1473 10689 10354 10850 23950 26322 26446 23952 26447 23953 10161 9878 10449 9337 10752 22970 12303 17425 17507 13930 13932 10162 702 10167 1421 11196 26448 25582 4950 25336 25017 18541 10163 927 10380 843 10810 24838 19828 5590 26449 21843 21842 10164 7696 7725 7701 9502 13326 25327 26450 13325 25326 13324 10165 9540 10249 546 11031 19674 19673 18045 16700 26451 26452 10166 9501 9677 6337 10375 23358 26453 23367 17789 23368 21629 10167 9203 9502 10311 10438 17524 24134 26454 13725 26455 17525 10168 9707 10019 9498 10078 26456 15340 21401 24398 15302 15342 10169 9228 10089 9728 10244 18834 19396 26457 18835 26458 18836 10170 9387 9654 9487 11124 20839 20838 20840 26459 25684 21916 10171 9317 10400 9923 10538 26156 22571 19373 13220 26460 26461 10172 8346 10883 10030 11027 24036 24037 24033 26462 21961 26463 10173 307 10053 1035 10827 13155 18573 2968 21458 18571 18572 10174 7702 9495 7704 10675 22257 14392 22255 26464 24939 24938 10175 8124 10009 8972 10624 19726 26465 26466 11553 26467 19727 10176 8463 9798 8561 9801 14549 11925 26468 14245 15649 14548 10177 1385 10013 9530 10679 26469 26470 18714 26311 26310 26471 10178 7601 9832 7609 10201 22142 21906 26472 22143 21909 18132 10179 9897 10228 8433 10918 26473 26474 26475 18339 26476 17753 10180 358 10000 9566 10772 22707 22708 22705 26477 26478 24273 10181 1361 10486 9533 10641 23945 23946 23944 26479 26480 11254 10182 529 10411 528 11165 22717 26481 3657 24151 26482 24152 10183 10190 10596 9563 10798 26483 26484 25783 19688 26485 25386 10184 9301 10486 9533 10786 11444 23946 26486 12595 26487 26488 10185 9244 9717 9486 10977 26489 26490 25274 25276 25278 26491 10186 8763 7756 6903 9620 26492 21427 26493 26494 21426 20577 10187 10046 10099 9647 10301 25902 20813 22567 25905 26495 14872 10188 211 10251 9570 10608 23606 23607 23604 26496 26072 26497 10189 9383 9573 9510 10428 26018 26017 26019 12533 16660 26498 10190 693 10129 10092 10960 21882 23058 26499 21883 26500 21884 10191 8258 8442 8503 10110 19953 26501 26502 19955 24719 19956 10192 7647 7773 9559 10590 26503 26504 25774 26505 26506 26507 10193 9324 9685 9570 10358 21007 26070 26071 11930 26508 21008 10194 10160 10527 9898 10738 26120 21293 25106 26121 26509 26122 10195 8433 10228 9897 10796 26474 26473 26475 26510 20522 26511 10196 928 9541 1599 10585 13979 23664 5912 13346 23666 13980 10197 257 258 254 10125 2710 2709 2707 24310 25695 16872 10198 9372 10713 9818 10849 21676 20145 14341 22655 19419 25183 10199 7956 9665 10387 10867 19823 23733 23732 26512 18906 25995 10200 9650 9303 10088 10577 13337 26513 26514 26301 17032 26300 10201 8264 10030 10362 11027 26515 18264 21288 21290 20678 21961 10202 9994 10545 7908 11116 18551 21287 21286 26516 26517 25994 10203 10126 10658 9693 10744 16957 23789 22201 26518 23792 23794 10204 8416 10266 9532 11116 19277 11597 15091 26519 26520 24908 10205 6378 6305 10031 10277 6768 26521 25295 21250 25297 26522 10206 9520 9579 10352 11036 26523 21020 20247 26524 21039 21038 10207 7837 7839 9585 10415 26525 26221 25372 12674 25373 26526 10208 9543 10529 9423 10603 26527 24553 26528 14317 15512 24557 10209 9621 9913 9543 10309 18148 14314 23224 22882 15733 16323 10210 6969 157 6897 9682 23119 26368 7245 23122 26369 23123 10211 6903 7756 8797 9912 21427 26529 26530 21428 26531 20578 10212 9224 9868 9731 10944 21533 22446 22445 21383 26532 15013 10213 9681 10068 9471 10596 21602 18816 23735 16276 18817 14019 10214 10001 9469 10756 10950 24692 26245 21667 24369 24368 22060 10215 9449 9561 10339 10698 26533 24750 20425 14144 18860 24752 10216 288 10302 283 10685 20637 23984 2839 20638 23986 20639 10217 9496 10482 9924 10717 26534 26535 22427 22866 26536 23447 10218 8599 9861 8438 10910 18421 26537 26538 18422 26539 18423 10219 6289 187 10175 10531 25886 26540 26541 25887 17276 25888 10220 9922 10199 9340 10989 24147 13508 24148 25031 24797 25032 10221 864 1435 9833 10174 5113 22300 14406 13391 14405 26542 10222 6356 10154 9507 10531 19140 17642 19139 24114 16248 20995 10223 9001 8668 9716 11151 22911 15374 22910 26543 16587 19420 10224 416 9903 413 10543 25579 14390 3505 25580 18315 18317 10225 9406 10162 9536 10615 19592 17738 25726 17052 17737 17464 10226 7693 10472 7644 10948 20692 16756 20691 26211 26544 26212 10227 9240 9585 9556 10111 26545 25502 22915 22914 16253 26546 10228 9336 9669 9597 9957 21261 17076 26547 25826 26548 24809 10229 8591 8564 10511 10567 26549 26550 26551 26552 26553 24541 10230 1450 973 1505 11177 5041 5980 5982 26554 20604 25280 10231 9519 9623 9305 9899 25325 26555 26556 21078 26557 18794 10232 9348 9857 9801 10454 23098 16947 15663 12611 15665 23839 10233 8863 8209 10091 10821 26558 26559 19252 17336 19254 26560 10234 877 10267 9473 10541 26561 19601 16053 16054 15794 19603 10235 9443 10215 9789 10933 21632 25196 20671 15248 20673 16476 10236 9268 9611 9576 10045 16306 26562 26563 16305 26564 13732 10237 9577 9612 9278 10046 26565 12070 22794 22565 12069 11600 10238 6912 6978 9025 9616 7075 25112 14917 14918 14919 20409 10239 9573 10856 9380 10864 26566 26567 17775 17683 15093 26568 10240 9799 10009 9417 10624 25985 22585 20437 26437 11554 19727 10241 9440 10795 10469 10931 20203 18530 23581 26171 26569 26172 10242 8679 9518 10462 10761 26570 19964 14396 14397 13175 19965 10243 9214 9810 9643 9921 25948 25479 12419 13459 13458 26571 10244 8687 8686 8688 10706 15506 23045 26572 26573 26574 12084 10245 9571 9690 9235 10057 26575 26576 26577 26578 21801 26579 10246 9378 9690 9571 10057 26580 26575 26581 11491 26578 26579 10247 9207 10466 10247 11068 26582 23588 26583 26584 23591 23593 10248 7685 10332 7690 10456 26585 24118 26586 26587 24120 24121 10249 6325 9843 9562 10570 25812 24029 26378 25813 25313 25814 10250 8071 8907 8072 10805 25535 22326 26588 25536 22328 22059 10251 8524 8520 8649 10504 26393 26589 26590 26394 26591 26395 10252 1462 590 9954 11005 4387 26592 24567 24569 24571 26593 10253 9650 10054 9331 10700 21106 23035 25940 21108 23034 21059 10254 8472 9758 10355 10913 19367 14797 20030 26594 14798 14546 10255 1438 9517 10159 10160 22395 20559 24478 22396 24480 21348 10256 8193 8192 8157 10023 21796 26595 13487 11326 13591 21797 10257 9287 9769 10727 10924 18542 17146 26596 22102 23876 19117 10258 9198 10224 8783 10897 26597 26598 26599 26600 26601 22430 10259 9530 9798 9273 10720 26602 16597 26603 26604 16599 16598 10260 8176 8051 10284 11022 26605 26606 19511 19393 19512 26607 10261 8531 9129 8468 11153 21166 26608 19657 20480 18774 21169 10262 8477 8913 8965 10264 26609 26610 18522 14823 18277 26611 10263 512 1320 412 9803 3501 3498 3499 22023 26612 22022 10264 9537 10130 9847 10229 21741 13580 26613 21743 12465 15189 10265 7003 9475 6928 10373 26228 25633 7357 26614 25635 20131 10266 8176 8051 8175 10284 26605 26615 22913 19511 19489 26606 10267 10060 10232 9394 11174 26616 13645 12903 16507 16506 26617 10268 9555 9833 9819 10908 25074 13332 25072 26618 26619 26620 10269 9071 8362 9851 10698 26621 12641 26622 26623 19581 26624 10270 10088 10577 9303 11128 17032 26300 26513 26625 26304 26303 10271 1459 819 1391 9804 5493 4636 5494 18566 25157 23187 10272 7003 6928 9475 11197 7357 25633 26228 26230 26232 26626 10273 9526 10302 9313 10369 17954 15659 21396 17956 12117 14707 10274 9489 10140 1126 10990 23614 23568 22435 24550 24549 14187 10275 6377 10345 9635 10378 26627 26628 26629 26630 26174 26043 10276 7749 7673 9475 10373 26401 26402 25131 26631 20131 26632 10277 9460 9730 9705 10264 15937 19505 21226 14825 19504 15938 10278 8128 8860 8690 10282 26633 21018 15760 26634 13634 18659 10279 9301 9999 9851 10339 11235 25194 12643 12030 19580 16584 10280 8122 9982 7945 10397 19257 26257 26635 19258 26259 17791 10281 9857 10053 9410 10879 17666 19072 19071 23454 19268 18575 10282 7543 7638 9511 10686 26636 26637 17471 21184 21186 22308 10283 8563 8846 7758 10107 26638 24668 21928 17405 24666 24667 10284 9233 9613 9534 10502 25703 25702 25704 26639 26640 20887 10285 9255 9751 9869 10811 13428 19911 25008 23661 16972 21872 10286 9487 10213 582 10392 26641 26642 20937 22987 22986 16467 10287 1564 852 9626 10345 5634 12475 24070 24069 16859 15436 10288 7644 9183 7769 10472 18059 26643 26644 16756 26270 18061 10289 9292 10170 9589 10510 26645 26646 20516 20518 20517 24351 10290 7536 7568 7566 9580 20745 23344 26647 20746 23345 19544 10291 1365 541 9916 10476 3166 26648 25710 25709 17451 26649 10292 992 203 6906 10562 2044 26650 25045 25047 25048 25772 10293 9449 9921 9821 10463 14142 12583 14143 20020 26285 20628 10294 7793 7729 8867 9793 26651 25817 26652 24832 23275 25819 10295 7909 7911 9962 11014 26653 26654 26655 26656 26657 26658 10296 8402 8430 9064 11130 26659 19280 25953 25955 18142 14432 10297 9033 7940 7950 11131 25864 26660 26661 25865 26662 25866 10298 9217 9927 10108 10627 24612 22116 26663 24614 13320 24113 10299 8908 8393 9781 9944 26664 19306 25344 25343 19305 19020 10300 335 334 9783 9945 3102 20715 21030 20349 20714 13070 10301 8252 8576 9701 11161 26665 20149 20945 25495 17938 20150 10302 9484 9982 9357 10522 24062 13019 26666 25231 12076 15988 10303 9860 9900 9353 10803 26314 26667 25856 26313 26668 26312 10304 1458 827 804 9845 5426 5343 5427 25627 12064 12063 10305 367 1038 1356 9844 3274 3273 3272 23376 26669 22457 10306 1356 805 1341 9844 5432 2921 3276 26669 14446 23533 10307 1430 876 1458 9845 5724 4912 5429 24266 25627 24941 10308 8193 9703 8614 10471 11344 16056 26670 11329 15549 11345 10309 8109 10748 10023 10797 26671 22110 19695 19696 18640 26672 10310 9050 9018 8142 9712 20804 26673 16303 12410 16302 20803 10311 9374 9836 9616 9949 26674 14921 24896 26675 19943 19942 10312 7742 10324 7656 10948 26676 19281 26677 26678 19283 18360 10313 9571 9605 9378 10057 26679 11488 26581 26578 11491 11493 10314 280 9767 1053 10206 22838 16022 2829 22837 16962 16961 10315 277 9767 279 10210 16024 21555 2822 16964 21554 16965 10316 9797 10157 8339 11104 23697 26680 23338 23340 23339 26681 10317 9212 9609 9563 10055 26682 25782 26683 26684 25781 18030 10318 1526 10475 1143 10509 19407 26685 2362 21272 25655 21532 10319 9264 10084 9526 10843 19741 26686 24843 19743 24845 16020 10320 1546 10370 9542 10521 26687 26688 25241 26689 26690 22677 10321 9385 10457 10062 10923 14998 26039 26691 21053 17130 21054 10322 9282 9485 10008 10104 26692 19329 12304 15084 12960 21825 10323 9383 9849 9573 10001 24690 26333 26018 13245 26335 24414 10324 7596 9549 7582 9907 16654 23562 26349 16283 24087 15866 10325 8252 8262 8576 11161 26209 26693 26665 25495 20150 26210 10326 9924 9439 10482 10866 14209 23873 26535 17536 23874 23043 10327 9404 10060 9562 10232 26694 26695 26696 26697 26698 26616 10328 7789 6961 8797 9912 26699 26700 26701 26702 26531 26703 10329 8218 8220 10513 11133 26704 26125 26705 26706 24359 26127 10330 9418 9792 9670 10294 24468 19793 26707 24467 21831 18578 10331 1211 7740 10072 10427 26708 26709 25454 25455 17887 26710 10332 451 546 447 10292 3673 3672 3634 20271 14076 18046 10333 1172 1525 10242 10525 6183 19173 26711 26712 19174 13641 10334 9124 8532 8443 9806 18719 26713 18620 11451 18619 17680 10335 9415 10085 9614 10691 15200 15660 26714 14180 20102 15201 10336 9058 8459 10453 10690 26715 22610 26716 26717 22611 22488 10337 7664 160 1163 9914 24978 1850 25728 24981 25729 24982 10338 10171 10494 7854 10516 24860 25967 26718 23529 25968 25848 10339 8218 8747 8220 11133 26719 26126 26704 26706 26127 24358 10340 1314 674 10233 10489 4236 21879 17672 17819 17820 25691 10341 8775 9495 10581 10793 20497 18297 25185 26720 26721 25931 10342 8539 8542 8538 10472 26722 22786 25766 26723 20177 20770 10343 1399 9834 891 10907 26724 12339 5769 26725 26016 22760 10344 8795 10368 8054 10650 26726 17184 26727 26728 17187 17189 10345 6360 10154 8791 11088 17641 26729 26730 24462 26731 24463 10346 9457 9710 9705 10735 23488 12416 21438 21472 18563 21115 10347 8083 8080 8082 10190 13223 26732 26733 13224 17872 13225 10348 7536 9580 7570 10690 20746 26734 26735 26006 26736 26007 10349 9205 10226 9552 10380 14450 19870 26737 19048 21234 19049 10350 1317 297 9837 10593 2924 18977 26738 22084 18975 18976 10351 6972 6900 7789 9826 7083 26739 24652 24655 24657 26740 10352 7564 7570 9580 10690 26741 26734 26742 24741 26007 26736 10353 8793 9687 8727 10263 26743 26744 26745 26746 26747 16942 10354 9496 10592 10482 10717 13621 24126 26534 22866 23447 26365 10355 745 9812 10667 10791 26748 11509 18971 18972 15572 26749 10356 184 9608 7557 10998 26750 26751 26752 26753 26754 24712 10357 9412 10236 9504 10705 21652 21651 21650 23558 25162 21318 10358 8355 8353 8711 9809 25908 26755 14295 14293 14294 25907 10359 794 1309 560 9808 4241 2781 4239 19352 26756 14801 10360 8205 8146 8902 9807 26757 12233 26758 26759 12235 12234 10361 1226 873 1022 9813 5712 5705 3419 12244 25910 12245 10362 1066 1270 873 9812 5156 5326 5713 11507 12243 25912 10363 1280 1422 1443 9810 6236 6241 6240 24107 26760 23962 10364 7864 7830 7828 9815 12239 26761 26762 12240 26763 12241 10365 8494 8498 8496 9817 25917 25113 26764 25918 25114 24604 10366 667 791 790 9818 4775 4774 4195 25920 19418 23433 10367 8208 9494 10623 10821 24458 26765 26766 24459 26767 24460 10368 6360 8791 10127 11088 26730 26768 17638 24462 22254 26731 10369 7916 8635 9816 11157 25915 25914 22349 14681 22350 26769 10370 9856 10448 9244 10750 20243 21157 21156 24772 26770 24773 10371 8574 9739 10361 11161 26771 11820 26772 26773 26774 26775 10372 6371 10297 10319 10459 26776 17770 26777 26778 26779 26780 10373 1199 1502 193 10126 2407 2406 2160 26781 26782 26783 10374 9510 10856 9573 10864 26784 26566 26017 26785 17683 26568 10375 8707 10549 9646 10847 26786 26787 16542 16543 15206 26788 10376 9396 9604 9515 10862 25262 25261 25263 21361 26789 26790 10377 411 413 414 10678 3492 3495 3494 20291 24296 16483 10378 8063 9598 8064 10238 19568 14980 24400 22534 14693 14981 10379 9215 9778 10892 11065 23915 15477 16650 25927 25880 26791 10380 302 10593 9774 10858 19736 26792 26793 19737 18874 18980 10381 7916 9004 8635 11157 26794 26795 25915 14681 26769 26796 10382 9203 9488 9631 10548 22039 15889 22321 14610 15265 23008 10383 8762 9731 10554 11092 23918 15781 26797 23919 26798 23920 10384 9383 9510 10197 10428 26019 16658 13190 12533 16195 16660 10385 8723 7976 9831 11112 26799 22835 26800 26801 22836 22497 10386 9210 9579 9520 11036 26802 26523 26803 26804 26524 21038 10387 9477 10320 9850 10915 11333 11334 11271 26805 17541 16380 10388 7961 8737 7875 10575 26806 18746 26807 26808 18747 15569 10389 8659 8658 8417 10576 18749 26809 26810 18750 26811 18730 10390 9667 10271 9448 10542 26080 25355 25591 26082 20040 22543 10391 9004 9816 8635 11157 26812 25914 26795 26796 26769 22350 10392 10001 10081 9469 10950 14177 23413 24692 24369 22060 14888 10393 9735 9761 9352 11022 22450 22449 22451 23348 23542 23349 10394 9277 9906 9895 10704 14039 20295 18646 22687 22689 25588 10395 9438 10234 10042 10816 16627 16628 11229 21541 24141 25380 10396 6963 1383 959 10687 26813 2112 24621 26814 26815 26816 10397 7625 7562 7638 10657 26817 26818 26819 26820 24581 26821 10398 8885 9821 8363 9921 22122 12584 26822 22123 12582 12583 10399 6945 9514 6947 10255 21227 14162 7437 22715 17972 17974 10400 9344 9905 9689 10000 23711 26823 26824 23710 26825 20789 10401 9472 9859 9227 9973 13720 22107 26826 19944 22441 16931 10402 329 1069 324 9671 3060 3059 3057 21139 26827 24411 10403 1101 463 461 11159 3744 3743 3745 24523 16348 19431 10404 6364 6366 6370 10663 6849 6851 6473 23718 17443 22846 10405 7791 8833 6359 9635 26828 26829 26830 26831 26832 26833 10406 327 322 9504 10804 3008 26834 22090 26835 16547 26836 10407 7660 9544 7733 10321 25553 26837 26838 25556 26839 25557 10408 6290 1574 10384 11085 24167 26840 18734 22899 22901 24441 10409 165 208 1441 10155 2140 2257 2256 14072 15014 14073 10410 8373 8372 9589 10340 26841 22989 26842 26843 22990 22917 10411 9243 9482 10214 10323 26844 20986 13675 12900 25988 26154 10412 9220 9760 10419 10535 14106 17391 12518 12407 21142 22545 10413 1246 10528 754 11154 26845 26846 4421 20866 26847 26848 10414 9650 10577 9972 11128 26301 14553 25939 26302 26849 26303 10415 198 9541 7551 10585 15075 15074 15076 23665 26850 13980 10416 883 9902 1307 10534 14090 25542 3904 12786 25543 13870 10417 9285 9987 9687 10032 12128 11954 16941 13433 26851 24473 10418 9253 9645 10327 10814 18583 26852 26853 26140 26854 26141 10419 9427 10318 10110 10895 26855 14702 26856 26857 19621 19620 10420 704 10172 9553 10820 22117 16139 24323 25051 16141 15445 10421 9472 9227 9859 10464 26826 22107 13720 15106 11822 12678 10422 7695 9614 7698 10530 23142 22509 26858 25290 23116 23115 10423 7687 9793 7690 10332 24100 24119 26859 24102 24118 23958 10424 9797 10184 9298 11104 23337 26860 26861 23340 26862 23341 10425 8598 9742 10454 10857 26863 15736 26160 26162 26164 25466 10426 9467 10233 9647 10489 20373 20815 20814 20372 25692 17820 10427 9452 9803 9584 10379 25474 26864 21354 25475 26865 25476 10428 9695 9769 9350 10449 12044 12045 11311 24638 26866 24639 10429 6902 6989 9836 10253 7325 24464 26867 26868 20440 24779 10430 9249 9866 9746 10791 23686 25358 25746 24455 24662 16170 10431 1122 9507 1556 10065 16243 25833 6142 17836 26869 17703 10432 750 9626 9829 11139 20535 20657 21686 26870 26871 26872 10433 6293 9507 6382 10384 21716 18520 6706 21717 26873 21718 10434 8664 9669 10474 10703 26874 26875 26876 26877 26878 17165 10435 9990 10426 9309 10888 24645 22316 21120 15358 22014 24647 10436 675 9726 9706 10541 22683 22682 22684 26879 16218 18597 10437 9720 10019 9303 10734 24180 26880 14897 23715 26881 24995 10438 8633 8121 8398 9663 17029 26882 18805 12188 18804 17028 10439 9643 9921 9810 10708 13458 26571 25479 19806 18192 19807 10440 8765 8968 8493 9820 26883 24009 26884 26885 24010 23565 10441 9689 10000 9905 10772 26825 20789 26823 26886 24274 24273 10442 8868 7706 7769 10948 24341 26887 26888 22516 26272 24343 10443 9638 1382 10140 10911 26889 18616 15433 15435 13472 26890 10444 9221 9893 10822 10952 26277 15605 26891 26278 19600 19312 10445 351 356 353 10603 3195 3194 3193 14316 16593 26892 10446 10059 10204 9280 10394 16299 12540 26893 16301 16681 13629 10447 8205 8146 9807 10900 26757 12234 26759 26894 14385 14384 10448 8329 8698 10166 10789 26895 26896 13290 20158 19528 26897 10449 9450 9713 10199 10989 26898 26899 15834 25030 25032 24616 10450 8839 10190 8078 10798 17871 26900 26901 19687 26902 19688 10451 8710 9923 8975 10868 18123 26903 26904 18124 26905 18125 10452 9065 10348 9880 10903 20874 14041 17481 26906 13755 14043 10453 757 9751 1097 10860 26907 24225 5208 26908 25859 25858 10454 9669 9254 9903 10848 26909 14389 21260 23478 23477 16976 10455 9507 10154 10127 11088 17642 17643 17639 17704 22254 24463 10456 9765 10711 8641 10743 17286 19168 26910 17450 19170 19171 10457 9634 9929 9407 10023 20038 26911 15381 15382 11327 26912 10458 9335 10007 10202 10701 12727 26913 12555 12728 19187 12729 10459 9406 9733 10082 10615 26425 26914 17207 17052 17209 19723 10460 9367 9888 9770 10558 23692 21925 13147 22259 21279 22493 10461 6390 6302 6394 9560 6753 6570 6428 18023 17908 26915 10462 9234 10020 9790 11130 21772 18139 18211 18213 14433 18143 10463 8625 8339 9797 10157 26916 23338 22972 23696 23697 26680 10464 8708 10385 8807 10783 26917 19081 26918 26919 19084 19086 10465 9713 10114 9615 10671 21300 26920 21891 20294 21412 17512 10466 1133 1272 10068 10978 3449 26921 20508 12759 20509 26922 10467 8884 8363 8885 9821 26923 26822 24392 24391 22122 12584 10468 292 291 10199 10500 2887 18998 13509 16123 15838 18999 10469 675 672 558 11180 4229 4228 4230 22685 16471 23635 10470 1556 10065 9507 10384 26869 17703 25833 25834 21718 26924 10471 887 10580 10029 11021 26925 23856 19375 19542 18393 26926 10472 9383 10197 9971 11095 13190 26927 26928 26929 26930 22869 10473 7855 7853 7852 10494 26931 26932 23371 12375 23375 26933 10474 7726 181 9542 10521 19594 19597 19598 26934 26690 26935 10475 610 9866 10399 11100 25597 16084 26936 24098 26937 25598 10476 9774 9891 9381 10629 12850 26938 24246 24249 17914 26939 10477 754 596 653 10528 4419 4417 4420 26846 12395 12394 10478 9233 10009 9534 10488 13266 17596 25704 13016 16826 15326 10479 851 767 1236 10039 5260 5187 5261 23179 13843 22924 10480 9477 10024 10564 10915 21217 18473 21219 26805 24815 24814 10481 6327 6328 6329 9558 6718 6831 6830 23848 21626 21151 10482 963 157 9682 10276 2217 23123 25398 26435 26371 26370 10483 1580 10391 947 11011 18963 26940 2431 23355 26941 20361 10484 9317 9527 10063 10538 26942 26943 13473 13220 13475 26944 10485 903 9521 1461 10393 14779 26945 4970 14573 26946 14780 10486 8483 8882 10137 10756 25036 23291 26947 25037 23509 23508 10487 9239 9605 9571 10975 26948 26679 26949 12946 26950 16780 10488 9964 10477 9541 10609 18547 18700 18698 21634 21010 21635 10489 9499 9939 9586 9950 23667 26090 18607 15431 19061 23668 10490 9047 9070 10457 10816 26951 26952 14996 25104 21540 26953 10491 9532 10118 9262 10183 26954 13532 16481 11594 15771 26955 10492 9318 10118 9532 10183 13105 26954 25807 13077 11594 26955 10493 9528 10121 9318 10186 26956 13109 25809 25808 13079 26957 10494 9529 10119 9354 10185 26958 13121 13678 12325 13677 26959 10495 9706 9656 10639 11130 26960 26961 25685 25687 25688 26962 10496 9535 9409 10501 10763 22080 14520 26963 22082 15727 18856 10497 8908 8288 9944 10835 26964 13576 25343 25345 13578 13577 10498 8846 10107 6917 10841 24667 21221 26965 24669 21222 18426 10499 9276 9722 10337 10956 26966 26967 26968 25427 26969 26970 10500 9613 428 10478 10670 26971 19194 25659 22978 19379 19378 10501 9090 10406 10796 10936 26972 26973 26974 26975 20523 26976 10502 8877 9641 8342 10566 14787 26977 26978 14788 26979 12008 10503 6327 9843 9558 10710 26224 25811 23848 23849 22019 26980 10504 701 10659 9953 10778 23079 14274 26981 23080 18682 22198 10505 9562 10232 10060 11174 26698 26616 26695 26982 16507 26617 10506 9353 9577 9518 10917 22564 21074 26983 21979 21076 20653 10507 9521 9578 9213 10918 19692 21739 16199 19693 20036 16883 10508 9276 9722 9941 10337 26966 26984 23787 26968 26985 26967 10509 540 10018 9728 11093 26986 26987 26988 26989 26990 25152 10510 8631 10231 9607 11137 25748 26991 26992 26993 26994 23131 10511 9266 10004 9841 10495 23335 17902 12515 14587 24725 20327 10512 9787 10408 650 11139 19989 26995 26996 26997 26998 26999 10513 8574 10361 8575 11161 26772 27000 27001 26773 27002 26774 10514 9239 9571 9925 10975 26949 17966 24883 12946 17594 26950 10515 9592 10067 9672 10216 11403 25952 25951 15848 27003 15849 10516 219 220 10727 10924 2527 27004 23875 19115 23876 27005 10517 9530 10013 1385 10720 26470 26469 18714 26604 27006 27007 10518 9474 10221 1001 10625 25539 25538 16092 15396 16093 18054 10519 7656 7742 1263 10324 26677 27008 26035 19281 26036 26676 10520 1036 10594 986 11052 27009 24396 5098 27010 20955 24397 10521 755 621 756 11138 4535 4543 4542 26103 25563 27011 10522 9346 10805 9880 10903 11569 18538 13750 13753 13755 16356 10523 6928 10011 6908 10373 25634 22578 7356 25635 22581 20132 10524 9390 9984 10131 10941 16895 16897 13357 21336 22478 13947 10525 9584 9963 9803 10887 19848 21699 26864 23461 26152 23462 10526 9688 10106 9992 10806 27012 24377 25604 25606 20835 27013 10527 539 9728 540 10018 27014 26988 4127 27015 26986 26987 10528 1365 541 10476 11089 3166 26649 25709 25711 23914 27016 10529 9832 9202 10201 10372 11995 15978 18132 22146 22145 16640 10530 8834 9744 10723 11191 27017 14240 27018 27019 27020 27021 10531 9048 10708 7969 11168 27022 20884 27023 27024 20879 20885 10532 10212 10883 9206 11114 23406 25024 25317 24954 27025 24191 10533 9262 9929 9757 10679 15655 15654 13529 17301 17300 24382 10534 6942 9740 6944 10205 14839 24862 7367 15872 24865 15871 10535 9263 9992 9688 10106 26341 25604 20928 27026 27012 24377 10536 6937 6935 6904 10610 7339 7338 7191 23755 22903 18253 10537 8403 7890 8873 9586 24818 27027 27028 24161 26091 24819 10538 552 449 9927 10873 3683 21941 27029 27030 21945 21944 10539 9235 9571 10057 10762 26577 26578 21801 16557 19162 27031 10540 9285 9478 9918 10681 21720 14761 12888 14901 14900 20430 10541 9485 9312 10219 10670 27032 21056 27033 21826 18611 21208 10542 6944 6910 7809 9740 7147 25504 24864 24862 24863 25508 10543 1582 7723 944 10526 27034 27035 1838 27036 22999 27037 10544 8864 10089 9745 10749 18311 18310 18309 27038 18912 19397 10545 1505 9830 975 10011 21001 18073 5981 21002 18076 18078 10546 9211 10582 10004 11038 27039 23127 16427 23096 20533 23129 10547 9662 10030 9206 10883 20490 20488 20337 27040 25024 24037 10548 394 1025 1066 10667 3409 3408 3407 19348 11431 27041 10549 9243 9596 9823 10214 13674 27042 11220 13675 27043 11414 10550 9567 9322 10106 10536 27044 27045 27046 25551 27047 14614 10551 9217 9927 9822 10873 24612 21940 24613 20063 21943 21945 10552 9387 9978 9977 10866 20266 25581 27048 13486 27049 18301 10553 6917 10107 8846 10600 21221 24667 26965 21220 27050 15813 10554 7621 7569 9828 10555 27051 27052 19650 19653 18961 27053 10555 9418 9961 10022 10294 22778 20384 20721 24467 20385 20278 10556 9728 9865 9221 10952 18689 18687 18684 24202 26278 24704 10557 9047 9609 8081 10816 13713 18861 27054 25104 27055 23524 10558 9365 9891 9774 10629 13568 12850 12597 25266 24249 26939 10559 9836 10161 9525 10713 20438 21675 23124 27056 20664 21677 10560 9362 10229 9824 10363 12466 13436 20343 11864 23872 27057 10561 9267 9522 10405 10471 20892 15788 21042 12818 24138 16772 10562 9412 9504 10269 11004 21650 16667 21653 23784 27058 27059 10563 6337 9677 9501 10828 26453 23358 23367 27060 23571 20477 10564 9416 10169 9508 10378 15904 17340 23782 18760 23783 26044 10565 9369 9912 9795 10836 13938 19055 27061 14380 19058 15234 10566 694 10289 9789 10825 26415 27062 27063 26416 20741 26417 10567 9220 9864 9760 10535 14130 16479 14106 12407 22545 16861 10568 1488 9909 10221 11107 27064 23504 27065 27066 27067 27068 10569 9286 10349 10105 10758 27069 22646 13081 13084 13086 22648 10570 9336 10491 9840 10925 20078 18489 20077 27070 24000 23999 10571 7788 6357 8756 10524 27071 27072 27073 27074 27075 27076 10572 9713 9939 9499 10989 19574 23667 21890 24616 24798 24617 10573 9601 10188 9409 10507 14849 15299 23547 23612 14523 27077 10574 9274 9609 9563 10042 23523 25782 27078 25379 27079 21499 10575 8208 10623 9494 11136 26766 26765 24458 27080 27081 27082 10576 7666 6919 10373 10514 24448 24449 24349 27083 27084 27085 10577 925 9480 924 10718 22781 22779 5600 27086 27087 27088 10578 955 954 862 9847 5675 5673 5676 12178 12180 22292 10579 554 1297 954 9847 3761 4210 4209 12181 22292 12182 10580 9833 10275 9468 10676 14407 11878 20091 21073 12310 12309 10581 9961 10294 9418 10920 20278 24467 22778 22962 18855 22963 10582 1214 10528 9936 11160 27089 14425 27090 27091 27092 27093 10583 7802 8773 6902 9836 27094 27095 27096 19888 26867 27097 10584 9527 9624 9223 10839 24573 27098 27099 27100 27101 27102 10585 9246 9989 9991 10492 12211 12213 11791 27103 13600 13599 10586 9693 10225 9103 10976 24589 25742 25741 18371 27104 27105 10587 306 10200 307 10827 25752 12988 2934 25713 21458 21459 10588 9549 10423 1043 10439 21117 27106 23263 23265 23264 17768 10589 9282 9485 10104 10650 26692 21825 15084 17515 27107 19330 10590 7745 7737 7667 9560 27108 27109 17906 17910 17909 20951 10591 1246 754 1217 11154 4421 5196 4380 20866 27110 26847 10592 434 1369 441 9822 3610 3609 3608 26216 26238 17725 10593 9215 10406 10328 11065 21733 21683 25528 25927 22415 22414 10594 7900 9500 7907 10545 12682 25095 25094 18549 27111 18550 10595 787 9679 1354 10792 18623 27112 4895 20220 27113 14227 10596 1407 1354 9679 10792 5445 27112 11502 14225 14227 27113 10597 8723 7976 7982 9831 26799 23681 27114 26800 15244 22835 10598 9376 9917 9729 10954 22076 12620 22075 25854 23904 23903 10599 945 9858 10562 10981 27115 19412 27116 27117 27118 20139 10600 1030 10000 349 11140 27119 20788 3185 27120 20791 20793 10601 6980 155 6951 10807 27121 25117 7218 27122 25120 25119 10602 991 10479 9768 11054 25225 14908 25224 27123 22642 24734 10603 688 10846 9811 10964 20308 20309 20307 27124 27125 27126 10604 7969 10181 8865 11168 20878 20329 27127 20879 20332 20334 10605 1326 9562 6301 10483 19812 19813 19811 27128 27129 27130 10606 10278 10730 6332 11096 27131 27132 27133 27134 27135 27136 10607 529 531 10411 11184 4082 27137 22717 24759 24760 27138 10608 9938 10318 9427 10896 23688 26855 27139 23690 27140 22618 10609 8779 10259 10036 10991 18593 24260 27141 18595 13570 17389 10610 9995 10213 9487 10392 23042 26641 21416 18718 22987 16467 10611 738 10113 9670 10920 17152 27142 27143 17153 27144 15716 10612 8078 8839 8082 10190 26901 17870 27145 26900 17872 17871 10613 1340 10326 1337 10485 14488 27146 3811 14491 21722 14492 10614 1302 10196 420 10966 21974 27147 3526 14915 27148 22086 10615 1192 171 6904 10610 2052 27149 26430 26432 22903 23754 10616 7638 10657 9511 10686 24581 27150 26637 22308 21186 22471 10617 8946 10301 10803 10992 27151 27152 27153 27154 27155 27156 10618 1124 1516 183 9552 2357 2356 1705 19663 20586 21233 10619 9211 9472 10304 10460 21069 13719 16295 19623 27157 17461 10620 9689 10056 9272 10652 19445 22935 27158 19448 22936 19449 10621 9971 10169 9508 11076 16357 17340 24066 22777 27159 18293 10622 8505 9897 9067 10048 20154 16855 27160 21016 16853 16854 10623 9484 9357 10469 10522 26666 22408 25230 25231 23580 12076 10624 9919 10411 9422 10972 21992 27161 27162 21995 20828 21996 10625 6353 10154 6356 10531 20993 19140 6798 20994 24114 20995 10626 8985 11040 9814 11187 27163 21265 27164 27165 27166 27167 10627 6320 6319 10643 10725 6741 27168 25663 25665 25667 27169 10628 687 794 9808 10637 4240 19352 13849 17685 14803 19353 10629 623 700 1278 9666 4554 4556 4541 18921 27170 12661 10630 8793 8727 7964 10263 26745 27171 16712 26746 12130 26747 10631 8714 11040 8985 11187 27172 27163 27173 27174 27165 27167 10632 9312 9669 9545 9957 27175 27176 27177 27178 27179 24809 10633 7584 7585 10447 10475 27180 27181 13181 22756 22758 27182 10634 9227 9472 10211 10464 26826 17200 17636 12678 17355 15106 10635 9236 9736 9611 10371 18255 27183 27184 18468 15702 18469 10636 9369 9795 9684 10836 27061 27185 12067 14380 27186 19058 10637 310 308 10236 11123 2978 20699 27187 27188 22235 22234 10638 9472 9973 9227 10211 19944 22441 26826 17200 17636 21194 10639 560 9808 1309 11057 26756 14801 2781 27189 24015 20776 10640 1422 1443 9810 11058 6241 26760 23962 24014 20778 27190 10641 7828 9815 7830 11059 26763 12241 26761 27191 24016 20780 10642 9503 10505 9323 10516 27192 23322 27193 27194 22863 27195 10643 9482 10505 9503 10516 24762 27192 27196 23498 27194 27195 10644 9020 9653 8268 10161 17959 27197 27198 18940 17852 18641 10645 9805 10538 9452 10887 22295 27199 27200 22298 27201 22299 10646 8697 10009 9534 10624 20253 17596 16822 25493 25494 19727 10647 7647 7679 7773 10590 27202 27203 26503 26505 26507 27204 10648 8822 9142 8821 10586 27205 13875 27206 25470 13877 13876 10649 9844 10159 9328 11179 22456 17707 27207 22459 21982 22460 10650 9849 9469 10293 10756 24689 27208 23676 23679 23678 26245 10651 1573 6380 1538 10375 27209 27210 2011 17787 27211 27212 10652 7981 7983 7982 10622 27213 27214 15243 11962 15245 27215 10653 9701 10682 9501 10828 21747 27216 23361 17935 23571 21748 10654 9511 10657 7002 10686 27150 27217 27218 21186 27219 22471 10655 10083 10163 8640 10634 15910 12823 12984 21388 27220 16376 10656 934 9914 10456 11052 27221 24697 19480 23160 23161 24699 10657 9478 9780 9292 10626 27222 27223 20428 20429 19864 26064 10658 9520 9579 9218 10352 26523 27224 25155 20247 21346 21020 10659 7570 7536 7564 9580 26735 27225 26741 26734 26742 20746 10660 8466 10209 9947 11016 27226 27227 27228 27229 18104 27230 10661 9276 10337 9941 10956 26968 26985 23787 25427 26129 26969 10662 9315 9730 10177 10433 16398 23499 16259 12363 21379 23500 10663 9215 9659 10131 10328 25527 18663 11302 25528 27231 25529 10664 8983 9640 9002 10164 16228 27232 27233 16851 17941 16850 10665 923 11142 10060 11174 27234 27235 27236 27237 16507 27238 10666 9309 10664 9820 10888 27239 24498 21118 22014 15357 24500 10667 9001 8008 9716 10597 27240 22052 22910 22912 15379 22222 10668 330 343 9916 10049 3087 25636 27241 27242 25637 25638 10669 1030 578 349 10000 3184 3183 3185 27119 20788 27243 10670 405 9839 407 9908 27244 12633 3463 27245 13696 13698 10671 263 9841 1482 9909 12513 24293 2754 13700 27246 13701 10672 8503 10110 8442 10895 24719 19956 26501 27247 20598 19621 10673 9382 9799 10281 10624 24214 22709 24213 16842 13967 26437 10674 1090 9694 730 10113 11476 22416 3236 13215 13866 15418 10675 976 9984 970 10515 24002 25845 2293 24003 23582 24004 10676 353 10603 356 11067 16593 26892 3194 19907 27248 19908 10677 9440 10066 10282 10346 13860 13460 13635 23630 23631 25272 10678 6963 959 9676 10687 24621 25128 25127 26814 18110 26815 10679 9724 10059 9280 11178 23088 26893 13986 23618 25949 23619 10680 8888 10024 10771 10775 18472 25329 23164 27249 27250 27251 10681 9281 9492 10141 10390 18932 27252 27253 18933 27254 18934 10682 9923 10480 8975 10868 27255 27256 26903 18125 26905 27257 10683 394 9523 1025 10667 19579 27258 3409 19348 27041 17456 10684 9571 9690 9378 10880 26575 26580 26581 27259 27260 27261 10685 8316 10252 9703 10621 25429 16055 27262 25432 11852 25433 10686 9380 10864 9829 10959 15093 21689 27263 15094 24817 15027 10687 9208 10470 10561 10983 18083 27264 13396 12755 24496 17810 10688 8123 9982 8122 10522 13020 19257 27265 12147 21522 15988 10689 9690 10243 10057 10881 27266 19160 26579 27267 12269 25573 10690 9202 10224 10010 10717 23832 22827 11836 22044 16697 23833 10691 7875 7874 7876 10265 27268 27269 19739 19670 13206 27270 10692 8416 8852 8412 10266 27271 27272 15090 19277 11596 27273 10693 295 10200 9526 10853 22905 22904 18062 27274 27275 27276 10694 9683 9781 9230 10835 26255 27277 13362 27278 13649 25346 10695 753 10202 9531 10441 18914 18769 15088 16041 13962 19752 10696 9650 9972 9303 11128 25939 23764 13337 26302 26304 26849 10697 6986 8846 6917 10841 25583 26965 7131 25585 21222 24669 10698 9497 6982 9912 11158 22658 22657 22656 24524 27279 27280 10699 8466 10390 10209 11016 27281 24680 27226 27229 27230 19132 10700 9118 10396 10477 10643 27282 26112 20958 18887 24598 27283 10701 1358 594 9547 10850 4410 16339 15530 15682 16326 27284 10702 9895 9906 9408 10704 20295 23549 15279 22689 23564 25588 10703 8660 7812 7810 10358 27285 18119 27286 11928 15286 18118 10704 1246 9893 10528 11154 21376 15331 26845 20866 26848 21377 10705 8164 10484 8165 10867 27287 24297 27288 27289 24299 24301 10706 8951 10259 8695 11149 25577 27290 27291 23537 27292 25578 10707 9505 10356 9858 10732 11580 21727 20817 24145 20138 18985 10708 1252 751 1116 9829 5174 5183 3984 25463 24816 21685 10709 9303 10019 9720 10088 26880 24180 14897 26513 25393 25394 10710 9223 9557 9624 10364 27293 27294 27098 27295 27296 27297 10711 10507 10814 9330 10825 22724 27298 27299 22996 20285 22997 10712 8327 8626 10337 10834 27300 19287 27301 27302 19289 19288 10713 9548 10226 7593 10418 12601 24566 23245 15913 23246 27303 10714 9384 9778 10086 10126 17602 23909 13285 13907 13906 22200 10715 6905 9676 6963 10781 27304 25127 7239 24537 24623 21136 10716 9437 10067 10230 10408 11404 16606 16657 18475 27305 19990 10717 10277 10384 9426 11085 17220 27306 15741 26069 27307 22901 10718 9721 9278 10233 10898 27308 20687 22634 21451 21697 22763 10719 984 549 10257 10736 3211 27309 27310 24395 23400 27311 10720 9251 10231 10048 11137 20128 16858 20127 25187 20167 23131 10721 9439 10213 9995 10392 16466 23042 16909 14679 18718 16467 10722 1567 10261 10117 10725 27312 23799 26203 26204 21989 27313 10723 9048 7969 9015 11168 27023 27314 27315 27024 27316 20879 10724 8871 7822 7883 11169 27317 21252 27318 27319 21254 21253 10725 449 9822 746 9927 21942 21145 3685 21941 14793 21940 10726 1222 1224 6369 10319 1927 27320 27321 27322 27323 27324 10727 9326 9582 9523 10809 27325 27326 17454 21148 27327 27328 10728 9783 9946 9333 10665 27329 14495 11480 14441 12274 24440 10729 9484 10066 9982 10522 22504 19256 24062 25231 15988 13863 10730 7866 10007 8757 10701 15191 22694 22695 15197 27330 12729 10731 9375 9958 9509 10150 11511 21761 23111 13964 25159 23227 10732 9795 10163 9684 10836 15567 17971 27185 19058 27186 16567 10733 10257 10476 984 10736 13933 24394 27310 23400 24395 20252 10734 8794 10050 9010 10368 22725 14217 27331 25714 14219 18791 10735 773 10170 10077 10960 27332 27333 22891 22892 21885 27334 10736 9127 9199 9502 10793 23415 17719 23417 27335 21893 27336 10737 7702 10242 9495 10675 27337 25930 22257 26464 24938 27338 10738 9285 10032 9687 10790 13433 26851 16941 12932 27339 13434 10739 9233 9822 9735 10627 27340 27341 15669 27342 22821 24112 10740 7852 10494 7853 10927 23375 26933 26932 25362 27343 25363 10741 8666 10101 9756 10703 25983 16194 25982 27344 19536 27345 10742 8915 10187 9761 11022 21729 16397 27346 21730 23349 19910 10743 9048 9015 10708 11168 27315 27347 27022 27024 20885 27316 10744 9802 10117 9399 10286 24287 16341 25725 17805 19684 19686 10745 9972 10054 9650 10777 25941 21106 25939 23980 13339 23827 10746 8783 9110 9975 10224 26399 24255 26400 26598 25735 25736 10747 8336 10387 9788 10787 21182 16160 23083 21183 20761 17136 10748 8819 9697 8451 9935 23027 11980 23025 27348 12783 12785 10749 1385 10053 9530 10720 20101 18768 18714 27006 26604 17667 10750 7837 7839 7965 9585 26525 27349 27350 25372 19877 26221 10751 1129 484 9655 11094 3859 11409 27351 27352 23214 23213 10752 8406 10012 10516 10851 27353 27354 27355 27356 18441 27357 10753 9925 10057 9571 10762 17593 26578 17966 17435 27031 19162 10754 9586 9939 9499 10351 26090 23667 18607 18605 18606 19577 10755 9467 9940 10233 10547 13298 20686 20373 21000 17674 25306 10756 9231 9563 10596 10798 27358 26484 16275 15514 25386 26485 10757 1271 9554 6347 10344 19265 21868 21867 27359 27360 27361 10758 9518 9577 9353 10803 21074 22564 26983 27362 26668 27363 10759 210 10255 9514 10608 23390 17974 19041 27364 23989 16087 10760 9721 9599 10148 11037 26236 27365 14891 27366 27367 27368 10761 9722 10148 9599 11037 14272 27365 27369 27370 27368 27367 10762 6308 9618 7800 11077 27371 27372 27373 27374 27375 25103 10763 9122 7799 9964 10609 27376 18545 27377 27378 21634 21633 10764 9230 9683 9536 10129 13362 19326 27379 13363 19325 12431 10765 9537 9684 9369 10130 21742 12067 27380 21741 12066 11867 10766 9305 10666 9899 10860 21332 23418 26557 27381 19294 23420 10767 8486 9985 8264 10362 20296 21289 27382 27383 21288 19538 10768 8460 8592 9034 9555 27384 27385 27386 27387 20259 27388 10769 9496 9967 7600 10897 25619 25618 17582 22428 24486 27389 10770 757 1108 10666 10860 5201 23419 27390 26908 23420 20088 10771 9363 10236 9910 11123 15652 15653 12689 27391 22233 22235 10772 9562 10483 9404 10512 27130 27392 26696 24031 27393 27394 10773 9520 10352 9901 11036 20247 18005 17475 26524 27395 21039 10774 7723 7743 7657 10526 27396 19782 27397 27037 19784 19786 10775 8116 9738 10227 10845 27398 27399 13445 13447 13023 27400 10776 9430 10579 10294 10899 17881 20281 27401 26339 25082 25081 10777 7909 9962 10191 11014 26655 14096 27402 26656 27403 26657 10778 8658 8417 10576 10957 26809 26811 18730 19318 19320 27404 10779 10270 10593 9891 10885 26275 26274 26273 27405 27406 27407 10780 9669 9903 9254 10636 21260 14389 26909 21845 14810 14812 10781 8735 8734 9733 10082 27408 27409 27410 27411 26914 27412 10782 9312 9485 10104 10670 27032 21825 27413 21208 19377 21826 10783 8742 9934 8215 10223 27414 15202 23173 23174 15049 12174 10784 9273 9798 9530 10630 16597 26602 26603 11770 27415 14550 10785 780 616 10061 10875 4512 27416 19008 16290 19012 27417 10786 9527 9317 10480 10538 26942 27418 27419 26944 27420 13220 10787 9683 10162 9781 10835 25727 15841 26255 27278 25346 17468 10788 923 10060 921 11174 27236 27421 5879 27237 27422 16507 10789 6344 9554 6345 10572 25871 21224 6696 25872 27423 24794 10790 9276 10016 9940 10956 13340 16049 20704 25427 22242 22241 10791 7919 7918 9658 10552 27424 16501 27425 27426 17946 17947 10792 9582 10305 9523 10838 20389 17455 27326 20391 19323 20392 10793 8329 8698 8201 10166 26895 27427 11657 13290 13292 26896 10794 1448 9841 10256 10460 13584 14699 27428 20090 19624 20089 10795 9504 10236 10269 10804 21651 21654 16667 16547 11923 27429 10796 433 9613 439 10909 22575 20886 3593 27430 19902 20888 10797 491 496 494 10517 3895 3894 3893 26330 27431 11498 10798 801 9915 1413 11089 14248 27432 5406 12559 27433 14249 10799 7923 10269 10527 11004 27434 27435 27436 27437 27438 27058 10800 8344 8339 10157 11104 27439 26680 27440 27441 26681 23339 10801 1199 10126 193 10744 26781 26782 2160 27442 22674 26518 10802 1222 6369 10297 10319 27321 27443 27444 27322 17770 27323 10803 6900 7789 9826 10812 26739 24657 26740 25600 25646 27445 10804 9520 9579 9210 10936 26523 26802 26803 27446 22627 27447 10805 8361 9943 10098 10138 22004 16534 27448 22006 13405 14138 10806 6904 171 6937 10610 27149 23753 7191 22903 23755 23754 10807 9678 10051 9447 10052 16741 16739 16720 24516 27449 25545 10808 9528 10576 8659 10993 18732 18750 18748 25998 26124 22553 10809 890 891 1399 9834 5500 5769 5768 12338 26724 12339 10810 7767 8853 9134 9828 20612 27450 19589 15634 19590 20613 10811 9761 9885 9217 10431 15211 15209 14485 22454 25957 23883 10812 9649 9817 9347 9932 25965 13410 16067 15097 16068 23825 10813 9515 10437 10224 10914 13308 21513 22828 27451 25005 25004 10814 1302 452 420 10196 3541 3540 3526 21974 27147 21975 10815 9904 9946 9783 10620 14494 27329 18404 22334 27452 27453 10816 9344 10640 9492 11140 22425 22423 22420 23712 27454 24629 10817 9435 10391 10325 10747 27455 27456 24873 27457 27458 24744 10818 8175 8674 8259 10773 27459 12867 27460 19491 13241 13240 10819 9536 9683 9406 10274 19326 20853 25726 19327 25599 13815 10820 1517 10312 9548 10800 27461 15829 27462 27463 16153 27464 10821 9597 9669 9336 10925 17076 21261 26547 20014 27070 20015 10822 8207 8933 8200 10271 27465 25738 25707 25706 24021 25737 10823 7745 9192 7737 9560 20894 27466 27108 17910 20951 20895 10824 9531 10441 10007 10465 13962 27467 27468 27469 15196 27470 10825 7622 10413 7623 10435 15918 27471 27472 23927 27473 23928 10826 9379 9723 9572 10799 18865 11342 27474 18866 15322 15324 10827 9186 7647 7773 9559 25773 26503 27475 25775 26504 25774 10828 7859 10564 10014 10771 23457 13269 27476 23458 15364 23165 10829 7572 7553 158 10631 27477 27478 25942 25945 25947 27479 10830 8625 8344 8339 10157 27480 27439 26916 23696 26680 27440 10831 8864 10089 8377 10728 18311 27481 27482 18312 27483 18313 10832 9822 10431 9217 10873 24416 25957 24613 21943 20063 24417 10833 1369 9822 434 10478 17725 26216 3610 21547 26215 21548 10834 9841 10004 9463 10495 17902 27484 24770 24725 14675 20327 10835 9355 9577 9518 10462 22675 21074 19963 17042 19964 27485 10836 9925 10162 9406 10649 25970 19592 20852 17433 17056 18165 10837 7907 10191 9500 11014 27486 27487 25095 27488 27489 27403 10838 9347 9795 9684 10508 11933 27185 17964 27490 11871 27491 10839 7911 10269 9962 11014 27492 25447 26654 26658 26657 27493 10840 9488 9958 9379 9980 13756 15799 23226 20174 25733 20198 10841 9271 9624 9527 10839 24574 24573 24572 27494 27100 27102 10842 301 9837 1057 10987 27495 20032 2901 27496 24222 17171 10843 372 370 9838 10986 3287 20211 27497 27498 17169 20212 10844 10222 10342 9455 11090 15129 25795 20447 20726 11898 27499 10845 9710 9316 10184 10493 12415 14198 25391 23489 14199 12942 10846 9584 9452 10400 10887 21354 21353 21352 23461 23463 27201 10847 9218 9696 10155 10949 25785 25787 25786 21347 27500 27501 10848 8779 8695 10036 10259 27502 27503 27141 18593 24260 27290 10849 8721 10480 9527 10868 27504 27419 27505 27506 27507 27257 10850 9633 10348 9253 11070 21047 27508 21180 16168 18585 21048 10851 6931 9693 6932 10744 27509 23791 7321 27510 23793 23792 10852 8772 8565 9591 10546 25286 24389 25288 27511 24390 22153 10853 9669 9545 10474 10703 27176 27512 26875 17165 26878 27513 10854 8378 8379 10097 10882 27514 20146 27515 27516 20147 16440 10855 9239 10162 9925 10649 16033 25970 24883 27517 17433 18165 10856 9435 10325 10690 10747 24873 27518 25204 27457 24743 27458 10857 9101 8434 8435 10892 25283 27519 27520 15476 27521 25284 10858 9201 9185 9907 10404 27522 16076 27523 27524 15867 16077 10859 8503 10334 10110 10895 23072 12879 24719 27247 19621 27525 10860 9294 9786 10529 10603 27526 24554 27527 21165 24557 24556 10861 788 1378 738 10920 5127 5126 5124 27528 17153 15715 10862 1451 9509 1444 10707 27529 27530 3056 27531 27532 27533 10863 8147 10105 10156 10349 27534 27535 27536 27537 18956 22646 10864 8705 10329 9743 11191 18809 19401 24532 27538 27539 27540 10865 685 10330 9750 11192 21950 22399 24533 27541 25251 27542 10866 230 231 9766 10550 2583 26412 27543 27544 26414 26413 10867 8046 9735 8042 10009 27545 15668 27546 27547 13264 15670 10868 9859 10181 9257 11168 20330 19146 16927 20333 23301 20334 10869 650 10408 9787 10972 26995 19989 26996 27548 19992 19994 10870 8630 10785 9121 10823 27549 24919 27550 27551 24922 24923 10871 9803 9903 9254 10543 14391 14389 14386 18316 27552 18317 10872 9714 10280 714 10691 12971 27553 20595 27554 17000 20301 10873 9545 9669 9312 10703 27176 27175 27177 27513 21055 17165 10874 9289 10760 10458 10901 12125 22304 27555 16869 22343 17648 10875 8997 8695 10259 11149 27556 27290 27557 27558 25578 27292 10876 10196 10966 10005 11121 22086 15162 21976 22681 22680 27559 10877 9536 9683 9230 10835 19326 13362 27379 17739 13649 27278 10878 9369 9684 9537 10836 12067 21742 27380 14380 16568 27186 10879 8043 7980 8951 11149 22376 23536 27560 22377 23537 15041 10880 8997 8951 8695 11149 27561 27291 27556 27558 27292 23537 10881 8310 10406 8436 10892 25877 27562 27563 25878 27564 21734 10882 6302 9192 6394 9560 27565 20893 6570 26915 17908 20895 10883 9252 9871 9753 10451 15642 22380 22379 27566 16026 27567 10884 9749 9867 9252 10451 23201 23204 23202 16029 27566 27568 10885 9509 10467 1444 10707 21086 27569 27530 27533 27532 23136 10886 9783 9904 9333 9946 18404 12801 11480 27329 14495 14494 10887 9929 10023 9634 10748 26912 15382 20038 15657 20039 22110 10888 9570 9251 10103 10358 27570 17393 27571 26508 27572 27573 10889 7834 10315 9479 10464 23208 18453 19632 20142 17354 18455 10890 8968 9820 8765 10108 23565 26885 26883 16892 21578 15756 10891 10271 10900 9667 11175 24020 14383 26080 24023 27574 24024 10892 8762 9731 8094 10554 23918 14356 27575 26797 15782 15781 10893 8968 8153 9653 10108 27576 27577 16221 16892 16893 27578 10894 492 1277 10057 10881 3886 11492 27579 27580 12269 12268 10895 9867 10177 9252 10451 16256 27581 23204 27568 27566 27582 10896 9252 10177 9871 10451 27581 16261 15642 27566 27567 27582 10897 8710 8924 10090 10868 27583 13062 18121 18124 14350 14349 10898 7781 9034 8592 9555 20257 27385 27584 20258 27388 20259 10899 9638 10140 1382 11103 15433 18616 26889 27585 27586 23577 10900 1056 10103 9570 10921 16460 27571 27587 27588 27589 13882 10901 9863 10722 9236 10945 24885 27590 16685 24888 25661 24889 10902 8814 10290 10321 11181 23157 14750 23159 27591 27592 27593 10903 9787 10411 649 10972 27594 22372 27595 19992 22373 21996 10904 9803 10287 9307 10379 22588 27596 27597 25476 16099 25477 10905 9262 10748 9634 11055 15656 20039 20037 15772 27598 27599 10906 7923 10527 9796 11004 27436 12503 27600 27437 18161 27438 10907 9823 10214 9596 10704 27043 11414 27042 22688 17457 17459 10908 395 390 9871 10203 3370 12505 16258 12541 13526 13525 10909 7879 9881 8657 10207 16676 15686 27601 13416 16687 16677 10910 7878 9881 7879 10208 16508 16676 27602 17529 13421 16678 10911 9634 8411 10630 11055 27603 26292 27604 27598 26295 26294 10912 8592 10398 8591 10511 27605 27606 27607 27608 26551 27609 10913 793 774 10170 10510 5292 27610 23467 24350 24351 27611 10914 701 1334 1128 10659 4942 4946 4945 23079 15608 22196 10915 6991 9511 7002 10686 22008 27218 7417 21312 27219 21186 10916 9487 10241 9995 10359 13902 14569 21416 19272 17829 14879 10917 9585 10415 9535 10774 25373 17272 27612 27613 27614 27615 10918 8642 9898 9019 11060 16156 27616 27617 16458 27618 16459 10919 793 1091 1092 10741 5300 4557 5376 23640 27619 23859 10920 9031 10081 8945 10950 13996 27620 27621 14887 27622 14888 10921 6385 10344 9554 10414 27623 27361 27624 27625 21225 27626 10922 9979 10485 9583 10490 16565 27627 21690 27628 13846 27629 10923 754 10528 1214 11160 26846 27089 4704 27630 27091 27093 10924 9570 10103 1056 10608 27571 16460 27587 26072 16461 14730 10925 9337 9769 9732 10943 17422 17421 17423 23198 23599 23598 10926 9209 10152 9543 10455 13538 15730 17992 11814 22510 14776 10927 8988 10239 9940 10956 27631 24429 27632 27633 22242 24433 10928 9274 10234 10042 11015 19380 16628 25379 19381 24106 17860 10929 9243 10080 9564 10171 13232 24858 23981 27634 24856 24857 10930 1432 548 573 10551 4178 4179 4181 12647 12649 22341 10931 9398 10559 9936 10730 19029 16329 27635 19031 24137 18433 10932 9830 10235 9434 10571 27636 17172 16814 24855 18523 18384 10933 8105 8233 9985 10043 27637 24582 27638 25166 12564 27639 10934 9088 8960 9982 10857 27640 27641 13018 27642 25333 27643 10935 9688 9992 9263 10075 25604 26341 20928 20927 13557 24477 10936 8598 8597 9962 10454 27644 27645 26161 26160 23556 27646 10937 9575 9661 9395 10223 27647 27648 12248 12252 12251 27649 10938 6327 9558 6325 10570 23848 25810 6715 27650 25813 24602 10939 9523 9582 9326 10305 27326 27325 17454 17455 11427 20389 10940 695 900 10450 10825 4907 27651 18823 26418 27652 27653 10941 9237 10192 10091 10623 11843 25700 27654 27655 27656 27657 10942 1116 9829 751 10864 24816 21685 5183 15022 21687 21689 10943 8873 7885 9939 10351 27658 24708 26089 26092 19577 24710 10944 9518 10803 9900 10916 27362 26312 22182 20564 22181 26315 10945 9503 10059 1267 10912 23328 27659 24882 25802 25801 18181 10946 871 10876 9882 10930 27660 20068 22815 22816 22752 27661 10947 752 852 1236 10039 5178 5189 5188 11291 13843 12478 10948 423 399 10722 10945 3433 27662 24884 24887 24889 27663 10949 295 9526 10206 10853 18062 21124 21123 27274 21342 27275 10950 6377 6358 10345 10378 6793 26041 26627 26630 26043 26042 10951 7820 9878 10079 10752 17894 21788 22619 27664 19572 17507 10952 8172 9947 8246 10918 17750 27665 27666 17751 27667 17752 10953 9150 9843 10232 10512 26441 27668 27669 26442 27670 23969 10954 9328 9504 10160 10738 16546 22092 25105 12819 26121 16545 10955 9207 9677 9501 10375 23359 23358 23360 27671 17789 21629 10956 9527 9223 10063 10839 27099 24221 26943 27100 26248 27101 10957 8775 10334 9495 10793 27672 27673 20497 26720 25931 23655 10958 9845 10070 9790 10450 15470 27674 25673 18822 27675 22714 10959 9248 10476 10257 10902 12322 13933 12527 23602 16617 16616 10960 9268 9733 9655 10045 27676 19270 27677 16305 19269 16732 10961 10250 10799 9379 10802 17970 18866 18864 22502 23353 22503 10962 8088 10880 9690 11110 27678 27261 20847 21753 21752 27679 10963 1397 9973 1260 10535 27680 17120 2720 22678 17118 17119 10964 9301 9625 10486 10786 13944 26188 11444 12595 26488 13739 10965 9347 9932 10508 10969 16068 22214 27490 14448 24732 15101 10966 6952 9620 9819 10511 27681 27682 27683 27684 27685 27686 10967 9350 10322 9861 10420 11314 25021 27687 22559 27688 25881 10968 9716 10360 9296 11003 14914 27689 27690 22054 22540 22055 10969 8697 10349 9534 10758 25492 25491 16822 18945 18944 22648 10970 9289 9892 9741 10458 12124 12227 12228 27555 27691 16103 10971 9626 9635 9437 10573 22505 20513 25201 20756 18014 27692 10972 8880 9576 8950 10926 25884 11283 25882 27693 17848 17850 10973 8941 10171 9482 10214 23528 23527 20983 20987 20986 27694 10974 883 493 9902 10975 3890 27695 14090 12788 13872 27696 10975 9011 8579 9022 10114 27697 26251 20925 17511 20924 26253 10976 1171 10525 10242 10675 27698 19174 27699 27700 27338 27701 10977 1502 10744 10126 11177 20603 26518 26783 20605 23482 20606 10978 8968 8153 8269 9653 27576 27702 17253 16221 17254 27577 10979 500 501 502 9638 3932 3938 3937 17255 17345 17044 10980 503 502 501 9644 3942 3938 3943 17256 17346 17213 10981 7871 8167 8898 9637 27703 25677 20965 12957 20966 25675 10982 673 987 676 9647 4805 4804 4803 20393 21694 22791 10983 8741 8902 8740 9641 25461 27704 19679 19678 17259 20264 10984 8168 8802 8404 9645 18937 27705 20626 11904 20625 18936 10985 8983 8357 9002 9640 17261 27706 27233 16228 27232 17262 10986 8740 8342 8877 9641 27707 26978 17257 17259 14787 26977 10987 865 761 763 9648 5229 5227 5230 14324 25410 12893 10988 8268 9020 8269 9653 27198 17960 27708 27197 17254 17959 10989 8591 10567 10511 11132 26552 26553 26551 27709 27710 27711 10990 738 731 9670 10113 5087 27712 27143 17152 27142 14513 10991 9697 9936 9400 10278 27713 27714 17781 27715 27716 27717 10992 8147 10156 10105 10365 27536 27535 27534 27718 27719 16450 10993 6344 9574 6346 9842 26343 27720 6809 25870 27721 26342 10994 9273 9547 10468 11170 27722 20406 11985 27723 23837 23836 10995 9553 9980 9488 10802 20556 20174 27724 27725 23351 25734 10996 9494 10091 10192 10623 25698 25700 25701 26765 27657 27656 10997 6905 9682 6966 10781 27726 20550 7343 24537 20184 20551 10998 9227 10415 9585 10774 12675 25373 27727 27728 27613 27615 10999 8471 8689 8634 11043 24168 27729 23247 20763 23249 24170 11000 8806 7764 9826 10984 27730 20411 27731 27732 22669 22668 11001 517 9606 10327 10506 27733 27734 27735 27736 27737 27738 11002 9576 10340 9265 11066 11363 11361 11284 27739 21615 27740 11003 8257 8441 8751 10519 15999 27741 27742 13495 27743 16000 11004 9330 10188 9601 10507 12697 14849 15720 27299 23612 27077 11005 9203 10503 9488 10548 22040 12052 22039 14610 23008 27744 11006 8584 10301 10046 10803 27745 25905 27746 27747 27748 27152 11007 8485 9583 8385 10064 19054 27749 27750 21508 18737 21611 11008 780 1401 870 9654 5320 5319 5318 16288 17338 20979 11009 835 9901 709 10086 18002 12796 4984 18003 11406 13498 11010 9564 9243 10171 10927 23981 27634 24856 25364 27751 13676 11011 9396 10248 10680 10862 27752 19959 21359 21361 20228 24507 11012 193 10126 1502 10744 26782 26783 2406 22674 20603 26518 11013 375 1119 10569 11042 3304 27753 21303 16634 21304 27754 11014 9524 10257 549 10736 17554 27309 27755 23399 27311 23400 11015 9799 10292 9382 11163 23660 16189 24214 22710 16191 15144 11016 9574 6349 10031 10855 27756 27757 27758 21028 27759 27760 11017 9365 9930 10389 10436 11538 15631 11973 18993 18402 18401 11018 9527 9998 9271 10845 24576 13414 24572 27761 13022 17201 11019 9391 9948 10509 10842 14510 14512 13896 19519 20468 21848 11020 8600 9861 8599 10830 27762 18421 27763 27764 19028 19027 11021 9947 10047 9492 10640 27765 27766 22983 27767 22423 27768 11022 9516 10340 9576 11066 23672 11363 27769 27770 27739 27740 11023 8047 8048 8040 10758 13101 27771 27772 13085 27773 13103 11024 7618 7576 7579 10402 27774 22783 26100 20215 18947 22784 11025 9441 10321 10290 11181 14749 14750 14746 27775 27593 27592 11026 1435 9833 10174 10908 22300 14405 26542 27776 27777 26620 11027 9329 9487 10241 10930 13901 13902 13903 15228 27778 15229 11028 8587 8227 10341 10740 27779 20261 27780 27781 20262 19926 11029 579 10000 10625 10806 22706 27782 27783 23093 20836 23094 11030 410 9963 10400 10887 27784 17195 27785 27786 23463 23462 11031 7677 10180 7676 10515 27787 26143 27788 27789 26146 24005 11032 6945 6993 6947 9514 7438 7251 7437 21227 14162 17374 11033 9599 10239 8283 10956 23063 24521 24519 26237 27790 24433 11034 9372 10655 10112 10849 22654 15369 27791 22655 27792 19157 11035 898 9932 994 10508 24998 24730 5793 24999 24729 22214 11036 8157 9634 8955 10468 15380 27793 27794 13489 27795 15563 11037 9519 9623 9308 10220 25325 25324 17007 27796 27797 27798 11038 9378 9573 10001 11126 26334 26335 24413 27799 21668 27800 11039 705 10625 797 10806 26264 20831 4333 27801 20834 20836 11040 6949 6945 10074 10276 7439 22314 27802 27803 23507 23506 11041 7793 7644 7729 9793 24830 27804 26651 24832 25819 16753 11042 1181 10243 1257 10881 24144 22185 3898 27805 25571 25573 11043 9222 9867 9749 10399 23200 23201 19972 27806 27807 16081 11044 9222 9746 9866 10399 27808 25358 27809 27806 16084 27810 11045 7841 10181 7842 10617 27811 17022 24291 24292 21198 16060 11046 8373 10340 9589 10779 26843 22990 26842 27812 27813 16898 11047 9223 10792 9679 10937 27814 14227 20588 20589 18625 20221 11048 9272 9493 9905 10652 27815 21187 27816 22936 27817 27818 11049 9273 10245 9801 10789 27819 26150 11768 27820 15780 23608 11050 9319 10371 9754 10928 19809 18470 19587 23515 21792 24560 11051 8010 8008 10597 11003 27821 22222 27822 27823 22223 22053 11052 1556 1122 1558 9507 6142 6145 6147 25833 22405 16243 11053 474 1120 1340 10143 3807 3810 3809 27824 15401 13643 11054 8071 8907 9498 10639 25535 22058 15304 15306 15305 27825 11055 896 994 9932 10969 5794 24730 15096 15099 15101 24731 11056 9023 8929 8405 9966 27826 27827 23191 23190 13007 16887 11057 9840 10005 9331 10996 18491 22119 19450 17290 12688 18492 11058 9531 9625 9342 10706 24577 18193 24578 27828 12086 18194 11059 9216 10029 9985 10580 26168 24334 20023 20024 19540 23856 11060 7942 10390 8869 11167 27829 19894 27830 27831 22337 19604 11061 6969 9682 6905 10781 23122 27726 7242 24925 24537 20551 11062 8534 10332 10295 10899 27832 19837 27833 27834 26338 23960 11063 9383 10578 9971 11050 25210 16239 26928 26021 22928 24837 11064 9785 10054 9302 10844 23036 27835 17831 18305 18307 23037 11065 9222 9749 10184 10399 19972 16390 19971 27806 27836 27807 11066 9222 10184 9746 10399 19971 24304 27808 27806 27810 27836 11067 9494 9970 9628 10842 19517 25053 27837 19520 15774 19521 11068 1133 1272 1135 10068 3449 5147 6159 20508 16280 26921 11069 8496 10619 9817 10984 27838 19186 25114 25115 24605 27839 11070 1365 541 345 9916 3166 3165 3091 25710 14401 26648 11071 9900 10388 988 10917 23976 21462 27840 23977 21461 20652 11072 8696 10069 9478 10626 24193 24160 25302 25522 20429 26063 11073 7859 8888 7863 10564 23456 27841 27842 23457 27843 18474 11074 1121 10580 10065 11085 27844 27845 27846 27847 27848 27849 11075 9323 10505 9503 10715 23322 27192 27193 14366 25764 22148 11076 6900 9912 7789 10812 26189 26702 26739 25600 27445 22661 11077 9534 9613 9286 10292 25702 23730 27850 27851 14934 21273 11078 214 9570 1056 10608 27852 27587 2496 27853 16461 26072 11079 588 533 1246 11154 4095 4104 4106 23309 20866 20865 11080 9203 10311 10172 10438 26454 27854 13726 13725 11986 26455 11081 7564 10690 9580 10747 24741 26007 26742 24742 27855 24743 11082 9951 10484 9289 10867 19345 27856 26366 24300 18905 24301 11083 9803 10287 9452 10887 22588 25473 25474 26152 27201 25200 11084 8007 8006 8004 10360 27857 18079 21864 21866 16980 18080 11085 7680 10324 9933 11046 27858 27859 27860 27861 27862 14466 11086 8004 8005 10035 10090 27863 27864 19417 17472 15290 27865 11087 9620 10511 8564 10567 27686 26550 24539 14854 24541 26553 11088 9479 10304 9472 10460 16294 13719 27866 19625 17461 27157 11089 6357 8756 10524 11098 27072 27075 27076 27867 27868 27869 11090 7954 10529 10228 11064 27870 27871 27872 27873 27874 27875 11091 6375 1187 1249 10531 27876 1963 27877 27878 25889 21745 11092 9557 10017 9482 10505 20103 24761 27879 20105 24762 20083 11093 8956 9096 9095 10449 17247 27880 27881 17248 27882 12301 11094 772 693 773 10077 4903 4905 4904 27883 22891 21880 11095 7743 10526 7723 10675 19786 27037 27396 27884 27885 27886 11096 1248 7631 10401 10555 27887 21671 27888 27889 16609 21673 11097 7713 8772 7801 9591 26420 27890 27891 26424 27892 25288 11098 8274 10046 10099 11032 25903 25902 25901 27893 25425 11603 11099 452 425 10196 10497 3539 12307 21975 23852 14961 12155 11100 684 10482 10213 11124 24492 23445 27894 24493 27895 24130 11101 214 1056 9570 10921 2496 27587 27852 27896 27589 27588 11102 9445 10101 9545 10381 15550 27897 27898 12300 24562 27899 11103 231 229 9766 10256 2582 20312 26412 26411 20311 16313 11104 10067 10408 9672 10972 19990 23899 25952 19993 27900 19994 11105 7868 7872 7870 10701 27901 14992 27902 27903 12730 19961 11106 8849 7896 7900 9994 27904 18787 27905 27906 12681 18788 11107 9741 9892 9377 10458 12227 16101 27907 27691 12953 16103 11108 9065 8994 10348 10903 27908 27909 20874 26906 14043 27910 11109 7985 8811 10034 10422 27911 25216 20675 27912 14135 14243 11110 8696 10626 9478 10813 25522 20429 25302 24195 17919 25319 11111 9448 10271 9667 11175 25355 26080 25591 27913 27574 24023 11112 9924 10482 9496 10592 26535 26534 22427 27914 13621 24126 11113 9388 10230 10067 10408 14576 16606 13373 20369 19990 27305 11114 6935 6937 6938 10610 7339 7435 7434 18253 17562 23755 11115 6331 6298 1537 10730 6582 27915 25254 25257 25256 27916 11116 8597 10191 9962 10454 27917 14096 27645 27646 23556 17545 11117 9470 9675 9660 10504 27918 20748 18092 18090 18091 27919 11118 8878 7576 7618 10402 27920 27774 27921 27922 20215 22784 11119 7677 9559 10180 10515 27923 27924 27787 27789 24005 27925 11120 9951 10519 8165 10867 13497 27926 24298 24300 24299 27927 11121 9936 10278 9697 10730 27717 27715 27713 24137 27928 27131 11122 7611 9964 9541 10499 22037 18698 22035 27929 15079 27930 11123 6289 6375 1249 10531 6618 27877 25885 25887 25889 27878 11124 9367 10383 10102 10558 22258 14418 13057 22259 27931 21280 11125 9643 10146 9214 10997 25480 22311 12419 15112 22961 27932 11126 9368 9537 9847 11132 27933 26613 12179 27934 27935 21598 11127 6954 9620 9911 10807 27936 23759 27937 27938 16760 27939 11128 9360 9615 10114 10671 23551 26920 19831 13693 17512 21412 11129 7969 9643 8911 10181 20876 17268 27940 20878 27941 20877 11130 10173 9214 10922 11117 22251 18813 22252 18103 21066 21065 11131 1041 10695 1501 10949 20097 27942 6057 20098 27943 20099 11132 10112 10187 9372 10702 24825 16395 27791 24827 14320 16474 11133 9648 10098 9943 10138 27944 16534 24548 27945 14138 13405 11134 10080 10171 9503 10494 24857 27946 26097 24859 23330 24860 11135 7573 7572 9996 10631 27947 25944 27948 27949 25946 25945 11136 9581 10485 9968 10490 20028 27950 20206 20208 16605 27629 11137 8473 9568 8881 10425 27951 27952 27953 27954 19299 22788 11138 9405 9831 9581 10569 20939 20207 20940 27955 21470 27956 11139 243 10146 10093 11071 27957 23846 27958 27959 27960 27961 11140 9472 10211 9479 10460 17200 17351 27866 17461 19625 17462 11141 623 10448 9666 10750 17190 12663 18921 27962 24771 24773 11142 662 1462 10689 11005 4391 26323 27963 27964 26324 24569 11143 1293 693 10092 10960 4271 26499 27965 27966 26500 21883 11144 8368 10216 10586 11198 27967 16127 24684 24686 24245 27968 11145 8988 8280 9940 10239 27969 27970 27632 27631 24429 24633 11146 9560 9404 10483 10512 26191 27392 27971 27972 27394 27393 11147 8606 8177 9786 10041 27973 27974 12176 13601 17688 27975 11148 450 10357 9610 11148 24303 17058 24302 27976 27977 27978 11149 1190 1405 1369 10008 6197 5162 3611 21887 17726 14534 11150 8397 9663 10397 10445 27979 17163 13935 13936 12909 14361 11151 9545 10381 10101 11029 24562 27899 27897 27980 27981 27982 11152 8733 8663 9053 10582 27983 24529 27984 27985 23128 24530 11153 9289 10458 9741 10484 27555 27691 12228 27856 27986 27987 11154 1314 1050 10523 10547 5168 27988 17670 17673 17675 27989 11155 414 413 415 10636 3495 3503 3502 24295 21528 14811 11156 8816 9604 8137 10283 27990 27991 27992 27993 27994 27995 11157 9298 9797 9710 10184 26861 25392 27996 26860 25391 23337 11158 1132 9955 274 10119 12397 23235 2799 13120 23234 14288 11159 1112 1055 9955 10121 3237 23230 12398 13122 14289 23229 11160 1055 9956 1054 10122 23233 12453 5488 23231 14292 14291 11161 817 989 9956 10123 5482 12462 23239 23240 15154 15155 11162 8725 10362 10127 11088 15119 17873 16973 27997 22254 17179 11163 9616 9889 9370 10984 24702 21406 24701 22667 27998 24607 11164 9374 9889 9616 10985 24897 24702 24896 24091 17556 27999 11165 8004 8005 7992 10035 27863 28000 28001 19417 12715 27864 11166 7976 7981 7982 10033 28002 15243 23681 22495 16324 11959 11167 8749 8004 8003 10035 21128 28003 23479 20859 12718 19417 11168 8951 8779 8695 10036 28004 27502 27291 23535 27503 27141 11169 7985 8811 8074 10034 27911 14242 28005 20675 14134 25216 11170 9619 9440 9835 10299 20201 21962 20568 28006 24186 17951 11171 735 727 864 10275 5072 5074 5073 23023 13306 13305 11172 8204 10084 9994 10957 20315 24783 28007 20316 28008 20317 11173 1434 900 9556 10450 5807 28009 19435 28010 16624 27651 11174 9276 10233 9940 10547 28011 20686 20704 11880 25306 17674 11175 657 10367 9631 10951 13971 11350 13970 28012 28013 28014 11176 9437 10230 9626 10408 16657 20781 25201 18475 20753 27305 11177 9140 7777 6336 9677 28015 28016 28017 28018 28019 28020 11178 9389 10354 9954 11005 28021 20600 28022 28023 24571 24570 11179 9504 327 10804 11179 22090 26835 16547 21981 21983 28024 11180 9230 9808 9637 9944 13848 24746 13648 13647 13575 16669 11181 8766 8931 8934 9506 28025 24988 28026 28027 18831 23731 11182 7992 10035 8005 10090 12715 27864 28000 12884 27865 15290 11183 9203 9680 9553 10172 28028 16140 28029 13726 16139 15440 11184 1233 9476 10403 10961 14370 14372 14310 23955 20382 23956 11185 8760 9165 9166 9635 20370 28030 18356 16953 18355 19770 11186 1373 1321 798 10063 5402 5399 5400 15934 28031 13474 11187 8951 10036 8695 10259 23535 27503 27291 25577 27290 24260 11188 9911 9912 6982 11158 23762 22657 28032 28033 27280 27279 11189 8519 8518 9853 10561 28034 22409 28035 28036 19779 22410 11190 9984 10180 9559 10515 14023 27924 26288 24004 27925 24005 11191 9753 9871 9315 10451 22380 16257 11358 16026 12744 27567 11192 9316 9867 9749 10451 16079 23201 16027 12751 16029 27568 11193 9491 10096 9785 10425 22043 17835 25828 28037 22787 22789 11194 9652 9287 10079 10877 21836 19571 28038 28039 22620 20074 11195 7548 196 9549 10423 28040 28041 28042 28043 21117 28044 11196 1267 9503 253 10715 24882 24880 2698 28045 25093 25764 11197 1191 9981 1405 10008 14973 11999 6198 12451 14534 15167 11198 285 9499 10199 10751 18695 15169 18763 20694 20696 21414 11199 9871 10177 9315 10451 16261 16259 16257 27567 12744 27582 11200 9316 10177 9867 10451 13068 16256 16079 12751 27568 27582 11201 7591 7592 7558 9734 17211 21281 28046 17212 21283 14562 11202 9632 10065 9507 10168 19343 17703 21844 24443 16244 17837 11203 9652 10079 10662 10877 28038 28047 24986 28039 28048 22620 11204 6358 10169 6373 10345 26040 24512 6792 26041 24080 18284 11205 6339 10144 9501 10440 28049 28050 24234 24235 19433 20044 11206 276 274 9955 10120 2808 23235 12449 13115 14337 23236 11207 1055 1174 9955 10122 3240 12448 23230 23231 14339 13117 11208 1109 9956 1055 10121 12445 23233 5489 13108 23229 14338 11209 815 817 9956 10118 5464 23239 12446 13106 14336 23238 11210 1372 1161 1405 9981 4921 5160 6179 28051 11999 13293 11211 9737 9888 9349 11108 21098 24230 24231 21520 28052 21521 11212 1187 1556 1558 9507 2180 6147 6196 21715 22405 25833 11213 9245 10308 9876 10761 16645 18705 13776 13778 13174 14669 11214 7969 7840 8865 10181 28053 28054 27127 20878 20329 28055 11215 7969 8911 7842 10181 27940 28056 28057 20878 17022 27941 11216 9289 9951 10458 10484 26366 28058 27555 27856 27987 19345 11217 8187 10862 9515 11010 28059 26789 23648 23651 23653 28060 11218 9030 10022 8976 11002 21822 28061 28062 25489 28063 25488 11219 8940 8075 10490 10947 22532 17664 22533 28064 19034 19033 11220 10058 10629 9723 10970 28065 24248 28066 15852 28067 28068 11221 9505 10253 8624 10702 11449 19068 19066 22352 28069 19639 11222 480 479 478 11015 3827 3823 3828 22130 22131 28070 11223 9593 10434 9231 10852 23796 21013 28071 24281 13546 18618 11224 8524 10232 10504 11061 26391 26396 26394 28072 28073 28074 11225 8619 8620 10883 11114 28075 24035 24951 24953 24191 24190 11226 10136 10588 9337 10943 20882 23196 26351 21371 23198 16939 11227 8225 8694 10259 10626 28076 28077 17387 26254 26065 28078 11228 9477 9850 9290 10024 11271 19276 17996 21217 22853 22855 11229 8591 10511 10398 11132 26551 27609 27606 27709 28079 27710 11230 528 10411 9787 11165 26481 27594 28080 26482 28081 24152 11231 9398 9935 9697 9936 12784 12785 11981 27635 27713 28082 11232 8204 7896 9994 10084 28083 18788 28007 20315 24783 24784 11233 7721 10338 9660 10546 19946 23074 20749 28084 28085 24913 11234 9264 10351 9881 10843 19141 25218 19742 19743 16019 25220 11235 9537 10300 9847 11132 18343 24948 26613 21598 27935 21599 11236 9951 9952 9289 10458 24928 24915 26366 28058 27555 18672 11237 9398 9936 9697 10730 27635 27713 11981 19031 27928 24137 11238 9379 10058 9723 10970 16544 28066 18865 15801 28067 15852 11239 541 345 9916 10476 3165 14401 26648 26649 17451 12321 11240 6934 6925 6906 10562 7349 7346 7185 21050 25048 19209 11241 6976 9616 6979 9949 20967 18598 7379 20968 19941 19943 11242 9494 9628 10192 10842 27837 11842 25701 19520 15775 15774 11243 9020 8550 9836 10161 28086 20439 26078 18940 20438 19637 11244 9311 9887 9765 10251 24984 25467 22945 22968 22896 25567 11245 9406 10274 9733 10615 25599 16731 26425 17052 19723 28087 11246 9456 10030 9662 11027 20489 20490 20336 20677 28088 21961 11247 848 10073 9501 10466 24177 24178 24176 26241 26243 28089 11248 7740 10072 10427 11181 26709 17887 26710 28090 28091 28092 11249 9215 10131 9659 10551 11302 18663 25527 12648 25305 13406 11250 452 453 425 10497 3565 3564 3539 23852 12155 14369 11251 9769 9878 9350 10449 17426 28093 12045 24639 26866 22970 11252 768 10578 9849 11050 28094 25212 28095 28096 28097 24837 11253 9521 9578 9337 10588 19692 12276 25434 15752 23196 22795 11254 9218 9579 9520 10589 27224 26523 25155 25156 19892 28098 11255 7002 9511 10313 10657 27218 23370 28099 27217 28100 27150 11256 1453 1003 9650 10700 6010 21107 28101 28102 21108 21060 11257 9801 9857 9410 10454 16947 19071 15650 15665 14230 23839 11258 8961 8617 8316 10621 28103 25430 28104 28105 25432 25431 11259 8774 9020 8550 9836 26325 28086 28106 23387 20439 26078 11260 9025 8774 7802 9836 23386 28107 19886 14920 19888 23387 11261 9435 10690 10391 10747 25204 24740 27455 27457 24744 24743 11262 9377 9931 9827 10458 13519 28108 28109 12953 28110 16030 11263 10101 10474 9545 10703 15553 27512 27897 27345 27513 26878 11264 9390 10288 10041 10968 13604 13605 13602 24839 18533 18535 11265 8021 9597 8026 10306 28111 28112 28113 28114 20346 28115 11266 9561 1466 10339 10980 28116 24902 24750 28117 24905 24904 11267 496 9605 1277 10293 15555 11489 3896 12910 12010 12012 11268 8898 8727 9687 10109 28118 26744 17142 17140 17141 28119 11269 9800 10407 459 10426 17865 22663 22662 28120 28121 28122 11270 9401 10217 9591 10338 14505 15045 28123 16924 14515 15044 11271 327 330 9916 10705 3047 27241 20615 25161 25163 28124 11272 8610 10037 8387 11186 28125 21094 28126 28127 18654 21096 11273 9353 10046 9647 10301 22566 22567 21978 28128 26495 25905 11274 554 9847 954 10229 12181 22292 4209 12464 24125 12465 11275 9853 10060 9404 10232 28129 26694 28130 14705 26697 26616 11276 1187 9507 1558 10531 21715 22405 6196 21745 22406 16248 11277 1444 9509 1451 11087 27530 27529 3056 28131 28132 21088 11278 8460 9555 9034 10533 27387 20259 27386 28133 28134 28135 11279 9657 9689 8179 10757 28136 28137 23886 23890 23889 28138 11280 561 10140 1157 11103 28139 23569 3931 28140 23575 23577 11281 9300 9640 10021 10647 22984 28141 28142 28143 16912 25010 11282 7560 10477 9664 10585 26110 26111 26109 28144 28145 28146 11283 622 9567 634 10448 28147 28148 4548 25175 28149 18973 11284 8985 9814 8731 11187 27164 28150 28151 27165 28152 27166 11285 634 699 10448 10778 4553 17191 28149 28153 18974 22461 11286 8311 10311 9680 10503 25722 12026 28154 24261 28155 25723 11287 9623 10389 9519 10858 18797 15581 25325 21159 22930 18875 11288 10169 10378 6354 11098 26044 28156 18894 28157 28158 24878 11289 210 9514 10251 10608 19041 23519 23518 27364 26497 23989 11290 9514 10251 9685 10743 23519 22895 23879 25805 17448 22897 11291 9479 10211 9590 10550 17351 17350 17352 25838 12574 21645 11292 9862 10002 9008 10872 14820 12965 15406 19612 28159 19613 11293 1385 10317 1247 10679 18717 25617 5460 26311 28160 20006 11294 8648 8662 10629 10885 28161 28162 17613 17616 17618 28163 11295 8136 10283 8137 10749 19243 27994 28164 19244 28165 19245 11296 7775 6922 8803 10648 28166 26357 28167 28168 28169 28170 11297 9622 10262 8181 10568 28171 13301 28172 24966 13033 12115 11298 9378 9605 9571 10880 11488 26679 26581 27260 27259 28173 11299 1500 10086 833 10126 13283 28174 5552 13905 28175 13906 11300 9219 10666 9751 11138 17978 19913 19912 28176 25562 25564 11301 8717 10102 6967 10600 28177 19164 28178 28179 21045 15721 11302 9491 10996 9331 11012 28180 12688 28181 19874 22120 22121 11303 529 528 444 11165 3657 3653 3658 24151 24153 26482 11304 9300 9640 10647 10907 22984 25010 28143 22759 28182 28183 11305 9839 10400 9317 10538 12634 26156 11883 16809 13220 26461 11306 606 607 605 10192 4463 4462 4434 11841 12193 24636 11307 9141 10031 6305 10277 28184 26521 28185 28186 26522 25297 11308 9063 10304 9053 11038 28187 19215 28188 28189 20532 20534 11309 566 10092 693 10129 23057 26499 4270 19249 21882 23058 11310 9377 9741 10458 10484 27907 27691 12953 28190 27987 27986 11311 9617 10030 9206 10132 28191 20488 28192 28193 23516 24497 11312 6292 167 1100 10440 28194 2003 28195 28196 28197 28198 11313 9617 10030 9426 11114 28191 18263 28199 28200 28201 24192 11314 1434 9556 1300 10450 19435 16249 3261 28010 16622 16624 11315 9493 9281 9784 10829 24766 28202 28203 24767 28204 24768 11316 9377 10298 10037 10416 28205 21248 28206 12930 28207 28208 11317 301 292 1057 9837 2900 2889 2901 27495 20032 14977 11318 408 407 405 9839 3464 3463 3465 12926 27244 12633 11319 263 1295 1482 9841 2586 2755 2754 12513 24293 12514 11320 8341 9044 8722 9840 24053 25719 28209 19628 25720 17288 11321 529 9787 528 10411 28210 28080 3657 22717 26481 27594 11322 9478 10204 10069 10813 13626 16031 24160 17919 23086 17920 11323 7542 9180 7570 10690 28211 28212 28213 28214 26736 28215 11324 9587 9831 9405 10143 28216 20939 28217 20899 15400 28218 11325 9256 9831 9587 10143 28219 28216 20963 28220 20899 28218 11326 9985 10029 9456 10580 24334 15328 19539 19540 15527 23856 11327 9556 9585 9240 11097 25502 26545 22915 28221 28222 19179 11328 9648 9943 9301 10138 24548 14136 22359 27945 13195 14138 11329 9255 9821 10021 10871 22318 28223 11581 11324 11583 22319 11330 9265 9733 9576 10045 11287 11288 11284 19195 26564 16732 11331 456 459 10407 10426 3720 22663 28224 28225 28122 28121 11332 7601 7609 7598 10201 26472 28226 28227 22143 28228 21909 11333 9918 10320 261 11182 17476 13095 12887 24776 28229 17630 11334 8631 9607 10231 10752 26992 26991 25748 25750 16802 28230 11335 9374 10161 9836 10713 24089 20438 26674 13566 27056 21677 11336 9576 9611 9268 10135 26562 16306 26563 28231 28232 28233 11337 9536 10162 9683 10835 17738 25727 19326 17739 27278 17468 11338 9684 10163 9537 10836 17971 13767 21742 27186 16568 16567 11339 1580 947 206 11011 2431 2474 1757 23355 20360 26941 11340 8609 9120 10590 10968 28234 28235 21968 22550 18175 28236 11341 1360 1074 150 10139 2179 2176 2104 13805 13806 13002 11342 9582 9700 9291 10385 20390 16833 20742 28237 28238 20929 11343 6345 9554 6385 10344 21224 27624 6841 28239 27623 27361 11344 9690 8861 10856 11126 26194 26196 18755 28240 28241 28242 11345 7989 9582 7995 10422 28243 28244 28245 28246 28247 28248 11346 9500 9364 9994 10200 28249 28250 12680 28251 28252 12989 11347 7685 9914 10332 10456 28253 28254 26585 26587 24121 24697 11348 9813 10305 9326 10355 14671 11427 12246 14796 14966 25743 11349 6930 10225 9693 10744 24588 24589 24587 28255 23792 28256 11350 8843 9114 8890 10418 14109 22499 28257 15537 22498 15538 11351 9863 10430 423 10945 14957 28258 24886 24888 24887 28259 11352 9365 9723 9572 10058 11341 11342 11338 18991 23307 28066 11353 9572 9723 9379 10058 11342 18865 27474 23307 16544 28066 11354 561 1126 1157 10140 4244 4245 3931 28139 23569 23568 11355 6379 7800 8703 11077 28260 28261 28262 28263 28264 27375 11356 9601 9306 10193 10614 15271 25791 28265 19753 25510 20189 11357 572 9659 547 10285 18664 28266 4173 14223 28267 18665 11358 8027 8029 8794 10650 28268 22224 28269 28270 22719 22718 11359 9397 10744 10011 11177 28271 21077 24960 23481 21003 20606 11360 768 769 10578 11050 5257 24836 28094 28096 24837 23683 11361 9697 9935 9400 9936 12785 15158 17781 27713 27714 28082 11362 9317 10090 9583 10868 19372 13063 25806 19374 14348 14350 11363 8280 8283 10239 10956 24632 24521 24633 28272 24433 27790 11364 9712 9915 9295 11089 22729 20599 12665 22730 19297 14249 11365 9096 8428 9095 10449 24435 28273 27880 12301 27882 24436 11366 809 358 579 9566 3229 3227 3230 28274 22704 22705 11367 214 211 213 9570 2494 2492 2495 27852 23603 23604 11368 622 698 634 9567 4550 4549 4548 28147 28148 28275 11369 8239 8881 8473 9568 28276 27953 28277 28278 27951 27952 11370 1338 1183 10323 10505 2705 28279 22558 21113 22557 22066 11371 923 1045 10060 11017 5880 28280 27236 28281 28282 28283 11372 9786 10529 9423 11147 24554 24553 24555 28284 17078 28285 11373 9396 9515 10018 10982 25263 12936 25264 28286 22285 28287 11374 9689 10056 7959 10757 19445 23354 21494 28138 28288 28289 11375 9458 10032 9987 10320 20318 24473 17160 15706 28290 16219 11376 9381 9774 9723 10953 24246 12598 24247 28291 23485 23487 11377 611 609 612 10764 4483 4485 4484 21593 24527 24095 11378 596 9893 537 10822 15329 25188 4115 12317 21386 15605 11379 1585 9549 10342 10401 25471 23262 28292 24640 28293 22173 11380 9594 9777 9229 10674 24944 28294 28295 23739 14256 25958 11381 8673 7935 7930 10646 28296 24320 24110 24111 23811 24321 11382 9639 10061 9284 11048 28297 22524 28298 24956 28299 28300 11383 9631 10895 10334 10951 28301 27525 22322 28013 28302 28303 11384 9471 10596 10190 10798 18817 26483 16574 19689 19688 25386 11385 8819 8817 9697 9935 25657 16701 23027 27348 12785 15157 11386 9378 10137 9605 10880 28304 28305 11488 27260 28173 23294 11387 8361 10098 8465 10138 27448 13400 28306 22006 13403 13405 11388 9887 10254 1487 11108 28307 25025 28308 28309 25026 23126 11389 9729 9594 10149 11033 28310 24250 28311 28312 24251 23741 11390 7605 7623 10413 10435 28313 27471 26029 26031 23928 27473 11391 9377 10458 9827 10484 12953 28110 28109 28190 18857 27987 11392 9235 9690 9571 11110 26576 26575 26577 28314 17967 21752 11393 9037 8174 10328 11065 28315 28316 21678 22413 22415 28317 11394 9063 7967 9053 10304 28318 19213 28188 28187 19215 19214 11395 9553 9680 9203 10503 16140 28028 28029 28319 22040 28155 11396 494 496 497 10517 3894 3908 3907 27431 11499 11498 11397 9581 9405 10485 10490 20940 14490 20028 20208 27629 20941 11398 863 9857 966 10053 28320 23452 5081 28321 23451 17666 11399 7942 8869 7949 11167 27830 19893 28322 27831 19605 22337 11400 8783 10224 9975 10897 26598 25735 26400 26601 25050 22430 11401 6385 9554 6345 10414 27624 21224 6841 27625 20341 21225 11402 8145 9965 8146 11047 28323 14439 28324 28325 22135 22137 11403 8575 8262 8574 11161 28326 28327 27001 27002 26773 26210 11404 6346 9842 9574 10971 27721 26342 27720 28328 28329 28330 11405 9250 10092 10790 11057 28331 28332 25961 20775 22347 28333 11406 370 372 9838 11178 3287 27497 20211 20244 20246 28334 11407 8545 10356 9512 11176 18983 19235 19236 28335 28336 28337 11408 1486 526 522 10795 4049 4048 4050 18496 18495 28338 11409 9236 10371 9611 10945 18468 15702 27184 25661 28339 25662 11410 9583 10485 9405 10490 27627 14490 28340 13846 20941 27629 11411 9610 9233 10009 10502 28341 13266 25984 25986 25987 26639 11412 10469 10522 9357 10795 23580 12076 22408 18530 21998 20204 11413 9467 10016 9538 10605 19291 14631 26180 17429 28342 16052 11414 787 690 10063 10937 4888 28343 22437 18624 22439 28344 11415 8256 8215 8216 9575 15047 28345 28346 12247 28347 15048 11416 8069 8073 8071 10019 25875 22475 28348 20431 15341 23971 11417 8072 8907 9035 10020 22326 28349 23438 22327 16353 22057 11418 9500 9994 9364 10545 12680 28250 28249 18550 28350 18551 11419 9817 9932 9649 10739 23825 15097 25965 18364 15959 15695 11420 517 9606 515 10327 27733 28351 4008 27735 28352 27734 11421 940 9961 939 10015 12637 18450 5612 15519 18449 17329 11422 9410 10767 9857 10879 23840 19842 19071 19268 23454 25850 11423 488 489 9925 10057 3872 17592 28353 28354 17593 16186 11424 1064 1408 9593 10381 6079 28355 23795 12298 19802 24687 11425 9987 10032 9285 10320 24473 13433 12128 28290 13097 16219 11426 547 10603 9659 11067 28356 28357 28266 28358 28359 19908 11427 9290 9477 10024 10775 17996 21217 22853 16788 27251 19175 11428 8171 9037 9569 10406 26074 21680 26075 28360 21682 21681 11429 9246 10033 9986 10264 12712 24802 11790 13247 28361 16094 11430 9986 10033 9460 10264 24802 12224 16846 28361 14825 16094 11431 9989 10034 9246 10264 24474 12723 12211 28362 13247 16095 11432 9457 10034 9989 10264 14133 24474 20844 18843 28362 16095 11433 1088 1282 1089 10755 4712 6113 5701 19077 19079 28363 11434 8661 9939 7891 10989 24371 28364 28365 25511 28366 24617 11435 626 627 9714 9931 4359 22028 18215 18214 15135 28367 11436 9788 10159 9314 10387 17708 28368 28369 16160 13041 17709 11437 8648 9600 8587 10341 23051 28370 28371 17615 27780 23052 11438 9576 10135 9268 10926 28231 28232 26563 17850 28372 28373 11439 1518 971 1008 10633 5973 5975 5977 17010 17012 28374 11440 8763 6903 6955 9620 26493 7095 28375 26494 28376 21426 11441 9342 9850 9561 10980 22856 22851 22857 28377 28117 28378 11442 9472 10142 9708 10535 17395 22969 21068 17842 28379 14191 11443 9543 10153 9423 10529 17734 28380 26528 26527 24553 28381 11444 8577 9677 10828 11161 28382 20477 17934 17937 17939 20479 11445 9335 10202 9875 10869 12555 16672 13654 18229 18231 19188 11446 556 10013 9929 10824 28383 28384 28385 28386 28387 28388 11447 8181 9622 7960 10262 28172 28389 28390 13301 28391 28171 11448 9873 10748 9262 11055 17549 15656 17547 28392 15772 27599 11449 7760 6313 8836 9842 28393 28394 28395 18505 28396 28397 11450 9203 9553 10503 10548 28029 28319 22040 14610 27744 24324 11451 9464 10270 9837 10832 14720 28398 17170 12482 23385 15138 11452 9274 10234 10116 10816 19380 28399 14598 14600 14602 25380 11453 9870 10329 9310 10847 19024 17649 28400 19026 17651 15351 11454 10376 10574 9441 10736 28401 21585 21190 21569 22733 22735 11455 9309 9725 9649 10083 28402 28403 28404 28405 28406 21387 11456 9649 9725 9347 10083 28403 13808 16067 28406 12985 21387 11457 1220 9919 10386 10972 21993 28407 28408 21994 28409 21995 11458 8323 8568 8606 10968 28410 28411 13729 18534 21912 28412 11459 7929 7943 9049 9846 24154 28413 28414 24156 19100 24155 11460 9690 9573 10243 10881 28415 17681 27266 27267 25573 25572 11461 8810 8880 8808 9576 25883 28416 25234 24671 25233 25884 11462 9091 8428 9096 9578 28417 24435 15863 15862 12275 24434 11463 988 1114 736 9577 5117 5116 5114 22931 28418 25172 11464 583 9952 824 10280 18352 17584 4354 18353 19189 18354 11465 367 9844 9942 11179 23376 15429 28419 23377 24104 22459 11466 9305 9899 9623 10860 26557 18794 26555 27381 19292 19294 11467 10115 10315 9590 10894 22221 18454 22220 28420 20728 17982 11468 9631 10110 9488 10334 14013 12877 15889 22322 12049 12879 11469 1539 1021 1574 9617 6043 6042 1975 22801 22803 28421 11470 6372 7751 9174 10277 28422 28423 28424 28425 28426 28427 11471 327 9504 322 10705 22090 26834 3008 25161 28428 25162 11472 9252 9871 10177 11101 15642 16261 27581 24483 23186 23185 11473 9208 10282 10066 10346 13262 13460 13397 12392 25272 23631 11474 9333 9694 10113 10262 11477 15418 13216 12939 28429 28430 11475 9405 9583 10326 10485 28340 28431 14487 14490 14492 27627 11476 9405 10490 9831 10947 20941 17663 20939 28432 19032 19034 11477 9061 9072 7861 9588 28433 12184 28434 19551 12185 11518 11478 9384 9520 10128 10352 20539 19890 28435 12658 28436 20247 11479 9897 10393 9210 10753 20904 24132 22625 28437 28438 28439 11480 1180 195 1507 10201 2419 1649 2420 15976 21910 28440 11481 10156 10222 9402 10404 22842 14126 16448 17827 15065 20446 11482 1064 1408 1254 9593 6079 4325 6085 23795 24280 28355 11483 9601 9966 9408 11000 13006 18249 18250 15086 28441 15087 11484 9811 10846 9624 10964 20309 28442 28443 27125 28444 27126 11485 9413 10113 9694 10262 15700 15418 25830 12111 28430 28429 11486 9782 9803 9254 10543 28445 14386 28446 28447 27552 18316 11487 529 444 9890 10411 3658 24695 28448 22717 24694 24150 11488 9605 10137 9571 10880 28305 28449 26679 28173 27259 23294 11489 8777 7795 6314 9843 28450 23965 28451 28452 23966 23967 11490 9706 10020 9234 11130 23363 21772 16217 25687 18213 18143 11491 7915 7910 9763 10269 28453 28454 28455 28456 11921 28457 11492 9425 9984 9559 10515 26289 26288 26290 17625 27925 24004 11493 9358 9625 9531 10265 13737 24577 17097 13207 28458 14597 11494 9670 10920 9430 11052 27144 19467 28459 28460 19469 19471 11495 9297 9944 9808 10637 28461 16669 15457 15458 14803 18872 11496 8789 9966 8111 10214 21239 28462 28463 20985 28464 21240 11497 7542 10412 9180 10690 28465 28466 28211 28214 28215 28467 11498 9658 10058 9572 10133 15060 23307 23306 16500 28468 15851 11499 9450 9630 9623 10331 25840 28469 18694 16871 14755 28470 11500 9458 10320 9987 10564 15706 28290 17160 17124 14865 28471 11501 1251 10959 438 10967 28472 28473 3619 28474 28475 28476 11502 1308 10093 243 10146 23845 27958 2645 21268 27957 23846 11503 9350 9771 10322 10731 15990 15993 11314 22561 20399 20785 11504 1126 796 795 10637 5384 5381 5385 24412 18650 26316 11505 687 795 794 10637 4875 4874 4240 17685 19353 18650 11506 8654 9046 8409 10016 28477 22519 20989 20988 16048 22239 11507 9975 10201 9202 10372 22266 15978 25780 22268 16640 22145 11508 9717 10442 9283 10513 28478 11281 28479 28480 28481 28482 11509 9744 10632 9376 10954 17453 28483 25852 20976 25854 25168 11510 243 10093 241 11071 27958 28484 2642 27959 28485 27960 11511 8372 8373 9589 10779 26841 26842 22989 28486 27813 27812 11512 9411 9684 9537 10229 11320 21742 23705 13360 21743 13361 11513 9297 10185 9755 11146 28487 22874 24028 28488 22877 22879 11514 9551 10060 918 10983 12904 23897 23896 12757 28489 28490 11515 9678 10052 9447 10785 24516 27449 16720 19124 19123 26056 11516 6912 6987 6979 9836 7071 7381 7380 14922 18599 22140 11517 9576 9733 9268 10045 11288 27676 26563 26564 16305 16732 11518 1248 10401 1532 10555 27888 16607 2263 27889 13747 16609 11519 7578 10268 9552 10374 26199 26200 26198 28491 28492 28493 11520 9667 9237 10134 10900 26081 12040 20700 14383 20701 21889 11521 8887 8208 8210 10638 28494 26066 28495 28496 26067 24456 11522 9935 10611 8254 11171 16563 28497 28498 28499 28500 28501 11523 8447 10295 10294 10899 28502 19150 28503 28504 25082 26338 11524 383 386 9581 10203 3348 25149 20025 28505 25252 12542 11525 9507 9632 9419 10154 21844 15344 24442 17642 16569 16571 11526 9599 10337 9722 10956 17542 26967 27369 26237 26970 26969 11527 10325 9580 10690 10747 28506 26007 27518 27458 24743 27855 11528 729 10245 9857 11170 28507 19840 28508 28509 28510 28511 11529 7989 7993 7995 9582 28512 28513 28245 28243 28244 28514 11530 7936 10620 7939 10652 28515 25481 28516 28517 21649 20377 11531 533 10333 9919 11184 18500 23379 23382 28518 28519 28520 11532 8941 10171 7854 10516 23528 26718 28521 23497 25968 23529 11533 9265 9733 10274 10615 11287 16731 19196 23389 28087 19723 11534 6934 6906 203 10562 7185 26650 25770 21050 25772 25048 11535 9518 9900 10388 11041 22182 23976 21075 20565 21330 22183 11536 8299 9024 9960 10536 28522 14028 28523 28524 14613 14612 11537 7936 8671 7939 10620 28525 21648 28516 28515 25481 20375 11538 9987 10320 9285 10564 28290 13097 12128 14865 12368 28471 11539 9531 9342 10441 10465 24578 24738 13962 27469 27470 12443 11540 9099 8966 10058 10970 28526 28527 15850 15179 15852 28528 11541 9251 9607 9570 10921 28529 28530 27570 16488 27589 28531 11542 410 411 9963 10887 3483 21698 27784 27786 23462 26153 11543 9515 10224 10010 10914 22828 22827 12934 27451 28532 25005 11544 529 649 9787 10411 4078 27595 28210 22717 27594 22372 11545 756 10647 9751 11138 28533 17322 25561 25563 25562 28534 11546 1412 627 584 9714 4361 4360 4352 15308 12966 22028 11547 9629 9778 9397 11177 28535 22270 28536 17701 23481 23480 11548 8552 9912 9795 10812 19649 19055 19647 28537 28538 22661 11549 9476 9965 9274 10116 19832 15038 19402 28539 14598 15671 11550 8204 7896 8849 9994 28083 27904 28540 28007 27906 18788 11551 8849 7900 7908 9994 27905 21285 28541 27906 21286 12681 11552 1530 660 10482 10717 4739 23446 26363 26364 23447 15584 11553 734 10000 9727 10625 28542 28543 15222 15394 15675 27782 11554 463 464 9824 10147 3748 15408 19428 23017 15409 13200 11555 9289 9665 9524 10519 16867 17382 17383 24916 21963 28544 11556 9945 10056 9490 10620 28545 28546 19003 28547 22333 20376 11557 8867 9145 7793 9793 23273 28548 26652 23275 24832 23274 11558 9764 10186 9354 10993 24013 28549 17574 17049 13679 22552 11559 9300 10647 10021 10907 28143 16912 28142 22759 28550 28182 11560 8492 9099 9958 10970 28551 15178 23003 23662 15180 15179 11561 9220 10419 9708 10535 12518 19382 20572 12407 28379 21142 11562 9708 10419 9472 10535 19382 13721 21068 28379 17842 21142 11563 7903 10270 7898 10815 28552 21851 28553 28554 21854 21856 11564 1264 9492 10141 10309 25999 27252 28555 26000 23193 22883 11565 8425 8257 9951 10556 28556 13492 21915 28557 20135 20134 11566 7780 8755 8858 10565 28558 19733 28559 23069 14026 22621 11567 8305 8311 9680 10503 28560 28154 28561 28562 28155 24261 11568 7696 9502 7701 10770 13325 25326 26450 23012 28563 23013 11569 578 9727 734 10000 28564 15222 4330 27243 28542 28543 11570 8516 8945 9031 10081 28565 27621 13991 13994 13996 27620 11571 9568 9606 9253 10227 28566 28567 28568 28569 20528 28570 11572 9855 10539 9490 10646 25523 23809 28571 18406 23813 23812 11573 8027 8029 10650 10817 28268 22718 28270 28572 24788 24787 11574 1407 1354 1120 9679 5445 6140 5152 11502 13642 27112 11575 8037 8030 8031 10674 17493 23019 28573 17494 23021 14255 11576 1552 10570 1550 10719 28574 28575 5893 28576 28577 28578 11577 8603 9785 10425 10996 28579 22787 22596 22599 22601 16515 11578 9206 9574 10031 10855 28580 27758 28581 28582 27759 21028 11579 1051 941 1477 10015 5943 5936 5944 15035 16345 18261 11580 8732 7750 6962 10696 28583 25486 28584 28585 28586 28587 11581 9923 8009 11003 11062 28588 25623 22573 19859 25626 25625 11582 8651 7965 7839 9585 19876 27349 26220 13686 26221 19877 11583 7877 7875 10208 10575 28589 19668 14299 14301 13423 18747 11584 8778 10207 8659 10575 14303 18913 28590 14304 26373 13420 11585 9696 10103 9251 10358 28591 17393 25186 11929 27573 27572 11586 9678 10785 9455 10973 19124 19122 11897 22179 20448 25615 11587 9645 9811 9330 10424 28592 28593 15366 15367 13255 28594 11588 1191 1372 1405 9981 3706 6179 6198 14973 11999 28051 11589 8918 8792 10263 10626 28595 21421 28596 28597 25055 25318 11590 729 9857 10720 11170 28508 16600 28598 28509 28599 28510 11591 9853 10232 9404 10504 14705 26697 28130 19777 28600 26396 11592 9385 10473 10167 10923 28601 24421 28602 21053 24425 24424 11593 1084 9999 1083 10980 17631 28603 6107 22743 28604 22744 11594 9742 10307 9539 10857 11352 12149 12148 25466 28605 25335 11595 8395 8895 10075 10757 28606 22313 28607 28608 28609 28610 11596 9618 9997 9429 10343 19259 15398 28611 20254 16420 16768 11597 9292 10170 10076 10932 26645 23466 20633 20932 23470 23469 11598 7605 10435 9967 10592 26031 26032 26030 28612 25620 17845 11599 1585 10342 1601 10401 28292 28613 5932 24640 24641 28293 11600 8280 10239 8988 10956 24633 27631 27969 28272 27633 24433 11601 6307 10127 7751 10277 28614 28615 28616 28617 28427 18308 11602 9207 10375 9501 10466 27671 17789 23360 26582 26243 28618 11603 6928 10011 9475 11197 25634 18077 25633 26626 26232 28619 11604 8189 8822 8820 10586 28620 28621 11584 12975 12977 25470 11605 7003 6994 6919 10373 7360 7038 7413 26614 24449 24348 11606 8781 9967 9924 10897 28622 22950 28623 28624 22429 27389 11607 9359 10711 9765 10743 23099 17286 24075 22263 17450 19171 11608 8878 10347 7576 10402 28625 22782 27920 27922 22784 18948 11609 9919 10411 531 11184 21992 27137 28626 28519 27138 24760 11610 10334 10503 9203 10793 12054 22040 22038 23655 21894 23656 11611 529 9890 530 10411 28448 22690 3659 22717 24758 24694 11612 10013 10824 556 10884 28388 28386 28383 24648 28627 28628 11613 9298 10399 9710 10667 14648 16778 27996 14651 24336 14652 11614 6293 1187 6375 10531 21714 27876 6621 21744 27878 21745 11615 9278 9612 9577 10195 12070 26565 22794 28629 28630 28631 11616 9749 9867 9316 10399 23201 16079 16027 27807 12883 16081 11617 9298 9866 9746 10399 16083 25358 24659 14648 27810 16084 11618 9510 10039 9383 10197 18920 28632 26019 16658 13190 28633 11619 8735 8096 8734 10082 28634 28635 27408 27411 27412 17208 11620 9066 9643 8911 10708 12418 17268 17266 19805 28636 19806 11621 9022 7880 9011 10671 28637 14268 20925 20926 14270 13694 11622 8282 9599 8324 10383 23064 17543 28638 23065 13276 17544 11623 9203 10172 9553 10548 13726 16139 28029 14610 24324 14611 11624 7738 7749 7666 10373 28639 28640 24344 24347 24349 26631 11625 270 10790 10092 11057 23166 28332 28641 23167 28333 22347 11626 9892 10416 686 10886 16143 22335 28642 12838 22336 17765 11627 9464 10037 10593 10885 21246 28643 28644 28645 27407 28646 11628 9688 10106 9322 10536 27012 27045 14813 16477 14614 27047 11629 9331 9785 9491 10054 16834 25828 28181 23035 25827 23036 11630 9330 9811 10193 10424 28593 20306 28647 13255 28648 28594 11631 9523 10157 9797 10667 22128 23697 28649 17456 28650 22129 11632 9379 9980 10250 10802 25733 21213 18864 23353 22502 25734 11633 6922 9693 8803 10648 26358 24595 26357 28170 28169 17945 11634 8810 10340 9576 10481 24672 11363 24671 25235 25237 28651 11635 9686 9897 9213 10796 28652 28653 11224 28654 28655 20522 11636 1184 808 1407 10715 5442 5444 5443 28656 14367 18397 11637 757 10666 9751 10860 27390 19913 26907 26908 25858 23420 11638 9416 10039 9510 10197 12479 18920 18919 18761 16658 28633 11639 9265 10340 9589 10510 11361 22990 28657 28658 20517 23587 11640 6325 9562 6324 10570 26378 24030 6814 25813 28659 25313 11641 722 659 10131 10941 4299 28660 13356 26287 22478 28661 11642 8969 9711 8341 10726 28662 23401 28663 28664 19629 23402 11643 9493 9272 9946 10652 27815 28665 24439 27818 28666 22936 11644 9246 10264 9986 10557 13247 28361 11790 11948 16422 28667 11645 9989 10264 9246 10557 28362 13247 12211 16423 11948 28667 11646 6905 6964 9676 10781 7341 19495 27304 24537 21136 20185 11647 9387 10482 9977 11124 28668 24128 27048 26459 21712 24130 11648 8350 8349 8364 9510 28669 28670 17148 16906 17034 28671 11649 9986 10264 9460 10557 28361 14825 16846 16422 14991 28667 11650 9457 10264 9989 10557 18843 28362 20844 23471 16423 28667 11651 7835 10315 7834 10464 25359 23208 28672 25361 20142 18455 11652 1429 9905 10141 11140 28673 28674 28675 28676 28677 20792 11653 8105 9985 8897 10043 27638 12194 25165 25166 11426 12564 11654 9206 10030 9617 11114 20488 28191 28192 27025 28200 24192 11655 9325 10148 10558 10939 28678 14352 21278 26246 22673 14895 11656 7921 10191 8597 10454 14345 27917 28679 14229 27646 17545 11657 1100 10343 6292 10440 28680 28681 28195 28197 28196 17847 11658 8326 9046 9941 10956 28682 26128 28683 28684 26129 22240 11659 9046 8988 9940 10956 28685 27632 22238 22240 22242 27633 11660 9430 10295 9914 10332 26337 28686 24698 26336 28254 19837 11661 9300 9921 9821 10889 26283 12583 26284 15876 22126 22125 11662 9499 10351 9713 10671 18606 19578 21890 21411 20294 20293 11663 1207 9516 1206 10461 28687 28688 6201 28689 17236 23684 11664 8679 9518 8585 10462 26570 28690 28691 14396 28692 19964 11665 9510 9383 10039 11050 26019 28632 18920 26020 22929 26021 11666 9629 9830 9397 10235 17697 24961 28536 28693 28694 27636 11667 957 963 9682 10254 5667 25398 28695 24197 25396 25397 11668 9351 10047 9947 10640 28696 27765 28697 28698 27767 27768 11669 1278 623 9666 10750 4541 18921 27170 28699 24771 27962 11670 972 969 976 10180 5038 5972 2331 14570 24001 14022 11671 9387 9977 10482 10866 27048 24128 28668 13486 23874 27049 11672 894 895 1237 10739 4922 5784 5783 15958 13454 28700 11673 9312 10104 9957 10794 27413 21755 27178 28701 21758 21760 11674 1264 10309 352 11007 26000 28702 3181 26001 28703 26002 11675 9219 9642 9856 10513 25448 28704 28705 28706 28707 28708 11676 324 9671 1069 10273 26827 24411 3059 28709 15602 21138 11677 9206 10031 9617 10855 28581 25296 28192 28582 28710 27759 11678 9561 10339 9999 10980 24750 16584 25195 28117 22744 24905 11679 9325 10383 10239 11134 21276 23066 28711 28712 23532 23531 11680 9357 10522 9835 10795 12076 19462 20614 21998 20569 20204 11681 8875 10157 9639 11104 25647 28713 18803 28714 24958 26681 11682 9634 10630 10266 11055 27604 23895 28715 27598 14937 26295 11683 1281 1261 9948 10842 4711 15383 28716 28717 21848 25419 11684 7002 6991 6924 9511 7417 7348 7363 27218 22583 22008 11685 697 9649 896 10739 18000 15098 4925 28718 21031 15959 11686 998 10307 9539 10767 23427 12149 23709 23428 12150 11357 11687 9312 10670 10104 10794 21208 19377 27413 28701 21760 22737 11688 6988 9702 1497 10658 28719 28720 28721 28722 28723 18158 11689 8274 10046 8584 10301 25903 27746 28724 25904 27745 25905 11690 578 10000 734 10625 27243 28542 4330 28725 15394 27782 11691 925 9983 9480 10718 15879 24339 22781 27086 27088 28726 11692 1187 6362 151 10384 28727 28728 1967 21719 28729 28730 11693 7543 7638 7562 9511 26636 26818 20270 17471 19698 26637 11694 9561 9851 9342 9999 24751 12082 22857 25195 24579 25194 11695 9549 10402 9403 10563 15545 19070 25762 15069 17158 15546 11696 9629 10086 9778 11177 11525 23909 28535 17701 23480 23910 11697 9211 10256 9841 10460 17903 14699 17327 19623 20089 19624 11698 696 9981 455 11105 28731 21534 3714 28732 21536 21538 11699 515 10327 9606 11039 28352 27734 28351 28733 28734 28735 11700 9464 10037 10298 10416 21246 21248 15485 28736 28208 28207 11701 9521 10393 9897 10753 14780 20904 19303 15754 28437 28439 11702 8787 9482 10516 10963 23494 23498 23496 25861 28737 21932 11703 8649 8524 10504 11061 26590 26394 26591 28738 28073 28072 11704 1132 1112 360 9955 3241 3238 2811 12397 28739 12398 11705 989 1054 818 9956 4452 5486 5481 12462 28740 12453 11706 8288 9637 8167 10754 13574 25675 25674 21545 28741 12959 11707 8460 8592 9555 10834 27384 27388 27387 28742 28743 28744 11708 8445 10609 9964 10680 28745 21634 28746 28747 26332 23006 11709 9346 10020 9845 10479 18304 21771 28748 12846 21773 21775 11710 7769 7706 7644 10472 26887 28749 26644 26270 16756 28750 11711 8076 8023 10176 10798 28751 14641 28752 28753 15516 15515 11712 8953 10220 9630 10661 18661 18660 18481 28754 28755 28756 11713 9551 10561 9470 10983 24495 19780 28757 12757 28758 24496 11714 923 11017 10060 11142 28281 28282 27236 27234 27235 28759 11715 6958 10174 6959 10533 28760 11460 7313 28761 13773 13775 11716 465 468 1049 10734 3762 3766 3765 18155 20169 28762 11717 9426 10030 9617 10132 18263 28191 28199 28763 28193 24497 11718 9206 10855 9617 11141 28582 28710 28192 28764 28765 28766 11719 9209 9961 9481 10022 12636 20279 28767 15696 20383 20384 11720 1486 1464 644 9954 4661 4660 4071 14408 28768 14036 11721 644 1464 1096 9954 4660 4659 4658 28768 20601 14036 11722 9749 9316 10184 10399 16027 14198 16390 27807 27836 12883 11723 9298 9746 10184 10399 24659 24304 26860 14648 27836 27810 11724 9547 10621 9393 10850 28769 23145 17822 16326 15684 23147 11725 6337 9501 6339 10828 23367 24234 6817 27060 28770 23571 11726 1398 1379 1064 10434 3486 6075 6084 28771 12035 12034 11727 9618 9997 9393 10044 19259 12862 19260 28772 24006 24454 11728 162 1531 1166 10427 2242 2241 1794 25843 17516 17101 11729 8830 9595 8031 10421 28773 28774 28775 28776 23020 28777 11730 9575 9284 10061 11048 28778 22524 28779 28780 28300 28299 11731 1132 360 274 9955 2811 2810 2799 12397 23235 28739 11732 360 1112 1055 9955 3238 3237 3239 28739 23230 12398 11733 1055 818 1054 9956 5487 5486 5488 23233 12453 28740 11734 817 989 818 9956 5482 5481 5474 23239 28740 12462 11735 9328 9844 9763 11060 27207 25414 13981 25066 25416 25415 11736 1531 10376 910 10653 21702 28781 5838 21703 28782 21704 11737 8664 10474 10101 10703 26876 15553 28783 26877 27345 26878 11738 1003 1453 9650 10777 6010 28101 21107 23826 13339 28784 11739 9047 8081 9070 10816 27054 28785 26951 25104 26953 27055 11740 8953 9630 8701 10661 18481 28786 28787 28754 24164 28755 11741 529 531 9919 10411 4082 28626 28788 22717 21992 27137 11742 9533 10486 9301 10641 23946 11444 26486 26480 11238 11254 11743 8129 10632 8045 10954 28789 25167 28790 28791 20974 25168 11744 9250 10032 10869 11057 23939 20320 22880 20775 24229 22348 11745 6352 10175 9508 10524 18849 17343 18848 28792 28793 21334 11746 8054 9990 8053 10306 17186 23657 28794 20345 16273 11968 11747 9296 9963 10434 10597 16337 14234 13169 28795 28796 21631 11748 539 9728 10018 10198 27014 26987 27015 28797 28798 28799 11749 8979 8739 10451 11084 28800 26008 28801 28802 26009 16879 11750 6901 10658 10126 10744 26296 16957 28803 26297 26518 23794 11751 863 9857 10053 10720 28320 17666 28321 28804 17667 16600 11752 9687 9987 9250 10032 11954 11952 11950 26851 23939 24473 11753 8536 10321 9779 10782 18337 20863 20862 28805 20829 22639 11754 8266 10609 8445 10680 22536 28745 28806 23005 28747 23006 11755 9217 9653 9927 10618 21419 28807 24612 28808 18098 25139 11756 6365 6367 10417 10573 6848 28809 22363 22362 18016 28810 11757 8198 8254 10611 11171 28811 28497 28812 28813 28501 28500 11758 9049 9846 7943 10487 19100 24155 28413 19101 24800 15673 11759 10210 10721 9360 10751 28814 28815 24328 21558 23552 28816 11760 9295 9796 10049 10397 12667 19746 28817 12906 19749 18160 11761 9355 9876 9816 11157 12254 15218 16531 17043 22350 14680 11762 9210 10796 10406 10936 22626 26973 28818 22627 26976 20523 11763 610 10399 1256 11100 26936 28819 4480 24098 28820 26937 11764 9824 10238 9411 10407 22804 28821 13622 13440 11564 20109 11765 1585 9549 1043 10342 25471 23263 2425 28292 23261 23262 11766 8873 10351 9586 10843 26092 18605 26091 28822 28823 25220 11767 1555 9554 1271 10344 25465 19265 2229 28824 27359 27361 11768 9497 9370 9932 10619 15855 11364 15623 28825 24025 28826 11769 404 10737 405 11125 18303 28827 3453 28828 28829 28830 11770 9481 9961 9209 10015 20279 12636 28767 21259 15518 17329 11771 9365 9658 9930 10436 18992 25712 11538 18993 18401 15064 11772 9762 10727 9245 11106 25058 28831 14093 25061 28832 25062 11773 9292 10109 9565 10626 28833 28834 19866 19864 19865 28835 11774 9708 10142 9220 10535 22969 13100 20572 28379 12407 14191 11775 9642 9283 10442 10513 11278 11281 11282 28708 28482 28481 11776 9330 9789 9645 10215 20672 26139 15366 15648 15647 25196 11777 9383 10001 9573 10428 13245 26335 26018 12533 26498 15933 11778 9432 10584 9779 10736 12847 28836 24879 20251 22734 28837 11779 1462 590 644 9954 4387 4069 4388 24567 28768 26592 11780 276 274 360 9955 2808 2810 2809 12449 28739 23235 11781 1055 1174 360 9955 3240 2821 3239 23230 28739 12448 11782 1109 818 1055 9956 5475 5487 5489 12445 23233 28740 11783 815 817 818 9956 5464 5474 5473 12446 28740 23239 11784 9509 10487 9375 11087 21085 11515 23111 21088 19884 21089 11785 9516 1206 10461 10859 28688 17236 23684 22556 14259 17237 11786 9561 9850 9290 11044 22851 19276 22852 28838 28839 28840 11787 9117 10296 10268 10374 28841 17634 28842 28843 28493 28844 11788 9556 9240 10246 11097 22915 28845 28846 28221 26445 28222 11789 9497 9795 9369 9912 28847 27061 26050 22656 13938 19055 11790 10084 10336 9526 10843 24785 20380 26686 16020 24845 25080 11791 9581 10203 9968 10485 25252 28848 20206 20028 27950 13706 11792 892 724 9553 10802 4959 28849 28850 28851 27725 28852 11793 855 854 778 10312 5308 5305 5309 21896 18995 15924 11794 9968 10203 9232 10485 28848 12537 12947 27950 11846 13706 11795 8410 9601 8405 10424 14850 13008 28853 13254 13010 13009 11796 9071 8362 9079 9851 26621 11683 28854 26622 12642 12641 11797 8200 9667 10900 11175 28855 14383 24019 24022 24024 27574 11798 10222 10342 9402 10404 15129 15130 14126 20446 15065 25014 11799 9553 10250 9980 10802 21212 21213 20556 27725 25734 22502 11800 1174 276 360 9955 2820 2809 2821 12448 28739 12449 11801 818 1109 815 9956 5475 5472 5473 28740 12446 12445 11802 8277 8279 10046 11032 28856 11601 28857 28858 11603 11602 11803 9727 10209 9344 10640 15172 22421 28859 28860 22425 22424 11804 10030 10883 9662 11027 24037 27040 20490 21961 28088 26463 11805 9479 10211 9472 10464 17351 17200 27866 17354 15106 17355 11806 9052 8754 9187 10085 20356 28861 16385 16388 16389 20357 11807 9567 10106 698 10778 27046 28862 28275 17573 28863 24378 11808 9452 10480 9923 10538 28864 27255 22572 27199 26460 27420 11809 9251 10136 9607 10921 18028 28865 28529 16488 28531 15666 11810 6954 9620 6956 9911 27936 23760 7332 27937 23758 23759 11811 1251 9594 10959 10967 28866 28867 28472 28474 28476 25836 11812 9413 10594 9550 10733 15699 22823 24789 15701 14972 14330 11813 489 490 9925 10975 3878 23863 17592 16779 17594 23864 11814 8190 8252 9835 10299 28868 20946 28869 25042 24186 24185 11815 9634 9929 9262 10679 20038 15655 20037 28870 17301 24382 11816 1522 9996 158 10631 28871 25943 2224 28872 25947 25946 11817 647 704 628 10172 4578 4577 4572 18150 16791 22117 11818 9268 10045 9655 11094 16305 19269 27677 16307 23214 13736 11819 1546 944 9542 10526 2343 20182 25241 28873 19785 22999 11820 1103 1162 9750 11025 6122 25497 15183 12650 16328 22703 11821 7708 7660 7733 10321 28874 26838 28875 28876 26839 25556 11822 9670 10113 731 10594 27142 14513 27712 28877 14507 14329 11823 9232 9979 9583 10490 15165 21690 21691 11826 13846 27628 11824 886 798 9979 10063 5351 28878 28879 28880 13997 28031 11825 9562 10060 9404 11142 26695 26694 26696 28881 28882 27235 11826 9504 10160 327 11179 22092 20616 22090 21981 28024 24504 11827 564 9952 10458 10901 28883 18672 22301 22342 22343 12358 11828 8406 10516 8788 10851 27355 18436 28884 27356 18439 18441 11829 6313 7760 6343 9842 28393 18506 6525 28397 18504 18505 11830 9999 10441 9342 10980 13961 24738 24579 22744 28377 22745 11831 9404 10060 9853 10504 26694 28129 28130 28600 19777 28885 11832 6903 8797 6961 9912 26530 26700 7091 21428 26703 26531 11833 8875 9639 10157 11051 18803 28713 25647 16526 21297 18291 11834 435 9611 400 10430 13733 28886 3439 15592 28887 15591 11835 6314 6326 8777 9843 6561 28888 28451 23966 28452 28889 11836 1350 1004 10331 10860 3246 28890 14756 25088 25089 28891 11837 8605 8701 8953 9630 28892 28787 21081 19502 18481 28786 11838 9516 10481 9334 10859 22554 21395 28893 22556 15464 21243 11839 9024 9043 8299 9960 15939 28894 28522 14028 28523 15940 11840 9645 9789 9253 10215 26139 26138 18583 15647 18584 25196 11841 9690 10057 9378 10881 26579 11491 26580 27267 12267 12269 11842 6298 6332 10278 10730 6731 27133 28895 27916 27131 27132 11843 584 9714 627 9931 12966 22028 4360 15134 28367 15135 11844 9412 9539 10307 10857 28896 12149 23559 28897 25335 28605 11845 10197 11076 9971 11095 28898 22777 26927 22869 26930 28899 11846 9295 9484 10240 10397 28900 20482 19296 12906 28901 24063 11847 9645 9789 9330 10814 26139 20672 15366 26141 27298 26142 11848 9568 10227 9253 11070 28569 20528 28568 28902 18585 16255 11849 9357 9982 9484 11075 13019 24062 26666 28903 21135 28904 11850 1549 9562 1326 11142 25928 19812 2414 28905 28906 28881 11851 10076 10741 1394 10859 23641 24869 28907 28908 24870 20494 11852 7931 9796 7923 10527 16637 27600 28909 21082 27436 12503 11853 9557 10017 782 10846 20103 20081 20104 28910 28911 21903 11854 1111 10693 1426 10990 23284 28912 6133 14185 28913 23285 11855 9300 10463 9810 10907 26286 25213 21380 22759 23964 25215 11856 10070 10267 9588 10919 25039 19602 25217 28914 20812 17814 11857 9491 9331 10054 11012 28181 23035 25827 19874 21063 22120 11858 438 10959 9777 10967 28473 28915 28916 28475 28917 28476 11859 1143 10475 9608 10509 26685 22757 25654 25655 23993 21532 11860 8772 9591 7648 10546 25288 26423 26422 27511 28918 24390 11861 9329 9646 9920 10606 21496 28919 26407 28920 16828 25171 11862 913 9997 914 10689 28921 15397 5849 22785 13951 15399 11863 1573 6315 6380 10375 17786 6657 27209 17787 27212 17788 11864 227 10673 9651 11041 28922 25483 28923 28924 28925 17432 11865 9279 9902 9731 10554 28926 20622 24917 23356 15781 20624 11866 9273 9857 9801 10245 16596 16947 11768 27819 26150 19840 11867 9140 6336 6287 9677 28017 6553 28927 28018 28928 28019 11868 7560 7637 9664 10396 28929 28930 26109 26107 26108 28931 11869 514 9606 517 10506 28932 27733 4007 28933 27736 27738 11870 9513 10426 10726 10888 28934 24900 28935 28936 24901 24647 11871 8472 10355 8622 10913 20030 28937 28938 26594 28939 14798 11872 7789 6900 6961 9912 26739 7087 26699 26702 26703 26189 11873 8009 8006 10360 11062 28940 18080 25624 25625 16984 18081 11874 1429 9905 339 10141 28673 21849 3134 28675 28941 28674 11875 807 1327 10017 10846 4881 28942 21901 20731 21903 28943 11876 306 9910 10200 10827 25754 25753 25752 25713 21459 18721 11877 8696 7971 7860 10069 28944 25052 24194 24193 23085 14278 11878 9383 9971 10081 11095 26928 28945 14178 26929 16132 26930 11879 1488 9909 1476 10221 27064 28946 5527 27065 28947 23504 11880 8977 9724 7970 10768 23442 13985 28948 24073 12854 13987 11881 9556 10450 900 10825 16624 27651 28009 20284 27653 27652 11882 569 9768 471 10314 14061 25208 3784 11892 25207 11567 11883 9472 10304 9479 10464 13719 16294 27866 15106 17354 11823 11884 1497 6988 1479 10695 28721 28949 2148 28950 28951 28952 11885 9317 9923 10480 10538 19373 27255 27418 13220 27420 26460 11886 9233 10050 9822 10627 14419 22644 27340 27342 24112 14218 11887 1481 827 1458 9845 5530 5426 4916 22338 25627 12063 11888 9405 10143 9831 10569 15400 28218 20939 27955 27956 28953 11889 9539 10767 10454 10879 12150 23841 23555 16436 25851 25850 11890 9326 9523 10157 10809 17454 22128 22127 21148 21296 27327 11891 1155 1564 852 9626 5635 5634 5180 20752 12475 24070 11892 9985 10040 9216 11073 19531 19349 20023 19533 18929 19351 11893 452 10005 742 11063 21973 28954 3700 23850 28955 23586 11894 9458 10007 10441 10465 15192 27467 15709 15195 27470 15196 11895 563 10458 9892 10760 22302 16103 28956 22303 12126 22304 11896 9393 9554 10344 10414 28957 27361 12331 28958 27626 21225 11897 9933 9425 10324 10668 17890 14461 27859 17891 28959 17892 11898 9228 9604 9515 10018 28960 25261 12935 12588 12936 25265 11899 6316 9664 7628 10396 28961 28962 24720 24724 24723 26108 11900 396 9813 10606 10928 28963 28964 24677 24678 21793 23514 11901 9531 9342 10465 10706 24578 12443 27469 27828 28965 12086 11902 1264 10141 341 10309 28555 23194 3144 26000 22893 23193 11903 1434 9556 900 10825 19435 28009 5807 28966 27653 20284 11904 10018 10392 9228 11093 12593 12591 12588 25152 19102 25153 11905 7723 7657 944 10526 27397 20181 27035 27037 22999 19784 11906 8093 9690 8088 10880 28967 20847 28968 28969 27678 27261 11907 9547 10166 9273 10468 28970 13291 27722 20406 11985 12078 11908 9653 9889 9374 10985 18208 24897 24090 17963 24091 27999 11909 9616 9836 9374 10985 14921 26674 24896 17556 24091 17557 11910 708 833 10086 11177 4978 28174 28971 28972 23910 28973 11911 9304 9824 9720 11159 17099 19427 28974 17100 19430 16350 11912 7586 9483 7588 10746 28975 28976 28977 28978 25108 28979 11913 10101 10381 9247 11029 27899 16108 13039 27981 28980 27982 11914 9968 10035 9232 10604 12949 12714 12947 11260 28981 13909 11915 9206 10883 10030 11114 25024 24037 20488 27025 24192 24191 11916 779 10244 9728 11192 28982 26458 26318 26319 24206 24510 11917 9207 9739 10361 10719 28983 11820 28984 28985 28986 23118 11918 10063 10538 9527 10839 13475 26944 26943 26248 27100 26249 11919 436 443 1251 9594 3617 3621 3620 22885 28866 22884 11920 8031 8830 8085 9595 28775 28987 28988 28774 28989 28773 11921 8021 8022 8026 9597 28990 28991 28113 28111 28112 17072 11922 8283 8324 8282 9599 24975 28638 24520 24519 23064 17543 11923 9978 10482 9977 10866 28992 24128 25581 18301 27049 23874 11924 9468 9847 9833 10676 25056 16548 20091 12310 21073 16164 11925 7702 9495 10242 10581 22257 25930 27337 22468 28993 18297 11926 10103 10155 9696 10949 15015 25787 28591 28994 27501 27500 11927 371 9838 372 11178 28995 27497 3288 28996 28334 20246 11928 9340 9939 9950 10612 20669 23668 15430 13511 15432 20276 11929 8587 8648 8559 9600 28371 28997 28998 28370 28999 23051 11930 9985 10043 8233 11027 12564 27639 24582 20679 24584 29000 11931 10217 10653 9466 11034 29001 19987 15226 29002 29003 29004 11932 9559 9984 9434 10180 26288 13946 29005 27924 14021 14023 11933 9501 10375 980 10466 17789 20948 20947 26243 26242 28618 11934 9646 9920 9310 10549 28919 14472 19223 26787 29006 26408 11935 9495 10895 10526 10951 20499 29007 29008 29009 29010 28303 11936 9476 10116 9274 10234 28539 14598 19402 14371 19380 28399 11937 579 809 9566 10806 3230 28274 22704 23093 23095 29011 11938 370 371 372 11178 3282 3288 3287 20244 28334 28996 11939 898 952 951 10508 5800 2380 5796 24999 22213 24753 11940 9041 8946 10803 10992 29012 27153 29013 29014 27155 27154 11941 619 10442 618 10750 18010 23802 4523 29015 22766 23803 11942 396 1245 397 10606 3418 3417 3403 24677 21789 29016 11943 754 1214 1215 11160 4704 5195 5194 27630 29017 27091 11944 8222 8983 8883 9856 25650 29018 29019 25651 29020 25349 11945 8242 8296 9633 10353 19148 14588 17694 29021 14589 14590 11946 8281 9612 10239 11134 25374 25378 25376 29022 23532 29023 11947 9230 9781 9489 9944 27277 22746 16611 13647 16668 19305 11948 1209 1363 9710 10735 3804 20190 29024 29025 21115 18562 11949 9248 9916 9504 10160 14402 22091 29026 13235 22092 14403 11950 8140 8137 8816 9604 29027 27992 29028 29029 27990 27991 11951 238 240 9535 10501 2628 29030 29031 29032 26963 16995 11952 9312 9669 9597 10703 27175 17076 29033 21055 17166 17165 11953 795 1307 1126 10534 5387 5386 5385 18649 22436 25543 11954 9672 9422 10067 10972 29034 20826 25952 27900 19993 20828 11955 6924 6906 6925 10562 7347 7346 7345 18115 19209 25048 11956 1283 258 262 10320 2729 2727 2730 11332 25976 17629 11957 473 9989 10557 10735 29035 16423 19158 19159 18564 25408 11958 9347 9725 9649 10969 13808 28403 16067 14448 15100 14449 11959 650 716 10408 10972 4682 29036 26995 27548 19994 29037 11960 1350 298 9623 10500 2905 29038 14754 14757 14759 29039 11961 8106 9662 8196 10043 18637 29040 29041 29042 29043 29044 11962 8663 10582 9959 11038 24530 15336 29045 24531 17756 23129 11963 491 1277 496 9605 3884 3896 3895 23954 15555 11489 11964 514 515 517 9606 4002 4008 4007 28932 27733 28351 11965 8896 10723 8864 10728 29046 19216 29047 29048 18312 19217 11966 9429 9997 9618 10044 15398 19259 28611 18627 28772 24454 11967 9383 9971 10197 11076 26928 26927 13190 29049 28898 22777 11968 9613 10478 433 10502 25659 29050 22575 20887 22576 29051 11969 7838 9859 8865 10415 19775 20331 29052 13043 29053 17273 11970 9301 9943 9648 10339 14136 24548 22359 12030 19460 18858 11971 707 9579 1485 10949 29054 21019 4974 29055 21022 21023 11972 9786 10041 8177 11147 17688 27975 27974 28284 29056 18342 11973 8963 10114 10124 10786 29057 17510 29058 29059 14847 29060 11974 7788 6355 6357 10524 29061 6493 27071 27074 27076 29062 11975 351 9913 352 10309 14313 29063 3180 16322 28702 16323 11976 8232 9939 9825 11043 25759 20273 25757 29064 29065 29066 11977 10071 10324 9425 10668 21344 14461 20452 22998 17892 28959 11978 235 237 9973 11023 2612 29067 29068 29069 29070 29071 11979 8410 8652 8405 9601 29072 29073 28853 14850 13008 29074 11980 400 435 1250 9611 3439 3441 3430 28886 17477 13733 11981 8281 9032 8279 9612 29075 23722 25375 25374 11599 23724 11982 708 10086 9629 11177 28971 11525 16381 28972 17701 23910 11983 1356 9844 1341 9942 26669 14446 3276 29076 15427 15429 11984 523 445 450 9610 3664 3662 3665 17057 24302 23765 11985 508 9929 507 11155 29077 25614 3962 29078 25990 25992 11986 1375 9867 10177 11101 29079 16256 25180 25181 23186 29080 11987 8872 10204 9724 10494 29081 14460 25846 25847 23089 23091 11988 6371 10319 9673 10459 26777 29082 29083 26778 17321 26779 11989 9905 10141 9784 10683 28674 29084 29085 20923 29086 23195 11990 6954 9819 9620 10807 29087 27682 27936 27938 27939 15333 11991 7621 7631 7569 10555 21672 29088 27051 19653 27053 21673 11992 9723 10629 9600 10970 24248 23053 29089 28067 29090 28068 11993 456 9800 459 10426 29091 22662 3720 28225 28121 28120 11994 9637 9944 9808 10754 13575 16669 24746 12959 18418 21546 11995 7984 9831 7982 10622 17661 15244 29092 24693 15245 11961 11996 7708 8771 7660 10321 29093 25554 28874 28876 25556 25555 11997 9929 10824 10023 10934 28387 29094 26912 29095 29096 29097 11998 9442 10653 10217 11034 21705 29001 29098 19441 29002 29004 11999 365 262 265 10320 2749 2747 2750 15898 15705 25976 12000 7689 7726 7657 9542 29099 19593 21637 21201 19596 19598 12001 1078 10635 9850 11044 24048 21408 24047 29100 28840 21504 12002 7791 6359 6294 9635 26830 6481 29101 26831 29102 26832 12003 1488 1194 9909 11107 4033 29103 27064 27066 27068 29104 12004 8013 8011 9584 11172 29105 29106 29107 29108 29109 29110 12005 7903 9891 10270 10815 29111 26273 28552 28554 21856 12851 12006 9420 9852 9673 9926 17138 29112 20697 15414 17320 29113 12007 9667 10271 9237 10900 26080 26079 26081 14383 21889 24020 12008 620 619 618 10750 4527 4523 4528 23868 22766 29015 12009 9364 10053 9530 10317 13154 18768 29114 12628 18716 15728 12010 6993 9514 6945 10276 17374 21227 7438 18319 23506 18320 12011 9850 10441 1082 10980 23517 25485 25484 28378 29115 22745 12012 840 1146 983 10366 4721 4186 5581 15250 24643 19473 12013 9046 8421 9941 10016 29116 15257 26128 22239 18298 17608 12014 8584 8946 10301 10803 29117 27151 27745 27747 27152 27153 12015 9215 10406 9901 10551 21733 24426 12797 12648 17366 29118 12016 9487 10613 630 10930 15481 25202 20936 15229 23444 15482 12017 10079 10662 7817 10974 28047 25243 29119 29120 25244 21130 12018 9557 9966 9482 10017 29121 21238 27879 20103 24761 18248 12019 1365 9916 343 11089 25710 25636 3090 25711 25639 22731 12020 8477 7981 8913 10264 14822 29122 26609 14823 26611 14824 12021 8074 8965 8913 10264 21090 26610 29123 18842 26611 18277 12022 9409 10188 9601 10999 15299 14849 23547 15301 20571 13689 12023 9782 9254 9903 10543 28446 14389 29124 28447 18317 27552 12024 1429 349 9905 11140 3136 20790 28673 28676 20792 20791 12025 9400 9852 9673 11160 29125 29112 20520 29126 29127 29128 12026 8682 7963 10087 10775 29129 29130 16369 16372 16374 29131 12027 683 9888 10558 10939 29132 22493 22670 22672 22673 24085 12028 9300 10021 9821 10463 28142 28223 26284 26286 26285 29133 12029 1520 10499 9541 10712 29134 15079 29135 29136 16694 29137 12030 9309 9820 9649 10377 21118 29138 28404 29139 15956 22100 12031 9593 10002 9212 10872 19803 14211 20916 29140 19611 19613 12032 9550 10367 985 10833 14970 24931 20801 29141 29142 29143 12033 8518 8517 9123 10504 20711 23972 29144 20712 23973 18879 12034 8744 9483 10223 10303 29145 29146 29147 29148 17743 29149 12035 9223 9624 9557 10937 27098 27294 27293 20589 29150 29151 12036 7915 10269 9763 10738 28456 11921 28455 29152 11919 11920 12037 9714 9827 9386 9931 29153 21724 15973 15135 21972 28108 12038 9748 1436 10819 11196 29154 29155 14213 16708 29156 25018 12039 1030 9727 10000 11140 29157 28543 27119 27120 20793 29158 12040 9837 10500 9308 10858 16124 29159 24665 18978 18873 25669 12041 9794 10632 8823 11198 17452 29160 24242 24244 24243 29161 12042 9175 9592 8826 10216 13287 26181 29162 15847 24756 15848 12043 7995 8625 10422 10809 29163 22973 28247 29164 22975 22974 12044 9396 10198 10027 10982 29165 21780 29166 28286 22029 22031 12045 8710 10090 8005 11062 18121 27865 29167 19860 29168 17474 12046 10076 10741 9292 10932 23641 29169 20633 23470 20932 23642 12047 6971 1383 6963 10687 29170 26813 7236 29171 26814 26816 12048 9280 9478 10069 10394 23706 24160 14276 16681 19151 13630 12049 9033 10390 9784 11131 29172 29173 25862 25865 25867 29174 12050 860 957 859 10254 5664 5663 5547 23473 20907 24197 12051 9209 9481 10015 10958 28767 21259 15518 13322 24123 23767 12052 9217 9653 10618 10873 21419 25139 28808 20063 29175 29176 12053 6951 9819 6954 10807 29177 29087 7442 25120 27938 15333 12054 9309 10426 9990 10497 22316 24645 21120 22290 29178 22011 12055 9276 9599 9722 10956 29179 27369 26966 25427 26970 26237 12056 9276 9721 9599 10956 25426 26236 29179 25427 26237 24432 12057 1030 9727 578 10000 29157 28564 3184 27119 27243 28543 12058 8116 9738 8114 10227 27398 25894 29180 13445 29181 27399 12059 8814 8815 9130 10290 29182 17081 23158 23157 14745 17082 12060 8613 10425 9782 10491 22798 16784 29183 24173 29184 22664 12061 8385 10064 9583 10656 18737 21611 27749 18738 29185 16040 12062 6987 7802 6902 9836 22139 27096 7067 22140 26867 19888 12063 7750 9692 6962 10696 24406 25487 25486 28587 28586 18173 12064 235 9973 10211 11023 29068 21194 29186 29069 29187 29070 12065 9992 10106 9263 10778 24377 27026 26341 22199 14102 24378 12066 9550 9938 9427 10833 29188 27139 29189 29141 29190 29191 12067 447 10182 446 10909 14077 29192 3632 15692 29193 15762 12068 9563 9609 9274 10190 25782 23523 27078 25783 13226 18034 12069 529 530 531 11184 3659 4083 4082 24759 27138 22158 12070 530 685 532 11184 4090 4089 4088 22158 24620 22159 12071 9006 8285 8467 10866 13389 29194 15403 12923 15405 13390 12072 9412 9796 9504 11004 19747 29195 21650 23784 27059 18161 12073 9971 10039 9383 11050 22925 28632 26928 22928 26021 22929 12074 841 10833 10367 10951 29196 29143 29197 29198 28014 29199 12075 9515 9604 9228 11010 25261 28960 12935 23653 29200 29201 12076 1418 10607 510 10614 29202 18697 3990 29203 23436 14663 12077 6346 9574 6344 10572 27720 26343 6809 29204 25872 25453 12078 8176 8175 9772 10773 22913 29205 19392 19391 16886 19491 12079 9607 10136 9570 10921 28865 29206 28530 28531 27589 15666 12080 410 9963 409 10400 27784 16338 3477 27785 12263 17195 12081 529 9919 1220 10411 28788 21993 4084 22717 21991 21992 12082 9503 10059 9724 10715 23328 23088 23329 25764 23616 23617 12083 10334 10895 9495 10951 27525 20499 27673 28302 29009 28303 12084 9593 10055 9212 10852 29207 26684 20916 24281 29208 29209 12085 7584 9608 7557 10475 13179 26751 29210 22756 29211 22757 12086 10008 10104 9485 10478 12960 21825 19329 19224 21824 19193 12087 348 1264 341 10309 3145 3144 3142 15857 22893 26000 12088 963 10254 860 11185 25397 23473 5668 25400 29212 25401 12089 9493 9272 9905 10665 27815 27816 21187 21160 20919 24284 12090 1480 963 860 11185 5669 5668 5670 29213 29212 25400 12091 1536 9672 1575 10417 25388 25389 5643 18777 25404 23901 12092 9686 9213 10228 10796 11224 20035 26118 28654 26511 28655 12093 10058 10629 7913 11013 28065 29214 29215 19885 17117 29216 12094 1199 193 6939 10744 2160 29217 29218 27442 29219 22674 12095 8162 10335 9814 10554 29220 23218 29221 29222 24707 19023 12096 8091 10162 8482 10766 29223 15840 29224 29225 15816 15842 12097 9615 9713 9499 10199 21891 21890 21413 15994 15169 26899 12098 202 7730 1186 9675 29226 24675 1774 25980 29227 21806 12099 7570 9177 7536 10690 29228 22521 26735 26736 26006 26005 12100 9475 10373 7003 10514 20131 26614 26228 25130 26229 27084 12101 9875 10202 269 10869 16672 12553 13655 18231 29229 19188 12102 9363 10269 10236 10804 13369 21654 15652 13370 27429 11923 12103 6324 10483 9562 10512 29230 27130 24030 24018 24031 27394 12104 8983 8883 9856 10164 29018 29020 25349 16851 25348 29231 12105 9088 8960 8123 9982 27640 29232 12146 13018 13020 27641 12106 6391 6397 6316 10396 6760 6823 6423 24722 24724 29233 12107 8676 7776 9177 9580 29234 22522 29235 26268 22523 19545 12108 284 283 9950 10685 2843 23985 16203 25248 19062 23986 12109 9481 9209 10022 10958 28767 15696 20383 23767 16308 13322 12110 6901 10126 1199 10744 28803 26781 29236 26297 27442 26518 12111 9090 10406 8171 10796 26972 28360 29237 26974 29238 26973 12112 7749 10373 9475 10514 26631 20131 25131 25129 25130 27084 12113 9371 10732 9505 10981 16801 24145 29239 14170 24146 20141 12114 252 10080 9503 10912 29240 26097 24881 25800 25802 26027 12115 698 10106 9567 10854 28862 27046 28275 29241 29242 29243 12116 728 10275 861 10676 14605 21070 5076 14606 21072 12309 12117 9201 8537 9185 10404 29244 29245 27522 27524 16077 21609 12118 9389 9701 9619 9835 11380 29246 29247 11956 20568 11957 12119 9244 10025 9856 10977 21155 20241 21156 25276 21622 21621 12120 1013 418 416 10543 3519 3518 3520 23785 25580 22482 12121 8212 10638 9746 11048 29248 29249 29250 29251 24955 29252 12122 9136 10682 8449 10828 29253 21746 29254 29255 20708 21748 12123 8125 8582 10318 10568 29256 29257 16764 24965 24967 29258 12124 8459 10690 8547 11119 22488 29259 29260 22491 29261 22492 12125 240 239 238 9535 2627 2623 2628 29030 29031 29262 12126 9328 10160 9898 10738 25105 25106 17802 12819 26509 26121 12127 6345 6347 9554 10344 6698 21868 21224 28239 27361 27360 12128 10005 10700 9331 11012 25125 23034 22119 15164 22120 21062 12129 7872 10007 8351 10265 14993 29263 29264 29265 29266 29267 12130 383 10203 9581 10485 28505 25252 20025 20029 20028 13706 12131 9933 10324 7732 10948 27859 29268 29269 22518 29270 18360 12132 9528 10121 9955 10122 26956 14289 29271 29272 14339 23232 12133 9956 10121 9528 10122 14338 26956 29273 14291 29272 23232 12134 9955 10119 9529 10120 14288 26958 29274 14337 29275 23237 12135 9532 10118 9956 10123 26954 14336 29276 29277 15154 23241 12136 9551 9853 9470 10561 25498 19778 28757 24495 19780 19779 12137 10012 10364 9223 10942 25924 27295 16652 16618 16810 25925 12138 6928 10225 10011 11197 29278 29279 25634 26626 28619 29280 12139 973 975 1505 9830 5979 5981 5980 25279 21001 18073 12140 9273 9530 10013 10630 26603 26470 29281 11770 29282 27415 12141 7622 7535 7594 9603 29283 26177 29284 15917 23106 26179 12142 8006 8710 8005 11062 29285 29167 29286 18081 29168 19860 12143 9312 10703 9597 10817 21055 17166 29033 21057 18840 18270 12144 7706 7644 10472 10948 28749 16756 28750 24343 26212 26544 12145 313 9930 9572 11162 20825 11540 20824 29287 29288 29289 12146 9471 10068 9641 10532 18816 14763 29290 16577 20265 29291 12147 8369 9536 10779 10780 29292 29293 29294 29295 29296 29297 12148 6901 6931 6932 10744 7322 7321 7320 26297 23793 27510 12149 10598 11152 9448 11175 29298 29299 20620 29300 27913 29301 12150 9420 9672 9592 10297 17687 25951 29302 15489 29303 15388 12151 8744 10223 9483 10444 29147 29146 29145 29304 29305 29306 12152 8873 7884 10351 10843 29307 29308 26092 28822 25220 29309 12153 7837 10115 9585 11097 14189 25371 25372 29310 19179 29311 12154 7662 7730 202 9675 29312 29226 19975 20952 25980 21806 12155 9131 7725 8858 10581 29313 14025 29314 29315 17722 19301 12156 9371 10187 10112 10732 16799 24825 15368 16801 25083 16728 12157 1075 305 9930 10389 2955 12978 23334 24322 15631 11972 12158 9936 10278 1214 11160 27717 29316 27090 27092 27091 29317 12159 9298 10667 9812 10791 14651 11509 29318 15571 26749 15572 12160 1346 9849 768 10578 29319 28095 5262 29320 28094 25212 12161 9858 1024 10610 10981 29321 29322 20819 20139 29323 29324 12162 9052 8425 9896 10556 29325 18127 16492 19983 19985 28557 12163 9013 9008 10002 10872 29326 12965 29327 29328 19613 28159 12164 9253 10327 9789 10814 26853 29329 26138 26140 26142 26854 12165 8773 6902 9836 10253 27095 26867 27097 29330 20440 26868 12166 9533 10210 1361 10721 23943 23942 23944 29331 29332 28814 12167 9481 9709 9424 10472 22652 13910 24122 20176 26136 16755 12168 6293 6362 1187 10384 6624 28727 21714 21717 21719 28730 12169 9546 10365 8304 11190 25790 25769 17537 29333 29334 29335 12170 1288 1518 1008 10324 2299 5977 6017 24717 17627 14462 12171 7660 9544 8771 10714 25553 25552 25554 29336 29337 29338 12172 9441 9779 10366 10736 20861 29339 18666 22733 25622 22734 12173 7586 7588 9483 10808 28977 28976 28975 25459 29340 29341 12174 9206 9574 10855 11141 28580 21028 28582 28764 28766 29342 12175 8231 8934 8931 10359 16553 24988 29343 14878 20648 16552 12176 1596 9548 1517 10312 15831 27462 5655 15830 27461 15829 12177 9661 9948 9934 11078 19110 29344 29345 29346 29347 29348 12178 9249 9934 9948 11078 29349 29344 29350 23687 29348 29347 12179 855 10475 10312 10800 19408 23553 21896 29351 27464 29352 12180 8717 6967 10102 10696 28178 19164 28177 29353 17008 19167 12181 9333 10113 9792 10262 13216 29354 16516 12939 16518 28429 12182 7785 10444 8745 10808 18378 29355 29356 17235 29357 15562 12183 8264 10030 8450 10362 26515 18262 29358 21288 15118 18264 12184 9548 9205 10418 10598 14451 15539 15913 19092 14698 19093 12185 9970 10623 8375 11136 29359 29360 29361 18741 29362 27082 12186 9353 10803 10301 10992 26668 27152 28128 23823 27156 27155 12187 9389 9954 9835 10795 28022 29363 11956 29364 20569 19451 12188 9349 9816 9737 10583 13925 29365 24231 29366 29367 15236 12189 9669 10474 9254 10848 26875 16977 26909 23478 16976 15575 12190 9293 10183 9759 11040 19690 16393 13989 14911 21264 17488 12191 6976 6974 9616 9969 7288 25077 20967 20434 21162 25229 12192 9488 10503 9553 10548 12052 28319 27724 23008 24324 27744 12193 1472 9997 913 10689 25075 28921 5853 23949 22785 15399 12194 9231 10176 9908 10360 14642 29368 13542 14643 29369 14644 12195 332 1090 333 10553 3098 3097 3083 11807 20197 13476 12196 8470 8804 10241 10913 29370 19857 21174 22248 22249 29371 12197 9663 10240 9484 10397 21043 20482 22190 17163 24063 28901 12198 7723 10526 1582 10675 27037 27036 27034 27885 29372 27886 12199 8610 8387 8226 11186 28126 18829 29373 28127 18830 18654 12200 9673 9852 9400 9926 29112 29125 20520 17320 15540 29113 12201 9279 9902 9489 10140 28926 22434 26429 23216 23614 23570 12202 7851 10171 10214 10927 29374 27694 29375 29376 11418 27751 12203 9569 9686 10228 10796 26113 26118 26116 29377 26511 28654 12204 8714 8985 8731 11187 27173 28151 29378 27174 28152 27165 12205 10190 10596 9471 11015 26483 18817 16574 25520 25519 29379 12206 8682 8681 10775 11001 29380 29381 16372 18691 18693 29382 12207 9413 9792 10113 10262 14843 29354 15700 12111 28429 16518 12208 8898 8371 10109 10780 29383 29384 17140 17143 17145 29385 12209 9569 10328 9215 10406 21679 25528 25525 21682 21733 21683 12210 7743 9698 10526 10675 20666 20668 19786 27884 27886 24940 12211 9563 9609 9212 11083 25782 26682 26683 23396 29386 29387 12212 6356 6293 6375 10531 6704 6621 6705 24114 27878 21744 12213 9501 10144 6339 10828 28050 28049 24234 23571 28770 29388 12214 9434 9830 9629 10235 16814 17697 29389 17172 28693 27636 12215 9138 8826 9175 9592 29390 29162 13288 11401 13287 26181 12216 405 10737 9839 11125 28827 14963 27244 28829 29391 28830 12217 8385 8291 8292 10656 29392 24909 18736 18738 16039 24910 12218 8963 10138 10114 10786 29393 15277 29057 29059 29060 15002 12219 9423 10529 10153 11147 24553 28381 28380 17078 29394 28285 12220 6292 6341 167 10440 6651 29395 28194 28196 28198 29396 12221 9681 9908 9231 10176 14660 13542 14658 16009 14642 29368 12222 9461 9908 9681 10176 29397 14660 16007 15886 16009 29368 12223 8460 9555 10533 10834 27387 28135 28133 28742 19290 28743 12224 9366 9833 9555 10174 15238 25074 29398 13393 29399 14405 12225 6307 7751 6372 10277 28616 28422 6509 28617 28425 28427 12226 6910 9082 7766 10694 29400 29401 25505 29402 29403 29404 12227 9558 10570 1552 10719 24602 28574 25574 29405 28576 28578 12228 517 10506 10327 11120 27736 27737 27735 29406 29407 29408 12229 724 10250 9553 10802 29409 21212 28849 28852 27725 22502 12230 7553 1240 158 10631 29410 1713 27478 27479 25947 29411 12231 1363 473 1311 10557 3805 3331 3806 18560 29412 19158 12232 878 1311 380 10557 3341 3321 3339 16798 14989 29412 12233 8385 9583 8485 10656 27749 19054 27750 18738 29413 29185 12234 9641 10532 8342 10566 20265 29414 26977 12008 26979 22850 12235 675 9706 804 10541 22684 16216 4815 26879 12531 16218 12236 8207 10623 10271 10900 29415 29416 25706 25708 24020 29417 12237 9668 9724 9280 11178 23861 13986 22108 23862 25949 23618 12238 830 1128 9992 10659 5540 29418 29419 24445 22195 15608 12239 9313 9844 9763 9942 14445 25414 26182 15428 11934 15429 12240 1233 544 10651 10961 4159 17193 17194 23955 23957 29420 12241 8425 10556 9951 10906 28557 20135 21915 18128 12614 29421 12242 9520 9218 10128 10352 25155 25154 19890 20247 28436 21346 12243 9597 9669 9312 9957 17076 27175 29033 26548 27178 24809 12244 9421 9827 9714 9931 18387 29153 12967 15133 15135 28108 12245 8937 10298 10037 11186 15484 21248 21247 29422 21096 29423 12246 9304 10577 9711 10700 15421 16182 29424 29425 24362 29426 12247 9484 10049 9295 10240 21131 28817 28900 20482 19296 21794 12248 9582 9326 10305 10355 27325 11427 20389 23757 25743 14966 12249 8464 8465 8361 10098 12102 28306 29427 13758 27448 13400 12250 9664 10643 6319 10725 29428 27168 29429 29430 27169 25667 12251 9272 10056 9945 10620 22935 28545 24285 22934 28547 20376 12252 9329 9646 10606 10876 21496 25171 28920 20066 29431 29432 12253 227 9651 226 11041 28923 29433 2563 28924 29434 28925 12254 9469 10293 9974 11156 27208 16453 22908 29435 29436 29437 12255 9824 10229 9411 10363 13436 13360 13622 23872 22398 27057 12256 1186 9675 7730 10716 29227 21806 24675 24676 21154 20751 12257 9582 10385 9291 11018 28237 28238 20742 29438 21193 29439 12258 9279 9489 9902 10554 26429 22434 28926 23356 20624 22739 12259 770 1540 1575 9672 5272 5274 5020 26037 25389 15389 12260 1352 10013 1385 10679 29440 26469 4786 29441 26311 26471 12261 9620 10130 9368 10567 29442 13129 29443 14854 29444 29445 12262 9369 10130 9620 10567 12066 29442 15755 13942 14854 29445 12263 7965 7837 9585 11097 27350 25372 19877 21372 19179 29310 12264 7871 7869 8161 10754 11389 29446 29447 11390 29448 11391 12265 8122 8121 8633 10066 24796 17029 29449 19255 13399 17030 12266 9215 9569 10406 10551 25525 21682 21733 12648 29118 26048 12267 9257 10093 10181 11194 29450 29451 19146 18674 29452 29453 12268 9207 9619 10247 10466 29454 24049 26583 26582 23588 24051 12269 9542 9427 9938 10833 29455 27139 29456 29457 29191 29190 12270 9626 10345 9635 10573 16859 26628 22505 20756 27692 24072 12271 9827 9931 9421 10458 28108 15133 18387 28110 14833 16030 12272 9527 10480 9805 10538 27419 29458 29459 26944 22295 27420 12273 9746 10184 9222 10821 24304 19971 27808 24306 19973 17337 12274 9340 9922 9837 10500 24148 29460 14976 19513 16124 24149 12275 9914 10295 9430 11052 28686 26337 24698 24699 19469 29461 12276 9478 10626 10263 10813 20429 25055 22653 17919 19940 25319 12277 1236 1562 851 11076 5632 5631 5261 18292 23350 22776 12278 9349 9888 10254 11108 24230 20906 29462 28052 23126 21521 12279 9292 10076 10170 10510 20633 23466 26645 20518 24351 20634 12280 458 456 10407 10426 3718 28224 29463 29464 28122 28225 12281 9740 10155 9218 11086 14838 25786 29465 15746 25789 25788 12282 9299 9726 9647 10301 29466 16900 29467 15371 26495 29468 12283 381 474 383 10569 3345 3344 3343 29469 21469 21468 12284 8766 8931 9506 10728 28025 23731 28027 29470 22608 20649 12285 8910 9781 8393 10554 21565 19306 29471 21566 19022 15783 12286 9741 9892 9314 10416 12227 13040 14091 29472 19559 16143 12287 8514 9075 9077 10350 29473 12738 29474 29475 15125 15124 12288 8599 8600 8438 9861 27763 29476 26538 18421 26537 27762 12289 8410 10188 8801 10999 12695 29477 29478 20570 29479 13689 12290 1586 10180 976 10515 26144 24001 2298 26147 24003 24005 12291 801 906 9915 10653 5414 29480 14248 19986 19988 29481 12292 9439 10482 10213 10717 23873 23445 16466 15585 20055 23447 12293 8863 8209 8914 10091 26558 29482 21550 19252 21549 26559 12294 566 1293 693 10092 2789 4271 4270 23057 26499 27965 12295 7825 7824 7826 10095 25337 21999 29483 25338 12483 18385 12296 8101 8102 8100 10094 29484 11637 29485 29486 13228 13227 12297 243 1308 241 10093 2645 2644 2642 27958 28484 23845 12298 8870 8816 10283 10862 29487 27993 23210 20227 23212 29488 12299 7726 9542 7686 10521 19598 29489 29490 26934 29491 26690 12300 9211 10304 9479 10460 16295 16294 16293 19623 19625 27157 12301 8918 8696 8792 10626 29492 25521 28595 28597 25318 25522 12302 9561 9999 9342 10980 25195 24579 22857 28117 28377 22744 12303 8860 8521 8574 9739 18658 29493 29494 18657 26771 11815 12304 9645 9998 9811 10424 13413 29495 28592 15367 28594 16604 12305 462 463 464 9824 3742 3748 3747 17863 15408 19428 12306 784 786 9674 10416 4869 29496 17762 17760 17761 26170 12307 9377 10037 9993 10416 28206 29497 15722 12930 15724 28207 12308 10004 10495 9084 10582 20327 23703 29498 23127 23704 21197 12309 9910 9410 10827 10879 19267 23947 18721 16437 18576 19268 12310 1497 174 6933 10658 2152 29499 29500 28723 29501 29502 12311 9421 10458 9951 10484 14833 28058 12613 14951 19345 27987 12312 9256 10768 9587 11112 17362 20964 20963 25760 29503 29504 12313 6332 10730 6298 11096 27132 27916 6731 27135 29505 27136 12314 1334 1052 10106 10778 4943 29506 24376 22197 24378 29507 12315 1229 1230 685 11188 4863 4862 4091 24447 21952 21951 12316 7557 9608 184 10475 26751 26750 26752 29211 29508 22757 12317 9216 10029 9974 10496 26168 18146 22907 29509 12616 14777 12318 9442 10217 9591 11034 29098 15045 29510 19441 29511 29002 12319 9238 9644 9638 10094 29512 17347 19995 13229 19851 17745 12320 9638 9644 9293 10094 17347 17746 21358 19851 14909 17745 12321 770 10386 9672 10972 26038 15390 26037 29513 27900 28409 12322 9458 10202 10007 10701 19750 26913 15192 15198 12729 19187 12323 9421 9952 9951 10458 18351 24928 12613 14833 28058 18672 12324 9382 9799 9534 10292 24214 29514 29515 16189 27851 23660 12325 9516 9715 9334 10481 23673 29516 28893 22554 21395 29517 12326 9949 10587 9374 10713 20969 15819 26675 20938 13566 15821 12327 9450 9630 10452 11195 25840 13761 29518 25841 20796 18485 12328 1197 1047 1434 10507 2668 3257 6062 22289 24007 15607 12329 1128 1334 830 9992 4946 5396 5540 29418 29419 22194 12330 1175 374 377 9991 3300 3309 3311 24634 11544 11543 12331 8053 8054 8055 9990 28794 29519 16272 23657 11969 17186 12332 8115 8116 8114 10227 29520 29180 29521 29522 29181 13445 12333 9278 10195 9577 10898 28629 28630 22794 22763 22747 21452 12334 7564 7563 7570 10690 25246 29523 26741 24741 26736 25247 12335 8885 9921 10708 10889 22123 19807 29524 22124 29525 22125 12336 9484 10049 9982 10397 21131 20618 24062 24063 17791 19749 12337 8390 10702 10187 10732 23808 16474 23807 29526 16728 26405 12338 1346 768 769 10578 5262 5257 5263 29320 24836 28094 12339 1334 9992 1128 10659 22194 29418 4946 22196 15608 22195 12340 9793 10332 9430 10456 23958 26336 29527 18778 17878 24121 12341 8897 8105 8233 9985 25165 27637 29528 12194 24582 27638 12342 10065 10384 1121 11085 26924 29529 27846 27848 27847 22901 12343 9534 9799 10009 10502 29514 25985 17596 26640 25987 24932 12344 1497 9702 6988 10695 28720 28719 28721 28950 28952 21568 12345 9503 10505 10323 10715 27192 22557 25763 25764 25092 22148 12346 7891 9939 7886 10989 28364 19575 29530 28366 24615 24617 12347 696 1372 455 9981 3716 3705 3714 28731 21534 28051 12348 9271 9811 9645 9998 29531 28592 11905 13414 13413 29495 12349 435 1131 10045 11094 3613 29532 13731 13734 13736 29533 12350 9624 9223 10839 10937 27098 27101 27102 29151 29534 20589 12351 8264 8486 8233 9985 27382 29535 24583 21289 24582 20296 12352 760 762 761 10871 5223 5222 5215 11323 11325 29536 12353 8403 7897 10336 10699 29537 29538 22807 22810 14117 29539 12354 8240 8242 9633 10348 17693 17694 16167 21046 21047 29540 12355 9379 9723 9600 10970 18865 29089 29541 15801 29090 28067 12356 8472 9758 8875 11051 19367 26328 23804 19371 16526 18287 12357 9354 10575 9529 10993 29542 15568 13678 13679 12324 15570 12358 849 10580 1121 11085 29543 27844 4752 29544 27847 27849 12359 1321 9979 798 10063 12097 28878 5399 13474 28031 13997 12360 7872 10007 10265 11006 14993 29267 29265 14994 26213 12892 12361 9658 9776 9717 10552 29545 29546 29547 17946 29548 29549 12362 9028 8390 10187 10732 29550 23807 24805 24806 16728 29526 12363 9248 9665 9517 9898 29551 18487 29552 23601 20560 19822 12364 9245 9651 10095 11041 19996 12768 19997 26214 20567 28925 12365 9333 9493 9946 10165 21964 24439 14495 13199 15359 29553 12366 9090 10796 9086 10936 26974 20521 29554 26975 20157 20523 12367 9347 10508 9684 10969 27490 11871 17964 14448 13929 24732 12368 10063 10839 9223 10937 26248 27101 24221 22439 20589 29534 12369 8114 9738 8116 10845 25894 27398 29180 29555 13447 27400 12370 9484 9208 10346 11074 22191 12392 25751 20485 15776 14625 12371 9670 10113 9418 10920 27142 18853 26707 27144 18855 15716 12372 1444 10467 9509 11087 27569 21086 27530 28131 21088 21087 12373 1123 9565 363 10681 29556 23490 3253 29557 14899 19834 12374 764 9648 763 10871 19459 25410 5232 26281 29558 12895 12375 9644 10028 504 11155 23222 17778 29559 29560 29561 29562 12376 9847 10300 9468 10398 24948 23680 25056 26033 15153 24749 12377 8469 8378 8379 10097 29563 27514 21491 19796 20146 27515 12378 8474 9062 9065 9972 29564 29565 20997 20996 17479 29566 12379 8242 9633 8475 10353 17694 29567 29568 29021 29569 14589 12380 9642 9219 9856 10750 25448 28705 28704 29570 24772 29571 12381 8825 8826 7762 9592 29572 29573 21660 21663 17441 26181 12382 9219 9642 10513 10874 25448 28708 28706 20069 29574 29575 12383 8011 8012 8013 9584 29576 29577 29105 29106 29107 23031 12384 9446 10448 9953 10778 13127 18690 18134 14100 18682 18974 12385 8111 10214 9966 11000 28464 21240 28462 29578 15087 29579 12386 9199 9131 8858 10581 29580 29314 17718 17720 17722 29315 12387 214 9570 213 10765 27852 23603 2495 29581 24270 24269 12388 9648 10339 9943 10871 19460 18858 24548 12895 22320 26282 12389 9862 10179 8408 11190 29582 29583 14057 14059 14058 29584 12390 1542 1599 198 10585 2438 2437 1633 29585 23665 23666 12391 9273 10013 10468 10630 29281 24649 11985 11770 16265 29282 12392 8604 8474 9785 9972 29586 29587 16514 14551 16513 20996 12393 7721 7714 10338 10546 29588 29589 19946 28084 24913 29590 12394 9442 909 10518 10653 22479 22480 17105 21705 29591 22771 12395 508 555 507 9929 3973 3972 3962 29077 25614 24379 12396 1032 631 1086 10612 4593 4595 4594 23320 16816 25576 12397 433 10478 434 10502 29050 26215 3579 22576 29592 29051 12398 7838 8865 7840 10415 29052 28054 29593 13043 29594 29053 12399 9482 10323 9503 10505 26154 25763 27196 24762 27192 22557 12400 8525 8445 9964 10680 29595 28746 23318 21323 26332 28747 12401 8182 8261 8183 9995 21828 29596 25176 21829 17828 16910 12402 8349 10520 9510 10645 29597 20658 28671 29598 21475 23716 12403 9979 10326 9583 10485 29599 28431 21690 16565 27627 14492 12404 9389 10689 10354 11005 29600 26322 28021 28023 24570 26324 12405 9207 9501 9701 10466 23360 23361 23362 26582 29601 26243 12406 8336 8382 8287 10787 29602 29603 21181 21183 17135 29604 12407 9486 1386 10273 10724 21560 25815 18870 23393 29605 23391 12408 8404 9645 8938 10424 20625 15365 29606 20627 13253 15367 12409 9485 8029 10488 10817 22226 22227 22228 24786 29607 24787 12410 668 1400 1415 10618 4779 4781 4773 29608 15817 13562 12411 9493 9784 9281 10683 28203 28202 24766 16414 17285 29086 12412 9758 10241 9329 10913 17990 13903 14544 14546 14545 22249 12413 837 646 10047 11118 4667 29609 24041 24059 24061 29610 12414 9384 10128 9520 10892 28435 19890 20539 16312 16648 24428 12415 9765 9887 9349 10254 25467 29611 15081 29612 29462 28307 12416 9349 9888 9770 10254 24230 21925 21127 29462 29613 20906 12417 9827 10458 9421 10484 28110 14833 18387 18857 14951 27987 12418 539 9728 10198 10952 27014 28799 28797 29614 19616 24202 12419 8301 8300 8224 10616 23779 15465 29615 23780 15467 14906 12420 8349 9510 8350 10645 28671 16906 28669 29598 22237 21475 12421 7548 7581 7596 9549 29616 26350 29617 28042 16654 22168 12422 6958 9555 6953 10174 29618 29619 7445 28760 29620 29399 12423 9508 9416 10197 11076 23782 18761 23781 27159 28898 18294 12424 6349 9574 6346 10855 27756 27720 6736 27760 29621 21028 12425 9250 9687 10032 10790 11950 26851 23939 25961 13434 27339 12426 9993 10037 9464 10416 29497 21246 29622 15724 28736 28207 12427 9629 9830 9434 10941 17697 16814 29389 17958 13381 17027 12428 218 9732 216 11127 22188 29623 2518 25822 29624 25823 12429 9267 9703 10252 10599 18288 16055 14743 29625 29626 23926 12430 8180 8306 8179 10757 29627 23887 29628 29629 23889 23888 12431 9717 9776 9658 11133 29546 29545 29547 29630 29631 29632 12432 7535 191 9603 10435 26178 24361 26179 29633 13549 29634 12433 9647 10099 9467 10489 20813 13274 20814 25692 20372 29635 12434 9158 9842 9160 10212 29636 29637 29638 29639 29640 29641 12435 10366 10376 9441 10736 21263 21190 18666 25622 22733 21569 12436 9223 9624 9527 10942 27098 24573 27099 16810 29642 29643 12437 10077 10129 9536 10274 21881 19325 29644 18965 19327 13817 12438 1037 9543 350 10455 29645 15731 3188 22324 22511 22510 12439 349 10000 358 10772 20788 22707 3130 24272 26477 24273 12440 9141 10031 10277 11114 28184 25297 28186 29646 29647 29648 12441 6346 9574 6349 10031 27720 27756 6736 29649 27757 27758 12442 833 1500 834 10086 5552 5551 4983 28174 13284 13283 12443 945 9858 203 10562 27115 25771 2461 27116 25772 19412 12444 8890 9114 9197 10598 22499 29650 29651 22500 29652 21274 12445 553 458 10407 10969 3729 29463 11563 13928 14404 29653 12446 779 538 1259 11192 4130 4111 4131 26319 24233 24204 12447 9416 9635 9626 10345 22506 22505 12476 15437 16859 26628 12448 9617 9426 10277 11114 28199 15741 17216 28200 29647 28201 12449 10443 10785 9447 10823 24920 19123 29654 24547 29655 24923 12450 8505 9086 9067 9897 20152 29656 27160 20154 16855 20153 12451 1164 1142 1075 9899 4526 6089 2966 12793 23333 12794 12452 8642 9042 9019 9898 19120 29657 27617 16156 27616 19119 12453 709 835 1432 9901 4984 4986 4306 12796 12798 18002 12454 9602 11002 10022 11081 29658 25488 19815 29659 15698 25490 12455 9755 10185 9335 11006 22874 29660 13280 15798 12890 12285 12456 9524 9779 10584 10736 29661 28836 23397 23399 28837 22734 12457 9624 10839 9271 10964 27102 27494 24574 28444 29662 29663 12458 9268 9733 9576 10926 27676 11288 26563 28372 17850 17849 12459 9741 9314 10298 10416 14091 18771 18196 29472 28208 19559 12460 1307 883 493 9902 3904 3890 3905 25542 27695 14090 12461 416 415 413 9903 3504 3503 3505 25579 14390 21527 12462 7934 7937 8693 9904 29664 11705 29665 24781 12800 12799 12463 339 1429 349 9905 3134 3136 3128 21849 20790 28673 12464 886 798 1321 9979 5351 5399 5398 28879 12097 28878 12465 8203 9947 8172 11016 29666 17750 29667 29668 18105 18104 12466 9662 10709 9522 10883 20339 29669 29670 27040 23405 29671 12467 688 9624 10846 10964 29672 28442 20308 27124 27126 28444 12468 1013 10096 9491 10543 21763 22043 22042 23785 22483 29673 12469 9041 10803 9860 10992 29013 26313 29674 29014 25857 27155 12470 9428 10295 9914 11052 17518 28686 29675 21658 24699 29461 12471 1455 785 827 10070 5344 5342 5345 24893 15469 21735 12472 8559 9600 8648 10629 28999 23051 28997 29676 17613 23053 12473 8805 9826 7789 10812 24656 24657 24653 29677 27445 25646 12474 9436 9978 9977 11153 18299 25581 11792 18775 20584 18776 12475 9852 10319 9673 11160 17757 29082 29112 29128 29127 29678 12476 9614 10085 9415 10530 15660 15200 26714 23115 18070 25291 12477 1043 10423 1545 10439 27106 17766 2421 23264 17085 17768 12478 9555 6953 10174 10908 29619 29620 29399 26618 27777 29679 12479 8884 9821 9640 11102 24391 29680 29681 29682 29683 17783 12480 9176 9168 8845 9802 29684 29685 13092 14044 14046 22587 12481 9333 9976 9493 10165 12270 17403 21964 13199 29553 29686 12482 8568 10041 8606 10968 29687 13601 28411 28412 21912 18533 12483 8221 10513 9856 10977 29688 28707 21618 21620 21622 29689 12484 7953 10228 9621 11016 29690 22485 29691 29692 17933 18106 12485 9530 9798 9364 10266 26602 29693 29114 29694 29695 23892 12486 1418 10017 10607 10614 29696 20799 29202 29203 14663 19754 12487 1034 9705 878 10433 11578 17279 5728 21378 16797 17278 12488 8090 9571 10649 10766 29697 17965 29698 29699 29700 29701 12489 9072 9588 9061 10395 11518 19551 28433 11519 29702 11520 12490 9621 10228 7954 10529 22485 27872 29703 29704 27870 27871 12491 7798 9177 7570 10690 29705 29228 29706 29707 26736 26005 12492 615 10061 11078 11079 23858 29708 29709 29710 29711 29712 12493 10211 10550 233 11023 21645 21643 21641 29187 29713 29714 12494 7002 9511 6924 10313 27218 22583 7363 28099 18114 23370 12495 9562 10483 1326 11142 27130 27128 19812 28881 28906 29715 12496 8399 9663 8398 10445 14360 18804 29716 14362 29717 14361 12497 9840 10306 9336 10925 11533 29718 20077 24000 27070 25087 12498 10391 10412 7563 10690 25570 29719 25245 24740 25247 28467 12499 558 472 9707 10489 3789 29720 14009 25258 25259 29721 12500 8766 9506 8934 10847 28027 18831 28026 29722 29723 29724 12501 612 10764 9948 11078 24527 29725 29726 24528 29348 21595 12502 1148 9614 1149 10530 21590 29727 2333 23114 29728 23115 12503 8090 10649 8091 10766 29698 29729 29730 29699 29225 29700 12504 9596 9214 10146 10997 29731 22311 29732 29733 27932 22961 12505 9491 9785 9331 10996 25828 16834 28181 28180 12688 16515 12506 8944 9763 10291 11060 25744 25413 25631 29734 25417 25416 12507 9282 10104 9597 10650 15084 29735 29736 17515 29737 27107 12508 444 10178 9890 11165 29738 29739 24695 24153 24696 25671 12509 475 406 422 9908 3469 3467 3470 13543 14001 25221 12510 1476 1488 1194 9909 5527 4033 2752 28946 29103 27064 12511 8787 8941 7854 10516 23495 28521 29740 23496 25968 23497 12512 9510 10864 9573 11050 26785 17683 26017 26020 26022 29741 12513 9831 10033 9256 11112 11958 24834 28219 22836 25760 20739 12514 6354 10169 6358 10378 18894 26040 6727 28156 26042 26044 12515 945 10562 10279 10981 27116 29742 29743 27117 14069 27118 12516 7798 7570 9180 10690 29706 28212 29744 29707 28215 26736 12517 1597 1177 1179 10717 6187 6186 6188 29745 21515 21516 12518 828 10473 10062 10923 24996 29746 29747 24997 17130 24424 12519 1282 10755 1088 11079 28363 19077 4712 29748 21204 21206 12520 9016 8655 9854 10668 29749 20047 16663 16661 16662 20050 12521 8520 10232 9853 10504 26392 14705 29750 26395 19777 26396 12522 9909 10221 9463 11020 23504 13708 21067 29751 13712 13711 12523 9996 10631 1522 11143 25946 28872 28871 22138 29752 29753 12524 6308 7800 6379 11077 27373 28260 6537 27374 28263 27375 12525 9615 10199 9499 10751 15994 15169 21413 20695 21414 20696 12526 8839 8342 10532 10566 29754 29414 18943 22848 22850 26979 12527 8819 9697 9143 10776 23027 23975 25656 29755 16490 16702 12528 1223 1536 1575 10417 2240 5643 6224 25403 25404 18777 12529 9230 9489 9781 10534 16611 22746 27277 13364 26256 16612 12530 7836 7835 7834 10464 26165 28672 29756 13384 20142 25361 12531 9575 9934 9661 10223 15203 29345 27647 12252 27649 12174 12532 923 919 921 10060 5878 5876 5879 27236 27421 29757 12533 9445 10381 9545 10678 12300 24562 27898 13035 24563 13036 12534 9386 10151 9600 10820 22032 29758 19043 15975 29759 18328 12535 9774 9891 9308 10593 12850 14566 13312 26792 24664 26274 12536 1572 6334 173 10278 29760 29761 1919 29762 29763 29764 12537 7981 8477 7983 10622 14822 29765 27213 11962 27215 15529 12538 9609 10055 9212 11193 18030 26684 26682 13718 29766 20610 12539 7548 9549 7596 10423 28042 16654 29617 28043 25844 21117 12540 9673 9852 9420 10319 29112 17138 20697 29082 14624 17757 12541 9688 10075 8895 10757 20927 22313 21434 29767 28610 28609 12542 9707 10314 10019 10734 12472 29768 26456 29769 24995 29770 12543 10141 10309 9281 10683 23193 17283 27253 23195 17285 15859 12544 480 10194 10042 11083 29771 29772 29773 22132 29774 25532 12545 914 9997 1553 10343 15397 20889 5858 16419 19522 16768 12546 9763 10291 9313 10699 25413 26183 26182 25745 21398 22811 12547 9412 10049 9982 11075 19745 20618 20617 23560 28904 21134 12548 6952 9620 6954 9819 27681 27936 7443 27683 29087 27682 12549 1266 1496 10322 10731 4034 29775 15992 20784 20399 29776 12550 707 1485 1493 10949 4974 4976 4973 29055 23769 21022 12551 7632 10226 10268 10418 29777 26201 29778 29779 20054 27303 12552 579 10000 705 10625 22706 29780 4327 27783 26264 27782 12553 7586 9483 10746 10998 28975 28979 28978 25460 29781 29782 12554 1516 10631 9552 10810 29783 29784 21233 29785 29786 29787 12555 9239 9781 9902 10534 16032 20623 13871 12944 13870 26256 12556 740 670 745 10667 4788 4790 4789 15984 18971 14650 12557 7591 9548 9734 10800 17210 15911 17212 23460 29788 16153 12558 7776 9580 8676 10823 19545 26268 29234 24545 24993 24546 12559 8845 9802 9168 10286 14046 22587 29685 17804 25001 17805 12560 9649 9270 9820 10664 16135 22104 29138 29789 24498 29790 12561 404 405 403 11125 3453 3452 3394 28828 29791 28829 12562 657 841 10367 10951 4723 29197 13971 28012 28014 29198 12563 356 10603 547 11067 26892 28356 3218 27248 28358 19908 12564 333 9783 334 10553 20196 20715 3085 20197 13073 13477 12565 9395 9978 10303 11153 16469 18130 15611 20583 23153 18776 12566 771 693 10077 10129 4898 21880 24711 13813 21881 21882 12567 8850 7997 9646 10355 17264 15953 17265 29792 22018 22697 12568 1011 10593 9993 10953 29793 29794 21464 21638 21640 29795 12569 8007 10176 8023 10360 21865 14641 29796 21866 14645 14644 12570 920 921 10060 11174 5877 27421 12902 16505 16507 27422 12571 9551 10247 9739 11080 14684 20631 20629 14686 29797 14687 12572 7632 7593 10226 10418 29798 24566 29777 29779 27303 23246 12573 8631 9607 7816 11137 26992 29799 29800 26993 29801 26994 12574 676 677 10233 10898 4808 22635 21693 21695 21697 21450 12575 9657 9321 10000 10757 19225 29802 29803 23890 29804 29805 12576 9098 10128 6893 10648 29806 20773 29807 29808 21199 19233 12577 10110 10334 9631 10895 12879 22322 14013 19621 28301 27525 12578 1268 284 283 9950 2852 2843 2853 24211 23985 16203 12579 9647 9726 9353 10301 16900 22586 21978 26495 28128 29468 12580 8279 8278 10239 11032 29809 29810 25377 11602 29811 29812 12581 9650 9720 9304 10088 14898 28974 29813 26514 13160 25393 12582 8172 10228 7953 11016 17748 29690 29814 18105 29692 18106 12583 8008 8009 10360 11003 29815 25624 22051 22053 22055 25623 12584 6310 6358 6373 10345 6791 6792 6609 26026 24080 26041 12585 8026 8795 8054 10650 29816 26727 20344 20347 17187 26728 12586 8425 9896 10556 10906 18127 19985 28557 18128 29421 12347 12587 9602 9493 9976 10165 16412 17403 19080 29817 29686 29553 12588 404 403 10737 11125 3394 29818 18303 28828 28830 29791 12589 489 492 1277 10057 3874 3886 3885 16186 11492 27579 12590 8672 9024 8407 10056 21768 23830 29819 21769 23831 14816 12591 7917 9099 8966 10058 23729 28526 29820 23728 28527 15850 12592 610 671 1256 10399 4489 4491 4480 26936 28819 29821 12593 10102 10383 9373 10558 14418 13278 14416 27931 14353 21280 12594 1172 10242 1171 10525 26711 27699 2190 26712 27698 19174 12595 9194 10372 8784 10914 14287 23296 29822 14442 23298 14443 12596 10428 10856 8861 11126 29823 26196 29824 29825 28242 28241 12597 780 616 615 10061 4512 4505 4513 19008 23858 27416 12598 9657 10000 9689 10757 29803 26825 28136 23890 28138 29804 12599 8468 8312 8531 9924 26386 29826 19657 17531 19659 26385 12600 433 9613 428 10478 22575 26971 3578 29050 19194 25659 12601 10217 10518 909 10653 15046 22480 29827 29001 22771 29591 12602 9929 10023 9339 10934 26912 25971 19064 29095 29828 29096 12603 9244 10672 10442 10750 25370 23151 29829 26770 23803 22768 12604 6938 9525 6989 10253 23117 24465 7326 17560 24779 22577 12605 8593 9880 10805 10903 29830 18538 20159 20161 16356 13755 12606 9336 10005 10966 11121 16268 15162 16270 29831 27559 22680 12607 890 9666 9834 11138 15103 16069 12338 29832 29833 29834 12608 8947 10615 8950 10779 29835 19722 29836 29837 16232 19724 12609 9391 9494 9970 11136 19518 19517 18786 13589 18741 27081 12610 9353 10301 9726 10992 28128 29468 22586 23823 23822 27156 12611 1356 367 9844 9942 3272 23376 26669 29076 15429 28419 12612 6368 9592 10297 10459 29838 29303 29839 29840 26780 23049 12613 9160 9170 8619 10212 29841 29842 29843 29640 24952 29844 12614 1075 305 1164 9930 2955 2964 2966 23334 12016 12978 12615 9282 10008 9485 10650 12304 19329 26692 17515 19330 19201 12616 682 10148 9722 11037 24852 14272 24853 29845 27370 27367 12617 682 9721 10148 11037 24851 14891 24852 29845 27367 27366 12618 9509 9258 9846 10467 29846 29847 21762 21086 23745 25421 12619 10041 10633 9390 10968 29848 13822 13602 18533 24839 24841 12620 9408 9966 9482 10214 18249 21238 26175 29849 20986 21240 12621 9308 10220 9922 10815 27797 23076 24216 13314 21855 23078 12622 9821 10021 9449 10463 28223 29850 14143 26285 20020 29133 12623 1434 1300 900 10450 3261 5808 5807 28010 27651 16622 12624 8242 8475 8296 10353 29568 29851 19148 29021 14590 29569 12625 9642 10666 9219 11138 25450 17978 25448 29852 28176 25564 12626 1523 1036 986 11052 5923 5098 5993 20956 20955 27010 12627 8407 7959 10056 10757 29853 23354 23831 29854 28289 28288 12628 9393 10344 9618 10414 12331 19261 19260 28958 29855 27626 12629 8889 9625 9085 10786 13738 29856 29857 12495 29858 13739 12630 8611 8648 10341 10885 29859 17615 29860 29861 17617 17616 12631 8850 9646 8707 10549 17265 16542 17270 29862 26786 26787 12632 9493 9905 9784 10683 21187 29085 28203 16414 29086 20923 12633 9734 10447 7590 10800 29863 29864 29865 29788 29866 29867 12634 10238 10363 9411 10634 22535 22398 28821 24515 13810 20473 12635 1458 695 1481 9845 4913 4914 4916 25627 22338 18821 12636 10109 10263 9565 10626 29868 25054 28834 28835 19865 25055 12637 8808 9576 8880 10783 25233 25884 28416 26104 29869 26105 12638 736 9577 1114 10784 28418 25172 5116 29870 26375 26376 12639 8992 10480 9738 10845 29871 29872 25893 29873 27400 29874 12640 8255 9934 8742 10223 12170 27414 26344 12173 23174 12174 12641 363 9918 1188 10681 12889 29875 2746 14899 29876 14900 12642 9602 10022 9209 11081 19815 15696 19816 29659 13050 15698 12643 9262 9634 9530 10266 20037 29877 29878 15770 29694 28715 12644 684 868 711 10482 4858 4857 4738 24492 29879 24129 12645 9696 10103 9324 10155 28591 14726 11215 25787 15016 15015 12646 8235 8302 8656 10536 18510 29880 29881 18349 29882 15877 12647 9498 10019 9707 10314 15340 26456 21401 12671 12472 29768 12648 8682 10087 8986 10745 16369 29883 29884 22623 29885 22624 12649 860 1487 9887 10254 5549 28308 29886 23473 28307 25025 12650 860 9888 832 10254 29887 21517 5548 23473 23125 20906 12651 8216 8256 9575 10684 28346 12247 28347 29888 12640 12639 12652 9660 9675 7722 11166 20748 24220 24218 21819 29889 29890 12653 8963 10114 9011 10124 29057 17511 29891 29058 14269 17510 12654 8624 10356 9505 10732 29892 11580 19066 29893 24145 18985 12655 9217 10618 9927 10873 28808 18098 24612 20063 21945 29175 12656 9357 9484 10469 11075 26666 25230 22408 28903 23029 21135 12657 1199 10126 6901 10658 26781 28803 29236 29894 26296 16957 12658 9762 10727 220 10924 25058 27004 29895 22101 27005 23876 12659 435 1131 1275 10045 3613 3615 3614 13731 16119 29532 12660 837 646 825 10047 4667 4662 4668 24041 24043 29609 12661 8277 8279 8335 10046 28856 16121 29896 28857 16122 11601 12662 8308 8307 8230 10048 29897 23877 24044 24046 20163 18373 12663 9405 9831 9587 10947 20939 28216 28217 28432 29898 19032 12664 9675 9660 10504 11166 20748 18091 27919 29890 21820 21819 12665 9367 10600 9682 10781 13387 19716 29899 23693 20551 20186 12666 9160 10031 9170 10212 29900 29901 29841 29640 29844 29902 12667 6911 10139 150 10687 15909 13806 15908 19087 29903 17298 12668 8479 10624 8478 10973 29904 15907 29905 29906 16671 15828 12669 210 10276 1425 11185 23898 29907 2491 23520 29908 24307 12670 847 939 9961 10579 5609 18450 29909 29910 18451 16417 12671 1354 9679 787 10326 27112 18623 4895 29911 18622 15751 12672 9127 9502 10311 10793 23417 24134 24133 27335 25724 21893 12673 9565 10263 9285 10681 25054 12132 19835 19834 14901 26404 12674 343 10049 520 10240 25638 21132 3152 29912 20481 21794 12675 1130 10045 1131 11094 20902 29532 6153 23525 29533 13736 12676 1371 10871 10463 10922 29913 29914 29915 29916 20021 29917 12677 9763 9844 9328 9942 25414 27207 13981 11934 12820 15429 12678 8864 8139 10089 10749 29918 29919 18311 27038 19397 29920 12679 579 578 705 10000 3228 4328 4327 22706 29780 27243 12680 9535 10181 10093 11194 19145 29451 29921 18673 29453 29452 12681 7851 10214 7848 10927 29375 11413 29922 29376 11416 11418 12682 9627 10180 9830 10537 25932 16815 24854 29923 19341 23156 12683 9427 10526 10895 10951 29924 29007 26857 29925 28303 29010 12684 9612 9737 9325 10432 29926 21097 29927 29928 21100 21102 12685 9645 9330 9811 10814 15366 28593 28592 26141 29929 27298 12686 10023 10471 8750 10883 11331 29930 19656 29931 29932 24282 12687 1224 6309 6369 10319 29933 6594 27320 27324 27323 29934 12688 765 10463 1371 10871 29935 29915 5236 29936 29913 29914 12689 9718 10221 9474 10625 14000 25539 20085 22955 15396 18054 12690 9652 9732 9311 10079 25821 29937 24983 28038 29938 19570 12691 9443 9556 10246 10933 21308 28846 18558 15248 23281 20287 12692 1314 748 1050 10547 4811 5169 5168 17673 27989 20869 12693 1077 258 1283 10125 2711 2729 2731 22612 11275 16872 12694 1184 10505 808 10715 29939 22149 5442 28656 18397 22148 12695 707 10103 9579 10949 13879 17394 29054 29055 21023 28994 12696 9416 9508 10169 11076 23782 17340 15904 18294 18293 27159 12697 10040 10756 8107 10944 26012 29940 29941 15012 29942 29943 12698 9260 10068 9681 10978 19510 21602 16008 18220 24599 20509 12699 9001 8010 8008 10597 29944 27821 27240 22912 22222 27822 12700 9537 10567 8589 11132 29945 29946 15269 21598 21597 27711 12701 8059 8060 8057 9513 29947 29948 29949 29950 29951 29952 12702 8592 9555 10398 10511 27388 29953 27605 27608 27609 23424 12703 9600 8559 10740 10970 28999 29954 19046 29090 29955 29956 12704 9639 9284 10061 10875 28298 22524 28297 29957 19012 22526 12705 9322 9945 9490 10273 29958 19003 29959 18869 19002 13071 12706 9270 9649 9820 10377 16135 29138 22104 16134 22100 15956 12707 1000 9727 734 11118 15221 15222 5104 17330 29960 17331 12708 9077 10166 8202 10789 14959 13788 12737 19527 29961 19528 12709 10219 10488 8029 10817 29962 22227 29963 18269 24787 29607 12710 1224 173 6381 10319 1923 29964 29965 27324 29966 29967 12711 9257 10181 9535 11194 19146 19145 16928 18674 18673 29452 12712 9386 9827 9714 10591 21724 29153 15973 21723 29968 18389 12713 9584 9803 9452 10887 26864 25474 21354 23461 27201 26152 12714 9243 9564 10080 10635 23981 24858 13232 17277 15339 22374 12715 9964 10680 10609 10712 26332 23006 21634 29969 29970 29971 12716 8198 8254 8265 10611 28811 29972 29973 28812 24503 28497 12717 8406 10516 10012 10963 27355 27354 27353 29974 23326 28737 12718 467 1050 9538 10523 3773 29975 18346 22726 22727 27988 12719 9210 9520 9901 11036 26803 17475 29976 26804 27395 26524 12720 9132 9198 9924 10224 29977 29978 18027 19697 14985 26597 12721 849 663 1121 10580 4698 4753 4752 29543 27844 29979 12722 165 6941 10155 10695 14070 14074 14072 29980 19014 20912 12723 343 10049 10240 11089 25638 21794 29912 25639 12561 25640 12724 8026 10306 9597 10650 20346 28115 28112 20347 29737 20348 12725 222 223 10727 11106 2543 29981 25057 25060 25062 29982 12726 6335 10278 9697 10776 29983 27715 29984 29985 16702 29986 12727 7808 10396 7626 10477 29987 29988 29989 29990 29991 26112 12728 9638 9644 9238 10893 17347 29512 19995 15804 18800 19210 12729 8613 9782 8017 10491 29183 29992 29993 24173 29994 29184 12730 9438 10116 10234 10816 19710 28399 16627 21541 25380 14602 12731 9387 9977 9691 11124 27048 21709 29995 26459 21713 21712 12732 9305 9791 9630 10811 21870 29996 29997 17205 21523 21871 12733 10149 10729 9376 10954 15916 25853 29998 21374 25854 20975 12734 1280 10463 10021 10907 25214 29133 29999 24108 28550 25215 12735 9630 9791 9343 10098 29996 14967 15777 13759 13401 30000 12736 9860 10409 9473 10788 30001 19424 25855 26309 15795 20870 12737 9166 9138 8454 10663 30002 14155 30003 18357 16742 15895 12738 1365 330 343 9916 3089 3087 3090 25710 25636 27241 12739 10237 10605 8653 10988 30004 18751 30005 25612 18414 18753 12740 8149 9037 8174 10328 22230 28315 30006 22232 28316 21678 12741 8955 9634 8411 10630 27793 27603 30007 30008 26292 27604 12742 1496 1001 1000 10731 6005 5108 6006 29776 25761 20398 12743 8013 9584 10929 11172 29107 23032 30009 29108 30010 29109 12744 996 998 997 9539 6000 5999 3041 30011 26384 23709 12745 1524 714 1595 10691 4676 5009 5011 16999 30012 17000 12746 7973 10003 10069 10991 30013 14277 26359 26361 17390 23448 12747 7535 9603 7622 10435 26179 15917 29283 29633 23927 13549 12748 9698 10526 9495 10895 20668 29008 11474 30014 20499 29007 12749 7781 9555 8592 10511 20258 27388 27584 23423 27608 23424 12750 9475 10373 7673 10537 20131 26632 26402 19339 30015 20837 12751 9797 10157 9298 10667 23697 30016 26861 28650 14651 22129 12752 9344 9689 9905 10652 26824 26823 23711 30017 27817 19448 12753 1333 10697 1381 10911 26095 30018 3950 15971 30019 26096 12754 9466 9848 9663 10240 14411 30020 15931 12557 21043 14412 12755 9629 10235 9778 11065 28693 30021 28535 30022 26791 30023 12756 8457 11152 10598 11175 30024 29298 30025 30026 29300 29301 12757 9293 10697 9757 10911 30027 14884 20729 13517 15972 26096 12758 261 1188 363 9918 2726 2746 2745 12887 12889 29875 12759 1244 10123 1012 10200 30028 14426 2972 30029 12990 14428 12760 636 635 637 11087 4060 4613 4612 18006 22211 23409 12761 8634 9825 10787 11043 30030 30031 23248 23249 20765 29065 12762 9496 9975 9202 10224 24116 25780 23426 22426 23832 25735 12763 922 1552 1550 10719 5891 5893 5887 30032 28577 28576 12764 284 9950 9499 10685 16203 15431 16201 25248 18609 19062 12765 997 9539 10236 10879 26384 15651 20469 20471 20355 16436 12766 9381 10151 9993 10953 30033 21467 30034 28291 21640 21639 12767 8827 6296 7774 9673 30035 30036 30037 30038 30039 30040 12768 9619 10247 661 10931 24049 23590 24050 26173 30041 30042 12769 9232 10485 9979 10490 11846 16565 15165 11826 27628 27629 12770 9445 10434 9963 10597 12036 14234 14233 15498 21631 28796 12771 9563 10596 10190 11015 26484 26483 25783 23394 25520 29379 12772 9223 10012 9679 10792 16652 30043 20588 27814 14227 30044 12773 9679 10012 9323 10792 30043 23324 11803 14227 14226 30044 12774 6955 9620 6952 10511 28376 27681 7420 30045 27684 27686 12775 9531 10202 10007 10441 18769 26913 27468 13962 27467 19752 12776 9599 10239 9325 10383 23063 28711 30046 17544 21276 23066 12777 9465 10621 9547 10850 12524 28769 30047 23146 16326 23147 12778 9792 9976 9418 10113 30048 18854 24468 29354 18853 15711 12779 9735 10009 8046 10284 15670 27547 27545 30049 30050 19725 12780 10007 10202 9458 10441 26913 19750 15192 27467 15709 19752 12781 1556 1121 10065 10384 6141 27846 26869 25834 26924 29529 12782 9251 10136 9521 10231 18028 14778 19863 20128 19304 30051 12783 9521 10136 9337 10231 14778 26351 25434 19304 12279 30051 12784 784 786 1318 9674 4869 5338 5337 17762 30052 29496 12785 7615 7578 7546 9552 30053 26438 19661 19665 19664 26198 12786 488 10057 9925 10762 28354 17593 28353 30054 17435 19162 12787 9582 7993 10965 11018 28514 30055 30056 29438 30057 30058 12788 8856 9729 10149 11033 30059 28311 30060 30061 24251 28312 12789 1251 10410 9594 11165 30062 30063 28866 30064 25672 30065 12790 8305 8311 8248 9680 28560 30066 30067 28561 13637 28154 12791 960 10508 9911 11158 16178 18082 16758 30068 28033 24526 12792 222 9762 10388 11106 25059 12256 30069 25060 30070 25061 12793 9085 9625 9079 10786 29856 13943 30071 29858 12596 13739 12794 8026 9597 8022 10650 28112 17072 28991 20347 30072 29737 12795 9629 9704 10235 11065 30073 16112 28693 30022 30023 30074 12796 9216 10040 9985 10496 19349 19531 20023 29509 13466 15266 12797 6893 10128 9098 10694 20773 29806 29807 20774 30075 18244 12798 9206 9522 10709 10883 25022 29669 20338 25024 29671 23405 12799 9633 9804 9346 10289 21984 13752 21985 30076 30077 30078 12800 9485 9312 10104 10817 27032 27413 21825 24786 30079 21057 12801 1418 807 10017 10614 5440 21901 29696 29203 19754 25509 12802 432 9805 513 10287 22296 30080 3598 25199 30081 25198 12803 9309 9649 9820 10664 28404 29138 21118 27239 24498 29789 12804 10151 10250 9600 10820 30082 21211 29758 18328 29759 30083 12805 9821 9943 9449 10871 17181 19465 14143 22319 30084 22320 12806 9457 9797 9523 10422 11547 28649 19322 11550 19321 11551 12807 9423 10071 10041 10668 14250 30085 18341 17077 18340 22998 12808 9427 10110 9631 10895 26856 14013 30086 26857 28301 19621 12809 176 9558 1552 11068 19644 25574 2317 25122 30087 25123 12810 1486 9954 644 10795 14408 28768 4071 18496 30088 19451 12811 9325 10558 9888 10939 21278 22493 21099 26246 24085 22673 12812 8878 7618 7797 10402 27921 30089 30090 27922 30091 20215 12813 8917 8160 10078 10099 30092 23054 21542 13275 21544 14874 12814 9361 9528 9956 10576 22881 29273 12452 21958 30093 18732 12815 9354 9955 9529 10575 12399 29274 13678 29542 15568 30094 12816 9349 9765 10254 10711 15081 29612 29462 12265 30095 17286 12817 9349 10254 9770 10711 29462 29613 21127 12265 15249 30095 12818 458 10407 9725 10426 29463 22860 30096 29464 30097 28122 12819 9352 9735 9610 10431 22451 30098 30099 22452 30100 22453 12820 9825 9939 9444 11043 20273 20272 20274 29065 25548 29066 12821 8102 8104 8105 10043 23422 30101 25164 11424 25166 23421 12822 901 10150 9509 10799 30102 25159 30103 30104 25160 25142 12823 9261 9736 9700 10371 30105 30106 11244 13131 15595 18469 12824 7590 10447 7585 10800 29864 27181 30107 29866 30108 29867 12825 9827 9377 10341 10826 28109 30109 18652 30110 30111 13523 12826 9716 9296 10597 11003 27690 28795 15379 22054 22223 22540 12827 1162 9920 1332 10613 25607 30112 6125 30113 30114 30115 12828 7680 7742 9933 10324 30116 30117 27860 27858 27859 26676 12829 8364 9510 8349 10856 17034 28671 28670 30118 30119 26784 12830 290 9950 631 10612 16202 25575 2859 13723 25576 15432 12831 1417 1006 9615 10751 2866 16096 30120 30121 20695 21291 12832 569 1377 1456 10777 3786 4285 4284 11467 30122 11468 12833 429 10178 436 10967 26004 22887 3583 17816 25835 25837 12834 9202 9975 9496 10201 25780 24116 23426 15978 14415 22266 12835 9310 10549 9920 10847 29006 26408 14472 17651 30123 26788 12836 8617 10621 8961 11069 25431 28105 28103 26353 30124 26354 12837 9327 10420 10221 10731 26326 30125 23786 26327 25540 22562 12838 9319 9736 9700 10385 19588 30106 30126 30127 20929 30128 12839 8709 8975 9923 10480 30129 26903 30130 30131 27255 27256 12840 7930 7935 7934 10620 24320 30132 24780 22332 24782 25269 12841 9273 9801 10166 10789 11768 14902 13291 27820 19528 15780 12842 8927 8684 9699 10698 30133 30134 23429 24224 24223 30135 12843 9347 9649 10083 10664 16067 28406 12985 30136 18184 29789 12844 6933 6988 1497 10658 7266 28721 29500 29501 28723 28722 12845 9527 10656 8721 10868 30137 30138 27505 27507 27506 30139 12846 8735 9733 8950 10615 27410 11286 30140 30141 19722 19723 12847 9286 9613 9534 10758 23730 25702 27850 13084 18944 30142 12848 9639 10061 10791 10875 28297 30143 24661 29957 30144 19012 12849 9396 10027 10026 10718 29166 30145 21360 30146 30147 20719 12850 8397 9663 8121 10397 27979 17028 30148 13935 17161 17163 12851 9384 10648 10128 10892 17944 19233 28435 16312 24428 18058 12852 9427 10895 9631 10951 26857 28301 30086 29925 28013 28303 12853 8849 9994 7908 11116 27906 21286 28541 30149 26517 26516 12854 8737 10575 7961 10993 15569 26808 26806 12281 30150 15570 12855 9719 9823 9596 10146 11222 27042 30151 17566 29732 23016 12856 9720 9824 9598 10147 19427 23871 30152 23018 30153 15409 12857 8235 8300 8302 9959 23075 30154 18510 18348 15335 15019 12858 1575 9672 853 10408 25389 25387 5021 30155 18476 23899 12859 1451 901 9509 10799 5811 30103 27529 30156 25160 30104 12860 9614 10530 9415 10691 23115 18070 26714 20102 14180 18072 12861 8172 8433 10228 10918 30157 26474 17748 17751 17753 26476 12862 1380 10647 756 11138 30158 28533 4544 30159 25563 28534 12863 9404 10483 9562 11142 27392 27130 26696 28882 28881 29715 12864 9293 9644 9638 10911 17746 17347 21358 13517 15435 15970 12865 1341 9942 10369 11123 15427 17013 12116 30160 30161 30162 12866 9250 9808 9637 11057 18415 24746 12958 20775 30163 20776 12867 9257 9810 9643 11058 18187 25479 23300 19982 30164 20778 12868 9356 9815 9651 11059 18017 12767 25482 17109 30165 20780 12869 9448 10312 10271 11152 17689 22541 25355 29299 22964 22966 12870 9292 9780 10259 10626 27223 26062 30166 19864 26065 26064 12871 965 9723 10151 10250 30167 30168 30169 30170 30082 17968 12872 380 381 382 10569 3314 3338 3337 16205 21874 29469 12873 7752 9119 8769 9734 25300 30171 23929 14561 23931 25299 12874 9048 9066 8911 10708 30172 17266 30173 27022 28636 19805 12875 9389 9835 9619 10795 11956 20568 29247 29364 20205 20569 12876 8294 8898 10660 10780 30174 25678 30175 30176 30177 17143 12877 1475 1466 9999 10339 5246 24903 11464 12028 16584 24902 12878 9634 10468 10013 10630 15563 24649 30178 27604 29282 16265 12879 8971 10050 8042 10627 23491 14420 30179 23493 30180 14218 12880 9630 9623 10331 10860 28469 14755 28470 30181 25089 19292 12881 7742 7732 9933 10324 30182 29269 30117 26676 27859 29268 12882 9906 10704 9277 10997 25588 22687 14039 13672 14040 25589 12883 9066 8927 9036 9921 30183 23430 21171 13457 20457 23431 12884 9347 9684 9795 10163 17964 27185 11933 12825 15567 17971 12885 9506 9920 10549 10847 26406 26408 15719 29724 26788 30123 12886 9626 10230 9388 10408 20781 14576 24189 20753 20369 27305 12887 9914 10521 9428 11052 25731 21731 29675 24699 21658 20957 12888 311 1075 9899 10389 2956 23333 18793 18796 18399 24322 12889 7956 9898 9042 10387 19704 19119 30184 23732 19121 16161 12890 988 9900 1289 10388 27840 30185 5998 21462 30186 23976 12891 9671 9846 9258 10467 30187 29847 25444 23936 25421 23745 12892 9274 10042 9563 11015 25379 27079 27078 19381 23394 24106 12893 7664 7684 9914 10521 30188 30189 24981 25732 25731 30190 12894 9647 10233 9278 10898 20815 20687 22762 21696 22763 21697 12895 9483 10808 7588 10935 29340 29341 28976 30191 25110 30192 12896 9114 10258 9197 10598 14792 30193 29650 21274 29652 21275 12897 7792 8746 10303 10935 30194 30195 21966 21967 18513 30196 12898 521 10346 9484 10469 25308 25751 21913 30197 25230 25273 12899 9331 9972 9785 10054 14552 16513 16834 23035 23036 25941 12900 9229 10178 9863 10967 30198 26003 15353 22741 17817 25837 12901 901 1451 9509 11087 5811 27529 30103 30199 21088 28132 12902 9207 9677 9558 10361 23359 21625 30200 28984 30201 30202 12903 9247 10182 9874 10995 20766 25499 30203 20767 25501 18089 12904 1412 714 9714 10280 4576 20595 15308 15309 12971 27553 12905 786 1318 9674 10416 5338 30052 29496 26170 17761 30204 12906 7851 10171 8941 10214 29374 23528 30205 29375 20987 27694 12907 10313 10412 7807 10657 30206 30207 30208 28100 30209 30210 12908 10189 10272 9404 11017 22276 26192 26190 30211 30212 18519 12909 7820 10079 7818 10752 22619 30213 30214 27664 30215 19572 12910 7970 9724 8872 10204 13985 25846 30216 12539 29081 14460 12911 7691 9698 8544 10896 21725 30217 23103 20507 23104 21553 12912 9474 10221 10420 10731 25539 30125 30218 20400 22562 25540 12913 9346 10289 9804 11054 30077 30078 13752 22641 22643 30219 12914 9158 9160 8616 10212 29638 30220 30221 29639 16065 29640 12915 7600 7605 9967 10592 30222 26030 25618 17583 25620 28612 12916 9284 9575 10882 11048 28778 30223 23911 28299 30224 28780 12917 9593 9716 9445 10002 30225 15497 30226 19803 15496 15375 12918 1071 1519 1028 11019 2313 6050 6053 30227 18897 18896 12919 9439 10224 9924 10717 14984 14985 14209 15585 26536 23833 12920 9990 10426 9459 10497 24645 24644 12653 29178 30228 22011 12921 9714 9827 9421 10591 29153 18387 12967 29968 14941 18389 12922 9516 10076 9715 10510 30229 20632 23673 23674 20519 20634 12923 9305 9791 9751 10860 21870 13429 21869 27381 25858 25860 12924 306 299 10200 10369 2933 23669 25752 25755 22906 23670 12925 9359 10254 9682 11185 30230 25396 30231 30232 25399 25401 12926 8710 8709 8975 9923 30233 30129 26904 18123 26903 30130 12927 9034 9555 6957 10533 20259 22010 22009 28134 30234 28135 12928 8201 8195 8194 10468 25779 19274 30235 11984 19275 11849 12929 720 972 973 9830 5037 5040 5039 17698 25279 16813 12930 9291 10385 9752 11018 28238 19082 21192 21193 14790 29439 12931 9497 9369 9795 10508 26050 27061 28847 22212 27491 12068 12932 9239 9781 9683 10162 16032 26255 12945 16033 25727 15841 12933 445 9610 10431 11148 23765 30100 30236 30237 30238 27977 12934 9275 9918 10912 11182 14760 18180 25549 30239 24312 24776 12935 9244 9960 9567 10025 25275 30240 30241 21155 17571 30242 12936 6910 7766 9740 10694 25505 25507 25508 29402 30243 29403 12937 7940 7938 10652 10829 30244 30245 30246 30247 30248 30249 12938 8991 8979 8739 10451 30250 28800 30251 30252 26008 28801 12939 9809 9899 9283 11109 26240 12795 26225 17324 30253 30254 12940 1060 10636 9957 10794 30255 24808 30256 30257 21758 30258 12941 8697 8052 10349 10758 26305 26307 25492 18945 22648 30259 12942 10029 10580 9216 11021 23856 20024 26168 18393 26169 26926 12943 9705 9730 9316 10493 19505 16402 11577 19506 12942 17310 12944 8330 8337 8331 9792 30260 18709 12551 30261 13793 18711 12945 877 1455 10267 10541 5346 25040 26561 16054 19603 24894 12946 9366 9555 9833 10834 29398 25074 15238 19999 20093 28743 12947 9452 9923 10400 10538 22572 22571 21353 27199 26461 26460 12948 9441 10376 10290 10574 21190 30262 14746 21585 17246 28401 12949 651 661 9619 10466 4385 24050 30263 30264 24051 23589 12950 8393 9944 8394 10335 19020 30265 30266 19019 30267 19018 12951 1466 1083 9999 10980 6103 28603 24903 24904 22744 28604 12952 10447 10475 7585 10800 22758 27182 27181 29867 30108 29352 12953 1061 9545 1062 10995 24561 30268 6068 26166 30269 26167 12954 9239 9731 9605 10517 16761 30270 26948 30271 15556 22448 12955 996 9539 997 10879 30011 26384 3041 30272 20471 16436 12956 9329 10606 9920 10876 28920 16828 26407 20066 30273 29431 12957 9322 10273 9490 10646 18869 19002 29959 14032 23813 20597 12958 9985 10362 8486 11073 19538 27383 20296 19533 20298 30274 12959 9798 10545 9364 11116 12525 28350 29693 24906 30275 25994 12960 9293 9814 9638 11040 13516 15434 21358 14911 30276 21265 12961 705 10000 578 10625 29780 27243 4328 26264 28725 27782 12962 9367 9676 10600 10781 30277 19497 13387 23693 20186 21136 12963 7909 9962 8597 10191 26655 27645 30278 27402 27917 14096 12964 9656 9706 9234 11130 26960 16217 30279 26962 18213 25687 12965 801 906 1413 9915 5414 5416 5406 14248 27432 29480 12966 9449 9921 9699 10698 14142 20427 18811 14144 24223 12587 12967 9370 9497 9826 10619 15855 24409 24408 28826 30280 28825 12968 363 9565 1123 10790 23490 29556 3253 12931 30281 19836 12969 9500 9994 9526 10200 12680 20378 20379 28251 22904 28252 12970 965 10151 9723 10953 30169 30168 30167 30282 23485 21639 12971 9430 10294 10579 10920 27401 20281 17881 19467 19468 22963 12972 1279 1280 10021 10907 5248 29999 30283 30284 28550 24108 12973 9257 9643 10093 11058 23300 25478 29450 19982 30285 30164 12974 9250 9637 10092 11057 12958 24745 28331 20775 28333 30163 12975 9356 9651 10095 11059 25482 12768 22943 17109 30286 30165 12976 478 9563 477 10852 23395 30287 3817 30288 30289 30290 12977 7931 7923 7928 10527 28909 30291 30292 21082 30293 27436 12978 8249 8628 10052 10281 30294 30295 15146 12498 17736 30296 12979 288 295 289 10302 2878 2877 2855 20637 24332 18063 12980 10077 10779 9536 10780 30297 29293 29644 30298 29297 29296 12981 10119 10185 9529 11006 26959 12325 26958 30299 12326 12285 12982 9777 10959 9594 10967 28915 28867 24944 28917 25836 28476 12983 9764 10335 9029 11146 30300 30301 30302 30303 30304 30305 12984 9295 10240 9663 10397 19296 21043 21044 12906 17163 28901 12985 9427 9938 9550 10318 27139 29188 29189 26855 26439 23688 12986 9254 9669 9545 10474 26909 27176 30306 16977 27512 26875 12987 9796 10527 10269 11004 12503 27435 30307 18161 27058 27438 12988 9521 9213 9897 10918 16199 28653 19303 19693 18339 20036 12989 9353 9518 9900 10917 26983 22182 26667 21979 23977 21076 12990 9780 10069 9462 10259 15054 15459 16262 26062 18633 17386 12991 975 1510 1506 10011 2471 2168 5983 18076 23626 22579 12992 6928 6927 6908 10011 7355 7278 7356 25634 22578 23181 12993 10121 10186 9528 10993 26957 25808 26956 30308 25998 22552 12994 9416 10197 9510 10645 18761 16658 18919 18762 21475 18038 12995 8534 9125 10295 10332 30309 17519 27833 27832 19837 19838 12996 9206 10709 9662 10883 20338 20339 20337 25024 27040 29671 12997 9725 10407 458 10969 22860 29463 30096 14449 29653 14404 12998 1449 940 941 10015 5938 5934 5939 23171 18261 15519 12999 9047 10457 8431 11113 14996 30310 30311 16445 30312 18151 13000 9241 10182 9748 11031 30313 18085 16933 16932 16704 14078 13001 9230 9781 9683 10534 27277 26255 13362 13364 12434 26256 13002 8421 10016 9076 11028 17608 30314 30315 16986 30316 17609 13003 1528 10072 935 10366 17882 21839 2372 18667 21840 17225 13004 956 554 954 10229 4207 4209 4208 15188 24125 12464 13005 767 851 769 9971 5260 5259 5258 22926 23682 23178 13006 9203 10503 10311 10793 22040 25723 26454 21894 25724 23656 13007 9772 10453 10446 10595 18129 22609 22595 30317 30318 30319 13008 9362 10237 9538 11028 13781 30320 20823 12919 21111 14373 13009 6356 6382 6293 9507 6707 6706 6704 19139 21716 18520 13010 8729 10703 8028 10817 17164 21480 30321 18839 21482 18270 13011 1550 10719 10570 11174 28577 28578 28575 30322 30323 16989 13012 9273 10468 10013 11170 11985 24649 29281 27723 24650 23837 13013 8884 9640 9821 10889 29681 29680 24391 24393 22126 19677 13014 9815 9909 9327 10495 26151 20680 12802 14586 20683 20684 13015 8388 8390 8389 10702 23806 30324 16104 14319 16106 23808 13016 9032 10432 9612 11134 30325 29928 23724 30326 29023 30327 13017 9594 9777 9380 10959 24944 24943 24945 28867 15094 28915 13018 8283 10337 9599 10956 24976 17542 24519 27790 26237 26969 13019 9322 9486 9960 10854 18068 18069 14029 30328 30329 23700 13020 9275 10080 9564 10125 25356 24858 25357 30330 17998 30331 13021 9934 10638 9948 11136 30332 30333 29344 13590 30334 30335 13022 1091 9780 10741 10932 30336 30337 23859 23860 23642 30338 13023 9662 10023 8750 10883 18636 19656 19654 27040 29932 29931 13024 9380 10520 9829 10856 30339 20660 27263 26567 30340 30341 13025 552 449 746 9927 3683 3685 3684 27029 14793 21941 13026 8856 10149 9729 10954 30060 28311 30059 30342 23904 21374 13027 9505 10610 10112 10981 17563 30343 24826 24146 15370 29323 13028 524 635 636 10006 3149 4060 4059 18050 14556 23408 13029 1234 997 998 10236 2991 5999 6002 21316 23708 20469 13030 7882 10351 9881 10671 30344 25218 30345 30346 16012 20293 13031 9305 9623 9519 10661 26555 25325 26556 17203 30347 30348 13032 9810 10093 9643 11058 23844 25478 25479 20778 30164 30285 13033 9815 10095 9651 11059 12484 12768 12767 20780 30165 30286 13034 9808 10092 9637 11057 23056 24745 24746 20776 30163 28333 13035 10385 10965 7993 11018 30349 30055 30350 29439 30058 30057 13036 9573 10428 10001 11126 26498 15933 26335 27800 21668 29825 13037 9280 10059 9724 10204 26893 23088 13986 12540 14460 16299 13038 6954 9911 6980 10807 27937 30351 7444 27938 27122 16760 13039 215 10136 9732 10943 30352 30353 30354 30355 23599 21371 13040 8092 10137 9731 10944 30356 30357 30358 30359 26532 30360 13041 9609 10194 9212 11083 30361 30362 26682 29387 29386 25532 13042 8322 9772 8259 10453 22592 16885 30363 24094 12868 18129 13043 9754 10722 399 10945 14237 27662 30364 25660 27663 24889 13044 9634 10013 9530 10630 30178 26470 29877 27604 27415 29282 13045 10012 10516 9323 10963 27354 22863 23324 23326 23325 28737 13046 6951 6954 6980 10807 7442 7444 7218 25120 27122 27938 13047 9399 10477 10396 10643 19917 26112 30365 20527 27283 24598 13048 6958 9555 10174 10533 29618 29399 28760 28761 13775 28135 13049 801 799 10240 11089 5403 30366 12556 12559 12561 30367 13050 735 861 728 10275 5077 5076 5071 23023 14605 21070 13051 8368 10216 8822 10586 27967 30368 25468 24684 25470 16127 13052 7839 9585 10415 10617 26221 25373 26526 26222 30369 13889 13053 9490 9945 9322 10646 19003 29958 29959 23813 14032 30370 13054 9242 10129 9637 10660 26205 24747 30371 30372 14638 30373 13055 9637 10129 9230 10660 24747 13363 13648 14638 15985 30373 13056 7918 7924 10133 11115 30374 30375 16499 16502 16504 30376 13057 9272 9493 9946 10665 27815 24439 28665 24284 24440 21160 13058 1084 1085 1083 9999 5190 6108 6107 17631 28603 13959 13059 9341 10523 9538 10605 20591 22727 30377 21804 28342 30378 13060 9556 10111 9585 10501 16253 26546 25502 19454 30379 19455 13061 8091 10649 10162 10766 29729 18165 29223 29225 15842 29700 13062 9835 10299 9440 10522 24186 17951 21962 19462 13862 18302 13063 803 1416 908 10470 5425 5424 5423 20734 30380 17811 13064 1398 1064 1254 10434 6084 6085 3551 28771 22431 12035 13065 313 305 312 9930 2962 2957 2963 20825 11539 12978 13066 7857 9859 7838 10464 11495 19775 30381 11821 13045 11822 13067 9340 9939 9825 10832 20669 20273 16454 23272 14717 24373 13068 8747 9809 8220 10513 24356 30382 26126 24355 26125 24354 13069 6311 7788 8854 10524 30383 30384 30385 30386 30387 27074 13070 9576 10045 9611 10461 26564 13732 26562 30388 15704 19386 13071 9612 10046 9577 10462 11600 22565 26565 19388 27485 19389 13072 9492 9947 9213 11007 22983 20034 17930 20608 12438 30389 13073 9464 10593 10270 10885 28644 26275 14720 28645 27405 27407 13074 9666 10142 9220 10616 12660 13100 15102 30390 13066 30391 13075 9573 9690 9380 10856 28415 30392 17775 26566 26567 18755 13076 895 697 896 10739 4923 4925 4924 28700 21031 28718 13077 8855 9736 10135 10938 30393 30394 30395 30396 16832 24082 13078 9908 10176 9461 10360 29368 15886 29397 29369 16979 14644 13079 8954 8154 10163 10634 30397 30398 13766 20472 16376 30399 13080 9593 9212 10055 11151 20916 26684 29207 30400 30401 30402 13081 9841 10004 9211 10659 17902 16427 17327 14275 20062 30403 13082 10004 10582 9211 10659 23127 27039 16427 30403 20062 30404 13083 9417 10009 9610 10284 22585 25984 18395 12826 30405 19725 13084 9464 9825 9674 10298 14715 16455 15676 15485 30406 16679 13085 9341 10078 10523 10605 21803 30407 20591 21804 30378 18752 13086 9307 9803 10543 11173 27597 18316 30408 30409 23744 22025 13087 9412 10307 9982 10857 23559 25332 20617 28897 25333 25335 13088 8070 10088 10019 11128 30410 25394 30411 30412 30413 26625 13089 1515 1594 1180 9832 5903 6193 6191 15767 12655 11996 13090 1096 10245 1095 10354 15294 22716 5970 15293 30414 15292 13091 9401 10217 9848 10544 14505 14506 14502 22952 30415 30416 13092 9631 10525 9203 10548 23987 13727 22321 15265 14610 16785 13093 9368 9847 9537 10130 12179 26613 27933 13129 21741 13580 13094 1314 674 748 10233 4236 4809 4811 17672 20868 21879 13095 9507 10127 6382 10384 17639 18521 18520 21718 26873 26158 13096 997 9910 308 10879 20470 20698 2980 20471 30417 16437 13097 8454 10067 8318 10230 14156 13372 30418 16656 14575 16606 13098 9567 9960 9244 10672 30240 25275 30241 30419 25370 25369 13099 9485 10488 10219 10817 22228 29962 27033 24786 18269 29607 13100 9491 9336 9903 10491 19873 16269 19872 30420 30421 20078 13101 650 10410 9787 11139 30422 22982 26996 26998 26997 30423 13102 10020 10353 9035 10903 19937 30424 16353 16355 16354 30425 13103 7573 7553 7572 10631 30426 27477 27947 27949 25945 27479 13104 6323 10483 6324 10512 30427 29230 6745 30428 24018 27394 13105 9718 10221 9327 10420 14000 23786 20682 30429 26326 30125 13106 964 9538 10547 10676 30430 14633 18107 18108 12311 15058 13107 1181 10057 10243 10881 30431 19160 24144 27805 25573 12269 13108 9344 9492 10141 11140 22420 27252 30432 23712 28677 27454 13109 6919 7003 10373 10514 7413 26614 24449 27085 27084 26229 13110 9339 9662 9522 10023 25972 29670 30433 25971 23828 18636 13111 9399 10477 10286 10609 19917 19918 19684 22253 21012 21635 13112 9739 10247 9440 11080 20631 30434 13632 29797 23632 14687 13113 9482 9408 10214 10607 26175 29849 20986 24763 25989 15278 13114 8661 8232 7891 9939 25758 30435 28365 24371 28364 25759 13115 7540 7784 10268 10374 30436 30437 30438 30439 28493 30440 13116 7749 7666 10373 10514 28640 24349 26631 25129 27084 27083 13117 9482 9557 10505 10963 27879 20105 24762 21932 23327 24775 13118 1152 10202 753 10441 24490 18914 2796 24491 16041 19752 13119 9604 9728 9221 10198 30441 18684 30442 30443 30444 28799 13120 9482 9243 10171 10323 26844 27634 23527 26154 30445 12900 13121 1354 1340 9679 10326 5354 15750 27112 29911 15751 14488 13122 1149 1148 179 9614 2333 1818 2334 29727 21588 21590 13123 9842 9160 10212 10971 29637 29640 29641 28330 30446 30447 13124 504 10028 9644 10893 17778 23222 29559 17779 19210 13615 13125 9598 9720 9341 10988 30152 24182 30448 25610 21805 24183 13126 9596 9719 9243 9823 30151 11217 13674 27042 11220 11222 13127 9598 9720 9304 9824 30152 28974 21203 23871 17099 19427 13128 314 10804 327 11179 30449 26835 3007 30450 28024 21983 13129 9341 10019 9707 10078 24181 26456 30451 21803 24398 15342 13130 8690 9739 8574 10299 13631 26771 30452 17952 30453 17953 13131 919 923 1045 10060 5878 5880 5870 29757 28280 27236 13132 9487 9995 9387 10213 21416 13485 20840 26641 30454 23042 13133 9428 10295 10594 11008 17518 30455 24927 20217 24790 13797 13134 8398 9663 8397 10445 18804 27979 30456 29717 13936 14361 13135 10242 10581 9495 10793 28993 18297 25930 22992 25931 26721 13136 8251 8318 8317 10067 11912 30457 30458 13371 30459 13372 13137 310 10236 10804 11123 27187 27429 30460 27188 30461 22235 13138 9482 10171 9243 10214 23527 27634 26844 20986 13675 27694 13139 9307 10287 9803 11173 27596 22588 27597 30409 22025 22590 13140 9283 10513 9809 11133 28481 24354 26225 30462 24357 24359 13141 9283 9776 9717 11133 11782 29546 28479 30462 29630 29632 13142 8248 9680 8311 10311 13637 28154 30066 13639 25722 12026 13143 215 9732 10136 10765 30354 30353 30352 30463 30464 30465 13144 8092 9731 10137 10766 30358 30357 30356 30466 30467 14358 13145 9092 8492 9099 9958 23002 28551 30468 13826 15178 23003 13146 9376 9594 9729 10410 30469 28310 22075 22077 22079 30063 13147 9238 10043 9644 10094 11425 23223 29512 13229 17745 14422 13148 9674 10787 9444 10801 30470 25547 30471 20238 16945 30472 13149 9510 9829 10520 10856 20656 20660 20658 26784 30341 30340 13150 9452 10287 9805 10887 25473 25198 27200 27201 22298 25200 13151 9293 9638 10094 11040 21358 19851 14909 14911 12100 30276 13152 1506 6939 193 10011 30473 29217 2164 23626 25307 30474 13153 1596 1512 1285 10403 6243 6231 6244 15832 12603 13969 13154 9235 9655 9595 10082 17769 19475 19476 30475 30476 30477 13155 7909 7911 8597 9962 26653 30478 30278 26655 27645 26654 13156 9498 8907 10020 10639 22058 22057 22056 15305 25686 27825 13157 9198 8783 8781 10897 26599 30479 30480 26600 28624 26601 13158 9623 9630 9450 10220 28469 25840 18694 27798 25839 18660 13159 432 1106 10538 10887 3491 30481 22294 22297 22299 30482 13160 7796 7602 9975 10372 30483 30484 30485 30486 22268 30487 13161 8071 10019 9498 10805 15341 15340 15304 25536 12673 30488 13162 9369 9620 10130 10807 15755 29442 12066 14582 14581 27939 13163 8280 8278 9940 10239 30489 30490 27970 24633 24429 29810 13164 10271 9448 11152 11175 25355 29299 22964 24023 29301 27913 13165 9258 10467 9509 10707 25421 21086 29846 25420 27533 23136 13166 7541 7808 7626 10477 30491 29989 30492 30493 29991 29990 13167 251 249 10080 10635 2682 13233 30494 30495 15339 15338 13168 323 9671 324 10724 23937 26827 3033 23138 30496 23938 13169 9444 10291 9788 11043 30497 22649 25546 25548 20764 22651 13170 1546 986 10370 10521 2347 21655 26687 26689 22677 20953 13171 8068 8654 10605 11028 30498 20990 30499 30500 30501 30502 13172 7954 7952 9621 10529 30503 30504 29703 27870 29704 30505 13173 9349 9652 9816 10583 30506 21835 13925 29366 15236 21837 13174 9592 9672 9420 10216 25951 17687 29302 15848 16126 27003 13175 9591 10217 9442 10518 15045 29098 29510 14518 17105 15046 13176 8288 8167 8161 10754 25674 30507 30508 21545 29448 28741 13177 1163 9914 1523 10521 25729 26320 2235 25730 20954 25731 13178 1013 874 1002 10096 5716 5714 3527 21763 21764 30509 13179 9503 1267 10059 10715 24882 27659 23328 25764 23617 28045 13180 9506 9920 10847 11025 26406 30123 29724 30510 30511 14474 13181 9418 9602 9976 10165 20722 19080 18854 30512 29686 29817 13182 9849 10001 9469 10756 24414 24692 24689 23679 26245 21667 13183 521 10469 9484 11075 30197 25230 21913 21914 21135 23029 13184 8190 10299 9835 10522 25042 24186 28869 25044 19462 18302 13185 9441 10366 9779 10782 18666 29339 20861 22638 20829 19932 13186 8819 9139 9176 9697 30513 16839 23026 23027 11982 19425 13187 514 515 9606 11039 4002 28351 28932 30514 28734 28733 13188 7689 7686 7726 9542 30515 29490 29099 21201 19598 29489 13189 9620 9368 10130 10807 29443 13129 29442 27939 14581 15580 13190 8855 10135 9736 10783 30395 30394 30393 30516 30517 30518 13191 8373 8952 8372 10340 30519 22919 26841 26843 22917 22918 13192 9556 9585 9409 10501 25502 15300 25503 19454 14520 30379 13193 8117 8116 8168 10845 30520 13446 30521 30522 13021 13447 13194 8997 8391 9715 10259 30523 30524 30525 27557 30526 30527 13195 9303 9720 9650 10088 14897 14898 13337 26513 26514 25393 13196 9575 9661 10061 11079 27647 30528 28779 30529 29712 30530 13197 9393 10344 9554 10599 12331 27361 28957 12334 30531 12335 13198 1145 1018 591 9522 4396 4395 3981 30532 19492 18669 13199 8908 8288 8393 9944 26964 30533 26664 25343 19020 13576 13200 335 1067 334 9945 3108 3107 3102 20349 13070 23313 13201 8172 8203 8246 9947 29667 30534 27666 17750 27665 29666 13202 8744 9483 10303 10935 29145 29149 29148 30535 18513 30191 13203 1052 698 10106 10778 4608 28862 29506 29507 24378 28863 13204 9310 10847 9920 11025 17651 30123 14472 12652 14474 30511 13205 662 1462 913 10689 4391 4751 4750 27963 22785 26323 13206 8326 9046 8421 9941 28682 29116 30536 28683 15257 26128 13207 8409 9046 8988 9940 22519 28685 30537 13299 27632 22238 13208 9617 10277 9426 11085 17216 15741 28199 22900 27307 26069 13209 9151 9150 9843 10232 30538 26441 30539 30540 27668 27669 13210 9219 10513 9856 10874 28706 28707 28705 20069 25350 29574 13211 9620 9911 9369 9912 23759 16759 15755 14852 13938 23762 13212 9377 9892 9741 10416 16101 12227 27907 12930 29472 16143 13213 9492 9344 10141 10390 22420 30432 27252 18934 27254 24679 13214 9785 10425 9568 10994 22787 22788 17830 21936 21935 30541 13215 8589 10567 9537 10836 29946 29945 15269 18847 16568 14382 13216 8367 10001 8949 10081 13243 24365 30542 14176 24558 14177 13217 1255 918 1416 9551 5875 5837 4076 23097 12388 23896 13218 8254 10560 9935 11171 30543 17550 28498 28500 28499 30544 13219 10707 10724 319 11162 23140 30545 30546 30547 30548 30549 13220 9763 10269 7910 11014 11921 28457 28454 30550 30551 27493 13221 8809 9715 8952 10481 30552 23060 30553 30554 30555 29517 13222 801 800 802 9848 5404 5408 5407 14410 17250 23365 13223 782 1183 1185 10505 5327 5330 5329 20082 20084 22066 13224 9401 10338 9591 10546 16924 14515 28123 22951 24390 24913 13225 1568 10585 9664 10725 19525 28145 30556 20268 29430 21980 13226 9924 10224 9496 10717 14985 22426 22427 26536 22866 23833 13227 9665 9898 9248 10902 19822 23601 29551 19824 23602 19708 13228 7567 10443 7569 10555 30557 30558 30559 30560 27053 30561 13229 9721 9940 9276 10233 24431 20704 25426 22634 28011 20686 13230 8826 9171 9142 10459 30562 30563 24755 24757 17776 30564 13231 9414 9896 9714 10280 13853 30565 30566 30567 12971 30568 13232 10218 10544 8508 10940 15105 30569 30570 30571 30572 22156 13233 1395 9977 9691 11079 24142 21709 22309 30573 30574 21205 13234 9651 10673 9356 11041 25483 18019 25482 28925 17069 17432 13235 9552 9454 10374 10602 30575 20462 28492 30576 20463 13820 13236 8033 10379 9738 11172 30577 30578 25895 30579 30580 30581 13237 9254 10474 9584 10929 16977 19847 20129 16978 23032 15579 13238 9213 9897 9686 10753 28653 28652 11224 11435 11434 28437 13239 10016 10605 8654 11028 16052 20990 20988 17609 30502 30501 13240 8565 8508 10544 10940 30582 30569 22151 22154 22156 30572 13241 9484 9295 10049 10397 28900 28817 21131 24063 19749 12906 13242 1492 1266 1496 10322 2848 4034 6007 11523 29775 15992 13243 1356 1341 367 9942 3276 2986 3272 29076 28419 15427 13244 7578 7540 10268 10374 30583 30438 26199 28491 28493 30439 13245 9794 10586 9422 11198 16497 30584 30585 24244 30586 24245 13246 615 9691 10061 11079 23857 19009 23858 29710 29712 30574 13247 9684 9795 9369 10508 27185 27061 12067 11871 12068 27491 13248 8987 8411 10266 10630 30587 26293 24535 24536 23895 26292 13249 8225 8695 8779 10259 30588 27502 18594 17387 18593 27290 13250 896 994 898 9932 5794 5793 5792 15096 24998 24730 13251 9231 9908 9716 10360 13542 30589 14912 14643 14914 29369 13252 9648 10138 9301 10641 27945 13195 22359 14942 11238 30590 13253 9343 10138 9648 10641 13404 27945 14968 16480 14942 30590 13254 1201 6300 177 10261 30591 30592 1907 30593 25689 30594 13255 9682 10276 6897 10841 26371 26372 26369 19718 30595 30596 13256 7868 7866 8757 10701 30597 22695 30598 27903 27330 15197 13257 9611 9736 9236 10135 27183 18255 27184 28233 21799 30394 13258 1255 920 918 9551 5874 5873 5875 23097 23896 12732 13259 6913 10205 7786 11099 23505 30599 22243 22246 22247 15289 13260 9232 9968 10485 10490 12947 27950 11846 11826 27629 16605 13261 9624 9998 9811 10964 24575 29495 28443 28444 27125 30600 13262 317 10707 319 11162 30601 30546 3023 30602 30548 30547 13263 9028 8267 8458 10732 24804 21367 30603 24806 21370 16726 13264 322 10705 9504 10804 28428 25162 26834 26836 16547 30604 13265 1172 1525 1598 10242 6183 6178 6184 26711 25351 19173 13266 7954 9621 7953 10228 29703 29691 30605 27872 29690 22485 13267 1415 1400 1170 10713 4781 6180 5949 15818 17759 13565 13268 10511 10567 9368 11132 26553 29444 30606 27710 27934 27711 13269 674 9647 10489 11180 21878 25692 25691 30607 25260 18916 13270 7881 9881 7882 10351 15687 30345 30608 25219 30344 25218 13271 9782 9803 9307 10929 28445 27597 16782 30609 30610 30611 13272 513 432 1389 9805 3598 3600 3599 30080 24715 22296 13273 9607 9732 9337 10752 30612 17423 30613 28230 13930 17506 13274 9789 9633 10289 11120 30614 30076 27062 30615 30616 30617 13275 9593 9716 9231 10434 30225 14912 28071 23796 21013 30618 13276 9716 10002 9593 11151 15375 19803 30225 16587 30400 19421 13277 9078 8528 9073 10296 30619 23637 22898 15095 19714 23638 13278 9239 9902 9731 10517 13871 20622 16761 30271 22448 30620 13279 7852 7855 9564 10771 23371 23373 23372 30621 26250 12773 13280 1167 1581 935 10818 2205 5577 2369 30622 25643 25642 13281 9609 10042 9385 10194 21499 21051 13714 30361 30623 29772 13282 9239 10517 9605 10975 30271 15556 26948 12946 16780 30624 13283 9814 10094 9638 11040 30625 19851 15434 21265 30276 12100 13284 9242 10092 9637 10129 30626 24745 30371 26205 24747 23058 13285 6922 7775 6997 10648 28166 30627 7163 28170 30628 28168 13286 7625 10412 7562 10657 30629 25568 26817 26820 26821 30210 13287 1003 1456 1453 10777 5720 6011 6010 23826 28784 30122 13288 1207 1349 1206 9516 5298 6205 6201 28687 28688 30630 13289 8585 8679 8894 9518 28691 30631 30632 28690 30633 26570 13290 562 1438 355 9517 3216 3170 3214 30634 21350 22395 13291 7912 8678 7904 9519 30635 30636 30637 30638 30639 30640 13292 1490 1461 903 9521 5546 4970 5818 22096 14779 26945 13293 8437 8436 9087 9520 30641 30642 30643 19891 30644 30645 13294 9474 10221 9718 10420 25539 14000 20085 30218 30429 30125 13295 9900 10409 9860 10788 30646 30001 26314 30647 26309 20870 13296 10167 10179 9546 11113 30648 30649 30650 30651 16367 16447 13297 6335 6332 9697 10278 6835 30652 29984 29983 27715 27133 13298 9916 10049 9796 10705 25637 19746 17579 25163 30653 25382 13299 9277 10181 9535 10617 14038 19145 24728 18645 22081 16060 13300 9312 9485 10219 10817 27032 27033 21056 21057 18269 24786 13301 886 10063 9979 10326 28880 13997 28879 30654 29599 22438 13302 9459 9840 9711 10726 12459 17289 22389 12461 23402 11537 13303 9337 9732 9607 10136 17423 30612 30613 26351 28865 30353 13304 9224 9731 9605 10137 22445 30270 16267 30655 28305 30357 13305 9729 9829 9380 10520 30656 27263 30657 12095 30339 20660 13306 9381 10593 10037 10885 30658 28643 30659 17916 28646 27407 13307 9287 9732 9652 10079 18447 25821 21836 19571 28038 19570 13308 1438 10159 9517 10886 24478 20559 22395 30660 13304 30661 13309 9413 10568 9550 11008 12114 30662 24789 14844 24791 19091 13310 323 328 9671 10467 3053 30663 23937 23137 23936 19105 13311 8247 9947 8466 10209 30664 27228 30665 30666 27226 27227 13312 9585 10501 9535 10617 30379 26963 27612 13889 22081 30667 13313 8809 9715 10481 11149 30552 29517 30554 30668 30669 30670 13314 9436 10482 9978 10866 21572 28992 18299 17535 18301 23874 13315 9489 795 10534 10637 23615 18649 16612 17826 17686 18650 13316 9282 10368 10008 10650 17513 19199 12304 17515 19201 17189 13317 9568 9606 9307 11173 28566 30671 30672 30673 30409 30674 13318 9670 9792 9418 10113 19793 24468 26707 27142 18853 29354 13319 713 985 10367 10833 4621 24931 30675 30676 29143 29142 13320 8609 8893 9933 10590 30677 30678 21969 21968 17888 30679 13321 8850 9646 8622 10355 17265 30680 30681 29792 28937 22018 13322 9198 8781 9132 9924 30480 30682 29977 29978 18027 28623 13323 8179 9689 9657 11131 28137 28136 23886 30683 30684 30685 13324 485 9777 509 10243 15639 30686 3629 16993 30687 17317 13325 9615 10331 1006 10837 15996 16821 16096 30688 30689 22774 13326 8169 8168 9998 10845 30690 13412 30691 30692 17201 13021 13327 8145 8084 8146 9965 30693 17356 28324 28323 14439 17357 13328 7540 8728 7580 10268 30694 30695 30696 30438 30697 30698 13329 9476 9448 10403 10961 25592 17691 14372 23956 20382 19585 13330 1192 9858 1024 10610 26431 29321 2292 26432 29322 20819 13331 9335 10202 9531 10316 12555 18769 30699 12623 12565 14995 13332 9642 10442 619 10750 11282 18010 18009 29570 29015 23803 13333 8944 10291 8959 11060 25631 30700 30701 29734 30702 25417 13334 7973 10003 7971 10069 30013 13251 30703 26359 14278 14277 13335 1107 10400 9839 10538 30704 12634 11884 13218 16809 26461 13336 9780 9292 10741 10932 27223 29169 30337 30338 23642 20932 13337 9259 10723 9744 11191 30705 14240 30706 30707 27021 27020 13338 7795 8928 6314 10512 30708 30709 23965 23968 23970 30710 13339 8747 11109 9809 11133 30711 17324 24356 24358 24357 30712 13340 9718 10495 9080 11091 14676 16560 16559 22418 30713 22419 13341 9572 10133 9379 10799 28468 15800 27474 15322 18866 30714 13342 9623 10500 298 10858 14759 29039 29038 21159 30715 25669 13343 8447 8534 10295 10899 30716 27833 28502 28504 26338 27834 13344 624 10394 370 10986 30717 20209 3289 30718 20212 16683 13345 9785 9972 8474 10994 16513 20996 29587 21936 20998 17484 13346 6979 9836 6989 9949 18599 24464 7390 19941 24466 19942 13347 8771 9544 9181 10714 25552 30719 30720 29337 30721 29338 13348 9450 9713 10989 11195 26898 24616 25030 25841 30722 30723 13349 8980 9792 8643 10165 25135 16517 30724 30725 13197 17344 13350 9700 9736 9261 10385 30106 30105 11244 20929 19933 30128 13351 9368 9555 9819 10511 25073 25072 13331 30606 27685 23424 13352 9977 9978 9436 10482 25581 18299 11792 24128 21572 28992 13353 1402 9748 1403 10182 30726 18086 5450 23253 18084 18085 13354 7888 8912 9755 10185 24385 22876 30727 24386 22874 22875 13355 8272 9746 8211 10184 30728 24305 23250 23252 19136 24304 13356 8984 9759 8413 10183 25281 30729 23254 19487 23256 16393 13357 8272 8863 9749 10184 23251 17334 30730 23252 16390 17333 13358 8919 9761 8915 10187 30731 27346 23257 23259 21729 16397 13359 330 10049 9916 10705 27242 25637 27241 28124 25163 25382 13360 9208 10066 9484 10346 13397 22504 22191 12392 25751 25272 13361 1025 394 1208 9523 3409 3381 3410 27258 30732 19579 13362 8993 9756 8032 10219 19535 26184 30733 18267 25516 19534 13363 9700 9736 9319 10371 30106 19588 30126 15595 19809 18469 13364 9671 9846 10539 11115 30187 26185 30734 30735 30736 30737 13365 7573 10631 9996 11183 27949 25946 27948 30738 30739 30740 13366 9636 9807 9237 10900 19844 19843 12038 30741 21889 14385 13367 7680 7742 10324 11046 30116 26676 27858 27861 14466 30742 13368 8919 8176 9772 10187 23258 19392 30743 23259 16724 19909 13369 1050 964 9538 10547 3772 30430 29975 27989 14633 18107 13370 9593 10872 9212 11151 29140 19611 20916 30400 30402 30744 13371 877 785 1455 10541 5100 5344 5346 16054 24894 16946 13372 9377 9741 10298 10416 27907 18196 28205 12930 28208 29472 13373 1452 10391 10325 11011 30745 27456 19097 20323 20495 20361 13374 9505 9858 10610 10981 20817 20819 17563 24146 29323 20139 13375 1257 9573 1116 10864 22184 17682 5256 30746 15022 17683 13376 9494 9391 9948 11136 19518 14510 21847 27081 30334 13589 13377 9898 10738 9019 11060 26509 30747 27616 16459 27618 30748 13378 9529 10120 10119 10316 29275 23237 26958 30749 14860 14863 13379 10118 10123 9532 10317 23241 29277 26954 20002 30750 14864 13380 9517 10387 9665 10867 13303 23733 18487 22867 25995 18906 13381 9605 9571 10137 10766 26679 28449 28305 30751 30467 29701 13382 9607 9570 10136 10765 28530 29206 28865 30752 30464 24269 13383 579 10625 705 10806 27783 26264 4327 23093 27801 20836 13384 9284 9639 10882 11051 28298 18289 23911 23912 16443 18291 13385 624 9780 10394 10986 30753 16682 30717 30718 16683 15057 13386 908 10470 1416 10983 30380 17811 5424 30754 12756 17810 13387 9686 9913 9294 10228 11228 21163 26114 26118 26117 25926 13388 9474 10420 10322 10731 30218 25881 18463 20400 20399 22562 13389 1469 723 1445 10558 5055 4846 5056 14351 23545 22873 13390 9255 9943 9648 10098 22317 24548 12894 30755 27944 16534 13391 7820 7819 10079 10877 30756 30757 22619 17716 22620 30758 13392 9252 10451 9753 11084 27566 16026 22379 22749 16880 26009 13393 9341 10147 9538 10523 20592 18345 30377 20591 22727 18153 13394 9811 9998 9271 10964 29495 13414 29531 27125 29662 30600 13395 9214 9719 9596 10146 22312 30151 29731 22311 29732 17566 13396 9341 9720 9598 10147 24182 30152 30448 20592 30153 23018 13397 9325 9721 9599 10148 30759 26236 30046 28678 27365 14891 13398 9599 9722 9373 10148 27369 18838 19331 27365 13205 14272 13399 9217 9818 9653 10873 14484 18642 21419 20063 29176 20064 13400 9219 9809 9642 10874 17975 25449 25448 20069 29575 20070 13401 9329 9813 9646 10876 14542 21497 21496 20066 29432 20067 13402 9649 9817 9270 10878 25965 18363 16135 30760 20072 20071 13403 9652 9816 9287 10877 21835 15214 21836 28039 20074 20073 13404 9381 9723 9600 10151 24247 29089 26098 30033 29758 30168 13405 9536 10660 8369 10835 30761 30762 29292 17739 30763 14639 13406 9551 10282 9853 10561 23636 17918 25498 24495 19779 15276 13407 1177 1530 10592 10717 5920 26362 20607 21516 26365 26364 13408 8627 9692 8626 10533 24405 20079 30764 25315 19285 13774 13409 6931 6930 9693 10744 7422 24587 27509 27510 23792 28255 13410 8382 10298 8287 10787 30765 18195 29603 29604 17135 18197 13411 1035 320 306 9910 2971 2970 2967 18720 25754 23978 13412 234 233 10550 11023 2597 21643 30766 30767 29714 29713 13413 9450 10989 9922 11195 25030 25031 25029 25841 30768 30722 13414 9304 9650 10577 10700 29813 26301 15421 29425 29426 21108 13415 9500 9364 10200 10827 28249 12989 28251 30769 21459 21904 13416 9376 9729 9594 10149 22075 28310 30469 29998 24250 28311 13417 9633 9789 9253 11120 30614 26138 21180 30617 30770 30615 13418 1241 963 157 9682 2216 2217 2124 23121 23123 25398 13419 9412 9982 10307 11075 20617 25332 23559 23560 19759 28904 13420 9647 10099 10046 11032 20813 25902 22567 30771 11603 25425 13421 6369 6371 10297 10319 6786 26776 27443 27323 17770 26777 13422 9480 10712 924 10718 30772 30773 22779 27088 27087 23024 13423 1364 9723 965 10250 14261 30167 3065 17969 30170 17968 13424 7985 10422 10034 11018 27912 14135 20675 20676 14791 30774 13425 9118 8529 8530 10477 30775 25383 18883 20958 19916 25384 13426 6368 10297 6371 10459 29839 26776 6774 29840 26778 26780 13427 9848 10217 9466 10544 14506 15226 14411 30415 15932 30416 13428 8470 8804 8469 10241 29370 30776 21172 21174 19798 19857 13429 9788 10787 9314 10801 20761 17134 28369 30777 21437 30472 13430 9962 10236 9363 10269 19436 15652 14095 25447 13369 21654 13431 8399 8398 8397 10445 29716 30456 30778 14362 13936 29717 13432 9790 9845 9234 10070 25673 12065 18211 27674 15471 15470 13433 9522 9662 9339 10934 29670 25972 30433 30779 29828 30780 13434 9427 9542 9938 10896 29455 29456 27139 27140 23690 21202 13435 9199 10581 9502 10793 17720 17721 17719 27336 21893 26721 13436 9667 10134 9237 10542 20700 12040 26081 26082 12426 16452 13437 8595 9860 10395 10992 30781 12580 30782 30783 30784 25857 13438 9223 9679 10012 10064 20588 30043 16652 16651 16035 30785 13439 9217 9927 9653 10108 24612 28807 21419 26663 16893 22116 13440 9735 10284 8046 11022 30049 30050 27545 23348 30786 19512 13441 1123 9565 10932 10960 29556 20933 30787 30788 30789 30790 13442 8013 10929 10379 11172 30009 30791 30792 29108 30581 30010 13443 654 1281 1261 9948 4501 4711 4710 14511 15383 28716 13444 9810 9921 9214 10463 26571 13459 25948 25213 20019 20628 13445 811 1393 1336 10814 5456 4911 5436 22722 30793 22723 13446 8612 8849 7908 11116 30794 28541 30795 30796 26517 30149 13447 6973 6900 9826 10812 7317 26740 25645 22890 25646 25600 13448 8856 10149 10674 11033 30060 14257 30797 30061 23742 24251 13449 9515 9983 9202 10010 25969 11833 30798 12934 11836 11838 13450 9994 10957 10123 11116 28008 30799 30800 26516 30801 30802 13451 9470 10561 10470 10983 19780 27264 30803 28758 17810 24496 13452 1258 9799 523 11145 30804 17495 4054 30805 17060 17497 13453 9325 9737 9612 10195 21097 29926 29927 30806 28631 30807 13454 9490 10056 9945 10646 28546 28545 19003 23813 30370 15190 13455 1354 787 1340 10326 4895 5352 5354 29911 14488 18622 13456 8992 9738 8114 10845 25893 25894 25892 29873 29555 27400 13457 9385 10179 10167 11113 14281 30648 28602 16446 30651 16447 13458 9814 9638 10094 11092 15434 19851 30625 30808 19855 19854 13459 9387 9487 10213 11124 20840 26641 30454 26459 27895 25684 13460 887 888 10580 11021 4755 30809 26925 19542 26926 30810 13461 9666 9856 9446 10616 21997 20242 13126 30390 14905 20943 13462 8561 8463 8637 9798 26468 30811 11371 11925 11927 14549 13463 9351 9861 9695 10322 19095 30812 30813 25020 11315 25021 13464 9235 11009 9690 11110 30814 20850 26576 28314 21752 21754 13465 8809 8952 9715 11149 30553 23060 30552 30668 30670 30815 13466 9605 9731 9224 10517 30270 22445 16267 15556 11500 22448 13467 351 353 352 9913 3193 3192 3180 14313 29063 16592 13468 9514 9324 10205 11099 23880 16010 21228 21231 15289 16829 13469 9424 10472 9854 10958 26136 22568 18227 24124 15598 22570 13470 9938 10370 9550 11008 30816 22825 29188 21487 24791 25784 13471 9227 9590 10211 11023 17637 17350 17636 30817 29187 30818 13472 9217 9761 9735 10890 14485 22450 25956 14486 21862 14342 13473 256 235 9973 10211 2614 29068 19945 17198 21194 29186 13474 8994 9633 8242 10348 30819 17694 30820 27909 29540 21047 13475 981 1006 10331 10837 3245 16821 30821 30822 22774 30689 13476 10003 10768 9256 11112 16988 17362 17359 23450 25760 29504 13477 701 1128 9953 10659 4945 16451 26981 23079 14274 15608 13478 9392 10453 9580 10823 12870 26267 30823 15314 24546 24992 13479 9342 9851 9625 9999 12082 14670 18193 24579 24580 25194 13480 7857 7838 7836 10464 30381 13382 30824 11821 13384 13045 13481 9285 10320 10014 10564 13097 30825 13267 12368 13269 28471 13482 240 9535 10501 10763 29030 26963 16995 16996 15727 22082 13483 9827 10484 8226 11186 18857 30826 18828 18655 18830 30827 13484 8135 10742 8136 10749 30828 19561 30829 30830 19244 19562 13485 8627 7750 8626 9692 24404 30831 30764 24405 20079 24406 13486 6953 9555 6921 10511 29619 20260 7418 30832 23425 23424 13487 9878 10449 7883 11169 22970 30833 21814 21815 21254 30834 13488 9444 10787 9788 10801 25547 20761 25546 16945 30777 30472 13489 1101 1377 9720 11159 3771 14896 24522 24523 19430 25960 13490 9014 9884 7831 10395 11199 11205 30835 12579 15901 12760 13491 1258 1370 523 9799 4056 3666 4054 30804 17495 21177 13492 9397 9830 9629 11177 24961 17697 28536 23481 17701 17700 13493 9970 10271 9628 11152 30836 22542 25053 30837 22965 22964 13494 9575 9249 10061 11078 30838 30839 28779 30840 29708 23687 13495 292 293 291 10500 2893 2892 2887 16123 18999 22064 13496 1288 10515 1518 11046 30841 17624 2299 24718 14465 17626 13497 9214 9596 9719 10745 29731 30151 22312 12422 22367 30842 13498 7539 7799 7624 9964 30843 18543 30844 30845 18544 18545 13499 8771 7708 7787 10321 29093 30846 30847 25555 30848 28876 13500 812 1385 1247 10679 5461 5460 5459 24867 28160 26311 13501 7632 10226 7578 10268 29777 26197 30849 29778 26199 26201 13502 919 920 921 10060 5872 5877 5876 29757 27421 12902 13503 9735 9822 9233 10431 27341 27340 15669 22453 30850 24416 13504 9222 9494 10192 10764 25697 25701 25699 30851 24936 30852 13505 8175 8259 9772 10773 27460 16885 29205 19491 16886 13241 13506 10022 10294 9481 10899 20385 20277 20383 22279 20180 25082 13507 7537 7796 9108 10372 30853 30854 30855 30856 30857 30486 13508 883 1305 9683 10534 5748 15261 12787 12786 12434 15262 13509 9365 10389 9519 10436 11973 15581 15582 18993 21079 18402 13510 9518 9353 9900 10803 26983 26667 22182 27362 26312 26668 13511 9719 9290 10635 11044 30858 21409 15337 21392 21504 28839 13512 9616 9826 9370 9969 20413 24408 24701 21162 11367 24410 13513 9474 9861 10322 10420 19096 25021 18463 30218 25881 27688 13514 9221 9728 9604 10749 18684 30441 30442 18910 30859 18911 13515 8169 8117 8168 10845 30860 30521 30690 30692 13021 30522 13516 9243 10214 9823 10607 13675 27043 11220 19980 14379 25989 13517 9445 10002 10101 10381 15496 16520 15550 12300 27899 16109 13518 391 1328 404 10737 3374 3396 3395 13137 18303 13138 13519 9657 8306 10830 10946 23885 30861 17500 19230 21298 24264 13520 8395 10757 10075 10946 28608 28609 28607 30862 21785 24265 13521 7923 10269 7928 10527 27434 30863 30291 27436 30293 27435 13522 1070 10051 574 10357 11266 30864 4310 11267 23550 11250 13523 8405 9601 8652 11000 13008 29074 29073 15085 30865 15086 13524 8652 9601 8410 10999 29074 14850 29072 30866 20570 20571 13525 9362 9847 9537 10300 12183 26613 30867 12973 18343 24948 13526 9343 10098 9648 10138 13401 27944 14968 13404 27945 13405 13527 9690 10856 10428 11126 18755 29823 30868 28240 29825 28241 13528 8060 9513 8059 10634 29952 29950 29947 30869 30870 23113 13529 8273 10301 9656 10639 15844 30871 30872 15845 26961 14877 13530 9703 9393 10252 10599 23925 30873 16055 23926 29626 12334 13531 8171 10406 9569 10796 28360 21682 26075 29238 29377 26973 13532 643 546 10249 11031 4170 19673 26266 30874 26452 26451 13533 9802 10261 6320 10725 24288 30875 25664 25666 25665 27313 13534 8881 10425 9568 10644 19299 22788 27952 19300 30876 15620 13535 324 323 328 9671 3033 3053 3052 26827 30663 23937 13536 9359 9887 9765 10254 25566 25467 24075 30230 29612 28307 13537 9770 9888 9367 10254 21925 23692 13147 29613 23691 20906 13538 1171 10242 152 10675 27699 30877 2185 27700 30878 27338 13539 9323 9724 9503 10516 22864 23329 27193 22863 27194 18437 13540 6910 6950 9082 10694 7151 30879 29400 29402 29404 30880 13541 9202 10224 9975 10914 23832 25735 25780 18478 23299 25005 13542 9061 10395 9588 10642 29702 11520 19551 19563 15521 30881 13543 1062 1061 1060 9545 6068 3510 6069 30268 30882 24561 13544 784 10801 737 10886 20239 30883 4867 17763 30884 20240 13545 9583 9223 10064 10326 30885 16651 21611 28431 30886 20587 13546 9610 10502 9799 11072 25986 24932 17496 22817 22819 25064 13547 9371 9505 10112 10981 29239 24826 15368 14170 15370 24146 13548 1516 183 9552 10631 2356 20586 21233 29783 29784 30887 13549 1214 9936 1216 10278 27090 30888 5624 29316 30889 27717 13550 1490 9521 903 10588 22096 14779 5818 14331 20883 15752 13551 9087 8437 9520 10589 30643 19891 30644 30890 19892 19765 13552 7701 10242 9502 10581 30891 19826 25326 25328 17721 28993 13553 9537 9847 9362 10229 26613 12183 30867 21743 12466 12465 13554 9597 10306 8021 10925 28115 28114 28111 20014 30892 25087 13555 9404 10512 9560 11061 27393 27972 26191 30893 30894 30895 13556 9700 10305 392 10928 20388 30896 30897 30898 30899 24127 13557 8059 9513 8057 10888 29950 29951 29949 30900 30901 28936 13558 7904 9519 8678 11013 30639 30640 30636 30902 30903 16903 13559 7806 9560 6302 10512 30904 26915 30905 30906 30907 27972 13560 383 387 10203 10485 3353 12535 28505 20029 13706 11845 13561 9355 9816 9737 10432 16531 29365 30908 30909 21102 17063 13562 9047 8423 10179 11113 30910 30911 14282 16445 16447 30912 13563 9379 9980 9958 10970 25733 20198 15799 15801 15180 23663 13564 9964 9480 10680 10712 23317 19960 26332 29969 29971 30772 13565 8847 9515 8187 10914 23935 23648 23933 25003 30913 27451 13566 9503 9724 10494 10516 23329 23089 23330 27194 25848 18437 13567 622 698 9567 10672 4550 28275 28147 22765 30419 30914 13568 9686 9897 9210 10753 28652 22625 30915 11434 28438 28437 13569 9947 10209 8247 10910 27227 30666 30664 30916 30917 18424 13570 8980 9792 10165 11002 25135 17344 30725 25137 30918 18581 13571 6345 6385 6347 10344 6841 6840 6698 28239 27360 27623 13572 8803 7794 9103 9693 24594 25740 30919 24595 25741 24586 13573 9610 9735 9352 10284 30098 22451 30099 30405 26410 30049 13574 1156 495 9925 11144 3881 30920 18221 18224 18226 30921 13575 1403 10381 1063 10995 21005 30922 6081 18087 30923 21006 13576 1236 10169 1562 11076 15902 17240 5632 18292 22776 18293 13577 9831 9968 9581 10622 17723 20206 20207 11961 30924 16655 13578 615 11078 614 11079 29709 30925 4503 29710 30926 29711 13579 9081 8655 9135 10668 20048 30927 21807 20049 21811 20050 13580 9040 10179 9862 11193 30928 29582 30929 30930 30931 14283 13581 8631 7816 7895 11137 29800 30932 30933 26993 30934 29801 13582 9451 9970 9628 11152 30935 25053 15808 23881 22965 30837 13583 7677 9559 7675 10180 27923 30936 30937 27787 30938 27924 13584 9547 10850 594 11170 16326 27284 16339 23836 30939 30940 13585 772 771 693 10077 4902 4898 4903 27883 21880 24711 13586 8726 10362 9632 11073 30941 19342 30942 30943 18930 30274 13587 8950 9733 8736 10926 11286 30944 30945 17848 30946 17849 13588 350 1037 351 9543 3188 3187 3178 15731 14315 29645 13589 9423 9854 10153 10455 15882 15944 28380 14468 30947 17803 13590 7935 10620 9490 10646 25269 22333 24319 24321 23813 30948 13591 9569 10228 9294 11064 26116 26117 26115 30949 30950 27874 13592 8059 10083 9513 10888 30951 30952 29950 30900 28936 30953 13593 9662 10043 8106 10797 29044 29042 18637 18639 18638 23600 13594 9314 10787 9674 10801 17134 30470 19560 21437 20238 30472 13595 9796 9916 9295 10049 17579 22494 12667 19746 28817 25637 13596 311 9623 298 10858 18795 29038 2929 21158 30715 21159 13597 9563 9212 10055 10852 26683 26684 25781 30290 29209 29208 13598 1518 970 971 10633 2297 5049 5973 17010 28374 23583 13599 445 10431 448 11148 30236 30954 3642 30237 30955 30238 13600 8826 9592 8825 10459 26181 21663 29572 24757 23047 23049 13601 9379 9572 10058 10133 27474 23307 16544 15800 15851 28468 13602 256 1397 1396 10535 2719 2721 2718 18735 17841 22678 13603 9656 9706 9299 9726 26960 17604 30956 30957 29466 22682 13604 258 257 261 11182 2710 2723 2722 16873 28229 24311 13605 9687 10109 8727 10263 17141 28119 26744 16942 26747 29868 13606 7977 10033 7975 10991 12711 20737 30958 17735 20736 12897 13607 1555 1271 1554 10344 2229 2441 6038 28824 15253 27359 13608 9249 9948 9934 10638 29350 29344 29349 30959 30332 30333 13609 9448 9667 10258 11175 25591 25979 25977 27913 30960 27574 13610 9527 9317 10063 10868 26942 13473 26943 27507 30961 19374 13611 9573 9690 9378 10881 28415 26580 26334 25572 12267 27267 13612 8744 10808 9483 10935 30962 29340 29145 30535 30191 30192 13613 481 9928 10596 11015 14733 14020 14734 30963 29379 17859 13614 985 10370 9550 10833 24736 22825 20801 29142 29141 30964 13615 876 10289 9845 11054 30965 18819 24941 24942 24735 30219 13616 8881 9568 8239 10644 27952 28278 28276 19300 30966 30876 13617 9347 9932 9795 10508 16068 23824 11933 27490 27491 22214 13618 8013 9584 8012 10929 29107 23031 29577 30009 23033 23032 13619 9396 10018 9604 10198 25264 25265 25262 29165 30443 28798 13620 8676 9580 9177 10690 26268 22523 29235 30967 26005 26007 13621 8830 9595 10421 10840 28773 28777 28776 30968 30969 30970 13622 7868 10007 7872 10701 30971 14993 27901 27903 19961 12729 13623 8873 9586 9939 11043 26091 26090 26089 30972 29066 30973 13624 7861 10315 7835 10894 12186 25359 30974 17981 30975 17982 13625 8744 10444 9483 10808 29304 29305 29145 30962 29340 15562 13626 8192 8750 10023 10471 30976 19656 21797 21798 11331 29930 13627 9378 10293 10137 10756 12011 30977 28304 23677 23509 23678 13628 674 676 677 10233 4802 4808 4807 21879 22635 21693 13629 8830 10421 8036 10926 28776 30978 30979 30980 30981 30982 13630 8351 10265 10007 10706 29266 29267 29263 30983 30984 23305 13631 310 308 997 10236 2978 2980 2979 27187 20469 20699 13632 9281 10141 9492 10309 27253 27252 18932 17283 22883 23193 13633 8816 9604 10283 10862 27990 27995 27993 29488 23212 26790 13634 9336 9957 9597 10196 25826 26548 26547 30985 30986 30987 13635 9629 10131 708 10941 11526 16382 16381 17958 30988 22478 13636 8631 7895 10231 11137 30933 30989 25748 26993 23131 30934 13637 957 860 963 10254 5664 5668 5667 24197 25397 23473 13638 1179 1180 1509 10201 2418 6190 6189 21514 15977 15976 13639 7940 10652 9784 10829 30246 30990 25863 30247 28204 30248 13640 9587 9256 10143 11042 20963 28220 20899 24038 23908 17367 13641 228 226 286 11041 2568 2570 2569 17067 24200 29434 13642 9418 10022 9602 11002 20721 19815 20722 24469 29658 25488 13643 257 9918 261 11182 17924 12887 2723 24311 28229 24776 13644 9258 9846 9671 11115 29847 30187 25444 16807 30735 30737 13645 8253 8346 10030 11027 30991 24033 30992 30993 21961 26462 13646 6344 9842 6346 10971 25870 27721 6809 30994 28328 28330 13647 9485 10219 9613 10670 27033 22979 25658 21826 22978 18611 13648 9686 9913 1368 11067 11228 30995 30996 30997 30998 19906 13649 9307 9782 10425 10543 16782 16784 15615 30408 30999 28447 13650 9563 10596 477 10852 26484 31000 30287 30290 30289 17202 13651 9576 9611 10135 10783 26562 28233 28231 26105 30518 31001 13652 9918 10394 1188 10681 14762 31002 29875 14900 29876 31003 13653 7671 10189 7731 10272 21340 31004 31005 22275 18515 22276 13654 7558 8769 7614 9734 23930 31006 31007 21283 31008 23931 13655 8060 9513 10634 11045 29952 23113 30869 31009 31010 22371 13656 7874 10265 7875 11006 27270 19670 27268 31011 20076 26213 13657 9984 10515 9425 10633 24004 17625 26289 19182 17011 19978 13658 9582 10965 10385 11018 30056 30349 28237 29438 29439 30057 13659 1334 1290 9992 10106 5397 31012 22194 24376 24377 31013 13660 9719 10173 9290 11044 18101 31014 30858 21392 28839 21898 13661 9595 9777 9229 10145 19477 28294 31015 19558 22740 12754 13662 9044 8604 8722 10996 12292 31016 25719 12686 25721 12687 13663 9377 10037 10341 10826 28206 21095 30109 13523 30111 31017 13664 9575 9691 9284 10882 31018 22525 28778 30223 23911 31019 13665 8394 9029 10335 11146 31020 30301 30267 31021 30305 30304 13666 9380 9829 9729 10410 27263 30656 30657 31022 22079 31023 13667 8416 8852 10266 11116 27271 27273 19277 26519 24908 31024 13668 9429 9501 10073 10682 31025 24178 14688 18630 31026 27216 13669 1073 336 1039 9976 3118 3120 3119 17371 13024 12271 13670 7954 7952 7953 9621 30503 31027 30605 29703 29691 30504 13671 9158 9156 9842 10252 31028 20856 29636 31029 22753 22754 13672 487 486 485 10762 3862 3858 3863 17587 15640 17392 13673 9323 9503 9724 10715 27193 23329 22864 14366 23616 25764 13674 7590 9734 7614 10447 29865 31008 31030 29864 31031 29863 13675 8375 9970 10271 10623 29361 30836 31032 29360 29416 29359 13676 8579 9011 8963 10114 27697 29891 31033 26253 29057 17511 13677 8636 9730 8965 10493 16401 18278 31034 12941 18279 17310 13678 647 627 714 9714 4573 4575 4574 18149 20595 22028 13679 8009 8710 8006 11062 31035 29285 28940 25625 18081 19860 13680 9495 10334 8775 10895 27673 27672 20497 20499 20498 27525 13681 8028 8729 8993 10703 30321 31036 21481 21480 18265 17164 13682 8009 9923 8710 11062 28588 18123 31035 25625 19860 19859 13683 7835 10315 10115 10894 25359 22221 25360 30975 28420 17982 13684 601 594 10850 11170 4408 27284 31037 31038 30940 30939 13685 7891 7885 7886 9939 31039 24709 29530 28364 19575 24708 13686 8667 9013 9008 10002 31040 29326 11652 12963 12965 29327 13687 9283 9658 9776 11133 31041 29545 11782 30462 29632 29631 13688 9525 10253 9505 10702 22577 11449 22353 22351 22352 19639 13689 9401 10470 10338 10716 17577 19251 16924 31042 19951 25012 13690 9255 9821 9640 10021 22318 29680 25007 11581 28141 28223 13691 9586 9444 10291 10669 31043 30497 24162 31044 31045 31046 13692 9007 8047 9756 10677 21574 13366 31047 21575 14202 14201 13693 8472 8829 10355 10809 31048 31049 20030 19368 20031 31050 13694 9695 9861 9351 10449 30812 19095 30813 24638 31051 31052 13695 699 820 10142 10769 4933 31053 18136 24842 17399 31054 13696 230 10550 9766 11030 27544 26414 27543 31055 31056 17600 13697 8334 10209 9657 10830 31057 17498 31058 31059 17500 15175 13698 9428 10594 10295 11052 24927 30455 17518 21658 29461 24397 13699 9509 10150 901 11087 25159 30102 30103 21088 30199 22210 13700 1255 9551 1416 11080 23097 12388 4076 22041 16709 14686 13701 195 1178 7598 10201 1653 31060 31061 28440 28228 14413 13702 9490 10539 9671 10553 23809 30734 26348 19004 21140 31062 13703 9498 10020 9706 10639 22056 23363 21402 15305 25685 25686 13704 9659 9786 9294 10603 31063 27526 31064 28357 21165 24556 13705 10279 10562 9858 10981 29742 19412 31065 14069 20139 27118 13706 237 10774 9973 11023 31066 31067 29067 29071 29070 31068 13707 9491 10425 9782 10543 28037 16784 31069 22483 28447 30999 13708 9448 10258 9476 10403 25977 25978 25592 17691 14372 31070 13709 252 10080 250 10323 29240 13231 2688 31071 12901 16204 13710 9612 10432 9032 11157 29928 30325 23724 31072 31073 31074 13711 196 1585 1099 9549 2424 2426 1725 28041 22169 25471 13712 9214 10146 9810 11117 22311 21267 25948 21065 21270 17570 13713 823 828 822 10473 5505 5504 4954 31075 24422 24996 13714 9558 9394 9843 11174 31076 14807 25811 31077 31078 16506 13715 657 9631 902 10951 13970 23988 4725 28012 31079 28013 13716 866 865 10641 10837 5239 14943 31080 31081 14944 14325 13717 259 1188 9918 10394 2725 29875 17923 21125 14762 31002 13718 1542 198 7551 10585 1633 15076 31082 29585 26850 23665 13719 9275 10059 10204 10494 16300 16299 13627 12374 23091 23090 13720 8653 8066 10237 10988 31083 26134 30005 18414 25612 26135 13721 8935 8413 9873 10183 23255 31084 11829 17486 17487 23256 13722 1402 1065 9874 10182 3671 25500 31085 23253 25499 20187 13723 630 10392 543 10613 22985 31086 4155 25202 31087 25203 13724 9670 10594 10295 11008 28877 30455 19795 22397 13797 24790 13725 8605 8701 9630 10811 28892 28786 19502 24994 21523 24166 13726 8412 8158 10183 11055 31088 31089 11593 14936 14938 31090 13727 8977 7970 7972 10768 28948 11664 31091 24073 12855 12854 13728 8426 10432 9032 11134 31092 30325 31093 31094 30326 30327 13729 6928 6929 10011 10225 7350 31095 25634 29278 29279 31096 13730 9508 10378 10169 11098 23783 26044 17340 24877 28157 24878 13731 7540 7784 8728 10268 30436 31097 30694 30438 30698 30437 13732 9452 9584 11003 11172 21354 21355 21356 31098 31099 29109 13733 9486 9322 10273 10854 18068 18869 18870 23700 25816 30328 13734 793 10170 776 10932 23467 31100 5293 23468 31101 23469 13735 1181 492 10057 10881 3876 27579 30431 27805 12269 27580 13736 1264 352 602 11007 3181 3199 3201 26001 31102 28703 13737 9424 10324 10071 10668 13912 21344 17444 24542 22998 28959 13738 9962 10269 9363 11014 25447 13369 14095 26657 31103 27493 13739 1546 9542 181 10521 25241 19597 2344 26689 26935 26690 13740 1512 1474 10380 10403 6228 16004 19337 13969 16005 14311 13741 9725 10083 9513 10634 21387 30952 23112 13811 23113 21388 13742 404 9839 405 10737 22629 27244 3453 18303 28827 14963 13743 6349 9617 6378 10031 31104 21249 6769 27757 25295 25296 13744 9277 10093 9643 10146 31105 25478 31106 31107 25480 23846 13745 10290 10376 9441 10427 30262 21190 14746 23269 17886 21990 13746 920 919 918 10060 5872 5868 5873 12902 23897 29757 13747 9334 10259 10036 11149 24207 24260 24026 24027 15042 25578 13748 9371 9772 10446 10595 16800 22595 31108 15961 30318 30317 13749 9389 10350 10073 10682 13297 31109 31110 31111 31026 20703 13750 173 6381 10319 10831 29964 29966 29967 31112 31113 31114 13751 9549 10342 9402 10439 23262 15130 15067 23265 14784 16384 13752 704 892 724 9553 4960 4959 4580 24323 28849 28850 13753 1171 1172 152 10242 2190 2189 2185 27699 30877 26711 13754 9391 10509 9608 11129 13896 23993 31115 21813 24511 31116 13755 787 690 798 10063 4888 4890 4889 22437 28031 28343 13756 8672 9043 9024 10646 31117 15939 21768 21770 14031 15941 13757 9766 10550 10256 11056 26414 21927 20311 31118 31119 31120 13758 351 9543 1037 10603 14315 29645 3187 14316 22325 14317 13759 9619 9835 9701 10299 20568 11957 29246 28006 24184 24186 13760 1358 1359 1472 9997 6034 5856 4445 13462 25075 12861 13761 9382 10281 9678 10973 24213 24518 22180 16844 22179 26308 13762 8842 7531 8728 10268 31121 31122 31123 31124 30698 31125 13763 9309 9990 9981 10497 21120 21032 21119 22290 14975 29178 13764 10218 10561 10470 10940 16142 27264 31126 30571 31127 31128 13765 9160 9842 9158 10971 29637 29636 29638 30447 31129 28330 13766 9491 10491 10425 10996 30420 22664 28037 28180 22601 18493 13767 877 1409 10409 11030 5725 31130 19423 31131 31132 31133 13768 1375 9867 1388 10177 29079 31134 5336 25180 24139 16256 13769 1388 9871 1134 10177 31135 23183 3415 24139 23182 16261 13770 9026 9862 9040 10179 31136 30929 31137 31138 30928 29582 13771 8815 10290 9133 10574 17082 17241 31139 21584 17244 17246 13772 7639 7728 8868 9933 31140 22515 31141 31142 22513 22514 13773 348 341 347 10683 3142 3137 3143 15858 17490 22894 13774 547 10285 9659 10603 28267 18665 28266 28356 28357 16925 13775 1516 9552 10380 10810 21233 21234 21235 29785 21842 29786 13776 9671 9846 9320 10539 30187 25829 31143 30734 31144 26185 13777 265 1152 365 10441 2764 2766 2750 15708 15899 24491 13778 821 10142 1396 10535 13098 17396 5495 12563 17841 14191 13779 953 994 9684 10508 5803 31145 14334 14335 11871 24729 13780 9330 10507 10193 10814 27299 26085 28647 27298 26086 22724 13781 8592 8500 8591 10398 31146 31147 27607 27605 27606 31148 13782 9387 10482 10213 10866 28668 23445 30454 13486 23044 23874 13783 8804 10549 10241 10913 19858 14882 19857 29371 22249 31149 13784 9510 10039 10864 11050 18920 11293 26785 26020 29741 22929 13785 9364 10266 9798 11116 29695 23892 29693 30275 24906 24908 13786 9715 10340 8952 10481 23059 22918 23060 29517 30555 28651 13787 6325 9843 6327 10710 25812 26224 6715 31150 23849 26980 13788 10379 10929 9584 11172 30791 23032 26865 30581 29109 30010 13789 9837 10270 9922 10832 28398 21852 29460 23385 31151 15138 13790 10062 10457 9806 10602 26039 31152 31153 31154 13819 20304 13791 214 211 9570 10608 2494 23604 27852 27853 26072 26496 13792 9448 9667 10542 10961 25591 26082 20040 19585 20042 25593 13793 9915 10476 541 11089 19667 26649 31155 14249 27016 23914 13794 8688 9625 8889 10706 22175 13738 31156 26574 23304 18194 13795 9663 9848 9466 10218 30020 14411 15931 12192 25950 31157 13796 8988 8280 8278 9940 27969 30489 31158 27632 30490 27970 13797 9707 10489 9299 11180 25259 31159 17603 16473 17605 25260 13798 9502 10581 10242 10793 17721 28993 19826 21893 22992 26721 13799 1262 7683 7727 9914 31160 31161 31162 31163 31164 24980 13800 9319 10355 9646 10965 23756 22018 18988 18989 15007 22698 13801 9381 9891 10593 10885 26938 26274 30658 17916 27407 27406 13802 9258 9658 9572 10133 16805 23306 31165 16806 28468 16500 13803 604 10158 9636 11101 21604 20106 16424 31166 31167 24484 13804 9456 10028 9662 10709 12328 31168 20336 11531 20339 12329 13805 1184 253 10505 10715 2702 25090 29939 28656 22148 25093 13806 9878 10308 9350 11169 17895 31169 28093 21815 31170 21255 13807 9589 10779 10077 10780 27813 30297 31171 31172 30298 29296 13808 1421 1436 9748 11196 5454 29154 31173 25017 16708 25018 13809 9281 9543 10309 10654 17558 15733 17283 17559 31174 17376 13810 9347 10083 9817 10664 12985 13411 13410 30136 18182 18184 13811 9807 10091 9636 11084 31175 20543 19844 26223 20546 20545 13812 7907 9500 10191 10545 25095 27487 27486 27111 14347 18550 13813 7664 7684 7683 9914 30188 31176 24979 24981 24980 30189 13814 9454 10602 9552 10810 13820 30576 30575 31177 29786 31178 13815 9208 10470 10218 10561 18083 31126 12190 13396 16142 27264 13816 8292 10012 8957 10064 16037 31179 31180 16036 31181 16035 13817 8812 9797 8339 10493 15031 23338 31182 15032 23381 14538 13818 253 252 250 10323 2689 2688 2690 25091 12901 31071 13819 9535 9277 10093 10181 24728 31105 29921 19145 29451 14038 13820 7989 7993 9582 11018 28512 28514 28243 31183 29438 30058 13821 6357 6355 6352 10524 6493 6845 6846 27076 28792 29062 13822 7806 9192 6302 9560 31184 27565 30905 30904 26915 20895 13823 1361 10641 9533 10721 26479 26480 23944 29332 29331 31185 13824 960 952 10508 11158 5950 24753 16178 30068 24526 24754 13825 9289 10519 9951 10867 24916 13497 26366 18905 24300 27927 13826 8756 9162 10524 11098 31186 31187 27075 27869 27868 31188 13827 9575 10684 9691 10882 12640 25680 31018 30223 31019 31189 13828 9339 9644 10028 10043 22384 23222 31190 31191 21440 23223 13829 1509 1597 1179 10717 5029 6188 6189 18707 21515 29745 13830 9172 6333 9139 9697 31192 20732 31193 31194 19425 25472 13831 9846 10133 7924 11115 14871 30375 31195 30737 30376 16504 13832 9982 10049 9484 11075 20618 21131 24062 28904 21135 21134 13833 6353 10175 6352 10524 20991 18849 6687 21333 28792 21334 13834 1574 9617 1021 11085 22803 28421 6042 24441 31196 22900 13835 8862 8124 8972 10624 11394 26466 31197 11552 26467 11553 13836 943 10280 824 10310 20476 19189 5514 20843 17585 19709 13837 8077 10798 10055 11151 24237 31198 31199 24238 30401 16591 13838 733 9726 675 10541 18596 22683 4800 16162 26879 18597 13839 258 261 10320 11182 2722 13095 17629 16873 17630 28229 13840 1149 10530 9614 10691 29728 23115 29727 31200 20102 18072 13841 9296 10434 9716 10597 13169 30618 27690 28795 15379 28796 13842 948 9858 945 10981 31201 27115 2460 31202 27117 20139 13843 9600 10740 9980 10970 19046 20558 20557 29090 23663 29955 13844 1267 10059 10715 11178 27659 23617 28045 31203 23620 23619 13845 9203 9680 10172 10311 28028 15440 13726 26454 27854 12026 13846 9077 8202 8698 10789 12737 31204 31205 19527 26897 29961 13847 575 10655 9894 11148 31206 14194 31207 31208 31209 31210 13848 7686 9542 7689 10382 29489 21201 30515 31211 20548 21200 13849 9357 10307 9982 11075 19920 25332 13019 28903 28904 19759 13850 9893 10333 9204 11154 19311 31212 31213 21377 31214 20867 13851 10448 10672 9244 10750 25174 25370 21157 24773 26770 22768 13852 9325 10148 10383 10558 28678 31215 21276 21278 21280 14352 13853 7809 7766 9045 9740 25506 31216 26299 24863 12810 25507 13854 476 475 422 10852 3547 3470 3548 31217 14002 13544 13855 9588 9790 9234 10070 14430 18211 18212 25217 15471 27674 13856 9240 9790 9588 10070 31218 14430 24252 31219 25217 27674 13857 914 1359 1553 9997 5857 5859 5858 15397 20889 12861 13858 9236 10430 9863 10945 16091 14957 16685 25661 24888 28259 13859 8630 10052 10785 10823 31220 26056 27549 27551 24923 15313 13860 7569 10443 9828 10555 30558 31221 27052 27053 18961 30561 13861 9442 10518 10217 10653 17105 15046 29098 21705 29001 29591 13862 9221 10822 10198 10952 26891 19614 30444 26278 19616 19600 13863 657 1504 902 9631 4622 4726 4725 13970 23988 11348 13864 9337 9695 9578 10449 23197 31222 12276 12303 12302 24638 13865 1082 1283 365 9850 3265 2751 3264 25484 17540 11272 13866 1078 1077 1283 9850 3248 2731 6090 24047 11272 22613 13867 9613 10292 9534 10502 21273 27851 25702 20887 26640 19900 13868 9688 8407 10056 10757 23829 23831 14817 29767 28289 29854 13869 9281 10152 9602 10683 17284 17206 24765 17285 16413 15860 13870 903 1461 706 10393 4970 4969 2909 14573 12778 26946 13871 8701 10661 9630 10811 24164 28755 28786 24166 21523 16971 13872 8580 8751 9779 10519 31223 31224 31225 31226 18276 27743 13873 434 10502 10478 11072 29592 29051 26215 26217 26219 25064 13874 10281 10624 8479 10973 13967 29904 31227 26308 29906 15828 13875 1251 1160 10410 11165 3656 31228 30062 30064 30065 31229 13876 1086 10669 9844 10801 31230 14447 31231 16818 31232 31233 13877 10312 10475 9451 10800 23553 19409 15923 27464 31234 29352 13878 9305 9519 9899 11109 26556 21078 26557 23092 30254 31235 13879 9359 9514 10074 10743 25804 22315 25443 22263 17409 25805 13880 1498 10150 10799 10802 31236 25142 31237 31238 22503 23352 13881 9385 10194 10042 10923 30623 29772 21051 21053 11234 25322 13882 9911 10508 9497 11158 18082 22212 26049 28033 24524 24526 13883 9982 10857 7932 11004 25333 31239 17792 17794 17793 31240 13884 8705 9743 8024 11191 24532 16433 18807 27538 31241 27539 13885 685 9750 1230 11192 24533 22400 4862 27541 31242 25251 13886 8465 10114 8963 10138 14923 29057 31243 13403 29393 15277 13887 928 1599 930 10585 5912 5911 5910 13346 16136 23666 13888 957 10254 9682 10781 24197 25396 28695 24198 20551 20911 13889 9213 9521 9897 10753 16199 19303 28653 11435 28437 15754 13890 7797 8702 9185 10402 31244 22167 31245 30091 16075 16796 13891 631 290 284 9950 2859 2858 2860 25575 16203 16202 13892 9561 9699 9449 10922 31246 18811 26533 31247 18815 18814 13893 542 10018 540 11093 12830 26986 4133 25151 26989 25152 13894 7695 7697 10085 10530 31248 31249 23143 25290 25291 31250 13895 9248 10160 9517 10257 13235 21348 29552 12527 18488 16057 13896 6315 6337 6380 10375 6816 6819 6657 17788 27212 23368 13897 9258 10552 9855 10724 19314 15590 31251 25422 31252 31253 13898 9641 10068 9471 10566 14763 18816 29290 12008 22849 25310 13899 8697 8972 10009 10624 31254 26465 20253 25493 19727 26467 13900 9217 9735 10627 10890 25956 22821 24614 14486 22822 21862 13901 8500 8591 10398 11132 31147 27606 31148 31255 28079 27709 13902 9630 9791 9305 10860 29996 21870 29997 30181 27381 25860 13903 9305 9899 9809 11109 26557 26240 21331 23092 17324 30254 13904 9244 9642 9856 10750 31256 28704 21156 26770 24772 29570 13905 9994 10123 9364 11116 30800 14427 28250 26516 30275 30801 13906 1454 1159 955 10807 5959 5960 5677 15332 22538 31257 13907 9512 9371 10279 10981 20555 14168 31258 20140 14069 14170 13908 9253 10348 9804 10506 27508 14042 31259 31260 26436 26382 13909 9611 10371 1250 10945 15702 19452 17477 28339 31261 25662 13910 8324 8325 8557 10337 25406 31262 11755 12576 12578 25407 13911 9209 9602 10152 10628 19816 17206 13538 19817 16279 16410 13912 9682 10276 9359 11185 26371 31263 30231 25399 30232 24307 13913 9602 9418 9976 10628 20722 18854 19080 16410 16549 20723 13914 8822 9794 8823 10586 31264 24242 25469 25470 24241 16497 13915 9216 9632 10065 10362 18926 19343 31265 20022 17175 19342 13916 366 1448 10256 10460 3270 27428 26279 26280 19624 20090 13917 9324 9570 10103 10358 26071 27571 14726 11930 27572 26508 13918 9446 10142 9666 10616 13125 12660 13126 14905 30390 30391 13919 8834 10723 8835 11191 27018 31266 31267 27019 31268 27020 13920 8266 8265 8313 10611 31269 31270 20056 20059 20061 24503 13921 9560 10189 9404 11061 14620 26190 26191 30894 30893 31271 13922 772 775 1344 10077 5282 5284 5276 27883 18966 20402 13923 9422 10067 9917 11198 20826 15674 21478 30586 31272 31273 13924 1380 759 756 10647 5207 5206 4544 30158 28533 31274 13925 974 9830 972 10537 31275 16813 2327 31276 23155 19341 13926 8879 7614 9734 10447 31277 31008 31278 31279 29863 31031 13927 9467 10523 10078 10605 20374 30407 21543 17429 18752 30378 13928 9596 9823 9277 10146 27042 22686 31280 29732 31107 23016 13929 9598 9824 9362 10147 23871 20343 13502 30153 13201 15409 13930 7669 7725 9131 10581 31281 29313 31282 31283 29315 19301 13931 814 9757 557 10697 31284 13528 4224 22016 14885 14884 13932 323 319 10707 10724 3024 30546 23135 23138 23140 30545 13933 9621 10309 9543 10654 22882 15733 23224 19313 17376 31174 13934 214 1056 211 10608 2496 2486 2494 27853 26496 16461 13935 1499 1508 902 10525 4987 5814 5815 15255 23643 15256 13936 9711 10577 9331 10700 16182 12296 16180 24362 23034 29426 13937 9569 10406 9210 10796 21682 28818 31285 29377 22626 26973 13938 467 1050 964 9538 3773 3772 3774 18346 30430 29975 13939 9397 9778 9629 10235 22270 28535 28536 28694 28693 30021 13940 9306 9811 9624 9998 26321 28443 31286 16408 24575 29495 13941 9347 9817 9649 10664 13410 25965 16067 30136 29789 18182 13942 9313 10291 9586 10336 26183 24162 31287 21934 24163 22808 13943 9202 9983 9515 10914 11833 25969 30798 18478 27451 31288 13944 9358 9533 10486 10786 31289 23946 11976 12496 26488 26487 13945 8595 9860 9014 10395 30781 11201 31290 30782 12579 12580 13946 6296 8827 6384 9673 30035 31291 6461 30040 31292 30038 13947 8690 8574 8262 10299 30452 28327 31293 17952 26208 30453 13948 9294 9621 9543 10529 23225 23224 21164 27527 26527 29704 13949 8265 8266 8198 10026 31269 31294 29973 31295 31296 21923 13950 8137 10283 9604 10749 27994 27995 27991 28165 30859 19245 13951 9422 10386 9919 10972 31297 28407 27162 20828 21995 28409 13952 10323 10505 9482 10607 22557 24762 26154 17607 24763 20798 13953 9380 9729 9594 10410 30657 28310 24945 31022 30063 22079 13954 9321 9566 10000 10757 31298 22708 29802 29805 29804 31299 13955 9597 10650 10104 10817 29737 27107 29735 18840 30079 24788 13956 754 9936 1214 10528 31300 27090 4704 26846 27089 14425 13957 6939 6901 1199 10744 7272 29236 29218 29219 27442 26297 13958 860 859 9888 10254 5547 20908 29887 23473 20906 20907 13959 1327 782 10017 10846 4886 20081 28942 28943 21903 28911 13960 9690 10880 9571 11110 27261 27259 26575 21752 17967 27679 13961 6352 9508 6354 11098 18848 18893 6842 31301 28158 24877 13962 1330 1010 786 10416 4566 5347 4871 12928 26170 12929 13963 9647 10046 9278 11032 22567 12069 22762 30771 12071 11603 13964 7792 10303 8692 11153 21966 31302 31303 23152 31304 23153 13965 8120 9883 10420 11091 15565 22830 31305 15566 31306 12220 13966 10641 10721 1361 10837 31185 29332 26479 14944 31307 31308 13967 9455 9907 10342 10404 22358 25013 25795 20445 25014 15867 13968 8779 7973 8225 10991 31309 26360 18594 18595 17388 26361 13969 7605 7629 10435 10592 31310 31311 26031 28612 17845 31312 13970 8233 10043 8105 11027 27639 25166 27637 24584 31313 29000 13971 9276 9941 9722 10275 23787 26984 26966 11879 14027 21365 13972 7908 10545 9038 11116 21287 25993 31314 26517 24907 25994 13973 10150 9379 10799 10802 23228 18866 25142 23352 22503 23353 13974 9222 10399 9866 11100 27806 16084 27809 31315 25598 26937 13975 9353 9860 10803 10992 25856 26313 26668 23823 27155 25857 13976 9721 10195 9278 10898 14929 28629 27308 21451 22763 21452 13977 7966 10465 7866 10564 20111 15194 31316 20113 17126 17125 13978 6973 9497 9826 10962 22889 24409 25645 31317 31318 15625 13979 8601 9718 10830 10946 31319 22193 31320 31321 21298 20086 13980 9517 9898 9665 10387 20560 19822 18487 13303 23733 16161 13981 10193 10507 9601 10614 26085 23612 28265 25510 19753 18767 13982 6336 9677 7777 10710 28019 28020 28016 31322 31323 22021 13983 9323 10516 10012 10851 22863 27354 23324 22865 27357 18441 13984 1137 9661 654 10498 31324 19109 4510 31325 13892 19111 13985 336 1073 337 10665 3118 3117 3113 12272 20920 20845 13986 9567 10448 622 10672 18973 25175 28147 30419 22765 25174 13987 834 1040 836 10352 5559 5558 5557 12656 25445 12657 13988 9268 10421 10135 10430 31326 16435 28232 17238 26101 14958 13989 9375 10487 10006 11087 11515 21178 19883 19884 18007 21089 13990 1123 363 1315 10681 3253 3255 3254 29557 31327 14899 13991 7600 7606 7605 10592 20644 31328 30222 17583 28612 20645 13992 1018 9522 1145 10709 18669 30532 4396 31329 31330 29669 13993 1299 1300 10111 10919 3260 16251 31331 31332 21956 21955 13994 9526 10084 9994 10336 26686 24783 20378 20380 12685 24785 13995 9420 10216 9672 10386 16126 27003 17687 14167 15390 31333 13996 7799 7539 8824 9964 30843 31334 31335 18545 31336 30845 13997 9544 10072 7733 10321 17223 31337 26837 25557 26839 22637 13998 10104 10650 9485 10817 27107 19330 21825 30079 24786 24788 13999 9684 10508 994 10969 11871 24729 31145 13929 24731 24732 14000 1496 1000 10322 10731 6006 18462 29775 29776 20399 25761 14001 9497 10962 6982 11158 15625 31338 22658 24524 27280 31339 14002 1167 935 10072 10818 2369 21839 31340 30622 26347 25643 14003 1039 1378 9976 10113 5128 15713 13024 13217 15711 15712 14004 7701 7725 7669 10581 25327 31281 31341 25328 31283 19301 14005 9344 9905 9784 10652 23711 29085 31342 30017 30990 27817 14006 1364 893 1498 10799 5780 5781 3020 15323 31237 21110 14007 8997 8695 8391 10259 27556 31343 30523 27557 30527 27290 14008 8369 9536 10615 10779 29292 17737 24472 29294 19724 29293 14009 10295 10594 9670 11052 30455 28877 19795 29461 28460 24397 14010 7796 7537 7602 10372 30853 31344 30483 30486 30487 30856 14011 8288 8293 10660 10835 31345 31346 14637 13577 14639 31347 14012 9559 7675 10180 11135 30936 30938 27924 25777 31348 31349 14013 9527 10480 8721 10845 27419 27504 27505 27761 31350 29874 14014 7903 10270 9891 10885 28552 26273 29111 31351 27406 27405 14015 9418 9976 9792 10165 18854 30048 24468 30512 17344 29686 14016 8248 8228 8229 9680 31352 31353 31354 13637 31355 31356 14017 9302 10506 9568 10844 26380 26381 17832 18307 19000 31357 14018 9244 9856 9642 10513 21156 28704 31256 31358 28708 28707 14019 6988 6918 1479 10695 7263 31359 28949 28952 28951 31360 14020 1284 273 275 10316 2804 2802 2805 12566 12625 25616 14021 273 271 272 10316 2792 2782 2793 25616 12622 12621 14022 1247 1433 1012 10317 6022 2975 5485 25617 12627 12626 14023 452 10497 10196 11121 23852 14961 21975 22679 22681 23853 14024 7924 9846 9057 10133 31195 15274 31361 30375 15275 14871 14025 10023 10748 9339 10797 22110 19065 25971 18640 22872 26672 14026 9277 9823 9596 10704 22686 27042 31280 22687 17457 22688 14027 8064 10088 9598 10988 14692 14979 14980 31362 25610 25395 14028 8716 8715 10186 10993 31363 31364 24012 17050 22552 31365 14029 9263 9567 10106 10536 17572 27046 27026 13559 27047 25551 14030 9221 10198 9728 10952 30444 28799 18684 26278 24202 19616 14031 8721 8975 10480 10868 31366 27256 27504 27506 27257 26905 14032 9695 10449 9351 10910 24638 31051 30813 31367 21209 31368 14033 9222 9494 10764 10821 25697 30852 30851 19973 31369 24460 14034 9542 10382 7686 10521 21200 31211 29489 26690 29491 31370 14035 461 9824 460 10407 16346 13435 3732 16347 13438 13440 14036 1151 6351 187 10175 21479 31371 1955 18997 26540 17342 14037 9578 9695 9351 10910 31222 30813 31372 31373 21209 31367 14038 9777 10145 484 10967 12754 12752 11408 28917 31374 17818 14039 306 10369 9910 11123 25755 25756 25754 31375 22233 30161 14040 810 1421 9748 11196 4949 31173 16703 16706 16708 25017 14041 9694 10006 359 10733 11805 23543 21646 22417 31376 14557 14042 156 6351 1151 10169 31377 21479 1951 24513 18996 17339 14043 9229 9777 9594 10967 28294 24944 28295 22741 25836 28917 14044 8208 10623 10091 10821 26766 27656 31378 24459 19254 26767 14045 580 732 10594 10733 4340 24538 14328 13869 14330 23332 14046 9915 10260 9712 10445 31379 17553 22729 21175 17305 18902 14047 575 1312 10655 11148 3691 31380 31206 31208 31210 31381 14048 9026 10179 9040 11193 31138 30928 31137 31382 30930 14283 14049 7912 8678 9519 11109 30635 30640 30638 31383 31235 31384 14050 1352 9929 556 10013 31385 28385 4213 29440 28383 28384 14051 198 1599 1520 9541 2437 2436 2435 15075 29135 23664 14052 9560 10272 7748 10688 22277 31386 22113 19682 22115 31387 14053 8937 8384 10298 11186 31388 31389 15484 29422 29423 31390 14054 9570 9607 9251 11137 28530 28529 27570 31391 25187 26994 14055 8448 10294 10022 10899 31392 20385 22280 22278 22279 25082 14056 8961 10621 10044 11069 28105 15052 31393 30124 31394 26354 14057 8478 8052 8188 10349 26306 31395 15906 15905 15825 26307 14058 661 589 651 9619 4384 4382 4385 24050 30263 31396 14059 1423 10195 9737 10939 31397 30807 31398 31399 24083 14931 14060 9247 10101 10002 10381 13039 16520 12964 16108 16109 27899 14061 9522 10023 9662 10883 23828 18636 29670 23405 27040 29931 14062 9300 9834 9640 10907 15874 19676 22984 22759 28183 22760 14063 1542 7551 7559 10585 31082 31400 31401 29585 31402 26850 14064 6363 10127 6307 10277 26157 28614 6778 17215 28617 18308 14065 8334 8599 10209 10830 31403 18419 31057 31059 15175 19028 14066 6366 6365 6367 10417 6850 6848 6680 22993 28809 22363 14067 9587 9831 9256 11112 28216 28219 20963 29503 25760 22836 14068 9236 10135 9736 10938 21799 30394 18255 21800 24082 16832 14069 8732 6962 6896 10696 28584 7115 31404 28585 31405 28586 14070 7615 9552 183 10631 19665 20586 20585 31406 30887 29784 14071 1335 1010 9993 10416 5349 15723 31407 31408 15724 12929 14072 913 912 10073 10689 4749 14689 31409 22785 14690 13952 14073 9122 9964 8445 10609 27377 28746 31410 27378 28745 21634 14074 7816 9607 10079 10974 29799 31411 31412 31413 29120 31414 14075 9508 10169 6354 11098 17340 18894 18893 24877 28158 28157 14076 8175 10052 8674 10773 25140 15311 27459 19491 13240 16209 14077 9223 10364 9624 10942 27295 27296 27098 16810 29643 25925 14078 10014 10564 10320 11182 13269 28471 30825 31415 17630 31416 14079 8726 9632 10362 11088 30942 19342 30941 31417 17179 19344 14080 7992 8005 8930 10090 28000 31418 11617 12884 12886 27865 14081 8005 8710 8924 10090 29167 27583 31419 27865 13062 18121 14082 9671 10539 9320 10553 30734 31144 31143 21140 12491 31062 14083 9124 8527 10374 10602 31420 31421 20461 13818 20463 31422 14084 8583 9938 8332 11008 21486 31423 31424 20216 31425 21487 14085 8299 10025 9960 10977 31426 30242 28523 31427 25277 21621 14086 9516 10461 9576 10481 23684 30388 27769 22554 25237 31428 14087 7698 7695 7668 9614 26858 31429 22507 22509 21589 23142 14088 9412 10269 9962 11004 21653 25447 25446 23784 31430 27058 14089 327 314 322 10804 3007 2987 3008 26835 26836 30449 14090 1395 1088 9977 11079 4715 19076 24142 30573 21205 21204 14091 918 1416 9551 10983 5837 12388 23896 28489 12757 12756 14092 9359 10254 9765 10711 30230 29612 24075 23099 17286 30095 14093 9367 9770 10254 10711 13147 29613 23691 13682 30095 15249 14094 9858 10279 9512 10562 31065 31258 19411 19412 18117 29742 14095 9268 10145 10421 10430 31431 25609 31326 17238 14958 17446 14096 10060 11142 9562 11174 27235 28881 26695 16507 26982 27238 14097 9545 10995 10381 11029 26167 21006 24562 27980 27982 31432 14098 8338 8337 8386 10294 18710 20010 31433 19149 18577 20194 14099 8372 8371 10780 10955 31434 29385 31435 22920 31436 31437 14100 9837 9922 9340 10832 29460 24148 14976 23385 23272 31151 14101 10218 10470 9401 10940 31126 17577 31438 30571 22953 31127 14102 10030 10132 9426 10580 24497 28763 18263 21460 24364 16519 14103 1506 6927 6939 10011 23625 7275 30473 23626 30474 23181 14104 8645 10694 10128 11086 31439 18244 21215 21216 20122 31440 14105 6314 6324 6325 9843 6811 6814 6813 23966 25812 24017 14106 9653 9927 9270 10108 28807 18722 21122 16893 21121 22116 14107 9409 10501 9585 10617 14520 30379 15300 15361 13889 30667 14108 9007 9862 8408 10677 31441 14057 21706 21575 14732 14731 14109 8339 8271 10184 11104 31442 31443 23336 23339 23341 31444 14110 550 10760 10257 10901 31445 17006 31446 31447 16870 17648 14111 861 735 862 9833 5077 5110 5109 21071 12014 23022 14112 9751 10647 9219 11138 17322 31448 19912 25562 28176 28534 14113 9329 9920 9646 10549 26407 28919 21496 15718 26787 26408 14114 526 1486 644 10795 4049 4071 4070 28338 30088 18496 14115 1095 967 9857 10245 5085 19841 31449 22716 19840 15869 14116 1356 805 9844 10669 5432 23533 26669 31450 14447 23534 14117 9708 10304 8999 11038 21816 11437 21817 17755 31451 20534 14118 9519 10436 8678 11013 21079 31452 30640 16903 30903 17114 14119 9624 9998 9527 10942 24575 24576 24573 29643 29642 31453 14120 179 9614 7668 10770 21588 21589 21587 31454 31455 23014 14121 9346 9498 10020 10479 12672 22056 18304 12846 21775 12844 14122 8369 10660 9536 10780 30762 30761 29292 29295 29297 30177 14123 9477 10771 10024 10775 23163 25329 21217 19175 27251 27250 14124 9348 9954 9742 10759 12427 11354 12428 12765 16266 31456 14125 9353 9900 9860 10788 26667 26314 25856 21977 26309 30647 14126 186 1211 7740 10072 1802 26708 31457 31458 26709 25454 14127 9810 9864 9300 10907 18188 16478 21380 23964 22759 22761 14128 9281 10141 9784 10390 27253 29084 28202 18933 29173 27254 14129 9036 8927 8684 9699 23430 30133 31459 20458 30134 23429 14130 9485 10050 10008 10478 19328 19200 19329 21824 19224 22645 14131 901 1498 10150 10799 5812 31236 30102 30104 25142 31237 14132 1576 1231 10261 10730 5628 23800 31460 31461 23801 18431 14133 9538 10237 9341 10605 30320 31462 30377 28342 21804 30004 14134 549 983 1146 9524 4185 4186 4183 27755 19472 24642 14135 1358 9997 1472 10850 13462 25075 4445 15682 23951 15683 14136 8191 8190 8252 9835 31463 28868 20944 11955 20946 28869 14137 10290 10376 9442 10574 30262 21701 17242 17246 17245 28401 14138 9633 9789 9443 10215 30614 20671 15247 16165 21632 25196 14139 8060 8057 9513 10726 29948 29951 29952 31464 28935 31465 14140 1125 1060 9957 10794 3536 30256 22105 22106 21758 30257 14141 9207 9558 9677 11068 30200 21625 23359 26584 31466 25123 14142 997 308 320 10879 2980 2969 2981 20471 23979 30417 14143 8067 10019 8070 10088 31467 30411 31468 31469 30410 25394 14144 8694 8391 10259 10955 31470 30527 28077 31471 31472 31473 14145 6359 9635 8833 10378 26832 26833 26829 31474 31475 26174 14146 8538 8542 7793 9793 22786 25182 31476 20641 24832 20768 14147 8215 9575 9934 11048 15048 15203 15202 31477 31478 28780 14148 9632 9216 10065 11021 18926 31265 19343 31479 31480 26169 14149 8229 9680 10591 10740 31355 13444 24608 24610 19928 31481 14150 9578 10449 9695 10910 12302 24638 31222 31373 31367 31368 14151 1446 541 9915 10476 4143 31155 19036 19666 19667 26649 14152 9535 10501 9585 10774 26963 30379 27612 27614 27613 31482 14153 356 547 357 11067 3218 3217 3203 27248 31483 28358 14154 508 10934 9929 11155 31484 29095 29077 29078 25992 31485 14155 9117 8527 10296 10374 31486 31487 28841 28843 28844 31421 14156 10170 10932 9565 10960 23469 20933 31488 27334 30790 30789 14157 8912 10754 9755 11146 31489 13746 22876 22878 22877 31490 14158 10167 10194 1421 11196 25321 25015 25582 18541 25017 25019 14159 9994 10200 10123 10853 28252 14428 30800 31491 15156 27276 14160 199 6383 1100 10343 31492 31493 1999 31494 28680 31495 14161 9939 10832 9340 10989 24373 23272 20669 24617 24797 25512 14162 841 713 10367 10833 4722 30675 29197 29196 29143 30676 14163 8132 8134 8133 10742 31496 31497 11610 11901 11903 31498 14164 9500 10191 9910 11122 27487 12694 31499 31500 31501 31502 14165 9371 9512 10446 10732 20555 19237 31108 16801 18986 19478 14166 730 9694 359 10733 22416 21646 3234 13867 31376 22417 14167 8961 10044 8962 11069 31393 31503 31504 30124 31505 31394 14168 1455 260 10267 10919 2740 12570 25040 31506 17814 17813 14169 8587 9600 8559 10740 28370 28999 28998 27781 29954 19046 14170 8509 8518 10561 10940 31507 22410 31508 31509 31128 20713 14171 9514 10251 9359 11185 23519 24074 25804 23521 30232 23522 14172 9323 10012 9679 10851 23324 30043 11803 22865 31510 27357 14173 9248 9517 9665 10257 29552 18487 29551 12527 16865 18488 14174 8038 9743 8030 10729 31511 13972 22699 22701 15915 15914 14175 8045 9744 8038 10729 20971 31512 22702 20973 22701 20972 14176 7882 9881 7880 10671 30345 13658 31513 30346 13694 16012 14177 1344 771 10077 10274 5275 24711 18966 18964 18965 13816 14178 8860 8574 8690 9739 29494 30452 21018 18657 13631 26771 14179 9959 10582 9211 11038 15336 27039 19112 17756 23096 23129 14180 9491 10425 9785 10996 28037 22787 25828 28180 16515 22601 14181 1485 9579 707 11036 21019 29054 4974 21037 31514 21038 14182 8144 10437 10359 11010 23611 21041 23610 31515 25799 24494 14183 6912 6979 6976 9616 7380 7379 7378 14918 20967 18598 14184 8428 10449 9578 10910 24436 12302 24434 31516 31373 31368 14185 8090 9571 8089 10649 29697 31517 31518 29698 31519 17965 14186 9452 11003 9923 11172 21356 22573 22572 31098 31520 31099 14187 8694 10259 10626 10955 28077 26065 28078 31471 31521 31472 14188 7978 7977 7975 10991 11641 30958 31522 12896 20736 17735 14189 9363 9910 10191 11122 12689 12694 12692 31523 31502 31501 14190 10017 10193 9306 10614 21902 25791 18247 19754 20189 25510 14191 9679 10064 9223 10326 30785 16651 20588 15751 20587 30886 14192 7674 10537 9627 10863 31524 29923 31525 31526 31527 31528 14193 9334 10741 10076 10859 22085 23641 31529 15464 28908 20494 14194 308 9910 320 10879 20698 23978 2969 30417 23979 16437 14195 8012 8981 10474 10597 31530 17855 23030 25314 16155 17856 14196 9576 10461 9261 10481 30388 11857 31531 25237 20401 31428 14197 9333 9976 9792 10113 12270 30048 16516 13216 29354 15711 14198 239 238 9535 10774 2623 29031 29262 31532 27614 31533 14199 1328 886 9979 10485 5756 28879 15166 11844 16565 31534 14200 240 239 9535 10763 2627 29262 29030 16996 22082 31535 14201 7743 7704 9698 10675 31536 14394 20666 27884 24940 24939 14202 9313 9586 10291 10669 31287 24162 26183 12120 31045 31044 14203 8159 8073 8160 10078 22474 31537 23055 21530 23054 22476 14204 8830 10840 10421 10926 30968 30969 28776 30980 30982 31538 14205 7989 9582 10422 11018 28243 28248 28246 31183 30774 29438 14206 8090 8089 8091 10649 31518 31539 29730 29698 29729 31519 14207 9846 9320 10539 10891 25829 31144 26185 24158 26187 31540 14208 10327 10814 640 11120 26854 31541 31542 29407 31543 31544 14209 235 237 256 9973 2612 2615 2614 29068 19945 29067 14210 6345 6344 6343 9842 6696 6807 6838 20340 18504 25870 14211 9029 10335 9764 11187 30301 30300 30302 31545 31546 31547 14212 9492 10047 9947 11007 27766 27765 22983 20608 30389 13957 14213 8134 8189 8851 10742 31548 11586 31549 31498 11993 11992 14214 882 1026 1027 9678 5735 5744 5743 17732 12107 24933 14215 9640 9821 9300 10021 29680 26284 22984 28141 28142 28223 14216 8748 10444 7785 11129 31550 18378 31551 31552 23100 20821 14217 1417 9615 1006 10721 30120 16096 2866 31553 31554 31555 14218 810 9748 1402 10182 16703 30726 4651 25409 23253 18085 14219 8413 9759 8415 10183 30729 16391 31556 23256 13076 16393 14220 8272 8271 9746 10184 31557 31558 30728 23252 24304 31443 14221 7870 7888 9755 10185 31559 30727 13281 24833 22874 24386 14222 8272 9749 8381 10184 30730 16028 31560 23252 14197 16390 14223 7888 8716 9764 10185 31561 17048 31562 24386 17046 17047 14224 8919 8388 9761 10187 31563 14081 30731 23259 16397 16396 14225 1060 9545 10636 10794 30882 31564 30255 30257 30258 31565 14226 9457 10557 9989 10735 23471 16423 20844 21472 25408 18564 14227 8527 10296 10374 10602 31487 28844 31421 31422 20463 19801 14228 7846 10087 9596 10745 13352 13351 12163 31566 30842 22624 14229 9613 10478 9233 10488 25659 31567 25703 25705 13016 31568 14230 9290 9564 10087 10635 17995 23982 16786 21409 23983 22374 14231 9664 10396 9399 10477 26108 30365 31569 26111 19917 26112 14232 9337 9732 10136 10943 17423 30353 26351 23198 21371 23599 14233 9731 10137 9224 10944 30357 30655 22445 26532 21383 30360 14234 6314 8928 6322 10512 30709 31570 6565 23970 31571 30710 14235 393 1105 9700 10371 3385 11245 31572 31573 15595 13132 14236 1438 9517 562 10886 22395 30634 3216 30660 31574 13304 14237 8919 9772 8267 10187 30743 16725 31575 23259 16723 16724 14238 9565 9687 9285 10263 31576 16941 19835 25054 12132 16942 14239 8309 10235 9778 10976 31577 30021 31578 31579 18372 31580 14240 8229 9680 8228 10591 31355 31356 31353 24608 31581 13444 14241 8265 8266 10026 10611 31269 21923 31295 24503 21924 20059 14242 9777 9937 9380 10243 24947 24946 24943 17317 15092 31582 14243 9320 9694 9904 10891 12490 18403 26419 31540 31583 31584 14244 9181 8771 8535 9544 30720 31585 31586 30719 31587 25552 14245 8636 8942 9730 10451 31588 16399 16401 12749 16400 12743 14246 9506 10359 9487 10613 18109 19272 13899 15480 15481 18924 14247 7567 10429 10443 10555 31589 26132 30557 30560 30561 25303 14248 9593 10381 9445 10434 19802 12300 30226 23796 12036 12950 14249 9500 10545 9364 10827 18550 28350 28249 30769 21904 31590 14250 9716 9908 9231 10434 30589 13542 14912 30618 21013 16808 14251 9206 10031 10212 11114 28581 29902 25317 27025 24954 29648 14252 9212 10872 10055 11151 19611 31591 26684 30402 30401 30744 14253 10050 10478 9485 10488 22645 21824 19328 14421 22228 31568 14254 9357 9742 9954 10759 17412 11354 19919 12806 31456 16266 14255 1123 1315 9565 10681 3254 31592 29556 29557 19834 31327 14256 9948 10638 9494 11136 30333 24457 21847 30334 27081 30335 14257 8228 9680 8248 10591 31356 13637 31352 31581 20800 13444 14258 9534 9613 10488 10758 25702 25705 16826 18944 18946 30142 14259 9619 9701 9389 11005 29246 11380 29247 31593 28023 31594 14260 8902 8342 9641 10532 31595 26977 20264 13211 20265 29414 14261 1583 7692 168 9709 18332 31596 1866 18333 16835 18334 14262 8731 9814 10335 11187 28150 23218 31597 28152 31547 27166 14263 9587 9679 9405 10064 20897 16789 28217 31598 31599 30785 14264 9233 10478 10050 10488 31567 22645 14419 13016 14421 31568 14265 7675 9559 7677 11135 30936 27923 30937 31349 31600 25777 14266 6982 9497 6973 10962 22658 22889 7319 31338 31317 15625 14267 8309 9778 10235 11065 31578 30021 31577 31601 30023 26791 14268 9339 10028 9662 10043 31190 31168 25972 31191 29044 21440 14269 9154 10044 9618 11069 31602 28772 31603 31604 31605 31394 14270 1455 10267 10070 10919 25040 25039 24893 31506 28914 17814 14271 9526 9313 10302 10336 21396 15659 17954 20380 25079 21934 14272 9008 9007 8669 10677 31606 31607 11650 13212 13214 21575 14273 9448 10598 10312 11152 20620 31608 17689 29299 22966 29298 14274 9497 9932 9795 10619 15623 23824 28847 28825 19184 24025 14275 9462 9991 10601 10986 24444 11796 31609 15461 15765 15764 14276 9444 10787 9825 11043 25547 30031 20274 25548 29065 20765 14277 10014 10320 9285 11182 30825 13097 13267 31415 31610 17630 14278 9659 10285 9786 10603 18665 31611 31063 28357 24556 16925 14279 9424 9933 10324 10668 31612 27859 13912 24542 28959 17891 14280 9566 9688 9321 10806 31613 25605 31298 23095 24618 25606 14281 9650 9303 9972 10777 13337 23764 25939 13339 23980 11469 14282 9453 10008 9981 10368 14533 15167 11998 14221 21034 19199 14283 9981 10008 9282 10368 15167 12304 14974 21034 17513 19199 14284 1054 989 603 10853 4452 4454 4453 12456 26434 12463 14285 353 1368 9913 11067 3204 30995 16592 19907 19906 30998 14286 794 1287 1309 10637 5382 2876 4241 19353 14802 19359 14287 8668 10002 8667 10101 15376 12963 31614 15551 13037 16520 14288 8325 10337 8283 10956 25407 24976 25405 31615 27790 26969 14289 8942 8991 7996 10451 31616 31617 11680 12743 12745 30252 14290 8991 8636 8381 10451 31618 12748 31619 30252 12750 12749 14291 648 523 10357 11145 4052 17059 31620 31621 17061 17060 14292 8531 9924 8781 9967 19659 28623 31622 22094 28622 22950 14293 9706 10020 9498 10479 23363 22056 21402 15854 12844 21775 14294 9687 10092 9242 10960 31623 30626 17900 31624 26207 26500 14295 609 9866 610 10764 31625 25597 4478 24095 24096 21592 14296 9208 10282 9551 10561 13262 23636 12389 13396 24495 15276 14297 9689 10000 9566 10757 26825 22708 31626 28138 31299 29804 14298 1157 9902 10517 11103 23567 30620 31627 23575 31628 23576 14299 7800 9618 6308 10414 27372 27371 27373 31629 31630 29855 14300 9235 9937 9690 11009 31631 18851 26576 30814 20850 22166 14301 339 10141 9905 10683 28941 28674 21849 21850 20923 23195 14302 9005 9051 8119 10662 11720 31632 31633 12058 31634 12059 14303 9486 10273 9855 10724 18870 18871 18066 23393 31252 29605 14304 9855 10273 9671 10724 18871 21138 31635 31252 23938 29605 14305 221 9762 222 10727 31636 25059 2537 31637 25057 25058 14306 221 220 9762 10727 2533 29895 31636 31637 25058 27004 14307 8215 8216 9575 11048 28345 28347 15048 31477 28780 31638 14308 790 1316 9885 10655 5366 31639 19154 19152 19153 21737 14309 1498 1491 10150 10802 5782 31640 31236 31238 23352 31641 14310 9687 10790 10092 10960 27339 28332 31623 31624 26500 31642 14311 9778 10235 9397 10976 30021 28694 22270 18372 22271 31580 14312 8604 9059 9972 10577 31643 31644 14551 12297 14553 31645 14313 666 9894 1316 10655 14066 31646 4314 14195 21737 14194 14314 9615 10114 9713 10452 26920 21300 21891 31647 23750 14926 14315 10019 10314 9303 10734 29768 11893 26880 24995 26881 29770 14316 9600 9723 9381 10629 29089 24247 26098 23053 17914 24248 14317 9044 9059 8604 10577 31648 31643 12292 12295 12297 31645 14318 9454 10062 9806 10602 31649 31153 11452 13820 13819 31154 14319 9538 10147 9341 10237 18345 20592 30377 30320 31462 31650 14320 9362 10147 9538 10237 13201 18345 20823 13781 30320 31650 14321 10134 10542 9667 10961 16452 26082 20700 31651 25593 20042 14322 10012 10064 9679 10851 16035 30785 30043 27357 31510 31652 14323 8268 10161 9653 10890 17852 18641 27197 17853 18643 14827 14324 9396 10026 10680 10718 21360 20223 21359 30146 31653 30147 14325 9387 10213 9995 10866 30454 23042 13485 13486 12924 23044 14326 8063 10238 8061 10363 22534 24514 31654 19569 24488 22535 14327 8528 8444 9073 10602 31655 26045 23637 23639 19800 26047 14328 1034 878 1339 10433 5728 3351 5727 21378 15291 16797 14329 8578 8579 8465 10114 31656 31657 12101 20426 14923 26253 14330 9419 9971 9508 11095 16236 24066 31658 16131 31659 26930 14331 9501 9429 10144 10682 31025 23578 28050 27216 31660 18630 14332 9568 10348 9253 10506 26379 27508 28568 26381 31260 26382 14333 9229 9777 9595 10674 28294 19477 31015 14256 31661 25958 14334 9253 9606 9568 10506 28567 28566 28568 31260 26381 27738 14335 8473 9568 10425 10994 27951 22788 27954 31662 30541 21935 14336 6957 9555 6958 10533 22010 29618 7311 30234 28761 28135 14337 8022 10650 9597 10817 30072 29737 17072 19060 18840 24788 14338 8162 10554 9814 11092 29222 24707 29221 31663 30808 26798 14339 1423 9737 10195 10784 31398 30807 31397 31664 31665 31666 14340 8850 8622 7997 10355 30681 31667 17264 29792 22697 28937 14341 6381 6309 1224 10319 6591 29933 29965 29966 27324 29934 14342 1116 10243 509 10959 15024 30687 3983 15025 31668 15026 14343 8326 9941 8327 10337 28683 31669 31670 31671 27301 26985 14344 509 10243 9777 10959 30687 17317 30686 31668 28915 15026 14345 9457 9523 9797 10735 19322 28649 11547 21472 31672 21471 14346 9267 9554 9842 11035 31673 21223 31674 22584 31675 31676 14347 816 9879 814 10697 13651 31677 5467 15419 22016 15420 14348 8666 9756 8993 10703 25982 19535 31678 27344 18265 19536 14349 1316 575 1312 10655 4315 3691 4316 21737 31380 31206 14350 9710 9797 9523 10735 25392 28649 31679 21115 21471 31672 14351 9414 9714 9680 10172 30566 15442 12023 18954 15440 15441 14352 8290 10364 8292 10942 31680 25923 31681 31682 16619 25925 14353 210 212 10251 11185 2489 31683 23518 23520 23522 31684 14354 10065 10580 9426 11085 27845 24364 17176 27848 27307 27849 14355 9728 10089 9269 10244 19396 19400 19399 26458 25876 18836 14356 7643 7688 8767 11082 31685 31686 31687 31688 31689 31690 14357 7598 1178 7547 10201 31060 13618 31691 28228 14414 14413 14358 9478 10263 9565 10681 22653 25054 20594 20430 19834 26404 14359 8769 8879 7614 9734 31692 31277 31006 23931 31008 31278 14360 9848 10218 9208 10470 31157 12190 31693 17668 18083 31126 14361 9792 9976 9333 10165 30048 12270 16516 17344 13199 29686 14362 9599 9373 9722 10337 19331 18838 27369 17542 26967 12577 14363 8906 8021 10306 10925 31694 28114 25086 23998 25087 30892 14364 8525 8445 9122 9964 29595 31410 31695 23318 27377 28746 14365 9940 10239 8278 11032 24429 29810 30490 20689 29812 29811 14366 9636 9237 10091 10900 12038 27654 20543 30741 31696 21889 14367 1317 9774 302 10593 31697 26793 2926 22084 19736 26792 14368 9389 10073 9701 10682 31110 31698 11380 31111 21747 31026 14369 9306 9966 9557 10017 15270 29121 31699 18247 20103 18248 14370 9487 10392 10613 11093 22987 25203 15481 21684 19104 25153 14371 9789 10289 9443 10825 27062 20016 20671 20741 20525 26417 14372 7905 7913 10629 11013 31700 29214 31701 31702 29216 17117 14373 9630 9791 10098 10811 29996 30000 13759 21523 21525 21871 14374 9662 10028 9339 10934 31168 31190 25972 30780 29828 31703 14375 205 10373 975 10537 31704 20130 2469 31705 19340 20837 14376 307 1244 1012 10200 2936 2972 2973 12988 12990 30029 14377 7851 8941 7848 10214 30205 31706 29922 29375 11413 20987 14378 8485 8943 8940 10490 21510 31707 31708 21324 22533 21511 14379 9213 10228 9897 10918 20035 26473 28653 20036 18339 17753 14380 9195 9052 8315 9896 19929 31709 14477 15737 15738 16492 14381 9335 9531 10007 10265 30699 27468 12727 31710 29267 28458 14382 9002 10164 9640 10889 17941 16850 27232 17942 19677 15393 14383 8628 10052 10281 10785 30295 17736 30296 31711 26057 26056 14384 10172 10311 9414 10438 27854 12027 18954 11986 18955 26455 14385 8830 8085 9595 10840 28987 28989 28773 30968 30970 31712 14386 9564 10494 9275 10771 23374 12374 25357 26250 12774 14092 14387 8033 8114 9738 10379 25891 25894 25895 30577 30578 31713 14388 8181 8125 7960 9622 31714 31715 28390 28172 28389 16762 14389 7790 6917 8846 10600 31716 26965 31717 31718 27050 21220 14390 7771 7719 7650 9660 31719 31720 31721 31722 31723 31724 14391 1122 10168 10065 11021 16245 17837 17836 31725 31480 31726 14392 9320 9846 9671 10467 25829 30187 31143 23940 23936 23745 14393 480 10042 479 11015 29773 31727 3827 22130 28070 24106 14394 9388 10408 9787 11139 20369 19989 20368 31728 26997 26999 14395 156 10169 1563 10345 24513 15903 2214 24079 15438 18284 14396 1246 9893 754 10528 21376 31729 4421 26845 26846 15331 14397 9530 9634 9262 10679 29877 20037 29878 26310 17301 28870 14398 6351 6289 187 10175 6615 25886 31371 17342 26540 26541 14399 9803 10379 9307 10929 25476 16099 27597 30611 30610 30791 14400 9396 9983 9515 10982 31730 25969 25263 28286 28287 22284 14401 10109 10780 8371 10955 17145 29385 29384 31731 31437 31436 14402 1277 1319 10293 10881 3901 31732 12010 12268 13553 31733 14403 9277 10146 9643 10997 31107 25480 31106 14040 15112 27932 14404 8162 8731 9814 10335 31734 28150 29221 29220 23218 31597 14405 8235 8224 8300 10025 31735 15465 23075 18347 14903 15466 14406 9357 10469 10307 11075 22408 18529 19920 28903 19759 23029 14407 9522 10028 9662 10934 31736 31168 29670 30779 30780 31703 14408 9285 9687 9565 10790 16941 31576 19835 12932 19836 27339 14409 427 10104 428 10670 21756 19191 3567 22736 19378 19377 14410 1417 285 1006 10751 2846 2864 2866 30121 21291 20694 14411 9737 10195 9325 10939 30807 30806 21097 24083 26246 14931 14412 8343 9587 9012 10768 31737 31738 31739 31740 20900 20964 14413 9697 10278 6332 11096 27715 27133 30652 15411 27135 27134 14414 8611 10341 10037 10885 29860 21095 31741 29861 28646 17617 14415 1102 399 9754 10722 3434 30364 31742 31743 14237 27662 14416 8834 9744 8286 10723 27017 31744 31745 27018 31746 14240 14417 754 653 9936 10528 4420 14424 31300 26846 14425 12395 14418 10014 10564 9477 10771 13269 21219 31747 15364 23163 23165 14419 1120 1354 1340 9679 6140 5354 3810 13642 15750 27112 14420 221 219 220 10727 2532 2527 2533 31637 27004 23875 14421 221 222 223 10727 2537 2543 2542 31637 29981 25057 14422 543 10613 10392 11093 31087 25203 31086 31748 25153 19104 14423 8224 9856 8883 10616 20942 29020 31749 15467 31750 20943 14424 7673 10537 7674 10863 30015 31524 31751 26403 31526 31528 14425 1419 10106 698 10854 31752 28862 4928 31753 29241 29243 14426 1102 9754 401 10722 31742 14235 3435 31743 12087 14237 14427 8286 9744 8131 10723 31744 14238 31754 31746 12090 14240 14428 8767 10382 9125 11082 31755 19005 31756 31689 17522 19007 14429 7740 7646 186 10072 31757 31758 31457 26709 31458 31759 14430 164 1178 1177 10592 1657 2255 2254 21617 20607 13620 14431 9902 10140 9279 11103 23570 23216 28926 23576 31760 23577 14432 7981 10033 7977 10264 11959 12711 31761 14824 13248 16094 14433 7979 10034 8074 10264 12722 14134 31762 13246 18842 16095 14434 1058 10593 1011 10953 31763 29793 6020 31764 21638 29795 14435 6311 6355 7788 10524 6497 29061 30383 30386 27074 29062 14436 9302 9785 9972 10054 17831 16513 18603 27835 25941 23036 14437 830 10659 9992 11020 24445 22195 29419 24419 14012 23817 14438 8587 10341 9600 10740 27780 23052 28370 27781 19046 20262 14439 9380 9690 9573 10243 30392 28415 17775 15092 17681 27266 14440 9579 9696 9218 10949 31765 25785 27224 21023 21347 27501 14441 8178 10055 8079 11193 31766 18031 31767 31768 20609 20610 14442 7622 9603 7594 10746 15917 23106 29284 24171 23110 23109 14443 8202 10166 8698 10789 13788 26896 31204 29961 26897 19528 14444 839 840 935 10366 4719 5575 5574 19404 21840 15250 14445 9554 10252 9842 10414 31769 22753 21223 21225 18509 22755 14446 9248 9712 9916 10476 18725 17578 14402 12322 17451 22858 14447 9524 9779 9431 10519 29661 18274 19050 21963 13496 18276 14448 8849 8204 9994 10957 28540 28007 27906 31770 28008 20316 14449 1335 9993 1011 10593 31407 21464 6019 31771 29793 29794 14450 9432 9915 10376 10653 19035 19040 19038 31772 21704 19988 14451 9800 10700 9711 11063 31773 24362 31774 31775 22393 24363 14452 390 391 9988 10203 3372 16002 12507 13525 13527 12536 14453 9156 8876 7760 10414 31776 25190 20855 20857 18508 25193 14454 949 950 1169 9525 5370 2449 2291 31777 14153 20661 14455 545 10651 10134 11150 31778 31779 23770 23772 23774 31780 14456 8360 8361 9943 10098 31781 22004 16535 16533 16534 27448 14457 9065 10348 8418 10994 20874 31782 31783 17482 31784 20875 14458 178 972 10180 10537 2329 14570 31785 31786 23156 23155 14459 886 10326 9979 10485 30654 29599 28879 31534 16565 14492 14460 8726 8487 10362 11073 31787 31788 30941 30943 30274 31789 14461 9319 10606 9813 10928 24764 28964 23511 23515 23514 21793 14462 7599 9975 7601 10201 24117 22267 31790 19309 22143 22266 14463 9550 9622 9413 10733 26234 31791 24789 14972 15701 31792 14464 7816 10079 9607 10752 31412 31411 29799 31793 28230 19572 14465 572 548 9659 10131 4172 25304 18664 13358 18663 22340 14466 8620 8253 8346 10030 31794 30991 24034 24032 24033 30992 14467 7863 10014 7859 10564 31795 27476 27842 27843 23457 13269 14468 6301 9562 6324 10483 19813 24030 6746 27129 29230 27130 14469 7763 10290 7640 10861 31796 31797 31798 31799 31800 24318 14470 8157 8156 9634 10748 31801 31802 15380 22109 20039 31803 14471 1389 10538 1117 10839 24716 31804 4021 31805 31806 26249 14472 9246 10036 10034 10492 12720 12724 12723 27103 13831 13835 14473 9661 10755 1137 11079 31807 31808 31324 30530 31809 21206 14474 287 269 9875 10692 2785 13655 31810 22162 15453 15452 14475 816 1110 9879 10693 5476 31811 13651 15454 15455 22164 14476 287 9886 1113 10692 31812 13664 2873 22162 15450 15449 14477 1110 1113 9886 10693 6135 13664 31813 22164 15447 15446 14478 774 10077 772 10170 31814 27883 5280 27610 31815 27333 14479 590 10795 9954 11005 31816 19451 26592 26593 24571 31817 14480 1081 9561 1466 10922 31818 28116 6099 31819 31820 31247 14481 7742 7732 7680 9933 30182 31821 30116 30117 27860 29269 14482 8646 8424 8532 9806 20008 31822 16917 16363 17680 20007 14483 8415 10186 9759 11187 13078 16394 16391 31823 31824 31825 14484 9764 10186 8716 11187 24013 24012 17048 31546 31826 31825 14485 445 10431 9610 11072 30236 30100 23765 25065 22817 31827 14486 7943 9622 8125 10487 31828 16762 31829 24800 16765 16766 14487 754 9893 596 10528 31729 15329 4419 26846 12394 15331 14488 1216 10278 9936 10730 30889 27717 30888 31830 24137 27131 14489 324 9671 10273 10724 26827 21138 28709 30496 29605 23938 14490 1177 10592 9496 10717 20607 13621 20536 21516 22866 26365 14491 9268 9655 9595 10145 27677 19475 31831 31431 19558 12753 14492 9309 10083 9649 10664 28405 28406 28404 27239 29789 18184 14493 9248 10257 9665 10902 12527 16865 29551 23602 19824 16617 14494 8999 9708 8420 10419 21817 19383 31832 11440 12516 19382 14495 1485 836 1493 10352 5561 5566 4976 21021 23768 25445 14496 9239 9925 9571 10649 24883 17966 26949 27517 17965 17433 14497 1335 786 1010 10416 5348 5347 5349 31408 12929 26170 14498 7870 7873 10185 11006 31833 31834 24833 12891 12285 31835 14499 10080 10125 9275 10912 30331 30330 25356 26027 25549 24309 14500 324 10273 1386 10724 28709 25815 3035 30496 23391 29605 14501 10060 10504 9404 11024 28885 28600 26694 31836 31837 31838 14502 9432 10574 10376 10736 18877 28401 19038 20251 21569 22735 14503 1209 1363 741 9710 3804 5142 5134 29024 12417 20190 14504 8341 8969 9044 9711 28663 31839 24053 23401 16181 28662 14505 9486 9855 10552 10724 18066 15590 18592 23393 31253 31252 14506 9380 10410 9594 10959 31022 30063 24945 15094 28867 31840 14507 1048 10507 10193 10614 21776 26085 31841 21777 25510 18767 14508 1061 1060 9545 10678 3510 30882 24561 17840 24563 31842 14509 9346 10479 9845 11054 12846 21773 28748 22641 24735 24734 14510 9464 10037 9993 10593 21246 29497 29622 28644 29794 28643 14511 10018 10198 9396 10982 28798 29165 25264 22285 28286 22031 14512 740 9710 741 10399 24335 12417 4793 15983 12881 16778 14513 9092 8491 8492 9980 20171 31843 23002 20172 23004 20173 14514 9788 10291 9844 11060 22649 25412 31844 16457 25415 25417 14515 8607 10114 8579 10452 21299 26253 26252 23751 31845 14926 14516 9581 9831 9460 10569 20207 12225 31846 21470 16206 27956 14517 9007 9756 8669 10677 31047 16193 31607 21575 13214 14202 14518 9394 10361 9739 10719 11819 11820 11816 12734 23118 28986 14519 8325 8326 8327 10337 31847 31670 31848 25407 27301 31671 14520 9960 10025 9244 10977 30242 21155 25275 25277 25276 21621 14521 575 9894 10357 11148 31207 11967 31849 31208 27978 31209 14522 8237 8258 8238 10110 31850 31851 12047 13052 11918 19955 14523 9209 10153 9854 10455 15943 15944 15596 11814 17803 30947 14524 9355 9816 10432 11157 16531 17063 30909 17043 31074 22350 14525 9416 10345 10169 10378 15437 18284 15904 18760 26044 26043 14526 9270 10108 9820 10878 21121 15756 22104 20072 23566 16894 14527 9804 10289 9633 11120 30078 30076 21984 31852 30617 30616 14528 9284 9691 9654 10097 22525 20980 20809 20811 17988 31853 14529 9654 9691 9387 10097 20980 29995 20839 17988 13484 31853 14530 443 10178 444 11165 22886 29738 3622 25670 24153 25671 14531 8330 8643 9792 10262 31854 16517 30261 12550 16518 12938 14532 9514 10205 9324 10255 21228 16010 23880 17974 16011 15873 14533 8430 8383 10642 11130 31855 31856 15520 14432 15522 31857 14534 8250 8823 10632 11198 31858 29160 31859 31860 29161 24243 14535 8198 8265 10026 10611 29973 31295 31296 28812 21924 24503 14536 9618 10044 9154 11077 28772 31602 31603 25103 31861 19363 14537 6371 6386 9673 10319 6788 31862 29083 26777 29082 31863 14538 1383 6911 150 10687 31864 15908 2108 26816 29903 19087 14539 674 673 9647 11180 4235 20393 21878 30607 18916 20394 14540 9429 10073 9501 10440 14688 24178 31025 15928 19433 19138 14541 8329 8463 8561 9801 14244 26468 31865 11767 15649 14245 14542 9735 10431 9233 11072 22453 30850 15669 31866 31867 31827 14543 9520 9210 9901 10406 26803 29976 17475 21732 24426 28818 14544 9544 10072 10321 10782 17223 22637 25557 19930 22639 19931 14545 9347 10163 10083 10634 12825 15910 12985 13812 21388 16376 14546 6311 8854 10154 10524 30385 31868 31869 30386 17031 30387 14547 9612 9577 10195 10784 26565 28630 28631 31870 31665 26376 14548 9457 9797 9710 10735 11547 25392 23488 21472 21115 31672 14549 7927 9717 10552 11133 31871 29548 16738 31872 31873 29630 14550 7927 10552 7919 11133 16738 27426 31874 31872 31875 31873 14551 6288 161 1222 10297 31876 1931 31877 31878 27444 31879 14552 9336 10966 10196 11121 16270 22086 30985 29831 22681 27559 14553 9242 9687 9637 10092 17900 14200 30371 30626 24745 31623 14554 9637 9687 9250 10092 14200 11950 12958 24745 28331 31623 14555 787 10792 691 10937 20220 31880 4887 18624 31881 20221 14556 9364 10123 9994 10200 14427 30800 28250 12989 28252 14428 14557 9174 9141 6305 10277 31882 28185 31883 28426 26522 28186 14558 233 10211 1115 10460 21641 17921 2604 21642 17922 17462 14559 690 10839 10063 10937 31884 26248 28343 28344 22439 29534 14560 9695 10047 825 10588 24042 24043 24039 16936 31885 14332 14561 8308 10048 9696 10589 24046 20162 24045 31886 31887 31888 14562 9946 10652 7938 10829 28666 30245 31889 31890 30249 30248 14563 1102 423 399 10722 3436 3433 3434 31743 27662 24884 14564 8834 8286 8835 10723 31745 31891 31267 27018 31266 31746 14565 9602 10152 9281 11081 17206 17284 24765 29659 17647 17378 14566 885 10168 11021 11156 31892 31726 31893 31894 31895 31896 14567 9619 10466 9701 11005 24051 29601 29246 31593 31594 31897 14568 9536 9242 10077 10780 31898 26206 29644 29297 30298 17901 14569 9543 10153 9209 10455 17734 15943 17992 22510 11814 30947 14570 9248 9504 9916 10527 29026 22091 14402 18726 17580 26119 14571 8415 8713 10186 11187 31899 31900 13078 31823 31825 31901 14572 8713 8716 10186 11187 31902 24012 31900 31901 31825 31826 14573 256 9973 1397 10535 19945 27680 2719 18735 22678 17119 14574 9866 10764 9222 11100 21592 30851 27809 25598 31315 24099 14575 9575 10061 9661 11078 28779 30528 27647 30840 29346 29708 14576 8111 10704 10214 11000 31903 17459 28464 29578 29579 31904 14577 8372 10780 9589 10955 31435 31172 22989 22920 22991 31436 14578 7862 7863 7865 10564 31905 31906 11668 12367 12369 27843 14579 7796 7602 8782 9975 30483 31907 31908 30485 31909 30484 14580 8893 7639 9933 10590 31910 31142 30678 30679 17888 31911 14581 9834 10647 9640 10907 31912 25010 19676 22760 28183 28182 14582 10631 10810 1522 11143 29787 31913 28872 29753 29752 31914 14583 1356 1086 9844 10801 5431 31231 26669 31915 31232 16818 14584 1138 9608 1140 10498 23992 31916 6168 15587 31917 23991 14585 9614 10438 1595 10691 31918 31919 31920 20102 30012 17505 14586 9534 9382 10292 10349 29515 16189 27851 25491 31921 16843 14587 9624 9271 9998 10964 24574 13414 24575 28444 30600 29662 14588 306 300 10369 11123 2932 31922 25755 31375 30161 31923 14589 9586 10302 9313 10336 21613 15659 31287 24163 21934 25079 14590 9547 9703 9407 10100 20404 11343 20405 16319 16770 19247 14591 9636 10091 9807 10900 20543 31175 19844 30741 14385 31696 14592 9606 10506 514 11173 27738 28933 28932 30674 31924 31925 14593 8343 8724 9012 9587 31926 31927 31739 31737 31738 31928 14594 447 439 10292 10909 3633 19901 14076 15692 15694 19902 14595 8831 7808 7541 10477 31929 30491 31930 31931 30493 29990 14596 757 1098 1108 10860 5210 2994 5201 26908 20088 26087 14597 9373 10383 10148 10558 13278 31215 13205 14353 14352 21280 14598 9202 10248 9983 10914 16638 24340 11833 18478 31288 14444 14599 9513 9725 9309 10083 23112 28402 31932 30952 28405 21387 14600 8398 8121 8397 9663 26882 30148 30456 18804 27979 17028 14601 1158 9819 6951 10807 31933 29177 25116 25118 25120 15333 14602 9282 10497 9990 11121 12156 29178 17514 31934 31935 23853 14603 1373 1117 10538 10839 5401 31804 15935 26247 26249 31806 14604 9330 10193 9811 10814 28647 20306 28593 27298 29929 26086 14605 9647 9726 9299 11180 16900 29466 29467 18916 17605 18917 14606 1492 837 9695 10322 5570 24040 11522 11523 11315 31936 14607 9606 9738 9307 10287 31937 31938 30671 31939 27596 31940 14608 9432 10574 9779 10584 18877 22732 24879 12847 28836 18878 14609 9619 10247 9440 10299 24049 30434 20201 28006 17951 31941 14610 8997 10259 9715 11149 27557 30526 30525 27558 30670 25578 14611 9287 10727 9762 10924 26596 25058 15216 22102 22101 23876 14612 9592 10216 9420 10459 15848 16126 29302 23049 15416 17777 14613 1524 1595 10438 10691 5011 31919 17504 16999 17505 30012 14614 10228 10529 9294 11064 27871 27527 26117 27874 30950 27875 14615 9809 11109 9283 11133 17324 30253 26225 24357 30462 30712 14616 1449 10015 941 10455 23171 18261 5939 12031 22512 12707 14617 8499 8421 9076 11028 15150 30315 31942 16985 30316 16986 14618 8174 9704 8173 10328 31943 14712 31944 28316 12136 14735 14619 951 10962 9497 11158 19721 15625 19720 24525 24524 31339 14620 8759 8083 8186 10116 16196 31945 31946 16197 31947 14599 14621 9361 10576 9956 10957 21958 30093 12452 21960 31948 19320 14622 9723 10151 9381 10953 30168 30033 24247 23485 28291 21639 14623 8367 8452 10197 11095 31949 31950 13189 22868 22869 31951 14624 8773 9836 8550 10253 27097 20439 31952 29330 19635 20440 14625 8595 10395 8476 10992 30782 31953 31954 30783 31955 30784 14626 9513 9459 9800 10726 31956 31957 22370 28935 31958 12461 14627 9655 9733 9406 11144 19270 26425 31959 19271 20854 16734 14628 9610 10431 9735 11072 30100 22453 30098 22817 31866 31827 14629 9151 8522 9150 10232 31960 31961 30538 30540 27669 13646 14630 9375 10318 10110 10367 14701 14702 11916 13965 13966 31962 14631 8136 10283 9775 11171 19243 19242 19241 31963 31964 31965 14632 609 9948 612 10764 31966 29726 4485 24095 24527 29725 14633 10302 10336 9586 10843 25079 24163 21613 24844 28823 25080 14634 9273 10166 10245 10789 13291 31967 27819 27820 23608 19528 14635 1154 479 10042 11015 3832 31727 24105 22187 24106 28070 14636 661 10466 979 11068 23589 31968 4692 23592 31969 23593 14637 542 539 540 10018 4132 4127 4133 12830 26986 27015 14638 9522 10023 10824 10934 23828 29094 17610 30779 29097 29096 14639 9610 9735 9233 11072 30098 15669 28341 22817 31867 31866 14640 9743 9863 9229 10729 14955 15353 13973 15914 17597 31970 14641 9376 9890 9744 10729 31971 31972 25852 25853 20972 31973 14642 9275 9918 10014 10813 14760 23073 15363 16316 16318 20619 14643 1333 9757 814 10697 15968 31284 4226 26095 22016 14884 14644 7639 9933 10590 11046 31142 17888 31911 31974 31975 27862 14645 9207 10361 9558 10719 28984 30201 30200 28985 29405 28986 14646 9376 9729 10149 10954 22075 28311 29998 25854 21374 23904 14647 9271 9527 9805 10839 24572 29459 31976 27494 31977 27100 14648 9938 10318 8582 10568 23688 29257 31978 31979 29258 24967 14649 9559 10515 7677 10590 27925 27789 27923 26506 31980 31981 14650 7984 9968 7988 10490 17724 12948 31982 17662 11824 16605 14651 9571 9605 9239 10766 26679 26948 26949 29701 16034 30751 14652 9311 9570 9607 10765 31983 28530 31984 31985 30752 24269 14653 9304 9650 10088 10577 29813 26514 13160 15421 17032 26301 14654 9205 10226 9548 10418 14450 12601 14451 15539 15913 27303 14655 8767 7761 7643 11082 31986 31987 31687 31689 31688 31988 14656 1322 1585 1043 10342 5929 2425 5034 15128 23261 28292 14657 10078 10099 9299 10489 21544 15372 24437 31989 31159 29635 14658 9467 10099 10078 10489 13274 21544 21543 20372 31989 29635 14659 9599 9721 9325 10239 26236 30759 30046 23063 28711 24430 14660 1251 9594 10410 10959 28866 30063 30062 28472 31840 28867 14661 722 659 572 10131 4299 4298 4300 13356 13358 28660 14662 9346 10289 9845 10353 30077 18819 28748 31990 25649 31991 14663 9527 10063 10656 10868 26943 31992 30137 27507 30139 30961 14664 9311 9652 10079 10662 24983 28038 29938 22944 28047 24986 14665 9368 10511 9620 10567 30606 27686 29443 29444 14854 26553 14666 9267 9842 9574 11035 31674 26342 31993 22584 31994 31675 14667 7732 10324 7742 10948 29268 26676 30182 29270 26678 18360 14668 9362 10300 9537 10363 12973 18343 30867 11864 14253 12974 14669 8832 7778 6312 9802 31995 17799 31996 31997 20289 18047 14670 8847 10437 9515 10914 24337 13308 23935 25003 27451 25004 14671 9334 9715 9516 10076 29516 23673 28893 31529 30229 20632 14672 589 9619 661 10931 31396 24050 4384 31998 30041 26173 14673 1588 9603 1141 10746 23107 31999 2198 23108 32000 23109 14674 9559 10288 9984 10968 32001 22147 26288 26291 24840 18535 14675 9213 9913 9686 10228 11227 11228 11224 20035 26118 25926 14676 8223 10025 8299 10977 25340 31426 32002 25342 31427 21621 14677 1102 401 1103 10722 3435 3443 3442 31743 12088 12087 14678 8286 8131 8133 10723 31754 11611 32003 31746 12091 12090 14679 1196 7552 7571 10429 32004 32005 32006 32007 32008 32009 14680 8239 9568 8473 10994 28278 27951 28277 32010 31662 21935 14681 8132 9794 8134 10742 13691 32011 31496 11901 31498 13692 14682 8971 8035 8042 10050 32012 17002 30179 23491 14420 17003 14683 10367 10833 9427 10951 29143 29190 32013 28014 29925 29199 14684 7937 9946 8677 10165 14493 32014 32015 13198 32016 15359 14685 159 9554 1555 10572 19264 25465 2228 24793 32017 24794 14686 431 428 433 9613 3573 3578 3577 32018 22575 26971 14687 8626 9692 8557 10337 20079 16847 32019 19287 12578 16849 14688 9558 9843 10570 11174 25811 25814 24602 31077 30323 31078 14689 7990 10385 7993 11018 32020 30350 32021 32022 30058 29439 14690 1559 10405 9574 11035 32023 32024 32025 32026 31994 20193 14691 8134 9794 8189 10742 32011 13844 31548 31498 11992 13692 14692 9504 9796 9412 10705 29195 19747 21650 25162 23558 30653 14693 8899 10163 9795 10836 12824 15567 11931 32027 19058 16567 14694 9485 10478 9613 10488 21824 25659 25658 22228 25705 31568 14695 9825 10298 8921 10787 16679 15483 14716 30031 32028 18197 14696 10055 10798 9231 11151 31198 15514 32029 30401 16586 16591 14697 7846 7849 9596 10997 32030 32031 12163 32032 29733 15113 14698 8396 9583 8485 10868 32033 19054 32034 32035 26383 14348 14699 9417 9678 11145 11163 24517 32036 18396 22711 32037 25693 14700 7626 10396 7560 10477 29988 26107 32038 29991 26110 26112 14701 1228 156 1563 10345 1947 2214 2213 24078 15438 24079 14702 9344 10652 9784 11131 30017 30990 31342 32039 25867 32040 14703 8485 9583 8396 10656 19054 32033 32034 29413 32041 29185 14704 8900 10004 7967 10540 20328 19211 32042 18744 19220 16428 14705 8462 8461 8560 10711 32043 13088 32044 32045 19279 13680 14706 8462 8563 8641 10711 32046 19180 32047 32045 19168 19278 14707 9414 10280 9714 10691 30567 12971 30566 14179 27554 20301 14708 10287 11039 514 11173 32048 30514 32049 22590 31924 32050 14709 9552 10602 10296 10810 30576 19801 32051 29786 32052 31178 14710 9577 10046 9353 10803 22565 22566 22564 27363 26668 27748 14711 1403 1408 1063 10381 6083 6080 6081 21005 30922 24687 14712 8451 8265 9935 10611 24502 32053 12783 13799 16563 24503 14713 8596 9069 8562 10454 32054 12608 32055 32056 12610 12609 14714 1482 9909 9841 11020 27246 13701 24293 23815 24294 29751 14715 8791 7751 6360 10127 32057 32058 26730 26768 17638 28615 14716 9582 7995 10422 10809 28244 28247 28248 27328 22975 29164 14717 8582 9938 8556 10318 31978 23689 32059 29257 22616 23688 14718 9606 514 11039 11173 28932 30514 28734 30674 32050 31924 14719 9478 10069 9780 10626 24160 15054 27222 20429 26064 26063 14720 10426 10497 454 11063 22011 25602 32060 32061 25603 23851 14721 613 10791 611 11078 32062 23000 4492 32063 21594 23001 14722 8240 8994 8242 10348 32064 30820 17693 21046 29540 27909 14723 9606 11039 10287 11173 28734 32048 31939 30674 22590 32050 14724 549 983 9524 10736 4185 24642 27755 27311 23399 32065 14725 9240 10070 9588 10919 31219 25217 24252 24254 20812 28914 14726 9389 10038 10354 10689 12771 24418 28021 29600 26322 32066 14727 9538 10016 9468 11028 14631 13341 14632 21111 16987 17609 14728 474 1337 383 10485 3356 3355 3344 20027 20029 21722 14729 9389 10038 9954 10354 12771 32067 28022 28021 20600 24418 14730 9757 9873 9262 10697 17548 17547 13529 14884 16006 32068 14731 10064 10490 9405 10947 21512 20941 31599 25718 28432 19034 14732 9971 10081 9419 10578 28945 13995 16236 16239 16238 25347 14733 9636 10192 605 11100 15717 12193 12039 32069 32070 24937 14734 9267 10100 9703 10599 20891 19247 18288 29625 23926 16321 14735 9460 9831 9581 10622 12225 20207 31846 12226 30924 11961 14736 9807 10091 8914 10900 31175 21549 32071 14385 32072 31696 14737 9527 10845 8721 10942 27761 31350 27505 29642 32073 32074 14738 8340 8812 8339 10493 32075 31182 24934 16015 23381 15032 14739 9501 10144 9429 10440 28050 23578 31025 19433 15928 20044 14740 10036 10259 9462 10991 24260 18633 24259 13570 18634 17389 14741 8568 10668 10041 10968 32076 18340 29687 28412 18533 18176 14742 8807 10481 8808 10783 19515 25236 32077 19084 26104 19516 14743 8636 8991 8942 10451 31618 31616 31588 12749 12743 30252 14744 9701 10466 10073 11005 29601 28089 31698 31594 32078 31897 14745 1552 9558 1173 10570 25574 19642 2318 28574 24600 24602 14746 739 846 10920 11052 5130 20455 32079 32080 19471 20456 14747 9712 9915 9432 10260 22729 19035 12409 17553 17552 31379 14748 9322 9688 9566 10106 14813 31613 32081 27045 32082 27012 14749 1272 1235 10068 10978 5150 14017 26921 26922 20509 24611 14750 9546 10249 10167 10473 32083 25435 30650 32084 24421 25439 14751 9547 9703 9393 10621 20404 23925 17822 28769 23145 11852 14752 733 672 675 9726 4799 4229 4800 18596 22683 23634 14753 1030 734 578 9727 4331 4330 3184 29157 28564 15222 14754 702 10249 10167 11031 32085 25435 26448 32086 18539 26452 14755 9443 9845 9790 10450 20017 25673 18559 20018 27675 18822 14756 8035 10050 8794 10488 17003 22725 32087 17004 22229 14421 14757 8036 10421 10135 10926 30978 16435 32088 30981 28373 30982 14758 9540 10292 9382 10349 16699 16189 25796 32089 16843 31921 14759 9259 10330 9750 11188 32090 22399 32091 32092 22401 21953 14760 9526 10084 9264 10206 26686 19741 24843 21124 22841 32093 14761 7936 9946 10620 10652 32094 27453 28515 28517 20377 28666 14762 10027 10198 9396 10822 21780 29165 29166 14089 32095 19614 14763 1349 9516 1207 11066 30630 28687 5298 32096 32097 27770 14764 9284 10882 9639 11048 23911 18289 28298 28299 24956 30224 14765 9411 10238 9824 10363 28821 22804 13622 22398 23872 22535 14766 8274 8160 10099 10301 32098 14874 25901 25904 14872 14873 14767 8629 10443 9121 10785 32099 24921 32100 32101 24919 24920 14768 9830 10011 9397 10571 18078 24960 24961 24855 32102 32103 14769 8129 9917 10632 10954 32104 32105 28789 28791 25168 23903 14770 8244 8320 8926 10365 26261 18590 32106 26262 16043 19284 14771 549 550 10257 10901 3213 31446 27309 32107 16870 31447 14772 9381 9993 10151 10826 30034 21467 30033 32108 19439 22261 14773 8038 8758 9743 10729 32109 32110 31511 22701 15914 32111 14774 8038 9744 8834 10729 31512 27017 32112 22701 32113 20972 14775 266 1189 270 10790 2759 2771 2770 22345 23166 32114 14776 9243 10080 10171 10323 13232 24857 27634 12900 30445 16204 14777 8396 10656 9583 10868 32041 29185 32033 32035 14348 30139 14778 9606 9568 10506 11173 28566 26381 27738 30674 31925 30673 14779 9426 10277 10127 10384 15741 18308 16975 27306 26158 17220 14780 176 1538 6328 10375 2015 32115 21150 22001 22002 27211 14781 8949 8367 8366 10001 30542 11774 32116 24365 13244 13243 14782 167 6315 1573 10440 32117 17786 2007 28198 19432 19434 14783 10112 10610 1024 10981 30343 29322 32118 15370 29324 29323 14784 968 1168 10217 10338 5971 15638 14504 16922 15044 15385 14785 6339 6340 10144 10440 6764 20043 28049 24235 20044 19728 14786 9568 9307 10096 11173 30672 32119 17833 30673 32120 30409 14787 9701 10073 9389 11005 31698 31110 11380 31594 28023 32078 14788 9522 10471 10023 10883 16772 11331 23828 23405 29931 24282 14789 6952 6955 6954 9620 7420 7330 7443 27681 27936 28376 14790 695 9845 1458 10289 18821 25627 4913 18820 32121 18819 14791 1380 9834 10647 11138 32122 31912 30158 30159 28534 29833 14792 9085 8688 9079 9625 32123 22174 30071 29856 13943 22175 14793 8688 9085 8889 9625 32123 29857 31156 22175 13738 29856 14794 1004 9791 865 10331 32124 14322 5686 28890 22772 22773 14795 9513 9800 9711 10726 22370 31774 32125 28935 23402 31958 14796 477 9563 478 11015 30287 23395 3817 32126 22131 23394 14797 8309 10235 9704 11065 31577 16112 32127 31601 30074 30023 14798 627 1412 714 9714 4361 4576 4575 22028 20595 15308 14799 7814 7813 9685 10974 26060 19088 32128 26061 17417 19526 14800 9814 11040 9759 11187 21265 21264 13988 27166 31824 27167 14801 9694 10262 9904 10891 28430 16421 18403 31584 31583 32129 14802 9324 10103 9696 10358 14726 28591 11215 11930 11929 27572 14803 9655 9406 10082 10762 31959 17207 30477 11410 32130 32131 14804 7608 7770 7539 10865 32132 32133 32134 32135 32136 32137 14805 1359 1554 1553 10344 6036 2443 5859 12330 19523 15253 14806 10077 10170 774 10510 27333 27610 31814 26426 27611 24351 14807 9572 9658 9258 11162 23306 16805 31165 29288 32138 32139 14808 8771 8535 9544 10321 31585 31587 25552 25555 25557 32140 14809 428 9613 431 10670 26971 32018 3573 19378 32141 22978 14810 1040 9702 1041 10352 17020 21567 5565 12657 20095 17021 14811 626 584 627 9931 4358 4360 4359 18214 28367 15134 14812 9178 7785 8745 10808 32142 29356 32143 32144 29357 17235 14813 10176 10566 8839 10798 16085 22848 32145 15516 19687 23621 14814 1555 10572 9554 11035 32017 24794 25465 32146 31676 32147 14815 9419 10081 9971 11095 13995 28945 16236 16131 26930 16132 14816 9061 8430 8383 10642 19550 31855 32148 19563 31856 15520 14817 9504 9248 10160 10527 29026 13235 22092 26119 26120 18726 14818 8436 9520 8437 10892 30645 19891 30641 27564 26083 16648 14819 9577 9518 10462 10803 21074 19964 27485 27363 32149 27362 14820 458 456 459 10407 3718 3720 3719 29463 22663 28224 14821 1251 9594 443 11165 28866 22884 3621 30064 25670 25672 14822 7925 9855 8673 10539 32150 25524 32151 32152 24109 25523 14823 7890 9586 10336 10843 24819 24163 24820 32153 25080 28823 14824 455 9981 1372 10497 21534 28051 3705 21535 32154 14975 14825 8955 8157 8156 9634 27794 31801 32155 27793 31802 15380 14826 8931 8377 10089 10728 32156 27481 20646 20649 18313 27483 14827 9261 9611 9576 10783 18565 26562 31531 19935 26105 31001 14828 9577 9612 9355 10784 26565 32157 22675 26376 32158 31870 14829 1333 814 1381 10697 4226 5469 3950 26095 30018 22016 14830 210 209 10255 10608 2366 21306 23390 27364 16087 21307 14831 664 1231 850 10559 4759 4761 4703 32159 19221 18428 14832 8046 8042 8041 10009 27546 13012 32160 27547 13265 13264 14833 9307 9606 9568 10644 30671 28566 30672 15618 30876 32161 14834 9258 9855 9671 10724 31251 31635 25444 25422 23938 31252 14835 9596 10704 7846 10997 17457 19144 12163 29733 32032 25589 14836 9554 10599 1555 11035 30531 23694 25465 31676 32146 32162 14837 9689 9905 9272 10772 26823 27816 27158 26886 24286 24274 14838 1081 1080 1466 9561 6096 6100 6099 31818 28116 32163 14839 9540 10156 10105 10349 32164 27535 32165 32089 22646 18956 14840 8416 9532 10576 10957 15091 14584 19626 32166 19320 32167 14841 9633 10289 9346 10353 30076 30077 21985 14589 31990 31991 14842 8789 8111 8941 10214 28463 32168 20982 20985 20987 28464 14843 9781 10162 8482 10835 15841 15840 15815 25346 32169 17468 14844 424 423 9863 10430 3438 24886 17291 17445 14957 28258 14845 9667 9476 10651 10961 25590 17509 25793 25593 23957 23956 14846 7943 9622 10487 10891 31828 16766 24800 24159 24801 32170 14847 9863 10178 9229 10729 26003 30198 15353 31970 17597 32171 14848 9376 10178 9890 10729 32172 29739 31971 25853 31973 32171 14849 563 564 565 10458 4189 4253 4252 22302 32173 22301 14850 8365 8367 8452 10197 11772 31949 32174 13188 31950 13189 14851 1058 9774 1317 10593 32175 31697 2951 31763 22084 26792 14852 9311 9607 9570 10974 31984 28530 31983 22946 32176 31414 14853 8112 7948 9602 11167 32177 32178 32179 32180 32181 32182 14854 7586 10808 9483 10998 25459 29340 28975 25460 29782 24714 14855 9334 10481 9715 11149 21395 29517 29516 24027 30670 30669 14856 8845 10286 8265 10611 17804 32183 24501 13800 24503 18435 14857 8171 9569 8149 11064 26075 22231 26073 32184 32185 30949 14858 8636 8477 8965 9730 32186 18522 31034 16401 18278 15936 14859 10089 10359 9228 11010 20647 18922 18834 25798 29200 25799 14860 9456 10132 10030 10580 12492 24497 20489 15527 21460 16519 14861 8084 8083 8082 10532 32187 26733 32188 17358 18942 32189 14862 772 10077 773 10170 27883 22891 4904 31815 27332 27333 14863 8112 9030 11002 11081 32190 25489 32191 32192 25490 21823 14864 8834 10729 9744 11191 32113 20972 27017 27019 27021 32193 14865 9784 9905 9493 10652 29085 21187 28203 30990 27818 27817 14866 1458 9845 876 10289 25627 24941 4912 32121 30965 18819 14867 9511 10313 9512 10562 23370 18113 32194 22007 18117 18116 14868 9539 9412 9962 10857 28896 25446 14094 28605 26163 28897 14869 8806 7764 8805 9826 27730 25716 32195 27731 24656 20411 14870 8090 8089 9571 11110 31518 31517 29697 32196 17967 32197 14871 8059 9513 10083 10634 29950 30952 30951 30870 21388 23113 14872 8097 8107 10756 10944 32198 29940 32199 32200 29943 29942 14873 9846 10487 9320 10891 15673 23941 25829 24158 31540 24801 14874 9417 11145 9799 11163 18396 17497 20437 22711 22710 32037 14875 9336 9957 10196 10966 25826 30987 30985 16270 22086 24810 14876 9561 10339 1466 10922 24750 24902 28116 31247 31820 32201 14877 1335 1011 1317 10593 6019 6021 2944 31771 22084 29793 14878 488 487 10057 10762 3868 19161 28354 30054 19162 17587 14879 177 6300 6331 10261 30592 6579 25253 25689 25690 30594 14880 7800 9155 9618 10414 32202 32203 27372 31629 29855 32204 14881 7673 9475 10537 10863 26402 19339 30015 26403 31528 25133 14882 9640 9255 10021 10647 25007 11581 28141 25010 16912 12350 14883 1025 9523 1208 10735 27258 30732 3410 32205 32206 21471 14884 8545 9512 10446 11119 19236 19237 18981 32207 22490 32208 14885 6343 6376 6345 10414 6529 6839 6838 18507 20341 25192 14886 9373 10139 9722 10337 13005 13311 18838 12577 26967 32209 14887 9404 10232 9562 10512 26697 26698 26696 27393 24031 27670 14888 9248 9898 9517 10160 23601 20560 29552 13235 21348 25106 14889 8384 8921 8937 10298 32210 12401 31388 31389 15484 15483 14890 1473 10354 10245 10850 26446 15292 32211 23952 32212 26447 14891 1546 10526 9542 10833 28873 19785 25241 32213 29457 32214 14892 9425 10633 10041 10968 17011 29848 32215 18174 18533 24841 14893 9460 10433 9581 10569 14987 25150 31846 16206 21470 16207 14894 9087 9520 8436 10936 30644 30645 30642 32216 32217 27446 14895 1559 9574 10405 11141 32025 32024 32023 32218 32219 29342 14896 295 299 296 10369 2913 2912 2883 20195 14708 23670 14897 9546 10179 10167 11190 30649 30648 30650 29333 32220 29584 14898 8765 9820 8974 10368 26885 15317 32221 32222 19458 15758 14899 574 648 523 10357 4053 4052 3687 23550 17059 31620 14900 1493 10352 1041 10949 23768 20095 5567 23769 20098 20100 14901 9334 10259 10076 10741 24207 32223 31529 22085 23641 24210 14902 8375 9970 8376 10271 29361 32224 32225 31032 32226 30836 14903 686 9892 786 10416 28642 32227 4870 22335 26170 16143 14904 316 313 9572 11162 2997 20824 16107 32228 29288 29287 14905 9286 9874 9756 10677 18323 19630 13365 15028 14202 32229 14906 580 985 732 10733 4057 4341 4340 13869 23332 20802 14907 9667 10651 10134 10961 25793 31779 20700 25593 31651 23957 14908 9508 9971 9419 10175 24066 16236 31658 17343 17274 16360 14909 9533 9343 10114 10837 32230 14924 32231 32232 32233 14969 14910 1328 1337 886 10485 3376 5757 5756 11844 31534 21722 14911 9364 10545 9994 11116 28350 18551 28250 30275 26516 25994 14912 9632 10065 10168 11021 19343 17837 24443 31479 31726 31480 14913 9282 9990 10306 11121 17514 11968 32234 31934 32235 31935 14914 8084 9965 8083 10532 17357 15037 32187 17358 32189 14440 14915 7868 8757 10007 10701 30598 22694 30971 27903 12729 27330 14916 8932 8226 10484 11186 32236 30826 32237 32238 30827 18830 14917 10105 10156 9540 10365 27535 32164 32165 27719 32239 16450 14918 9310 9920 9646 10606 14472 28919 19223 12140 25171 16828 14919 9939 9950 9444 11043 23668 16944 20272 29066 25548 32240 14920 7968 7915 9763 10738 32241 28455 32242 32243 11919 29152 14921 8304 10365 8244 11190 25769 26262 26260 29334 32244 29335 14922 9578 9695 9337 10588 31222 23197 12276 22795 23196 16936 14923 9218 9696 9579 10589 25785 31765 27224 25156 28098 31887 14924 605 1310 604 9636 4458 4457 4432 12039 16424 32245 14925 619 621 755 9642 4532 4535 4534 18009 32246 32247 14926 8875 8217 8752 9639 16524 32248 32249 18803 25238 18290 14927 8342 8740 8902 9641 27707 27704 31595 26977 20264 17259 14928 8802 8938 8404 9645 32250 29606 27705 18936 20625 15365 14929 676 674 673 9647 4802 4235 4803 21694 20393 21878 14930 227 225 226 9651 2562 2557 2563 28923 29433 32251 14931 9413 9622 9550 10568 31791 26234 24789 12114 30662 24966 14932 9240 10115 9590 10894 32252 22220 24253 24276 20728 28420 14933 9305 9630 9623 10661 29997 28469 26555 17203 30348 28755 14934 9427 10110 10318 10367 26856 14702 26855 32013 31962 13966 14935 9674 10298 9825 10787 30406 16679 16455 30470 30031 18197 14936 391 403 9988 10737 3393 32253 16002 13137 16188 29818 14937 9503 10171 10080 10323 27946 24857 26097 25763 16204 30445 14938 7957 10529 7954 11064 32254 27870 32255 32256 27873 27875 14939 1233 598 544 10961 4161 4158 4159 23955 29420 32257 14940 8031 9595 8085 10674 28774 28989 28988 23021 32258 31661 14941 1145 9522 591 10934 30532 19492 3981 32259 32260 30779 14942 611 9866 609 10764 21591 31625 4483 21593 24095 21592 14943 9526 10206 9264 10302 21124 22841 24843 17954 22486 20636 14944 234 10550 9590 11023 30766 12574 32261 30767 30818 29714 14945 8440 8441 8257 10782 32262 15999 24890 24892 19897 19896 14946 8991 9749 8979 10451 32263 32264 30250 30252 28801 16029 14947 8991 8739 9753 10451 30251 16876 32265 30252 16026 26008 14948 9466 10218 9848 10544 25950 31157 14411 15932 30415 15105 14949 9258 9509 9846 10133 29846 21762 29847 16806 14871 23913 14950 9210 9897 9686 10796 22625 28652 30915 22626 28654 20522 14951 9506 8766 10728 10847 28027 29470 22608 29724 32266 29722 14952 1461 9521 1490 10753 26945 22096 5546 32267 14048 15754 14953 9422 10632 9794 11198 32268 17452 30585 30586 24244 29161 14954 9282 9990 9981 10368 17514 21032 14974 17513 21034 17185 14955 1470 1154 10042 10234 4363 24105 11336 16626 16628 22186 14956 9370 9889 9817 10984 21406 18362 21405 27998 24605 24607 14957 9993 10037 9381 10593 29497 30659 30034 29794 30658 28643 14958 700 821 890 10142 4937 4940 4939 12659 13099 13098 14959 8894 9518 8679 10761 30633 26570 30631 32269 14397 19965 14960 562 9517 355 10760 30634 21350 3214 32270 32271 13302 14961 7895 8307 10231 11137 32272 18375 30989 30934 23131 23130 14962 9336 9903 10491 10848 16269 30421 20078 23476 32273 23477 14963 8822 9926 8820 10586 32274 15748 28621 25470 12977 16021 14964 9530 10266 9364 10317 29694 29695 29114 18716 12628 32275 14965 9335 9531 10265 10316 30699 28458 31710 12623 32276 12565 14966 8546 7807 10313 10412 32277 30208 32278 32279 30206 30207 14967 9569 9686 9210 11164 26113 30915 31285 32280 32281 32282 14968 9226 10330 9890 11184 32283 22691 32284 32285 22692 22160 14969 7912 9519 7904 10815 30638 30639 30637 32286 32287 15583 14970 9286 10292 9613 10909 14934 21273 23730 15693 20888 15694 14971 8991 8381 9749 10451 31619 16028 32263 30252 16029 12750 14972 8991 9753 7996 10451 32265 11359 31617 30252 12745 16026 14973 9790 10246 9240 10894 15963 28845 31218 18724 24276 23316 14974 8894 8585 9518 10803 30632 28690 30633 32288 27362 32289 14975 945 948 203 9858 2460 2459 2461 27115 25771 31201 14976 9553 9680 10503 10740 16140 28155 28319 19044 32290 31481 14977 9234 10541 9656 10642 12530 32291 30279 19485 32292 19416 14978 9534 10009 9233 10502 17596 13266 25704 26640 26639 25987 14979 210 10251 211 10608 23518 23606 2484 27364 26496 26497 14980 9466 10544 10217 11034 15932 30416 15226 29003 29002 18892 14981 10114 10721 9533 10837 32293 29331 32231 32233 32232 31308 14982 8555 8554 10567 10836 32294 13940 32295 32296 14382 14381 14983 1349 1206 9516 10859 6205 28688 30630 32297 22556 17237 14984 1523 1163 160 9914 2235 1850 2233 26320 24982 25729 14985 9207 10247 9619 10299 26583 24049 29454 32298 28006 31941 14986 8140 9604 8816 10862 29029 27990 29028 32299 29488 26790 14987 890 9834 1380 11138 12338 32122 5770 29832 30159 29833 14988 9215 10131 9704 10328 11302 22477 32300 25528 14735 27231 14989 810 10182 642 11031 25409 32301 4649 16705 32302 14078 14990 9053 7967 8900 10004 19213 32042 32303 19212 20328 19211 14991 7972 7971 7973 10003 11663 30703 32304 13250 30013 13251 14992 9289 10458 9952 10901 27555 18672 24915 16869 12358 22343 14993 9639 10791 9812 10875 24661 26749 32305 29957 24971 30144 14994 9761 10187 9352 11022 16397 23540 22449 23349 23542 19910 14995 9154 8962 10044 11069 32306 31503 31602 31604 31394 31505 14996 662 10689 10073 11005 27963 14690 32307 27964 32078 26324 14997 9118 10396 7808 10477 27282 29987 32308 20958 29990 26112 14998 742 1118 1440 11063 5143 5145 5144 28955 32309 32310 14999 742 10005 1118 11063 28954 25126 5143 28955 32310 23586 15000 9288 9641 10158 11150 22847 14766 22666 21920 23773 32311 15001 9459 9800 9711 11063 31957 31774 22389 22391 22393 31775 15002 6968 7790 8717 10600 32312 32313 32314 32315 28179 31718 15003 7715 8770 7640 10861 32316 32317 32318 32319 31800 32320 15004 7620 7551 9541 10585 32321 15074 22937 32322 13980 26850 15005 8676 10453 9580 10690 24990 26267 26268 30967 26007 22611 15006 8144 10359 8141 11010 23610 23924 32323 31515 25797 25799 15007 772 1344 771 10077 5276 5275 4902 27883 24711 18966 15008 9873 10183 9262 10697 17487 15771 17547 32068 16006 32324 15009 6372 6363 6307 10277 6779 6778 6509 28425 28617 17215 15010 9313 10369 9942 11122 12117 17013 15428 32325 32326 32327 15011 9334 9715 10076 10259 29516 20632 31529 24207 32223 30526 15012 9231 10055 9563 10798 32029 25781 27358 15514 26485 31198 15013 7672 1579 7665 10537 32328 32329 32330 32331 32332 32333 15014 9622 9550 10006 10733 26234 14971 26235 31792 14557 14972 15015 9098 6997 7775 10648 32334 30627 32335 29808 28168 30628 15016 9288 10158 10134 11150 22666 20108 20743 21920 23774 23773 15017 9945 10056 9322 10646 28545 14815 29958 30370 14032 15190 15018 8189 9794 8822 10586 13844 31264 28620 12975 25470 16497 15019 10296 10380 9552 10810 32336 21234 32051 32052 29786 21842 15020 1139 10746 10498 10998 32337 32338 32339 32340 32341 29781 15021 9914 10521 7684 11082 25731 30190 30189 32342 32343 32344 15022 8512 8314 8556 10896 19878 22615 32345 19882 22617 19880 15023 8660 9696 8230 10358 11216 20164 32346 11928 32347 11929 15024 9450 10220 9922 10500 25839 23076 25029 15837 24149 32348 15025 669 1385 10013 10720 4784 26469 32349 32350 27007 27006 15026 398 1250 10371 10945 3429 19452 32351 32352 25662 31261 15027 10096 10506 9568 11173 32353 26381 17833 32120 30673 31925 15028 9314 9788 10387 10787 28369 16160 13041 17134 17136 20761 15029 8158 9873 8413 10183 32354 31084 32355 31089 23256 17487 15030 1402 9874 446 10182 31085 32356 3667 23253 29192 25499 15031 9557 10846 782 10937 28910 28911 20104 29150 32357 32358 15032 6322 8928 7806 10512 31570 32359 32360 31571 30906 30710 15033 9857 9273 10720 11170 16596 16599 16600 28510 28599 27723 15034 9465 10350 10044 10689 15126 15766 15050 32361 32362 32363 15035 9251 9696 9579 10103 25186 31765 16485 17393 17394 28591 15036 7635 6392 1591 9664 32364 32365 32366 32367 32368 32369 15037 1167 10072 7705 10818 31340 32370 32371 30622 32372 26347 15038 1388 9867 783 10177 31134 16080 5332 24139 13069 16256 15039 1388 395 9871 10177 3414 16258 31135 24139 16261 16260 15040 1516 926 10631 10810 2355 32373 29783 29785 29787 32374 15041 9026 8408 9862 10179 32375 14057 31136 31138 29582 29583 15042 747 10709 10132 11141 32376 12494 32377 32378 32379 32380 15043 9954 10038 9348 10354 32067 12872 12427 20600 17302 24418 15044 9465 10044 9997 10689 15050 24454 24308 32361 15399 32362 15045 8940 10490 8943 10947 22533 21511 31707 28064 25717 19034 15046 7706 10472 7769 10948 28750 26270 26887 24343 26272 26212 15047 1349 9516 10076 10859 30630 30229 32381 32297 28908 22556 15048 8554 8797 7756 9912 32382 26529 20576 13939 20578 26531 15049 998 9539 996 10767 23709 30011 6000 23428 32383 12150 15050 9823 9277 10146 11071 22686 31107 23016 25365 27961 25366 15051 9012 10768 9587 10851 20900 20964 31738 18459 25608 20901 15052 8373 8950 10340 10779 32384 11362 26843 27812 16898 16232 15053 723 10148 1445 10558 13204 23544 4846 22873 23545 14352 15054 9405 10064 9583 10490 31599 21611 28340 20941 13846 21512 15055 9576 9611 9261 10461 26562 18565 31531 30388 11857 15704 15056 9355 9612 9577 10462 32157 26565 22675 17042 27485 19388 15057 1020 747 10132 11141 4699 32377 32385 32386 32379 32378 15058 6308 6379 9618 11077 6537 32387 27371 27374 25103 28263 15059 9233 10502 9610 11072 26639 25986 28341 31867 22817 25064 15060 9438 10380 10296 10810 19829 32336 19713 21841 32052 21842 15061 9533 10721 10641 10837 29331 31185 26480 32232 14944 31308 15062 9395 9691 9575 10684 25679 31018 12248 12638 12640 25680 15063 9381 9891 9774 10593 26938 12850 24246 30658 26792 26274 15064 1559 9574 1232 10572 32025 21026 2349 32388 25451 25453 15065 9564 10771 9477 10775 26250 23163 17994 19176 19175 27250 15066 8081 9609 9047 11193 18861 13713 27054 26159 13716 13718 15067 8601 9718 9089 10420 31319 32389 32390 32391 32392 30429 15068 9588 10267 9473 10395 19602 19601 19414 11520 32393 32394 15069 8730 8910 8393 10554 32395 29471 25440 25442 19022 21566 15070 937 10401 10342 11090 32396 28293 32397 32398 27499 25331 15071 265 264 10032 10320 2748 13432 20319 15705 16219 13096 15072 8083 9965 8186 10116 15037 32399 31945 14599 31947 15671 15073 8154 8640 10163 10634 32400 12823 30398 30399 16376 27220 15074 8089 10649 9571 11110 31519 17965 31517 32197 17967 17438 15075 1546 9542 10370 10833 25241 26688 26687 32213 30964 29457 15076 9227 10115 9585 10415 14188 25371 27727 12675 25373 15979 15077 7763 7640 8770 10861 31798 32317 32401 31799 32320 31800 15078 9781 9944 9230 10835 19305 13647 27277 25346 13649 13578 15079 7937 7934 7936 10620 29664 32402 32403 32404 28515 24782 15080 9376 10411 9890 11165 32405 24694 31971 32406 24696 24152 15081 9735 9352 10284 11022 22451 26410 30049 23348 19512 23542 15082 8063 8061 8954 10363 31654 24487 32407 19569 14252 24488 15083 10819 11083 9212 11196 32408 29386 14214 29156 32409 32410 15084 677 9721 1009 10233 21449 32411 4824 22635 32412 22634 15085 704 892 9553 10548 4960 28850 24323 22118 24324 32413 15086 9182 8544 7642 9698 32414 32415 14653 14656 14657 30217 15087 7683 1262 160 9914 31160 1854 24977 24980 24982 31163 15088 9229 10145 9777 10967 22740 12754 28294 22741 28917 17818 15089 9503 10171 9482 10516 27946 23527 27196 27194 23498 23529 15090 9482 10171 9503 10323 23527 27946 27196 26154 25763 30445 15091 6311 10154 6353 10524 31869 20993 6796 30386 21333 17031 15092 8021 8022 9597 10925 28990 17072 28111 30892 20014 20219 15093 9202 10010 10224 10914 11836 22827 23832 18478 25005 28532 15094 9557 9966 9306 10364 29121 15270 31699 27297 12702 16888 15095 495 10762 9925 11144 32416 17435 30920 30921 18226 32417 15096 7943 8125 9622 10891 31829 16762 31828 24159 32170 32418 15097 8529 10477 7799 10609 25384 18546 32419 25385 21633 21635 15098 6361 1228 190 10345 32420 1943 32421 32422 32423 24078 15099 514 517 638 10506 4007 4010 4009 28933 32424 27736 15100 10194 9212 11083 11196 30362 29386 25532 25019 32410 32409 15101 9659 9390 10131 10328 20787 13357 18663 25529 27231 12138 15102 9625 9851 9301 9999 14670 12643 13944 24580 11235 25194 15103 9181 9544 8535 10782 30719 31587 31586 32425 32426 19930 15104 1434 10507 9556 10825 24007 24008 19435 28966 20284 22996 15105 9470 10716 10470 10940 32427 25012 30803 18093 31127 32428 15106 7733 10072 9544 10818 31337 17223 26837 32429 32430 26347 15107 9254 9803 9782 10929 14386 28445 28446 16978 30609 30611 15108 9653 9270 9927 10618 21122 18722 28807 25139 18098 17297 15109 8644 9101 8435 10892 20552 27520 32431 20554 27521 15476 15110 9332 10140 9814 10335 13468 13467 13469 32432 23218 23220 15111 9586 9950 9939 11043 19061 23668 26090 30973 29066 32240 15112 8572 10571 9475 10863 32433 32434 32435 32436 25133 32437 15113 8596 9742 9069 10454 32438 15735 32054 32056 12609 15736 15114 9711 9800 9459 10726 31774 31957 22389 23402 12461 31958 15115 9475 8572 10863 11197 32435 32436 25133 26232 32439 32440 15116 708 720 9629 10941 4732 17696 16381 30988 17958 17957 15117 8245 8191 9068 10759 32441 11798 32442 32443 16315 12986 15118 8113 9738 8114 10379 32444 25894 32445 22286 31713 30578 15119 8598 9742 8596 10454 26863 32438 32446 26160 32056 15736 15120 303 10389 311 10858 32447 18796 2930 32448 21158 18875 15121 9407 10023 9929 10824 11327 26912 26911 21905 28387 29094 15122 8910 8762 8094 10554 32449 27575 21564 21566 15782 26797 15123 7946 7947 7955 10902 24899 25177 32450 21315 25179 19706 15124 7920 7918 10552 11115 32451 17947 32452 32453 17948 16502 15125 446 10182 9874 10909 29192 25499 32356 29193 18324 15762 15126 8598 8596 8597 10454 32446 32454 27644 26160 27646 32056 15127 8314 8512 8442 10895 19878 32455 19952 19619 20598 19879 15128 9674 10416 1318 10987 17761 30204 30052 15681 32456 32457 15129 9442 10376 10290 10427 21701 30262 17242 17102 23269 21990 15130 9735 9822 9217 10627 27341 24613 25956 22821 24614 24112 15131 7601 9975 7602 10372 22267 30484 32458 22144 30487 22268 15132 9307 9738 9606 10644 31938 31937 30671 15618 32161 32459 15133 8008 8009 8006 10360 29815 28940 32460 22051 18080 25624 15134 9382 9678 10281 11163 22180 24518 24213 16191 22712 25693 15135 8515 9154 10044 11077 32461 31602 18628 19074 19363 31861 15136 7944 7945 7932 10397 32462 26258 25027 14129 17790 26259 15137 1090 730 1039 10113 3236 5088 3121 13215 13217 13866 15138 7575 7578 9552 10374 32463 26198 32464 32465 28492 28491 15139 1039 738 1378 10113 5089 5126 5128 13217 15712 17152 15140 9516 9261 10461 10481 22555 11857 23684 22554 31428 20401 15141 287 1309 1287 10692 2786 2876 2875 22162 19360 19362 15142 1111 1110 1426 10693 5479 6134 6133 23284 28912 22164 15143 8708 9736 7994 10385 32466 22547 32467 26917 32468 30128 15144 467 9538 964 10676 18346 30430 3774 17228 18108 15058 15145 7918 7924 9057 10133 30374 31361 32469 16499 15275 30375 15146 9533 9358 10124 10786 31289 14846 32470 26487 14847 12496 15147 8811 8625 9797 10422 32471 22972 14241 14243 11551 22973 15148 1441 10103 889 10155 14725 32472 5765 15014 32473 15015 15149 8598 9069 8596 9742 32474 32054 32446 26863 32438 15735 15150 7937 7936 9946 10620 32403 32094 14493 32404 27453 28515 15151 567 10964 10327 11039 32475 32476 32477 32478 28735 32479 15152 1265 10718 10027 10982 32480 20719 21778 22030 22029 32481 15153 9574 10572 1559 11035 25453 32388 32025 31994 32026 32147 15154 9236 10722 9754 10945 27590 14237 18257 25661 25660 24889 15155 9512 10562 10279 11119 18117 29742 31258 32208 32482 32483 15156 9639 9284 10875 11051 28298 22526 29957 18291 32484 23912 15157 394 1208 9523 10838 3381 30732 19579 32485 19323 32486 15158 9423 10153 9543 10455 28380 17734 26528 14468 22510 30947 15159 6376 8876 7800 10414 25191 32487 32488 25192 31629 25193 15160 10498 10746 1139 10755 32338 32337 32339 32489 32490 32491 15161 9671 10467 328 10553 23936 19105 30663 21140 19107 19108 15162 8112 9602 7948 11081 32179 32178 32177 32192 32492 29659 15163 8032 8993 8047 9756 30733 32493 25517 26184 13366 19535 15164 8038 8758 8030 9743 32109 32494 22699 31511 13972 32110 15165 8738 7991 7996 9753 16263 14773 32495 12004 11359 19335 15166 8984 8415 8413 9759 32496 31556 23254 25281 30729 16391 15167 499 497 1313 9747 3923 3925 3924 13702 11572 11304 15168 1291 1103 1162 9750 6124 6122 5313 25250 25497 15183 15169 8272 8271 8211 9746 31557 32497 23250 30728 24305 31558 15170 401 1102 399 9754 3435 3434 3424 14235 30364 31742 15171 1402 810 1403 9748 4651 5451 5450 30726 18086 16703 15172 555 557 507 9757 3975 3974 3972 24380 25613 13528 15173 7980 8043 7986 9752 22376 32498 19204 13827 19203 22375 15174 758 1097 757 9751 5209 5208 5203 13427 26907 24225 15175 8979 8991 8381 9749 30250 31619 32499 32264 16028 32263 15176 814 1333 557 9757 4226 3976 4224 31284 13528 15968 15177 1436 810 1421 9748 5453 4949 5454 29154 31173 16703 15178 8912 7870 7888 9755 32500 31559 24385 22876 30727 13281 15179 8738 8739 8740 9753 32501 17897 17258 12004 20397 16876 15180 8472 8379 8875 9758 32502 16525 23804 19367 26328 18286 15181 8470 8469 8379 9758 21172 21491 32503 21173 18286 19797 15182 9007 8047 8669 9756 21574 32504 31607 31047 16193 13366 15183 8381 8272 8863 9749 31560 23251 32505 16028 17334 30730 15184 8739 7996 8991 9753 32506 31617 30251 16876 32265 11359 15185 280 278 1053 9767 2828 2830 2829 22838 16022 13535 15186 221 220 222 9762 2533 2538 2537 31636 25059 29895 15187 8993 8666 8669 9756 31678 25981 32507 19535 16193 25982 15188 8892 7888 8716 9764 26053 31561 32508 32509 17048 31562 15189 278 279 277 9767 2823 2822 2817 13535 16024 21555 15190 230 231 229 9766 2583 2582 2577 27543 20312 26412 15191 7910 7968 7915 9763 32510 32241 28453 28454 28455 32242 15192 8915 8919 8388 9761 23257 31563 32511 27346 14081 30731 15193 471 569 991 9768 3784 3793 3792 25208 25224 14061 15194 282 1494 1353 9769 2850 2849 2536 12043 32512 22933 15195 8834 8131 8286 9744 32513 31754 31745 27017 31744 14238 15196 8038 8045 8834 9744 22702 32514 32112 31512 27017 20971 15197 1317 1058 302 9774 2951 2950 2926 31697 26793 32175 15198 503 9644 504 11155 17256 29559 3944 32515 29561 29560 15199 949 9525 1169 10610 31777 14153 2291 32516 23039 23041 15200 1009 10547 10233 11037 32517 17674 32412 32518 32519 18444 15201 1537 6298 1572 10278 27915 32520 1915 32521 29762 28895 15202 6982 9911 6956 9912 28032 23758 7395 22657 23761 23762 15203 8763 9620 6955 10511 26494 28376 28375 32522 30045 27686 15204 8176 8175 8259 9772 22913 27460 32523 19392 16885 29205 15205 8176 8267 8919 9772 32524 31575 23258 19392 30743 16725 15206 606 9628 777 10842 11840 32525 4468 15773 32526 15774 15207 741 783 671 10399 4795 4794 4792 12881 29821 12882 15208 740 671 670 10399 4787 4490 4788 15983 14647 29821 15209 8327 10337 9941 10834 27301 26985 31669 27302 21366 19289 15210 9162 9163 11095 11098 32527 32528 32529 31188 32530 32531 15211 8458 8267 8322 10446 21367 22593 32532 21369 22594 21368 15212 6397 9664 6316 10396 32533 28961 6823 29233 24724 26108 15213 8989 8901 9043 9960 13883 32534 19744 13885 15940 13884 15214 9473 10395 10267 10979 32393 32394 19601 32535 32536 12581 15215 355 9517 10257 10760 21350 18488 21351 32271 17006 13302 15216 7956 10387 8163 10867 23732 32537 32538 26512 32539 18906 15217 7768 9173 6338 10144 32540 32541 32542 32543 32544 32545 15218 10093 10763 241 11071 32546 32547 28484 27960 28485 32548 15219 8387 8227 9827 10341 32549 19925 18653 18651 18652 20261 15220 9579 10048 9210 10936 32550 24131 26802 27447 22627 21017 15221 9531 10465 10007 10706 27469 15196 27468 27828 30984 28965 15222 9505 10112 10610 10849 24826 30343 17563 22355 25390 27792 15223 8523 9843 9151 10361 14808 30539 32551 11855 32552 14809 15224 9811 9998 9306 10424 29495 16408 26321 28594 15272 16604 15225 9465 10166 9547 10621 13789 28970 30047 12524 28769 12080 15226 9420 10319 10297 10459 14624 17770 15489 15416 26780 26779 15227 8394 10335 9944 11146 30267 19018 30265 31021 32553 30305 15228 1304 804 9706 10479 4816 16216 12473 15853 15854 24268 15229 1285 1517 1596 9548 2174 5655 6244 12602 15831 27462 15230 1037 9543 10455 10603 29645 22510 22324 22325 15513 14317 15231 8742 8256 8886 10223 23172 12288 32554 23174 14034 12250 15232 7849 7846 9596 10745 32030 12163 32031 14005 30842 31566 15233 922 10719 1550 11174 30032 28577 5887 32555 30322 16989 15234 8129 8130 8045 10632 32556 32557 28790 28789 25167 32558 15235 7844 7846 10704 10997 32559 19144 32560 32561 25589 32032 15236 210 212 211 10251 2489 2488 2484 23518 23606 31683 15237 9125 10332 7761 11082 19838 32562 32563 17522 31988 19839 15238 9751 10666 9305 10860 19913 21332 21869 25858 27381 23420 15239 1014 1015 10100 11035 5013 32564 15784 20192 20191 32565 15240 9153 9151 9843 10361 32566 30539 32567 32568 14809 32552 15241 9817 9932 9370 10619 23825 11364 21405 19186 28826 24025 15242 9781 9902 9489 10554 20623 22434 22746 15783 22739 20624 15243 901 1444 1451 11087 4616 3056 5811 30199 28132 28131 15244 6953 6958 6957 9555 7445 7311 7421 29619 22010 29618 15245 8734 9733 10082 10840 27409 26914 27412 32569 32570 32571 15246 8822 8821 9926 10586 27206 15413 32274 25470 16021 13877 15247 9544 10556 9181 10714 32572 32573 30719 29338 30721 23369 15248 7714 7712 10338 10546 32574 14514 29589 29590 24913 24912 15249 8949 10756 8484 10950 24366 32575 32576 24367 32577 24368 15250 9590 10315 9479 10550 18454 18453 17352 12574 25838 32578 15251 9805 9527 10538 10839 29459 26944 22295 31977 26249 27100 15252 9321 9688 9566 10757 25605 31613 31298 29805 31299 29767 15253 9349 9652 10583 11108 30506 21837 29366 28052 32579 32580 15254 9388 9829 9729 10520 24188 30656 12093 11915 12095 20660 15255 9780 10069 9478 10394 15054 24160 27222 16682 13630 19151 15256 1034 1388 783 10177 5333 5332 5139 13067 13069 24139 15257 1388 1339 395 10177 3416 3371 3414 24139 16260 24115 15258 429 437 436 10178 3585 3584 3583 26004 22887 32581 15259 443 437 444 10178 3618 3623 3622 22886 29738 32581 15260 9026 9047 8423 10179 32582 30910 32583 31138 30911 14282 15261 696 10377 9981 11105 32584 12003 28731 28732 21538 32585 15262 10041 10071 9423 10285 30085 14250 18341 32586 13917 14251 15263 8961 9075 10044 10621 32587 15051 31393 28105 15052 12523 15264 8842 7531 10268 10418 31121 31125 31124 32588 20054 32589 15265 10223 10444 9391 10498 29306 18785 12172 32590 13893 32591 15266 8767 9125 7761 11082 31756 32563 31986 31689 31988 17522 15267 8899 9795 8553 10836 11931 19057 32592 32027 19059 19058 15268 8728 7531 7580 10268 31122 32593 30695 30698 30697 31125 15269 9286 10182 9874 10677 14933 25499 18323 15028 32229 32594 15270 9319 9700 9582 10965 30126 20390 23510 18989 30056 32595 15271 9309 9725 9513 10426 28402 23112 31932 22316 28934 30097 15272 968 1168 1584 10217 5971 2448 5824 14504 17025 15638 15273 9483 7588 10746 10935 28976 25108 28979 30191 24172 25110 15274 702 703 10167 10249 4652 25437 26448 32085 25435 25436 15275 9405 9679 9587 10143 16789 20897 28217 15400 20899 11506 15276 9447 10785 10052 10823 19123 26056 27449 29655 15313 24923 15277 8464 8700 8605 10811 32596 32597 19501 21524 24994 32598 15278 9224 10756 10040 10944 26011 26012 21382 21383 15012 29943 15279 9569 9294 9686 11067 26115 26114 26113 32599 30997 22574 15280 9602 7948 11081 11167 32178 32492 29659 32181 32600 32182 15281 9835 9954 9389 10759 29363 28022 11956 13984 12987 31456 15282 883 1305 1306 9683 5748 4901 5747 12787 17229 15261 15283 995 953 994 9684 5954 5803 4202 17231 31145 14334 15284 9117 10268 7784 10374 28842 30437 32601 28843 30440 28493 15285 10038 9465 10354 10689 22062 23596 24418 32066 26322 32361 15286 9953 10142 9446 10769 18137 13125 18134 13587 17774 17399 15287 8137 9604 8140 10749 27991 29029 29027 28165 32602 30859 15288 6335 9697 6332 10776 29984 30652 6835 29985 32603 16702 15289 779 540 9728 10244 4129 26988 26318 28982 26458 32604 15290 8656 9688 9024 10536 21436 14814 32605 29882 14612 16477 15291 436 9594 1251 10967 22885 28866 3620 25835 28474 25836 15292 10031 10212 9160 10971 29902 29640 29900 32606 30447 30446 15293 9449 9699 9561 10698 18811 31246 26533 14144 24752 24223 15294 9853 10282 8519 10561 17918 32607 28035 19779 28036 15276 15295 1015 10599 10100 11035 32608 16321 32564 32565 20191 32162 15296 9654 9882 9329 10930 18271 15212 19234 22751 15228 22752 15297 6959 9692 6899 10533 11459 24407 7312 13773 25316 13774 15298 8274 8273 8160 10301 32609 15843 32098 25904 14873 15844 15299 8041 8697 8972 10009 16824 31254 32610 13265 26465 20253 15300 9355 10432 9737 11157 30909 21102 30908 17043 32611 31074 15301 391 404 403 10737 3395 3394 3393 13137 29818 18303 15302 9300 10708 9921 10889 21381 19807 26283 15876 22125 29525 15303 9295 10049 9916 11089 28817 25637 22494 19297 22731 25640 15304 9434 9559 10180 10870 29005 27924 14021 17174 32612 32613 15305 9623 10220 9450 10500 27798 25839 18694 14759 15837 32348 15306 9301 9533 10138 10786 26486 32614 13195 12595 15002 26487 15307 9531 10265 9625 10706 28458 14597 24577 27828 18194 23305 15308 9835 9954 9357 10795 29363 19919 20614 20569 21998 19451 15309 9902 10517 9239 10975 30620 30271 13871 13872 12946 30624 15310 8834 8758 10729 11191 32615 32111 32113 27019 32193 32616 15311 810 1402 642 10182 4651 3676 4649 25409 32301 23253 15312 8412 8158 8413 10183 31088 32355 32617 11593 23256 31089 15313 8413 8415 8414 10183 31556 12991 32618 23256 12144 13076 15314 447 1402 446 10182 3668 3667 3632 14077 29192 23253 15315 8340 8272 8381 10184 32619 31560 16014 16013 14197 23252 15316 7870 7873 7888 10185 31833 32620 31559 24833 24386 31834 15317 8272 8339 8271 10184 32621 31442 31557 23252 31443 23336 15318 8415 8713 8712 10186 31899 32622 12998 13078 13080 31900 15319 7888 8737 8716 10185 32623 18765 31561 24386 17047 12283 15320 8713 8716 8715 10186 31902 31363 32624 31900 31364 24012 15321 8919 8267 9028 10187 31575 24804 32625 23259 24805 16723 15322 8919 8390 8388 10187 32626 23806 31563 23259 16396 23807 15323 9171 8827 9167 10459 32627 32628 32629 30564 32630 32631 15324 515 567 10327 11039 4012 32477 28352 28733 28735 32478 15325 355 10257 550 10760 21351 31446 3212 32271 31445 17006 15326 8599 8247 10209 10910 32632 30666 18419 18422 18424 30917 15327 1417 9615 10721 10751 30120 31555 31553 30121 28816 20695 15328 9497 9969 9826 10962 15622 24410 24409 15625 31318 15626 15329 7984 7982 7983 10622 29092 27214 32633 24693 27215 15245 15330 9924 10482 9439 10717 26535 23873 14209 26536 15585 23447 15331 8164 8166 8165 10484 32634 32635 27288 27287 24297 32636 15332 9207 10247 9739 10719 26583 20631 28983 28985 23118 14695 15333 9547 10166 9465 10245 28970 13789 30047 32637 23595 31967 15334 9272 9689 9566 10056 27158 31626 32638 22935 32639 19445 15335 9566 9688 9322 10056 31613 14813 32081 32639 14815 14817 15336 393 397 10371 10928 3402 24559 31573 32640 24560 21791 15337 6333 9172 6389 9697 31192 32641 6453 25472 32642 31194 15338 9774 10593 9308 10858 26792 24664 13312 18874 18873 18980 15339 7674 7675 9627 10180 32643 32644 31525 32645 25932 30938 15340 7550 1507 7609 9832 32646 21908 32647 32648 21906 21907 15341 7701 9502 10242 10770 25326 19826 30891 28563 25353 23013 15342 6369 6309 6371 10319 6594 6787 6786 27323 26777 29934 15343 7780 7694 8753 10085 32649 32650 32651 23068 32652 32653 15344 8031 10421 9595 10674 23020 28777 28774 23021 31661 16512 15345 1324 719 643 10249 4656 4655 4171 14781 26266 15033 15346 9409 9535 10501 10617 22080 26963 14520 15361 30667 22081 15347 9567 634 10448 10778 28148 28149 18973 17573 18974 28153 15348 9019 9898 7947 10527 27616 19703 32654 32655 21292 21293 15349 9470 9853 9551 10060 19778 25498 28757 32656 12904 28129 15350 1123 9565 1315 10932 29556 31592 3254 30787 32657 20933 15351 9633 9253 9804 11120 21180 31259 21984 30617 31852 30770 15352 9554 9393 10252 10414 28957 30873 31769 21225 22755 28958 15353 9669 10848 9336 10925 23478 23476 21261 20015 27070 32658 15354 9006 8467 8998 10684 15403 32659 32660 15231 32661 15404 15355 6335 10278 10776 10831 29983 29986 29985 32662 32663 32664 15356 9402 10222 9540 10249 14126 18204 32665 14782 19674 16621 15357 9649 9270 10664 10878 16135 29790 29789 30760 32666 20072 15358 9565 9687 9242 10960 31576 17900 32667 30790 26207 31624 15359 8068 10605 10237 11028 30499 30004 32668 30500 14373 30501 15360 432 1106 1389 10538 3491 3601 3600 22294 24716 30481 15361 1023 1332 9920 10930 6047 30112 32669 32670 32671 32672 15362 1129 1130 11094 11144 3912 23525 27352 32673 23526 21782 15363 450 9610 445 11148 24302 23765 3662 27976 30237 27977 15364 9956 10576 9532 10957 30093 14584 29276 31948 32167 19320 15365 974 975 9830 10537 2468 18073 31275 31276 19341 19340 15366 727 726 9722 10275 5062 32674 13310 13305 14027 22520 15367 9910 10200 9500 10369 25753 28251 31499 25756 21400 22906 15368 8105 8106 8196 10043 32675 29041 32676 25166 29043 29042 15369 1201 6300 10261 10725 30591 30594 30593 32677 27313 32678 15370 6978 6976 6974 9616 7377 7288 7457 20409 25077 20967 15371 572 547 1005 10285 4173 4175 4174 14223 14635 28267 15372 1349 10076 9516 10510 32381 30229 30630 32679 23674 20634 15373 7816 10079 7817 10974 31412 29119 32680 31413 25244 29120 15374 9315 10203 9581 10433 12543 25252 32681 12363 25150 13286 15375 6330 6324 9562 10570 6748 24030 21036 25311 25313 28659 15376 9974 10293 506 11156 16453 12912 12037 29436 32682 29437 15377 1504 10548 10150 10802 15263 15264 11346 32683 23352 32684 15378 8832 6312 6318 9802 31996 6445 32685 31997 32686 20289 15379 9473 9726 9656 10992 19250 30957 32687 23821 32688 23822 15380 6966 6905 6969 9682 7343 7242 7344 20550 23122 27726 15381 8967 9712 9018 10445 12200 20803 32689 12907 21954 17305 15382 574 10051 648 10357 30864 32690 4053 23550 31620 11250 15383 9427 10526 9698 10895 29924 20668 32691 26857 30014 29007 15384 9652 10662 9816 10877 24986 13926 21835 28039 20073 28048 15385 505 504 10028 11155 3953 17778 32692 32693 29562 29561 15386 9401 10470 10716 10940 17577 25012 31042 22953 32428 31127 15387 9695 9861 9350 10322 30812 27687 11311 11315 11314 25021 15388 8785 8088 8093 9690 21429 28968 32694 18754 28967 20847 15389 8898 8793 7871 9687 32695 32696 20965 17142 11951 26743 15390 8895 9024 8656 9688 32697 32605 21431 21434 21436 14814 15391 9653 10108 8153 10890 16893 27578 27577 18643 32698 32699 15392 9897 10228 9213 10796 26473 20035 28653 20522 28655 26511 15393 8659 10575 9528 10993 26373 26374 18748 26124 25998 15570 15394 780 1395 1401 9691 4516 5321 5320 19010 20981 22309 15395 6328 6327 6295 9558 6718 6716 6663 21151 19643 23848 15396 9383 10081 10197 11095 14178 15612 13190 26929 22869 16132 15397 1244 10200 295 10853 30029 22905 2915 32700 27274 27276 15398 9399 10643 9664 10725 20527 29428 31569 20269 29430 25667 15399 529 649 528 9787 4078 4077 3657 28210 28080 27595 15400 928 1520 1599 9541 5599 2436 5912 13979 23664 29135 15401 9265 10510 10077 11066 28658 26426 21614 21615 18968 26428 15402 9279 10554 9731 11092 23356 15781 24917 22530 23920 26798 15403 9650 9331 10577 10700 25940 12296 26301 21108 29426 23034 15404 7710 7711 10518 10861 32701 19609 32702 32703 26052 26051 15405 8827 9673 9167 10459 30038 22442 32628 32631 32630 17321 15406 9546 10439 10249 10473 32704 14785 32083 32084 25439 21886 15407 9238 9644 10043 10893 29512 23223 11425 18800 21441 19210 15408 1327 782 1185 10017 4886 5329 5331 28942 20080 20081 15409 427 426 428 10104 3545 3568 3567 21756 19191 18556 15410 9737 9816 9355 10583 29365 16531 30908 29367 16561 15236 15411 8136 8138 10283 11171 32705 32706 19243 31963 31965 32707 15412 9538 10523 9467 10605 22727 20374 26180 28342 17429 30378 15413 675 804 785 10541 4815 4814 4813 26879 16946 12531 15414 6291 6345 9554 10572 6695 21224 19266 24795 24794 27423 15415 9849 10293 1319 10881 23676 31732 32708 32709 31733 13553 15416 9311 10662 10079 10974 22944 28047 29938 22946 29120 21130 15417 7959 9689 7950 10652 21494 32710 32711 21495 32712 19448 15418 8673 9855 8989 10646 25524 15589 32713 24111 19675 18406 15419 9284 9691 9575 10061 22525 31018 28778 22524 28779 19009 15420 7806 6302 6322 10512 30905 6569 32360 30906 31571 30907 15421 1588 191 1141 9603 1669 2394 2198 23107 31999 24361 15422 9302 10054 9972 10777 27835 25941 18603 25601 23980 23827 15423 931 1530 10482 10592 4996 26363 21571 20596 24126 26362 15424 8605 8700 8701 10811 32597 32714 28892 24994 24166 32598 15425 8932 8166 8164 9741 32715 32634 32716 32717 32718 32719 15426 8400 8508 10218 10544 32720 30570 16522 16523 15105 30569 15427 9569 9210 10551 11164 31285 32721 26048 32280 32722 32281 15428 6368 10297 9592 10417 29839 29303 29838 32723 22994 25456 15429 9461 9988 9681 11125 21506 21507 16007 32724 24848 32725 15430 8465 8579 8963 10114 31657 31033 31243 14923 29057 26253 15431 7930 7925 8673 10539 32726 32151 24110 23810 24109 32152 15432 7959 7950 7939 10652 32711 32727 21647 21495 21649 32712 15433 8908 9781 8482 10835 25344 15815 32728 25345 32169 25346 15434 9892 10458 9289 10760 16103 27555 12124 12126 12125 22304 15435 916 1547 10470 10716 2285 17575 32729 32730 25012 25011 15436 8230 10358 9696 11137 32347 11929 20164 20166 20165 32731 15437 7640 10290 7711 10861 31797 23268 32732 31800 26051 24318 15438 6330 6324 6301 9562 6748 6746 6669 21036 19813 24030 15439 8081 8799 8079 11193 32733 32734 18862 26159 20609 32735 15440 696 1372 9981 10377 3716 28051 28731 32584 12003 32736 15441 9676 10102 9373 10558 19163 14416 16579 16580 14353 27931 15442 1476 10221 9909 11020 28947 23504 28946 32737 29751 13711 15443 8076 8023 8007 10176 28751 29796 32738 28752 21865 14641 15444 10076 10259 9292 10741 32223 30166 20633 23641 29169 24210 15445 8564 9620 8763 10511 24539 26494 32739 26550 32522 27686 15446 8281 9032 9612 11134 29075 23724 25374 29022 29023 30326 15447 7993 7995 9582 10809 28513 28244 28514 32740 27328 29164 15448 10296 10602 9438 10810 19801 19799 19713 32052 21841 31178 15449 1330 786 9892 10416 4871 32227 16102 12928 16143 26170 15450 9775 9893 9204 10528 32741 31213 14999 32742 32743 15331 15451 9077 10038 9068 10350 22063 12770 32744 15125 13295 16456 15452 9535 10093 9277 10763 29921 31105 24728 22082 18647 32546 15453 1512 1474 1593 10380 6228 5906 6233 19337 32745 16004 15454 8572 9475 10571 11197 32435 32434 32433 32440 32746 26232 15455 1267 10715 1376 11178 28045 32747 3286 31203 32748 23620 15456 8274 8277 10046 11032 32749 28857 25903 27893 11603 28858 15457 9008 9862 9007 10677 15406 31441 31606 13212 21575 14731 15458 10033 9246 10601 10991 12712 17402 25595 12897 25629 12898 15459 7674 10180 9627 10537 32645 25932 31525 31524 29923 23156 15460 9481 10579 9793 10899 20280 18779 21394 20180 20642 25081 15461 949 950 9525 10849 5370 20661 31777 32750 22354 32751 15462 7771 7650 8790 9660 31721 32752 32753 31722 32754 31723 15463 9886 10637 9297 10692 26148 15458 32755 15449 32756 19361 15464 9459 10306 9990 11121 12460 11968 12653 32757 31935 32235 15465 1418 807 1327 10017 5440 4881 5441 29696 28942 21901 15466 7548 7596 7579 10423 29617 21015 32758 28043 18950 25844 15467 787 10063 798 10326 22437 28031 4889 18622 32759 22438 15468 6936 6926 6935 10356 7401 7337 7426 11560 21726 22949 15469 8995 10097 8469 10241 13552 19796 32760 14567 19798 14568 15470 9811 10327 567 10964 32761 32477 32762 27125 32475 32476 15471 9809 10513 9642 10874 24354 28708 25449 20070 29575 29574 15472 8900 9084 10004 10495 32763 29498 20328 18743 20327 23703 15473 9351 9695 9578 10047 30813 31222 31372 28696 21740 24042 15474 9579 9696 9251 10048 31765 25186 16485 32550 20127 20162 15475 1240 1522 158 10631 2225 2224 1713 29411 25947 28872 15476 9265 9536 10077 10779 32764 29644 21614 16233 30297 29293 15477 9000 7857 8999 10419 32765 11494 32766 32767 11440 12230 15478 9844 10291 9444 10669 25412 30497 32768 14447 31046 31045 15479 9513 8060 10726 11045 29952 31464 28935 22371 32769 31009 15480 9231 10055 9593 10852 32029 29207 28071 13546 24281 29209 15481 9506 10549 8934 10847 15719 16554 18831 29724 29723 26788 15482 9318 9879 9759 10693 13650 13990 16392 16632 32770 15455 15483 9755 9875 9335 10692 20710 13654 13280 32771 16631 15453 15484 9764 9886 9354 10693 32772 13663 17574 32773 16629 15447 15485 9354 9886 9764 10692 13663 32772 17574 16630 32774 15449 15486 654 9948 9661 11078 14511 19110 19109 32775 29346 29348 15487 9341 10078 9707 10523 21803 24398 30451 20591 32776 30407 15488 1244 299 295 10200 2914 2913 2915 30029 22905 23669 15489 9677 10361 9207 11161 30202 28984 23359 20479 25076 26774 15490 8080 8759 8081 10816 32777 32778 21939 15980 27055 16198 15491 8907 10020 10639 11130 22057 25686 27825 32779 25688 18143 15492 7690 9793 7707 10456 24119 17041 32780 24120 32781 18778 15493 8266 8313 8445 10609 20056 32782 28806 22536 28745 22537 15494 1076 988 10388 11111 5997 21462 32783 32784 19317 21463 15495 9451 10447 9734 10800 32785 29863 32786 31234 29788 29867 15496 9154 7800 9155 9618 32787 32202 32788 31603 32203 27372 15497 9529 10208 9358 10265 19669 12546 32789 19671 13207 15621 15498 9596 7849 10745 10997 32031 14005 30842 29733 15114 15113 15499 9059 9972 10577 11128 31644 14553 31645 32790 26303 26849 15500 1363 1311 9705 10557 3806 32791 18561 18560 17280 29412 15501 878 9705 1311 10557 17279 32791 3341 16798 29412 17280 15502 1043 9549 196 10423 23263 28041 2423 27106 28044 21117 15503 568 9624 688 10964 32792 29672 4273 32793 27124 28444 15504 8079 10190 10055 10798 18032 18033 18031 32794 31198 19688 15505 8038 8834 8758 10729 32112 32615 32109 22701 32111 32113 15506 561 1382 10140 11103 3941 18616 28139 28140 23577 27586 15507 9407 9522 10023 10824 16771 23828 11327 21905 29094 17610 15508 9550 10568 9938 11008 30662 31979 29188 24791 21487 19091 15509 8196 10043 9662 11027 29043 29044 29040 32795 28088 29000 15510 9586 9444 9950 11043 31043 16944 19061 30973 32240 25548 15511 8112 9602 10829 11167 32179 24769 32796 32180 32797 32181 15512 1378 788 10628 10920 5127 32798 20248 15715 20249 27528 15513 9818 10618 9653 10873 20143 25139 18642 20064 29176 29175 15514 9059 9062 9972 11128 32799 29566 31644 32790 26849 32800 15515 6948 8828 7758 10074 22047 32801 32802 22046 21929 22045 15516 9395 9575 9691 11079 12248 31018 25679 23843 30574 30529 15517 1316 1312 9885 10655 4316 32803 31639 21737 19153 31380 15518 9553 10503 9980 10740 28319 26244 20556 19044 20558 32290 15519 1352 669 1385 10013 4406 4784 4786 29440 26469 32349 15520 8112 11002 9602 11081 32191 29658 32179 32192 29659 25490 15521 9247 10381 10995 11029 16108 21006 20767 28980 31432 27982 15522 8208 10091 8209 10821 31378 26559 32804 24459 26560 19254 15523 9780 9292 10259 10741 27223 30166 26062 30337 24210 29169 15524 7660 7699 9544 10714 32805 32806 25553 29336 29338 32807 15525 9391 10498 9608 10509 13893 23991 31115 13896 23993 13897 15526 1316 9894 575 10655 31646 31207 4315 21737 31206 14194 15527 9786 10041 9423 10285 17688 18341 24555 31611 13917 32586 15528 206 9511 946 10686 16171 32808 2475 21185 32809 21186 15529 8940 7984 7988 10490 22531 31982 32810 22533 11824 17662 15530 9390 10041 9786 10285 13602 17688 12175 14222 31611 32586 15531 9391 9934 9661 9948 12169 29345 20709 14510 19110 29344 15532 8614 8193 8316 9703 26670 32811 32812 16056 27262 11344 15533 9275 10125 10771 11182 30330 32813 12774 30239 32814 16874 15534 9345 10267 10395 10979 19332 32394 14928 32815 12581 32536 15535 765 10021 1280 10463 32816 29999 5247 29935 25214 29133 15536 9941 10337 8326 10956 26985 31671 28683 26129 28684 26969 15537 7946 8142 8967 9712 32817 32818 12201 12199 12200 16302 15538 9554 10572 9842 11035 24794 25873 21223 31676 31675 32147 15539 9507 10065 9426 10384 17703 17176 17702 21718 27306 26924 15540 9585 10111 9227 10774 26546 32819 27727 27613 27728 32820 15541 405 9839 9908 11125 27244 13698 27245 28829 24849 29391 15542 8349 8348 10520 10645 32821 32822 29597 29598 23716 32823 15543 9664 10585 9399 10725 28145 16342 31569 29430 20269 21980 15544 9587 10143 9668 11042 20899 11504 20898 24038 17369 23908 15545 1167 7646 7705 10072 32824 32825 32371 31340 32370 31759 15546 8959 8471 9788 10291 32826 20762 32827 30700 22649 22650 15547 9639 10875 9812 11051 29957 24971 32305 18291 32828 32484 15548 10078 10489 9707 10523 31989 25259 24398 30407 32776 17821 15549 8322 8267 8259 9772 22593 32829 30363 22592 16885 16725 15550 9383 10081 9971 10578 14178 28945 26928 25210 16239 25347 15551 9206 10031 9574 10212 28581 27758 28580 25317 32830 29902 15552 9779 10574 9074 10584 22732 25197 32831 28836 24683 18878 15553 9813 10606 9646 10876 28964 25171 21497 20067 29432 29431 15554 9570 9607 10358 10974 28530 32832 26508 32176 32833 31414 15555 9493 10652 9946 10829 27818 28666 24439 24767 31890 30248 15556 8545 11119 10313 11176 32207 32834 32835 28335 32836 32837 15557 9661 11078 10061 11079 29346 29708 30528 30530 29712 29711 15558 8665 10101 8664 10474 17984 28783 32838 17986 26876 15553 15559 9153 9843 9151 10710 32567 30539 32566 32839 32840 26980 15560 8254 9935 8265 10611 28498 32053 29972 28497 24503 16563 15561 9434 10180 9627 10870 14021 25932 19820 17174 19821 32612 15562 9308 10220 9623 10500 27797 27798 25324 29159 14759 32348 15563 9784 9905 9344 10141 29085 23711 31342 29084 30432 28674 15564 793 774 776 10170 5292 5285 5293 23467 31100 27610 15565 9429 10073 10350 10682 14688 31109 22806 18630 20703 31026 15566 8164 9741 10484 10867 32718 27986 27287 27289 24301 18904 15567 863 10053 1385 10720 28321 20101 4785 28804 27006 17667 15568 9158 8615 9156 10252 32841 32842 31028 31029 22754 14742 15569 267 269 10202 10869 2772 12553 32843 32844 19188 29229 15570 9153 10361 9843 10710 32568 14809 32567 32839 26980 32845 15571 9260 10068 9641 10566 19510 14763 13784 12913 12008 25310 15572 9598 10088 9720 10988 14979 25393 30152 25610 24183 25395 15573 156 6373 6351 10169 24077 6612 31377 24513 17339 24512 15574 8643 7937 8677 10165 11706 32015 32846 13197 32016 13198 15575 1024 9858 948 10981 29321 31201 5948 29324 31202 20139 15576 1279 1280 765 10021 5248 5247 5226 30283 32816 29999 15577 8751 8441 9779 10519 27741 18275 31224 27743 18276 16000 15578 8299 9960 10025 10536 28523 30242 31426 28524 18350 14613 15579 9030 8540 8976 10022 21821 32847 28062 21822 28061 15697 15580 7981 7977 8913 10264 31761 32848 29122 14824 26611 13248 15581 7979 8074 8913 10264 31762 29123 32849 13246 26611 18842 15582 1537 6298 10278 10730 27915 28895 32521 25256 27131 27916 15583 7764 9104 9025 9616 32850 32851 25111 20408 14919 32852 15584 9852 9926 9204 10528 29113 15747 32853 32854 32743 32855 15585 8166 9741 8932 10484 32719 32717 32715 32636 32237 27986 15586 8164 9741 8166 10484 32718 32719 32634 27287 32636 27986 15587 454 456 10426 11063 3708 28225 32060 25603 32061 32856 15588 9666 9856 9219 10750 21997 28705 32857 24771 29571 24772 15589 8254 8197 10560 11171 32858 32859 30543 28500 30544 32860 15590 9482 9966 9557 10963 21238 29121 27879 21932 24775 21933 15591 9983 10248 9515 10914 24340 32861 25969 31288 27451 14444 15592 10268 10296 9552 10374 17634 32051 26200 28493 28492 28844 15593 9393 10414 9618 11069 28958 29855 19260 32862 31605 32863 15594 7953 9621 7952 10654 29691 30504 31027 32864 32865 19313 15595 9513 9309 10426 10888 31932 22316 28934 28936 24647 22014 15596 8380 10012 8292 10364 32866 16037 32867 32868 25923 25924 15597 359 1090 332 9694 3101 3098 3099 21646 11806 11476 15598 7697 10714 10530 10818 32869 32870 31250 32871 32872 32873 15599 8714 9759 11040 11187 32874 21264 27172 27174 27167 31824 15600 9341 9707 10019 10734 30451 26456 24181 20593 24995 29769 15601 9281 10309 9621 10654 17283 22882 18931 17559 19313 31174 15602 9091 8428 9578 10918 28417 24434 15862 16881 16883 32875 15603 988 9577 736 10917 22931 28418 5114 21461 32876 20653 15604 8900 7864 9084 10495 18742 32877 32763 18743 23703 14585 15605 9716 10434 9445 10597 30618 12036 15497 15379 15498 28796 15606 9231 9593 10055 11151 28071 29207 32029 16586 30401 30400 15607 518 9652 218 11127 32878 25820 2519 32879 25822 25824 15608 8015 8014 8012 10929 15893 32880 24846 15577 23033 15894 15609 9019 9898 10527 10738 27616 21293 32655 30747 26122 26509 15610 774 772 10077 10510 5280 27883 31814 27611 26426 32881 15611 849 10132 10580 11085 32882 16519 29543 29544 27849 32883 15612 8824 9964 7539 10865 31336 30845 31334 32884 32136 23319 15613 9672 10216 9422 10386 27003 32885 29034 15390 31297 31333 15614 9443 9845 10289 10353 20017 18819 20016 15246 31991 25649 15615 9225 9893 9775 10528 15330 32741 32886 12396 32742 15331 15616 7832 9884 7830 10540 11206 13840 32887 11261 13176 11262 15617 7674 9627 7675 11135 31525 32644 32643 32888 31349 32889 15618 7604 8782 7602 9975 32890 31907 32891 32892 30484 31909 15619 6306 9592 6368 10459 21664 29838 6771 23048 29840 23049 15620 8023 9716 8008 10360 14913 22052 32893 14645 22051 14914 15621 1587 10530 1149 10691 18071 29728 6170 17017 31200 18072 15622 8873 9586 7890 10843 26091 24819 27027 28822 32153 28823 15623 658 574 9894 10357 4307 32894 11965 11249 11967 23550 15624 7959 8179 9689 10757 32895 28137 21494 28288 28138 23889 15625 9857 10245 9273 11170 19840 27819 16596 28510 27723 28511 15626 10046 10301 9353 10803 25905 28128 22566 27748 26668 27152 15627 9451 10475 10447 10800 19409 22758 32785 31234 29867 29352 15628 9372 9885 9761 10655 16530 15211 14082 22654 32896 19153 15629 8562 9801 8561 10454 15664 15649 32897 12610 14228 15665 15630 1263 10324 7742 11046 26036 26676 27008 32898 30742 14466 15631 9403 10423 9549 10439 17767 21117 25762 17084 23265 17768 15632 814 9879 1381 10697 31677 32899 5469 22016 30018 15420 15633 6360 7751 6307 10127 32058 28616 6505 17638 28614 28615 15634 8824 7539 7770 10865 31334 32133 32900 32884 32137 32136 15635 8457 10271 11152 11175 32901 22964 30024 30026 29301 24023 15636 1336 10814 1393 10825 30793 22723 4911 32902 22995 22997 15637 6964 6963 6905 9676 7340 7239 7341 19495 27304 25127 15638 7792 8746 8692 10303 30194 32903 31303 21966 31302 30195 15639 7780 7641 7694 10085 23067 32904 32649 23068 32653 15510 15640 9427 9698 9542 10896 32691 20667 29455 27140 21202 21553 15641 9772 9894 9371 10655 32905 14169 16800 32906 14835 14194 15642 329 333 334 10553 3082 3085 3084 13166 13073 20197 15643 1355 213 10251 11127 2497 23605 32907 32908 32909 32910 15644 1207 9516 10461 11066 28687 23684 28689 32097 32911 27770 15645 9399 9541 10477 10609 19346 18700 19917 22253 21635 21010 15646 9694 9333 9904 10262 11477 12801 18403 28430 16421 12939 15647 1471 10376 936 10736 32912 21189 5925 32913 25621 21569 15648 9649 10377 894 11105 15956 12196 15957 32914 32915 32585 15649 698 634 9567 10778 4549 28148 28275 28863 17573 28153 15650 1198 567 9811 10327 4016 32762 32916 32917 32761 32477 15651 9308 9519 10220 10815 17007 27796 27797 13314 23078 15583 15652 8631 7816 9607 10752 29800 29799 26992 25750 28230 31793 15653 9898 10160 9248 10527 25106 13235 23601 21293 18726 26120 15654 8961 9075 8962 10044 32587 32918 31504 31393 31503 15051 15655 6292 1100 6383 10343 28195 31493 6648 28681 31495 28680 15656 9308 9922 10220 10500 24216 23076 27797 29159 32348 24149 15657 1350 298 311 9623 2905 2929 2931 14754 18795 29038 15658 9364 9798 9530 10053 29693 26602 29114 13154 18768 17665 15659 8411 8412 10266 11055 32919 11596 26293 26294 14937 14936 15660 6298 6334 1572 10278 6585 29760 32520 28895 29762 29764 15661 396 9813 1245 10606 28963 32920 3418 24677 29016 28964 15662 9573 10428 9690 10856 26498 30868 28415 26566 18755 29823 15663 1492 837 1494 9695 5570 5518 2851 11522 16935 24040 15664 8488 8230 8660 9696 32921 32346 21750 21751 11216 20164 15665 1071 10429 1519 11019 32922 19921 2313 30227 18896 19923 15666 9148 10546 9660 10940 22813 28085 32923 22814 18094 22155 15667 558 559 472 10489 3798 3797 3789 25258 29721 32924 15668 6329 6337 9677 10375 6677 26453 21624 21627 21629 23368 15669 6365 9635 10573 10663 32925 27692 22362 22364 22366 16955 15670 9633 9253 9789 10215 21180 26138 30614 16165 25196 18584 15671 1248 7631 166 10401 27887 32926 1733 27888 32927 21671 15672 9508 9971 11076 11095 24066 22777 27159 31659 28899 26930 15673 1457 10460 1396 10769 32928 17460 5499 32929 17398 19461 15674 9759 9879 9318 10697 13990 13650 16392 32930 16564 15420 15675 9553 9386 9680 10740 18532 15974 16140 19044 31481 19045 15676 10132 11085 1020 11141 32883 32931 32385 32379 32386 32932 15677 1150 1595 9614 10438 6172 31920 32933 32934 31918 31919 15678 9223 10012 9557 10364 16652 24774 27293 27295 27297 25924 15679 9852 10386 1218 11154 17139 14165 17137 32935 32936 32937 15680 1389 9805 10538 10839 24715 22295 24716 31805 26249 31977 15681 9941 10016 9276 10956 18298 13340 23787 26129 25427 22241 15682 9856 10513 9244 10977 28707 31358 21156 21622 25276 29689 15683 1473 10245 1095 10850 32211 22716 4442 23952 32938 32212 15684 9164 8453 8840 10645 25097 32939 19498 19500 18039 21093 15685 8005 8924 8930 10090 31419 13061 31418 27865 12886 13062 15686 7748 9560 7671 10272 22113 21338 32940 31386 22275 22277 15687 8205 9807 8914 10900 26759 32071 32941 26894 32072 14385 15688 9186 9559 8573 11135 25775 32942 32943 25776 32944 25777 15689 178 7665 1579 10537 32945 32329 1890 31786 32333 32332 15690 9700 10385 9582 10965 20929 28237 20390 32595 30056 30349 15691 1095 9857 729 10245 31449 28508 4441 22716 28507 19840 15692 358 9566 809 10772 22705 28274 3229 26477 32946 26478 15693 287 9875 1309 10692 31810 14799 2786 22162 19362 15453 15694 287 1287 9886 10692 2875 26149 31812 22162 15449 19360 15695 1110 9886 1426 10693 31813 32947 6134 22164 28912 15447 15696 1111 9879 1110 10693 14184 31811 5479 23284 22164 15455 15697 9296 9908 9839 11062 13697 13698 12632 32948 32949 32950 15698 9432 10260 9915 10653 17552 31379 19035 31772 19988 32951 15699 6943 6945 6947 10255 7384 7437 7309 21834 17972 22715 15700 8169 8721 10845 10942 32952 31350 30692 32953 32074 32073 15701 9599 9721 9276 11037 26236 25426 29179 27368 22636 27366 15702 9599 9276 9722 11037 29179 26966 27369 27368 27370 22636 15703 9368 10398 10511 11132 26034 27609 30606 27934 27710 28079 15704 549 9524 1146 10901 27755 19472 4183 32107 19474 17384 15705 9532 10123 10957 11116 29277 30799 32167 26520 30802 30801 15706 885 1342 10168 11156 5752 24383 31892 31894 31896 32954 15707 7674 7665 10180 10537 32955 32956 32645 31524 23156 32332 15708 10068 10158 9641 11150 14768 14766 14763 32957 32311 23773 15709 9263 10106 9688 10536 27026 27012 20928 13559 16477 27047 15710 601 1095 10245 10850 4438 22716 32958 31037 32212 32938 15711 9299 9726 9706 11180 29466 22682 17604 17605 16472 18917 15712 9794 9919 9422 10586 32959 27162 30585 16497 30584 32960 15713 7678 7677 10515 10590 32961 27789 32962 32963 31981 31980 15714 1575 716 9672 10408 5019 32964 25389 30155 23899 29036 15715 10325 10391 9435 11011 27456 27455 24873 20495 24875 20361 15716 1498 10799 893 10802 31237 21110 5781 31238 22501 22503 15717 601 1473 1095 10850 4443 4442 4438 31037 32938 23952 15718 1140 1138 1143 9608 6168 6169 2359 31916 25654 23992 15719 9681 10176 9471 10566 16009 25041 23735 17149 22849 16085 15720 8355 8711 8701 10661 14295 32965 24165 14296 24164 14297 15721 9407 9547 10100 10884 20405 16319 16770 24950 32966 23834 15722 9504 9328 10160 11179 16546 25105 22092 21981 24504 21982 15723 9319 10385 9700 10965 30127 20929 30126 18989 32595 30349 15724 7787 7708 7718 10321 30846 32967 32968 30848 32969 28876 15725 7835 7836 7837 10115 26165 13383 32970 25360 14189 17740 15726 9997 10044 9429 10689 24454 18627 15398 15399 13953 32362 15727 9365 10629 10058 11013 25266 28065 18991 16904 19885 29216 15728 9597 10104 9282 10196 29735 15084 29736 30986 12306 12962 15729 1479 6918 165 10695 31359 32971 2144 28951 29980 31360 15730 8204 8586 8658 10957 32972 32973 21707 20316 19318 32974 15731 9240 10246 9790 10450 28845 15963 31218 22916 27675 32975 15732 690 798 10063 10839 4890 28031 28343 31884 26248 32976 15733 549 10257 9524 10901 27309 17554 27755 32107 17384 16870 15734 9590 10550 10211 11023 12574 21645 17350 30818 29187 29714 15735 10044 10350 9429 10689 15766 22806 18627 32362 13953 32363 15736 648 10357 10051 11145 31620 11250 32690 31621 32977 17061 15737 7919 7920 7918 10552 32978 32451 27424 27426 17947 32452 15738 9890 10411 9226 11184 24694 32979 32284 22692 32285 24760 15739 8012 8981 8015 10474 31530 32980 24846 23030 15574 17855 15740 641 9789 694 10289 32981 27063 4637 32982 26415 27062 15741 1448 9841 1295 10256 13584 12514 3269 27428 14139 14699 15742 9265 10045 9576 11066 19195 26564 11284 21615 27739 20126 15743 737 10801 10159 10886 30883 32983 32984 30884 30661 20240 15744 9635 10345 6377 10573 26628 26627 26629 27692 32985 24072 15745 9379 9980 9600 10250 25733 20557 29541 18864 21211 21213 15746 793 1092 10076 10741 5376 32986 23465 23640 23641 27619 15747 349 578 358 10000 3183 3182 3130 20788 22707 27243 15748 8218 10513 9717 11133 26705 28480 32987 26706 29630 24359 15749 9216 10362 10065 10580 20022 17175 31265 20024 27845 19541 15750 8166 8932 8226 10484 32715 32236 32988 32636 30826 32237 15751 8847 9110 10224 10914 32989 25736 25002 25003 25005 24257 15752 8360 8359 8361 10098 17307 32990 31781 16533 27448 17306 15753 9766 10409 228 11030 17400 17154 17066 31056 32991 31132 15754 8287 10387 9741 10867 17132 12229 17348 32992 18904 18906 15755 1475 1466 1083 9999 5246 6103 6109 11464 28603 24903 15756 1504 902 9631 10548 4726 23988 11348 15263 15265 23644 15757 559 10489 558 11180 32924 25258 3798 32993 16471 25260 15758 8111 9009 10704 11000 32994 32995 31903 29578 31904 32996 15759 9349 9737 9816 10432 24231 29365 13925 12488 17063 21102 15760 9783 9904 9490 10553 18404 22330 25223 13477 19004 18405 15761 8724 9012 9587 10851 31927 31738 31928 32997 25608 18459 15762 901 1498 1491 10150 5812 5782 4625 30102 31640 31236 15763 8923 9782 8613 10425 16783 29183 32998 15616 22798 16784 15764 9203 10525 10334 10793 13727 32999 22038 21894 23655 21895 15765 179 7668 1253 10770 21587 33000 1822 31454 33001 31455 15766 9680 10311 9203 10503 12026 26454 28028 28155 22040 25723 15767 8019 8613 8017 10491 22797 29993 33002 22665 29994 24173 15768 9204 10528 9893 11154 32743 15331 31213 31214 21377 26848 15769 150 10139 961 10687 13806 13004 2177 29903 14171 17298 15770 6375 6353 6356 10531 6688 6798 6705 27878 24114 20994 15771 9459 9513 9800 10426 31956 22370 31957 24644 28120 28934 15772 8215 9934 8213 11048 15202 33003 33004 31477 33005 31478 15773 9155 9618 10414 11069 32203 29855 32204 33006 32863 31605 15774 7790 6968 6917 10600 32312 7127 31716 31718 21220 32315 15775 565 625 1330 10458 4264 4266 4255 32173 12952 12951 15776 8101 10094 9814 11040 29486 30625 33007 33008 21265 12100 15777 323 319 317 10707 3024 3023 3025 23135 30601 30546 15778 9729 9829 9388 10410 30656 24188 12093 22079 25085 31023 15779 400 9611 1250 10945 28886 17477 3430 33009 31261 28339 15780 8346 9662 10883 11027 33010 27040 24036 26462 26463 28088 15781 9339 10023 9929 10748 25971 26912 19064 19065 15657 22110 15782 9519 7912 10661 10815 30638 33011 30347 15583 33012 32286 15783 8426 9032 10432 11157 31093 30325 31092 33013 31074 31073 15784 8281 10239 8282 11134 25376 23062 33014 29022 23530 23532 15785 9361 10084 9526 10206 23364 26686 33015 24103 21124 32093 15786 8070 8978 10088 11128 33016 33017 30410 30412 26625 33018 15787 661 978 10247 11068 4743 33019 23590 23592 23591 33020 15788 9520 9210 10406 10936 26803 28818 21732 27446 26976 22627 15789 8580 9779 9074 10584 31225 32831 33021 33022 24683 28836 15790 9907 10342 9549 10401 25013 23262 15866 20475 22173 28293 15791 1256 10399 9867 11100 28819 16081 33023 28820 33024 26937 15792 8545 9512 11119 11176 19236 32208 32207 28335 32837 28336 15793 9943 10339 9449 10871 18858 20425 19465 22320 30084 26282 15794 9452 9805 9738 10480 27200 33025 33026 28864 29872 29458 15795 245 9823 10146 11071 15806 23016 23015 33027 27961 25365 15796 9584 9963 9296 10597 19848 16337 22539 21630 28795 21631 15797 7756 8763 8564 9620 26492 32739 26356 20577 24539 26494 15798 185 210 209 10255 2367 2366 2365 17973 21306 23390 15799 9756 10219 9286 10758 19534 18321 13365 17131 13084 24872 15800 9240 10894 10246 11097 24276 23316 28845 28222 26445 33028 15801 9746 10638 9249 11048 29249 30959 25746 24955 33029 29252 15802 890 1278 700 9666 4941 4556 4939 15103 12661 27170 15803 9929 10013 9407 10824 28384 26409 26911 28387 21905 28388 15804 9716 9908 9296 10360 30589 13697 27690 14914 27689 29369 15805 7832 7967 7834 10540 33030 19631 25831 11261 22003 19220 15806 9165 7791 9166 9635 33031 33032 28030 19770 18355 26831 15807 9831 10947 8723 11112 19032 33033 26800 22836 26801 33034 15808 9241 9862 9748 10677 14629 14818 16933 15685 33035 14731 15809 657 902 841 10951 4725 4724 4723 28012 29198 31079 15810 304 9774 10389 10858 12599 12849 11971 33036 18875 18874 15811 9585 9227 10111 10115 27727 32819 26546 25371 33037 14188 15812 9385 10167 9546 11113 28602 30650 33038 16446 16367 30651 15813 9376 9787 9917 10411 22981 21477 22076 32405 33039 27594 15814 9275 10125 9564 10771 30330 17998 25357 12774 26250 32813 15815 9265 10274 9536 10615 19196 19327 32764 23389 17737 28087 15816 9272 9905 9689 10652 27816 26823 27158 22936 19448 27817 15817 9502 9414 10311 10438 33040 12027 24134 17525 26455 18955 15818 8178 8079 8799 11193 31767 32734 33041 31768 32735 20609 15819 9295 10397 9663 10445 12906 17163 21044 12908 14361 12909 15820 9832 9480 10372 10865 23267 11788 22146 33042 13955 13954 15821 6295 9558 6327 10570 19643 23848 6716 24601 27650 24602 15822 9307 9803 9782 10543 27597 28445 16782 30408 28447 18316 15823 1021 1020 11085 11141 5619 32931 31196 33043 32932 32386 15824 9278 9940 9721 10233 20685 24431 27308 20687 22634 20686 15825 6310 1228 6361 10345 26025 32420 6606 26026 32422 24078 15826 9619 9701 9207 10299 29246 23362 29454 28006 32298 24184 15827 8174 8260 8173 9704 33044 23310 31944 31943 14712 18238 15828 9357 9954 9835 10759 19919 29363 20614 12806 13984 31456 15829 8673 8989 9043 10646 32713 19744 33045 24111 15941 19675 15830 8162 8730 10335 10554 33046 25441 29220 29222 19023 25442 15831 9570 10358 9607 11137 26508 32832 28530 31391 26994 32731 15832 328 329 9671 10553 3058 21139 30663 19107 21140 13166 15833 8229 8228 8227 10591 31353 33047 24609 24608 19924 31581 15834 8130 8250 8823 10632 33048 31858 33049 32558 29160 31859 15835 9213 9947 9578 10047 20034 33050 21739 11873 21740 27765 15836 9371 10112 9505 10732 15368 24826 29239 16801 24145 25083 15837 9677 9169 10710 11161 33051 33052 22021 20479 33053 33054 15838 6939 193 10011 10744 29217 25307 30474 29219 21077 22674 15839 9842 10572 9574 11035 25873 25453 26342 31675 31994 32147 15840 8674 8675 8439 10823 33055 33056 14721 15312 24991 33057 15841 9727 10640 9344 11140 28860 22425 28859 29158 23712 24629 15842 393 1105 389 9700 3385 3384 3382 31572 14103 11245 15843 9156 7760 9158 9842 20855 33058 31028 20856 29636 18505 15844 9370 9826 9616 10984 24408 20413 24701 27998 22667 22669 15845 400 10430 9611 10945 28887 15591 28886 33009 28339 28259 15846 9722 9941 9366 10275 26984 23038 13309 14027 13307 21365 15847 9821 9449 10021 10871 14143 29850 28223 22319 11583 30084 15848 9575 10061 9691 11079 28779 19009 31018 30529 30574 29712 15849 9430 10332 9793 10899 26336 23958 29527 26339 20642 23960 15850 9790 10070 9240 10450 27674 31219 31218 27675 22916 22714 15851 9261 9611 9736 10371 18565 27183 30105 13131 18469 15702 15852 9378 9690 9573 11126 26580 28415 26334 27799 27800 28240 15853 6903 6956 6954 9620 7333 7332 7331 21426 27936 23760 15854 8791 6311 8854 10154 33059 30385 33060 26729 31868 31869 15855 886 798 10063 10326 5351 28031 28880 30654 22438 32759 15856 227 9651 10673 11107 28923 25483 28922 33061 33062 33063 15857 9301 9625 9999 10486 13944 24580 11235 11444 11252 26188 15858 7885 8873 7884 10351 27658 29307 33064 24710 29308 26092 15859 1310 9636 605 11100 32245 12039 4458 33065 32070 32069 15860 604 9636 1310 11101 16424 32245 4457 31166 33066 31167 15861 8752 8875 9639 11104 32249 18803 25238 25240 24958 28714 15862 8357 8884 9640 11102 33067 29681 17262 33068 29683 29682 15863 1382 500 9638 11103 3939 17255 26889 27586 27585 33069 15864 697 9649 894 11105 18000 15957 4918 33070 32915 32914 15865 1033 9652 518 11108 33071 32878 2531 33072 33073 32580 15866 227 225 9651 11107 2562 32251 28923 33061 33063 33074 15867 10065 10362 9426 10580 17175 15120 17176 27845 24364 19541 15868 9615 10721 10114 10837 31555 32293 26920 30688 32233 31308 15869 566 10092 9808 11057 23057 23056 19248 33075 20776 28333 15870 7826 10095 9815 11059 12483 12484 12217 33076 20780 30286 15871 1308 10093 9810 11058 23845 23844 21266 33077 20778 30285 15872 1033 10583 9652 11108 33078 21837 33071 33072 32580 32579 15873 8400 8565 8508 10544 33079 30582 32720 16523 30569 22151 15874 9938 10382 8583 10896 23878 19134 21486 23690 33080 20549 15875 513 514 10287 11039 3998 32049 30081 33081 32048 30514 15876 9784 10829 9281 11167 28204 24768 28202 33082 23538 32797 15877 1154 479 480 10042 3832 3827 3833 24105 29773 31727 15878 1491 1504 10150 10802 4626 11346 31640 31641 23352 32683 15879 9555 10398 9833 10834 29953 24930 25074 28743 20093 23819 15880 9318 9759 10186 10693 16392 16394 13079 16632 33083 32770 15881 9755 9335 10185 10692 13280 29660 22874 32771 33084 16631 15882 9764 9354 10186 10693 17574 28549 24013 32773 33083 16629 15883 9354 9764 10185 10692 17574 17046 13677 16630 33084 32774 15884 10072 10310 9544 10818 17222 17221 17223 26347 32430 25644 15885 8157 8955 8194 10468 27794 33085 21083 13489 19275 27795 15886 8920 8937 10270 10885 33086 14718 33087 33088 27405 33089 15887 9308 10270 9891 10815 24215 26273 14566 13314 12851 21856 15888 9376 10411 9917 10632 32405 33039 22076 28483 32105 33090 15889 9429 10350 10073 10689 22806 31109 14688 13953 14690 32363 15890 1318 10612 9674 10987 33091 17364 30052 32456 15681 17365 15891 9151 9150 7795 9843 30538 26440 33092 30539 23967 26441 15892 8970 10228 10796 11064 33093 26511 33094 33095 33096 27874 15893 9430 10332 9914 10456 26336 28254 24698 17878 24697 24121 15894 511 10152 347 10683 24283 17489 3139 16332 17490 15860 15895 174 1199 6901 10658 2156 29236 33097 29502 26296 29894 15896 10334 10525 9495 10793 32999 25929 27673 23655 25931 21895 15897 1370 9799 1094 10502 21177 23658 3641 25063 22112 24932 15898 1574 151 6290 10384 1971 33098 24167 26840 18734 28729 15899 1093 1188 10394 10681 2736 31002 33099 33100 31003 29876 15900 747 652 10132 10709 4415 12493 32377 32376 12494 11530 15901 9380 9937 9690 10243 24946 18851 30392 15092 27266 31582 15902 9360 10114 9533 10124 19831 32231 33101 13660 32470 17510 15903 1068 10273 9945 11053 33102 13071 33103 33104 33105 33106 15904 9358 10486 9625 10786 11976 26188 13737 12496 13739 26488 15905 9154 9618 9155 11069 31603 32203 32788 31604 33006 31605 15906 9656 10541 9473 10642 32291 15794 32687 32292 19415 19416 15907 1227 435 10430 11094 3561 15592 33107 33108 15593 13734 15908 9711 9800 9304 10700 31774 17999 29424 24362 29425 31773 15909 7733 10072 7734 10321 31337 33109 33110 26839 33111 22637 15910 9741 10298 8287 11186 18196 18195 17348 33112 33113 29423 15911 9935 9936 9225 10528 28082 14423 33114 33115 12396 14425 15912 9443 9789 9633 10289 20671 30614 15247 20016 30076 27062 15913 6953 6957 6921 9555 7421 7103 7418 29619 20260 22010 15914 9217 9822 9735 10431 24613 27341 25956 25957 22453 24416 15915 982 1006 9615 10721 5989 16096 33116 33117 31555 31554 15916 6952 6953 6921 10511 7292 7418 7419 27684 23425 30832 15917 7682 1263 7742 11046 33118 27008 33119 33120 30742 32898 15918 8082 8839 8342 10532 17870 29754 33121 18942 29414 18943 15919 9443 9790 10246 10450 18559 15963 18558 20018 32975 27675 15920 279 9767 10685 10751 21555 22839 33122 21556 25330 21557 15921 9731 9868 9279 11092 22446 22383 24917 23920 22530 19853 15922 9279 9814 9638 10140 23217 15434 22382 23216 15433 13467 15923 9343 9533 10138 10641 32230 32614 13404 16480 30590 26480 15924 9533 9301 10138 10641 26486 13195 32614 26480 30590 11238 15925 10091 10623 9494 10821 27656 26765 25698 19254 24460 26767 15926 9292 9565 10109 10170 19866 28834 28833 26645 33123 31488 15927 9523 9797 9710 10667 28649 25392 31679 17456 24336 28650 15928 9273 10245 10166 11170 27819 31967 13291 27723 33124 28511 15929 9354 10186 10121 10993 28549 26957 13124 13679 30308 22552 15930 8079 8078 10190 10798 33125 26900 18032 32794 19688 26902 15931 9624 9811 9306 10846 28443 26321 31286 28442 25792 20309 15932 9266 9909 9815 10495 13699 26151 12242 14587 14586 20684 15933 1576 850 1231 10730 5627 4761 5628 31461 18431 19222 15934 9344 9784 10390 11131 31342 29173 24679 32039 29174 25867 15935 10166 10245 9547 11170 31967 32637 28970 33124 23836 28511 15936 9348 9742 9539 10454 12428 12148 17846 12611 23555 15736 15937 9313 10291 9844 10669 26183 25412 14445 12120 14447 31045 15938 9718 10420 8601 10830 30429 32391 31319 22193 31320 33126 15939 9296 11003 10360 11062 22540 22055 27689 32948 16984 25626 15940 9534 10292 9799 10502 27851 23660 29514 26640 24932 19900 15941 10179 11193 10194 11196 14283 33127 33128 33129 25019 33130 15942 7946 8142 9712 10902 32817 16302 12199 21315 12414 16304 15943 1516 10380 927 10810 21235 24838 5904 29785 26449 21842 15944 610 9866 671 10399 25597 33131 4489 26936 29821 16084 15945 671 9867 1256 10399 33132 33023 4491 29821 28819 16081 15946 624 9780 1093 10394 30753 33133 3291 30717 33099 16682 15947 8649 9200 8650 11061 33134 33135 33136 28738 33137 33138 15948 421 10104 9957 10196 24727 21755 24726 33139 30987 12962 15949 9441 9779 10321 10782 20861 20863 14749 22638 22639 20829 15950 9241 10105 9540 10365 14628 32165 33140 33141 32239 27719 15951 9452 9805 10480 10538 27200 29458 28864 27199 27420 22295 15952 7862 10014 7863 10564 13268 31795 31905 12367 27843 13269 15953 6338 6304 7768 10144 6545 33142 32542 32544 32543 33143 15954 9006 8469 8995 10097 33144 32760 13550 12920 13552 19796 15955 8580 10519 9779 10584 31226 18276 31225 33022 28836 33145 15956 8547 10690 10412 11119 29259 28467 33146 29261 33147 22492 15957 9443 10289 9633 10353 20016 30076 15247 15246 14589 31991 15958 9471 10566 10176 10798 22849 16085 25041 19689 15516 23621 15959 9667 9965 9476 11047 14603 19832 25590 22136 33148 22137 15960 7737 9192 9115 9560 27466 33149 20949 20951 17825 20895 15961 9918 9285 10320 11182 12888 13097 17476 24776 17630 31610 15962 1418 510 1404 10614 3990 2661 3991 29203 14661 23436 15963 9746 10184 8271 11104 24304 31443 31558 24957 31444 23341 15964 9590 10111 9227 10115 33150 32819 17637 22220 14188 33037 15965 9058 8547 8459 10690 33151 29260 26715 26717 22488 29259 15966 9649 10664 9817 10878 29789 18182 25965 30760 20071 32666 15967 9292 10109 9589 10170 28833 33152 20516 26645 26646 33123 15968 9605 10517 491 10975 15556 26330 23954 16780 26024 30624 15969 250 251 249 10080 2683 2682 2672 13231 13233 30494 15970 10006 10467 342 11087 21179 19106 11889 18007 33153 21087 15971 9296 10360 9908 11062 27689 29369 13697 32948 32950 16984 15972 9492 9913 9621 10309 18147 18148 17928 22883 22882 16323 15973 8166 8184 8165 10484 33154 33155 32635 32636 24297 14950 15974 8677 10165 9946 10829 32016 15359 32014 33156 31890 33157 15975 454 1367 456 11063 3710 3709 3708 25603 32856 33158 15976 454 452 742 11063 3698 3700 3699 25603 28955 23850 15977 9470 10504 10060 11024 18090 28885 32656 33159 31836 31838 15978 8562 8561 8596 10454 32897 33160 32055 12610 32056 14228 15979 1533 168 1263 10324 2275 1870 2276 13027 26036 16836 15980 9322 9567 9960 10536 27044 30240 14029 14614 14613 25551 15981 9145 7793 9793 10899 28548 24832 23274 23277 20642 33161 15982 9996 10347 9403 10423 23283 18042 21257 21258 17767 18951 15983 9349 10583 9737 11108 29366 29367 24231 28052 21520 32579 15984 1262 9914 7727 10456 31163 31164 31162 33162 33163 24697 15985 8850 8623 9646 10549 33164 33165 17265 29862 26787 33166 15986 584 9931 625 10458 15134 13520 4265 14832 12951 16030 15987 9475 10011 9830 10571 18077 18078 18074 32434 24855 32103 15988 6983 9682 6897 10841 33167 26369 7300 33168 30595 19718 15989 9535 238 10501 10774 29031 29032 26963 27614 31482 31533 15990 811 10193 1048 10507 26084 31841 5437 22720 21776 26085 15991 6329 9677 6336 10710 21624 28019 6675 22020 31322 22021 15992 6893 9098 9082 10694 29807 33169 33170 20774 29404 30075 15993 8226 9827 8185 10484 18828 18388 33171 30826 14949 18857 15994 668 1415 9818 10618 4773 20144 33172 29608 20143 15817 15995 8960 7932 9982 10857 33173 17792 27641 27643 25333 31239 15996 1072 10747 10429 11019 33174 33175 33176 33177 19923 33178 15997 9407 10824 10013 10884 21905 28388 26409 24950 24648 28628 15998 9055 9854 8541 10958 15597 25513 33179 13321 25515 15598 15999 9401 9848 10218 10544 14502 31157 31438 22952 15105 30415 16000 729 9857 863 10720 28508 28320 4783 28598 28804 16600 16001 8134 8132 8189 9794 31496 33180 31548 32011 13844 13691 16002 8657 10084 8204 10207 15689 20315 33181 16687 20314 16686 16003 9552 10226 9205 10268 19870 14450 26737 26200 16129 26201 16004 8129 9917 8130 10632 32104 33182 32556 28789 32558 32105 16005 9565 10790 9687 10960 19836 27339 31576 30790 31624 31642 16006 1328 9979 404 10737 15166 20999 3396 13138 18303 14964 16007 9928 9965 9288 10532 17993 14438 21918 16583 13210 14440 16008 9477 10564 10014 11182 21219 13269 31747 33183 31415 31416 16009 8853 7617 7528 9828 20611 33184 33185 20613 33186 17913 16010 8906 8053 9840 10306 33187 16271 23996 25086 11533 16273 16011 8822 10216 9142 10586 30368 16125 27205 25470 13876 16127 16012 9204 9852 10386 10586 32853 17139 33188 12976 33189 33190 16013 9345 10267 9588 10395 19332 19602 14927 14928 11520 32394 16014 290 292 291 10199 2888 2887 2863 13722 18998 13509 16015 8406 8787 10516 10963 33191 23496 27355 29974 28737 25861 16016 590 644 9954 10795 4069 28768 26592 31816 19451 30088 16017 9580 10453 10325 10690 26267 33192 28506 26007 27518 22611 16018 9316 9710 10184 10399 12415 25391 14198 12883 27836 16778 16019 9710 9298 10184 10399 27996 26860 25391 16778 27836 14648 16020 10073 10350 9389 10689 31109 13297 31110 14690 29600 32363 16021 7872 8351 7874 10265 29264 33193 33194 29265 27270 29266 16022 8852 9038 8987 10266 33195 24534 33196 27273 24535 23891 16023 397 10371 9754 10945 24559 18470 21790 33197 25660 25662 16024 9300 9921 9810 10463 26283 26571 21380 26286 25213 20628 16025 9569 10551 9686 11164 26048 33198 26113 32280 32282 32722 16026 749 9829 1252 10410 33199 25463 5173 33200 33201 31023 16027 1408 9593 10381 10819 28355 19802 24687 24688 16110 19804 16028 8064 8067 10088 10988 33202 31469 14692 31362 25395 33203 16029 9273 10166 9547 11170 13291 28970 27722 27723 23836 33124 16030 9594 9729 9380 11033 28310 30657 24945 23741 26088 28312 16031 9204 10528 9926 10560 32743 32855 15747 12875 15749 33204 16032 9594 10149 9229 10178 24250 13976 28295 22888 30198 33205 16033 9376 10149 9594 10178 29998 24250 30469 32172 22888 33205 16034 8169 10845 9998 10942 30692 17201 30691 32953 31453 32074 16035 8122 8123 7945 9982 27265 33206 26635 19257 26257 13020 16036 8479 8478 8188 10973 29905 15906 33207 29906 15826 16671 16037 9174 6305 6372 10277 31883 6513 28424 28426 28425 26522 16038 1196 10429 7571 10555 32007 32008 32006 33208 33209 25303 16039 9489 10335 10140 11026 22738 23220 23614 33210 33211 33212 16040 9992 10106 1290 10806 24377 31013 31012 20835 33213 27013 16041 8619 8620 8346 10883 28075 24034 33214 24951 24036 24035 16042 9281 10829 9602 11167 24768 24769 24765 23538 32181 32797 16043 9550 10318 9375 10367 26439 14701 22411 14970 13965 31962 16044 1516 926 183 10631 2355 2354 2356 29783 30887 32373 16045 9240 9585 10111 10115 26545 26546 22914 32252 33037 25371 16046 9302 9804 10506 10844 14114 26436 26380 18307 31357 18570 16047 9589 10780 10109 10955 31172 17145 33152 22991 31731 31436 16048 1539 9617 6350 10855 22801 22802 22800 33215 33216 28710 16049 740 741 671 10399 4793 4792 4787 15983 29821 12881 16050 8403 8944 7897 10699 25630 33217 29537 22810 29539 25632 16051 671 9866 670 10399 33131 16082 4490 29821 14647 16084 16052 783 9867 671 10399 16080 33132 4794 12882 29821 16081 16053 8884 8358 9821 11102 33218 23411 24391 29682 17783 23412 16054 7853 10494 10171 10927 26933 24860 33219 27343 27751 25363 16055 863 729 966 9857 4783 5082 5081 28320 23452 28508 16056 8144 8931 8141 10359 33220 23923 32323 23610 23924 20648 16057 7659 7690 7707 10456 33221 32780 21244 16405 32781 24120 16058 8225 10069 8696 10626 17385 24193 33222 26254 25522 26063 16059 8514 10044 9075 10350 33223 15051 29473 29475 15124 15766 16060 9391 9970 10509 11129 18786 20467 13896 21813 31116 20822 16061 9873 10183 8158 11055 17487 31089 32354 28392 31090 14938 16062 7903 8920 10270 10885 33224 33087 28552 31351 27405 33088 16063 9361 9956 9532 10957 12452 29276 33225 21960 32167 31948 16064 9578 9947 9351 10047 33050 28697 31372 21740 28696 27765 16065 199 6383 10343 10344 31492 31495 31494 33226 16769 33227 16066 674 10489 559 11180 25691 32924 4234 30607 32993 25260 16067 9242 9536 10129 10660 31898 19325 26205 30372 30373 30761 16068 9536 9230 10129 10660 27379 13363 19325 30761 30373 15985 16069 9052 8543 8425 10556 17677 33228 29325 19983 28557 20324 16070 551 10431 449 10873 33229 24415 3678 33230 21944 24417 16071 8643 8980 8337 9792 30724 25136 33231 16517 18711 25135 16072 9383 10039 9971 11076 28632 22925 26928 29049 22777 18486 16073 9204 10386 9852 11154 33188 17139 32853 31214 32935 32937 16074 688 9624 568 10846 29672 32792 4273 20308 33232 28442 16075 9235 9595 9777 9937 19476 19477 16555 31631 24947 33233 16076 8794 10368 8795 10650 25714 26726 33234 22719 26728 17189 16077 9530 10053 9798 10720 18768 17665 26602 26604 16598 17667 16078 8033 8113 8114 10379 33235 32445 25891 30577 31713 22286 16079 1335 9993 10593 10987 31407 29794 31771 33236 33237 33238 16080 8306 10757 8180 10946 23888 29629 29627 24264 33239 24265 16081 6902 6938 6989 10253 7327 7326 7325 26868 24779 17560 16082 8979 10451 9749 11084 28801 16029 32264 28802 20544 26009 16083 652 1020 747 10132 4700 4699 4415 12493 32377 32385 16084 884 1319 9849 10293 5751 32708 33240 33241 23676 31732 16085 1057 10612 1318 10987 20033 33091 2943 24222 32456 17365 16086 9566 9945 9272 10056 33242 24285 32638 32639 22935 28545 16087 9322 9945 9566 10056 29958 33242 32081 14815 32639 28545 16088 7928 10527 10269 10738 30293 27435 30863 33243 11920 26122 16089 1444 342 10467 11087 3081 19106 27569 28131 21087 33153 16090 9426 10384 10065 11085 27306 26924 17176 27307 27848 22901 16091 8644 10128 9098 10648 24427 29806 33244 20553 29808 19233 16092 9459 9990 10497 11121 12653 29178 30228 32757 23853 31935 16093 9638 9814 9279 11092 15434 23217 22382 19854 22530 30808 16094 9523 9582 10422 10809 27326 28248 19321 27327 22975 27328 16095 7567 10429 7566 10443 31589 26130 33245 30557 23346 26132 16096 9610 10284 9352 10357 30405 26410 30099 17058 33246 33247 16097 9430 9670 10294 10920 28459 21831 27401 19467 22963 27144 16098 9351 10209 9727 10640 15173 15172 15171 28698 28860 22424 16099 9503 10494 10171 10516 23330 24860 27946 27194 23529 25848 16100 9583 10063 9317 10868 33248 13473 25806 14348 19374 30961 16101 9417 10284 9610 10357 12826 30405 18395 18394 17058 33247 16102 8535 9544 10321 10782 31587 25557 32140 32426 22639 19930 16103 9477 10320 10564 11182 11333 28471 21219 33183 31416 17630 16104 9759 9318 10183 10697 16392 13077 16393 32930 32324 16564 16105 9372 9761 10187 10655 14082 16397 16395 22654 33249 32896 16106 9664 10477 9399 10585 26111 19917 31569 28145 16342 28146 16107 9136 10144 10682 10828 33250 31660 29253 29255 21748 29388 16108 7640 7711 7715 10861 32732 33251 32318 31800 32319 26051 16109 9211 10582 9959 10659 27039 15336 19112 20062 33252 30404 16110 9200 10189 8650 11061 33253 33254 33135 33138 33137 31271 16111 9706 9726 9656 10541 22682 30957 26960 16218 32291 18597 16112 6291 6345 6347 9554 6695 6698 6642 19266 21868 21224 16113 9772 9371 10187 10655 16800 16799 16724 32906 33249 14835 16114 7685 7727 9914 10456 33255 31164 28253 26587 24697 33163 16115 9134 9201 7767 9907 33256 33257 19589 19591 15635 27523 16116 822 10167 703 10473 24420 25437 4948 24422 25438 24421 16117 9378 9849 9573 10881 23675 26333 26334 12267 25572 32709 16118 8814 7787 7718 10321 33258 32968 33259 23159 32969 30848 16119 9658 10552 9717 11133 17946 29548 29547 29631 29630 31873 16120 720 969 972 10941 4734 5038 5037 17957 13380 13379 16121 6306 6370 6368 9592 6469 6772 6771 21664 29838 17440 16122 514 10506 638 11173 28933 32424 4009 31924 33260 31925 16123 498 497 9747 10517 3910 11304 33261 33262 13898 11499 16124 7791 9166 9635 10663 33032 18355 26831 33263 16955 18357 16125 7852 10771 9564 10775 30621 26250 23372 33264 19176 27250 16126 9583 10656 10063 10868 29185 31992 33248 14348 30961 30139 16127 10562 11011 10279 11119 33265 20322 29742 32483 32482 33266 16128 9529 9955 9354 10119 29274 12399 13678 26958 13121 14288 16129 9354 9955 9528 10121 12399 29271 33267 13124 26956 14289 16130 9532 9956 9361 10123 29276 12452 33225 29277 15603 15154 16131 9361 9956 9528 10122 12452 29273 22881 14290 29272 14291 16132 9267 10252 9554 10599 14743 31769 31673 29625 30531 29626 16133 863 1433 1385 10053 5680 5681 4785 28321 20101 13153 16134 1433 1035 307 10053 2976 2968 2974 13153 13155 18573 16135 9321 10757 9657 10946 29805 23890 19225 19228 19230 24265 16136 9536 10077 9242 10129 29644 26206 31898 19325 26205 21881 16137 584 565 583 10458 4262 4257 4263 14832 14834 32173 16138 8734 10840 10082 11009 32569 32570 27412 33268 33269 33270 16139 9545 9669 9254 10636 27176 26909 30306 31564 14810 21845 16140 9721 9940 9278 10239 24431 20685 27308 24430 33271 24429 16141 7575 9552 7615 10631 32464 19665 33272 33273 31406 29784 16142 10325 10453 9435 10690 33192 25537 24873 27518 25204 22611 16143 9223 9557 10012 10792 27293 24774 16652 27814 30044 33274 16144 9210 9686 9569 10796 30915 26113 31285 22626 29377 28654 16145 8181 8125 9622 10568 31714 16762 28172 13033 24966 24965 16146 9505 10702 8624 10732 22352 28069 19066 24145 29893 26405 16147 1383 6971 6911 10687 29170 7233 31864 26816 19087 29171 16148 9332 10140 10335 11026 13468 23220 32432 33275 33212 33211 16149 9419 9508 10175 10524 31658 17343 17274 14528 21334 28793 16150 9153 10710 9169 11161 32839 33052 33276 33277 33054 33053 16151 7685 7687 7690 10332 33278 26859 26586 26585 24118 24102 16152 8101 9814 10094 11092 33007 30625 29486 33279 19855 30808 16153 564 583 565 9952 4258 4257 4253 28883 33280 18352 16154 1462 9954 644 10354 24567 28768 4388 24568 33281 20600 16155 9555 10174 9833 10908 29399 14405 25074 26618 26620 27777 16156 7668 9614 7696 10770 21589 15661 33282 31455 23012 23014 16157 8775 10581 8776 10793 25185 33283 33284 26720 33285 26721 16158 9486 9776 9717 10442 22603 29546 26490 22605 28478 15989 16159 9490 9904 9783 10620 22330 18404 25223 22333 27452 22334 16160 9528 9955 9338 10122 29271 12450 33286 29272 13118 14339 16161 9338 9955 9529 10120 12450 29274 33287 13114 29275 14337 16162 9528 9956 9318 10121 29273 12447 25809 26956 13109 14338 16163 9318 9956 9532 10118 12447 29276 25807 13105 26954 14336 16164 9802 10643 9399 10725 22068 20527 25725 25666 20269 25667 16165 9483 10746 9603 10935 28979 23109 33288 30191 15920 24172 16166 9242 9687 9565 10109 17900 31576 32667 17899 28834 17141 16167 762 764 763 10871 5233 5232 5228 29536 29558 26281 16168 1370 879 1094 9799 5732 3696 3641 21177 23658 23659 16169 8914 10091 9807 11084 21549 31175 32071 21551 26223 20545 16170 9242 10109 9565 10170 17899 28834 32667 33289 31488 33123 16171 564 9952 565 10458 28883 33280 4253 22301 32173 18672 16172 9076 10016 8654 11028 30314 20988 33290 30316 30502 17609 16173 9341 9720 10147 10734 24182 23018 20592 20593 18156 23715 16174 9514 9359 10276 11185 25804 31263 18320 23521 24307 30232 16175 8677 9946 7938 10829 32014 31889 33291 33156 30249 31890 16176 9738 10480 9805 10845 29872 29458 33025 27400 33292 29874 16177 1465 1470 1154 10042 5594 4363 3837 11230 24105 11336 16178 10037 10298 9377 11186 21248 28205 28206 21096 33293 29423 16179 9242 9589 10109 10170 33294 33152 17899 33289 33123 26646 16180 9257 10093 9643 10181 29450 25478 23300 19146 20877 29451 16181 9577 10462 10046 10803 27485 19389 22565 27363 27748 32149 16182 9342 9851 9561 11001 12082 24751 22857 12859 24143 13802 16183 233 1115 366 10460 2604 2606 2595 21642 26280 17922 16184 8234 10577 9711 11045 19355 16182 33295 19356 33296 15423 16185 982 1417 1006 10721 5990 2866 5989 33117 31554 31553 16186 9204 9775 10528 10560 14999 32742 32743 12875 33204 16309 16187 10011 10225 9475 11197 29279 33297 18077 28619 26232 29280 16188 9489 10637 9944 11026 17826 18872 16668 33210 33298 33299 16189 9351 10449 9861 10910 31051 31052 19095 21209 18423 31368 16190 9471 10532 9641 10566 16577 20265 29290 22849 12008 22850 16191 9636 10091 9237 10192 20543 27654 12038 15717 11843 25700 16192 8788 8872 9724 10516 33300 25846 18438 18436 18437 25849 16193 9005 9816 9004 10432 13924 26812 33301 12487 33302 17063 16194 9539 10236 9412 10307 15651 21652 28896 12149 23559 21317 16195 9529 10120 9358 10208 29275 14862 32789 19669 12546 33303 16196 9528 10122 9338 10207 29272 13118 33286 18728 13415 33304 16197 9360 10124 9533 10210 13660 32470 33101 24328 23943 33305 16198 9338 10120 9529 10208 13114 29275 33287 13422 19669 33303 16199 9361 10122 9528 10207 14290 29272 22881 21959 18728 33304 16200 9533 10124 9358 10210 32470 14846 31289 23943 12548 33305 16201 9350 9861 9695 10449 27687 30812 11311 26866 24638 31052 16202 7994 10385 9736 10965 32468 30128 22547 22549 19554 30349 16203 583 565 9952 10458 4257 33280 18352 14834 18672 32173 16204 8184 9951 8165 10484 12612 24298 33155 14950 24297 19345 16205 163 1420 1503 10587 2068 2250 2249 17621 33306 17622 16206 1453 9650 1377 11159 28101 13338 6118 33307 25960 25959 16207 1463 1159 960 10807 5961 2207 5952 20786 14580 31257 16208 575 9894 574 10357 31207 32894 3689 31849 23550 11967 16209 1161 9981 1372 10377 13293 28051 4921 13294 32736 12003 16210 782 10792 9557 10937 33308 33274 20104 32357 29150 20221 16211 8875 8344 10157 11104 33309 27440 25647 28714 26681 27441 16212 9704 10131 9390 10328 22477 13357 14711 14735 12138 27231 16213 9311 9685 9570 10251 22967 26070 31983 22968 23607 22895 16214 1559 10855 9574 11141 33310 21028 32025 32218 29342 28766 16215 9214 9596 10745 10997 29731 30842 12422 22961 15114 29733 16216 9475 10225 10011 10571 33297 29279 18077 32434 32103 33311 16217 7900 10336 7897 10699 12684 29538 33312 14116 29539 14117 16218 9499 10671 10751 11049 21411 21415 21414 33313 33314 33315 16219 9453 9820 9981 10377 15757 21033 11998 12001 12003 22100 16220 9335 10007 9531 10202 12727 27468 30699 12555 18769 26913 16221 937 1532 10401 11090 5741 16607 32396 32398 25331 13749 16222 8130 9917 8250 10632 33182 33316 33048 32558 31859 32105 16223 8219 9717 8218 10513 33317 32987 33318 33319 26705 28480 16224 9588 9790 9240 10894 14430 31218 24252 17983 24276 18724 16225 9297 9944 10637 11026 28461 18872 15458 33320 33299 33298 16226 8384 8287 10298 11186 33321 18195 31389 31390 29423 33113 16227 9400 10278 9936 11160 27716 27717 27714 29126 27092 29317 16228 9630 10220 9623 10661 18660 27798 28469 28755 30348 28756 16229 9240 10111 9590 10115 22914 33150 24253 32252 22220 33037 16230 449 441 9822 10431 3645 26238 21942 24415 24416 33322 16231 9856 10164 9219 10874 25348 20977 28705 25350 20069 16852 16232 9552 10374 10296 10602 28492 28844 32051 30576 19801 20463 16233 9387 10213 10482 11124 30454 23445 28668 26459 24130 27895 16234 1538 6380 6328 10375 27210 6660 32115 27211 22002 27212 16235 9212 10852 9563 11083 29208 30290 26683 29386 23396 33323 16236 763 866 865 10641 5240 5239 5230 25411 14943 31080 16237 1210 763 764 10641 5237 5232 5238 11239 13524 25411 16238 9453 9981 9820 10368 11998 21033 15757 14221 15758 21034 16239 9247 9756 10101 11029 16192 16194 13039 28980 27981 33324 16240 7699 10714 7697 10818 32807 32869 33325 33326 32871 32873 16241 1268 9950 10302 10669 24211 21612 24212 33327 14710 33328 16242 8809 8952 10340 10481 30553 22918 33329 30554 28651 30555 16243 10327 10506 9253 11120 27737 31260 26853 29407 30770 29408 16244 267 10202 265 10869 32843 19751 2762 32844 20137 19188 16245 709 708 833 10086 4305 4978 4977 11406 28174 28971 16246 8893 7639 8868 9933 31910 31141 33330 30678 22513 31142 16247 9361 9994 9526 10084 33331 20378 33015 23364 26686 24783 16248 948 1024 1192 9858 5948 2292 2463 31201 26431 29321 16249 1565 10417 1182 10573 18600 33332 2389 18601 33333 18016 16250 1389 1373 1117 10538 6131 5401 4021 24716 31804 15935 16251 7843 7844 10704 10997 33334 32560 25587 13670 25589 32561 16252 731 739 738 9670 5093 5092 5087 27712 27143 33335 16253 1016 1014 10405 11035 6024 15787 33336 33337 20193 20192 16254 324 328 329 9671 3052 3058 3057 26827 21139 30663 16255 9246 10036 9991 10601 12720 24476 11791 17402 11796 33338 16256 9777 10243 9380 10959 17317 15092 24943 28915 15094 15026 16257 9568 9606 10227 10644 28566 28570 28569 30876 33339 32161 16258 9936 10528 9400 11160 14425 33340 27714 27092 29126 27093 16259 9215 9704 9629 11065 32300 30073 15524 25927 30022 30074 16260 1383 150 961 10687 2108 2177 2178 26816 14171 29903 16261 9505 10253 9525 10610 11449 22577 22353 17563 23041 17564 16262 9296 9923 9839 10400 24275 26155 12632 12262 12634 22571 16263 695 1458 876 10289 4913 4912 4645 18820 30965 32121 16264 1585 196 1043 9549 2424 2423 2425 25471 23263 28041 16265 9967 10413 9436 10435 22095 21601 22093 26032 11794 23928 16266 778 856 10312 10542 5311 24651 18995 26397 22544 20041 16267 885 10168 1387 11021 31892 33341 5753 31893 33342 31726 16268 9436 10482 9924 10592 21572 26535 17532 17843 27914 24126 16269 9026 8408 10179 11190 32375 29583 31138 33343 29584 14058 16270 9726 10301 9656 10992 29468 30871 30957 23822 32688 27156 16271 10011 10225 9397 10571 29279 33344 24960 32103 32102 33311 16272 588 533 9919 11184 4095 23382 23378 33345 28519 28518 16273 8686 8685 8683 11001 12440 33346 33347 12857 33348 15861 16274 1062 9545 1060 10794 30268 30882 6069 33349 30257 31565 16275 9947 10047 9213 11007 27765 11873 20034 30389 12438 13957 16276 8485 8385 8943 10064 27750 33350 21510 21508 21509 18737 16277 8385 8292 8957 10064 18736 31180 33351 18737 31181 16036 16278 1584 909 10217 10518 2447 29827 17025 17026 15046 22480 16279 7550 169 1507 9832 33352 1645 32646 32648 21907 33353 16280 9507 10154 9419 10531 17642 16569 24442 16248 14500 20995 16281 1243 586 9983 10982 4369 16744 18048 33354 22284 22283 16282 9389 10795 9619 11005 29364 20205 29247 28023 31593 31817 16283 10225 10571 9106 10976 33311 33355 33356 27105 33357 33358 16284 565 584 625 10458 4262 4265 4264 32173 12951 14832 16285 662 913 10073 10689 4750 31409 32307 27963 14690 22785 16286 9584 10379 9803 10929 26865 25476 26864 23032 30611 30791 16287 9793 10579 9430 10899 18779 17881 29527 20642 26339 25081 16288 9860 9900 9356 10409 26314 23698 17107 30001 17155 30646 16289 9354 9955 10575 10993 12399 30094 29542 13679 15570 33359 16290 7907 10191 7921 10545 27486 14345 33360 27111 11590 14347 16291 9307 10287 9738 10379 27596 31940 31938 16099 30578 25477 16292 8947 8735 8950 10615 33361 30140 29836 29835 19722 30141 16293 8096 8735 8891 10615 28634 33362 18172 17053 18162 30141 16294 9520 10589 9579 10936 19892 28098 26523 27446 27447 33363 16295 410 411 409 9963 3483 3482 3477 27784 16338 21698 16296 9309 9981 9820 10377 21119 21033 21118 29139 22100 12003 16297 9948 10764 609 10842 29725 24095 31966 21848 33364 33365 16298 1096 644 9954 10354 4658 28768 20601 15293 20600 33281 16299 787 1354 691 10792 4895 4894 4887 20220 31880 27113 16300 1407 808 1354 10792 5444 4896 5445 14225 27113 18398 16301 9573 9849 9383 11050 26333 24690 26018 26022 26021 28097 16302 9587 10064 9405 10947 31598 31599 28217 29898 28432 25718 16303 488 489 490 9925 3872 3878 3877 28353 23863 17592 16304 9344 9727 9657 10209 28859 17499 33366 22421 17498 15172 16305 9405 9583 10064 10326 28340 21611 31599 14487 30886 28431 16306 8956 9095 9878 10449 27881 33367 22971 17248 22970 27882 16307 6899 6959 6962 9692 7312 7314 7111 24407 25487 11459 16308 167 6341 6315 10440 29395 6654 32117 28198 19434 29396 16309 6365 9635 6377 10573 32925 26629 6713 22362 32985 27692 16310 9539 9348 10454 10767 17846 12611 23555 12150 23841 12429 16311 9991 10036 9462 10601 24476 24259 24444 11796 31609 33338 16312 1158 180 6951 9819 2092 33368 25116 31933 29177 33369 16313 8496 8495 9817 10619 33370 13409 25114 27838 19186 19185 16314 1050 9538 10523 10547 29975 22727 27988 27989 17675 14633 16315 8376 10271 9970 11152 32226 30836 32224 33371 30837 22964 16316 9721 10233 9276 11037 22634 28011 25426 27366 22636 32519 16317 279 9767 280 10685 21555 22838 2827 33122 22840 22839 16318 7733 7705 10072 10818 33372 32370 31337 32429 26347 32372 16319 9244 10442 9717 10513 29829 28478 26489 31358 28480 28482 16320 9636 9252 9807 11084 23203 33373 19844 20546 26223 22749 16321 9627 10180 7675 11135 25932 30938 32644 32889 31349 31348 16322 9241 10365 9540 11031 33141 32239 33140 16932 16700 33374 16323 862 954 861 9847 5673 5672 5109 12180 22394 22292 16324 8166 8226 8185 10484 32988 33171 33375 32636 14949 30826 16325 7921 8597 8596 10454 28679 32454 33376 14229 32056 27646 16326 9815 10495 9327 11091 14586 20683 12802 12218 17705 22419 16327 9102 10694 8645 11086 33377 31439 33378 33379 21216 31440 16328 909 1166 1531 10518 2444 2241 5839 22480 17104 17517 16329 488 1156 495 9925 3879 3881 3870 28353 30920 18221 16330 9467 10489 10078 10523 20372 31989 21543 20374 30407 17821 16331 9566 9322 10106 11053 32081 27045 32082 33380 33381 33382 16332 9579 10048 9251 10393 32550 20127 16485 16486 16487 20905 16333 9128 11129 10447 11152 33383 23101 33384 33385 33386 33387 16334 9245 9762 10308 10727 14093 33388 16645 28831 33389 25058 16335 9762 9287 10308 10727 15216 22932 33388 25058 33389 26596 16336 9689 9566 10000 10772 31626 22708 26825 26886 24273 26478 16337 9245 10388 9762 11106 13777 12256 14093 28832 25061 30070 16338 178 10180 7665 10537 31785 32956 32945 31786 32332 23156 16339 9320 9694 9622 10006 12490 33390 33391 12489 26235 11805 16340 9481 9793 9709 10472 21394 16752 22652 20176 16755 16757 16341 9658 9776 9258 11162 29545 33392 16805 32139 32138 33393 16342 1529 7645 7741 10242 33394 33395 33396 33397 33398 33399 16343 1561 915 9971 10175 5629 16235 16359 16361 16360 17275 16344 9220 10142 9708 10616 13100 22969 20572 13066 15021 30391 16345 258 261 262 10320 2722 2728 2727 17629 25976 13095 16346 8029 8035 8794 10488 33400 32087 22224 22227 22229 17004 16347 541 1413 9915 11089 4144 27432 31155 27016 14249 27433 16348 10312 10598 9734 11152 31608 14696 33401 22966 33402 29298 16349 7760 6313 6274 8836 28393 6520 33403 28395 33404 28394 16350 7654 7673 10373 10537 33405 26632 33406 33407 20837 30015 16351 9652 9887 9311 11127 24985 24984 24983 25824 33408 33409 16352 9705 9460 10264 10557 21226 14825 19504 17280 28667 14991 16353 9457 9705 10264 10557 21438 19504 18843 23471 28667 17280 16354 9241 9748 10182 10677 16933 18085 30313 15685 32594 33035 16355 8028 8993 8032 10219 21481 30733 33410 21937 25516 18267 16356 9919 10386 9422 10586 28407 31297 27162 32960 30584 33189 16357 9550 10370 9938 10833 22825 30816 29188 29141 29191 30964 16358 9730 9315 10177 10451 16398 16259 23499 16400 27582 12744 16359 9316 9730 10177 10451 16402 23499 13068 12751 27582 16400 16360 8847 9110 8319 10224 32989 33411 26227 25002 14983 25736 16361 1406 279 1417 10751 2825 2834 2836 33412 30121 21556 16362 8645 9098 10128 10694 33413 29806 21215 31439 18244 30075 16363 9325 9721 10195 10239 30759 14929 30806 28711 33414 24430 16364 8876 6376 6275 7760 25191 6527 33415 25190 33416 25189 16365 640 10327 1198 10814 31542 32917 4026 31541 33417 26854 16366 8604 9059 9062 9972 31643 32799 33418 14551 29566 31644 16367 8114 9738 8113 10644 25894 32444 32445 33419 22288 32459 16368 1009 10233 9721 11037 32412 22634 32411 32518 27366 32519 16369 9744 9890 9376 10411 31972 31971 25852 33420 32405 24694 16370 8125 8582 8237 10318 29256 33421 16860 16764 14700 29257 16371 9211 9959 9953 10659 19112 20541 17326 20062 14274 33252 16372 8351 8889 10265 10706 33422 13208 29266 30983 23305 23304 16373 8395 8180 8895 10757 33423 33424 28606 28608 28610 29629 16374 7922 10124 7878 10208 14845 16510 33425 12545 17529 15225 16375 1053 10122 1054 10206 16023 14292 4456 16962 21341 16963 16376 275 10120 277 10210 14861 16025 2812 12547 16964 15224 16377 8724 10947 9587 11112 33426 29898 31928 33427 29503 33034 16378 7545 166 7631 10401 33428 32926 33429 33430 21671 32927 16379 9309 9649 9725 11105 28404 28403 28402 22291 33431 32914 16380 8151 8150 9665 10519 33432 33433 33434 33435 28544 33436 16381 9462 10069 10003 10991 15459 14277 23695 18634 23448 17390 16382 178 974 972 10537 2328 2327 2329 31786 23155 31276 16383 620 622 10448 10750 4529 25175 33437 23868 24773 22767 16384 9675 9404 10504 11024 33438 28600 27919 33439 31838 31837 16385 6937 171 119 1169 23753 2049 7190 23752 2054 2056 16386 9272 9946 9783 10665 28665 27329 25368 24284 14441 24440 16387 265 262 264 10320 2747 2742 2748 15705 13096 25976 16388 10498 10746 9483 10998 32338 28979 33440 32341 29782 29781 16389 10117 9398 10559 10611 19030 19029 18429 33441 33442 13801 16390 7632 10268 7531 10418 29778 31125 33443 29779 32589 20054 16391 180 128 1158 6951 2090 2085 2092 33368 25116 7217 16392 9545 10101 9445 10474 27897 15550 27898 27512 15554 15553 16393 8603 9785 8473 10425 28579 33444 33445 22596 27954 22787 16394 9782 10491 9903 10848 29184 30421 29124 33446 23477 32273 16395 274 272 10119 10316 2798 13110 23234 25974 14860 12622 16396 274 10120 275 10316 23236 14861 2803 25974 12625 14863 16397 817 10118 813 10317 23238 20003 5465 25975 20001 20002 16398 817 1012 10123 10317 5484 14426 23240 25975 14864 12627 16399 940 847 939 9961 5611 5609 5612 12637 18450 29909 16400 8213 9934 10638 11048 33003 30332 33447 33005 29252 31478 16401 9561 10173 9699 10922 33448 22250 31246 31247 18814 22252 16402 1337 10326 886 10485 27146 30654 5757 21722 31534 14492 16403 9509 9375 10150 11087 23111 13964 25159 21088 22210 19884 16404 8583 8332 8638 11008 31424 33449 18166 20216 20218 31425 16405 7605 7606 7629 10592 31328 33450 31310 28612 31312 20645 16406 10167 10194 9385 10923 25321 30623 28602 24425 21053 25322 16407 9490 10273 9855 10646 19002 18871 28571 23813 18406 20597 16408 10165 10829 8112 11002 33157 32796 33451 30918 32191 33452 16409 6382 10127 6363 10384 18521 26157 6780 26873 17218 26158 16410 7852 8680 10771 10775 33453 33454 30621 33264 27250 33455 16411 8601 10830 8306 10946 31320 30861 33456 31321 24264 21298 16412 9775 9225 10528 10560 32886 12396 32742 16309 33204 33457 16413 8364 10428 9510 10856 17035 16660 17034 30118 26784 29823 16414 892 9553 10548 10802 28850 24324 32413 28851 32684 27725 16415 9095 7883 9878 10449 33458 21814 33367 27882 22970 30833 16416 729 600 10245 11170 4440 33459 28507 28509 28511 33460 16417 9483 10444 10223 10498 29305 29306 29146 33440 32590 32591 16418 1471 1446 10376 10736 5843 19039 32912 32913 21569 20250 16419 9413 9792 9670 10113 14843 19793 19794 15700 27142 29354 16420 6968 8717 6967 10600 32314 28178 7123 32315 21045 28179 16421 279 10685 281 10751 33122 25541 2832 21556 25565 25330 16422 10077 10170 9242 10960 27333 33289 26206 21885 26207 27334 16423 8456 10447 9734 11152 33461 29863 33462 33463 33402 33386 16424 9639 9812 9298 10157 32305 29318 24660 28713 30016 23484 16425 9290 9699 9561 10173 16787 31246 22852 31014 33448 22250 16426 9249 9948 10638 10764 29350 30333 30959 23685 33464 29725 16427 1396 10142 820 10769 17396 31053 5496 17398 31054 17399 16428 9896 10280 9414 10691 30568 30567 13853 19738 14179 20301 16429 8452 9163 10197 11095 33465 33466 31950 31951 22869 32528 16430 9233 9822 10050 10478 27340 22644 14419 31567 22645 21548 16431 1370 10502 440 11072 25063 33467 3639 22818 33468 25064 16432 422 9908 407 10434 14001 13696 3468 18617 13167 16808 16433 9520 8436 10406 10892 30645 27562 21732 16648 21734 27564 16434 8237 8258 10110 10318 31850 19955 13052 14700 14702 22361 16435 7845 7846 7848 10704 33469 12164 33470 33471 17458 19144 16436 134 189 6963 959 2114 24622 7235 2109 24621 2116 16437 754 653 1214 9936 4420 4705 4704 31300 27090 14424 16438 8232 9825 8634 11043 25757 30030 33472 29064 23249 29065 16439 9426 10127 9507 10384 16975 17639 17702 27306 21718 26158 16440 1227 10430 10145 11094 33107 17446 33473 33108 23215 15593 16441 9853 10060 9470 10504 28129 32656 19778 19777 18090 28885 16442 9226 9890 9744 10411 32284 31972 14239 32979 33420 24694 16443 7648 9591 7712 10546 26423 14516 33474 28918 24912 24390 16444 9269 9865 9728 11192 19957 18689 19399 33475 24206 24706 16445 617 9776 326 10442 11783 22602 3030 11562 22604 15989 16446 9207 9701 9619 10466 23362 29246 29454 26582 24051 29601 16447 1336 9789 10814 10825 33476 26142 30793 32902 22997 20741 16448 831 9686 1368 10753 11223 30996 4296 11433 33477 11434 16449 1257 9573 10864 11050 22184 17683 30746 33478 29741 26022 16450 9315 9730 10433 10622 16398 23500 12363 12366 33479 16680 16451 950 10713 9525 10849 20663 20664 20661 32751 22354 25183 16452 9382 9534 9799 10624 29515 29514 24214 16842 26437 25494 16453 9290 10087 9719 10635 16786 24835 30858 21409 15337 23983 16454 8697 8040 8052 10758 33480 33481 26305 18945 30259 27773 16455 1093 10394 9780 10681 33099 16682 33133 33100 33482 31003 16456 563 565 9892 10458 4252 33483 28956 22302 16103 32173 16457 9558 10375 9677 11068 21628 21629 21625 25123 31466 25124 16458 9631 10110 9427 10367 14013 26856 30086 11350 32013 13966 16459 10024 10775 8681 11001 27251 29381 33484 12858 29382 18693 16460 8717 8732 6896 10696 33485 31404 33486 29353 31405 28585 16461 1565 1536 1182 10417 5641 2237 2389 18600 33332 18777 16462 529 531 1220 9919 4082 4085 4084 28788 21993 28626 16463 9754 9236 10329 10722 18257 25803 33487 14237 33488 27590 16464 9259 10330 9744 10723 32090 33489 30706 30705 14240 33490 16465 9624 10839 568 10937 27102 33491 32792 29151 33492 29534 16466 7935 10056 10620 10646 33493 20376 25269 24321 30948 15190 16467 10294 10295 9430 10899 19150 26337 27401 25082 26339 26338 16468 7691 7642 8544 9698 33494 32415 23103 21725 30217 14657 16469 488 9925 495 10762 28353 30920 3870 30054 32416 17435 16470 8185 8184 8166 10484 13593 33154 33375 14949 32636 14950 16471 565 1330 9892 10458 4255 16102 33483 32173 16103 12952 16472 8573 9186 7773 9559 32943 27475 33495 32942 26504 25775 16473 9612 10195 9278 10239 28631 28629 12070 25378 33271 33414 16474 9215 9629 9778 11065 15524 28535 23915 25927 26791 30022 16475 9494 10638 9948 10764 24457 30333 21847 30852 29725 33464 16476 9935 10528 9225 10560 33115 12396 33114 17550 33457 33204 16477 9796 9916 9504 10527 17579 22091 29195 12503 26119 17580 16478 6868 7789 8805 6972 33496 24653 33497 7076 24654 24652 16479 8918 10263 10109 10626 28596 29868 33498 28597 28835 25055 16480 9363 10804 10236 11123 13370 27429 15652 27391 22235 30461 16481 9752 10385 8807 11018 19082 19081 19083 14790 33499 29439 16482 1203 1503 899 10587 2248 5804 5797 13150 13152 33306 16483 8822 8821 8820 9926 27206 33500 28621 32274 15748 15413 16484 8151 8165 10519 10867 33501 27926 33435 33502 27927 24299 16485 498 494 497 10517 3909 3907 3910 33262 11499 27431 16486 451 1094 879 10292 3636 3696 3695 20271 18064 22111 16487 1106 10400 1107 10538 33503 30704 3481 30481 13218 26461 16488 1219 1218 10386 11154 6216 14165 33504 33505 32937 32936 16489 9483 10746 10498 10755 28979 32338 33440 33506 32489 32491 16490 9957 10636 9545 10794 24808 31564 27179 21758 31565 30258 16491 8745 7785 8748 10444 29356 31551 33507 29355 31550 18378 16492 9623 9630 9305 10860 28469 29997 26555 19292 27381 30181 16493 7993 10355 10809 10965 33508 20031 32740 30055 33509 22698 16494 801 905 906 10653 5412 5415 5414 19986 29481 33510 16495 9153 10361 10710 11161 32568 32845 32839 33277 33053 26774 16496 9286 10219 9613 10758 18321 22979 23730 13084 30142 24872 16497 9388 9829 9626 11139 24188 20657 24189 31728 26872 26871 16498 421 10196 9957 10966 33139 30987 24726 33511 24810 22086 16499 8042 9735 8050 10627 15668 21859 33512 30180 22820 22821 16500 1246 533 535 9893 4104 4102 4105 21376 19310 23439 16501 9533 10124 10114 10786 32470 17510 32231 26487 29060 14847 16502 9500 10200 9910 10827 28251 25753 31499 30769 18721 21459 16503 1023 9920 10876 10930 32669 30273 33513 32670 27661 32671 16504 9545 10474 9445 10678 27512 15554 27898 24563 13035 19850 16505 1278 9666 890 11138 27170 15103 4941 33514 29832 29834 16506 9796 10269 9504 11004 30307 16667 29195 18161 27059 27058 16507 7822 8871 7824 9883 27317 33515 18676 24326 14666 33516 16508 8408 9007 9008 9862 21706 31606 33517 14057 15406 31441 16509 395 390 1133 9871 3370 3390 3389 16258 12758 12505 16510 9040 9026 8408 9862 31137 32375 33518 30929 14057 31136 16511 424 423 429 9863 3438 3553 3552 17291 17292 24886 16512 611 610 609 9866 4482 4478 4483 21591 31625 25597 16513 671 610 670 9866 4489 4487 4490 33131 16082 25597 16514 816 1381 814 9879 5470 5469 5467 13651 31677 32899 16515 8098 8100 8916 9868 33519 12352 17501 17502 12351 11482 16516 7998 8002 8850 9877 33520 17269 17263 15003 20362 15204 16517 8002 8000 8705 9877 33521 18808 19206 15204 24673 23311 16518 783 1388 1375 9867 5332 5336 5335 16080 29079 31134 16519 7820 7883 7822 9878 33522 21252 18679 17894 24325 21814 16520 379 385 442 9872 3332 3335 3334 12382 12384 12159 16521 8935 8413 8158 9873 23255 32355 33523 11829 32354 31084 16522 1204 385 389 9872 3364 3362 3365 12019 17375 12159 16523 1134 1133 1135 9871 3413 6159 6158 23183 16281 12758 16524 287 269 1309 9875 2785 2777 2786 31810 14799 13655 16525 7879 7881 8657 9881 33524 15688 27601 16676 15686 15687 16526 1256 671 783 9867 4491 4794 4796 33023 16080 33132 16527 871 781 870 9882 5322 5317 5323 22815 20424 18272 16528 1065 446 1402 9874 3670 3667 3671 25500 31085 32356 16529 7823 7821 7822 9876 33525 18680 18677 18706 24327 21988 16530 7882 7881 7880 9881 30608 33526 31513 30345 13658 15687 16531 1134 1388 395 9871 3415 3414 3412 23183 16258 31135 16532 7879 7878 7880 9881 27602 16509 33527 16676 13658 16508 16533 1110 1113 1426 9886 6135 6137 6134 31813 32947 13664 16534 287 1287 1113 9886 2875 2874 2873 31812 13664 26149 16535 7824 8120 7826 9883 33528 15564 21999 14666 12216 15565 16536 7831 9014 7829 9884 30835 11296 33529 11205 11295 11199 16537 7830 7832 7831 9884 32887 11207 33530 13840 11205 11206 16538 1111 816 1110 9879 5478 5476 5479 14184 31811 13651 16539 790 1316 1312 9885 5366 4316 4196 19154 32803 31639 16540 860 859 832 9888 5547 4855 5548 29887 21517 20908 16541 8956 9095 7883 9878 27881 33458 33531 22971 21814 33367 16542 860 1487 1480 9887 5549 5671 5670 29886 33532 28308 16543 8269 9003 8841 9889 18908 33533 17252 20363 18209 33534 16544 444 530 529 9890 3660 3659 3658 24695 28448 22690 16545 1229 685 530 9890 4091 4090 3661 24596 22690 24674 16546 9444 9825 9674 10612 20274 16455 30471 16943 17364 20275 16547 563 565 1330 9892 4252 4255 4254 28956 16102 33483 16548 686 1330 786 9892 4256 4871 4870 28642 32227 16102 16549 9672 10067 9422 10216 25952 20826 29034 27003 32885 15849 16550 1181 10057 487 10243 30431 19161 3864 24144 17586 19160 16551 575 658 574 9894 4308 4307 3689 31207 32894 11965 16552 666 575 1316 9894 4313 4315 4314 14066 31646 31207 16553 1246 596 754 9893 4116 4419 4421 21376 31729 15329 16554 9422 9917 9787 10411 21478 21477 20827 27161 27594 33039 16555 453 455 1372 10497 3702 3705 3704 14369 32154 21535 16556 6302 9560 6323 10512 26915 33535 6750 30907 30428 27972 16557 8571 9627 10571 10863 33536 19819 33537 33538 32437 31527 16558 9618 10343 6342 10344 20254 25100 25101 19261 33539 16769 16559 1021 11085 9617 11141 31196 22900 28421 33043 28765 32932 16560 9432 10376 10260 10653 19038 33540 17552 31772 32951 21704 16561 9512 10279 9858 10981 31258 31065 19411 20140 20139 14069 16562 6385 9618 10344 10414 33541 19261 27623 27625 27626 29855 16563 1520 9541 928 10712 29135 13979 5599 29136 16695 16694 16564 9414 9680 9714 10591 12023 15442 30566 13443 29968 13444 16565 9544 9415 10714 10818 33542 19969 29338 32430 32873 33543 16566 9368 9819 9620 10511 13331 27682 29443 30606 27686 27685 16567 9582 9700 9319 10928 20390 30126 23510 23513 23515 30898 16568 7957 9786 10529 11064 33544 24554 32254 32256 27875 33545 16569 8918 10109 8374 10626 33498 33546 33547 28597 33548 28835 16570 7820 7819 7818 10079 30756 33549 30214 22619 30213 30757 16571 537 596 535 9893 4115 4114 4112 25188 19310 15329 16572 9674 9825 9444 10787 16455 20274 30471 30470 25547 30031 16573 8889 9085 7922 10786 29857 33550 11733 12495 12497 29858 16574 8504 7895 8307 10231 33551 32272 25270 20422 18375 30989 16575 8631 8504 9096 10231 33552 25271 25749 25748 12278 20422 16576 9641 9807 9252 11084 20263 33373 15641 16878 22749 26223 16577 1093 10681 9780 10932 33100 33482 33133 33553 30338 20934 16578 9550 9622 10318 10568 26234 16763 26439 30662 24967 24966 16579 8567 9559 10590 10968 33554 26506 33555 33556 18175 26291 16580 8724 9587 8343 11112 31928 31737 31926 33427 33557 29503 16581 1335 10416 9993 10987 31408 15724 31407 33236 33238 32457 16582 7791 9165 8833 9635 33031 33558 26828 26831 26833 19770 16583 8213 10638 8212 11048 33447 29248 33559 33005 29251 29252 16584 8297 10664 8058 10888 24499 33560 33561 15356 33562 24500 16585 7931 7944 7932 9796 25418 25027 33563 16637 18159 25028 16586 9203 10311 9502 10793 26454 24134 17524 21894 21893 25724 16587 9184 7801 8772 9591 33564 27890 25287 25146 25288 27892 16588 9934 9948 9391 11136 29344 14510 12169 13590 13589 30334 16589 9165 8833 9635 10378 33558 26833 19770 25144 26174 31475 16590 1531 910 909 10653 5838 5826 5839 21703 22771 28782 16591 9233 10431 9822 11072 30850 24416 27340 31867 26218 31827 16592 690 568 10839 10937 4280 33491 31884 28344 29534 33492 16593 1035 966 320 10879 3040 3039 2971 18574 23979 23453 16594 1058 1317 1011 10593 2951 6021 6020 31763 29793 22084 16595 9883 10420 9350 11169 22830 22559 22829 33565 31170 33566 16596 10117 10261 9399 10725 23799 25825 16341 21989 20269 27313 16597 9427 9542 9698 10526 29455 20667 32691 29924 20668 19785 16598 9202 9515 10010 10914 30798 12934 11836 18478 28532 27451 16599 1406 1417 10721 10751 2836 31553 33567 33412 28816 30121 16600 9306 10193 9811 10424 25791 20306 26321 15272 28594 28648 16601 8812 8965 8074 10493 33568 21090 15030 15032 14537 18279 16602 10085 10530 7697 10714 25291 31250 31249 21271 32869 32870 16603 9480 10499 924 10712 33569 33570 22779 30772 30773 29137 16604 9754 10329 9310 10722 33487 17649 14236 14237 12089 33488 16605 9226 9744 10330 10723 14239 33489 32283 12092 33490 14240 16606 8787 8789 8941 10963 33571 20982 23495 25861 22209 21931 16607 9407 9929 9634 10013 26911 20038 15381 26409 30178 28384 16608 1015 715 10100 10599 5012 16320 32564 32608 16321 15532 16609 9794 9919 9226 10411 32959 33572 13690 33573 32979 21992 16610 8149 9569 10328 11064 22231 21679 22232 32185 33574 30949 16611 10248 10862 9515 10914 24507 26789 32861 14444 27451 33575 16612 619 621 9642 10750 4532 32247 18009 29015 29570 33576 16613 10223 10498 9661 10755 32590 19111 27649 33577 31807 32489 16614 8618 8750 10471 10883 33578 29930 33579 33580 24282 29932 16615 9346 9845 10020 10353 28748 21771 18304 31990 19937 25649 16616 9648 9791 9255 10098 14323 11943 12894 27944 30755 30000 16617 9343 9791 9648 10098 14967 14323 14968 13401 27944 30000 16618 980 1573 1538 10375 5987 2011 5988 20948 27211 17787 16619 394 9523 10305 10838 19579 17455 19347 32485 20392 19323 16620 7993 10809 9582 10965 32740 27328 28514 30055 30056 33509 16621 6984 120 201 1169 7193 2058 14150 14149 2060 2053 16622 9929 10013 1352 10679 28384 29440 31385 24382 29441 26471 16623 6984 6937 119 1169 7194 7190 7192 14149 2054 23752 16624 9001 8668 8981 10597 22911 17854 33581 22912 17856 15377 16625 7800 6376 6276 8876 32488 6528 33582 32487 33583 25191 16626 8068 9076 8654 11028 33584 33290 30498 30500 30502 30316 16627 913 10354 1473 10689 33585 26446 5854 22785 23950 26322 16628 6396 10483 9560 10688 33586 27971 21786 21787 19682 33587 16629 10233 10547 9276 11037 17674 11880 28011 32519 22636 18444 16630 8438 9861 9093 10449 26537 33588 33589 33590 33591 31052 16631 10071 10285 10041 10633 14251 32586 30085 20453 29848 14224 16632 9083 9064 9790 10353 33592 18141 16862 19646 15966 19936 16633 6346 9574 10031 10971 27720 27758 29649 28328 32606 28329 16634 8931 8377 8141 10089 32156 33593 23923 20646 23922 27481 16635 8864 8139 8377 10089 29918 33594 27482 18311 27481 29919 16636 157 6969 136 1241 23119 7241 2122 2124 2117 23120 16637 10220 10661 7912 10815 28756 33011 33595 23078 32286 33012 16638 8014 10848 9782 10929 15892 33446 33596 15894 30609 15578 16639 8973 9943 8362 10698 17182 14137 33597 14121 26624 17183 16640 8682 7963 8986 10087 29129 33598 29884 16369 29883 29130 16641 8067 8070 8978 10088 31468 33016 33599 31469 33017 30410 16642 9628 9970 9494 10623 25053 19517 27837 33600 26765 29359 16643 1172 1508 1525 10525 6182 4989 6183 26712 13641 15256 16644 9587 10947 9831 11112 29898 19032 28216 29503 22836 33034 16645 9656 10301 8273 10992 30871 15844 30872 32688 33601 27156 16646 9406 9733 9655 10082 26425 19270 31959 17207 30477 26914 16647 8147 10156 8188 10349 27536 18957 33602 27537 15825 18956 16648 1230 10722 9750 11188 33603 15184 22400 21951 22401 33604 16649 9493 9784 10652 10829 28203 30990 27818 24767 30248 28204 16650 8190 9835 8127 10522 28869 19463 33605 25044 12077 19462 16651 9655 9595 10082 10840 19475 30476 30477 33606 32570 30970 16652 9106 9103 10225 10976 33607 25742 33356 33357 27105 27104 16653 9204 10386 9919 10586 33188 28407 33608 12976 32960 33189 16654 9743 9863 9259 10329 14955 33609 33610 19401 33611 33612 16655 9236 9863 9743 10329 16685 14955 16089 25803 19401 33612 16656 9259 9870 9750 10330 33613 33614 32091 32090 22399 33615 16657 9750 9870 9269 10330 33614 33616 33617 22399 33618 33615 16658 9392 10325 9580 10453 13499 28506 30823 12870 26267 33192 16659 8791 6360 6311 10154 26730 6501 33059 26729 31869 17641 16660 9315 10433 9581 10622 12363 25150 32681 12366 30924 33479 16661 1517 1285 149 9548 2174 2173 2170 27462 16148 12602 16662 222 10388 9762 11111 30069 12256 25059 33619 19315 19317 16663 9130 10321 8536 10782 14748 18337 18336 33620 28805 22639 16664 8814 10321 7718 11181 23159 32969 33259 27591 33621 27592 16665 9644 9757 9339 11155 15967 19063 22384 29560 33622 25991 16666 1263 7682 1288 11046 33118 33623 1874 32898 24718 33120 16667 1448 10460 1457 10769 20090 32928 3271 13585 32929 19461 16668 9615 10331 9343 10452 15996 25653 33624 31647 14925 33625 16669 9450 10331 9615 10452 16871 15996 23266 29518 31647 33625 16670 7771 9660 9148 10546 31722 32923 33626 33627 22813 28085 16671 9998 10845 9527 10942 17201 27761 24576 31453 29642 32074 16672 7762 8826 9138 9592 29573 29390 19508 17441 11401 26181 16673 9486 10672 9960 10854 21563 25369 18069 23700 30329 23701 16674 9323 9679 9587 10851 11803 20897 21971 22865 25608 31510 16675 587 880 10222 11163 4372 33628 15141 15143 15142 33629 16676 9294 9659 9569 11064 31064 25526 26115 30950 30949 33630 16677 9228 9728 9604 10018 26457 30441 28960 12588 25265 26987 16678 8018 8906 10491 10925 33631 23997 33632 33633 23999 23998 16679 8866 10444 8743 11129 18200 18199 18198 20820 33634 20821 16680 9650 9331 9972 10577 25940 14552 25939 26301 14553 12296 16681 10400 10538 1106 10887 26461 30481 33503 23463 30482 22299 16682 7926 8559 8648 10629 33635 28997 33636 33637 17613 29676 16683 8048 10105 8147 10349 13102 27534 33638 22647 27537 22646 16684 7712 7648 7713 9591 33474 26421 33639 14516 26424 26423 16685 10171 10494 9564 10927 24860 23374 24856 27751 25364 25363 16686 7615 7575 7578 9552 33272 32463 30053 19665 26198 32464 16687 10209 10390 9033 11131 24680 29172 33640 33641 25865 29174 16688 260 234 9590 10919 2599 32261 12572 17813 17815 33642 16689 9061 9588 7861 10894 19551 12185 28434 23050 17981 17983 16690 9459 9513 10426 10726 31956 28934 24644 12461 24900 28935 16691 434 440 10502 11072 3603 33467 29592 26217 25064 33468 16692 707 889 10103 10949 4585 32472 13879 29055 28994 33643 16693 8192 8618 8750 10471 33644 33578 30976 21798 29930 33579 16694 1398 1254 422 10434 3551 3550 3476 28771 18617 22431 16695 9395 10223 9661 10755 12251 27649 27648 23842 31807 33577 16696 9211 10304 9708 11038 16295 21816 17772 23096 17755 20534 16697 9737 10583 1478 11108 29367 33645 25267 21520 25268 32579 16698 786 1318 10416 10987 5338 30204 26170 33646 32457 32456 16699 6283 6314 8777 7795 6559 28451 33647 33648 28450 23965 16700 1434 1393 10507 10825 5810 22721 24007 28966 22996 22995 16701 253 10323 1183 10505 25091 28279 2704 25090 22066 22557 16702 9839 9908 9461 11062 13698 29397 33649 32949 16982 32950 16703 1466 9561 1080 10980 28116 32163 6100 24904 33650 28117 16704 7852 7963 10775 10927 33651 29131 33264 25362 33652 33653 16705 8333 9656 8273 10992 33654 30872 33655 33656 33601 32688 16706 6980 9911 155 10807 30351 33657 27121 27122 25119 16760 16707 8580 8150 10519 10584 33658 33436 31226 33022 33145 33659 16708 9382 10349 9534 10624 16843 25491 29515 16842 25494 15824 16709 8456 8879 9734 10447 33660 31278 33462 33461 29863 31279 16710 7736 10514 7749 10863 33661 25129 33662 33663 25132 25134 16711 9544 10310 9415 10818 17221 20842 33542 32430 33543 25644 16712 8113 9738 10379 10644 32444 30578 22286 22288 16100 32459 16713 9787 10410 9388 11139 22982 25085 20368 26997 31728 30423 16714 9397 10225 9693 10976 33344 24589 23286 22271 18371 27105 16715 9537 9368 10130 10567 27933 13129 21741 29945 29445 29444 16716 9369 9537 10130 10567 27380 21741 12066 13942 29445 29945 16717 6288 1222 6369 10297 31877 27321 6597 31878 27443 27444 16718 9414 9714 9896 10591 30566 30565 13853 13443 17427 29968 16719 9924 9967 9496 10897 22950 25619 22427 22429 22428 27389 16720 9359 10074 9514 10276 25443 22315 25804 31263 18320 23507 16721 9547 10245 9465 10850 32637 23595 30047 16326 23146 32212 16722 10351 10685 9264 11049 18610 19143 19141 33664 33665 33666 16723 9204 9919 9794 10586 33608 32959 13845 12976 16497 32960 16724 9154 7800 9618 11077 32787 27372 31603 31861 25103 27375 16725 412 9803 411 10887 26612 20290 3487 33667 26153 26152 16726 1383 961 1469 10687 2178 5054 5965 26816 14172 14171 16727 1161 1366 9927 10377 5158 18097 14794 13294 18096 12197 16728 9308 9922 9837 10270 24216 29460 24665 24215 28398 21852 16729 9000 9859 7857 10419 33668 11495 32765 32767 12230 11439 16730 9539 9962 9412 10236 14094 25446 28896 15651 21652 19436 16731 9695 10047 9351 11118 24042 28696 30813 24060 25184 24061 16732 9339 9644 10043 10797 22384 23223 31191 22872 23600 17747 16733 9368 10398 9555 10511 26034 29953 25073 30606 23424 27609 16734 9981 9990 9282 10497 21032 17514 14974 14975 12156 29178 16735 9783 9946 9272 10620 27329 28665 25368 27452 22934 27453 16736 9479 10315 10540 11056 18453 11263 16298 33669 14483 14482 16737 8872 7854 7853 10494 25966 33670 33671 25847 26933 25967 16738 9269 9728 10244 11192 19399 26458 25876 33475 24510 24206 16739 8085 10840 8734 11009 31712 32569 33672 33673 33268 33270 16740 6969 189 135 1241 24924 2113 7240 23120 2118 2120 16741 8491 9105 9100 10503 21210 16691 33674 22440 16693 12053 16742 9296 9908 9716 10434 13697 30589 27690 13169 30618 16808 16743 9292 10076 9715 10259 20633 20632 20515 30166 30526 32223 16744 7938 9946 7936 10652 31889 32094 33675 30245 28517 28666 16745 8273 9656 8276 10639 30872 33676 33677 15845 33678 26961 16746 8970 7958 10228 11064 33679 33680 33093 33095 27874 33681 16747 7856 10204 8872 10494 33682 29081 33683 14947 25847 23091 16748 9579 10393 707 11036 16486 12779 29054 21038 31514 33684 16749 9370 9817 10619 10984 21405 19186 28826 27998 27839 24605 16750 9400 9926 9852 10528 15540 29113 29125 33340 32854 32855 16751 9258 9509 10133 10707 29846 23913 16806 25420 33685 27533 16752 9601 9906 9409 10999 23548 21322 23547 20571 15301 33686 16753 9408 9906 9601 11000 23549 23548 18250 28441 15086 33687 16754 9400 9936 9935 10528 27714 28082 15158 33340 33115 14425 16755 8257 8751 9951 10519 27742 33688 13492 13495 13497 27743 16756 9689 10652 9344 11131 19448 30017 26824 30685 32039 32040 16757 6343 6313 6274 7760 6525 6520 6523 18506 33403 28393 16758 8434 8309 9778 10976 33689 31578 25282 25285 18372 31579 16759 9226 10333 9794 10742 33690 33691 13690 11902 13692 33692 16760 8568 8609 10668 10968 33693 21970 32076 28412 18176 22550 16761 9268 9595 9655 10840 31831 19475 27677 33694 33606 30970 16762 1081 9561 10922 11044 31818 31247 31819 33695 33696 28838 16763 10325 10391 1452 10747 27456 30745 19097 27458 33697 24744 16764 9243 9719 9596 10087 11217 30151 13674 20670 13351 24835 16765 9304 9720 9598 10088 28974 30152 21203 13160 14979 25393 16766 9954 10795 9389 11005 19451 29364 28022 24571 28023 31817 16767 7816 7818 10079 10752 33698 30213 31412 31793 19572 30215 16768 6343 6275 6376 7760 6524 6527 6529 18506 25189 33416 16769 598 10651 544 10961 33699 17193 4158 32257 29420 23957 16770 9023 8111 9966 11000 33700 28462 23190 23192 15087 29578 16771 9533 10114 10138 10786 32231 15277 32614 26487 15002 29060 16772 6951 180 6895 9819 33368 33701 7221 29177 33702 33369 16773 9806 10457 8443 10602 31152 33703 18619 13819 18621 20304 16774 8886 8691 8692 10303 12287 33704 33705 15609 31302 15610 16775 1317 10593 9837 10987 22084 18975 26738 33706 17171 33237 16776 8347 9729 8857 10520 14469 33707 33708 12223 33709 12095 16777 9529 9358 10120 10316 32789 14862 29275 30749 14863 12624 16778 9262 10118 9532 10317 13532 26954 16481 22977 30750 20002 16779 9335 9529 10119 10316 33710 26958 13112 12623 14860 30749 16780 9532 10123 9364 10317 29277 14427 33711 30750 12628 14864 16781 8092 10766 10137 10880 30466 30467 30356 33712 23294 33713 16782 9890 10178 9376 11165 29739 32172 31971 24696 32406 25671 16783 6311 6353 6355 10524 6796 6797 6497 30386 29062 21333 16784 7911 7910 10269 11014 33714 28457 27492 26658 27493 30551 16785 8491 8328 9980 10503 33715 33716 20173 22440 26244 33717 16786 9280 9724 9668 10768 13986 23861 22108 12856 17363 13987 16787 8580 8150 8751 10519 33658 33718 31223 31226 27743 33436 16788 8761 10162 8091 10649 22631 29223 33719 22632 29729 18165 16789 7722 7721 9660 11166 24219 20749 24218 29889 21819 33720 16790 1380 9834 759 10647 32122 33721 5207 30158 31274 31912 16791 1171 10525 10675 10951 27698 27701 27700 33722 33723 33724 16792 9499 10685 10351 11049 18609 18610 18606 33313 33664 33666 16793 9218 10352 9579 10949 21346 21020 27224 21347 21023 20100 16794 1571 1222 10297 10319 6221 27444 15488 14622 17770 27322 16795 8894 10803 9518 10916 32288 27362 30633 33725 20564 26315 16796 9607 10136 9251 10231 28865 18028 28529 26991 20128 30051 16797 8987 8955 8411 10630 33726 30007 30587 24536 26292 30008 16798 475 476 10596 10852 3547 33727 16274 13544 17202 31217 16799 8288 8293 8167 10660 31345 33728 25674 14637 25676 31346 16800 8294 8898 8167 10660 30174 25677 33729 30175 25676 25678 16801 8712 10186 8715 10993 13080 31364 33730 22551 31365 22552 16802 186 7646 1167 10072 31758 32824 1806 31458 31340 31759 16803 8695 8225 8694 10259 30588 28076 33731 27290 28077 17387 16804 983 10366 9524 10736 24643 19051 24642 32065 23399 25622 16805 8130 8129 8250 9917 32556 33732 33048 33182 33316 32104 16806 715 1014 1015 10100 4401 5013 5012 16320 32564 15784 16807 9356 9900 9860 10916 23698 26314 17107 22942 22956 22181 16808 8189 8823 8822 9794 33733 25469 28620 13844 31264 24242 16809 8596 8561 7921 10454 33160 11370 33376 32056 14229 14228 16810 9265 10077 9536 10274 21614 29644 32764 19196 19327 18965 16811 8409 8917 8654 10605 13270 33734 20989 16050 20990 17428 16812 579 358 578 10000 3227 3182 3228 22706 27243 22707 16813 8491 8305 8328 10503 33735 33736 33715 22440 33717 28562 16814 965 9723 325 10953 30167 23260 3064 30282 24065 23485 16815 9341 10605 10237 10988 21804 30004 31462 21805 25612 18753 16816 6352 6354 6357 11098 6842 6725 6846 31301 27867 28158 16817 9739 10299 9207 11161 17953 32298 28983 26775 25076 25496 16818 1500 10126 1199 10658 13905 26781 2309 13607 29894 16957 16819 9283 9776 9658 9930 11782 29545 31041 12017 25712 12018 16820 9204 9794 10333 10742 13845 33691 31212 11994 33692 13692 16821 477 10596 9563 11015 31000 26484 30287 32126 23394 29379 16822 539 538 9728 10952 4120 24201 27014 29614 24202 24203 16823 9360 9533 10114 10721 33101 32231 19831 28815 32293 29331 16824 10159 10160 9328 11179 24480 25105 17707 22460 21982 24504 16825 8407 7959 8671 10056 29853 21493 33737 23831 19444 23354 16826 488 487 489 10057 3868 3873 3872 28354 16186 19161 16827 7914 7917 7913 10058 19564 33738 17116 15061 29215 23728 16828 9639 9746 9249 11048 24658 25746 25747 24956 33029 24955 16829 979 980 10375 10466 5616 20948 33739 31968 28618 26242 16830 1084 1082 10441 10980 3262 25485 17632 22743 22745 29115 16831 1336 694 9789 10825 4639 27063 33476 32902 20741 26416 16832 9283 9930 9658 10436 12017 25712 31041 18683 15064 18401 16833 1468 1478 9737 10583 5539 25267 33740 33741 29367 33645 16834 1398 9963 1379 10434 33742 14232 3486 28771 12034 14234 16835 9710 10667 1209 10735 24336 33743 29024 21115 29025 33744 16836 9228 9604 9728 10089 28960 30441 26457 18834 19396 33745 16837 8012 9584 8011 11003 23031 29106 29576 33746 33747 21355 16838 9491 9903 9782 10491 19872 29124 31069 30420 29184 30421 16839 8092 9731 8095 10944 30358 23917 33748 30359 33749 26532 16840 217 215 9732 10943 2512 30354 23584 24277 23599 30355 16841 9570 9251 10358 11137 27570 27573 26508 31391 32731 25187 16842 9373 9692 10139 10337 16848 11458 13005 12577 32209 16849 16843 9077 9068 8514 10350 32744 33750 29474 15125 29475 13295 16844 1095 967 729 9857 5085 5084 4441 31449 28508 19841 16845 9004 10432 9816 11157 33302 17063 26812 26796 22350 31074 16846 8668 8667 8665 10101 31614 33751 17985 15551 17984 13037 16847 8666 8667 8669 10101 33752 11651 25981 25983 13038 13037 16848 8243 8147 10105 10365 33753 27534 18281 33754 27719 27718 16849 1338 10323 247 10607 22558 12899 2675 21114 17606 17607 16850 9395 10303 9603 11153 15611 18512 20581 20583 20582 23153 16851 180 128 6951 6895 2090 7217 33368 33701 7221 7219 16852 8917 10078 8653 10605 21542 18410 33755 17428 18751 18752 16853 8855 7999 9736 10938 33756 23748 30393 30396 24082 24374 16854 1423 9737 829 10939 31398 24092 4841 31399 24375 24083 16855 9385 9806 10062 10457 33757 31153 26691 14998 26039 31152 16856 9441 10427 10072 11181 17886 17887 17883 27775 28092 28091 16857 9736 10135 9611 10783 30394 28233 27183 30517 31001 30518 16858 1315 9565 10681 10932 31592 19834 31327 32657 20934 20933 16859 8917 8073 8653 10078 33758 25874 33755 21542 18410 22476 16860 1043 719 1322 10439 5033 5035 5034 23264 16383 15034 16861 9231 9716 9593 11151 14912 30225 28071 16586 30400 16587 16862 7689 7743 7691 9698 21636 33759 20502 21552 21725 20666 16863 8828 6881 6948 7758 33760 7133 22047 32801 32802 33761 16864 9608 10447 9451 10475 13180 32785 33762 22757 19409 22758 16865 9636 9867 9222 11100 23199 23200 20757 32069 31315 33024 16866 9252 9867 9636 11101 23204 23199 23203 24483 31167 29080 16867 9255 9869 9640 11102 25008 18206 25007 33763 29683 33764 16868 9349 9887 9652 11108 29611 24985 30506 28052 32580 28309 16869 8431 8443 9806 10457 33765 18619 33766 30310 31152 33703 16870 9327 10221 9909 11107 23786 23504 20680 33767 27068 27067 16871 6935 6938 6992 10253 7434 7328 7433 18376 11448 17560 16872 10038 10350 9465 10689 16456 15126 22062 32066 32361 32363 16873 9332 9814 9759 11187 13469 13988 15325 33768 31824 27166 16874 1158 127 155 6951 2086 2081 2088 25116 25117 7216 16875 9551 9853 9394 10060 25498 14703 12731 12904 12903 28129 16876 8359 10811 10098 11102 33769 21525 17306 17308 16538 33770 16877 8764 8856 9729 10954 33771 30059 23177 23994 23904 30342 16878 9465 10354 10689 10850 23596 26322 32361 23146 23953 26447 16879 10232 10512 9404 11061 27670 27393 26697 28074 30893 30895 16880 9233 9735 9610 10009 15669 30098 28341 13266 25984 15670 16881 9524 10584 9432 10736 23397 12847 23766 23399 20251 28837 16882 9317 10480 9923 10868 27418 27255 19373 19374 18125 27257 16883 9317 9527 10480 10868 26942 27419 27418 19374 27257 27507 16884 8352 8818 8817 10560 33772 14050 33773 33774 14147 14146 16885 1155 10408 9626 11139 20754 20753 20752 33775 26872 26999 16886 1350 293 298 10500 2904 2902 2905 14757 29039 22064 16887 7800 6308 6376 10414 27373 6533 32488 31629 25192 31630 16888 9569 9659 9294 11067 25526 31064 26115 32599 22574 28359 16889 9335 10185 10119 11006 29660 26959 13112 12890 30299 12285 16890 8848 10862 10248 10914 33776 24507 33777 33778 14444 33575 16891 9917 10411 9422 10632 33039 27161 21478 32105 32268 33090 16892 735 864 1435 9833 5073 5113 5112 23022 22300 14406 16893 9525 9949 9836 10713 17875 19942 23124 20664 27056 20938 16894 1254 9593 1408 10819 24280 28355 4325 33779 24688 19804 16895 690 1117 798 10839 4281 4891 4890 31884 32976 31806 16896 8250 10632 9917 11198 31859 32105 33316 31860 31272 29161 16897 9617 10031 6349 10855 25296 27757 31104 28710 27760 27759 16898 9328 9788 9844 11060 17706 31844 27207 25066 25415 16457 16899 251 10125 10080 10912 33780 30331 30494 33781 26027 24309 16900 1217 754 1215 9852 5196 5194 5197 33782 33783 33784 16901 168 7692 7656 9709 31596 33785 19282 16835 21900 18334 16902 8172 7954 7953 10228 33786 30605 29814 17748 29690 27872 16903 9215 9629 9704 10131 15524 30073 32300 11302 22477 11526 16904 9492 10640 10047 11007 22423 27768 27766 20608 13957 33787 16905 6290 151 6362 10384 33098 28728 6627 18734 28730 28729 16906 8721 10656 9527 10942 30138 30137 27505 32073 29642 16620 16907 9415 10280 9896 10691 20300 30568 13854 14180 19738 20301 16908 7752 7592 8842 10418 14560 33788 33789 14565 32588 14563 16909 8049 9735 8046 11022 23727 27545 33790 24799 30786 23348 16910 9540 10156 9382 10222 32164 20313 25796 18204 16190 22842 16911 9225 9936 9935 10611 14423 28082 33114 33791 16563 33792 16912 1410 9864 891 10535 25586 14132 5771 18185 12408 16861 16913 8653 8066 8068 10237 31083 33793 33794 30005 32668 26134 16914 1144 475 9681 11125 3471 14659 33795 33796 24848 24847 16915 509 9777 438 10959 30686 28916 3630 31668 28473 28915 16916 9398 9935 9936 10611 12784 28082 27635 13801 33792 16563 16917 658 666 721 9894 4312 4728 4727 11965 21987 14066 16918 165 10155 1501 10695 14072 33797 2258 29980 27942 19014 16919 280 288 283 10685 2840 2839 2838 22840 23986 20638 16920 279 280 281 10685 2827 2833 2832 33122 25541 22840 16921 9829 10410 9380 10959 31023 31022 27263 24817 15094 31840 16922 8534 9145 10332 10899 33798 24929 27832 27834 23960 23277 16923 7777 9677 9169 10710 28020 33051 33799 31323 33052 22021 16924 9993 10593 9381 10953 29794 30658 30034 21640 28291 29795 16925 6346 6348 9574 10572 6735 21025 27720 29204 25453 25452 16926 9882 10876 9329 10930 20068 20066 15212 22752 15228 27661 16927 9325 10195 9612 10239 30806 28631 29927 28711 25378 33414 16928 9454 10631 9996 11143 33800 25946 23282 23948 22138 29753 16929 9685 10358 7812 10974 21008 18118 21384 17417 33801 32833 16930 825 10047 1490 10588 24043 14047 4664 31885 14331 14332 16931 1356 872 1086 10801 5711 5710 5431 31915 16818 33802 16932 10238 10634 9513 11045 24515 23113 22640 13350 22371 31010 16933 9314 10416 9892 10886 19559 16143 13040 13042 12838 17765 16934 9413 10262 9622 10568 12111 28171 31791 12114 24966 12115 16935 1441 1056 889 10103 2487 4586 5765 14725 32472 16460 16936 8380 8292 8290 10364 32867 31681 33803 32868 31680 25923 16937 520 343 344 10049 3152 3092 3153 21132 23502 25638 16938 1018 10405 9522 10709 18670 15788 18669 31329 29669 33804 16939 9216 10362 9985 11073 20022 19538 20023 18929 19533 30274 16940 6349 6378 6305 10031 6769 6768 6766 27757 26521 25295 16941 8312 8261 9924 10866 33805 14207 26385 26387 17536 33806 16942 9350 10449 9878 11169 26866 22970 28093 31170 21815 30834 16943 9564 10125 9477 10771 17998 11274 17994 26250 23163 32813 16944 9561 9699 9290 11001 31246 16787 22852 24143 19357 18692 16945 899 1400 9773 10587 5805 14157 16184 13152 16406 15820 16946 916 1547 907 10470 2285 5831 5829 32729 17576 17575 16947 8675 8676 8439 10823 33807 24989 33056 33057 24991 24993 16948 9389 10350 10038 10689 13297 16456 12771 29600 32066 32363 16949 9097 10420 9861 10830 33808 27688 33809 33810 19027 33126 16950 9239 10162 10649 10766 16033 18165 27517 16034 29700 15842 16951 9924 9967 9436 10592 22950 22093 17532 27914 17843 25620 16952 6962 8732 6876 7750 28584 33811 7108 25486 33812 28583 16953 1162 1329 10244 10613 5316 33813 24509 30113 19977 33814 16954 586 542 1242 10018 4135 4149 4151 16745 16498 12830 16955 8460 10533 8626 10834 28133 19285 33815 28742 19288 19290 16956 9908 10360 9461 11062 29369 16979 29397 32950 16982 16984 16957 1025 10667 9523 10735 27041 17456 27258 32205 21471 33744 16958 9607 10136 9732 10765 28865 30353 30612 30752 30465 30464 16959 9605 10137 9731 10766 28305 30357 30270 30751 14358 30467 16960 9470 10060 9551 10983 32656 12904 28757 28758 12757 28490 16961 8820 8352 8851 10560 33816 33817 11585 12874 12876 33774 16962 7846 8986 10087 10745 33818 29883 13352 31566 22624 29885 16963 9460 10433 9730 10622 14987 23500 15937 12226 16680 33479 16964 8678 10436 9519 11109 31452 21079 30640 31384 31235 33819 16965 739 10920 9670 11052 32079 27144 33335 32080 28460 19471 16966 7764 9104 9616 10984 32850 32852 20408 22668 22667 33820 16967 9025 9616 9104 10985 14919 32852 32851 17555 33821 17556 16968 9536 10274 9406 10615 19327 25599 25726 17737 17052 28087 16969 8375 10271 8207 10623 31032 25706 33822 29360 29415 29416 16970 9258 9671 9855 11115 25444 31635 31251 16807 33823 30735 16971 9279 9731 9902 10517 24917 20622 28926 24918 30620 22448 16972 1257 10864 766 11050 30746 33824 5254 33478 33825 29741 16973 748 10233 1009 10547 20868 32412 4826 20869 32517 17674 16974 1419 1052 698 10106 4927 4608 4928 31752 28862 29506 16975 1334 1052 1290 10106 4943 6063 5397 24376 31013 29506 16976 9818 10161 9374 10713 14826 24089 21899 20145 13566 21677 16977 9823 10214 9408 10607 27043 29849 15627 14379 15278 25989 16978 833 10126 10086 11177 28175 13906 28174 28973 23910 23482 16979 1342 10578 10168 11156 23798 24384 24383 32954 31896 33826 16980 9602 8112 10829 11002 32179 32796 24769 29658 33452 32191 16981 7833 7832 7834 10315 14828 25831 33827 14830 23208 11209 16982 1023 1200 1332 10930 5709 4587 6047 32670 32672 33828 16983 1095 729 600 10245 4441 4440 4437 22716 33459 28507 16984 9414 10172 9680 10311 18954 15440 12023 12027 12026 27854 16985 1212 10376 1531 10427 21188 21702 2245 18790 17101 21990 16986 8280 8279 8278 10239 33829 29809 30489 24633 29810 25377 16987 8281 8280 8282 10239 33830 24631 33014 25376 23062 24633 16988 9097 9861 8600 10830 33809 27762 33831 33810 27764 19027 16989 9093 7883 10449 11169 33832 30833 33591 33833 30834 21254 16990 9532 10317 9364 11116 30750 12628 33711 26520 30275 33834 16991 8898 8371 8727 10109 29383 33835 28118 17140 28119 29384 16992 10194 11193 9212 11196 33127 29766 30362 25019 32409 33130 16993 9622 9320 10006 10487 33391 12489 26235 16766 21178 23941 16994 10137 10293 9224 10756 30977 12911 30655 23509 26011 23678 16995 7755 7724 7660 10714 33836 33837 33838 33839 29336 33840 16996 9419 9508 10524 11095 31658 28793 14528 16131 16562 31659 16997 8372 10779 9589 10780 28486 27813 22989 31435 31172 29296 16998 8254 8451 8265 9935 33841 24502 29972 28498 32053 12783 16999 8197 9775 8851 10560 33842 15000 33843 32859 12876 16309 17000 1067 10772 809 11053 23314 32946 3231 33844 33845 33846 17001 10055 10190 9563 10798 18033 25783 25781 31198 26485 19688 17002 9556 10501 9409 10507 19454 14520 25503 24008 14523 14525 17003 213 10765 10251 11127 24270 24271 23605 32910 32909 33847 17004 10514 10863 8572 11197 25134 32436 33848 26231 32440 32439 17005 9533 10114 9343 10138 32231 14924 32230 32614 13404 15277 17006 8906 10491 9840 10996 23997 18489 23996 33849 17290 18493 17007 9558 10361 9677 10710 30201 30202 21625 22019 22021 32845 17008 9705 9730 9460 10433 19505 15937 21226 17278 14987 23500 17009 206 946 1511 10686 2475 2477 2476 21185 21314 32809 17010 6359 6377 9635 10378 6710 26629 26832 31474 26174 26630 17011 703 10249 719 10439 25436 15033 4654 25869 15034 14785 17012 9402 10156 9540 10222 16448 32164 32665 14126 18204 22842 17013 653 664 850 9936 4422 4703 4702 14424 24136 33850 17014 7773 8567 9559 10590 33851 33554 26504 26507 26506 33555 17015 364 1299 1300 10111 2621 3260 3259 16252 16251 31331 17016 9615 9713 9450 10452 21891 26898 23266 31647 29518 23750 17017 9252 9807 9641 10158 33373 20263 15641 15643 14766 20107 17018 9641 9807 9288 10158 20263 12236 22847 14766 22666 20107 17019 9440 10247 9739 10299 30434 20631 13632 17951 17953 31941 17020 9469 9849 10293 11156 24689 23676 27208 29435 29437 33852 17021 704 9553 724 10820 24323 28849 4580 25051 33853 16141 17022 8957 10064 10012 10851 31181 16035 31179 33854 27357 31652 17023 9294 10529 9543 10603 27527 26527 21164 21165 14317 24557 17024 9789 10327 9253 11120 29329 26853 26138 30615 30770 29407 17025 1490 825 645 10047 4664 4663 4665 14047 11872 24043 17026 8334 9657 8306 10830 31058 23885 33855 31059 30861 17500 17027 9624 10364 9557 10846 27296 27297 27294 28442 28910 33856 17028 9241 10249 10365 11031 33857 33858 33141 16932 33374 26452 17029 1397 1410 891 10535 5772 5771 5502 22678 12408 18185 17030 624 1093 370 10394 3291 2735 3289 30717 20209 33099 17031 959 6963 133 1383 24621 7234 2110 2112 2105 26813 17032 8432 9084 9080 10495 23702 33859 16558 14674 16560 23703 17033 8243 10365 10105 11190 33754 27719 18281 18283 14060 29335 17034 9529 10265 9358 10316 19671 13207 32789 30749 12624 32276 17035 9262 9532 10266 10317 16481 11597 15770 22977 32275 30750 17036 7700 1253 7668 10770 33860 33000 33861 33862 31455 33001 17037 9400 10776 10278 10831 15159 29986 27716 33863 32664 32663 17038 1067 9945 10772 11053 23313 20354 23314 33844 33846 33105 17039 9343 10331 9630 10452 25653 28470 15777 14925 13761 33625 17040 9630 10331 9450 10452 28470 16871 25840 13761 29518 33625 17041 7574 9996 7616 10423 25457 33864 33865 25069 33866 21258 17042 689 782 10846 10937 4884 28911 33867 33868 32358 32357 17043 9405 10064 9679 10326 31599 30785 16789 14487 15751 30886 17044 9527 9271 9805 10845 24572 31976 29459 27761 33292 13022 17045 6283 6314 6326 8777 6559 6561 6556 33647 28888 28451 17046 782 10505 9557 10792 20082 20105 20104 33308 33274 22150 17047 9428 9938 9542 10382 21485 29456 33869 19006 21200 23878 17048 445 448 10431 11072 3642 30954 30236 25065 31827 33870 17049 639 9804 819 10506 33871 23187 4628 33872 33873 26436 17050 7603 9832 7601 10372 33874 22142 33875 33876 22144 22146 17051 6993 6945 6949 10276 7438 7439 7303 18319 27803 23506 17052 9394 10060 9853 10232 12903 28129 14703 13645 14705 26616 17053 8629 9828 10443 10785 33877 31221 32099 32101 24920 19437 17054 9401 10218 9848 10470 31438 31157 14502 17577 17668 31126 17055 642 702 810 11031 4647 4650 4649 32302 16705 32086 17056 765 1325 1371 10463 5249 5251 5236 29935 29915 33878 17057 8284 10383 9770 11134 33879 15614 33880 33881 33882 23531 17058 254 10125 251 10912 25695 33780 2692 25696 33781 24309 17059 9367 10107 9682 10600 13091 19717 29899 13387 19716 15813 17060 8846 6879 6917 7790 33883 7125 26965 31717 31716 33884 17061 9001 8008 8023 9716 27240 32893 33885 22910 14913 22052 17062 9728 10244 540 11093 26458 32604 26988 26990 26989 19787 17063 8325 8326 10337 10956 31847 31671 25407 31615 26969 28684 17064 9994 10084 9361 10957 24783 23364 33331 28008 21960 20317 17065 8198 10611 10026 11171 28812 21924 31296 28813 33886 28501 17066 9360 10751 10671 11049 23552 21415 13693 33887 33315 33314 17067 9219 9666 9834 10164 32857 16069 33888 20977 15392 33889 17068 650 9787 10410 11165 26996 22982 30422 33890 30065 28081 17069 321 1361 1483 10486 3045 3046 3043 11975 22633 23945 17070 9459 9840 10306 11121 12459 11533 12460 32757 32235 33891 17071 1252 10410 9829 10959 33201 31023 25463 25464 24817 31840 17072 8316 9703 8195 10621 27262 11847 33892 25432 11850 11852 17073 9241 10249 9546 10365 33857 32083 33893 33141 25790 33858 17074 9717 9776 9283 10442 29546 11782 28479 28478 11281 15989 17075 9337 10136 9607 10231 26351 28865 30613 12279 26991 30051 17076 7660 8771 7755 10714 25554 33894 33838 29336 33839 29337 17077 9173 6338 10144 10828 32541 32544 32545 33895 29388 33896 17078 1107 408 9839 10400 3466 12926 11884 30704 12634 12927 17079 8817 9935 8254 10560 15157 28498 33897 14147 30543 17550 17080 6362 6293 6382 10384 6624 6706 6708 28730 26873 21717 17081 1080 9561 1081 11044 32163 31818 6096 33898 33695 28838 17082 212 1355 213 10251 2498 2497 2493 31683 23605 32907 17083 10046 10462 8335 10803 19389 19387 16122 27748 33899 32149 17084 7620 7551 7611 9541 32321 33900 24240 22937 22035 15074 17085 870 9654 1392 10930 17338 33901 5704 22750 23443 22751 17086 9257 10708 9760 11168 18190 20237 20236 23301 33902 20885 17087 6997 9098 6893 10648 32334 29807 7159 30628 21199 29808 17088 9295 9915 9712 10445 20599 22729 12665 12908 17305 21175 17089 9197 10258 8948 11175 30193 33903 33904 33905 33906 30960 17090 6978 8805 6867 7764 25715 33907 7072 20410 33908 25716 17091 9494 10623 9970 11136 26765 29359 19517 27081 18741 27082 17092 9252 10177 9867 11101 27581 16256 23204 24483 29080 23186 17093 9515 9228 10437 11010 12935 13134 13308 23653 24494 29200 17094 9566 9689 9272 10772 31626 27158 32638 26478 24286 26886 17095 9502 10438 10242 10770 17525 19172 19826 23013 25353 26265 17096 9344 9689 9657 10000 26824 28136 33366 23710 29803 26825 17097 8316 8193 8195 9703 32811 14724 33892 27262 11847 11344 17098 8499 10398 10300 11132 15152 24749 24748 33909 21599 28079 17099 1371 10463 1325 10922 29915 33878 5251 29916 33910 20021 17100 172 1586 976 10515 1882 2298 2294 33911 24003 26147 17101 9954 10038 9389 10759 32067 12771 28022 31456 12987 12873 17102 9147 9938 8583 10896 33912 21486 33913 33914 33080 23690 17103 9361 9994 10123 10853 33331 30800 15603 12455 15156 31491 17104 883 1306 1156 9683 5747 5746 3891 12787 18223 17229 17105 9470 10470 10561 10940 30803 27264 19780 18093 31128 31127 17106 9395 9661 9575 11079 27648 27647 12248 23843 30529 30530 17107 1263 1288 10324 11046 1874 24717 26036 32898 14466 24718 17108 582 10213 660 10392 26642 16465 4343 22986 14459 16467 17109 9311 9732 9607 10079 29937 30612 31984 29938 31411 19570 17110 8220 10513 9809 10874 26125 24354 30382 33915 20070 29574 17111 170 10338 1547 10716 22463 16923 2286 22464 25011 19951 17112 10035 10090 9232 10737 15290 12885 12714 33916 13139 33917 17113 702 643 703 10249 4648 4653 4652 32085 25436 26266 17114 362 9719 249 10635 21390 11218 2684 21503 15338 15337 17115 9516 9334 10076 10859 28893 31529 30229 22556 28908 15464 17116 8097 10756 10137 10944 32199 23509 33918 32200 30360 29943 17117 9701 10073 9501 10682 31698 24178 23361 21747 27216 31026 17118 10087 10775 7963 10927 16374 29131 29130 13353 33653 33652 17119 9784 10141 9344 10390 29084 30432 31342 29173 24679 27254 17120 9988 10035 9232 10737 24475 12714 16001 16188 13139 33916 17121 9450 9713 9615 10199 26898 21891 23266 15834 15994 26899 17122 476 478 477 10852 3818 3817 3813 31217 30289 30288 17123 8372 8370 10779 10780 33919 33920 28486 31435 29296 33921 17124 8850 8707 8623 10549 17270 33922 33164 29862 33166 26786 17125 9502 10311 9414 10565 24134 12027 33040 13329 13856 16147 17126 10062 10473 9385 10923 29746 28601 26691 17130 21053 24424 17127 9715 10259 8391 10955 30526 30527 30524 23061 31473 31472 17128 1144 9681 1235 10978 33795 21603 3816 33923 24611 24599 17129 8644 9098 7775 10648 33244 32335 33924 20553 28168 29808 17130 1571 1224 1222 10319 6223 1927 6221 14622 27322 27324 17131 425 10104 421 10196 12961 24727 3537 12307 33139 12962 17132 10143 10569 1119 11042 28953 27753 33925 23908 27754 21304 17133 864 1074 1360 10174 5075 2179 5682 13391 14280 13392 17134 864 1303 1435 10174 5683 2340 5113 13391 26542 33926 17135 996 10767 9539 10879 32383 12150 30011 30272 16436 25850 17136 9241 10179 9862 11190 33927 29582 14629 14630 14059 29584 17137 8751 8441 8580 9779 27741 33928 31223 31224 31225 18275 17138 7575 10374 9552 10631 32465 28492 32464 33273 29784 33929 17139 7942 9784 9033 10390 33930 25862 33931 27829 29172 29173 17140 9876 10308 9287 10877 18705 22932 15217 20075 20074 17715 17141 9320 9622 9694 10891 33391 33390 12490 31540 31584 32170 17142 9502 9414 10438 10565 33040 18955 17525 13329 33932 13856 17143 8793 8898 8727 9687 32695 28118 26745 26743 26744 17142 17144 9024 8895 8407 9688 32697 33933 23830 14814 23829 21434 17145 9746 10764 10638 10821 33934 33464 29249 24306 24461 31369 17146 8907 10639 8276 11130 27825 33678 33935 32779 33936 25688 17147 6904 203 1192 9858 33937 2048 26430 22902 26431 25771 17148 9760 10419 9257 11168 17391 21141 20236 33902 23301 33938 17149 8813 9085 9079 10786 33939 30071 11685 12594 12596 29858 17150 9512 10313 9511 11119 18113 23370 32194 32208 33940 32834 17151 6368 9592 6366 10417 29838 22845 6681 32723 22993 22994 17152 1095 10245 1473 10354 22716 32211 4442 30414 26446 15292 17153 1235 9681 475 10596 21603 14659 3814 14018 16274 16276 17154 10135 10783 8855 10926 30518 30516 30395 28373 33941 33942 17155 9658 9258 9776 10552 16805 33392 29545 17946 29549 19314 17156 7741 10242 7702 10675 33398 27337 33943 33944 26464 27338 17157 9299 10099 9647 10489 15372 20813 29467 31159 25692 29635 17158 9223 9583 10063 10326 30885 33248 24221 20587 22438 28431 17159 8894 9518 10761 10916 30633 19965 32269 33725 33945 20564 17160 10136 10765 9570 10921 30464 24269 29206 15666 27589 33946 17161 297 292 9837 10500 2898 14977 18977 25668 16124 16123 17162 624 1092 1091 9780 4558 4557 4559 30753 30336 33947 17163 9363 10191 9962 11014 12692 14096 14095 31103 26657 27403 17164 8151 9665 7956 10867 33434 19823 33948 33502 26512 25995 17165 8695 8694 8391 10259 33731 31470 31343 27290 30527 28077 17166 9262 10266 9530 10317 15770 29694 29878 22977 18716 32275 17167 9531 9358 10265 10316 17097 13207 28458 12565 32276 12624 17168 8227 8226 8387 9827 33949 18829 32549 19925 18653 18828 17169 615 1395 780 9691 4514 4516 4513 23857 19010 22309 17170 9315 9968 9581 10203 11256 20206 32681 12543 25252 28848 17171 9422 9919 9794 10411 27162 32959 30585 27161 33573 21992 17172 9327 10420 9883 11091 26326 22830 12804 17705 12220 31306 17173 9382 10156 9540 10349 20313 32164 25796 16843 32089 18956 17174 8007 8004 8749 10176 21864 21128 33950 21865 20858 18536 17175 8970 10796 7958 11064 33094 33951 33679 33095 33681 33096 17176 6986 10074 7758 10841 33952 21929 25584 25585 21930 18427 17177 8315 8228 8248 10591 33953 31352 13638 13442 20800 31581 17178 9249 10061 9639 11048 30839 28297 25747 33029 24956 28300 17179 9707 10489 472 10523 25259 29721 29720 32776 33954 17821 17180 8929 10364 9966 10963 12701 16888 16887 33955 21933 33956 17181 9674 9314 10298 10787 19560 18771 30406 30470 18197 17134 17182 239 10774 9535 11194 31532 27614 29262 33957 18673 33958 17183 9225 10611 9935 11171 33791 16563 33114 33959 28499 28501 17184 1091 9780 1092 10741 30336 33947 4557 23859 27619 30337 17185 9361 9526 9994 10853 33015 20378 33331 12455 31491 27275 17186 9210 9901 10551 11164 29976 17366 32721 32281 32722 33960 17187 9253 10327 9606 10506 26853 27734 28567 31260 27738 27737 17188 10609 10680 9433 10712 23006 23007 22034 29970 16950 29971 17189 9656 9726 9299 10301 30957 29466 30956 30871 15371 29468 17190 9445 9716 9593 10434 15497 30225 30226 12036 23796 30618 17191 9312 9957 9545 10794 27178 27179 27177 28701 31565 21758 17192 10092 10129 9242 10960 23058 26205 30626 26500 26207 21884 17193 8849 8586 8204 10957 33961 32972 28540 31770 20316 32974 17194 9647 10099 9299 10301 20813 15372 29467 26495 15371 14872 17195 7591 7630 7593 9548 23459 25169 23932 17210 23245 16149 17196 9996 10631 9454 11183 25946 33800 23282 30739 16062 30740 17197 6963 189 134 6905 24622 2114 7235 7239 7237 25550 17198 1503 1420 1170 10587 2250 2453 6181 33306 17758 17622 17199 8836 9842 6313 10971 28396 28397 28394 33962 33963 28330 17200 7854 10171 7853 10494 26718 33219 33670 25967 26933 24860 17201 9782 9903 9254 10848 29124 14389 28446 33446 16976 23477 17202 9593 10002 10872 11151 19803 19613 29140 30400 30744 19421 17203 1387 10168 1122 11021 33341 16245 5763 33342 31725 31726 17204 8196 9662 8346 11027 29040 33010 33964 32795 26462 28088 17205 8805 6978 6867 6972 25715 7072 33907 24654 7077 7079 17206 8585 10462 9518 10803 28692 19964 28690 32289 27362 32149 17207 9738 9452 10480 11172 33026 28864 29872 30580 33965 31098 17208 9537 10229 9362 10363 21743 12466 30867 14253 11864 27057 17209 1559 1016 10405 11035 6031 33336 32023 32026 20193 33337 17210 9105 8258 8503 10110 33966 26502 23071 12878 24719 19955 17211 9288 9965 9928 10651 14438 17993 21918 25794 17314 19833 17212 9710 9797 9298 10667 25392 26861 27996 24336 14651 28650 17213 9001 8859 8668 11151 33967 33968 22911 26543 19420 33969 17214 1116 1181 509 10243 3982 3866 3983 15024 30687 24144 17215 1181 487 485 10243 3864 3863 3865 24144 16993 17586 17216 9343 9791 9630 10331 14967 29996 15777 25653 28470 22773 17217 1423 10784 10195 10898 31664 31665 31397 33970 21452 33971 17218 9339 10043 9662 10797 31191 29044 25972 22872 18639 23600 17219 1398 409 9963 10434 3475 16338 33742 28771 14234 13168 17220 398 10371 397 10945 32351 24559 3405 32352 33197 25662 17221 9274 9609 10042 10816 23523 21499 25379 14600 24141 23524 17222 9560 9404 10272 10483 26191 26192 22277 27971 33972 27392 17223 916 10716 10470 10983 32730 25012 32729 33973 17810 33974 17224 9512 10279 9371 10446 31258 14168 20555 19237 31108 33975 17225 1184 253 1183 10505 2702 2704 2703 29939 22066 25090 17226 7706 7693 7644 10948 33976 20691 28749 24343 26544 26211 17227 9286 9540 10105 10349 16698 32165 13081 27069 22646 32089 17228 359 730 1090 9694 3234 3236 3101 21646 11476 22416 17229 8305 10503 9680 10740 28562 28155 28561 33977 31481 32290 17230 6290 6378 6350 9617 6690 6689 6630 18733 22802 21249 17231 9509 10133 9572 10799 23913 28468 33978 25160 15322 30714 17232 8017 9782 8014 10848 29992 33596 33979 33980 15892 33446 17233 8352 8817 8254 10560 33773 33897 33981 33774 30543 14147 17234 8546 10412 10313 11119 32279 30206 32278 33982 32834 33147 17235 7872 10265 7874 11006 29265 27270 33194 14994 31011 26213 17236 9209 10152 9602 11081 13538 17206 19816 13050 29659 17378 17237 1501 10695 10155 10949 27942 19014 33797 27943 27500 20099 17238 8514 8515 10044 10350 33983 18628 33223 29475 15766 20702 17239 8310 10892 9778 11065 25878 15477 33984 25879 26791 25880 17240 9005 8119 9816 10662 31633 33985 13924 12058 13926 31634 17241 9402 10249 9546 10439 14782 32083 33986 14784 32704 14785 17242 9427 10318 9550 10367 26855 26439 29189 32013 14970 31962 17243 9592 9672 9437 10417 25951 23900 11400 22994 18011 23901 17244 9591 10544 9401 10546 24388 22952 28123 24390 22951 22152 17245 8386 10022 10294 11002 33987 20385 18577 18580 18582 25488 17246 9396 9515 9983 10248 25263 25969 31730 27752 24340 32861 17247 1092 9780 624 10741 33947 30753 4558 27619 33988 30337 17248 9474 9727 9657 10625 15223 17499 19226 15396 23432 15675 17249 9655 10762 1129 11144 11410 33989 27351 19271 32673 32417 17250 1356 9844 1086 10669 26669 31231 5431 31450 31230 14447 17251 1207 1206 1205 10461 6201 6200 6202 28689 12444 17236 17252 8679 8585 8718 10462 28691 33990 17589 14396 17590 28692 17253 9770 10432 8427 11134 19861 12486 19862 33882 33991 30327 17254 1494 837 825 9695 5518 4668 5519 16935 24039 24040 17255 8488 8308 8230 9696 33992 24044 32921 21751 20164 24045 17256 9152 10682 10144 11077 23866 31660 33993 23867 20045 19075 17257 9540 10365 10249 11031 32239 33858 19674 16700 26452 33374 17258 8431 10457 9806 11113 30310 31152 33766 30312 16368 18151 17259 9755 10754 9297 11146 13746 21404 24028 22877 28488 31490 17260 8848 8847 8187 10914 33994 23933 33995 33778 30913 25003 17261 9530 10266 9634 10630 29694 28715 29877 27415 27604 23895 17262 9293 10183 9873 10697 19690 17487 14910 30027 32068 32324 17263 9690 9937 9235 10243 18851 31631 26576 27266 16992 31582 17264 9209 10015 9854 10958 15518 15880 15596 13322 15598 24123 17265 6902 7802 6864 8773 27096 33996 7060 27095 33997 27094 17266 9259 10178 9863 10729 33998 26003 33609 33999 31970 32171 17267 9890 10178 9259 10729 29739 33998 34000 31973 33999 32171 17268 10137 10766 9571 10880 30467 29701 28449 23294 27259 33713 17269 664 850 9936 10559 4703 24136 33850 32159 16329 19221 17270 9604 10018 9728 10198 25265 26987 30441 30443 28799 28798 17271 8220 9809 8353 10874 30382 25907 34001 33915 25909 20070 17272 9315 10203 9871 10604 12543 13526 16257 11259 17086 17088 17273 8177 10041 8608 11147 27975 22000 34002 29056 20808 18342 17274 7957 10529 9786 11147 32254 24554 33544 34003 28284 28285 17275 10188 10246 9556 10933 26443 28846 24895 14279 20287 23281 17276 664 9936 653 10559 33850 14424 4422 32159 13573 16329 17277 1506 6939 146 193 30473 7271 2162 2164 2157 29217 17278 844 10712 665 10718 21126 16949 4763 34004 20718 23024 17279 94 187 6289 1249 1953 25886 6613 1956 25885 1959 17280 8970 10228 8433 10796 33093 26474 34005 33094 26510 26511 17281 9729 10520 9380 11033 12095 30339 30657 28312 26088 34006 17282 8222 9856 8221 10513 25651 21618 34007 34008 29688 28707 17283 683 9888 859 10558 29132 20908 4854 22670 24174 22493 17284 6351 187 93 1151 31371 1952 6610 21479 1949 1955 17285 8147 8926 10156 10365 34009 16449 27536 27718 16450 16043 17286 173 10278 10831 11160 29763 32664 31112 34010 34011 29317 17287 9313 10699 10369 11122 21398 21399 12117 32325 32327 34012 17288 9504 9916 9796 10705 22091 17579 29195 25162 30653 25163 17289 9697 10278 9400 10776 27715 27716 17781 16702 15159 29986 17290 9935 10560 9225 11171 17550 33457 33114 28499 33959 30544 17291 9245 9651 11041 11106 19996 28925 26214 28832 34013 34014 17292 9463 10495 10004 10582 14675 20327 27484 21196 23127 21197 17293 8752 9639 8217 11048 25238 18290 32248 25239 34015 24956 17294 7993 10385 7990 10965 30350 32020 32021 30055 34016 30349 17295 8200 9667 8146 10900 28855 12629 34017 24019 14384 14383 17296 9678 11090 880 11163 11899 34018 34019 25693 33629 34020 17297 9654 10930 9487 11124 22751 15229 20838 21916 25684 25683 17298 958 9676 1469 10558 34021 16578 5963 34022 14351 16580 17299 9511 10412 10391 11011 25569 25570 16176 20359 20361 34023 17300 9256 9831 10143 10569 28219 28218 28220 22923 28953 27956 17301 8974 9990 8054 10368 15321 17186 34024 19458 17184 17185 17302 9468 10398 9941 10834 15153 15259 15258 20092 21366 23819 17303 8022 8027 10650 10817 34025 28270 30072 19060 24788 28572 17304 9018 8967 8142 9712 32689 32818 26673 20803 16302 12200 17305 9259 9750 9870 10329 32091 33614 33613 33611 19024 34026 17306 9236 9877 9754 10329 18258 18259 18257 25803 33487 15349 17307 9745 9865 9269 10330 18688 19957 19398 34027 33618 24821 17308 9259 9890 9744 10330 34000 31972 30706 32090 33489 22691 17309 9286 9534 10292 10349 27850 27851 14934 27069 31921 25491 17310 9408 9966 10214 11000 18249 21240 29849 28441 29579 15087 17311 9796 10049 9412 10705 19746 19745 19747 30653 23558 25382 17312 8682 9036 9699 10745 34028 20458 16371 22623 20460 20459 17313 7572 1273 7616 9996 34029 34030 34031 25944 33864 34032 17314 8578 8579 10114 10452 31656 26253 20426 12104 14926 31845 17315 10217 10544 9591 11034 30416 24388 15045 29002 29511 18892 17316 9522 9339 10023 10934 30433 25971 23828 30779 29096 29828 17317 6974 9969 6975 10962 25229 34033 7285 34034 34035 15626 17318 6948 7758 6986 10074 32802 25584 7135 22046 33952 21929 17319 9335 9529 10316 11006 33710 30749 12623 12890 34036 12326 17320 8849 10957 9994 11116 31770 28008 27906 30149 26516 30802 17321 9461 10090 10035 10737 17473 15290 15885 34037 33916 33917 17322 8733 9959 8663 10582 34038 29045 27983 27985 24530 15336 17323 1301 10070 1481 10450 34039 22339 5529 34040 22713 22714 17324 9402 10439 9546 10563 14784 32704 33986 15068 16588 25402 17325 1025 1209 10667 10735 5138 33743 27041 32205 33744 29025 17326 8151 10519 9665 10867 33435 28544 33434 33502 25995 27927 17327 9241 10167 9546 10249 18540 30650 33893 33857 32083 25435 17328 394 10305 388 10838 19347 34041 3380 32485 14615 20392 17329 9791 10331 1004 10860 22773 28890 32124 25860 28891 25089 17330 6385 6308 9618 10414 6783 27371 33541 27625 29855 31630 17331 9245 9883 9771 10308 16644 22387 22386 16645 34042 14665 17332 9769 9878 9287 10308 17426 18446 18542 34043 22932 17895 17333 9771 9883 9350 10308 22387 22829 15990 34042 31169 14665 17334 9350 9878 9769 10308 28093 17426 12045 31169 34043 17895 17335 9762 9876 9245 10308 12253 13776 14093 33388 16645 18705 17336 9287 9876 9762 10308 15217 12253 15216 22932 33388 18705 17337 8476 10395 9061 10642 31953 29702 34044 34045 19563 30881 17338 8578 8607 8579 10452 34046 26252 31656 12104 31845 23751 17339 9600 9723 9379 10250 29089 18865 29541 21211 18864 17968 17340 9488 9980 9553 10503 20174 20556 27724 12052 28319 26244 17341 9461 10035 9988 10737 15885 24475 21506 34037 16188 33916 17342 9250 10092 9687 10790 28331 31623 11950 25961 27339 28332 17343 9500 10200 9526 10369 28251 22904 20379 21400 17956 22906 17344 7770 9116 8525 10865 34047 16748 34048 32137 16749 13956 17345 215 10765 10136 10921 30463 30464 30352 34049 15666 33946 17346 8644 8437 10128 10892 34050 19762 24427 20554 24428 26083 17347 8724 8723 10947 11112 34051 33033 33426 33427 33034 26801 17348 9338 9881 10207 10904 16675 16677 13415 22467 16688 16643 17349 9338 10208 9881 10905 13422 16678 16675 22466 17807 17809 17350 1360 150 131 6981 2104 2102 2097 13804 7226 13803 17351 9453 9822 10050 10627 14531 22644 14216 13319 14218 24112 17352 482 1154 585 10234 3836 3851 3850 17312 18498 22186 17353 9212 10819 9593 10852 14214 19804 20916 29208 24281 34052 17354 1407 9668 1376 10715 11503 34053 5154 14367 32747 14368 17355 9608 10444 9391 11129 15561 18785 31115 24511 21813 20821 17356 9593 10819 1254 10852 19804 33779 24280 24281 22432 34052 17357 8624 10702 8390 10732 28069 23808 34054 29893 29526 26405 17358 1446 541 1413 9915 4143 4144 4146 19036 27432 31155 17359 8591 8590 10567 11132 34055 34056 26552 27709 27711 34057 17360 854 777 9628 10509 5304 32525 15807 15810 15812 34058 17361 9572 10133 9509 10707 28468 23913 33978 34059 27533 33685 17362 8737 10185 7873 11006 12283 31834 34060 12284 31835 12285 17363 9542 9938 10370 10833 29456 30816 26688 29457 30964 29191 17364 9582 10809 10355 10965 27328 20031 23757 30056 22698 33509 17365 8193 8614 8192 10471 26670 34061 21796 11329 21798 15549 17366 1398 407 409 10434 3474 3472 3475 28771 13168 13167 17367 362 1384 249 9719 2686 2666 2684 21390 11218 17730 17368 466 1101 1377 9720 3756 3771 3770 23243 14896 24522 17369 1009 677 679 9721 4824 4822 4825 32411 17150 21449 17370 726 725 727 9722 4850 5063 5062 32674 13310 16689 17371 9646 10549 9310 10847 26787 29006 19223 15206 17651 26788 17372 1364 312 325 9723 3000 2959 3001 14261 23260 11340 17373 9612 10432 9325 11134 29928 21100 29927 29023 28712 30327 17374 9369 9911 9620 10807 16759 23759 15755 14582 27939 16760 17375 9220 9834 9666 10164 12340 16069 15102 13238 33889 15392 17376 650 10410 1160 11165 30422 31228 4081 33890 31229 30065 17377 8717 10102 8558 10696 28177 14417 34062 29353 13554 17008 17378 9579 10103 9696 10949 17394 28591 31765 21023 27501 28994 17379 9874 10182 9247 10677 25499 20766 30203 32229 13213 32594 17380 7979 8913 7977 10264 32849 32848 11640 13246 13248 26611 17381 8026 8022 8027 10650 28991 34025 34063 20347 28270 30072 17382 8163 10387 8287 10867 32537 17132 34064 32539 32992 18906 17383 9486 9717 9776 10552 26490 29546 22603 18592 29549 29548 17384 10358 10974 9607 11137 32833 31414 32832 32731 26994 34065 17385 9714 9896 9421 10280 30565 12342 12967 12971 12970 30568 17386 9288 10134 9667 10651 20743 20700 12630 25794 25793 31779 17387 9695 10322 837 11118 11315 31936 24040 24060 24059 18464 17388 1032 9674 1318 10612 34066 30052 5341 23320 33091 17364 17389 9519 9365 10436 11013 15582 18993 21079 16903 17114 16904 17390 9520 10406 8436 10936 21732 27562 30645 27446 32217 26976 17391 7935 8672 10056 10646 34067 21769 33493 24321 15190 21770 17392 7990 8807 10385 11018 34068 19081 32020 32022 29439 33499 17393 8691 8692 10303 11153 33704 31302 15610 23483 23153 31304 17394 9384 10128 9702 10352 28435 18241 17019 12658 17021 28436 17395 9516 9576 10461 11066 27769 30388 23684 27770 32911 27739 17396 9809 9899 9305 10666 26240 26557 21331 17980 21332 23418 17397 9268 10135 9611 10430 28232 28233 16306 17238 15591 26101 17398 974 975 973 9830 2468 5979 5978 31275 25279 18073 17399 9305 9630 10661 10811 29997 28755 17203 17205 16971 21523 17400 8726 10362 8725 11088 30941 15119 34069 31417 27997 17179 17401 8756 7788 6266 6357 27073 34070 34071 27072 6488 27071 17402 9722 10275 726 11037 14027 22520 32674 27370 22484 18445 17403 9500 10369 10699 11122 21400 21399 14118 31500 34012 32327 17404 9346 10353 10020 10903 31990 19937 18304 13753 16355 30425 17405 689 568 9624 10846 4278 32792 34072 33867 28442 33232 17406 8475 10353 9633 10903 29569 14589 29567 34073 21986 30425 17407 9433 10117 10559 10611 18614 18429 16074 20060 33442 33441 17408 1031 10346 1416 11074 25309 12391 4072 24543 14626 15776 17409 9310 9870 9750 10329 28400 33614 15182 17649 34026 19024 17410 9754 9877 9310 10329 18259 17650 14236 33487 17649 15349 17411 9226 9865 9745 10330 34074 18688 14856 32283 34027 24821 17412 9744 9890 9226 10330 31972 32284 14239 33489 32283 22691 17413 9342 10441 9850 10980 24738 23517 22856 28377 28378 22745 17414 8034 8029 10219 10488 34075 29963 34076 19789 29962 22227 17415 7721 9660 7719 10546 20749 31724 34077 28084 34078 28085 17416 779 540 538 9728 4129 4128 4130 26318 24201 26988 17417 9815 9909 9266 10673 26151 13699 12242 18021 13258 15029 17418 7966 8757 7866 10465 34079 22695 31316 20111 15194 22696 17419 8347 8764 8857 9729 23176 34080 33708 14469 33707 23177 17420 8165 8257 8751 9951 34081 27742 34082 24298 33688 13492 17421 1303 1435 10174 10908 2340 26542 33926 34083 27777 27776 17422 8604 9062 8474 9972 33418 29564 29586 14551 20996 29566 17423 9620 9819 9368 10807 27682 13331 29443 27939 15580 15333 17424 1462 10354 913 10689 24568 33585 4751 26323 22785 26322 17425 9364 10317 10266 11116 12628 32275 29695 30275 24908 33834 17426 9583 9979 9317 10063 21690 11886 25806 33248 13473 13997 17427 10241 10549 9329 10913 14882 15718 13903 22249 14545 31149 17428 9639 10882 8217 11048 18289 16441 18290 24956 34015 30224 17429 9328 9844 9788 10159 27207 31844 17706 17707 17708 22456 17430 8645 9082 9098 10694 34084 33169 33413 31439 30075 29404 17431 9341 10147 9598 10237 20592 30153 30448 31462 13782 31650 17432 9598 10147 9362 10237 30153 13201 13502 13782 13781 31650 17433 700 699 820 10142 4555 4933 4932 12659 31053 18136 17434 9264 9767 10206 10904 26202 16961 22841 21492 17096 17095 17435 9360 10210 9767 10905 24328 16965 24329 22693 17091 17093 17436 8878 9146 10347 10402 34085 18043 28625 27922 18948 19069 17437 176 1569 10375 11068 2320 34086 22001 25122 25124 34087 17438 9434 9984 9559 10288 13946 26288 29005 17381 32001 22147 17439 9483 10808 9608 10998 29340 13184 34088 29782 24712 24714 17440 774 772 773 10170 5280 4904 5281 27610 27332 31815 17441 9122 8529 7799 10609 34089 32419 27376 27378 21633 25385 17442 10271 10623 9237 10900 29416 27655 26079 24020 21889 29417 17443 9475 9830 9627 10571 18074 24854 34090 32434 19819 24855 17444 9293 9873 9757 10697 14910 17548 20729 30027 14884 32068 17445 1451 9509 10707 10799 27529 27533 27531 30156 34091 25160 17446 419 1125 1060 9957 3534 3536 3516 34092 30256 22105 17447 9244 9642 10442 10513 31256 11282 29829 31358 28482 28708 17448 9147 8583 10382 10896 33913 19134 34093 33914 20549 33080 17449 9401 10338 9660 10716 16924 23074 34094 31042 20750 19951 17450 9566 809 10772 11053 28274 32946 26478 33380 33846 33845 17451 9376 10632 9917 10954 28483 32105 22076 25854 23903 25168 17452 8336 9788 8471 10787 23083 20762 34095 21183 20760 20761 17453 189 6969 135 6905 24924 7240 2113 25550 7238 7242 17454 9377 10484 9827 11186 28190 18857 28109 33293 18655 30827 17455 9983 10018 9515 10982 16746 12936 25969 22284 28287 22285 17456 9132 8319 9198 10224 18026 34096 29977 19697 26597 14983 17457 9810 10463 9214 11117 25213 20019 25948 21270 21065 21064 17458 9436 10413 9603 10435 21601 15919 14262 11794 13549 23928 17459 9295 10240 10049 11089 19296 21794 28817 19297 25640 12561 17460 304 10389 303 10858 11971 32447 2947 33036 32448 18875 17461 823 10062 828 10473 34097 29747 5505 31075 24996 29746 17462 150 132 6911 1383 2101 7229 15908 2108 31864 2106 17463 7958 7954 10228 11064 34098 27872 33680 33681 27874 27873 17464 9739 10247 9207 10299 20631 26583 28983 17953 32298 31941 17465 9413 9694 9622 10262 25830 33390 31791 12111 28171 28430 17466 9262 9634 10266 11055 20037 28715 15770 15772 14937 27598 17467 9344 9657 9727 10000 33366 17499 28859 23710 28543 29803 17468 9197 10598 10258 11175 29652 21275 30193 33905 30960 29300 17469 9960 10672 9567 10854 25369 30419 30240 30329 29242 23701 17470 9585 10501 10111 10774 30379 19455 26546 27613 32820 31482 17471 8171 10796 9569 11064 29238 29377 26075 32184 30949 33096 17472 8171 7958 10796 11064 34099 33951 29238 32184 33096 33681 17473 7579 7576 7574 10347 22783 34100 25068 18949 25067 22782 17474 9756 9874 9247 10677 19630 30203 16192 14202 13213 32229 17475 9204 9893 9775 10333 31213 32741 14999 31212 34101 19311 17476 10041 10668 9425 10968 18340 17892 32215 18533 18174 18176 17477 9159 10154 9031 11088 34102 16570 34103 34104 25898 24463 17478 9267 9842 9554 10252 31674 21223 31673 14743 31769 22753 17479 6373 156 91 1228 24077 1944 6608 24076 1941 1947 17480 8592 10398 9555 10834 27605 29953 27388 28744 28743 23819 17481 923 1549 11142 11174 5888 28905 27234 27237 27238 34105 17482 9836 10161 9374 10985 20438 24089 26674 17557 24091 18941 17483 8039 8856 10674 11033 34106 30797 34107 34108 23742 30061 17484 9619 10795 589 11005 20205 34109 31396 31593 34110 31817 17485 699 623 634 10448 4552 4547 4553 17191 28149 17190 17486 9286 10292 9540 10349 14934 16699 16698 27069 32089 31921 17487 9775 9893 9221 10333 32741 26277 20396 34101 26276 19311 17488 6374 9141 7783 10031 34111 34112 34113 34114 34115 28184 17489 9477 10771 10125 11182 23163 32813 11274 33183 16874 32814 17490 899 1503 1400 10587 5804 5806 5805 13152 15820 33306 17491 9601 10193 9330 10507 28265 28647 15720 23612 27299 26085 17492 8456 9128 10447 11152 34116 33384 33461 33463 33386 33385 17493 1335 10593 1317 10987 31771 22084 2944 33236 33706 33237 17494 1304 10314 471 10479 12474 25207 3788 15853 25209 12845 17495 9400 9926 10528 10560 15540 32855 33340 14148 33204 15749 17496 8476 9072 9061 10395 34117 28433 34044 31953 29702 11519 17497 8595 9014 8476 10395 31290 34118 31954 30782 31953 12579 17498 8585 8335 10462 10803 34119 19387 28692 32289 32149 33899 17499 9504 10269 9796 10527 16667 30307 29195 26119 12503 27435 17500 7812 10358 7815 10974 18118 34120 34121 33801 34122 32833 17501 9589 10077 9242 10780 31171 26206 33294 31172 17901 30298 17502 1420 9949 1170 10587 23707 25922 2453 17622 17758 20969 17503 8215 8213 8214 11048 33004 34123 34124 31477 34125 33005 17504 665 712 664 10559 4758 4757 4424 16072 32159 16073 17505 7780 7507 8753 7694 34126 34127 32651 32649 32650 34128 17506 8061 10634 10238 11045 24489 24515 24514 34129 13350 31010 17507 8349 8350 8348 10645 28669 34130 32821 29598 32823 22237 17508 9606 9738 9271 10227 31937 34131 34132 28570 11908 27399 17509 10060 11017 1045 11024 28282 28283 28280 31836 34133 34134 17510 1129 11094 9655 11144 27352 23214 27351 32673 19271 23526 17511 9321 10625 10000 10806 22954 27782 29802 24618 23094 20836 17512 6379 6340 6342 11077 6765 6701 6782 28263 25102 19730 17513 984 10257 354 10476 27310 12526 3209 24394 12320 13933 17514 1081 10922 10173 11044 31819 22252 34135 33695 21898 33696 17515 9222 10764 9746 10821 30851 33934 27808 19973 24306 31369 17516 8253 10030 8264 11027 30992 26515 34136 30993 21290 21961 17517 9366 9941 9722 10337 23038 26984 13309 19998 26967 26985 17518 1157 9902 493 10517 23567 27695 3902 31627 34137 30620 17519 985 962 10370 10833 5006 34138 24736 29142 30964 34139 17520 9298 10157 9812 10667 30016 23484 29318 14651 11509 22129 17521 8085 8039 10674 11009 34140 34107 32258 33673 34141 34142 17522 9283 9642 9809 10513 11278 25449 26225 28481 24354 28708 17523 9400 10528 9935 10560 33340 33115 15158 14148 17550 33204 17524 8085 10674 9595 11009 32258 31661 28989 33673 34143 34141 17525 9569 10796 10228 11064 29377 26511 26116 30949 27874 33096 17526 803 10470 9848 11074 20734 17668 34144 20735 34145 17812 17527 8818 8352 8820 9926 33772 33816 34146 15541 15748 34147 17528 8232 8661 8634 9825 25758 34148 33472 25757 30030 24370 17529 9900 10409 286 11041 30646 24199 34149 22183 24200 17156 17530 8612 10957 8849 11116 34150 31770 30794 30796 30149 30802 17531 9394 9558 9843 10361 31076 25811 14807 11819 14809 30201 17532 9581 10433 9460 10622 25150 14987 31846 30924 12226 33479 17533 9469 10168 9632 10950 23414 24443 18925 22060 15345 23343 17534 593 10013 556 10884 34151 28383 4219 34152 28627 24648 17535 9309 9513 10083 10888 31932 30952 28405 22014 30953 28936 17536 9594 9229 10149 10674 28295 13976 24250 23739 14257 14256 17537 1193 155 6980 9911 2084 27121 34153 34154 30351 33657 17538 9810 9921 9300 10708 26571 26283 21380 18192 21381 19807 17539 8126 8190 8127 10522 25043 33605 34155 21502 12077 25044 17540 683 859 1445 10558 4854 4856 4845 22670 23545 24174 17541 8490 10419 9760 11168 12517 17391 14105 34156 33902 33938 17542 9348 10038 9954 10759 12872 32067 12427 12765 31456 12873 17543 9422 10216 10067 11198 32885 15849 20826 30586 31273 27968 17544 659 708 10131 10941 4303 16382 28660 28661 22478 30988 17545 10026 10027 9225 10611 30145 14088 34157 21924 33791 34158 17546 9633 9804 9253 10348 21984 31259 21180 21047 27508 14042 17547 1409 993 877 10409 2867 5102 5725 31130 19423 19422 17548 9556 10188 9330 10507 24895 12697 20286 24008 27299 27077 17549 10034 10422 9291 11018 14135 18553 21191 14791 21193 30774 17550 9254 10474 9545 10678 16977 27512 30306 16482 24563 19850 17551 9589 10077 9265 10510 31171 21614 28657 20517 28658 26426 17552 9206 9617 10031 11114 28192 25296 28581 27025 29648 28200 17553 10520 10856 9380 11033 30341 26567 30339 34006 26088 18758 17554 7751 10127 9137 10277 28615 16974 34159 28427 15739 18308 17555 946 9511 206 11011 32808 16171 2475 34160 20360 20359 17556 8029 8032 8034 10219 34161 34162 34075 29963 34076 25516 17557 9271 10227 9645 10327 11908 11909 11905 34163 26852 34164 17558 9259 9863 9743 10729 33609 14955 33610 33999 15914 31970 17559 9744 9890 9259 10729 31972 34000 30706 20972 33999 31973 17560 9671 9855 9490 10273 31635 28571 26348 21138 19002 18871 17561 403 9988 10737 11125 32253 16188 29818 29791 28830 32725 17562 9387 9691 9654 11124 29995 20980 20839 26459 21916 21713 17563 8820 9926 8352 10560 15748 34147 33816 12874 33774 15749 17564 6942 6944 6943 10205 7367 7382 7308 15872 21832 24865 17565 440 433 434 10502 3602 3579 3603 33467 29592 22576 17566 7764 9025 6866 6978 25111 34165 34166 20410 7073 25112 17567 8165 9951 8751 10519 24298 33688 34082 27926 27743 13497 17568 551 10431 9885 11148 33229 23883 34167 34168 34169 30238 17569 6893 9082 6950 10694 33170 30879 7155 20774 30880 29404 17570 1176 7629 7606 10592 34170 33450 34171 34172 20645 31312 17571 7852 10775 9564 10927 33264 19176 23372 25362 25364 33652 17572 9837 9922 9308 10500 29460 24216 24665 16124 29159 24149 17573 992 203 116 6906 2044 2042 2037 25045 7181 26650 17574 9101 8644 7775 10648 20552 33924 34173 17943 28168 20553 17575 1301 10450 1300 10919 34040 16622 6245 34174 21955 21957 17576 6899 6875 8627 7750 7104 34175 24402 24403 24404 34176 17577 9570 10251 9685 10608 23607 22895 26070 26072 23990 26497 17578 974 973 972 9830 5978 5040 2327 31275 16813 25279 17579 9402 9540 10156 10365 32665 32164 16448 16042 16450 32239 17580 9631 10367 9427 10951 11350 32013 30086 28013 29925 28014 17581 9607 10079 9732 10752 31411 19570 30612 28230 17506 19572 17582 9535 10415 9585 10617 17272 25373 27612 22081 13889 30369 17583 1212 936 1471 10376 5927 5925 5841 21188 32912 21189 17584 9319 9813 9646 10355 23511 21497 18988 23756 22018 14796 17585 8290 9998 8289 10364 34177 16407 34178 31680 12703 16409 17586 7624 8831 7541 10477 34179 31930 34180 18548 30493 31931 17587 9205 10268 10226 10418 16129 26201 14450 15539 27303 20054 17588 9789 10814 10327 11120 26142 26854 29329 30615 29407 31544 17589 978 10719 10247 11068 34181 14695 33019 33020 23591 34182 17590 9676 10102 9367 10600 19163 13057 30277 19497 13387 15721 17591 1219 1218 1540 10386 6216 6217 5273 33504 14166 14165 17592 7789 6869 8797 6961 34183 34184 26701 26699 26700 7085 17593 1534 10073 912 10440 24179 14689 5615 22207 15929 19138 17594 9391 9661 9934 10223 20709 29345 12169 12172 12174 27649 17595 695 900 1481 10450 4907 4915 4914 18823 22713 27651 17596 8789 9023 8111 9966 34185 33700 28463 21239 28462 23190 17597 8060 10634 8061 11045 30869 24489 34186 31009 34129 31010 17598 9328 9942 9844 11179 12820 15429 27207 21982 22459 24104 17599 485 438 509 9777 3628 3630 3629 15639 30686 28916 17600 8500 10398 8499 11132 31148 15152 34187 31255 33909 28079 17601 8349 9510 10520 10856 28671 20658 29597 30119 30341 26784 17602 9028 8624 8390 10732 34188 34054 29550 24806 29526 29893 17603 8203 8466 9947 11016 34189 27228 29666 29668 18104 27229 17604 9314 9674 10298 10416 19560 30406 18771 19559 28208 17761 17605 9671 10539 9855 11115 30734 25523 31635 30735 33823 30736 17606 259 1093 1188 10394 2734 2736 2725 21125 31002 33099 17607 8425 8257 8184 9951 28556 34190 18126 21915 12612 13492 17608 601 10850 10245 11170 31037 32212 32958 31038 28511 30940 17609 6987 6902 6989 9836 7067 7325 7329 22140 24464 26867 17610 10117 10286 9398 10611 19686 17806 19030 33441 13801 18435 17611 1426 10693 9886 10990 28912 15447 32947 28913 34191 23285 17612 510 247 9823 10607 2659 11265 18696 18697 14379 17606 17613 8419 9708 8999 11038 21488 21817 34192 22141 31451 17755 17614 1521 1600 202 11017 2457 2456 2454 34193 15630 15629 17615 9354 9528 9955 10993 33267 29271 12399 13679 33359 25998 17616 7546 7578 7632 10226 26438 30849 34194 19869 29777 26197 17617 905 10217 909 10653 17861 29827 5822 33510 22771 29001 17618 9608 9451 10447 11129 33762 32785 13180 24511 23101 34195 17619 9330 10193 9601 10424 28647 28265 15720 13255 13009 28648 17620 9314 10159 9788 10801 28368 17708 28369 21437 30777 32983 17621 9533 10210 9358 10486 23943 12548 31289 23946 11976 14193 17622 9717 10513 9283 11133 28480 28481 28479 29630 30462 24359 17623 9638 9747 9279 11103 15803 22381 22382 27585 31760 34196 17624 9298 9746 9639 11104 24659 24658 24660 26862 24958 24957 17625 9245 9771 9651 11106 22386 22385 19996 28832 34014 34197 17626 9651 9771 9327 11107 22385 22388 12803 33063 33767 34198 17627 9271 10227 9738 10845 11908 27399 34131 13022 27400 13023 17628 9313 10302 9586 10669 15659 21613 31287 12120 31044 14710 17629 9294 9913 9621 10228 21163 18148 23225 26117 22485 25926 17630 9292 9715 9589 10955 20515 20514 20516 34199 22991 23061 17631 9254 9584 9803 10929 20129 26864 14386 16978 30611 23032 17632 9789 640 10814 11120 34200 31541 26142 30615 31544 31543 17633 9411 10229 9537 10363 13360 21743 23705 22398 14253 27057 17634 9222 10091 9636 10192 20758 20543 20757 25699 15717 25700 17635 9221 9865 9745 10333 18687 18688 18686 26276 34201 34202 17636 9745 9865 9226 10333 18688 34074 14856 34201 33690 34202 17637 8369 10779 8370 10780 29294 33920 34203 29295 33921 29296 17638 8352 8254 8197 10560 33981 32858 34204 33774 32859 30543 17639 10065 10580 888 11021 27845 30809 34205 31480 30810 26926 17640 234 10919 1299 11023 33642 31332 2610 30767 34206 34207 17641 7567 7571 10429 10555 34208 32008 31589 30560 25303 33209 17642 1281 9948 609 10842 28716 31966 4474 28717 33364 21848 17643 8611 8387 10037 10341 34209 21094 31741 29860 21095 18651 17644 6323 6301 6324 10483 6744 6746 6745 30427 29230 27129 17645 7886 10351 7882 10671 19576 30344 34210 20292 30346 20293 17646 1503 1203 163 9969 2248 2247 2249 34211 22208 11368 17647 9643 10093 9277 10181 25478 31105 31106 20877 14038 29451 17648 9335 10316 10265 11006 12623 32276 31710 12890 26213 34036 17649 1022 10606 9813 10876 34212 28964 25910 25911 20067 29431 17650 9432 10476 9712 10902 17652 22858 12409 12412 12414 16616 17651 878 380 382 10433 3339 3337 3340 16797 21873 14988 17652 9268 9655 10145 11094 27677 12753 31431 16307 23215 23214 17653 9784 10141 9281 10683 29084 27253 28202 29086 17285 23195 17654 495 1129 10762 11144 3871 33989 32416 30921 32417 32673 17655 738 9670 739 10920 27143 33335 5092 17153 32079 27144 17656 7598 15 195 1507 34213 1647 31061 34214 1649 1642 17657 9370 9932 9817 10739 11364 23825 21405 12981 18364 15695 17658 1251 10410 1160 10959 30062 31228 3656 28472 34215 31840 17659 10167 10179 9241 11190 30648 33927 18540 32220 14630 29584 17660 9497 9912 9911 11158 22656 23762 26049 24524 28033 27279 17661 8538 9793 7793 10899 20641 24832 31476 20178 33161 20642 17662 8177 7957 9786 11147 34216 33544 27974 29056 28284 34003 17663 7654 10373 205 10537 33406 31704 34217 33407 31705 20837 17664 6989 6938 6984 9525 7326 7436 7391 24465 14151 23117 17665 9553 9488 10548 10802 27724 23008 24324 27725 32684 23351 17666 1220 10386 9919 11154 28408 28407 21993 34218 23380 32937 17667 886 787 798 10326 5350 4889 5351 30654 32759 18622 17668 7876 7874 8889 10265 27269 34219 11735 13206 13208 27270 17669 8852 8411 8412 10266 34220 32919 27272 27273 11596 26293 17670 8197 8851 8352 10560 33843 33817 34204 32859 33774 12876 17671 441 9822 10431 11072 26238 24416 33322 26239 31827 26218 17672 9655 10082 9733 10840 30477 26914 19270 33606 32571 32570 17673 9616 9374 9949 10587 24896 26675 19943 20970 20969 15819 17674 1406 1361 10210 10721 3044 23942 34221 33567 28814 29332 17675 8721 10480 8992 10845 27504 29871 34222 31350 29873 29874 17676 1209 9710 740 10667 29024 24335 5135 33743 15984 24336 17677 7528 9828 7569 10443 33186 27052 34223 34224 30558 31221 17678 6941 165 6918 10695 14070 32971 7260 20912 31360 29980 17679 9423 9786 10285 10603 24555 31611 13917 15512 16925 24556 17680 8124 8046 10009 10284 34225 27547 19726 12827 19725 30050 17681 9639 10061 9249 10791 28297 30839 25747 24661 24455 30143 17682 9711 9800 9513 11045 31774 22370 32125 33296 22371 21443 17683 8818 8352 9926 10560 33772 34147 15541 14146 15749 33774 17684 7928 10269 7915 10738 30863 28456 34226 33243 29152 11920 17685 979 10466 10375 11068 31968 28618 33739 31969 25124 23593 17686 9302 9972 9785 10994 18603 16513 17831 18604 21936 17484 17687 865 981 10331 10837 5684 30821 22772 14325 22774 30822 17688 9521 1461 10393 10753 26945 26946 14780 15754 28439 32267 17689 9592 10297 9672 10417 29303 15388 25951 22994 23901 25456 17690 6379 6342 9618 11077 6782 25101 32387 28263 25103 25102 17691 1529 7741 152 10242 33396 34227 1830 33397 30877 33398 17692 9375 9622 10006 10487 22988 26235 19883 11515 21178 16766 17693 9658 7919 10552 11133 27425 27426 17946 29631 31873 31875 17694 9850 10635 9290 11044 21408 21409 19276 28840 28839 21504 17695 630 582 543 10392 4154 4153 4155 22985 31086 22986 17696 9559 10288 8567 10870 32001 34228 33554 32613 34229 16241 17697 1022 1245 9813 10606 3421 32920 25910 34212 28964 29016 17698 9772 9894 9352 10773 32905 34230 23541 16886 24258 34231 17699 8475 9035 10353 10903 34232 30424 29569 34073 30425 16354 17700 9574 9842 9267 10212 26342 31674 31993 32830 16064 29641 17701 7781 6873 9034 6921 34233 34234 20257 20255 20256 7096 17702 7795 6284 6314 8928 34235 6560 23965 30708 30709 34236 17703 239 9535 10763 11194 29262 22082 31535 33957 34237 18673 17704 9528 9338 9955 10575 33286 12450 29271 26374 30094 13418 17705 9529 9955 9338 10575 29274 12450 33287 15568 13418 30094 17706 9318 9956 9528 10576 12447 29273 25809 12995 18732 30093 17707 9318 9532 9956 10576 25807 29276 12447 12995 30093 14584 17708 7881 10351 7884 10843 25219 29308 34238 16018 29309 25220 17709 9597 10104 9312 10817 29735 27413 29033 18840 21057 30079 17710 9026 8303 8408 11190 34239 34240 32375 33343 14058 34241 17711 9431 9779 9524 10366 18274 29661 19050 15251 19051 29339 17712 9768 10479 9346 11054 14908 12846 11568 22642 22641 24734 17713 9399 10261 9802 10725 25825 24288 25725 20269 25666 27313 17714 8794 9010 8795 10368 27331 34242 33234 25714 26726 14219 17715 9010 8765 8974 10368 21577 32221 34243 14219 19458 32222 17716 9667 9476 10258 11047 25590 25978 25979 22136 22219 33148 17717 527 10346 525 10931 34244 34245 4045 34246 34247 34248 17718 10375 10466 9207 11068 28618 26582 27671 25124 26584 23593 17719 8811 7995 8625 10422 34249 29163 32471 14243 22973 28247 17720 6289 187 93 6351 25886 1952 6614 6615 6610 31371 17721 9157 8725 10127 11088 34250 16973 34251 34252 22254 27997 17722 1227 424 10145 10430 3559 17293 33473 33107 17446 17445 17723 8091 8761 8482 10162 33719 34253 29224 29223 15840 22631 17724 8154 8640 8899 10163 32400 11727 34254 30398 12824 12823 17725 9235 9937 9777 10243 31631 24947 16555 16992 17317 31582 17726 9580 10429 7566 10747 26131 26130 23345 27855 34255 33175 17727 8994 9633 10348 10903 30819 21047 27909 27910 14043 21986 17728 1159 10130 955 10807 34256 13130 5960 31257 22538 14581 17729 9294 10228 9621 10529 26117 22485 23225 27527 29704 27871 17730 10252 10414 9393 11069 22755 28958 30873 26352 32862 32863 17731 1387 885 1342 10168 5753 5752 5754 33341 24383 31892 17732 484 438 9777 10967 3590 28916 11408 31374 28917 28475 17733 1088 1089 869 9977 5701 5700 5695 19076 13425 11383 17734 9219 9834 9640 10164 33888 19676 20978 20977 16850 15392 17735 1220 10386 770 10972 28408 26038 4686 21994 29513 28409 17736 155 126 1193 6980 2082 2077 2084 27121 34153 7213 17737 7702 10242 7701 10581 27337 30891 34257 22468 25328 28993 17738 8545 8546 10313 11119 34258 32278 32835 32207 32834 33982 17739 1459 10777 875 10844 23288 34259 5492 18568 34260 23289 17740 9271 9606 10227 10327 34132 28570 11908 34163 34164 27734 17741 8214 8213 8212 11048 34123 33559 34261 34125 29251 33005 17742 9431 9951 10556 10906 13493 20135 20133 22360 29421 12614 17743 1514 9664 1568 10585 34262 30556 2480 34263 19525 28145 17744 9239 10649 9571 10766 27517 17965 26949 16034 29701 29700 17745 8025 10135 8036 10421 16959 32088 34264 16960 30978 16435 17746 8095 8094 8762 9731 34265 27575 23916 23917 23918 14356 17747 218 217 216 9732 2517 2513 2518 22188 29623 23584 17748 724 9553 10250 10820 28849 21212 29409 33853 30083 16141 17749 9584 8011 11003 11172 29106 33747 21355 29109 31099 29110 17750 9106 10571 9056 10976 33355 34266 34267 33357 34268 33358 17751 9663 9848 9208 11074 30020 31693 12187 22192 14625 34145 17752 8274 8584 8946 10301 28724 29117 34269 25904 27151 27745 17753 9402 10249 9540 10365 14782 19674 32665 16042 32239 33858 17754 10123 10200 1244 10853 14428 30029 30028 15156 32700 27276 17755 1344 775 1347 11066 5284 5295 5299 18967 20125 20403 17756 9223 9527 10656 10942 27099 30137 16653 16810 16620 29642 17757 674 559 673 11180 4234 4232 4235 30607 20394 32993 17758 6288 161 10297 10417 31876 31879 31878 34270 25456 34271 17759 9532 9364 10123 11116 33711 14427 29277 26520 30801 30275 17760 9234 9706 9656 10541 16217 26960 30279 12530 32291 16218 17761 9386 10591 9680 10740 21723 13444 15974 19045 31481 19928 17762 9319 9646 9813 10606 18988 21497 23511 24764 28964 25171 17763 971 10071 1008 10633 34272 20451 5975 28374 17012 20453 17764 510 247 244 9823 2659 2658 2660 18696 20222 11265 17765 461 462 460 9824 3738 3737 3732 16346 13435 17863 17766 9376 9744 10411 10632 25852 33420 32405 28483 33090 17453 17767 9546 9241 10365 11190 33893 33141 25790 29333 29335 14630 17768 9522 10824 591 10934 17610 19493 19492 30779 32260 29097 17769 1398 409 1379 9963 3475 3484 3486 33742 14232 16338 17770 9507 9632 10154 11088 21844 16571 17642 17704 24463 19344 17771 9532 10266 10317 11116 11597 32275 30750 26520 33834 24908 17772 9409 10188 9556 10507 15299 24895 25503 14523 24008 27077 17773 8186 10116 9965 11047 31947 15671 32399 34273 22137 22218 17774 8918 8727 10109 10263 34274 28119 33498 28596 29868 26747 17775 7671 7748 7737 9560 32940 34275 25868 21338 20951 22113 17776 9019 7947 7928 10527 32654 34276 34277 32655 30293 21292 17777 9808 9944 9297 10754 16669 28461 15457 18418 21404 21546 17778 9225 10559 9936 10611 13572 16329 14423 33791 33792 33442 17779 374 372 9838 10986 3297 27497 15528 15763 17169 27498 17780 1317 9837 301 10987 26738 27495 2925 33706 27496 17171 17781 9708 10142 9446 10616 22969 13125 16047 15021 14905 30391 17782 7654 205 7672 10537 34217 34278 34279 33407 32331 31705 17783 8890 7752 10418 10598 34280 14565 22498 22500 14698 14697 17784 9967 10435 9436 10592 26032 11794 22093 25620 17843 17845 17785 9501 10682 10144 10828 27216 31660 28050 23571 29388 21748 17786 8101 9814 8985 11040 33007 27164 34281 33008 27163 21265 17787 730 359 580 10733 3234 3232 3235 13867 13869 31376 17788 6922 6931 6930 9693 7423 7422 7167 26358 24587 27509 17789 9479 10550 10315 11056 25838 32578 18453 33669 14482 31120 17790 9540 10105 9241 11031 32165 14628 33140 16700 16932 34282 17791 1072 10429 1071 11019 33176 32922 2311 33177 30227 19923 17792 9486 10552 9776 10724 18592 29549 22603 23393 24187 31253 17793 9757 9929 9339 11155 15654 19064 19063 25991 33622 25992 17794 9306 10364 9624 10846 12702 27296 31286 25792 28442 33856 17795 8222 9856 10513 10874 25651 28707 34008 25652 29574 25350 17796 9204 9926 9852 10586 15747 29113 32853 12976 33190 16021 17797 10346 10469 525 10931 25273 34283 34245 34248 34247 26569 17798 9541 10477 7620 10585 18700 22939 22937 13980 32322 28146 17799 8407 9688 8895 10757 23829 21434 33933 29854 28610 29767 17800 6342 6385 9618 10344 6784 33541 25101 33539 19261 27623 17801 8939 8558 10102 10383 34284 14417 16528 16529 14418 13277 17802 173 1541 10278 11160 2303 34285 29763 34010 29317 34286 17803 659 708 573 10131 4303 4302 4297 28660 11301 16382 17804 9496 9967 9924 10592 25619 22950 22427 13621 27914 25620 17805 9352 10431 9610 11148 22452 30100 30099 34287 27977 30238 17806 9033 8632 10209 11131 34288 34289 33640 25865 33641 34290 17807 9303 9972 9880 11128 23764 17480 23081 26304 34291 26849 17808 1034 1339 1388 10177 5727 3416 5333 13067 24139 24115 17809 443 436 437 10178 3617 3584 3618 22886 32581 22887 17810 667 10618 9818 10873 34292 20143 25920 25921 20064 29175 17811 9174 7751 9137 10277 28423 34159 34293 28426 15739 28427 17812 1227 435 424 10430 3561 3440 3559 33107 17445 15592 17813 7507 7780 7641 7694 34126 23067 34294 34128 32904 32649 17814 9242 10077 9589 10170 26206 31171 33294 33289 26646 27333 17815 8404 8938 8410 10424 29606 11700 34295 20627 13254 13253 17816 9596 10087 9719 10745 13351 24835 30151 30842 22367 22624 17817 8736 8950 8735 9733 30945 30140 34296 30944 27410 11286 17818 9398 9936 10559 10611 27635 16329 19029 13801 33442 33792 17819 327 322 330 10705 3008 3048 3047 25161 28124 28428 17820 551 448 10431 11148 3677 30954 33229 34168 30238 30955 17821 6323 9560 10483 10512 33535 27971 30427 30428 27394 27972 17822 1022 1245 10606 10876 3421 29016 34212 25911 29431 34297 17823 9849 10881 768 11050 32709 34298 28095 28097 28096 34299 17824 9311 9570 9685 10974 31983 26070 22967 22946 17417 32176 17825 9612 10195 9737 10784 28631 30807 29926 31870 31666 31665 17826 9836 9949 9374 10713 19942 26675 26674 27056 13566 20938 17827 885 11021 9974 11156 31893 18392 34300 31894 29436 31895 17828 9047 10179 9026 11193 14282 31138 32582 13716 31382 14283 17829 9207 9677 10375 11068 23359 21629 27671 26584 25124 31466 17830 791 9818 10713 10849 23433 20145 34301 23434 25183 19419 17831 9728 10089 9604 10749 19396 33745 30441 18911 30859 19397 17832 9044 9711 8234 10577 16181 33295 34302 12295 19355 16182 17833 233 10256 231 10550 21926 26411 2592 21643 26413 21927 17834 1355 10251 9887 11127 32907 25567 34303 32908 33409 32909 17835 8717 6896 6967 10696 33486 7119 28178 29353 19167 31405 17836 398 1250 1105 10371 3429 3431 3406 32351 13132 19452 17837 849 10132 663 10580 32882 34304 4698 29543 29979 16519 17838 285 291 1006 10199 2862 2865 2864 18763 16097 18998 17839 8120 10420 9883 11169 31305 22830 15565 34305 33565 33566 17840 8426 8427 10432 11134 34306 12486 31092 31094 30327 33991 17841 9673 10319 10831 11160 29082 31113 34307 29127 34011 29678 17842 8830 8025 8036 10421 34308 34264 30979 28776 30978 16960 17843 8178 10872 10055 11193 34309 31591 31766 31768 20610 34310 17844 9473 9588 10395 10642 19414 11520 32393 19415 30881 15521 17845 6325 6326 9843 10710 6815 28889 25812 31150 26980 34311 17846 159 102 1271 6291 1985 1988 1991 19262 19263 6637 17847 1503 1170 1400 10587 6181 6180 5806 33306 15820 17758 17848 9395 10303 10223 10755 15611 17743 12251 23842 33577 34312 17849 10116 10296 9438 11189 19715 19713 19710 22546 34313 14400 17850 8429 9718 8601 10946 20531 31319 34314 21446 31321 20086 17851 163 1503 9969 10587 2249 34211 22208 17621 16827 33306 17852 9374 9653 9818 10618 24090 18642 21899 13563 20143 25139 17853 1203 9969 1503 10587 11368 34211 2248 13150 33306 16827 17854 10108 10627 8153 10890 13320 34315 27578 32699 32698 22822 17855 8846 10107 8560 10600 24667 13090 34316 27050 13385 15813 17856 8607 9713 7886 10671 21301 19573 34317 21302 20292 20294 17857 8801 10188 8651 10999 29477 13684 34318 29479 13687 13689 17858 702 643 10249 11031 4648 26266 32085 32086 26452 30874 17859 9805 10287 9738 11039 25198 31940 33025 34319 34320 32048 17860 1374 1378 788 10628 3994 5127 5357 34321 32798 20248 17861 1271 103 199 10344 1989 1992 1995 27359 33226 34322 17862 9037 10406 8310 11065 21681 25877 34323 22413 25879 22414 17863 9634 9530 10013 10679 29877 26470 30178 28870 26471 26310 17864 9519 9305 10661 11109 26556 17203 30347 31235 17325 23092 17865 7560 7626 7637 10396 32038 34324 28929 26107 28931 29988 17866 775 10077 772 10510 20402 27883 5282 26427 32881 26426 17867 668 9818 667 10618 33172 25920 4197 29608 34292 20143 17868 614 11078 9661 11079 30925 29346 34325 30926 30530 29711 17869 9355 9577 10784 11111 22675 26376 32158 19316 26377 20654 17870 1575 853 716 10408 5021 5018 5019 30155 29036 18476 17871 9891 10629 8662 10885 26939 28162 34326 27406 28163 17618 17872 9193 10268 9117 10296 16130 28842 34327 13481 28841 17634 17873 419 9957 1060 10636 34092 30256 3516 34328 30255 24808 17874 910 10376 1446 10653 28781 19039 5828 28782 23539 21704 17875 9283 11109 10436 11133 30253 33819 18683 30462 34329 30712 17876 9850 10441 9342 10915 23517 24738 22856 17541 34330 21144 17877 6302 6396 6323 9560 6752 6751 6750 26915 33535 21786 17878 8839 8076 10176 10798 34331 28752 32145 19687 15516 28753 17879 9390 9659 9786 10328 20787 31063 12175 12138 12177 25529 17880 1220 1219 10386 11154 4381 33504 28408 34218 32937 33505 17881 9534 10009 9799 10624 17596 25985 29514 25494 26437 19727 17882 326 9776 319 10724 22602 34332 3028 23392 30545 24187 17883 9268 10145 9595 10421 31431 19558 31831 31326 28777 25609 17884 8042 8049 8050 9735 34333 23726 33512 15668 21859 23727 17885 9576 10783 10135 10926 26105 30518 28231 17850 28373 33942 17886 1238 27 149 7630 1695 1690 1697 16429 16150 34334 17887 8949 8945 10081 10950 34335 27620 24558 24367 14888 27622 17888 8622 10355 9646 10913 28937 22018 30680 28939 21498 14798 17889 9661 10498 1137 10755 19111 31325 31324 31807 31808 32489 17890 8807 10481 9752 11149 19515 19514 19083 34336 15040 30669 17891 8446 8874 8870 10680 34337 21946 34338 34339 20224 21947 17892 8227 8185 9827 10591 34340 18388 19925 19924 18389 14940 17893 7734 10321 10072 11181 33111 22637 33109 34341 28092 27592 17894 9273 10013 9530 10720 29281 26470 26603 16599 26604 27007 17895 1162 1332 1329 10613 6125 4591 5316 30113 33814 30114 17896 9335 10265 10007 11006 31710 29267 12727 12890 12892 26213 17897 8412 8413 8414 10183 32617 32618 12143 11593 12144 23256 17898 447 642 1402 10182 3674 3676 3668 14077 23253 32301 17899 8272 8340 8339 10184 32619 24934 32621 23252 23336 16013 17900 7873 8737 7888 10185 34060 32623 32620 31834 24386 12283 17901 8713 8715 8712 10186 32624 33730 32622 31900 13080 31364 17902 8919 9028 8390 10187 32625 29550 32626 23259 23807 24805 17903 9606 9253 10227 10327 28567 20528 28570 27734 34164 26853 17904 7994 8708 7999 9736 32467 34342 23746 22547 23748 32466 17905 829 1468 1478 9737 5537 5539 5536 24092 25267 33740 17906 819 10506 9804 10844 33873 26436 23187 23188 18570 31357 17907 8122 7945 8121 10397 26635 34343 24796 19258 17161 26259 17908 8699 9069 8245 10759 12762 34344 34345 12763 32443 12764 17909 9219 9640 9834 10647 20978 19676 33888 31448 31912 25010 17910 1144 406 475 11125 3456 3469 3471 33796 24847 25222 17911 9703 10252 9393 10621 16055 30873 23925 11852 23145 25433 17912 9038 10266 8852 11116 23891 27273 33195 24907 31024 24908 17913 8866 8743 8748 11129 18198 34346 34347 20820 31552 33634 17914 8942 8477 9730 10622 34348 15936 16399 12364 16680 15529 17915 447 642 10182 11031 3674 32301 14077 14079 14078 32302 17916 8609 9120 8893 10590 28234 34349 30677 21968 30679 28235 17917 10016 10237 9538 10605 34350 30320 14631 16052 28342 30004 17918 6351 92 156 1151 6611 1945 31377 21479 1951 1948 17919 9444 9586 9950 10669 31043 19061 16944 31046 33328 31044 17920 165 140 208 6941 2138 2133 2140 14070 14071 7255 17921 9761 9352 10187 10655 22449 23540 16397 32896 33249 34351 17922 324 1069 1386 10273 3059 3061 3035 28709 25815 15602 17923 1374 10628 788 10920 34321 32798 5357 34352 27528 20249 17924 9710 9797 9457 10493 25392 11547 23488 23489 14536 14538 17925 718 1242 581 10010 4346 4150 4344 15778 15779 15486 17926 9361 10123 9994 10957 15603 30800 33331 21960 28008 30799 17927 1381 10697 9879 10911 30018 15420 32899 30019 13518 26096 17928 9614 10438 9414 10565 31918 18955 25107 15662 13856 33932 17929 9407 10013 9634 10468 26409 30178 15381 13490 15563 24649 17930 9352 9772 10187 10655 23541 16724 23540 34351 33249 32906 17931 7900 7896 7897 10336 18787 34353 33312 12684 29538 18789 17932 590 589 10795 11005 4067 34109 31816 26593 31817 34110 17933 9401 10716 9660 10940 31042 20750 34094 22953 18094 32428 17934 9852 9420 10386 10586 17138 14167 17139 33190 33189 13878 17935 8743 10223 8744 10444 26346 29147 34354 18199 29304 29306 17936 9760 10708 9015 11168 20237 27347 34355 33902 27316 20885 17937 118 171 6904 1192 2050 27149 7187 2045 26430 2052 17938 1144 475 1235 9681 3471 3814 3816 33795 21603 14659 17939 9574 10212 9267 10405 32830 16064 31993 32024 21042 23403 17940 9222 9866 9746 10764 27809 25358 27808 30851 33934 21592 17941 9297 9764 10185 11146 34356 17046 28487 28488 22879 30303 17942 7465 8782 7796 7602 34357 31908 34358 34359 30483 31907 17943 7863 7862 7859 10014 31905 34360 27842 31795 27476 13268 17944 9642 10750 621 11138 29570 33576 32247 29852 27011 34361 17945 8814 7718 10290 11181 33259 34362 23157 27591 27593 33621 17946 9852 9926 9420 10586 29113 15414 17138 33190 13878 16021 17947 9511 10412 10313 10657 25569 30206 23370 27150 28100 30210 17948 7529 7607 8780 9967 34363 34364 34365 34366 34367 34368 17949 470 9707 468 10734 12468 34369 3777 34370 28762 29769 17950 9264 10302 9586 10843 22486 21613 19142 19743 28823 24844 17951 9288 10134 10651 11150 20743 31779 25794 21920 31780 23774 17952 6353 6352 6355 10524 6687 6845 6797 21333 29062 28792 17953 10105 10182 9241 11031 34371 30313 14628 34282 16932 14078 17954 8162 8730 8731 10335 33046 34372 31734 29220 31597 25441 17955 8730 8393 8394 10335 25440 30266 34373 25441 30267 19019 17956 165 1501 1479 10695 2258 2260 2144 29980 28951 27942 17957 9073 10457 9070 10816 20302 26952 34374 21539 26953 21540 17958 380 376 9986 10557 3312 12208 16845 14989 16422 11947 17959 473 9989 378 10557 29035 12212 3330 19158 11949 16423 17960 9606 9738 10287 11039 31937 31940 31939 28734 32048 34320 17961 7872 7873 7870 11006 34375 31833 14992 14994 12891 31835 17962 9514 10255 9324 10608 17974 16011 23880 23989 14729 16087 17963 8249 8674 8175 10052 34376 27459 19490 15146 25140 15311 17964 648 574 1070 10051 4053 4310 4309 32690 11266 30864 17965 9012 8406 8788 10851 34377 28884 18457 18459 18439 27356 17966 9645 10227 9253 10327 11909 20528 18583 26852 26853 34164 17967 521 525 10346 10469 4042 34245 25308 30197 25273 34283 17968 142 1479 1497 6988 2141 2148 2146 7261 28721 28949 17969 9761 9885 9352 10655 15211 23882 22449 32896 34351 19153 17970 9622 9694 9413 10733 33390 25830 31791 31792 15701 22417 17971 9228 10244 9728 11093 18835 26458 26457 19102 26990 19787 17972 174 1500 1199 10658 2307 2309 2156 29502 29894 13607 17973 9385 9546 10167 10473 33038 30650 28602 28601 24421 32084 17974 9636 9807 9252 10158 19844 33373 23203 20106 15643 20107 17975 9374 9818 9653 10161 21899 18642 24090 24089 18641 14826 17976 9297 9755 10185 10692 24028 22874 28487 32756 33084 32771 17977 9759 9332 10186 10693 15325 34378 16394 32770 33083 25323 17978 9332 9764 10186 10693 34379 24013 34378 25323 33083 32773 17979 9297 10185 9764 10692 28487 17046 34356 32756 32774 33084 17980 1119 10143 474 10569 33925 27824 3346 27753 21468 28953 17981 9281 10390 9784 11167 18933 29173 28202 23538 33082 19604 17982 1384 245 249 9719 2665 2662 2666 17730 11218 15805 17983 463 1101 466 9720 3744 3756 3755 19429 23243 24522 17984 9691 9387 10097 10684 29995 13484 31853 25680 15232 16242 17985 186 1528 1211 10072 2371 2373 1802 31458 25454 17882 17986 9994 9526 10200 10853 20378 22904 28252 31491 27276 27275 17987 1364 325 965 9723 3001 3064 3065 14261 30167 23260 17988 1350 1004 361 10331 3246 3243 2906 14756 15107 28890 17989 981 1006 361 10331 3245 2896 3244 30821 15107 16821 17990 9558 9207 10719 11068 30200 28985 29405 25123 34182 26584 17991 9352 9894 9772 10655 34230 32905 23541 34351 32906 14194 17992 8591 8564 8763 10511 26549 32739 34380 26551 32522 26550 17993 9102 9082 8645 10694 34381 34084 33378 33377 31439 29404 17994 9169 7777 9140 9677 33799 28015 34382 33051 28018 28020 17995 9366 10174 9555 10533 13393 29399 29398 15315 28135 13775 17996 7565 7552 175 10429 34383 34384 34385 34386 34387 32009 17997 7640 8814 7718 10290 34388 33259 34389 31797 34362 23157 17998 540 539 538 9728 4127 4120 4128 26988 24201 27014 17999 10395 10642 8476 10992 30881 34045 31953 30784 31955 34390 18000 8888 10771 8680 10775 23164 33454 34391 27249 33455 27250 18001 433 428 434 10478 3578 3580 3579 29050 26215 19194 18002 205 1579 7672 10537 1894 32328 34278 31705 32331 32333 18003 8264 8450 8725 10362 29358 15117 34392 21288 15119 15118 18004 9452 9738 10287 10379 33026 31940 25473 25475 25477 30578 18005 9279 10517 9902 11103 24918 30620 28926 31760 23576 31628 18006 1015 1555 10599 11035 6029 23694 32608 32565 32162 32146 18007 8473 10425 9785 10994 27954 22787 33444 31662 21936 30541 18008 650 749 10410 11139 4689 33200 30422 26998 30423 34393 18009 8753 7694 7724 10714 32650 34394 34395 34396 33840 34397 18010 844 665 845 10718 4763 4765 4764 34004 34398 20718 18011 9181 10556 9544 10782 32573 32572 30719 32425 19930 20783 18012 9628 10271 9970 10623 22542 30836 25053 33600 29359 29416 18013 614 654 9661 11078 4499 19109 34325 30925 29346 32775 18014 8545 10313 8594 11176 32835 34399 34400 28335 34401 32836 18015 9630 10331 9791 10860 28470 22773 29996 30181 25860 25089 18016 1349 10510 9516 11066 32679 23674 30630 32096 27770 26428 18017 8177 7957 8148 9786 34216 34402 34403 27974 34404 33544 18018 319 10724 9776 11162 30545 24187 34332 30548 33393 30549 18019 1401 870 9654 11124 5319 17338 20979 21917 21916 34405 18020 8888 7966 7863 10564 20112 34406 27841 18474 27843 20113 18021 9459 10497 10426 11063 30228 22011 24644 22391 32061 23851 18022 1143 1138 1261 10509 6169 4709 5646 25655 14007 17304 18023 9952 10280 9421 10906 18354 12970 18351 17646 12345 19190 18024 9280 9838 9668 11178 17168 17742 22108 25949 23862 20246 18025 8939 8324 8558 10383 34407 11757 34284 16529 13277 13276 18026 668 10618 667 10873 29608 34292 4197 34408 25921 29175 18027 1203 951 1202 10962 5799 2382 2246 34409 34410 19721 18028 9402 9546 10249 10365 33986 32083 14782 16042 33858 25790 18029 9794 9919 9204 10333 32959 33608 13845 33691 31212 23379 18030 7826 9815 7828 11059 12217 26763 34411 33076 27191 20780 18031 566 9808 560 11057 19248 26756 2787 33075 27189 20776 18032 1308 9810 1443 11058 21266 26760 3280 33077 27190 20778 18033 6396 6323 9560 10483 6751 33535 21786 33586 27971 30427 18034 8261 9132 8312 9924 18025 34412 33805 14207 26385 18027 18035 8466 9033 10209 10390 34413 33640 27226 27281 24680 29172 18036 9570 10103 9251 10921 27571 17393 27570 27589 16488 13882 18037 9226 9919 9794 10333 33572 32959 13690 33690 33691 23379 18038 7767 8702 7595 9907 34414 34415 15632 15635 15637 16794 18039 606 778 9628 10542 4470 18994 11840 12424 13140 26397 18040 9597 9957 9312 10104 26548 27178 29033 29735 27413 21755 18041 9722 10139 9366 10337 13311 13001 13309 26967 19998 32209 18042 6928 6907 10225 11197 7352 34416 29278 26626 29280 34417 18043 7790 6878 6968 8717 34418 7121 32312 32313 32314 34419 18044 7786 6882 6913 8828 34420 7137 22243 22244 22245 34421 18045 9656 10301 9299 10639 30871 15371 30956 26961 15373 14877 18046 922 920 10719 11174 5882 12735 30032 32555 16989 16505 18047 1512 1233 1474 10403 6227 4364 6228 13969 14311 14310 18048 9262 10317 9530 10679 22977 18716 29878 17301 26310 20006 18049 8958 7814 7817 10974 26059 34422 25242 17416 25244 26061 18050 9863 10329 9236 10722 33612 25803 16685 24885 27590 33488 18051 9259 9870 10330 10723 33613 33615 32090 30705 33490 34423 18052 9662 10028 9456 10043 31168 12328 20336 29044 21439 21440 18053 9604 8140 10749 11010 29029 32602 30859 29201 34424 34425 18054 8777 9843 6326 10710 28452 28889 28888 34426 34311 26980 18055 7802 6912 6865 9025 19887 7069 34427 19886 34428 14917 18056 1559 10405 1019 11141 32023 34429 6032 32218 34430 32219 18057 9495 10526 9698 10675 29008 20668 11474 24938 24940 27886 18058 7563 10391 7562 10412 25245 19700 34431 29719 25568 25570 18059 6306 8825 6260 7762 21662 34432 6464 21661 34433 21660 18060 9219 10647 9834 11138 31448 31912 33888 28176 29833 28534 18061 8606 8177 8148 9786 27973 34403 34434 12176 34404 27974 18062 8350 10197 8840 10645 16908 18037 34435 22237 18039 18038 18063 10242 10525 9495 10675 19174 25929 25930 27338 24938 27701 18064 597 10027 665 10559 14087 20717 4425 13571 16072 17180 18065 7598 195 16 1178 31061 1646 34436 31060 1651 1653 18066 10027 10559 9225 10611 17180 13572 14088 34158 33791 33442 18067 641 694 695 10289 4637 4643 4642 32982 18820 26415 18068 9526 9361 10206 10853 33015 24103 21124 27275 21342 12455 18069 6969 6897 6983 9682 7245 7300 7304 23122 33167 26369 18070 1304 470 471 10314 3787 3782 3788 12474 25207 12471 18071 9594 10410 9376 11165 30063 22077 30469 25672 32406 30065 18072 7945 8960 7932 9982 34437 33173 26258 26257 17792 27641 18073 331 10049 330 10705 25381 27242 3049 19966 28124 25382 18074 7677 7675 7676 10180 30937 34438 27788 27787 26143 30938 18075 9812 9882 9326 11051 13839 13837 11508 32828 21149 34439 18076 1147 745 670 10791 4791 4790 4496 34440 15573 18972 18077 163 1202 6894 9969 2072 34441 17619 22208 20433 34442 18078 1556 1187 151 10384 2180 1967 2181 25834 28729 21719 18079 9556 10246 9240 10450 28846 28845 22915 16624 22916 32975 18080 7953 7952 7949 10654 31027 34443 34444 32864 19128 32865 18081 190 6361 10345 10573 32421 32422 32423 34445 24072 34446 18082 9546 10439 9403 10563 32704 17084 26355 16588 17158 25402 18083 9352 10357 9894 11148 33246 11967 34230 34287 31209 27978 18084 8382 8921 10298 10787 34447 15483 30765 29604 18197 32028 18085 8782 9975 7604 10897 31909 32892 32890 34448 34449 25050 18086 9438 10457 10062 10602 20303 26039 17129 19799 31154 20304 18087 8095 8092 8094 9731 33748 34450 34265 23917 14356 30358 18088 217 215 216 9732 2512 2504 2513 23584 29623 30354 18089 9673 10831 9400 11160 34307 33863 20520 29127 29126 34011 18090 646 10640 10047 11118 34451 27768 29609 29610 24061 34452 18091 1349 793 10076 10510 5294 23465 32381 32679 20634 24350 18092 8263 9701 8449 10682 11381 20706 34453 34454 21746 21747 18093 401 9754 397 10606 14235 21790 3425 12139 21789 17281 18094 6945 6943 6913 10205 7384 7383 7385 21229 23505 21832 18095 7682 7663 1288 10515 34455 34456 33623 34457 30841 34458 18096 9564 10087 9243 10927 23982 20670 23981 25364 13676 13353 18097 9600 10629 8559 10970 23053 29676 28999 29090 29956 28068 18098 527 521 525 10346 4044 4042 4045 34244 34245 25308 18099 1196 175 7552 10429 1741 34384 32004 32007 32009 34387 18100 9235 9595 9937 11009 19476 33233 31631 30814 22166 34143 18101 297 298 10500 10858 2903 29039 25668 18979 25669 30715 18102 978 977 10247 10719 4742 17949 33019 34181 14695 18531 18103 1392 10930 9654 11124 23443 22751 33901 25682 21916 25683 18104 118 171 6937 6904 2050 23753 7189 7187 7191 27149 18105 369 10059 1267 11178 34459 27659 2716 34460 31203 23619 18106 8429 9718 9080 11091 20531 16559 20530 34461 30713 22418 18107 9276 10275 9722 11037 11879 14027 26966 22636 27370 18445 18108 9386 9714 9680 10591 15973 15442 15974 21723 13444 29968 18109 524 359 10006 10733 3147 23543 18050 18051 14557 31376 18110 9266 9766 10256 11056 22017 20311 14140 34462 31119 31118 18111 1060 10636 9545 10678 30255 31564 30882 31842 24563 16484 18112 577 1254 10819 10852 3821 33779 34463 34464 34052 22432 18113 9594 10178 9229 10967 22888 30198 28295 25836 22741 25837 18114 455 454 10426 10497 3703 32060 22012 21535 22011 25602 18115 9184 10861 9591 11034 34465 34466 25146 34467 29511 24663 18116 9382 10624 10281 10973 16842 13967 24213 16844 26308 15828 18117 9293 9759 10183 10697 13989 16393 19690 30027 32324 32930 18118 6868 7789 6972 6900 33496 24652 7076 7081 7083 26739 18119 326 318 319 9776 3027 3022 3028 22602 34332 24700 18120 326 617 318 9776 3030 3029 3027 22602 24700 11783 18121 661 978 977 10247 4743 4742 4744 23590 17949 33019 18122 8567 10288 9559 10968 34228 32001 33554 33556 26291 18535 18123 311 303 1075 10389 2930 2954 2956 18796 24322 32447 18124 7956 9042 8163 10387 30184 34468 32538 23732 32537 19121 18125 988 1289 1076 10388 5998 2561 5997 21462 32783 30186 18126 9413 10113 9670 10594 15700 27142 19794 15699 28877 14329 18127 9599 10148 9373 10383 27365 13205 19331 17544 13278 31215 18128 9408 10214 9823 10704 29849 27043 15627 23564 22688 17459 18129 306 300 299 10369 2932 2918 2933 25755 23670 31922 18130 8937 10037 8610 11186 21247 28125 34469 29422 28127 21096 18131 9652 9732 9287 10924 25821 18447 21836 22862 22102 19116 18132 7791 8833 6263 6359 26828 34470 34471 26830 6479 26829 18133 9354 10121 9528 10993 13124 26956 33267 13679 25998 30308 18134 609 10764 10192 10842 24095 24936 24935 33364 15775 33365 18135 7886 7885 7882 10351 24709 34472 34210 19576 30344 24710 18136 9026 10179 8423 11190 31138 30911 32583 33343 34473 29584 18137 9744 9226 10411 10632 14239 32979 33420 17453 33090 12956 18138 884 506 10293 11156 3919 12912 33241 34474 29437 32682 18139 9297 9875 9755 10692 15456 20710 24028 32756 32771 15453 18140 9759 9879 9332 10693 13990 13724 15325 32770 25323 15455 18141 9297 9764 9886 10692 34356 32772 32755 32756 15449 32774 18142 9332 9886 9764 10693 34475 32772 34379 25323 32773 15447 18143 8416 10576 8417 10957 19626 26811 34476 32166 27404 19320 18144 9794 10411 9226 10632 33573 32979 13690 17452 12956 33090 18145 8092 8094 9731 10766 34450 14356 30358 30466 14358 14357 18146 216 9732 215 10765 29623 30354 2504 34477 30463 30465 18147 9102 9740 10694 11086 34478 30243 33377 33379 31440 15746 18148 579 705 797 10806 4327 4333 4332 23093 20834 27801 18149 9552 10296 9205 10380 32051 13482 26737 21234 19048 32336 18150 6925 6934 6926 9858 7349 7335 7400 19410 22947 21049 18151 8049 8042 8046 9735 34333 27546 33790 23727 27545 15668 18152 8246 10910 8428 10918 34479 31516 34480 27667 32875 34481 18153 9662 10028 9522 10709 31168 31736 29670 20339 29669 12329 18154 9629 9704 9434 10235 30073 17173 29389 28693 17172 16112 18155 7952 10529 10153 10654 30505 28381 34482 32865 22072 34483 18156 9101 9693 9103 10976 15474 25741 34484 18370 27104 18371 18157 7935 10056 8671 10620 33493 19444 34485 25269 20375 20376 18158 6368 6288 10297 10417 6682 31878 29839 32723 25456 34270 18159 9018 10260 8507 10445 20805 18900 34486 21954 18903 18902 18160 716 9672 10408 10972 32964 23899 29036 29037 19994 27900 18161 8708 8855 7999 9736 34487 33756 34342 32466 23748 30393 18162 1423 1468 829 9737 5538 5537 4841 31398 24092 33740 18163 9455 10342 9907 10401 25795 25013 22358 16608 20475 28293 18164 9497 9795 9932 10508 28847 23824 15623 22212 22214 27491 18165 597 664 653 10559 4423 4422 4418 13571 13573 32159 18166 8079 10055 8077 10798 18031 31199 34488 32794 24237 31198 18167 184 9608 1143 10475 26750 25654 2358 29508 26685 22757 18168 9436 9603 10413 11153 14262 15919 21601 18775 21170 20582 18169 9998 10364 8290 10942 16409 31680 34177 31453 31682 25925 18170 343 10240 799 11089 29912 30366 3154 25639 30367 12561 18171 8246 9947 10910 10918 27665 30916 34479 27667 34481 17752 18172 9546 11113 10179 11190 16367 16447 30649 29333 29584 34489 18173 9444 9844 9788 10291 32768 31844 25546 30497 22649 25412 18174 7770 8525 9964 10865 34048 23318 34490 32137 23319 16749 18175 8803 6889 7794 6930 34491 34492 24594 24593 24585 7165 18176 6901 6933 174 10658 7269 29499 33097 26296 29502 29501 18177 9652 9349 9816 10662 30506 13925 21835 24986 13926 12060 18178 9714 9421 9896 10591 12967 12342 30565 29968 17427 14941 18179 9223 9527 10063 10656 27099 26943 24221 16653 31992 30137 18180 9208 9848 9663 10218 31693 30020 12187 12190 12192 31157 18181 9849 10578 9383 11050 25212 25210 24690 28097 26021 24837 18182 6390 6396 6302 9560 6754 6752 6753 18023 26915 21786 18183 9249 10638 9746 10764 30959 29249 25746 23685 33934 33464 18184 1320 413 9803 10543 3497 14387 22022 23743 18316 18315 18185 8057 9513 10726 10888 29951 28935 31465 30901 24901 28936 18186 318 319 9776 11162 3022 34332 24700 34493 33393 30548 18187 958 10558 859 10781 34022 24174 5665 34494 20910 24175 18188 9368 9833 9555 10398 12015 25074 25073 26034 29953 24930 18189 9000 10419 8490 11168 32767 12517 34495 34496 34156 33938 18190 8120 9097 10420 11169 34497 33808 31305 34305 33566 34498 18191 9673 10319 9420 10459 29082 14624 20697 17321 15416 26779 18192 581 582 660 10392 4152 4343 4342 14457 14459 22986 18193 696 1161 1372 10377 4919 4921 3716 32584 32736 13294 18194 8611 8648 8387 10341 29859 34499 34209 29860 18651 17615 18195 8932 10484 9741 11186 32237 27986 32717 32238 33112 30827 18196 8715 8716 8737 10993 31363 18765 34500 31365 12281 17050 18197 9580 10443 10429 10823 19547 26132 26131 24546 34501 24547 18198 8219 8218 8220 10513 33318 26704 34502 33319 26125 26705 18199 8857 10856 10520 11033 34503 30341 33709 34504 34006 18758 18200 9605 9731 9239 10766 30270 16761 26948 30751 16034 14358 18201 9311 9607 9732 10765 31984 30612 29937 31985 30465 30752 18202 1226 10305 9813 10928 12214 14671 12244 34505 23514 24127 18203 7544 7635 1591 9664 34506 32366 34507 34508 32368 32367 18204 9257 10419 9859 11168 21141 11439 16927 23301 20333 33938 18205 9350 10420 9861 11169 22559 27688 27687 31170 34509 33566 18206 8855 9736 8708 10783 30393 32466 34487 30516 26919 30517 18207 1468 9737 1423 10784 33740 31398 5538 34510 31664 31666 18208 1155 717 10408 11139 5025 34511 20754 33775 26999 34512 18209 601 10245 600 11170 32958 33459 4407 31038 33460 28511 18210 9391 9661 10223 10498 20709 27649 12172 13893 32590 19111 18211 9608 10475 9451 10509 22757 19409 33762 23993 15811 21532 18212 380 9986 375 10569 16845 16633 3313 16205 21303 17089 18213 9325 10432 9770 11134 21100 19861 21277 28712 33882 30327 18214 8708 9736 10385 10783 32466 30128 26917 26919 19086 30517 18215 1399 10647 9834 10907 34513 31912 26724 26725 22760 28182 18216 9534 10349 9286 10758 25491 27069 27850 18944 13084 22648 18217 6882 6948 6913 8828 7132 7139 7137 34421 22245 22047 18218 9685 10251 9514 10608 22895 23519 23879 23990 23989 26497 18219 9355 9737 9612 11157 30908 29926 32157 17043 31072 32611 18220 9610 10009 9735 10284 25984 15670 30098 30405 30049 19725 18221 8989 9855 7920 10552 15589 34514 34515 13886 32452 15590 18222 8039 10674 9937 11033 34107 23738 34516 34108 18852 23742 18223 8410 8996 8801 10188 11699 34517 29478 12695 29477 12696 18224 8472 8829 8622 10355 31048 34518 28938 20030 28937 31049 18225 9385 9546 10473 11113 33038 32084 28601 16446 34519 16367 18226 9041 9860 8595 10992 29674 30781 34520 29014 30783 25857 18227 9692 9366 10139 10337 14014 13001 11458 16849 32209 19998 18228 8959 8689 8471 10291 34521 24168 32826 30700 22650 24169 18229 6384 9673 8827 10459 31292 30038 31291 34522 32631 17321 18230 9261 9736 9611 10783 30105 27183 18565 19935 31001 30517 18231 9612 9737 9355 10784 29926 30908 32157 31870 32158 31666 18232 6300 177 81 1201 30592 1904 6574 30591 1901 1907 18233 825 1494 9695 10588 5519 16935 24039 31885 16936 16937 18234 8308 9696 8488 10589 24045 21751 33992 31886 34523 31887 18235 8831 7624 7799 10477 34179 18543 34524 31931 18546 18548 18236 9844 10669 9444 10801 14447 31046 32768 31232 16945 31233 18237 6939 1506 146 6927 30473 2162 7271 7275 7273 23625 18238 9748 9247 10182 10677 14805 20766 18085 33035 32594 13213 18239 7711 10290 7716 10427 23268 34525 34526 19607 34527 23269 18240 9290 10775 10024 11001 16788 27251 22853 19357 12858 18693 18241 1326 6301 204 10483 19811 34528 2031 27128 34529 27129 18242 9370 9616 9969 10587 24701 21162 11367 13151 16827 20970 18243 10223 10303 9483 10755 17743 29149 29146 33577 33506 34312 18244 7630 1238 27 7612 16429 1695 34334 16495 34530 16494 18245 9391 10444 9608 10498 18785 15561 31115 13893 23991 32591 18246 6981 6959 6958 10174 7372 7313 7447 13624 28760 11460 18247 9304 9800 9711 11045 17999 31774 29424 13349 33296 21443 18248 9464 10298 9674 10416 15485 30406 15676 28736 17761 28208 18249 9098 6887 7775 6997 34531 34532 32335 32334 30627 7157 18250 8448 8386 10022 10294 34533 33987 22280 31392 20385 18577 18251 9308 10500 9623 10858 29159 14759 25324 18873 21159 25669 18252 9660 9675 9470 10716 20748 27918 18092 20750 32427 20751 18253 9502 10438 9614 10565 17525 31918 16336 13329 15662 33932 18254 1173 176 109 6295 2019 2013 2016 19641 6662 19640 18255 9210 10048 9579 10393 24131 32550 26802 24132 16486 20905 18256 1299 10919 10111 11023 31332 21956 31331 34206 34534 34207 18257 9885 10655 1312 11148 19153 31380 32803 34169 31381 31210 18258 9520 9087 10589 10936 30644 30890 19892 27446 33363 32216 18259 9634 10013 9929 10679 30178 28384 20038 28870 24382 26471 18260 8111 9009 7845 10704 32994 34535 34536 31903 33471 32995 18261 1014 10100 592 10824 15784 34537 4392 17611 34538 17612 18262 640 517 10327 11120 4025 27735 31542 31543 29407 29406 18263 684 711 10213 10482 4738 34539 27894 24492 23445 29879 18264 8555 8554 8564 10567 32294 24540 34540 32295 24541 13940 18265 8591 8590 8564 10567 34055 34541 26549 26552 24541 34056 18266 9602 10829 10165 11002 24769 33157 29817 29658 30918 33452 18267 8242 9633 8994 10903 17694 30819 30820 34542 27910 21986 18268 713 985 636 10367 4621 4061 4619 30675 14555 24931 18269 1032 9674 10612 10801 34066 17364 23320 23321 16820 20238 18270 10067 10216 9175 11198 15849 15847 13289 31273 34543 27968 18271 467 1049 1050 10523 3764 3776 3773 22726 27988 20168 18272 6308 6376 6276 7800 6533 6528 6531 27373 33582 32488 18273 8704 10088 8978 10577 13159 33017 34544 15422 34545 17032 18274 8906 8021 8053 10306 31694 34546 33187 25086 16273 28114 18275 7952 10153 7951 10654 34482 34547 34548 32865 34549 22072 18276 9293 9879 9759 10697 13515 13990 13989 30027 32930 15420 18277 169 1515 9832 10499 2280 15767 33353 34550 34551 34552 18278 9428 9542 9938 10370 33869 29456 21485 21656 30816 26688 18279 225 226 9651 11041 2557 29433 32251 34553 28925 29434 18280 9235 10082 9595 11009 30475 30476 19476 30814 34143 33269 18281 1068 1439 1069 10273 6087 6086 3111 33102 15602 34554 18282 1420 6977 201 9949 20231 34555 2064 23707 17874 21343 18283 7839 10415 7840 10617 26526 29594 34556 26222 34557 30369 18284 8199 8146 9667 11047 34558 12629 34559 34560 22136 22135 18285 1198 515 567 10327 4015 4012 4016 32917 32477 28352 18286 10265 10316 9529 11006 32276 30749 19671 26213 12326 34036 18287 9748 9862 9247 10677 14818 15407 14805 33035 13213 14731 18288 8034 10488 10219 10758 19789 29962 34076 19790 24872 18946 18289 7938 7936 7939 10652 33675 28516 34561 30245 21649 28517 18290 9728 10018 9228 11093 26987 12588 26457 26990 19102 25152 18291 1400 1237 9773 10618 4780 13451 14157 13562 14159 17296 18292 9016 8608 8655 10668 20806 34562 29749 16661 20050 20807 18293 6350 9617 6349 10855 22802 31104 6738 33216 27760 28710 18294 1420 121 201 6977 2062 2057 2064 20231 34555 7198 18295 8112 10165 8677 10829 33451 32016 34563 32796 33156 33157 18296 9324 10103 9570 10608 14726 27571 26071 14729 26072 14730 18297 9839 9317 10090 10737 11883 19372 34564 14963 33917 20407 18298 9508 11076 10197 11095 27159 28898 23781 31659 22869 28899 18299 9538 9467 10523 10547 26180 20374 22727 14633 17675 21000 18300 8694 8225 8696 10626 28076 33222 34565 28078 25522 26254 18301 6284 6322 6314 8928 6563 6565 6560 34236 30709 31570 18302 10272 10483 1548 10688 33972 34566 34567 31387 34568 33587 18303 8382 8384 8287 10298 34569 33321 29603 30765 18195 31389 18304 9617 11085 10132 11141 22900 32883 28193 28765 32379 32932 18305 770 9672 1575 10972 26037 25389 5020 29513 34570 27900 18306 1072 10325 10747 11019 34571 27458 33174 33177 33178 18111 18307 6875 6899 6962 7750 7104 7111 7109 34176 25486 24403 18308 173 10831 10319 11160 31112 31113 29967 34010 29678 34011 18309 9335 10119 9529 11006 13112 26958 33710 12890 12326 30299 18310 806 10193 811 10814 34572 26084 5433 34573 22722 26086 18311 9528 10207 9338 10575 18728 13415 33286 26374 13418 13420 18312 9338 10208 9529 10575 13422 19669 33287 13418 15568 13423 18313 8584 8274 8277 10046 28724 32749 34574 27746 28857 25903 18314 1131 1130 1347 10045 6153 6155 6154 29532 20123 20902 18315 8307 8505 9067 10048 34575 27160 18374 18373 16853 21016 18316 9462 9780 10259 10741 16262 26062 18633 24209 24210 30337 18317 8733 9053 10004 10582 27984 19212 34576 27985 23127 23128 18318 8416 9532 10957 11116 15091 32167 32166 26519 30802 26520 18319 355 549 550 10257 3207 3213 3212 21351 31446 27309 18320 6300 6320 10261 10725 6740 30875 30594 32678 27313 25665 18321 6982 6915 9911 11158 7394 34577 28032 27280 28033 34578 18322 1089 9603 191 10435 13548 24361 2396 11384 29634 13549 18323 8438 9861 10449 10910 26537 31052 33590 26539 31368 18423 18324 575 10357 450 11148 31849 24303 3690 31208 27976 27978 18325 451 447 439 10292 3634 3633 3635 20271 19901 14076 18326 9321 10000 9566 10806 29802 22708 31298 24618 23095 23094 18327 6879 6968 6917 7790 7120 7127 7125 33884 31716 32312 18328 1280 9810 1460 10463 24107 23776 6239 25214 34579 25213 18329 638 10506 10096 11173 32424 32353 34580 33260 32120 31925 18330 10070 10450 1301 10919 22714 34040 34039 28914 34174 21957 18331 8330 8693 8643 10262 34581 11704 31854 12550 12938 12937 18332 8955 8411 9634 11055 30007 27603 27793 34582 27598 26294 18333 1149 9614 1595 10691 29727 31920 6171 31200 30012 20102 18334 8376 8375 8455 9970 32225 34583 34584 32224 34585 29361 18335 8144 8143 10437 11010 34586 24338 23611 31515 24494 23652 18336 1145 10709 9522 10934 31330 29669 30532 32259 30779 34587 18337 1186 1521 202 9675 2455 2454 1774 29227 25980 34588 18338 1006 982 9615 10837 5989 33116 16096 30689 30688 34589 18339 717 650 10408 11139 4687 26995 34511 34512 26999 26998 18340 9235 10057 9690 10243 21801 26579 26576 16992 27266 19160 18341 234 9590 10919 11023 32261 17815 33642 30767 34207 30818 18342 8870 10026 8266 10680 20225 21923 34590 20224 23005 20223 18343 7719 9660 7771 10546 31724 31722 31719 34078 33627 28085 18344 9854 10015 9209 10455 15880 15518 15596 17803 11814 12707 18345 9376 10178 9594 11165 32172 22888 30469 32406 25672 25671 18346 9336 10196 9597 10306 30985 30986 26547 29718 28115 34591 18347 8511 8815 9133 10574 34592 31139 18367 18369 17244 21584 18348 689 688 568 10846 4277 4273 4278 33867 33232 20308 18349 9679 10064 9587 10851 30785 31598 20897 31510 25608 31652 18350 9788 10159 9844 10801 17708 22456 31844 30777 31232 32983 18351 9299 9706 9656 10639 17604 26960 30956 15373 26961 25685 18352 9536 9265 10615 10779 32764 23389 17737 29293 19724 16233 18353 9568 10096 9307 10425 17833 32119 30672 22788 15615 22789 18354 342 524 359 10006 3148 3147 3100 11889 23543 18050 18355 1551 10343 1100 10440 16418 28680 2266 15927 28197 17847 18356 1479 141 165 6918 2142 2137 2144 31359 32971 7258 18357 6900 6982 6961 9912 7316 7315 7087 26189 26703 22657 18358 9816 10662 8635 10877 13926 34593 25914 20073 25916 28048 18359 1135 10158 10068 11150 16282 14768 16280 34594 32957 23773 18360 1136 10158 604 11101 25292 21604 4460 25293 31166 24484 18361 880 11090 10222 11163 34018 20726 33628 33629 15142 34020 18362 6330 6325 6324 10570 6717 6814 6748 25311 28659 25813 18363 884 1277 1319 10293 3921 3901 5751 33241 31732 12010 18364 9988 10978 9681 11125 12509 24599 21507 32725 24848 34595 18365 9605 10137 9378 10293 28305 28304 11488 12012 12011 30977 18366 7908 7900 7907 10545 21285 25094 34596 21287 27111 18549 18367 7907 7921 8637 10545 33360 11372 34597 27111 11591 11590 18368 8664 10101 8666 10703 28783 25983 34598 26877 27344 27345 18369 8067 10019 10088 10988 31467 25394 31469 33203 25395 20432 18370 9566 10056 9689 10757 32639 19445 31626 31299 28138 28289 18371 9566 9688 10056 10757 31613 14817 32639 31299 28289 29767 18372 8723 9831 8075 10947 26800 17660 34599 33033 19033 19032 18373 6980 155 127 6951 27121 2081 7214 7218 7216 25117 18374 352 10309 9913 11007 28702 16323 29063 28703 12864 26002 18375 7841 7839 7840 10617 34600 34556 34601 24292 34557 26222 18376 9381 10151 9600 10341 30033 29758 26098 17915 23052 34602 18377 9885 10431 9352 11148 23883 22452 23882 34169 34287 30238 18378 9579 10589 10048 10936 28098 31888 32550 27447 21017 33363 18379 6383 6342 10343 10344 6703 25100 31495 33227 16769 33539 18380 9308 10270 9837 10593 24215 28398 24665 24664 18975 26275 18381 9149 9560 7806 10512 34603 30904 34604 34605 30906 27972 18382 9317 9839 10090 11062 11883 34564 19372 22065 17474 32949 18383 9083 8296 9064 10353 16863 34606 33592 19646 19936 14590 18384 9059 10577 8978 11128 31645 34545 34607 32790 33018 26303 18385 9141 10277 8621 11114 28186 34608 34609 29646 34610 29647 18386 10530 10714 9415 10818 32870 19969 18070 32872 33543 32873 18387 330 331 343 10049 3049 3088 3087 27242 25638 25381 18388 8418 9065 8994 10348 31783 27908 34611 31782 27909 20874 18389 8303 9026 8423 11190 34239 32583 34612 34241 34473 33343 18390 1197 811 1048 10507 5455 5437 2669 22289 21776 22720 18391 288 289 283 10302 2855 2854 2839 20637 23984 24332 18392 9326 10809 10157 11051 21148 21296 22127 21149 21297 19370 18393 6983 6966 9682 10841 7405 20550 33167 33168 19718 20665 18394 6983 6917 6966 10841 7404 7403 7405 33168 20665 21222 18395 9558 10361 9394 10719 30201 11819 31076 29405 12734 28986 18396 8853 7528 8800 9828 33185 34613 34614 20613 34615 33186 18397 8870 8816 8138 10283 29487 34616 34617 23210 32706 27993 18398 336 335 9783 10665 3104 21030 11865 12272 14441 20351 18399 9776 10552 9258 10724 29549 19314 33392 24187 25422 31253 18400 9363 10269 9763 11014 13369 11921 13368 31103 30550 27493 18401 233 366 231 10256 2595 2594 2592 21926 26411 26279 18402 1448 1295 366 10256 3269 2596 3270 27428 26279 14139 18403 8573 7773 8567 9559 33495 33851 34618 32942 33554 26504 18404 1257 1116 766 10864 5256 5184 5254 30746 33824 15022 18405 7558 7614 7590 9734 31007 31030 34619 21283 29865 31008 18406 6978 6974 6972 9826 7457 7456 7079 20412 24655 25078 18407 871 870 1200 10930 5323 5703 5702 22816 33828 22750 18408 6332 9697 6389 10776 30652 32642 6833 32603 34620 16702 18409 625 626 789 9931 4357 4563 4562 13520 20759 18214 18410 173 10319 1566 11160 29967 34621 2300 34010 34622 29678 18411 9259 10329 9863 10722 33611 33612 33609 34623 24885 33488 18412 9269 10330 9870 10723 33618 33615 33616 20012 34423 33490 18413 9384 10086 9778 10892 13285 23909 17602 16312 15477 16649 18414 7531 8842 7592 10418 31121 33788 34624 32589 14563 32588 18415 8376 9970 8455 11152 32224 34585 34584 33371 34625 30837 18416 1033 518 9652 10924 2531 32878 33071 34626 22862 34627 18417 230 232 10550 11030 2588 13431 27544 31055 17600 17599 18418 7682 10515 1288 11046 34457 30841 33623 33120 24718 17626 18419 9082 7766 6885 6910 29401 34628 34629 29400 7144 25505 18420 9215 9778 9629 10086 23915 28535 15524 11299 11525 23909 18421 1058 9774 10593 10953 32175 26792 31763 31764 29795 23487 18422 494 491 10517 10975 3893 26330 27431 34630 30624 26024 18423 9271 9738 9606 11039 34131 31937 34132 34631 28734 34320 18424 6291 6344 6345 10572 6694 6696 6695 24795 27423 25872 18425 954 9847 1297 10676 22292 12182 4210 34632 13505 16164 18426 8571 9179 7779 10863 34633 34634 34635 33538 34636 25938 18427 9233 10478 9613 10502 31567 25659 25703 26639 20887 29051 18428 9352 9894 10655 11148 34230 14194 34351 34287 31210 31209 18429 295 10206 603 10853 21123 26433 2879 27274 26434 21342 18430 759 9834 1399 10647 33721 26724 5220 31274 34513 31912 18431 9401 10544 10218 10940 22952 15105 31438 22953 30571 22156 18432 8966 7926 10058 10629 34637 34638 28527 34639 28065 33637 18433 8809 10481 8807 11149 30554 19515 34640 30668 34336 30669 18434 9064 9035 10020 10353 34641 16353 18140 19936 19937 30424 18435 9466 10260 9915 10445 34642 31379 14247 15930 21175 18902 18436 7713 7710 9591 10861 34643 34644 26424 34645 34466 32703 18437 9622 10262 9694 10891 28171 28430 33390 32170 31584 32129 18438 9572 10707 9509 10799 34059 27533 33978 15322 25160 34091 18439 9608 10509 9451 11129 23993 15811 33762 24511 34195 31116 18440 1446 984 541 10476 4142 3210 4143 19666 26649 24394 18441 9365 9723 10058 10629 11341 28066 18991 25266 28065 24248 18442 9546 10365 9402 10563 25790 16042 33986 16588 15068 16046 18443 803 907 9848 10470 5418 15110 34144 20734 17668 17576 18444 934 9914 1262 10456 27221 31163 2231 19480 33162 24697 18445 8475 9633 8242 10903 29567 17694 29568 34073 34542 21986 18446 8302 8733 8936 10582 34646 34647 13141 13144 13146 27985 18447 6898 208 140 6941 34648 2133 7253 7257 7255 14071 18448 7713 9591 7801 10861 26424 27892 27891 34645 34649 34466 18449 9361 9532 10123 10957 33225 29277 15603 21960 30799 32167 18450 572 573 548 10131 4180 4179 4172 13358 22340 11301 18451 7553 158 31 7572 27478 1711 34650 27477 34651 25942 18452 9603 10303 9483 10935 18512 29149 33288 15920 30191 18513 18453 10179 10194 9385 11196 33128 30623 14281 33129 34652 25019 18454 9685 9514 10743 11099 23879 25805 17448 21009 34653 21231 18455 8809 8952 8810 10340 30553 34654 34655 33329 24672 22918 18456 9805 10480 9527 10845 29458 27419 29459 33292 27761 29874 18457 6914 120 201 6984 7195 2058 16673 7197 14150 7193 18458 7699 7733 7660 9544 34656 26838 32805 32806 25553 26837 18459 7930 9904 7933 10539 22329 34657 34658 23810 34659 24591 18460 8549 8624 10253 10702 34660 19068 21362 21364 19639 28069 18461 1227 10145 484 11094 33473 12752 3591 33108 23213 23215 18462 8896 9870 10723 10728 34661 34423 29046 29048 19217 34662 18463 9032 10462 9612 11157 26367 19388 23724 31073 31072 14682 18464 9562 10232 9843 10512 26698 27668 24029 24031 23969 27670 18465 9546 9806 9403 10473 16364 17157 26355 32084 20511 34663 18466 7572 158 1273 9996 25942 1717 34029 25944 34032 25943 18467 8385 8485 8396 10656 27750 32034 34664 18738 32041 29413 18468 9345 10315 10550 11056 12057 32578 19334 16154 31120 14482 18469 8331 10295 8638 11008 13795 17658 34665 13796 20218 13797 18470 143 174 6933 1497 2150 29499 7264 2145 29500 2152 18471 470 10314 9707 10734 12471 12472 12468 34370 29769 29770 18472 10272 10483 9404 11142 33972 27392 26192 34666 28882 29715 18473 8989 7925 7920 9855 34667 34668 34515 15589 34514 32150 18474 8556 9938 8582 10568 23689 31978 32059 34669 29258 31979 18475 1018 1016 1014 10405 6025 6024 4394 18670 15787 33336 18476 1557 1559 10572 11035 6033 32388 34670 34671 32147 32026 18477 8034 10219 8032 10758 34076 25516 34162 19790 25518 24872 18478 9167 8827 7774 9673 32628 30037 34672 22442 30039 30038 18479 665 10027 1265 10718 20717 21778 4426 20718 32480 20719 18480 9443 10246 9556 10450 18558 28846 21308 20018 16624 32975 18481 1457 1115 1396 10460 3268 2717 5499 32928 17460 17922 18482 7812 7813 7811 9685 34673 34674 34675 21384 34676 19088 18483 1368 570 9686 11067 3226 34677 30996 30998 30997 34678 18484 8982 10102 8717 10600 13058 28177 34679 13408 28179 15721 18485 9465 10245 10166 10789 23595 31967 13789 19529 19528 23608 18486 6870 7756 8797 6903 34680 26529 34681 7089 26530 21427 18487 160 66 7683 7664 1847 34682 24977 24978 24979 34683 18488 9454 10062 10602 10810 31649 31154 13820 31177 31178 26329 18489 8119 8635 9816 10662 34684 25914 33985 31634 13926 34593 18490 8052 8147 8188 10349 34685 33602 31395 26307 15825 27537 18491 9314 10159 10801 10886 28368 32983 21437 13042 20240 30661 18492 504 9644 503 10893 29559 17256 3944 17779 34686 19210 18493 9533 9360 10210 10721 33101 24328 23943 29331 28814 28815 18494 145 193 6939 1199 2158 29217 7270 2153 29218 2160 18495 8357 9002 9640 10889 27706 27232 17262 34687 19677 17942 18496 8268 9653 8269 10890 27197 17254 27708 17853 34688 18643 18497 8809 10340 8810 10481 33329 24672 34655 30554 25235 28651 18498 9399 10396 9664 10643 30365 26108 31569 20527 29428 27283 18499 10027 10718 9396 10982 20719 30146 29166 22029 28286 32481 18500 500 1382 9638 10911 3939 26889 17255 34689 15435 26890 18501 7970 8977 8872 9724 28948 34690 30216 13985 25846 23442 18502 8977 8788 8872 9724 23441 33300 34690 23442 25846 18438 18503 6963 6971 133 1383 7236 7232 7234 26813 2105 29170 18504 1093 9780 1091 10932 33133 30336 4560 33553 23860 30338 18505 9511 10562 9512 11119 22007 18117 32194 33940 32208 32483 18506 6904 6934 203 9858 7188 25770 33937 22902 25771 21049 18507 10173 10922 9561 11044 22252 31247 33448 21898 28838 33696 18508 7582 7621 9907 10401 34691 20474 24087 23563 20475 19652 18509 1557 10572 1555 11035 34670 32017 2230 34671 32146 32147 18510 9207 10299 9701 11161 32298 24184 23362 25076 17938 25496 18511 7993 10355 8829 10809 33508 31049 34692 32740 31050 20031 18512 9263 10075 9992 10659 13557 24477 26341 26340 22195 34693 18513 646 10047 10640 11007 29609 27768 34451 34694 33787 13957 18514 7650 8790 9660 11166 32752 32754 31723 34695 21819 34696 18515 7942 9784 10390 11167 33930 29173 27829 27831 19604 33082 18516 759 10647 1399 10907 31274 34513 5220 34697 26725 28182 18517 8016 8664 8020 9669 34698 34699 34700 34701 18827 26874 18518 1203 1202 9969 10962 2246 34442 11368 34409 15626 34410 18519 8753 10085 7694 10714 32652 32653 32650 34396 34397 21271 18520 965 10250 10151 10820 30170 30082 30169 34702 18328 30083 18521 9937 10674 8039 11009 23738 34107 34516 22166 34142 34141 18522 9390 9786 9659 10285 12175 31063 20787 14222 18665 31611 18523 7913 8966 7926 10058 34703 34637 34704 29215 34638 28527 18524 9304 9598 9824 10238 21203 23871 17099 13163 22804 14981 18525 7935 8672 8671 10056 34067 34705 34485 33493 19444 21769 18526 487 1181 492 10057 3864 3876 3875 19161 27579 30431 18527 7920 9855 7925 11115 34514 32150 34668 32453 34706 33823 18528 9600 10151 9723 10250 29758 30168 29089 21211 17968 30082 18529 7959 9689 8179 11131 21494 28137 32895 34707 30683 30685 18530 9615 10114 9343 10837 26920 14924 33624 30688 14969 32233 18531 800 801 799 10240 5404 5403 4039 23366 30366 12556 18532 657 841 713 10367 4723 4722 4620 13971 30675 29197 18533 9794 9422 10411 10632 30585 27161 33573 17452 33090 32268 18534 9219 9856 9666 10164 28705 21997 32857 20977 33889 25348 18535 8850 9646 8623 10913 17265 33165 33164 34708 34709 21498 18536 7926 8648 8662 10629 33636 28161 34710 33637 28162 17613 18537 868 9977 711 10482 21710 34711 4857 24129 29879 24128 18538 8045 8131 9744 10632 34712 14238 20971 25167 17453 12955 18539 498 1157 10517 11103 3911 31627 33262 34713 31628 23575 18540 500 9638 502 10911 17255 17345 3937 34689 17214 15435 18541 9433 10286 10117 10611 22607 19686 18614 20060 33441 18435 18542 1551 1100 167 10440 2266 2003 2267 15927 28198 28197 18543 9490 10620 10056 10646 22333 20376 28546 23813 15190 30948 18544 615 1395 9691 11079 4514 22309 23857 29710 30574 30573 18545 1226 9813 396 10928 12244 28963 3401 34505 24678 23514 18546 8519 8509 8518 10561 34714 31507 28034 28036 22410 31508 18547 10221 10731 1488 11107 25540 34715 27065 27067 27066 34716 18548 8200 8199 8146 9667 34717 34558 34017 28855 12629 34559 18549 8454 8318 8760 10230 30418 34718 34719 16656 16951 14575 18550 6880 6986 7758 8846 7129 25584 34720 34721 24668 25583 18551 6926 10356 6916 11176 22949 34722 7399 34723 34724 28337 18552 326 618 10442 10672 3068 23802 22604 21561 23151 22764 18553 1430 10479 991 11054 24267 25225 3795 24733 27123 24734 18554 501 503 9644 10893 3943 17256 17346 17045 19210 34686 18555 9766 10550 9345 11030 26414 19334 34725 31056 23011 17600 18556 8630 10052 8628 10785 31220 30295 34726 27549 31711 26056 18557 8850 8622 9646 10913 30681 30680 17265 34708 21498 28939 18558 8269 9653 8153 10890 17254 27577 27702 34688 32698 18643 18559 8357 9640 8884 10889 17262 29681 33067 34687 24393 19677 18560 925 924 845 10718 5600 5596 5601 27086 34398 27087 18561 9475 10863 10514 11197 25133 25134 25130 26232 26231 32439 18562 1231 10117 1567 10261 18430 26203 5915 23800 27312 23799 18563 7928 7923 7915 10269 30291 34727 34226 30863 28456 27434 18564 218 9652 518 10924 25820 32878 2519 22189 34627 22862 18565 8419 8420 8999 9708 34728 31832 34192 21488 21817 19383 18566 9227 10211 9973 11023 17636 21194 22441 30817 29070 29187 18567 9343 9533 10641 10837 32230 26480 16480 14969 14944 32232 18568 9438 10602 10062 10810 19799 31154 17129 21841 26329 31178 18569 6960 10174 6953 10908 34729 29620 7294 34730 29679 27777 18570 8842 7477 8728 7531 34731 34732 31123 31121 31122 34733 18571 9278 10195 9721 10239 28629 14929 27308 33271 24430 33414 18572 261 264 262 10320 2743 2742 2728 13095 25976 13096 18573 10280 10310 9415 10906 19709 20842 20300 19190 34734 17645 18574 7920 10552 9855 11115 32452 15590 34514 32453 33823 17948 18575 8136 8138 8137 10283 32705 34735 28164 19243 27994 32706 18576 1392 9654 870 11124 33901 17338 5704 25682 34405 21916 18577 9025 6912 6866 6978 14917 7068 34165 25112 7073 7075 18578 9974 11021 10168 11156 18392 31726 34736 29436 31896 31895 18579 7737 7748 7667 9560 34275 22114 27109 20951 17909 22113 18580 9597 10196 9282 10306 30986 12306 29736 28115 32234 34591 18581 8929 8380 10364 10963 34737 32868 12701 33955 33956 34738 18582 8079 8077 8078 10798 34488 34739 33125 32794 26902 24237 18583 9782 10848 9254 10929 33446 16976 28446 30609 16978 15578 18584 9617 10855 1021 11141 28710 34740 28421 28765 33043 28766 18585 9367 10102 9676 10558 13057 19163 30277 22259 16580 27931 18586 6289 6375 94 1249 6618 6617 6613 25885 1956 27877 18587 9660 10716 9470 10940 20750 32427 18092 18094 18093 32428 18588 8556 9938 9147 10896 23689 33912 34741 22617 33914 23690 18589 273 274 275 10316 2797 2803 2802 25616 12625 25974 18590 274 273 272 10316 2797 2793 2798 25974 12622 25616 18591 1247 817 813 10317 5466 5465 5458 25617 20001 25975 18592 817 1247 1012 10317 5466 5485 5484 25975 12627 25617 18593 421 420 10196 10966 3533 27147 33139 33511 22086 27148 18594 9330 9556 10507 10825 20286 24008 27299 20285 22996 20284 18595 9268 9655 9733 10840 27677 19270 27676 33694 32571 33606 18596 8908 8393 8910 9781 26664 29471 34742 25344 21565 19306 18597 335 334 333 9783 3102 3085 3103 21030 20196 20715 18598 8923 8017 8613 9782 34743 29993 32998 16783 29183 29992 18599 8780 9129 8531 10413 34744 21166 34745 34746 21167 21168 18600 8553 8497 8552 9795 34747 34748 19648 19057 19647 23572 18601 199 104 1100 6383 1993 1996 1999 31492 31493 6643 18602 9219 9666 10750 11138 32857 24771 29571 28176 34361 29834 18603 8333 8276 8273 9656 34749 33677 33655 33654 30872 33676 18604 8179 8306 8334 9657 23887 33855 34750 23886 31058 23885 18605 9660 10338 9401 10546 23074 16924 34094 28085 22951 24913 18606 9332 10335 9814 11187 32432 23218 13469 33768 27166 31547 18607 9894 10357 9352 10773 11967 33246 34230 34231 24258 34751 18608 6888 8803 7775 6922 34752 28167 34753 7161 28166 26357 18609 9727 10000 9657 10625 28543 29803 17499 15675 23432 27782 18610 7673 7736 7749 10863 34754 33662 26401 26403 25132 33663 18611 6961 6956 6903 9912 7334 7333 7091 26703 21428 23761 18612 9055 8541 8540 10958 33179 34755 13046 13321 13323 25515 18613 6355 6266 7788 6357 6491 34070 29061 6493 27071 6488 18614 9153 8523 9151 10361 34756 32551 32566 32568 32552 11855 18615 6881 6986 6948 7758 7128 7135 7133 33761 32802 25584 18616 7807 9113 10313 10657 34757 34758 30208 30209 28100 34759 18617 9562 11142 1549 11174 28881 28905 25928 26982 34105 27238 18618 9351 9947 9578 10910 28697 33050 31372 21209 31373 30916 18619 8736 9733 8735 10840 30944 27410 34296 34760 34761 32571 18620 7914 7919 7918 9658 34762 27424 19456 15059 16501 27425 18621 357 547 548 9659 3217 3223 3222 34763 25304 28266 18622 548 547 572 9659 3223 4173 4172 25304 18664 28266 18623 9756 10703 10101 11029 19536 27345 16194 33324 27981 34764 18624 7639 7680 9933 11046 34765 27860 31142 31974 27862 27861 18625 267 269 271 10202 2772 2775 2774 32843 12554 12553 18626 1152 271 753 10202 2776 2794 2796 24490 18914 12554 18627 390 387 391 10203 3368 3373 3372 13525 12536 12535 18628 383 387 386 10203 3353 3352 3348 28505 12542 12535 18629 8778 7879 8657 10207 14302 27601 34766 14303 16687 13416 18630 395 386 390 10203 3369 3367 3370 12541 13525 12542 18631 7860 7971 7970 10204 25052 11662 34767 23084 12539 12538 18632 7856 7970 8872 10204 34768 30216 33683 33682 29081 12539 18633 8599 8247 8466 10209 32632 30665 34769 18419 27226 30666 18634 288 280 1053 10206 2840 2829 2841 20635 16962 22837 18635 8778 8658 8659 10207 34770 18749 28590 14303 18913 18729 18636 7876 7922 7878 10208 11734 33425 34771 12544 17529 12545 18637 7877 7878 7879 10208 34772 27602 14300 14299 13421 17529 18638 295 288 603 10206 2878 2880 2879 21123 26433 20635 18639 7876 7877 7875 10208 34773 28589 19739 12544 19668 14299 18640 603 1053 1054 10206 2881 4456 4453 26433 21341 16962 18641 8466 9033 8632 10209 34413 34288 34774 27226 34289 33640 18642 8658 8657 8204 10207 34775 33181 21707 18729 20314 16687 18643 1406 277 279 10210 2824 2822 2825 34221 21554 16964 18644 1406 1361 321 10210 3044 3045 2826 34221 12549 23942 18645 8632 8334 8599 10209 34776 31403 34777 34289 18419 31057 18646 275 277 321 10210 2812 2815 2814 12547 12549 16964 18647 267 1152 265 10202 2765 2764 2762 32843 19751 24490 18648 9493 10165 9602 10829 29553 29817 16412 24767 24769 33157 18649 7598 7609 15 1507 28226 34778 34213 34214 1642 21908 18650 9298 9812 9639 10791 29318 32305 24660 15571 24661 26749 18651 987 736 10898 10917 4821 34779 22790 22792 22793 32876 18652 1234 998 1357 10307 6002 6003 3096 20282 19757 23427 18653 7681 7779 9627 11135 34780 34781 34782 34783 32889 34784 18654 9654 10241 9487 10930 17991 13902 20838 22751 15229 27778 18655 1447 824 943 10280 5516 5514 5517 20299 20476 19189 18656 599 10542 10134 10961 12425 16452 13187 34785 31651 20042 18657 152 10242 7741 10675 30877 33398 34227 30878 33944 27338 18658 8462 8560 10107 10711 32044 13090 34786 32045 13681 19279 18659 8462 10107 8563 10711 34786 17405 32046 32045 19278 13681 18660 9212 10819 10852 11083 14214 34052 29208 29386 33323 32408 18661 943 10530 10310 10818 18557 24807 20843 34787 25644 32872 18662 163 122 1420 6894 2066 2061 2068 17619 17620 7201 18663 9848 10470 9208 11074 17668 18083 31693 34145 14625 17812 18664 9341 10523 9707 10734 20591 32776 30451 20593 29769 18157 18665 9349 10254 9887 11108 29462 28307 29611 28052 28309 23126 18666 209 1441 208 10255 2482 2257 2364 21306 24812 16086 18667 9471 10596 9928 11015 18817 14020 16582 25519 17859 29379 18668 9567 10106 9322 10854 27046 27045 27044 29242 30328 29243 18669 9791 9255 10098 10811 11943 30755 30000 21871 21525 23661 18670 8735 9733 8734 10840 27410 27409 27408 34761 32569 32571 18671 10096 10506 638 10844 32353 32424 34580 18306 34788 31357 18672 9417 9678 10051 11145 24517 16741 25544 18396 32977 32036 18673 7708 7733 7734 10321 28875 33110 34789 28876 33111 26839 18674 9306 9998 9624 10364 16408 24575 31286 12702 27296 16409 18675 8174 9704 10328 11065 31943 14735 28316 28317 22415 30074 18676 7740 7734 10072 11181 34790 33109 26709 28090 28092 34341 18677 7579 7574 7616 10423 25068 33865 34791 18950 33866 25069 18678 179 58 7668 1148 1815 34792 21587 1818 21586 1812 18679 919 918 10060 10983 5868 23897 29757 34793 28490 28489 18680 7802 6902 6864 6987 27096 7060 33996 22139 7065 7067 18681 587 880 881 10222 4372 4375 4374 15141 34794 33628 18682 1454 1435 180 10908 2342 2341 2338 34795 34796 27776 18683 9566 10106 9688 10806 32082 27012 31613 23095 25606 27013 18684 804 675 1304 9706 4815 4231 4816 16216 12473 22684 18685 1304 675 558 9706 4231 4230 3791 12473 14008 22684 18686 558 472 470 9707 3789 3780 3790 14009 12468 29720 18687 472 468 470 9707 3779 3777 3780 29720 12468 34369 18688 907 802 803 9848 5417 5409 5418 15110 34144 17250 18689 9064 8430 9083 9790 19280 34797 33592 18141 16862 14431 18690 1147 9812 745 10791 34798 26748 4791 34440 18972 26749 18691 8289 9998 8290 10942 16407 34177 34178 34799 31682 31453 18692 8717 8558 8732 10696 34062 34800 33485 29353 28585 13554 18693 865 1004 1097 9791 5686 5687 5231 14322 24226 32124 18694 9501 10073 9701 10466 24178 31698 23361 26243 29601 28089 18695 736 10784 1423 10898 29870 31664 4831 34779 33970 33971 18696 1514 1568 930 10585 2480 5914 5919 34263 16136 19525 18697 9124 10374 8844 11183 20461 34801 34802 16061 34803 20794 18698 8517 9148 9660 10940 34804 32923 18880 18881 18094 22814 18699 1013 1276 10096 10543 5717 34805 21763 23785 29673 34806 18700 6928 6907 6929 10225 7352 7351 7350 29278 31096 34416 18701 173 85 1224 6381 1917 1920 1923 29964 29965 6586 18702 8749 8839 10176 10566 34807 32145 20858 20860 16085 22848 18703 9752 10481 9334 11149 19514 21395 22236 15040 24027 30669 18704 7926 7913 10058 10629 34704 29215 34638 33637 28065 29214 18705 703 643 719 10249 4653 4655 4654 25436 15033 26266 18706 8514 10350 8263 10682 29475 13296 34808 34809 34454 20703 18707 8857 10520 9729 11033 33709 12095 33707 34504 28312 34006 18708 9702 10128 9218 10352 18241 25154 24777 17021 21346 28436 18709 150 131 6981 6911 2102 7226 13803 15908 7230 7228 18710 9059 8704 8978 10577 34810 34544 34607 31645 34545 15422 18711 9578 9947 9213 10918 33050 20034 21739 16883 20036 17752 18712 7566 7564 7536 9580 34811 27225 26647 23345 20746 26742 18713 9235 9655 10082 10762 17769 30477 30475 16557 32130 11410 18714 965 10151 990 10820 30169 22769 5061 34702 22770 18328 18715 9360 10114 9615 10721 19831 26920 23551 28815 31555 32293 18716 1071 10051 1070 11019 34812 11266 5571 30227 13769 18479 18717 9992 10075 9463 10659 24477 21783 14011 22195 34813 34693 18718 1041 1479 1501 10695 6056 2260 6057 20097 27942 28951 18719 8085 9595 10840 11009 28989 30970 31712 33673 33270 34143 18720 493 10517 9902 10975 34137 30620 27695 27696 13872 30624 18721 8119 8635 10662 10877 34684 34593 31634 34814 28048 25916 18722 1032 1318 1057 10612 5341 2943 4592 23320 20033 33091 18723 1398 422 407 10434 3476 3468 3474 28771 13167 18617 18724 9604 10198 9221 10283 30443 30444 30442 27995 20395 34815 18725 9691 9977 9395 11079 21709 20580 25679 30574 23843 21205 18726 9646 10549 8623 10913 26787 33166 33165 21498 34709 31149 18727 6305 9141 6374 10031 28185 34111 6517 26521 34114 28184 18728 6940 9702 6988 10658 18240 28719 7432 34816 28722 18158 18729 6310 6373 91 1228 6609 6608 6604 26025 1941 24076 18730 8824 7770 9964 10865 32900 34490 31336 32884 23319 32137 18731 6361 6377 10345 10573 6795 26627 32422 34446 24072 32985 18732 10042 10194 480 10923 29772 29771 29773 11234 34817 25322 18733 9245 11041 10388 11106 26214 21330 13777 28832 30070 34013 18734 363 1189 264 10790 2761 2760 2744 12931 12933 32114 18735 570 10551 9686 11067 34818 33198 34677 34678 30997 34819 18736 9601 10193 9306 10424 28265 25791 15271 13009 15272 28648 18737 1001 10221 826 10625 25538 18055 4966 16093 18053 18054 18738 1595 1149 1150 9614 6171 2335 6172 31920 32933 29727 18739 1326 112 204 6301 2025 2028 2031 19811 34528 6667 18740 8310 9037 8436 10406 34323 34820 27563 25877 27562 21681 18741 7957 8148 9786 11064 34402 34404 33544 32256 33545 34821 18742 7529 8780 7765 9967 34365 34822 34823 34366 34824 34367 18743 6980 6915 1193 9911 7215 34825 34153 30351 34154 34577 18744 9798 10266 9530 10630 23892 29694 26602 14550 27415 23895 18745 9566 9945 9322 11053 33242 29958 32081 33380 33382 33105 18746 459 456 1367 9800 3720 3709 3721 22662 34826 29091 18747 7677 9559 7647 11135 27923 25774 34827 31600 25778 25777 18748 1561 1560 915 10175 2378 5864 5629 16361 17275 21581 18749 9204 9919 10386 11154 33608 28407 33188 31214 32937 23380 18750 7541 7808 7459 7626 30491 34828 34829 30492 34830 29989 18751 778 854 777 9628 5305 5304 4469 18994 32525 15807 18752 115 1511 992 6906 2033 2040 2038 7180 25045 25046 18753 9621 10529 7952 10654 29704 30505 30504 19313 32865 34483 18754 8896 8706 9870 10728 34831 19025 34661 29048 34662 34832 18755 614 654 1137 9661 4499 4510 4509 34325 31324 19109 18756 1387 1428 1122 10168 6144 6143 5763 33341 16245 16750 18757 6397 10396 6303 10643 29233 34833 6757 34834 34835 27283 18758 765 10021 10463 10871 32816 29133 29935 29936 29914 11583 18759 1386 10273 1439 10854 25815 34554 6088 23699 34836 25816 18760 9294 9913 9686 11067 21163 11228 26114 22574 30997 19906 18761 655 614 1137 9661 4508 4509 4511 34837 31324 34325 18762 8976 10022 8386 11002 28061 33987 34838 28063 18580 25488 18763 8604 9785 8603 10996 16514 28579 34839 12687 22599 16515 18764 7845 7844 7846 10704 34840 32559 33469 33471 19144 32560 18765 8780 8531 9967 10413 34745 22094 34367 34746 22095 21167 18766 9870 10728 8706 10847 34662 34832 19025 19026 15536 32266 18767 6910 6944 6942 9740 7147 7367 7368 25508 14839 24862 18768 7811 9685 7813 11099 34676 19088 34674 34841 34842 21009 18769 1150 9614 179 10770 32933 21588 2336 34843 31454 23014 18770 9839 9923 9296 11062 26155 24275 12632 32949 32948 19859 18771 6349 6350 6378 9617 6738 6689 6769 31104 21249 22802 18772 9172 9139 8819 9697 31193 30513 34844 31194 23027 19425 18773 10128 10694 9218 11086 18244 34845 25154 20122 25789 31440 18774 8048 8147 8052 10349 33638 34685 34846 22647 26307 27537 18775 9693 10225 9397 10744 24589 33344 23286 23792 28271 28256 18776 9597 10306 9282 10650 28115 32234 29736 29737 17515 20348 18777 7840 10415 10181 10617 29594 19147 28055 34557 16060 30369 18778 1392 684 582 11124 4351 4350 4347 25682 34847 24493 18779 9038 8637 9798 10545 34848 11927 23893 25993 12525 11591 18780 174 1040 1500 10658 2306 2308 2307 29502 13607 13606 18781 7960 9622 8125 10891 28389 16762 31715 34849 32418 32170 18782 1078 362 10635 11044 3247 21503 24048 29100 21504 21391 18783 8869 7953 7949 11016 34850 34444 19893 19895 19131 29692 18784 8784 7796 9975 10372 34851 30485 23297 23296 22268 30486 18785 8801 9039 8651 10188 34852 16889 34318 29477 13684 16891 18786 7003 6928 6908 10373 7357 7356 7358 26614 22581 25635 18787 9224 10137 9605 10293 30655 28305 16267 12911 12012 30977 18788 8305 9680 8229 10740 28561 31355 34853 33977 24610 31481 18789 251 10080 10125 10635 30494 30331 33780 30495 21410 15339 18790 7791 9635 6294 10663 26831 29102 29101 33263 34854 16955 18791 8959 10291 9788 11060 30700 22649 32827 30702 16457 25417 18792 7812 9685 7811 11099 21384 34676 34675 18120 34841 21009 18793 806 9811 10193 10814 34855 20306 34572 34573 26086 29929 18794 1319 768 9849 10881 5264 28095 32708 31733 32709 34298 18795 9581 9968 9315 10622 20206 11256 32681 30924 12366 16655 18796 777 10509 1261 10842 34058 14007 5306 32526 25419 20468 18797 10021 10463 9300 10907 29133 26286 28142 28550 22759 25215 18798 212 213 211 10251 2493 2492 2488 31683 23606 23605 18799 8530 8845 9168 10286 34856 29685 21423 19914 25001 17804 18800 9243 10214 10171 10927 13675 27694 27634 13676 27751 11418 18801 7749 7654 7673 10373 34857 33405 26401 26631 26632 33406 18802 9396 10198 9604 10283 29165 30443 25262 26193 27995 34815 18803 656 824 583 9952 4355 4354 4259 12355 18352 17584 18804 777 606 778 9628 4468 4470 4469 32525 18994 11840 18805 8075 7982 7984 9831 34858 29092 17659 17660 17661 15244 18806 591 1014 592 10824 4393 4392 4218 19493 34538 17611 18807 8227 8228 8185 10591 33047 34859 34340 19924 14940 31581 18808 10267 9473 10979 11030 19601 32535 32536 17601 34860 34861 18809 203 117 6904 1192 2041 7186 33937 2048 26430 2046 18810 1575 9672 716 10972 25389 32964 5019 34570 29037 27900 18811 8024 9743 8758 11191 16433 32110 34862 31241 32616 27539 18812 1230 9750 1291 11192 22400 25250 4865 31242 24451 25251 18813 7904 10815 9519 11013 32287 15583 30639 30902 16903 16905 18814 8798 7864 9815 10495 34863 12240 23205 34864 14586 14585 18815 1425 210 1225 10276 2491 2368 2220 29907 18318 23898 18816 7567 7571 7552 10429 34208 32005 34865 31589 32009 32008 18817 8626 8557 8325 10337 32019 31262 34866 19287 25407 12578 18818 9582 10305 9700 10928 20389 20388 20390 23513 30898 24127 18819 9423 10455 9543 10603 14468 22510 26528 15512 14317 15513 18820 8338 10294 8447 10295 19149 28503 34867 18236 28502 19150 18821 1424 857 666 10981 4769 4768 4770 34868 14067 19219 18822 8970 7958 7954 10228 33679 34098 34869 33093 27872 33680 18823 8172 8433 8970 10228 30157 34005 34870 17748 33093 26474 18824 8200 8199 9667 11175 34717 34559 28855 24022 27574 34871 18825 7620 7559 7551 10585 34872 31400 32321 32322 26850 31402 18826 8736 8735 8734 10840 34296 27408 34873 34760 32569 34761 18827 8639 10153 7952 10529 34874 34482 34875 34876 30505 28381 18828 1155 852 750 9626 5180 5179 5024 20752 20535 12475 18829 6889 8803 6922 6930 34491 26357 7160 7165 7167 24593 18830 8920 8937 7902 10270 33086 12400 34877 33087 14719 14718 18831 8496 8497 8495 10619 34878 23573 33370 27838 19185 23574 18832 9154 8703 7800 11077 34879 28261 32787 31861 27375 28264 18833 1380 1399 759 9834 5221 5220 5207 32122 33721 26724 18834 684 10213 582 11124 27894 26642 4350 24493 34847 27895 18835 8662 9891 7905 10629 34326 34880 34881 28162 31701 26939 18836 7695 7698 7697 10530 26858 34882 31248 25290 31250 23116 18837 9536 9230 10660 10835 27379 15985 30761 17739 14639 13649 18838 8402 10020 8907 11130 25954 22057 34883 25955 32779 18143 18839 9394 9558 10719 11174 31076 29405 12734 16506 16989 31077 18840 9136 8449 8577 10828 29254 20707 34884 29255 17934 20708 18841 9206 10212 9574 10405 25317 32830 28580 25023 32024 23403 18842 9351 10322 9695 11118 25020 11315 30813 25184 24060 18464 18843 9600 10151 9386 10341 29758 22032 19043 23052 21795 34602 18844 353 356 357 11067 3194 3203 3202 19907 31483 27248 18845 8265 10286 8313 10611 32183 22606 31270 24503 20061 18435 18846 9511 11011 10562 11119 20359 33265 22007 33940 32483 33266 18847 941 939 1477 10015 5935 5937 5936 18261 16345 18449 18848 9245 10308 9771 10727 16645 34042 22386 28831 17147 33389 18849 9769 10308 9287 10727 34043 22932 18542 17146 26596 33389 18850 9152 9136 10144 10682 34885 33250 33993 23866 31660 29253 18851 8658 8586 8417 10957 32973 34886 26809 19318 27404 32974 18852 8782 7465 7604 7602 34357 34887 32890 31907 32891 34359 18853 9975 10224 9496 10897 25735 22426 24116 25050 22428 22430 18854 868 869 711 9977 4993 4992 4857 21710 34711 13425 18855 9393 10621 10252 11069 23145 25433 30873 32862 26352 26354 18856 570 9686 10551 11164 34677 33198 34818 34888 32722 32282 18857 526 10469 522 10795 34889 18528 4048 28338 18495 18530 18858 836 1040 1041 10352 5558 5565 5564 25445 20095 12657 18859 9473 10395 9860 10992 32393 12580 25855 23821 25857 30784 18860 431 9613 433 10909 32018 22575 3577 34890 27430 20888 18861 539 10198 10018 10982 28797 28798 27015 34891 22285 22031 18862 247 1338 250 10323 2675 2674 2673 12899 12901 22558 18863 6971 6911 132 1383 7233 7229 7231 29170 2106 31864 18864 6957 9034 6873 6921 22009 34234 7101 7103 7096 20256 18865 8449 8263 8252 9701 34453 21812 34892 20706 20945 11381 18866 7923 9796 7931 11004 27600 16637 28909 27437 34893 18161 18867 1416 10346 527 11080 12391 34244 4073 16709 34894 16710 18868 597 665 664 10559 4425 4424 4423 13571 32159 16072 18869 8932 9741 8287 11186 32717 17348 34895 32238 33113 33112 18870 9752 9872 9291 10492 20931 13449 21192 13832 17796 13598 18871 9334 9872 9752 10492 15463 20931 22236 17797 13832 13598 18872 8978 10577 10088 11128 34545 17032 33017 33018 26625 26303 18873 1395 1088 868 9977 4715 5696 5697 24142 21710 19076 18874 1062 9545 10794 10995 30268 31565 33349 30269 34896 26167 18875 758 9751 756 10647 13427 25561 5204 12349 28533 17322 18876 6934 116 203 6906 7183 2042 25770 7185 26650 7181 18877 1198 10327 9811 10814 32917 32761 32916 33417 29929 26854 18878 9294 9786 9659 11064 27526 31063 31064 30950 33630 33545 18879 9746 9866 9249 10764 25358 23686 25746 33934 23685 21592 18880 8243 8244 8147 10365 34897 34898 33753 33754 27718 26262 18881 126 1193 6980 6915 2077 34153 7213 7211 7215 34825 18882 9623 10220 9519 10661 27798 27796 25325 30348 30347 28756 18883 567 688 9811 10964 4272 20307 32762 32475 27125 27124 18884 9304 9720 9650 11159 28974 14898 29813 17100 25959 19430 18885 1023 9920 1104 10606 32669 14473 6045 34899 12141 16828 18886 7611 7610 9964 10499 34900 34901 22037 27929 27930 34902 18887 9979 10090 9317 10737 21692 19372 11886 14964 20407 33917 18888 9325 10148 9599 10383 28678 27365 30046 21276 17544 31215 18889 664 10117 1231 10559 34903 18430 4759 32159 18428 18429 18890 9736 10385 9319 10965 30128 30127 19588 19554 18989 30349 18891 9515 10862 9604 11010 26789 26790 25261 23653 29201 28060 18892 8909 8761 8891 10162 34904 22630 22472 17463 18163 22631 18893 8954 8154 8588 10163 30397 34905 13763 13766 13768 30398 18894 712 10117 664 10559 17079 34903 4757 16073 32159 18429 18895 9423 10041 9786 11147 18341 17688 24555 17078 28284 18342 18896 7766 7809 6884 6910 25506 34906 34907 25505 7145 25504 18897 1481 1301 827 10070 5529 5528 5530 22339 15469 34039 18898 9657 9689 9344 11131 28136 26824 33366 30684 32039 30685 18899 9747 9868 9224 10496 22378 21533 11305 12617 17692 13464 18900 9238 9868 9747 10496 11483 22378 18799 18537 12617 13464 18901 7926 7905 7913 10629 34908 31700 34704 33637 29214 31701 18902 9750 9310 10329 10722 15182 17649 34026 15184 33488 12089 18903 9226 10330 9745 10723 32283 34027 14856 12092 15185 33490 18904 8811 8625 8812 9797 32471 34909 16187 14241 15031 22972 18905 8590 8589 10567 11132 34910 29946 34056 34057 27711 21597 18906 8187 8140 10862 11010 34911 32299 28059 23651 28060 34425 18907 9777 9937 9595 10674 24947 33233 19477 25958 31661 23738 18908 1186 1521 9675 10716 2455 34588 29227 24676 20751 34912 18909 8861 9690 8785 11126 26194 18754 26195 28242 34913 28240 18910 9595 10145 9229 10421 19558 22740 31015 28777 15354 25609 18911 9812 10157 9639 11051 23484 28713 32305 32828 18291 21297 18912 8714 8415 9759 11187 34914 16391 32874 27174 31824 31823 18913 8716 9029 9764 11187 34915 30302 17048 31826 31546 31545 18914 821 820 1396 10142 4938 5496 5495 13098 17396 31053 18915 1273 932 1545 10423 2221 5921 2427 34916 17766 17857 18916 6871 8763 7756 6903 34917 26492 34918 7088 21427 26493 18917 874 10096 638 10844 30509 34580 4629 34919 34788 18306 18918 6360 8791 6269 7751 26730 34920 6500 32058 34921 32057 18919 9611 10135 9236 10430 28233 21799 27184 15591 16091 26101 18920 471 991 1430 10479 3792 3795 3794 25209 24267 25225 18921 9200 9144 8650 10189 34922 34923 33135 33253 33254 14619 18922 9242 9536 10660 10780 31898 30761 30372 17901 30177 29297 18923 9390 10041 10285 10633 13602 32586 14222 13822 14224 29848 18924 6969 157 136 6897 23119 2122 7241 7245 7243 26368 18925 9031 9632 8726 11088 15343 30942 34924 25898 31417 19344 18926 16 7547 7598 1178 34925 31691 34436 1651 31060 13618 18927 9244 10025 9567 10448 21155 17571 30241 21157 18973 19390 18928 8990 9632 9031 10950 34926 15343 34927 34928 14887 15345 18929 341 10141 339 10683 23194 28941 3132 22894 21850 23195 18930 8105 10043 8196 11027 25166 29043 32676 31313 32795 29000 18931 9627 10870 10180 11135 19821 32612 25932 32889 31348 34929 18932 8322 8459 10446 10453 34930 22489 22594 24094 22609 22610 18933 8814 7640 7763 10290 34388 31798 34931 23157 31796 31797 18934 9743 10729 8758 11191 15914 32111 32110 27539 32616 32193 18935 9265 10077 9589 10779 21614 31171 28657 16233 27813 30297 18936 7951 7952 8639 10153 34548 34875 34932 34547 34874 34482 18937 555 9929 1352 10679 24379 31385 4212 24381 29441 24382 18938 786 10416 1335 10987 26170 31408 5348 33646 33236 32457 18939 8630 8249 8628 10052 34933 30294 34726 31220 30295 15146 18940 9557 9966 10364 10963 29121 16888 27297 24775 33956 21933 18941 9839 10737 10090 11062 14963 33917 34564 32949 17474 34934 18942 1097 9791 1004 10860 24226 32124 5687 25859 28891 25860 18943 8556 8583 9147 9938 34935 33913 34741 23689 33912 21486 18944 9651 9356 10095 11041 25482 22943 12768 28925 20567 17069 18945 9788 9844 9444 10801 31844 32768 25546 30777 16945 31232 18946 9663 10240 9848 11074 21043 14412 30020 22192 34145 20486 18947 323 1444 10467 10707 3055 27569 23137 23135 23136 27532 18948 1025 1209 740 10667 5138 5135 5136 27041 15984 33743 18949 496 884 506 10293 3920 3919 3918 12910 12912 33241 18950 423 10430 400 10945 28258 28887 3432 24887 33009 28259 18951 9397 10235 9830 10571 28694 27636 24961 32102 24855 18384 18952 1232 182 100 6299 1983 1977 1980 21326 6631 21325 18953 6371 9673 6384 10459 29083 31292 6775 26778 34522 17321 18954 8497 8552 9795 10812 34748 19647 23572 34936 28538 28537 18955 7603 7550 9832 10499 34937 32648 33874 34938 34551 34939 18956 6973 6974 6975 10962 7455 7285 7453 31317 34035 34034 18957 9429 10044 9618 11077 18627 28772 28611 19073 25103 19363 18958 9396 9515 10248 10862 25263 32861 27752 21361 24507 26789 18959 9095 10449 8428 10910 27882 24436 28273 34940 31516 31368 18960 9133 8510 8511 11034 34941 34942 18367 19440 19442 34943 18961 9140 6281 6336 7777 34944 6551 28017 28015 28016 34945 18962 7774 9673 6296 10776 30039 30040 30036 34946 34947 18408 18963 8881 8923 8613 10425 19298 32998 34948 19299 22798 15616 18964 8589 8555 10567 10836 34949 32295 29946 18847 14382 32296 18965 8120 10420 9089 11091 31305 32392 34950 15566 34951 31306 18966 7938 7940 7941 10829 30244 34952 34953 30249 34954 30247 18967 1376 1407 744 9668 5154 5153 3296 34053 23905 11503 18968 9312 9545 10703 11029 27177 27513 21055 34955 34764 27980 18969 6309 10319 6381 10831 29934 29966 6591 34956 31114 31113 18970 164 1176 7606 10592 1661 34171 23162 21617 20645 34172 18971 9049 8236 8502 10487 34957 20387 19099 19101 15672 13611 18972 9782 9903 9491 10543 29124 19872 31069 28447 22483 18317 18973 8653 10237 8068 10605 30005 32668 33794 18751 30499 30004 18974 9369 9537 10567 10836 27380 29945 13942 14380 14382 16568 18975 1042 1043 1545 10439 5032 2421 5922 17083 17085 23264 18976 9082 6886 9098 6893 34958 34959 33169 33170 29807 7153 18977 923 921 1549 11174 5879 5889 5888 27237 34105 27422 18978 9396 10026 10027 10822 21360 30145 29166 32095 14089 34960 18979 9220 10164 9666 10616 13238 33889 15102 13066 30390 15926 18980 9519 10661 10220 10815 30347 28756 27796 15583 23078 33012 18981 9675 10189 9404 11017 34961 26190 33438 19127 30212 30211 18982 8117 8114 8116 10845 34962 29180 30520 30522 13447 29555 18983 7788 8854 6267 6311 30384 34963 34964 30383 6495 30385 18984 9554 10252 9393 10599 31769 30873 28957 30531 12334 29626 18985 8073 8917 8160 10078 33758 30092 31537 22476 23054 21542 18986 9656 9726 9473 10541 30957 19250 32687 32291 15794 18597 18987 589 651 9619 11005 4382 30263 31396 34110 31593 34965 18988 8899 8497 8553 9795 25000 34747 32592 11931 19057 23572 18989 7537 7601 7602 10372 34966 32458 31344 30856 30487 22144 18990 7566 7564 9580 10747 34811 26742 23345 34255 27855 24742 18991 8063 8155 8065 10363 34967 12380 19567 19569 11863 12381 18992 8703 7768 6278 11077 34968 34969 34970 28264 34971 34972 18993 338 335 10665 10772 3114 20351 34973 34974 20353 20352 18994 8346 8196 8750 9662 33964 34975 34976 33010 19654 29040 18995 9734 10598 9119 11152 14696 25301 25299 33402 34977 29298 18996 641 9789 10289 11120 32981 27062 32982 34978 30616 30615 18997 7950 10652 9689 11131 32712 19448 32710 26662 30685 32040 18998 10393 10753 904 11164 28439 34979 34980 34981 34982 34983 18999 9181 10556 8543 10714 32573 20324 34984 30721 19970 23369 19000 8153 10108 8345 10627 27578 14751 34985 34315 14753 13320 19001 9351 10209 9947 10910 15173 27227 28697 21209 30916 18424 19002 8942 7983 8477 10622 34986 29765 34348 12364 15529 27215 19003 9608 10444 9483 10498 15561 29305 34088 23991 33440 32591 19004 7713 7710 7712 9591 34643 34987 33639 26424 14516 34644 19005 8796 6936 6862 7772 11555 7052 34988 11557 34989 11556 19006 1454 180 9819 10908 2338 33369 13330 34795 26619 34796 19007 1086 9950 1268 10669 16817 24211 4596 31230 33327 33328 19008 1539 1021 9617 10855 6043 28421 22801 33215 28710 34740 19009 7568 7567 7566 10443 34990 33245 23344 19548 23346 30557 19010 884 10293 9849 11156 33241 23676 33240 34474 33852 29437 19011 9184 7801 9591 10861 33564 27892 25146 34465 34466 34649 19012 9856 10164 8883 10616 25348 29231 29020 20943 31750 15926 19013 8428 10910 9578 10918 31516 31373 24434 32875 16883 34481 19014 8835 9870 8706 11191 34991 19025 34992 31268 34993 34994 19015 532 1259 9865 11192 4100 24705 24822 34995 24706 24233 19016 479 1154 482 11015 3832 3836 3835 28070 17858 22187 19017 7865 7866 9987 10564 34996 17159 12209 12369 14865 17126 19018 6869 7789 6900 6961 34183 26739 7080 7085 7087 26699 19019 364 10111 10501 10774 16252 19455 19453 34997 31482 32820 19020 9204 10333 9775 10742 31212 34101 14999 11994 15001 33692 19021 8729 8028 8022 10817 30321 34998 17073 18839 19060 21482 19022 7548 34 7581 1099 34999 35000 29616 35001 22170 1723 19023 7567 7528 7569 10443 35002 34223 30559 30557 30558 34224 19024 7605 7607 9967 10413 35003 34368 26030 26029 22095 35004 19025 8253 8450 8264 10030 35005 29358 34136 30992 26515 18262 19026 7843 7842 7844 10997 17023 35006 33334 13670 32561 17024 19027 1216 9936 850 10730 30888 24136 5625 31830 19222 24137 19028 8958 9051 9765 10662 35007 15082 17413 21129 15083 12059 19029 8196 8106 8750 9662 29041 19655 34975 29040 19654 18637 19030 552 9927 1366 10618 27029 18097 4200 35008 18099 18098 19031 9510 10428 9573 10856 16660 26498 26017 26784 26566 29823 19032 1231 664 712 10117 4759 4757 4760 18430 17079 34903 19033 412 413 411 9803 3493 3492 3487 26612 20290 14387 19034 8727 8374 8918 10109 35009 33547 34274 28119 33498 33546 19035 9690 10428 9573 11126 30868 26498 28415 28240 27800 29825 19036 9711 10577 9304 11045 16182 15421 29424 33296 13349 15423 19037 9317 9923 9839 11062 19373 26155 11883 22065 32949 19859 19038 369 259 10059 10394 2714 17927 34459 35010 16301 21125 19039 401 397 1245 10606 3425 3417 3426 12139 29016 21789 19040 539 10198 536 10952 28797 25996 4119 29614 25997 19616 19041 7712 9591 7710 10518 14516 34644 34987 14517 32702 14518 19042 9628 10509 777 10842 15812 34058 32525 15774 32526 20468 19043 10041 10071 9425 10668 30085 20452 32215 18340 17892 22998 19044 1196 1519 10429 10555 2316 19921 32007 33208 25303 19443 19045 7941 9784 7940 11167 35011 25863 34952 35012 35013 33082 19046 9422 10386 10216 10586 31297 31333 32885 30584 16127 33189 19047 646 10640 602 11007 34451 24949 4447 34694 31102 33787 19048 9593 10002 9445 10381 19803 15496 30226 19802 12300 16109 19049 9019 10527 7928 10738 32655 30293 34277 30747 33243 26122 19050 10359 10437 9228 11010 21041 13134 18922 25799 29200 24494 19051 8582 8556 8314 10318 32059 22615 35014 29257 19618 22616 19052 7753 8776 8775 10581 35015 33284 20496 18295 25185 33283 19053 9034 6874 8627 10533 35016 35017 35018 28134 25315 35019 19054 9546 10167 9241 11190 30650 18540 33893 29333 14630 32220 19055 1442 480 10194 10923 3839 29771 26093 26094 25322 34817 19056 1336 9789 640 10814 33476 34200 4640 30793 31541 26142 19057 929 712 928 10117 4999 4997 5000 13343 13344 17079 19058 8058 10664 10083 10888 33560 18184 35020 33562 30953 24500 19059 1249 6375 95 1187 27877 6616 1957 1963 1960 27876 19060 9226 9745 10333 10742 14856 34201 33690 11902 33692 14857 19061 1198 9811 806 10814 32916 34855 4276 33417 34573 29929 19062 9500 11014 10191 11122 27489 27403 27487 31500 31502 35021 19063 8548 8545 7804 10356 19767 35022 35023 19768 35024 18983 19064 9099 7917 9057 10133 23729 35025 35026 15177 15275 19566 19065 9095 9093 7883 10449 35027 33832 33458 27882 30833 33591 19066 9298 10157 9797 11104 30016 23697 26861 26862 23340 26681 19067 8327 8626 8325 10337 27300 34866 31848 27301 25407 19287 19068 8798 7828 7826 9815 35028 34411 23206 23205 12217 26763 19069 8635 9005 8119 9816 35029 31633 34684 25914 33985 13924 19070 560 566 687 9808 2787 4238 4237 26756 13849 19248 19071 8747 8353 8220 9809 35030 34001 26126 24356 30382 25907 19072 1147 1270 745 9812 4521 5157 4791 34798 26748 25912 19073 1198 567 806 9811 4016 4274 4276 32916 34855 32762 19074 396 1022 1245 9813 3420 3421 3418 28963 32920 25910 19075 1460 1443 1308 9810 6242 3280 2677 23776 21266 26760 19076 668 1415 667 9818 4773 4772 4197 33172 25920 20144 19077 10391 10412 9435 11011 25570 35031 27455 20361 24875 34023 19078 632 10029 887 10580 15327 19375 4600 15526 26925 23856 19079 1026 880 9678 11090 5736 34019 24933 35032 11899 34018 19080 9321 10075 9688 10757 21784 20927 25605 29805 29767 28609 19081 354 355 346 10257 3168 3167 3162 12526 12528 21351 19082 1066 745 9812 10667 5155 26748 11507 11431 11509 18971 19083 9522 10405 9206 10709 15788 25023 25022 29669 20338 33804 19084 9392 10357 9894 10773 11251 11967 11966 13242 34231 34751 19085 547 9659 357 11067 28266 34763 3217 28358 31483 28359 19086 6320 6331 10261 11096 6743 25690 30875 35033 35034 35035 19087 9436 9924 10482 10866 17532 26535 21572 17535 23874 17536 19088 1409 228 10409 11030 2580 17154 31130 31133 31132 32991 19089 9106 9103 7794 10225 33607 25740 35036 33356 24590 25742 19090 8958 9765 8641 10743 17413 26910 35037 17449 19170 17450 19091 629 707 889 10103 4582 4585 4584 13880 32472 13879 19092 1238 1124 28 10226 1701 1699 1694 16601 35038 19871 19093 1493 836 1041 10352 5566 5564 5567 23768 20095 25445 19094 7625 7807 10412 10657 35039 30207 30629 26820 30210 30209 19095 10237 10605 10016 11028 30004 16052 34350 14373 17609 30501 19096 9447 10443 10429 10555 29654 26132 19922 18178 25303 30561 19097 9045 7810 7809 10205 35040 35041 26299 17684 24866 15284 19098 1153 429 9863 11188 3554 17292 35042 35043 35044 35045 19099 1229 9890 444 11188 24596 24695 3624 24447 35046 24597 19100 8090 10766 8092 10880 29699 30466 35047 35048 33712 33713 19101 9489 9902 9781 10534 22434 20623 22746 16612 26256 13870 19102 9665 10519 9289 10867 28544 24916 16867 25995 18905 27927 19103 7761 10332 7643 11082 32562 35049 31987 31988 31688 19839 19104 1446 9915 906 10653 19036 29480 5827 23539 29481 19988 19105 505 503 504 11155 3952 3944 3953 32693 29561 32515 19106 9271 9805 9738 11039 31976 33025 34131 34631 34320 34319 19107 8666 8664 8665 10101 34598 32838 35050 25983 17984 28783 19108 8607 7886 9022 10671 34317 35051 22980 21302 20926 20292 19109 8297 8974 8765 9820 15316 32221 35052 15318 26885 15317 19110 916 170 1547 10716 2284 2286 2285 32730 25011 22464 19111 1238 28 7612 10226 1694 35053 16494 16601 16602 35038 19112 1182 10417 6367 10573 33332 28809 35054 33333 28810 18016 19113 9434 9704 9629 10941 17173 30073 29389 13381 17958 21337 19114 9272 9945 9566 10772 24285 33242 32638 24286 26478 20354 19115 8151 8150 7956 9665 33432 35055 33948 33434 19823 33433 19116 8514 9068 8263 10350 33750 11799 34808 29475 13296 13295 19117 8549 8624 7772 10253 34660 19067 35056 21362 11450 19068 19118 8549 8773 8550 10253 35057 31952 21363 21362 19635 29330 19119 8733 10004 9084 10582 34576 29498 35058 27985 23704 23127 19120 9537 9368 10567 11132 27933 29444 29945 21598 27711 27934 19121 8990 8726 9031 9632 35059 34924 34927 34926 15343 30942 19122 9089 8601 8429 9718 32390 34314 35060 32389 20531 31319 19123 8360 8363 8358 9821 23384 35061 23410 17782 23411 12584 19124 663 652 632 10580 4597 4413 4598 29979 15526 15525 19125 1026 9678 880 11163 24933 34019 5736 35062 33629 25693 19126 7565 7566 10429 10747 35063 26130 34386 35064 33175 34255 19127 9552 10268 9205 10296 26200 16129 26737 32051 13482 17634 19128 9227 9973 10774 11023 22441 31067 27728 30817 31068 29070 19129 601 1095 600 10245 4438 4437 4407 32958 33459 22716 19130 953 960 952 10508 5951 5950 5801 14335 24753 16178 19131 9877 10329 9236 10938 15349 25803 18258 23312 21800 18784 19132 1268 283 289 10302 2853 2854 2856 24212 24332 23984 19133 834 835 709 10086 4985 4984 4982 13284 11406 18003 19134 389 9700 392 10928 14103 30897 3377 35065 30899 30898 19135 8482 8908 8910 9781 32728 34742 25121 15815 21565 25344 19136 8014 8017 8923 9782 33979 34743 35066 33596 16783 29992 19137 8603 8604 8474 9785 34839 29586 35067 28579 29587 16514 19138 335 333 336 9783 3103 3105 3104 21030 11865 20196 19139 9033 7942 7940 9784 33931 35068 25864 25862 25863 33930 19140 9554 9267 10599 11035 31673 29625 30531 31676 32162 22584 19141 549 984 983 10736 3211 4184 4185 27311 32065 24395 19142 703 10439 1042 10473 25869 17083 4952 25438 20512 21886 19143 8304 11113 9546 11190 17539 16367 17537 29334 29333 34489 19144 7683 7685 7727 9914 35069 33255 31161 24980 31164 28253 19145 6373 92 156 6351 6607 1945 24077 6612 31377 6611 19146 8955 9634 8156 11055 27793 31802 32155 34582 35070 27598 19147 8070 10019 10805 11128 30411 30488 35071 30412 35072 30413 19148 10214 10704 9408 11000 17459 23564 29849 29579 28441 31904 19149 9056 10571 10235 10976 34266 18384 35073 34268 31580 33358 19150 9040 9862 10872 11193 30929 19612 35074 30930 34310 30931 19151 6320 10261 9802 11096 30875 24288 25664 35033 16594 35034 19152 8823 9794 8132 10632 24242 13691 35075 29160 12954 17452 19153 8186 9965 8145 11047 32399 28323 35076 34273 28325 22137 19154 8704 8064 8067 10088 14691 33202 35077 13159 31469 14692 19155 7850 7846 8986 10087 13741 33818 35078 13742 29883 13352 19156 8112 8677 10165 11002 34563 32016 33451 32191 30918 35079 19157 9433 10027 10026 10611 20716 30145 21922 20060 21924 34158 19158 8843 9117 9193 10268 35080 34327 14110 16128 16130 28842 19159 6872 7781 8763 10511 35081 35082 35083 35084 32522 23423 19160 8502 8238 9092 9958 17287 13825 35085 14868 13826 11512 19161 201 950 1170 10713 2450 2452 2451 20662 17759 20663 19162 663 888 10065 10580 4754 34205 35086 29979 27845 30809 19163 1389 516 9805 10839 4006 35087 24715 31805 31977 35088 19164 457 455 10426 11105 3712 22012 35089 35090 22013 21536 19165 9771 10727 223 11106 17147 29981 35091 34197 29982 25062 19166 8508 8401 10218 10561 35092 13376 30570 35093 16142 13395 19167 9010 8794 8971 10050 27331 35094 23492 14217 23491 22725 19168 916 10470 908 10983 32729 30380 5830 33973 30754 17810 19169 10093 10146 9277 11071 23846 31107 31105 27960 25366 27961 19170 7912 9519 10661 11109 30638 30347 33011 31383 17325 31235 19171 936 1528 935 10366 5924 2372 5578 19552 21840 18667 19172 7816 7818 7817 10079 33698 35095 32680 31412 29119 30213 19173 8302 9959 8733 10582 15335 34038 34646 13144 27985 15336 19174 954 861 9847 10676 5672 22394 22292 34632 16164 21072 19175 7584 7557 7585 10475 29210 35096 27180 22756 27182 29211 19176 449 1369 746 9822 3646 3686 3685 21942 21145 17725 19177 438 485 484 9777 3628 3627 3590 28916 11408 15639 19178 9511 9435 10412 11011 35097 35031 25569 20359 34023 24875 19179 6366 6368 6370 9592 6681 6772 6851 22845 17440 29838 19180 9173 6338 6279 7768 32541 6543 35098 32540 35099 32542 19181 924 10499 1520 10712 33570 29134 5598 30773 29136 29137 19182 9565 10109 9687 10263 28834 17141 31576 25054 16942 29868 19183 9323 9724 9668 10715 22864 23861 11801 14366 14368 23616 19184 9454 10810 10631 11143 31177 29787 33800 23948 29753 31914 19185 553 9684 995 10969 11318 17231 4203 13928 35100 13929 19186 756 9751 757 10666 25561 26907 5199 25560 27390 19913 19187 6260 6306 7762 6370 6464 21661 34433 6467 17439 6469 19188 10180 10870 9559 11135 32612 32613 27924 31348 25777 34929 19189 6288 161 87 1222 31876 1928 6596 31877 1925 1931 19190 7752 7476 8842 7592 35101 35102 33789 14560 33788 35103 19191 483 9928 482 10651 35104 17313 3843 35105 17315 17314 19192 9271 10839 9805 10964 27494 31977 31976 29662 35106 29663 19193 8705 8835 8706 11191 35107 34992 19207 27538 34993 31268 19194 8705 8024 8758 11191 18807 34862 35108 27538 32616 31241 19195 532 685 1259 11192 4089 4101 4100 34995 24233 27541 19196 685 1230 1291 11192 4862 4865 4864 27541 24451 31242 19197 6258 7774 8827 6296 35109 30037 35110 6456 30035 30036 19198 689 9624 568 10937 34072 32792 4278 33868 33492 29151 19199 6341 6339 6315 10440 6820 6818 6654 29396 19434 24235 19200 9577 10898 736 10917 22747 34779 28418 20653 32876 22793 19201 8180 10757 8395 10946 29629 28608 33423 33239 30862 24265 19202 1429 10141 1264 11140 28675 28555 3146 28676 24630 28677 19203 10084 10206 9361 10904 32093 24103 23364 16642 35111 17096 19204 8289 8169 9998 10942 35112 30691 16407 34799 31453 32953 19205 8012 10597 9584 11003 25314 21630 23031 33746 21355 22223 19206 608 605 10192 11100 4464 12193 25070 25071 24937 32070 19207 6976 6978 6912 9616 7377 7075 7378 20967 14918 20409 19208 6254 8832 7778 6312 35113 31995 35114 6443 17799 31996 19209 1355 1480 9887 11185 2499 33532 34303 35115 35116 29213 19210 999 10640 9727 11140 35117 28860 35118 35119 29158 24629 19211 999 9727 1030 11140 35118 29157 5107 35119 27120 29158 19212 9447 10052 10051 11019 27449 25545 16739 18898 18479 35120 19213 7987 9968 7984 10622 11964 17724 35121 12365 24693 16655 19214 394 392 388 10305 3379 3378 3380 19347 34041 30896 19215 9232 10090 9979 10737 12885 21692 15165 13139 14964 33917 19216 364 10501 238 10774 19453 29032 2619 34997 31533 31482 19217 1294 457 9725 11105 3722 35122 35123 35124 33431 35090 19218 9359 10107 10254 10711 22264 35125 30230 23099 30095 13681 19219 9367 10254 10107 10711 23691 35125 13091 13682 13681 30095 19220 1324 546 587 10222 4167 3692 4168 14125 15141 19808 19221 9865 10333 9221 10952 34202 26276 18687 24704 26278 18503 19222 10074 10743 9514 11099 17409 25805 22315 22050 21231 34653 19223 663 10132 652 10580 34304 12493 4597 29979 15525 16519 19224 6304 6278 7768 11077 6539 34969 33142 35126 34972 34971 19225 8545 7804 10356 11176 35022 35024 18983 28335 28337 35127 19226 9790 9845 9443 10353 25673 20017 18559 15966 15246 25649 19227 1370 440 445 11072 3639 3637 3640 22818 25065 33468 19228 532 9865 534 11184 24822 35128 4098 24620 35129 24823 19229 7528 8800 9828 10443 34613 34615 33186 34224 31221 35130 19230 7783 9170 9160 10031 35131 29841 35132 34115 29900 29901 19231 7676 7665 1586 10180 35133 35134 26145 26143 26144 32956 19232 9152 8513 9136 10682 26014 35135 34885 23866 29253 26015 19233 8127 9835 8191 10759 19463 11955 35136 12805 12986 13984 19234 353 1368 571 9913 3204 3206 3198 16592 11269 30995 19235 315 10583 9762 10924 35137 15237 35138 35139 22101 22103 19236 6346 6344 6348 10572 6809 6697 6735 29204 25452 25872 19237 10497 11063 9459 11121 23851 22391 30228 23853 32757 23854 19238 593 1352 556 10013 4221 4213 4219 34151 28383 29440 19239 8514 8263 8513 10682 34808 35140 35141 34809 26015 34454 19240 592 10100 715 10884 34537 16320 4400 35142 35143 32966 19241 1476 9909 1482 11020 28946 27246 2756 32737 23815 29751 19242 9311 9732 9652 11127 29937 25821 24983 33408 25824 25823 19243 8014 9782 8923 10929 33596 16783 35066 15894 35144 30609 19244 570 1368 9686 11164 3226 30996 34677 34888 32282 35145 19245 9635 10345 9416 10378 26628 15437 22506 26174 18760 26043 19246 9659 10328 9569 11064 25529 21679 25526 33630 30949 33574 19247 9738 10379 9452 11172 30578 25475 33026 30580 31098 30581 19248 9263 9953 9959 10659 18681 20541 15334 26340 33252 14274 19249 1535 1121 10384 11085 5623 29529 35146 35147 22901 27847 19250 791 9818 1415 10713 23433 20144 4776 34301 15818 20145 19251 8289 8290 8169 10942 34178 35148 35112 34799 32953 31682 19252 660 10213 711 10482 16465 34539 4737 23446 29879 23445 19253 7985 7989 10422 11018 35149 28246 27912 20676 30774 31183 19254 7595 8702 7533 9907 34415 16795 35150 15637 16284 16794 19255 592 715 594 10884 4400 4399 4398 35142 35151 35143 19256 9060 9054 8155 10300 35152 12379 20872 20873 13407 12972 19257 1035 863 966 10053 5679 5081 3040 18573 23451 28321 19258 9322 9960 9567 10854 14029 30240 27044 30328 29242 30329 19259 6335 6332 6389 10776 6835 6833 6722 29985 34620 32603 19260 1484 904 10753 11164 5819 34979 35153 35154 34983 34982 19261 9670 9418 10294 10920 26707 24467 21831 27144 22963 18855 19262 1572 84 173 6334 1913 1916 1919 29760 29761 6583 19263 8832 9802 6318 10643 31997 32686 32685 35155 35156 22068 19264 228 9766 229 10673 17066 20312 2573 17431 16314 17430 19265 655 9661 1137 11079 34837 31324 4511 35157 31809 30530 19266 1526 184 1143 10475 2361 2358 2362 19407 26685 29508 19267 8026 8054 8053 10306 20344 28794 35158 20346 16273 20345 19268 9363 10191 11014 11122 12692 27403 31103 31523 35021 31502 19269 8842 10268 8843 10418 31124 16128 35159 32588 15537 20054 19270 8315 9896 9017 10591 15738 14508 35160 13442 14939 17427 19271 8332 10568 8331 11008 35161 12113 35162 31425 13796 19091 19272 9009 10999 9906 11000 35163 33686 35164 32996 33687 35165 19273 9009 7847 9906 10999 35166 35167 35164 35163 33686 35168 19274 357 9659 548 11067 34763 25304 3222 31483 35169 28359 19275 8299 10025 8235 10536 31426 18347 35170 28524 18349 18350 19276 8519 10282 9021 10561 32607 13261 35171 28036 13463 15276 19277 1570 1021 10855 11141 6041 34740 35172 35173 28766 33043 19278 9665 10519 8150 10584 28544 33436 33433 20230 33659 33145 19279 8606 8608 8177 10041 35174 34002 27973 13601 27975 22000 19280 103 6383 199 10344 6644 31492 1992 34322 33226 33227 19281 8382 8921 8384 10298 34447 32210 34569 30765 31389 15483 19282 1282 1088 655 11079 4712 4714 4713 29748 35157 21204 19283 10195 10784 9577 10898 31665 26376 28630 21452 22747 33971 19284 8124 8046 8972 10009 34225 35175 26466 19726 26465 27547 19285 7632 7531 7593 10418 33443 35176 29798 29779 23246 32589 19286 9429 9618 10343 11077 28611 20254 16420 19073 19731 25103 19287 1270 9812 10791 10875 25912 26749 35177 25913 30144 24971 19288 8997 9715 8952 11149 30525 23060 35178 27558 30815 30670 19289 197 1452 10391 10747 2429 30745 35179 35180 24744 33697 19290 6325 6327 6326 10710 6715 6828 6815 31150 34311 23849 19291 9385 10473 9806 11113 28601 34663 33757 16446 16368 34519 19292 7585 7590 7614 10447 30107 31030 35181 27181 31031 29864 19293 9392 10051 10357 10773 11247 11250 11251 13242 34751 35182 19294 9412 10857 9982 11004 28897 25333 20617 23784 17794 31240 19295 10096 10543 1276 11173 29673 34806 34805 32120 35183 23744 19296 7896 10336 10084 10843 18789 24785 24784 35184 16020 25080 19297 744 1376 9668 11178 3296 34053 23905 35185 23862 32748 19298 9344 10000 9727 11140 23710 28543 28859 23712 29158 20793 19299 9645 9811 9271 10327 28592 29531 11905 26852 34163 32761 19300 6297 6354 10378 11098 6724 28156 35186 35187 24878 28158 19301 9535 10774 9973 11194 27614 31067 16929 18673 18675 33958 19302 473 384 9989 10735 3329 16016 29035 19159 25408 35188 19303 562 9517 10760 10886 30634 13302 32270 31574 12840 13304 19304 9848 10240 800 11074 14412 23366 23365 34145 35189 20486 19305 7825 10761 10095 10916 25339 18386 25338 35190 20563 33945 19306 8772 9148 8565 10546 35191 22812 25286 27511 22153 22813 19307 437 1229 444 11188 3625 3624 3623 35192 35046 24447 19308 1153 437 429 11188 3586 3585 3554 35043 35045 35192 19309 6295 176 109 6328 19640 2013 6662 6663 6658 21150 19310 10019 10088 9303 11128 25394 26513 26880 30413 26304 26625 19311 9418 10165 9792 11002 30512 17344 24468 24469 18581 30918 19312 1541 1214 10278 11160 6208 29316 34285 34286 29317 27091 19313 8732 6962 6876 6896 28584 7108 33811 31404 7113 7115 19314 1542 7559 1514 10585 31401 35193 1629 29585 34263 31402 19315 8854 8791 6268 6311 33060 35194 35195 30385 6496 33059 19316 9580 9392 10823 11019 30823 15314 24546 35196 35197 13771 19317 340 511 347 10683 3140 3139 3138 16334 17490 16332 19318 937 1601 10342 10401 5931 28613 32397 32396 28293 24641 19319 7698 7668 58 1148 22507 34792 35198 22508 1812 21586 19320 9713 10452 8607 11195 23750 23751 21301 30723 35199 20796 19321 10037 10341 9381 10885 21095 17915 30659 28646 17916 17617 19322 6295 6327 6325 10570 6716 6715 6714 24601 25813 27650 19323 1202 123 163 6894 2070 2065 2072 34441 17619 7202 19324 7940 9784 7941 10829 25863 35011 34952 30247 34954 28204 19325 9095 8438 9093 10449 35200 33589 35027 27882 33591 33590 19326 641 10289 9804 11120 32982 30078 35201 34978 31852 30616 19327 1538 108 176 6328 2009 2012 2015 32115 21150 6659 19328 614 9661 655 11079 34325 34837 4508 30926 35157 30530 19329 1474 10234 1470 10380 14309 16626 4366 16004 19827 16003 19330 1096 1462 644 10354 4657 4388 4658 15293 33281 24568 19331 588 9919 531 11184 23378 28626 4094 33345 27138 28519 19332 8806 9826 8551 10619 27731 35202 35203 35204 35205 30280 19333 415 10636 9903 10966 21528 14812 21527 35206 14738 21846 19334 8819 8451 8817 9935 23025 35207 25657 27348 15157 12783 19335 9345 10550 9766 11056 19334 26414 34725 16154 31118 31120 19336 9212 10179 9862 11196 35208 29582 14819 32409 35209 33129 19337 1404 9895 246 10614 14376 15494 2651 14661 18766 14662 19338 6925 6926 6916 11176 7400 7399 7397 35210 34724 34723 19339 1400 668 1237 10618 4779 4778 4780 13562 17296 29608 19340 7603 10499 9832 10865 34938 34551 33874 35211 33042 35212 19341 9109 9100 8503 10334 25962 23070 35213 26263 23072 16692 19342 9576 10340 9516 10481 11363 23672 27769 25237 22554 28651 19343 555 556 1352 9929 3977 4213 4212 24379 31385 28385 19344 8526 8446 8525 10680 35214 35215 16777 19958 21323 34339 19345 6929 10225 6930 10744 31096 24588 7354 35216 28255 28256 19346 850 1216 1214 9936 5625 5624 4706 24136 27090 30888 19347 8355 8701 8700 10811 24165 32714 35217 16970 32598 24166 19348 8112 10829 7941 11167 32796 34954 35218 32180 35012 32797 19349 1268 1086 631 9950 4596 4595 2861 24211 25575 16817 19350 364 1434 1047 10501 3258 3257 2631 19453 15606 21700 19351 717 650 716 10408 4687 4682 4688 34511 29036 26995 19352 7668 59 179 1253 35219 1816 21587 33000 1822 1819 19353 6296 10776 9673 10831 34947 18408 30040 35220 34307 32663 19354 7769 9081 9135 10472 35221 21807 26269 26270 21808 21809 19355 8091 8482 8094 10766 29224 15814 35222 29225 14357 15816 19356 1208 10735 9523 10838 32206 21471 30732 32486 19323 21473 19357 10045 10461 9576 11066 19386 30388 26564 20126 27739 32911 19358 7843 9009 9906 10704 35223 35164 13667 25587 25588 32995 19359 7696 7668 7695 9614 33282 31429 23141 15661 23142 21589 19360 9331 10700 10005 11063 23034 25125 22119 22392 23586 24363 19361 9652 10583 1033 10924 21837 33078 33071 22862 34626 22103 19362 430 484 10145 10967 3589 12752 24054 24086 17818 31374 19363 7624 7611 7539 9964 22036 35224 30844 18544 30845 22037 19364 9345 10315 9590 10550 12057 18454 19333 19334 12574 32578 19365 8714 8713 8415 11187 35225 31899 34914 27174 31823 31901 19366 8716 8713 9029 11187 31902 35226 34915 31826 31545 31901 19367 6912 6865 6987 7802 7069 7064 7071 19887 22139 34427 19368 9359 10107 9682 10254 22264 19717 30231 30230 25396 35125 19369 9682 10107 9367 10254 19717 13091 29899 25396 23691 35125 19370 1322 10222 881 10342 14124 34794 5739 15128 35227 15129 19371 8384 8932 8287 11186 35228 34895 33321 31390 33113 32238 19372 8937 8610 8384 11186 34469 35229 31388 29422 31390 28127 19373 6359 6358 6377 10378 6728 6793 6710 31474 26630 26042 19374 663 849 652 10132 4698 4697 4597 34304 12493 32882 19375 227 10673 1194 11107 28922 35230 2565 33061 29104 33062 19376 8394 8393 8392 9944 30266 35231 35232 30265 35233 19020 19377 7938 8677 7937 9946 33291 32015 35234 31889 14493 32014 19378 8466 8247 8203 9947 30665 35235 34189 27228 29666 30664 19379 9795 9912 9497 10812 19055 22656 28847 28538 22659 22661 19380 90 190 6361 1228 1937 32421 6601 1940 32420 1943 19381 9600 9980 9379 10970 20557 25733 29541 29090 15801 23663 19382 9449 10463 10871 10922 20020 29914 30084 18815 29917 20021 19383 8471 8336 8642 9788 34095 23082 35236 20762 16158 23083 19384 8905 9083 8430 9790 35237 34797 18169 18171 14431 16862 19385 640 1336 694 9789 4640 4639 4638 34200 27063 33476 19386 9989 10735 384 10838 25408 35188 16016 12162 16017 21473 19387 9258 10133 9572 10707 16806 28468 31165 25420 34059 33685 19388 1489 1432 9901 10551 4290 12798 35238 35239 17366 12647 19389 8044 10149 8856 10954 24058 30060 35240 24067 30342 21374 19390 8392 8394 9944 11146 35232 30265 35233 35241 32553 31021 19391 8629 9134 9828 10785 35242 19590 33877 32101 19437 24279 19392 612 609 1281 9948 4485 4474 4486 29726 28716 31966 19393 7733 9544 7699 10818 26837 32806 34656 32429 33326 32430 19394 1044 10151 965 10953 24064 30169 3062 24068 30282 21639 19395 8147 8244 8926 10365 34898 32106 34009 27718 16043 26262 19396 8258 9105 8238 10110 33966 13983 31851 19955 11918 12878 19397 8275 8409 8278 9940 15121 35243 35244 15468 30490 13299 19398 8327 8421 8422 9941 35245 18845 35246 31669 18844 15257 19399 8499 10300 9060 11132 24748 20873 35247 33909 22407 21599 19400 1463 10130 1159 10807 11868 34256 5961 20786 31257 14581 19401 761 865 1097 9791 5229 5231 5216 11942 24226 14322 19402 201 1170 9949 10713 2451 25922 17874 20662 20938 17759 19403 8275 9940 8278 11032 15468 30490 35244 25424 29812 20689 19404 9185 8702 9201 9907 22167 35248 27522 16076 27523 16794 19405 10052 10823 9392 11019 15313 15314 15310 35120 13771 35197 19406 373 374 372 9838 3298 3297 3292 15502 27497 15528 19407 8053 8341 8906 9840 19830 35249 33187 16271 23996 19628 19408 405 404 1107 9839 3453 3458 3457 27244 11884 22629 19409 1482 1448 1128 9841 6151 6067 5541 24293 17401 13584 19410 1317 297 301 9837 2924 2899 2925 26738 27495 18977 19411 8232 8873 7885 9939 35250 27658 35251 25759 24708 26089 19412 1341 10369 300 11123 12116 31922 2920 30160 31923 30161 19413 9311 10251 9570 10765 22968 23607 31983 31985 24269 24271 19414 9974 10168 9469 11156 34736 23414 22908 29436 29435 31896 19415 7707 7729 7644 9793 35252 27804 17040 17041 16753 25819 19416 1513 10272 1548 10688 35253 34567 2466 35254 34568 31387 19417 6397 6303 6319 10643 6757 6755 6758 34834 27168 34835 19418 8432 10075 8936 10582 24052 13558 35255 21195 13146 15955 19419 893 1364 965 10250 5780 3065 5060 21109 30170 17969 19420 9513 9725 10407 10426 23112 22860 22369 28934 28122 30097 19421 1355 212 1480 11185 2498 2500 2499 35115 29213 31684 19422 210 1425 212 11185 2491 2490 2489 23520 31684 29908 19423 7699 9544 10714 10818 32806 29338 32807 33326 32873 32430 19424 1194 10673 9909 11107 35230 15029 29103 29104 27068 33062 19425 8976 8448 8386 10022 35256 34533 34838 28061 33987 22280 19426 6304 10144 6340 11077 33143 20043 6763 35126 19730 20045 19427 9200 9123 10189 10504 35257 35258 33253 35259 35260 23973 19428 8359 8356 10811 11102 35261 35262 33769 17308 33770 35263 19429 452 1302 742 10005 3541 3701 3700 21973 28954 15352 19430 9053 9084 8733 10004 35264 35058 27984 19212 34576 29498 19431 533 532 534 11184 4093 4098 4097 28518 35129 24620 19432 8252 8576 8449 9701 26665 22473 34892 20945 20706 20149 19433 528 9787 650 11165 28080 26996 4079 26482 33890 28081 19434 9237 10271 9628 10623 26079 22542 11839 27655 33600 29416 19435 663 887 888 10580 4599 4755 4754 29979 30809 26925 19436 9376 10410 9787 11165 22077 22982 22981 32406 28081 30065 19437 9582 10355 9319 10965 23757 23756 23510 30056 18989 22698 19438 6389 9697 9172 10776 32642 31194 32641 34620 35265 16702 19439 679 9721 682 11037 17150 24851 4834 35266 29845 27366 19440 725 682 9722 11037 4847 24853 16689 35267 27370 29845 19441 1137 654 1138 10498 4510 4708 4707 31325 15587 13892 19442 7924 9049 9057 9846 35268 19507 31361 31195 15274 19100 19443 9385 10062 9806 10473 26691 31153 33757 28601 34663 29746 19444 8584 10046 8335 10803 27746 16122 35269 27747 33899 27748 19445 9513 10407 9800 10426 22369 17865 22370 28934 28120 28122 19446 6334 84 173 6381 6583 1916 29761 6588 29964 6587 19447 10039 10197 9416 11076 28633 18761 12479 18486 18294 28898 19448 9289 10484 9741 10867 27856 27986 12228 18905 18904 24301 19449 8309 9704 8260 11065 32127 18238 35270 31601 35271 30074 19450 10216 10386 9420 10586 31333 14167 16126 16127 13878 33189 19451 588 531 533 11184 4094 4092 4095 33345 28518 27138 19452 598 10134 545 10651 35272 23770 4157 33699 31778 31779 19453 8880 8855 10783 10926 35273 30516 29869 27693 33942 33941 19454 8317 10067 9175 11198 30459 13289 35274 35275 34543 31273 19455 8378 10097 8998 10684 27515 35276 35277 35278 32661 15232 19456 551 9885 10431 10873 34167 23883 33229 33230 24417 20065 19457 9609 9212 10194 11193 26682 30362 30361 13718 33127 29766 19458 8545 8546 8594 10313 34258 35279 34400 32835 34399 32278 19459 316 9572 10707 11162 16107 34059 35280 32228 30547 29288 19460 9361 10122 10207 10904 14290 33304 21959 35111 16688 17094 19461 9358 10210 10124 10905 12548 33305 14846 35281 17808 17093 19462 9358 10208 10120 10905 12546 33303 14862 35281 17092 17809 19463 323 1451 1444 10707 3026 3056 3055 23135 27532 27531 19464 6967 6968 6878 8717 7123 7121 7116 28178 34419 32314 19465 6331 82 177 1537 6577 1905 25253 25254 1911 1908 19466 8569 10870 9627 11135 18668 19821 21474 35282 32889 34929 19467 1202 6975 6894 9969 35283 7206 34441 34442 20433 34033 19468 1497 6933 143 6988 29500 7264 2145 28721 7262 7266 19469 9448 9548 10312 10598 17690 15829 17689 20620 31608 19092 19470 8917 8275 8160 10099 15122 35284 30092 13275 14874 15123 19471 1213 10198 539 10982 25899 28797 4121 25900 34891 22031 19472 7728 7639 8868 7521 31140 31141 22515 35285 35286 35287 19473 9232 9988 10203 10604 16001 13527 12537 28981 17088 17087 19474 9602 10165 9418 11002 29817 30512 20722 29658 24469 30918 19475 1107 1106 408 10400 3481 3480 3466 30704 12927 33503 19476 343 520 799 10240 3152 3155 3154 29912 30366 20481 19477 9165 9164 8833 10378 25143 35288 33558 25144 31475 19499 19478 9568 8239 10644 11070 28278 30966 30876 28902 35289 35290 19479 8076 8749 8839 10176 35291 34807 34331 28752 32145 20858 19480 6387 204 6301 10483 35292 34528 6672 35293 27129 34529 19481 9296 9923 11003 11062 24275 22573 22540 32948 25626 19859 19482 8378 9006 8998 10097 35294 32660 35277 27515 35276 12920 19483 9148 7771 8517 9660 33626 35295 34804 32923 18880 31722 19484 663 10065 1121 10580 35086 27846 4753 29979 27844 27845 19485 7755 8771 9181 10714 33894 30720 35296 33839 30721 29337 19486 884 1319 1346 9849 5751 5265 5750 33240 29319 32708 19487 8856 8764 9729 11033 33771 23177 30059 30061 28312 35297 19488 511 9976 1378 10628 16331 15713 3992 16550 20248 16549 19489 8043 8807 9752 11149 35298 19083 22375 22377 15040 34336 19490 1546 911 10526 10833 5846 35299 28873 32213 32214 35300 19491 1176 10435 7629 10592 35301 31311 34170 34172 31312 17845 19492 9245 10727 9771 11106 28831 17147 22386 28832 34197 25062 19493 1358 601 594 10850 4409 4408 4410 15682 27284 31037 19494 9219 10750 9642 11138 29571 29570 25448 28176 29852 34361 19495 9613 10219 9485 10488 22979 27033 25658 25705 22228 29962 19496 9524 10366 9779 10736 19051 29339 29661 23399 22734 25622 19497 9392 9894 9772 10773 11966 32905 16884 13242 16886 34231 19498 1363 1311 878 9705 3806 3341 5729 18561 17279 32791 19499 9658 9572 9930 11162 23306 11540 25712 32139 29289 29288 19500 8422 8327 9941 10834 35246 31669 18844 23818 21366 27302 19501 8507 9018 9050 10260 34486 20804 35302 18900 17551 20805 19502 9397 10571 10225 10976 32102 33311 33344 22271 27105 33358 19503 9074 9779 8536 10574 32831 20862 35303 25197 21583 22732 19504 9568 9253 10348 11070 28568 27508 26379 28902 21048 18585 19505 9259 9750 10329 10722 32091 34026 33611 34623 33488 15184 19506 9269 9745 10330 10723 19398 34027 33618 20012 33490 15185 19507 722 9984 969 10941 16896 13945 4736 26287 13379 13947 19508 1516 1124 1239 10226 2357 6148 6150 21232 15132 19871 19509 8597 8838 8598 9962 35304 35305 27644 27645 26161 35306 19510 1140 10498 9608 10998 31917 23991 31916 35307 24712 32341 19511 9483 10498 10223 10755 33440 32590 29146 33506 33577 32489 19512 919 10060 1045 11024 29757 28280 5870 35308 34133 31836 19513 10179 11113 8423 11190 16447 30912 30911 29584 34473 34489 19514 8896 8864 8377 10728 29047 27482 35309 29048 27483 18312 19515 8896 8766 8706 10728 35310 35311 34831 29048 34832 29470 19516 913 912 662 10073 4749 4748 4750 31409 32307 14689 19517 8706 10728 8766 10847 34832 29470 35311 15536 29722 32266 19518 9896 9415 10556 10906 13854 19984 19985 12347 29421 34734 19519 1374 9961 10628 10920 35312 16277 34321 34352 20249 22962 19520 6294 7791 6263 6359 29101 34471 6476 6481 6479 26830 19521 426 421 425 10104 3542 3537 3543 18556 12961 24727 19522 1460 10463 9810 11117 34579 25213 23776 23777 21270 21064 19523 369 1267 1376 11178 2716 3286 3285 34460 32748 31203 19524 744 371 1376 11178 3295 3284 3296 35185 32748 28996 19525 8873 9939 8232 11043 26089 25759 35250 30972 29064 29066 19526 8686 8683 9071 9851 33347 35313 35314 12083 26622 35315 19527 8768 10436 8678 11109 35316 31452 35317 35318 31384 33819 19528 9430 10294 9670 10295 27401 21831 28459 26337 19795 19150 19529 8218 9717 7927 11133 32987 31871 35319 26706 31872 29630 19530 9696 10358 9251 11137 11929 27573 25186 20165 25187 32731 19531 1484 1368 9686 10753 4287 30996 35320 35153 11434 33477 19532 9715 10259 9334 11149 30526 24207 29516 30670 24027 25578 19533 256 1260 1397 9973 2626 2720 2719 19945 27680 17120 19534 1314 472 10489 10523 3799 29721 17819 17670 17821 33954 19535 8858 7508 7780 7641 35321 35322 28559 35323 23067 35324 19536 616 613 10061 10791 4504 35325 27416 35326 30143 32062 19537 9289 10519 9524 10901 24916 21963 17383 16869 17384 21147 19538 8117 8169 8721 10845 30860 32952 35327 30522 31350 30692 19539 9114 9078 8837 10258 20386 23623 35328 14792 23622 14453 19540 9738 9805 9452 10287 33025 27200 33026 31940 25473 25198 19541 9670 9430 10295 11052 28459 26337 19795 28460 29461 19469 19542 9148 8508 8565 10940 35329 30582 22812 22814 22154 30572 19543 9604 10089 9228 11010 33745 18834 28960 29201 29200 25798 19544 270 1189 1293 10092 2771 2791 2790 28641 27965 35330 19545 8103 8104 8102 10094 15425 23422 35331 15426 13227 12741 19546 8209 8208 8206 10091 32804 35332 35333 26559 35334 31378 19547 9750 10722 9259 11188 15184 34623 32091 22401 32092 33604 19548 7759 10347 9124 11183 35335 11454 35336 35337 16061 16063 19549 8691 8256 8998 10684 12289 35338 35339 13683 32661 12639 19550 8571 7779 9627 10863 34635 34781 33536 33538 31527 34636 19551 14 7609 7550 1507 35340 32647 35341 1643 32646 21908 19552 7869 7870 9755 10701 35342 13281 13745 12841 13282 12730 19553 381 1119 474 10569 3316 3346 3345 29469 21468 27753 19554 6327 6329 6336 10710 6830 6675 6829 23849 31322 22020 19555 6287 6281 6336 9140 6548 6551 6553 28927 28017 34944 19556 9343 10114 9615 10452 14924 26920 33624 14925 31647 14926 19557 1270 9812 1147 10791 25912 34798 4521 35177 34440 26749 19558 365 1084 1082 10441 3263 3262 3264 15899 25485 17632 19559 8883 8224 8221 9856 31749 22412 35343 29020 21618 20942 19560 6885 9082 6910 6950 34629 29400 7144 7149 7151 30879 19561 244 9823 245 11071 20222 15806 2653 35344 33027 25365 19562 8097 10137 8092 10944 33918 30356 35345 32200 30359 30360 19563 1029 10136 215 10943 23435 30352 2514 23464 30355 21371 19564 1293 10092 1189 10790 27965 35330 2791 35346 32114 28332 19565 8641 9765 9051 10711 26910 15082 35347 19168 12266 17286 19566 8461 8427 9770 10711 35348 19862 13148 13680 15249 12264 19567 7903 8920 7898 10270 33224 35349 28553 28552 21851 33087 19568 9859 10419 9000 11168 11439 32767 33668 20333 34496 33938 19569 9861 10420 9097 11169 27688 33808 33809 34509 34498 33566 19570 6300 81 177 6331 6574 1904 30592 6579 25253 6578 19571 8297 9820 8493 10664 15318 24010 35350 24499 35351 24498 19572 222 1076 10388 11111 2550 32783 30069 33619 19317 32784 19573 1378 511 1073 9976 3992 3141 3993 15713 17371 16331 19574 8959 9788 8471 11060 32827 20762 32826 30702 35352 16457 19575 354 984 549 10257 3209 3211 3208 12526 27309 27310 19576 9259 9744 10729 11191 30706 20972 33999 30707 32193 27021 19577 9115 9192 7806 9560 33149 31184 35353 17825 30904 20895 19578 9381 10629 9891 10885 17914 26939 26938 17916 27406 17618 19579 1572 173 1541 10278 1919 2303 2304 29762 34285 29763 19580 7534 149 26 7630 16463 1691 35354 16462 35355 16150 19581 6958 6953 6960 10174 7445 7294 7446 28760 34729 29620 19582 102 1271 6291 6347 1988 19263 6637 6641 6642 21867 19583 6940 10648 9702 10658 19231 19232 18240 34816 18158 35356 19584 641 694 9789 11120 4637 27063 32981 34978 30615 35357 19585 8598 9962 8838 10857 26161 35306 35305 26162 35358 26163 19586 7720 7714 7712 10338 35359 32574 14771 14770 14514 29589 19587 1386 1439 1296 10854 6088 4930 3071 23699 25897 34836 19588 9263 10582 10075 10659 13145 15955 13557 26340 34693 30404 19589 7926 8662 7905 10629 34710 34881 34908 33637 31701 28162 19590 8894 10761 7825 10916 32269 25339 35360 33725 35190 33945 19591 1276 638 10096 11173 4011 34580 34805 35183 32120 33260 19592 9658 9930 9776 11162 25712 12018 29545 32139 33393 29289 19593 6997 6888 7775 6922 7156 34753 30627 7163 28166 7161 19594 9328 10738 9898 11060 12819 26509 17802 25066 16459 30748 19595 1223 1540 1571 10297 6225 6218 6222 22074 15488 15387 19596 8856 10149 8037 10674 30060 17492 35361 30797 17494 14257 19597 9657 10000 9321 10625 29803 29802 19225 23432 22954 27782 19598 739 9670 731 10594 33335 27712 5093 35362 14507 28877 19599 9769 9350 10308 10727 12045 31169 34043 17146 33389 11940 19600 9771 10308 9350 10727 34042 31169 15990 17147 11940 33389 19601 6986 6880 6917 8846 7129 7124 7131 25583 26965 34721 19602 6924 6923 10313 11176 7361 35363 18114 35364 32836 35365 19603 174 144 6901 1199 2149 7267 33097 2156 29236 2154 19604 1071 1028 10051 11019 6053 16740 34812 30227 18479 18897 19605 9545 9957 9669 10636 27179 24809 27176 31564 21845 24808 19606 7735 9144 7803 10189 35366 35367 35368 35369 35370 14619 19607 1100 105 167 6292 1997 2000 2003 28195 28194 6646 19608 9567 10672 698 10854 30419 30914 28275 29242 29241 23701 19609 8206 10091 8208 10623 35334 31378 35332 35371 26766 27656 19610 415 9903 417 10966 21527 19197 3512 35206 19198 14738 19611 8865 7857 9000 9859 35372 32765 35373 20331 33668 11495 19612 9097 9093 8600 9861 35374 35375 33831 33809 27762 33588 19613 7887 9014 8595 9860 35376 31290 35377 22958 30781 11201 19614 575 574 450 10357 3689 3688 3690 31849 24303 23550 19615 1473 913 1462 10354 5854 4751 5855 26446 24568 33585 19616 9396 10283 10026 10822 26193 23211 21360 32095 34960 35378 19617 8914 9807 8205 11084 32071 26759 32941 21551 35379 26223 19618 8434 9778 8309 11065 25282 31578 33689 35380 31601 26791 19619 9659 9786 10328 11064 31063 12177 25529 33630 33574 33545 19620 641 9804 1391 11120 35201 25157 4635 34978 35381 31852 19621 457 10426 9725 11105 35089 30097 35122 35090 33431 22013 19622 8985 9814 8101 11092 27164 33007 34281 35382 33279 30808 19623 9403 10402 9549 10423 19070 15545 25762 17767 21117 18952 19624 8747 8768 8678 11109 35383 35317 35384 30711 31384 35318 19625 8999 10304 9063 11038 11437 28187 35385 31451 28189 20534 19626 8865 9859 9000 11168 20331 33668 35373 20332 34496 20333 19627 9093 9861 9097 11169 33588 33809 35374 33833 34498 34509 19628 8229 8305 8248 9680 34853 30067 31354 31355 13637 28561 19629 8743 8742 8744 10223 26345 35386 34354 26346 29147 23174 19630 8346 9662 8750 10883 33010 19654 34976 24036 29932 27040 19631 897 898 951 9932 5791 5796 5795 11420 13772 24998 19632 9027 9015 9760 10708 35387 34355 35388 35389 20237 27347 19633 8855 10135 8001 10938 30395 23134 35390 30396 23154 16832 19634 1075 1108 311 9899 2993 2992 2956 23333 18793 20087 19635 7947 9042 7956 9898 35391 30184 19705 19703 19704 19119 19636 9091 9067 8433 9897 19001 35392 35393 18338 26475 16855 19637 988 1437 1289 9900 5994 2871 5998 27840 30185 35394 19638 1265 597 537 10027 4124 4123 4125 21778 21779 14087 19639 9737 10432 9612 11157 21102 29928 29926 32611 31072 31074 19640 6339 6341 6340 10440 6820 6700 6764 24235 19728 29396 19641 7783 10031 9160 10971 34115 29900 35132 35395 30447 32606 19642 1157 1126 1307 9902 4245 5386 3906 23567 25542 22433 19643 418 417 416 9903 3517 3513 3518 14736 25579 19197 19644 339 338 337 9905 3122 3115 3123 21849 20918 35396 19645 7930 7934 7933 9904 24780 35397 34658 22329 34657 24781 19646 8700 8464 8359 10098 32596 35398 35399 35400 17306 13758 19647 9313 9942 9763 11122 15428 11934 26182 32325 35401 32326 19648 8686 8683 9851 11001 33347 35315 12083 12857 13802 33348 19649 1189 10092 270 10790 35330 28641 2771 32114 23166 28332 19650 7782 7691 7651 7513 22403 20503 22402 35402 35403 35404 19651 406 405 407 9908 3455 3463 3462 25221 13696 27245 19652 1476 263 1482 9909 2753 2754 2756 28946 27246 13700 19653 9920 10606 1023 10876 16828 34899 32669 30273 33513 29431 19654 8870 8138 8198 11171 34617 35405 35406 35407 28813 32707 19655 1161 1366 746 9927 5158 4201 5159 14794 14793 18097 19656 9621 9543 10529 10654 23224 26527 29704 19313 34483 17376 19657 1078 362 1077 10635 3247 2696 3248 24048 22614 21503 19658 8885 8363 8927 9921 26822 35408 35409 22123 23431 12582 19659 1104 1332 1162 9920 6046 6125 6123 14473 25607 30112 19660 9329 10241 9654 10930 13903 17991 19234 15228 22751 27778 19661 327 330 345 9916 3047 3073 3072 20615 14401 27241 19662 7919 9658 7914 11133 27425 15059 34762 31875 35410 29631 19663 259 1188 257 9918 2725 2724 2712 17923 17924 29875 19664 6972 6973 6900 9826 7318 7317 7083 24655 26740 25645 19665 8276 9656 8333 11130 33676 33654 34749 33936 35411 26962 19666 8179 9657 8334 11131 23886 31058 34750 30683 35412 30684 19667 160 66 7664 1163 1847 34683 24978 1850 25728 1844 19668 86 6369 1222 1224 6593 27321 1924 1921 1927 27320 19669 9552 10374 9454 10631 28492 20462 30575 29784 33800 33929 19670 7957 7954 7958 11064 32255 34098 35413 32256 33681 27873 19671 9541 10499 9964 10712 15079 27930 18698 16694 29969 29137 19672 9542 10370 9428 10521 26688 21656 33869 26690 21731 22677 19673 8744 10223 8886 10303 29147 14034 35414 29148 15609 17743 19674 8955 10468 9634 10630 27795 15563 27793 30008 27604 16265 19675 158 7553 31 1240 27478 34650 1711 1713 1706 29410 19676 6988 142 1479 6918 7261 2141 28949 7263 31359 7259 19677 9275 10771 10014 11182 12774 15364 15363 30239 31415 32814 19678 442 1394 1348 10859 3649 3651 3336 12644 15791 24870 19679 8700 8464 10098 10811 32596 13758 35400 32598 21525 21524 19680 8186 8083 8145 9965 31945 35415 35076 32399 28323 15037 19681 576 10285 547 10603 13915 28267 3219 15511 28356 16925 19682 9392 10453 9772 10595 12870 18129 16884 14935 30317 30319 19683 9627 9830 9475 10537 24854 18074 34090 29923 19339 19341 19684 9420 10297 9592 10459 15489 29303 29302 15416 23049 26780 19685 7729 7690 7687 9793 35416 26859 25818 25819 24100 24119 19686 941 940 939 10015 5934 5612 5935 18261 18449 15519 19687 6307 6360 6269 7751 6505 6500 6503 28616 34921 32058 19688 8568 8608 10041 10668 35417 22000 29687 32076 18340 20807 19689 8427 8284 9770 11134 35418 33880 19862 33991 33882 33881 19690 8090 10880 8088 11110 35048 27678 35419 32196 21753 27679 19691 10051 10052 9392 11019 25545 15310 11247 18479 13771 35120 19692 6299 6349 6346 10855 6737 6736 6734 21327 29621 27760 19693 9108 7463 7537 7608 35420 35421 30855 35422 35423 35424 19694 6308 6379 6342 9618 6537 6782 6781 27371 25101 32387 19695 782 808 10505 10792 4892 22149 20082 33308 22150 18398 19696 9041 8595 8946 10992 34520 35425 29012 29014 27154 30783 19697 599 1331 10542 10961 4427 35426 12425 34785 20042 35427 19698 405 9908 406 11125 27245 25221 3455 28829 25222 24849 19699 919 10983 10060 11024 34793 28490 29757 35308 31836 35428 19700 8483 8097 8107 10756 35429 32198 35430 25037 29940 32199 19701 522 1357 1486 10307 3161 4051 4050 18494 14409 19757 19702 8045 8130 8131 10632 32557 35431 34712 25167 12955 32558 19703 8481 8480 10404 10973 35432 35433 21610 23995 20450 35434 19704 8725 8726 8487 10362 34069 31787 35435 15119 31788 30941 19705 8313 10286 8530 10609 22606 19914 35436 22537 21857 21012 19706 8245 8127 8191 10759 35437 35136 32441 32443 12986 12805 19707 9091 9897 8433 10918 18338 26475 35393 16881 26476 18339 19708 1437 9900 988 10917 35394 27840 5994 35438 21461 23977 19709 7678 10590 10515 11046 32963 31981 32962 35439 17626 31975 19710 8743 10444 8748 11129 18199 31550 34346 33634 31552 20821 19711 7626 7560 7541 10477 32038 35440 30492 29991 30493 26110 19712 7959 7950 9689 11131 32711 32710 21494 34707 30685 26662 19713 6980 6954 6956 9911 7444 7332 7392 30351 23758 27937 19714 1257 768 10881 11050 5255 34298 25571 33478 34299 28096 19715 9006 8998 10097 10684 32660 35276 12920 15231 15232 32661 19716 8467 9978 8998 10684 18704 35441 32659 15404 32661 16470 19717 750 9829 751 11139 21686 21685 5172 26870 35442 26871 19718 7940 9784 7942 11167 25863 33930 35068 35013 27831 33082 19719 9306 9557 10364 10846 31699 27297 12702 25792 33856 28910 19720 8284 8282 10383 11134 35443 23065 33879 33881 23531 23530 19721 8223 8235 8299 10025 35444 35170 32002 25340 31426 18347 19722 337 9905 338 10665 20918 35396 3115 20920 34973 20919 19723 8512 9698 10895 10896 35445 30014 19879 19882 19881 21553 19724 7531 7477 8728 7580 34733 34732 31122 32593 30695 35446 19725 9681 9908 9461 11125 14660 29397 16007 24848 32724 24849 19726 6935 6926 6904 9858 7337 7336 7338 20818 22902 22947 19727 553 458 460 10407 3729 3727 3730 11563 13438 29463 19728 1348 1394 1092 10741 3651 5378 6116 20492 27619 24869 19729 640 517 1198 10327 4025 4014 4026 31542 32917 27735 19730 7646 7733 7705 10072 35447 33372 32825 31759 32370 31337 19731 7846 7844 7849 10997 32559 35448 32030 32032 15113 32561 19732 9258 10724 10707 11162 25422 23140 25420 32138 30547 30549 19733 9309 10377 9649 11105 29139 15956 28404 22291 32914 32585 19734 9034 6957 6874 10533 22009 7100 35016 28134 35019 30234 19735 838 10325 1072 11019 14284 34571 5573 13770 33177 18111 19736 6304 6279 6338 7768 6540 6543 6545 33142 32542 35099 19737 747 595 652 10709 4414 4412 4415 32376 11530 11529 19738 476 477 10596 10852 3813 31000 33727 31217 17202 30289 19739 842 1522 10810 11143 5589 31913 35449 35450 31914 29752 19740 9242 10170 9565 10960 33289 31488 32667 26207 30790 27334 19741 881 10222 880 11090 34794 33628 4375 35451 34018 20726 19742 8359 8700 10098 10811 35399 35400 17306 33769 21525 32598 19743 9447 10823 10052 11019 29655 15313 27449 18898 35120 35197 19744 9404 10504 10232 11061 28600 26396 26697 30893 28074 28073 19745 8219 10513 8221 10977 33319 29688 35452 35453 21620 29689 19746 1270 10791 1147 10875 35177 34440 4521 25913 35454 30144 19747 1142 1108 9899 10666 5202 20087 12794 35455 23418 23419 19748 8350 8365 8840 10197 16907 35456 34435 16908 18037 13188 19749 8255 8215 8742 9934 35457 23173 26344 12170 27414 15202 19750 9433 10559 10027 10611 16074 17180 20716 20060 34158 33442 19751 8032 8047 8040 10758 25517 27772 35458 25518 27773 13085 19752 1103 9750 1230 10722 15183 22400 6120 12088 33603 15184 19753 8133 9745 8864 10723 14855 18309 35459 12091 19216 15185 19754 9860 9473 10409 10979 25855 19424 30001 12168 35460 32535 19755 1455 10070 1301 10919 24893 34039 2739 31506 34174 28914 19756 7598 7547 7599 10201 31691 19308 35461 28228 19309 14414 19757 1279 10021 760 10647 30283 11582 5217 35462 12348 16912 19758 9382 11090 9678 11163 20724 11899 22180 16191 25693 34020 19759 8953 10220 7894 11195 18661 35463 35464 18484 35465 18662 19760 551 9885 1312 11148 34167 32803 3681 34168 31381 34169 19761 8827 8825 6259 10459 35466 35467 35468 32631 35469 23047 19762 169 924 1515 10499 2279 2281 2280 34550 34552 33570 19763 8767 7688 7643 7515 31686 31685 31687 35470 35471 35472 19764 7535 7622 7623 10435 29283 27472 35473 29633 27473 23927 19765 9071 9851 8683 11001 26622 35315 35313 35474 33348 13802 19766 9610 10357 9352 11148 17058 33246 30099 27977 34287 27978 19767 7580 7578 7540 10268 35475 30583 30696 30697 30438 26199 19768 8086 8785 8110 9937 21430 21455 35476 22165 21456 18850 19769 848 912 1534 10073 4747 5615 5614 24177 24179 14689 19770 7762 8786 6261 6370 22087 35477 35478 17439 6468 22088 19771 7960 10262 9622 10891 28391 28171 28389 34849 32170 32129 19772 1311 473 378 10557 3331 3330 3319 29412 11949 19158 19773 380 1311 376 10557 3321 3320 3312 14989 11947 29412 19774 1248 1532 1027 10555 2263 5745 6051 27889 12108 13747 19775 9396 10680 10248 10718 21359 19959 27752 30146 35479 31653 19776 8857 8349 10520 10856 35480 29597 33709 34503 30341 30119 19777 734 9727 999 11118 15222 35118 5106 29960 35481 17331 19778 943 10310 1581 10818 20843 25641 2200 34787 25642 25644 19779 7743 7704 7642 9698 31536 16327 35482 20666 14657 14394 19780 9417 10051 10052 10773 25544 25545 15145 18792 16209 35182 19781 8505 9090 9086 10936 35483 29554 20152 20155 20157 26975 19782 389 393 9700 10928 3382 31572 14103 35065 30898 32640 19783 7709 1168 50 7720 16145 1780 35484 16144 35485 15384 19784 411 1379 9963 10678 3485 14232 21698 20291 15601 13034 19785 393 10371 9700 10928 31573 15595 31572 32640 30898 24560 19786 8051 8046 10284 11022 35486 30050 26606 26607 19512 30786 19787 8708 8807 8808 10783 26918 32077 35487 26919 26104 19084 19788 373 1119 375 11042 3305 3304 3303 15503 16634 27754 19789 8609 9933 9135 10668 21969 35488 35489 21970 21811 17891 19790 8518 8520 9853 10504 35490 29750 22409 20712 19777 26395 19791 9775 10560 8197 11171 16309 32859 33842 31964 32860 30544 19792 8112 7941 7948 11167 35218 35491 32177 32180 32182 35012 19793 7941 7940 7942 11167 34952 35068 35492 35012 27831 35013 19794 7721 7719 7714 10546 34077 35493 29588 28084 29590 34078 19795 6903 8797 6870 6961 26530 34681 7089 7091 7084 26700 19796 8206 8914 10091 10900 35494 21549 35334 35495 31696 32072 19797 6375 6293 95 1187 6621 6620 6616 27876 1960 21714 19798 263 9909 1194 10673 13700 29103 2576 13257 35230 15029 19799 9927 10618 552 10873 18098 35008 27029 21945 27030 29175 19800 6342 6385 6308 9618 6784 6783 6781 25101 27371 33541 19801 583 824 1412 10280 4354 4356 4353 18353 15309 19189 19802 9408 10607 10017 10614 15278 20799 18251 15280 19754 14663 19803 1303 1360 130 10174 2100 2098 2093 33926 35496 14280 19804 9404 9675 11017 11024 33438 19127 30212 31837 34134 33439 19805 1071 1028 1070 10051 6053 4681 5571 34812 11266 16740 19806 1063 10381 1061 10995 30922 17839 6071 30923 26166 21006 19807 215 214 10765 10921 2502 29581 30463 34049 33946 27896 19808 6955 6872 8763 10511 7092 35083 28375 30045 32522 35084 19809 9337 10231 9607 10752 12279 26991 30613 13930 28230 16802 19810 9089 10420 9718 11091 32392 30429 32389 34951 22418 31306 19811 219 282 9769 10727 2534 12043 19113 23875 17146 11939 19812 223 9771 1266 10727 35091 15991 2545 29981 11938 17147 19813 8239 10994 8418 11070 32010 31784 35497 35290 35498 35499 19814 9589 10109 9292 10955 33152 28833 20516 22991 34199 31731 19815 9212 9862 9748 11196 14819 14818 14212 32409 16708 35209 19816 8831 7808 7459 7541 31929 34828 35500 31930 34829 30491 19817 322 10236 10705 10804 35501 21318 28428 26836 30604 27429 19818 8481 8480 8537 10404 35432 35502 21606 21610 21609 35433 19819 9452 10538 10400 10887 27199 26461 21353 27201 23463 22299 19820 8966 10629 10058 10970 34639 28065 28527 28528 15852 28068 19821 1527 10435 1176 10592 11386 35301 2399 17844 34172 17845 19822 9168 9176 7778 9802 29684 16838 35503 22587 18047 14044 19823 8500 8499 9060 11132 34187 35247 35504 31255 22407 33909 19824 9279 10140 9638 11103 23216 15433 22382 31760 27585 23577 19825 7841 7840 10181 10617 34601 28055 27811 24292 16060 34557 19826 7816 10974 7815 11137 31413 34122 35505 29801 35506 34065 19827 10010 10224 9439 10717 22827 14984 15982 16697 15585 23833 19828 869 711 9977 10482 4992 34711 13425 21570 24128 29879 19829 175 10429 1072 10747 34387 33176 2310 35507 33174 33175 19830 107 1538 1573 6380 2008 2011 2005 6656 27209 27210 19831 8980 10165 8677 11002 30725 32016 35508 25137 35079 30918 19832 222 10388 224 11106 30069 35509 2548 25060 35510 30070 19833 8216 10684 9575 10882 29888 12640 28347 35511 30223 31189 19834 8832 6254 6318 6312 35113 6440 32685 31996 6445 6443 19835 966 9857 10767 10879 23452 19842 35512 23453 25850 23454 19836 9775 10333 9221 10742 34101 26276 20396 15001 20579 33692 19837 9277 9596 10146 10997 31280 29732 31107 14040 27932 29733 19838 8418 10994 10348 11070 31784 20875 31782 35498 21048 35499 19839 784 872 737 10801 5120 5119 4867 20239 30883 33802 19840 8806 9826 10619 10984 27731 30280 35204 27732 27839 22669 19841 6292 1100 104 6383 28195 1996 6647 6648 6643 31493 19842 743 1272 1235 10068 5146 5150 3846 16812 14017 26921 19843 1251 443 1160 11165 3621 3654 3656 30064 31229 25670 19844 9739 9207 10361 11161 28983 28984 11820 26775 26774 25076 19845 8558 8557 8732 10696 11756 35513 34800 13554 28585 13555 19846 1577 175 1072 10747 1745 2310 2315 35514 33174 35507 19847 528 650 1160 11165 4079 4081 3655 26482 31229 33890 19848 9697 10730 10278 11096 27928 27131 27715 15411 27134 27136 19849 9822 10478 9233 11072 21548 31567 27340 26218 31867 26219 19850 8882 8092 10137 10880 35515 30356 23291 23295 23294 33712 19851 6932 9693 10648 10658 23791 17945 35516 23790 35356 23789 19852 830 9992 797 11020 29419 20833 5393 24419 35517 14012 19853 9403 10439 9546 10473 17084 32704 26355 20511 32084 21886 19854 9428 10382 9542 10521 19006 21200 33869 21731 26690 31370 19855 6985 6962 9692 10696 7296 25487 19791 35518 18173 28586 19856 9563 10190 9274 11015 25783 13226 27078 23394 19381 25520 19857 9837 10270 9464 10593 28398 14720 17170 18975 28644 26275 19858 6970 6982 10962 11158 7396 31338 35519 35520 31339 27280 19859 9359 10251 9887 11185 24074 25567 25566 30232 35116 23522 19860 8510 9133 10861 11034 34941 24317 35521 34943 24663 19440 19861 8835 10723 9870 11191 31266 34423 34991 31268 34994 27020 19862 7616 7572 32 1273 34031 35522 35523 34030 1715 34029 19863 1242 1509 1243 10010 5027 6234 4370 15486 18049 12792 19864 9023 8405 8652 11000 23191 29073 35524 23192 30865 15085 19865 9009 8652 10999 11000 35525 30866 35163 32996 35165 30865 19866 8652 8410 8801 10999 29072 29478 35526 30866 29479 20570 19867 9009 8652 7847 10999 35525 35527 35166 35163 35168 30866 19868 7816 9607 10974 11137 29799 31414 31413 29801 34065 26994 19869 8105 10043 8104 10797 25166 23421 30101 35528 12742 23600 19870 8691 8998 8467 9978 35339 32659 35529 16468 18704 35441 19871 669 729 10720 11170 4439 28598 32350 35530 28599 28509 19872 8559 10629 7926 10970 29676 33637 33635 29956 35531 28068 19873 201 6977 6914 9949 34555 7200 16673 17874 17876 21343 19874 8112 9030 8976 11002 32190 28062 35532 32191 28063 25489 19875 8535 10321 9130 10782 32140 14748 35533 32426 33620 22639 19876 8545 10446 8459 11119 18981 22489 35534 32207 22491 22490 19877 616 1147 613 10791 4506 4495 4504 35326 32062 34440 19878 969 970 976 9984 5047 2293 5972 13945 24002 25845 19879 9528 10575 9955 10993 26374 30094 29271 25998 33359 15570 19880 8112 8980 8677 11002 35535 35508 34563 32191 35079 25137 19881 8890 9119 7752 10598 35536 25300 34280 22500 14697 25301 19882 894 10377 696 11105 12196 32584 4917 32915 28732 32585 19883 848 10073 10466 11005 24177 28089 26241 35537 31897 32078 19884 6914 201 121 6977 16673 2057 7196 7200 7198 34555 19885 7796 7537 9108 7464 30853 30855 30854 35538 35539 35540 19886 10219 10488 9613 10758 29962 25705 22979 24872 30142 18946 19887 7513 7782 7691 8544 35402 22403 35404 35541 23103 23102 19888 7463 9108 7770 7608 35420 35542 35543 35424 32132 35422 19889 10036 10601 9246 10991 33338 17402 12720 13570 12898 25629 19890 1332 10613 9920 10930 30114 30115 30112 32672 32671 15482 19891 1007 10285 10071 10633 20342 14251 21237 35544 20453 14224 19892 6370 8786 6261 6364 22088 35477 6468 6473 6471 23717 19893 9410 10545 10191 10827 11592 14347 14346 23947 35545 31590 19894 7670 1543 45 10272 20772 1763 35546 18514 35547 25694 19895 9227 10111 9590 11023 32819 33150 17637 30817 30818 34534 19896 6310 6377 6358 10345 6794 6793 6791 26026 26041 26627 19897 8760 10230 8348 10645 16951 35548 35549 20371 32823 19773 19898 9583 10064 9223 10656 21611 16651 30885 29185 16653 16040 19899 8772 7713 7499 7648 26420 35550 35551 26422 35552 26421 19900 7802 8550 8773 9836 35553 31952 27094 19888 27097 20439 19901 9231 9563 10055 10852 27358 25781 32029 13546 29209 30290 19902 7817 10079 7819 10662 29119 30757 35554 25243 35555 28047 19903 9650 10700 9304 11159 21108 29425 29813 25959 17100 35556 19904 9344 10141 9905 11140 30432 28674 23711 23712 20792 28677 19905 8380 10012 10364 10963 32866 25924 32868 34738 33956 23326 19906 8245 9068 10038 10759 32442 12770 35557 32443 12873 16315 19907 9284 9758 9882 11051 20810 15213 23287 23912 34439 18287 19908 8870 8198 10026 11171 35406 31296 20225 35407 33886 28813 19909 1374 847 9961 10920 5358 29909 35312 34352 22962 35558 19910 8473 9785 8603 10994 33444 28579 33445 31662 35559 21936 19911 7560 7620 10477 10585 35560 22939 26110 28144 28146 32322 19912 8647 9146 10402 10563 35561 19069 17037 17038 15546 35562 19913 1539 1574 98 6350 1975 1969 1972 22800 6629 22799 19914 151 97 1574 6290 1965 1968 1971 33098 24167 6626 19915 1322 1324 881 10222 5036 4376 5739 14124 34794 14125 19916 8453 8760 8348 10645 21091 35549 35563 21093 32823 20371 19917 9016 8655 8541 9854 29749 26298 35564 16663 25513 20047 19918 8691 8998 9978 10684 35339 35441 16468 13683 16470 32661 19919 9275 10912 10125 11182 25549 24309 30330 30239 16874 24312 19920 17 164 7547 1178 1655 21616 35565 1650 13618 1657 19921 519 1266 9771 10731 2556 15991 35566 35567 20785 20784 19922 8244 10365 8243 11190 26262 33754 34897 32244 18283 29335 19923 7710 10518 9591 10861 32702 14518 34644 32703 34466 26052 19924 6387 204 112 6301 35292 2028 6671 6672 6667 34528 19925 888 1121 663 10065 4756 4753 4754 34205 35086 27846 19926 913 1472 914 9997 5853 5852 5849 28921 15397 25075 19927 1511 115 6991 6906 2033 7178 21309 25046 7182 7180 19928 9055 10153 8639 11147 15942 34874 35568 35569 35570 29394 19929 8509 8517 8518 10940 35571 20711 31507 31509 20713 18881 19930 9423 10153 9854 11147 28380 15944 15882 17078 16665 29394 19931 1257 10881 9573 11050 25571 25572 22184 33478 26022 34299 19932 9174 6372 6270 7751 28424 6507 35572 28423 35573 28422 19933 7661 7721 7714 10338 19948 29588 35574 19947 29589 19946 19934 266 10032 1189 10790 22344 35575 2759 22345 32114 13434 19935 1446 1413 906 9915 4146 5416 5827 19036 29480 27432 19936 9406 9925 10762 11144 20852 17435 32131 20854 32417 18226 19937 231 1295 229 10256 2585 2584 2582 26411 16313 14139 19938 9745 9221 10333 10742 18686 26276 34201 14857 33692 20579 19939 8504 8631 7895 10231 33552 30933 33551 20422 30989 25748 19940 736 9577 10784 10898 28418 26376 29870 34779 33971 22747 19941 6310 90 6361 1228 6605 6601 6606 26025 32420 1940 19942 8135 8864 9745 10749 35576 18309 35577 30830 18912 27038 19943 1221 1520 924 10499 2434 5598 2278 16138 33570 29134 19944 954 1297 861 10676 4210 5674 5672 34632 21072 13505 19945 8202 8195 10166 10621 35578 12079 13788 12522 12080 11850 19946 495 1129 486 10762 3871 3860 3869 32416 17392 33989 19947 9490 9855 9671 10539 28571 31635 26348 23809 30734 25523 19948 1548 10483 204 10688 34566 34529 2465 34568 35579 33587 19949 8717 6877 6896 8732 35580 7112 33486 33485 31404 35581 19950 9217 10108 9653 10890 26663 16893 21419 14486 18643 32699 19951 7483 7618 7533 8702 35582 20214 35583 35584 16795 35585 19952 769 9971 915 10578 23682 16235 5266 24836 16237 16239 19953 8964 8484 10040 10950 35586 35587 23628 35588 23189 32577 19954 9396 10248 9983 10718 27752 24340 31730 30146 28726 35479 19955 9944 10335 9489 11026 19018 22738 16668 33298 33210 33212 19956 9568 10506 10096 10844 26381 32353 17833 19000 18306 31357 19957 1220 9919 588 11154 21993 23378 4096 34218 23309 23380 19958 6989 6979 6987 9836 7390 7381 7329 24464 22140 18599 19959 9119 10598 8457 11152 25301 30025 35589 34977 30024 29298 19960 9746 10638 8212 10821 29249 29248 29250 24306 35590 24461 19961 9066 9036 7849 10745 21171 35591 14003 12421 14005 20459 19962 1237 899 9773 10739 5790 16184 13451 13454 13456 12980 19963 1528 1212 1211 10427 5928 2244 2373 17885 25455 18790 19964 7809 6944 6884 6910 24864 7140 34906 25504 7145 7147 19965 9463 10659 9841 11020 34813 14275 24770 13712 24294 23817 19966 10075 10582 9463 10659 15955 21196 21783 34693 34813 30404 19967 8135 9745 8133 10742 35577 14855 35592 30828 11903 14857 19968 7905 10629 9891 11013 31701 26939 34880 31702 17530 29216 19969 9904 10262 8693 10891 16421 12937 12800 31583 35593 32129 19970 8135 8136 8137 10749 30829 28164 35594 30830 28165 19244 19971 8493 10664 9820 10878 35351 24498 24010 24011 23566 32666 19972 7515 7643 8767 7761 35471 31687 35470 35595 31986 31987 19973 8756 9162 7788 10524 31186 35596 27073 27075 27074 31187 19974 8351 8889 7874 10265 33422 34219 33193 29266 27270 13208 19975 8411 8852 8987 10266 34220 33196 30587 26293 24535 27273 19976 884 9849 1346 11156 33240 29319 5750 34474 35597 33852 19977 598 10134 10651 10961 35272 31779 33699 32257 23957 31651 19978 8062 8063 8064 10238 35598 24400 17628 13786 14693 22534 19979 8020 8016 9669 10848 34700 34701 18827 35599 23478 18588 19980 117 203 6904 6934 2041 33937 7186 7184 7188 25770 19981 7650 9660 7721 11166 31723 20749 35600 34695 33720 21819 19982 6329 6380 6337 10375 6832 6819 6677 21627 23368 27212 19983 10421 10840 9268 10926 30969 33694 31326 30982 28372 31538 19984 9470 9675 10504 11024 27918 27919 18090 33159 31838 33439 19985 6360 6268 8791 6311 6499 35194 26730 6501 33059 6496 19986 8400 8399 8506 10544 16521 18889 35601 16523 18888 14363 19987 6903 6871 8763 6955 7088 34917 26493 7095 28375 7093 19988 9953 10659 9263 10778 14274 26340 18681 18682 14102 22198 19989 8330 8181 7960 10262 13032 28390 35602 12550 28391 13301 19990 9417 10357 10051 10773 18394 11250 25544 18792 35182 34751 19991 9256 10569 10143 11042 22923 28953 28220 17367 23908 21304 19992 6941 165 141 6918 14070 2137 7256 7260 7258 32971 19993 9290 10087 9564 10775 16786 23982 17995 16788 19176 16374 19994 7915 7911 7910 10269 35603 33714 28453 28456 28457 27492 19995 10084 9361 10207 10904 23364 21959 16686 16642 16688 35111 19996 557 555 812 10679 3975 4215 4214 17299 24867 24381 19997 9425 10515 9559 10590 17625 27925 26290 17889 26506 31981 19998 889 10155 10103 10949 32473 15015 32472 33643 28994 27500 19999 8329 9801 8562 10789 11767 15664 35604 20158 13279 15780 20000 9607 10231 9251 11137 26991 20128 28529 26994 25187 23131 20001 8809 8997 8952 11149 35605 35178 30553 30668 30815 27558 20002 8043 8809 8807 11149 35606 34640 35298 22377 34336 30668 20003 551 1312 448 11148 3681 3680 3677 34168 30955 31381 20004 450 445 448 11148 3662 3642 3663 27976 30955 30237 20005 85 1224 6381 6309 1920 29965 6586 6590 6591 29933 20006 1128 1059 701 9953 4944 4935 4945 16451 26981 14595 20007 8207 8375 8376 10271 33822 32225 35607 25706 32226 31032 20008 6267 7788 6311 6355 34964 30383 6495 6492 6497 29061 20009 7668 7696 7700 10770 33282 35608 33861 31455 33862 23012 20010 9047 8431 8423 11113 30311 35609 30910 16445 30912 30312 20011 8515 9075 8514 10044 35610 29473 33983 18628 33223 15051 20012 8929 8290 8289 10364 35611 34178 12698 12701 12703 31680 20013 1032 784 9674 10801 5340 17762 34066 23321 20238 20239 20014 8170 9880 9065 11128 35612 17481 35613 35614 35615 34291 20015 8528 9117 8527 10296 35616 31486 35617 23638 31487 28841 20016 9659 10603 9294 11067 28357 21165 31064 28359 22574 19908 20017 8136 8851 9775 10742 35618 15000 19241 19561 15001 11993 20018 6977 6976 6979 9949 7289 7379 7388 21343 19941 20968 20019 9604 10862 8140 11010 26790 32299 29029 29201 34425 28060 20020 138 185 6947 1225 2130 14161 7249 2125 14160 2132 20021 9585 10115 9240 11097 25371 32252 26545 19179 28222 29311 20022 1411 1449 941 10455 5945 5939 5941 12708 22512 12031 20023 9249 9575 10061 11048 30838 28779 30839 33029 28300 28780 20024 8212 9746 8271 11104 29250 31558 35619 35620 31444 24957 20025 499 498 9747 11103 3922 33261 13702 35621 34196 34713 20026 7770 7539 7462 7608 32133 35622 35623 32132 35624 32134 20027 10135 10421 9268 10926 16435 31326 28232 28373 28372 30982 20028 963 1425 10276 11185 2219 29907 26435 25400 24307 29908 20029 9320 10467 9671 10553 23940 23936 31143 12491 21140 19108 20030 9232 10035 9988 10604 12714 24475 16001 28981 17087 13909 20031 9962 10269 7911 11004 25447 27492 26654 31430 35625 27058 20032 381 380 375 10569 3314 3313 3315 29469 21303 16205 20033 8956 8631 9096 10752 35626 25749 17247 17249 13931 25750 20034 9863 10178 9259 11188 26003 33998 33609 35044 32092 35627 20035 9259 10178 9890 11188 33998 29739 34000 32092 24597 35627 20036 10260 9442 10376 10574 22203 21701 33540 22205 28401 17245 20037 6331 6300 6320 10261 6579 6740 6743 25690 30875 30594 20038 9223 10063 9583 10656 24221 33248 30885 16653 29185 31992 20039 8387 8587 8227 10341 35628 27779 32549 18651 20261 27780 20040 1033 1478 10583 11108 4027 33645 33078 33072 32579 25268 20041 9475 10571 9627 10863 32434 19819 34090 25133 31527 32437 20042 316 10707 9572 10799 35280 34059 16107 17309 15322 34091 20043 7721 7650 7719 9660 35600 31720 34077 20749 31724 31723 20044 169 9832 7550 10499 33353 32648 33352 34550 34939 34551 20045 8906 8019 10491 10996 35629 22665 23997 33849 18493 22600 20046 394 1066 1226 10305 3407 3411 3400 19347 12214 11428 20047 8528 10296 8527 10602 23638 31487 35617 23639 31422 19801 20048 7959 8180 8179 10757 35630 29628 32895 28288 23889 29629 20049 1357 10307 522 11075 19757 18494 3161 19758 23028 19759 20050 1099 166 7545 10401 1729 33428 35631 22172 33430 32927 20051 6893 9082 6886 6950 33170 34958 7153 7155 7148 30879 20052 9451 10509 9970 11129 15811 20467 30935 34195 20822 31116 20053 6299 100 1232 6348 6631 1980 21326 6636 21024 6635 20054 216 518 218 11127 2520 2519 2518 29624 25822 32879 20055 8885 9921 9066 10708 22123 13457 35632 29524 19805 19807 20056 8569 9627 7779 11135 21474 34781 35633 35282 34784 32889 20057 8572 10571 10225 11197 32433 33311 35634 32440 29280 32746 20058 246 9895 242 10763 15494 35635 2639 15725 35636 15726 20059 8061 8060 8059 10634 34186 29947 35637 24489 30870 30869 20060 423 1153 9863 10722 3555 35042 24886 24884 24885 35638 20061 8896 9870 8835 10723 34661 34991 35639 29046 31266 34423 20062 8964 10950 10040 11073 35588 23189 23628 23629 19351 22061 20063 6863 8773 7772 10253 35640 35641 35642 35643 11450 29330 20064 867 1429 1264 11140 5694 3146 4451 24628 24630 28676 20065 738 739 788 10920 5092 5125 5124 17153 27528 32079 20066 7794 6890 9107 10225 35644 35645 35646 24590 35647 35648 20067 8090 9571 10766 10880 29697 29701 29699 35048 33713 27259 20068 7649 7697 10530 10818 35649 31250 35650 35651 32872 32871 20069 7674 7681 9627 11135 35652 34782 31525 32888 32889 34783 20070 6296 9673 6386 10831 30040 31862 6721 35220 35653 34307 20071 6294 9635 6365 10663 29102 32925 6712 34854 22364 16955 20072 9870 10723 9259 11191 34423 30705 33613 34994 30707 27020 20073 7581 1099 7545 10401 22170 35631 35654 22171 33430 22172 20074 9016 9055 8639 11147 35655 35568 35656 16664 35570 35569 20075 699 9953 1059 10769 18135 14595 4934 24842 14596 13587 20076 9263 10106 9567 10778 27026 27046 17572 14102 17573 24378 20077 8205 9807 8741 11084 26759 25462 35657 35379 19680 26223 20078 9106 10225 8572 10571 33356 35634 35658 33355 32433 33311 20079 1031 527 1416 10346 4046 4073 4072 25309 12391 34244 20080 9069 9742 9088 10759 15735 17411 35659 12764 12807 16266 20081 6361 190 1182 10573 32421 1939 35660 34446 33333 34445 20082 9561 9290 10173 11044 22852 31014 33448 28838 21898 28839 20083 7867 9987 7866 10701 12207 17159 35661 12943 15197 15517 20084 958 959 1469 9676 2388 5964 5963 34021 16578 25128 20085 7783 6374 6272 9141 34113 6515 35662 34112 35663 34111 20086 9249 9934 9575 11048 29349 15203 30838 33029 28780 31478 20087 1157 493 494 10517 3902 3892 3903 31627 27431 34137 20088 1273 9996 932 10423 34032 21256 2221 34916 17857 21258 20089 9102 9045 9740 11086 35664 12810 34478 33379 15746 15745 20090 7668 7700 59 1253 33861 35665 35219 33000 1819 33860 20091 6997 9098 6887 6893 32334 34531 7157 7159 7152 29807 20092 9269 9870 9750 11025 33616 33614 33617 35666 16328 35667 20093 6952 9819 6895 10908 27683 33702 7291 35668 35669 26619 20094 8798 10495 9815 11091 34864 14586 23205 23207 12218 22419 20095 8481 10785 10281 10973 24278 26057 35670 23995 26308 25615 20096 9435 9511 10412 11119 35097 25569 35031 25206 33147 33940 20097 10526 10675 9495 10951 27886 24938 29008 29010 29009 33723 20098 8548 10356 8624 10732 19768 29892 35671 19769 29893 18985 20099 9406 10762 9655 11144 32131 11410 31959 20854 19271 32417 20100 10526 10833 841 10951 32214 29196 35672 29010 29198 29199 20101 513 514 512 10287 3998 3997 3597 30081 22589 32049 20102 9981 10377 9309 11105 12003 29139 21119 21538 22291 32585 20103 8681 10024 8888 10775 33484 18472 35673 29381 27249 27251 20104 1504 637 1491 10150 4623 4624 4626 11346 31640 13185 20105 67 1262 7683 7727 1851 31160 35674 35675 31161 31162 20106 9538 10237 10016 11028 30320 34350 14631 21111 17609 14373 20107 6901 145 6939 1199 7268 7270 7272 29236 29218 2153 20108 9013 10002 8668 11151 29327 15376 35676 35677 19420 19421 20109 904 707 10393 11036 4967 12779 34980 35678 33684 31514 20110 9307 10379 9738 10644 16099 30578 31938 15618 32459 16100 20111 1600 1046 1543 11017 6059 6060 2458 15629 15628 35679 20112 9449 10463 10021 10871 20020 29133 29850 30084 11583 29914 20113 9422 10586 10216 11198 30584 16127 32885 30586 27968 24245 20114 8733 8302 8663 9959 34646 35680 27983 34038 29045 15335 20115 751 9829 749 11139 21685 33199 5171 35442 34393 26871 20116 7898 9922 10270 10832 21853 21852 21851 35681 15138 31151 20117 403 10978 9988 11125 35682 12509 32253 29791 32725 34595 20118 369 10394 10059 11178 35010 16301 34459 34460 23619 20245 20119 9682 9359 10276 10841 30231 31263 26371 19718 30596 22265 20120 9248 9712 10476 10902 18725 22858 12322 23602 16616 12414 20121 9090 8171 9086 10796 29237 35683 29554 26974 20521 29238 20122 8970 8171 7958 10796 35684 34099 33679 33094 33951 29238 20123 9415 10310 9544 10556 20842 17221 33542 19984 32572 35685 20124 9224 10137 10756 10944 30655 23509 26011 21383 29943 30360 20125 9325 10239 9612 11134 28711 25378 29927 28712 29023 23532 20126 8985 8162 9814 11092 35686 29221 27164 35382 30808 31663 20127 7869 9755 8912 10754 13745 22876 35687 11391 31489 13746 20128 8573 9559 8567 10870 32942 33554 34618 35688 34229 32613 20129 9483 10444 9608 10808 29305 15561 34088 29340 13184 15562 20130 982 10721 9615 10837 33117 31555 33116 34589 30688 31308 20131 759 758 756 10647 5205 5204 5206 31274 28533 12349 20132 6861 8796 7804 10356 35689 35690 35691 35692 35024 11558 20133 9263 9959 10582 10659 15334 15336 13145 26340 30404 33252 20134 523 450 574 10357 3665 3688 3687 17059 23550 24303 20135 8647 8646 9146 10563 35693 16916 35561 17038 35562 16589 20136 8585 8584 8335 10803 35694 35269 34119 32289 33899 27747 20137 9814 10554 9279 11092 24707 23356 23217 30808 22530 26798 20138 7811 8602 10074 11099 35695 22528 35696 34841 22050 35697 20139 7982 8075 8723 9831 34858 34599 27114 15244 26800 17660 20140 6296 8827 6258 6384 30035 35110 6456 6461 6459 31291 20141 6952 6954 6951 9819 7443 7442 7290 27683 29177 29087 20142 9415 10530 10085 10714 18070 25291 15200 19969 21271 32870 20143 9628 9970 9451 10509 25053 30935 15808 15812 15811 20467 20144 6285 6322 8928 7806 6564 31570 35698 35699 32359 32360 20145 1489 10551 9901 11164 35239 17366 35238 35700 33960 32722 20146 8824 7770 8525 9964 32900 34048 35701 31336 23318 34490 20147 9299 9707 10078 10489 17603 24398 24437 31159 31989 25259 20148 8330 8643 8337 9792 31854 33231 30260 30261 18711 16517 20149 8429 9089 9718 11091 35060 32389 20531 34461 22418 34951 20150 9541 10609 9433 10712 21010 22034 22033 16694 16950 29970 20151 9157 8725 9137 10127 34250 15282 35702 34251 16974 16973 20152 1438 737 10159 10886 4251 32984 24478 30660 30661 30884 20153 8721 10656 8396 10868 30138 32041 35703 27506 32035 30139 20154 9306 10017 9557 10846 18247 20103 31699 25792 28910 21903 20155 9566 10772 9945 11053 26478 20354 33242 33380 33105 33846 20156 8425 8440 8257 10556 35704 24890 28556 28557 20134 24891 20157 9410 10191 9910 10827 14346 12694 19267 23947 18721 35545 20158 7533 7596 7582 9907 16285 26349 35705 16284 24087 16283 20159 8602 8828 7811 10074 35706 35707 35695 22528 35696 22045 20160 479 477 478 11015 3822 3817 3823 28070 22131 32126 20161 7896 10084 7889 10843 24784 21319 35708 35184 21321 16020 20162 6297 6354 6358 10378 6724 6727 6726 35186 26042 28156 20163 1449 1037 350 10455 3189 3188 3190 12031 22511 22324 20164 326 1296 618 10672 3070 3069 3068 21561 22764 23209 20165 1267 10059 255 10912 27659 20501 2701 25801 20590 18181 20166 1380 1278 890 11138 4546 4941 5770 30159 29832 33514 20167 6992 6862 6936 7772 7057 7052 7059 11445 11556 34989 20168 1527 1089 191 10435 2397 2396 2398 11386 29634 11384 20169 9957 10104 9597 10196 21755 29735 26548 30987 30986 12962 20170 9845 10289 9346 11054 18819 30077 28748 24735 22641 30219 20171 9544 10310 9431 10556 17221 15347 17744 32572 20133 35685 20172 478 9563 10852 11083 23395 30290 30288 22133 33323 23396 20173 8612 7908 9038 11116 30795 31314 35709 30796 24907 26517 20174 1524 710 10172 10438 4674 11988 16997 17504 11986 11987 20175 8003 8877 8749 10566 19825 35710 23479 12914 20860 14788 20176 7755 8753 7724 10714 35711 34395 33836 33839 33840 34396 20177 7786 6883 7809 10205 35712 35713 35714 30599 24866 35715 20178 9377 10298 9741 11186 28205 18196 27907 33293 33112 29423 20179 9820 10664 9270 10878 24498 29790 22104 23566 20072 32666 20180 957 963 1241 9682 5667 2216 2387 28695 23121 25398 20181 9917 10632 9422 11198 32105 32268 21478 31272 30586 29161 20182 8572 8571 10571 10863 35716 33537 32433 32436 32437 33538 20183 9574 10405 9267 11035 32024 21042 31993 31994 22584 20193 20184 9748 9862 9241 11196 14818 14629 16933 16708 16934 35209 20185 8880 10783 9576 10926 29869 26105 25884 27693 17850 33942 20186 1303 130 6960 10174 2093 7223 35717 33926 34729 35496 20187 9670 9413 10594 11008 19794 15699 28877 22397 24790 14844 20188 9578 10047 9695 10588 21740 24042 31222 22795 16936 14332 20189 9696 10048 9579 10589 20162 32550 31765 31887 28098 31888 20190 9889 10984 9616 10985 24607 22667 24702 27999 17556 35718 20191 650 749 1160 10410 4689 4691 4081 30422 31228 33200 20192 994 995 9684 10969 4202 17231 31145 24731 13929 35100 20193 7790 8846 8560 10600 31717 34316 35719 31718 13385 27050 20194 7724 8753 7506 7694 34395 35720 35721 34394 35722 32650 20195 9462 10003 9838 10601 23695 17741 17167 31609 19324 25594 20196 9591 10217 9401 10544 15045 14505 28123 24388 22952 30416 20197 9056 10235 8309 10976 35073 31577 35723 34268 31579 31580 20198 7812 7814 7813 9685 35724 26060 34673 21384 19088 32128 20199 9841 9909 9463 11020 13701 21067 24770 24294 13712 29751 20200 1349 774 793 10510 5291 5292 5294 32679 24350 27611 20201 7591 9734 7590 10800 17212 29865 35725 23460 29866 29788 20202 7475 7752 7558 7592 35726 21282 35727 35728 21281 14560 20203 10570 10719 9558 11174 28578 29405 24602 30323 31077 16989 20204 10409 10979 9473 11030 35460 32535 19424 31132 34861 34860 20205 9055 9016 8541 9854 35655 35564 33179 15597 25513 16663 20206 1338 1183 253 10323 2705 2704 2691 22558 25091 28279 20207 7639 10590 7678 11046 31911 32963 35729 31974 35439 31975 20208 8926 8480 10156 10404 35730 35731 16449 16532 17827 35433 20209 8508 10561 10218 10940 35093 16142 30570 30572 30571 31128 20210 7586 7587 7584 10998 35732 35733 25458 25460 24713 35734 20211 750 751 749 11139 5172 5171 5022 26870 34393 35442 20212 838 1072 1071 11019 5573 2311 5572 13770 30227 33177 20213 8914 8205 8741 11084 32941 35657 35735 21551 19680 35379 20214 9568 10644 10227 11070 30876 33339 28569 28902 16255 35289 20215 7843 7845 9009 10704 35736 34535 35223 25587 32995 33471 20216 6872 6921 7781 10511 7097 20255 35081 35084 23423 23425 20217 705 1001 826 10625 4962 4966 4965 26264 18053 16093 20218 776 10170 773 10960 31100 27332 5286 35737 22892 27334 20219 1367 633 9800 10700 3736 25033 34826 35738 31773 35739 20220 157 1225 137 10276 2128 2126 2121 26370 35740 18318 20221 8489 8883 10164 10616 35741 29231 13237 13064 15926 31750 20222 1268 10302 289 10669 24212 24332 2856 33327 35742 14710 20223 8427 8426 8284 11134 34306 35743 35418 33991 33881 31094 20224 8281 8426 9032 11134 35744 31093 29075 29022 30326 31094 20225 10525 9495 10675 10951 25929 24938 27701 33724 33723 29009 20226 9221 9893 9775 10822 26277 32741 20396 26891 35745 15605 20227 7847 8651 10617 10999 35746 13890 35747 35168 13891 13687 20228 680 10195 1423 10939 21418 31397 4829 21505 31399 14931 20229 10583 10784 1468 11111 35748 34510 33741 35749 35750 26377 20230 6314 6322 6324 10512 6565 6812 6811 23970 24018 31571 20231 9913 10309 9492 11007 16323 22883 18147 12864 20608 26002 20232 6924 6925 6923 11176 7345 7398 7361 35364 35365 35210 20233 9676 6965 10687 10696 22870 35751 18110 19166 35752 22871 20234 1026 882 880 11090 5735 5734 5736 35032 34018 17127 20235 9117 8728 7784 10268 35753 31097 32601 28842 30437 30698 20236 6397 6319 6388 9664 6758 6742 6822 32533 35754 29429 20237 1071 1070 838 11019 5571 4731 5572 30227 13770 13769 20238 9311 10079 9607 10974 29938 31411 31984 22946 31414 29120 20239 8487 8486 10362 11073 35755 27383 31788 31789 30274 20298 20240 8061 8154 8954 10634 35756 30397 24487 24489 20472 30399 20241 594 601 600 11170 4408 4407 4403 30939 33460 31038 20242 251 10125 1077 10635 33780 22612 2694 30495 22614 21410 20243 1320 1276 10543 11173 4001 34806 23743 22026 23744 35183 20244 855 1274 10475 10800 5650 35757 19408 29351 29352 35758 20245 8557 8626 7750 9692 32019 30831 35759 16847 24406 20079 20246 9793 10456 9430 10579 18778 17878 29527 18779 17881 13923 20247 8432 8733 9084 10582 35760 35058 23702 21195 23704 27985 20248 8218 7927 7919 11133 35319 31874 35761 26706 31875 31872 20249 8768 7919 7914 11133 35762 34762 35763 35764 35410 31875 20250 9964 10609 9541 10712 21634 21010 18698 29969 16694 29970 20251 1124 7546 28 10226 19662 35765 1699 19871 35038 19869 20252 8985 8101 8162 11092 34281 35766 35686 35382 31663 33279 20253 9941 10337 9366 10834 26985 19998 23038 21366 19999 19289 20254 7825 10095 7827 10916 25338 35767 35768 35190 35769 20563 20255 7599 7601 7598 10201 31790 28227 35461 19309 28228 22143 20256 1197 1434 1393 10507 6062 5810 5457 22289 22721 24007 20257 6386 9673 10319 10831 31862 29082 31863 35653 31113 34307 20258 9745 10742 8135 10749 14857 30828 35577 18912 30830 19562 20259 613 10061 10791 11078 35325 30143 32062 32063 23001 29708 20260 9704 10131 9629 10941 22477 11526 30073 21337 17958 22478 20261 8383 8276 8333 11130 35770 34749 35771 31857 35411 33936 20262 8632 8179 8334 11131 35772 34750 34776 34290 35412 30683 20263 8402 8907 8276 11130 34883 33935 35773 25955 33936 32779 20264 7959 8179 7950 11131 32895 35774 32711 34707 26662 30683 20265 1454 9819 1158 10807 13330 31933 2339 15332 25118 15333 20266 7612 28 7546 10226 35053 35765 35775 16602 19869 35038 20267 9101 8803 9103 9693 35776 30919 34484 15474 25741 24595 20268 639 1391 9804 11120 4634 25157 33871 35777 31852 35381 20269 6292 105 167 6341 6646 2000 28194 6651 29395 6650 20270 7929 10539 9846 11115 26186 26185 24156 35778 30737 30736 20271 9685 10743 7813 11099 17448 19090 19088 21009 34842 34653 20272 9278 10239 9940 11032 33271 24429 20685 12071 20689 29811 20273 214 9570 10765 10921 27852 24269 29581 27896 33946 27589 20274 659 722 969 10941 4299 4736 4735 28661 13379 26287 20275 9201 8702 7767 9907 35248 34414 33257 27523 15635 16794 20276 1040 1497 1041 9702 2305 6055 5565 17020 21567 28720 20277 7792 9188 8746 10935 35779 35780 30194 21967 30196 35781 20278 8114 8113 8115 10644 32445 35782 29521 33419 35783 22288 20279 569 1459 9768 10777 4283 18567 14061 11467 14063 23288 20280 8629 9828 8800 10443 33877 34615 35784 32099 35130 31221 20281 9112 10396 9118 10643 35785 27282 35786 35787 18887 27283 20282 9203 9631 10334 10525 22321 22322 22038 13727 32999 23987 20283 402 9988 403 10978 19904 32253 3392 19905 35682 12509 20284 7544 7560 9664 10585 35788 26109 34508 35789 28145 28144 20285 9696 10589 9218 11086 31887 25156 25785 15744 25789 20121 20286 7574 9996 10347 11183 25457 23283 25067 35790 16063 30739 20287 9862 10179 9212 11193 29582 35208 14819 30931 29766 14283 20288 9677 10710 10361 11161 22021 32845 30202 20479 26774 33053 20289 9383 10197 10039 11076 13190 28633 28632 29049 18486 28898 20290 7726 181 64 7657 19594 1839 35791 19593 35792 19595 20291 9031 9159 9161 10154 34103 35793 18465 16570 19509 34102 20292 1219 1220 588 11154 4381 4096 4377 33505 23309 34218 20293 609 10192 607 10842 24935 24636 4473 33364 24637 15775 20294 9169 9677 8577 11161 33051 28382 35794 33054 17937 20479 20295 1292 10029 632 10893 19376 15327 3961 19464 13614 14307 20296 8215 8214 8216 11048 34124 35795 28345 31477 31638 34125 20297 8354 9869 8356 11102 18205 35796 35797 35798 35263 33764 20298 1256 9867 1375 11100 33023 29079 5334 28820 35799 33024 20299 1375 11100 9867 11101 35799 33024 29079 25181 29080 35800 20300 929 1568 1567 10725 5913 5917 5916 20267 26204 20268 20301 7722 9675 7731 10189 24220 19125 35801 35802 31004 34961 20302 8471 9788 8642 11060 20762 16158 35236 35352 16458 16457 20303 1275 10461 10045 11066 19385 19386 16119 35803 20126 32911 20304 890 1399 1380 9834 5768 5221 5770 12338 32122 26724 20305 8958 8119 9051 10662 35804 31632 35007 21129 12059 31634 20306 7547 164 17 7606 21616 1655 35565 20643 35805 23162 20307 1514 7559 7544 10585 35193 35806 35807 34263 35789 31402 20308 8456 9128 8879 10447 34116 35808 33660 33461 31279 33384 20309 8395 10075 8432 10946 28607 24052 35809 30862 21447 21785 20310 792 1024 10112 10849 5373 32118 22274 35810 27792 35811 20311 8497 9795 10619 10812 23572 19184 23574 34936 35812 28538 20312 245 10146 243 11071 23015 27957 2652 33027 27959 27961 20313 7679 7677 7678 10590 35813 32961 35814 27204 32963 31980 20314 1389 1117 516 10839 4021 4020 4006 31805 35088 31806 20315 1556 1535 1121 10384 2182 5623 6141 25834 29529 35146 20316 9361 10206 10122 10904 24103 16963 14290 35111 17094 17096 20317 9358 10124 10208 10905 14846 15225 12546 35281 17809 17808 20318 9358 10120 10210 10905 14862 15224 12548 35281 17093 17092 20319 9906 10704 9009 11000 25588 32995 35164 33687 32996 31904 20320 8036 10135 8855 10926 32088 30395 35815 30981 33941 28373 20321 678 1423 10195 10898 4830 31397 21453 21454 21452 33970 20322 9425 10590 9933 11046 17889 17888 17890 14464 27862 31975 20323 122 1420 6894 6977 2061 17620 7201 7199 7203 20231 20324 7604 9975 7599 10897 32892 24117 35816 34449 24485 25050 20325 8823 8132 8130 10632 35075 35817 33049 29160 32558 12954 20326 7550 169 14 1507 33352 1638 35341 32646 1643 1645 20327 9910 10191 9500 10827 12694 27487 31499 18721 30769 35545 20328 931 1177 1530 10592 2253 5920 4996 20596 26362 20607 20329 6313 9842 6344 10971 28397 25870 6806 33963 30994 28330 20330 7531 8842 7476 7592 31121 35102 35818 34624 35103 33788 20331 9738 9805 9271 10845 33025 31976 34131 27400 13022 33292 20332 9860 10395 9473 10979 12580 32393 25855 12168 32535 12581 20333 7508 8858 7725 7641 35321 14025 35819 35324 14436 35323 20334 823 822 703 10473 4954 4948 4955 31075 25438 24422 20335 6940 6988 6933 10658 7432 7266 7430 34816 29501 28722 20336 9918 10014 9285 11182 23073 13267 12888 24776 31610 31415 20337 10638 10764 9494 10821 33464 30852 24457 24461 24460 31369 20338 6328 1538 108 6380 32115 2009 6659 6660 6655 27210 20339 9062 8170 9065 11128 35820 35613 29565 32800 35615 35614 20340 9059 8978 9062 11128 34607 35821 32799 32790 32800 33018 20341 738 730 731 10113 5086 4337 5087 17152 14513 13866 20342 8488 10589 9696 11086 34523 31887 21751 23579 15744 20121 20343 8992 8721 8975 10480 34222 31366 35822 29871 27256 27504 20344 215 10136 294 10921 30352 23270 2508 34049 23271 15666 20345 8157 10023 8109 10748 13591 19695 35823 22109 26671 22110 20346 9558 10719 1552 11068 29405 28576 25574 25123 30087 34182 20347 896 9932 897 10739 15096 11420 5787 21031 13030 15695 20348 8148 10328 9786 11064 35824 12177 34404 34821 33545 33574 20349 9666 10164 9856 10616 33889 25348 21997 30390 20943 15926 20350 9740 6946 10694 10695 22177 35825 30243 19015 35826 22178 20351 606 777 607 10842 4468 4467 4463 15773 24637 32526 20352 9881 10351 9264 11049 25218 19141 19742 35827 33665 33664 20353 9298 9639 10157 11104 24660 28713 30016 26862 26681 24958 20354 178 1586 7665 10180 1886 35134 32945 31785 32956 26144 20355 1288 7663 172 10515 34456 35828 1878 30841 33911 34458 20356 9452 10379 9584 11172 25475 26865 21354 31098 29109 30581 20357 7860 10204 7856 10813 23084 33682 35829 23087 35830 17920 20358 9332 10186 9764 11187 34378 24013 34379 33768 31546 31825 20359 9759 10186 9332 11187 16394 34378 15325 31824 33768 31825 20360 1506 193 1505 10011 2164 2408 2410 23626 21002 25307 20361 199 10343 1553 10344 31494 19522 2439 33226 19523 16769 20362 7546 1124 29 7615 19662 1698 35831 19661 35832 19660 20363 208 139 185 10255 2134 2129 2136 24812 17973 35833 20364 7540 8728 7478 7580 30694 35834 35835 30696 35836 30695 20365 7988 7987 7991 9968 35837 15769 18052 12948 14774 11964 20366 7941 10829 9784 11167 34954 28204 35011 35012 33082 32797 20367 9910 10369 9500 11122 25756 21400 31499 31501 31500 32327 20368 9392 9580 10325 11019 30823 28506 13499 13771 18111 35196 20369 6929 10011 10225 10744 31095 29279 31096 35216 28256 21077 20370 421 9957 419 10966 24726 34092 3532 33511 35838 24810 20371 9466 10653 10260 11034 19987 32951 34642 29003 19240 29004 20372 8171 8149 7958 11064 26073 35839 34099 32184 33681 32185 20373 7673 7674 7653 10863 31751 35840 35841 26403 25937 31526 20374 7660 7724 7755 7505 33837 33836 33838 35842 35843 35844 20375 6278 6379 8703 11077 6536 28262 34970 34971 28264 28263 20376 1514 1542 10 7559 1629 1627 1622 35193 35845 31401 20377 10167 9385 10194 11196 28602 30623 25321 18541 25019 34652 20378 513 10287 9805 11039 30081 25198 30080 33081 34319 32048 20379 8374 10626 10109 10955 33548 28835 33546 35846 31731 31521 20380 8365 8364 8366 10428 17033 35847 11773 12532 12534 17035 20381 9371 10112 10187 10655 15368 24825 16799 14835 33249 15369 20382 9372 10187 10112 10655 16395 24825 27791 22654 15369 33249 20383 8825 6306 6259 10459 21662 6463 35467 23047 35469 23048 20384 8392 9944 8288 10754 35233 13576 35848 35849 21545 21546 20385 9867 10399 9222 11100 16081 27806 23200 33024 31315 26937 20386 639 641 1391 11120 4632 4635 4634 35777 35381 34978 20387 8090 9571 10880 11110 29697 27259 35048 32196 27679 17967 20388 8583 9125 8767 10382 18167 31756 35850 19134 31755 19005 20389 1089 1141 9603 10755 2395 31999 13548 19079 19358 35851 20390 875 10054 1002 10844 35852 22844 5715 34260 35853 23037 20391 776 773 1123 10960 5286 5288 5287 35737 30788 22892 20392 8670 10157 8625 10809 21295 23696 35854 20573 22974 21296 20393 8285 8995 8183 9995 15604 18773 35855 13388 17828 13551 20394 9874 10670 1390 10909 18612 35856 35857 18324 35858 18613 20395 8071 8159 8907 10639 21529 35859 25535 15306 27825 21531 20396 315 1033 10583 10924 2541 33078 35137 35139 22103 34626 20397 10098 10811 9255 11102 21525 23661 30755 16538 33763 33770 20398 9968 9232 10203 10604 12947 12537 28848 11260 17088 28981 20399 9812 10875 9882 11051 24971 18273 13839 32828 34439 32484 20400 7603 7610 7550 10499 35860 35861 34937 34938 34939 34902 20401 8682 9699 8684 11001 16371 30134 35862 18691 35863 18692 20402 8990 8726 9632 11073 35059 30942 34926 35864 18930 30943 20403 8058 10083 8059 10888 35020 30951 35865 33562 30900 30953 20404 9780 10394 9478 10681 16682 13630 27222 33482 20430 31003 20405 8603 8473 8613 10425 33445 35866 22796 22596 22798 27954 20406 9300 9821 9640 10889 26284 29680 22984 15876 19677 22126 20407 10342 10401 9455 11090 28293 16608 25795 27499 11898 25331 20408 916 908 917 10983 5830 5834 5833 33973 35867 30754 20409 1024 10610 10112 10849 29322 30343 32118 35811 27792 25390 20410 7813 8958 8641 10743 19089 35037 35868 19090 19170 17449 20411 8641 8563 8602 10743 19180 22527 35869 19170 22529 17408 20412 9473 10642 10395 10992 19415 30881 32393 23821 30784 34390 20413 196 34 7548 1099 1718 34999 28040 1725 35001 1723 20414 9039 10246 10188 10933 26444 26443 16891 35870 14279 23281 20415 8587 8229 8227 10740 35871 24609 27779 27781 19926 24610 20416 7843 7844 7845 10704 33334 34840 35736 25587 33471 32560 20417 7912 7899 10220 10815 35872 23646 33595 32286 23078 23647 20418 8068 8066 8065 10237 33793 26133 35873 32668 13780 26134 20419 8587 8559 8328 10740 28998 35874 35875 27781 35876 29954 20420 9447 10443 9828 10785 29654 31221 18960 19123 19437 24920 20421 9141 6305 6271 9174 28185 6511 35877 31882 35878 31883 20422 1360 6981 130 10174 13804 7225 2098 14280 35496 13624 20423 6371 6386 6384 9673 6788 6723 6775 29083 31292 31862 20424 7735 7652 9144 10189 35879 14616 35366 35369 14619 14621 20425 8182 8847 8319 10437 35880 26227 22628 21830 16774 24337 20426 7574 7573 9996 11183 35881 27948 25457 35790 30739 30738 20427 8753 9187 10085 10714 35882 16389 32652 34396 21271 19968 20428 286 10409 9900 10788 24199 30646 34149 35883 30647 20870 20429 9292 10626 10259 10955 19864 26065 30166 34199 31472 31521 20430 1537 10278 1216 10730 32521 30889 6215 25256 31830 27131 20431 6861 7804 6916 10356 35691 35884 7048 35692 34722 35024 20432 398 393 397 10371 3404 3402 3405 32351 24559 31573 20433 8028 10219 8029 10817 21937 29963 35885 21482 24787 18269 20434 1140 9608 184 10998 31916 26750 2360 35307 26753 24712 20435 7499 7801 7713 8772 35886 27891 35550 35551 26420 27890 20436 7853 10171 7851 10927 33219 29374 35887 27343 29376 27751 20437 10478 10502 9233 11072 29051 26639 31567 26219 31867 25064 20438 10062 10473 823 11143 29746 31075 34097 35888 35889 21104 20439 9444 10612 9674 10801 16943 17364 30471 16945 20238 16820 20440 6982 6915 6956 9911 7394 7393 7395 28032 23758 34577 20441 6378 6372 6305 10277 6770 6513 6768 21250 26522 28425 20442 1371 10339 10871 10922 35890 26282 29913 29916 29917 32201 20443 6368 6369 6371 10297 6683 6786 6774 29839 26776 27443 20444 8933 10271 8457 11175 25737 32901 35891 25739 30026 24023 20445 8303 8243 8408 11190 35892 18282 34240 34241 14058 18283 20446 418 1013 1002 11012 3519 3527 3528 14741 21766 21765 20447 756 757 755 10666 5199 5198 4542 25560 26102 27390 20448 10082 10840 9595 11009 32570 30970 30476 33269 34143 33270 20449 1510 147 1506 6927 2166 2161 2168 23180 23625 7274 20450 7464 7796 7537 7602 35538 30853 35540 35893 31344 30483 20451 527 10346 10931 11080 34244 34248 34246 34894 35894 16710 20452 7649 7699 7697 10818 35895 33325 35649 35651 32871 33326 20453 7616 9996 1273 10423 33864 34032 34030 33866 34916 21258 20454 514 512 10287 11173 3997 22589 32049 31924 22590 22024 20455 8838 9962 7911 11004 35306 26654 35896 35897 35625 31430 20456 151 97 6290 6362 1965 6626 33098 28728 6627 6622 20457 7734 7646 7740 10072 35898 31757 34790 33109 26709 31759 20458 7899 7903 7898 10815 35899 28553 23645 23647 21854 28554 20459 747 10405 10709 11141 35900 33804 32376 32378 32380 32219 20460 8546 7807 9113 10313 32277 34757 35901 32278 34758 30208 20461 1164 9930 313 11162 12016 20825 2965 35902 29287 29289 20462 7814 9685 7812 10974 32128 21384 35724 26061 33801 17417 20463 9753 9871 9260 10604 22380 18219 12312 11360 14475 17086 20464 9315 9871 9753 10604 16257 22380 11358 11259 11360 17086 20465 9568 10425 9307 10644 22788 15615 30672 30876 15618 15620 20466 9044 8234 9059 10577 34302 35903 31648 12295 31645 19355 20467 8781 8531 9132 9924 31622 35904 30682 28623 18027 19659 20468 1455 1301 260 10919 2739 2738 2740 31506 17813 34174 20469 8754 7780 10085 10565 35905 23068 20357 20358 15199 23069 20470 9440 10247 9619 10931 30434 24049 20201 26171 26173 30042 20471 9335 10119 10185 10692 13112 26959 29660 16631 33084 15451 20472 9318 10186 10121 10693 13079 26957 13109 16632 15448 33083 20473 9354 10185 10119 10692 13677 26959 13121 16630 15451 33084 20474 9354 10121 10186 10693 13124 26957 28549 16629 33083 15448 20475 8708 7990 8807 10385 35906 34068 26918 26917 19081 32020 20476 8734 10082 8087 11009 27412 35907 35908 33268 35909 33269 20477 7759 7480 7532 11183 35910 35911 35912 35337 35913 35914 20478 9074 8580 8536 9779 33021 35915 35303 32831 20862 31225 20479 498 10517 9747 11103 33262 13898 33261 34713 34196 31628 20480 8819 9172 9697 10776 34844 31194 23027 29755 16702 35265 20481 9576 10481 9261 10783 25237 20401 31531 26105 19935 19516 20482 413 412 1320 9803 3493 3498 3497 14387 22022 26612 20483 9015 8490 9760 11168 35916 14105 34355 27316 33902 34156 20484 9163 7757 9164 11098 35917 35918 35919 32531 35920 35921 20485 9093 10449 9861 11169 33591 31052 33588 33833 34509 30834 20486 8315 9017 8228 10591 35160 35922 33953 13442 31581 14939 20487 8966 7926 10629 10970 34637 33637 34639 28528 28068 35531 20488 8756 9163 9162 11098 35923 32527 31186 27869 31188 32531 20489 6874 6899 8627 10533 7105 24402 35017 35019 25315 25316 20490 10374 10631 7575 11183 33929 33273 32465 20794 35924 30740 20491 9806 10473 9546 11113 34663 32084 16364 16368 16367 34519 20492 10105 10182 9286 10677 34371 14933 13081 14203 15028 32594 20493 9782 10425 9491 10491 16784 28037 31069 29184 30420 22664 20494 8799 8081 9047 11193 32733 27054 35925 32735 13716 26159 20495 6287 9140 9677 10828 28927 28018 28928 35926 20477 35927 20496 1560 10175 187 10531 21581 26540 2376 21582 25888 17276 20497 7845 7848 10214 10704 33470 11413 35928 33471 17459 17458 20498 8406 8787 8788 10516 33191 35929 28884 27355 18436 23496 20499 9371 9894 9772 10595 14169 32905 16800 15961 30317 14540 20500 9221 9775 10283 10822 20396 19242 20395 26891 35378 35745 20501 1362 1313 506 9974 3971 3926 3969 18144 12037 11573 20502 1391 819 639 9804 4636 4628 4634 25157 33871 23187 20503 1530 660 711 10482 4739 4737 4740 26363 29879 23446 20504 9489 10140 10990 11026 23614 14187 24550 33210 35930 33211 20505 371 11042 9838 11178 35931 15504 28995 28996 20246 35932 20506 9241 10182 10105 10677 30313 34371 14628 15685 14203 32594 20507 494 498 1157 10517 3909 3911 3903 27431 31627 33262 20508 7718 10321 7708 11181 32969 28876 32967 33621 35933 27592 20509 976 970 172 10515 2293 2295 2294 24003 33911 23582 20510 9882 10875 9284 11051 18273 22526 23287 34439 23912 32484 20511 10167 10249 9241 11031 25435 33857 18540 18539 16932 26452 20512 6278 6304 6379 11077 6539 6541 6536 34971 28263 35126 20513 8322 9058 8459 10453 35934 26715 34930 24094 22610 26716 20514 7766 9102 9045 9740 35935 35664 31216 25507 12810 34478 20515 1265 1269 10718 10982 5604 35936 32480 22030 32481 35937 20516 310 10236 322 10804 27187 35501 2988 30460 26836 27429 20517 9262 10183 10118 10697 15771 26955 13532 16006 14886 32324 20518 1521 202 9675 11017 2454 25980 34588 34193 19127 15630 20519 236 10111 364 10774 35938 16252 2620 35939 34997 32820 20520 7847 10617 9906 10999 35747 16059 35167 35168 33686 13891 20521 6326 6314 6325 9843 6561 6813 6815 28889 25812 23966 20522 942 168 1477 9709 2273 2272 2271 14470 13025 16835 20523 8602 10743 10074 11099 22529 17409 22528 35697 22050 34653 20524 8055 10726 9990 10888 11535 11970 11969 35940 15358 24901 20525 7765 9967 8781 10897 34824 28622 35941 35942 28624 27389 20526 9772 9894 9392 10595 32905 11966 16884 30317 14935 14540 20527 7577 7532 7480 11183 35943 35911 35944 35945 35914 35913 20528 1202 123 6894 6975 2070 7202 34441 35283 7206 7204 20529 848 10466 651 11005 26241 30264 4694 35537 34965 31897 20530 8222 10513 8220 10874 34008 26125 35946 25652 33915 29574 20531 9175 8317 8454 10067 35274 35947 21445 13289 14156 30459 20532 6976 6894 6974 9969 7287 7286 7288 20434 25229 20433 20533 167 106 1573 6315 2001 2004 2007 32117 17786 6653 20534 9622 10006 9694 10733 26235 11805 33390 31792 22417 14557 20535 227 228 229 10673 2567 2573 2572 28922 16314 17431 20536 8280 8281 8279 10239 33830 25375 33829 24633 25377 25376 20537 7916 9876 7823 10761 13172 18706 35948 13173 15073 13174 20538 8767 7688 10382 11082 31686 35949 31755 31689 19007 31690 20539 7539 7770 7462 8824 32133 35623 35622 31334 35950 32900 20540 1000 734 999 11118 5104 5106 5105 17330 35481 29960 20541 9437 10573 9635 10663 18014 27692 20513 15896 16955 22366 20542 65 7726 7664 10521 35951 35952 35953 35954 25732 26934 20543 9682 10254 9367 10781 25396 23691 29899 20551 23693 20911 20544 8894 7825 7827 10916 35360 35768 35955 33725 35769 35190 20545 6358 6354 6373 10169 6727 6844 6792 26040 24512 18894 20546 9318 10118 10183 10697 13105 26955 13077 16564 32324 14886 20547 9600 10341 9386 10740 23052 21795 19043 19046 19045 20262 20548 1453 1440 1003 10700 4606 6009 6010 28102 21060 25832 20549 10106 10854 1419 11053 29243 31753 31752 33381 35956 35957 20550 7538 7586 10746 10998 35958 28978 35959 35960 29781 25460 20551 494 10517 493 10975 27431 34137 3892 34630 27696 30624 20552 6318 9802 6320 10643 32686 25664 6801 35156 25663 22068 20553 7835 10115 8903 10894 25360 35961 35962 30975 35963 28420 20554 6380 6329 6328 10375 6832 6831 6660 27212 22002 21627 20555 701 9953 699 10778 26981 18135 4609 23080 22461 18682 20556 8634 9825 8921 10787 30030 14716 35964 23248 32028 30031 20557 9456 10043 9985 11027 21439 12564 19539 20677 20679 29000 20558 8843 8842 8728 10268 35159 31123 35965 16128 30698 31124 20559 7491 7542 7625 9180 35966 35967 35968 35969 35970 28211 20560 8857 9729 8764 11033 33707 23177 34080 34504 35297 28312 20561 9675 10189 7722 11166 34961 35802 24220 29890 29889 35971 20562 651 10466 9619 11005 30264 24051 30263 34965 31593 31897 20563 10021 10647 1279 10907 16912 35462 30283 28550 30284 28182 20564 9881 10671 10351 11049 16012 20293 25218 35827 33664 33315 20565 1305 795 687 10534 4876 4875 4872 15262 17447 18649 20566 6259 6384 8827 10459 6460 31291 35468 35469 32631 34522 20567 157 963 1425 10276 2217 2219 2218 26370 29907 26435 20568 7877 7961 7875 10575 35972 26807 28589 14301 18747 26808 20569 8778 8659 7961 10575 28590 35973 35974 14304 26808 26373 20570 8417 8712 8659 10576 35975 26123 26810 26811 18750 12999 20571 8414 8417 8416 10576 35976 34476 15089 12996 19626 26811 20572 9617 10277 10031 11114 17216 25297 25296 28200 29648 29647 20573 8859 9013 8668 11151 35977 35676 33968 33969 19420 35677 20574 6344 6313 6343 9842 6806 6525 6807 25870 18504 28397 20575 934 1262 1544 10456 2231 2405 5608 19480 17879 33162 20576 7814 7812 7815 10974 35724 34121 35978 26061 34122 33801 20577 8659 7961 10575 10993 35973 26808 26373 26124 15570 30150 20578 1145 10028 10709 10934 35979 12329 31330 32259 34587 31703 20579 1122 1556 1121 10065 6142 6141 5761 17836 27846 26869 20580 1404 242 9895 11071 2650 35635 14376 35980 25367 35981 20581 8310 9778 8434 11065 33984 25282 35982 25879 35380 26791 20582 7657 181 64 944 19595 1839 35792 20181 1836 1842 20583 8699 8245 10038 10759 34345 35557 12871 12763 12873 32443 20584 7732 7742 7656 10948 30182 26677 35983 29270 19283 26678 20585 7605 7623 7607 10413 28313 35984 35003 26029 35004 27471 20586 8637 8463 9038 9798 30811 35985 34848 11927 23893 14549 20587 8224 8883 8301 10616 31749 35986 29615 15467 23780 31750 20588 8222 8221 8220 10513 34007 35987 35946 34008 26125 29688 20589 7654 7672 7673 10537 34279 35988 33405 33407 30015 32331 20590 338 9905 349 10772 35396 20790 3127 34974 24272 24274 20591 1328 1321 404 9979 3461 3460 3396 15166 20999 12097 20592 949 9525 10610 10849 31777 23041 32516 32750 25390 22354 20593 9617 10132 9206 11141 28193 23516 28192 28765 28764 32379 20594 6985 9692 10687 10696 19791 17528 19792 35518 35752 18173 20595 9432 9915 9712 10476 19035 22729 12409 17652 22858 19667 20596 8845 8313 8265 10286 35989 31270 24501 17804 32183 22606 20597 800 803 802 9848 5410 5409 5408 23365 17250 34144 20598 8239 9568 10994 11070 28278 21935 32010 35290 35499 28902 20599 848 662 10073 11005 4695 32307 24177 35537 32078 27964 20600 9392 10052 10051 10773 15310 25545 11247 13242 35182 16209 20601 7860 7856 7858 10813 35829 14945 35990 23087 16317 35830 20602 959 9676 958 10781 25128 34021 2388 24625 34494 21136 20603 6342 6340 6292 10343 6701 6699 6702 25100 28681 19729 20604 8944 8403 8959 10291 25630 35991 30701 25631 30700 22809 20605 7774 9167 9673 10776 34672 22442 30039 34946 18408 22444 20606 7610 10499 7603 10865 34902 34938 35860 35992 35211 35212 20607 1258 879 1370 9799 5731 5732 4056 30804 21177 23659 20608 966 9857 967 10767 23452 19841 5083 35512 15870 19842 20609 9229 10178 10149 10729 30198 33205 13976 17597 15916 32171 20610 10149 10178 9376 10729 33205 32172 29998 15916 25853 32171 20611 9386 9931 9827 10826 21972 28108 21724 23671 30110 13522 20612 7560 7637 7544 9664 28929 35993 35788 26109 34508 28930 20613 1535 10384 1574 11085 35146 26840 2184 35147 24441 22901 20614 616 10791 10061 10875 35326 30143 27416 27417 19012 30144 20615 8293 8369 10660 10835 35994 30762 31346 31347 14639 30763 20616 8285 9995 8261 10866 13388 16910 35995 13390 33806 12924 20617 7864 7828 8798 9815 26762 35028 34863 12240 23205 26763 20618 687 794 560 9808 4240 4239 4237 13849 26756 19352 20619 8747 8711 8353 9809 35996 26755 35030 24356 25907 14294 20620 806 567 688 9811 4274 4272 4275 34855 20307 32762 20621 8205 8902 8741 9807 26758 25461 35657 26759 25462 12235 20622 1066 745 1270 9812 5155 5157 5156 11507 25912 26748 20623 1460 1280 1443 9810 6239 6240 6242 23776 26760 24107 20624 396 1226 1022 9813 3401 3419 3420 28963 25910 12244 20625 8162 8731 8985 9814 31734 28151 35686 29221 27164 28150 20626 8635 9004 9005 9816 26795 33301 35029 25914 13924 26812 20627 8495 8494 8496 9817 35997 26764 33370 13409 25114 25918 20628 791 667 1415 9818 4775 4772 4776 23433 20144 25920 20629 9381 10037 9993 10826 30659 29497 30034 32108 22261 31017 20630 9702 10694 6996 10695 18245 22834 22833 21568 35998 35826 20631 8616 10212 8618 10471 16065 35999 36000 12817 33579 16066 20632 1572 1537 83 6298 1915 1909 1912 32520 6580 27915 20633 6965 6963 9676 10687 7448 25127 22870 35751 18110 26814 20634 9422 10411 9787 10972 27161 27594 20827 20828 19992 21996 20635 8752 8214 8212 11048 36001 34261 36002 25239 29251 34125 20636 8959 8471 8642 11060 32826 35236 36003 30702 16458 35352 20637 8246 9947 8247 10910 27665 30664 36004 34479 30917 30916 20638 247 245 244 9823 2657 2653 2658 11265 20222 15806 20639 462 461 463 9824 3738 3743 3742 17863 19428 16346 20640 8362 8973 8360 9943 33597 23383 36005 14137 16535 17182 20641 1160 10410 1252 10959 31228 33201 5175 34215 25464 31840 20642 8153 10627 8050 10890 34315 22820 36006 32698 21863 22822 20643 974 205 975 10537 2470 2469 2468 31276 19340 31705 20644 7599 7602 7601 9975 36007 32458 31790 24117 22267 30484 20645 1145 10028 595 10709 35979 12327 3966 31330 11529 12329 20646 10279 11011 9435 11119 20322 24875 24874 32482 25206 33266 20647 640 9789 694 11120 34200 27063 4638 31543 35357 30615 20648 9699 9561 10698 11001 31246 24752 24223 18692 36008 24143 20649 318 1164 313 11162 3006 2965 3004 34493 29287 35902 20650 1483 1085 1284 10486 6111 5193 3042 22633 11974 12916 20651 8853 7486 7528 7617 36009 36010 33185 20611 33184 36011 20652 1160 749 1252 10410 4691 5173 5175 31228 33201 33200 20653 1548 1549 1326 11142 5898 2414 2464 36012 28906 28905 20654 7674 7672 7665 10537 36013 32330 32955 31524 32332 32331 20655 235 10211 233 11023 29186 21641 2602 29069 29713 29187 20656 477 475 476 10596 3812 3547 3813 31000 33727 16274 20657 8039 9937 8110 11033 34516 21456 36014 34108 21457 18852 20658 875 1002 874 10844 5715 5714 5490 34260 34919 35853 20659 8777 9151 7795 9843 36015 33092 28450 28452 23967 30539 20660 9564 10775 10087 10927 19176 16374 23982 25364 13353 33652 20661 747 1019 10405 11141 5164 34429 35900 32378 32219 34430 20662 1509 10010 718 10717 12792 15778 5028 18707 15586 16697 20663 8723 8724 8343 11112 34051 31926 36016 26801 33557 33427 20664 6361 1182 6367 10573 35660 35054 6603 34446 28810 33333 20665 7799 8824 9122 9964 31335 36017 27376 18545 27377 31336 20666 1514 7544 9664 10585 35807 34508 34262 34263 28145 35789 20667 9570 10358 9685 10974 26508 21008 26070 32176 17417 32833 20668 7986 9752 8807 11018 19203 19083 36018 19205 33499 14790 20669 9427 10367 9550 10833 32013 14970 29189 29190 29141 29143 20670 7794 6930 6890 10225 24585 7164 35644 24590 35648 24588 20671 9659 10551 548 11067 25305 22341 25304 28359 35169 34819 20672 876 641 10289 11054 4644 32982 30965 24942 30219 36019 20673 9945 10273 9322 11053 13071 18869 29958 33105 33382 33106 20674 9942 10804 309 11179 11936 36020 36021 24104 36022 21983 20675 611 670 9866 10791 4488 16082 21591 23000 16170 15573 20676 957 9682 1241 10781 28695 23121 2387 24198 24926 20551 20677 876 1391 641 11054 4646 4635 4644 24942 36019 25158 20678 7572 158 32 1273 25942 1710 35522 34029 1715 1717 20679 6287 9677 6337 10828 28928 26453 6676 35926 27060 20477 20680 9562 10570 9843 11174 25313 25814 24029 26982 31078 30323 20681 7811 10074 8828 11099 35696 22045 35707 34841 22048 22050 20682 8291 8290 8292 10942 36023 31681 24909 24911 16619 31682 20683 7670 7671 7731 10272 36024 31005 18516 18514 18515 22275 20684 8861 10428 8364 10856 29824 17035 36025 26196 30118 29823 20685 411 414 1379 10678 3494 3496 3485 20291 13034 24296 20686 7760 8836 9158 9842 28395 36026 33058 18505 29636 28396 20687 8301 8489 8420 10616 36027 11626 36028 23780 13065 13064 20688 9184 9591 10544 11034 25146 24388 25147 34467 18892 29511 20689 7664 1163 65 10521 25728 1843 35953 25732 35954 25730 20690 8108 10748 9873 11055 36029 17549 36030 36031 28392 27599 20691 1155 9626 750 11139 20752 20535 5024 33775 26870 26872 20692 9073 8444 9070 10457 26045 36032 34374 20302 26952 26046 20693 9345 10395 9884 10979 14928 12760 12056 32815 12167 12581 20694 9000 8420 8490 10419 36033 11625 34495 32767 12517 12516 20695 8120 9097 9089 10420 34497 36034 34950 31305 32392 33808 20696 1584 909 905 10217 2447 5822 5823 17025 17861 29827 20697 10244 11025 9269 11192 24508 35666 25876 24510 33475 24453 20698 1216 1537 1572 10278 6215 1915 6214 30889 29762 32521 20699 8219 7927 9717 10977 36035 31871 33317 35453 26491 36036 20700 866 10641 1361 10837 31080 26479 5691 31081 31307 14944 20701 8338 8447 8534 10295 34867 30716 36037 18236 27833 28502 20702 9404 10189 9675 10504 26190 34961 33438 28600 27919 35260 20703 315 10583 1468 11111 35137 33741 3012 36038 35750 35749 20704 1269 9983 925 10718 36039 15879 5602 35936 27086 28726 20705 6922 6932 9693 10648 7424 23791 26358 28170 17945 35516 20706 6365 6294 6377 9635 6712 6709 6713 32925 26629 29102 20707 9275 10014 9918 11182 15363 23073 14760 30239 24776 31415 20708 10093 9277 10763 11071 31105 18647 32546 27960 32548 25366 20709 604 1310 1136 11101 4457 4461 4460 31166 25293 33066 20710 8354 8356 8357 11102 35797 36040 17260 35798 33068 35263 20711 608 1310 605 11100 4466 4458 4464 25071 32070 33065 20712 8212 8271 8752 11104 35619 36041 36002 35620 25240 31444 20713 1256 1375 1310 11100 5334 6164 4481 28820 33065 35799 20714 8357 8358 8884 11102 36042 33218 33067 33068 29682 23412 20715 1375 1310 11100 11101 6164 33065 35799 25181 35800 33066 20716 8752 8344 8875 11104 36043 33309 32249 25240 28714 27441 20717 499 500 498 11103 3928 3927 3922 35621 34713 33069 20718 1382 561 500 11103 3941 3930 3939 27586 33069 28140 20719 697 894 696 11105 4918 4917 3724 33070 28732 32915 20720 225 223 11106 11107 2552 29982 36044 33074 36045 36046 20721 225 519 223 11107 2555 2554 2552 33074 36046 36047 20722 1294 697 457 11105 3726 3725 3722 35124 35090 33070 20723 227 1194 225 11107 2565 2564 2562 33061 33074 29104 20724 1033 518 1478 11108 2531 4028 4027 33072 25268 33073 20725 8158 8108 9873 11055 36048 36030 32354 31090 28392 36031 20726 9272 10620 9946 10652 22934 27453 28665 22936 28666 20377 20727 7685 10332 9914 11082 26585 28254 28253 36049 32342 19839 20728 9356 10409 9900 11041 17155 30646 23698 17069 22183 17156 20729 6290 98 1574 6350 6625 1969 24167 6630 22799 6629 20730 8206 8205 8914 10900 36050 32941 35494 35495 32072 26894 20731 661 10247 1087 10931 23590 36051 4386 30041 36052 30042 20732 9454 10347 9996 11183 11455 23283 23282 16062 30739 16063 20733 461 460 459 10407 3732 3728 3733 16347 22663 13438 20734 8956 9878 7820 10752 22971 17894 36053 17249 27664 17507 20735 765 760 10021 10871 5225 11582 32816 29936 11583 11323 20736 8765 8493 8297 9820 26884 35350 35052 26885 15318 24010 20737 10273 10854 9322 11053 25816 30328 18869 33106 33382 35957 20738 725 9722 726 11037 16689 32674 4850 35267 22484 27370 20739 1009 9721 679 11037 32411 17150 4825 32518 35266 27366 20740 10279 10446 9512 11119 33975 19237 31258 32482 32208 22490 20741 8868 7706 7728 7520 24341 24342 22515 36054 36055 36056 20742 8077 8023 8076 10798 24236 28751 36057 24237 28753 15515 20743 594 10884 9547 11170 35151 23834 16339 30939 23836 23838 20744 1096 1095 1473 10354 5970 4442 6117 15293 26446 30414 20745 7703 7669 7510 10581 36058 36059 36060 18296 36061 31283 20746 9216 10580 10065 11021 20024 27845 31265 26169 31480 26926 20747 9829 10410 749 11139 31023 33200 33199 26871 34393 30423 20748 7817 7819 8119 10662 35554 36062 36063 25243 31634 35555 20749 9216 9632 10362 11073 18926 19342 20022 18929 30274 18930 20750 6361 190 89 1182 32421 1936 6602 35660 1933 1939 20751 9142 8822 8368 10216 27205 25468 36064 16125 27967 30368 20752 1576 177 1537 10730 2324 1911 2325 31461 25256 25255 20753 6371 6309 6386 10319 6787 6789 6788 26777 31863 29934 20754 9948 10764 9249 11078 29725 23685 29350 29348 23687 21595 20755 10100 10599 9267 11035 16321 29625 20891 20191 22584 32162 20756 7858 7859 10014 10771 36065 27476 15362 12772 15364 23458 20757 9356 9860 10409 10979 17107 30001 17155 17108 35460 12168 20758 9426 10132 9617 11085 28763 28193 28199 27307 22900 32883 20759 9504 10705 10236 10804 25162 21318 21651 16547 27429 30604 20760 8486 8916 8897 9985 20297 16670 36066 20296 12194 12353 20761 6952 6895 6953 10908 7291 7293 7292 35668 29679 35669 20762 176 1552 1569 11068 2317 2321 2320 25122 34087 30087 20763 6320 6321 6331 11096 6803 6730 6743 35033 35035 36067 20764 1559 1232 1557 10572 2349 2226 6033 32388 34670 25451 20765 8455 11129 9128 11152 36068 33383 36069 34625 33385 33387 20766 8111 7845 10214 10704 34536 35928 28464 31903 17459 33471 20767 6902 8773 6863 10253 27095 35640 7061 26868 35643 29330 20768 7558 7590 7591 9734 34619 35725 28046 21283 17212 29865 20769 8399 9018 8507 10445 36070 34486 18899 14362 18903 21954 20770 8139 8141 10089 11010 36071 23922 29919 36072 25798 25797 20771 9180 10412 8547 10690 28466 33146 36073 28215 29259 28467 20772 1124 183 29 7615 1705 1703 1698 19660 35832 20585 20773 8455 9970 11129 11152 34585 20822 36068 34625 33387 30837 20774 8884 8358 8363 9821 33218 35061 26923 24391 12584 23411 20775 8120 9883 8871 11169 15565 33516 36074 34305 27319 33565 20776 9269 10728 9870 11025 19610 34662 33616 35666 35667 36075 20777 8512 8544 9698 10896 36076 30217 35445 19882 21553 23104 20778 7867 8793 7865 9987 36077 16711 36078 12207 12209 16713 20779 375 376 374 9986 3308 3307 3302 16633 11541 12208 20780 8974 8056 8054 9990 16715 36079 34024 15321 17186 16716 20781 402 390 391 9988 3387 3372 3388 19904 16002 12507 20782 378 384 379 9989 3328 3327 3323 12212 12383 16016 20783 377 379 1348 9991 3322 3325 3324 11544 15790 12385 20784 1290 797 1334 9992 4335 5395 5397 31012 22194 20833 20785 191 1089 1141 9603 2396 2395 2394 24361 31999 13548 20786 1048 1404 246 10614 2671 2651 2670 21777 18766 14661 20787 513 1389 516 9805 3599 4006 4005 30080 35087 24715 20788 1011 1010 789 9993 5361 4565 5362 21464 21465 15723 20789 174 144 6933 6901 2149 7265 29499 33097 7269 7267 20790 7577 7480 8844 11183 35944 36080 36081 35945 34803 35914 20791 1129 1130 1131 11094 3912 6153 6152 27352 29533 23525 20792 1129 1227 484 11094 3861 3591 3859 27352 23213 33108 20793 389 392 393 10928 3377 3383 3382 35065 32640 30899 20794 8105 8106 10043 10797 32675 29042 25166 35528 23600 18638 20795 639 10506 517 11120 33872 27736 4023 35777 29406 29408 20796 7622 7594 7588 10746 29284 36082 25109 24171 25108 23110 20797 8711 9809 8747 11109 14294 24356 35996 17323 30711 17324 20798 52 7717 1166 7658 36083 23168 1788 36084 19555 23169 20799 9587 10768 8343 11112 20964 31740 31737 29503 33557 29504 20800 161 6288 1182 10417 31876 36085 1935 34271 33332 34270 20801 691 10792 782 10937 31880 33308 4885 31881 32357 20221 20802 8484 10756 10040 10950 32575 26012 35587 32577 23189 24368 20803 8720 8861 8364 10856 26389 36025 36086 26390 30118 26196 20804 8474 8603 9785 10994 35067 28579 29587 20998 21936 35559 20805 286 9900 1437 10788 34149 35394 2870 35883 36087 30647 20806 8457 10598 9197 11175 30025 29652 36088 30026 33905 29300 20807 6372 6307 6270 7751 6509 6504 6507 28422 35573 28616 20808 9478 10394 9918 10681 13630 14762 14761 20430 14900 31003 20809 6255 7778 9139 6312 36089 16837 36090 6444 17798 17799 20810 9734 10312 9548 10598 33401 15829 15911 14696 19092 31608 20811 9874 10182 9286 10909 25499 14933 18323 18324 15693 15762 20812 1548 1326 10483 11142 2464 27128 34566 36012 29715 28906 20813 9281 9602 11081 11167 24765 29659 17647 23538 32600 32181 20814 8429 9080 9089 11091 20530 36091 35060 34461 34951 30713 20815 8055 9990 8056 10888 11969 16716 36092 35940 16804 15358 20816 943 154 10530 10818 2201 36093 18557 34787 32872 36094 20817 6298 83 1572 6334 6580 1912 32520 6585 29760 6584 20818 8511 10260 9050 10574 22204 17551 36095 18369 18876 22205 20819 8369 10615 8947 10779 24472 29835 36096 29294 29837 19724 20820 9426 10580 10132 11085 24364 16519 28763 27307 32883 27849 20821 7799 7461 7539 7624 36097 36098 30843 18543 30844 36099 20822 7759 8844 7480 11183 36100 36080 35910 35337 35914 34803 20823 87 6369 6288 1222 6592 6597 6596 1925 31877 27321 20824 8055 8969 8341 10726 36101 28663 19627 11535 19629 28664 20825 6955 6921 6872 10511 7099 7097 7092 30045 35084 23425 20826 8731 10335 9029 11187 31597 30301 36102 28152 31545 31547 20827 8216 8998 8256 10684 36103 35338 28346 29888 12639 32661 20828 159 1555 1557 10572 2228 2230 2227 24793 34670 32017 20829 307 306 299 10200 2934 2933 2935 12988 23669 25752 20830 1454 1158 1159 10807 2339 2210 5959 15332 31257 25118 20831 10310 10530 9415 10818 24807 18070 20842 25644 33543 32872 20832 8675 7776 8676 10823 36104 29234 33807 33057 24993 24545 20833 8423 11113 8304 11190 30912 17539 36105 34473 29334 34489 20834 9541 9399 10477 10585 19346 19917 18700 13980 28146 16342 20835 439 1094 451 10292 3604 3636 3635 19901 20271 22111 20836 9106 9107 8572 10225 36106 36107 35658 33356 35634 35647 20837 1466 10339 1371 10922 24902 35890 5245 31820 29916 32201 20838 8535 9130 8536 10782 35533 18336 36108 32426 28805 33620 20839 8483 10137 8097 10756 26947 33918 35429 25037 32199 23509 20840 9672 10067 9437 10408 25952 11404 23900 23899 18475 19990 20841 8373 8950 8810 10340 32384 24670 36109 26843 24672 11362 20842 7909 10191 7907 11014 27402 27486 36110 26656 27488 27403 20843 7805 8572 10514 10863 36111 33848 36112 36113 25134 32436 20844 8589 8155 8954 10363 18764 36114 15268 17838 14252 12381 20845 1001 1488 10221 10731 5526 27065 25538 20398 25540 34715 20846 9887 11108 1487 11127 28309 25026 28308 33409 36115 36116 20847 26 149 7534 1165 1691 16463 35354 1686 20443 1693 20848 7770 10372 9116 10865 36117 11787 34047 32137 13956 13955 20849 759 1279 760 10647 5218 5217 5213 31274 12348 35462 20850 6287 6336 6329 9677 6553 6675 6674 28928 21624 28019 20851 456 457 455 10426 3713 3712 3707 28225 22012 35089 20852 9151 9843 8777 10710 30539 28452 36015 32840 34426 26980 20853 7707 7693 7692 9709 20959 36118 21245 17039 18334 20690 20854 10144 10682 9429 11077 31660 18630 23578 20045 19073 19075 20855 684 711 660 10213 4738 4737 4349 27894 16465 34539 20856 8515 9154 8962 10044 32461 32306 36119 18628 31503 31602 20857 9205 10403 10380 11189 14452 16005 19048 17598 17717 17654 20858 1513 1548 204 10688 2466 2465 2467 35254 35579 34568 20859 9332 10990 10140 11026 16790 14187 13468 33275 33211 35930 20860 551 448 449 10431 3677 3644 3678 33229 24415 30954 20861 1236 1563 1562 10169 5636 2215 5632 15902 17240 15903 20862 314 309 10804 11179 2982 36020 30449 30450 21983 36022 20863 7588 10808 7613 10935 29341 36120 36121 25110 36122 30192 20864 8260 9704 8174 11065 18238 31943 33044 35271 28317 30074 20865 10064 10851 8957 10947 31652 33854 31181 25718 36123 36124 20866 6388 6392 6316 9664 6573 6424 6821 35754 28961 32369 20867 648 10051 1028 11145 32690 16740 4678 31621 36125 32977 20868 8186 9078 9073 10116 36126 22898 36127 31947 19711 22216 20869 9443 10450 9556 10825 20018 16624 21308 20525 20284 27652 20870 7933 9904 8693 10891 34657 12800 36128 36129 35593 31583 20871 208 6898 139 10255 34648 7252 2134 24812 35833 17546 20872 1050 1323 964 10547 5170 5080 3772 27989 18107 18330 20873 6890 6907 9107 10225 7169 36130 35645 35648 35647 34416 20874 8982 8717 7790 10600 34679 32313 36131 13408 31718 28179 20875 10245 10354 9465 10850 15292 23596 23595 32212 23146 26447 20876 6936 8796 6861 10356 11555 35689 7053 11560 35692 11558 20877 9410 10053 9798 10827 19072 17665 11926 23947 36132 18572 20878 9431 9779 10366 10782 18274 29339 15251 19898 19932 20829 20879 8570 10235 9056 10571 18380 35073 36133 18383 34266 18384 20880 1143 854 1526 10509 5647 5644 2362 25655 21272 15810 20881 8426 8427 9005 10432 34306 11718 36134 31092 12487 12486 20882 9150 8928 7795 10512 36135 30708 26440 26442 23968 30710 20883 9373 10102 9676 10696 14416 19163 16579 13556 19166 17008 20884 7819 10662 10079 10877 35555 28047 30757 30758 22620 28048 20885 9269 10723 9870 10728 20012 34423 33616 19610 34662 19217 20886 641 640 694 11120 4633 4638 4637 34978 35357 31543 20887 7757 10378 9164 11098 36136 19499 35918 35921 35920 24878 20888 7869 7868 7870 10701 36137 27902 35342 12841 12730 27903 20889 8771 7660 7755 7505 25554 33838 33894 36138 35843 35842 20890 8028 8032 8029 10219 33410 34161 35885 21937 29963 25516 20891 1526 855 1274 10475 5645 5650 2363 19407 35757 19408 20892 6863 7772 6992 10253 35642 11445 7056 35643 11448 11450 20893 1394 10076 1092 10741 28907 32986 5378 24869 27619 23641 20894 9432 10260 10376 10574 17552 33540 19038 18877 28401 22205 20895 1187 1558 1249 10531 6196 6195 1963 21745 25889 22406 20896 1189 10032 264 10790 35575 13432 2760 32114 12933 13434 20897 9111 10514 8572 11197 36139 33848 36140 36141 32440 26231 20898 7865 7863 7866 10564 31906 36142 34996 12369 17126 27843 20899 236 364 238 10774 2620 2619 2618 35939 31533 34997 20900 7663 7677 7676 10515 36143 27788 36144 34458 26146 27789 20901 1267 253 1184 10715 2698 2702 2706 28045 28656 25093 20902 803 9848 800 11074 34144 23365 5410 20735 35189 34145 20903 8939 8284 8282 10383 36145 35443 36146 16529 23065 33879 20904 7530 7584 7585 10447 14264 27180 36147 14530 27181 13181 20905 6949 10276 10074 10841 27803 23507 27802 36148 18427 30596 20906 6960 130 6981 10174 7223 7225 7227 34729 13624 35496 20907 6996 6988 9702 10695 7411 28719 22833 35998 21568 28952 20908 9665 10584 8150 10902 20230 33659 33433 19824 36149 12837 20909 7628 7635 7544 9664 36150 34506 36151 28962 34508 32367 20910 7765 8531 8781 9967 36152 31622 35941 34824 28622 22094 20911 7718 7708 7787 7503 32967 30846 32968 36153 36154 36155 20912 7660 7724 7699 10714 33837 36156 32805 29336 32807 33840 20913 7676 74 7663 1586 36157 36158 36144 26145 36159 1879 20914 847 938 939 10579 5605 5610 5609 29910 16417 16208 20915 8356 9869 8355 10811 35796 16968 36160 35262 16970 16972 20916 1369 449 441 9822 3646 3645 3609 17725 26238 21942 20917 9161 10154 8854 10524 19509 31868 36161 18467 30387 17031 20918 8070 10019 8071 10805 30411 15341 36162 35071 25536 30488 20919 1123 10790 9565 10960 30281 19836 29556 30788 30790 31642 20920 6944 7809 6883 10205 24864 35713 7141 24865 35715 24866 20921 7483 7797 7618 8702 36163 30089 35582 35584 35585 31244 20922 9194 8848 10248 10914 36164 33777 14285 14442 14444 33778 20923 1504 1499 902 10548 5779 5815 4726 15263 23644 14609 20924 590 526 644 10795 4068 4070 4069 31816 30088 28338 20925 8462 8641 9051 10711 32047 35347 36165 32045 12266 19168 20926 8461 8462 8427 10711 32043 36166 35348 13680 12264 32045 20927 1484 9686 1368 11164 35320 30996 4287 35154 35145 32282 20928 1254 476 422 10852 3549 3548 3550 22432 14002 31217 20929 9320 10487 9622 10891 23941 16766 33391 31540 32170 24801 20930 9631 10525 902 10951 23987 23643 23988 28013 31079 33724 20931 9690 10880 8093 11126 27261 28969 28967 28240 36167 36168 20932 9693 10126 9384 10658 22201 13907 16310 23789 13608 16957 20933 241 10763 10093 11194 32547 32546 28484 36169 29453 34237 20934 6310 6361 6377 10345 6606 6795 6794 26026 26627 32422 20935 481 10596 477 11015 14734 31000 3824 30963 32126 29379 20936 9222 10764 10192 11100 30851 24936 25699 31315 24937 24099 20937 1451 1498 901 10799 3021 5812 5811 30156 30104 31237 20938 7752 7558 8769 7475 21282 23930 23929 35726 36170 35727 20939 8785 9690 8093 11126 18754 28967 32694 34913 36167 28240 20940 9434 10288 9559 10870 17381 32001 29005 17174 32613 16241 20941 1355 9887 1487 11127 34303 28308 4030 32908 36115 33409 20942 6380 1573 107 6315 27209 2005 6656 6657 6652 17786 20943 9461 9908 9839 11125 29397 13698 33649 32724 29391 24849 20944 7701 10242 7645 10770 30891 33399 36171 28563 36172 25353 20945 6899 6874 6957 10533 7105 7100 7107 25316 30234 35019 20946 9920 9506 10613 11025 26406 15480 30115 14474 36173 30510 20947 9589 10340 9265 10779 22990 11361 28657 27813 16233 16898 20948 8818 8821 9167 9926 36174 25289 22443 15541 24737 15413 20949 9565 10170 9292 10932 31488 26645 19866 20933 20932 23469 20950 7539 7461 7799 8824 36098 36097 30843 31334 31335 36175 20951 9341 10237 9598 10988 31462 13782 30448 21805 25610 25612 20952 8512 9698 8533 10895 35445 20962 36176 19879 24353 30014 20953 9327 10731 10221 11107 26327 25540 23786 33767 27067 34716 20954 7771 7719 7497 7650 31719 36177 36178 31721 36179 31720 20955 1181 485 509 10243 3865 3629 3866 24144 30687 16993 20956 351 1037 356 10603 3187 3196 3195 14316 26892 22325 20957 669 600 729 11170 4405 4440 4439 35530 28509 33460 20958 1537 6331 82 6298 25254 6577 1908 27915 6581 6582 20959 6372 6378 6363 10277 6770 6693 6779 28425 17215 21250 20960 160 67 1262 7683 1848 1851 1854 24977 31160 35674 20961 8332 9938 8556 10568 31423 23689 36180 35161 34669 31979 20962 1223 10297 161 10417 22074 31879 2239 25403 34271 25456 20963 1026 9678 882 11090 24933 17732 5735 35032 17127 11899 20964 9266 10256 10540 11056 14140 24914 13178 34462 14483 31119 20965 45 7655 7670 10272 36181 36182 35546 35547 18514 36183 20966 8784 9108 7796 10372 36184 30854 34851 23296 30486 30857 20967 9702 10128 9384 10648 18241 28435 17019 19232 17944 19233 20968 7605 7629 7623 10435 31310 36185 28313 26031 27473 31311 20969 8481 10281 8479 10973 35670 31227 36186 23995 29906 26308 20970 6954 6955 6903 9620 7330 7095 7331 27936 21426 28376 20971 8182 8144 8143 10437 25232 34586 36187 21830 24338 23611 20972 8369 8294 10660 10780 36188 30175 30762 29295 30177 30176 20973 791 10713 950 10849 34301 20663 5371 23434 32751 25183 20974 9153 9151 8777 10710 32566 36015 36189 32839 34426 32840 20975 8789 8929 9966 10963 36190 16887 21239 21931 21933 33955 20976 874 1276 638 10096 4631 4011 4629 30509 34580 34805 20977 323 324 319 10724 3033 3032 3024 23138 30545 30496 20978 9107 8572 10225 11197 36107 35634 35647 36191 29280 32440 20979 8139 8140 8141 11010 36192 36193 36071 36072 25797 34425 20980 9378 10293 9849 10881 12011 23676 23675 12267 32709 13553 20981 6359 6377 6294 9635 6710 6709 6481 26832 29102 26629 20982 982 1361 10721 10837 5690 29332 33117 34589 31308 31307 20983 8833 7757 6264 10378 36194 36195 36196 31475 36197 36136 20984 9465 10689 9997 10850 32361 15399 24308 23146 15683 23953 20985 1003 10054 875 10777 21058 35852 5719 23826 34259 23827 20986 8329 8562 8698 10789 35604 36198 26895 20158 26897 13279 20987 1323 10547 1009 11037 18330 32517 5070 18443 32518 18444 20988 7929 9846 7924 11115 24156 31195 36199 35778 30376 30737 20989 1560 187 1249 10531 2376 1959 2377 21582 25889 25888 20990 8728 7478 7784 7540 35834 36200 31097 30694 30436 35835 20991 8630 8629 9121 10785 36201 32100 27550 27549 24919 32101 20992 207 9664 6388 10725 36202 35754 36203 36204 36205 29430 20993 9586 10302 9950 10669 21613 21612 19061 31044 33328 14710 20994 8712 8715 8659 10993 33730 36206 26123 22551 26124 31365 20995 50 200 1168 7709 1783 1786 1780 35484 16145 21483 20996 9410 9798 10545 10827 11926 12525 11592 23947 31590 36132 20997 7495 7735 9144 7803 36207 35366 36208 36209 35367 35368 20998 8089 10082 8096 10649 36210 17208 36211 31519 17054 17420 20999 9027 9048 9015 10708 36212 27315 35387 35389 27347 27022 21000 9427 9542 10526 10833 29455 19785 29924 29190 32214 29457 21001 9345 10267 10979 11030 19332 32536 32815 23011 34860 17601 21002 1290 797 9992 10806 4335 20833 31012 33213 20835 20834 21003 543 10392 542 11093 31086 12832 4137 31748 25151 25153 21004 8151 8165 8751 10519 33501 34082 36213 33435 27743 27926 21005 207 1568 9664 10725 2478 30556 36202 36204 29430 20268 21006 6322 6302 6323 10512 6569 6750 6749 31571 30428 30907 21007 9135 8609 8868 9933 35489 36214 36215 35488 22513 21969 21008 8219 9717 10513 10977 33317 28480 33319 35453 29689 26491 21009 9064 8475 9035 10353 36216 34232 34641 19936 30424 29569 21010 9862 10179 9241 11196 29582 33927 14629 35209 16934 33129 21011 8216 10882 9575 11048 35511 30223 28347 31638 28780 30224 21012 410 409 408 10400 3477 3473 3478 27785 12927 12263 21013 8310 8434 8309 11065 35982 33689 36217 25879 31601 35380 21014 8885 10708 9027 10889 29524 35389 36218 22124 36219 29525 21015 8699 10038 9077 10789 12871 22063 36220 13157 19527 13790 21016 469 10314 470 10734 12501 12471 3778 23714 34370 29770 21017 9775 9893 9225 10822 32741 15330 32886 35745 12318 15605 21018 7861 7835 8903 10894 30974 35962 36221 17981 35963 30975 21019 9169 9140 8577 9677 34382 36222 35794 33051 28382 28018 21020 749 751 1252 9829 5171 5174 5173 33199 25463 21685 21021 9241 10179 10167 11196 33927 30648 18540 16934 18541 33129 21022 556 9929 508 10824 28385 29077 3978 28386 36223 28387 21023 8724 8957 10851 10947 36224 33854 32997 33426 36124 36123 21024 1374 788 847 10920 5357 5355 5358 34352 35558 27528 21025 449 448 441 10431 3644 3643 3645 24415 33322 30954 21026 6947 185 139 10255 14161 2129 7250 17972 35833 17973 21027 8318 8454 8317 10067 30418 35947 30457 13372 30459 14156 21028 7933 10539 9904 10891 34659 24591 34657 36129 31583 26187 21029 8878 7482 7618 7576 36225 36226 27921 27920 27774 36227 21030 8623 10549 8804 10913 33166 19858 36228 34709 29371 31149 21031 8806 8805 8551 9826 32195 36229 35203 27731 35202 24656 21032 1023 10876 1200 10930 33513 36230 5709 32670 33828 27661 21033 10048 10589 8308 10936 31888 31886 24046 21017 36231 33363 21034 872 10159 737 10801 36232 32984 5119 33802 30883 32983 21035 8780 9967 7607 10413 34367 34368 34364 34746 35004 22095 21036 9223 9557 10792 10937 27293 33274 27814 20589 20221 29150 21037 9474 10420 9718 10830 30218 30429 20085 15743 22193 33126 21038 1414 327 10160 11179 3010 20616 24481 24505 24504 28024 21039 86 6369 1224 6309 6593 27320 1921 6589 29933 6594 21040 338 1067 335 10772 3116 3108 3114 34974 20352 23314 21041 10310 10556 9415 10906 35685 19984 20842 17645 34734 29421 21042 782 808 1183 10505 4892 5328 5327 20082 22066 22149 21043 513 9805 516 11039 30080 35087 4005 33081 36233 34319 21044 10230 10520 8348 10645 14577 32822 35548 19773 32823 23716 21045 290 291 285 10199 2863 2862 2857 13722 18763 18998 21046 7861 7833 7835 10315 20830 36234 30974 12186 25359 14830 21047 1513 45 1543 10272 1760 1763 1766 35253 25694 35547 21048 367 9942 309 11179 28419 36021 2984 23377 36022 24104 21049 7002 10313 6909 10657 28099 36235 7364 27217 36236 28100 21050 8351 8688 8889 10706 36237 31156 33422 30983 23304 26574 21051 759 1279 10647 10907 5218 35462 31274 34697 28182 30284 21052 6949 6897 10276 10841 7302 26372 27803 36148 30596 30595 21053 8391 8952 9715 10955 36238 23060 30524 31473 23061 22921 21054 966 10767 996 10879 35512 32383 3038 23453 30272 25850 21055 9218 10128 9702 10694 25154 18241 24777 34845 18245 18244 21056 469 569 471 10314 3785 3784 3783 12501 25207 11892 21057 8796 8624 8548 10356 36239 35671 36240 11558 19768 29892 21058 1058 304 9774 10953 2949 12599 32175 31764 23487 23486 21059 9624 10364 9998 10942 27296 16409 24575 29643 31453 25925 21060 9618 10044 9393 11069 28772 24006 19260 31605 32862 31394 21061 8077 8859 8023 11151 36241 36242 24236 24238 16585 33969 21062 1258 879 9799 11163 5731 23659 30804 36243 22710 18065 21063 1032 784 1318 9674 5340 5337 5341 34066 30052 17762 21064 9604 10749 10089 11010 30859 19397 33745 29201 25798 34424 21065 7539 9964 7610 10865 30845 34901 36244 32136 35992 23319 21066 9204 10333 9919 11154 31212 23379 33608 31214 23380 20867 21067 9356 10409 9766 10979 17155 17400 17065 17108 36245 35460 21068 9561 10980 9850 11044 28117 28378 22851 28838 28840 36246 21069 1507 1515 1180 9832 2282 6191 2420 21907 12655 15767 21070 8757 10007 10465 10706 22694 15196 22696 36247 28965 30984 21071 9983 10248 9480 10718 24340 11785 24339 28726 27088 35479 21072 1495 1490 903 10588 5521 5818 5816 18953 20883 14331 21073 9087 9094 8437 10589 36248 19763 30643 30890 19765 19764 21074 9817 10664 8494 10878 18182 36249 25918 20071 25919 32666 21075 6896 6967 6877 8717 7119 7117 7112 33486 35580 28178 21076 9315 9968 10203 10604 11256 28848 12543 11259 17088 11260 21077 9851 10698 9561 11001 19581 24752 24751 13802 24143 36008 21078 8089 8087 8096 10082 36250 36251 36211 36210 17208 35907 21079 9559 9425 10590 10968 26290 17889 26506 26291 18175 18174 21080 423 1102 1153 10722 3436 3556 3555 24884 35638 31743 21081 8896 8835 8286 10723 35639 31891 36252 29046 31746 31266 21082 6298 6332 6334 10278 6731 6733 6585 28895 29764 27133 21083 6319 6388 9664 10725 6742 35754 29429 27169 29430 36205 21084 10075 10757 9321 10946 28609 29805 21784 21785 19228 24265 21085 8299 9960 8901 10977 28523 13884 36253 31427 36254 25277 21086 10335 11026 9944 11146 33212 33298 19018 30305 32553 36255 21087 1051 1007 1411 10071 6014 4319 5942 15036 12705 21237 21088 733 1343 9726 10788 4801 16901 18596 16163 16902 16211 21089 9206 10405 9574 11141 25023 32024 28580 28764 29342 32219 21090 9386 9827 10341 10826 21724 18652 21795 23671 30111 30110 21091 1013 1320 1276 10543 3521 4001 5717 23785 34806 23743 21092 8170 8593 9880 10805 36256 29830 35612 36257 18538 20159 21093 1541 1214 1216 10278 6208 5624 6209 34285 30889 29316 21094 8332 8556 8582 10568 36180 32059 36258 35161 29258 34669 21095 240 246 242 10763 2640 2639 2638 16996 35636 15725 21096 341 1429 339 10141 3135 3134 3132 23194 28941 28675 21097 1127 561 1382 10140 4243 3941 4246 18615 18616 28139 21098 7640 7715 7501 8770 32318 36259 36260 32317 36261 32316 21099 9462 10601 9838 10986 31609 19324 17167 15461 17169 15765 21100 8612 8586 8849 10957 36262 33961 30794 34150 31770 32974 21101 9855 10552 9258 11115 15590 19314 31251 33823 16807 17948 21102 8689 8403 8873 11043 36263 27028 36264 24170 30972 36265 21103 8544 9147 7782 10896 36266 36267 23102 23104 22404 33914 21104 399 397 9754 10945 3423 21790 30364 27663 25660 33197 21105 7553 7615 30 10631 36268 36269 36270 27479 36271 31406 21106 7539 7611 7610 9964 35224 34900 36244 30845 34901 22037 21107 219 9769 1353 10943 19113 32512 2525 23597 18802 23598 21108 826 830 797 11020 5394 5393 4964 18056 35517 24419 21109 9015 9000 8490 11168 36272 34495 35916 27316 34156 34496 21110 9097 8120 8871 11169 34497 36074 36273 34498 27319 34305 21111 1552 1173 1550 10570 2318 2411 5893 28574 28575 24600 21112 8270 10468 8955 10630 11983 27795 36274 12151 30008 16265 21113 7697 7694 10085 10714 36275 32653 31249 32869 21271 34397 21114 7669 9131 7510 10581 31282 36276 36059 31283 36061 29315 21115 9352 10357 10284 10773 33246 33247 26410 24258 16991 34751 21116 1093 1315 10681 10932 6115 31327 33100 33553 20934 32657 21117 7603 9832 10372 10865 33874 22146 33876 35211 13955 33042 21118 9758 9326 9882 11051 14965 13837 15213 18287 34439 21149 21119 576 547 356 10603 3219 3218 3220 15511 26892 28356 21120 619 620 621 10750 4527 4533 4532 29015 33576 23868 21121 9095 8438 10449 10910 35200 33590 27882 34940 31368 26539 21122 9608 10498 9483 10998 23991 33440 34088 24712 29782 32341 21123 8938 10215 8295 10933 15646 20417 36277 12376 20487 16476 21124 9073 8759 8186 10116 36278 31946 36127 19711 31947 16197 21125 225 11041 9651 11106 34553 28925 32251 36044 34014 34013 21126 7537 7603 7601 10372 36279 33875 34966 30856 22144 33876 21127 552 1366 668 10618 4200 4199 4198 35008 29608 18099 21128 1018 747 10405 10709 5165 35900 18670 31329 33804 32376 21129 8539 9081 10472 10958 36280 21809 26723 25767 22570 22569 21130 9447 9828 10443 10555 18960 31221 29654 18178 30561 18961 21131 1546 181 986 10521 2344 2346 2347 26689 20953 26935 21132 8893 8868 8609 9933 33330 36214 30677 30678 21969 22513 21133 6335 10776 6296 10831 29985 34947 6719 32662 35220 32663 21134 8086 9937 8039 11009 22165 34516 36281 20849 34142 22166 21135 239 10763 241 11194 31535 32547 2632 33957 36169 34237 21136 958 9676 10558 10781 34021 16580 34022 34494 24175 21136 21137 8298 10083 8058 10664 20465 35020 36282 20466 33560 18184 21138 9073 8759 10116 10816 36278 16197 19711 21539 14602 16198 21139 155 9911 960 10807 33657 16758 2208 25119 14580 16760 21140 7516 7687 7643 10332 36283 36284 36285 36286 35049 24102 21141 9500 10191 10545 10827 27487 14347 18550 30769 31590 35545 21142 8961 8202 9075 10621 36287 12521 32587 28105 12523 12522 21143 1403 9748 1436 10819 18086 29154 5452 22742 29155 14213 21144 9672 10386 9422 10972 15390 31297 29034 27900 20828 28409 21145 9640 9821 9255 11102 29680 22318 25007 29683 33763 17783 21146 8689 10291 8403 11043 24169 22809 36263 24170 36265 22651 21147 6322 6285 6302 7806 6564 6567 6569 32360 30905 35699 21148 8228 9017 8185 10591 35922 13594 34859 31581 14940 14939 21149 1196 1519 175 10429 2316 2314 1741 32007 34387 19921 21150 926 1522 10631 10810 5588 28872 32373 32374 29787 31913 21151 9219 9834 9666 11138 33888 16069 32857 28176 29834 29833 21152 1175 9991 1348 10741 24634 15790 3326 36288 20492 20493 21153 8211 9746 8212 10821 24305 29250 36289 19137 35590 24306 21154 7541 7620 7624 10477 36290 22938 34180 30493 18548 22939 21155 483 10651 545 11150 35105 31778 3852 36291 23772 31780 21156 8446 8870 8266 10680 34338 34590 36292 34339 23005 20224 21157 1102 1103 1230 10722 3442 6120 6119 31743 33603 12088 21158 8133 8864 8286 10723 35459 36293 32003 12091 31746 19216 21159 8287 9741 8164 10867 17348 32718 36294 32992 27289 18904 21160 7595 7485 7767 7617 36295 36296 15632 17911 17912 36297 21161 10244 10613 9506 11025 19977 15480 18837 24508 30510 36173 21162 6306 6384 6259 10459 6465 6460 6463 23048 35469 34522 21163 893 10250 724 10802 21109 29409 5057 22501 28852 22502 21164 202 46 7662 1543 1767 36298 19975 1770 19974 1764 21165 1549 1550 194 11174 2415 2412 2413 34105 36299 30322 21166 1337 1340 886 10326 3811 5353 5757 27146 30654 14488 21167 9153 7777 9169 10710 36300 33799 33276 32839 33052 31323 21168 7983 7987 7984 10622 36301 35121 32633 27215 24693 12365 21169 9750 9870 9310 11025 33614 28400 15182 16328 12652 35667 21170 1349 10076 1394 10859 32381 28907 5379 32297 24870 28908 21171 932 823 1042 10473 5512 4956 5513 20510 20512 31075 21172 9225 10027 10026 10822 14088 30145 34157 12318 34960 14089 21173 7710 7711 7658 10518 32701 19776 36302 32702 19557 19609 21174 1290 10806 10106 11053 33213 27013 31013 36303 33381 36304 21175 10167 10179 9385 11196 30648 14281 28602 18541 34652 33129 21176 455 454 456 10426 3703 3708 3707 22012 28225 32060 21177 297 293 292 10500 2897 2893 2898 25668 16123 22064 21178 9628 10271 9237 10542 22542 26079 11839 13140 12426 22543 21179 7549 9188 7469 7597 36305 36306 36307 23149 36308 36309 21180 765 762 760 10871 5224 5223 5225 29936 11323 29536 21181 1007 10071 971 10633 21237 34272 5974 35544 28374 20453 21182 1034 1363 878 9705 5141 5729 5728 11578 17279 18561 21183 8149 10328 8148 11064 22232 35824 36310 32185 34821 33574 21184 9330 10814 9789 10825 27298 26142 20672 20285 20741 22997 21185 6374 6305 6272 9141 6517 6512 6515 34111 35663 28185 21186 635 342 1444 11087 3150 3081 3151 23409 28131 33153 21187 635 10006 342 11087 23408 11889 3150 23409 33153 18007 21188 419 10636 415 10966 34328 21528 3514 35838 35206 21846 21189 8874 8816 8870 10862 36311 29487 21946 21948 20227 29488 21190 233 232 234 10550 2593 2598 2597 21643 30766 13431 21191 9479 10540 10256 11056 16298 24914 19622 33669 31119 14483 21192 10153 10529 9543 10654 28381 26527 17734 22072 17376 34483 21193 1008 10071 1051 10324 20451 15036 6013 17627 21623 21344 21194 8529 8313 8530 10609 36312 35436 25383 25385 21857 22537 21195 1245 1023 1104 10606 6044 6045 3446 29016 12141 34899 21196 544 483 482 10651 3847 3843 3848 17193 17315 35105 21197 7534 7589 25 10800 36313 36314 36315 16464 36316 36317 21198 7655 7748 10272 10688 36318 31386 36183 36319 31387 22115 21199 8814 7640 7718 7502 34388 34389 33259 36320 36321 36322 21200 7586 7588 7538 10746 28977 36323 35958 28978 35959 25108 21201 1155 1565 1564 10573 5639 2393 5635 20755 24071 18601 21202 9417 10284 10357 10773 12826 33247 18394 18792 34751 16991 21203 809 10806 1290 11053 29011 33213 4336 33845 36303 36304 21204 8431 9806 8424 11113 33766 20007 36324 30312 20009 16368 21205 9258 10133 9846 11115 16806 14871 29847 16807 30737 16504 21206 9373 10139 9692 10687 13005 11458 16848 14173 17528 17298 21207 978 661 979 11068 4743 4692 4746 33020 31969 23592 21208 1147 10791 616 10875 34440 35326 4506 35454 27417 30144 21209 8906 9840 8722 10996 23996 25720 36325 33849 25721 17290 21210 9567 10025 9960 10536 17571 30242 30240 25551 14613 18350 21211 1487 11108 518 11127 25026 33073 4029 36115 32879 36116 21212 220 315 9762 10924 2540 35138 29895 27005 22101 35139 21213 6908 147 1510 6927 7276 2166 22580 7278 23180 7274 21214 9156 10414 10252 11069 20857 22755 22754 36326 26352 32863 21215 8108 10748 8109 10797 36029 26671 36327 36328 19696 26672 21216 6916 6936 6861 10356 7055 7053 7048 34722 35692 11560 21217 222 1076 224 10388 2550 2549 2548 30069 35509 32783 21218 8163 8336 8287 10387 36329 21181 34064 32537 17132 21182 21219 304 305 303 10389 2953 2952 2947 11971 32447 11972 21220 1475 764 1466 10339 5243 5244 5246 12028 24902 13441 21221 1218 9852 1215 11160 17137 33783 6211 36330 29017 29128 21222 8551 9826 8805 10812 35202 24656 36229 36331 29677 25646 21223 1329 10613 543 11093 33814 31087 4139 36332 31748 19104 21224 1149 179 1150 9614 2334 2336 2335 29727 32933 21588 21225 8935 9873 8108 10797 11829 36030 36333 11830 36328 11831 21226 9296 9584 10597 11003 22539 21630 28795 22540 22223 21355 21227 8115 10227 10644 11070 29522 33339 35783 36334 35289 16255 21228 541 1365 1413 11089 3166 4145 4144 27016 27433 25711 21229 801 1413 799 11089 5406 5405 5403 12559 30367 27433 21230 8767 7688 7514 10382 31686 36335 36336 31755 36337 35949 21231 219 221 282 10727 2532 2535 2534 23875 11939 31637 21232 223 1266 221 10727 2545 2544 2542 29981 31637 11938 21233 7481 7532 7576 10347 36338 36339 36340 36341 22782 36342 21234 1152 753 1084 10441 2796 5192 3266 24491 17632 16041 21235 10335 11026 9764 11187 33212 36343 30300 31547 31546 36344 21236 302 9774 304 10858 26793 12599 2948 19737 33036 18874 21237 431 1390 10670 10909 3575 35856 32141 34890 18613 35858 21238 8769 8456 8879 9734 36345 33660 31692 23931 31278 33462 21239 7643 7761 7516 10332 31987 36346 36285 35049 36286 32562 21240 8955 8156 8411 11055 32155 36347 30007 34582 26294 35070 21241 8856 8857 8764 11033 36348 34080 33771 30061 35297 34504 21242 8757 8351 10007 10706 36349 29263 22694 36247 30984 30983 21243 9459 10005 9840 11121 23585 18491 12459 32757 33891 22680 21244 7550 7619 13 1221 36350 36351 36352 36353 1634 18526 21245 1211 7717 7740 10427 36354 36355 26708 25455 26710 23170 21246 9039 8501 10246 10933 36356 23278 26444 35870 23281 23280 21247 943 1581 154 10818 2200 2199 2201 34787 36094 25642 21248 8505 10048 8308 10936 21016 24046 36357 20155 36231 21017 21249 10248 10680 9480 10718 19959 19960 11785 35479 27088 31653 21250 1329 630 543 10613 4156 4155 4139 33814 31087 25202 21251 1005 10285 1007 10633 14635 20342 4317 14636 35544 14224 21252 7932 7931 9796 11004 33563 16637 18159 17793 18161 34893 21253 7759 7532 7481 10347 35912 36338 36358 35335 36341 36342 21254 9264 9586 10351 10843 19142 18605 19141 19743 25220 28823 21255 8320 8647 8925 10563 36359 17036 18589 18591 15559 17038 21256 9260 9988 10035 10604 18218 24475 12315 14475 13909 17087 21257 9798 10053 9364 10827 17665 13154 29693 36132 21904 18572 21258 9425 10071 10041 10633 20452 30085 32215 17011 29848 20453 21259 7589 7585 10475 10800 36360 27182 36361 36317 29352 30108 21260 7554 1580 7561 10391 36362 18962 36363 36364 16175 18963 21261 10279 10562 945 11011 29742 27116 29743 20322 36365 33265 21262 9550 10318 9938 10568 26439 23688 29188 30662 31979 24967 21263 8087 10082 8089 11110 35907 36210 36250 36366 32197 36367 21264 849 1020 10132 11085 4701 32385 32882 29544 32883 32931 21265 856 1596 1517 10312 5653 5655 5649 24651 27461 15830 21266 548 10551 570 11067 22341 34818 3225 35169 34678 34819 21267 314 367 309 11179 2985 2984 2982 30450 36022 23377 21268 8923 10379 8013 10929 16098 30792 36368 35144 30009 30791 21269 672 9726 1343 11180 23634 16901 4798 23635 18915 18917 21270 8426 9005 9004 10432 36134 33301 36369 31092 33302 12487 21271 9749 10451 9252 11084 16029 27566 23202 20544 22749 26009 21272 6931 6929 6930 10744 7429 7354 7422 27510 28255 35216 21273 9249 10791 10061 11078 24455 30143 30839 23687 29708 23001 21274 516 9805 10839 10964 35087 31977 35088 36370 29663 35106 21275 7946 7931 7928 10527 16636 30292 36371 12502 30293 21082 21276 80 1201 207 10725 1900 1903 1897 36372 36204 32677 21277 9218 10155 9740 10695 25786 14838 29465 21345 19015 19014 21278 1514 207 1568 9664 2481 2478 2480 34262 30556 36202 21279 1576 10261 177 10730 31460 25689 2324 31461 25255 23801 21280 8119 10662 7819 10877 31634 35555 36062 34814 30758 28048 21281 663 632 887 10580 4598 4600 4599 29979 26925 15526 21282 8490 9027 9760 10889 36373 35388 14105 17372 15240 36219 21283 8152 9761 8388 10890 22591 14081 36374 21861 17282 14342 21284 265 10032 266 10869 20319 22344 2757 20137 24228 20320 21285 6943 6898 6942 10255 7307 7305 7308 21834 14840 17546 21286 7993 7997 8829 10355 36375 36376 34692 33508 31049 22697 21287 9141 9170 10031 11114 36377 29901 28184 29646 29648 36378 21288 7845 7848 8111 10214 33470 36379 34536 35928 28464 11413 21289 9382 10222 11090 11163 16190 20726 20724 16191 34020 15142 21290 10179 9212 11193 11196 35208 29766 14283 33129 33130 32409 21291 9381 10151 10341 10826 30033 34602 17915 32108 30111 19439 21292 8831 9118 7808 10477 36380 32308 31929 31931 29990 20958 21293 8126 8123 8122 10522 36381 27265 36382 21502 21522 12147 21294 9850 10980 1082 11044 28378 29115 25484 28840 36383 36246 21295 1023 10606 1245 10876 34899 29016 6044 33513 34297 29431 21296 668 552 10618 10873 4198 35008 29608 34408 29175 27030 21297 1320 416 413 10543 3506 3505 3497 23743 18315 25580 21298 507 9757 1333 11155 25613 15968 3956 25990 36384 25991 21299 6910 9740 6946 10694 25508 22177 7369 29402 35825 30243 21300 7656 9709 7693 10948 21900 20690 36385 19283 26211 18359 21301 6305 6372 6271 9174 6513 6508 6511 31883 35878 28424 21302 230 232 231 10550 2588 2587 2583 27544 26413 13431 21303 9217 10627 10108 10890 24614 13320 26663 14486 32699 22822 21304 1004 865 981 10331 5686 5684 3242 28890 30821 22772 21305 7734 7708 10321 11181 34789 28876 33111 34341 27592 35933 21306 645 10047 646 11007 11872 29609 4448 12860 34694 13957 21307 7993 7997 10355 10965 36375 22697 33508 30055 22698 15954 21308 7624 8831 7460 7541 34179 36386 36387 34180 36388 31930 21309 1101 1453 1377 11159 4602 6118 3771 24523 25960 33307 21310 1140 184 1578 10998 2360 1681 2197 35307 36389 26753 21311 871 1200 10876 10930 5702 36230 27660 22816 27661 33828 21312 8374 10109 8371 10955 33546 29384 36390 35846 31437 31731 21313 841 10526 911 10833 35672 35299 5003 29196 35300 32214 21314 9242 10109 9589 10780 17899 33152 33294 17901 31172 17145 21315 7550 13 169 1221 36352 1639 33352 36353 1641 1634 21316 8961 8316 8195 10621 28104 33892 36391 28105 11850 25432 21317 7517 7687 8867 7729 36392 24101 36393 36394 25817 25818 21318 7872 8757 8351 10007 36395 36349 29264 14993 29263 22694 21319 7700 7645 1529 10770 36396 33394 36397 33862 36398 36172 21320 714 10280 1447 10691 27553 20299 5007 17000 17018 20301 21321 10412 10690 9435 11119 28467 25204 35031 33147 25206 22492 21322 1501 1493 1041 10949 5767 5567 6057 27943 20098 23769 21323 1224 1566 173 10319 2301 2300 1923 27324 29967 34621 21324 8300 8663 9959 11038 36399 29045 15019 17754 17756 24531 21325 1355 1487 518 11127 4030 4029 2521 32908 32879 36115 21326 6333 9697 6332 11096 25472 30652 6827 20733 27135 15411 21327 1514 7544 1591 9664 35807 34507 1625 34262 32368 34508 21328 9942 11122 10369 11123 32326 32327 17013 30162 30161 36400 21329 8682 8986 9036 10745 29884 36401 34028 22623 20459 29885 21330 9890 10330 9259 11188 22691 32090 34000 24597 32092 21953 21331 8611 10037 8937 10885 31741 21247 36402 29861 33089 28646 21332 1195 10194 480 11083 25530 29771 3829 25531 22132 25532 21333 1150 10438 9614 10770 32934 31918 32933 34843 23014 26265 21334 7827 7887 10916 11059 36403 22957 35769 36404 22960 22959 21335 1208 384 10735 10838 3360 35188 32206 32486 21473 16017 21336 1336 1393 694 10825 4911 4910 4639 32902 26416 22995 21337 900 695 694 10825 4907 4643 4908 27653 26416 26418 21338 8210 8212 10638 10821 36405 29248 26067 26068 24461 35590 21339 1135 1298 10158 11150 5149 24330 16282 34594 23773 24331 21340 7898 7893 9922 10832 36406 36407 21853 35681 31151 36408 21341 7894 10220 9922 11195 35463 23076 36409 35465 30768 18662 21342 809 9566 10806 11053 28274 23095 29011 33845 36304 33380 21343 1275 1207 10461 11066 6203 28689 19385 35803 32911 32097 21344 9339 10028 9644 11155 31190 23222 22384 33622 29560 29562 21345 9415 10556 9544 10714 19984 32572 33542 19969 29338 23369 21346 310 10804 309 11123 30460 36020 2977 27188 36410 30461 21347 1218 1215 1566 11160 6211 6213 6212 36330 34622 29017 21348 1140 1143 184 9608 2359 2358 2360 31916 26750 25654 21349 7943 8125 8236 10487 31829 24438 36411 24800 13611 16765 21350 8814 7718 7787 7503 33259 32968 33258 36412 36154 36153 21351 8892 9764 9029 11146 32509 30302 36413 26055 30304 30303 21352 9244 10448 9567 10672 21157 18973 30241 25370 30419 25174 21353 8439 8676 9058 10453 24989 36414 36415 14723 26716 24990 21354 8171 9090 9037 10406 29237 36416 26074 28360 21681 26972 21355 8809 8810 8808 10481 34655 25234 36417 30554 25236 25235 21356 9827 9931 9377 10826 28108 13519 28109 30110 13523 13522 21357 1448 1457 1059 10769 3271 5498 6066 13585 14596 32929 21358 8957 8292 8406 10012 31180 36418 36419 31179 27353 16037 21359 1569 979 10375 11068 5985 33739 34086 34087 25124 31969 21360 8866 9970 8375 11136 18740 29361 36420 18201 29362 18741 21361 6383 6342 6292 10343 6703 6702 6648 31495 28681 25100 21362 467 964 1297 10676 3774 3775 3760 17228 13505 18108 21363 519 1496 1266 10731 4035 4034 2556 35567 20784 29776 21364 8378 10097 10684 10882 27515 15232 35278 27516 31189 20147 21365 7929 10539 7933 10891 26186 34659 36421 24157 36129 26187 21366 6304 7768 10144 11077 33142 32543 33143 35126 20045 34972 21367 904 10393 1461 10753 34980 26946 4971 34979 32267 28439 21368 8394 9029 8731 10335 31020 36102 36422 30267 31597 30301 21369 7521 7639 8868 8893 35287 31141 35286 36423 33330 31910 21370 1404 244 242 11071 2649 2648 2650 35980 35981 35344 21371 7529 7467 8780 7607 36424 36425 34365 34363 34364 36426 21372 9548 10312 9734 10800 15829 33401 15911 16153 29788 27464 21373 1078 9850 1082 11044 24047 25484 6094 29100 36383 28840 21374 8979 9749 8863 11084 32264 17334 36427 28802 21442 20544 21375 1459 991 9768 11054 4282 25224 18567 24552 22642 27123 21376 7968 9763 8944 11060 32242 25744 36428 36429 29734 25416 21377 8135 8139 8864 10749 36430 29918 35576 30830 27038 29920 21378 10047 10640 9351 11118 27768 28698 28696 24061 25184 34452 21379 8630 8674 10052 10823 36431 15311 31220 27551 15313 15312 21380 483 481 9928 11150 3842 14733 35104 36291 21919 36432 21381 9734 10447 9451 11152 29863 32785 32786 33402 23881 33386 21382 9215 10328 9704 11065 25528 14735 32300 25927 30074 22415 21383 665 1265 845 10718 4426 4766 4765 20718 34398 32480 21384 315 9762 10583 11111 35138 15237 35137 36038 35749 19315 21385 8788 7854 8872 10516 36433 25966 33300 18436 25849 25968 21386 1529 61 7741 7645 1824 36434 33396 33394 33395 36435 21387 6307 6382 6360 10127 6777 6776 6505 28614 17638 18521 21388 106 167 6341 6315 2001 29395 6649 6653 6654 32117 21389 8629 8800 9121 10443 35784 36436 32100 32099 24921 35130 21390 7645 10242 1529 10770 33399 33397 33394 36172 36398 25353 21391 9200 7803 10189 11166 36437 35370 33253 36438 35971 36439 21392 1546 10370 962 10833 26687 34138 5847 32213 34139 30964 21393 8251 8250 9917 11198 36440 33316 12618 36441 31272 31860 21394 839 935 1581 10310 5574 5577 5576 16722 25641 21838 21395 7985 7989 8811 10422 35149 36442 27911 27912 14243 28246 21396 9838 10003 9256 10601 17741 17359 18232 19324 25084 25594 21397 534 9865 1259 10952 35128 24705 4099 19183 24232 24704 21398 1191 1190 426 10008 3571 3570 3562 12451 18602 21887 21399 1514 10 7544 7559 1622 36443 35807 35193 35806 35845 21400 10225 10571 9475 11197 33311 32434 33297 29280 26232 32746 21401 254 1077 251 10125 2695 2694 2692 25695 33780 22612 21402 9008 9040 9862 10872 36444 30929 15406 28159 19612 35074 21403 8355 9869 8354 10874 16968 18205 36445 24968 16231 18207 21404 781 9882 873 10875 18272 13836 5324 16291 24970 18273 21405 790 9885 551 10873 19154 34167 4194 24972 33230 20065 21406 873 9882 871 10876 13836 22815 5325 24969 27660 20068 21407 7916 7821 9876 10877 36446 21988 13172 24973 20075 17714 21408 8841 9889 8498 10878 18209 24603 36447 16223 24974 18210 21409 7881 7882 7884 10351 30608 36448 34238 25219 29308 30344 21410 7651 7514 7688 10382 36449 36335 36450 20547 35949 36337 21411 7743 7723 7704 10675 27396 36451 31536 27884 24939 27885 21412 8577 9677 9140 10828 28382 28018 36222 17934 35927 20477 21413 9673 10776 9400 10831 18408 15159 20520 34307 33863 32663 21414 706 904 707 10393 4968 4967 4583 12778 12779 34980 21415 9715 9516 10340 10481 23673 23672 23059 29517 28651 22554 21416 8676 9177 7798 10690 29235 29705 36452 30967 29707 26005 21417 8534 9125 8638 10295 30309 17657 36453 27833 17658 17519 21418 7740 53 7717 1211 36454 36455 36355 26708 36354 1795 21419 9350 10308 9883 11169 31169 14665 22829 31170 33565 21255 21420 7722 7650 7721 11166 36456 35600 24219 29889 33720 34695 21421 7890 8403 7897 10336 24818 29537 36457 24820 29538 22807 21422 9212 9748 10819 11196 14212 14213 14214 32409 29156 16708 21423 6329 6337 6287 9677 6677 6676 6674 21624 28928 26453 21424 7793 7517 8867 7729 36458 36393 26652 26651 25817 36394 21425 8520 8519 8518 9853 36459 28034 35490 29750 22409 28035 21426 9590 10111 9240 10919 33150 22914 24253 17815 24254 21956 21427 8136 9775 8197 11171 19241 33842 36460 31963 32860 31964 21428 8362 8360 8361 9943 36005 31781 22005 14137 22004 16535 21429 8249 8862 8628 10281 11395 36461 30294 12498 30296 12499 21430 946 10562 9511 11011 36462 22007 32808 34160 20359 33265 21431 9523 10667 9710 10735 17456 24336 31679 21471 21115 33744 21432 9511 9435 11011 11119 35097 24875 20359 33940 33266 25206 21433 9675 10504 10189 11166 27919 35260 34961 29890 35971 21820 21434 8251 9917 8129 10954 12618 32104 36463 23902 28791 23903 21435 8130 8132 8131 10632 35817 11609 35431 32558 12955 12954 21436 971 1007 1008 10071 5974 5976 5975 34272 20451 21237 21437 8328 8492 9980 10970 36464 23004 33716 36465 23663 23662 21438 9264 10206 10084 10904 22841 32093 19741 21492 16642 17096 21439 9000 8999 8420 10419 32766 31832 36033 32767 12516 11440 21440 9097 8601 9089 10420 36466 32390 36034 33808 32392 32391 21441 6369 6368 6288 10297 6683 6682 6597 27443 31878 29839 21442 8100 9868 8099 11092 11482 36467 36468 36469 24315 19853 21443 9065 9880 8593 10903 17481 29830 36470 26906 20161 13755 21444 725 726 682 11037 4850 4849 4847 35267 29845 22484 21445 1009 679 682 11037 4825 4834 4836 32518 29845 35266 21446 1237 895 899 10739 5784 5788 5790 13454 12980 28700 21447 1550 10570 194 11174 28575 25312 2412 30322 36299 30323 21448 9582 9326 10355 10809 27325 14966 23757 27328 20031 21148 21449 7662 7722 7730 9675 36471 26106 29312 20952 21806 24220 21450 9088 9742 8598 10857 17411 26863 36472 27642 26162 25466 21451 8099 9868 8098 10944 36467 17502 36473 36474 17503 15013 21452 891 9864 1422 10907 14132 23961 5774 26016 23963 22761 21453 10447 11129 9451 11152 23101 34195 32785 33386 23881 33387 21454 1119 744 1120 10143 3306 5151 3808 33925 13643 23906 21455 446 9874 1390 10909 32356 35857 3596 29193 35858 18324 21456 7472 7583 7530 9178 36475 14265 36476 36477 36478 36479 21457 1381 9879 1111 10911 32899 14184 5480 30019 36480 13518 21458 8733 8432 8936 10582 35760 35255 34647 27985 13146 21195 21459 1587 1148 1149 10530 2204 2333 6170 18071 29728 23114 21460 8676 9058 10453 10690 36414 26716 24990 30967 22611 26717 21461 7646 186 54 7740 31758 1799 36481 31757 36482 31457 21462 8456 9734 9119 11152 33462 25299 36483 33463 34977 33402 21463 8685 10024 8683 11001 12669 36484 33346 15861 33348 12858 21464 1287 9886 10637 10990 26149 26148 19359 36485 24551 34191 21465 1294 9725 458 10969 35123 30096 3723 19238 29653 14449 21466 9139 9172 6256 6333 31193 36486 36487 20732 6448 31192 21467 1071 1072 175 10429 2311 2310 2312 32922 34387 33176 21468 1220 1219 770 10386 4381 5271 4686 28408 26038 33504 21469 8135 8133 8134 10742 35592 31497 36488 30828 31498 11903 21470 1468 10583 9737 10784 33741 29367 33740 34510 31666 35748 21471 9381 10341 10037 10826 17915 21095 30659 32108 31017 30111 21472 848 651 662 11005 4694 4389 4695 35537 27964 34965 21473 9435 10446 10279 11119 25205 33975 24874 25206 32482 22490 21474 832 9888 683 10939 21517 29132 4852 24084 22672 24085 21475 7998 8000 9877 10938 36489 23311 15003 24081 23312 18783 21476 7815 10974 10358 11137 34122 32833 34120 35506 32731 34065 21477 8886 8744 8742 10223 35414 35386 32554 14034 23174 29147 21478 1161 894 1366 10377 4920 5785 5158 13294 12197 12196 21479 88 161 6288 1182 1929 31876 6595 1932 36085 1935 21480 7786 6913 6883 10205 22243 7136 35712 30599 35715 23505 21481 8682 8683 8681 11001 36490 36491 29380 18691 29382 33348 21482 322 10236 1234 10705 35501 21316 2989 28428 20283 21318 21483 7674 7665 7675 10180 32955 36492 32643 32645 30938 32956 21484 9174 8621 9141 10277 36493 34609 31882 28426 28186 34608 21485 9582 9291 10422 11018 20742 18553 28248 29438 30774 21193 21486 10082 10649 8089 11110 17420 31519 36210 36367 32197 17438 21487 8423 8304 8303 11190 36105 36494 34612 34473 34241 29334 21488 9435 10412 10391 10690 35031 25570 27455 25204 24740 28467 21489 89 6367 6361 1182 6598 6603 6602 1933 35660 35054 21490 1489 9901 835 11036 35238 18002 5562 36495 36496 27395 21491 9046 9076 8421 10016 36497 30315 29116 22239 17608 30314 21492 7852 8680 7855 10771 33453 36498 23371 30621 12773 33454 21493 7685 7690 7727 10456 26586 36499 33255 26587 33163 24120 21494 8837 8199 8948 11047 36500 36501 36502 23624 36503 34560 21495 9271 10327 9811 10964 34163 32761 29531 29662 27125 32476 21496 6351 6373 6354 10169 6612 6844 6843 17339 18894 24512 21497 7811 10743 8602 11099 36504 22529 35695 34841 35697 34653 21498 1542 198 11 7551 1633 1631 1626 31082 36505 15076 21499 931 1527 1176 10592 5698 2399 2251 20596 34172 17844 21500 6318 6320 6319 10643 6801 6741 6756 35156 27168 25663 21501 1529 1253 7700 10770 1826 33860 36397 36398 33862 33001 21502 823 842 828 10062 5510 5509 5505 34097 29747 36506 21503 9860 10803 9041 10916 26313 29013 29674 22956 36507 26315 21504 7586 7613 7588 10808 36508 36121 28977 25459 29341 36120 21505 9483 10303 9603 10755 29149 18512 33288 33506 19358 34312 21506 6907 6890 6930 10225 7169 7164 7171 34416 24588 35648 21507 8569 8571 7779 9627 36509 34635 35633 21474 34781 33536 21508 9865 10330 9226 11184 24821 32283 34074 24823 32285 22160 21509 9557 9624 10846 10937 27294 28442 28910 29150 32358 29151 21510 9454 9806 10062 11143 11452 31153 31649 23948 35888 24227 21511 6947 139 6898 10255 7250 7252 7254 17972 17546 35833 21512 1238 1285 1239 10226 2172 6229 6149 16601 15132 12600 21513 9036 8684 8682 9699 31459 35862 34028 20458 16371 30134 21514 9979 10063 9583 10326 13997 33248 21690 29599 28431 22438 21515 473 1208 384 10735 3361 3360 3329 19159 35188 32206 21516 1209 473 1363 10735 3803 3805 3804 29025 18562 19159 21517 8921 9825 8661 10832 14716 24370 36510 12481 24372 14717 21518 9149 9115 7806 9560 36511 35353 34604 34603 30904 17825 21519 7757 6297 6264 10378 36512 6483 36195 36136 36197 35186 21520 7531 7632 7580 10268 33443 36513 32593 31125 30697 29778 21521 8031 8030 8025 10421 23019 36514 36515 23020 16960 16511 21522 10111 10919 9590 11023 21956 17815 33150 34534 30818 34207 21523 9427 10895 9698 10896 26857 30014 32691 27140 21553 19881 21524 7625 7807 7491 9180 35039 36516 35968 35970 35969 36517 21525 354 345 541 10476 3163 3165 3164 12320 26649 12321 21526 922 921 920 11174 5881 5877 5882 32555 16505 27422 21527 9449 10339 9561 10922 20425 24750 26533 18815 31247 32201 21528 1140 1139 10498 10998 2193 32339 31917 35307 32341 32340 21529 7921 7909 8597 10191 36518 30278 28679 14345 27917 27402 21530 8136 8134 8851 10742 36519 31549 35618 19561 11993 31498 21531 650 9787 649 10972 26996 27595 4080 27548 22373 19992 21532 7619 1221 7550 10499 18526 36353 36350 18527 34939 16138 21533 1467 1455 260 10267 2741 2740 2601 19384 12570 25040 21534 296 300 1341 10369 2917 2920 2919 14708 12116 31922 21535 9003 8498 9889 10985 36520 24603 33534 18909 27999 36521 21536 6968 6966 6917 10600 7402 7403 7127 32315 21220 20183 21537 994 553 995 10969 4204 4203 4202 24731 35100 13928 21538 8568 8609 8608 10668 33693 36522 35417 32076 20807 21970 21539 8944 10699 9763 11014 25632 25745 25744 36523 30550 36524 21540 8107 10040 8484 10756 29941 35587 36525 29940 32575 26012 21541 8115 10644 8239 11070 35783 30966 36526 36334 35290 35289 21542 9444 9586 10291 11043 31043 24162 30497 25548 22651 30973 21543 370 10394 369 11178 20209 35010 2733 20244 34460 20245 21544 9231 10596 9563 10852 16275 26484 27358 13546 30290 17202 21545 1151 187 1561 10175 1955 2375 2374 18997 16361 26540 21546 7676 7665 75 1586 35133 36527 36528 26145 1880 35134 21547 7575 7540 7578 10374 36529 30583 32463 32465 28491 30439 21548 8487 8486 8264 10362 35755 27382 36530 31788 21288 27383 21549 9462 10601 10036 10991 31609 33338 24259 18634 13570 25629 21550 883 1307 1305 10534 3904 5388 5748 12786 15262 25543 21551 8067 8069 8070 10019 36531 36532 31468 31467 30411 20431 21552 9064 9035 8402 10020 34641 36533 25953 18140 25954 16353 21553 8405 8289 8404 10424 36534 36535 36536 13010 20627 16603 21554 1424 10112 1024 10981 22273 32118 5375 34868 29324 15370 21555 9779 10519 9524 10584 18276 21963 29661 28836 23397 33145 21556 7811 7813 10743 11099 34674 19090 36504 34841 34653 34842 21557 202 47 1186 7730 1768 1771 1774 29226 24675 36537 21558 949 1169 171 10610 2291 2056 2290 32516 23754 23039 21559 169 7550 1221 10499 33352 36353 1641 34550 16138 34939 21560 1240 7553 30 10631 29410 36270 1707 29411 36271 27479 21561 357 548 570 11067 3222 3225 3224 31483 34678 35169 21562 7887 9860 9041 10916 22958 29674 36538 22957 36507 22956 21563 6914 6979 6989 9949 7387 7390 7389 17876 24466 19941 21564 965 724 10250 10820 5059 29409 30170 34702 30083 33853 21565 9513 10726 9711 11045 28935 23402 32125 22371 33296 32769 21566 9041 8946 8584 10803 29012 29117 36539 29013 27747 27153 21567 9244 10442 9642 10750 29829 11282 31256 26770 29570 23803 21568 9738 10227 9606 10644 27399 28570 31937 32459 32161 33339 21569 636 637 657 10367 4612 4618 4617 14555 13971 13186 21570 8273 10301 8946 10992 15844 27151 36540 33601 27154 27156 21571 9338 10207 10122 10904 13415 33304 13118 22467 17094 16688 21572 10120 10208 9338 10905 33303 13422 13114 17092 22466 17809 21573 9360 10124 10210 10905 13660 33305 24328 22693 17093 17808 21574 10189 10504 9404 11061 35260 28600 26190 31271 30893 28073 21575 1091 1093 624 9780 4560 3291 4559 30336 30753 33133 21576 8199 8145 8146 11047 36541 28324 34558 34560 22135 28325 21577 984 1446 1471 10736 4142 5843 5992 24395 32913 20250 21578 207 6388 80 10725 36203 6571 1897 36204 36372 36205 21579 8887 8866 8375 11136 36542 36420 36543 36544 29362 18201 21580 8853 7767 7485 7617 20612 36296 36545 20611 36297 17912 21581 7825 7823 7824 10761 36546 15071 25337 25339 14667 15073 21582 8679 7916 7823 10761 14395 35948 36547 14397 15073 13173 21583 564 563 550 10760 4189 4188 4190 22305 31445 22303 21584 7875 8737 7873 11006 18746 34060 36548 20076 31835 12284 21585 7482 7618 7797 8878 36226 30089 36549 36225 30090 27921 21586 7573 7575 10631 11183 36550 33273 27949 30738 30740 35924 21587 8398 8400 8401 10218 36551 36552 20151 18806 13376 16522 21588 857 945 10279 10981 5657 29743 19218 19219 14069 27117 21589 181 7726 65 10521 19594 35951 1840 26935 35954 26934 21590 6992 6902 6863 10253 7063 7061 7056 11448 35643 26868 21591 7755 8753 7506 7724 35711 35720 36553 33836 35721 34395 21592 7741 7702 7704 10675 33943 22255 36554 33944 24939 26464 21593 7990 7986 8807 11018 36555 36018 34068 32022 33499 19205 21594 7989 7990 7993 11018 36556 32021 28512 31183 30058 32022 21595 7622 7597 7623 10413 19365 36557 27472 15918 27471 19364 21596 1289 9900 286 11041 30185 34149 2571 36558 24200 22183 21597 8199 8948 11047 11175 36501 36503 34560 34871 36559 33906 21598 8498 10984 9889 10985 24606 24607 24603 36521 27999 35718 21599 1144 10978 403 11125 33923 35682 3448 33796 29791 34595 21600 563 10760 9892 10886 22303 12126 28956 36560 12838 12840 21601 748 1009 1323 10547 4826 5070 5167 20869 18330 32517 21602 8460 8626 8327 10834 33815 27300 36561 28742 27302 19288 21603 8757 10465 8687 10706 22696 15508 36562 36247 26573 28965 21604 9268 10421 9595 10840 31326 28777 31831 33694 30970 30969 21605 431 10670 9613 10909 32141 22978 32018 34890 20888 18613 21606 858 10279 945 11011 18868 29743 5656 20321 36365 20322 21607 947 10391 1452 11011 26940 30745 2428 26941 20323 20361 21608 1484 904 1461 10753 5819 4971 5544 35153 32267 34979 21609 1484 831 1368 10753 5543 4296 4287 35153 33477 11433 21610 8061 10238 8062 11045 24514 13786 36563 34129 13787 13350 21611 9946 10165 9493 10829 15359 29553 24439 31890 24767 33157 21612 778 1331 856 10542 4471 5312 5311 26397 20041 35426 21613 137 1225 6993 10276 2126 17373 7246 35740 18319 18318 21614 7771 7497 8790 7650 36178 36564 32753 31721 32752 36179 21615 7003 10514 6990 11197 26229 36565 7414 26230 36566 26231 21616 9403 10473 9806 11143 20511 34663 17157 21103 24227 21104 21617 7717 162 52 1166 25842 1791 36083 23168 1788 1794 21618 7593 7612 7632 10226 24565 36567 29798 24566 29777 16602 21619 8683 8685 8681 10024 33346 36568 36491 36484 33484 12669 21620 615 614 655 11079 4503 4508 4507 29710 35157 30926 21621 8957 10012 8406 10851 31179 27353 36419 33854 27356 27357 21622 8234 9711 8969 11045 33295 28662 36569 19356 36570 33296 21623 9891 10629 9365 11013 26939 25266 13568 17530 16904 29216 21624 9254 9545 10636 10678 30306 31564 14810 16482 16484 24563 21625 9643 10181 9277 10997 20877 14038 31106 15112 14040 13671 21626 8050 8153 8345 10627 36006 34985 36571 22820 14753 34315 21627 1182 6288 6367 10417 36085 6600 35054 33332 28809 34270 21628 7719 7771 7498 10546 31719 36572 36573 34078 36574 33627 21629 469 470 468 10734 3778 3777 3767 23714 28762 34370 21630 1019 1018 747 10405 5163 5165 5164 34429 35900 18670 21631 8367 8949 8945 10081 30542 34335 36575 14176 27620 24558 21632 9838 11042 9668 11178 15504 17369 17742 20246 23862 35932 21633 7973 7971 8225 10069 30703 36576 26360 26359 17385 14278 21634 9326 10157 9812 11051 22127 23484 11508 21149 32828 21297 21635 7559 1542 11 7551 31401 1626 36577 31400 36505 31082 21636 7662 46 7670 1543 36298 36578 20771 19974 20772 1764 21637 9247 9874 9756 11029 30203 19630 16192 28980 33324 36579 21638 8245 9069 9088 10759 34344 35659 36580 32443 12807 12764 21639 1048 10193 807 10614 31841 20730 5438 21777 25509 25510 21640 585 1470 1474 10234 4362 4366 4365 18498 14309 16626 21641 7869 8912 8161 10754 35687 36581 29446 11391 29448 31489 21642 8472 8670 8829 10809 20574 36582 31048 19368 31050 20573 21643 388 385 384 10838 3357 3333 3358 14615 16017 12161 21644 8670 8875 8344 10157 23805 33309 36583 21295 27440 25647 21645 686 563 9892 10886 4248 28956 28642 22336 12838 36560 21646 9603 10303 9395 10755 18512 15611 20581 19358 23842 34312 21647 564 10760 550 10901 22305 31445 4190 22342 31447 17648 21648 8601 10420 9097 10830 32391 33808 36466 31320 33810 33126 21649 8837 8948 10258 11047 36502 33903 23622 23624 22219 36503 21650 9929 10934 9339 11155 29095 29828 19064 25992 33622 31485 21651 9787 10411 9376 11165 27594 32405 22981 28081 32406 24152 21652 371 373 9838 11042 3293 15502 28995 35931 15504 15503 21653 9756 9874 9312 11029 19630 21207 21526 33324 34955 36579 21654 9282 10196 10497 11121 12306 14961 12156 31934 23853 22681 21655 8446 10248 8874 10680 36584 24506 34337 34339 21947 19959 21656 1081 10173 1079 11044 34135 21897 6095 33695 21393 21898 21657 8554 8552 8797 9912 21403 36585 32382 13939 26531 19649 21658 7569 7528 7617 9828 34223 33184 36586 27052 17913 33186 21659 9157 10127 8791 11088 34251 26768 36587 34252 26731 22254 21660 10313 10412 9511 11119 30206 25569 23370 32834 33940 33147 21661 301 297 292 9837 2899 2898 2900 27495 14977 18977 21662 373 372 371 9838 3292 3288 3293 15502 28995 27497 21663 408 405 1107 9839 3465 3457 3466 12926 11884 27244 21664 1448 1482 1295 9841 6151 2755 3269 13584 12514 24293 21665 8906 8341 8722 9840 35249 28209 36325 23996 25720 19628 21666 744 10143 1119 11042 23906 33925 3306 23907 27754 23908 21667 1081 1466 1371 10922 6099 5245 6104 31819 29916 31820 21668 9555 9366 10533 10834 29398 15315 28135 28743 19290 19999 21669 6993 138 6947 1225 7247 7249 7251 17373 14160 2125 21670 9454 9552 10631 10810 30575 29784 33800 31177 29787 29786 21671 10369 11122 9910 11123 32327 31501 25756 30161 22233 36400 21672 9184 8510 10861 11034 36588 35521 34465 34467 24663 34943 21673 1292 1313 887 10029 3936 5760 4601 19376 19375 13703 21674 8059 10083 8640 10634 30951 12984 36589 30870 27220 21388 21675 9397 10126 10744 11177 22269 26518 28271 23481 20606 23482 21676 47 202 7662 7730 1768 19975 36590 36537 29312 29226 21677 8776 10581 9199 10793 33283 17720 36591 33285 27336 26721 21678 7661 170 48 7730 22462 1775 36592 21152 36593 22805 21679 7798 7489 7570 9177 36594 36595 29706 29705 29228 36596 21680 9144 9200 7803 10189 34922 36437 35367 14619 35370 33253 21681 427 10670 1390 10794 22736 35856 3574 21759 36597 22737 21682 7943 7960 8125 10891 36598 31715 31829 24159 32418 34849 21683 8151 8751 8150 10519 36213 33718 33432 33435 33436 27743 21684 1532 1248 166 10401 2263 1733 2264 16607 32927 27888 21685 65 1163 181 10521 1843 1846 1840 35954 26935 25730 21686 8767 7514 7782 10382 36336 36599 36600 31755 24861 36337 21687 9545 9312 10794 11029 27177 28701 31565 27980 36601 34955 21688 7972 10003 7974 10768 13250 24333 36602 12855 36603 16988 21689 7589 7590 7585 10800 36604 30107 36360 36317 30108 29866 21690 629 10103 1056 10921 13880 16460 2511 13881 27588 13882 21691 1327 807 688 10846 4881 4880 4877 28943 20308 20731 21692 8621 10277 8450 11114 34608 15740 36605 34610 36606 29647 21693 186 1167 935 10072 1806 2369 2370 31458 21839 31340 21694 8467 8468 9978 10866 36607 18300 18704 15405 18301 17534 21695 8270 8201 8194 10468 11658 30235 36608 11983 19275 11984 21696 6859 8594 9113 10313 36609 36610 36611 36612 34758 34399 21697 6363 6382 6307 10127 6780 6777 6778 26157 28614 18521 21698 264 1189 266 10032 2760 2759 2758 13432 22344 35575 21699 7985 7979 7980 10034 36613 19483 20674 20675 13829 12722 21700 7976 7975 7977 10033 22496 30958 36614 22495 12711 20737 21701 8003 7992 7991 10035 36615 19482 19481 12718 16264 12715 21702 7980 7978 8951 10036 19484 36616 23536 13833 23535 12719 21703 8611 8387 8610 10037 34209 28126 36617 31741 28125 21094 21704 8512 8544 8533 9698 36076 36618 36176 35445 20962 30217 21705 424 400 423 10430 3437 3432 3438 17445 28258 28887 21706 9764 9886 9332 11026 32772 34475 34379 36343 33275 36619 21707 8832 9168 7778 9802 36620 35503 31995 31997 18047 22587 21708 8930 8485 8940 10490 19053 31708 36621 11825 22533 21324 21709 7529 7600 9967 10897 36622 25618 34366 36623 27389 24486 21710 8245 9068 8699 10038 32442 36624 34345 35557 12871 12770 21711 9766 9884 9356 10979 19979 18018 17065 36245 17108 12167 21712 8470 9758 8472 10913 21173 19367 36625 22248 26594 14546 21713 8678 10436 7906 11013 31452 17110 36626 30903 17112 17114 21714 8333 8273 8946 10992 33655 36540 36627 33656 27154 33601 21715 9304 10700 9800 11159 29425 31773 17999 17100 17867 35556 21716 8629 8481 9134 10785 36628 21605 35242 32101 24279 24278 21717 7652 7735 9144 7495 35879 35366 14616 36629 36208 36207 21718 942 1583 168 9709 2274 1866 2273 14470 16835 18333 21719 9188 7792 7469 7597 35779 36630 36306 36309 36308 22465 21720 9262 10183 9873 11055 15771 17487 17547 15772 28392 14938 21721 8395 8895 8936 10075 28606 21433 36631 28607 13558 22313 21722 9297 9886 9764 11026 32755 32772 34356 33320 36343 36619 21723 8067 8069 10019 10988 36531 20431 31467 33203 20432 18412 21724 539 10018 586 10982 27015 16745 4134 34891 22283 22285 21725 8201 8202 8195 10166 36632 35578 25779 13292 12079 13788 21726 8903 10115 7837 11097 35961 14189 36633 36634 29310 29311 21727 9294 10529 9786 11064 27527 24554 27526 30950 33545 27875 21728 9175 8826 9142 10216 29162 24755 36635 15847 16125 24756 21729 8107 8916 8964 10040 36636 23627 36637 29941 23628 15010 21730 1230 1153 10722 11188 6121 35638 33603 21951 33604 35043 21731 1126 10140 1127 10990 23568 18615 4242 24549 18841 14187 21732 7740 186 54 1211 31457 1799 36482 26708 1796 1802 21733 7838 7839 7837 10415 36638 26525 13044 13043 12674 26526 21734 992 1511 946 10562 2040 2477 5947 25047 36462 21310 21735 238 1047 240 10501 2630 2629 2628 29032 16995 15606 21736 9734 10312 9451 10800 33401 15923 32786 29788 31234 27464 21737 8017 10491 9782 10848 29994 29184 29992 33980 33446 32273 21738 6339 10144 6338 10828 28049 32544 6762 28770 33896 29388 21739 9542 10382 9938 10896 21200 23878 29456 21202 23690 20549 21740 7818 8956 7820 10752 36639 36053 30214 30215 27664 17249 21741 441 10431 448 11072 33322 30954 3643 26239 33870 31827 21742 735 1435 862 9833 5112 5111 5110 23022 12014 22300 21743 9161 8854 7788 10524 36161 30384 36640 18467 27074 30387 21744 966 967 996 10767 5083 5966 3038 35512 32383 15870 21745 967 1096 1464 10767 5969 4659 5968 15870 14037 15296 21746 9106 8570 9056 10571 36641 36133 34267 33355 34266 18383 21747 483 743 481 11150 3845 3844 3842 36291 36432 36642 21748 885 1362 9974 11021 3970 18144 34300 31893 18392 18391 21749 8683 10024 8681 11001 36484 33484 36491 33348 29382 12858 21750 7719 7498 7648 10546 36573 36643 36644 34078 28918 36574 21751 8297 8298 8058 10664 36645 36282 33561 24499 33560 20466 21752 9249 10638 9934 11048 30959 30332 29349 33029 31478 29252 21753 9579 9210 10393 11036 26802 24132 16486 21038 33684 26804 21754 7685 9914 7684 11082 28253 30189 36646 36049 32343 32342 21755 9266 9884 9766 11056 13841 19979 22017 34462 31118 14481 21756 7574 7573 7572 9996 35881 27947 36647 25457 25944 27948 21757 8807 8809 8808 10481 34640 36417 32077 19515 25236 30554 21758 9767 9881 9338 10904 36648 16675 13534 17095 22467 16643 21759 9338 9881 9767 10905 16675 36648 13534 22466 17091 17807 21760 9109 10334 8775 10793 26263 27672 36649 25964 26720 23655 21761 564 656 9952 10901 4260 12355 28883 22342 12358 12357 21762 767 766 752 10039 5185 5182 5186 22924 11291 36650 21763 6959 6985 6962 9692 7374 7296 7314 11459 25487 19791 21764 9488 10150 10548 10802 15890 15264 23008 23351 32684 23352 21765 7929 9049 7924 9846 28414 35268 36199 24156 31195 19100 21766 7858 10014 7862 10813 15362 13268 36651 16317 19939 16318 21767 251 10080 252 10912 30494 29240 2687 33781 25800 26027 21768 9574 10212 10031 10971 32830 29902 27758 28329 32606 30446 21769 7763 7640 8814 7502 31798 34388 34931 36652 36320 36322 21770 611 1147 670 10791 4494 4496 4488 23000 15573 34440 21771 8207 8206 10623 10900 36653 35371 29415 25708 29417 35495 21772 9147 10382 7782 10896 34093 24861 36267 33914 22404 20549 21773 269 268 9875 10869 2773 36654 13655 29229 18231 36655 21774 8474 8473 8603 10994 36656 33445 35067 20998 35559 31662 21775 1546 911 944 10526 5846 5844 2343 28873 22999 35299 21776 6897 157 137 10276 26368 2121 7244 26372 35740 26370 21777 8971 8042 8050 10627 30179 33512 36657 23493 22820 30180 21778 7554 197 1580 10391 36658 1753 36362 36364 18963 35179 21779 9595 10421 9229 10674 28777 15354 31015 31661 14256 16512 21780 9332 11026 10335 11187 33275 33212 32432 33768 31547 36344 21781 905 802 968 10217 5413 5420 5419 17861 14504 17251 21782 8620 8619 9170 11114 28075 29842 36659 24190 36378 24953 21783 9442 10260 10376 10653 22203 33540 21701 21705 21704 32951 21784 8113 8013 8923 10379 36660 36368 22287 22286 16098 30792 21785 6264 6359 8833 10378 6480 26829 36196 36197 31475 31474 21786 9604 10283 9221 10749 27995 20395 30442 30859 18910 19245 21787 7520 8868 7706 7769 36054 24341 36056 36661 26887 26888 21788 8031 8085 8039 10674 28988 34140 36662 23021 34107 32258 21789 1369 434 1190 10478 3610 3581 3611 21547 21888 26215 21790 8967 9018 8397 10445 32689 36663 13934 12907 13936 21954 21791 1465 10042 480 10923 11230 29773 3838 11233 34817 11234 21792 7602 7599 7604 9975 36007 35816 32891 30484 32892 24117 21793 925 1243 1594 9983 5900 5902 5901 15879 11834 18048 21794 8780 7765 7467 7529 34822 36664 36425 34365 36424 34823 21795 10258 11047 8948 11175 22219 36503 33903 30960 33906 36559 21796 442 9872 1204 10859 12384 12019 3366 12644 14258 12645 21797 1080 1082 10980 11044 6093 29115 33650 33898 36246 36383 21798 8526 9194 8848 10248 16117 36164 36665 13193 33777 14285 21799 842 10062 823 11143 36506 34097 5510 35450 35889 35888 21800 892 893 724 10802 5058 5057 4959 28851 28852 22501 21801 7565 7566 7552 10429 35063 36666 34383 34386 32009 26130 21802 569 1456 1459 10777 4284 4286 4283 11467 23288 30122 21803 7850 10087 7963 10927 13742 29130 36667 13743 33653 13353 21804 8831 7460 7799 7624 36386 36668 34524 34179 18543 36387 21805 508 10824 9929 10934 36223 28387 29077 31484 29095 29097 21806 1367 10700 9800 11063 35738 31773 34826 33158 31775 24363 21807 9336 10306 9597 10925 29718 28115 26547 27070 20014 25087 21808 8980 8643 8677 10165 30724 32846 35508 30725 32016 13197 21809 6311 6356 6353 10154 6799 6798 6796 31869 20993 19140 21810 555 508 556 9929 3973 3978 3977 24379 28385 29077 21811 10728 10847 9870 11025 32266 19026 34662 36075 35667 30511 21812 7534 25 1165 10800 36315 1687 20443 16464 20444 36316 21813 6312 9139 6255 6333 17798 36090 6444 6449 6447 20732 21814 7808 9118 9112 10396 32308 35786 36669 29987 35785 27282 21815 705 578 734 10625 4328 4330 4329 26264 15394 28725 21816 7481 7576 8878 10347 36340 27920 36670 36341 28625 22782 21817 7738 7666 6856 6994 24344 36671 36672 24346 7036 24345 21818 7782 7514 7651 10382 36599 36449 22402 24861 20547 36337 21819 9636 10158 9252 11101 20106 15643 23203 31167 24483 24484 21820 9180 8547 7798 10690 36073 36673 29744 28215 29707 29259 21821 8795 8974 8054 10368 36674 34024 26727 26726 17184 19458 21822 8101 8103 10094 11040 36675 15426 29486 33008 12100 15891 21823 1489 570 1432 10551 4289 4177 4290 35239 12647 34818 21824 9392 10325 10453 10595 13499 33192 12870 14935 30319 14541 21825 1483 1284 321 10486 3042 2816 3043 22633 11975 11974 21826 1488 1476 826 10221 5527 5524 5525 27065 18055 28947 21827 8750 8109 8192 10023 20000 36676 30976 19656 21797 19695 21828 8152 8915 9761 11022 36677 27346 22591 23347 23349 21730 21829 8684 10698 9071 11001 30135 26623 36678 35863 35474 36008 21830 892 10548 1504 10802 32413 15263 5778 28851 32683 32684 21831 7606 1176 18 7629 34171 1659 36679 33450 36680 34170 21832 979 848 980 10466 4696 5617 5616 31968 26242 26241 21833 10198 10283 9396 10822 34815 26193 29165 19614 32095 35378 21834 477 481 1235 10596 3824 3826 3815 31000 14018 14734 21835 7892 7886 9713 10989 36681 19573 36682 36683 24616 24615 21836 9302 9568 10348 10994 17832 26379 14115 18604 20875 21935 21837 9741 10484 9377 11186 27986 28190 27907 33112 33293 30827 21838 7759 7481 8878 10347 36358 36670 36684 35335 28625 36341 21839 8590 9060 8589 11132 36685 20871 34910 34057 21597 22407 21840 7666 6919 6856 6994 24448 7031 36671 24345 7036 7038 21841 10083 10664 9309 10888 18184 27239 28405 30953 22014 24500 21842 10060 11017 9404 11142 28282 30212 26694 27235 28882 28759 21843 623 620 622 10448 4539 4529 4540 17190 25175 33437 21844 1231 929 1567 10117 5001 5916 5915 18430 26203 13343 21845 7554 10391 7564 10747 36364 24739 36686 36687 24742 24744 21846 8010 10597 8012 11003 27822 25314 36688 27823 33746 22223 21847 8274 10099 8275 11032 25901 15123 36689 27893 25424 25425 21848 9645 9811 10327 10814 28592 32761 26852 26141 26854 29929 21849 8100 8099 8101 11092 36468 36690 29485 36469 33279 24315 21850 8237 8314 8258 10318 36691 19954 31850 14700 22361 19618 21851 8397 8121 7944 10397 30148 36692 14127 13935 14129 17161 21852 9377 9993 10037 10826 15722 29497 28206 13523 31017 22261 21853 9428 10594 10370 11008 24927 22824 21656 20217 25784 24790 21854 8372 8374 8371 10955 36693 36390 31434 22920 31437 35846 21855 9414 10438 9614 10691 18955 31918 25107 14179 20102 17505 21856 6939 10011 6929 10744 30474 31095 7428 29219 35216 21077 21857 10145 10430 9268 11094 17446 17238 31431 23215 16307 15593 21858 10105 10365 9241 11190 27719 33141 14628 14060 14630 29335 21859 1513 7655 45 10272 36694 36181 1760 35253 35547 36183 21860 8605 7962 8578 10452 21080 36695 25049 19503 12104 20795 21861 8332 9938 10568 11008 31423 31979 35161 31425 19091 21487 21862 9039 10246 8904 11097 26444 36696 36697 19177 36698 26445 21863 1304 1430 804 10479 3796 5428 4816 15853 24268 24267 21864 9059 8234 8704 10577 35903 19354 34810 31645 15422 19355 21865 8382 8336 8471 10787 29602 34095 36699 29604 20760 21183 21866 9115 9560 9149 11061 17825 34603 36511 36700 36701 30894 21867 8724 10851 9587 10947 32997 25608 31928 33426 29898 36124 21868 1337 387 383 10485 3354 3353 3355 21722 20029 11845 21869 8309 8260 8174 11065 35270 33044 36702 31601 28317 35271 21870 1346 1319 768 9849 5265 5264 5262 29319 28095 32708 21871 10019 9303 10805 11128 26880 15839 30488 30413 35072 26304 21872 9805 10964 516 11039 35106 36370 35087 34319 36233 32479 21873 7501 7763 7640 8770 36703 31798 36260 36261 32317 32401 21874 8332 8181 8331 10568 36704 13031 35162 35161 12113 13033 21875 8943 10064 8957 10947 21509 31181 36705 25717 36123 25718 21876 511 1427 10152 10628 3176 13540 24283 16550 16279 16278 21877 9200 10189 9123 11166 33253 35258 35257 36438 23974 35971 21878 9891 10815 7903 11013 12851 28554 29111 17530 36706 16905 21879 8328 8559 8492 10970 35874 36707 36464 36465 23662 29956 21880 42 206 7561 1580 1755 16173 36708 1750 18962 1757 21881 507 1333 503 11155 3956 3948 3954 25990 32515 36384 21882 7863 7966 7866 10564 34406 31316 36142 27843 17126 20113 21883 7516 8867 7687 10332 36709 24101 36283 36286 24102 23959 21884 1275 10045 1347 11066 16119 20123 6157 35803 20125 20126 21885 6321 6298 6331 11096 6729 6582 6730 36067 35035 29505 21886 8392 10754 8912 11146 35849 31489 36710 35241 22878 31490 21887 9226 10411 9919 11184 32979 21992 33572 32285 28519 24760 21888 9344 10390 10209 11131 24679 24680 22421 32039 33641 29174 21889 8526 10248 8446 10680 13193 36584 35214 19958 34339 19959 21890 1579 77 205 7672 1888 1891 1894 32328 34278 36711 21891 1272 1144 1235 10978 3451 3816 5150 26922 24611 33923 21892 1144 402 403 10978 3447 3392 3448 33923 35682 19905 21893 953 898 994 10508 5802 5793 5803 14335 24729 24999 21894 965 990 724 10820 5061 4581 5059 34702 33853 22770 21895 8574 8523 8575 10361 36712 36713 27001 26772 27000 11855 21896 8223 8299 8901 10977 32002 36253 36714 25342 36254 31427 21897 8219 8901 7927 10977 36715 16737 36035 35453 36036 36254 21898 7905 9891 7903 11013 34880 29111 36716 31702 36706 17530 21899 689 10846 9624 10937 33867 28442 34072 33868 29151 32358 21900 7890 10336 7896 10843 24820 18789 36717 32153 35184 25080 21901 8039 8110 8856 11033 36014 36718 34106 34108 30061 21457 21902 8684 9071 8683 11001 36678 35313 36719 35863 33348 35474 21903 8242 8295 8241 10215 20416 36720 18233 17695 15946 20417 21904 9298 10184 9746 11104 26860 24304 24659 26862 24957 23341 21905 9574 9842 10212 10971 26342 29641 32830 28329 30446 28330 21906 599 598 1331 10961 4163 4428 4427 34785 35427 32257 21907 8016 8017 8014 10848 36721 33979 18587 18588 15892 33980 21908 6306 6368 6371 10459 6771 6774 6773 23048 26778 29840 21909 9804 10506 639 11120 26436 33872 33871 31852 35777 29408 21910 368 241 10093 11194 2635 28484 36722 36723 29453 36169 21911 877 10267 1467 11030 26561 19384 5726 31131 19645 17601 21912 8251 8317 8250 11198 30458 36724 36440 36441 31860 35275 21913 1337 1328 387 10485 3376 3375 3354 21722 11845 11844 21914 919 917 10983 11024 5867 35867 34793 35308 35428 36725 21915 178 75 7665 1586 1883 36527 32945 1886 35134 1880 21916 7614 7474 8769 7558 36726 36727 31006 31007 23930 36728 21917 8434 9056 8309 10976 36729 35723 33689 25285 31579 34268 21918 9386 10341 10151 10826 21795 34602 22032 23671 19439 30111 21919 8482 10162 8909 10835 15840 17463 36730 32169 17466 17468 21920 8588 10163 8899 10836 13768 12824 36731 16566 32027 16567 21921 490 489 491 10975 3878 3883 3882 23864 26024 16779 21922 494 493 491 10975 3892 3888 3893 34630 26024 27696 21923 7639 7680 7728 9933 34765 36732 31140 31142 22514 27860 21924 9261 10385 9736 10783 19933 30128 30105 19935 30517 19086 21925 1524 1525 710 10438 4991 4990 4674 17504 11987 13640 21926 8425 9017 9052 9896 20890 36733 29325 18127 16492 14508 21927 7603 10372 7537 10865 33876 30856 36279 35211 36734 13955 21928 9216 9974 10040 10496 22907 22909 19349 29509 15266 12616 21929 9589 10170 10077 10510 26646 27333 31171 20517 26426 24351 21930 9224 10040 9974 10496 21382 22909 11308 17692 12616 15266 21931 766 10039 767 11050 36650 22924 5185 33825 22927 22929 21932 8216 8998 10684 10882 36103 32661 29888 35511 31189 36735 21933 9806 10457 9385 11113 31152 14998 33757 16368 16446 18151 21934 554 1351 462 10229 3751 3740 3749 12464 17864 13359 21935 853 1155 717 10408 5026 5025 5017 18476 34511 20754 21936 9156 9155 10414 11069 36736 32204 20857 36326 32863 33006 21937 316 10707 317 11162 35280 30601 3003 32228 30602 30547 21938 1534 167 1573 10440 2269 2007 2270 22207 19432 28198 21939 9839 10737 9461 11125 14963 34037 33649 29391 32724 28830 21940 823 10473 932 11143 31075 20510 5512 35889 21105 21104 21941 821 1396 1397 10535 5495 2721 5503 12563 22678 17841 21942 9246 10034 9989 10492 12723 24474 12211 27103 13599 13831 21943 9291 9989 10034 10492 13448 24474 21191 17796 13831 13599 21944 9246 9991 10036 10492 11791 24476 12720 27103 13835 13600 21945 9334 10036 9991 10492 24026 24476 15462 17797 13600 13835 21946 8359 8356 8700 10811 35261 36737 35399 33769 32598 35262 21947 8892 9029 8394 11146 36413 31020 36738 26055 31021 30304 21948 8556 8332 8583 9938 36180 31424 34935 23689 21486 31423 21949 505 504 595 10028 3953 3958 3957 32692 12327 17778 21950 1080 1078 1082 11044 6092 6094 6093 33898 36383 29100 21951 9216 9985 10029 10496 20023 24334 26168 29509 14777 13466 21952 255 369 259 10059 2715 2714 2713 20501 17927 34459 21953 1491 892 1504 10802 5777 5778 4626 31641 32683 28851 21954 9238 10029 9985 10496 18798 24334 11486 18537 13466 14777 21955 774 775 772 10510 5283 5282 5280 27611 32881 26427 21956 7672 1579 76 7665 32328 1887 36739 32330 36740 32329 21957 752 10039 766 10864 11291 36650 5182 11292 33824 11293 21958 1275 1205 1250 10461 6204 6128 3616 19385 17478 12444 21959 8335 9032 8718 10462 23723 36741 36742 19387 17590 26367 21960 1570 10855 1559 11141 35172 33310 2352 35173 32218 28766 21961 30 7615 183 10631 36269 20585 1702 36271 30887 31406 21962 1476 826 10221 11020 5524 18055 28947 32737 13711 18056 21963 363 1123 1189 10790 3253 3252 2761 12931 32114 30281 21964 8940 7988 8930 10490 32810 11618 36621 22533 11825 11824 21965 606 599 1331 10542 4435 4427 4436 12424 35426 12425 21966 9168 9802 8832 10643 22587 31997 36620 21425 35155 22068 21967 8508 8509 8401 10561 36743 36744 35092 35093 13395 31508 21968 9922 10989 7893 11195 25031 36745 36407 30768 36746 30722 21969 6335 6296 6386 10831 6719 6721 6720 32662 35653 35220 21970 8366 10001 10428 11126 13244 15933 12534 36747 29825 21668 21971 6983 6966 6969 9682 7405 7344 7304 33167 23122 20550 21972 8378 10684 8998 10882 35278 32661 35277 27516 36735 31189 21973 484 430 438 10967 3589 3587 3590 31374 28475 24086 21974 438 436 1251 10967 3588 3620 3619 28475 28474 25835 21975 9668 1376 10715 11178 34053 32747 14368 23862 23620 32748 21976 8150 10584 8581 10902 33659 12833 36748 36149 12836 12837 21977 419 415 417 10966 3514 3512 3515 35838 19198 35206 21978 421 419 420 10966 3532 3524 3533 33511 27148 35838 21979 9180 7570 7798 7490 28212 29706 29744 36749 36750 36751 21980 10051 10357 9417 11145 11250 18394 25544 32977 18396 17061 21981 9404 11017 10060 11024 30212 28282 26694 31837 31836 34134 21982 9564 10125 10080 10635 17998 30331 24858 22374 15339 21410 21983 748 677 1009 10233 4810 4824 4826 20868 32412 22635 21984 9180 7542 7570 7490 28211 28213 28212 36749 36751 36752 21985 1274 25 7589 10800 1682 36314 36753 35758 36317 36316 21986 581 542 543 10392 4147 4137 4148 14457 31086 12832 21987 7516 7761 8867 10332 36346 36754 36709 36286 23959 32562 21988 6939 6927 6929 10011 7275 7427 7428 30474 31095 23181 21989 8085 8734 8087 11009 33672 35908 36755 33673 35909 33268 21990 9087 8308 10589 10936 36756 31886 30890 32216 33363 36231 21991 9662 10043 9456 11027 29044 21439 20336 28088 20677 29000 21992 8706 8707 8002 10847 36757 16541 15534 15536 15207 16543 21993 8138 8136 8197 11171 32705 36460 36758 32707 32860 31963 21994 8626 8460 8627 10533 33815 36759 30764 19285 25315 28133 21995 8322 8259 8439 10453 30363 14722 36760 24094 14723 12868 21996 8700 8356 8355 10811 36737 36160 35217 32598 16970 35262 21997 7717 1211 162 10427 36354 1798 25842 23170 25843 25455 21998 1314 1049 472 10523 3801 3781 3799 17670 33954 20168 21999 1217 9852 1218 11154 33782 17137 6210 27110 32936 32935 22000 599 10134 598 10961 13187 35272 4163 34785 32257 31651 22001 482 9928 481 11015 17313 14733 3834 17858 30963 17859 22002 8944 9763 7910 11014 25744 28454 36761 36523 30551 30550 22003 7709 51 200 7658 36762 1784 21483 36763 36764 36765 22004 41 7561 7554 1580 36766 36363 36767 1751 36362 18962 22005 1234 322 310 10236 2989 2988 2990 21316 27187 35501 22006 8686 9071 9079 9851 35314 28854 23046 12083 12642 26622 22007 9013 8667 8668 10002 31040 31614 35676 29327 15376 12963 22008 1251 1160 1252 10959 3656 5175 3986 28472 25464 34215 22009 8280 8988 8283 10956 27969 36768 24632 28272 27790 27633 22010 8325 8283 8326 10956 25405 36769 31847 31615 28684 27790 22011 7826 7827 10095 11059 36770 35767 12483 33076 30286 36404 22012 270 10092 566 11057 28641 23057 2788 23167 33075 28333 22013 1308 368 10093 11058 2646 36722 23845 33077 30285 36771 22014 620 10448 623 10750 33437 17190 4539 23868 27962 24773 22015 1251 509 438 10959 3631 3630 3619 28472 28473 31668 22016 9343 10331 9615 10837 25653 15996 33624 14969 30688 22774 22017 7489 7536 7570 9177 36772 26735 36595 36596 29228 22521 22018 8246 8247 8428 10910 36004 36773 34480 34479 31516 30917 22019 1576 1231 1567 10261 5628 5915 2326 31460 27312 23800 22020 1336 640 1198 10814 4640 4026 4641 30793 33417 31541 22021 1574 1535 151 10384 2184 2183 1971 26840 28729 35146 22022 10196 10306 9336 11121 34591 29718 30985 22681 29831 32235 22023 8764 8044 8856 10954 36774 35240 33771 23994 30342 24067 22024 1484 10753 9686 11164 35153 11434 35320 35154 32282 34983 22025 870 1392 1200 10930 5704 4590 5703 22750 33828 23443 22026 9458 10465 10441 10915 15195 27470 15709 26233 21144 24813 22027 8251 8129 8764 10954 36463 36775 23175 23902 23994 28791 22028 6859 6923 8594 10313 7045 36776 36609 36612 34399 35363 22029 1058 325 304 10953 2961 2960 2949 31764 23486 24065 22030 9504 10269 10527 10738 16667 27435 26119 16545 26122 11920 22031 1044 965 325 10953 3062 3064 3063 24068 24065 30282 22032 9342 10465 10024 10915 12443 16179 12670 34330 24814 24813 22033 1201 177 1567 10261 1907 2323 2322 30593 27312 25689 22034 10441 10465 9342 10915 27470 12443 24738 21144 34330 24813 22035 702 642 643 11031 4647 4169 4648 32086 30874 32302 22036 8839 8877 8342 10566 36777 26978 29754 22848 26979 14788 22037 8517 9660 8790 11166 18880 32754 36778 21818 34696 21819 22038 8422 10398 8592 10834 18846 27605 36779 23818 28744 23819 22039 6913 6944 6883 10205 7143 7141 7136 23505 35715 24865 22040 699 1059 820 10769 4934 4936 4933 24842 31054 14596 22041 570 1484 1368 11164 4288 4287 3226 34888 35145 35154 22042 9798 9364 10545 10827 29693 28350 12525 36132 31590 21904 22043 539 536 538 10952 4119 4109 4120 29614 24203 25997 22044 538 534 1259 10952 4110 4099 4111 24203 24232 19183 22045 6346 10031 6374 10971 29649 34114 6810 28328 36780 32606 22046 8009 8709 9923 11172 36781 30130 28588 36782 31520 36783 22047 9770 10383 9325 11134 15614 21276 21277 33882 28712 23531 22048 9258 9776 10724 11162 33392 24187 25422 32138 30549 33393 22049 152 61 7741 1529 1827 36434 34227 1830 33396 1824 22050 352 9913 571 11007 29063 11269 3197 28703 12436 12864 22051 7858 7855 7859 10771 12370 36784 36065 12772 23458 12773 22052 8607 7892 9713 11195 36785 36682 21301 35199 30723 36786 22053 8051 8049 8046 11022 36787 33790 35486 26607 30786 24799 22054 8077 10055 8178 11151 31199 31766 36788 24238 36789 30401 22055 8775 10334 8503 10895 27672 23072 36790 20498 27247 27525 22056 9124 8527 8844 10374 31420 36791 34802 20461 34801 31421 22057 1456 1003 875 10777 5720 5719 5721 30122 34259 23826 22058 741 740 1209 9710 4793 5135 5134 12417 29024 24335 22059 8234 9044 8969 9711 34302 31839 36569 33295 28662 16181 22060 7974 10768 10003 11112 36603 16988 24333 23721 23450 29504 22061 1489 835 1485 11036 5562 5560 5563 36495 21037 36496 22062 8009 9923 11003 11172 28588 22573 25623 36782 31099 31520 22063 8332 8331 8638 11008 35162 34665 33449 31425 20218 13796 22064 1262 934 160 9914 2231 2232 1854 31163 24982 27221 22065 9665 9524 10519 10584 17382 21963 28544 20230 33145 23397 22066 1175 9991 10741 10986 24634 20493 36288 24635 36792 15764 22067 10007 10265 9531 10706 29267 28458 27468 30984 27828 23305 22068 6352 6289 6351 10175 6684 6615 6685 18849 17342 26541 22069 369 370 259 10394 2733 2732 2714 35010 21125 20209 22070 9544 10556 9431 10782 32572 20133 17744 19930 19898 20783 22071 9396 10283 9604 10862 26193 27995 25262 21361 26790 23212 22072 9123 10189 10504 11166 35258 35260 23973 23974 21820 35971 22073 9573 10881 9849 11050 25572 32709 26333 26022 28097 34299 22074 1412 1447 714 10280 5008 5007 4576 15309 27553 20299 22075 6320 6312 6321 9802 6802 6804 6803 25664 36793 20289 22076 9670 10594 739 11052 28877 35362 33335 28460 32080 24397 22077 344 10049 331 11075 23502 25381 3093 23503 19967 21134 22078 6362 6363 6290 10384 6692 6691 6627 28730 18734 17218 22079 9159 8791 10154 11088 36794 26729 34102 34104 24463 26731 22080 961 1074 725 10139 2175 5065 5052 13004 16690 13002 22081 9572 9258 10707 11162 31165 25420 34059 29288 30547 32138 22082 9606 10327 9271 11039 27734 34163 34132 28734 34631 28735 22083 7548 7616 33 10423 36795 36796 36797 28043 36798 33866 22084 1069 1439 1386 10273 6086 6088 3061 15602 25815 34554 22085 10026 10822 10283 11171 34960 35378 23211 33886 31965 36799 22086 9360 10721 9615 10751 28815 31555 23551 23552 20695 28816 22087 689 691 782 10937 4882 4885 4884 33868 32357 31881 22088 8929 8380 8290 10364 34737 33803 35611 12701 31680 32868 22089 633 9800 10700 11159 25033 31773 35739 25034 35556 17867 22090 1186 48 170 7730 1772 1775 1778 24675 22805 36593 22091 8429 8601 8306 10946 34314 33456 36800 21446 24264 31321 22092 8429 8395 8432 10946 36801 35809 20529 21446 21447 30862 22093 1299 10111 236 11023 31331 35938 2609 34206 36802 34534 22094 293 297 298 10500 2897 2903 2902 22064 29039 25668 22095 858 721 857 10279 5044 4767 5045 18868 19218 18671 22096 1356 1086 805 10669 5431 5430 5432 31450 23534 31230 22097 7898 10270 7902 10832 21851 14719 36803 35681 12480 15138 22098 704 1499 892 10548 4957 4961 4960 22118 32413 14609 22099 9179 7525 7681 7653 36804 36805 25933 25934 25935 36806 22100 7847 8651 7841 10617 35746 36807 36808 35747 24292 13890 22101 8416 8417 8586 10957 34476 34886 36809 32166 32974 27404 22102 400 1250 398 10945 3430 3429 3427 33009 32352 31261 22103 399 398 397 10945 3422 3405 3423 27663 33197 32352 22104 10116 9476 11047 11189 28539 33148 22218 22546 26058 17653 22105 8095 8099 8098 10944 24314 36473 36810 33749 17503 36474 22106 8097 8092 8095 10944 35345 33748 36811 32200 33749 30359 22107 219 1353 217 10943 2525 2524 2522 23597 24277 18802 22108 217 1029 215 10943 2515 2514 2512 24277 30355 23464 22109 10429 10443 9447 10823 26132 29654 19922 34501 29655 24547 22110 1350 1098 1004 10860 2996 6012 3246 25088 28891 26087 22111 53 162 7717 1211 1792 25842 36455 1795 36354 1798 22112 8979 8863 8914 11084 36427 21550 36812 28802 21551 21442 22113 7872 7868 8757 10007 27901 30598 36395 14993 22694 30971 22114 6932 6931 6922 9693 7321 7423 7424 23791 26358 27509 22115 7811 8828 7786 11099 35707 22244 36813 34841 22247 22048 22116 8419 8999 9063 11038 34192 35385 36814 22141 28189 31451 22117 8607 7892 7886 9713 36785 36681 34317 21301 19573 36682 22118 1079 1431 1384 10173 6097 2680 3251 21897 18102 25558 22119 7711 7716 7717 10427 34526 36815 24811 19607 23170 34527 22120 9047 9070 8431 10457 26951 36816 30311 14996 30310 26952 22121 7918 9057 7917 10133 32469 35025 19565 16499 19566 15275 22122 8440 10556 9181 10782 24891 32573 36817 24892 32425 20783 22123 9292 10259 9715 10955 30166 30526 20515 34199 23061 31472 22124 7768 9136 9173 10144 36818 36819 32540 32543 32545 33250 22125 7759 9124 8844 11183 35336 34802 36100 35337 34803 16061 22126 8448 8447 10294 10899 36820 28503 31392 22278 25082 28504 22127 9569 9686 10551 11067 26113 33198 26048 32599 34819 30997 22128 8771 7787 8535 10321 30847 36821 31585 25555 32140 30848 22129 7955 8150 8581 10902 36822 36748 36823 25179 12836 36149 22130 6313 6344 6346 10971 6806 6809 6808 33963 28328 30994 22131 1046 10272 1543 11017 36824 25694 6060 35679 15628 18519 22132 598 545 544 10651 4157 3853 4158 33699 17193 31778 22133 9693 9384 10648 10658 16310 17944 17945 23789 35356 13608 22134 9667 11047 10258 11175 22136 22219 25979 27574 30960 36559 22135 7643 10332 7685 11082 35049 26585 36825 31688 36049 19839 22136 7741 7645 7702 10242 33395 36826 33943 33398 27337 33399 22137 829 832 683 10939 4853 4852 4839 24375 22672 24084 22138 7998 7999 8000 10938 23747 36827 36489 24081 18783 24374 22139 1394 793 1092 10076 5377 5376 5378 28907 32986 23465 22140 8855 8001 7999 10938 35390 36828 33756 30396 24374 23154 22141 680 1423 829 10939 4829 4841 4840 21505 24375 31399 22142 8966 8559 7926 10970 36829 33635 34637 28528 35531 29956 22143 7894 9922 7893 11195 36409 36407 36830 35465 36746 30768 22144 8791 9157 7751 10127 36587 36831 32057 26768 28615 34251 22145 9225 10822 10026 11171 12318 34960 34157 33959 33886 36799 22146 9277 10704 9596 10997 22687 17457 31280 14040 29733 25589 22147 9016 8177 8608 11147 36832 34002 20806 16664 20808 29056 22148 9307 9606 10287 11173 30671 31939 27596 30409 22590 30674 22149 9014 7831 9072 10395 30835 15900 36833 12579 11519 15901 22150 9282 10306 10196 11121 32234 34591 12306 31934 22681 32235 22151 6321 9802 6312 11096 36793 20289 6804 36067 17800 16594 22152 7569 7617 7621 9828 36586 25628 27051 27052 19650 17913 22153 9915 10260 9466 10653 31379 34642 14247 19988 19987 32951 22154 9425 10515 10590 11046 17625 31981 17889 14464 31975 17626 22155 8339 8812 8625 9797 31182 34909 26916 23338 22972 15031 22156 904 11036 10393 11164 35678 33684 34980 34982 34981 36834 22157 8231 8995 8804 10241 18772 36835 19856 14880 19857 14567 22158 9071 8973 8362 10698 36836 33597 26621 26623 26624 14121 22159 7587 1578 23 7557 36837 1674 36838 36839 36840 36841 22160 8474 9065 8418 10994 20997 31783 36842 20998 31784 17482 22161 792 1424 1316 10112 5374 4771 5367 22274 22272 22273 22162 8161 8392 8288 10754 36843 35848 30508 29448 21545 35849 22163 1184 1183 808 10505 2703 5328 5442 29939 22149 22066 22164 8127 8245 9088 10759 35437 36580 12072 12805 12807 32443 22165 1159 155 960 10807 2206 2208 2207 31257 14580 25119 22166 7962 8607 10452 11195 36844 23751 20795 18483 20796 35199 22167 732 985 962 10370 4341 5006 5095 23847 34138 24736 22168 225 224 11041 11106 2553 36845 34553 36044 34013 35510 22169 968 1547 1168 10338 5832 2287 5971 16922 15385 16923 22170 7968 10738 9763 11060 32243 11919 32242 36429 25416 30748 22171 8170 8072 8593 10805 36846 23437 36256 36257 20159 22328 22172 958 1469 1445 10558 5963 5056 5666 34022 23545 14351 22173 7609 7601 7603 9832 26472 33875 36847 21906 33874 22142 22174 8662 7903 9891 10885 36848 29111 34326 28163 27406 31351 22175 8183 8231 8144 10359 17727 36849 23609 17729 23610 14878 22176 9764 11026 10335 11146 36343 33212 30300 30303 30305 36255 22177 9395 10755 9661 11079 23842 31807 27648 23843 30530 21206 22178 615 10061 613 11078 23858 35325 4502 29709 32063 29708 22179 9887 10254 9359 11185 28307 30230 25566 35116 30232 25401 22180 9222 10192 9636 11100 25699 15717 20757 31315 32069 24937 22181 7779 9179 7525 7681 34634 36804 36850 34780 36805 25933 22182 8935 8108 8104 10797 36333 36851 12740 11830 12742 36328 22183 7968 8944 8959 11060 36428 30701 36852 36429 30702 29734 22184 286 1409 228 10409 2581 2580 2569 24199 17154 31130 22185 7684 7685 7683 9914 36646 35069 31176 30189 24980 28253 22186 8222 8883 8221 9856 29019 35343 34007 25651 21618 29020 22187 1367 633 459 9800 3736 3735 3721 34826 22662 25033 22188 811 1197 1393 10507 5455 5457 5456 22720 22721 22289 22189 7867 7866 7868 10701 35661 30597 36853 12943 27903 15197 22190 6379 6304 6340 11077 6541 6763 6765 28263 19730 35126 22191 7595 7767 7484 8702 15632 36854 36855 34415 36856 34414 22192 1459 1391 991 11054 5494 5722 4282 24552 27123 25158 22193 8644 8435 8437 10892 32431 36857 34050 20554 26083 27521 22194 6859 9113 6909 10313 36611 36858 7040 36612 36235 34758 22195 9569 10551 9659 11067 26048 25305 25526 32599 28359 34819 22196 9852 10528 9204 11154 32854 32743 32853 32935 31214 26848 22197 7764 8806 9104 10984 27730 36859 32850 22668 33820 27732 22198 9025 9104 8774 10985 32851 36860 23386 17555 23388 33821 22199 9003 9104 8498 10985 36861 36862 36520 18909 36521 33821 22200 638 639 819 10506 4022 4628 4627 32424 33873 33872 22201 505 10028 1145 10934 32692 35979 3965 36863 32259 31703 22202 1597 1509 718 10717 5029 5028 5030 29745 15586 18707 22203 8435 8310 8436 10892 36864 27563 36865 27521 27564 25878 22204 9431 10556 10310 10906 20133 35685 15347 22360 17645 29421 22205 8018 8906 8019 10491 33631 35629 36866 33632 22665 23997 22206 1381 1111 1382 10911 5480 6138 3951 30019 26890 36480 22207 867 602 646 10640 4449 4447 4450 24627 34451 24949 22208 7631 7621 7545 10401 21672 36867 33429 21671 33430 19652 22209 1548 10483 10272 11142 34566 33972 34567 36012 34666 29715 22210 446 1390 431 10909 3596 3575 3594 29193 34890 35858 22211 869 931 711 10482 4995 4994 4992 21570 29879 21571 22212 645 646 602 11007 4448 4447 4292 12860 31102 34694 22213 8545 8459 8546 11119 35534 36868 34258 32207 33982 22491 22214 1571 1218 1566 10319 6219 6212 6220 14622 34621 14623 22215 1399 891 1422 10907 5769 5774 5773 26725 23963 26016 22216 205 1510 975 10373 2472 2471 2469 31704 20130 22582 22217 1093 1091 1315 10932 4560 5302 6115 33553 32657 23860 22218 1123 1315 776 10932 3254 5303 5287 30787 31101 32657 22219 381 375 1119 10569 3315 3304 3316 29469 27753 21303 22220 9964 10499 9480 10712 27930 33569 23317 29969 30772 29137 22221 8819 9143 9172 10776 25656 36869 34844 29755 35265 16490 22222 8994 9065 8593 10903 27908 36470 36870 27910 20161 26906 22223 743 1135 10068 11150 5148 16280 16812 36642 32957 34594 22224 570 10551 1489 11164 34818 35239 4289 34888 35700 32722 22225 8693 10262 7960 10891 12937 28391 36871 35593 34849 32129 22226 410 412 411 10887 3488 3487 3483 27786 26153 33667 22227 8969 9711 10726 11045 28662 23402 28664 36570 32769 33296 22228 9221 10283 10198 10822 20395 34815 30444 26891 19614 35378 22229 9240 10450 10070 10919 22916 22714 31219 24254 28914 21957 22230 8928 9149 7806 10512 36872 34604 32359 30710 30906 34605 22231 9221 10742 9745 10749 20579 14857 18686 18910 18912 19562 22232 9732 10765 216 11127 30465 34477 29623 25823 29624 33847 22233 8058 8298 8640 10083 36282 21375 36873 35020 12984 20465 22234 7595 7582 7621 9907 36874 34691 21827 15637 20474 24087 22235 9627 10537 9475 10863 29923 19339 34090 31527 25133 31528 22236 8200 8933 8199 11175 25738 36875 34717 24022 34871 25739 22237 8353 8355 8354 10874 25908 36445 36876 25909 16231 24968 22238 1270 781 873 10875 4520 5324 5326 25913 24970 16291 22239 7916 8635 7821 10877 25915 36877 36446 24973 17714 25916 22240 873 871 1022 10876 5325 5706 5705 24969 25911 27660 22241 8494 8841 8498 10878 36878 36447 25917 25919 24974 16223 22242 667 790 551 10873 4195 4194 4192 25921 33230 24972 22243 7983 8942 7987 10622 34986 11679 36301 27215 12365 12364 22244 9008 9013 9040 10872 29326 36879 36444 28159 35074 29328 22245 9162 9163 8452 11095 32527 33465 36880 32529 31951 32528 22246 9373 9676 10687 10696 16579 18110 14173 13556 35752 19166 22247 7674 7675 7681 11135 32643 36881 35652 32888 34783 31349 22248 7904 8678 7906 11013 30636 36626 36882 30902 17112 30903 22249 7805 8572 9111 10514 36111 36140 36883 36112 36139 33848 22250 8391 8952 8997 9715 36238 35178 30523 30524 30525 23060 22251 7479 7577 8844 10374 36884 36081 36885 36886 34801 36887 22252 7810 7812 7811 11099 18119 34675 36888 15287 34841 18120 22253 8204 8657 7889 10084 33181 21407 36889 20315 21319 15689 22254 7564 7554 7563 10391 36686 36890 25246 24739 25245 36364 22255 8542 7769 9183 10472 36891 26643 20769 20770 18061 26270 22256 8433 9897 9086 10796 26475 20153 36892 26510 20521 20522 22257 8813 10138 8963 10786 13196 29393 36893 12594 29059 15002 22258 8566 8567 10288 10870 36894 34228 20915 22027 16241 34229 22259 10095 10761 9518 10916 18386 19965 20562 20563 20564 33945 22260 366 1457 1448 10460 3267 3271 3270 26280 20090 32928 22261 9464 10593 9993 10987 28644 29794 29622 15679 33238 33237 22262 595 1145 505 10028 3966 3965 3957 12327 32692 35979 22263 7922 8963 10124 10786 36895 29058 14845 12497 14847 29059 22264 1067 1068 9945 11053 3110 33103 23313 33844 33105 33104 22265 895 896 897 10739 4924 5787 5786 28700 13030 21031 22266 624 10741 9780 10986 33988 30337 30753 30718 15057 36792 22267 10258 10403 9205 11189 31070 14452 13479 14398 17598 17654 22268 6360 6356 6311 10154 6800 6799 6501 17641 31869 19140 22269 10044 10621 9393 11069 15052 23145 24006 31394 32862 26354 22270 8634 8921 8382 10787 35964 34447 36896 23248 29604 32028 22271 1089 1282 1141 10755 6113 6114 2395 19079 35851 28363 22272 8800 8853 7486 7528 34614 36009 36897 34613 36010 33185 22273 9104 10984 8498 10985 33820 24606 36862 33821 36521 35718 22274 1061 414 1060 10678 3509 3507 3510 17840 31842 24296 22275 8525 8446 8445 10680 35215 36898 29595 21323 28747 34339 22276 376 1311 378 10557 3320 3319 3318 11947 11949 29412 22277 382 386 1339 10433 3347 3350 3349 21873 15291 12361 22278 8020 10848 9669 10925 35599 23478 18827 20013 20015 32658 22279 8252 8190 8262 10299 28868 36899 26209 24185 26208 25042 22280 9388 9626 10408 11139 24189 20753 20369 31728 26999 26872 22281 9344 10209 9657 11131 22421 17498 33366 32039 30684 33641 22282 9634 10748 8156 11055 20039 31803 31802 27598 35070 27599 22283 9775 10283 10822 11171 19242 35378 35745 31964 36799 31965 22284 7659 68 7727 10456 36900 36901 36902 16405 33163 36903 22285 220 1033 315 10924 2529 2541 2540 27005 35139 34626 22286 1033 218 518 10924 2530 2519 2531 34626 34627 22189 22287 8462 8560 8563 10107 32044 36904 32046 34786 17405 13090 22288 1268 289 805 10669 2856 2884 2886 33327 23534 35742 22289 8869 10390 8466 11016 19894 27281 36905 19895 27229 19132 22290 8939 8558 8982 10102 34284 36906 21580 16528 13058 14417 22291 9733 10840 8736 10926 32571 34760 30944 17849 30946 31538 22292 8333 10642 9656 10992 36907 32292 33654 33656 32688 34390 22293 8840 8452 9163 10197 36908 33465 36909 18037 33466 31950 22294 368 11058 1260 11194 36771 17121 2636 36723 22941 22940 22295 690 689 568 10937 4279 4278 4280 28344 33492 33868 22296 8221 8219 8220 10513 35452 34502 35987 29688 26125 33319 22297 1240 30 183 10631 1707 1702 1709 29411 30887 36271 22298 639 638 517 10506 4022 4010 4023 33872 27736 32424 22299 1156 1286 495 11144 3916 3915 3881 18224 30921 19017 22300 9110 9194 8784 10914 36910 29822 24256 24257 23298 14442 22301 74 172 7663 1586 1876 35828 36158 1879 36159 1882 22302 842 1522 926 10810 5589 5588 5587 35449 32374 31913 22303 779 1329 540 10244 4141 4140 4129 28982 32604 33813 22304 1253 7700 60 1529 33860 36911 1820 1826 1823 36397 22305 8644 8437 8645 10128 34050 21600 36912 24427 21215 19762 22306 9182 8533 8544 9698 20961 36618 32414 14656 30217 20962 22307 7651 7686 7689 10382 36913 30515 20504 20547 20548 31211 22308 1098 757 1097 10860 5210 5208 5211 26087 25859 26908 22309 9922 10220 9450 11195 23076 25839 25029 30768 25841 18662 22310 9428 10370 9938 11008 21656 30816 21485 20217 21487 25784 22311 589 10795 9619 10931 34109 20205 31396 31998 26173 26172 22312 9433 10712 10680 10718 16950 29971 23007 20720 31653 23024 22313 8450 8253 8620 10030 35005 31794 36914 18262 24032 30992 22314 1248 36 166 7631 1731 1726 1733 27887 32926 36915 22315 6288 6367 88 1182 6600 6599 6595 36085 1932 35054 22316 1300 1301 1481 10450 6245 5529 5809 16622 22713 34040 22317 6280 9140 6287 10828 36916 28927 6547 36917 35926 35927 22318 1567 1201 10261 10725 2322 30593 27312 26204 27313 32677 22319 8968 8765 8345 10108 26883 21576 36918 16892 14751 21578 22320 6961 6982 6956 9912 7315 7395 7334 26703 23761 22657 22321 806 811 1336 10814 5433 5436 5435 34573 30793 22722 22322 6333 9172 6256 6389 31192 36486 6448 6453 6451 32641 22323 9675 10716 1521 11024 20751 34912 34588 33439 36919 36920 22324 8992 10480 8709 11172 29871 30131 36921 36922 36783 33965 22325 6391 7634 6395 10396 36923 36924 6419 24722 36925 36926 22326 1099 1601 166 10401 2262 2261 1729 22172 32927 24641 22327 525 10469 526 10795 34283 34889 4047 36927 28338 18530 22328 9557 10364 10012 10963 27297 25924 24774 24775 23326 33956 22329 8391 8372 8952 10955 36928 22919 36238 31473 22921 22920 22330 1441 889 1501 10155 5765 5766 2259 15014 33797 32473 22331 9451 11129 9970 11152 34195 20822 30935 23881 30837 33387 22332 7529 7600 7605 9967 36622 30222 36929 34366 26030 25618 22333 6264 6297 6359 10378 6483 6485 6480 36197 31474 35186 22334 10429 10747 9580 11019 33175 27855 26131 19923 35196 33178 22335 9449 10871 10339 10922 30084 26282 20425 18815 32201 29917 22336 613 1147 611 10791 4495 4494 4492 32062 23000 34440 22337 6320 9802 6321 11096 25664 36793 6803 35033 36067 16594 22338 9384 9702 10648 10658 17019 19232 17944 13608 35356 18158 22339 8567 10590 9120 10968 33555 28235 36930 33556 28236 18175 22340 6391 7556 7634 10396 24962 36931 36923 24722 36926 24964 22341 9153 9169 8575 11161 33276 36932 36933 33277 27002 33054 22342 7686 10521 10382 11082 29491 31370 31211 36934 19007 32344 22343 9128 7785 10447 11129 36935 17234 33384 33383 23101 23100 22344 1186 170 916 10716 1778 2284 2283 24676 32730 22464 22345 8794 8035 8971 10050 32087 32012 35094 22725 23491 17003 22346 669 10013 593 11170 32349 34151 4404 35530 36936 24650 22347 1248 7571 7631 10555 36937 36938 27887 27889 21673 33209 22348 8744 7754 10808 10935 36939 36940 30962 30535 30192 36941 22349 8219 7927 8218 9717 36035 35319 33318 33317 32987 31871 22350 9734 9451 10312 11152 32786 15923 33401 33402 22966 23881 22351 9964 10499 7610 10865 27930 34902 34901 23319 35992 35212 22352 7554 197 41 1580 36658 1746 36767 36362 1751 1753 22353 8118 10227 8115 11070 20365 29522 36942 20366 36334 16255 22354 1442 1465 480 10923 3841 3838 3839 26094 34817 11233 22355 1500 833 1502 10126 5552 5553 5555 13905 26783 28175 22356 7731 7671 7652 10189 31005 21339 36943 31004 14621 21340 22357 1569 979 980 10375 5985 5616 5986 34086 20948 33739 22358 910 1531 1212 10376 5838 2245 5842 28781 21188 21702 22359 8806 10619 8496 10984 35204 27838 36944 27732 25115 27839 22360 1060 414 10636 10678 3507 24295 30255 31842 16484 24296 22361 7739 6317 6250 6390 20325 6430 36945 20051 6427 6432 22362 8287 8164 8163 10867 36294 36946 34064 32992 32539 27289 22363 7500 7715 7713 10861 36947 36948 36949 36950 34645 32319 22364 7628 6391 6247 6316 24721 6417 36951 24720 6422 6423 22365 678 736 1423 10898 4819 4831 4830 21454 33970 34779 22366 1139 10746 1141 10755 32337 32000 2195 32490 35851 32491 22367 7556 6391 6247 7628 24962 6417 36952 24963 36951 24721 22368 7667 7739 6250 6390 20052 36945 36953 18022 6427 20051 22369 6995 6853 7627 7555 7023 36954 20114 20115 20116 36955 22370 1176 18 164 7606 1659 1654 1661 34171 23162 36679 22371 252 1267 255 10912 2697 2701 2700 25800 20590 25801 22372 251 252 254 10912 2687 2693 2692 33781 25696 25800 22373 825 1495 1494 10588 5520 5522 5519 31885 16937 18953 22374 9094 8308 8488 10589 36956 33992 36957 19764 34523 31886 22375 178 76 1579 7665 1884 1887 1890 32945 32329 36740 22376 7627 6920 6853 6995 20418 7026 36954 20114 7023 7029 22377 9973 10774 237 11194 31067 31066 29067 18675 36958 33958 22378 8494 10664 8298 10878 36249 20466 36959 25919 36960 32666 22379 338 10665 9905 10772 34973 20919 35396 34974 24274 20353 22380 306 9910 308 11123 25754 20698 2938 31375 22234 22233 22381 7545 166 36 7631 33428 1726 36961 33429 36915 32926 22382 7479 7540 7577 10374 36962 36963 36884 36886 36887 30439 22383 8880 8950 8736 10926 25882 30945 36964 27693 30946 17848 22384 1278 620 623 10750 4538 4539 4541 28699 27962 23868 22385 9310 9870 10847 11025 28400 19026 17651 12652 30511 35667 22386 9418 10294 10022 11002 24467 20385 20721 24469 25488 18582 22387 256 1115 235 10211 2616 2605 2614 17198 29186 17921 22388 8450 10030 8620 11114 18262 24032 36914 36606 24190 24192 22389 8416 10957 8612 11116 32166 34150 36965 26519 30796 30802 22390 8532 8424 8443 9806 31822 36966 26713 17680 18619 20007 22391 10327 10964 9271 11039 32476 29662 34163 28735 34631 32479 22392 200 7709 7658 10518 21483 36763 36764 21484 19557 16146 22393 447 546 642 11031 3672 3675 3674 14079 32302 26451 22394 7842 7841 7840 10181 24291 34601 36967 17022 28055 27811 22395 6949 6945 6948 10074 7439 7386 7440 27802 22046 22314 22396 7693 7656 7692 9709 36385 33785 36118 20690 18334 21900 22397 9611 10430 9236 10945 15591 16091 27184 28339 25661 28259 22398 8718 10462 9032 11157 17590 26367 36741 20621 31073 14682 22399 9153 8575 10361 11161 36933 27000 32568 33277 26774 27002 22400 8507 10260 8511 11034 18900 22204 36968 19239 19442 19240 22401 9560 10512 9149 11061 27972 34605 34603 30894 36701 30895 22402 607 609 608 10192 4473 4472 4465 24636 25070 24935 22403 7563 7561 7562 10391 36969 19699 34431 25245 19700 16175 22404 9048 8885 9066 10708 36970 35632 30172 27022 19805 29524 22405 8783 8784 7796 9975 26398 34851 36971 26400 30485 23297 22406 7663 7678 10515 11046 36972 32962 34458 36973 17626 35439 22407 889 1501 10155 10949 5766 33797 32473 33643 27500 27943 22408 9360 10671 9881 11049 13693 16012 13657 33887 35827 33315 22409 6949 6983 6897 10841 7301 7300 7302 36148 30595 33168 22410 8116 8118 8802 10227 36974 20442 20441 13445 18938 20365 22411 9862 9212 10872 11193 14819 19611 19612 30931 34310 29766 22412 8953 7912 10220 10661 36975 33595 18661 28754 28756 33011 22413 7586 7584 7583 10808 25458 14263 36976 25459 14266 13182 22414 504 1292 632 10893 3946 3961 3960 17779 13614 19464 22415 8243 8048 9007 10105 36977 22071 22070 18281 21573 13102 22416 1213 539 586 10982 4121 4134 4136 25900 22283 34891 22417 9087 8505 8308 10936 36978 36357 36756 32216 36231 20155 22418 8836 9158 9842 10971 36026 29636 28396 33962 28330 31129 22419 8630 8675 8674 10823 36979 33055 36431 27551 15312 33057 22420 7770 9108 9116 10372 35542 36980 34047 36117 11787 30857 22421 9578 10910 9947 10918 31373 30916 33050 16883 17752 34481 22422 7663 10515 7682 11046 34458 34457 34455 36973 33120 17626 22423 769 851 915 9971 5259 5267 5266 23682 16235 23178 22424 8789 8380 8929 10963 36981 34737 36190 21931 33955 34738 22425 9129 10413 7792 11153 21168 21965 36982 21169 23152 21170 22426 1529 7700 60 7645 36397 36911 1823 33394 36983 36396 22427 6970 6982 6973 10962 7396 7319 7454 35519 31317 31338 22428 562 10760 563 10886 32270 22303 4187 31574 36560 12840 22429 401 1245 1104 10606 3426 3446 3445 12139 12141 29016 22430 9840 10005 9336 11121 18491 16268 20077 33891 29831 22680 22431 8480 10156 10404 10973 35731 17827 35433 35434 20450 18958 22432 9071 10698 9851 11001 26623 19581 26622 35474 13802 36008 22433 8490 9002 9027 10889 17940 36984 36373 17372 36219 17942 22434 8152 8388 8268 10890 36374 17851 36985 21861 17853 17282 22435 8694 10626 8374 10955 28078 33548 36986 31471 35846 31521 22436 1403 1436 1408 10819 5452 4326 6083 22742 24688 29155 22437 1281 777 1261 10842 4476 5306 4711 28717 25419 32526 22438 225 224 226 11041 2553 2558 2557 34553 29434 36845 22439 7691 7743 7642 9698 33759 35482 33494 21725 14657 20666 22440 764 1371 10339 10871 5234 35890 13441 26281 26282 29913 22441 8424 8431 8443 9806 36324 33765 36966 20007 18619 33766 22442 838 721 1452 10325 4730 5043 5042 14284 19097 18460 22443 8018 10491 8017 10848 33632 29994 36987 36988 33980 32273 22444 1237 668 1366 10618 4778 4199 4777 17296 18099 29608 22445 9750 9269 11025 11192 33617 35666 16328 25251 24453 33475 22446 1001 1496 1488 10731 6005 4036 5526 20398 34715 29776 22447 1585 937 1601 10342 5930 5931 5932 28292 28613 32397 22448 8211 8212 8210 10821 36289 36405 36989 19137 26068 35590 22449 328 1444 342 10467 3054 3081 3080 19105 19106 27569 22450 10003 10601 9462 10991 25594 31609 23695 23448 18634 25629 22451 9332 9764 11026 11187 34379 36343 33275 33768 36344 31546 22452 9763 9942 9363 11122 11934 13783 13368 35401 31523 32326 22453 8119 8958 7817 10662 35804 25242 36063 31634 25243 21129 22454 7561 206 42 7543 16173 1755 36708 17469 36990 17470 22455 9197 9114 8948 10258 29650 36991 33904 30193 33903 14792 22456 9702 9218 10694 10695 24777 34845 18245 21568 35826 21345 22457 8990 8487 8726 11073 36992 31787 35059 35864 30943 31789 22458 302 304 303 10858 2948 2947 2928 19737 32448 33036 22459 199 1553 1554 10344 2439 2443 2442 33226 15253 19523 22460 214 629 1056 10921 2509 2511 2496 27896 27588 13881 22461 759 760 758 10647 5213 5212 5205 31274 12349 12348 22462 1358 715 1017 10599 4411 5014 5016 13673 15987 15532 22463 9329 10876 9920 10930 20066 30273 26407 15228 32671 27661 22464 9477 10014 10771 11182 31747 15364 23163 33183 32814 31415 22465 9200 8649 9123 10504 33134 36993 35257 35259 23973 26591 22466 6300 1201 80 10725 30591 1900 6575 32678 36372 32677 22467 638 10506 819 10844 32424 33873 4627 34788 23188 31357 22468 6985 6896 6962 10696 7295 7115 7296 35518 28586 31405 22469 9342 10024 9850 10915 12670 22855 22856 34330 17541 24814 22470 1539 1570 1021 10855 2350 6041 6043 33215 34740 35172 22471 7504 8771 7708 7787 36994 29093 36995 36996 30846 30847 22472 7654 205 77 7672 34217 1891 36997 34279 36711 34278 22473 8783 9975 8782 10897 26400 31909 36998 26601 34448 25050 22474 1390 9874 1065 10995 35857 25500 3669 36999 20188 25501 22475 9656 8276 10639 11130 33676 33678 26961 26962 25688 33936 22476 6374 6346 6349 10031 6810 6736 6767 34114 27757 29649 22477 9225 10560 9775 11171 33457 16309 32886 33959 31964 30544 22478 8007 8023 8008 10360 29796 32893 37000 21866 22051 14645 22479 9120 8609 8568 10968 28234 33693 37001 28236 28412 22550 22480 1156 488 490 9925 3879 3877 3880 18221 23863 28353 22481 8194 8955 8270 10468 33085 36274 36608 19275 11983 27795 22482 9194 9116 8784 10372 14286 37002 29822 14287 23296 11787 22483 9440 10469 10346 10931 23581 25273 23630 26171 34248 26569 22484 1390 10794 9874 10995 36597 37003 35857 36999 25501 34896 22485 1359 914 1472 9997 5857 5852 5856 12861 25075 15397 22486 7911 8838 8597 9962 35896 35304 30478 26654 27645 35306 22487 540 10244 1329 11093 32604 33813 4140 26989 36332 19787 22488 9094 10589 8488 11086 19764 34523 36957 20120 23579 20121 22489 766 10864 10039 11050 33824 11293 36650 33825 22929 29741 22490 844 1520 928 10712 5597 5599 4998 21126 16695 29136 22491 9218 9740 10694 10695 29465 30243 34845 21345 35826 19015 22492 1192 1024 171 10610 2292 2289 2052 26432 23754 29322 22493 8126 8127 8123 10522 34155 12822 36381 21502 12147 12077 22494 1506 1505 975 10011 2410 5981 5983 23626 18076 21002 22495 8343 9012 8977 10768 31739 23440 37004 31740 24073 20900 22496 8989 8673 7925 9855 32713 32151 34667 15589 32150 25524 22497 1294 457 458 9725 3722 3717 3723 35123 30096 35122 22498 849 1021 1020 11085 5620 5619 4701 29544 32931 31196 22499 9427 10833 10526 10951 29190 32214 29924 29925 29010 29199 22500 733 1343 672 9726 4801 4798 4799 18596 23634 16901 22501 1030 999 734 9727 5107 5106 4331 29157 15222 35118 22502 8685 8687 7966 10465 15507 37005 37006 12441 20111 15508 22503 6996 6988 6940 9702 7411 7432 7280 22833 18240 28719 22504 7857 8865 7838 9859 35372 29052 30381 11495 19775 20331 22505 9041 7887 8595 9860 36538 35377 34520 29674 30781 22958 22506 9093 8438 8600 9861 33589 29476 35375 33588 27762 26537 22507 679 678 680 10195 4823 4828 4827 17151 21418 21453 22508 9476 10403 10258 11189 14372 31070 25978 17653 14398 17654 22509 8248 8311 9126 10311 30066 37007 18138 13639 14694 25722 22510 7728 9933 7732 10948 22514 29269 37008 22517 29270 22518 22511 7604 7599 7600 10897 35816 20436 37009 34449 24486 24485 22512 634 701 699 10778 4610 4609 4553 28153 22461 23080 22513 7995 8670 8625 10809 37010 35854 29163 29164 22974 20573 22514 9371 10446 10279 10595 31108 33975 14168 15961 15492 30318 22515 9322 10854 10106 11053 30328 29243 27045 33382 33381 35957 22516 9173 10144 9136 10828 32545 33250 36819 33895 29255 29388 22517 6386 10319 6309 10831 31863 29934 6789 35653 34956 31113 22518 7662 7731 7722 9675 24217 35801 36471 20952 24220 19125 22519 8055 8057 10726 10888 37011 31465 11535 35940 24901 30901 22520 8497 10619 8551 10812 23574 35205 37012 34936 36331 35812 22521 7640 7718 7716 10290 34389 37013 37014 31797 34525 34362 22522 727 728 726 10275 5067 5066 5062 13305 22520 14605 22523 263 1194 227 10673 2576 2565 2574 13257 28922 35230 22524 6967 6964 6968 10600 7451 7452 7123 21045 32315 19496 22525 156 1151 1562 10169 1951 2212 2211 24513 17240 18996 22526 71 168 7656 1263 1864 19282 37015 1867 26035 1870 22527 8407 8895 8180 10757 33933 33424 37016 29854 29629 28610 22528 592 556 10824 10884 4217 28386 34538 35142 28628 28627 22529 9442 10260 10653 11034 22203 32951 21705 19441 29004 19240 22530 432 10287 512 10887 25199 22589 3500 22297 37017 25200 22531 8255 8213 9934 11136 37018 33003 12170 13588 13590 37019 22532 686 562 563 10886 4247 4187 4248 22336 36560 31574 22533 7963 8682 8681 10775 29129 29380 37020 29131 29381 16372 22534 8681 8888 8680 10775 35673 34391 37021 29381 33455 27249 22535 7914 7906 8768 10436 17111 37022 35763 15062 35316 17110 22536 8878 7797 9146 10402 30090 37023 34085 27922 19069 30091 22537 9986 10033 9246 10601 24802 12712 11790 11797 17402 25595 22538 672 1343 673 11180 4798 4797 4233 23635 20394 18915 22539 8653 8069 8066 10988 18409 37024 31083 18414 26135 18412 22540 8444 8443 10457 10602 37025 33703 26046 26047 20304 18621 22541 875 10777 10054 10844 34259 23827 35852 34260 23037 23289 22542 10251 10765 9311 11127 24271 31985 22968 32909 33408 33847 22543 1052 1334 701 10778 4943 4942 4611 29507 23080 22197 22544 9993 10416 9464 10987 15724 28736 29622 33238 15679 32457 22545 9697 9398 10730 11096 11981 19031 27928 15411 27136 15412 22546 9435 10453 10325 10595 25537 33192 24873 25896 14541 30319 22547 8708 7994 7990 10385 32467 37026 35906 26917 32020 32468 22548 7901 7909 7907 11014 37027 36110 25227 37028 27488 26656 22549 1142 755 1108 10666 4536 5200 5202 35455 23419 26102 22550 7549 7622 7588 10935 23148 25109 37029 23150 25110 15922 22551 8214 10882 8216 11048 37030 35511 35795 34125 31638 30224 22552 7684 10521 7686 11082 30190 29491 37031 32343 36934 32344 22553 9795 9497 10619 10812 28847 28825 19184 28538 35812 22659 22554 8357 8884 9002 10889 33067 37032 27706 34687 17942 24393 22555 8268 8269 8153 10890 27708 27702 37033 17853 32698 34688 22556 1125 427 1390 10794 3546 3574 3576 22106 36597 21759 22557 9896 10280 9415 10906 30568 20300 13854 12347 34734 19190 22558 604 545 599 10134 4164 4162 4165 16425 13187 23770 22559 501 504 503 10893 3945 3944 3943 17045 34686 17779 22560 6333 6321 6312 11096 6805 6804 6449 20733 17800 36067 22561 7965 8903 7837 11097 37034 36633 27350 21372 29310 36634 22562 8940 8943 8075 10947 31707 37035 22532 28064 19033 25717 22563 8724 8943 8957 10947 37036 36705 36224 33426 36123 25717 22564 452 454 453 10497 3698 3697 3565 23852 14369 25602 22565 8188 8926 8480 10156 37037 35730 37038 18957 35731 16449 22566 9614 10438 9502 10770 31918 17525 16336 23014 23013 26265 22567 8214 8752 8217 11048 36001 32248 37039 34125 34015 25239 22568 8214 8217 8216 10882 37039 37040 35795 37030 35511 16441 22569 8216 8378 8998 10882 37041 35277 36103 35511 36735 27516 22570 6365 6377 6361 10573 6713 6795 6847 22362 34446 32985 22571 6300 80 6388 10725 6575 6571 6576 32678 36205 36372 22572 9850 10024 9477 10915 22855 21217 11271 17541 26805 24814 22573 8628 10281 8481 10785 30296 35670 37042 31711 24278 26057 22574 1181 1257 492 10881 3898 3897 3876 27805 27580 25571 22575 8882 8090 8092 10880 37043 35047 35515 23295 33712 35048 22576 8090 8093 8088 10880 37044 28968 35419 35048 27678 28969 22577 10247 10719 9207 11068 14695 28985 26583 23591 26584 34182 22578 1319 1257 768 10881 3900 5255 5264 31733 34298 25571 22579 8214 8217 10882 11048 37039 16441 37030 34125 30224 34015 22580 7994 7990 10385 10965 37026 32020 32468 22549 30349 34016 22581 612 9948 654 11078 29726 14511 4500 24528 32775 29348 22582 8925 9185 8537 10404 16803 29245 37045 15558 21609 16077 22583 1545 1043 196 10423 2421 2423 2422 17766 28044 27106 22584 1200 10613 1332 10930 37046 30114 4587 33828 32672 15482 22585 8772 7498 7771 10546 37047 36572 37048 27511 33627 36574 22586 6332 6298 6321 11096 6731 6729 6732 27135 36067 29505 22587 8079 8078 8080 10190 33125 37049 21938 18032 13225 26900 22588 9256 10033 9986 10601 24834 24802 20540 25084 11797 25595 22589 7928 7947 7946 10527 34276 24899 36371 30293 12502 21292 22590 987 736 676 10898 4821 4820 4804 22790 21695 34779 22591 9184 8510 7801 10861 36588 37050 33564 34465 34649 35521 22592 7742 7682 72 1263 33119 37051 37052 27008 1868 33118 22593 7892 7893 10989 11195 37053 36745 36683 36786 30722 36746 22594 1502 10126 833 11177 26783 28175 5553 20605 28973 23482 22595 9397 10225 10011 10744 33344 29279 24960 28271 21077 28256 22596 888 1122 10065 11021 5762 17836 34205 30810 31480 31725 22597 8790 8517 7771 9660 36778 35295 32753 32754 31722 18880 22598 1141 10746 9603 10755 32000 23109 31999 35851 19358 32491 22599 319 1386 326 10724 3034 3036 3028 30545 23392 23391 22600 8551 8805 7789 10812 36229 24653 37054 36331 27445 29677 22601 8769 7474 7614 8879 36727 36726 31006 31692 31277 37055 22602 814 813 815 10118 4225 5463 5462 22015 13106 20003 22603 272 287 1132 10119 2784 2801 2800 13110 13120 22161 22604 1112 1110 1109 10121 6132 5477 6065 13122 13108 22163 22605 1174 1054 1053 10122 6064 4456 2831 13117 16023 14292 22606 276 277 275 10120 2813 2812 2807 13115 14861 16025 22607 1012 1244 989 10123 2972 4455 5483 14426 15155 30028 22608 7922 9011 7878 10124 37056 22775 33425 14845 16510 14269 22609 6362 6382 6363 10384 6708 6780 6692 28730 17218 26873 22610 8969 10726 8060 11045 28664 31464 37057 36570 31009 32769 22611 500 502 1382 10911 3937 3940 3939 34689 26890 17214 22612 7783 9141 9170 10031 34112 36377 35131 34115 29901 28184 22613 8039 8856 8037 10674 34106 35361 37058 34107 17494 30797 22614 8528 9078 9193 10296 30619 14454 37059 23638 13481 15095 22615 9196 9112 9118 10643 37060 35786 18882 18885 18887 35787 22616 1516 1593 927 10380 5908 5907 5904 21235 24838 32745 22617 1452 1072 10325 10747 2432 34571 19097 33697 27458 33174 22618 847 10579 9961 10920 29910 18451 29909 35558 22962 19468 22619 8338 8638 8331 10295 37061 34665 18235 18236 13795 17658 22620 6965 6971 6963 10687 7450 7236 7448 35751 26814 29171 22621 440 1370 1094 10502 3639 3641 3606 33467 22112 25063 22622 6963 6964 6965 9676 7340 7449 7448 25127 22870 19495 22623 7640 7716 7711 10290 37014 34526 32732 31797 23268 34525 22624 8906 8722 8019 10996 36325 37062 35629 33849 22600 25721 22625 8745 10444 8744 10808 29355 29304 37063 29357 30962 15562 22626 6340 6304 6339 10144 6763 6761 6764 20043 28049 33143 22627 8085 8086 8039 11009 37064 36281 34140 33673 34142 20849 22628 933 1582 10526 10675 2188 27036 37065 37066 27886 29372 22629 425 421 420 10196 3537 3533 3538 12307 27147 33139 22630 9458 10320 10564 10915 15706 28471 17124 26233 24815 16380 22631 421 1125 419 9957 3535 3534 3532 24726 34092 22105 22632 6304 6338 6339 10144 6545 6762 6761 33143 28049 32544 22633 1274 1165 25 10800 1689 1687 1682 35758 36316 20444 22634 465 466 468 10734 3754 3763 3762 18155 28762 23713 22635 431 433 439 10909 3577 3593 3592 34890 19902 27430 22636 1008 1051 1533 10324 6013 6016 6015 17627 13027 21623 22637 8771 7708 7660 7504 29093 28874 25554 36994 37067 36995 22638 8984 8714 9759 11040 37068 32874 25281 19488 21264 27172 22639 8481 8628 8479 10281 37042 37069 36186 35670 31227 30296 22640 1018 1145 747 10709 4396 4416 5165 31329 32376 31330 22641 992 945 203 10562 2462 2461 2044 25047 25772 27116 22642 6923 6859 6909 10313 7045 7040 7047 35363 36235 36612 22643 8854 9159 8791 10154 37070 36794 33060 31868 26729 34102 22644 8396 8485 8924 10868 32034 19052 37071 32035 14349 26383 22645 8975 8721 8396 10868 31366 35703 37072 26905 32035 27506 22646 9887 10251 9311 11127 25567 22968 24984 33409 33408 32909 22647 692 566 693 10129 4268 4270 4269 12430 21882 19249 22648 1463 955 1159 10130 5958 5960 5961 11868 34256 13130 22649 7616 1273 33 10423 34030 1714 36796 33866 36798 34916 22650 1003 1002 10054 11012 5718 22844 21058 21061 21063 21766 22651 9173 9140 6280 10828 37073 36916 37074 33895 36917 35927 22652 8721 8291 10656 10942 37075 24910 30138 32073 16620 24911 22653 759 1399 1279 10907 5220 5219 5218 34697 30284 26725 22654 7856 7853 7855 10494 37076 26931 14946 14947 12375 26933 22655 8772 7648 7498 10546 26422 36643 37047 27511 36574 28918 22656 910 1471 1446 10376 5840 5843 5828 28781 19039 32912 22657 1253 1150 179 10770 2337 2336 1822 33001 31454 34843 22658 7567 7569 7571 10555 30559 37077 34208 30560 33209 27053 22659 6994 7000 7738 10373 7039 37078 24346 24348 24347 37079 22660 8933 8376 8457 10271 37080 37081 35891 25737 32901 32226 22661 577 478 10852 11083 3819 30288 34464 37082 33323 22133 22662 9150 10512 10232 11061 26442 27670 27669 37083 28074 30895 22663 7611 7619 7610 10499 37084 37085 34900 27929 34902 18527 22664 940 1374 847 9961 5613 5358 5611 12637 29909 35312 22665 8187 8143 8140 11010 23650 37086 34911 23651 34425 23652 22666 660 1530 718 10717 4739 4741 4345 15584 15586 26364 22667 7890 7896 7889 10843 36717 35708 37087 32153 21321 35184 22668 1419 10854 1439 11053 31753 34836 4931 35956 37088 35957 22669 199 1100 1553 10343 1999 2440 2439 31494 19522 28680 22670 10109 10626 9292 10955 28835 19864 28833 31731 34199 31521 22671 8665 8664 8015 10474 32838 37089 37090 17986 15574 26876 22672 8836 9160 9158 10971 37091 29638 36026 33962 31129 30447 22673 819 1459 875 10844 5493 5492 5491 23188 34260 18568 22674 8636 8942 8477 9730 31588 34348 32186 16401 15936 16399 22675 553 1294 458 10969 3731 3723 3729 13928 29653 19238 22676 228 230 9766 11030 2578 27543 17066 32991 31056 31055 22677 9869 10811 8356 11102 16972 35262 35796 33764 35263 33770 22678 922 920 977 10719 5882 5884 5883 30032 18531 12735 22679 9067 9086 8433 9897 29656 36892 35392 16855 26475 20153 22680 1142 1108 1075 9899 5202 2993 6089 12794 23333 20087 22681 9019 9042 7947 9898 29657 35391 32654 27616 19703 19119 22682 286 1289 1437 9900 2571 2871 2870 34149 35394 30185 22683 1489 1432 835 9901 4290 4986 5562 35238 18002 12798 22684 1367 1440 633 10700 4605 4604 3736 35738 35739 25832 22685 1451 10707 316 10799 27531 35280 3018 30156 17309 34091 22686 7747 7738 7000 10373 37092 37078 37093 37094 37079 24347 22687 1290 10106 1419 11053 31013 31752 5449 36303 35956 33381 22688 8617 8615 8316 10252 37095 37096 25430 25428 25429 14742 22689 68 7659 192 10456 36900 16404 1855 36903 13918 16405 22690 8001 8036 8025 10135 37097 34264 23133 23134 16959 32088 22691 8964 8990 10950 11073 37098 34928 35588 23629 22061 35864 22692 1307 493 1157 9902 3905 3902 3906 25542 23567 27695 22693 415 416 417 9903 3504 3513 3512 21527 19197 25579 22694 338 339 349 9905 3122 3128 3127 35396 20790 21849 22695 7933 7934 8693 9904 35397 29665 36128 34657 12800 24781 22696 8848 8874 10248 10862 37099 24506 33777 33776 24507 21948 22697 7716 10290 7718 11181 34525 34362 37013 37100 33621 27593 22698 7852 7850 7963 10927 37101 36667 33651 25362 33653 13743 22699 8475 8242 8994 10903 29568 30820 37102 34073 27910 34542 22700 6288 6368 6366 10417 6682 6681 6679 34270 22993 32723 22701 9397 10126 9693 10744 22269 22201 23286 28271 23792 26518 22702 9217 10431 9885 10873 25957 23883 15209 20063 20065 24417 22703 1064 1061 1063 10381 6073 6071 6074 12298 30922 17839 22704 8944 7901 10699 11014 37103 25228 25632 36523 36524 37028 22705 9137 8450 8621 10277 15281 36605 37104 15739 34608 15740 22706 9127 10311 8311 10793 24133 25722 37105 27335 24263 25724 22707 8618 10471 10212 10883 33579 16066 35999 33580 23406 24282 22708 8055 8056 8057 10888 36092 37106 37011 35940 30901 16804 22709 716 650 649 10972 4682 4080 4683 29037 22373 27548 22710 1067 358 809 10772 3131 3229 3231 23314 32946 26477 22711 1553 1551 914 10343 5860 5851 5858 19522 16419 16418 22712 8434 9101 9103 10976 25283 34484 37107 25285 27104 18370 22713 8816 8137 8138 10283 27992 34735 34616 27993 32706 27994 22714 8926 8925 8480 10404 18024 37108 35730 16532 35433 15558 22715 9156 10252 8617 11069 22754 25428 37109 36326 26353 26352 22716 8373 8947 8950 10779 37110 29836 32384 27812 16232 29837 22717 792 949 1024 10849 5368 2288 5373 35810 35811 32750 22718 733 993 1343 10788 5101 5103 4801 16163 16211 15797 22719 577 478 476 10852 3819 3818 3820 34464 31217 30288 22720 9428 10521 9914 11082 21731 25731 29675 17521 32342 32344 22721 9454 10631 10374 11183 33800 33929 20462 16062 20794 30740 22722 8181 8582 8125 10568 37111 29256 31714 13033 24965 29258 22723 9692 9373 10687 10696 16848 14173 17528 18173 35752 13556 22724 698 10672 1296 10854 30914 23209 4551 29241 25897 23701 22725 1166 200 51 7658 1790 1784 1787 19555 36765 36764 22726 949 10610 1024 10849 32516 29322 2288 32750 35811 25390 22727 7903 10815 7904 11013 28554 32287 37112 36706 30902 16905 22728 8106 8108 8109 10797 37113 36327 19694 18638 19696 36328 22729 7697 7694 7695 10085 36275 37114 31248 31249 23143 32653 22730 7702 7701 7669 10581 34257 31341 37115 22468 31283 25328 22731 6910 6942 6946 9740 7368 7370 7369 25508 22177 14839 22732 9477 10564 10320 10915 21219 28471 11333 26805 16380 24815 22733 9686 10753 9210 11164 11434 28438 30915 32282 32281 34983 22734 8009 11003 8011 11172 25623 33747 37116 36782 29110 31099 22735 919 917 918 10983 5867 5835 5868 34793 28489 35867 22736 6384 6386 6296 9673 6723 6721 6461 31292 30040 31862 22737 9983 10718 1269 10982 28726 35936 36039 22284 35937 32481 22738 368 239 241 11194 2634 2632 2635 36723 36169 33957 22739 7802 8774 8550 9836 28107 28106 35553 19888 20439 23387 22740 822 1421 702 10167 4951 4950 4947 24420 26448 25582 22741 406 407 422 9908 3462 3468 3467 25221 14001 13696 22742 1476 1194 263 9909 2752 2576 2753 28946 13700 29103 22743 8323 8260 8566 10288 23870 20914 37117 13730 20915 18239 22744 9775 10822 9225 11171 35745 12318 32886 31964 33959 36799 22745 8148 8149 8173 10328 36310 37118 37119 35824 12136 22232 22746 9299 10489 9647 11180 31159 25692 29467 17605 18916 25260 22747 7656 7742 71 1263 26677 37120 37015 26035 1867 27008 22748 564 1146 656 10901 4191 4261 4260 22342 12357 19474 22749 7646 7705 55 1167 32825 37121 37122 32824 1803 32371 22750 1006 981 982 10837 3245 5688 5989 30689 34589 30822 22751 1195 1442 480 10194 3840 3839 3829 25530 29771 26093 22752 8520 8524 8522 10232 26393 37123 37124 26392 13646 26391 22753 903 294 1029 10136 2910 2516 2911 14572 23435 23270 22754 8097 8483 8882 10137 35429 25036 37125 33918 23291 26947 22755 1293 10092 10790 10960 27965 28332 35346 27966 31642 26500 22756 8964 8990 8484 10950 37098 37126 35586 35588 32577 34928 22757 7905 7903 7904 11013 36716 37112 37127 31702 30902 36706 22758 7530 7785 7472 9178 17233 37128 36476 36478 36477 32142 22759 1287 10637 796 10990 19359 26316 5383 36485 26317 24551 22760 1492 1000 837 10322 5569 5568 5570 11523 31936 18462 22761 1118 10005 1302 11012 25126 15352 3531 22832 14916 15164 22762 9131 7509 8858 7725 37129 37130 29314 29313 14025 37131 22763 1341 309 9942 11123 2941 36021 15427 30160 30162 36410 22764 7529 9967 7765 10897 34366 34824 34823 36623 35942 27389 22765 8192 8109 8157 10023 36676 35823 26595 21797 13591 19695 22766 7925 10539 7929 11115 32152 26186 37132 34706 35778 30736 22767 6335 6334 6332 10278 6834 6733 6835 29983 27133 29764 22768 8652 9601 10999 11000 29074 20571 30866 30865 35165 15086 22769 1426 9886 1287 10990 32947 26149 5392 28913 36485 34191 22770 8546 8547 10412 11119 37133 33146 32279 33982 33147 29261 22771 1217 1218 1219 11154 6210 6216 4378 27110 33505 32936 22772 315 222 9762 11111 2539 25059 35138 36038 19315 33619 22773 7574 7572 7616 9996 36647 34031 33865 25457 33864 25944 22774 153 10746 1139 10998 37134 32337 2194 37135 32340 29781 22775 8361 8465 8813 10138 28306 37136 23557 22006 13196 13403 22776 1280 1460 1325 10463 6239 6238 5250 25214 33878 34579 22777 9234 10642 9656 11130 19485 32292 30279 18213 26962 15522 22778 6910 6946 6950 10694 7369 7371 7151 29402 30880 35825 22779 1244 989 10123 10853 4455 15155 30028 32700 15156 12463 22780 651 979 661 10466 4693 4692 4385 30264 23589 31968 22781 9522 10709 10028 10934 29669 12329 31736 30779 31703 34587 22782 7851 7854 8941 10171 37137 28521 30205 29374 23528 26718 22783 7479 8844 7784 10374 36885 37138 37139 36886 30440 34801 22784 937 1532 1601 10401 5741 2265 5931 32396 24641 16607 22785 9095 8428 8438 10910 28273 37140 35200 34940 26539 31516 22786 1026 648 1028 11145 4679 4678 4677 37141 36125 31621 22787 8293 8909 8369 10835 37142 24470 35994 31347 30763 17466 22788 8908 8482 8909 10835 32728 36730 37143 25345 17466 32169 22789 8588 8899 8553 10836 36731 32592 37144 16566 19059 32027 22790 8589 8588 8555 10836 15267 37145 34949 18847 32296 16566 22791 977 1087 10247 11080 4745 36051 17949 17950 14687 37146 22792 1453 10700 9650 11159 28102 21108 28101 33307 25959 35556 22793 811 806 807 10193 5433 4879 5434 26084 20730 34572 22794 9039 10188 8996 10933 16891 12696 37147 35870 12378 14279 22795 10074 10276 9359 10841 23507 31263 25443 18427 22265 30596 22796 993 10409 286 10788 19422 24199 2868 15797 35883 20870 22797 8616 8619 8618 10212 37148 37149 36000 16065 35999 24952 22798 7625 7542 7562 10412 35967 37150 26817 30629 25568 28465 22799 8303 8244 8243 11190 37151 34897 35892 34241 18283 32244 22800 251 362 249 10635 2685 2684 2682 30495 15338 21503 22801 982 866 1361 10837 5689 5691 5690 34589 31307 31081 22802 8949 8484 8945 10950 32576 37152 34335 24367 27622 32577 22803 190 1228 1564 10345 1943 2392 2391 32423 24069 24078 22804 1155 750 717 11139 5024 5023 5025 33775 34512 26870 22805 8418 10348 8240 11070 31782 21046 37153 35498 16169 21048 22806 1385 812 1352 10679 5461 4216 4786 26311 29441 24867 22807 8898 8294 8371 10780 30174 37154 29383 17143 29385 30176 22808 8427 8462 9051 10711 36166 36165 11719 12264 12266 32045 22809 8614 8616 8618 10471 18390 36000 37155 15549 33579 12817 22810 1570 1559 1019 11141 2352 6032 6039 35173 34430 32218 22811 73 7682 7663 1288 37156 34455 37157 1872 34456 33623 22812 7484 7533 7595 8702 37158 35150 36855 36856 34415 16795 22813 9145 8534 8447 10899 33798 30716 37159 23277 28504 27834 22814 8546 8547 7807 10412 37133 37160 32277 32279 30207 33146 22815 8783 7796 8782 9975 36971 31908 36998 26400 31909 30485 22816 1099 166 35 7545 1729 1727 1722 35631 37161 33428 22817 234 235 233 11023 2603 2602 2597 30767 29713 29069 22818 1200 630 1332 10613 4589 4588 4587 37046 30114 25202 22819 891 821 1397 10535 5501 5503 5502 12408 22678 12563 22820 190 10345 1564 10573 32423 24069 2391 34445 24071 24072 22821 1578 184 23 7557 1681 1679 1674 36841 36840 26752 22822 1428 1387 1342 10168 6144 5754 5861 16750 24383 33341 22823 1213 536 539 10198 4118 4119 4121 25899 28797 25996 22824 8762 10554 8162 11092 26797 29222 37162 23919 31663 26798 22825 8682 8684 8683 11001 35862 36719 36490 18691 33348 35863 22826 1343 10788 1437 10917 16211 36087 5996 16214 35438 16215 22827 8060 8061 8062 11045 34186 36563 37163 31009 13787 34129 22828 8792 7858 7862 10813 37164 36651 21420 21422 19939 16317 22829 1258 9799 11145 11163 30804 17497 30805 36243 32037 22710 22830 8457 9197 8948 11175 36088 33904 37165 30026 33906 33905 22831 10155 10695 9218 10949 19014 21345 25786 27500 21347 20099 22832 769 915 1342 10578 5266 5269 5268 24836 23798 16237 22833 8018 8019 8017 10491 36866 33002 36987 33632 29994 22665 22834 932 9996 1522 11143 21256 28871 2223 21105 29752 22138 22835 8744 10303 8746 10935 29148 30195 37166 30535 30196 18513 22836 8416 8586 8612 10957 36809 36262 36965 32166 34150 32974 22837 1343 1437 987 10917 5996 5995 4806 16214 22792 35438 22838 8172 8246 8433 10918 27666 37167 30157 17751 26476 27667 22839 137 6993 6897 10276 7246 7248 7244 35740 26372 18319 22840 8953 7912 7899 10220 36975 35872 37168 18661 23646 33595 22841 1223 161 1536 10417 2239 2236 2240 25403 18777 34271 22842 243 244 245 11071 2647 2653 2652 27959 33027 35344 22843 1263 7682 72 1288 33118 37051 1868 1874 1871 33623 22844 8873 7890 7884 10843 27027 37169 29307 28822 29309 32153 22845 1166 200 7658 10518 1790 36764 19555 17517 19557 21484 22846 8775 8503 8442 10895 36790 26501 37170 20498 20598 27247 22847 1529 10242 1598 10770 33397 25351 6185 36398 25354 25353 22848 1073 1039 1378 9976 3119 5128 3993 17371 15713 13024 22849 1539 6350 99 10855 22800 6628 1973 33215 37171 33216 22850 8230 8307 7895 11137 23877 32272 37172 20166 30934 23130 22851 55 186 7646 1167 1800 31758 37122 1803 32824 1806 22852 669 10720 10013 11170 32350 27007 32349 35530 24650 28599 22853 1226 392 10305 10928 3399 30896 12214 34505 24127 30899 22854 7479 7784 7540 10374 37139 30436 36962 36886 30439 30440 22855 195 1179 1178 10201 2417 2416 1653 28440 14413 21514 22856 303 311 298 10858 2930 2929 2927 32448 30715 21158 22857 347 1427 350 10152 3175 3174 3173 17489 15729 13540 22858 248 1308 243 10146 2656 2645 2654 17565 27957 21268 22859 1227 424 430 10145 3559 3557 3560 33473 24054 17293 22860 467 464 465 10147 3757 3752 3758 17227 18154 13200 22861 723 681 1445 10148 4843 4844 4846 13204 23544 14890 22862 8038 8037 8044 10149 24055 37173 24056 22700 24058 17492 22863 990 1044 789 10151 5360 5359 4571 22769 19701 24064 22864 6929 6927 6928 10011 7427 7355 7350 31095 25634 23181 22865 8058 8059 8057 10888 35865 29949 37174 33562 30901 30900 22866 9612 10462 9355 11157 19388 17042 32157 31072 17043 14682 22867 910 1446 906 10653 5828 5827 5825 28782 29481 23539 22868 9560 10483 10272 10688 27971 33972 22277 19682 31387 33587 22869 7550 7609 7603 9832 32647 36847 34937 32648 33874 21906 22870 8992 8709 8033 11172 36921 37175 25890 36922 30579 36783 22871 8009 8011 8709 11172 37116 37176 36781 36782 36783 29110 22872 6338 6280 6287 10828 6544 6547 6549 33896 35926 36917 22873 8529 8831 7799 10477 37177 34524 32419 25384 18546 31931 22874 589 590 651 11005 4067 4383 4382 34110 34965 26593 22875 9595 10674 9937 11009 31661 23738 33233 34143 22166 34141 22876 234 1299 236 11023 2610 2609 2608 30767 36802 34206 22877 8684 9699 10698 11001 30134 24223 30135 35863 36008 18692 22878 1196 7571 1248 10555 32006 36937 1737 33208 27889 33209 22879 519 1488 10731 11107 4032 34715 35567 36047 34716 27066 22880 8431 8444 8443 10457 37178 37025 33765 30310 33703 26046 22881 9408 10704 9906 11000 23564 25588 23549 28441 33687 31904 22882 38 1196 7552 7571 1734 32004 37179 37180 32005 32006 22883 410 10400 1106 10887 27785 33503 3479 27786 30482 23463 22884 7563 7562 7542 10412 34431 37150 37181 29719 28465 25568 22885 9283 10436 9658 11133 18683 15064 31041 30462 29631 34329 22886 7839 7841 8651 10617 34600 36807 26220 26222 13890 24292 22887 1521 10716 916 11024 34912 32730 5865 36919 37182 36920 22888 8320 8304 8646 10563 25768 17538 37183 18591 16589 19181 22889 525 10795 526 10931 36927 28338 4047 34247 37184 26172 22890 7946 7955 8142 10902 32450 37185 32817 21315 16304 25179 22891 7942 9033 8869 10390 33931 37186 27830 27829 19894 29172 22892 711 931 1530 10482 4994 4996 4740 29879 26363 21571 22893 6922 6997 6932 10648 7163 7425 7424 28170 35516 30628 22894 6895 9819 180 10908 33702 33369 33701 35669 34796 26619 22895 10258 10598 9448 11175 21275 20620 25977 30960 27913 29300 22896 9129 7792 8692 11153 36982 31303 37187 21169 31304 23152 22897 9336 10848 10491 10925 23476 32273 20078 27070 23999 32658 22898 8493 8298 10664 10878 37188 20466 35351 24011 32666 36960 22899 161 1223 1222 10297 2239 2238 1931 31879 27444 22074 22900 9497 9826 10619 10812 24409 30280 28825 22659 35812 25646 22901 8983 8489 8883 10164 37189 35741 29018 16851 29231 13237 22902 1342 1346 10578 11156 5270 29320 23798 32954 33826 35597 22903 8151 7956 8163 10867 33948 32538 37190 33502 32539 26512 22904 630 10613 1200 10930 25202 37046 4589 23444 33828 15482 22905 6909 7002 6924 10313 7364 7363 7362 36235 18114 28099 22906 6300 6319 6320 10725 6739 6741 6740 32678 25665 27169 22907 589 526 10795 10931 4063 28338 34109 31998 26172 37184 22908 8188 10156 8480 10973 18957 35731 37038 15826 35434 18958 22909 8448 10022 8540 10958 22280 15697 37191 22281 13323 16308 22910 1260 9973 237 11194 17120 29067 2624 22941 36958 18675 22911 1080 10980 9561 11044 33650 28117 32163 33898 28838 36246 22912 7791 6294 6262 10663 29101 6475 37192 33263 37193 34854 22913 8619 8618 10212 10883 37149 35999 24952 24951 23406 33580 22914 1390 10670 9874 10794 35856 18612 35857 36597 37003 22737 22915 496 1277 884 10293 3896 3921 3920 12910 33241 12010 22916 837 10322 1000 11118 31936 18462 5568 24059 17330 18464 22917 8300 8419 8663 11038 21489 37194 36399 17754 24531 22141 22918 9447 10429 10823 11019 19922 34501 29655 18898 35197 19923 22919 9200 9123 7803 11166 35257 37195 36437 36438 36439 23974 22920 345 330 1365 9916 3073 3089 3091 14401 25710 27241 22921 1233 10403 1345 10961 14310 20381 4430 23955 19586 20382 22922 8850 8623 8622 10913 33164 37196 30681 34708 28939 34709 22923 8117 8992 8114 10845 37197 25892 34962 30522 29555 29873 22924 9056 8570 8321 10235 36133 23010 37198 35073 16113 18380 22925 1392 630 1200 10930 4348 4589 4590 23443 33828 23444 22926 8213 10638 9934 11136 33447 30332 33003 37019 13590 30335 22927 1136 1135 1298 10158 6161 5149 4459 25292 24330 16282 22928 1136 1298 604 10158 4459 4166 4460 25292 21604 24330 22929 327 346 1414 10160 3074 3076 3010 20616 24481 13234 22930 737 872 1038 10159 5119 5122 5121 32984 22455 36232 22931 346 1438 1414 10160 3169 3171 3076 13234 24481 22396 22932 1438 737 1038 10159 4251 5121 5123 24478 22455 32984 22933 9020 8268 8389 10161 27198 24482 37199 18940 16105 17852 22934 9020 8389 8550 10161 37199 37200 28086 18940 19637 16105 22935 10235 10571 9397 10976 18384 32102 28694 31580 22271 33358 22936 9117 7784 8527 10374 32601 37201 31486 28843 31421 30440 22937 526 525 522 10469 4047 4043 4048 34889 18528 34283 22938 8456 9119 8457 11152 36483 35589 37202 33463 30024 34977 22939 1130 1286 1344 10274 3914 5279 6156 20903 18964 20367 22940 8938 8295 8996 10933 36277 37203 11698 12376 12378 20487 22941 257 1188 261 9918 2724 2726 2723 17924 12887 29875 22942 7786 10205 7810 11099 30599 15284 37204 22247 15287 15289 22943 9175 10216 8368 11198 15847 27967 37205 34543 24686 27968 22944 8380 8406 10012 10963 37206 27353 32866 34738 23326 29974 22945 10325 9580 10747 11019 28506 27855 27458 18111 33178 35196 22946 8500 8422 8499 10398 37207 19530 34187 31148 15152 18846 22947 10091 10623 8206 10900 27656 35371 35334 31696 35495 29417 22948 10073 10689 9389 11005 14690 29600 31110 32078 28023 26324 22949 9266 10540 9884 11056 13178 11262 13841 34462 14481 14483 22950 8489 8983 9002 10164 37189 27233 24592 13237 17941 16851 22951 7641 7695 7694 10085 23884 37114 32904 15510 32653 23143 22952 8591 7781 8592 10511 37208 27584 27607 26551 27608 23423 22953 7663 172 73 1288 35828 1875 37157 34456 1872 1878 22954 8053 8021 8026 10306 34546 28113 35158 16273 20346 28114 22955 6312 6320 6318 9802 6802 6801 6445 20289 32686 25664 22956 6389 6332 6333 9697 6833 6827 6453 32642 25472 30652 22957 269 267 268 10869 2772 2767 2773 29229 36655 32844 22958 9128 8748 7785 11129 37209 31551 36935 33383 23100 31552 22959 1289 10388 9900 11041 30186 23976 30185 36558 22183 21330 22960 8119 7819 8635 10877 36062 37210 34684 34814 25916 30758 22961 8222 8220 8353 10874 35946 34001 37211 25652 25909 33915 22962 1270 1147 616 10875 4521 4506 4519 25913 27417 35454 22963 1022 1023 1245 10876 5707 6044 3421 25911 34297 33513 22964 8493 8494 8298 10878 37212 36959 37188 24011 36960 25919 22965 668 667 552 10873 4197 4193 4198 34408 27030 25921 22966 8880 8036 8855 10926 37213 35815 35273 27693 33941 30981 22967 622 1296 698 10672 4531 4551 4550 22765 30914 23209 22968 442 1204 1206 10859 3366 3648 3647 12644 17237 14258 22969 851 1561 915 9971 5630 5629 5267 23178 16235 16359 22970 1401 1392 870 11124 4861 5704 5319 21917 34405 25682 22971 352 348 351 10309 3179 3177 3180 28702 16322 15857 22972 9992 10659 9463 11020 22195 34813 14011 14012 13712 23817 22973 430 484 1227 10145 3589 3591 3560 24054 33473 12752 22974 245 248 243 10146 2655 2654 2652 23015 27957 17565 22975 463 465 464 10147 3753 3752 3748 23017 13200 18154 22976 681 723 682 10148 4843 4842 4835 14890 24852 13204 22977 8044 8037 8856 10149 37173 35361 35240 24058 30060 17492 22978 8922 10001 8366 11126 21665 13244 37214 21670 36747 21668 22979 1191 1405 1190 10008 6198 6197 3571 12451 21887 14534 22980 8446 8526 8874 10248 35214 37215 34337 36584 24506 13193 22981 9013 8859 10872 11151 35977 37216 29328 35677 30744 33969 22982 8372 8370 8373 10779 33919 37217 26841 28486 27812 33920 22983 347 511 1427 10152 3139 3176 3175 17489 13540 24283 22984 965 1044 990 10151 3062 5360 5061 30169 22769 24064 22985 9013 8859 8178 10872 35977 37218 37219 29328 34309 37216 22986 8859 8178 10872 11151 37218 34309 37216 33969 30744 36789 22987 421 426 427 10104 3542 3545 3544 24727 21756 18556 22988 10469 10795 525 10931 18530 36927 34283 26569 34247 26172 22989 7663 7682 7678 11046 34455 37220 36972 36973 35439 33120 22990 9054 10300 8499 11028 12972 24748 37221 12918 16985 14836 22991 7702 7645 7701 10242 36826 36171 34257 27337 30891 33399 22992 7759 8532 9124 10347 37222 18719 35336 35335 11454 18041 22993 1357 344 331 11075 3094 3093 3095 19758 19967 23503 22994 7548 33 196 10423 36797 1719 28040 28043 28044 36798 22995 8602 7758 8828 10074 25534 32801 35706 22528 22045 21929 22996 949 791 950 10849 5369 5371 5370 32750 32751 23434 22997 239 237 10774 11194 2622 31066 31532 33957 33958 36958 22998 8521 8519 8520 9853 37223 36459 37224 14704 29750 28035 22999 7892 7894 7893 11195 37225 36830 37053 36786 36746 35465 23000 7962 8953 7894 11195 18482 35464 37226 18483 35465 18484 23001 674 1314 559 10489 4236 3800 4234 25691 32924 17819 23002 9359 9682 10107 10841 30231 19717 22264 22265 18426 19718 23003 8178 8799 10872 11193 33041 37227 34309 31768 34310 32735 23004 1418 1048 807 10614 5439 5438 5440 29203 25509 21777 23005 8697 8034 8040 10758 19788 37228 33480 18945 27773 19790 23006 10245 10850 9547 11170 32212 16326 32637 28511 23836 30940 23007 9088 8598 8960 10857 36472 37229 27640 27642 27643 26162 23008 1325 10463 1460 11117 33878 34579 6238 37230 23777 21064 23009 1262 7727 68 10456 31162 36901 1852 33162 36903 33163 23010 7500 7713 7801 10861 36949 27891 37231 36950 34649 34645 23011 8343 7972 7974 10768 37232 36602 37233 31740 36603 12855 23012 8426 10432 9004 11157 31092 33302 36369 33013 26796 31074 23013 268 1309 9875 11057 2778 14799 36654 37234 20777 24015 23014 7830 9884 7829 11059 13840 11295 37235 24016 11297 11204 23015 1422 9864 1410 11058 23961 25586 5775 24014 18186 20779 23016 1102 1230 1153 10722 6119 6121 3556 31743 35638 33603 23017 8896 8286 8864 10723 36252 36293 29047 29046 19216 31746 23018 8443 8527 9124 10602 37236 31420 18620 18621 13818 31422 23019 9121 10443 7776 10823 24921 19546 37237 24922 24545 24547 23020 8152 8049 8915 11022 23725 37238 36677 23347 21730 24799 23021 8813 8465 8963 10138 37136 31243 36893 13196 29393 13403 23022 8235 8223 8224 10025 35444 25906 31735 18347 15466 25340 23023 10258 11047 9476 11189 22219 33148 25978 14398 17653 26058 23024 7951 10153 9055 11081 34547 15942 37239 37240 13051 16088 23025 215 1029 294 10136 2514 2516 2508 30352 23270 23435 23026 8092 8097 8882 10137 35345 37125 35515 30356 23291 33918 23027 1514 1591 207 9664 1625 1899 2481 34262 36202 32368 23028 1538 176 1569 10375 2015 2320 2319 27211 34086 22001 23029 1192 203 948 9858 2048 2459 2463 26431 31201 25771 23030 626 628 990 10820 4567 4570 4569 18216 22770 16793 23031 445 441 448 11072 3638 3643 3642 25065 33870 26239 23032 6958 6959 6899 10533 7313 7312 7310 28761 25316 13773 23033 8786 7791 6262 10663 37241 37192 37242 22089 37193 33263 23034 8470 8472 8622 10913 36625 28938 37243 22248 28939 26594 23035 8483 8484 8949 10756 37244 32576 37245 25037 24366 32575 23036 857 948 945 10981 5658 2460 5657 19219 27117 31202 23037 9191 7634 7626 10396 37246 37247 37248 37249 29988 36926 23038 175 38 1196 7552 1739 1734 1741 34384 32004 37179 23039 7774 9143 9167 10776 37250 23734 34672 34946 22444 16490 23040 6996 6918 6988 10695 7410 7263 7411 35998 28952 31360 23041 357 1368 353 11067 3205 3204 3202 31483 19907 30998 23042 8370 8372 8371 10780 33919 31434 37251 33921 29385 31435 23043 1582 944 933 10526 1838 5845 2188 27036 37065 22999 23044 9951 9952 9421 10906 24928 18351 12613 12614 12345 17646 23045 8001 8855 8036 10135 35390 35815 37097 23134 32088 30395 23046 7684 7664 7686 10521 30188 37252 37031 30190 29491 25732 23047 842 10810 10062 11143 35449 26329 36506 35450 35888 31914 23048 7593 7531 7592 10418 35176 34624 23244 23246 14563 32589 23049 1023 1332 1104 9920 6047 6046 6045 32669 14473 30112 23050 8783 9198 9110 10224 26599 37253 26399 26598 25736 26597 23051 8885 8927 9066 9921 35409 30183 35632 22123 13457 23431 23052 7893 7894 7898 9922 36830 37254 36406 36407 21853 36409 23053 7643 7685 7684 11082 36825 36646 37255 31688 32343 36049 23054 702 703 822 10167 4652 4948 4947 26448 24420 25437 23055 617 618 619 10442 3067 4523 4522 11562 18010 23802 23056 8489 8301 8883 10616 36027 35986 35741 13064 31750 23780 23057 589 525 526 10931 4062 4047 4063 31998 37184 34247 23058 9660 10546 9401 10940 28085 22951 34094 18094 22953 22155 23059 589 661 1087 10931 4384 4386 4066 31998 36052 30041 23060 8273 8276 8159 10639 33677 37256 26076 15845 21531 33678 23061 7701 7645 7700 10770 36171 36396 37257 28563 33862 36172 23062 1076 1114 988 11111 3014 5117 5997 32784 21463 25173 23063 771 692 693 10129 4897 4269 4898 13813 21882 12430 23064 955 1463 956 10130 5958 5957 5956 13130 15186 11868 23065 568 10839 9624 10964 33491 27102 32792 32793 28444 29663 23066 1438 562 737 10886 3216 4249 4251 30660 30884 31574 23067 7851 7853 7854 10171 35887 33670 37137 29374 26718 33219 23068 8117 8721 8992 10845 35327 34222 37197 30522 29873 31350 23069 215 294 214 10921 2508 2507 2502 34049 27896 23271 23070 10040 10756 9469 10950 26012 26245 19350 23189 22060 24368 23071 1540 770 1219 10386 5272 5271 5273 14166 33504 26038 23072 9450 10452 9713 11195 29518 23750 26898 25841 30723 20796 23073 7748 7671 7655 10272 32940 37258 36318 31386 36183 22275 23074 7916 8718 9004 11157 17588 37259 26794 14681 26796 20621 23075 1174 1055 1054 10122 3240 5488 6064 13117 14292 23231 23076 1132 274 272 10119 2799 2798 2800 13120 13110 23234 23077 1109 1055 1112 10121 5489 3237 6065 13108 13122 23229 23078 813 817 815 10118 5465 5464 5463 20003 13106 23238 23079 274 276 275 10120 2808 2807 2803 23236 14861 13115 23080 817 1012 989 10123 5484 5483 5482 23240 15155 14426 23081 8963 9011 7922 10124 29891 37056 36895 29058 14845 14269 23082 8124 8175 8051 10284 22260 26615 37260 12827 26606 19489 23083 266 268 10869 11057 2768 36655 24228 22346 24229 37234 23084 8436 10406 9090 10936 27562 26972 37261 32217 26975 26976 23085 703 1042 823 10473 4952 4956 4955 25438 31075 20512 23086 506 885 9974 11156 3967 34300 12037 32682 29436 31894 23087 8709 8710 8009 9923 30233 31035 36781 30130 28588 18123 23088 1137 10498 1139 10755 31325 32339 6165 31808 32490 32489 23089 8719 9063 8999 10304 37262 35385 21892 21875 11437 28187 23090 1081 1431 10173 10922 6098 25558 34135 31819 22252 37263 23091 9023 8789 8929 9966 34185 36190 27826 23190 16887 21239 23092 8509 10561 8508 10940 31508 35093 36743 31509 30572 31128 23093 9580 10823 10429 11019 24546 34501 26131 35196 19923 35197 23094 9332 9886 10693 10990 34475 15447 25323 16790 23285 34191 23095 599 545 598 10134 4162 4157 4163 13187 35272 23770 23096 9027 10708 9760 10889 35389 20237 35388 36219 15240 29525 23097 7873 7872 7874 11006 34375 33194 37264 31835 31011 14994 23098 10132 10709 9206 11141 12494 20338 23516 32379 28764 32380 23099 1286 10274 1130 11144 20367 20903 3914 19017 21782 16735 23100 9060 8499 9054 10300 35247 37221 35152 20873 12972 24748 23101 8239 8418 8240 11070 35497 37153 37265 35290 16169 35498 23102 957 958 859 10781 2384 5665 5663 24198 20910 34494 23103 189 957 1241 10781 2386 2387 2120 24624 24926 24198 23104 189 959 958 10781 2116 2388 2385 24624 34494 24625 23105 1278 10750 9666 11138 28699 24771 27170 33514 29834 34361 23106 8859 8077 8178 11151 36241 36788 37218 33969 36789 24238 23107 9933 10324 9425 11046 27859 14461 17890 27862 14464 14466 23108 9435 10279 10446 10595 24874 33975 25205 25896 30318 15492 23109 7639 7678 7680 11046 35729 37266 34765 31974 27861 35439 23110 8115 8881 8239 10644 37267 28276 36526 35783 30966 19300 23111 9863 10722 1153 11188 24885 35638 35042 35044 35043 33604 23112 8457 10271 8376 11152 32901 32226 37081 30024 33371 22964 23113 9438 10234 10116 11189 16627 28399 19710 34313 22546 17655 23114 8303 8304 8244 11190 36494 26260 37151 34241 32244 29334 23115 7964 8918 8792 10263 37268 28595 24868 12130 21421 28596 23116 1184 1407 1376 10715 5443 5154 6194 28656 32747 14367 23117 8501 9083 8904 10246 23775 37269 37270 23278 36696 16864 23118 6364 6262 6294 10663 6472 6475 6477 23718 34854 37193 23119 9459 10426 9800 11063 24644 28120 31957 22391 31775 32061 23120 8048 8243 8147 10105 36977 33753 33638 13102 27534 18281 23121 9826 8551 10619 10812 35202 35205 30280 25646 35812 36331 23122 8534 7761 9125 10332 37271 32563 30309 27832 19838 32562 23123 7902 8921 8661 10832 12402 36510 37272 12480 24372 12481 23124 767 752 1236 10039 5186 5188 5187 22924 13843 11291 23125 7716 10427 10290 11181 34527 23269 34525 37100 27593 28091 23126 7852 7853 7851 10927 26932 35887 37273 25362 29376 27343 23127 859 958 1445 10558 5665 5666 4856 24174 23545 34022 23128 8780 8531 7765 9967 34745 36152 34822 34367 34824 22094 23129 8691 9978 8468 11153 16468 18300 37274 23483 18774 18776 23130 35 7581 1099 7545 37275 22170 1722 37161 35631 35654 23131 768 767 769 11050 5253 5258 5257 28096 23683 22927 23132 393 398 1105 10371 3404 3406 3385 31573 13132 32351 23133 8769 9119 8456 9734 30171 36483 36345 23931 33462 25299 23134 1559 1016 1019 10405 6031 6030 6032 32023 34429 33336 23135 1243 9983 1269 10982 18048 36039 4371 33354 35937 22284 23136 960 9911 1193 11158 16758 34154 2209 30068 37276 28033 23137 10168 10578 9469 11156 24384 25211 23414 31896 29435 33826 23138 10680 10712 9480 10718 29971 30772 19960 31653 27088 23024 23139 8786 6262 6364 10663 37242 6472 23717 22089 23718 37193 23140 6334 10278 6335 10831 29764 29983 6834 37277 32662 32664 23141 8204 7889 7896 10084 36889 35708 28083 20315 24784 21319 23142 8059 8058 8640 10083 35865 36873 36589 30951 12984 35020 23143 1175 1348 1092 10741 3326 6116 4561 36288 27619 20492 23144 8867 8534 9145 10332 37278 33798 23273 23959 24929 27832 23145 852 1564 1563 10345 5634 5638 5637 15436 15438 24069 23146 9483 9603 10746 10755 33288 23109 28979 33506 32491 19358 23147 7950 7940 7939 10652 26660 37279 32727 32712 21649 30246 23148 8717 8982 8558 10102 34679 36906 34062 28177 14417 13058 23149 221 1266 282 10727 2544 2546 2535 31637 11939 11938 23150 764 762 1371 10871 5233 5235 5234 26281 29913 29536 23151 9363 9910 11122 11123 12689 31501 31523 27391 36400 22233 23152 8369 8370 8294 10780 34203 37280 36188 29295 30176 33921 23153 9088 9069 8598 9742 35659 32474 36472 17411 26863 15735 23154 412 432 512 10887 3489 3500 3499 33667 37017 22297 23155 9210 10753 10393 11164 28438 28439 24132 32281 34981 34983 23156 1523 9914 934 11052 26320 27221 2234 20956 23160 24699 23157 9255 10811 9869 11102 23661 16972 25008 33763 33764 33770 23158 9843 10361 9558 10710 14809 30201 25811 26980 22019 32845 23159 9633 10353 9346 10903 14589 31990 21985 21986 13753 30425 23160 10296 10380 9438 11189 32336 19829 19713 14400 34313 17717 23161 8563 8560 8846 10107 36904 34316 26638 17405 24667 13090 23162 1349 793 1394 10076 5294 5377 5379 32381 28907 23465 23163 8539 8541 9081 10958 37281 25514 36280 25767 22569 25515 23164 7773 9120 8567 10590 37282 36930 33851 26507 33555 28235 23165 8509 8519 9021 10561 34714 35171 37283 31508 13463 28036 23166 9806 10473 10062 11143 34663 29746 31153 24227 35888 21104 23167 655 1088 1395 11079 4714 4715 4515 35157 30573 21204 23168 8287 8932 8164 9741 34895 32716 36294 17348 32718 32717 23169 926 1516 927 10810 2355 5904 5591 32374 26449 29785 23170 1366 552 746 9927 4200 3684 4201 18097 14793 27029 23171 9355 10583 9762 11111 16561 15237 12255 19316 19315 35749 23172 1276 874 1013 10096 4631 5716 5717 34805 21763 30509 23173 8758 8024 8030 9743 34862 37284 32494 32110 13972 16433 23174 8864 8133 8135 9745 35459 35592 35576 18309 35577 14855 23175 8271 8212 8211 9746 35619 36289 32497 31558 24305 29250 23176 498 497 499 9747 3910 3923 3922 33261 13702 11304 23177 1230 1103 1291 9750 6120 6124 4865 22400 25250 15183 23178 758 757 756 9751 5203 5199 5204 13427 25561 26907 23179 8043 8807 7986 9752 35298 36018 32498 22375 19203 19083 23180 1436 1403 810 9748 5452 5451 5453 29154 16703 18086 23181 8979 8381 8863 9749 32499 32505 36427 32264 17334 16028 23182 8739 8738 7996 9753 32501 32495 32506 16876 11359 12004 23183 8669 8047 8993 9756 32504 32493 32507 16193 19535 13366 23184 7869 7870 8912 9755 35342 32500 35687 13745 22876 13281 23185 401 399 397 9754 3424 3423 3425 14235 21790 30364 23186 8415 8984 8714 9759 32496 37068 34914 16391 32874 25281 23187 8470 8379 8472 9758 32503 32502 36625 21173 19367 18286 23188 1333 507 557 9757 3956 3974 3976 15968 13528 25613 23189 222 220 315 9762 2538 2540 2539 25059 35138 29895 23190 279 278 280 9767 2823 2828 2827 21555 22838 13535 23191 9027 9015 8490 9760 35387 35916 36373 35388 14105 34355 23192 7968 7910 8944 9763 32510 36761 36428 32242 25744 28454 23193 282 1353 219 9769 2536 2525 2534 12043 19113 32512 23194 8892 8716 9029 9764 32508 34915 36413 32509 30302 17048 23195 8958 9051 8641 9765 35007 35347 35037 17413 26910 15082 23196 569 1459 991 9768 4283 4282 3793 14061 25224 18567 23197 230 229 228 9766 2577 2573 2578 27543 17066 20312 23198 8284 8461 8427 9770 37285 35348 35418 33880 19862 13148 23199 1266 223 519 9771 2545 2554 2556 15991 35566 35091 23200 8152 8915 8388 9761 36677 32511 36374 22591 14081 27346 23201 1237 899 1400 9773 5790 5805 4780 13451 14157 16184 23202 8834 8045 8131 9744 32514 34712 32513 27017 14238 20971 23203 304 302 1058 9774 2948 2950 2949 12599 32175 26793 23204 846 10579 847 10920 20454 29910 5356 20455 35558 19468 23205 8176 8259 8267 9772 32523 32829 32524 19392 16725 16885 23206 8901 8299 9043 9960 36253 28894 32534 13884 15940 28523 23207 9098 8644 8645 10128 33244 36912 33413 29806 21215 24427 23208 8757 8687 8351 10706 36562 37286 36349 36247 30983 26573 23209 520 800 10240 11074 4040 23366 20481 20484 20486 35189 23210 7700 7696 7701 10770 35608 26450 37257 33862 28563 23012 23211 828 10062 843 10923 29747 17128 5531 24997 14859 17130 23212 8927 8973 8684 10698 37287 37288 30133 24224 30135 14121 23213 1579 974 178 10537 2332 2328 1890 32333 31786 31276 23214 8779 10036 7978 10991 27141 12719 37289 18595 12896 13570 23215 517 515 1198 10327 4008 4015 4014 27735 32917 28352 23216 1031 521 527 10346 4038 4044 4046 25309 34244 25308 23217 8459 8545 8458 10446 35534 37290 37291 22489 21369 18981 23218 1063 1061 1062 10995 6071 6068 6072 30923 30269 26166 23219 8798 9080 7864 10495 37292 37293 34863 34864 14585 16560 23220 7728 7732 7706 10948 37008 37294 24342 22517 24343 29270 23221 1123 1189 10790 10960 3252 32114 30281 30788 31642 37295 23222 8124 8051 8046 10284 37260 35486 34225 12827 30050 26606 23223 7800 8876 9155 10414 32487 37296 32202 31629 32204 25193 23224 7923 7911 10269 11004 37297 27492 27434 27437 27058 35625 23225 9145 8538 7793 10899 37298 31476 28548 23277 33161 20178 23226 1024 1424 792 10112 5375 5374 5373 32118 22274 22273 23227 7003 6990 6928 11197 7414 7353 7357 26230 26626 36566 23228 8848 8187 8874 10862 33995 37299 37099 33776 21948 28059 23229 255 1267 369 10059 2701 2716 2715 20501 34459 27659 23230 8136 8851 8197 9775 35618 33843 36460 19241 33842 15000 23231 7712 7710 7709 10518 34987 37300 17669 14517 16146 32702 23232 9438 10380 10234 11189 19829 16003 16627 34313 17655 17717 23233 1275 1347 1207 11066 6157 5296 6203 35803 32097 20125 23234 8968 8345 8153 10108 36918 34985 27576 16892 27578 14751 23235 1500 1502 1199 10126 5555 2407 2309 13905 26781 26783 23236 49 7661 7720 10338 37301 37302 37303 37304 14770 19947 23237 10313 11119 9512 11176 32834 32208 18113 32836 28336 32837 23238 9473 9656 10642 10992 32687 32292 19415 23821 34390 32688 23239 7571 37 1248 7631 37305 1730 36937 36938 27887 37306 23240 9131 7669 7509 7725 31282 37307 37129 29313 37131 31281 23241 8369 8947 8370 10779 36096 37308 34203 29294 33920 29837 23242 1539 99 182 10855 1973 1976 1979 33215 21328 37171 23243 1114 1468 10784 11111 3016 34510 26375 25173 26377 35750 23244 1501 165 1441 10155 2258 2256 2259 33797 15014 14072 23245 481 482 483 9928 3834 3843 3842 14733 35104 17313 23246 10055 10872 9212 11193 31591 19611 26684 20610 29766 34310 23247 8009 8008 8010 11003 29815 27821 37309 25623 27823 22053 23248 313 1164 305 9930 2965 2964 2962 20825 12978 12016 23249 8208 8209 8210 10821 32804 37310 26066 24459 26068 26560 23250 8629 9134 8853 9828 35242 27450 37311 33877 20613 19590 23251 8989 7920 7927 10552 34515 37312 16736 13886 16738 32452 23252 258 1077 254 10125 2711 2695 2709 16872 25695 22612 23253 6975 9969 1202 10962 34033 34442 35283 34035 34410 15626 23254 537 536 1213 10198 4113 4118 4117 21385 25899 25996 23255 8814 9130 7787 10321 23158 37313 33258 23159 30848 14748 23256 8215 8255 8213 9934 35457 37018 33004 15202 33003 12170 23257 8261 8285 8183 9995 35995 35855 29596 16910 17828 13388 23258 6955 6952 6921 10511 7420 7419 7099 30045 23425 27684 23259 1344 1286 771 10274 5279 5278 5275 18964 13816 20367 23260 1522 932 158 9996 2223 2222 2224 28871 25943 21256 23261 8560 8982 7790 10600 15951 36131 35719 13385 31718 13408 23262 8107 8964 8484 10040 36637 35586 36525 29941 35587 23628 23263 8070 8071 8072 10805 36162 26588 37314 35071 22328 25536 23264 7976 7977 7981 10033 36614 31761 28002 22495 11959 12711 23265 8004 7992 8003 10035 28001 36615 28003 19417 12718 12715 23266 7979 7985 8074 10034 36613 28005 31762 12722 14134 20675 23267 266 265 264 10032 2757 2748 2758 22344 13432 20319 23268 8779 8951 7978 10036 28004 36616 37289 27141 12719 23535 23269 8937 8611 8610 10037 36402 36617 34469 21247 28125 31741 23270 9464 10416 9674 10987 28736 17761 15676 15679 15681 32457 23271 9965 10116 9476 11047 15671 28539 19832 22137 33148 22218 23272 7933 8693 7960 10891 36128 36871 37315 36129 34849 35593 23273 9881 10904 9767 11049 16643 17095 36648 35827 37316 37317 23274 1292 887 632 10029 4601 4600 3961 19376 15327 19375 23275 877 733 785 10541 5099 4812 5100 16054 16946 16162 23276 308 310 309 11123 2978 2977 2940 22234 36410 27188 23277 300 306 308 11123 2932 2938 2937 31923 22234 31375 23278 7710 7715 7711 10861 37318 33251 32701 32703 26051 32319 23279 6338 9173 6280 10828 32541 37074 6544 33896 36917 33895 23280 9700 10371 9319 10928 15595 19809 30126 30898 23515 24560 23281 7715 7500 8770 10861 36947 37319 32316 32319 32320 36950 23282 592 10824 10100 10884 34538 17612 34537 35142 32966 28628 23283 7565 40 7554 10747 37320 37321 37322 35064 36687 37323 23284 8648 8587 8387 10341 28371 35628 34499 17615 18651 27780 23285 7675 7677 7647 11135 30937 34827 37324 31349 25778 31600 23286 6321 6333 6332 11096 6805 6827 6732 36067 27135 20733 23287 8888 8681 8685 10024 35673 36568 37325 18472 12669 33484 23288 8366 10428 8861 11126 12534 29824 37326 36747 28242 29825 23289 9431 9952 9951 10906 12776 24928 13493 22360 12614 17646 23290 9370 10619 9826 10984 28826 30280 24408 27998 22669 27839 23291 8101 8985 8103 11040 34281 37327 36675 33008 15891 27163 23292 9264 10904 9881 11049 21492 16643 19742 33665 35827 37317 23293 1551 1534 912 10440 2268 5615 5850 15927 15929 22207 23294 8070 8069 8071 10019 36532 28348 36162 30411 15341 20431 23295 9035 8907 8402 10020 28349 34883 36533 16353 25954 22057 23296 807 1048 811 10193 5438 5437 5434 20730 26084 31841 23297 160 934 1523 9914 2232 2234 2233 24982 26320 27221 23298 7834 8719 7836 10464 23221 37328 29756 20142 13384 21877 23299 8340 8636 8965 10493 19336 31034 37329 16015 18279 12941 23300 9076 9046 8654 10016 36497 28477 33290 30314 20988 22239 23301 8018 10491 10848 10925 33632 32273 36988 33633 32658 23999 23302 577 1254 1408 10819 3821 4325 4324 34463 24688 33779 23303 8343 10768 7974 11112 31740 36603 37233 33557 23721 29504 23304 235 1115 233 10211 2605 2604 2602 29186 21641 17921 23305 320 308 306 9910 2969 2938 2970 23978 25754 20698 23306 8561 8562 8329 9801 32897 35604 31865 15649 11767 15664 23307 8292 8380 8406 10012 32867 37206 36418 16037 27353 32866 23308 8174 8173 8149 10328 31944 37118 30006 28316 22232 12136 23309 731 580 732 10594 4338 4340 4339 14507 24538 14328 23310 1032 1086 872 10801 4594 5710 5339 23321 33802 16818 23311 110 194 1173 10570 2020 2023 2017 37330 24600 25312 23312 631 284 1268 9950 2860 2852 2861 25575 24211 16203 23313 9725 10426 9309 11105 30097 22316 28402 33431 22291 22013 23314 880 587 879 11163 4372 3694 4373 33629 18065 15143 23315 9345 10979 9884 11056 32815 12167 12056 16154 14481 37331 23316 739 934 846 11052 5132 5131 5130 32080 20456 23160 23317 9747 10517 9279 11103 13898 24918 22381 34196 31760 31628 23318 1442 1195 1421 10194 3840 6199 5508 26093 25015 25530 23319 9591 10518 9442 10861 14518 17105 29510 34466 24316 26052 23320 1079 1081 1431 10173 6095 6098 6097 21897 25558 34135 23321 8699 9068 9077 10038 36624 32744 36220 12871 22063 12770 23322 7740 10427 7716 11181 26710 34527 37332 28090 37100 28091 23323 7893 10832 8661 10989 36408 24372 37333 36745 25511 25512 23324 9038 7908 8637 10545 31314 37334 34848 25993 11591 21287 23325 419 9957 10636 10966 34092 24808 34328 35838 21846 24810 23326 8661 8921 8634 9825 36510 35964 34148 24370 30030 14716 23327 1507 169 1515 9832 1645 2280 2282 21907 15767 33353 23328 522 10469 521 11075 18528 30197 3159 23028 21914 23029 23329 8123 8960 7945 9982 29232 34437 33206 13020 26257 27641 23330 947 946 206 11011 2473 2475 2474 26941 20360 34160 23331 7544 7559 7560 10585 35806 37335 35788 35789 28144 31402 23332 7891 7893 8661 10989 37336 37333 28365 28366 25511 36745 23333 8894 9041 10803 10916 37337 29013 32288 33725 26315 36507 23334 649 650 528 9787 4080 4079 4077 27595 28080 26996 23335 8226 8227 8185 9827 33949 34340 33171 18828 18388 19925 23336 9884 10979 9766 11056 12167 36245 19979 14481 31118 37331 23337 1546 986 962 10370 2347 5097 5847 26687 34138 21655 23338 9767 10905 9881 11049 17091 17807 36648 37316 35827 37338 23339 7971 8696 8225 10069 28944 33222 36576 14278 17385 24193 23340 7994 7993 7990 10965 37339 32021 37026 22549 34016 30055 23341 1466 1080 1083 10980 6100 6101 6103 24904 28604 33650 23342 8662 8920 7903 10885 37340 33224 36848 28163 31351 33088 23343 8312 9132 8531 9924 34412 35904 29826 26385 19659 18027 23344 8662 8648 8611 10885 28161 29859 37341 28163 29861 17616 23345 8147 8926 8188 10156 34009 37037 33602 27536 18957 16449 23346 8274 8275 8277 11032 36689 37342 32749 27893 28858 25424 23347 8127 8190 8191 9835 33605 31463 35136 19463 11955 28869 23348 8486 8897 8233 9985 36066 29528 29535 20296 24582 12194 23349 380 376 375 9986 3312 3308 3313 16845 16633 12208 23350 403 402 391 9988 3392 3388 3393 32253 16002 19904 23351 384 378 473 9989 3328 3330 3329 16016 29035 12212 23352 797 830 1334 9992 5393 5396 5395 20833 22194 29419 23353 7866 7867 7865 9987 35661 36078 34996 17159 12209 12207 23354 8054 8056 8055 9990 36079 36092 29519 17186 11969 16716 23355 1175 377 1348 9991 3311 3324 3326 24634 15790 11544 23356 1011 1335 1010 9993 6019 5349 5361 21464 15723 31407 23357 8699 9077 8698 10789 36220 31205 37343 13157 26897 19527 23358 8944 7910 7901 11014 36761 37344 37103 36523 37028 30551 23359 338 349 358 10772 3127 3130 3129 34974 26477 24272 23360 9063 8719 7967 10304 37262 23475 28318 28187 19214 21875 23361 1328 886 1321 9979 5756 5398 3461 15166 12097 28879 23362 6342 6383 6385 10344 6703 6837 6784 33539 27623 33227 23363 590 589 526 10795 4067 4063 4068 31816 28338 34109 23364 809 1290 1419 11053 4336 5449 5448 33845 35956 36303 23365 1362 506 885 9974 3969 3967 3970 18144 34300 12037 23366 1082 1078 1283 9850 6094 6090 3265 25484 11272 24047 23367 8945 8516 8367 10081 28565 37345 36575 27620 14176 13994 23368 1232 101 159 10572 1981 1984 1987 25451 24793 37346 23369 7987 7988 7984 9968 35837 31982 35121 11964 17724 12948 23370 197 7554 40 10747 36658 37321 1747 35180 37323 36687 23371 743 1135 1272 10068 5148 5147 5146 16812 26921 16280 23372 8082 8080 8078 10190 26732 37049 27145 17872 26900 13225 23373 6964 6966 6968 10600 7342 7402 7452 19496 32315 20183 23374 1242 718 1509 10010 4346 5028 5027 15486 12792 15778 23375 9264 9767 10904 11049 26202 17095 21492 33665 37317 37316 23376 8300 8663 8302 9959 36399 35680 30154 15019 15335 29045 23377 701 1059 699 9953 4935 4934 4609 26981 18135 14595 23378 8207 8200 8206 10900 25707 37347 36653 25708 35495 24019 23379 353 571 352 9913 3198 3197 3192 16592 29063 11269 23380 9881 10905 9360 11049 17807 22693 13657 35827 33887 37338 23381 224 10388 1289 11041 35509 30186 2560 36845 36558 21330 23382 68 192 1262 10456 1855 1858 1852 36903 33162 13918 23383 1159 1158 155 10807 2210 2088 2206 31257 25119 25118 23384 8041 8035 8034 10488 20199 37348 20200 13017 19789 17004 23385 8039 8086 8110 9937 36281 35476 36014 34516 21456 22165 23386 9297 9944 11026 11146 28461 33298 33320 28488 36255 32553 23387 8601 8334 8306 10830 37349 33855 33456 31320 30861 31059 23388 8334 8600 8599 10830 37350 27763 31403 31059 19028 27764 23389 8601 9097 8600 10830 36466 33831 37351 31320 27764 33810 23390 897 896 898 9932 5787 5792 5791 11420 24998 15096 23391 1470 585 1154 10234 4362 3851 4363 16626 22186 18498 23392 7885 7891 8232 9939 31039 30435 35251 24708 25759 28364 23393 10026 10611 9225 11171 21924 33791 34157 33886 33959 28501 23394 8211 8209 8863 10821 37352 26558 19135 19137 17336 26560 23395 7529 7605 7607 9967 36929 35003 34363 34366 34368 26030 23396 9156 8617 9155 11069 37109 37353 36736 36326 33006 26353 23397 8798 9080 10495 11091 37292 16560 34864 23207 22419 30713 23398 8650 9115 9149 11061 37354 36511 37355 33137 36701 36700 23399 9840 9336 10306 11121 20077 29718 11533 33891 32235 29831 23400 8230 7815 10358 11137 37356 34120 32347 20166 32731 35506 23401 8018 8021 8906 10925 37357 31694 33631 33633 23998 30892 23402 8180 7959 8407 10757 35630 29853 37016 29629 29854 28288 23403 9281 11081 10654 11167 17647 17379 17559 23538 19606 32600 23404 6973 6972 6974 9826 7318 7456 7455 25645 25078 24655 23405 7574 10347 7532 11183 25067 36342 37358 35790 35913 16063 23406 9127 8776 9199 10793 37359 36591 23415 27335 27336 33285 23407 1293 10790 1189 10960 35346 32114 2791 27966 37295 31642 23408 6289 6352 6353 10175 6684 6687 6686 26541 20991 18849 23409 947 197 1452 10391 2430 2429 2428 26940 30745 35179 23410 576 1007 1005 10285 4318 4317 4176 13915 14635 20342 23411 8326 8421 8327 9941 30536 35245 31670 28683 31669 15257 23412 8988 8278 8409 9940 31158 35243 30537 27632 13299 30490 23413 1341 309 367 9942 2941 2984 2986 15427 28419 36021 23414 577 10819 1436 11083 34463 29155 4323 37082 25533 32408 23415 1123 1293 1189 10960 5289 2791 3252 30788 37295 27966 23416 1288 172 1518 10515 1878 2296 2299 30841 17624 33911 23417 8288 8392 8393 9944 35848 35231 30533 13576 19020 35233 23418 1068 334 1067 9945 3109 3107 3110 33103 23313 13070 23419 7938 7937 7936 9946 35234 32403 33675 31889 32094 14493 23420 8203 8247 8246 9947 35235 36004 30534 29666 27665 30664 23421 1528 186 935 10072 2371 2370 2372 17882 21839 31458 23422 8145 8083 8084 9965 35415 32187 30693 28323 17357 15037 23423 9312 10703 9756 11029 21055 19536 21526 34955 33324 34764 23424 1015 1557 1555 11035 6026 2230 6029 32565 32146 34671 23425 1557 1016 1559 11035 6027 6031 6033 34671 32026 33337 23426 8572 8571 8570 10571 35716 37360 37361 32433 18383 33537 23427 6303 6395 9191 10396 6437 37362 37363 34833 37249 36925 23428 8157 8109 8156 10748 35823 37364 31801 22109 31803 26671 23429 577 1436 1195 11083 4323 4322 3831 37082 25531 25533 23430 7783 6374 10031 10971 34113 34114 34115 35395 32606 36780 23431 8546 8459 8547 11119 36868 29260 37133 33982 29261 22491 23432 654 612 1281 9948 4500 4486 4501 14511 28716 29726 23433 7466 7529 7765 10897 37365 34823 37366 37367 35942 36623 23434 877 1467 1409 11030 5726 2591 5725 31131 31133 19645 23435 230 1467 232 11030 2590 2589 2588 31055 17599 19645 23436 8344 8625 8670 10157 27480 35854 36583 27440 21295 23696 23437 6387 10483 6396 10688 35293 33586 6826 37368 21787 33587 23438 7877 8778 7961 10575 16966 35974 35972 14301 26808 14304 23439 8414 8712 8417 10576 16967 35975 35976 12996 26811 12999 23440 1390 1062 10794 10995 6078 33349 36597 36999 34896 30269 23441 1498 316 1364 10799 3019 2999 3020 31237 15323 17309 23442 10348 10994 9568 11070 20875 21935 26379 21048 28902 35499 23443 1226 396 392 10928 3401 3398 3399 34505 30899 24678 23444 8333 8476 10642 10992 37369 34045 36907 33656 34390 31955 23445 8698 8202 8201 10166 31204 36632 27427 26896 13292 13788 23446 9470 10983 10716 11024 28758 33974 32427 33159 36920 35428 23447 8432 8395 8936 10075 35809 36631 35255 24052 13558 28607 23448 242 246 1404 9895 2639 2651 2650 35635 14376 15494 23449 9092 9099 8502 9958 30468 37370 35085 13826 14868 15178 23450 8753 7755 9187 10714 35711 37371 35882 34396 19968 33839 23451 9861 10449 9350 11169 31052 26866 27687 34509 31170 30834 23452 690 568 1117 10839 4280 4019 4281 31884 31806 33491 23453 7925 9855 10539 11115 32150 25523 32152 34706 30736 33823 23454 637 901 10150 11087 4614 30102 13185 22211 22210 30199 23455 1074 961 150 10139 2175 2177 2176 13002 13806 13004 23456 9559 10870 8573 11135 32613 35688 32942 25777 32944 34929 23457 8136 8135 8134 10742 30829 36488 36519 19561 31498 30828 23458 7782 9147 8583 10382 36267 33913 37372 24861 19134 34093 23459 1452 197 1072 10747 2429 2433 2432 33697 33174 35180 23460 6337 6339 6338 10828 6817 6762 6678 27060 33896 28770 23461 1416 803 1031 11074 5425 5411 4072 14626 24543 20735 23462 1042 703 719 10439 4952 4654 4953 17083 15034 25869 23463 8734 8096 8087 10082 28635 36251 35908 27412 35907 17208 23464 1119 1120 474 10143 3808 3807 3346 33925 27824 13643 23465 7597 7468 7607 10413 37373 37374 37375 19364 35004 37376 23466 7581 7545 7582 10401 35654 37377 23561 22171 23563 33430 23467 9767 9360 10905 11049 24329 22693 17091 37316 37338 33887 23468 962 985 713 10833 5006 4621 5004 34139 30676 29142 23469 999 9727 10640 11118 35118 28860 35117 35481 34452 17331 23470 9400 10528 9852 11160 33340 32854 29125 29126 29128 27093 23471 1092 10741 624 10986 27619 33988 4558 37378 30718 36792 23472 110 6330 194 10570 6665 21035 2020 37330 25312 25311 23473 647 710 704 10172 4673 4672 4578 18150 22117 11988 23474 577 10852 10819 11083 34464 34052 34463 37082 32408 33323 23475 483 9928 10651 11150 35104 17314 35105 36291 31780 21919 23476 617 326 618 10442 3030 3068 3067 11562 23802 22604 23477 956 1351 554 10229 4211 3751 4207 15188 12464 13359 23478 8918 7964 8727 10263 37268 27171 34274 28596 26747 12130 23479 946 945 10562 11011 5661 27116 36462 34160 33265 36365 23480 6999 7666 7744 10514 37379 37380 37381 37382 37383 27083 23481 8349 8347 8857 10520 37384 33708 35480 29597 33709 12223 23482 8861 8785 8093 11126 26195 32694 37385 28242 36167 34913 23483 8953 7899 7894 10220 37168 37386 35464 18661 35463 23646 23484 7792 7468 7597 10413 37387 37373 22465 21965 19364 37376 23485 7566 7565 7564 10747 35063 37388 34811 34255 24742 35064 23486 8719 7857 7836 10464 21876 30824 37328 21877 13384 11821 23487 9021 8519 8860 10282 35171 37389 37390 13261 18659 32607 23488 452 425 420 10196 3539 3538 3540 21975 27147 12307 23489 6919 7666 6999 10514 24448 37379 7034 27085 37382 27083 23490 8555 8590 8589 10567 37391 34910 34949 32295 29946 34056 23491 8132 8823 8189 9794 35075 33733 33180 13691 13844 24242 23492 1172 1529 152 10242 2191 1830 2189 26711 30877 33397 23493 1584 200 909 10518 2446 2445 2447 17026 22480 21484 23494 7909 7921 7907 10191 36518 33360 36110 27402 27486 14345 23495 8709 10480 9923 11172 30131 27255 30130 36783 31520 33965 23496 7629 19 7535 10435 37392 37393 37394 31311 29633 37395 23497 1248 1196 37 7571 1737 1735 1730 36937 37305 32006 23498 7786 7810 7811 11099 37204 36888 36813 22247 34841 15287 23499 1561 187 1560 10175 2375 2376 2378 16361 21581 26540 23500 7722 10189 7735 11166 35802 35369 37396 29889 37397 35971 23501 33 1273 196 10423 1714 1721 1719 36798 28044 34916 23502 1158 1454 180 9819 2339 2338 2092 31933 33369 13330 23503 1301 1300 1299 10919 6245 3260 2737 34174 31332 21955 23504 9896 9421 10280 10906 12342 12970 30568 12347 19190 12345 23505 9150 10232 8524 11061 27669 26391 37398 37083 28072 28074 23506 9196 9168 8832 10643 21424 36620 37399 18885 35155 21425 23507 728 861 964 10676 5076 5079 5078 14606 18108 21072 23508 1127 1126 561 10140 4242 4244 4243 18615 28139 23568 23509 1264 1429 341 10141 3146 3135 3144 28555 23194 28675 23510 9127 8311 9109 10793 37105 25963 37400 27335 25964 24263 23511 352 1264 348 10309 3181 3145 3179 28702 15857 26000 23512 993 286 1437 10788 2868 2870 2869 15797 36087 35883 23513 7755 9181 8543 10714 35296 34984 37401 33839 19970 30721 23514 7969 7842 7840 10181 28057 36967 28053 20878 28055 17022 23515 191 7535 19 10435 26178 37393 1663 29634 37395 29633 23516 1548 10272 1046 11142 34567 36824 5896 36012 37402 34666 23517 9424 10324 9933 10948 13912 27859 31612 24088 22518 18360 23518 613 611 612 11078 4492 4484 4493 32063 24528 21594 23519 615 613 614 11078 4502 4497 4503 29709 30925 32063 23520 8722 8604 8603 10996 31016 34839 37403 25721 22599 12687 23521 8511 9050 9074 10574 36095 24682 37404 18369 25197 18876 23522 8536 8815 9074 10574 18703 37405 35303 21583 25197 21584 23523 8169 8168 8289 9998 30690 37406 35112 30691 16407 13412 23524 1083 1085 1475 9999 6108 6110 6109 28603 11464 13959 23525 8184 8257 8165 9951 34190 34081 33155 12612 24298 13492 23526 6376 6385 6345 10414 6785 6841 6839 25192 20341 27625 23527 9184 10544 8506 11034 25147 18888 37407 34467 18890 18892 23528 7932 10857 8838 11004 31239 35358 37408 17793 35897 31240 23529 7734 7733 7646 10072 33110 35447 35898 33109 31759 31337 23530 7847 7843 9009 9906 37409 35223 35166 35167 35164 13667 23531 8473 8881 8613 10425 27953 34948 35866 27954 22798 19299 23532 597 1265 665 10027 4124 4426 4425 14087 20717 21778 23533 8870 8198 8266 10026 35406 31294 34590 20225 21923 31296 23534 9587 10851 10064 10947 25608 31652 31598 29898 25718 36124 23535 1171 902 10525 10951 5583 23643 27698 33722 33724 31079 23536 9013 10872 10002 11151 29328 19613 29327 35677 19421 30744 23537 1390 1065 1062 10995 3669 6077 6078 36999 30269 20188 23538 8253 8196 8346 11027 37410 33964 30991 30993 26462 32795 23539 519 10731 9771 11107 35567 20785 35566 36047 34198 34716 23540 9906 10999 9601 11000 33686 20571 23548 33687 15086 35165 23541 527 10931 1087 11080 34246 36052 4064 34894 37146 35894 23542 647 1524 710 10172 4675 4674 4673 18150 11988 16997 23543 9904 10539 9320 10891 24591 31144 26419 31583 31540 26187 23544 678 1423 680 10195 4830 4829 4828 21453 21418 31397 23545 607 608 605 10192 4465 4464 4462 24636 12193 25070 23546 8233 8253 8264 11027 37411 34136 24583 24584 21290 30993 23547 7826 7828 7827 11059 34411 37412 36770 33076 36404 27191 23548 1308 1443 368 11058 3280 3279 2646 33077 36771 27190 23549 270 566 560 11057 2788 2787 2780 23167 27189 33075 23550 10054 10777 9302 10844 23827 25601 27835 23037 18307 23289 23551 524 342 635 10006 3148 3150 3149 18050 23408 11889 23552 8367 10081 8516 11095 14176 13994 37345 22868 16133 16132 23553 8633 8128 8122 10066 37413 37414 29449 13399 19255 15759 23554 1193 9911 6915 11158 34154 34577 34825 37276 34578 28033 23555 1193 960 155 9911 2209 2208 2084 34154 33657 16758 23556 6366 6364 6365 10663 6849 6711 6850 22846 22364 23718 23557 9535 10181 10415 10617 19145 19147 17272 22081 30369 16060 23558 8799 9040 10872 11193 37415 35074 37227 32735 34310 30930 23559 8581 8580 9074 10584 37416 33021 24681 12833 24683 33022 23560 9718 10420 9327 11091 30429 26326 20682 22418 17705 31306 23561 1145 595 747 10709 3966 4414 4416 31330 32376 11529 23562 8792 8696 7860 10813 25521 24194 37417 21422 23087 24195 23563 9017 8315 9052 9896 35160 31709 36733 14508 16492 15738 23564 9061 7861 8905 10894 28434 37418 19549 23050 18723 17981 23565 8775 9109 8503 10334 36649 35213 36790 27672 23072 26263 23566 8501 9039 8996 10933 36356 37147 37419 23280 12378 35870 23567 9039 8501 8904 10246 36356 37270 36697 26444 36696 23278 23568 8960 8838 7932 10857 37420 37408 33173 27643 31239 35358 23569 7859 7862 7858 10014 34360 36651 36065 27476 15362 13268 23570 8680 7852 7963 10775 33453 33651 37421 33455 29131 33264 23571 1202 163 1203 9969 2072 2247 2246 34442 11368 22208 23572 101 6291 159 10572 6638 19262 1984 37346 24793 24795 23573 1440 10700 1367 11063 25832 35738 4605 32309 33158 24363 23574 698 1052 634 10778 4608 4607 4549 28863 28153 29507 23575 1349 775 10510 11066 5290 26427 32679 32096 26428 20403 23576 8190 8690 8262 10299 25099 31293 36899 25042 26208 17952 23577 9690 9378 10880 11126 26580 27260 27261 28240 36168 27799 23578 7568 7487 7528 10443 37422 37423 37424 19548 34224 37425 23579 1414 314 327 11179 3009 3007 3010 24505 28024 30450 23580 977 1255 1087 11080 5885 4075 4745 17950 37146 22041 23581 9345 9766 10979 11056 34725 36245 32815 16154 37331 31118 23582 567 568 688 10964 4017 4273 4272 32475 27124 32793 23583 8847 8182 8143 10437 35880 36187 23934 24337 24338 21830 23584 9141 8621 9170 11114 34609 37426 36377 29646 36378 34610 23585 1342 885 1346 11156 5752 5749 5270 32954 35597 31894 23586 8359 8464 8361 10098 35398 29427 32990 17306 27448 13758 23587 7580 7632 7578 10268 36513 30849 35475 30697 26199 29778 23588 8103 8984 8935 11040 37427 19486 15424 15891 12099 19488 23589 566 270 1293 10092 2788 2790 2789 23057 27965 28641 23590 8209 8206 8914 10091 35333 35494 29482 26559 21549 35334 23591 8101 8103 8102 10094 36675 35331 29484 29486 13227 15426 23592 241 1308 368 10093 2644 2646 2635 28484 36722 23845 23593 7825 7826 7827 10095 29483 36770 35768 25338 35767 12483 23594 8806 8551 8496 10619 35203 37428 36944 35204 27838 35205 23595 49 7720 1168 10338 37303 15384 1779 37304 15385 14770 23596 9367 10558 9676 10781 22259 16580 30277 23693 21136 24175 23597 7759 7532 10347 11183 35912 36342 35335 35337 16063 35913 23598 881 10342 10222 11090 35227 15129 34794 35451 20726 27499 23599 49 170 7661 10338 1776 22462 37301 37304 19947 22463 23600 8623 8934 8804 10549 37429 19889 36228 33166 19858 16554 23601 343 331 344 10049 3088 3093 3092 25638 23502 25381 23602 1131 1347 1275 10045 6154 6157 3615 29532 16119 20123 23603 8584 8277 8335 10046 34574 29896 35269 27746 16122 28857 23604 645 825 646 10047 4663 4662 4448 11872 29609 24043 23605 8505 8307 8308 10048 34575 29897 36357 21016 24046 18373 23606 7473 7785 7530 10447 37430 17233 37431 37432 14530 17234 23607 8079 8178 8077 10055 31767 36788 34488 18031 31199 31766 23608 8671 8672 8407 10056 34705 29819 33737 19444 23831 21769 23609 492 489 487 10057 3874 3873 3875 27579 19161 16186 23610 7913 7917 8966 10058 33738 29820 34703 29215 28527 23728 23611 1455 827 1301 10070 5345 5528 2739 24893 34039 15469 23612 8112 7948 9030 11081 32177 37433 32190 32192 21823 32492 23613 10055 10872 8178 11151 31591 34309 31766 30401 36789 30744 23614 8939 8282 8324 10383 36146 28638 34407 16529 13276 23065 23615 778 856 855 10312 5311 5310 5309 18995 21896 24651 23616 615 616 613 10061 4505 4504 4502 23858 35325 27416 23617 7898 7902 7893 10832 36803 37434 36406 35681 36408 12480 23618 7932 7923 7931 11004 37435 28909 33563 17793 34893 27437 23619 1589 7000 6908 10373 37436 7279 37437 37438 22581 37079 23620 8105 8104 8106 10797 30101 37439 32675 35528 18638 12742 23621 704 724 628 10820 4580 4579 4577 25051 16793 33853 23622 8707 8934 10549 10847 37440 16554 26786 16543 26788 29723 23623 7654 7747 1589 10373 37441 37442 37443 33406 37438 37094 23624 8576 9169 8577 11161 37444 35794 20148 20150 17937 33054 23625 626 625 584 9931 4357 4265 4358 18214 15134 13520 23626 834 709 833 10086 4982 4977 4983 13284 28174 11406 23627 8754 7780 8753 10085 35905 32651 37445 20357 32652 23068 23628 266 270 268 11057 2770 2769 2768 22346 37234 23167 23629 368 1410 1260 11058 3278 3277 2636 36771 17121 18186 23630 7827 7829 7887 11059 37446 37447 36403 36404 22959 11297 23631 10101 10703 9545 11029 27345 27513 27897 27981 27980 34764 23632 510 1338 247 10607 2676 2675 2659 18697 17606 21114 23633 8469 9006 8378 10097 33144 35294 29563 19796 27515 12920 23634 9102 8488 9045 11086 37448 21749 35664 33379 15745 23579 23635 260 1299 234 10919 2611 2610 2599 17813 33642 31332 23636 8853 8800 8629 9828 34614 35784 37311 20613 33877 34615 23637 8015 8981 8665 10474 32980 21417 37090 15574 17986 17855 23638 1232 6348 101 10572 21024 6634 1981 25451 37346 25452 23639 1175 10741 1092 10986 36288 27619 4561 24635 37378 36792 23640 1127 1111 1426 10990 6139 6133 5391 18841 28913 14185 23641 796 1126 1127 10990 5384 4242 5389 26317 18841 24549 23642 917 1521 916 11024 5866 5865 5833 36725 37182 36919 23643 9047 9026 8799 11193 32582 37449 35925 13716 32735 31382 23644 7473 7530 7614 10447 37431 37450 37451 37432 31031 14530 23645 8312 8285 8261 10866 37452 35995 33805 26387 33806 13390 23646 318 317 319 11162 3005 3023 3022 34493 30548 30602 23647 10470 10716 9470 10983 25012 32427 30803 17810 28758 33974 23648 8720 10856 8857 11033 26390 34503 37453 37454 34504 18758 23649 9849 10578 1346 11156 25212 29320 29319 33852 35597 33826 23650 110 1173 6295 10570 2017 19641 6661 37330 24601 24600 23651 1186 916 1521 10716 2283 5865 2455 24676 34912 32730 23652 1254 577 476 10852 3821 3820 3549 22432 31217 34464 23653 8160 8275 8274 10099 35284 36689 32098 14874 25901 15123 23654 8441 8536 9779 10782 37455 20862 18275 19896 20829 28805 23655 8811 7989 7995 10422 36442 28245 34249 14243 28247 28246 23656 290 631 1057 10612 2859 2891 2890 13723 20033 25576 23657 7565 1577 40 10747 37456 1742 37320 35064 37323 35514 23658 6323 6324 6322 10512 6745 6812 6749 30428 31571 24018 23659 675 785 733 10541 4813 4812 4800 26879 16162 16946 23660 8118 8240 8241 11070 37457 17780 20364 20366 15948 16169 23661 237 1260 256 9973 2624 2626 2615 29067 19945 17120 23662 8200 8146 8205 10900 34017 26757 37458 24019 26894 14384 23663 8938 8241 8295 10215 37459 36720 36277 15646 20417 15946 23664 643 642 546 11031 4169 3675 4170 30874 26451 32302 23665 978 1552 10719 11068 5892 28576 34181 33020 34182 30087 23666 8715 8737 7961 10993 34500 26806 37460 31365 30150 12281 23667 9462 10741 9991 10986 24209 20493 24444 15461 15764 36792 23668 9259 10329 9870 11191 33611 19024 33613 30707 34994 27540 23669 9269 10330 9865 11192 33618 24821 19957 33475 24706 27542 23670 7560 7620 7541 10477 35560 36290 35440 26110 30493 22939 23671 1118 1302 418 11012 3531 3523 3529 22832 14741 14916 23672 1420 201 1170 9949 2064 2451 2453 23707 25922 17874 23673 998 1486 1357 10307 6004 4051 6003 23427 19757 14409 23674 455 453 454 10497 3702 3697 3703 21535 25602 14369 23675 661 977 1087 10247 4744 4745 4386 23590 36051 17949 23676 9154 9155 8962 11069 32788 37461 32306 31604 31505 33006 23677 1310 9636 11100 11101 32245 32069 33065 33066 35800 31167 23678 225 11106 9651 11107 36044 34014 32251 33074 33063 36045 23679 1548 1513 1046 10272 2466 6061 5896 34567 36824 35253 23680 885 1387 1362 11021 5753 5755 3970 31893 18391 33342 23681 9381 10593 9774 10953 30658 26792 24246 28291 23487 29795 23682 8857 8720 8349 10856 37453 37462 35480 34503 30119 26390 23683 9021 8860 8128 10282 37390 26633 37463 13261 26634 18659 23684 9244 10513 9717 10977 31358 28480 26489 25276 26491 29689 23685 7522 7679 7639 10590 37464 37465 37466 37467 31911 27204 23686 1125 1062 1060 10794 6070 6069 3536 22106 30257 33349 23687 9159 9031 8726 11088 34103 34924 37468 34104 31417 25898 23688 8517 8790 9123 11166 36778 37469 23972 21818 23974 34696 23689 8467 8312 8468 10866 37470 26386 36607 15405 17534 26387 23690 7529 7466 7604 10897 37365 37471 37472 36623 34449 37367 23691 267 265 266 10869 2762 2757 2763 32844 24228 20137 23692 8309 9056 8321 10235 35723 37198 37473 31577 16113 35073 23693 7566 7567 7552 10429 33245 34865 36666 26130 32009 31589 23694 195 1180 1179 10201 2419 2418 2417 28440 21514 15976 23695 8034 8032 8040 10758 34162 35458 37228 19790 27773 25518 23696 7927 7920 7919 10552 37312 32978 31874 16738 27426 32452 23697 984 354 541 10476 3209 3164 3210 24394 26649 12320 23698 9874 10670 9312 10794 18612 21208 21207 37003 28701 22737 23699 6299 99 6350 10855 6632 6628 6633 21327 33216 37171 23700 9104 9616 10984 10985 32852 22667 33820 33821 35718 17556 23701 188 10962 951 11158 37474 19721 2381 37475 24525 31339 23702 8059 8640 8154 10634 36589 32400 37476 30870 30399 27220 23703 705 734 1001 10625 4329 4963 4962 26264 16093 15394 23704 7953 8203 8172 11016 37477 29667 29814 29692 18105 29668 23705 7941 8112 8677 10829 35218 34563 37478 34954 33156 32796 23706 9837 10593 9464 10987 18975 28644 17170 17171 15679 33237 23707 8920 8611 8937 10885 37479 36402 33086 33088 33089 29861 23708 9226 10333 9865 11184 33690 34202 34074 32285 24823 28520 23709 8532 8878 9146 10347 37480 34085 16918 18041 18043 28625 23710 594 593 10884 11170 4397 34152 35151 30939 23838 36936 23711 8061 8063 8062 10238 31654 35598 36563 24514 13786 22534 23712 251 250 252 10080 2683 2688 2687 30494 29240 13231 23713 1071 175 1519 10429 2312 2314 2313 32922 19921 34387 23714 7768 9152 9136 10144 37481 34885 36818 32543 33250 33993 23715 7939 7940 7938 10652 37279 30244 34561 21649 30245 30246 23716 9766 10979 10409 11030 36245 35460 17400 31056 31132 34860 23717 8483 8107 8484 10756 35430 36525 37244 25037 32575 29940 23718 925 1269 1243 9983 5602 4371 5900 15879 18048 36039 23719 9652 518 11108 11127 32878 33073 32580 25824 36116 32879 23720 7487 7568 7776 10443 37422 19543 37482 37425 19546 19548 23721 8021 8020 8022 10925 37483 18826 28990 30892 20219 20013 23722 946 858 945 11011 5660 5656 5661 34160 36365 20321 23723 9355 10784 10583 11111 32158 35748 16561 19316 35749 26377 23724 8478 8972 8697 10624 37484 31254 25973 15907 25493 26467 23725 8234 8969 8060 11045 36569 37057 37485 19356 31009 36570 23726 729 967 966 9857 5084 5083 5082 28508 23452 19841 23727 1349 1394 1206 10859 5379 3650 6205 32297 17237 24870 23728 1114 315 1468 11111 3015 3012 3016 25173 35750 36038 23729 1205 1275 1207 10461 6204 6203 6202 12444 28689 19385 23730 8585 8335 8718 10462 34119 36742 33990 28692 17590 19387 23731 8328 8492 8491 9980 36464 31843 33715 33716 20173 23004 23732 7833 7834 7835 10315 33827 28672 36234 14830 25359 23208 23733 8392 9944 10754 11146 35233 21546 35849 35241 31490 32553 23734 7634 9191 6395 10396 37246 37362 36924 36926 36925 37249 23735 790 791 792 10849 4774 5365 5364 19155 35810 23434 23736 8578 7962 8607 10452 36695 36844 34046 12104 23751 20795 23737 576 356 1037 10603 3220 3196 3221 15511 22325 26892 23738 8902 8084 8342 10532 21579 37486 31595 13211 29414 17358 23739 1368 357 570 11067 3205 3224 3226 30998 34678 31483 23740 8497 8551 8552 10812 37012 37487 34748 34936 28537 36331 23741 8296 8501 8295 10933 23279 37488 20415 14591 20487 23280 23742 1049 1314 1050 10523 3801 5168 3776 20168 27988 17670 23743 8203 8869 8466 11016 37489 36905 34189 29668 27229 19895 23744 7603 7537 7608 10865 36279 35423 37490 35211 32135 36734 23745 7500 7801 8770 10861 37231 37491 37319 36950 32320 34649 23746 7929 7933 7943 10891 36421 37492 24154 24157 24159 36129 23747 396 397 393 10928 3403 3402 3397 24678 32640 21791 23748 9906 10617 9409 10999 16059 15361 21322 33686 15301 13891 23749 1148 57 7698 10530 1811 37493 22508 23114 23116 37494 23750 512 432 513 10287 3500 3598 3597 22589 30081 25199 23751 933 1171 10675 10951 2186 27700 37066 37495 33723 33722 23752 1373 1106 1107 10538 6129 3481 6130 15935 13218 30481 23753 8814 7763 8815 10290 34931 37496 29182 23157 17082 31796 23754 9205 10380 10296 11189 19048 32336 13482 17598 14400 17717 23755 1190 434 428 10478 3581 3580 3569 21888 19194 26215 23756 1577 197 40 10747 1749 1747 1742 35514 37323 35180 23757 652 849 1020 10132 4697 4701 4700 12493 32385 32882 23758 615 655 1395 11079 4507 4515 4514 29710 30573 35157 23759 24 7557 184 10475 37497 26752 1678 37498 29508 29211 23760 9461 10737 9988 11125 34037 16188 21506 32724 32725 28830 23761 8799 9026 9040 11193 37449 31137 37415 32735 30930 31382 23762 6385 6376 6308 10414 6785 6533 6783 27625 31630 25192 23763 7912 7904 7899 10815 30637 37499 35872 32286 23647 32287 23764 828 843 1465 10923 5531 5534 5533 24997 11233 14859 23765 1502 1450 1505 11177 5554 5982 2409 20605 20604 26554 23766 8202 8961 8195 10621 36287 36391 35578 12522 11850 28105 23767 8510 8507 8511 11034 37500 36968 34942 34943 19442 19239 23768 999 10640 646 11118 35117 34451 4669 35481 29610 34452 23769 9737 10583 9355 10784 29367 16561 30908 31666 32158 35748 23770 1457 1396 820 10769 5499 5496 5497 32929 31054 17398 23771 1496 1000 1492 10322 6006 5569 6007 29775 11523 18462 23772 1175 1092 624 10986 4561 4558 3301 24635 30718 37378 23773 374 1175 372 10986 3300 3299 3297 15763 27498 24635 23774 372 624 370 10986 3290 3289 3287 27498 20212 30718 23775 301 1057 1318 10987 2901 2943 2942 27496 32456 24222 23776 1335 1317 301 10987 2944 2925 2945 33236 27496 33706 23777 786 1335 1318 10987 5348 2946 5338 33646 32456 33236 23778 10093 10763 9535 11194 32546 22082 29921 29453 18673 34237 23779 7832 7830 8900 10540 32887 21241 37501 11261 18744 13176 23780 8680 8888 7859 10771 34391 23456 37502 33454 23458 23164 23781 7808 9191 7626 10396 37503 37248 29989 29987 29988 37249 23782 1278 621 10750 11138 4537 33576 28699 33514 34361 27011 23783 8660 8230 7815 10358 32346 37356 37504 11928 34120 32347 23784 564 656 583 9952 4260 4259 4258 28883 18352 12355 23785 7714 7648 7712 10546 37505 33474 32574 29590 24912 28918 23786 7560 7559 7620 10585 37335 34872 35560 28144 32322 31402 23787 7920 7924 7918 11115 37506 30374 32451 32453 16502 30376 23788 8317 9175 8368 11198 35274 37205 37507 35275 24686 34543 23789 7557 24 7589 10475 37497 37508 37509 29211 36361 37498 23790 8451 8254 8817 9935 33841 33897 35207 12783 15157 28498 23791 8500 8592 8422 10398 31146 36779 37207 31148 18846 27605 23792 7735 7722 7731 10189 37396 35801 37510 35369 31004 35802 23793 9100 8311 8305 10503 24262 28560 37511 16693 28562 24261 23794 8922 8949 8366 10001 37512 32116 37214 21665 13244 24365 23795 7573 7575 7553 10631 36550 37513 30426 27949 27479 33273 23796 1214 653 850 9936 4705 4702 4706 27090 24136 14424 23797 7723 1582 62 10675 27034 1831 37514 27885 37515 29372 23798 1431 10173 10922 11117 25558 22252 37263 25559 21066 18103 23799 8677 7938 7941 10829 33291 34953 37478 33156 34954 30249 23800 8236 9049 7943 10487 34957 28413 36411 13611 24800 19101 23801 9879 10697 9293 10911 15420 30027 13515 13518 13517 26096 23802 845 1269 925 10718 5603 5602 5601 34398 27086 35936 23803 10059 10394 9280 11178 16301 16681 26893 23619 25949 20245 23804 1512 1596 1345 10403 6243 5654 6226 13969 20381 15832 23805 727 735 728 10275 5072 5071 5067 13305 14605 23023 23806 8844 10374 7577 11183 34801 36887 36081 34803 35945 20794 23807 9040 8408 9008 9862 33518 33517 36444 30929 15406 14057 23808 429 423 1153 9863 3553 3555 3554 17292 35042 24886 23809 532 1259 534 9865 4100 4099 4098 24822 35128 24705 23810 610 611 670 9866 4482 4488 4487 25597 16082 21591 23811 8099 8100 8098 9868 36468 33519 36473 36467 17502 11482 23812 1256 783 1375 9867 4796 5335 5334 33023 29079 16080 23813 8354 8355 8356 9869 36445 36160 35797 18205 35796 16968 23814 891 1410 1422 9864 5771 5775 5774 14132 23961 25586 23815 385 1204 442 9872 3364 3366 3335 12159 12384 12019 23816 8896 8706 8835 9870 34831 34992 35639 34661 34991 19025 23817 1309 269 268 9875 2777 2773 2778 14799 36654 13655 23818 1133 1134 395 9871 3413 3412 3389 12758 16258 23183 23819 1065 1390 446 9874 3669 3596 3670 25500 32356 35857 23820 8002 7998 8000 9877 33520 36489 33521 15204 23311 15003 23821 8935 8158 8108 9873 33523 36048 36333 11829 36030 32354 23822 1381 816 1111 9879 5470 5478 5480 32899 14184 13651 23823 7880 7881 7879 9881 33526 33524 33527 13658 16676 15687 23824 781 871 873 9882 5322 5325 5324 18272 13836 22815 23825 7916 7821 7823 9876 36446 33525 35948 13172 18706 21988 23826 7820 8956 7883 9878 36053 33531 33522 17894 21814 22971 23827 9065 8170 8593 9880 35613 36256 36470 17481 29830 35612 23828 7824 8871 8120 9883 33515 36074 33528 14666 15565 33516 23829 1312 551 790 9885 3681 4194 4196 32803 19154 34167 23830 7830 7831 7829 9884 33530 33529 37235 13840 11295 11205 23831 1287 1426 1113 9886 5392 6137 2874 26149 13664 32947 23832 1480 1487 1355 9887 5671 4030 2499 33532 34303 28308 23833 832 859 683 9888 4855 4854 4852 21517 29132 20908 23834 8841 9003 8498 9889 33533 36520 36447 18209 24603 33534 23835 1229 530 444 9890 3661 3660 3624 24596 24695 22690 23836 7905 8662 7903 9891 34881 36848 36716 34880 29111 34326 23837 686 563 1330 9892 4248 4254 4256 28642 16102 28956 23838 666 658 575 9894 4312 4308 4313 14066 31207 11965 23839 9121 7776 8675 10823 37237 36104 37516 24922 33057 24545 23840 8118 8116 8115 10227 36974 29520 36942 20365 29522 13445 23841 7993 8829 7995 10809 34692 37517 28513 32740 29164 31050 23842 623 622 634 10448 4540 4548 4547 17190 28149 25175 23843 8455 9970 8866 11129 34585 18740 37518 36068 20820 20822 23844 9743 10329 9259 11191 19401 33611 33610 27539 30707 27540 23845 9750 10330 9269 11192 22399 33618 33617 25251 33475 27542 23846 8018 10848 8020 10925 36988 35599 37519 33633 20013 32658 23847 1246 535 596 9893 4105 4114 4116 21376 15329 19310 23848 9919 10333 9226 11184 23379 33690 33572 28519 32285 28520 23849 9152 10144 7768 11077 33993 32543 37481 23867 34972 20045 23850 7628 7544 7637 9664 36151 35993 37520 28962 28930 34508 23851 432 410 1106 10887 3490 3479 3491 22297 30482 27786 23852 7686 10382 7688 11082 31211 35949 37521 36934 31690 19007 23853 8631 7818 7816 10752 37522 33698 29800 25750 31793 30215 23854 9388 10410 9829 11139 25085 31023 24188 31728 26871 30423 23855 1411 1037 1449 10455 4321 3189 5945 12708 12031 22324 23856 8627 8460 9034 10533 36759 27386 35018 25315 28134 28133 23857 9022 7882 7880 10671 37523 31513 28637 20926 13694 30346 23858 1243 1269 586 10982 4371 4368 4369 33354 22283 35937 23859 7954 7957 7952 10529 32255 37524 30503 27870 30505 32254 23860 8972 8046 8041 10009 35175 32160 32610 26465 13265 27547 23861 8830 8031 8025 10421 28775 36515 34308 28776 16960 23020 23862 488 486 487 10762 3867 3862 3868 30054 17587 17392 23863 7663 7678 7677 10515 36972 32961 36143 34458 27789 32962 23864 9109 8775 8776 10793 36649 33284 37525 25964 33285 26720 23865 8404 8410 8405 10424 34295 28853 36536 20627 13010 13254 23866 594 600 593 11170 4403 4402 4397 30939 36936 33460 23867 637 901 1491 10150 4614 4625 4624 13185 31640 30102 23868 986 1163 1523 10521 2345 2235 5993 20953 20954 25730 23869 1068 1419 1439 11053 5447 4931 6087 33104 37088 35956 23870 8448 8447 8386 10294 36820 37526 34533 31392 18577 28503 23871 586 539 542 10018 4134 4132 4135 16745 12830 27015 23872 7974 7972 7973 10003 36602 32304 37527 24333 30013 13250 23873 9084 9053 8900 10004 35264 32303 32763 29498 20328 19212 23874 1118 742 1302 10005 5143 3701 3531 25126 15352 28954 23875 8694 8918 8374 10626 37528 33547 36986 28078 33548 28597 23876 197 10391 7554 10747 35179 36364 36658 35180 36687 24744 23877 6990 6999 9189 10514 7176 37529 37530 36565 37531 37382 23878 309 10804 9942 11123 36020 11936 36021 36410 30162 30461 23879 9839 9461 10737 11062 33649 34037 14963 32949 34934 16982 23880 516 10839 568 10964 35088 33491 4018 36370 32793 29663 23881 7736 9189 7744 10514 37532 37533 37534 33661 37383 37531 23882 888 1387 1122 11021 5764 5763 5762 30810 31725 33342 23883 9873 10748 8108 10797 17549 36029 36030 11831 36328 26672 23884 7889 7881 7884 10843 21320 34238 37535 21321 29309 16018 23885 8905 10894 8903 11097 18723 35963 37536 37537 36634 33028 23886 10116 10234 9476 11189 28399 14371 28539 22546 17653 17655 23887 7705 7733 7699 10818 33372 34656 37538 32372 33326 32429 23888 9271 10964 9805 11039 29662 35106 31976 34631 34319 32479 23889 693 1293 773 10960 4271 4906 4905 21883 22892 27966 23890 7729 7707 7690 9793 35252 32780 35416 25819 24119 17041 23891 1144 9681 10978 11125 33795 24599 33923 33796 34595 24848 23892 865 866 981 10837 5239 5685 5684 14325 30822 31081 23893 1218 1217 1215 9852 6210 5197 6211 17137 33783 33782 23894 1003 1118 1002 11012 6008 3530 5718 21061 21766 22832 23895 8908 8293 8288 10835 37539 31345 26964 25345 13577 31347 23896 8555 8553 8554 10836 37540 20233 32294 32296 14381 19059 23897 328 332 329 10553 3078 3077 3058 19107 13166 11807 23898 1078 1079 362 11044 3250 3249 3247 29100 21391 21393 23899 7608 7539 7610 10865 32134 36244 37541 32135 35992 32136 23900 9646 9329 10549 10913 21496 15718 26787 21498 31149 14545 23901 1080 1081 1079 11044 6096 6095 6091 33898 21393 33695 23902 7853 7856 8872 10494 37076 33683 33671 26933 25847 14947 23903 6397 6388 6316 9664 6822 6821 6823 32533 28961 35754 23904 593 669 1352 10013 4404 4406 4221 34151 29440 32349 23905 8904 8905 8903 11097 37542 37536 37543 36698 36634 37537 23906 1032 872 784 10801 5339 5120 5340 23321 20239 33802 23907 839 943 824 10310 5515 5514 4717 16722 17585 20843 23908 7948 10654 7951 11081 37544 34549 37545 32492 37240 17379 23909 472 559 1314 10489 3797 3800 3799 29721 17819 32924 23910 1026 11145 9678 11163 37141 32036 24933 35062 25693 32037 23911 8178 8799 9040 10872 33041 37415 37546 34309 35074 37227 23912 9418 10628 9961 10920 20723 16277 22778 18855 22962 20249 23913 8251 8250 8129 9917 36440 33732 36463 12618 32104 33316 23914 7816 7817 7814 10974 32680 34422 37547 31413 26061 25244 23915 1209 1025 1208 10735 5138 3410 3802 29025 32206 32205 23916 7892 7891 7886 10989 37548 29530 36681 36683 24615 28366 23917 99 6299 182 10855 6632 21325 1976 37171 21328 21327 23918 552 551 449 10873 3682 3678 3683 27030 21944 33230 23919 781 616 780 10875 4517 4512 4518 16291 16290 27417 23920 8983 8222 8354 10874 25650 37549 16226 16229 16231 25652 23921 1200 1023 871 10876 5709 5708 5702 36230 27660 33513 23922 8968 8841 8493 10878 16220 37550 24009 16225 24011 16223 23923 7819 7820 7821 10877 30756 17711 37551 30758 17714 17716 23924 8754 8755 7780 10565 37552 28558 35905 20358 23069 22621 23925 6915 125 1193 11158 7210 2078 34825 34578 37276 37553 23926 8612 9038 8852 11116 35709 33195 37554 30796 31024 24907 23927 8782 7466 7765 10897 37555 37366 37556 34448 35942 37367 23928 874 638 819 10844 4629 4627 4630 34919 23188 34788 23929 9259 10722 9863 11188 34623 24885 33609 32092 35044 33604 23930 1590 114 6998 10686 1605 7012 37557 37558 37559 37560 23931 7867 7868 7869 10701 36853 36137 16729 12943 12841 27903 23932 8165 8151 8164 10867 33501 37561 27288 24299 27289 33502 23933 8323 10288 8567 10968 13730 34228 37562 18534 33556 18535 23934 8783 8782 8781 10897 36998 37563 30479 26601 28624 34448 23935 9802 10261 9398 11096 24288 24289 14045 16594 15412 35034 23936 7669 7703 7702 10581 36058 22256 37115 31283 22468 18296 23937 9297 10637 9886 11026 15458 26148 32755 33320 36619 33299 23938 686 784 737 10886 4868 4867 4250 22336 30884 17763 23939 854 1261 777 10509 5307 5306 5304 15810 34058 14007 23940 7734 7718 7708 11181 37564 32967 34789 34341 35933 33621 23941 8876 9156 9155 10414 31776 36736 37296 25193 32204 20857 23942 842 843 10062 10810 5532 17128 36506 35449 26329 21843 23943 411 1379 409 9963 3485 3484 3482 21698 16338 14232 23944 9861 10420 9474 10830 27688 30218 19096 19027 15743 33126 23945 582 684 660 10213 4350 4349 4343 26642 16465 27894 23946 7673 7672 7674 10537 35988 36013 31751 30015 31524 32331 23947 1139 1138 1140 10498 6166 6168 2193 32339 31917 15587 23948 9307 10543 10096 11173 30408 29673 32119 30409 32120 23744 23949 1278 621 620 10750 4537 4533 4538 28699 23868 33576 23950 1185 1338 510 10607 3987 2676 3988 20797 18697 21114 23951 6916 10356 7804 11176 34722 35024 35884 34724 35127 28337 23952 1021 1570 1020 11141 6041 6040 5619 33043 32386 35173 23953 9440 10931 10346 11080 26171 34248 23630 23632 16710 35894 23954 10090 10737 9461 11062 33917 34037 17473 17474 16982 34934 23955 302 298 297 10858 2922 2903 2923 19737 18979 30715 23956 1327 1185 1418 10017 5331 3989 5441 28942 29696 20080 23957 7827 10916 10095 11059 35769 20563 35767 36404 30286 22960 23958 1320 512 1276 11173 3501 3999 4001 22026 35183 22024 23959 877 1455 1467 10267 5346 2741 5726 26561 19384 25040 23960 7815 7812 8660 10358 34121 27285 37504 34120 11928 18118 23961 906 905 909 10653 5415 5822 5821 29481 22771 33510 23962 1064 1063 1408 10381 6074 6080 6079 12298 24687 30922 23963 7998 7997 7994 10965 15952 37565 22548 15006 22549 15954 23964 1464 998 996 10767 6001 6000 5967 14037 32383 23428 23965 8804 8995 8469 10241 36835 32760 30776 19857 19798 14567 23966 9360 9767 10751 11049 24329 21557 23552 33887 33314 37316 23967 1426 1287 796 10990 5392 5383 5390 28913 26317 36485 23968 1450 833 708 11177 4981 4978 4979 26554 28972 28973 23969 9458 10564 10465 10915 17124 17125 15195 26233 24813 24815 23970 8455 9128 8456 11152 36069 34116 37566 34625 33463 33385 23971 713 841 911 10833 4722 5003 5002 30676 35300 29196 23972 9763 10738 9328 11060 11919 12819 13981 25416 25066 30748 23973 8163 9042 8336 10387 34468 26077 36329 32537 21182 19121 23974 1075 303 305 10389 2954 2952 2955 24322 11972 32447 23975 1076 1289 224 10388 2561 2560 2549 32783 35509 30186 23976 7873 7874 7875 11006 37264 27268 36548 31835 20076 31011 23977 9905 10665 9272 10772 20919 24284 27816 24274 24286 20353 23978 1424 1024 948 10981 5375 5948 5659 34868 31202 29324 23979 1061 1379 414 10678 3511 3496 3509 17840 24296 13034 23980 520 1031 800 11074 4037 4041 4040 20484 35189 24543 23981 765 760 1279 10021 5225 5217 5226 32816 30283 11582 23982 550 549 1146 10901 3213 4183 4182 31447 19474 32107 23983 588 1220 531 9919 4096 4085 4094 23378 28626 21993 23984 831 1461 1490 10753 5545 5546 4666 11433 14048 32267 23985 8416 8612 8852 11116 36965 37554 27271 26519 31024 30796 23986 858 857 945 10279 5045 5657 5656 18868 29743 19218 23987 6932 10648 6940 10658 35516 19231 7431 23790 34816 35356 23988 424 435 400 10430 3440 3439 3437 17445 28887 15592 23989 7925 7929 7924 11115 37132 36199 37567 34706 30376 35778 23990 1521 11017 9675 11024 34193 19127 34588 36919 33439 34134 23991 8435 8436 8437 10892 36865 30641 36857 27521 26083 27564 23992 1276 514 638 11173 4000 4009 4011 35183 33260 31924 23993 8448 8976 8540 10022 35256 32847 37191 22280 15697 28061 23994 8780 7607 7468 10413 34364 37374 37568 34746 37376 35004 23995 9667 8199 11047 11175 34559 34560 22136 27574 36559 34871 23996 9867 11100 9636 11101 33024 32069 23199 29080 31167 35800 23997 7930 7933 7929 10539 34658 36421 37569 23810 26186 34659 23998 997 1234 310 10236 2991 2990 2979 20469 27187 21316 23999 1255 1416 527 11080 4076 4073 4074 22041 34894 16709 24000 9094 9102 8645 11086 37570 33378 21214 20120 21216 33379 24001 7629 1176 19 10435 34170 1658 37392 31311 37395 35301 24002 677 748 674 10233 4810 4809 4807 22635 21879 20868 24003 1084 1083 1082 10980 6107 6102 3262 22743 29115 28604 24004 7949 10654 7948 11167 19128 37544 37571 19605 32182 19606 24005 9651 11106 9771 11107 34014 34197 22385 33063 34198 36045 24006 855 1165 1274 10800 5651 1689 5650 29351 35758 20444 24007 8137 8140 8139 10749 29027 36192 37572 28165 29920 32602 24008 743 1298 1135 11150 3856 5149 5148 36642 34594 24331 24009 669 593 600 11170 4404 4402 4405 35530 33460 36936 24010 9832 10499 9480 10865 34551 33569 23267 33042 13954 35212 24011 8446 8266 8445 10680 36292 28806 36898 34339 28747 23005 24012 8854 9161 9159 10154 36161 35793 37070 31868 34102 19509 24013 7957 7958 8148 11064 35413 37573 34402 32256 34821 33681 24014 7625 7633 9190 10657 37574 37575 37576 26820 37577 37578 24015 1066 1025 745 10667 3408 5137 5155 11431 18971 27041 24016 7923 8838 7911 11004 37579 35896 37297 27437 35625 35897 24017 8060 8969 8057 10726 37057 37580 29948 31464 31465 28664 24018 1281 609 607 10842 4474 4473 4475 28717 24637 33364 24019 156 1562 1563 10169 2211 2215 2214 24513 15903 17240 24020 8842 8843 8890 10418 35159 28257 37581 32588 22498 15537 24021 1001 1488 826 10221 5526 5525 4966 25538 18055 27065 24022 7582 7545 7621 10401 37377 36867 34691 23563 19652 33430 24023 722 1005 971 10633 4301 5051 5050 13823 28374 14636 24024 848 662 912 10073 4695 4748 4747 24177 14689 32307 24025 659 573 572 10131 4297 4180 4298 28660 13358 11301 24026 1067 809 1068 11053 3231 5446 3110 33844 33104 33845 24027 9268 10840 9733 10926 33694 32571 27676 28372 17849 31538 24028 7849 8986 7846 10745 37582 33818 32030 14005 31566 29885 24029 7741 7723 62 10675 37583 37514 37584 33944 37515 27885 24030 1282 1137 1139 10755 4716 6165 6167 28363 32490 31808 24031 7697 7724 7694 10714 37585 34394 36275 32869 34397 33840 24032 8518 8649 8520 10504 37586 26589 35490 20712 26395 26591 24033 888 887 1362 11021 4755 5759 5758 30810 18391 19542 24034 9030 7951 9055 11081 37587 37239 22859 21823 13051 37240 24035 226 1289 286 11041 2559 2571 2570 29434 24200 36558 24036 1036 739 731 10594 5094 5093 5090 27009 14507 35362 24037 9499 10351 10671 11049 18606 20293 21411 33313 33315 33664 24038 110 6295 6330 10570 6661 6666 6665 37330 25311 24601 24039 562 355 550 10760 3214 3212 3215 32270 31445 32271 24040 7825 8894 8679 10761 35360 30631 37588 25339 14397 32269 24041 7948 10654 11081 11167 37544 17379 32492 32182 32600 19606 24042 602 352 571 11007 3199 3197 3200 31102 12436 28703 24043 633 10700 1453 11159 35739 28102 4603 25034 33307 35556 24044 9091 8246 8428 10918 37589 34480 28417 16881 32875 27667 24045 987 988 736 10917 5115 5114 4821 22792 32876 21461 24046 606 1331 778 10542 4436 4471 4470 12424 26397 35426 24047 8818 8820 8821 9926 34146 33500 36174 15541 15413 15748 24048 8542 8539 9081 10472 26722 36280 37590 20770 21809 26723 24049 1403 1063 1065 10995 6081 6076 6082 18087 20188 30923 24050 9075 8515 8962 10044 35610 36119 32918 15051 31503 18628 24051 1233 1345 598 10961 4430 4429 4161 23955 32257 19586 24052 7680 7732 7728 9933 31821 37008 36732 27860 22514 29269 24053 1329 779 1162 10244 4141 5315 5316 33813 24509 28982 24054 6986 6949 10074 10841 7441 27802 33952 25585 18427 36148 24055 8830 8736 10840 10926 37591 34760 30968 30980 31538 30946 24056 730 738 1039 10113 5086 5089 5088 13866 13217 17152 24057 9652 11108 9887 11127 32580 28309 24985 25824 33409 36116 24058 205 974 1579 10537 2470 2332 1894 31705 32333 31276 24059 8299 8235 8656 10536 35170 29881 37592 28524 29882 18349 24060 8709 8992 8975 10480 36921 35822 30129 30131 27256 29871 24061 1303 10174 6960 10908 33926 34729 35717 34083 34730 27777 24062 1176 191 19 10435 1665 1663 1658 35301 37395 29634 24063 8007 8008 8006 10360 37000 32460 27857 21866 18080 22051 24064 8623 8804 8470 10913 36228 29370 37593 34709 22248 29371 24065 8782 7604 7466 10897 32890 37471 37555 34448 37367 34449 24066 7747 7000 1589 10373 37093 37436 37442 37094 37438 37079 24067 8020 8018 8016 10848 37519 37594 34700 35599 18588 36988 24068 315 1033 1468 10583 2541 3013 3012 35137 33741 33078 24069 340 341 339 10683 3133 3132 3124 16334 21850 22894 24070 8010 8981 8012 10597 37595 31530 36688 27822 25314 17856 24071 1592 204 6393 10688 2032 37596 37597 37598 37599 35579 24072 7851 7848 7850 10927 29922 13864 37600 29376 13743 11416 24073 1154 480 1465 10042 3833 3838 3837 24105 11230 29773 24074 629 294 706 10921 2510 2908 2907 13881 12780 23271 24075 6908 1510 1589 10373 22580 2169 37437 22581 37438 22582 24076 970 1518 172 10515 2297 2296 2295 23582 33911 17624 24077 1498 893 1491 10802 5781 5776 5782 31238 31641 22501 24078 170 49 1168 10338 1776 1779 1782 22463 15385 37304 24079 8058 8056 8297 10888 37601 16714 33561 33562 15356 16804 24080 820 821 700 10142 4938 4937 4932 31053 12659 13098 24081 555 1352 812 10679 4212 4216 4215 24381 24867 29441 24082 1456 875 1459 10777 5721 5492 4286 30122 23288 34259 24083 8396 8721 8291 10656 35703 37075 37602 32041 24910 30138 24084 927 1474 1470 10380 5905 4366 5593 24838 19827 16004 24085 7792 8780 7468 10413 37603 37568 37387 21965 37376 34746 24086 768 1257 766 11050 5255 5254 5252 28096 33825 33478 24087 791 1415 950 10713 4776 5372 5371 34301 20663 15818 24088 307 299 1244 10200 2935 2914 2936 12988 30029 23669 24089 8392 8161 8912 10754 36843 36581 36710 35849 31489 29448 24090 8426 9004 9032 11157 36369 37604 31093 33013 31073 26796 24091 101 6348 6291 10572 6634 6639 6638 37346 24795 25452 24092 8893 7522 7639 10590 37605 37466 31910 30679 31911 37467 24093 114 6991 6998 10686 7177 7179 7012 37560 37559 21312 24094 9138 9166 8786 10663 30002 37606 24778 15895 22089 18357 24095 516 1117 568 10839 4020 4019 4018 35088 33491 31806 24096 1098 1097 1004 10860 5211 5687 6012 26087 28891 25859 24097 10106 10806 9566 11053 27013 23095 32082 33381 33380 36304 24098 6361 6367 6365 10573 6603 6848 6847 34446 22362 28810 24099 1265 1269 845 10718 5604 5603 4766 32480 34398 35936 24100 8452 8840 8365 10197 36908 35456 32174 31950 13188 18037 24101 863 1035 1433 10053 5679 2976 5680 28321 13153 18573 24102 8710 8975 8924 10868 26904 37607 27583 18124 14349 26905 24103 1122 1121 888 10065 5761 4756 5762 17836 34205 27846 24104 9506 10847 10728 11025 29724 32266 22608 30510 36075 30511 24105 897 899 895 10739 5789 5788 5786 13030 28700 12980 24106 6895 6952 6951 9819 7291 7290 7221 33702 29177 27683 24107 479 482 481 11015 3835 3834 3825 28070 30963 17858 24108 7965 9039 8904 11097 19875 36697 37608 21372 36698 19177 24109 7949 7951 7948 10654 37609 37545 37571 19128 37544 34549 24110 8111 7848 8941 10214 36379 31706 32168 28464 20987 11413 24111 1017 1015 1555 10599 5015 6029 6028 15987 23694 32608 24112 1003 1002 875 10054 5718 5715 5719 21058 35852 22844 24113 415 1060 414 10636 3508 3507 3502 21528 24295 30255 24114 9352 10655 9885 11148 34351 19153 23882 34287 34169 31210 24115 8453 8350 8840 10645 37610 34435 32939 21093 18039 22237 24116 6386 6309 6381 10831 6789 6591 6790 35653 31114 34956 24117 506 884 885 11156 3919 3968 3967 32682 31894 34474 24118 1036 739 10594 11052 5094 35362 27009 27010 24397 32080 24119 10005 9459 11063 11121 23585 22391 23586 22680 23854 32757 24120 1007 1051 1008 10071 6014 6013 5976 21237 20451 15036 24121 8885 9048 9027 10708 36970 36212 36218 29524 35389 27022 24122 592 593 556 10884 4220 4219 4217 35142 28627 34152 24123 251 1077 362 10635 2694 2696 2685 30495 21503 22614 24124 8730 8162 8762 10554 33046 37162 37611 25442 26797 29222 24125 1087 527 525 10931 4064 4045 4065 36052 34247 34246 24126 712 929 1231 10117 4999 5001 4760 17079 18430 13343 24127 8903 7835 7837 10115 35962 32970 36633 35961 14189 25360 24128 9632 10950 8990 11073 15345 34928 34926 18930 35864 22061 24129 263 227 229 10673 2574 2572 2575 13257 16314 28922 24130 8279 8277 8278 11032 28856 37612 29809 11602 29812 28858 24131 755 757 1108 10666 5198 5201 5200 26102 23419 27390 24132 8385 8957 8943 10064 33351 36705 33350 18737 21509 31181 24133 8013 10379 8033 11172 30792 30577 37613 29108 30579 30581 24134 9171 8826 8825 10459 30562 29572 37614 30564 23047 24757 24135 240 241 239 10763 2633 2632 2627 16996 31535 32547 24136 511 1374 1427 10628 3995 3996 3176 16550 16278 34321 24137 8815 7763 9133 10290 37496 37615 31139 17082 17241 31796 24138 7533 7582 7595 9907 35705 36874 35150 16284 15637 24087 24139 8866 8455 8375 9970 37518 34583 36420 18740 29361 34585 24140 8233 8105 8196 11027 27637 32676 37616 24584 32795 31313 24141 1453 633 1440 10700 4603 4604 4606 28102 25832 35739 24142 8149 8148 7958 11064 36310 37573 35839 32185 33681 34821 24143 1298 483 545 11150 3854 3852 3855 24331 23772 36291 24144 514 513 515 11039 3998 4003 4002 30514 28733 33081 24145 7895 7816 7815 11137 30932 35505 37617 30934 35506 29801 24146 10060 10983 9470 11024 28490 28758 32656 31836 33159 35428 24147 6909 10313 9113 10657 36235 34758 36858 36236 34759 28100 24148 154 57 1148 10530 1808 1811 1814 36093 23114 37494 24149 8830 8036 8736 10926 30979 37618 37591 30980 30946 30981 24150 1587 1149 1447 10691 6170 6173 5946 17017 17018 31200 24151 9760 10708 9300 10889 20237 21381 15875 15240 15876 29525 24152 1171 902 1508 10525 5583 5814 5813 27698 15256 23643 24153 8401 8509 9021 10561 36744 37283 15298 13395 13463 31508 24154 239 237 238 10774 2622 2617 2623 31532 31533 31066 24155 324 1386 319 10724 3035 3034 3032 30496 30545 23391 24156 1273 158 932 9996 1717 2222 2221 34032 21256 25943 24157 188 951 952 11158 2381 2380 2379 37475 24754 24525 24158 952 960 1193 11158 5950 2209 2383 24754 37276 30068 24159 8984 8985 8714 11040 37619 27173 37068 19488 27172 27163 24160 8299 8656 9024 10536 37592 32605 28522 28524 14612 29882 24161 8010 8012 8011 11003 36688 29576 37620 27823 33747 33746 24162 204 10483 6387 10688 34529 35293 35292 35579 37368 33587 24163 8749 8076 8007 10176 35291 32738 33950 20858 21865 28752 24164 56 7649 154 10818 37621 37622 1807 37623 36094 35651 24165 8987 8463 8270 10630 37624 20917 37625 24536 12151 14246 24166 762 765 1371 10871 5224 5236 5235 29536 29913 29936 24167 774 773 776 10170 5281 5286 5285 27610 31100 27332 24168 204 6387 6393 10688 35292 6673 37596 35579 37599 37368 24169 8599 8438 8247 10910 26538 37626 32632 18422 30917 26539 24170 9157 8726 8725 11088 37627 34069 34250 34252 27997 31417 24171 8539 8448 8540 10958 25765 37191 37628 25767 13323 22281 24172 9424 10472 9709 10948 26136 16755 13910 24088 18359 26212 24173 8800 7528 7487 10443 34613 37423 37629 35130 37425 34224 24174 6253 6318 6303 10643 6439 6441 6436 37630 34835 35156 24175 7819 7817 7818 10079 35554 35095 33549 30757 30213 29119 24176 8093 10880 8922 11126 28969 23293 37631 36167 21670 36168 24177 6253 6303 9112 10643 6436 37632 37633 37630 35787 34835 24178 8093 8882 8922 10880 37634 23290 37631 28969 23293 23295 24179 9311 10765 9732 11127 31985 30465 29937 33408 25823 33847 24180 1277 492 1319 10881 3886 3899 3901 12268 31733 27580 24181 1468 1033 1478 10583 3013 4027 5539 33741 33645 33078 24182 9942 10804 9363 11123 11936 13370 13783 30162 27391 30461 24183 8707 8766 8934 10847 37635 28026 37440 16543 29723 29722 24184 7717 7716 7740 10427 36815 37332 36355 23170 26710 34527 24185 1005 547 576 10285 4175 3219 4176 14635 13915 28267 24186 10382 10521 9428 11082 31370 21731 19006 19007 17521 32344 24187 433 440 1094 10502 3602 3606 3605 22576 22112 33467 24188 8378 8217 8379 10882 37636 16439 27514 27516 16440 16441 24189 8475 8593 9035 10903 37637 20160 34232 34073 16354 20161 24190 8139 8141 8377 10089 36071 33593 33594 29919 27481 23922 24191 7850 8986 7963 10087 35078 33598 36667 13742 29130 29883 24192 8704 8067 8978 10088 35077 33599 34544 13159 33017 31469 24193 8894 9041 8585 10803 37337 37638 30632 32288 32289 29013 24194 8931 8144 8231 10359 33220 36849 29343 20648 14878 23610 24195 936 10366 983 10736 19552 24643 5580 25621 32065 25622 24196 7589 10475 1274 10800 36361 35757 36753 36317 35758 29352 24197 8659 8715 7961 10993 36206 37460 35973 26124 30150 31365 24198 10153 10529 8639 11147 28381 34876 34874 29394 35570 28285 24199 8525 9122 8824 9964 31695 36017 35701 23318 31336 27377 24200 9161 9162 8516 10524 37639 37640 18466 18467 14526 31187 24201 57 7649 7698 10530 37641 37642 37493 37494 23116 35650 24202 8920 7902 7898 10270 34877 36803 35349 33087 21851 14719 24203 8508 8401 8400 10218 35092 36552 32720 30570 16522 13376 24204 7577 10374 7575 11183 36887 32465 37643 35945 35924 20794 24205 10095 10916 9356 11059 20563 22942 22943 30286 17109 22960 24206 9150 9149 10512 11061 37644 34605 26442 37083 30895 36701 24207 8297 8493 8298 10664 35350 37188 36645 24499 20466 35351 24208 8567 8323 8566 10288 37562 37117 36894 34228 20915 13730 24209 316 1451 317 10707 3018 3017 3003 35280 30601 27531 24210 9019 10738 7968 11060 30747 32243 37645 27618 36429 30748 24211 1439 1419 698 10854 4931 4928 4929 34836 29241 31753 24212 7828 7830 7829 11059 26761 37235 37646 27191 11297 24016 24213 268 560 1309 11057 2779 2781 2778 37234 24015 27189 24214 1422 1410 1443 11058 5775 3281 6241 24014 27190 18186 24215 7910 7911 7909 11014 33714 26653 37647 30551 26656 26658 24216 7473 7614 8879 10447 37451 31277 37648 37432 31279 31031 24217 6938 6902 6992 10253 7327 7063 7328 17560 11448 26868 24218 592 1014 715 10100 4392 4401 4400 34537 16320 15784 24219 8516 10524 9162 11095 14526 31187 37640 16133 32529 16562 24220 8634 8382 8471 10787 36896 36699 23247 23248 20760 29604 24221 1274 7589 24 10475 36753 37508 1683 35757 37498 36361 24222 6915 6982 6970 11158 7394 7396 7212 34578 35520 27280 24223 972 976 178 10180 2331 2330 2329 14570 31785 24001 24224 10446 10453 9435 10595 22609 25537 25205 30318 25896 30319 24225 8665 8667 8666 10101 33751 33752 35050 17984 25983 13037 24226 8066 8067 8064 10988 37649 33202 37650 26135 31362 33203 24227 8118 8115 8239 11070 36942 36526 37651 20366 35290 36334 24228 8153 8050 8152 10890 36006 21858 37652 32698 21861 21863 24229 8885 9027 8884 10889 36218 37653 24392 22124 24393 36219 24230 676 678 677 10898 4818 4817 4808 21695 21450 21454 24231 1349 1207 775 11066 5298 5297 5290 32096 20403 32097 24232 10072 10321 9441 11181 22637 14749 17883 28092 27775 27592 24233 519 1488 1496 10731 4032 4036 4035 35567 29776 34715 24234 1279 1422 1280 10907 6237 6236 5248 30284 24108 23963 24235 501 499 1292 10893 3933 3935 3934 17045 19464 14306 24236 1587 943 154 10530 2202 2201 2203 18071 36093 18557 24237 8070 10805 8170 11128 35071 36257 37654 30412 35614 35072 24238 125 188 1193 11158 2073 2080 2078 37553 37276 37475 24239 228 1409 230 11030 2580 2579 2578 32991 31055 31133 24240 1198 806 1336 10814 4276 5435 4641 33417 30793 34573 24241 8830 8734 8085 10840 37655 33672 28987 30968 31712 32569 24242 629 889 1056 10103 4584 4586 2511 13880 16460 32472 24243 9191 9112 6303 10396 37656 37632 37363 37249 34833 35785 24244 9218 10694 9740 11086 34845 30243 29465 25789 15746 31440 24245 8513 8263 8449 10682 35140 34453 37657 26015 21746 34454 24246 9479 10256 10550 11056 19622 21927 25838 33669 31120 31119 24247 8843 8728 9117 10268 35965 35753 35080 16128 28842 30698 24248 1290 1052 1419 10106 6063 4927 5449 31013 31752 29506 24249 8296 8475 9064 10353 29851 36216 34606 14590 19936 29569 24250 969 722 970 9984 4736 5048 5047 13945 25845 16896 24251 477 1235 475 10596 3815 3814 3812 31000 16274 14018 24252 447 446 439 10909 3632 3595 3633 15692 19902 29193 24253 8374 8727 8371 10109 35009 33835 36390 33546 29384 28119 24254 7771 9148 8772 10546 33626 35191 37048 33627 27511 22813 24255 315 1076 222 11111 2551 2550 2539 36038 33619 32784 24256 236 1299 364 10111 2609 2621 2620 35938 16252 31331 24257 8653 8068 8654 10605 33794 30498 37658 18751 20990 30499 24258 9107 10225 6907 11197 35647 34416 36130 36191 34417 29280 24259 8691 8467 8468 9978 35529 36607 37274 16468 18300 18704 24260 21 7594 1588 10746 37659 23105 1666 37660 23108 23110 24261 1329 10244 10613 11093 33813 19977 33814 36332 19104 19787 24262 869 868 1088 9977 4993 5696 5695 13425 19076 21710 24263 1333 1381 502 10911 3950 3949 3947 15971 17214 30019 24264 56 1167 7705 10818 1804 32371 37661 37623 32372 30622 24265 8879 7785 7473 10447 37662 37430 37648 31279 37432 17234 24266 7773 7679 7522 10590 27203 37464 37663 26507 37467 27204 24267 9339 10748 9873 10797 19065 17549 22262 22872 11831 26672 24268 591 10824 508 10934 19493 36223 3980 32260 31484 29097 24269 364 1047 238 10501 2631 2630 2619 19453 29032 15606 24270 7844 7842 8911 10997 35006 28056 37664 32561 17862 17024 24271 7752 8842 8890 10418 33789 37581 34280 14565 22498 32588 24272 886 1340 787 10326 5353 5352 5350 30654 18622 14488 24273 7735 10189 7803 11166 35369 35370 35368 37397 36439 35971 24274 8380 8787 8406 10963 37665 33191 37206 34738 29974 25861 24275 6349 6305 6374 10031 6766 6517 6767 27757 34114 26521 24276 1327 689 782 10846 4878 4884 4886 28943 28911 33867 24277 481 477 479 11015 3824 3822 3825 30963 28070 32126 24278 7655 10272 1513 10688 36183 35253 36694 36319 35254 31387 24279 7001 6909 9190 10657 7043 37666 37667 37668 37577 36236 24280 8373 8810 8952 10340 36109 34654 30519 26843 22918 24672 24281 8460 8422 8592 10834 37669 36779 27384 28742 28744 23818 24282 394 388 1208 10838 3380 3359 3381 32485 32486 14615 24283 7811 7813 8602 10743 34674 37670 35695 36504 22529 19090 24284 9137 7751 9157 10127 34159 36831 35702 16974 34251 28615 24285 1360 1303 864 10174 2100 5683 5682 14280 13391 33926 24286 8466 8869 9033 10390 36905 37186 34413 27281 29172 19894 24287 323 1444 328 10467 3055 3054 3053 23137 19105 27569 24288 8027 8794 8795 10650 28269 33234 37671 28270 26728 22719 24289 1274 24 184 10475 1683 1678 1685 35757 29508 37498 24290 8744 8886 8746 10303 35414 37672 37166 29148 30195 15609 24291 125 6970 188 11158 7208 37673 2073 37553 37475 35520 24292 9253 10506 9804 11120 31260 26436 31259 30770 31852 29408 24293 250 1338 253 10323 2674 2691 2690 12901 25091 22558 24294 8606 8568 8608 10041 28411 35417 35174 13601 22000 29687 24295 162 1212 1531 10427 2243 2245 2242 25843 17101 18790 24296 648 1070 1028 10051 4309 4681 4678 32690 16740 11266 24297 8630 8674 8249 10052 36431 34376 34933 31220 15146 15311 24298 6930 6929 6907 10225 7354 7351 7171 24588 34416 31096 24299 1326 204 1548 10483 2031 2465 2464 27128 34566 34529 24300 9152 9154 8515 11077 37674 32461 23865 23867 19074 31861 24301 224 10388 11041 11106 35509 21330 36845 35510 34013 30070 24302 8328 8305 8229 10740 33736 34853 37675 35876 24610 33977 24303 7840 7839 7838 10415 34556 36638 29593 29594 13043 26526 24304 56 7705 7649 10818 37661 37676 37621 37623 35651 32372 24305 6990 9189 9111 10514 37530 37677 37678 36565 36139 37531 24306 8754 8753 9187 10085 37445 35882 28861 20357 16389 32652 24307 1431 10922 1325 11117 37263 33910 6106 25559 37230 21066 24308 185 209 208 10255 2365 2364 2136 17973 24812 21306 24309 7816 7814 7815 10974 37547 35978 35505 31413 34122 26061 24310 8566 8321 8569 10870 20913 23009 37679 22027 18668 16114 24311 9110 9198 8319 10224 37253 34096 33411 25736 14983 26597 24312 505 10028 10934 11155 32692 31703 36863 32693 31485 29562 24313 9489 10990 10637 11026 24550 24551 17826 33210 33299 35930 24314 8349 8348 8347 10520 32821 37680 37384 29597 12223 32822 24315 8376 8933 8207 10271 37080 27465 35607 32226 25706 25737 24316 1296 622 618 10672 4531 4530 3069 23209 22764 22765 24317 9187 7755 8543 10714 37371 37401 17678 19968 19970 33839 24318 923 1046 1045 11017 5895 5894 5880 28281 28283 35679 24319 6253 8832 6318 10643 37681 32685 6439 37630 35156 35155 24320 1532 937 882 11090 5741 5738 5742 13749 17127 32398 24321 614 612 654 11078 4498 4500 4499 30925 32775 24528 24322 9087 8436 9090 10936 30642 37261 37682 32216 26975 32217 24323 7675 7665 7676 10180 36492 35133 34438 30938 26143 32956 24324 154 1167 56 10818 1810 1804 1807 36094 37623 30622 24325 236 10774 237 11023 35939 31066 2613 36802 29071 31068 24326 7655 1592 7746 10688 37683 37684 37685 36319 37686 37598 24327 9237 10623 10091 10900 27655 27656 27654 21889 31696 29417 24328 922 978 1552 10719 5890 5892 5891 30032 28576 34181 24329 154 7649 57 10530 37622 37641 1808 36093 37494 35650 24330 8459 8458 8322 10446 37291 32532 34930 22489 22594 21369 24331 923 1046 11017 11142 5895 35679 28281 27234 28759 37402 24332 9713 7892 10989 11195 36682 36683 24616 30723 30722 36786 24333 7951 8639 9055 10153 34932 35568 37239 34547 15942 34874 24334 483 544 545 10651 3847 3853 3852 35105 31778 17193 24335 6915 6970 125 11158 7212 7208 7210 34578 37553 35520 24336 9112 6303 10396 10643 37632 34833 35785 35787 27283 34835 24337 1195 480 478 11083 3829 3828 3830 25531 22133 22132 24338 344 522 521 11075 3160 3159 3158 23503 21914 23028 24339 6980 6956 6915 9911 7392 7393 7215 30351 34577 23758 24340 7901 7900 7897 10699 25226 33312 37687 25228 29539 14116 24341 257 254 255 10912 2707 2699 2708 18179 20590 25696 24342 7844 8911 7849 10997 37664 17267 35448 32561 15113 17862 24343 1462 662 590 11005 4391 4390 4387 24569 26593 27964 24344 1271 199 1554 10344 1995 2442 2441 27359 15253 33226 24345 316 317 313 11162 3003 3002 2997 32228 29287 30602 24346 1529 1598 1253 10770 6185 6175 1826 36398 33001 25354 24347 9050 8511 8507 10260 36095 36968 35302 17551 18900 22204 24348 10013 10884 593 11170 24648 34152 34151 24650 36936 23838 24349 8761 8909 8482 10162 34904 36730 34253 22631 15840 17463 24350 8154 8899 8588 10163 34254 36731 34905 30398 13768 12824 24351 7487 7776 8800 10443 37482 37688 37629 37425 35130 19546 24352 7579 7616 7548 10423 34791 36795 32758 18950 28043 33866 24353 9103 9106 9056 10976 33607 34267 37689 27104 34268 33357 24354 1161 696 894 10377 4919 4917 4920 13294 12196 32584 24355 8839 8078 8076 10798 26901 37690 34331 19687 28753 26902 24356 6985 10687 6965 10696 19792 35751 7299 35518 22871 35752 24357 8369 8891 8947 10615 24471 37691 36096 24472 29835 18162 24358 9442 9591 10861 11034 29510 34466 24316 19441 24663 29511 24359 9767 9264 10685 11049 26202 19143 22839 37316 33666 33665 24360 10100 10824 9407 10884 17612 21905 16770 32966 24950 28628 24361 896 1294 994 10969 4926 4205 5794 15099 24731 19238 24362 9028 8458 8548 10732 30603 37692 37693 24806 19769 21370 24363 9180 7807 8547 10412 36517 37160 36073 28466 33146 30207 24364 893 965 724 10250 5060 5059 5057 21109 29409 30170 24365 8757 7966 8687 10465 34079 37005 36562 22696 15508 20111 24366 9962 8838 10857 11004 35306 35358 26163 31430 31240 35897 24367 1322 881 937 10342 5739 5737 5740 15128 32397 35227 24368 935 840 936 10366 5575 5579 5578 21840 19552 15250 24369 62 1582 152 10675 1831 1834 1828 37515 30878 29372 24370 9948 9494 10764 10842 21847 30852 29725 21848 33365 19520 24371 9771 10731 9327 11107 20785 26327 22388 34198 33767 34716 24372 9964 9480 10499 10865 23317 33569 27930 23319 35212 13954 24373 9189 6892 6999 6990 37694 7016 37529 37530 7176 7172 24374 8176 8915 8051 11022 21728 37695 26605 19393 26607 21730 24375 7493 7737 7745 9192 37696 27108 37697 37698 20894 27466 24376 8887 10638 8213 11136 28496 33447 37699 36544 37019 30335 24377 8172 8970 7954 10228 34870 34869 33786 17748 27872 33093 24378 1442 822 828 10923 5506 5504 5507 26094 24997 24423 24379 933 10526 841 10951 37065 35672 5585 37495 29198 29010 24380 1300 1481 900 10450 5809 4915 5808 16622 27651 22713 24381 8724 8723 8075 10947 34051 34599 37700 33426 19033 33033 24382 7955 8581 8142 10902 36823 17491 37185 25179 16304 12836 24383 8894 7887 9041 10916 37701 36538 37337 33725 36507 22957 24384 1304 471 1430 10479 3788 3794 3796 15853 24267 25209 24385 1529 1172 1598 10242 2191 6184 6185 33397 25351 26711 24386 7458 9191 7634 7626 37702 37246 37703 37704 37247 37248 24387 434 441 440 11072 3608 3607 3603 26217 33468 26239 24388 8273 8274 8946 10301 32609 34269 36540 15844 27151 25904 24389 241 10763 242 11071 32547 35636 2637 28485 35981 32548 24390 8766 8377 8931 10728 37705 32156 28025 29470 20649 27483 24391 1434 900 1393 10825 5807 4909 5810 28966 22995 27653 24392 209 210 211 10608 2366 2484 2483 21307 26496 27364 24393 601 1472 1473 10850 4444 4446 4443 31037 23952 23951 24394 211 1056 209 10608 2486 2485 2483 26496 21307 16461 24395 1150 1524 1595 10438 6177 5011 6172 32934 31919 17504 24396 9780 10741 9462 10986 30337 24209 16262 15057 15461 36792 24397 314 310 322 10804 2983 2988 2987 30449 26836 30460 24398 6893 6940 6997 10648 7282 7283 7159 21199 30628 19231 24399 220 219 218 10924 2527 2523 2528 27005 22189 19115 24400 8749 8877 8839 10566 35710 36777 34807 20860 22848 14788 24401 8829 7997 8622 10355 36376 31667 34518 31049 28937 22697 24402 9288 10651 9928 11150 25794 17314 21918 21920 21919 31780 24403 898 953 952 10508 5802 5801 5800 24999 24753 14335 24404 6334 6335 6381 10831 6834 6836 6588 37277 31114 32662 24405 8399 8397 9018 10445 30778 36663 36070 14362 21954 13936 24406 9259 10729 9743 11191 33999 15914 33610 30707 27539 32193 24407 904 706 1461 10393 4968 4969 4971 34980 26946 12778 24408 6995 7633 7555 10657 37706 37707 20115 22469 22470 37578 24409 1315 363 1188 10681 3255 2746 3256 31327 29876 14899 24410 1081 1325 1431 10922 6105 6106 6098 31819 37263 33910 24411 6934 6904 6926 9858 7188 7336 7335 21049 22947 22902 24412 6995 7001 7633 10657 7025 37708 37706 22469 37578 37668 24413 6926 6936 6916 10356 7401 7055 7399 22949 34722 11560 24414 7741 62 152 10675 37584 1828 34227 33944 30878 37515 24415 8364 8349 8720 10856 28670 37462 36086 30118 26390 30119 24416 8996 9039 8801 10188 37147 34852 34517 12696 29477 16891 24417 8240 8418 8994 10348 37153 34611 32064 21046 27909 31782 24418 7960 8693 8330 10262 36871 34581 35602 28391 12550 12937 24419 8170 10805 9880 11128 36257 18538 35612 35614 34291 35072 24420 707 1493 889 10949 4973 4972 4585 29055 33643 23769 24421 8861 8922 8366 11126 37709 37214 37326 28242 36747 21670 24422 331 322 1234 10705 3050 2989 3051 19966 20283 28428 24423 9037 9090 8436 10406 36416 37261 34820 21681 27562 26972 24424 9470 10716 9675 11024 32427 20751 27918 33159 33439 36920 24425 8845 8530 8313 10286 34856 35436 35989 17804 22606 19914 24426 7699 7724 7697 10714 36156 37585 33325 32807 32869 33840 24427 1590 7636 43 10686 37710 37711 1603 37558 37712 37713 24428 691 690 787 10937 4883 4888 4887 31881 18624 28344 24429 9923 10480 9452 11172 27255 28864 22572 31520 31098 33965 24430 1087 10931 10247 11080 36052 30042 36051 37146 14687 35894 24431 8562 8699 8698 10789 20423 37343 36198 13279 26897 13157 24432 1038 367 1414 11179 3274 3011 3275 22458 24505 23377 24433 466 469 468 10734 3768 3767 3763 23713 28762 23714 24434 9875 9250 10869 11057 18416 22880 18231 20777 24229 20775 24435 911 841 933 10526 5003 5585 5584 35299 37065 35672 24436 8028 8029 8027 10817 35885 28268 37714 21482 28572 24787 24437 8144 8141 8143 11010 32323 37715 34586 31515 23652 25797 24438 9257 11058 10093 11194 19982 30285 29450 18674 29453 22940 24439 9063 9053 8663 11038 28188 24529 37716 28189 24531 20532 24440 235 236 237 11023 2607 2613 2612 29069 29071 36802 24441 7935 8671 7936 10620 34485 28525 37717 25269 28515 20375 24442 9126 8755 9195 10565 37718 37719 14476 15478 15479 22621 24443 641 695 876 10289 4642 4645 4644 32982 30965 18820 24444 776 1091 793 10932 5301 5300 5293 31101 23468 23860 24445 1432 570 548 10551 4177 3225 4178 12647 22341 34818 24446 1240 926 1522 10631 2353 5588 2225 29411 28872 32373 24447 9210 10393 11036 11164 24132 33684 26804 32281 36834 34981 24448 1145 591 508 10934 3981 3980 3964 32259 31484 32260 24449 79 207 1591 6392 1896 1899 1610 6406 32365 37720 24450 113 204 6393 1592 2029 37596 6415 1620 37597 2032 24451 10699 11014 9500 11122 36524 27489 14118 34012 31500 35021 24452 7532 7574 7576 10347 37358 34100 36339 36342 22782 25067 24453 8383 8333 8476 10642 35771 37369 37721 31856 34045 36907 24454 1263 1288 1008 10324 1874 6017 6018 26036 17627 24717 24455 8808 8880 8855 10783 28416 35273 37722 26104 30516 29869 24456 736 1114 1423 10784 5116 5118 4831 29870 31664 26375 24457 7913 7905 7906 11013 31700 37723 17115 17117 17112 31702 24458 336 337 335 10665 3113 3112 3104 12272 20351 20920 24459 8745 8744 7754 10808 37063 36939 37724 29357 36940 30962 24460 8694 8374 8391 10955 36986 37725 31470 31471 31473 35846 24461 7922 9085 8963 10786 33550 37726 36895 12497 29059 29858 24462 6948 6986 6949 10074 7135 7441 7440 22046 27802 33952 24463 8777 6326 6282 10710 28888 6555 37727 34426 37728 34311 24464 9469 10578 9849 11156 25211 25212 24689 29435 33852 33826 24465 6297 10378 7757 11098 35186 36136 36512 35187 35921 24878 24466 6941 6918 6946 10695 7260 7408 7407 20912 22178 31360 24467 8050 8345 8971 10627 36571 24898 36657 22820 23493 14753 24468 8729 8666 8993 10703 37729 31678 31036 17164 18265 27344 24469 300 296 299 10369 2917 2912 2918 31922 23670 14708 24470 8088 11009 8087 11110 20851 35909 37730 21753 36366 21754 24471 7915 7923 7911 10269 34727 37297 35603 28456 27492 27434 24472 8063 8954 8155 10363 32407 36114 34967 19569 12381 14252 24473 10192 10764 9494 10842 24936 30852 25701 15775 19520 33365 24474 1152 1084 365 10441 3266 3263 2766 24491 15899 17632 24475 8990 9031 8945 10950 34927 27621 37731 34928 27622 14887 24476 8744 8745 8743 10444 37063 37732 34354 29304 18199 29355 24477 8366 8364 8861 10428 35847 36025 37326 12534 29824 17035 24478 1451 316 1498 10799 3018 3019 3021 30156 31237 17309 24479 8390 8549 8389 10702 37733 37734 30324 23808 16106 21364 24480 6253 9112 8832 10643 37633 37735 37681 37630 35155 35787 24481 8092 8090 8091 10766 35047 29730 37736 30466 29225 29699 24482 215 214 213 10765 2502 2495 2503 30463 24270 29581 24483 1152 267 271 10202 2765 2774 2776 24490 12554 32843 24484 7856 7860 7970 10204 35829 34767 34768 33682 12539 23084 24485 386 387 390 10203 3352 3368 3367 12542 13525 12535 24486 8778 8657 8658 10207 34766 34775 34770 14303 18729 16687 24487 288 1053 603 10206 2841 2881 2880 20635 26433 16962 24488 7876 7878 7877 10208 34771 34772 34773 12544 14299 17529 24489 8466 8632 8599 10209 34774 34777 34769 27226 18419 34289 24490 321 277 1406 10210 2815 2824 2826 12549 34221 16964 24491 8000 8001 8024 10938 37737 23132 18780 18783 16830 23154 24492 683 681 680 10939 4837 4833 4838 22672 21505 14893 24493 1588 153 21 10746 1673 1671 1666 23108 37660 37134 24494 8255 8887 8213 11136 37738 37699 37018 13588 37019 36544 24495 1589 205 7654 10373 1895 34217 37443 37438 33406 31704 24496 649 1220 770 10972 4086 4686 4685 22373 29513 21994 24497 1307 795 1305 10534 5387 4876 5388 25543 15262 18649 24498 6946 6996 10694 10695 7409 22834 35825 22178 35826 35998 24499 8087 8088 8086 11009 37730 20846 37739 35909 20849 20851 24500 1325 765 1280 10463 5249 5247 5250 33878 25214 29935 24501 8566 8573 8567 10870 37740 34618 36894 22027 34229 35688 24502 9193 9117 8528 10296 34327 35616 37059 13481 23638 28841 24503 9297 10754 9944 11146 21404 21546 28461 28488 32553 31490 24504 1567 177 1576 10261 2323 2324 2326 27312 31460 25689 24505 8970 8433 9086 10796 34005 36892 37741 33094 20521 26510 24506 9351 10640 9727 11118 28698 28860 15171 25184 17331 34452 24507 6913 6943 6944 10205 7383 7382 7143 23505 24865 21832 24508 7583 9178 7471 10808 36479 37742 37743 14266 37744 32144 24509 7687 7685 7643 10332 33278 36825 36284 24102 35049 26585 24510 1495 1029 1353 10943 5817 2526 6054 18990 18802 23464 24511 8097 8098 8107 10944 37745 37746 32198 32200 29942 17503 24512 1221 924 169 10499 2278 2279 1641 16138 34550 33570 24513 1339 878 382 10433 3351 3340 3349 15291 21873 16797 24514 423 400 399 10945 3432 3428 3433 24887 27663 33009 24515 10290 10427 9441 11181 23269 17886 14746 27593 27775 28091 24516 458 459 460 10407 3719 3728 3727 29463 13438 22663 24517 8529 9118 8831 10477 30775 36380 37177 25384 31931 20958 24518 8788 8787 7854 10516 35929 29740 36433 18436 25968 23496 24519 1589 148 6908 7000 1615 7277 37437 37436 7279 7021 24520 8306 8180 8395 10946 29627 33423 37747 24264 30862 33239 24521 9085 8813 8963 10786 33939 36893 37726 29858 29059 12594 24522 8692 8691 8468 11153 33704 37274 37748 31304 18774 23483 24523 1005 1007 971 10633 4317 5974 5051 14636 28374 35544 24524 866 1210 1361 10641 5241 5692 5691 31080 26479 11239 24525 6950 6996 6893 10694 7284 7281 7155 30880 20774 22834 24526 788 846 847 10920 5129 5356 5355 27528 35558 20455 24527 8237 8582 8314 10318 33421 35014 36691 14700 19618 29257 24528 6985 6911 6971 10687 7375 7233 7376 19792 29171 19087 24529 1439 698 1296 10854 4929 4551 4930 34836 25897 29241 24530 1401 868 684 11124 4859 4858 4860 21917 24493 21711 24531 239 1260 237 11194 2625 2624 2622 33957 36958 22941 24532 8121 7945 7944 10397 34343 32462 36692 17161 14129 26259 24533 6393 204 113 6387 37596 2029 6415 6673 6670 35292 24534 7001 6909 6858 9190 7043 7041 7007 37667 37749 37666 24535 7882 7885 7884 10351 34472 33064 36448 30344 29308 24710 24536 1341 300 309 11123 2920 2939 2941 30160 36410 31923 24537 207 79 6388 6392 1896 6572 36203 37720 6573 6406 24538 9313 9763 10699 11122 26182 25745 21398 32325 34012 35401 24539 8498 8806 8496 10984 37750 36944 25113 24606 25115 27732 24540 9003 9020 8774 10985 18907 26325 37751 18909 23388 17962 24541 1172 1171 1508 10525 2190 5813 6182 26712 15256 27698 24542 8672 7935 8673 10646 34067 28296 37752 21770 24111 24321 24543 8293 8369 8294 10660 35994 36188 37753 31346 30175 30762 24544 8580 8441 8536 9779 33928 37455 35915 31225 20862 18275 24545 7636 7543 43 10686 37754 37755 37711 37713 37712 21184 24546 8440 9181 8535 10782 36817 31586 37756 24892 32426 32425 24547 8140 8816 8187 10862 29028 37757 34911 32299 28059 29488 24548 10685 10751 9767 11049 25330 21557 22839 33666 37316 33314 24549 978 922 977 10719 5890 5883 4742 34181 18531 30032 24550 867 646 999 10640 4450 4669 4671 24627 35117 34451 24551 6336 7777 6282 10710 28016 37758 6552 31322 37728 31323 24552 243 241 242 11071 2642 2637 2643 27959 35981 28485 24553 9099 8492 8966 10970 28551 37759 28526 15179 28528 23662 24554 355 354 549 10257 3168 3208 3207 21351 27309 12526 24555 1269 1265 1213 10982 5604 4126 4367 35937 25900 22030 24556 1320 1013 416 10543 3521 3520 3506 23743 25580 23785 24557 7639 7679 7678 10590 37465 35814 35729 31911 32963 27204 24558 7649 10530 154 10818 35650 36093 37622 35651 36094 32872 24559 9880 10805 9303 11128 18538 15839 23081 34291 26304 35072 24560 536 535 534 10952 4107 4103 4108 25997 19183 18501 24561 1541 1216 1572 10278 6209 6214 2304 34285 29762 30889 24562 800 799 520 10240 4039 3155 4040 23366 20481 30366 24563 329 332 333 10553 3077 3083 3082 13166 20197 11807 24564 7713 7715 7710 10861 36948 37318 34643 34645 32703 32319 24565 6932 6933 6901 10658 7324 7269 7320 23790 26296 29501 24566 1233 1512 1345 10403 6227 6226 4430 14310 20381 13969 24567 1058 1011 1044 10953 6020 5363 3066 31764 24068 21638 24568 1324 587 881 10222 4168 4374 4376 14125 34794 15141 24569 9400 10831 10278 11160 33863 32664 27716 29126 29317 34011 24570 556 508 591 10824 3978 3980 3979 28386 19493 36223 24571 7684 7686 7688 11082 37031 37521 37760 32343 31690 36934 24572 8045 8044 8129 10954 24057 37761 28790 20974 28791 24067 24573 1437 10788 9900 10917 36087 30647 35394 35438 23977 16215 24574 7736 7653 7526 10863 37762 37763 37764 33663 37765 25937 24575 933 10675 10526 10951 37066 27886 37065 37495 29010 33723 24576 7574 7532 7573 11183 37358 37766 35881 35790 30738 35913 24577 8988 9046 8326 10956 28685 28682 37767 27633 28684 22240 24578 509 1252 1116 10959 3985 3984 3983 31668 15025 25464 24579 232 233 231 10550 2593 2592 2587 13431 26413 21643 24580 6923 8594 10313 11176 36776 34399 35363 35365 32836 34401 24581 580 524 985 10733 3233 4058 4057 13869 20802 18051 24582 1184 1376 1267 10715 6194 3286 2706 28656 28045 32747 24583 1530 1177 1597 10717 5920 6187 5031 26364 29745 21516 24584 9396 10718 9983 10982 30146 28726 31730 28286 22284 32481 24585 6899 6957 6958 10533 7107 7311 7310 25316 28761 30234 24586 8639 10529 7957 11147 34876 32254 37768 35570 34003 28285 24587 366 1295 231 10256 2596 2585 2594 26279 26411 14139 24588 1302 420 417 10966 3526 3525 3522 14915 19198 27148 24589 8270 8955 8987 10630 36274 33726 37625 12151 24536 30008 24590 1489 9901 11036 11164 35238 27395 36495 35700 36834 33960 24591 1592 7746 44 7655 37684 37769 1618 37683 37770 37685 24592 1591 7544 9 7635 34507 37771 1607 32366 37772 34506 24593 429 436 430 10967 3583 3582 3558 17816 24086 25835 24594 8770 8510 9133 10861 37773 34941 37774 32320 24317 35521 24595 6396 6387 6323 10483 6826 6747 6751 33586 30427 35293 24596 8113 8033 8013 10379 33235 37613 36660 22286 30792 30577 24597 8761 8091 8089 10649 33719 31539 37775 22632 31519 29729 24598 8368 9175 9142 10216 37205 36635 36064 27967 16125 15847 24599 8900 7967 7832 10540 32042 33030 37501 18744 11261 19220 24600 1586 178 976 10180 1886 2330 2298 26144 24001 31785 24601 283 284 281 10685 2843 2842 2837 23986 25541 25248 24602 368 10093 11058 11194 36722 30285 36771 36723 22940 29453 24603 6909 9113 9190 10657 36858 37776 37666 36236 37577 34759 24604 7571 7569 7631 10555 37077 29088 36938 33209 21673 27053 24605 8418 8239 8473 10994 35497 28277 37777 31784 31662 32010 24606 6914 6977 6979 9949 7200 7388 7387 17876 19941 21343 24607 8616 9160 8619 10212 30220 29843 37148 16065 24952 29640 24608 1323 1050 748 10547 5170 5169 5167 18330 20869 27989 24609 7526 7653 9179 10863 37763 25934 37778 37765 25938 25937 24610 7492 7625 7633 9190 37779 37574 37780 37781 37575 37576 24611 7527 9189 7744 7736 37782 37533 37783 37784 37534 37532 24612 8318 8348 8760 10230 37785 35549 34718 14575 16951 35548 24613 7656 7693 7732 10948 36385 37786 35983 19283 29270 26211 24614 7809 7810 7786 10205 35041 37204 35714 24866 30599 15284 24615 9136 8513 8449 10682 35135 37657 29254 29253 21746 26015 24616 200 1166 909 10518 1790 2444 2445 21484 22480 17517 24617 9886 10990 9332 11026 34191 16790 34475 36619 33275 35930 24618 8675 8630 9121 10823 36979 27550 37516 33057 24922 27551 24619 488 495 486 10762 3870 3869 3867 30054 17392 32416 24620 8115 8113 8881 10644 35782 26099 37267 35783 19300 22288 24621 1519 1196 1027 10555 2316 6052 6049 19443 12108 33208 24622 151 1535 1556 10384 2183 2182 2181 28729 25834 35146 24623 1223 1571 1222 10297 6222 6221 2238 22074 27444 15488 24624 6319 6300 6388 10725 6739 6576 6742 27169 36205 32678 24625 6975 6974 6894 9969 7285 7286 7206 34033 20433 25229 24626 8761 8089 8096 10649 37775 36211 26331 22632 17054 31519 24627 8403 8689 8959 10291 36263 34521 35991 22809 30700 24169 24628 8549 7772 8773 10253 35056 35641 35057 21362 29330 11450 24629 883 490 493 10975 3889 3887 3890 12788 27696 23864 24630 6896 6965 6967 10696 7298 7297 7119 31405 19167 22871 24631 1258 11145 1026 11163 30805 37141 4680 36243 35062 32037 24632 337 338 335 10665 3115 3114 3112 20920 20351 34973 24633 410 408 1106 10400 3478 3480 3479 27785 33503 12927 24634 8219 8221 8223 10977 35452 25341 37787 35453 25342 21620 24635 7538 7594 21 10746 37788 37659 37789 35959 37660 23110 24636 1133 402 1272 10978 3391 3450 3449 12759 26922 19905 24637 739 846 788 10920 5130 5129 5125 32079 27528 20455 24638 9107 9106 7794 10225 36106 35036 35646 35647 24590 33356 24639 428 431 427 10670 3573 3572 3567 19378 22736 32141 24640 769 1342 1346 10578 5268 5270 5263 24836 29320 23798 24641 1315 1188 1093 10681 3256 2736 6115 31327 33100 29876 24642 8777 6282 7777 10710 37727 37758 37790 34426 31323 37728 24643 8090 8088 8089 11110 35419 37791 31518 32196 32197 21753 24644 8907 8159 8276 10639 35859 37256 33935 27825 33678 21531 24645 469 471 470 10314 3783 3782 3778 12501 12471 25207 24646 8953 8701 7912 10661 28787 37792 36975 28754 33011 24164 24647 10272 11017 1046 11142 18519 35679 36824 34666 37402 28759 24648 10013 10720 9273 11170 27007 16599 29281 24650 27723 28599 24649 7773 7522 8893 10590 37663 37605 37793 26507 30679 37467 24650 752 766 751 10864 5182 5181 5176 11292 21687 33824 24651 764 1371 1466 10339 5234 5245 5244 13441 24902 35890 24652 669 863 1385 10720 4782 4785 4784 32350 27006 28804 24653 1171 152 933 10675 2185 2187 2186 27700 37066 30878 24654 9227 10774 10111 11023 27728 32820 32819 30817 34534 31068 24655 1004 981 361 10331 3242 3244 3243 28890 15107 30821 24656 8812 8340 8965 10493 32075 37329 33568 15032 18279 16015 24657 508 505 10934 11155 3963 36863 31484 29078 31485 32693 24658 7951 10654 10153 11081 34549 22072 34547 37240 16088 17379 24659 9114 8837 8948 10258 35328 36502 36991 14792 33903 23622 24660 8731 8730 8394 10335 34372 34373 36422 31597 30267 25441 24661 8333 8595 8476 10992 37794 31954 37369 33656 31955 30783 24662 7896 7890 7897 10336 36717 36457 34353 18789 29538 24820 24663 1124 1238 1239 10226 1701 6149 6148 19871 15132 16601 24664 9189 7736 7805 10514 37532 37795 37796 37531 36112 33661 24665 8565 8506 9184 10544 37797 37407 25145 22151 25147 18888 24666 7805 10514 7736 10863 36112 33661 37795 36113 33663 25134 24667 370 1093 259 10394 2735 2734 2732 20209 21125 33099 24668 1139 153 1141 10746 2194 2196 2195 32337 32000 37134 24669 770 1575 716 10972 5020 5019 4684 29513 29037 34570 24670 6917 6983 6986 10841 7404 7406 7131 21222 25585 33168 24671 9185 8647 7797 10402 18434 37798 31245 16075 30091 17037 24672 1417 281 285 10751 2835 2844 2846 30121 20694 25565 24673 7670 7655 7671 10272 36182 37258 36024 18514 22275 36183 24674 993 1409 286 10409 2867 2581 2868 19422 24199 31130 24675 1015 1017 715 10599 5015 5014 5012 32608 15532 15987 24676 7912 10661 8711 11109 33011 14297 37799 31383 17323 17325 24677 876 1430 991 11054 5724 3795 5723 24942 27123 24733 24678 9019 7928 7915 10738 34277 34226 37800 30747 29152 33243 24679 824 1447 1412 10280 5516 5008 4356 19189 15309 20299 24680 521 522 525 10469 3159 4043 4042 30197 34283 18528 24681 8512 8533 8442 10895 36176 37801 32455 19879 20598 24353 24682 8795 9010 8974 10368 34242 34243 36674 26726 19458 14219 24683 9019 7968 8642 11060 37645 37802 27617 27618 16458 36429 24684 881 937 10342 11090 5737 32397 35227 35451 27499 32398 24685 1485 707 904 11036 4974 4967 4975 21037 35678 31514 24686 157 1425 1225 10276 2218 2220 2128 26370 18318 29907 24687 6326 6336 6282 10710 6557 6552 6555 34311 37728 31322 24688 7583 7471 7613 10808 37743 37803 37804 14266 36120 37744 24689 636 657 713 10367 4617 4620 4619 14555 30675 13971 24690 7805 7736 7526 10863 37795 37764 37805 36113 37765 33663 24691 1129 495 1130 11144 3871 3913 3912 32673 21782 30921 24692 795 796 794 10637 5381 5380 4874 18650 19353 26316 24693 8522 8524 9150 10232 37123 37398 31961 13646 27669 26391 24694 7886 7882 9022 10671 34210 37523 35051 20292 20926 30346 24695 1471 910 1212 10376 5840 5842 5841 32912 21188 28781 24696 8210 8213 8887 10638 37806 37699 28495 26067 28496 33447 24697 916 907 908 10470 5829 5422 5830 32729 30380 17576 24698 9922 10832 7893 10989 31151 36408 36407 25031 36745 25512 24699 1115 1457 366 10460 3268 3267 2606 17922 26280 32928 24700 842 926 843 10810 5587 5586 5532 35449 21843 32374 24701 9072 8476 9014 10395 34117 34118 36833 11519 12579 31953 24702 7807 7625 9190 10657 35039 37576 37807 30209 37577 26820 24703 9001 8981 8010 10597 33581 37595 29944 22912 27822 17856 24704 9874 10794 9312 11029 37003 28701 21207 36579 34955 36601 24705 6897 6993 6949 10276 7248 7303 7302 26372 27803 18319 24706 10062 10810 9454 11143 26329 31177 31649 35888 23948 31914 24707 7661 7714 7720 10338 35574 35359 37302 19947 14770 29589 24708 213 216 10765 11127 2505 34477 24270 32910 33847 29624 24709 543 582 581 10392 4153 4152 4148 31086 14457 22986 24710 6350 6349 6299 10855 6738 6737 6633 33216 21327 27760 24711 910 906 909 10653 5825 5821 5826 28782 22771 29481 24712 6892 9189 9111 6990 37694 37677 37808 7172 37678 37530 24713 9206 10709 10405 11141 20338 33804 25023 28764 32219 32380 24714 6981 6958 6960 10174 7447 7446 7227 13624 34729 28760 24715 8110 8720 8857 11033 37809 37453 37810 21457 34504 37454 24716 8084 8082 8342 10532 32188 33121 37486 17358 29414 18942 24717 9080 9084 7864 10495 33859 32877 37293 16560 14585 23703 24718 8687 8688 8351 10706 26572 36237 37286 26573 30983 26574 24719 8570 9106 8572 10571 36641 35658 37361 18383 32433 33355 24720 7591 7590 7534 10800 35725 37811 23472 23460 16464 29866 24721 1226 392 394 10305 3399 3379 3400 12214 19347 30896 24722 672 559 558 11180 4227 3798 4228 23635 16471 32993 24723 9247 10995 9874 11029 20767 25501 30203 28980 36579 31432 24724 8664 8666 8729 10703 34598 37729 37812 26877 17164 27344 24725 8448 8538 8447 10899 24239 37813 36820 22278 28504 20178 24726 1406 982 1361 10721 5991 5690 3044 33567 29332 33117 24727 930 1542 1514 10585 5918 1629 5919 16136 34263 29585 24728 1018 1019 1016 10405 5163 6030 6025 18670 33336 34429 24729 7949 7952 7951 10654 34443 34548 37609 19128 34549 32865 24730 1032 1057 631 10612 4592 2891 4593 23320 25576 20033 24731 8311 9127 9126 10311 37105 37814 37007 25722 14694 24133 24732 6999 6855 7744 7666 7013 37815 37381 37379 37380 37816 24733 6257 6389 9172 10776 6452 32641 37817 37818 35265 34620 24734 242 10763 9895 11071 35636 15726 35635 35981 25367 32548 24735 8375 8207 8208 10623 33822 37819 37820 29360 26766 29415 24736 1282 1139 1141 10755 6167 2195 6114 28363 35851 32490 24737 8496 8551 8497 10619 37428 37012 34878 27838 23574 35205 24738 6855 6999 6919 7666 7013 7034 7032 37816 24448 37379 24739 8918 8694 8696 10626 37528 34565 29492 28597 25522 28078 24740 6317 7739 6393 10688 20325 37821 6433 20326 37599 20053 24741 8739 8979 8741 11084 28800 37822 19962 16879 19680 28802 24742 8192 8614 8618 10471 34061 37155 33644 21798 33579 15549 24743 6393 7739 7746 10688 37821 37823 37824 37599 37686 20053 24744 268 9875 10869 11057 36654 18231 36655 37234 24229 20777 24745 419 1060 415 10636 3516 3508 3514 34328 21528 30255 24746 9028 8548 8624 10732 37693 35671 34188 24806 29893 19769 24747 1303 6960 129 10908 35717 7222 2094 34083 37825 34730 24748 904 1489 11036 11164 5820 36495 35678 34982 36834 35700 24749 9345 10979 9766 11030 32815 36245 34725 23011 31056 34860 24750 8768 7906 8678 10436 37022 36626 35317 35316 31452 17110 24751 1043 1042 719 10439 5032 4953 5033 23264 15034 17083 24752 601 1358 1472 10850 4409 4445 4444 31037 23951 15682 24753 6296 6257 7774 10776 6455 37826 30036 34947 34946 37818 24754 6257 9172 7774 10776 37817 37827 37826 37818 34946 35265 24755 6347 6385 6383 10344 6840 6837 6645 27360 33227 27623 24756 8013 8033 8011 11172 37613 37828 29105 29108 29110 30579 24757 8447 8338 8386 10294 34867 31433 37526 28503 18577 19149 24758 153 7538 21 10746 37829 37789 1671 37134 37660 35959 24759 8186 8145 8837 11047 35076 37830 37831 34273 23624 28325 24760 6374 7783 6273 10971 34113 37832 6516 36780 37833 35395 24761 9174 9137 8621 10277 34293 37104 36493 28426 34608 15739 24762 6338 6287 6337 10828 6549 6676 6678 33896 27060 35926 24763 1563 1564 1228 10345 5638 2392 2213 15438 24078 24069 24764 8034 8035 8029 10488 37348 33400 34075 19789 22227 17004 24765 8607 7962 7892 11195 36844 37834 36785 35199 36786 18483 24766 8796 8548 7804 10356 36240 35023 35690 11558 35024 19768 24767 7934 7935 7936 10620 30132 37717 32402 24782 28515 25269 24768 8624 8549 8390 10702 34660 37733 34054 28069 23808 21364 24769 8207 8206 8208 10623 36653 35332 37819 29415 26766 35371 24770 8934 8623 8707 10549 37429 33922 37440 16554 26786 33166 24771 6920 7627 6998 10686 20418 37835 7030 20419 37559 20117 24772 9150 8524 9149 11061 37398 37836 37644 37083 36701 28072 24773 6998 7627 7636 10686 37835 37837 37838 37559 37713 20117 24774 1589 7654 78 7747 37443 37839 1612 37442 37840 37441 24775 7727 7690 7659 10456 36499 33221 36902 33163 16405 24120 24776 6366 6367 6288 10417 6680 6600 6679 22993 34270 28809 24777 1543 1046 1513 10272 6060 6061 1766 25694 35253 36824 24778 1373 1389 1106 10538 6131 3601 6129 15935 30481 24716 24779 7779 7681 7524 11135 34780 37841 37842 34784 37843 34783 24780 8721 8169 8291 10942 32952 37844 37075 32073 24911 32953 24781 858 947 1452 11011 5662 2428 5046 20321 20323 26941 24782 8639 7952 7957 10529 34875 37524 37768 34876 32254 30505 24783 803 908 907 10470 5423 5422 5418 20734 17576 30380 24784 7925 7930 7929 10539 32726 37569 37132 32152 26186 23810 24785 8910 8730 8762 10554 32395 37611 32449 21566 26797 25442 24786 9037 8310 8174 11065 34323 37845 28315 22413 28317 25879 24787 8744 8746 7754 10935 37166 37846 36939 30535 36941 30196 24788 9191 7458 7808 7626 37702 37847 37503 37248 29989 37704 24789 1559 1570 182 10855 2352 2351 2348 33310 21328 35172 24790 1551 1553 1100 10343 5860 2440 2266 16418 28680 19522 24791 8037 8031 8039 10674 28573 36662 37058 17494 34107 23021 24792 6990 7003 6919 10514 7414 7413 7412 36565 27085 26229 24793 7666 7749 7736 10514 28640 33662 37848 27083 33661 25129 24794 7985 7986 7989 11018 21802 37849 35149 20676 31183 19205 24795 1585 1322 937 10342 5929 5740 5930 28292 32397 15128 24796 838 1452 1072 10325 5042 2432 5573 14284 34571 19097 24797 1589 6908 148 1510 37437 7277 1615 2169 2165 22580 24798 9178 7754 7471 10808 37850 37851 37742 32144 37744 36940 24799 9171 8825 8827 10459 37614 35466 32627 30564 32631 23047 24800 10115 10894 9240 11097 28420 24276 32252 29311 28222 33028 24801 1258 1026 880 11163 4680 5736 5730 36243 33629 35062 24802 8534 8638 8338 10295 36453 37061 36037 27833 18236 17658 24803 161 1182 1536 10417 1935 2237 2236 34271 18777 33332 24804 8291 8385 8396 10656 29392 34664 37602 24910 32041 18738 24805 7782 8583 8767 10382 37372 35850 36600 24861 31755 19134 24806 8019 8722 8603 10996 37062 37403 22598 22600 22599 25721 24807 1086 1268 805 10669 4596 2886 5430 31230 23534 33327 24808 579 1290 809 10806 4334 4336 3230 23093 29011 33213 24809 1473 1462 1096 10354 5855 4657 6117 26446 15293 24568 24810 6923 6909 6924 10313 7047 7362 7361 35363 18114 36235 24811 9210 11036 9901 11164 26804 27395 29976 32281 33960 36834 24812 7625 7638 7555 10657 26819 22306 37852 26820 22470 24581 24813 7783 8836 6273 10971 37853 37854 37832 35395 37833 33962 24814 1571 1566 1224 10319 6220 2301 6223 14622 27324 34621 24815 6273 8836 6313 10971 37854 28394 6519 37833 33963 33962 24816 8099 8762 8162 11092 24313 37162 37855 24315 31663 23919 24817 190 1564 1565 10573 2391 2393 2390 34445 18601 24071 24818 1140 153 1139 10998 2192 2194 2193 35307 32340 37135 24819 637 635 901 11087 4613 4615 4614 22211 30199 23409 24820 8027 8795 8026 10650 37671 29816 34063 28270 20347 26728 24821 8689 8232 8634 11043 37856 33472 27729 24170 23249 29064 24822 7632 7612 7546 10226 36567 35775 34194 29777 19869 16602 24823 279 281 1417 10751 2832 2835 2834 21556 30121 25565 24824 9100 8305 8491 10503 37511 33735 33674 16693 22440 28562 24825 9191 6252 6395 6303 37857 6402 37362 37363 6437 6435 24826 708 659 720 10941 4303 4733 4732 30988 17957 28661 24827 1544 938 846 10579 2404 5606 5607 17880 20454 16208 24828 7769 8542 9081 10472 36891 37590 35221 26270 21809 20770 24829 905 968 1584 10217 5419 5824 5823 17861 17025 14504 24830 9113 6858 6909 9190 37858 7041 36858 37776 37666 37749 24831 840 983 936 10366 5581 5580 5579 15250 19552 24643 24832 651 848 979 10466 4694 4696 4693 30264 31968 26241 24833 1015 1014 1016 11035 5013 6024 6023 32565 33337 20192 24834 314 309 310 10804 2982 2977 2983 30449 30460 36020 24835 6318 6319 6303 10643 6756 6755 6441 35156 34835 27168 24836 7634 6395 6246 6391 36924 6399 37859 36923 6418 6419 24837 8478 8862 8972 10624 37860 31197 37484 15907 26467 11552 24838 6391 6246 7634 7556 6418 37859 36923 24962 36931 37861 24839 7555 6995 6852 7633 20115 7022 37862 37707 37863 37706 24840 6393 6251 7746 7739 6413 37864 37824 37821 37823 37865 24841 1116 751 766 10864 5183 5181 5184 15022 33824 21687 24842 7001 6852 6995 7633 7005 7022 7025 37708 37706 37863 24843 6251 6393 6317 7739 6413 6433 6431 37865 20325 37821 24844 7628 6248 7635 6392 37866 37867 36150 37868 32364 6405 24845 1580 197 947 10391 1753 2430 2431 18963 26940 35179 24846 6854 7636 6998 7627 37869 37838 7009 37870 37835 37837 24847 6920 6854 6998 7627 7027 7009 7030 20418 37835 37870 24848 6248 7628 6316 6392 37866 24720 6421 6405 6424 37868 24849 1182 190 1565 10573 1939 2390 2389 33333 18601 34445 24850 745 1025 740 10667 5137 5136 4789 18971 15984 27041 24851 1323 1009 726 11037 5070 4851 5068 18443 22484 32518 24852 904 1484 1489 11164 5819 4291 5820 34982 35700 35154 24853 8027 8022 8028 10817 34025 34998 37714 28572 21482 19060 24854 6857 7738 6994 7000 37871 24346 7035 7019 7039 37078 24855 7968 9019 7915 10738 37645 37800 32241 32243 29152 30747 24856 8392 8912 8892 11146 36710 26054 37872 35241 26055 22878 24857 129 6895 180 10908 7220 33701 2089 37825 34796 35669 24858 7626 7556 7637 10396 37873 37874 34324 29988 28931 24964 24859 8590 8591 8500 11132 34055 31147 37875 34057 31255 27709 24860 1476 1482 830 11020 2756 5542 5523 32737 24419 23815 24861 7613 7471 7754 10808 37803 37851 37876 36120 36940 37744 24862 9150 9149 8928 10512 37644 36872 36135 26442 30710 34605 24863 6999 7744 9189 10514 37381 37533 37529 37382 37531 37383 24864 7738 6857 7747 7000 37871 37877 37092 37078 37093 7019 24865 9186 7779 7524 11135 37878 37842 37879 25776 37843 34784 24866 6991 7002 6920 10686 7417 7416 7415 21312 20419 27219 24867 8254 8198 8197 11171 28811 37880 32858 28500 32860 28813 24868 8526 8848 8874 10248 36665 37099 37215 13193 24506 33777 24869 8150 8580 8581 10584 33658 37416 36748 33659 12833 33022 24870 9412 9962 10857 11004 25446 26163 28897 23784 31240 31430 24871 6317 6387 6396 10688 6824 6826 6825 20326 21787 37368 24872 7781 8591 8763 10511 37208 34380 35082 23423 32522 26551 24873 508 507 505 11155 3962 3955 3963 29078 32693 25990 24874 8013 8012 8014 10929 29577 32880 37881 30009 15894 23033 24875 853 717 716 10408 5017 4688 5018 18476 29036 34511 24876 8400 8506 8565 10544 35601 37797 33079 16523 22151 18888 24877 1212 162 1211 10427 2243 1798 2244 18790 25455 25843 24878 8617 9156 8615 10252 37109 32842 37095 25428 14742 22754 24879 917 919 1045 11024 5867 5870 5869 36725 34133 35308 24880 7805 7526 9179 10863 37805 37778 37882 36113 25938 37765 24881 7553 7575 7615 10631 37513 33272 36268 27479 31406 33273 24882 1558 1428 1560 10531 6146 5863 6235 22406 21582 14498 24883 7726 7686 7664 10521 29490 37252 35952 26934 25732 29491 24884 1567 1568 1201 10725 5917 2479 2322 26204 32677 20268 24885 1592 7655 1513 10688 37683 36694 1762 37598 35254 36319 24886 9440 10247 10931 11080 30434 30042 26171 23632 35894 14687 24887 8672 8673 9043 10646 37752 33045 31117 21770 15941 24111 24888 9363 11014 9763 11122 31103 30550 13368 31523 35401 35021 24889 6932 6940 6933 10658 7431 7430 7324 23790 29501 34816 24890 6296 6389 6257 10776 6457 6452 6455 34947 37818 34620 24891 9900 10788 9353 10917 30647 21977 26667 23977 21979 16215 24892 8070 8072 8170 10805 37314 36846 37654 35071 36257 22328 24893 1495 825 1490 10588 5520 4664 5521 18953 14331 31885 24894 9094 9087 8308 10589 36248 36756 36956 19764 31886 30890 24895 1303 129 180 10908 2094 2089 2096 34083 34796 37825 24896 6947 6898 6943 10255 7254 7307 7309 17972 21834 17546 24897 8441 8535 8536 10782 37883 36108 37455 19896 28805 32426 24898 8158 8412 8411 11055 31088 32919 37884 31090 26294 14936 24899 592 556 591 10824 4217 3979 4218 34538 19493 28386 24900 1287 794 796 10637 5382 5380 5383 19359 26316 19353 24901 8210 8212 8213 10638 36405 33559 37806 26067 33447 29248 24902 8962 8617 8961 11069 37885 28103 31504 31505 30124 26353 24903 7568 7528 7567 10443 37424 35002 34990 19548 30557 34224 24904 511 1378 1374 10628 3992 3994 3995 16550 34321 20248 24905 6306 6371 6384 10459 6773 6775 6465 23048 34522 26778 24906 7607 7623 7597 10413 35984 36557 37375 35004 19364 27471 24907 1415 1170 950 10713 5949 2452 5372 15818 20663 17759 24908 236 10111 10774 11023 35938 32820 35939 36802 31068 34534 24909 7573 7577 7575 11183 37886 37643 36550 30738 35924 35945 24910 7634 7556 7626 10396 36931 37873 37247 36926 29988 24964 24911 808 782 691 10792 4892 4885 4893 18398 31880 33308 24912 717 749 650 11139 4690 4689 4687 34512 26998 34393 24913 9895 10763 9277 11071 15726 18647 18646 25367 25366 32548 24914 9070 8081 8759 10816 28785 32778 37887 26953 16198 27055 24915 8894 7827 7887 10916 35955 36403 37701 33725 22957 35769 24916 7688 7686 7651 10382 37521 36913 36450 35949 20547 31211 24917 7529 7604 7600 10897 37472 37009 36622 36623 24486 34449 24918 9340 10832 9922 10989 23272 31151 24148 24797 25031 25512 24919 9164 7757 8833 10378 35918 36194 35288 19499 31475 36136 24920 926 927 843 10810 5591 5590 5586 32374 21843 26449 24921 1045 11017 1521 11024 28283 34193 5871 34133 36919 34134 24922 343 799 1365 11089 3154 3156 3090 25639 25711 30367 24923 1349 775 774 10510 5290 5283 5291 32679 27611 26427 24924 7736 7673 7653 10863 34754 35841 37762 33663 25937 26403 24925 1138 1139 1137 10498 6166 6165 4707 15587 31325 32339 24926 8724 8957 9012 10851 36224 37888 31927 32997 18459 33854 24927 9073 9070 8759 10816 34374 37887 36278 21539 16198 26953 24928 7549 7470 9188 10935 37889 37890 36305 23150 35781 37891 24929 341 340 347 10683 3133 3138 3137 22894 17490 16334 24930 8487 8964 8486 11073 37892 23855 35755 31789 20298 23629 24931 1535 1574 1021 11085 2184 6042 5621 35147 31196 24441 24932 828 842 843 10062 5509 5532 5531 29747 17128 36506 24933 7540 7575 7577 10374 36529 37643 36963 30439 36887 32465 24934 8156 8109 8108 10748 37364 36327 37893 31803 36029 26671 24935 8234 8060 8062 11045 37485 37163 24196 19356 13787 31009 24936 7557 7589 7585 10475 37509 36360 35096 29211 27182 36361 24937 7975 8779 7978 10991 37894 37289 31522 20736 12896 18595 24938 986 181 1163 10521 2346 1846 2345 20953 25730 26935 24939 331 330 322 10705 3049 3048 3050 19966 28428 28124 24940 8476 9061 8383 10642 34044 32148 37721 34045 31856 19563 24941 7649 7697 7698 10530 35649 34882 37642 35650 23116 31250 24942 6901 6939 6931 10744 7272 7323 7322 26297 27510 29219 24943 855 856 1517 10312 5310 5649 5648 21896 27461 24651 24944 571 645 602 11007 4293 4292 3200 12436 31102 12860 24945 9297 11026 9764 11146 33320 36343 34356 28488 30303 36255 24946 6994 7003 6908 10373 7360 7358 7359 24348 22581 26614 24947 7749 7738 7654 10373 28639 37895 34857 26631 33406 24347 24948 9363 11122 9942 11123 31523 32326 13783 27391 30162 36400 24949 9108 8784 9116 10372 36184 37002 36980 30857 11787 23296 24950 7554 7561 7563 10391 36363 36969 36890 36364 25245 16175 24951 849 1121 1535 11085 4752 5623 5622 29544 35147 27847 24952 844 924 1520 10712 5595 5598 5597 21126 29136 30773 24953 8725 8487 8264 10362 35435 36530 34392 15119 21288 31788 24954 9173 9136 8577 10828 36819 34884 37896 33895 17934 29255 24955 359 524 580 10733 3147 3233 3232 31376 13869 18051 24956 213 1355 216 11127 2497 2506 2505 32910 29624 32908 24957 7470 7754 9188 10935 37897 37898 37890 37891 35781 36941 24958 8594 8546 9113 10313 35279 35901 36610 34399 34758 32278 24959 7613 7754 7470 10935 37876 37897 37899 36122 37891 36941 24960 7740 7716 7734 11181 37332 37900 34790 28090 34341 37100 24961 8424 8304 8423 11113 21305 36105 37901 20009 30912 17539 24962 846 938 847 10579 5606 5605 5356 20454 29910 16208 24963 926 1240 183 10631 2353 1709 2354 32373 30887 29411 24964 1418 1404 1048 10614 3991 2671 5439 29203 21777 14661 24965 7908 7907 8637 10545 34596 34597 37334 21287 11591 27111 24966 8440 8543 9181 10556 37902 34984 36817 24891 32573 20324 24967 224 1289 226 11041 2560 2559 2558 36845 29434 36558 24968 8891 8735 8947 10615 33362 33361 37691 18162 29835 30141 24969 7524 7647 9186 11135 37903 25773 37879 37843 25776 25778 24970 8555 8564 8590 10567 34540 34541 37391 32295 34056 24541 24971 8801 8651 7847 10999 34318 35746 37904 29479 35168 13687 24972 8111 9023 9009 11000 33700 37905 32994 29578 32996 23192 24973 8866 8887 8255 11136 36542 37738 23302 18201 13588 36544 24974 729 863 669 10720 4783 4782 4439 28598 32350 28804 24975 7002 6909 6995 10657 7364 7365 7366 27217 22469 36236 24976 1101 461 633 11159 3745 3734 3746 24523 25034 16348 24977 8980 8976 8386 11002 37906 34838 26023 25137 18580 28063 24978 173 1566 1541 11160 2300 2302 2303 34010 34286 34622 24979 6303 6397 6391 10396 6757 6760 6759 34833 24722 29233 24980 8917 8653 8654 10605 33755 37658 33734 17428 20990 18751 24981 8649 8650 8524 11061 33136 37907 26590 28738 28072 33137 24982 8867 7761 8534 10332 36754 37271 37278 23959 27832 32562 24983 7493 9115 7737 9192 37908 20949 37696 37698 27466 33149 24984 6990 10514 9111 11197 36565 36139 37678 36566 36141 26231 24985 7735 7731 7652 10189 37510 36943 35879 35369 14621 31004 24986 1331 598 1345 10961 4428 4429 4431 35427 19586 32257 24987 8903 10894 10115 11097 35963 28420 35961 36634 29311 33028 24988 8320 8646 8647 10563 37183 35693 36359 18591 17038 16589 24989 7681 7647 7524 11135 37909 37903 37841 34783 37843 25778 24990 9339 10934 10028 11155 29828 31703 31190 33622 29562 31485 24991 8120 9089 8798 11091 34950 37910 25006 15566 23207 34951 24992 9131 8776 7753 10581 37911 35015 37912 29315 18295 33283 24993 962 986 732 10370 5097 5096 5095 34138 23847 21655 24994 543 542 540 11093 4137 4133 4138 31748 26989 25151 24995 996 997 320 10879 3041 2981 3037 30272 23979 20471 24996 435 1227 1131 11094 3561 3612 3613 13734 29533 33108 24997 6313 6374 6273 10971 6521 6516 6519 33963 37833 36780 24998 1417 982 1406 10721 5990 5991 2836 31553 33567 33117 24999 7787 9130 8535 10321 37313 35533 36821 30848 32140 14748 25000 1325 10922 10463 11117 33910 20021 33878 37230 21064 21066 25001 1532 166 1601 10401 2264 2261 2265 16607 24641 32927 25002 640 639 517 11120 4024 4023 4025 31543 29406 35777 25003 8711 7912 8701 10661 37799 37792 32965 14297 24164 33011 25004 6895 129 6960 10908 7220 7222 7224 35669 34730 37825 25005 8087 11009 10082 11110 35909 33269 35907 36366 36367 21754 25006 9131 9199 8776 10581 29580 36591 37911 29315 33283 17720 25007 608 610 1256 11100 4477 4480 4479 25071 28820 24098 25008 1375 1134 1136 11101 6162 6160 6163 25181 25293 23184 25009 498 561 1157 11103 3929 3931 3911 34713 23575 28140 25010 8271 8339 8344 11104 31442 27439 37913 31444 27441 23339 25011 8358 8356 8359 11102 37914 35261 25298 23412 17308 35263 25012 696 455 457 11105 3714 3712 3715 28732 35090 21536 25013 223 222 224 11106 2543 2548 2547 29982 35510 25060 25014 1478 1487 832 11108 4031 5550 5535 25268 21519 25026 25015 519 1194 1488 11107 2566 4033 4032 36047 27066 29104 25016 930 1599 1542 10585 5911 2438 5918 16136 29585 23666 25017 7543 7627 7638 10686 37915 22307 26636 21184 22308 20117 25018 866 763 1210 10641 5240 5237 5241 31080 11239 25411 25019 8865 9015 7969 11168 37916 27314 27127 20332 20879 27316 25020 7883 9093 8871 11169 33832 37917 27318 21254 27319 33833 25021 371 744 373 11042 3295 3294 3293 35931 15503 23907 25022 8977 7972 8343 10768 31091 37232 37004 24073 31740 12855 25023 8439 9058 8322 10453 36415 35934 36760 14723 24094 26716 25024 1261 854 1143 10509 5307 5647 5646 14007 25655 15810 25025 8754 9195 8755 10565 23749 37719 37552 20358 22621 15479 25026 8556 9147 8512 10896 34741 37918 32345 22617 19882 33914 25027 8723 7974 7976 11112 37919 25423 26799 26801 22497 23721 25028 8014 8923 8013 10929 35066 36368 37881 15894 30009 35144 25029 7655 7739 7748 10688 37920 22323 36318 36319 22115 20053 25030 980 1538 1569 10375 5988 2319 5986 20948 34086 27211 25031 7549 7613 7470 10935 37921 37899 37889 23150 37891 36122 25032 431 1390 427 10670 3575 3574 3572 32141 22736 35856 25033 8511 9074 8815 10574 37404 37405 34592 18369 21584 25197 25034 6303 6391 6395 10396 6759 6419 6437 34833 36925 24722 25035 8890 9197 9119 10598 29651 37922 35536 22500 25301 29652 25036 10794 10995 9545 11029 34896 26167 31565 36601 27980 31432 25037 6301 6323 6387 10483 6744 6747 6672 27129 35293 30427 25038 207 1201 1568 10725 1903 2479 2478 36204 20268 32677 25039 1431 1460 248 11117 2681 2678 2679 25559 17568 23777 25040 6348 6344 6291 10572 6697 6694 6639 25452 24795 25872 25041 6295 6325 6330 10570 6714 6717 6666 24601 25311 25813 25042 508 505 1145 10934 3963 3965 3964 31484 32259 36863 25043 999 646 837 11118 4669 4667 4670 35481 24059 29610 25044 1551 167 1534 10440 2267 2269 2268 15927 22207 28198 25045 7784 8844 8527 10374 37138 36791 37201 30440 31421 34801 25046 8512 9147 8544 10896 37918 36266 36076 19882 23104 33914 25047 7643 7684 7688 11082 37255 37760 31685 31688 31690 32343 25048 1578 7587 22 10998 36837 37923 1675 36389 37924 35734 25049 8423 8431 8424 11113 35609 36324 37901 30912 20009 30312 25050 323 317 1451 10707 3025 3017 3026 23135 27531 30601 25051 7803 7496 7735 11166 37925 37926 35368 36439 37397 37927 25052 8250 8368 8823 11198 37928 24685 31858 31860 24243 24686 25053 1332 630 1329 10613 4588 4156 4591 30114 33814 25202 25054 1525 1524 1150 10438 4991 6177 6176 13640 32934 17504 25055 8452 8367 8516 11095 31949 37345 37929 31951 16133 22868 25056 349 1429 1030 11140 3136 3186 3185 20791 27120 28676 25057 8294 8167 8293 10660 33729 33728 37753 30175 31346 25676 25058 8886 8692 8746 10303 33705 32903 37672 15609 30195 31302 25059 124 6975 1202 10962 7205 35283 2069 37930 34410 34035 25060 1514 7544 9 1591 35807 37771 1623 1625 1607 34507 25061 7897 8944 7901 10699 33217 37103 37687 29539 25228 25632 25062 1513 1592 44 7655 1762 1618 1759 36694 37770 37683 25063 7530 7585 7614 10447 36147 35181 37450 14530 31031 27181 25064 164 931 1176 10592 2252 2251 1661 21617 34172 20596 25065 7738 7747 7654 10373 37092 37441 37895 24347 33406 37094 25066 6908 7000 6994 10373 7279 7039 7359 22581 24348 37079 25067 8230 7895 7815 11137 37172 37617 37356 20166 35506 30934 25068 918 908 1416 10983 5836 5424 5837 28489 12756 30754 25069 7759 8878 8532 10347 36684 37480 37222 35335 18041 28625 25070 747 1020 1019 11141 4699 5166 5164 32378 34430 32386 25071 8070 8170 8978 11128 37654 37931 33016 30412 33018 35614 25072 9886 10637 10990 11026 26148 24551 34191 36619 35930 33299 25073 7538 153 22 10998 37829 1670 37932 35960 37924 37135 25074 8350 8453 8348 10645 37610 35563 34130 22237 32823 21093 25075 10272 9404 11017 11142 26192 30212 18519 34666 28759 28882 25076 8523 9153 8575 10361 34756 36933 36713 11855 27000 32568 25077 283 281 280 10685 2837 2833 2838 23986 22840 25541 25078 8402 8383 8430 11130 37933 31855 26659 25955 14432 31857 25079 7950 8632 9033 11131 37934 34288 26661 26662 25865 34290 25080 8455 8866 8748 11129 37518 34347 37935 36068 31552 20820 25081 22 7587 7538 10998 37923 37936 37932 37924 35960 35734 25082 6985 6965 6896 10696 7299 7298 7295 35518 31405 22871 25083 8768 8747 8218 11133 35383 26719 37937 35764 26706 24358 25084 403 405 406 11125 3452 3455 3454 29791 25222 28829 25085 10082 11009 9235 11110 33269 30814 30475 36367 28314 21754 25086 9004 8718 9032 11157 37259 36741 37604 26796 31073 20621 25087 8862 8479 8628 10281 37938 37069 36461 12499 30296 31227 25088 8282 8284 8281 11134 35443 37939 33014 23530 29022 33881 25089 6252 9191 9112 6303 37857 37656 37940 6435 37632 37363 25090 8743 8745 8748 10444 37732 33507 34346 18199 31550 29355 25091 8618 8346 8750 10883 37941 34976 33578 33580 29932 24036 25092 8312 8467 8285 10866 37470 29194 37452 26387 13390 15405 25093 7492 7807 7625 9190 37942 35039 37779 37781 37576 37807 25094 8619 8346 8618 10883 33214 37941 37149 24951 33580 24036 25095 648 1258 523 11145 4055 4054 4052 31621 17060 30805 25096 9189 7527 7805 7736 37782 37943 37796 37532 37795 37784 25097 621 1380 756 11138 4545 4544 4543 27011 25563 30159 25098 889 1493 1501 10949 4972 5767 5766 33643 27943 23769 25099 7912 8711 8678 11109 37799 37944 30635 31383 31384 17323 25100 6297 6358 6359 10378 6726 6728 6485 35186 31474 26042 25101 1244 603 989 10853 2916 4454 4455 32700 12463 26434 25102 8572 7805 8571 10863 36111 37945 35716 32436 33538 36113 25103 978 1569 1552 11068 5984 2321 5892 33020 30087 34087 25104 1549 921 1550 11174 5889 5886 2415 34105 30322 27422 25105 8177 8639 7957 11147 37946 37768 34216 29056 34003 35570 25106 1214 1541 1215 11160 6208 6207 5195 27091 29017 34286 25107 933 944 911 10526 5845 5844 5584 37065 35299 22999 25108 966 996 320 10879 3038 3037 3039 23453 23979 30272 25109 8621 8450 8620 11114 36605 36914 37947 34610 24190 36606 25110 450 1312 575 11148 3679 3691 3690 27976 31208 31381 25111 8951 8997 8043 11149 27561 37948 27560 23537 22377 27558 25112 588 1246 1217 11154 4106 4380 4379 23309 27110 20866 25113 892 1499 1504 10548 4961 5779 5778 32413 15263 14609 25114 8568 8323 8567 10968 28410 37562 37949 28412 33556 18534 25115 295 603 1244 10853 2879 2916 2915 27274 32700 26434 25116 839 1581 943 10310 5576 2200 5515 16722 20843 25641 25117 9161 7788 9162 10524 36640 35596 37639 18467 31187 27074 25118 7619 7550 7610 10499 36350 35861 37085 18527 34902 34939 25119 1196 1248 1027 10555 1737 6051 6052 33208 12108 27889 25120 8510 8506 8507 11034 37950 22083 37500 34943 19239 18890 25121 444 528 443 11165 3653 3652 3622 24153 25670 26482 25122 1354 808 691 10792 4896 4893 4894 27113 31880 18398 25123 6970 10962 188 11158 35519 37474 37673 35520 37475 31339 25124 1045 1600 1521 11017 6058 2457 5871 28283 34193 15629 25125 7535 7623 7629 10435 35473 36185 37394 29633 31311 27473 25126 7942 7949 7948 11167 28322 37571 37951 27831 32182 19605 25127 78 205 7654 1589 1892 34217 37839 1612 37443 1895 25128 153 1578 22 10998 1677 1675 1670 37135 37924 36389 25129 7709 7710 7658 10518 37300 36302 36763 16146 19557 32702 25130 10261 10730 9398 11096 23801 19031 24289 35034 15412 27136 25131 6296 6335 6389 10776 6719 6722 6457 34947 34620 29985 25132 8018 8017 8016 10848 36987 36721 37594 36988 18588 33980 25133 154 1581 1167 10818 2199 2205 1810 36094 30622 25642 25134 6265 6297 7757 11098 6484 36512 37952 37953 35921 35187 25135 6860 6916 7804 11176 7049 35884 37954 37955 35127 34724 25136 1171 841 902 10951 5582 4724 5583 33722 31079 29198 25137 216 215 213 10765 2504 2503 2505 34477 24270 30463 25138 8092 8091 8094 10766 37736 35222 34450 30466 14357 29225 25139 8756 6357 6265 11098 27072 6487 37956 27869 37953 27867 25140 188 124 1202 10962 2074 2069 2076 37474 34410 37930 25141 8262 8575 8576 11161 28326 37957 26693 26210 20150 27002 25142 9184 8506 8510 11034 37407 37950 36588 34467 34943 18890 25143 9070 8444 8431 10457 36032 37178 36816 26952 30310 26046 25144 7975 7973 8779 10991 37958 31309 37894 20736 18595 26361 25145 8577 9140 9173 10828 36222 37073 37896 17934 33895 35927 25146 370 369 371 11178 2733 3283 3282 20244 28996 34460 25147 1598 1150 1253 10770 6174 2337 6175 25354 33001 34843 25148 931 164 1177 10592 2252 2254 2253 20596 20607 21617 25149 9054 8499 9076 11028 37221 31942 37959 12918 30316 16985 25150 8855 8708 8808 10783 34487 35487 37722 30516 26104 26919 25151 1114 1468 1423 10784 3016 5538 5118 26375 31664 34510 25152 532 531 530 11184 4087 4083 4088 24620 22158 27138 25153 8059 8154 8061 10634 37476 35756 35637 30870 24489 30399 25154 7538 7587 7586 10998 37936 35732 35958 35960 25460 35734 25155 1569 978 979 11068 5984 4746 5985 34087 31969 33020 25156 963 1480 1425 11185 5669 2501 2219 25400 29908 29213 25157 842 823 932 11143 5510 5512 5511 35450 21105 35889 25158 6932 6997 6940 10648 7425 7283 7431 35516 19231 30628 25159 8610 8226 8932 11186 29373 32236 37960 28127 32238 18830 25160 8547 9058 7798 10690 33151 37961 36673 29259 29707 26717 25161 8731 9029 8714 11187 36102 37962 29378 28152 27174 31545 25162 9152 7768 8703 11077 37481 34968 37963 23867 28264 34972 25163 8537 8480 8925 10404 35502 37108 37045 21609 15558 35433 25164 6294 6365 6364 10663 6712 6711 6477 34854 23718 22364 25165 1153 1230 1229 11188 6121 4863 3626 35043 24447 21951 25166 7801 8510 8770 10861 37050 37773 37491 34649 32320 35521 25167 7735 7496 7650 11166 37926 37964 37965 37397 34695 37927 25168 9119 9197 8457 10598 37922 36088 35589 25301 30025 29652 25169 6860 8594 6923 11176 37966 36776 7044 37955 35365 34401 25170 8758 8834 8835 11191 32615 31267 37967 32616 31268 27019 25171 1259 1291 779 11192 4866 5314 4131 24233 26319 24451 25172 9159 9157 8791 11088 37968 36587 36794 34104 26731 34252 25173 9123 8649 8518 10504 36993 37586 29144 23973 20712 26591 25174 8528 8527 8444 10602 35617 37969 31655 23639 26047 31422 25175 1303 180 1435 10908 2096 2341 2340 34083 27776 34796 25176 7554 7564 7565 10747 36686 37388 37322 36687 35064 24742 25177 7792 9129 8780 10413 36982 34744 37603 21965 34746 21168 25178 1471 936 983 10736 5925 5580 5926 32913 32065 25621 25179 7680 7682 7742 11046 37970 33119 30116 27861 30742 33120 25180 8543 8440 8425 10556 37902 35704 33228 20324 28557 24891 25181 8188 8480 8479 10973 37038 37971 33207 15826 29906 35434 25182 191 1176 1527 10435 1665 2399 2398 29634 11386 35301 25183 7719 7648 7714 10546 36644 37505 35493 34078 29590 28918 25184 1024 949 171 10610 2288 2290 2289 29322 23754 32516 25185 1297 964 861 10676 3775 5079 5674 13505 21072 18108 25186 8332 8582 8181 10568 36258 37111 36704 35161 13033 29258 25187 1290 579 797 10806 4334 4332 4335 33213 20834 23093 25188 7549 7588 7613 10935 37029 36121 37921 23150 36122 25110 25189 153 7538 10746 10998 37829 35959 37134 37135 29781 35960 25190 515 513 516 11039 4003 4005 4004 28733 36233 33081 25191 1548 923 1549 11142 5897 5888 5898 36012 28905 27234 25192 7741 7704 7723 10675 36554 36451 37583 33944 27885 24939 25193 7650 7496 8790 11166 37964 37972 32752 34695 34696 37927 25194 8067 8066 8069 10988 37649 37024 36531 33203 18412 26135 25195 9107 6907 6891 11197 36130 7168 37973 36191 37974 34417 25196 7803 8790 7496 11166 37975 37972 37925 36439 37927 34696 25197 1544 1262 192 10456 2405 1858 2403 17879 13918 33162 25198 8377 8766 8896 10728 37705 35310 35309 27483 29048 29470 25199 969 720 659 10941 4734 4733 4735 13379 28661 17957 25200 922 1550 921 11174 5887 5886 5881 32555 27422 30322 25201 6946 6918 6996 10695 7408 7410 7409 22178 35998 31360 25202 6327 6336 6326 10710 6829 6557 6828 23849 34311 31322 25203 1081 1371 1325 10922 6104 5251 6105 31819 33910 29916 25204 8630 8628 8629 10785 34726 37976 36201 27549 32101 31711 25205 9128 7785 8879 10447 36935 37662 35808 33384 31279 17234 25206 7613 10808 7754 10935 36120 36940 37876 36122 36941 30192 25207 766 767 768 11050 5185 5253 5252 33825 28096 22927 25208 1533 1263 1008 10324 2276 6018 6015 13027 17627 26036 25209 8078 8077 8076 10798 34739 36057 37690 26902 28753 24237 25210 8533 8775 8442 10895 24352 37170 37801 24353 20598 20498 25211 9012 8957 8406 10851 37888 36419 34377 18459 27356 33854 25212 742 1440 1367 11063 5144 4605 3711 28955 33158 32309 25213 368 1260 239 11194 2636 2625 2634 36723 33957 22941 25214 9499 10751 10685 11049 21414 25330 18609 33313 33666 33314 25215 8598 8838 8960 10857 35305 37420 37229 26162 27643 35358 25216 1274 184 1526 10475 1685 2361 2363 35757 19407 29508 25217 8800 7776 9121 10443 37688 37237 36436 35130 24921 19546 25218 1168 1547 170 10338 2287 2286 1782 15385 22463 16923 25219 1502 833 1450 11177 5553 4981 5554 20605 26554 28973 25220 9054 9076 8068 11028 37959 33584 37977 12918 30500 30316 25221 8789 8787 8380 10963 33571 37665 36981 21931 34738 25861 25222 7736 7744 7666 10514 37534 37380 37848 33661 27083 37383 25223 6990 6919 6999 10514 7412 7034 7176 36565 37382 27085 25224 7791 8786 9166 10663 37241 37606 33032 33263 18357 22089 25225 1202 951 188 10962 2382 2381 2076 34410 37474 19721 25226 635 1444 901 11087 3151 4616 4615 23409 30199 28131 25227 1327 688 689 10846 4877 4277 4878 28943 33867 20308 25228 1208 388 384 10838 3359 3358 3360 32486 16017 14615 25229 1258 880 879 11163 5730 4373 5731 36243 18065 33629 25230 9036 8986 7849 10745 36401 37582 35591 20459 14005 29885 25231 8139 8135 8137 10749 36430 35594 37572 29920 28165 30830 25232 6950 6946 6996 10694 7371 7409 7284 30880 22834 35825 25233 267 266 268 10869 2763 2768 2767 32844 36655 24228 25234 8956 7818 8631 10752 36639 37522 35626 17249 25750 30215 25235 9191 7808 9112 10396 37503 36669 37656 37249 35785 29987 25236 1546 962 911 10833 5847 5005 5846 32213 35300 34139 25237 803 800 1031 11074 5410 4041 5411 20735 24543 35189 25238 8422 8460 8327 10834 37669 36561 35246 23818 27302 28742 25239 1589 1510 205 10373 2169 2472 1895 37438 31704 22582 25240 8609 9135 8655 10668 35489 30927 37978 21970 20050 21811 25241 7001 9190 7633 10657 37667 37575 37708 37668 37578 37577 25242 1232 159 1557 10572 1987 2227 2226 25451 34670 24793 25243 454 742 1367 11063 3699 3711 3710 25603 33158 28955 25244 9058 8676 7798 10690 36414 36452 37961 26717 29707 30967 25245 1595 714 1447 10691 5009 5007 5010 30012 17018 17000 25246 8457 8948 8933 11175 37165 37979 35891 30026 25739 33906 25247 6986 6983 6949 10841 7406 7301 7441 25585 36148 33168 25248 8734 8830 8736 10840 37655 37591 34873 32569 34760 30968 25249 7813 8641 8602 10743 35868 35869 37670 19090 22529 19170 25250 6265 7757 8756 11098 37952 37980 37956 37953 27869 35921 25251 8529 8445 8313 10609 37981 32782 36312 25385 22537 28745 25252 8587 8328 8229 10740 35875 37675 35871 27781 24610 35876 25253 1545 196 1273 10423 2422 1721 2427 17766 34916 28044 25254 8609 8655 8608 10668 37978 34562 36522 21970 20807 20050 25255 188 6970 124 10962 37673 7207 2074 37474 37930 35519 25256 1216 850 1576 10730 5625 5627 5626 31830 31461 19222 25257 8057 8969 8055 10726 37580 36101 37011 31465 11535 28664 25258 885 884 1346 11156 3968 5750 5749 31894 35597 34474 25259 8707 8706 8766 10847 36757 35311 37635 16543 29722 15536 25260 8684 8973 9071 10698 37288 36836 36678 30135 26623 14121 25261 8171 8970 9086 10796 35684 37741 35683 29238 20521 33094 25262 194 1550 1173 10570 2412 2411 2023 25312 24600 28575 25263 9127 9109 8776 10793 37400 37525 37359 27335 33285 25964 25264 6990 9111 6891 11197 37678 37982 7173 36566 37974 36141 25265 6860 7804 8594 11176 37954 37983 37966 37955 34401 35127 25266 8509 8508 8517 10940 36743 37984 35571 31509 18881 30572 25267 8585 9041 8584 10803 37638 36539 35694 32289 27747 29013 25268 9146 7797 8647 10402 37023 37798 35561 19069 17037 30091 25269 946 945 992 10562 5661 2462 5947 36462 25047 27116 25270 6971 6965 6985 10687 7450 7299 7376 29171 19792 35751 25271 9763 11014 10699 11122 30550 36524 25745 35401 34012 35021 25272 527 1087 1255 11080 4064 4075 4074 34894 22041 37146 25273 1424 948 857 10981 5659 5658 4769 34868 19219 31202 25274 1437 988 987 10917 5994 5115 5995 35438 22792 21461 25275 8246 9091 8433 10918 37589 35393 37167 27667 26476 16881 25276 592 594 593 10884 4398 4397 4220 35142 34152 35151 25277 236 238 237 10774 2618 2617 2613 35939 31066 31533 25278 7891 7892 7893 10989 37548 37053 37336 28366 36745 36683 25279 1474 927 1593 10380 5905 5907 5906 16004 32745 24838 25280 344 1357 522 11075 3094 3161 3160 23503 23028 19758 25281 8873 8232 8689 11043 35250 37856 36264 30972 24170 29064 25282 9094 8488 9102 11086 36957 37448 37570 20120 33379 23579 25283 1206 1394 442 10859 3650 3649 3647 17237 12644 24870 25284 8539 8540 8541 10958 37628 34755 37281 25767 25515 13323 25285 240 242 241 10763 2638 2637 2633 16996 32547 35636 25286 358 1067 338 10772 3131 3116 3129 26477 34974 23314 25287 1209 1208 473 10735 3802 3361 3803 29025 19159 32206 25288 8529 9122 8445 10609 34089 31410 37981 25385 28745 27378 25289 7904 7903 7899 10815 37112 35899 37499 32287 23647 28554 25290 1286 1130 495 11144 3914 3913 3915 19017 30921 21782 25291 7860 7858 8792 10813 35990 37164 37417 23087 21422 16317 25292 1281 607 777 10842 4475 4467 4476 28717 32526 24637 25293 1249 1558 1560 10531 6195 6235 2377 25889 21582 22406 25294 1347 775 1207 11066 5295 5297 5296 20125 32097 20403 25295 1059 1457 820 10769 5498 5497 4936 14596 31054 32929 25296 9030 7948 7951 11081 37433 37545 37587 21823 37240 32492 25297 8848 9110 8847 10914 37985 32989 33994 33778 25003 24257 25298 6939 6929 6931 10744 7428 7429 7323 29219 27510 35216 25299 8545 8594 7804 11176 34400 37983 35022 28335 35127 34401 25300 6960 6953 6895 10908 7294 7293 7224 34730 35669 29679 25301 8169 8290 8291 10942 35148 36023 37844 32953 24911 31682 25302 831 1484 1461 10753 5543 5544 5545 11433 32267 35153 25303 7855 8680 7859 10771 36498 37502 36784 12773 23458 33454 25304 8679 7823 7825 10761 36547 36546 37588 14397 25339 15073 25305 562 550 563 10760 3215 4188 4187 32270 22303 31445 25306 7706 7732 7693 10948 37294 37786 33976 24343 26211 29270 25307 8782 7765 8781 10897 37556 35941 37563 34448 28624 35942 25308 8444 8527 8443 10602 37969 37236 37025 26047 18621 31422 25309 1146 564 550 10901 4191 4190 4182 19474 31447 22342 25310 7953 8869 8203 11016 34850 37489 37477 29692 29668 19895 25311 842 932 1522 11143 5511 2223 5589 35450 29752 21105 25312 1576 1537 1216 10730 2325 6215 5626 31461 31830 25256 25313 6326 6282 6283 8777 6555 6554 6556 28888 33647 37727 25314 819 875 874 10844 5491 5490 4630 23188 34919 34260 25315 514 1276 512 11173 4000 3999 3997 31924 22024 35183 25316 967 1464 996 10767 5968 5967 5966 15870 32383 14037 25317 118 171 119 6937 2050 2049 2051 7189 7190 23753 25318 8505 9087 9090 10936 36978 37682 35483 20155 26975 32216 25319 6343 6274 6275 7760 6523 6522 6524 18506 33416 33403 25320 7608 7610 7603 10865 37541 35860 37490 32135 35211 35992 25321 406 1144 403 11125 3456 3448 3454 25222 29791 33796 25322 7920 7925 7924 11115 34668 37567 37506 32453 30376 34706 25323 8018 8020 8021 10925 37519 37483 37357 33633 30892 20013 25324 8440 8535 8441 10782 37756 37883 32262 24892 19896 32426 25325 6984 119 120 1169 7192 2055 7193 14149 2053 2054 25326 516 568 567 10964 4018 4017 4013 36370 32475 32793 25327 900 694 1393 10825 4908 4910 4909 27653 22995 26416 25328 6275 6276 6376 8876 6526 6528 6527 33415 25191 33583 25329 6860 6923 6916 11176 7044 7051 7049 37955 34724 35365 25330 8333 8946 8595 10992 36627 35425 37794 33656 30783 27154 25331 1577 1072 197 10747 2315 2433 1749 35514 35180 33174 25332 673 559 672 11180 4232 4227 4233 20394 23635 32993 25333 8670 7995 8829 10809 37010 37517 36582 20573 31050 29164 25334 6948 6882 6881 8828 7132 7134 7133 22047 33760 34421 25335 8277 8275 8278 11032 37342 35244 37612 28858 29812 25424 25336 1301 1299 260 10919 2737 2611 2738 34174 17813 31332 25337 9129 8692 8468 11153 37187 37748 26608 21169 18774 31304 25338 6969 135 136 1241 7240 2119 7241 23120 2117 2118 25339 8206 8200 8205 10900 37347 37458 36050 35495 26894 24019 25340 893 892 1491 10802 5058 5777 5776 22501 31641 28851 25341 8801 7847 8652 10999 37904 35527 35526 29479 30866 35168 25342 9009 9023 8652 11000 37905 35524 35525 32996 30865 23192 25343 933 152 1582 10675 2187 1834 2188 37066 29372 30878 25344 128 180 129 6895 2090 2089 2091 7219 7220 33701 25345 8481 8479 8480 10973 36186 37971 35432 23995 35434 29906 25346 8980 8112 8976 11002 35535 35532 37906 25137 28063 32191 25347 983 984 1471 10736 4184 5992 5926 32065 32913 24395 25348 7773 8893 9120 10590 37793 34349 37282 26507 28235 30679 25349 94 187 93 6289 1953 1952 1954 6613 6614 25886 25350 441 445 440 11072 3638 3637 3607 26239 33468 25065 25351 6297 6265 6357 11098 6484 6487 6489 35187 27867 37953 25352 7861 8903 8905 10894 36221 37536 37418 17981 18723 35963 25353 6962 6876 6875 7750 7108 7110 7109 25486 34176 33812 25354 1123 773 1293 10960 5288 4906 5289 30788 27966 22892 25355 8629 8628 8481 10785 37976 37042 36628 32101 24278 31711 25356 6273 6274 6313 8836 6518 6520 6519 37854 28394 33404 25357 1390 1062 1125 10794 6078 6070 3576 36597 22106 33349 25358 6867 6868 8805 6972 7078 33497 33907 7077 24654 7076 25359 1080 1082 1083 10980 6093 6102 6101 33650 28604 29115 25360 1158 128 127 6951 2085 2087 2086 25116 7216 7217 25361 189 135 134 6905 2113 2115 2114 25550 7237 7238 25362 373 744 1119 11042 3294 3306 3305 15503 27754 23907 25363 396 393 392 10928 3397 3383 3398 24678 30899 32640 25364 6357 6354 6297 11098 6725 6724 6489 27867 35187 28158 25365 1401 684 1392 11124 4860 4351 4861 21917 25682 24493 25366 1587 154 1148 10530 2203 1814 2204 18071 23114 36093 25367 7789 8552 8551 10812 37986 37487 37054 27445 36331 28537 25368 7993 7994 7997 10965 37339 37565 36375 30055 15954 22549 25369 8104 8108 8106 10797 36851 37113 37439 12742 18638 36328 25370 9107 6891 9111 11197 37973 37982 37987 36191 36141 37974 25371 724 990 628 10820 4581 4570 4579 33853 16793 22770 25372 718 1530 1597 10717 4741 5031 5030 15586 29745 26364 25373 1052 701 634 10778 4611 4610 4607 29507 28153 23080 25374 6963 133 134 959 7234 2111 7235 24621 2109 2110 25375 7963 8681 8680 10775 37020 37021 37421 29131 33455 29381 25376 194 110 111 6330 2020 2022 2021 21035 6664 6665 25377 130 129 1303 6960 2095 2094 2093 7223 35717 7222 25378 6314 6283 6284 7795 6559 6558 6560 23965 34235 33648 25379 8088 8087 8089 11110 37730 36250 37791 21753 32197 36366 25380 8837 8145 8199 11047 37830 36541 36500 23624 34560 28325 25381 8011 8009 8010 11003 37116 37309 37620 33747 27823 25623 25382 1476 830 826 11020 5523 5394 5524 32737 18056 24419 25383 1539 182 1570 10855 1979 2351 2350 33215 35172 21328 25384 8678 8711 8747 11109 37944 35996 35384 31384 30711 17323 25385 570 1489 1484 11164 4289 4291 4288 34888 35154 35700 25386 7788 6267 6266 6355 34964 6490 34070 29061 6491 6492 25387 6884 6883 6944 7809 7142 7141 7140 34906 24864 35713 25388 507 503 505 11155 3954 3952 3955 25990 32693 32515 25389 1118 418 1002 11012 3529 3528 3530 22832 21766 14741 25390 9874 10995 10794 11029 25501 34896 37003 36579 36601 31432 25391 6871 6872 8763 6955 7094 35083 34917 7093 28375 7092 25392 8392 8892 8394 11146 37872 36738 35232 35241 31021 26055 25393 6880 6879 6917 8846 7126 7125 7124 34721 26965 33883 25394 9034 6873 6874 6957 34234 7102 35016 22009 7100 7101 25395 8947 8373 8370 10779 37110 37217 37308 29837 33920 27812 25396 100 101 1232 6348 1982 1981 1980 6635 21024 6634 25397 6902 6864 6863 8773 7060 7062 7061 27095 35640 33997 25398 7796 7464 7465 7602 35538 37988 34358 30483 34359 35893 25399 993 1437 1343 10788 2869 5996 5103 15797 16211 36087 25400 7960 7943 7933 10891 36598 37492 37315 34849 36129 24159 25401 203 117 116 6934 2041 2043 2042 25770 7183 7184 25402 9186 8573 7779 11135 32943 37989 37878 25776 34784 32944 25403 8370 8371 8294 10780 37251 37154 37280 33921 30176 29385 25404 6916 6923 6925 11176 7051 7398 7397 34724 35210 35365 25405 16 15 195 7598 1648 1647 1646 34436 31061 34213 25406 6281 6282 6336 7777 6550 6552 6551 34945 28016 37758 25407 9082 6885 6886 6950 34629 7150 34958 30879 7148 7149 25408 1436 577 1408 10819 4323 4324 4326 29155 24688 34463 25409 633 1453 1101 11159 4603 4602 3746 25034 24523 33307 25410 8500 9060 8590 11132 35504 36685 37875 31255 34057 22407 25411 9015 8865 9000 11168 37916 35373 36272 27316 34496 20332 25412 8871 9093 9097 11169 37917 35374 36273 27319 34498 33833 25413 8376 8455 8456 11152 34584 37566 37990 33371 33463 34625 25414 8705 8758 8835 11191 35108 37967 35107 27538 31268 32616 25415 685 1291 1259 11192 4864 4866 4101 27541 24233 24451 25416 8138 8197 8198 11171 36758 37880 35405 32707 28813 32860 25417 8209 8211 8210 10821 37352 36989 37310 26560 26068 19137 25418 6970 6973 6975 10962 7454 7453 7209 35519 34035 31317 25419 6878 6877 6967 8717 7118 7117 7116 34419 28178 35580 25420 1360 131 130 6981 2097 2099 2098 13804 7225 7226 25421 437 1153 1229 11188 3586 3626 3625 35192 24447 35043 25422 8914 8741 8979 11084 35735 37822 36812 21551 28802 19680 25423 1193 126 125 6915 2077 2079 2078 34825 7210 7211 25424 124 123 1202 6975 2071 2070 2069 7205 35283 7204 25425 9029 8713 8714 11187 35226 35225 37962 31545 27174 31901 25426 8932 8384 8610 11186 35228 35229 37960 32238 28127 31390 25427 131 150 132 6911 2102 2101 2103 7228 7229 15908 25428 1592 6393 7746 10688 37597 37824 37684 37598 37686 37599 25429 662 651 590 11005 4389 4383 4390 27964 26593 34965 25430 1480 212 1425 11185 2500 2490 2501 29213 29908 31684 25431 8140 8143 8141 11010 37086 37715 36193 34425 25797 23652 25432 7794 6889 6890 6930 34492 7166 35644 24585 7164 7165 25433 8816 8874 8187 10862 36311 37299 37757 29488 28059 21948 25434 533 531 532 11184 4092 4087 4093 28518 24620 27138 25435 369 1376 371 11178 3285 3284 3283 34460 28996 32748 25436 8457 8376 8456 11152 37081 37990 37202 30024 33463 33371 25437 7757 6265 6264 6297 37952 6482 36195 36512 6483 6484 25438 174 144 143 6933 2149 2151 2150 29499 7264 7265 25439 8101 8099 8162 11092 36690 37855 35766 33279 31663 24315 25440 92 156 91 6373 1945 1944 1946 6607 6608 24077 25441 8642 7968 8959 11060 37802 36852 36003 16458 30702 36429 25442 7775 6887 6888 6997 34532 7158 34753 30627 7156 7157 25443 6992 6863 6862 7772 7056 7058 7057 11445 34989 35642 25444 216 1355 518 11127 2506 2521 2520 29624 32879 32908 25445 876 991 1391 11054 5723 5722 4646 24942 25158 27123 25446 6970 6975 124 10962 7209 7205 7207 35519 37930 34035 25447 8833 6264 6263 6359 36196 6478 34470 26829 6479 6480 25448 7764 6866 6867 6978 34166 7074 33908 20410 7072 7073 25449 91 90 6310 1228 1942 6605 6604 1941 26025 1940 25450 7942 7948 7941 11167 37951 35491 35492 27831 35012 32182 25451 992 116 115 6906 2037 2039 2038 25045 7180 7181 25452 6907 6928 6990 11197 7352 7353 7175 34417 36566 26626 25453 443 528 1160 11165 3652 3655 3654 25670 31229 26482 25454 957 189 958 10781 2386 2385 2384 24198 34494 24624 25455 28 27 1238 7612 1696 1695 1694 35053 16494 34530 25456 9040 9013 8178 10872 36879 37219 37546 35074 34309 29328 25457 8803 6888 6889 6922 34752 7162 34491 26357 7160 7161 25458 553 994 1294 10969 4204 4205 3731 13928 19238 24731 25459 8354 8222 8353 10874 37549 37211 36876 16231 25909 25652 25460 781 1270 616 10875 4520 4519 4517 16291 27417 25913 25461 1023 1022 871 10876 5707 5706 5708 33513 27660 25911 25462 8493 8841 8494 10878 37550 36878 37212 24011 25919 16223 25463 551 552 667 10873 3682 4193 4192 33230 25921 27030 25464 8635 7819 7821 10877 37210 37551 36877 25916 17714 30758 25465 1429 867 1030 11140 5694 5693 3186 28676 27120 24628 25466 8797 6869 6870 6961 34184 7086 34681 26700 7084 7085 25467 8809 8043 8997 11149 35606 37948 35605 30668 27558 22377 25468 1312 450 448 11148 3679 3663 3680 31381 30955 27976 25469 7691 7512 7513 8544 37991 37992 35404 23103 35541 37993 25470 7589 7534 7590 10800 36313 37811 36604 36317 29866 16464 25471 717 750 749 11139 5023 5022 4690 34512 34393 26870 25472 8164 8151 8163 10867 37561 37190 36946 27289 32539 33502 25473 1497 143 142 6988 2145 2147 2146 28721 7261 7262 25474 621 1278 1380 11138 4537 4546 4545 27011 30159 33514 25475 8426 8281 8284 11134 35744 37939 35743 31094 33881 29022 25476 8247 8438 8428 10910 37626 37140 36773 30917 31516 26539 25477 640 641 639 11120 4633 4632 4024 31543 35777 34978 25478 8218 7919 8768 11133 35761 35762 37937 26706 35764 31875 25479 6998 7636 1590 10686 37838 37710 37557 37559 37558 37713 25480 8402 8276 8383 11130 35773 35770 37933 25955 31857 33936 25481 8179 8632 7950 11131 35772 37934 35774 30683 26662 34290 25482 9107 6890 6891 6907 35645 7170 37973 36130 7168 7169 25483 8756 6266 6265 6357 34071 6486 37956 27072 6487 6488 25484 410 432 412 10887 3490 3489 3488 27786 33667 22297 25485 8177 9016 8639 11147 36832 35656 37946 29056 35570 16664 25486 8978 8170 9062 11128 37931 35820 35821 33018 32800 35614 25487 6313 6346 6374 10971 6808 6810 6521 33963 36780 28328 25488 7570 7489 7798 7490 36595 36594 29706 36751 36750 37994 25489 302 303 298 10858 2928 2927 2922 19737 30715 32448 25490 7476 7477 8842 7531 37995 34731 35102 35818 31121 34733 25491 8310 8309 8174 11065 36217 36702 37845 25879 28317 31601 25492 837 1000 999 11118 5568 5105 4670 24059 35481 17330 25493 1271 102 103 6347 1988 1990 1989 21867 6640 6641 25494 1431 1325 1460 11117 6106 6238 2681 25559 23777 37230 25495 7884 7890 7889 10843 37169 37087 37535 29309 21321 32153 25496 155 127 126 6980 2081 2083 2082 27121 7213 7214 25497 8475 8994 8593 10903 37102 36870 37637 34073 20161 27910 25498 8110 8857 8856 11033 37810 36348 36718 21457 30061 34504 25499 6990 6891 6907 11197 7173 7168 7175 36566 34417 37974 25500 8517 8508 9148 10940 37984 35329 34804 18881 22814 30572 25501 949 792 791 10849 5368 5365 5369 32750 23434 35810 25502 8723 8343 7974 11112 36016 37233 37919 26801 23721 33557 25503 1399 1422 1279 10907 5773 6237 5219 26725 30284 23963 25504 1310 1375 1136 11101 6164 6163 4461 33066 25293 25181 25505 500 561 498 11103 3930 3929 3927 33069 34713 28140 25506 1256 1310 608 11100 4481 4466 4479 28820 25071 33065 25507 8358 8357 8356 11102 36042 36040 37914 23412 35263 33068 25508 8344 8752 8271 11104 36043 36041 37913 27441 31444 25240 25509 225 223 224 11106 2552 2547 2553 36044 35510 29982 25510 697 696 457 11105 3724 3715 3725 33070 35090 28732 25511 519 225 1194 11107 2555 2564 2566 36047 29104 33074 25512 518 1487 1478 11108 4029 4031 4028 33073 25268 25026 25513 446 431 439 10909 3594 3592 3595 29193 19902 34890 25514 981 866 982 10837 5685 5689 5688 30822 34589 31081 25515 1129 1131 1227 11094 6152 3612 3861 27352 33108 29533 25516 540 1329 543 11093 4140 4139 4138 26989 31748 36332 25517 8798 9089 9080 11091 37910 36091 37292 23207 30713 34951 25518 1382 502 1381 10911 3940 3949 3951 26890 30019 17214 25519 882 881 880 11090 5733 4375 5734 17127 34018 35451 25520 8293 8908 8909 10835 37539 37143 37142 31347 17466 25345 25521 8555 8588 8553 10836 37145 37144 37540 32296 19059 16566 25522 6971 132 133 1383 7231 2107 7232 29170 2105 2106 25523 8391 8374 8372 10955 37725 36693 36928 31473 22920 35846 25524 6987 6865 6864 7802 7064 7066 7065 22139 33996 34427 25525 27 26 149 7630 1692 1691 1690 34334 16150 35355 25526 676 736 678 10898 4820 4819 4818 21695 21454 34779 25527 1485 904 1489 11036 4975 5820 5563 21037 36495 35678 25528 9112 6253 6252 6303 37633 6434 37940 37632 6435 6436 25529 504 501 1292 10893 3945 3934 3946 17779 19464 17045 25530 7789 6868 6869 6900 33496 7082 34183 26739 7080 7081 25531 8975 8396 8924 10868 37072 37071 37607 26905 14349 32035 25532 9027 9002 8884 10889 36984 37032 37653 36219 24393 17942 25533 8153 8152 8268 10890 37652 36985 37033 32698 17853 21861 25534 8492 8559 8966 10970 36707 36829 37759 23662 28528 29956 25535 8411 8156 8158 11055 36347 37996 37884 26294 31090 35070 25536 8093 8090 8882 10880 37044 37043 37634 28969 23295 35048 25537 6866 6865 6912 9025 7070 7069 7068 34165 14917 34428 25538 492 1257 1319 10881 3897 3900 3899 27580 31733 25571 25539 6308 6276 6277 7800 6531 6530 6532 27373 37997 33582 25540 690 691 689 10937 4883 4882 4279 28344 33868 31881 25541 8216 8217 8378 10882 37040 37636 37041 35511 27516 16441 25542 726 1009 682 11037 4851 4836 4849 22484 29845 32518 25543 7990 7989 7986 11018 36556 37849 36555 32022 19205 31183 25544 108 109 176 6328 2014 2013 2012 6659 21150 6658 25545 255 254 252 10912 2699 2693 2700 20590 25800 25696 25546 562 686 737 10886 4247 4250 4249 31574 30884 22336 25547 218 1033 220 10924 2530 2529 2528 22189 27005 34626 25548 8418 8473 8474 10994 37777 36656 36842 31784 20998 31662 25549 1091 776 1315 10932 5301 5303 5302 23860 32657 31101 25550 8782 7465 7466 7604 34357 37998 37555 32890 37471 34887 25551 8001 8000 7999 10938 37737 36827 36828 23154 24374 18783 25552 680 829 683 10939 4840 4839 4838 21505 22672 24375 25553 1353 1029 217 10943 2526 2515 2524 18802 24277 23464 25554 8097 8095 8098 10944 36811 36810 37745 32200 17503 33749 25555 399 400 398 10945 3428 3427 3422 27663 32352 33009 25556 8429 8306 8395 10946 36800 37747 36801 21446 30862 24264 25557 1144 1272 402 10978 3451 3450 3447 33923 19905 26922 25558 8219 8223 8901 10977 37787 36714 36715 35453 36254 25342 25559 493 490 491 10975 3887 3882 3888 27696 26024 23864 25560 8326 8283 8988 10956 36769 36768 37767 28684 27633 27790 25561 420 419 417 10966 3524 3515 3525 27148 19198 35838 25562 430 436 438 10967 3582 3588 3587 24086 28475 25835 25563 534 538 536 10952 4110 4109 4108 19183 25997 24203 25564 325 1058 1044 10953 2961 3066 3063 24065 24068 31764 25565 8434 9103 9056 10976 37107 37689 36729 25285 34268 27104 25566 1251 1252 509 10959 3986 3985 3631 28472 31668 25464 25567 8044 8764 8129 10954 36774 36775 37761 24067 28791 23994 25568 7588 7594 7538 10746 36082 37788 36323 25108 35959 23110 25569 1413 1365 799 11089 4145 3156 5405 27433 30367 25711 25570 1442 828 1465 10923 5507 5533 3841 26094 11233 24997 25571 8964 8487 8990 11073 37892 36992 37098 23629 35864 31789 25572 317 318 313 11162 3005 3004 3002 30602 29287 34493 25573 8736 8036 8880 10926 37618 37213 36964 30946 27693 30981 25574 6351 93 92 1151 6610 1950 6611 21479 1948 1949 25575 242 244 243 11071 2648 2647 2643 35981 27959 35344 25576 294 629 214 10921 2510 2509 2507 23271 27896 13881 25577 1173 109 110 6295 2016 2018 2017 19641 6661 6662 25578 9104 8806 8498 10984 36859 37750 36862 33820 24606 27732 25579 9003 8774 9104 10985 37751 36860 36861 18909 33821 23388 25580 8056 8058 8057 10888 37601 37174 37106 16804 30901 33562 25581 6993 137 138 1225 7246 2127 7247 17373 2125 2126 25582 7466 7467 7765 7529 37999 36664 37366 37365 34823 36424 25583 81 82 177 6331 1906 1905 1904 6578 25253 6577 25584 6862 6861 6936 8796 7054 7053 7052 34988 11555 35689 25585 7893 7902 8661 10832 37434 37272 37333 36408 24372 12480 25586 7762 6261 6260 6370 35478 6466 34433 17439 6467 6468 25587 1590 206 1511 10686 1758 2476 2036 37558 21314 21185 25588 7488 7487 7568 7776 38000 37422 38001 38002 19543 37482 25589 7625 7555 7633 10657 37852 37707 37574 26820 37578 22470 25590 7507 7780 7508 7641 34126 35322 38003 34294 35324 23067 25591 140 165 141 6941 2138 2137 2139 7255 7256 14070 25592 8086 8085 8087 11009 37064 36755 37739 20849 35909 33673 25593 1420 122 121 6977 2061 2063 2062 20231 7198 7199 25594 121 120 201 6914 2059 2058 2057 7196 16673 7195 25595 1588 1141 153 10746 2198 2196 1673 23108 37134 32000 25596 102 159 101 6291 1985 1984 1986 6637 6638 19262 25597 6916 6861 6860 7804 7048 7050 7049 35884 37954 35691 25598 8075 8943 8724 10947 37035 37036 37700 19033 33426 25717 25599 6879 6878 6968 7790 7122 7121 7120 33884 32312 34418 25600 7852 7851 7850 10927 37273 37600 37101 25362 13743 29376 25601 8915 8049 8051 11022 37238 36787 37695 21730 26607 24799 25602 7773 7523 7522 7679 38004 38005 37663 27203 37464 38006 25603 139 208 140 6898 2134 2133 2135 7252 7253 34648 25604 1326 111 112 6301 2024 2026 2025 19811 6667 6668 25605 145 193 146 6939 2158 2157 2159 7270 7271 29217 25606 1080 1079 1078 11044 6091 3250 6092 33898 29100 21393 25607 8334 8601 8600 10830 37349 37351 37350 31059 27764 31320 25608 7477 7478 8728 7580 38007 35834 34732 35446 30695 35836 25609 7906 7905 7904 11013 37723 37127 36882 17112 30902 31702 25610 6923 6860 6859 8594 7044 7046 7045 36776 36609 37966 25611 8470 8622 8623 10913 37243 37196 37593 22248 34709 28939 25612 933 841 1171 10951 5585 5582 2186 37495 33722 29198 25613 8419 9063 8663 11038 36814 37716 37194 22141 24531 28189 25614 8703 9154 9152 11077 34879 37674 37963 28264 23867 31861 25615 731 732 1036 10594 4339 5091 5090 14507 27009 24538 25616 41 40 197 7554 1748 1747 1746 36767 36658 37321 25617 367 314 1414 11179 2985 3009 3011 23377 24505 30450 25618 7781 6872 6873 6921 35081 7098 34233 20255 7096 7097 25619 7547 16 17 1178 34925 1652 35565 13618 1650 1651 25620 192 68 69 7659 1855 1857 1856 16404 38008 36900 25621 7699 7649 7705 10818 35895 37676 37538 33326 32372 35651 25622 7463 7770 7462 7608 35543 35623 38009 35424 35624 32132 25623 8990 8945 8484 10950 37731 37152 37126 34928 32577 27622 25624 7923 7932 8838 11004 37435 37408 37579 27437 35897 17793 25625 8295 8501 8996 10933 37488 37419 37203 20487 12378 23280 25626 577 1195 478 11083 3831 3830 3819 37082 22133 25531 25627 18 17 164 7606 1656 1655 1654 36679 23162 35805 25628 142 141 1479 6918 2143 2142 2141 7259 31359 7258 25629 7791 6263 6262 6294 34471 6474 37192 29101 6475 6476 25630 7524 7779 7525 7681 37842 36850 38010 37841 36805 34780 25631 6272 6273 6374 7783 6514 6516 6515 35662 34113 37832 25632 7901 7910 7909 11014 37344 37647 37027 37028 26656 30551 25633 8611 8920 8662 10885 37479 37340 37341 29861 28163 33088 25634 7500 7501 7715 8770 38011 36259 36947 37319 32316 36261 25635 589 1087 525 10931 4066 4065 4062 31998 34247 36052 25636 7787 7708 7504 7503 30846 36995 36996 36154 38012 36155 25637 76 178 75 7665 1884 1883 1885 36740 36527 32945 25638 9189 7805 9111 10514 37796 36883 37677 37531 36139 36112 25639 158 32 31 7572 1710 1712 1711 25942 34651 35522 25640 7458 7459 7808 7626 38013 34828 37847 37704 29989 34830 25641 1298 743 483 11150 3856 3845 3854 24331 36291 36642 25642 179 58 59 7668 1815 1817 1816 21587 35219 34792 25643 6881 6880 6986 7758 7130 7129 7128 33761 25584 34720 25644 67 160 66 7683 1848 1847 1849 35674 34682 24977 25645 147 148 6908 1510 2167 7277 7276 2166 22580 2165 25646 7807 9190 9113 10657 37807 37776 34757 30209 34759 37577 25647 1269 1213 586 10982 4367 4136 4368 35937 22283 25900 25648 96 95 6293 1187 1962 6620 6619 1961 21714 1960 25649 9196 8832 9112 10643 37399 37735 37060 18885 35787 35155 25650 7703 7511 7753 7510 38014 38015 11470 36060 38016 38017 25651 8455 8748 9128 11129 37935 37209 36069 36068 33383 31552 25652 6874 6875 8627 6899 7106 34175 35017 7105 24402 7104 25653 234 236 235 11023 2608 2607 2603 30767 29069 36802 25654 7613 7586 7583 10808 36508 36976 37804 36120 14266 25459 25655 104 199 103 6383 1993 1992 1994 6643 6644 31492 25656 31 30 1240 7553 1708 1707 1706 34650 29410 36270 25657 95 94 6375 1249 1958 6617 6616 1957 27877 1956 25658 61 62 152 7741 1829 1828 1827 36434 34227 37584 25659 7494 9115 7737 7493 38018 20949 38019 38020 37696 37908 25660 7664 66 65 1163 34683 1845 35953 25728 1843 1844 25661 196 34 33 7548 1718 1720 1719 28040 36797 34999 25662 7544 9 10 1514 37771 1624 36443 35807 1622 1623 25663 1513 44 45 7655 1759 1761 1760 36694 36181 37770 25664 6909 6859 6858 9113 7040 7042 7041 36858 37858 36611 25665 7706 7519 7520 7769 38021 38022 36056 26887 36661 38023 25666 7965 8904 8903 11097 37608 37543 37034 21372 36634 36698 25667 9143 7774 9172 10776 37250 37827 36869 16490 35265 34946 25668 24 23 184 7557 1680 1679 1678 37497 26752 36840 25669 888 1362 1387 11021 5758 5755 5764 30810 33342 18391 25670 1062 1065 1063 10995 6077 6076 6072 30269 30923 20188 25671 7688 8767 7514 7515 31686 36336 36335 35472 38024 35470 25672 1168 49 50 7720 1779 1781 1780 15384 35485 37303 25673 7518 7517 7793 7729 38025 36458 38026 38027 26651 36394 25674 39 38 175 7552 1740 1739 1738 38028 34384 37179 25675 9098 6886 6887 6893 34959 7154 34531 29807 7152 7153 25676 7724 7506 7755 7505 35721 36553 33836 35844 35843 38029 25677 8844 7479 7480 7577 36885 38030 36080 36081 35944 36884 25678 6255 6254 7778 6312 6442 35114 36089 6444 17799 6443 25679 6901 144 145 1199 7267 2155 7268 29236 2153 2154 25680 7752 7475 7476 7592 35726 38031 35101 14560 35103 35728 25681 9107 9111 8572 11197 37987 36140 36107 36191 32440 36141 25682 55 186 54 7646 1800 1799 1801 37122 36481 31758 25683 81 80 6300 1201 1902 6575 6574 1901 30591 1900 25684 7698 58 57 1148 35198 1813 37493 22508 1811 1812 25685 7468 7469 7792 7597 38032 36630 37387 37373 22465 36308 25686 8861 8093 8922 11126 37385 37631 37709 28242 21670 36167 25687 6904 117 118 1192 7186 2047 7187 26430 2045 2046 25688 8317 8368 8250 11198 37507 37928 36724 35275 31860 24686 25689 74 172 73 7663 1876 1875 1877 36158 37157 35828 25690 8777 7777 9153 10710 37790 36300 36189 34426 32839 31323 25691 8791 6269 6268 6360 34920 6498 35194 26730 6499 6500 25692 881 882 937 11090 5733 5738 5737 35451 32398 17127 25693 8825 6260 6259 6306 34432 6462 35467 21662 6463 6464 25694 6322 6284 6285 8928 6563 6562 6564 31570 35698 34236 25695 7785 7473 7530 7472 37430 37431 17233 37128 36476 38033 25696 64 63 7657 944 1837 38034 35792 1836 20181 1835 25697 6883 6882 6913 7786 7138 7137 7136 35712 22243 34420 25698 1036 1523 934 11052 5923 2234 5133 27010 23160 20956 25699 9178 8745 7754 10808 32143 37724 37850 32144 36940 29357 25700 8103 8985 8984 11040 37327 37619 37427 15891 19488 27163 25701 7681 7675 7647 11135 36881 37324 37909 34783 25778 31349 25702 9111 6891 6892 6990 37982 7174 37808 37678 7172 7173 25703 8118 8239 8240 11070 37651 37265 37457 20366 16169 35290 25704 7001 6995 6909 10657 7025 7365 7043 37668 36236 22469 25705 139 138 185 6947 2131 2130 2129 7250 14161 7249 25706 204 1592 1513 10688 2032 1762 2467 35579 35254 37598 25707 230 1409 1467 11030 2579 2591 2590 31055 19645 31133 25708 1127 1426 796 10990 5391 5390 5389 18841 26317 28913 25709 1076 315 1114 11111 2551 3015 3014 32784 25173 36038 25710 1124 29 28 7546 1698 1700 1699 19662 35765 35831 25711 147 146 1506 6927 2163 2162 2161 7274 23625 7273 25712 1419 1068 809 11053 5447 5446 5448 35956 33845 33104 25713 14 15 7609 1507 1644 34778 35340 1643 21908 1642 25714 8253 8233 8196 11027 37411 37616 37410 30993 32795 24584 25715 1166 51 52 7658 1787 1789 1788 19555 36084 36765 25716 7461 7539 7462 8824 36098 35622 38035 36175 35950 31334 25717 7470 7613 7471 7754 37899 37803 38036 37897 37851 37876 25718 7482 7797 7618 7483 36549 30089 36226 38037 35582 36163 25719 1217 1219 588 11154 4378 4377 4379 27110 23309 33505 25720 1175 624 372 10986 3301 3290 3299 24635 27498 30718 25721 301 1318 1335 10987 2942 2946 2945 27496 33236 32456 25722 8786 6262 6261 6364 37242 6470 35477 23717 6471 6472 25723 8709 8011 8033 11172 37176 37828 37175 36783 30579 29110 25724 87 86 6369 1222 1926 6593 6592 1925 27321 1924 25725 43 42 206 7543 1756 1755 1754 37755 17470 36990 25726 1149 1595 1447 10691 6171 5010 6173 31200 17018 30012 25727 30 29 183 7615 1704 1703 1702 36269 20585 35832 25728 115 114 1511 6991 2035 2034 2033 7178 21309 7177 25729 78 205 77 7654 1892 1891 1893 37839 36997 34217 25730 917 1045 1521 11024 5869 5871 5866 36725 36919 34133 25731 56 57 154 7649 1809 1808 1807 37621 37622 37641 25732 270 560 268 11057 2780 2779 2769 23167 37234 27189 25733 7828 7829 7827 11059 37646 37446 37412 27191 36404 11297 25734 368 1443 1410 11058 3279 3281 3278 36771 18186 27190 25735 308 309 300 11123 2940 2939 2937 22234 31923 36410 25736 7783 9160 8836 10971 35132 37091 37853 35395 33962 30447 25737 14 13 169 7550 1640 1639 1638 35341 33352 36352 25738 614 613 612 11078 4497 4493 4498 30925 24528 32063 25739 6884 6885 7766 6910 7146 34628 34907 7145 25505 7144 25740 649 770 716 10972 4685 4684 4683 22373 29037 29513 25741 7892 7962 7894 11195 37834 37226 37225 36786 35465 18483 25742 7759 7480 7481 7532 35910 38038 36358 35912 36338 35911 25743 7491 7807 7625 7492 36516 35039 35968 38039 37779 37942 25744 7756 6870 6871 6903 34680 7090 34918 21427 7088 7089 25745 7801 7713 7500 7499 27891 36949 37231 35886 38040 35550 25746 7734 7716 7718 11181 37900 37013 37564 34341 33621 37100 25747 7515 7516 7643 7761 38041 36285 35471 35595 31987 36346 25748 7527 7526 7805 7736 38042 37805 37943 37784 37795 37764 25749 89 88 6367 1182 1934 6599 6598 1933 35054 1932 25750 7459 7460 8831 7541 38043 36386 35500 34829 31930 36388 25751 7507 7506 8753 7694 38044 35720 34127 34128 32650 35722 25752 9110 8848 9194 10914 37985 36164 36910 24257 14442 33778 25753 7486 8853 7485 7617 36009 36545 38045 36011 36297 20611 25754 6393 6387 6317 10688 6673 6824 6433 37599 20326 37368 25755 7461 7799 7460 7624 36097 36668 38046 36099 36387 18543 25756 6277 6278 6379 8703 6534 6536 6535 38047 28262 34970 25757 8948 8199 8933 11175 36501 36875 37979 33906 25739 34871 25758 7499 7498 8772 7648 38048 37047 35551 35552 26422 36643 25759 65 181 64 7726 1840 1839 1841 35951 35791 19594 25760 739 1036 934 11052 5094 5133 5132 32080 23160 27010 25761 1600 1045 1046 11017 6058 5894 6059 15629 35679 28283 25762 7650 7497 8790 7496 36179 36564 32752 37964 37972 38049 25763 6991 6920 6998 10686 7415 7030 7179 21312 37559 20419 25764 8878 7481 7482 7576 36670 38050 36225 27920 36227 36340 25765 7534 25 26 1165 36315 1688 35354 20443 1686 1687 25766 7619 12 13 1221 38051 1636 36351 18526 1634 1635 25767 85 173 84 6381 1917 1916 1918 6586 6587 29964 25768 6386 6381 6335 10831 6790 6836 6720 35653 32662 31114 25769 8854 6268 6267 6311 35195 6494 34963 30385 6495 6496 25770 97 151 96 6362 1965 1964 1966 6622 6623 28728 25771 8867 7516 7687 7517 36709 36283 24101 36393 36392 38052 25772 122 163 123 6894 2066 2065 2067 7201 7202 17619 25773 7705 56 55 1167 37661 1805 37121 32371 1803 1804 25774 1026 1258 648 11145 4680 4055 4679 37141 31621 30805 25775 7771 7497 7719 7498 36178 36177 31719 36572 36573 38053 25776 20 19 191 7535 1664 1663 1662 38054 26178 37393 25777 7577 7573 7532 11183 37886 37766 35943 35945 35913 30738 25778 6259 6258 8827 6384 6458 35110 35468 6460 31291 6459 25779 9170 8621 8620 11114 37426 37947 36659 36378 24190 34610 25780 71 168 70 7656 1864 1863 1865 37015 38055 19282 25781 106 167 105 6341 2001 2000 2002 6649 6650 29395 25782 1100 104 105 6292 1996 1998 1997 28195 6646 6647 25783 7474 8769 7558 7475 36727 23930 36728 38056 35727 36170 25784 7503 8814 7718 7502 36412 33259 36153 38057 36321 36320 25785 7616 32 33 1273 35523 1716 36796 34030 1714 1715 25786 137 136 157 6897 2123 2122 2121 7244 26368 7243 25787 54 53 7740 1211 1797 36454 36482 1796 26708 1795 25788 6258 6257 7774 6296 6454 37826 35109 6456 30036 6455 25789 162 52 53 7717 1791 1793 1792 25842 36455 36083 25790 849 1535 1021 11085 5622 5621 5620 29544 31196 35147 25791 6877 6876 6896 8732 7114 7113 7112 35581 31404 33811 25792 100 182 99 6299 1977 1976 1978 6631 6632 21325 25793 911 962 713 10833 5005 5004 5002 35300 30676 34139 25794 6338 6279 6280 9173 6543 6542 6544 32541 37074 35098 25795 47 48 1186 7730 1773 1772 1771 36537 24675 36593 25796 7742 72 71 1263 37052 1869 37120 27008 1867 1868 25797 7722 7735 7650 11166 37396 37965 36456 29889 34695 37397 25798 6269 6270 6307 7751 6502 6504 6503 34921 28616 35573 25799 83 84 1572 6334 1914 1913 1912 6584 29760 6583 25800 188 952 1193 11158 2379 2383 2080 37475 37276 24754 25801 1262 67 68 7727 1851 1853 1852 31162 36901 35675 25802 6302 6285 6286 7806 6567 6566 6568 30905 38058 35699 25803 188 125 124 6970 2073 2075 2074 37673 7207 7208 25804 7502 7763 7640 7501 36652 31798 36322 38059 36260 36703 25805 1224 85 86 6309 1920 1922 1921 29933 6589 6590 25806 8832 6254 6253 6318 35113 6438 37681 32685 6439 6440 25807 88 161 87 6288 1929 1928 1930 6595 6596 31876 25808 7521 8868 7728 7520 35286 22515 35285 38060 36055 36054 25809 37 36 1248 7631 1732 1731 1730 37306 27887 36915 25810 7678 7682 7680 11046 37220 37970 37266 35439 27861 33120 25811 7478 7479 7784 7540 38061 37139 36200 35835 30436 36962 25812 98 99 1539 6350 1974 1973 1972 6629 22800 6628 25813 7805 9179 8571 10863 37882 34633 37945 36113 33538 25938 25814 6287 6280 6281 9140 6547 6546 6548 28927 34944 36916 25815 7655 7746 7739 10688 37685 37823 37920 36319 20053 37686 25816 7595 7767 7485 7484 15632 36296 36295 36855 38062 36854 25817 6304 6278 6279 7768 6539 6538 6540 33142 35099 34969 25818 153 22 21 7538 1670 1672 1671 37829 37789 37932 25819 7543 7636 7627 10686 37754 37837 37915 21184 20117 37713 25820 7514 7782 7651 7513 36599 22402 36449 38063 35403 35402 25821 1215 1541 1566 11160 6207 2302 6213 29017 34622 34286 25822 107 108 1538 6380 2010 2009 2008 6656 27210 6655 25823 200 50 51 7709 1783 1785 1784 21483 36762 35484 25824 7505 8771 7660 7504 36138 25554 35842 38064 37067 36994 25825 112 113 204 6387 2030 2029 2028 6671 35292 6670 25826 207 79 80 6388 1896 1898 1897 36203 6571 6572 25827 90 190 89 6361 1937 1936 1938 6601 6602 32421 25828 9188 7754 8746 10935 37898 37846 35780 35781 30196 36941 25829 7537 7463 9108 7464 35421 35420 30855 35540 35539 38065 25830 6270 6271 6372 9174 6506 6508 6507 35572 28424 35878 25831 6257 6256 9172 6389 6450 36486 37817 6452 32641 6451 25832 49 170 48 7661 1776 1775 1777 37301 36592 22462 25833 1574 97 98 6290 1968 1970 1969 24167 6625 6626 25834 6271 6272 6305 9141 6510 6512 6511 35877 28185 35663 25835 8569 8573 8566 10870 38066 37740 37679 18668 22027 35688 25836 8726 9157 9159 11088 37627 37968 37468 31417 34104 34252 25837 918 917 908 10983 5835 5834 5836 28489 30754 35867 25838 7700 60 59 1253 36911 1821 35665 33860 1819 1820 25839 6256 6255 9139 6333 6446 36090 36487 6448 20732 6447 25840 6856 6855 6919 7666 7033 7032 7031 36671 24448 37816 25841 923 1548 1046 11142 5897 5896 5895 27234 37402 36012 25842 7635 4 1591 6392 38067 1608 32366 32364 32365 6404 25843 6393 7746 8 1592 37824 38068 6414 37597 1617 37684 25844 6 7745 6394 9192 38069 17905 6408 38070 20893 20894 25845 7 1589 7747 7000 1613 37442 38071 7018 37093 37436 25846 6998 7636 3 1590 37838 38072 7010 37557 1602 37710 25847 7633 7001 1 9190 37708 7004 38073 37575 38074 37667 25848 6395 2 9191 7634 6400 38075 37362 36924 37246 38076 25849 7744 9189 5 6999 37533 38077 38078 37381 7014 37529 25850 8756 7757 9163 11098 37980 35917 35923 27869 32531 35921 25851 8568 8567 9120 10968 37949 36930 37001 28412 28236 33556 25852 7639 7521 7522 8893 35287 38079 37466 31910 37605 36423 25853 7581 34 35 1099 35000 1724 37275 22170 1722 1723 25854 8452 8516 9162 11095 37929 37640 36880 31951 32529 16133 25855 25 24 1274 7589 1684 1683 1682 36314 36753 37508 25856 7486 7487 8800 7528 38080 37629 36897 36010 34613 37423 25857 946 947 858 11011 2473 5662 5660 34160 20321 26941 25858 7803 7495 7735 7496 36209 36207 35368 37925 37926 38081 25859 7484 7483 7533 8702 38082 35583 37158 36856 16795 35584 25860 202 46 47 7662 1767 1769 1768 19975 36590 36298 25861 8447 8538 9145 10899 37813 37298 37159 28504 23277 20178 25862 1573 106 107 6315 2004 2006 2005 17786 6652 6653 25863 7495 9144 7652 7494 36208 14616 36629 38083 38084 38085 25864 1140 1578 153 10998 2197 1677 2192 35307 37135 36389 25865 7467 7468 8780 7607 38086 37568 36425 36426 34364 37374 25866 8790 7803 9123 11166 37975 37195 37469 34696 23974 36439 25867 6250 6251 6317 7739 6429 6431 6430 36945 20325 37865 25868 6995 6852 6853 7555 7022 7024 7023 20115 36955 37862 25869 6247 6248 7628 6316 6420 37866 36951 6422 24720 6421 25870 6920 6853 6854 7627 7026 7028 7027 20418 37870 36954 25871 6250 6249 7667 6390 6425 38087 36953 6427 18022 6426 25872 6247 6246 6391 7556 6416 6418 6417 36952 24962 37861 25873 1537 82 83 6298 1908 1910 1909 27915 6580 6581 25874 12 11 198 7551 1632 1631 1630 38088 15076 36505 25875 1557 1015 1016 11035 6026 6023 6027 34671 33337 32565 25876 7508 8858 7509 7725 35321 37130 38089 35819 37131 14025 25877 1570 1019 1020 11141 6039 5166 6040 35173 32386 34430 25878 73 72 7682 1288 1873 37051 37156 1872 33623 1871 25879 8575 9169 8576 11161 36932 37444 37957 27002 20150 33054 25880 9155 8617 8962 11069 37353 37885 37461 33006 31505 26353 25881 1196 38 37 7571 1734 1736 1735 32006 37305 37180 25882 36 35 166 7545 1728 1727 1726 36961 33428 37161 25883 9180 7491 7542 7490 35969 35966 28211 36749 36752 38090 25884 7525 9179 7526 7653 36804 37778 38091 36806 37763 25934 25885 6856 6857 7738 6994 7037 37871 36672 7036 24346 7035 25886 19 18 1176 7629 1660 1659 1658 37392 34170 36680 25887 7473 7614 7474 8879 37451 36726 38092 37648 37055 31277 25888 11 10 1542 7559 1628 1627 1626 36577 31401 35845 25889 7670 46 45 1543 36578 1765 35546 20772 1763 1764 25890 23 22 1578 7587 1676 1675 1674 36838 36837 37923 25891 21 20 1588 7594 1668 1667 1666 37659 23105 38093 25892 7512 9182 7642 7511 38094 14653 38095 38096 38097 38098 25893 7510 7669 7509 9131 36059 37307 38099 36276 37129 31282 25894 9178 7472 7583 7471 36477 36475 36479 37742 37743 38100 25895 1583 69 70 7692 1859 1861 1860 18332 38101 38102 25896 9188 7469 7470 7549 36306 38103 37890 36305 37889 36307 25897 76 77 1579 7672 1889 1888 1887 36739 32328 36711 25898 40 39 1577 7565 1744 1743 1742 37320 37456 38104 25899 7676 75 74 1586 36528 1881 36157 26145 1879 1880 25900 7561 41 42 1580 36766 1752 36708 18962 1750 1751 25901 9183 7519 7518 7644 38105 38106 38107 18059 38108 38109 25902 1529 60 61 7645 1823 1825 1824 33394 36435 36983 25903 7723 63 62 1582 38110 1833 37514 27034 1831 1832 25904 8650 9149 8524 11061 37355 37836 37907 33137 28072 36701 25905 7488 7536 7489 9177 38111 36772 38112 38113 36596 22521 25906 7001 6858 1 9190 7007 7008 7004 37667 38074 37749 25907 6394 6286 6 9192 6411 6410 6408 20893 38070 38114 25908 1589 7 148 7000 1613 1616 1615 37436 7021 7018 25909 7458 9191 2 7634 37702 38075 38115 37703 38076 37246 25910 8 113 6393 1592 1621 6415 6414 1617 37597 1620 25911 9189 6892 5 6999 37694 7017 38077 37529 7014 7016 25912 7524 7523 9186 7647 38116 38117 37879 37903 25773 38118 25913 3 114 6998 1590 1606 7012 7010 1602 37557 1605 25914 4 79 1591 6392 1611 1610 1608 6404 32365 6406 25915 7746 44 8 1592 37769 1619 38068 37684 1617 1618 25916 9 4 1591 7635 1609 1608 1607 37772 32366 38067 25917 7493 7745 6 9192 37697 38069 38119 37698 38070 20894 25918 6249 6 7745 6394 6407 38069 38120 6409 17905 6408 25919 7635 6248 4 6392 37867 6403 38067 32364 6404 6405 25920 7746 8 6251 6393 38068 6412 37864 37824 6413 6414 25921 7636 43 3 1590 37711 1604 38072 37710 1602 1603 25922 1589 78 7 7747 1612 1614 1613 37442 38071 37840 25923 7636 3 6854 6998 38072 7011 37869 37838 7009 7010 25924 6857 7 7747 7000 7020 38071 37877 7019 37093 7018 25925 7744 5 6855 6999 38078 7015 37815 37381 7013 7014 25926 1 6852 7001 7633 7006 7005 7004 38073 37708 37863 25927 6246 2 6395 7634 6398 6400 6399 37859 36924 38076 25928 7527 9189 5 7744 37782 38077 38121 37783 38078 37533 25929 7492 7633 1 9190 37780 38073 38122 37781 38074 37575 25930 9191 6252 2 6395 37857 6401 38075 37362 6400 6402 25931 7772 10356 8624 8796 11559 29892 19067 11557 36239 11558 25932 8624 10356 7772 9505 29892 11559 19067 19066 11446 11580 25933 9014 11059 7887 7829 11202 22959 35376 11296 37447 11297 25934 7887 11059 9014 9860 22959 11202 35376 22958 11201 11203 25935 11182 1283 9477 10320 16875 11273 33183 17630 11333 11332 25936 11182 9477 1283 10125 33183 11273 16875 16874 11275 11274 25937 9913 831 1368 571 11226 4296 30995 11269 3206 4295 25938 9913 1368 831 9686 30995 4296 11226 11228 11223 30996 25939 10377 1405 9927 1161 12002 14795 18096 13294 14794 5160 25940 10377 9927 1405 9453 18096 14795 12002 12001 12000 22098 25941 10262 8331 9792 8330 12110 13793 16518 12550 30261 12551 25942 10262 9792 8331 9413 16518 13793 12110 12111 12112 14843 25943 10761 9355 10388 9518 17633 12257 13779 19965 21075 19963 25944 10761 10388 9355 9876 13779 12257 17633 13174 12254 12258 25945 11032 9612 10239 8279 11604 25378 29811 11602 25377 11599 25946 11032 10239 9612 9278 29811 25378 11604 12071 12070 33271 25947 10377 1237 10739 894 12195 13454 15960 12196 15958 5783 25948 10377 10739 1237 9270 15960 13454 12195 16134 13453 13455 25949 10130 10508 960 1463 11870 16178 14579 11868 5952 11869 25950 960 10508 10130 9369 16178 11870 14579 14578 12066 12068 25951 10322 282 1266 9350 11313 2546 15992 11314 11937 11312 25952 10322 1266 282 1492 15992 2546 11313 11523 2847 2848 25953 10066 8690 10282 8128 13859 13634 13460 15759 26634 15760 25954 10066 10282 8690 9440 13460 13634 13859 13860 13633 13635 25955 10921 9579 707 10103 16489 29054 12781 13882 13879 17394 25956 10921 707 9579 10393 12781 29054 16489 12782 16486 12779 25957 8606 10288 8173 8323 13603 14713 12135 13729 23869 13730 25958 8173 10288 8606 9390 14713 13603 12135 12133 12134 13604 25959 10734 10314 9720 469 29770 38123 23715 23714 23242 12501 25960 10734 9720 10314 9303 23715 38123 29770 26881 11893 14897 25961 1377 9720 10314 469 14896 38123 11894 3769 12501 23242 25962 1377 10314 9720 9303 11894 38123 14896 11466 14897 11893 25963 10361 8521 8574 8523 11818 29493 26772 11855 36712 11853 25964 10361 8574 8521 9739 26772 29493 11818 11820 11815 26771 25965 10468 10621 9547 10166 11851 28769 20406 12078 28970 12080 25966 9547 10621 10468 9703 28769 11851 20406 20404 11848 11852 25967 10669 296 1341 10369 14709 2919 12119 12121 12116 14708 25968 10669 1341 296 805 12119 2919 14709 23534 2885 2921 25969 10864 9626 9510 9829 11294 18918 26785 21689 20656 20657 25970 10864 9510 9626 10039 26785 18918 11294 11293 11290 18920 25971 10448 10142 699 700 12664 18136 17191 12662 4555 12659 25972 10448 699 10142 9446 17191 18136 12664 13127 13125 18133 25973 10536 8936 8302 8656 13560 13141 15877 29882 29880 21432 25974 10536 8302 8936 9263 15877 13141 13560 13559 13142 13143 25975 10006 10553 10467 9320 11809 19108 21179 12489 23940 12491 25976 10467 10553 10006 342 19108 11809 21179 19106 11889 11890 25977 10397 8967 9796 7944 12905 12203 18160 14129 25028 14128 25978 10397 9796 8967 9295 18160 12203 12905 12906 12666 12667 25979 395 10433 10177 1339 12362 21379 16260 3371 24115 15291 25980 10177 10433 395 9315 21379 12362 16260 16259 12360 12363 25981 10315 7831 10395 7833 11208 15901 11521 14830 15137 14829 25982 10315 10395 7831 9345 11521 15901 11208 12057 12055 14928 25983 10465 8686 10706 9342 12442 12084 28965 12443 12086 12081 25984 10465 10706 8686 8687 28965 12084 12442 15508 15506 26573 25985 10816 8083 8080 8759 14601 13223 15980 16198 32777 16196 25986 10816 8080 8083 9274 15980 13223 14601 14600 13221 13222 25987 10229 10407 1351 460 13439 11565 13359 13437 3739 13438 25988 1351 10407 10229 9411 11565 13439 13359 11317 13360 11564 25989 9927 1405 9822 746 14795 14532 21940 14793 21145 5161 25990 9927 9822 1405 9453 21940 14532 14795 22098 12000 14531 25991 8289 10424 8929 9306 16603 38124 12698 12699 12700 15272 25992 8289 8929 10424 8405 12698 38124 16603 36534 13010 27827 25993 9966 8929 10424 9306 16887 38124 13011 15270 15272 12700 25994 9966 10424 8929 8405 13011 38124 16887 13007 27827 13010 25995 10129 10534 687 9230 12435 17447 13851 13363 13850 13364 25996 687 10534 10129 692 17447 12435 13851 4267 12430 12433 25997 10485 10143 1340 9405 38125 15401 14491 14490 14489 15400 25998 10485 1340 10143 474 14491 15401 38125 20027 27824 3809 25999 10453 8674 10823 9392 12869 15312 24992 12870 15314 12866 26000 10453 10823 8674 8439 24992 15312 12869 14723 14721 24991 26001 10172 10525 1499 9203 11989 15255 14607 13726 14608 13727 26002 1499 10525 10172 710 15255 11989 14607 4958 11988 11990 26003 10439 1324 1322 9402 14783 5036 16383 14784 14122 14123 26004 10439 1322 1324 719 16383 5036 14783 15034 4656 5035 26005 8606 10328 8148 8173 12137 35824 34434 12135 37119 12136 26006 8148 10328 8606 9786 35824 12137 34434 34404 12176 12177 26007 10698 8363 8927 8973 12585 35408 24224 14121 37287 14119 26008 10698 8927 8363 9921 24224 35408 12585 12587 12582 23431 26009 10118 10679 557 813 20005 17299 13531 20003 4222 20004 26010 557 10679 10118 9262 17299 20005 13531 13530 13532 17301 26011 10230 10663 8454 9437 16956 16742 16656 16657 14154 15896 26012 10579 10015 9709 939 18452 17591 13922 16417 16416 18449 26013 10579 9709 10015 9481 13922 17591 18452 20280 21259 22652 26014 10838 389 10305 388 14104 38126 20392 14615 34041 3363 26015 10838 10305 389 9700 20392 38126 14104 12809 14103 20388 26016 392 10305 389 388 30896 38126 3377 3378 3363 34041 26017 392 389 10305 9700 3377 38126 30896 30897 20388 14103 26018 10612 9499 290 9950 15170 16200 13723 15432 16202 15431 26019 10612 290 9499 10199 13723 16200 15170 13513 15169 13722 26020 1010 10826 9377 625 20235 13523 11764 4564 11765 13521 26021 9377 10826 1010 9993 13523 20235 11764 15722 15723 22261 26022 10452 10098 8465 8464 13762 13400 12106 12105 12102 13758 26023 10452 8465 10098 9343 12106 13400 13762 14925 13401 13402 26024 11020 9321 10625 10221 13710 22954 18057 13711 18054 13709 26025 11020 10625 9321 9992 18057 22954 13710 14012 14010 20832 26026 10479 9234 804 9706 21774 12062 24268 15854 16216 16217 26027 10479 804 9234 9845 24268 12062 21774 21773 12065 12064 26028 10618 10377 1237 9270 18100 12195 17296 17297 13453 16134 26029 10618 1237 10377 1366 17296 12195 18100 18099 12197 4777 26030 10459 8821 9142 9420 15415 13875 17776 15416 13873 13874 26031 10459 9142 8821 9171 17776 13875 15415 30564 38127 30563 26032 10324 1477 1051 1533 13029 5944 21623 13027 6016 2277 26033 10324 1051 1477 9424 21623 5944 13029 13912 13911 16343 26034 10205 10358 8660 7810 15285 11928 38128 15284 27286 15286 26035 8660 10358 10205 9324 11928 15285 38128 11212 16010 11930 26036 8660 9045 10205 7810 11211 17684 38128 27286 15284 35040 26037 10205 9045 8660 9324 17684 11211 38128 16010 11212 11213 26038 8936 10536 9688 8656 13560 16477 21435 21432 21436 29882 26039 9688 10536 8936 10075 16477 13560 21435 20927 13558 13561 26040 10939 9721 9325 10148 14894 30759 26246 14895 28678 14891 26041 10939 9325 9721 10195 26246 30759 14894 14931 14929 30806 26042 10930 9506 9920 9329 15230 26406 32671 15228 26407 13900 26043 10930 9920 9506 10613 32671 26406 15230 15482 15480 30115 26044 584 10280 583 1412 12969 18353 4263 4352 4353 15309 26045 583 10280 584 9421 18353 12969 4263 14831 12968 12970 26046 10255 6941 208 6898 16551 14071 24812 17546 34648 7257 26047 10255 208 6941 10155 24812 14071 16551 14842 14074 14073 26048 10499 198 1520 9541 15078 2435 29134 15079 29135 15075 26049 10499 1520 198 1221 29134 2435 15078 16138 1637 2434 26050 10637 9875 10692 1309 14804 15453 19361 14802 19362 14799 26051 10637 10692 9875 9297 19361 15453 14804 15458 15456 32756 26052 9691 10875 9654 780 19011 16292 20980 19010 16288 16290 26053 9654 10875 9691 9284 16292 19011 20980 20809 22525 22526 26054 10282 8633 8128 9021 13263 37413 26634 13261 37463 13259 26055 10282 8128 8633 10066 26634 37413 13263 13460 13399 15759 26056 7914 11013 10058 7913 17113 19885 15061 17116 29215 17117 26057 10058 11013 7914 10436 19885 17113 15061 15063 15062 17114 26058 7871 9987 8793 7867 11953 16713 32696 12206 36077 12207 26059 8793 9987 7871 9687 16713 11953 32696 26743 11951 11954 26060 10368 8765 10108 9010 32222 21578 14220 14219 13315 21577 26061 10368 10108 8765 9820 14220 21578 32222 15758 26885 15756 26062 10387 10886 10159 9314 12839 30661 17709 13041 28368 13042 26063 10159 10886 10387 9517 30661 12839 17709 20559 13303 13304 26064 1239 10380 1512 1593 19047 19337 6230 6232 6233 32745 26065 1512 10380 1239 9205 19337 19047 6230 14960 15131 19048 26066 10682 9389 8263 9701 31111 11377 34454 21747 11381 11380 26067 10682 8263 9389 10350 34454 11377 31111 20703 13297 13296 26068 10540 9211 10256 10004 16296 17903 24914 16428 17904 16427 26069 10540 10256 9211 9479 24914 17903 16296 16298 16293 19622 26070 10099 10639 10078 9299 14875 15307 21544 15372 24437 15373 26071 10078 10639 10099 8160 15307 14875 21544 23054 14874 14876 26072 9990 10650 10306 8054 17188 20348 11968 17186 20345 17187 26073 10306 10650 9990 9282 20348 17188 11968 32234 17514 17515 26074 10663 8760 8454 9166 16954 34719 16742 18357 30003 18356 26075 10663 8454 8760 10230 16742 34719 16954 16956 16951 16656 26076 9687 10780 10660 8898 17144 30177 38129 17142 25678 17143 26077 10660 10780 9687 9242 30177 17144 38129 30372 17900 17901 26078 10660 9637 9687 8898 14638 14200 38129 25678 17142 20966 26079 9687 9637 10660 9242 14200 14638 38129 17900 30372 30371 26080 9772 10732 10446 8267 16727 18986 22595 16725 21368 16726 26081 10446 10732 9772 9371 18986 16727 22595 31108 16800 16801 26082 1345 10403 856 9448 20381 38130 5652 19582 19583 17691 26083 1345 856 10403 1596 5652 38130 20381 5654 15832 5653 26084 10312 856 10403 9448 24651 38130 15833 17689 17691 19583 26085 10312 10403 856 1596 15833 38130 24651 15830 5653 15832 26086 10218 8399 8398 8400 15104 29716 18806 16522 36551 16521 26087 10218 8398 8399 9663 18806 29716 15104 12192 14360 18804 26088 10911 1111 10140 9879 36480 14182 13472 13518 14183 14184 26089 10911 10140 1111 1382 13472 14182 36480 26890 6138 18616 26090 10172 10691 9714 714 17001 27554 15441 16998 20595 17000 26091 9714 10691 10172 9414 27554 17001 15441 30566 18954 14179 26092 10217 801 10653 905 15227 19986 29001 17861 33510 5412 26093 10217 10653 801 9466 29001 19986 15227 15226 12558 19987 26094 9950 10801 10669 1086 16819 31233 33328 16817 31230 16818 26095 10669 10801 9950 9444 31233 16819 33328 31046 16944 16945 26096 10143 1407 744 1120 11505 5153 23906 13643 5151 5152 26097 10143 744 1407 9668 23906 5153 11505 11504 11503 23905 26098 9869 10661 9809 8355 16969 14298 17976 16968 14293 14296 26099 9809 10661 9869 9305 14298 16969 17976 21331 17204 17203 26100 10318 10895 10896 8314 19620 19881 22618 19618 19880 19619 26101 10896 10895 10318 9427 19881 19620 22618 27140 26855 26857 26102 10444 11136 8255 9391 18202 13588 38131 18785 12171 13589 26103 8255 11136 10444 8743 13588 18202 38131 23303 18199 18203 26104 8255 10223 10444 9391 12173 29306 38131 12171 18785 12172 26105 10444 10223 8255 8743 29306 12173 38131 18199 23303 26346 26106 10133 8502 9099 9958 14869 37370 15177 14870 15178 14868 26107 10133 9099 8502 9057 15177 37370 14869 15275 15273 35026 26108 9647 987 1343 673 22791 4806 16212 20393 4797 4805 26109 9647 1343 987 10917 16212 4806 22791 16213 22792 16214 26110 10943 1494 9769 1353 16938 22933 23598 18802 32512 2849 26111 10943 9769 1494 9695 23598 22933 16938 16940 16935 12044 26112 474 10569 10485 9581 21468 38132 20027 20026 20028 21470 26113 474 10485 10569 10143 20027 38132 21468 27824 28953 38125 26114 9405 10485 10569 9581 14490 38132 27955 20940 21470 20028 26115 9405 10569 10485 10143 27955 38132 14490 15400 38125 28953 26116 1221 7551 12 198 16137 38088 1635 1637 1630 15076 26117 1221 12 7551 7619 1635 38088 16137 18526 18525 38051 26118 10615 10835 8369 8909 17467 30763 24472 17465 24470 17466 26119 8369 10835 10615 9536 30763 17467 24472 29292 17737 17739 26120 10762 11110 10082 9235 17437 36367 32130 16557 30475 28314 26121 10082 11110 10762 10649 36367 17437 32130 17420 17434 17438 26122 10229 460 462 9824 13437 3737 17864 13436 17863 13435 26123 10229 462 460 1351 17864 3737 13437 13359 3739 3740 26124 10086 708 573 709 28971 4302 11298 11406 4304 4305 26125 10086 573 708 9629 11298 4302 28971 11525 16381 11524 26126 11031 9286 10105 10182 16491 13081 34282 14078 34371 14933 26127 11031 10105 9286 9540 34282 13081 16491 16700 16698 32165 26128 10668 9933 10948 9424 17891 22518 38133 24542 24088 31612 26129 10948 9933 10668 9135 22518 17891 38133 26271 21811 35488 26130 10948 10472 10668 9424 26212 21810 38133 24088 24542 26136 26131 10668 10472 10948 9135 21810 26212 38133 21811 26271 21808 26132 10550 260 234 9590 12573 2599 30766 12574 32261 12572 26133 10550 234 260 232 30766 2599 12573 13431 2600 2598 26134 10985 8269 9889 9003 17961 20363 27999 18909 33534 18908 26135 10985 9889 8269 9653 27999 20363 17961 17963 17254 18208 26136 10944 8916 8107 10040 15011 36636 29942 15012 29941 15010 26137 10944 8107 8916 8098 29942 36636 15011 17503 17501 37746 26138 10895 7753 9698 8533 20500 11473 30014 24353 20962 20960 26139 10895 9698 7753 9495 30014 11473 20500 20499 11472 11474 26140 10969 9725 11105 1294 14449 33431 38134 19238 35124 35123 26141 11105 9725 10969 9649 33431 14449 38134 32914 15100 28403 26142 11105 697 10969 1294 33070 18001 38134 35124 19238 3726 26143 10969 697 11105 9649 18001 33070 38134 15100 32914 18000 26144 10450 10289 10825 9443 18824 26417 27652 20018 20525 20016 26145 10450 10825 10289 695 27652 26417 18824 18823 18820 26418 26146 10133 7914 10058 7917 19457 15061 15851 19566 23728 19564 26147 10133 10058 7914 9658 15851 15061 19457 16500 15059 15060 26148 10273 334 1068 9945 13072 3109 33102 13071 33103 13070 26149 10273 1068 334 1069 33102 3109 13072 15602 3086 3111 26150 10190 8081 10816 8080 18863 27055 15981 13225 15980 21939 26151 10190 10816 8081 9609 15981 27055 18863 18034 18861 23524 26152 9983 1515 9480 9832 15768 22780 24339 11997 23267 15767 26153 9983 9480 1515 925 24339 22780 15768 15879 5899 22781 26154 750 10864 9626 752 21688 11294 20535 5177 11289 11292 26155 9626 10864 750 9829 11294 21688 20535 20657 21686 21689 26156 11074 521 9484 520 24544 21913 20485 20484 20483 3157 26157 11074 9484 521 10346 20485 21913 24544 15776 25308 25751 26158 10421 8024 8030 8025 16434 37284 16511 16960 36514 16958 26159 10421 8030 8024 9743 16511 37284 16434 14953 16433 13972 26160 10579 192 1544 938 13921 2403 17880 16208 2404 2402 26161 10579 1544 192 10456 17880 2403 13921 13923 13918 17879 26162 10649 10762 9406 9925 17434 32131 17056 17433 20852 17435 26163 9406 10762 10649 10082 32131 17434 17056 17207 17420 32130 26164 10598 10403 10258 9448 19094 31070 21275 20620 25977 17691 26165 10598 10258 10403 9205 21275 31070 19094 19093 14452 13479 26166 11031 10292 546 9540 14080 18046 26451 16700 18045 16699 26167 11031 546 10292 447 26451 18046 14080 14079 14076 3672 26168 10417 853 9672 10408 18012 25387 23901 18477 23899 18476 26169 10417 9672 853 1536 23901 25387 18012 18777 5642 25388 26170 11083 11015 10042 480 22134 24106 29774 22132 29773 22130 26171 11083 10042 11015 9563 29774 24106 22134 23396 23394 27079 26172 10139 727 725 9722 13000 5063 16690 13311 16689 13310 26173 10139 725 727 1074 16690 5063 13000 13002 5064 5065 26174 10383 8461 8284 9770 15613 37285 33879 15614 33880 13148 26175 10383 8284 8461 8939 33879 37285 15613 16529 16527 36145 26176 10353 10933 10246 8296 14592 23281 15965 14590 15964 14591 26177 10246 10933 10353 9443 23281 14592 15965 18558 15246 15248 26178 10848 8015 9669 10474 15576 38135 23478 15575 26875 15574 26179 10848 9669 8015 8016 23478 38135 15576 18588 18586 34701 26180 8664 9669 8015 10474 26874 38135 37089 26876 15574 26875 26181 8664 8015 9669 8016 37089 38135 26874 34698 34701 18586 26182 11102 9943 9255 10098 16537 22317 33763 16538 30755 16534 26183 11102 9255 9943 9821 33763 22317 16537 17783 17181 22318 26184 10578 1428 9419 915 23797 14496 16238 16237 14497 5862 26185 10578 9419 1428 10168 16238 14496 23797 24384 16750 16751 26186 10800 149 1517 1165 16151 2170 27463 20444 2171 1693 26187 10800 1517 149 9548 27463 2170 16151 16153 16148 27462 26188 11017 7731 10189 10272 18518 31004 30211 18519 22276 18515 26189 11017 10189 7731 9675 30211 31004 18518 19127 19125 34961 26190 10472 10668 9854 9081 21810 16662 22568 21809 20046 20049 26191 9854 10668 10472 9424 16662 21810 22568 18227 26136 24542 26192 11052 10579 934 846 19470 38136 23160 20456 5131 20454 26193 11052 934 10579 9430 23160 38136 19470 19469 17881 19479 26194 1544 934 10579 846 5608 38136 17880 5607 20454 5131 26195 1544 10579 934 9430 17880 38136 5608 17877 19479 17881 26196 10445 10544 11034 8399 14364 18892 38137 14362 18891 14363 26197 11034 10544 10445 9466 18892 14364 38137 29003 15930 15932 26198 11034 10260 10445 8399 19240 18902 38137 18891 14362 18901 26199 10445 10260 11034 9466 18902 19240 38137 15930 29003 34642 26200 797 11020 10625 826 35517 18057 20831 4964 18053 18056 26201 10625 11020 797 9992 18057 35517 20831 20832 20833 14012 26202 9872 10385 9291 9700 20930 28238 13449 12021 16833 20929 26203 9291 10385 9872 9752 28238 20930 13449 21192 20931 19082 26204 9851 8688 10706 9625 22176 26574 12085 14670 18194 22175 26205 9851 10706 8688 8686 12085 26574 22176 12083 23045 12084 26206 10415 8865 10181 9859 29053 20329 19147 17273 20330 20331 26207 10415 10181 8865 7840 19147 20329 29053 29594 28054 28055 26208 10655 792 10849 790 21738 35810 19157 19152 19155 5364 26209 10655 10849 792 10112 19157 35810 21738 15369 22274 27792 26210 1424 10655 10981 666 21736 14196 34868 4770 14067 14195 26211 10981 10655 1424 10112 14196 21736 34868 15370 22273 15369 26212 10380 1239 1516 1593 19047 6150 21235 32745 5908 6232 26213 10380 1516 1239 10226 21235 6150 19047 19049 15132 21232 26214 8614 10252 8316 8615 15548 25429 32812 15547 37096 14742 26215 8316 10252 8614 9703 25429 15548 32812 27262 16056 16055 26216 9292 10681 9780 9478 19867 33482 27223 20428 27222 20430 26217 9292 9780 10681 10932 27223 33482 19867 20932 20934 30338 26218 10195 677 679 678 21448 4822 17151 21453 4823 4817 26219 10195 679 677 9721 17151 4822 21448 14929 21449 17150 26220 10424 8168 8289 8404 20414 37406 16603 20627 36535 20626 26221 10424 8289 8168 9998 16603 37406 20414 16604 13412 16407 26222 10762 9571 11110 9235 27031 17967 17437 16557 28314 26577 26223 10762 11110 9571 9925 17437 17967 27031 17435 17966 17436 26224 10732 8545 8458 8548 18984 37290 21370 19769 37692 19767 26225 10732 8458 8545 10446 21370 37290 18984 18986 18981 21369 26226 11012 10996 10491 9491 22121 18493 38138 19874 30420 28180 26227 10491 10996 11012 10005 18493 22121 38138 18490 15164 18492 26228 10491 9336 11012 9491 20078 16811 38138 30420 19874 19873 26229 11012 9336 10491 10005 16811 20078 38138 15164 18490 16268 26230 10499 7551 7611 7619 15077 33900 27929 18527 37084 18525 26231 10499 7611 7551 9541 27929 33900 15077 15079 15074 22035 26232 8922 10756 10880 10137 21666 38139 23293 23292 23294 23509 26233 8922 10880 10756 11126 23293 38139 21666 21670 21669 36168 26234 10232 8521 8520 9853 13644 37224 26392 14705 29750 14704 26235 10232 8520 8521 8522 26392 37224 13644 13646 11944 37124 26236 8888 10465 8685 7966 18471 12441 37325 20112 37006 20111 26237 8685 10465 8888 10024 12441 18471 37325 12669 18472 16179 26238 10193 688 806 807 20305 4275 34572 20730 4879 4880 26239 10193 806 688 9811 34572 4275 20305 20306 20307 34855 26240 10476 9524 10584 9432 23398 23397 16614 17652 12847 23766 26241 10476 10584 9524 10257 16614 23397 23398 13933 17554 16615 26242 10499 1515 9480 924 34552 22780 33569 33570 22779 2281 26243 10499 9480 1515 9832 33569 22780 34552 34551 15767 23267 26244 10855 1232 1559 9574 21027 2349 33310 21028 32025 21026 26245 10855 1559 1232 182 33310 2349 21027 21328 1983 2348 26246 10561 10504 10940 8518 19781 18095 31128 22410 20713 20712 26247 10561 10940 10504 9470 31128 18095 19781 19780 18090 18093 26248 10573 853 1155 1565 18015 5026 20755 18601 5639 5640 26249 10573 1155 853 10408 20755 5026 18015 19426 18476 20754 26250 6948 11099 6945 6913 22049 21230 7386 7139 7385 22246 26251 6945 11099 6948 10074 21230 22049 7386 22314 22046 22050 26252 10678 9584 9803 9254 19849 26864 16684 16482 14386 20129 26253 10678 9803 9584 9963 16684 26864 19849 15601 19848 21699 26254 11196 702 11031 810 25336 32086 16707 16706 16705 4650 26255 11196 11031 702 10167 16707 32086 25336 18541 26448 18539 26256 10958 8538 10472 8539 23788 20177 22570 25767 26723 25766 26257 10958 10472 8538 9481 22570 20177 23788 23767 20175 20176 26258 10344 1555 10599 1554 28824 23694 12335 15253 15254 6038 26259 10344 10599 1555 9554 12335 23694 28824 27361 25465 30531 26260 11033 9690 9380 9937 18759 30392 26088 18852 24946 18851 26261 11033 9380 9690 10856 26088 30392 18759 18758 18755 26567 26262 10341 11186 9377 9827 18656 33293 30109 18652 28109 18655 26263 9377 11186 10341 10037 33293 18656 30109 28206 21095 21096 26264 10523 465 467 1049 18152 3758 22726 20168 3764 3765 26265 10523 467 465 10147 22726 3758 18152 18153 18154 17227 26266 8858 7641 10565 7725 35323 14437 14026 14025 13327 14436 26267 10565 7641 8858 7780 14437 35323 14026 23069 28559 23067 26268 10455 1427 350 1449 11812 3174 22511 12031 3190 3191 26269 10455 350 1427 10152 22511 3174 11812 14776 13540 15729 26270 11155 1333 9644 9757 36384 15969 29560 25991 15967 15968 26271 11155 9644 1333 503 29560 15969 36384 32515 3948 17256 26272 9887 10662 9349 9652 24987 12060 29611 24985 30506 24986 26273 9349 10662 9887 9765 12060 24987 29611 15081 25467 15083 26274 10645 9165 10378 8453 19772 25144 18040 21093 25098 21092 26275 10645 10378 9165 9635 18040 25144 19772 19774 19770 26174 26276 9869 10647 9219 9751 25009 31448 17977 19911 19912 17322 26277 9219 10647 9869 9640 31448 25009 17977 20978 18206 25010 26278 10562 10686 946 9511 21313 32809 36462 22007 32808 21186 26279 946 10686 10562 1511 32809 21313 36462 2477 21310 21314 26280 11101 1135 9871 1134 25294 16281 23185 23184 23183 6158 26281 11101 9871 1135 10158 23185 16281 25294 24484 16282 14767 26282 11033 8720 8785 8110 37454 26388 18757 21457 21455 37809 26283 11033 8785 8720 10856 18757 26388 37454 18758 26390 18756 26284 9889 10618 9374 9773 25138 13563 24897 20561 14158 14159 26285 9374 10618 9889 9653 13563 25138 24897 24090 18208 25139 26286 10686 6995 7002 6920 20119 7366 27219 20419 7416 7029 26287 10686 7002 6995 10657 27219 7366 20119 22471 22469 27217 26288 10087 9719 10173 9290 24835 18101 38140 16786 31014 30858 26289 10173 9719 10087 10745 18101 24835 38140 22368 22624 22367 26290 10173 9699 10087 9290 22250 16370 38140 31014 16786 16787 26291 10087 9699 10173 10745 16370 22250 38140 22624 22368 20460 26292 9877 10606 9319 9754 25170 24764 18987 18259 19587 17281 26293 9319 10606 9877 9646 24764 25170 18987 18988 15004 25171 26294 10246 8905 9083 8904 23315 35237 16864 36696 37269 37542 26295 10246 9083 8905 9790 16864 35237 23315 15963 18171 16862 26296 8550 10702 8389 8549 19638 16106 37200 21363 37734 21364 26297 8389 10702 8550 10161 16106 19638 37200 16105 19637 14321 26298 6301 194 111 6330 19810 2021 6668 6669 6664 21035 26299 6301 111 194 1326 6668 2021 19810 19811 2027 2024 26300 11169 7822 9883 8871 21253 24326 33565 27319 33516 27317 26301 11169 9883 7822 10308 33565 24326 21253 21255 18678 14665 26302 7642 7753 7511 9182 14654 38015 38097 14653 38098 14655 26303 7511 7753 7642 7703 38015 14654 38097 38014 14848 11470 26304 10698 9301 8362 9851 18859 11688 26624 19581 12641 12643 26305 10698 8362 9301 9943 26624 11688 18859 17183 14136 14137 26306 10282 8521 8519 8860 17917 37223 32607 18659 37389 18658 26307 10282 8519 8521 9853 32607 37223 17917 17918 14704 28035 26308 9307 10929 8923 9782 30610 35144 15617 16782 16783 30609 26309 8923 10929 9307 10379 35144 30610 15617 16098 16099 30791 26310 9868 11092 10944 8099 19853 38141 15013 36467 36474 24315 26311 9868 10944 11092 9731 15013 38141 19853 22446 23920 26532 26312 8095 10944 11092 8099 33749 38141 23921 24314 24315 36474 26313 8095 11092 10944 9731 23921 38141 33749 23917 26532 23920 26314 9960 10977 10552 8901 25277 38142 13887 13884 13888 36254 26315 7927 10552 10977 8901 16738 38142 36036 16737 36254 13888 26316 7927 10977 10552 9717 36036 38142 16738 31871 29548 26491 26317 10569 10033 9831 9460 24803 11958 27956 16206 12225 12224 26318 10569 9831 10033 9256 27956 11958 24803 22923 24834 28219 26319 10099 9940 10233 9467 13300 20686 20816 13274 20373 13298 26320 10099 10233 9940 11032 20816 20686 13300 25425 20689 20688 26321 10855 6348 6346 6299 21029 6735 29621 21327 6734 6636 26322 10855 6346 6348 9574 29621 6735 21029 21028 21025 27720 26323 9707 10639 9706 9299 24399 25685 12467 17603 17604 15373 26324 9706 10639 9707 9498 25685 24399 12467 21402 21401 15305 26325 11071 1404 9823 9895 35980 14374 25365 25367 14375 14376 26326 11071 9823 1404 244 25365 14374 35980 35344 2649 20222 26327 9974 10756 10293 9469 26010 23678 16453 22908 27208 26245 26328 10293 10756 9974 9224 23678 26010 16453 12911 11308 26011 26329 10436 9899 11109 9283 18400 30254 33819 18683 30253 12795 26330 10436 11109 9899 9519 33819 30254 18400 21079 21078 31235 26331 9600 10820 9553 9386 29759 16141 19042 19043 18532 15975 26332 9553 10820 9600 10250 16141 29759 19042 21212 21211 30083 26333 1427 9961 1374 940 12635 35312 3996 5940 5613 12637 26334 1374 9961 1427 10628 35312 12635 3996 34321 16278 16277 26335 10961 856 1331 10542 19584 5312 35427 20042 35426 20041 26336 10961 1331 856 1345 35427 5312 19584 19586 5652 4431 26337 9958 10799 10133 9509 25141 30714 14870 21761 23913 25160 26338 10133 10799 9958 9379 30714 25141 14870 15800 15799 18866 26339 10699 7907 11014 7901 25096 27488 36524 25228 37028 25227 26340 10699 11014 7907 9500 36524 27488 25096 14118 25095 27489 26341 10590 7647 7677 9559 26505 34827 31980 26506 27923 25774 26342 10590 7677 7647 7679 31980 34827 26505 27204 27202 35813 26343 7898 10220 7894 7899 23077 35463 37254 23645 37386 23646 26344 7894 10220 7898 9922 35463 23077 37254 36409 21853 23076 26345 11007 1264 10640 602 26001 24626 33787 31102 24949 3201 26346 11007 10640 1264 9492 33787 24626 26001 20608 25999 22423 26347 10975 9571 10057 9605 26950 26578 16781 16780 11493 26679 26348 10975 10057 9571 9925 16781 26578 26950 17594 17966 17593 26349 10068 9928 10532 9471 14016 16583 29291 18816 16577 16582 26350 10068 10532 9928 11150 29291 16583 14016 32957 21919 21921 26351 10486 1210 1361 1483 11253 5692 23945 22633 3046 6206 26352 10486 1361 1210 10641 23945 5692 11253 11254 11239 26479 26353 10634 10407 10238 9513 22861 20109 24515 23113 22640 22369 26354 10634 10238 10407 9411 24515 20109 22861 13810 11564 28821 26355 8208 11136 10638 8887 27080 30335 24456 28494 28496 36544 26356 10638 11136 8208 9494 30335 27080 24456 24457 24458 27081 26357 10082 8735 10615 9733 27411 30141 17209 26914 19723 27410 26358 10082 10615 8735 8096 17209 30141 27411 17208 28634 17053 26359 10998 7557 7584 9608 26754 29210 24713 24712 13179 26751 26360 10998 7584 7557 7587 24713 29210 26754 35734 36839 35733 26361 10571 8569 8571 8570 18382 36509 33537 18383 37360 18381 26362 10571 8571 8569 9627 33537 36509 18382 19819 21474 33536 26363 10323 252 9503 253 31071 24881 25763 25091 24880 2689 26364 10323 9503 252 10080 25763 24881 31071 16204 29240 26097 26365 11131 7940 10652 9784 25866 30246 32040 25867 30990 25863 26366 11131 10652 7940 7950 32040 30246 25866 26662 26660 32712 26367 10948 8868 9135 7769 22516 36215 26271 26272 26269 26888 26368 10948 9135 8868 9933 26271 36215 22516 22518 22513 35488 26369 11146 7888 9764 10185 24387 31562 30303 22879 17046 24386 26370 11146 9764 7888 8892 30303 31562 24387 26055 26053 32509 26371 9078 11047 8186 8837 22217 34273 36126 23623 37831 23624 26372 8186 11047 9078 10116 34273 22217 36126 31947 22216 22218 26373 11092 8100 10094 8101 36469 13228 19855 33279 29486 29485 26374 11092 10094 8100 9868 19855 13228 36469 19853 11482 15127 26375 10657 7562 9511 10412 26821 19698 27150 30210 25569 25568 26376 10657 9511 7562 7638 27150 19698 26821 24581 26818 26637 26377 10673 9327 11107 9651 26137 33767 33062 25483 33063 12803 26378 10673 11107 9327 9909 33062 33767 26137 15029 20680 27068 26379 10684 9977 9387 9978 25681 27048 16242 16470 20266 25581 26380 10684 9387 9977 9691 16242 27048 25681 25680 21709 29995 26381 11138 755 9642 10666 26103 32246 29852 25564 25450 26102 26382 11138 9642 755 621 29852 32246 26103 27011 4535 32247 26383 10988 8065 8064 8066 25611 24401 31362 26135 37650 26133 26384 10988 8064 8065 9598 31362 24401 25611 25610 13503 14980 26385 10282 11080 9739 9440 23633 29797 13636 13635 13632 23632 26386 9739 11080 10282 9551 29797 23633 13636 20629 23636 14686 26387 10666 9283 1142 9642 26226 11279 35455 25450 11277 11278 26388 10666 1142 9283 9899 35455 11279 26226 23418 12795 12794 26389 10516 10505 10963 9482 27195 23327 28737 23498 21932 24762 26390 10516 10963 10505 9323 28737 23327 27195 22863 23322 23325 26391 11154 754 9852 10528 26847 33784 32935 26848 32854 26846 26392 11154 9852 754 1217 32935 33784 26847 27110 5196 33782 26393 10263 8793 9987 7964 26746 16713 12131 12130 12129 16712 26394 10263 9987 8793 9687 12131 16713 26746 16942 26743 11954 26395 10989 10199 9499 9713 25032 15169 24798 24616 21890 26899 26396 10989 9499 10199 9340 24798 15169 25032 24797 13508 15168 26397 11140 9492 1264 10640 27454 25999 24630 24629 24626 22423 26398 11140 1264 9492 10141 24630 25999 27454 28677 27252 28555 26399 11016 10209 9492 10390 27230 22422 17931 19132 18934 24680 26400 11016 9492 10209 9947 17931 22422 27230 18104 27227 22983 26401 10809 9797 9523 10157 22976 28649 27327 21296 22128 23697 26402 10809 9523 9797 10422 27327 28649 22976 22975 11551 19321 26403 9704 8321 8309 8260 16111 37473 32127 18238 35270 18237 26404 9704 8309 8321 10235 32127 37473 16111 16112 16113 31577 26405 11174 10232 9843 9562 26617 27668 31078 26982 24029 26698 26406 11174 9843 10232 9394 31078 27668 26617 16506 13645 14807 26407 10627 9233 8042 9735 27342 13014 30180 22821 15668 15669 26408 10627 8042 9233 10050 30180 13014 27342 14218 14419 14420 26409 10664 8495 8494 8298 18183 35997 36249 20466 36959 20464 26410 10664 8494 8495 9817 36249 35997 18183 18182 13409 25918 26411 10863 7681 7674 7653 25936 35652 31526 25937 35840 25935 26412 10863 7674 7681 9627 31526 35652 25936 31527 34782 31525 26413 10181 8911 10997 9643 27941 17862 13671 20877 15112 17268 26414 10181 10997 8911 7842 13671 17862 27941 17022 28056 17024 26415 9486 9244 10442 9717 25274 29829 22605 26490 28478 26489 26416 10442 9244 9486 10672 29829 25274 22605 23151 21563 25370 26417 8241 9645 8938 8802 15947 15365 37459 18939 32250 18936 26418 8938 9645 8241 10215 15365 15947 37459 15646 15946 15647 26419 11104 8212 11048 8752 35620 29251 24959 25240 25239 36002 26420 11104 11048 8212 9746 24959 29251 35620 24957 29250 24955 26421 11103 499 9638 9747 35621 15802 27585 34196 15803 13702 26422 11103 9638 499 500 27585 15802 35621 33069 3928 17255 26423 10404 9201 9134 9907 27524 33256 21608 15867 19591 27523 26424 10404 9134 9201 8537 21608 33256 27524 21609 29244 21607 26425 10630 9038 8463 9798 23894 35985 14246 14550 14549 23893 26426 10630 8463 9038 8987 14246 35985 23894 24536 24534 37624 26427 11136 8208 8375 8887 27080 37820 29362 36544 36543 28494 26428 11136 8375 8208 10623 29362 37820 27080 27082 26766 29360 26429 10734 1049 9707 468 20169 38143 29769 28762 34369 3766 26430 10734 9707 1049 10523 29769 38143 20169 18157 20168 32776 26431 472 9707 1049 468 29720 38143 3781 3779 3766 34369 26432 472 1049 9707 10523 3781 38143 29720 33954 32776 20168 26433 383 10569 382 381 21469 21874 3342 3343 3338 29469 26434 382 10569 383 9581 21874 21469 3342 25148 20025 21470 26435 7707 10456 9709 7659 32781 13919 17039 21244 16403 16405 26436 9709 10456 7707 9793 13919 32781 17039 16752 17041 18778 26437 11066 10340 10510 9516 27740 23587 26428 27770 23674 23672 26438 11066 10510 10340 9265 26428 23587 27740 21615 11361 28658 26439 10494 10912 10059 9503 26028 18181 23090 23330 23328 25802 26440 10059 10912 10494 9275 18181 26028 23090 16300 12374 25549 26441 11041 227 228 226 28924 2567 17067 29434 2568 2563 26442 11041 228 227 10673 17067 2567 28924 17432 28922 17431 26443 10189 11061 9144 8650 31271 38144 14619 33254 34923 33137 26444 10189 9144 11061 9560 14619 38144 31271 14620 30894 14618 26445 9115 9144 11061 8650 17824 38144 36700 37354 33137 34923 26446 9115 11061 9144 9560 36700 38144 17824 17825 14618 30894 26447 11177 720 708 1450 17699 4732 28972 26554 4979 4980 26448 11177 708 720 9629 28972 4732 17699 17701 17696 16381 26449 11177 973 720 1450 25280 5039 17699 26554 4980 5041 26450 11177 720 973 9830 17699 5039 25280 17700 25279 17698 26451 860 11185 9887 1480 29212 35116 29886 5670 33532 29213 26452 9887 11185 860 10254 35116 29212 29886 28307 23473 25401 26453 10192 10623 9628 9494 27657 33600 11842 25701 27837 26765 26454 9628 10623 10192 9237 33600 27657 11842 11839 11843 27655 26455 10012 10505 10792 9557 23323 22150 30044 24774 33274 20105 26456 10792 10505 10012 9323 22150 23323 30044 14226 23324 23322 26457 1162 11192 779 1291 24452 26319 5315 5313 5314 24451 26458 779 11192 1162 10244 26319 24452 5315 28982 24509 24510 26459 10654 7953 11016 7949 32864 29692 19133 19128 19131 34444 26460 10654 11016 7953 9621 19133 29692 32864 19313 29691 17933 26461 11160 754 9852 1215 27630 33784 29128 29017 33783 5194 26462 11160 9852 754 10528 29128 33784 27630 27093 26846 32854 26463 10565 9127 9126 8755 24135 37814 15478 22621 37718 23416 26464 10565 9126 9127 10311 15478 37814 24135 16147 24133 14694 26465 10406 10551 9210 9901 29118 32721 28818 24426 29976 17366 26466 9210 10551 10406 9569 32721 29118 28818 31285 21682 26048 26467 11193 9385 10194 9609 13717 30623 33127 13718 30361 13714 26468 11193 10194 9385 10179 33127 30623 13717 14283 14281 33128 26469 11032 9647 10233 9278 30771 20815 20688 12071 20687 22762 26470 11032 10233 9647 10099 20688 20815 30771 25425 20813 20816 26471 10897 9198 9924 8781 26600 29978 22429 28624 28623 30480 26472 10897 9924 9198 10224 22429 29978 26600 22430 26597 14985 26473 11078 9934 9575 9249 29347 15203 30840 23687 30838 29349 26474 11078 9575 9934 9661 30840 15203 29347 29346 29345 27647 26475 9847 11132 10398 9368 27935 28079 26033 12179 26034 27934 26476 10398 11132 9847 10300 28079 27935 26033 24749 24948 21599 26477 11097 9556 10188 10246 28221 24895 19178 26445 26443 28846 26478 11097 10188 9556 9585 19178 24895 28221 19179 25502 13685 26479 10454 10857 9539 9962 26164 28605 23555 23556 14094 26163 26480 9539 10857 10454 9742 28605 26164 23555 12148 15736 25466 26481 7793 7644 7518 7729 24830 38108 38026 26651 38027 27804 26482 7518 7644 7793 9183 38108 24830 38026 38107 24831 18059 26483 10831 6334 173 6381 37277 29761 31112 31114 29964 6588 26484 10831 173 6334 10278 31112 29761 37277 32664 29764 29763 26485 11021 9632 9974 10168 31479 38145 18392 31726 34736 24443 26486 11021 9974 9632 9216 18392 38145 31479 26169 18926 22907 26487 9469 9974 9632 10168 22908 38145 18925 23414 24443 34736 26488 9469 9632 9974 9216 18925 38145 22908 18927 22907 18926 26489 512 10887 9803 412 37017 26152 22023 3499 26612 33667 26490 9803 10887 512 10287 26152 37017 22023 22588 22589 25200 26491 11176 6926 9512 6925 34723 22948 28336 35210 19208 7400 26492 11176 9512 6926 10356 28336 22948 34723 28337 22949 19235 26493 7652 9115 7494 9144 17823 38018 38084 14616 38085 17824 26494 7494 9115 7652 7737 38018 17823 38084 38019 20950 20949 26495 10212 9170 11114 10031 29844 36378 24954 29902 29648 29901 26496 10212 11114 9170 8619 24954 36378 29844 24952 29842 24953 26497 9947 10640 10209 9351 27767 22424 27227 28697 15173 28698 26498 10209 10640 9947 9492 22424 27767 27227 22422 22983 22423 26499 192 7692 69 1583 18331 38102 1856 1862 1859 18332 26500 69 7692 192 7659 38102 18331 1856 38008 16404 18377 26501 10857 9357 9088 9742 25334 12074 27642 25466 17411 17412 26502 10857 9088 9357 9982 27642 12074 25334 25333 13019 13018 26503 10532 8083 10190 9965 32189 13224 16576 14440 15039 15037 26504 10532 10190 8083 8082 16576 13224 32189 18942 26733 17872 26505 11083 9609 10042 9563 29387 21499 29774 23396 27079 25782 26506 11083 10042 9609 10194 29774 21499 29387 25532 30361 29772 26507 9945 10620 9783 9272 28547 27452 20714 24285 25368 22934 26508 9783 10620 9945 9490 27452 28547 20714 25223 19003 22333 26509 10882 9691 10097 10684 31019 31853 20147 31189 15232 25680 26510 10882 10097 9691 9284 20147 31853 31019 23911 22525 20811 26511 10334 10951 10525 9631 28302 33724 32999 22322 23987 28013 26512 10525 10951 10334 9495 33724 28302 32999 25929 27673 29009 26513 9487 9995 10437 10359 21416 16911 38146 19272 21041 17829 26514 10437 9995 9487 10392 16911 21416 38146 13136 22987 18718 26515 10437 9228 9487 10359 13134 21116 38146 21041 19272 18922 26516 9487 9228 10437 10392 21116 13134 38146 22987 13136 12591 26517 10762 1129 484 9655 33989 3859 11411 11410 11409 27351 26518 10762 484 1129 486 11411 3859 33989 17392 3860 3857 26519 10669 289 296 10302 35742 2882 14709 14710 14706 24332 26520 10669 296 289 805 14709 2882 35742 23534 2884 2885 26521 10212 9158 9267 8616 29639 38147 16064 16065 12814 30221 26522 10212 9267 9158 9842 16064 38147 29639 29641 29636 31674 26523 8615 9267 9158 8616 12813 38147 32841 12815 30221 12814 26524 8005 11062 8004 8006 29168 16983 27863 29286 18079 18081 26525 8004 11062 8005 10090 16983 29168 27863 17472 27865 17474 26526 11082 10295 9914 9428 17523 28686 32342 17521 29675 17518 26527 11082 9914 10295 10332 32342 28686 17523 19839 19837 28254 26528 10687 959 1469 1383 26815 5964 14172 26816 5965 2112 26529 10687 1469 959 9676 14172 5964 26815 18110 25128 16578 26530 10856 9829 10864 9510 30340 21689 26568 26784 26785 20656 26531 10856 10864 9829 9380 26568 21689 30340 26567 27263 15093 26532 6362 1187 96 6293 28727 1961 6623 6624 6619 21714 26533 6362 96 1187 151 6623 1961 28727 28728 1967 1964 26534 11150 9641 10532 9288 32311 20265 21921 21920 13210 22847 26535 11150 10532 9641 10068 21921 20265 32311 32957 14763 29291 26536 10440 6292 6340 10343 28196 6699 19728 17847 19729 28681 26537 10440 6340 6292 6341 19728 6699 28196 29396 6651 6700 26538 11102 8354 9640 8357 35798 16227 29683 33068 17262 17260 26539 11102 9640 8354 9869 29683 16227 35798 33764 18205 18206 26540 10620 7937 9904 9946 32404 12799 22334 27453 14494 14493 26541 10620 9904 7937 7934 22334 12799 32404 24782 29664 24781 26542 10425 10543 10096 9307 30999 29673 22789 15615 32119 30408 26543 10096 10543 10425 9491 29673 30999 22789 22043 28037 22483 26544 10730 6331 11096 10261 25257 35035 27136 23801 35034 25690 26545 10730 11096 6331 6298 27136 35035 25257 27916 6582 29505 26546 10970 8328 10740 9980 36465 35876 29955 23663 20558 33716 26547 10970 10740 8328 8559 29955 35876 36465 29956 35874 29954 26548 10553 10539 9904 9490 31062 24591 18405 19004 22330 23809 26549 10553 9904 10539 9320 18405 24591 31062 12491 31144 26419 26550 10774 10415 9973 9227 27615 18970 31067 27728 22441 12675 26551 10774 9973 10415 9535 31067 18970 27615 27614 17272 16929 26552 755 9642 1142 619 32246 11277 4536 4534 4525 18009 26553 755 1142 9642 10666 4536 11277 32246 26102 25450 35455 26554 10314 10805 10019 9303 11571 30488 29768 11893 26880 15839 26555 10019 10805 10314 9498 30488 11571 29768 15340 12671 12673 26556 10299 8574 11161 9739 30453 26773 25496 17953 26775 26771 26557 10299 11161 8574 8262 25496 26773 30453 26208 28327 26210 26558 10531 6289 6353 10175 25887 6686 20994 17276 20991 26541 26559 10531 6353 6289 6375 20994 6686 25887 27878 6618 6688 26560 8803 10648 9101 7775 28169 17943 35776 28167 34173 28168 26561 9101 10648 8803 9693 17943 28169 35776 15474 24595 17945 26562 10751 1406 10210 10721 33412 34221 21558 28816 28814 33567 26563 10751 10210 1406 279 21558 34221 33412 21556 2825 21554 26564 9912 7789 8552 8797 26702 37986 19649 26531 36585 26701 26565 9912 8552 7789 10812 19649 37986 26702 22661 27445 28537 26566 10908 1454 9833 9819 34795 12013 26620 26619 13332 13330 26567 10908 9833 1454 1435 26620 12013 34795 27776 2342 22300 26568 1028 11145 9678 1026 36125 32036 16719 4677 24933 37141 26569 9678 11145 1028 10051 32036 36125 16719 16741 16740 32977 26570 10522 8128 8122 8126 15761 37414 21522 21502 36382 21501 26571 10522 8122 8128 10066 21522 37414 15761 13863 15759 19255 26572 9167 10459 8821 9171 32630 15415 25289 32629 38127 30564 26573 8821 10459 9167 9673 15415 32630 25289 17319 22442 17321 26574 11098 6352 10524 6357 31301 28792 27868 27867 27076 6846 26575 11098 10524 6352 9508 27868 28792 31301 24877 18848 28793 26576 10616 8419 8420 8301 21490 34728 13065 23780 36028 23778 26577 10616 8420 8419 9708 13065 34728 21490 15021 21488 19383 26578 7628 10396 7637 7556 24723 28931 37520 24963 37874 24964 26579 7637 10396 7628 9664 28931 24723 37520 28930 28962 26108 26580 11030 9473 877 10267 34861 16053 31131 17601 26561 19601 26581 11030 877 9473 10409 31131 16053 34861 31132 19424 19423 26582 10520 8318 8348 8347 11913 37785 32822 12223 37680 12222 26583 10520 8348 8318 10230 32822 37785 11913 14577 14575 35548 26584 9275 10813 10494 10204 16316 38148 12374 13627 23091 17920 26585 9275 10494 10813 7858 12374 38148 16316 12372 16317 12373 26586 7856 10494 10813 10204 14947 38148 35830 33682 17920 23091 26587 7856 10813 10494 7858 35830 38148 14947 14945 12373 16317 26588 8187 10914 10862 8848 30913 33575 28059 33995 33776 33778 26589 10862 10914 8187 9515 33575 30913 28059 26789 23648 27451 26590 10504 9200 11061 10189 35259 33138 28073 35260 31271 33253 26591 10504 11061 9200 8649 28073 33138 35259 26591 33134 28738 26592 1439 11053 10273 1068 37088 33106 34554 6087 33102 33104 26593 10273 11053 1439 10854 33106 37088 34554 25816 34836 35957 26594 10718 10026 9433 10027 30147 21922 20720 20719 20716 30145 26595 10718 9433 10026 10680 20720 21922 30147 31653 20223 23007 26596 9065 11128 9972 9062 35615 26849 17479 29565 29566 32800 26597 9972 11128 9065 9880 26849 35615 17479 17480 17481 34291 26598 11028 8065 8068 9054 12917 35873 30500 12918 37977 11861 26599 11028 8068 8065 10237 30500 35873 12917 14373 13780 32668 26600 10696 7750 8557 8732 28587 35759 13555 28585 35513 28583 26601 10696 8557 7750 9692 13555 35759 28587 18173 24406 16847 26602 10232 9151 9394 9843 30540 38149 13645 27668 14807 30539 26603 10232 9394 9151 8522 13645 38149 30540 13646 31960 11946 26604 8523 9394 9151 9843 11854 38149 32551 14808 30539 14807 26605 8523 9151 9394 8522 32551 38149 11854 11945 11946 31960 26606 10658 1497 1040 9702 28723 2305 13606 18158 17020 28720 26607 10658 1040 1497 174 13606 2305 28723 29502 2152 2306 26608 8911 10708 7969 9048 28636 20884 27940 30173 27023 27022 26609 7969 10708 8911 9643 20884 28636 27940 20876 17268 19806 26610 10977 9486 10552 9717 25278 18592 38142 26491 29548 26490 26611 10977 10552 9486 9960 38142 18592 25278 25277 18069 13887 26612 10694 7766 9102 9082 29403 35935 33377 29404 34381 29401 26613 10694 9102 7766 9740 33377 35935 29403 30243 25507 34478 26614 10695 1497 1041 1479 28950 6055 20097 28951 6056 2148 26615 10695 1041 1497 9702 20097 6055 28950 21568 28720 21567 26616 10690 7542 7563 7570 28214 37181 25247 26736 29523 28213 26617 10690 7563 7542 10412 25247 37181 28214 28467 28465 29719 26618 10252 9158 9267 9842 31029 38147 14743 22753 31674 29636 26619 10252 9267 9158 8615 14743 38147 31029 14742 32841 12813 26620 1507 7598 10201 195 34214 28228 21910 1649 28440 31061 26621 1507 10201 7598 7609 21910 28228 34214 21908 28226 21909 26622 10426 458 457 9725 29464 3717 35089 30097 35122 30096 26623 10426 457 458 456 35089 3717 29464 28225 3718 3713 26624 10770 1525 1150 10438 25352 6176 34843 26265 32934 13640 26625 10770 1150 1525 1598 34843 6176 25352 25354 6178 6174 26626 11063 1118 10700 10005 32310 22831 24363 23586 25125 25126 26627 11063 10700 1118 1440 24363 22831 32310 32309 5145 25832 26628 11083 11196 1436 10194 32410 25018 25533 25532 25016 25019 26629 1436 11196 11083 10819 25018 32410 25533 29155 32408 29156 26630 10946 9463 8432 9718 21284 14673 21447 20086 14672 13998 26631 10946 8432 9463 10075 21447 14673 21284 21785 21783 24052 26632 10388 10761 10095 9245 13779 18386 21329 13777 19997 13778 26633 10095 10761 10388 9518 18386 13779 21329 20562 21075 19965 26634 10244 10728 11025 9506 25038 36075 24508 18837 30510 22608 26635 11025 10728 10244 9269 36075 25038 24508 35666 25876 19610 26636 7642 8544 7512 7691 32415 37993 38095 33494 37991 23103 26637 7512 8544 7642 9182 37993 32415 38095 38094 14653 32414 26638 10860 311 1350 1098 19293 2931 25088 26087 2996 2995 26639 10860 1350 311 9623 25088 2931 19293 19292 18795 14754 26640 7800 6379 6277 6308 28260 6535 37997 27373 6532 6537 26641 7800 6277 6379 8703 37997 6535 28260 28261 28262 38047 26642 10739 697 894 895 28718 4918 15958 28700 4922 4923 26643 10739 894 697 9649 15958 4918 28718 15959 18000 15957 26644 944 7723 63 7657 27035 38110 1835 20181 38034 27397 26645 944 63 7723 1582 1835 38110 27035 1838 27034 1832 26646 10962 1203 9932 9969 34409 11365 15624 15626 11369 11368 26647 10962 9932 1203 951 15624 11365 34409 19721 5799 13772 26648 1247 10679 813 812 28160 20004 5458 5459 4223 24867 26649 813 10679 1247 10317 20004 28160 5458 20001 25617 20006 26650 11095 11098 10524 9162 32530 27868 16562 32529 31187 31188 26651 10524 11098 11095 9508 27868 32530 16562 28793 31659 24877 26652 10885 9464 8937 10270 28645 12405 33089 27405 14718 14720 26653 10885 8937 9464 10037 33089 12405 28645 28646 21246 21247 26654 7770 10865 9108 10372 32137 38150 35542 36117 30857 13955 26655 7770 9108 10865 7608 35542 38150 32137 32132 32135 35422 26656 7537 9108 10865 10372 30855 38150 36734 30856 13955 30857 26657 7537 10865 9108 7608 36734 38150 30855 35423 35422 32135 26658 10866 9439 8261 9924 23043 14204 33806 17536 14207 14209 26659 10866 8261 9439 9995 33806 14204 23043 12924 16909 16910 26660 10644 8114 10227 8115 33419 29181 33339 35783 29522 29521 26661 10644 10227 8114 9738 33339 29181 33419 32459 25894 27399 26662 10754 8167 7871 9637 28741 27703 11390 12959 12957 25675 26663 10754 7871 8167 8161 11390 27703 28741 29448 30507 29447 26664 10112 10702 10849 9505 24827 22356 27792 24826 22355 22352 26665 10849 10702 10112 9372 22356 24827 27792 22655 27791 14320 26666 11198 8251 10067 9917 36441 13371 31273 31272 15674 12618 26667 11198 10067 8251 8317 31273 13371 36441 35275 30458 30459 26668 11114 9426 8450 10030 28201 15115 36606 24192 18262 18263 26669 11114 8450 9426 10277 36606 15115 28201 29647 15741 15740 26670 11184 10333 10952 533 28520 18503 38151 28518 18502 18500 26671 10952 10333 11184 9865 18503 28520 38151 24704 24823 34202 26672 10952 534 11184 533 19183 35129 38151 18502 28518 4097 26673 11184 534 10952 9865 35129 19183 38151 24823 24704 35128 26674 11185 1355 10251 9887 35115 32907 23522 35116 25567 34303 26675 11185 10251 1355 212 23522 32907 35115 31684 2498 31683 26676 7956 10902 8150 7955 19707 36149 35055 25178 36822 25179 26677 8150 10902 7956 9665 36149 19707 35055 33433 19823 19824 26678 10486 1475 1085 9999 12829 6110 12916 11252 13959 11464 26679 10486 1085 1475 1483 12916 6110 12829 22633 6112 6111 26680 11188 429 10178 437 35045 26004 35627 35192 32581 3585 26681 11188 10178 429 9863 35627 26004 35045 35044 17292 26003 26682 444 11188 10178 437 35046 35627 29738 3623 32581 35192 26683 10178 11188 444 9890 35627 35046 29738 29739 24695 24597 26684 8706 11191 10329 8705 34993 27540 15535 19207 18809 27538 26685 10329 11191 8706 9870 27540 34993 15535 19024 19025 34994 26686 11192 532 10330 9865 34995 24619 27542 24706 24821 24822 26687 11192 10330 532 685 27542 24619 34995 27541 4089 21950 26688 11063 456 9800 1367 32856 29091 31775 33158 34826 3709 26689 11063 9800 456 10426 31775 29091 32856 32061 28225 28120 26690 10777 1453 1377 1456 28784 6118 11468 30122 4285 6011 26691 10777 1377 1453 9650 11468 6118 28784 13339 28101 13338 26692 11095 11098 10197 9508 32530 24876 22869 31659 23781 24877 26693 10197 11098 11095 9163 24876 32530 22869 33466 32528 32531 26694 10863 7779 7681 9179 34636 34780 25936 25938 25933 34634 26695 10863 7681 7779 9627 25936 34780 34636 31527 34781 34782 26696 10659 10004 9463 9841 30403 27484 34813 14275 24770 17902 26697 10659 9463 10004 10582 34813 27484 30403 30404 23127 21196 26698 7692 168 70 1583 31596 1863 38101 18332 1860 1866 26699 7692 70 168 7656 38101 1863 31596 33785 19282 38055 26700 11043 8403 9586 10291 36265 24161 30973 22651 24162 22809 26701 11043 9586 8403 8873 30973 24161 36265 30972 27028 26091 26702 11147 9055 9854 9016 35569 15597 16665 16664 16663 35655 26703 11147 9854 9055 10153 16665 15597 35569 29394 15942 15944 26704 7644 7769 7519 7706 26644 38023 38109 28749 38021 26887 26705 7519 7769 7644 9183 38023 26644 38109 38105 18059 26643 26706 10617 7843 7847 9906 16058 37409 35747 16059 35167 13667 26707 10617 7847 7843 7841 35747 37409 16058 24292 24290 36808 26708 9555 10908 10511 6953 26618 38152 23424 29619 30832 29679 26709 9555 10511 10908 9819 23424 38152 26618 25072 26619 27685 26710 6952 10511 10908 6953 27684 38152 35668 7292 29679 30832 26711 6952 10908 10511 9819 35668 38152 27684 27683 27685 26619 26712 11079 1282 1137 655 29748 4716 31809 35157 4511 4713 26713 11079 1137 1282 10755 31809 4716 29748 21206 28363 31808 26714 10607 1418 1185 10017 29202 3989 20797 20799 20080 29696 26715 10607 1185 1418 510 20797 3989 29202 18697 3990 3988 26716 10503 8328 10740 8305 33717 35876 32290 28562 33977 33736 26717 10503 10740 8328 9980 32290 35876 33717 26244 33716 20558 26718 9669 8729 8664 8020 17074 37812 26874 18827 34699 18825 26719 9669 8664 8729 10703 26874 37812 17074 17165 17164 26877 26720 11109 8768 11133 8747 35318 35764 30712 30711 24358 35383 26721 11109 11133 8768 10436 30712 35764 35318 33819 35316 34329 26722 1372 10497 1191 453 32154 12154 3706 3704 3566 14369 26723 1191 10497 1372 9981 12154 32154 3706 14973 28051 14975 26724 11036 835 10352 9901 36496 18004 21039 27395 18005 18002 26725 11036 10352 835 1485 21039 18004 36496 21037 5560 21021 26726 10594 986 732 1036 24396 5096 24538 27009 5091 5098 26727 10594 732 986 10370 24538 5096 24396 22824 21655 23847 26728 10159 10801 1038 9844 32983 38153 22455 22456 22457 31232 26729 10159 1038 10801 872 22455 38153 32983 36232 33802 5122 26730 1356 1038 10801 9844 3273 38153 31915 26669 31232 22457 26731 1356 10801 1038 872 31915 38153 3273 5711 5122 33802 26732 10844 1002 10096 10054 35853 21764 18306 23037 22843 22844 26733 10844 10096 1002 874 18306 21764 35853 34919 5714 30509 26734 10563 9146 9403 8646 35562 16919 17158 16589 16921 16916 26735 10563 9403 9146 10402 17158 16919 35562 15546 19069 19070 26736 10962 6974 9826 6973 34034 25078 31318 31317 25645 7455 26737 10962 9826 6974 9969 31318 25078 34034 15626 25229 24410 26738 10892 8434 8310 9778 25284 35982 25878 15477 33984 25282 26739 10892 8310 8434 8435 25878 35982 25284 27521 27519 36864 26740 10758 8052 8048 8040 30259 34846 13103 27773 27771 33481 26741 10758 8048 8052 10349 13103 34846 30259 22648 26307 22647 26742 11151 9001 8023 9716 26543 33885 16585 16587 14913 22910 26743 11151 8023 9001 8859 16585 33885 26543 33969 33967 36242 26744 7974 10991 7973 7975 23720 26361 37527 23719 37958 20736 26745 7973 10991 7974 10003 26361 23720 37527 30013 24333 23448 26746 763 10871 761 762 29558 11325 5227 5228 5222 29536 26747 761 10871 763 9648 11325 29558 5227 12893 25410 12895 26748 582 11124 9487 1392 34847 25684 20937 4347 20935 25682 26749 9487 11124 582 10213 25684 34847 20937 26641 26642 27895 26750 10960 776 10932 1123 35737 31101 30789 30788 30787 5287 26751 10960 10932 776 10170 30789 31101 35737 27334 31100 23469 26752 11010 8139 10749 10089 36072 29920 34424 25798 19397 29919 26753 11010 10749 8139 8140 34424 29920 36072 34425 36192 32602 26754 10643 6397 9664 6319 34834 32533 29428 27168 29429 6758 26755 10643 9664 6397 10396 29428 32533 34834 27283 29233 26108 26756 10422 10838 9582 9523 18555 20391 28248 19321 27326 19323 26757 9582 10838 10422 9291 20391 18555 28248 20742 18553 13450 26758 11176 6924 9512 10313 35364 18112 28336 32836 18113 18114 26759 11176 9512 6924 6925 28336 18112 35364 35210 7345 19208 26760 6392 7628 9664 7635 37868 28962 32369 32364 32367 36150 26761 6392 9664 7628 6316 32369 28962 37868 6424 24720 28961 26762 10756 8922 8949 8483 21666 37512 24366 25037 37245 25035 26763 10756 8949 8922 10001 24366 37512 21666 21667 21665 24365 26764 10879 10454 10191 9410 25851 17545 16438 19268 14346 14230 26765 10879 10191 10454 9539 16438 17545 25851 16436 23555 12693 26766 11097 8905 10246 8904 37537 23315 26445 36698 36696 37542 26767 11097 10246 8905 10894 26445 23315 37537 33028 18723 23316 26768 8702 7618 10402 7797 35585 20215 16796 31244 30091 30089 26769 8702 10402 7618 7533 16796 20215 35585 16795 20214 16287 26770 11150 481 10068 743 36432 14769 32957 36642 16812 3844 26771 11150 10068 481 9928 32957 14769 36432 21919 14733 14016 26772 10839 798 1373 1117 32976 5400 26247 31806 5401 4891 26773 10839 1373 798 10063 26247 5400 32976 26248 28031 15934 26774 10344 103 6347 1271 34322 6640 27360 27359 21867 1989 26775 10344 6347 103 6383 27360 6640 34322 33227 6644 6645 26776 10884 715 9547 10100 35143 15531 23834 32966 16319 16320 26777 10884 9547 715 594 23834 15531 35143 35151 4399 16339 26778 10861 7763 9133 8770 31799 37615 24317 32320 37774 32401 26779 10861 9133 7763 10290 24317 37615 31799 24318 31796 17241 26780 10747 175 7565 1577 35507 34385 35064 35514 37456 1745 26781 10747 7565 175 10429 35064 34385 35507 33175 34387 34386 26782 11140 999 867 1030 35119 4671 24628 27120 5693 5107 26783 11140 867 999 10640 24628 4671 35119 24629 35117 24627 26784 8333 11130 10642 8383 35411 15522 36907 35771 31856 31857 26785 10642 11130 8333 9656 15522 35411 36907 32292 33654 26962 26786 8334 11131 10209 8632 35412 33641 31057 34776 34289 34290 26787 10209 11131 8334 9657 33641 35412 31057 17498 31058 30684 26788 7914 11133 10436 8768 35410 34329 15062 35763 35316 35764 26789 10436 11133 7914 9658 34329 35410 15062 15064 15059 29631 26790 11178 744 11042 9668 35185 23907 35932 23862 17369 23905 26791 11178 11042 744 371 35932 23907 35185 28996 3295 35931 26792 11098 10197 8840 9163 24876 18037 38154 32531 36909 33466 26793 8840 10197 11098 10378 18037 24876 38154 18036 24878 18035 26794 8840 9164 11098 9163 19498 35920 38154 36909 32531 35919 26795 11098 9164 8840 10378 35920 19498 38154 24878 18036 19499 26796 8479 10624 8862 8478 29904 11552 37938 29905 37860 15907 26797 8862 10624 8479 10281 11552 29904 37938 12499 31227 13967 26798 1099 7548 9549 7581 35001 28042 22169 22170 22168 29616 26799 1099 9549 7548 196 22169 28042 35001 1725 28040 28041 26800 1578 7557 10998 184 36841 26754 36389 1681 26753 26752 26801 10998 7557 1578 7587 26754 36841 36389 35734 36837 36839 26802 11162 1164 9776 318 35902 11781 33393 34493 24700 3006 26803 11162 9776 1164 9930 33393 11781 35902 29289 12016 12018 26804 7667 6394 6249 7745 17907 6409 38087 17906 38120 17905 26805 6249 6394 7667 6390 6409 17907 38087 6426 18022 6428 26806 11171 8870 10283 10026 35407 23210 31965 33886 23211 20225 26807 11171 10283 8870 8138 31965 23210 35407 32707 34617 32706 26808 10682 8514 8515 8513 34809 33983 18631 26015 26013 35141 26809 10682 8515 8514 10350 18631 33983 34809 20703 29475 20702 26810 10718 844 924 845 34004 5595 27087 34398 5596 4764 26811 10718 924 844 10712 27087 5595 34004 23024 21126 30773 26812 10800 1517 855 1165 27463 5648 29351 20444 5651 2171 26813 10800 855 1517 10312 29351 5648 27463 27464 27461 21896 26814 7625 9180 10412 7807 35970 28466 30629 35039 30207 36517 26815 10412 9180 7625 7542 28466 35970 30629 28465 35967 28211 26816 7530 9178 10808 7785 36478 32144 14267 17233 17235 32142 26817 10808 9178 7530 7583 32144 36478 14267 14266 14265 36479 26818 11172 8992 9738 8033 36922 25893 30580 30579 25895 25890 26819 11172 9738 8992 10480 30580 25893 36922 33965 29871 29872 26820 11054 641 9804 1391 36019 35201 22643 25158 25157 4635 26821 11054 9804 641 10289 22643 35201 36019 30219 32982 30078 26822 10613 11025 1162 9920 36173 22703 30113 30115 25607 14474 26823 1162 11025 10613 10244 22703 36173 30113 24509 19977 24508 26824 11107 223 9771 519 36046 35091 34198 36047 35566 2554 26825 11107 9771 223 11106 34198 35091 36046 36045 29982 34197 26826 11160 1218 10319 1566 36330 14623 29678 34622 34621 6212 26827 11160 10319 1218 9852 29678 14623 36330 29128 17137 17757 26828 7510 10581 7753 7703 36061 18295 38016 36060 11470 18296 26829 7753 10581 7510 9131 18295 36061 38016 37912 36276 29315 26830 194 11174 9562 1549 36299 26982 19814 2413 25928 34105 26831 9562 11174 194 10570 26982 36299 19814 25313 25312 30323 26832 11055 8108 8156 8158 36031 37893 35070 31090 37996 36048 26833 11055 8156 8108 10748 35070 37893 36031 27599 36029 31803 26834 10633 970 722 9984 23583 5048 13823 19182 16896 25845 26835 10633 722 970 971 13823 5048 23583 28374 5049 5050 26836 11135 8569 8573 7779 35282 38066 32944 34784 37989 35633 26837 11135 8573 8569 10870 32944 38066 35282 34929 18668 35688 26838 191 7594 20 7535 24360 38093 1662 26178 38054 26177 26839 20 7594 191 1588 38093 24360 1662 1667 1669 23105 26840 7565 175 39 1577 34385 1738 38104 37456 1743 1745 26841 7565 39 175 7552 38104 1738 34385 34383 34384 38028 26842 7663 1586 10515 7676 36159 26147 34458 36144 26146 26145 26843 10515 1586 7663 172 26147 36159 34458 33911 35828 1882 26844 11039 567 516 515 32478 4013 36233 28733 4004 4012 26845 11039 516 567 10964 36233 4013 32478 32479 32475 36370 26846 916 11024 10983 917 37182 35428 33973 5833 35867 36725 26847 10983 11024 916 10716 35428 37182 33973 33974 32730 36920 26848 9188 7597 10935 7792 36309 19366 35781 35779 21967 22465 26849 10935 7597 9188 7549 19366 36309 35781 23150 36305 23149 26850 7776 7536 7488 9177 20744 38111 38002 22522 38113 22521 26851 7776 7488 7536 7568 38002 38111 20744 19543 20745 38001 26852 7773 7647 7523 7679 26503 38118 38004 27203 38006 27202 26853 7523 7647 7773 9186 38118 26503 38004 38117 27475 25773 26854 207 6392 9664 1591 37720 32369 36202 1899 32368 32365 26855 9664 6392 207 6388 32369 37720 36202 35754 36203 6573 26856 9192 6302 6286 7806 27565 6568 38114 31184 38058 30905 26857 9192 6286 6302 6394 38114 6568 27565 20893 6570 6411 26858 10686 114 1511 1590 37560 2034 21314 37558 2036 1605 26859 10686 1511 114 6991 21314 2034 37560 21312 7177 21309 26860 43 10686 206 1590 37712 21185 1754 1603 1758 37558 26861 206 10686 43 7543 21185 37712 1754 17470 37755 21184 26862 10756 9378 10880 10137 23677 27260 38139 23509 23294 28304 26863 10756 11126 9378 10001 21669 27799 23677 21667 24413 21668 26864 9378 11126 10756 10880 27799 21669 23677 27260 38139 36168 $EndElements feenox-1.1/tests/i-beam-tet.geo0000644000175000017500000000201514773607165013360 00000000000000SetFactory("OpenCASCADE"); l = 500; h = 80; w = 60; t = 10; Point(1) = {0, +w/2, -h/2}; Point(2) = {0, -w/2, -h/2}; Point(3) = {0, +w/2, +h/2}; Point(4) = {0, -w/2, +h/2}; Point(5) = {0, +w/2, -h/2+t}; Point(6) = {0, -w/2, -h/2+t}; Point(7) = {0, +t, -h/2+t}; Point(8) = {0, -t, -h/2+t}; Point(9) = {0, +w/2, +h/2-t}; Point(10) = {0, -w/2, +h/2-t}; Point(11) = {0, +t, +h/2-t}; Point(12) = {0, -t, +h/2-t}; Line(1) = {3, 9}; Line(2) = {9, 11}; Line(3) = {11, 7}; Line(4) = {7, 5}; Line(5) = {5, 1}; Line(6) = {1, 2}; Line(7) = {2, 6}; Line(8) = {6, 8}; Line(9) = {8, 12}; Line(10) = {12, 10}; Line(11) = {10, 4}; Line(12) = {4, 3}; Curve Loop(1) = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2}; Plane Surface(1) = {1}; Extrude {l, 0, 0} { Surface{1}; } Physical Volume("bulk", 1) = {1}; Physical Surface("left", 2) = {1}; Physical Surface("right", 3) = {14}; Physical Surface("top", 4) = {11}; Mesh.ElementOrder = 2; Mesh.MeshSizeMin = 2*t; Mesh.MeshSizeMax = 2*t; Mesh.Optimize = 1; // Mesh.OptimizeNetgen = 1; feenox-1.1/tests/nafems-le11-alpha-of-x.fee0000644000175000017500000000036614773607165015373 00000000000000PROBLEM mechanical 3D READ_MESH nafems-le11-hex27.msh T(x,y,z) = 1 BC xz symmetry BC yz symmetry BC xy w=0 BC HIH'I' w=0 E = 2.11e11 nu = 0.3 alpha(x,y,z) = 2.3e-4*(sqrt(x^2 + y^2) + z) SOLVE_PROBLEM PRINT %.1f sigmaz(1,0,0)/1e6 feenox-1.1/tests/cube-free-expansion-alpha-of-temperature-orthotropic.fee0000644000175000017500000000112214773607165023650 00000000000000PROBLEM mechanical READ_MESH cube.msh E = 69e3 nu = 0.28 BC left u=0 BC front v=0 BC bottom w=0 T0 = 20 T(x,y,z) = 30+90*(x^2+y^2+z^2) FUNCTION A(T') FILE asme-expansion-table.dat COLUMNS 1 2 INTERPOLATION steffen FUNCTION B(T') FILE asme-expansion-table.dat COLUMNS 1 3 INTERPOLATION steffen FUNCTION C(T') FILE asme-expansion-table.dat COLUMNS 1 4 INTERPOLATION steffen alpha_x(x,y,z) = 1e-6*B(T(x,y,z)) alpha_y(x,y,z) = 1e-6*integral(A(T'), T', T0, T(x,y,z))/(T(x,y,z)-T0) alpha_z(x,y,z) = 1e-3*C(T(x,y,z))/(T(x,y,z)-T0) SOLVE_PROBLEM PRINT %.3e SEP " " u(1,1,1) v(1,1,1) w(1,1,1) feenox-1.1/tests/two-cubes-isotropic-variables.fee0000644000175000017500000000034014773607165017307 00000000000000PROBLEM mechanical READ_MESH two-cubes.msh E_soft = 1e3 nu_soft = 0.2 E_hard = 200e3 nu_hard = 0.3 BC left fixed BC right Fx=1000 SOLVE_PROBLEM WRITE_RESULTS FORMAT vtk displacements stresses PRINT %.1f sigma(0,0,0) feenox-1.1/tests/long-bar-struct.geo0000644000175000017500000000060214773607165014457 00000000000000SetFactory("OpenCASCADE"); a = 2; n = 4; Box(1) = {0,0,0, a,a,10*a}; Physical Volume("bulk") = {1}; Physical Surface("rear") = {5}; Physical Surface("front") = {6}; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 2; Mesh.RecombineAll = 1; Mesh.Recombine3DAll = 1; Transfinite Line "*" = n+1; Transfinite Line {1,3,5,7} = 10*n+1; Transfinite Surface "*"; Transfinite Volume "*"; feenox-1.1/tests/algebraic_expr.sh0000755000175000017500000000035314773607165014251 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answerdiff algebraic_expr.fee exitifwrong $? feenox-1.1/tests/nafems-le1-4.msh0000644000175000017500000000527114773607165013551 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 9 0 1 "A" 0 2 "B" 0 3 "C" 0 4 "D" 1 5 "AB" 1 6 "BC" 1 7 "CD" 1 8 "DA" 2 9 "bulk" $EndPhysicalNames $Entities 4 4 1 0 1 6.123233995736766e-14 1000 0 1 1 2 9.950255243072245e-14 2750 0 1 2 3 3250 0 0 1 3 4 2000 0 0 1 4 1 -1e-07 999.9999999 -1e-07 1e-07 2750.0000001 1e-07 1 5 2 1 -2 2 -9.999985195463523e-08 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 6 2 3 -2 3 1999.9999999 -1e-07 -1e-07 3250.0000001 1e-07 1e-07 1 7 2 3 -4 4 -9.999985195463523e-08 -1.000000224848918e-07 -1e-07 2000.0000001 1000.0000001 1e-07 1 8 2 4 -1 1 -1.000000793283107e-07 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 9 4 1 -2 3 4 $EndEntities $Nodes 9 35 1 35 0 1 0 1 1 6.123233995736766e-14 1000 0 0 2 0 1 2 9.950255243072245e-14 2750 0 0 3 0 1 3 3250 0 0 0 4 0 1 4 2000 0 0 1 1 0 3 5 6 7 0 1434.232387780806 0 0 1870.635937451771 0 0 2309.221504784242 0 1 2 0 5 8 9 10 11 12 3122.462036085646 762.8211063815952 0 2760.436694568109 1451.465694415729 0 2214.818610289794 2012.544242367443 0 1542.004361425019 2420.757654968403 0 790.4638145833807 2667.420913683683 0 1 3 0 3 13 14 15 2935.158217794536 0 0 2621.882812463697 0 0 2310.165991177719 0 0 1 4 0 5 16 17 18 19 20 1861.446094820848 365.7247722250347 0 1559.233579327545 626.2568652512748 0 1196.780614328439 801.2047430538036 0 808.4029301048257 914.669981823763 0 407.2395142007033 979.0500469937141 0 2 1 0 15 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 502.3300301855381 1397.990225787693 0 990.4335021784177 1288.379722679649 0 1449.389225604628 1101.777796300221 0 1857.291463218973 831.0182368467947 0 2174.345502280971 464.257394712871 0 597.8959987819819 1819.025105443216 0 1173.374227174532 1663.958012219458 0 1703.260880027457 1403.853714800613 0 2156.839636644623 1036.803415292877 0 2488.809406913281 563.2826803089997 0 693.9397972024943 2242.165159413261 0 1357.229655759425 2041.414193132276 0 1958.401892672171 1707.440012833444 0 2457.885550878158 1243.617519590274 0 2804.845631006595 662.8030923134188 0 $EndNodes $Elements 9 48 1 48 0 1 15 1 1 1 0 2 15 1 2 2 0 3 15 1 3 3 0 4 15 1 4 4 1 1 1 4 5 1 5 6 5 6 7 6 7 8 7 2 1 2 1 6 9 3 8 10 8 9 11 9 10 12 10 11 13 11 12 14 12 2 1 3 1 4 15 3 13 16 13 14 17 14 15 18 15 4 1 4 1 6 19 4 16 20 16 17 21 17 18 22 18 19 23 19 20 24 20 1 2 1 3 24 25 1 5 21 20 26 20 21 22 19 27 19 22 23 18 28 18 23 24 17 29 17 24 25 16 30 16 25 15 4 31 5 6 26 21 32 21 26 27 22 33 22 27 28 23 34 23 28 29 24 35 24 29 30 25 36 25 30 14 15 37 6 7 31 26 38 26 31 32 27 39 27 32 33 28 40 28 33 34 29 41 29 34 35 30 42 30 35 13 14 43 7 2 12 31 44 31 12 11 32 45 32 11 10 33 46 33 10 9 34 47 34 9 8 35 48 35 8 3 13 $EndElements feenox-1.1/tests/la-p71-URRa-2-1-SL.geo0000644000175000017500000000043414773607165014060 00000000000000rc = 9.491600; n = 100; SetFactory("OpenCASCADE"); Point(1) = {0, 0, 0}; Point(2) = {rc, 0, 0}; Line(1) = {1, 2}; Physical Curve("fuel") = {1}; Physical Point("mirror") = {1}; Physical Point("vacuum") = {2}; Mesh.MeshSizeMax = rc/n; Mesh.MeshSizeMin = rc/n; Mesh.ElementOrder = 2; feenox-1.1/tests/xfail-few-properties-ortho-shear.sh0000755000175000017500000000041714773607165017610 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical answer xfail-few-properties-ortho-shear.fee "0.41" exit $? feenox-1.1/tests/readmsh_writevtk_readbackvtk.fee0000644000175000017500000000015614773607165017350 00000000000000READ_MESH square.msh SCALE 1e-3 WRITE_MESH square_tmp.vtk INPUT_FILE tmp PATH square_tmp.vtk READ_MESH tmp feenox-1.1/tests/exp.sh0000755000175000017500000000062614773607165012101 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkida answer exp.fee "1" exitifwrong $? # check TIME_PATH echo -n "time_path_sundials.fee ... " if [ "x$(${feenox} ${dir}/time_path_sundials.fee | wc -l)" != "x5" ]; then echo "failed" return 1 fi echo "ok" feenox-1.1/tests/square40.msh0000644000175000017500000000225314773607165013121 00000000000000$MeshFormat 4 0 8 $EndMeshFormat $PhysicalNames 5 1 1 "left" 1 2 "right" 1 3 "bottom" 1 4 "up" 2 5 "bulk" $EndPhysicalNames $Entities 4 4 1 0 1 0 0 0 0 0 0 0 2 1 0 0 1 0 0 0 3 1 1 0 1 1 0 0 4 0 1 0 0 1 0 0 1 -9.999999994736442e-08 -1e-07 -1e-07 1.0000001 1e-07 1e-07 1 3 2 1 -2 2 0.9999999000000001 -9.999999994736442e-08 -1e-07 1.0000001 1.0000001 1e-07 1 2 2 2 -3 3 -9.999999994736442e-08 0.9999999000000001 -1e-07 1.0000001 1.0000001 1e-07 1 4 2 3 -4 4 -1e-07 -9.999999994736442e-08 -1e-07 1e-07 1.0000001 1e-07 1 1 2 4 -1 1 -9.999999994736442e-08 -9.999999994736442e-08 -1e-07 1.0000001 1.0000001 1e-07 1 5 4 1 2 3 4 $EndEntities $Nodes 9 12 1 0 0 1 1 0 0 0 2 0 0 1 2 1 0 0 3 0 0 1 3 1 1 0 4 0 0 1 4 0 1 0 1 1 0 1 5 0.5 0 0 2 1 0 1 6 1 0.5 0 3 1 0 1 7 0.5 1 0 4 1 0 1 8 0 0.5 0 1 2 0 4 9 0.25 0.25 0 10 0.625 0.3750000000000001 0 11 0.71875 0.7187500000000001 0 12 0.345703125 0.654296875 0 $EndNodes $Elements 5 22 1 1 1 2 1 1 5 2 5 2 2 1 1 2 3 2 6 4 6 3 3 1 1 2 5 3 7 6 7 4 4 1 1 2 7 4 8 8 8 1 1 2 2 14 9 2 10 5 10 6 10 2 11 4 12 7 12 8 12 4 13 3 11 6 14 7 11 3 15 5 9 1 16 1 9 8 17 10 12 9 18 9 12 8 19 5 10 9 20 11 12 10 21 7 12 11 22 6 11 10 $EndElements feenox-1.1/tests/pipe-sch20-2-2.geo0000644000175000017500000000324414773607165013611 00000000000000// structured curved hex20 Mesh.SecondOrderLinear = 0; Mesh.RecombineAll = 1; Mesh.SecondOrderIncomplete = 1; SetFactory("OpenCASCADE"); l = 2*(( 323.8/2 )-( ( 323.8/2 )-21.5 )); Point(1) = {-l/2, 0, 0}; Point(2) = {-l/2, ( ( 323.8/2 )-21.5 ), 0}; Point(3) = {-l/2, 0, ( ( 323.8/2 )-21.5 )}; Point(4) = {-l/2, -( ( 323.8/2 )-21.5 ), 0}; Point(5) = {-l/2, 0, -( ( 323.8/2 )-21.5 )}; Point(6) = {-l/2, ( 323.8/2 ), 0}; Point(7) = {-l/2, 0, ( 323.8/2 )}; Point(8) = {-l/2, -( 323.8/2 ), 0}; Point(9) = {-l/2, 0, -( 323.8/2 )}; Circle(1) = {3, 1, 2}; Circle(2) = {2, 1, 5}; Circle(3) = {5, 1, 4}; Circle(4) = {4, 1, 3}; Circle(5) = {7, 1, 6}; Circle(6) = {6, 1, 9}; Circle(7) = {9, 1, 8}; Circle(8) = {8, 1, 7}; Line(9) = {3, 7}; Line(10) = {2, 6}; Line(11) = {5, 9}; Line(12) = {4, 8}; Curve Loop(1) = {5, -10, -1, 9}; Plane Surface(1) = {1}; Curve Loop(2) = {6, -11, -2, 10}; Plane Surface(2) = {2}; Curve Loop(3) = {7, -12, -3, 11}; Plane Surface(3) = {3}; Curve Loop(4) = {8, -9, -4, 12}; Plane Surface(4) = {4}; Transfinite Curve {1, 2, 3, 4, 5, 6, 7, 8} = 1+Pi/4*((( 323.8/2 )+( ( 323.8/2 )-21.5 ))/(( 323.8/2 )-( ( 323.8/2 )-21.5 )))*2; Transfinite Curve {10, 11, 12, 9} = 1+2; Transfinite Surface {:}; If (Mesh.RecombineAll) Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; Recombine; } Else Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; } EndIf Physical Surface("front") = {1, 2, 3, 4}; Physical Surface("back") = {17, 13, 9, 20}; Physical Surface("pressure") = {12, 16, 19, 7}; Physical Volume("bulk") = {2, 3, 4, 1}; Mesh.ElementOrder = 2; feenox-1.1/tests/spinning-disk-parallel-plane-full_unstruct.geo0000644000175000017500000000017614773607165022015 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Disk(1) = {0, 0, 0, R}; feenox-1.1/tests/slab-1d-0.1m.geo0000644000175000017500000000030414773607165013327 00000000000000l = 0.1; n = 20; Point(1) = {0, 0, 0}; Point(2) = {l, 0, 0}; Line(1) = {1, 2}; Physical Point("left") = {1}; Physical Point("right") = {2}; Physical Line("bulk") = {1}; Mesh.MeshSizeMax = l/n; feenox-1.1/tests/bc-groups3.fee0000644000175000017500000000031114773607165013402 00000000000000PROBLEM mechanical READ_MESH cube.msh E = 1 nu = 0.3 BC A fixed GROUPS left front BC A GROUP bottom BC B p=1 GROUP right GROUP back BC B GROUP top SOLVE_PROBLEM WRITE_RESULTS FORMAT vtu feenox-1.1/tests/two-cubes-isotropic-functions.fee0000644000175000017500000000036114773607165017352 00000000000000PROBLEM mechanical READ_MESH two-cubes.msh E_soft(x,y,z) = 1e3 nu_soft(x,y,z) = 0.2 E_hard(x,y,z) = 200e3 nu_hard(x,y,z) = 0.3 BC left fixed BC right Fx=1000 SOLVE_PROBLEM WRITE_RESULTS FORMAT vtu displ stress PRINT %.1f sigma(0,0,0) feenox-1.1/tests/spinning-disk-parallel-axisymmetric-half_unstruct.geo0000644000175000017500000000021214773607165023373 00000000000000SetFactory("OpenCASCADE"); Merge "spinning-disk-dimensions.geo"; Merge "spinning-disk-unstruct.geo"; Rectangle(1) = {0, 0, 0, R, t/2, 0}; feenox-1.1/tests/trig.sh0000755000175000017500000000064314773607165012251 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer1 expr.fee "sin(pi/2)" 1 exitifwrong $? answer1 expr.fee "sin(1)^2+cos(1)^2" 1 exitifwrong $? answer1zero expr.fee "cos(30*pi/180)-sqrt(3)/2" exitifwrong $? answer1float expr.fee "atan2(1,-1)-pi/2" "pi/4" exitifwrong $? feenox-1.1/tests/expr.fee0000644000175000017500000000003114773607165012373 00000000000000# IMPLICIT NONE PRINT $1 feenox-1.1/tests/print_function.ref0000644000175000017500000000340214773607165014500 000000000000000 0 0.1 0.01 0.2 0.04 0.3 0.09 0.4 0.16 0.5 0.25 0.6 0.36 0.7 0.49 0.8 0.64 0.9 0.81 1 1 0 0 0 0 0 0.1 0.01 0 0 0.2 0.04 0 0 0.3 0.09 0 0 0.4 0.16 0 0 0.5 0.25 0 0 0.6 0.36 0 0 0.7 0.49 0 0 0.8 0.64 0 0 0.9 0.81 0 0 1 1 0 0.1 0 0.01 0 0.1 0.1 0.02 0 0.1 0.2 0.05 0 0.1 0.3 0.1 0 0.1 0.4 0.17 0 0.1 0.5 0.26 0 0.1 0.6 0.37 0 0.1 0.7 0.5 0 0.1 0.8 0.65 0 0.1 0.9 0.82 0 0.1 1 1.01 0 0.2 0 0.04 0 0.2 0.1 0.05 0 0.2 0.2 0.08 0 0.2 0.3 0.13 0 0.2 0.4 0.2 0 0.2 0.5 0.29 0 0.2 0.6 0.4 0 0.2 0.7 0.53 0 0.2 0.8 0.68 0 0.2 0.9 0.85 0 0.2 1 1.04 0 0.3 0 0.09 0 0.3 0.1 0.1 0 0.3 0.2 0.13 0 0.3 0.3 0.18 0 0.3 0.4 0.25 0 0.3 0.5 0.34 0 0.3 0.6 0.45 0 0.3 0.7 0.58 0 0.3 0.8 0.73 0 0.3 0.9 0.9 0 0.3 1 1.09 0 0.4 0 0.16 0 0.4 0.1 0.17 0 0.4 0.2 0.2 0 0.4 0.3 0.25 0 0.4 0.4 0.32 0 0.4 0.5 0.41 0 0.4 0.6 0.52 0 0.4 0.7 0.65 0 0.4 0.8 0.8 0 0.4 0.9 0.97 0 0.4 1 1.16 0 0.5 0 0.25 0 0.5 0.1 0.26 0 0.5 0.2 0.29 0 0.5 0.3 0.34 0 0.5 0.4 0.41 0 0.5 0.5 0.5 0 0.5 0.6 0.61 0 0.5 0.7 0.74 0 0.5 0.8 0.89 0 0.5 0.9 1.06 0 0.5 1 1.25 0 0.6 0 0.36 0 0.6 0.1 0.37 0 0.6 0.2 0.4 0 0.6 0.3 0.45 0 0.6 0.4 0.52 0 0.6 0.5 0.61 0 0.6 0.6 0.72 0 0.6 0.7 0.85 0 0.6 0.8 1 0 0.6 0.9 1.17 0 0.6 1 1.36 0 0.7 0 0.49 0 0.7 0.1 0.5 0 0.7 0.2 0.53 0 0.7 0.3 0.58 0 0.7 0.4 0.65 0 0.7 0.5 0.74 0 0.7 0.6 0.85 0 0.7 0.7 0.98 0 0.7 0.8 1.13 0 0.7 0.9 1.3 0 0.7 1 1.49 0 0.8 0 0.64 0 0.8 0.1 0.65 0 0.8 0.2 0.68 0 0.8 0.3 0.73 0 0.8 0.4 0.8 0 0.8 0.5 0.89 0 0.8 0.6 1 0 0.8 0.7 1.13 0 0.8 0.8 1.28 0 0.8 0.9 1.45 0 0.8 1 1.64 0 0.9 0 0.81 0 0.9 0.1 0.82 0 0.9 0.2 0.85 0 0.9 0.3 0.9 0 0.9 0.4 0.97 0 0.9 0.5 1.06 0 0.9 0.6 1.17 0 0.9 0.7 1.3 0 0.9 0.8 1.45 0 0.9 0.9 1.62 0 0.9 1 1.81 0 1 0 1 0 1 0.1 1.01 0 1 0.2 1.04 0 1 0.3 1.09 0 1 0.4 1.16 0 1 0.5 1.25 0 1 0.6 1.36 0 1 0.7 1.49 0 1 0.8 1.64 0 1 0.9 1.81 0 1 1 2 0 feenox-1.1/tests/transient-from-mesh-different-dt.fee0000644000175000017500000000013414773607165017674 00000000000000READ_MESH square-f.msh DIM 2 READ_FUNCTION f end_time = 1 dt = 0.1 PRINT t %.5f f(0.5,0.5) feenox-1.1/tests/la-p49-U-2-0-SP.fee0000644000175000017500000000041414773607165013446 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 49 PROBLEM neutron_sn 3D GROUPS 2 SN 2 READ_MESH $0.msh INCLUDE U-235.fee BC mirror mirror BC vacuum vacuum mumps_icntl_14 = 180 SOLVE_PROBLEM PRINT keff-1.01028 feenox-1.1/tests/convectionbc.msh0000644000175000017500000351353514773607165014146 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 4 2 1 "Temp" 2 2 "Flux" 2 3 "Convection" 3 4 "Volume" $EndPhysicalNames $Entities 8 12 6 1 1 0 0 10 0 2 0 0 0 0 3 0 1 10 0 4 0 1 0 0 5 10 0 10 0 6 10 0 0 0 7 10 1 10 0 8 10 1 0 0 1 -1e-07 -1e-07 -1.000000002804313e-07 1e-07 1e-07 10.0000001 0 2 2 -1 2 -1e-07 -9.999999994736442e-08 9.999999900000001 1e-07 1.0000001 10.0000001 0 2 1 -3 3 -1e-07 0.9999999000000001 -1.000000002804313e-07 1e-07 1.0000001 10.0000001 0 2 4 -3 4 -1e-07 -9.999999994736442e-08 -1e-07 1e-07 1.0000001 1e-07 0 2 2 -4 5 9.999999900000001 -1e-07 -1.000000002804313e-07 10.0000001 1e-07 10.0000001 0 2 6 -5 6 9.999999900000001 -9.999999994736442e-08 9.999999900000001 10.0000001 1.0000001 10.0000001 0 2 5 -7 7 9.999999900000001 0.9999999000000001 -1.000000002804313e-07 10.0000001 1.0000001 10.0000001 0 2 8 -7 8 9.999999900000001 -9.999999994736442e-08 -1e-07 10.0000001 1.0000001 1e-07 0 2 6 -8 9 -1.000000002804313e-07 -1e-07 -1e-07 10.0000001 1e-07 1e-07 0 2 2 -6 10 -1.000000002804313e-07 -1e-07 9.999999900000001 10.0000001 1e-07 10.0000001 0 2 1 -5 11 -1.000000002804313e-07 0.9999999000000001 -1e-07 10.0000001 1.0000001 1e-07 0 2 4 -8 12 -1.000000002804313e-07 0.9999999000000001 9.999999900000001 10.0000001 1.0000001 10.0000001 0 2 3 -7 1 -1e-07 -9.999999994736442e-08 -1.000000002804313e-07 1e-07 1.0000001 10.0000001 0 4 1 2 -3 -4 2 9.999999900000001 -9.999999994736442e-08 -1.000000002804313e-07 10.0000001 1.0000001 10.0000001 0 4 5 6 -7 -8 3 -1.000000002804313e-07 -1e-07 -1.000000002804313e-07 10.0000001 1e-07 10.0000001 0 4 9 5 -10 -1 4 -1.000000002804313e-07 0.9999999000000001 -1.000000002804313e-07 10.0000001 1.0000001 10.0000001 1 3 4 11 7 -12 -3 5 -1.000000002804313e-07 -9.999999994736442e-08 -1e-07 10.0000001 1.0000001 1e-07 1 1 4 4 11 -8 -9 6 -1.000000002804313e-07 -9.999999994736442e-08 9.999999900000001 10.0000001 1.0000001 10.0000001 1 2 4 2 12 -6 -10 1 -1.000000002804313e-07 -9.999999994736442e-08 -1.000000002804313e-07 10.0000001 1.0000001 10.0000001 1 4 6 1 2 3 4 5 6 $EndEntities $Nodes 27 5646 1 5646 0 1 0 1 1 0 0 10 0 2 0 1 2 0 0 0 0 3 0 1 3 0 1 10 0 4 0 1 4 0 1 0 0 5 0 1 5 10 0 10 0 6 0 1 6 10 0 0 0 7 0 1 7 10 1 10 0 8 0 1 8 10 1 0 1 1 0 35 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 0 0 0.2777777777777777 0 0 0.5555555555555556 0 0 0.8333333333333334 0 0 1.111111111111111 0 0 1.388888888888889 0 0 1.666666666666666 0 0 1.944444444444443 0 0 2.222222222222221 0 0 2.499999999999999 0 0 2.777777777777775 0 0 3.055555555555553 0 0 3.33333333333333 0 0 3.611111111111108 0 0 3.888888888888885 0 0 4.166666666666663 0 0 4.44444444444444 0 0 4.722222222222217 0 0 4.999999999999995 0 0 5.277777777777772 0 0 5.555555555555549 0 0 5.833333333333327 0 0 6.111111111111104 0 0 6.388888888888882 0 0 6.666666666666659 0 0 6.944444444444437 0 0 7.222222222222214 0 0 7.499999999999991 0 0 7.777777777777769 0 0 8.055555555555546 0 0 8.333333333333323 0 0 8.6111111111111 0 0 8.888888888888879 0 0 9.166666666666657 0 0 9.444444444444438 0 0 9.72222222222222 1 2 0 3 44 45 46 0 0.2499999999999997 10 0 0.4999999999999987 10 0 0.7499999999999991 10 1 3 0 35 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 0 1 0.2777777777777777 0 1 0.5555555555555556 0 1 0.8333333333333334 0 1 1.111111111111111 0 1 1.388888888888889 0 1 1.666666666666666 0 1 1.944444444444443 0 1 2.222222222222221 0 1 2.499999999999999 0 1 2.777777777777775 0 1 3.055555555555553 0 1 3.33333333333333 0 1 3.611111111111108 0 1 3.888888888888885 0 1 4.166666666666663 0 1 4.44444444444444 0 1 4.722222222222217 0 1 4.999999999999995 0 1 5.277777777777772 0 1 5.555555555555549 0 1 5.833333333333327 0 1 6.111111111111104 0 1 6.388888888888882 0 1 6.666666666666659 0 1 6.944444444444437 0 1 7.222222222222214 0 1 7.499999999999991 0 1 7.777777777777769 0 1 8.055555555555546 0 1 8.333333333333323 0 1 8.6111111111111 0 1 8.888888888888879 0 1 9.166666666666657 0 1 9.444444444444438 0 1 9.72222222222222 1 4 0 3 82 83 84 0 0.2499999999999997 0 0 0.4999999999999987 0 0 0.7499999999999991 0 1 5 0 35 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 10 0 0.2777777777777777 10 0 0.5555555555555556 10 0 0.8333333333333334 10 0 1.111111111111111 10 0 1.388888888888889 10 0 1.666666666666666 10 0 1.944444444444443 10 0 2.222222222222221 10 0 2.499999999999999 10 0 2.777777777777775 10 0 3.055555555555553 10 0 3.33333333333333 10 0 3.611111111111108 10 0 3.888888888888885 10 0 4.166666666666663 10 0 4.44444444444444 10 0 4.722222222222217 10 0 4.999999999999995 10 0 5.277777777777772 10 0 5.555555555555549 10 0 5.833333333333327 10 0 6.111111111111104 10 0 6.388888888888882 10 0 6.666666666666659 10 0 6.944444444444437 10 0 7.222222222222214 10 0 7.499999999999991 10 0 7.777777777777769 10 0 8.055555555555546 10 0 8.333333333333323 10 0 8.6111111111111 10 0 8.888888888888879 10 0 9.166666666666657 10 0 9.444444444444438 10 0 9.72222222222222 1 6 0 3 120 121 122 10 0.2499999999999997 10 10 0.4999999999999987 10 10 0.7499999999999991 10 1 7 0 35 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 10 1 0.2777777777777777 10 1 0.5555555555555556 10 1 0.8333333333333334 10 1 1.111111111111111 10 1 1.388888888888889 10 1 1.666666666666666 10 1 1.944444444444443 10 1 2.222222222222221 10 1 2.499999999999999 10 1 2.777777777777775 10 1 3.055555555555553 10 1 3.33333333333333 10 1 3.611111111111108 10 1 3.888888888888885 10 1 4.166666666666663 10 1 4.44444444444444 10 1 4.722222222222217 10 1 4.999999999999995 10 1 5.277777777777772 10 1 5.555555555555549 10 1 5.833333333333327 10 1 6.111111111111104 10 1 6.388888888888882 10 1 6.666666666666659 10 1 6.944444444444437 10 1 7.222222222222214 10 1 7.499999999999991 10 1 7.777777777777769 10 1 8.055555555555546 10 1 8.333333333333323 10 1 8.6111111111111 10 1 8.888888888888879 10 1 9.166666666666657 10 1 9.444444444444438 10 1 9.72222222222222 1 8 0 3 158 159 160 10 0.2499999999999997 0 10 0.4999999999999987 0 10 0.7499999999999991 0 1 9 0 35 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 0.2777777777777777 0 0 0.5555555555555556 0 0 0.8333333333333334 0 0 1.111111111111111 0 0 1.388888888888889 0 0 1.666666666666666 0 0 1.944444444444443 0 0 2.222222222222221 0 0 2.499999999999999 0 0 2.777777777777775 0 0 3.055555555555553 0 0 3.33333333333333 0 0 3.611111111111108 0 0 3.888888888888885 0 0 4.166666666666663 0 0 4.44444444444444 0 0 4.722222222222217 0 0 4.999999999999995 0 0 5.277777777777772 0 0 5.555555555555549 0 0 5.833333333333327 0 0 6.111111111111104 0 0 6.388888888888882 0 0 6.666666666666659 0 0 6.944444444444437 0 0 7.222222222222214 0 0 7.499999999999991 0 0 7.777777777777769 0 0 8.055555555555546 0 0 8.333333333333323 0 0 8.6111111111111 0 0 8.888888888888879 0 0 9.166666666666657 0 0 9.444444444444438 0 0 9.72222222222222 0 0 1 10 0 35 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 0.2777777777777777 0 10 0.5555555555555556 0 10 0.8333333333333334 0 10 1.111111111111111 0 10 1.388888888888889 0 10 1.666666666666666 0 10 1.944444444444443 0 10 2.222222222222221 0 10 2.499999999999999 0 10 2.777777777777775 0 10 3.055555555555553 0 10 3.33333333333333 0 10 3.611111111111108 0 10 3.888888888888885 0 10 4.166666666666663 0 10 4.44444444444444 0 10 4.722222222222217 0 10 4.999999999999995 0 10 5.277777777777772 0 10 5.555555555555549 0 10 5.833333333333327 0 10 6.111111111111104 0 10 6.388888888888882 0 10 6.666666666666659 0 10 6.944444444444437 0 10 7.222222222222214 0 10 7.499999999999991 0 10 7.777777777777769 0 10 8.055555555555546 0 10 8.333333333333323 0 10 8.6111111111111 0 10 8.888888888888879 0 10 9.166666666666657 0 10 9.444444444444438 0 10 9.72222222222222 0 10 1 11 0 35 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 0.2777777777777777 1 0 0.5555555555555556 1 0 0.8333333333333334 1 0 1.111111111111111 1 0 1.388888888888889 1 0 1.666666666666666 1 0 1.944444444444443 1 0 2.222222222222221 1 0 2.499999999999999 1 0 2.777777777777775 1 0 3.055555555555553 1 0 3.33333333333333 1 0 3.611111111111108 1 0 3.888888888888885 1 0 4.166666666666663 1 0 4.44444444444444 1 0 4.722222222222217 1 0 4.999999999999995 1 0 5.277777777777772 1 0 5.555555555555549 1 0 5.833333333333327 1 0 6.111111111111104 1 0 6.388888888888882 1 0 6.666666666666659 1 0 6.944444444444437 1 0 7.222222222222214 1 0 7.499999999999991 1 0 7.777777777777769 1 0 8.055555555555546 1 0 8.333333333333323 1 0 8.6111111111111 1 0 8.888888888888879 1 0 9.166666666666657 1 0 9.444444444444438 1 0 9.72222222222222 1 0 1 12 0 35 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 0.2777777777777777 1 10 0.5555555555555556 1 10 0.8333333333333334 1 10 1.111111111111111 1 10 1.388888888888889 1 10 1.666666666666666 1 10 1.944444444444443 1 10 2.222222222222221 1 10 2.499999999999999 1 10 2.777777777777775 1 10 3.055555555555553 1 10 3.33333333333333 1 10 3.611111111111108 1 10 3.888888888888885 1 10 4.166666666666663 1 10 4.44444444444444 1 10 4.722222222222217 1 10 4.999999999999995 1 10 5.277777777777772 1 10 5.555555555555549 1 10 5.833333333333327 1 10 6.111111111111104 1 10 6.388888888888882 1 10 6.666666666666659 1 10 6.944444444444437 1 10 7.222222222222214 1 10 7.499999999999991 1 10 7.777777777777769 1 10 8.055555555555546 1 10 8.333333333333323 1 10 8.6111111111111 1 10 8.888888888888879 1 10 9.166666666666657 1 10 9.444444444444438 1 10 9.72222222222222 1 10 2 1 0 111 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 0 0.2468725277796784 8.193198097702819 0 0.2485438892286521 2.639850143319256 0 0.2405626121623436 4.305555555555552 0 0.2585798153199246 5.424603717114342 0 0.2575182180353178 6.528600992546212 0 0.2469978374196671 7.36161403899793 0 0.7568599516277978 4.870859734231174 0 0.7594373878376564 3.194444444444442 0 0.2486378463333858 8.750006898984502 0 0.2441917304318683 1.80525555017347 0 0.7559193398854839 3.74969999461791 0 0.246028041181438 1.245371952275459 0 0.2440806601145154 5.971922216840131 0 0.2527870381917652 0.696275151821014 0 0.2579213300091311 9.303389969216783 0 0.7477779131478011 9.593881008339054 0 0.748142968105276 0.4057024229519828 0 0.7594373878376564 7.638888888888882 0 0.7561409952345188 5.695645339262981 0 0.7565402861011699 2.366129038513401 0 0.7532600465586423 7.083580181244106 0 0.2449996048648959 3.4710697215464 0 0.7545553668219314 1.524691661795333 0 0.7548310835798203 0.9680169521665944 0 0.7554608045858476 8.464604557233269 0 0.7594373878376577 6.249999999999994 0 0.7586481592770419 9.029181836425513 0 0.3810545878556902 9.801049789680111 0 0.3810547422948949 0.1989575857469081 0 0.7470328000290825 4.305555555555554 0 0.260130029177478 4.870859734231175 0 0.7589319180099516 0.6908934599375828 0 0.5032400614639363 0.5693974183101986 0 0.7586091174024224 9.308235364414074 0 0.5032252571457698 9.430007274348824 0 0.5110973051303268 9.165286516902563 0 0.5165586263580298 8.893126879232437 0 0.7554782732925028 8.749779173248708 0 0.5165114466086388 8.606986705648618 0 0.5026453719074134 8.323148900762781 0 0.2579274985919981 8.470371235818625 0 0.4867485030575144 8.042917646290629 0 0.2602507530054562 9.027861010304575 0 0.7425820996092565 8.186000672647396 0 0.7594373878376561 6.527777777777769 0 0.5149824303645627 6.389026091350289 0 0.5134927163696171 6.668132723079164 0 0.5144759335492199 6.110681215157774 0 0.2658402545549947 6.810294755497743 0 0.2610550156150384 6.250027442368379 0 0.4871362140073421 5.826418329278413 0 0.5066727765179216 6.945834905497186 0 0.2534386118610394 5.696918180107247 0 0.7524963355726575 7.36124561414197 0 0.5123684370439607 7.499764617711589 0 0.2405626121623428 4.027777777777772 0 0.4857760726461684 4.166666666666663 0 0.4902282512750032 4.449483328578317 0 0.4855701368474464 3.88845065945272 0 0.7395825547982702 4.027689892680364 0 0.5128637859926531 3.604196107056196 0 0.7495514084513499 4.590836802009528 0 0.5057890622586493 4.732271894383446 0 0.5128404812123588 5.010508141353543 0 0.2549773328988035 5.149171512995754 0 0.5105886892013481 5.292450732563736 0 0.7507048554313054 3.471019720649386 0 0.2465604355172031 7.637829635024134 0 0.4928024399496105 7.222878968431401 0 0.2468994818409218 3.19495068945697 0 0.7589545375482414 2.084169654567049 0 0.5123511066597655 2.223006684082775 0 0.4981960624768765 2.507106455781527 0 0.5157135271480477 1.944201740608252 0 0.2598518640614755 2.08322550894876 0 0.4966729028377848 1.661984613911841 0 0.2531571537377949 2.362568502392422 0 0.4983468124009222 2.786521917260722 0 0.7534810125160375 2.644781895424735 0 0.2519127677559042 2.919066934946137 0 0.2508768604429898 1.524242478160909 0 0.7543160557260009 1.804359796998931 0 0.5040807622854749 1.381752916150604 0 0.479670749337673 1.094944516603624 0 0.762314474069851 5.421665703761772 0 0.2473326899778897 3.748582377638846 0 0.2469119314360835 4.586290140406565 0 0.7528650884381231 5.971198221357264 0 0.7554771545473062 6.80607278311822 0 0.243426940188733 7.913072236890292 0 0.2438480551664803 7.085337921391269 0 0.7488563270041499 1.244901007786026 0 0.5113459296738987 0.8296339376371562 0 0.4803801747780024 7.771154708990866 0 0.4910205088210301 3.33294440556632 0 0.5137514885924923 3.05977205245235 0 0.2483052930641291 0.9684450004636164 0 0.2519131750612946 9.585496603803085 0 0.2513908886914228 0.4144137473893602 0 0.617477636983357 9.807783769426262 0 0.6175386596553403 0.1921554071204313 0 0.7580647256224432 2.923051009837089 0 0.7571005993518926 5.145543681614665 0 0.7280971576161452 7.904405861917848 0 0.5175007053084083 5.56454382231068 0 0.1765935525833969 9.821753723141082 0 0.1764891261972635 0.1782298221828092 0 0.8230751167504655 0.1781648021549416 0 0.8230142485176858 9.821766998964737 0 0.5002734640421741 0.3561253163037762 0 0.5002897140387825 9.643643689119466 2 2 0 111 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 10 0.2468725277796784 8.193198097702819 10 0.2485438892286521 2.639850143319256 10 0.2405626121623436 4.305555555555552 10 0.2585798153199246 5.424603717114342 10 0.2575182180353178 6.528600992546212 10 0.2469978374196671 7.36161403899793 10 0.7568599516277978 4.870859734231174 10 0.7594373878376564 3.194444444444442 10 0.2486378463333858 8.750006898984502 10 0.2441917304318683 1.80525555017347 10 0.7559193398854839 3.74969999461791 10 0.246028041181438 1.245371952275459 10 0.2440806601145154 5.971922216840131 10 0.2527870381917652 0.696275151821014 10 0.2579213300091311 9.303389969216783 10 0.7477779131478011 9.593881008339054 10 0.748142968105276 0.4057024229519828 10 0.7594373878376564 7.638888888888882 10 0.7561409952345188 5.695645339262981 10 0.7565402861011699 2.366129038513401 10 0.7532600465586423 7.083580181244106 10 0.2449996048648959 3.4710697215464 10 0.7545553668219314 1.524691661795333 10 0.7548310835798203 0.9680169521665944 10 0.7554608045858476 8.464604557233269 10 0.7594373878376577 6.249999999999994 10 0.7586481592770419 9.029181836425513 10 0.3810545878556902 9.801049789680111 10 0.3810547422948949 0.1989575857469081 10 0.7470328000290825 4.305555555555554 10 0.260130029177478 4.870859734231175 10 0.7589319180099516 0.6908934599375828 10 0.5032400614639363 0.5693974183101986 10 0.7586091174024224 9.308235364414074 10 0.5032252571457698 9.430007274348824 10 0.5110973051303268 9.165286516902563 10 0.5165586263580298 8.893126879232437 10 0.7554782732925028 8.749779173248708 10 0.5165114466086388 8.606986705648618 10 0.5026453719074134 8.323148900762781 10 0.2579274985919981 8.470371235818625 10 0.4867485030575144 8.042917646290629 10 0.2602507530054562 9.027861010304575 10 0.7425820996092565 8.186000672647396 10 0.7594373878376561 6.527777777777769 10 0.5149824303645627 6.389026091350289 10 0.5134927163696171 6.668132723079164 10 0.5144759335492199 6.110681215157774 10 0.2658402545549947 6.810294755497743 10 0.2610550156150384 6.250027442368379 10 0.4871362140073421 5.826418329278413 10 0.5066727765179216 6.945834905497186 10 0.2534386118610394 5.696918180107247 10 0.7524963355726575 7.36124561414197 10 0.5123684370439607 7.499764617711589 10 0.2405626121623428 4.027777777777772 10 0.4857760726461684 4.166666666666663 10 0.4902282512750032 4.449483328578317 10 0.4855701368474464 3.88845065945272 10 0.7395825547982702 4.027689892680364 10 0.5128637859926531 3.604196107056196 10 0.7495514084513499 4.590836802009528 10 0.5057890622586493 4.732271894383446 10 0.5128404812123588 5.010508141353543 10 0.2549773328988035 5.149171512995754 10 0.5105886892013481 5.292450732563736 10 0.7507048554313054 3.471019720649386 10 0.2465604355172031 7.637829635024134 10 0.4928024399496105 7.222878968431401 10 0.2468994818409218 3.19495068945697 10 0.7589545375482414 2.084169654567049 10 0.5123511066597655 2.223006684082775 10 0.4981960624768765 2.507106455781527 10 0.5157135271480477 1.944201740608252 10 0.2598518640614755 2.08322550894876 10 0.4966729028377848 1.661984613911841 10 0.2531571537377949 2.362568502392422 10 0.4983468124009222 2.786521917260722 10 0.7534810125160375 2.644781895424735 10 0.2519127677559042 2.919066934946137 10 0.2508768604429898 1.524242478160909 10 0.7543160557260009 1.804359796998931 10 0.5040807622854749 1.381752916150604 10 0.479670749337673 1.094944516603624 10 0.762314474069851 5.421665703761772 10 0.2473326899778897 3.748582377638846 10 0.2469119314360835 4.586290140406565 10 0.7528650884381231 5.971198221357264 10 0.7554771545473062 6.80607278311822 10 0.243426940188733 7.913072236890292 10 0.2438480551664803 7.085337921391269 10 0.7488563270041499 1.244901007786026 10 0.5113459296738987 0.8296339376371562 10 0.4803801747780024 7.771154708990866 10 0.4910205088210301 3.33294440556632 10 0.5137514885924923 3.05977205245235 10 0.2483052930641291 0.9684450004636164 10 0.2519131750612946 9.585496603803085 10 0.2513908886914228 0.4144137473893602 10 0.617477636983357 9.807783769426262 10 0.6175386596553403 0.1921554071204313 10 0.7580647256224432 2.923051009837089 10 0.7571005993518926 5.145543681614665 10 0.7280971576161452 7.904405861917848 10 0.5175007053084083 5.56454382231068 10 0.1765935525833969 9.821753723141082 10 0.1764891261972635 0.1782298221828092 10 0.8230751167504655 0.1781648021549416 10 0.8230142485176858 9.821766998964737 10 0.5002734640421741 0.3561253163037762 10 0.5002897140387825 9.643643689119466 2 3 0 1452 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 5.138888888888877 0 9.759437387837586 5.143586164605485 0 0.2185584744500771 0.2352435652847727 0 5.138888888888882 9.743738911182573 0 5.157118213105959 0.2469135467042241 0 3.74835088128526 9.72136613148775 0 3.745936434230825 3.749999999999996 0 9.759437387837657 3.749999999999996 0 0.2405626121623436 6.527777777777768 0 9.759437387837645 0.2405626121623432 0 6.527777777777771 6.527777777777771 0 0.2405626121623432 9.759437387837657 0 6.527777777777771 2.632312702885713 0 0.23676584940317 9.76415029362817 0 2.642500529207705 2.638888888888861 0 9.759437387837551 0.2578942833171624 0 2.638493149307809 7.638888888888879 0 9.759437387837661 0.2198410795312892 0 7.644972448280944 7.643586164605535 0 0.2185584744501665 9.735130788432256 0 7.616562702085884 0.2474069315981424 0 1.520386322198025 9.750308223627425 0 1.509505465652448 1.527777777777789 0 9.759437387837561 9.738580559635365 0 8.510861926919539 1.800858279839017 0 0.2185584744500864 8.472222222222168 0 9.759437387837686 0.2638891336615845 0 8.510861926919345 8.473934057395946 0 0.2350937807868451 0.9705103870485723 0 0.2350937807868264 9.753152113081264 0 9.030830361524643 9.759437387837655 0 4.305555555555552 4.30555555555553 0 9.759437387837625 9.744367319487608 0 5.98346506134929 5.973934057395921 0 0.2350937807868175 0.2482471571959377 0 5.978870071270716 0.2640071647305091 0 4.269090841770645 7.083333333333324 0 9.759437387837657 9.752168610367535 0 3.180855243690468 4.305555555555554 0 0.2405626121623432 3.194444444444426 0 9.759437387837592 5.972222222222212 0 9.759437387837638 3.194444444444442 0 0.2405626121623436 0.259330304708296 0 3.2274686930598 9.734719409340375 0 7.099640020054338 9.027777777777713 0 9.759437387837675 9.02777777777777 0 0.2405626121623447 0.2415524563496551 0 2.079779023269111 0.2803698011060558 0 7.095490439419026 0.2518316901181952 0 9.032051395023139 0.2405626121623439 0 0.9722222222222222 7.083333333333323 0 0.2405626121623436 9.749617910996305 0 2.11141751389196 2.083333333333353 0 9.759437387837608 9.793410790632638 0 0.9684888182023231 0.9722222222222188 0 9.75943738783749 9.748417431266377 0 9.557826216928541 9.582055531137254 0 0.214745462797982 0.2515825687335569 0 9.557826216928422 0.2333577790561898 0 0.4178437136891323 7.361111111111109 0 9.759437387837657 7.222222222222233 0 9.518874775675314 6.94444444444445 0 9.518874775675311 7.083333333333353 0 9.278312163512972 6.80555555555557 0 9.27831216351295 6.944444444444473 0 9.037749551350618 7.222222222222251 0 9.037749551350633 7.083333333333371 0 8.797186939188281 6.805555555555594 0 8.797186939188272 6.944444444444493 0 8.556624327025926 6.666666666666714 0 8.556624327025922 6.805555555555611 0 8.316061714863579 6.527777777777833 0 8.316061714863569 6.666666666666734 0 8.075499102701237 6.388888888888958 0 8.075499102701219 6.527777777777859 0 7.834936490538883 6.250000000000083 0 7.834936490538866 6.388888888888983 0 7.594373878376534 6.111111111111208 0 7.594373878376516 6.250000000000107 0 7.353811266214181 5.972222222222319 0 7.35381126621416 6.11111111111123 0 7.113248654051834 5.833333333333448 0 7.113248654051816 5.972222222222351 0 6.872686041889485 5.694444444444573 0 6.872686041889464 5.833333333333475 0 6.632123429727134 5.555555555555697 0 6.632123429727118 5.694444444444598 0 6.391560817564785 5.416666666666822 0 6.39156081756477 5.555555555555722 0 6.150998205402434 5.277777777777946 0 6.15099820540242 5.416666666666847 0 5.910435593240081 5.13888888888907 0 5.910435593240067 5.277777777777972 0 5.669872981077729 5.000000000000198 0 5.669872981077714 5.138888888889099 0 5.429310368915379 4.861111111111322 0 5.429310368915362 5.000000000000224 0 5.188747756753028 4.861111111111294 0 5.910435593240043 4.722222222222447 0 5.188747756753011 5.277777777777997 0 5.188747756753048 4.861111111111346 0 4.948185144590676 4.583333333333571 0 4.948185144590659 4.722222222222475 0 4.707622532428324 4.444444444444696 0 4.707622532428308 4.305555555555793 0 4.948185144590644 4.583333333333599 0 4.467059920265973 4.30555555555582 0 4.467059920265958 5.833333333333496 0 6.150998205402452 4.444444444444722 0 4.226497308103622 4.7222222222225 0 4.226497308103636 4.166666666666945 0 4.226497308103605 5.416666666666785 0 6.872686041889445 4.583333333333623 0 3.985934695941285 4.8611111111114 0 3.9859346959413 6.388888888888998 0 7.113248654051842 4.722222222222526 0 3.745372083778949 5.000000000000302 0 3.745372083778965 4.861111111111428 0 3.504809471616612 5.138888888889205 0 3.504809471616629 5.000000000000331 0 3.264246859454277 5.277777777778108 0 3.264246859454293 4.722222222222554 0 3.26424685945426 5.416666666666982 0 3.504809471616644 5.555555555555885 0 3.264246859454309 5.69444444444476 0 3.504809471616664 5.833333333333663 0 3.264246859454327 5.972222222222536 0 3.504809471616682 6.111111111111441 0 3.264246859454344 6.250000000000314 0 3.504809471616694 6.388888888889218 0 3.264246859454359 6.527777777778089 0 3.504809471616709 6.666666666666995 0 3.264246859454379 6.805555555555866 0 3.50480947161673 6.944444444444501 0 8.075499102701253 6.944444444444773 0 3.2642468594544 7.083333333333645 0 3.504809471616753 6.944444444444729 0 3.745372083779084 5.833333333333412 0 7.594373878376484 5.416666666667011 0 3.023684247291951 6.805555555555905 0 3.023684247292046 7.083333333333681 0 3.023684247292069 7.222222222222516 0 3.745372083779105 7.083333333333599 0 3.985934695941439 7.361111111111387 0 3.985934695941459 7.222222222222479 0 4.226497308103792 7.361111111111153 0 8.797186939188286 6.944444444444814 0 2.783121635129716 7.222222222222588 0 2.783121635129738 7.500000000000259 0 4.226497308103815 7.361111111111352 0 4.467059920266147 7.083333333333724 0 2.542559022967385 7.361111111111495 0 2.542559022967406 7.638888888889166 0 3.985934695941483 7.638888888889132 0 4.467059920266167 7.500000000000225 0 4.7076225324285 7.777777777778002 0 4.70762253242852 7.638888888889098 0 4.948185144590854 7.222222222222618 0 2.301996410805043 6.94444444444483 0 2.301996410805004 7.500000000000405 0 2.301996410805057 7.63888888888927 0 2.542559022967424 7.777777777778184 0 2.301996410805078 7.222222222222443 0 4.707622532428475 7.916666666666899 0 4.948185144590887 7.777777777777974 0 5.18874775675321 7.916666666667053 0 2.542559022967449 6.250000000000062 0 8.316061714863549 8.055555555555761 0 5.188747756753253 7.91666666666684 0 5.429310368915569 7.638888888889067 0 5.429310368915543 7.777777777777938 0 5.669872981077894 7.361111111111503 0 2.061433798642672 6.111111111111395 0 3.745372083779047 8.05555555555596 0 2.301996410805115 8.055555555555705 0 5.669872981077917 7.916666666666801 0 5.910435593240246 8.055555555555829 0 4.70762253242857 7.500000000000161 0 5.669872981077875 8.194444444444834 0 2.542559022967469 8.194444444444578 0 5.910435593240269 8.055555555555674 0 6.150998205402599 8.333333333333737 0 2.30199641080514 8.194444444444859 0 2.06143379864278 8.333333333333453 0 6.150998205402627 8.194444444444535 0 6.391560817564958 7.91666666666675 0 6.391560817564933 8.055555555555621 0 6.632123429727288 8.333333333333401 0 6.632123429727316 8.194444444444491 0 6.872686041889644 7.916666666666714 0 6.872686041889622 8.055555555555584 0 7.113248654051969 8.333333333333364 0 7.113248654051995 8.194444444444454 0 7.353811266214318 8.472222222222349 0 5.910435593240288 8.472222222222644 0 2.061433798642808 8.333333333333762 0 1.820871186480449 8.472222222222607 0 2.542559022967492 8.333333333333705 0 2.783121635129824 8.472222222222229 0 7.353811266214344 8.333333333333329 0 7.594373878376676 7.777777777777809 0 7.113248654051949 8.611111111111102 0 7.594373878376691 8.472222222222209 0 7.83493649053903 8.19444444444443 0 7.834936490539019 8.333333333333307 0 8.075499102701368 8.611111111111484 0 2.783121635129842 8.472222222222582 0 3.023684247292176 8.611111111111086 0 8.075499102701384 8.472222222222182 0 8.316061714863723 7.638888888888935 0 6.872686041889606 8.611111111111228 0 6.150998205402644 5.972222222222567 0 3.023684247291979 6.944444444444678 0 4.22649730810377 5.000000000000252 0 4.707622532428346 4.444444444444746 0 3.745372083778931 5.138888888889046 0 6.391560817564759 5.138888888889184 0 3.985934695941324 6.111111111111249 0 6.632123429727152 7.777777777778152 0 2.783121635129778 5.555555555555745 0 5.669872981077747 4.027777777778043 0 4.467059920265942 3.888888888889167 0 4.226497308103588 3.750000000000265 0 4.467059920265923 3.61111111111139 0 4.226497308103575 3.472222222222489 0 4.467059920265911 3.333333333333614 0 4.226497308103561 3.194444444444711 0 4.467059920265896 3.055555555555836 0 4.226497308103545 3.194444444444738 0 3.98593469594121 2.91666666666696 0 3.985934695941193 3.055555555555862 0 3.745372083778859 2.916666666666933 0 4.467059920265879 3.055555555555808 0 4.707622532428232 2.77777777777803 0 4.707622532428216 2.916666666666905 0 4.948185144590568 2.777777777778084 0 3.745372083778843 2.916666666666988 0 3.504809471616506 2.638888888889127 0 4.948185144590553 2.777777777778 0 5.188747756752903 2.638888888889208 0 3.504809471616491 2.777777777778112 0 3.264246859454154 2.500000000000225 0 5.188747756752888 2.638888888889099 0 5.42931036891524 2.500000000000331 0 3.26424685945414 2.638888888889236 0 3.023684247291803 2.361111111111426 0 3.504809471616481 2.361111111111345 0 4.948185144590537 2.361111111111452 0 3.023684247291791 2.500000000000359 0 2.783121635129452 2.777777777778137 0 2.783121635129467 2.638888888889261 0 2.542559022967115 2.91666666666704 0 2.542559022967131 2.361111111111485 0 2.542559022967102 2.361111111111322 0 5.429310368915222 2.500000000000197 0 5.669872981077575 2.777777777777976 0 5.66987298107759 2.638888888889075 0 5.910435593239927 2.361111111111296 0 5.910435593239911 2.500000000000173 0 6.15099820540226 2.777777777777952 0 6.150998205402278 2.638888888889049 0 6.391560817564613 2.916666666666828 0 6.391560817564629 2.777777777777924 0 6.632123429726967 3.055555555555698 0 6.632123429726983 2.916666666666794 0 6.872686041889318 2.63888888888902 0 6.872686041889302 2.777777777777894 0 7.113248654051652 3.055555555555671 0 7.113248654051668 2.916666666666773 0 7.353811266214004 3.19444444444456 0 7.353811266214021 2.638888888888993 0 7.353811266213985 2.777777777777874 0 7.594373878376341 2.500000000000096 0 7.594373878376327 2.222222222222396 0 6.150998205402244 2.777777777778164 0 2.301996410804779 3.055555555555942 0 2.301996410804795 2.638888888888971 0 7.834936490538679 2.361111111111193 0 7.834936490538665 2.222222222222316 0 7.59437387837631 2.083333333333415 0 7.834936490538646 2.916666666667068 0 2.061433798642444 3.194444444444845 0 2.06143379864246 1.944444444444545 0 7.594373878376293 3.194444444444605 0 6.391560817564643 1.805555555555639 0 7.834936490538628 1.944444444444509 0 8.075499102700981 3.194444444444817 0 2.542559022967147 3.05555555555597 0 1.820871186480108 2.777777777778193 0 1.820871186480092 3.333333333333747 0 1.820871186480123 1.666666666666768 0 7.594373878376274 1.666666666666734 0 8.075499102700965 1.805555555555604 0 8.316061714863313 3.194444444444766 0 3.504809471616519 2.916666666667096 0 1.580308574317757 2.63888888888932 0 1.58030857431774 1.52777777777783 0 8.316061714863295 1.805555555555669 0 7.353811266213938 1.527777777777897 0 7.353811266213919 1.666666666666705 0 8.556624327025645 1.944444444444481 0 8.556624327025661 1.388888888888933 0 8.556624327025627 1.388888888888991 0 7.594373878376253 2.916666666666748 0 7.834936490538691 2.777777777777846 0 8.075499102701031 3.055555555555622 0 8.075499102701038 2.916666666666719 0 8.316061714863377 3.194444444444496 0 8.316061714863388 3.055555555555591 0 8.556624327025725 3.333333333333373 0 8.556624327025743 3.472222222222272 0 8.316061714863398 3.611111111111151 0 8.556624327025753 3.750000000000045 0 8.316061714863412 3.888888888888926 0 8.556624327025766 4.027777777777821 0 8.316061714863425 4.166666666666698 0 8.556624327025775 4.305555555555601 0 8.316061714863443 4.166666666666716 0 8.075499102701086 4.444444444444476 0 8.556624327025787 4.444444444444497 0 8.075499102701102 4.305555555555613 0 7.83493649053875 4.58333333333339 0 7.834936490538756 4.444444444444509 0 7.594373878376412 4.722222222222278 0 8.075499102701109 2.638888888889181 0 3.985934695941181 3.194444444444682 0 4.948185144590584 2.083333333333519 0 5.910435593239897 1.94444444444462 0 6.150998205402235 1.805555555555741 0 5.910435593239886 1.666666666666843 0 6.150998205402225 1.527777777777964 0 5.910435593239876 1.388888888889066 0 6.150998205402215 1.666666666666862 0 5.669872981077538 1.388888888889084 0 5.669872981077526 1.527777777777984 0 5.429310368915189 3.472222222222622 0 2.061433798642475 3.611111111111523 0 1.820871186480139 3.7500000000004 0 2.06143379864249 3.8888888888893 0 1.820871186480153 4.027777777778177 0 2.061433798642505 4.166666666667078 0 1.820871186480168 4.305555555555955 0 2.06143379864252 4.444444444444855 0 1.820871186480184 4.027777777778201 0 1.580308574317816 4.583333333333732 0 2.061433798642534 4.722222222222632 0 1.820871186480197 3.888888888889277 0 2.301996410804841 4.583333333333755 0 1.580308574317846 4.861111111111533 0 1.58030857431786 5.000000000000409 0 1.82087118648021 5.138888888889309 0 1.580308574317873 5.277777777778187 0 1.820871186480219 5.416666666667086 0 1.580308574317884 5.555555555555967 0 1.820871186480231 5.694444444444863 0 1.580308574317894 5.555555555555983 0 1.339745962155545 5.83333333333376 0 1.339745962155554 4.722222222222655 0 1.339745962155511 5.972222222222641 0 1.580308574317901 6.111111111111538 0 1.339745962155558 3.472222222222649 0 1.580308574317787 4.583333333333542 0 5.429310368915338 8.611111111111139 0 7.113248654052013 3.333333333333475 0 6.632123429726996 3.47222222222238 0 6.391560817564656 3.611111111111255 0 6.632123429727008 3.750000000000155 0 6.391560817564672 3.611111111111279 0 6.150998205402318 3.888888888889034 0 6.632123429727018 6.527777777777818 0 8.797186939188252 6.66666666666674 0 7.594373878376542 8.611111111111555 0 1.820871186480474 8.472222222222676 0 1.580308574318118 8.194444444444882 0 1.580308574318091 1.250000000000054 0 8.316061714863274 8.750000000000128 0 5.910435593240301 8.333333333333794 0 1.33974596215577 8.055555555556012 0 1.339745962155761 8.611111111111597 0 1.339745962155785 2.777777777778223 0 1.339745962155404 2.500000000000445 0 1.339745962155388 2.361111111111542 0 1.580308574317724 2.222222222222668 0 1.339745962155372 2.083333333333766 0 1.580308574317708 1.944444444444891 0 1.339745962155357 1.805555555555989 0 1.580308574317692 1.666666666667114 0 1.339745962155341 1.527777777778212 0 1.580308574317676 1.388888888889337 0 1.339745962155325 1.666666666667087 0 1.820871186480028 1.38888888888931 0 1.820871186480012 1.527777777778185 0 2.061433798642363 8.75000000000038 0 2.542559022967515 1.250000000000408 0 2.061433798642348 1.388888888889283 0 2.301996410804699 1.250000000000206 0 5.429310368915175 1.388888888889108 0 5.188747756752838 1.250000000000122 0 7.353811266213892 8.749999999999961 0 8.316061714863741 8.611111111111065 0 8.55662432702607 8.750000000000355 0 3.023684247292194 8.611111111111457 0 3.264246859454524 1.805555555555589 0 8.797186939187995 2.083333333333359 0 8.797186939188006 3.472222222222241 0 8.797186939188103 4.027777777777796 0 8.797186939188117 6.250000000000419 0 1.580308574317906 6.388888888889314 0 1.339745962155568 6.111111111111521 0 1.820871186480247 4.861111111111167 0 7.834936490538761 5.000000000000052 0 8.07549910270111 4.861111111111459 0 3.023684247291924 5.138888888889287 0 2.061433798642559 8.333333333333684 0 3.264246859454512 8.472222222222555 0 3.504809471616863 8.750000000000336 0 3.504809471616873 8.611111111111434 0 3.745372083779213 4.583333333333682 0 3.023684247291907 3.888888888889053 0 6.150998205402332 3.750000000000176 0 5.910435593239983 4.166666666666741 0 7.594373878376396 8.3333333333333 0 8.556624327026039 8.055555555555532 0 8.075499102701357 8.888888888888843 0 8.55662432702608 8.749999999999936 0 8.797186939188414 1.11111111111115 0 8.556624327025606 1.250000000000038 0 8.797186939187972 8.888888888888866 0 8.075499102701404 1.805555555555719 0 6.391560817564571 7.500000000000034 0 7.113248654051938 7.361111111111161 0 6.872686041889591 8.888888888889008 0 6.150998205402658 1.111111111111507 0 2.301996410804684 1.250000000000381 0 2.542559022967033 8.888888888889207 0 3.745372083779226 8.750000000000309 0 3.985934695941559 1.111111111111307 0 5.669872981077513 1.111111111111533 0 1.820871186479997 1.111111111111213 0 7.594373878376224 2.083333333333793 0 1.099183349993021 8.19444444444491 0 1.099183349993425 7.916666666667133 0 1.099183349993418 6.250000000000439 0 1.099183349993209 6.527777777778216 0 1.099183349993228 6.666666666667091 0 1.339745962155583 6.805555555555991 0 1.099183349993248 5.69444444444488 0 1.099183349993203 1.527777777778239 0 1.099183349992989 1.250000000000462 0 1.099183349992974 1.111111111111331 0 5.188747756752822 1.250000000000231 0 4.948185144590486 6.944444444444869 0 1.3397459621556 7.083333333333768 0 1.099183349993267 7.916666666666652 0 7.834936490539011 6.666666666667037 0 2.783121635129691 1.52777777777801 0 4.9481851445905 1.388888888889132 0 4.707622532428151 1.111111111111355 0 4.707622532428136 1.250000000000256 0 4.467059920265801 1.527777777778033 0 4.467059920265816 1.388888888889158 0 4.226497308103466 1.666666666666935 0 4.226497308103482 1.52777777777806 0 3.98593469594113 1.250000000000282 0 3.985934695941115 1.388888888889183 0 3.745372083778778 1.111111111111406 0 3.745372083778765 1.250000000000308 0 3.504809471616423 1.527777777778084 0 3.504809471616441 7.361111111111288 0 5.429310368915524 7.222222222222383 0 5.669872981077857 7.083333333333511 0 5.429310368915506 6.944444444444606 0 5.669872981077838 6.805555555555734 0 5.429310368915486 7.083333333333479 0 5.910435593240192 6.805555555555703 0 5.910435593240175 3.75000000000029 0 3.985934695941232 8.472222222222536 0 3.98593469594155 8.611111111111416 0 4.226497308103901 8.888888888889195 0 4.226497308103903 8.750000000000307 0 4.467059920266249 7.50000000000003 0 9.037749551350638 1.527777777778152 0 2.542559022967052 7.361111111111425 0 3.504809471616771 5.416666666667101 0 1.099183349993198 3.611111111111174 0 8.075499102701061 6.944444444444574 0 6.150998205402527 8.611111111111237 0 5.669872981077949 8.888888888889015 0 5.669872981077946 8.750000000000147 0 5.42931036891561 3.750000000000139 0 6.872686041889358 4.027777777777916 0 6.872686041889365 4.16666666666681 0 6.632123429727026 4.305555555555692 0 6.872686041889368 1.38888888888903 0 7.113248654051562 1.111111111111255 0 7.113248654051537 7.77777777777822 0 1.33974596215571 7.777777777777769 0 8.075499102701347 7.638888888888875 0 7.834936490539012 9.02262988953623 0 4.470032054928435 0.9722222222222708 0 8.316061714863242 2.638888888889348 0 1.099183349993053 2.916666666667125 0 1.099183349993068 8.05555555555604 0 0.8586207378310667 5.555555555555996 0 0.8586207378308583 1.388888888889364 0 0.8586207378306379 0.9722222222225052 0 3.985934695941101 0.9722222222225363 0 3.504809471616405 9.027777777778116 0 3.504809471616895 9.027777777777914 0 5.429310368915599 0.9722222222222545 0 8.797186939187947 9.027777777777711 0 8.797186939188443 0.9782066921824973 0 2.546014158309321 8.333333333333842 0 0.858620737831068 7.777777777778262 0 0.8586207378310596 5.277777777778219 0 0.8586207378308515 1.111111111111587 0 0.8586207378306225 0.9722222222226846 0 1.099183349992958 1.111111111111137 0 9.037749551350306 1.944444444444464 0 9.037749551350339 2.222222222222231 0 9.037749551350352 6.805555555555964 0 1.580308574317932 1.805555555555837 0 3.985934695941146 1.944444444444712 0 4.226497308103498 5.138888888888944 0 7.834936490538768 5.277777777777833 0 8.075499102701116 5.138888888888939 0 8.316061714863455 5.000000000000059 0 7.59437387837642 5.416666666666718 0 8.316061714863466 5.277777777777822 0 8.556624327025798 5.555555555555587 0 8.556624327025816 5.416666666666702 0 8.797186939188144 5.694444444444468 0 8.797186939188162 5.555555555555579 0 9.037749551350498 5.277777777777805 0 9.037749551350476 5.833333333333353 0 9.03774955135051 1.112108522771458 0 2.783697491019751 2.22222222222264 0 1.82087118648006 8.194444444444771 0 3.504809471616844 4.722222222222585 0 2.783121635129572 4.027777777777953 0 5.910435593239994 3.888888888889076 0 5.669872981077644 3.611111111111299 0 5.669872981077633 3.750000000000199 0 5.429310368915297 4.444444444444809 0 2.783121635129556 4.305555555555904 0 3.02368424729189 4.444444444444583 0 6.632123429727029 4.583333333333471 0 6.872686041889379 2.777777777777812 0 8.556624327025705 2.916666666666681 0 8.797186939188059 7.222222222222346 0 6.150998205402548 6.666666666666793 0 6.150998205402506 6.527777777777924 0 5.910435593240152 6.805555555555661 0 6.391560817564859 1.250000000000164 0 6.872686041889208 0.9722222222223849 0 6.872686041889179 8.888030907515544 0 4.708117888205615 7.222222222222252 0 7.113248654051931 7.638888888888923 0 8.797186939188304 7.777777777777784 0 9.03774955135064 8.888888888888799 0 9.037749551350769 8.611111111111025 0 9.037749551350743 9.156767953098523 0 4.710443760479706 0.8404814502302409 0 2.78724860234377 0.8333333333338093 0 0.8586207378306072 9.166666666666805 0 5.669872981077916 9.146572228791335 0 4.241797668143565 6.666666666667123 0 0.858620737830895 2.777777777778248 0 0.8673158656824166 3.055555555556026 0 0.8600699258060148 0.855926756044515 0 2.313582824012514 0.8333333333334726 0 7.113248654051509 9.166666666666563 0 9.037749551350815 0.8333333333333686 0 9.0377495513503 9.166666666666625 0 8.556624327026118 5.416666666666677 0 9.278312163512833 5.138888888888899 0 9.278312163512817 5.000000000000031 0 9.037749551350464 4.86111111111112 0 9.278312163512792 8.610968114215812 0 4.707705091724773 7.083333333333739 0 1.580308574317954 8.750000000000098 0 6.391560817564998 9.02777777777789 0 6.391560817565014 9.166666666666794 0 6.15099820540269 5.277777777777839 0 7.594373878376428 7.361111111111122 0 7.353811266214295 5.694444444444499 0 8.316061714863485 8.055555555555909 0 3.26424685945449 8.888888888888967 0 6.632123429727347 9.166666666666753 0 6.632123429727374 2.083333333333615 0 3.985934695941162 2.222222222222493 0 4.226497308103512 3.194444444444536 0 7.834936490538703 1.805555555555765 0 5.429310368915197 3.611111111111366 0 4.707622532428263 1.94444444444474 0 3.74537208377881 2.222222222222253 0 8.55662432702567 5.833333333333788 0 0.8586207378308399 3.194444444444902 0 1.099424881322297 3.333333333333804 0 0.8589025243814958 3.472222222222679 0 1.099270569639759 3.611111111111581 0 0.8586822388636643 5.555555555555862 0 3.745372083779003 1.666666666667141 0 0.8586207378306533 6.944444444444635 0 5.188747756753152 6.666666666666858 0 5.188747756753136 6.805555555555756 0 4.948185144590799 6.527777777777979 0 4.948185144590789 6.388888888889086 0 5.188747756753123 6.250000000000203 0 4.948185144590778 6.388888888889098 0 4.707622532428441 6.111111111111321 0 4.707622532428433 6.25000000000021 0 4.467059920266093 5.972222222222447 0 4.467059920266076 5.972222222222429 0 4.948185144590774 3.750000000000456 0 1.09920813677304 3.888888888889358 0 0.8586351191329161 4.027777777778232 0 1.099189878006806 4.166666666667133 0 0.8586242227167642 2.493423813997238 0 0.8725618164168913 4.166666666667031 0 2.783121635129538 4.027777777778129 0 3.023684247291872 4.166666666666999 0 3.264246859454225 3.888888888889222 0 3.264246859454206 3.750000000000349 0 3.023684247291858 4.027777777778093 0 3.504809471616558 0.972222222222479 0 4.467059920265787 0.8333333333335784 0 4.707622532428124 1.80555555555596 0 2.06143379864238 1.388888888889209 0 3.264246859454086 1.666666666666984 0 3.264246859454103 4.027777777777975 0 5.429310368915306 2.083333333333587 0 4.467059920265845 7.916666666666991 0 3.504809471616817 5.138888888888954 0 7.353811266214085 8.055555555555863 0 3.745372083779174 3.472222222222422 0 5.429310368915282 9.027777777777825 0 6.872686041889701 8.333333333333634 0 4.226497308103886 1.666666666666696 0 9.037749551350338 1.805555555555574 0 9.278312163512679 1.5277777777778 0 9.278312163512679 3.750000000000318 0 3.504809471616539 5.000000000000361 0 2.783121635129589 4.861111111111486 0 2.542559022967236 5.138888888889259 0 2.542559022967251 7.083333333333387 0 6.872686041889573 3.333333333333522 0 5.66987298107762 8.750000000000423 0 2.061433798642829 8.888888888889337 0 1.820871186480496 9.027777777778196 0 2.06143379864286 9.166666666667112 0 1.820871186480536 9.027777777778251 0 1.580308574318162 4.861111111111181 0 7.353811266214073 7.361111111111462 0 3.023684247292092 4.166666666666826 0 6.150998205402339 4.305555555555726 0 5.910435593239997 3.888888888889099 0 5.18874775675296 7.500000000000069 0 6.632123429727255 1.527777777777932 0 6.872686041889237 5.000000000000045 0 8.556624327025798 4.444444444444606 0 6.150998205402347 6.388888888889296 0 1.820871186480254 6.2500000000004 0 2.061433798642594 5.972222222222626 0 2.061433798642586 6.111111111111501 0 2.301996410804932 5.833333333333725 0 2.301996410804918 6.388888888889277 0 2.301996410804945 6.250000000000378 0 2.542559022967286 3.888888888889017 0 7.113248654051702 6.388888888889021 0 6.150998205402488 6.250000000000154 0 5.910435593240136 4.72222222222225 0 9.037749551350441 4.583333333333343 0 9.278312163512767 1.111111111111294 0 6.632123429726857 0.8333333333335189 0 6.632123429726823 9.166666666666984 0 3.745372083779245 5.972222222222248 0 8.797186939188187 6.111111111111134 0 9.03774955135054 7.500000000000012 0 8.075499102701331 6.944444444444482 0 7.113248654051906 5.000000000000098 0 7.11324865405175 0.9722222222224299 0 6.391560817564496 6.805555555555616 0 6.872686041889548 7.916666666666666 0 8.316061714863681 8.749999999999908 0 9.278312163513073 8.472222222222129 0 9.278312163513052 8.333333333333258 0 9.0377495513507 8.194444444444345 0 9.278312163513014 7.361111111111111 0 7.83493649053899 0.6944444444444848 0 8.797186939187952 9.297607191551771 0 3.509398461714318 9.165341939333011 0 3.265011691137465 9.305555555555671 0 5.42931036891555 0.6993768720887245 0 6.391115496118539 0.8341554046075667 0 6.150923985161155 0.699401682563262 0 1.101171310179307 0.834159539686842 0 1.340077288853022 9.298511638372542 0 6.876752849371528 9.165492680469502 0 7.113926455299027 7.92324285267031 0 0.6218548884278776 5.423242852670281 0 0.6218548884276744 1.250000000000488 0 0.626753253519994 4.027777777778262 0 0.6180581256684416 3.472222222222707 0 0.618058125668411 2.911969390950479 0 0.6412699200267066 0.6996631868912127 0 4.464046877909449 0.5151080361999166 0 4.716182952214325 0.7062782030755158 0 4.950654976816637 0.9722222222222383 0 9.278312163512645 0.6944444444444697 0 9.278312163512638 4.722222222222205 0 9.518874775675176 5.972222222222226 0 9.278312163512878 6.250000000000004 0 9.278312163512886 6.944444444444832 0 1.820871186480287 6.527777777777988 0 4.467059920266097 6.388888888889101 0 4.226497308103753 7.777777777777773 0 7.594373878376648 0.973579810315327 0 3.024468051142503 0.7014688771510978 0 3.027739805405576 1.527777777778111 0 3.023684247291747 1.805555555555886 0 3.023684247291767 7.77777777777813 0 3.264246859454464 1.944444444444763 0 3.264246859454119 3.61111111111124 0 7.113248654051695 3.750000000000131 0 7.353811266214048 4.444444444444555 0 7.113248654051721 5.416666666666736 0 7.353811266214102 2.638888888889152 0 4.46705992026587 1.250000000000082 0 7.834936490538583 0.9722222222223064 0 7.834936490538555 0.8333333333334356 0 7.594373878376195 0.7010084193536814 0 7.831146777857772 4.444444444444832 0 2.30199641080487 4.444444444444878 0 1.339745962155496 4.583333333333778 0 1.099183349993163 3.194444444444646 0 5.429310368915268 5.138888888889324 0 1.099183349993189 5.000000000000443 0 0.8586207378308428 7.638888888888886 0 9.278312163512982 6.388888888889053 0 5.669872981077799 6.111111111111288 0 5.669872981077788 8.749833170288742 0 4.948281463769799 8.472208780487883 0 4.948192905180074 2.638888888888904 0 8.797186939188034 2.777777777777771 0 9.037749551350393 3.055555555555549 0 9.037749551350416 2.91666666666663 0 9.278312163512757 3.194444444444407 0 9.27831216351278 2.638888888888853 0 9.27831216351273 4.444444444444459 0 9.037749551350434 4.305555555555555 0 9.278312163512773 4.722222222222372 0 6.632123429727049 8.472222222222399 0 5.429310368915608 9.165192998517403 0 5.189598579456026 7.500000000000061 0 8.556624327025949 7.916666666666669 0 8.797186939188338 9.297398040976628 0 2.056724055404608 9.165307080903826 0 2.30121145359884 9.298088353607776 0 1.584619765373119 9.16542213300912 0 1.340464493998319 9.479836633220913 0 2.275409762585737 9.305555555555889 0 2.542559022967587 9.437238865959177 0 5.665712838399648 7.646561105893051 0 0.6311234914559642 7.501278702834433 0 0.8607982987955778 7.361872243750861 0 0.6281663431491753 4.30555555555604 0 0.6180581256684601 9.481561668557946 0 1.357294272396601 9.306577099180132 0 1.104215783860305 9.027740612772629 0 1.100141844278361 9.166830729770258 0 0.8596192258564312 8.888899679543954 0 0.858787147891517 9.02777777777832 0 0.6180581256687968 8.750000000000545 0 0.6180581256687704 9.305555555556095 0 0.6180581256688128 0.5166141851451949 0 1.367787923797265 0.7061129486041291 0 1.595053832020939 0.5165499837608176 0 6.129081052573199 0.7057703436487863 0 5.900656067964505 0.5150388084801539 0 0.844454786715929 0.6975227464259142 0 0.619695710070063 0.5313252705612834 0 2.781260941259482 0.5162101823554326 0 6.645033439533802 9.577970496388552 0 5.421238137486471 9.483488176282037 0 6.645678029380941 9.480778039434274 0 3.289517443309783 9.305555555555951 0 3.02368424729224 0.5889475180152581 0 7.569729209724409 9.438113741217711 0 7.115838123989048 9.304304773984875 0 7.35435581141174 9.027672579953588 0 7.353864297349167 9.166440670100833 0 7.594473474432086 9.578577337825298 0 7.356980274504808 9.444444444444764 0 3.745372083779279 9.730614217603337 0 5.680206618565969 0.8333333333333349 0 9.518874775675005 0.5534599700517315 0 9.526677430861394 0.4154916761634632 0 9.289695385538581 1.111111111111119 0 9.51887477567508 1.666666666666686 0 9.518874775675103 1.94444444444447 0 9.518874775675167 3.055555555555505 0 9.518874775675162 3.333333333333298 0 9.518874775675201 3.47222222222219 0 9.27831216351283 3.611111111111068 0 9.518874775675227 3.749999999999969 0 9.278312163512869 9.297149047322719 0 5.905582093449009 5.277777777777776 0 9.518874775675208 5.555555555555555 0 9.518874775675252 8.333307260228597 0 4.707637585742816 6.111111111111102 0 9.518874775675268 7.22222222222261 0 1.820871186480309 7.361111111111514 0 1.580308574317978 6.388888888888886 0 9.518874775675275 3.888888888888844 0 9.518874775675259 9.43241813609853 0 1.817853603779118 9.306503676221176 0 8.797186939188492 9.4444444444444 0 8.556624327026139 9.300569668769107 0 8.318940317942026 9.451615762869874 0 9.036596353046487 9.306750775292979 0 9.278119963795771 9.586384116479572 0 9.287967204421095 9.447247697095442 0 9.528254571060129 9.588016327870134 0 8.785160543066398 8.611112909554056 0 0.858648472841162 8.472222222222781 0 0.6180581256687118 8.195540475445481 0 0.6273860473135309 8.069986630396206 0 0.4142261978463993 6.666666666666885 0 4.226497308103758 6.527777777777997 0 3.98593469594141 9.027556989889138 0 3.023811719239365 8.888852090907747 0 2.783142880454392 9.026376693072411 0 5.909626676608419 9.481002086680064 0 6.136567114832246 5.555555555555618 0 8.07549910270113 5.833333333333397 0 8.075499102701166 6.527777777778162 0 2.542559022967317 8.472194043889084 0 4.467076189034643 3.611111111111104 0 9.037749551350476 3.888888888888888 0 9.037749551350476 4.027777777777755 0 9.278312163512856 4.16666666666662 0 9.518874775675243 4.444444444444427 0 9.518874775675208 4.30555555555565 0 7.353811266214054 0.6944444444444061 0 9.759437387837314 5.555555555555615 0 7.594373878376448 7.500000000000392 0 1.820871186480322 7.638888888889292 0 2.061433798642697 7.777777777778176 0 1.820871186480349 7.500000000000001 0 7.594373878376651 7.222222222222218 0 7.594373878376652 7.083333333333348 0 7.353811266214273 6.666666666666665 0 9.518874775675297 3.472222222222347 0 7.353811266214035 3.611111111111231 0 7.594373878376386 6.805555555555776 0 4.467059920266107 9.026946796646673 0 8.316541482043466 6.805555555555784 0 3.985934695941419 9.165697188680394 0 8.076058831077747 9.484009240739065 0 8.069511185493953 8.194444444444756 0 3.98593469594153 8.055555555555847 0 4.226497308103864 6.666666666667056 0 2.301996410804972 3.33333333333345 0 7.11324865405168 6.388888888889348 0 0.8586207378308678 6.527777777778259 0 0.618058125668538 6.250000000000484 0 0.6180581256685076 6.805555555556036 0 0.6180581256685688 6.111111111111567 0 0.8586207378308364 5.97222222222271 0 0.6180581256684655 5.695540475445427 0 0.6273860473133356 5.569986630396194 0 0.414226197846265 2.083333333333668 0 3.02368424729178 1.944444444444793 0 2.783121635129429 1.388888888888898 0 9.518874775675121 2.222222222222521 0 3.745372083778824 4.99999999999999 0 9.518874775675181 4.861111111111084 0 9.75943738783756 0.8344273291515909 0 8.074867483920759 0.5162339886830614 0 8.068388376505689 0.6944444444444838 0 8.316061714863213 7.222222222222276 0 8.556624327025947 7.638888888888911 0 7.353811266214292 8.75000000000048 0 1.580308574318128 7.638888888889221 0 3.504809471616796 6.388888888888941 0 8.556624327025895 2.361111111111367 0 4.467059920265863 7.083333333333721 0 2.061433798642658 9.305555555555726 0 6.391560817565009 8.749999999999975 0 7.834936490539048 3.194444444444463 0 8.79718693918808 6.527777777777793 0 9.278312163512933 7.916666666667034 0 3.023684247292133 8.611111111111185 0 6.632123429727327 8.33333333333322 0 9.518874775675368 8.055555555555477 0 9.518874775675341 0.6944444444445962 0 6.872686041889149 0.5714166418651172 0 7.109514581686987 8.194435402538316 0 4.467065140613327 9.425918517103124 0 0.8536658802299064 9.566825936273085 0 0.6371797325232651 5.000000000000172 0 6.150998205402399 4.583333333333504 0 5.910435593240008 4.58333333333338 0 8.316061714863451 4.722222222222266 0 8.556624327025787 9.305555555555561 0 7.834936490539079 7.083333333333436 0 6.39156081756488 6.527777777778127 0 3.023684247292021 6.388888888889262 0 2.783121635129655 6.111111111111473 0 2.783121635129632 7.361111111111132 0 9.278312163512984 7.500000000000297 0 3.745372083779127 7.916665159682528 0 4.467060790324048 6.527777777777893 0 6.391560817564839 2.500000000000115 0 7.113248654051629 2.361111111111246 0 6.872686041889276 2.22222222222234 0 7.113248654051611 2.083333333333469 0 6.872686041889258 2.22222222222237 0 6.632123429726929 1.944444444444567 0 7.113248654051599 2.083333333333643 0 3.504809471616473 7.777777777777843 0 6.632123429727269 7.638888888888975 0 6.391560817564919 7.777777777777883 0 6.150998205402582 0.8333333333333681 0 8.556624327025586 0.5555555555555823 0 8.556624327025595 0.4177539872853245 0 8.78544318970922 8.472222222222284 0 6.872686041889661 7.361111111111316 0 4.948185144590833 6.111111111111185 0 8.075499102701198 4.861111111111381 0 4.467059920265991 5.138888888889158 0 4.467059920266017 5.277777777778027 0 4.707622532428377 5.416666666666935 0 4.467059920266041 5.555555555555793 0 4.707622532428397 5.277777777778063 0 4.226497308103684 5.555555555555844 0 4.226497308103708 5.416666666666975 0 3.985934695941353 5.694444444444731 0 3.985934695941373 7.500000000000345 0 3.264246859454443 8.472222521963118 0 1.099187972495114 0.8347303368001764 0 3.265053419781494 0.5555555555559002 0 3.264246859454027 8.472222222222314 0 6.391560817564983 3.888888888889189 0 3.745372083778891 3.611111111111414 0 3.745372083778877 4.027777777778066 0 3.985934695941249 1.527777777777861 0 7.834936490538615 7.222222222222649 0 1.339745962155632 7.500000000000433 0 1.339745962155662 6.666666666666877 0 4.707622532428447 6.94444444444466 0 4.70762253242846 0.2248432125792565 0 7.381588371894474 7.36151053931839 0 0.2298794617771251 3.888888888888942 0 8.07549910270107 2.500000000000387 0 2.301996410804764 2.22222222222261 0 2.30199641080475 2.083333333333706 0 2.542559022967088 2.916666666667014 0 3.023684247291818 3.055555555555737 0 6.150998205402293 2.916666666666858 0 5.910435593239942 7.083333333333536 0 4.948185144590814 5.972222222222598 0 2.54255902296727 5.694444444444816 0 2.542559022967253 5.555555555555943 0 2.301996410804914 5.833333333333692 0 2.783121635129615 5.555555555555911 0 2.783121635129609 5.694444444444438 0 9.759437387837643 5.972222222222279 0 8.316061714863526 5.972222222222367 0 6.391560817564804 3.611111111111552 0 1.339764629893215 3.472222222222403 0 5.910435593239968 3.333333333333443 0 7.59437387837637 3.333333333333588 0 4.707622532428248 3.472222222222456 0 4.9481851445906 5.146561105892953 0 0.6311234914557191 4.861763510516552 0 0.627981176400251 4.305555555555872 0 3.504809471616577 0.2371228594963523 0 5.695552419285853 2.361111111111216 0 7.353811266213971 5.000000000000387 0 2.3019964108049 5.27777777777816 0 2.301996410804906 5.416666666666661 0 9.759437387837615 6.666666666666759 0 6.632123429727185 3.611111111111499 0 2.301996410804826 3.750000000000377 0 2.542559022967176 3.472222222222597 0 2.54255902296716 5.694444444444787 0 3.023684247291964 2.222222222222447 0 5.188747756752871 2.083333333333568 0 4.948185144590521 1.94444444444467 0 5.188747756752857 1.805555555555789 0 4.948185144590511 0.8333333333336307 0 3.745372083778748 0.6944444444447277 0 3.985934695941086 0.5555555555558525 0 3.745372083778733 0.4169866041135397 0 3.993367979360329 0.4143601209001226 0 3.493745035236073 7.222222222222413 0 5.188747756753171 0.555555555555826 0 4.226497308103421 2.22222222222242 0 5.66987298107756 5.972222222222662 0 1.0991833499932 8.888631303018734 0 3.264395576726219 1.666666666666961 0 3.745372083778793 9.759437387837655 0 4.027777777777777 9.542303115462612 0 4.167507757176843 9.536401914421313 0 4.467510437376479 4.027777777777779 0 0.2405626121623483 5.277777777778085 0 3.745372083778986 2.63888888888929 0 2.061433798642428 1.250000000000185 0 5.910435593239862 3.194045016237644 0 0.6289911596567126 4.166666666667055 0 2.301996410804856 4.861111111111509 0 2.061433798642549 4.027777777777755 0 9.759437387837631 3.055555555555999 0 1.339786217376956 2.500000000000036 0 8.556624327025681 1.944444444444833 0 2.301996410804735 9.759437387837657 0 6.249999999999995 7.500000000000192 0 5.188747756753188 0.2400208594510502 0 4.86010456610979 9.756792841377298 0 2.37886997830342 9.748325988433077 0 3.448849496312807 9.715037519746323 0 1.812748393470789 1.805555555555567 0 9.759437387837572 2.222222222222312 0 9.518874775675298 9.442250505990708 0 5.179461531714844 9.562388246226083 0 4.92740633599551 8.749999999999996 0 0.2405626121623523 6.250000000000348 0 3.023684247291998 3.472222222222515 0 3.985934695941222 0.2405626121623437 0 2.916666666666663 0.4827591755961045 0 2.483624717649957 0.2448876635262988 0 2.355924891392301 0.4646028498830426 0 2.210333657330987 0.4546258182232162 0 1.936590993805914 3.750000000000425 0 1.580311685607429 2.908994449662962 0 0.2274972463750577 4.166666666666874 0 5.188747756752969 4.027777777778004 0 4.948185144590624 4.305555555555753 0 5.429310368915313 9.762085752172815 0 1.243619008019341 4.8615105393183 0 0.2298794617770423 4.305555555555844 0 3.985934695941269 4.58333333333365 0 3.504809471616596 2.222222222222283 0 8.075499102701006 2.500000000000065 0 8.075499102701015 1.250000000000003 0 9.759437387837574 3.472222222222204 0 9.759437387837613 6.527777777777866 0 7.353811266214192 1.527777777777945 0 6.391560817564561 0.2405626121623416 0 8.194444444444434 4.722222222222389 0 6.150998205402368 4.027777777777926 0 6.391560817564676 8.749999999999954 0 9.759437387837684 1.66666666666702 0 2.783121635129407 2.916666666666637 0 9.759437387837556 2.777777777777743 0 9.518874775675112 3.055555555555891 0 3.264246859454168 3.194444444444791 0 3.023684247291833 3.33333333333367 0 3.264246859454179 3.47222222222257 0 3.023684247291845 2.500000000000304 0 3.745372083778833 2.3611111111114 0 3.985934695941172 6.11111111111134 0 4.226497308103747 9.764147686959348 0 2.912928951486624 9.486131487267118 0 2.781367293272486 1.250000000000435 0 1.580308574317661 1.521201591775029 0 0.6233040764027959 1.797883338552183 0 0.6313650227848042 1.374640485882265 0 0.4143622635433111 1.943165741610942 0 0.8608385540167506 2.075265327357447 0 0.6416546404976216 2.212992220417198 0 0.8690434021901523 2.358476746476781 0 1.103243973817313 0.2405626121623438 0 1.25 2.360015080110581 0 0.2312346905174905 2.485568925159804 0 0.4443945399845349 2.082643653962253 0 0.2244533643198925 6.805555555555551 0 9.759437387837652 2.222222222222547 0 3.26424685945413 3.333333333333719 0 2.301996410804811 0.2399193465026356 0 0.6964941945119546 0.7059807042926806 0 0.2210687734858305 3.472222222222218 0 0.2405626121623451 2.500000000000416 0 1.820871186480076 2.361111111111513 0 2.061433798642412 6.249999999999998 0 0.2405626121623486 0.9745446193360112 0 5.427969532316466 7.916666666667081 0 2.061433798642749 1.944444444444643 0 5.669872981077546 3.750000000000484 0 0.6180581256684291 2.499999999999998 0 9.037749551350371 0.239102812238416 0 5.416851329140229 0.4573484735256459 0 5.559178278543709 0.2405626121623489 0 6.249999999999997 0.9723557734331647 0 0.6230177924205343 6.249999999999991 0 9.759437387837636 0.9780540119641874 0 2.063559185736941 0.8501294125231003 0 1.818701607552266 6.805555555555944 0 2.542559022967353 2.222222222222577 0 2.78312163512944 1.80534243841702 0 1.099552986024019 6.52777777777817 0 2.061433798642608 0.2387813660830613 0 7.925556136169726 4.583350662406621 0 0.2356031828792416 3.055555555555915 0 2.783121635129482 3.194444444444873 0 1.580315283521361 3.333333333333775 0 1.339811692678563 9.787257712329392 0 4.589414711037866 2.083333333333492 0 6.391560817564579 8.74999595397246 0 1.099376226969621 3.888888888889328 0 1.33975481112563 1.111293443747544 0 8.075393832904226 1.80555555555581 0 4.467059920265829 1.944444444444863 0 1.820871186480044 5.694444444444619 0 5.910435593240099 0.8342031237413551 0 4.225995134377382 9.754924349345892 0 6.799360376004519 9.755378170440196 0 7.919767842834763 8.055555555555552 0 7.594373878376656 1.111248812170403 0 1.339801183271598 6.805555555555609 0 7.83493649053891 4.166666666666916 0 4.70762253242829 7.222222222222554 0 3.264246859454421 0.9771269706827402 0 1.582468945415914 1.805555555555861 0 3.504809471616456 6.805555555555542 0 0.2405626121623387 2.083333333333544 0 5.429310368915208 0.2493454608981729 0 6.796083275770266 0.2405626121623464 0 4.583333333333331 3.333333333333695 0 2.783121635129496 3.472222222222352 0 6.872686041889347 4.305555555555978 0 1.580308574317831 6.666666666666831 0 5.669872981077818 6.111111111111312 0 5.188747756753118 5.833333333333532 0 5.188747756753103 0.6942928540613696 0 3.50309982560758 1.111256076179339 0 4.226413612482441 5.000000000000281 0 4.226497308103658 5.833333333333628 0 3.745372083779033 0.4539576619230848 0 5.279895886801656 4.027777777778152 0 2.542559022967191 5.277777777778132 0 2.7831216351296 9.759437387837668 0 8.194444444444422 5.972222222222311 0 7.834936490538835 7.2222222222223 0 6.632123429727239 2.083333333333738 0 2.061433798642398 5.277777777778207 0 1.339745962155536 4.444444444444777 0 3.264246859454243 3.333333333333321 0 9.037749551350446 6.250000000000115 0 6.872686041889494 7.361111111111253 0 5.910435593240212 1.666666666666887 0 5.188747756752848 5.277777777777917 0 6.632123429727103 5.000000000000151 0 6.632123429727077 5.13888888888901 0 6.87268604188943 3.055555555555655 0 7.594373878376354 4.722222222222286 0 7.594373878376409 4.58333333333371 0 2.542559022967221 4.305555555555934 0 2.542559022967205 4.722222222222609 0 2.301996410804886 5.416666666666869 0 5.4293103689154 5.138888888889233 0 3.023684247291939 2.777777777778058 0 4.22649730810353 1.66666666666691 0 4.707622532428164 1.527777777777819 0 8.797186939187988 5.000000000000428 0 1.339745962155524 4.861111111111159 0 8.316061714863451 4.166666666666968 0 3.745372083778912 1.388888888888914 0 9.037749551350322 7.777777526613978 0 4.226497453113479 7.777777777778075 0 3.74537208377915 4.166666666667103 0 1.339748524986121 3.194444444444573 0 6.872686041889331 3.055555555555748 0 5.669872981077605 0.7110384511444057 0 7.34424029863691 0.9749878900056507 0 7.352216104951044 5.69444444444466 0 4.94818514459075 9.305477943663202 0 0.2327001935409526 4.166666666666853 0 5.669872981077652 2.916666666666873 0 5.429310368915253 1.666666666667058 0 2.301996410804716 8.333333333333652 0 3.745372083779195 0.9741945153275955 0 4.948596783294834 1.80555555555593 0 2.542559022967071 5.833333333333748 0 1.82087118648024 6.944444444444525 0 6.632123429727213 7.916666624806281 0 3.985934720109781 4.305555555555705 0 6.391560817564685 5.694444444444451 0 9.278312163512876 3.055555555555775 0 5.188747756752918 4.444444444444671 0 5.188747756752991 2.500000000000246 0 4.707622532428203 3.333333333333551 0 5.188747756752933 7.500000000000367 0 2.783121635129757 4.444444444444905 0 0.8586213186451437 5.416666666666721 0 7.834936490538778 3.888888888889252 0 2.783121635129524 0.8514947710468104 0 5.180070978902982 4.305555555556004 0 1.099185542750582 3.611111111111474 0 2.783121635129509 3.333333333333638 0 3.745372083778876 3.611111111111447 0 3.26424685945419 7.083333333333564 0 4.467059920266125 3.750000000000018 0 8.797186939188112 6.527777777778191 0 1.580308574317916 7.08333333333338 0 8.316061714863608 3.611111111111326 0 5.188747756752948 6.666666666666696 0 9.037749551350601 7.638888888889248 0 3.023684247292111 8.055555555555959 0 1.820871186480405 6.944444444444909 0 0.8586207378309305 7.08336635484563 0 0.6229926116596299 6.250000000000239 0 3.985934695941406 4.86111111111155 0 1.099183349993177 2.500000000000275 0 4.22649730810352 8.194437858638077 0 4.948188946908157 8.611111111111512 0 2.30199641080516 2.36111111111113 0 8.797186939188016 3.333333333333403 0 8.075499102701043 8.194444444444422 0 8.316061714863695 2.08333333333338 0 8.316061714863327 1.388919277661684 0 8.075481557734825 5.833333333333557 0 4.707622532428411 2.638888888888938 0 8.316061714863361 3.19444444444463 0 5.910435593239958 8.888675691552017 0 7.113370459448985 3.888888888889138 0 4.707622532428274 4.027777777777846 0 7.834936490538734 1.944444444444687 0 4.707622532428175 8.749964467110569 0 6.872706342789172 2.500000000000149 0 6.632123429726949 5.833333333333329 0 9.518874775675258 6.527777777777961 0 5.429310368915468 5.694444444444845 0 2.061433798642574 5.416666666667066 0 2.061433798642567 5.138888888889123 0 4.948185144590699 6.666666666667064 0 1.820871186480272 5.13888888888893 0 8.797186939188133 7.638888888889031 0 5.910435593240226 4.722330955456838 0 0.8602746764218452 2.222222222222463 0 4.707622532428189 3.333333333333507 0 6.150998205402301 2.083333333333442 0 7.353811266213953 4.166666666666785 0 7.113248654051707 1.389055124165911 0 2.783217611111117 4.58333333333349 0 6.391560817564701 3.472222222222542 0 3.50480947161653 1.111111111111441 0 3.264246859454051 6.111111111111258 0 6.150998205402474 5.972222222222388 0 5.910435593240117 2.361111111111271 0 6.391560817564592 6.250000000000192 0 5.429310368915455 2.361111111111118 0 9.278312163512723 6.111111111111191 0 8.556624327025862 6.250000000000044 0 8.797186939188219 1.250153136238766 0 3.023772660540194 1.666666666666798 0 7.113248654051581 1.805555555555696 0 6.872686041889248 4.722222222222413 0 5.669872981077686 2.361111111111159 0 8.316061714863343 6.388888888889177 0 3.745372083779042 3.750000000000231 0 4.948185144590613 1.944444444444591 0 6.632123429726914 5.694444444444533 0 7.35381126621413 5.833333333333515 0 5.669872981077763 9.027578532019078 0 7.835046377944344 9.024428704798812 0 3.98848475594818 8.888662291262076 0 2.301865584604124 8.055555555555935 0 2.783121635129798 2.083333333333361 0 9.278312163512759 8.888779556857784 0 1.339904967521745 6.666666666666939 0 3.745372083779066 4.444444444444631 0 5.669872981077665 7.361111111111208 0 6.391560817564901 2.36111111111112 0 9.759437387837561 1.388888888889058 0 6.632123429726886 5.972222222222411 0 5.429310368915442 1.250000000000018 0 9.278312163512691 5.416666666667037 0 2.542559022967255 8.749946934139821 0 7.353840405636317 4.583366354845616 0 0.6230563590849337 5.833333333333378 0 8.556624327025839 7.916666666666679 0 7.353811266214305 4.583333333333317 0 9.759437387837616 4.583333333333419 0 7.353811266214064 5.416666666666892 0 4.948185144590724 8.472222222222168 0 8.797186939188384 6.805555555555942 0 2.061433798642633 4.861111111111275 0 6.391560817564725 1.666666666666823 0 6.632123429726903 5.694444444444511 0 7.834936490538807 8.194444444444807 0 3.023684247292155 7.500000000000115 0 6.150998205402564 3.472222222222317 0 7.834936490538716 7.499999999999991 0 9.518874775675327 4.861111111111144 0 8.797186939188119 1.250000000000186 0 6.391560817564533 5.694444444444632 0 5.429310368915426 8.333333333333476 0 5.669872981077939 9.027507280882821 0 2.542409933287059 6.388888888888924 0 9.037749551350579 9.319275535147673 0 4.018552631166973 6.388888888889 0 6.632123429727166 4.305555555555577 0 8.797186939188109 8.888791637887399 0 7.594422487379608 9.027976981067248 0 9.278280130226854 8.194444444444606 0 5.429310368915603 0.5512165959648843 0 9.036739770720304 3.750000000000083 0 7.834936490538726 4.166666666666671 0 9.037749551350462 5.277777777777874 0 7.113248654051763 3.888888888888986 0 7.594373878376381 6.25000000000013 0 6.391560817564825 4.722222222222329 0 7.11324865405174 4.027777777777883 0 7.353811266214044 5.555555555555763 0 5.188747756753075 7.7777777777778 0 8.556624327025999 7.639102006028342 0 1.099546276820795 7.638888888889306 0 1.580308574318011 1.111248122990312 0 6.150985835362013 5.694444444444692 0 4.467059920266047 5.555555555555657 0 7.113248654051786 0.974269719281954 0 5.908791240647087 9.173526493343108 0 2.782829182752188 7.222567698386861 0 0.8614907819036538 4.583333333333361 0 8.797186939188112 7.361417327134415 0 1.100085105304098 0.8499389291962223 0 5.673140772288441 5.833333333333589 0 4.226497308103729 6.66666666666675 0 7.113248654051874 9.444444444444384 0 7.594373878376749 7.916666666666622 0 9.759437387837677 4.861111111111238 0 6.872686041889403 6.527777777777871 0 6.872686041889509 5.972222222222486 0 3.985934695941389 8.055555555555546 0 8.556624327026018 8.055555555555516 0 9.037749551350664 7.916666666667092 0 1.580308574318054 6.805555555555605 0 7.353811266214227 8.194444444444418 0 8.797186939188361 7.638888888888921 0 8.316061714863659 8.611081065870295 0 5.188765103381296 7.08333333333335 0 7.834936490538944 7.91666666666662 0 9.278312163513 7.222222222222258 0 8.075499102701297 7.361111111111162 0 8.316061714863642 6.944444444444478 0 7.59437387837659 8.194444444444377 0 9.75943738783768 8.333324987869837 0 5.188752575008998 9.026487738802082 0 4.948754183823571 8.611111111111024 0 9.518874775675368 7.777777777777747 0 9.518874775675332 8.888922089437052 0 9.518869436794335 2.499999999999989 0 9.518874775675044 8.888637138712399 0 5.188878158772209 9.167371812704298 0 9.520399812925419 9.303870006000071 0 9.762565608254247 0.2329165327257747 0 1.803221385050987 9.297019119250789 0 4.947683666924116 0.6952286794362309 0 2.068392637212912 9.573502838894399 0 9.770829741943967 0.4342056280490812 0 0.2610179797418334 0.4248642659001168 0 9.771680725662614 0.7042381777732419 0 5.422190519672732 9.752702527729628 0 0.4262870548698547 0.4565442699389162 0 1.670770715888829 0.452802163295146 0 5.833333333333321 0.4505568793171259 0 0.5555555555555552 0.4568473391377572 0 5.007561117835489 9.549331404283334 0 8.331671653247536 0.4485486573967944 0 8.332277217292473 0.4443824855432793 0 1.109078528188577 9.568196384633627 0 1.056369445320404 0.4436835325131812 0 6.388683649111584 9.556628304161567 0 6.389908788190532 9.274668226104719 0 4.484892728239395 9.409252056154433 0 4.712263570755434 0.4498013281769891 0 4.449723179179257 0.4576485240277843 0 3.04347659316911 9.553806643019655 0 3.040333259043035 9.796186726554375 0 4.859598690557704 0.7269146294709714 0 2.555889158802762 9.551285283228701 0 2.522570525351124 0.441113851401289 0 7.756978978035786 9.544903639922294 0 7.807030419866085 7.783340570038709 0 0.4172442110247441 5.283340570038593 0 0.4172442110245372 2.772214985517314 0 0.4415778029138694 1.247339960303371 0 0.21125236166645 8.19713492944693 0 0.2112296840502817 5.697134929446907 0 0.2112296840502231 2.354726899673881 0 0.6544729581804175 1.661134319711786 0 0.4175486751914219 9.807812971179793 0 0.6944444444444445 9.541951462911712 0 6.907453879760074 0.462357306133875 0 6.903761555659847 9.53807430741058 0 5.874306745319233 9.535482780327598 0 1.616404300134415 9.446547360170985 0 0.4263801563860403 9.166754533867616 0 0.4288421338418836 8.88890353342266 0 0.429232329736652 7.503182140971553 0 0.4257137251288142 8.611111111111718 0 0.4293103689157645 7.22295150944403 0 0.4294375204653934 6.94444444444442 0 0.4293103689152725 6.666666666666903 0 0.4293103689154469 5.003164018765684 0 0.4256828640038125 6.388888888889086 0 0.4293103689154019 4.72293325504962 0 0.4285855688434793 6.111111111111111 0 0.4293103689152267 4.444571341680101 0 0.4291960362590058 4.166687816206103 0 0.4292913134726344 3.888892413812288 0 0.4293071930082324 3.611111698598503 0 0.4293098395974912 3.333333333333327 0 0.4293103689151862 3.052500270024361 0 0.4348681850083126 1.940001190274152 0 0.4270891057430948 0.8363851856912602 0 0.4285290318335272 8.333333333333901 0 0.429666280616099 5.833333333333796 0 0.4296662806160225 2.218042191651364 0 0.434855951971242 1.523254766881999 0 0.2102869624752116 7.92123027130345 0 0.2102097612285986 5.421230271303417 0 0.210209761228517 2.632613632179494 0 0.6535988172008059 1.11111111111161 0 0.4296662806161799 0.1878571138611373 0 8.74999999999998 0.1872861973824529 0 4.027777777777771 9.817590732165442 0 9.297546978797074 0.183781187003043 0 9.298136821720247 9.538504359070325 0 3.547814783869402 9.814622978967002 0 5.416666666666661 9.814750869532181 0 7.361111111111099 9.534861648207738 0 2.014830665826442 0.4669776580968114 0 7.3247642017685 9.818280840188992 0 8.74999999999998 9.550600550985264 0 3.943839543635188 0.1813323727394367 0 3.479779071210002 9.796652553453084 0 9.796652553453084 0.2033474465469151 0 9.796652553453091 0.2033474465469103 0 0.2033474465469103 9.798066870956932 0 0.2019331290430742 0.6340196174878086 0 5.677699794360542 0.6325282257451187 0 1.817901957296172 9.360936350455999 0 4.291912923955717 0.6249302287552124 0 0.4171734101373619 0.6344984786887795 0 5.15225970417497 0.6368274863628656 0 2.346163033295811 9.61829733113712 0 4.711238749144599 9.635955316792531 0 0.8267986005048267 0.3851737608145452 0 7.51918588001528 2 4 0 1453 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 0.2352435652847727 1 5.138888888888882 5.138888888888884 1 9.759437387837657 5.143586164605485 1 0.2185584744500771 9.743738911182573 1 5.157118213105959 0.2469135467042241 1 3.74835088128526 9.72136613148775 1 3.745936434230825 3.749999999999996 1 9.759437387837657 3.749999999999996 1 0.2405626121623436 6.527777777777783 1 9.759437387837632 0.2405626121623432 1 6.527777777777771 6.527777777777771 1 0.2405626121623432 9.759437387837657 1 6.527777777777771 2.632312702885713 1 0.23676584940317 9.76415029362817 1 2.642500529207705 2.638888888888861 1 9.759437387837551 0.2578942833171624 1 2.638493149307809 7.638888888888879 1 9.759437387837661 0.2198410795312892 1 7.644972448280944 7.643586164605535 1 0.2185584744501665 9.735130788432256 1 7.616562702085884 0.2474069315981424 1 1.520386322198025 9.750308223627425 1 1.509505465652448 1.527777777777789 1 9.759437387837561 9.738580559635365 1 8.510861926919539 1.800858279839017 1 0.2185584744500864 8.472222222222168 1 9.759437387837686 0.2638891336615845 1 8.510861926919345 8.473934057395946 1 0.2350937807868451 0.9705103870485723 1 0.2350937807868264 9.753152113081264 1 9.030830361524643 9.759437387837655 1 4.305555555555552 4.305555555555575 1 9.759437387837654 9.744367319487608 1 5.98346506134929 5.973934057395921 1 0.2350937807868175 0.2482471571959377 1 5.978870071270716 0.2640071647305091 1 4.269090841770645 7.083333333333324 1 9.759437387837657 9.752168610367535 1 3.180855243690468 4.305555555555554 1 0.2405626121623432 3.194444444444426 1 9.759437387837592 5.972222222222227 1 9.759437387837581 3.194444444444442 1 0.2405626121623436 0.259330304708296 1 3.2274686930598 9.734719409340375 1 7.099640020054338 9.027777777777713 1 9.759437387837675 9.02777777777777 1 0.2405626121623447 0.2415524563496551 1 2.079779023269111 0.2803698011060558 1 7.095490439419026 0.2518316901181952 1 9.032051395023139 0.2065892093676355 1 0.9684888182022822 7.083333333333323 1 0.2405626121623436 9.749617910996305 1 2.11141751389196 2.083333333333353 1 9.759437387837608 9.793410790632638 1 0.9684888182023231 0.9722222222222188 1 9.75943738783749 9.582055531137254 1 0.214745462797982 9.748417431266377 1 9.557826216928541 0.2515825687335569 1 9.557826216928422 0.4179444688629204 1 0.214745462797927 7.361111111111109 1 9.759437387837657 7.222222222222233 1 9.518874775675314 6.944444444444454 1 9.518874775675309 7.083333333333353 1 9.278312163512972 6.805555555555577 1 9.278312163512938 6.944444444444475 1 9.037749551350615 7.22222222222225 1 9.037749551350629 7.083333333333371 1 8.797186939188281 6.805555555555596 1 8.797186939188268 6.944444444444493 1 8.556624327025926 6.666666666666715 1 8.55662432702592 6.805555555555611 1 8.316061714863579 6.527777777777833 1 8.316061714863569 6.666666666666734 1 8.075499102701237 6.388888888888958 1 8.075499102701219 6.527777777777859 1 7.834936490538883 6.250000000000083 1 7.834936490538866 6.388888888888983 1 7.594373878376534 6.111111111111208 1 7.594373878376516 6.250000000000107 1 7.353811266214181 5.972222222222319 1 7.35381126621416 6.11111111111123 1 7.113248654051834 5.833333333333448 1 7.113248654051816 5.972222222222351 1 6.872686041889485 5.694444444444573 1 6.872686041889464 5.833333333333475 1 6.632123429727134 5.555555555555697 1 6.632123429727118 5.694444444444598 1 6.391560817564785 5.416666666666822 1 6.39156081756477 5.555555555555722 1 6.150998205402434 5.277777777777946 1 6.15099820540242 5.416666666666847 1 5.910435593240081 5.13888888888907 1 5.910435593240067 5.277777777777972 1 5.669872981077729 5.000000000000198 1 5.669872981077714 5.138888888889099 1 5.429310368915379 4.861111111111322 1 5.429310368915362 5.000000000000224 1 5.188747756753028 4.861111111111294 1 5.910435593240043 4.722222222222447 1 5.188747756753011 5.277777777777997 1 5.188747756753048 4.861111111111346 1 4.948185144590676 4.583333333333571 1 4.948185144590659 4.722222222222475 1 4.707622532428324 4.444444444444696 1 4.707622532428308 4.305555555555793 1 4.948185144590644 4.583333333333599 1 4.467059920265973 4.30555555555582 1 4.467059920265958 5.833333333333496 1 6.150998205402452 4.444444444444722 1 4.226497308103622 4.7222222222225 1 4.226497308103636 4.166666666666945 1 4.226497308103605 5.416666666666785 1 6.872686041889445 4.583333333333623 1 3.985934695941285 4.8611111111114 1 3.9859346959413 6.388888888888998 1 7.113248654051842 4.722222222222526 1 3.745372083778949 5.000000000000302 1 3.745372083778965 4.861111111111428 1 3.504809471616612 5.138888888889205 1 3.504809471616629 5.000000000000331 1 3.264246859454277 5.277777777778108 1 3.264246859454293 4.722222222222554 1 3.26424685945426 5.416666666666982 1 3.504809471616644 5.555555555555885 1 3.264246859454309 5.69444444444476 1 3.504809471616664 5.833333333333663 1 3.264246859454327 5.972222222222536 1 3.504809471616682 6.111111111111441 1 3.264246859454344 6.250000000000314 1 3.504809471616694 6.388888888889218 1 3.264246859454359 6.527777777778089 1 3.504809471616709 6.666666666666995 1 3.264246859454379 6.805555555555866 1 3.50480947161673 6.944444444444501 1 8.075499102701253 6.944444444444773 1 3.2642468594544 7.083333333333645 1 3.504809471616753 6.944444444444729 1 3.745372083779084 5.833333333333412 1 7.594373878376484 5.416666666667011 1 3.023684247291951 6.805555555555905 1 3.023684247292046 7.083333333333681 1 3.023684247292069 7.222222222222516 1 3.745372083779105 7.083333333333599 1 3.985934695941439 7.361111111111387 1 3.985934695941459 7.222222222222479 1 4.226497308103792 7.361111111111153 1 8.797186939188286 6.944444444444814 1 2.783121635129716 7.222222222222588 1 2.783121635129738 7.500000000000259 1 4.226497308103815 7.361111111111352 1 4.467059920266147 7.083333333333724 1 2.542559022967385 7.361111111111495 1 2.542559022967406 7.638888888889166 1 3.985934695941483 7.638888888889132 1 4.467059920266167 7.500000000000225 1 4.7076225324285 7.777777777778002 1 4.70762253242852 7.638888888889098 1 4.948185144590854 7.222222222222618 1 2.301996410805043 6.94444444444483 1 2.301996410805004 7.500000000000405 1 2.301996410805057 7.63888888888927 1 2.542559022967424 7.777777777778184 1 2.301996410805078 7.222222222222443 1 4.707622532428475 7.916666666666899 1 4.948185144590887 7.777777777777974 1 5.18874775675321 7.916666666667053 1 2.542559022967449 6.25000000000006 1 8.316061714863554 8.055555555555761 1 5.188747756753253 7.91666666666684 1 5.429310368915569 7.638888888889067 1 5.429310368915543 7.777777777777938 1 5.669872981077894 7.361111111111503 1 2.061433798642672 6.111111111111395 1 3.745372083779047 8.05555555555596 1 2.301996410805115 8.055555555555705 1 5.669872981077917 7.916666666666801 1 5.910435593240246 8.055555555555829 1 4.70762253242857 7.500000000000161 1 5.669872981077875 8.194444444444834 1 2.542559022967469 8.194444444444578 1 5.910435593240269 8.055555555555674 1 6.150998205402599 8.333333333333737 1 2.30199641080514 8.194444444444859 1 2.06143379864278 8.333333333333453 1 6.150998205402627 8.194444444444535 1 6.391560817564958 7.91666666666675 1 6.391560817564933 8.055555555555621 1 6.632123429727288 8.333333333333401 1 6.632123429727316 8.194444444444491 1 6.872686041889644 7.916666666666714 1 6.872686041889622 8.055555555555584 1 7.113248654051969 8.333333333333364 1 7.113248654051995 8.194444444444454 1 7.353811266214318 8.472222222222349 1 5.910435593240288 8.472222222222644 1 2.061433798642808 8.333333333333762 1 1.820871186480449 8.472222222222607 1 2.542559022967492 8.333333333333705 1 2.783121635129824 8.472222222222229 1 7.353811266214344 8.333333333333329 1 7.594373878376676 7.777777777777809 1 7.113248654051949 8.611111111111102 1 7.594373878376691 8.472222222222209 1 7.83493649053903 8.19444444444443 1 7.834936490539019 8.333333333333307 1 8.075499102701368 8.611111111111484 1 2.783121635129842 8.472222222222582 1 3.023684247292176 8.611111111111086 1 8.075499102701384 8.472222222222182 1 8.316061714863723 7.638888888888935 1 6.872686041889606 8.611111111111228 1 6.150998205402644 5.972222222222567 1 3.023684247291979 6.944444444444678 1 4.22649730810377 5.000000000000252 1 4.707622532428346 4.444444444444746 1 3.745372083778931 5.138888888889046 1 6.391560817564759 5.138888888889184 1 3.985934695941324 6.111111111111249 1 6.632123429727152 7.777777777778152 1 2.783121635129778 5.555555555555745 1 5.669872981077747 4.027777777778043 1 4.467059920265942 3.888888888889167 1 4.226497308103588 3.750000000000265 1 4.467059920265923 3.61111111111139 1 4.226497308103575 3.472222222222489 1 4.467059920265911 3.333333333333614 1 4.226497308103561 3.194444444444711 1 4.467059920265896 3.055555555555836 1 4.226497308103545 3.194444444444738 1 3.98593469594121 2.91666666666696 1 3.985934695941193 3.055555555555862 1 3.745372083778859 2.916666666666933 1 4.467059920265879 3.055555555555808 1 4.707622532428232 2.77777777777803 1 4.707622532428216 2.916666666666905 1 4.948185144590568 2.777777777778084 1 3.745372083778843 2.916666666666988 1 3.504809471616506 2.638888888889127 1 4.948185144590553 2.777777777778 1 5.188747756752903 2.638888888889208 1 3.504809471616491 2.777777777778112 1 3.264246859454154 2.500000000000225 1 5.188747756752888 2.638888888889099 1 5.42931036891524 2.500000000000331 1 3.26424685945414 2.638888888889236 1 3.023684247291803 2.361111111111426 1 3.504809471616481 2.361111111111345 1 4.948185144590537 2.361111111111452 1 3.023684247291791 2.500000000000359 1 2.783121635129452 2.777777777778137 1 2.783121635129467 2.638888888889261 1 2.542559022967115 2.91666666666704 1 2.542559022967131 2.361111111111485 1 2.542559022967102 2.361111111111322 1 5.429310368915222 2.500000000000197 1 5.669872981077575 2.777777777777976 1 5.66987298107759 2.638888888889075 1 5.910435593239927 2.361111111111296 1 5.910435593239911 2.500000000000173 1 6.15099820540226 2.777777777777952 1 6.150998205402278 2.638888888889049 1 6.391560817564613 2.916666666666828 1 6.391560817564629 2.777777777777924 1 6.632123429726967 3.055555555555698 1 6.632123429726983 2.916666666666794 1 6.872686041889318 2.63888888888902 1 6.872686041889302 2.777777777777894 1 7.113248654051652 3.055555555555671 1 7.113248654051668 2.916666666666773 1 7.353811266214004 3.19444444444456 1 7.353811266214021 2.638888888888993 1 7.353811266213985 2.777777777777874 1 7.594373878376341 2.500000000000096 1 7.594373878376327 2.222222222222396 1 6.150998205402244 2.777777777778164 1 2.301996410804779 3.055555555555942 1 2.301996410804795 2.638888888888971 1 7.834936490538679 2.361111111111193 1 7.834936490538665 2.222222222222316 1 7.59437387837631 2.083333333333415 1 7.834936490538646 2.916666666667068 1 2.061433798642444 3.194444444444845 1 2.06143379864246 1.944444444444545 1 7.594373878376293 3.194444444444605 1 6.391560817564643 1.805555555555639 1 7.834936490538628 1.944444444444509 1 8.075499102700981 3.194444444444817 1 2.542559022967147 3.05555555555597 1 1.820871186480108 2.777777777778193 1 1.820871186480092 3.333333333333747 1 1.820871186480123 1.666666666666768 1 7.594373878376274 1.666666666666734 1 8.075499102700965 1.805555555555604 1 8.316061714863313 3.194444444444766 1 3.504809471616519 2.916666666667096 1 1.580308574317757 2.63888888888932 1 1.58030857431774 1.52777777777783 1 8.316061714863295 1.805555555555669 1 7.353811266213938 1.527777777777897 1 7.353811266213919 1.666666666666705 1 8.556624327025645 1.944444444444481 1 8.556624327025661 1.388888888888933 1 8.556624327025627 1.388888888888991 1 7.594373878376253 2.916666666666748 1 7.834936490538691 2.777777777777846 1 8.075499102701031 3.055555555555622 1 8.075499102701038 2.916666666666719 1 8.316061714863377 3.194444444444496 1 8.316061714863388 3.055555555555592 1 8.556624327025734 3.333333333333369 1 8.556624327025744 3.472222222222272 1 8.316061714863398 3.611111111111151 1 8.556624327025753 3.750000000000045 1 8.316061714863412 3.888888888888926 1 8.556624327025766 4.027777777777821 1 8.316061714863425 4.1666666666667 1 8.556624327025776 4.305555555555601 1 8.316061714863443 4.166666666666716 1 8.075499102701086 4.444444444444477 1 8.556624327025816 4.444444444444497 1 8.075499102701102 4.305555555555613 1 7.83493649053875 4.58333333333339 1 7.834936490538756 4.444444444444509 1 7.594373878376412 4.722222222222278 1 8.075499102701109 2.638888888889181 1 3.985934695941181 3.194444444444682 1 4.948185144590584 2.083333333333519 1 5.910435593239897 1.94444444444462 1 6.150998205402235 1.805555555555741 1 5.910435593239886 1.666666666666843 1 6.150998205402225 1.527777777777964 1 5.910435593239876 1.388888888889066 1 6.150998205402215 1.666666666666862 1 5.669872981077538 1.388888888889084 1 5.669872981077526 1.527777777777984 1 5.429310368915189 3.472222222222622 1 2.061433798642475 3.611111111111523 1 1.820871186480139 3.7500000000004 1 2.06143379864249 3.8888888888893 1 1.820871186480153 4.027777777778177 1 2.061433798642505 4.166666666667078 1 1.820871186480168 4.305555555555955 1 2.06143379864252 4.444444444444855 1 1.820871186480184 4.027777777778201 1 1.580308574317816 4.583333333333732 1 2.061433798642534 4.722222222222632 1 1.820871186480197 3.888888888889277 1 2.301996410804841 4.583333333333755 1 1.580308574317846 4.861111111111533 1 1.58030857431786 5.000000000000409 1 1.82087118648021 5.138888888889309 1 1.580308574317873 5.277777777778187 1 1.820871186480219 5.416666666667086 1 1.580308574317884 5.555555555555967 1 1.820871186480231 5.694444444444863 1 1.580308574317894 5.555555555555983 1 1.339745962155545 5.83333333333376 1 1.339745962155554 4.722222222222655 1 1.339745962155511 5.972222222222641 1 1.580308574317901 6.111111111111538 1 1.339745962155558 3.472222222222649 1 1.580308574317787 4.583333333333542 1 5.429310368915338 8.611111111111139 1 7.113248654052013 3.333333333333475 1 6.632123429726996 3.47222222222238 1 6.391560817564656 3.611111111111255 1 6.632123429727008 3.750000000000155 1 6.391560817564672 3.611111111111279 1 6.150998205402318 3.888888888889034 1 6.632123429727018 6.527777777777821 1 8.79718693918824 6.66666666666674 1 7.594373878376542 8.611111111111555 1 1.820871186480474 8.472222222222676 1 1.580308574318118 8.194444444444882 1 1.580308574318091 1.250000000000054 1 8.316061714863274 8.750000000000128 1 5.910435593240301 8.333333333333794 1 1.33974596215577 8.055555555556012 1 1.339745962155761 8.611111111111597 1 1.339745962155785 2.777777777778223 1 1.339745962155404 2.500000000000445 1 1.339745962155388 2.361111111111542 1 1.580308574317724 2.222222222222668 1 1.339745962155372 2.083333333333766 1 1.580308574317708 1.944444444444891 1 1.339745962155357 1.805555555555989 1 1.580308574317692 1.666666666667114 1 1.339745962155341 1.527777777778212 1 1.580308574317676 1.388888888889337 1 1.339745962155325 1.666666666667087 1 1.820871186480028 1.38888888888931 1 1.820871186480012 1.527777777778185 1 2.061433798642363 8.75000000000038 1 2.542559022967515 1.250000000000408 1 2.061433798642348 1.388888888889283 1 2.301996410804699 1.250000000000206 1 5.429310368915175 1.388888888889108 1 5.188747756752838 1.250000000000122 1 7.353811266213892 8.749999999999961 1 8.316061714863741 8.611111111111065 1 8.55662432702607 8.750000000000355 1 3.023684247292194 8.611111111111457 1 3.264246859454524 1.805555555555589 1 8.797186939187995 2.083333333333359 1 8.797186939188006 3.472222222222236 1 8.797186939188105 4.027777777777812 1 8.797186939188174 6.250000000000419 1 1.580308574317906 6.388888888889314 1 1.339745962155568 6.111111111111521 1 1.820871186480247 4.861111111111167 1 7.834936490538761 5.000000000000052 1 8.07549910270111 4.861111111111459 1 3.023684247291924 5.138888888889287 1 2.061433798642559 8.333333333333684 1 3.264246859454512 8.472222222222555 1 3.504809471616863 8.750000000000336 1 3.504809471616873 8.611111111111434 1 3.745372083779213 4.583333333333682 1 3.023684247291907 3.888888888889053 1 6.150998205402332 3.750000000000176 1 5.910435593239983 4.166666666666741 1 7.594373878376396 8.3333333333333 1 8.556624327026039 8.055555555555532 1 8.075499102701357 8.888888888888843 1 8.55662432702608 8.749999999999936 1 8.797186939188414 1.11111111111115 1 8.556624327025606 1.250000000000038 1 8.797186939187972 8.888888888888866 1 8.075499102701404 1.805555555555719 1 6.391560817564571 7.500000000000034 1 7.113248654051938 7.361111111111161 1 6.872686041889591 8.888888888889008 1 6.150998205402658 1.111111111111507 1 2.301996410804684 1.250000000000381 1 2.542559022967033 8.888888888889207 1 3.745372083779226 8.750000000000309 1 3.985934695941559 1.111111111111307 1 5.669872981077513 1.111111111111533 1 1.820871186479997 1.111111111111213 1 7.594373878376224 2.083333333333793 1 1.099183349993021 8.19444444444491 1 1.099183349993425 7.916666666667133 1 1.099183349993418 6.250000000000439 1 1.099183349993209 6.527777777778216 1 1.099183349993228 6.666666666667091 1 1.339745962155583 6.805555555555991 1 1.099183349993248 5.69444444444488 1 1.099183349993203 1.527777777778239 1 1.099183349992989 1.250000000000462 1 1.099183349992974 1.111111111111331 1 5.188747756752822 1.250000000000231 1 4.948185144590486 6.944444444444869 1 1.3397459621556 7.083333333333768 1 1.099183349993267 7.916666666666652 1 7.834936490539011 6.666666666667037 1 2.783121635129691 1.52777777777801 1 4.9481851445905 1.388888888889132 1 4.707622532428151 1.111111111111355 1 4.707622532428136 1.250000000000256 1 4.467059920265801 1.527777777778033 1 4.467059920265816 1.388888888889158 1 4.226497308103466 1.666666666666935 1 4.226497308103482 1.52777777777806 1 3.98593469594113 1.250000000000282 1 3.985934695941115 1.388888888889183 1 3.745372083778778 1.111111111111406 1 3.745372083778765 1.250000000000308 1 3.504809471616423 1.527777777778084 1 3.504809471616441 7.361111111111288 1 5.429310368915524 7.222222222222383 1 5.669872981077857 7.083333333333511 1 5.429310368915506 6.944444444444606 1 5.669872981077838 6.805555555555734 1 5.429310368915486 7.083333333333479 1 5.910435593240192 6.805555555555703 1 5.910435593240175 3.75000000000029 1 3.985934695941232 8.472222222222536 1 3.98593469594155 8.611111111111416 1 4.226497308103901 8.888888888889195 1 4.226497308103903 8.750000000000307 1 4.467059920266249 7.50000000000003 1 9.037749551350638 1.527777777778152 1 2.542559022967052 7.361111111111425 1 3.504809471616771 5.416666666667101 1 1.099183349993198 3.611111111111173 1 8.075499102701061 6.944444444444574 1 6.150998205402527 8.611111111111237 1 5.669872981077949 8.888888888889015 1 5.669872981077946 8.750000000000147 1 5.42931036891561 3.750000000000139 1 6.872686041889358 4.027777777777916 1 6.872686041889365 4.16666666666681 1 6.632123429727026 4.305555555555692 1 6.872686041889368 1.38888888888903 1 7.113248654051562 1.111111111111255 1 7.113248654051537 7.77777777777822 1 1.33974596215571 7.777777777777769 1 8.075499102701347 7.638888888888875 1 7.834936490539012 9.02262988953623 1 4.470032054928435 0.9722222222222708 1 8.316061714863242 2.638888888889348 1 1.099183349993053 2.916666666667125 1 1.099183349993068 8.05555555555604 1 0.8586207378310667 5.555555555555996 1 0.8586207378308583 1.388888888889364 1 0.8586207378306379 0.9722222222225052 1 3.985934695941101 0.9722222222225363 1 3.504809471616405 9.027777777778116 1 3.504809471616895 9.027777777777914 1 5.429310368915599 0.9722222222222545 1 8.797186939187947 9.027777777777711 1 8.797186939188443 0.9782066921824973 1 2.546014158309321 8.333333333333842 1 0.858620737831068 7.777777777778262 1 0.8586207378310596 5.277777777778219 1 0.8586207378308515 1.111111111111587 1 0.8586207378306225 0.9722222222226846 1 1.099183349992958 1.111111111111137 1 9.037749551350306 1.944444444444464 1 9.037749551350339 2.222222222222231 1 9.037749551350352 6.805555555555964 1 1.580308574317932 1.805555555555837 1 3.985934695941146 1.944444444444712 1 4.226497308103498 5.138888888888944 1 7.834936490538768 5.277777777777833 1 8.075499102701116 5.138888888888939 1 8.316061714863455 5.000000000000059 1 7.59437387837642 5.416666666666718 1 8.316061714863466 5.277777777777817 1 8.556624327025805 5.555555555555593 1 8.556624327025819 5.416666666666697 1 8.797186939188162 5.694444444444473 1 8.79718693918816 5.555555555555593 1 9.037749551350494 5.277777777777816 1 9.037749551350519 5.833333333333369 1 9.037749551350483 1.112108522771458 1 2.783697491019751 2.22222222222264 1 1.82087118648006 8.194444444444771 1 3.504809471616844 4.722222222222585 1 2.783121635129572 4.027777777777953 1 5.910435593239994 3.888888888889076 1 5.669872981077644 3.611111111111299 1 5.669872981077633 3.750000000000199 1 5.429310368915297 4.444444444444809 1 2.783121635129556 4.305555555555904 1 3.02368424729189 4.444444444444583 1 6.632123429727029 4.583333333333471 1 6.872686041889379 2.777777777777812 1 8.556624327025705 2.916666666666677 1 8.797186939188064 7.222222222222346 1 6.150998205402548 6.666666666666793 1 6.150998205402506 6.527777777777924 1 5.910435593240152 6.805555555555661 1 6.391560817564859 1.250000000000164 1 6.872686041889208 0.9722222222223849 1 6.872686041889179 8.888030907515544 1 4.708117888205615 7.222222222222252 1 7.113248654051931 7.638888888888923 1 8.797186939188304 7.777777777777784 1 9.03774955135064 8.888888888888799 1 9.037749551350769 8.611111111111025 1 9.037749551350743 9.156767953098523 1 4.710443760479706 0.8404814502302409 1 2.78724860234377 0.8333333333338091 1 0.8586207378306072 9.166666666666805 1 5.669872981077916 9.146572228791335 1 4.241797668143565 6.666666666667123 1 0.858620737830895 2.777777777778248 1 0.8673158656824166 3.055555555556026 1 0.8600699258060148 0.855926756044515 1 2.313582824012514 0.8333333333334726 1 7.113248654051509 9.166666666666563 1 9.037749551350815 0.8333333333333686 1 9.0377495513503 9.166666666666625 1 8.556624327026118 5.41666666666673 1 9.278312163512849 8.610968114215812 1 4.707705091724773 5.138888888888953 1 9.278312163512879 5.000000000000034 1 9.037749551350547 4.861111111111171 1 9.278312163512918 4.722222222222255 1 9.037749551350583 7.083333333333739 1 1.580308574317954 8.750000000000098 1 6.391560817564998 9.02777777777789 1 6.391560817565014 9.166666666666794 1 6.15099820540269 5.277777777777839 1 7.594373878376428 7.361111111111122 1 7.353811266214295 4.583333333333398 1 9.278312163512945 5.694444444444494 1 8.316061714863492 8.055555555555909 1 3.26424685945449 8.888888888888967 1 6.632123429727347 9.166666666666753 1 6.632123429727374 2.083333333333615 1 3.985934695941162 2.222222222222493 1 4.226497308103512 3.194444444444536 1 7.834936490538703 1.805555555555765 1 5.429310368915197 3.611111111111366 1 4.707622532428263 1.94444444444474 1 3.74537208377881 2.222222222222253 1 8.55662432702567 5.833333333333788 1 0.8586207378308399 5.000000000000035 1 8.556624327025812 3.194444444444902 1 1.099424881322297 3.333333333333804 1 0.8589025243814958 3.472222222222679 1 1.099270569639759 3.611111111111581 1 0.8586822388636643 5.555555555555862 1 3.745372083779003 1.666666666667141 1 0.8586207378306533 6.944444444444635 1 5.188747756753152 6.666666666666858 1 5.188747756753136 6.805555555555756 1 4.948185144590799 6.527777777777979 1 4.948185144590789 6.388888888889086 1 5.188747756753123 6.250000000000203 1 4.948185144590778 6.388888888889098 1 4.707622532428441 6.111111111111321 1 4.707622532428433 6.25000000000021 1 4.467059920266093 5.972222222222447 1 4.467059920266076 5.972222222222429 1 4.948185144590774 3.750000000000456 1 1.09920813677304 3.888888888889358 1 0.8586351191329161 4.027777777778232 1 1.099189878006806 4.166666666667133 1 0.8586242227167642 2.493423813997238 1 0.8725618164168913 4.166666666667031 1 2.783121635129538 4.027777777778129 1 3.023684247291872 4.166666666666999 1 3.264246859454225 3.888888888889222 1 3.264246859454206 3.750000000000349 1 3.023684247291858 4.027777777778093 1 3.504809471616558 0.972222222222479 1 4.467059920265787 0.8333333333335784 1 4.707622532428124 1.80555555555596 1 2.06143379864238 1.388888888889209 1 3.264246859454086 1.666666666666984 1 3.264246859454103 4.027777777777975 1 5.429310368915306 2.083333333333587 1 4.467059920265845 7.916666666666991 1 3.504809471616817 5.138888888888954 1 7.353811266214085 8.055555555555863 1 3.745372083779174 3.472222222222422 1 5.429310368915282 9.027777777777825 1 6.872686041889701 8.333333333333634 1 4.226497308103886 1.666666666666696 1 9.037749551350338 1.805555555555574 1 9.278312163512679 1.5277777777778 1 9.278312163512679 3.750000000000318 1 3.504809471616539 5.000000000000361 1 2.783121635129589 4.861111111111486 1 2.542559022967236 5.138888888889259 1 2.542559022967251 7.083333333333387 1 6.872686041889573 3.333333333333522 1 5.66987298107762 8.750000000000423 1 2.061433798642829 8.888888888889337 1 1.820871186480496 9.027777777778196 1 2.06143379864286 9.166666666667112 1 1.820871186480536 9.027777777778251 1 1.580308574318162 4.861111111111181 1 7.353811266214073 7.361111111111462 1 3.023684247292092 4.166666666666826 1 6.150998205402339 4.305555555555726 1 5.910435593239997 3.888888888889099 1 5.18874775675296 7.500000000000069 1 6.632123429727255 1.527777777777932 1 6.872686041889237 4.444444444444606 1 6.150998205402347 6.388888888889296 1 1.820871186480254 6.2500000000004 1 2.061433798642594 5.972222222222626 1 2.061433798642586 6.111111111111501 1 2.301996410804932 5.833333333333725 1 2.301996410804918 6.388888888889277 1 2.301996410804945 6.250000000000378 1 2.542559022967286 3.888888888889017 1 7.113248654051702 6.388888888889021 1 6.150998205402488 6.250000000000154 1 5.910435593240136 1.111111111111294 1 6.632123429726857 0.8333333333335189 1 6.632123429726823 9.166666666666984 1 3.745372083779245 7.500000000000012 1 8.075499102701331 6.944444444444482 1 7.113248654051906 5.000000000000098 1 7.11324865405175 0.9722222222224299 1 6.391560817564496 5.972222222222261 1 8.797186939188173 6.805555555555616 1 6.872686041889548 7.916666666666666 1 8.316061714863681 6.111111111111154 1 9.037749551350508 8.749999999999908 1 9.278312163513073 8.472222222222129 1 9.278312163513052 8.333333333333258 1 9.0377495513507 8.194444444444345 1 9.278312163513014 7.361111111111111 1 7.83493649053899 0.6944444444444848 1 8.797186939187952 9.297607191551771 1 3.509398461714318 9.165341939333011 1 3.265011691137465 9.305555555555671 1 5.42931036891555 0.6993768720887245 1 6.391115496118539 0.8341554046075667 1 6.150923985161155 0.699401682563262 1 1.101171310179307 0.834159539686842 1 1.340077288853022 9.298511638372542 1 6.876752849371528 9.165492680469502 1 7.113926455299027 7.92324285267031 1 0.6218548884278776 5.423242852670281 1 0.6218548884276744 1.250000000000488 1 0.626753253519994 4.027777777778262 1 0.6180581256684416 3.472222222222707 1 0.618058125668411 2.911969390950479 1 0.6412699200267066 0.6996631868912127 1 4.464046877909449 0.5151080361999166 1 4.716182952214325 0.7062782030755158 1 4.950654976816637 0.9722222222222383 1 9.278312163512645 0.6944444444444697 1 9.278312163512638 5.972222222222261 1 9.278312163512823 6.250000000000036 1 9.278312163512844 4.444444444444483 1 9.03774955135059 4.305555555555621 1 9.278312163512961 6.944444444444832 1 1.820871186480287 4.722222222222308 1 9.518874775675277 6.527777777777988 1 4.467059920266097 6.388888888889101 1 4.226497308103753 7.777777777777773 1 7.594373878376648 0.973579810315327 1 3.024468051142503 0.7014688771510978 1 3.027739805405576 1.527777777778111 1 3.023684247291747 1.805555555555886 1 3.023684247291767 7.77777777777813 1 3.264246859454464 1.944444444444763 1 3.264246859454119 3.61111111111124 1 7.113248654051695 3.750000000000131 1 7.353811266214048 4.444444444444555 1 7.113248654051721 5.416666666666736 1 7.353811266214102 2.638888888889152 1 4.46705992026587 1.250000000000082 1 7.834936490538583 0.9722222222223064 1 7.834936490538555 0.8333333333334356 1 7.594373878376195 0.7010084193536814 1 7.831146777857772 4.444444444444832 1 2.30199641080487 4.444444444444878 1 1.339745962155496 4.583333333333778 1 1.099183349993163 3.194444444444646 1 5.429310368915268 5.138888888889324 1 1.099183349993189 5.000000000000443 1 0.8586207378308428 7.638888888888886 1 9.278312163512982 6.388888888889053 1 5.669872981077799 6.111111111111288 1 5.669872981077788 8.749833170288742 1 4.948281463769799 8.472208780487883 1 4.948192905180074 2.638888888888903 1 8.797186939188036 2.777777777777771 1 9.037749551350393 3.055555555555543 1 9.037749551350419 2.916666666666631 1 9.278312163512755 3.194444444444406 1 9.27831216351278 2.638888888888853 1 9.27831216351273 4.722222222222372 1 6.632123429727049 8.472222222222399 1 5.429310368915608 9.165192998517403 1 5.189598579456026 7.500000000000061 1 8.556624327025949 7.916666666666669 1 8.797186939188338 9.297398040976628 1 2.056724055404608 9.165307080903826 1 2.30121145359884 9.298088353607776 1 1.584619765373119 9.16542213300912 1 1.340464493998319 9.479836633220913 1 2.275409762585737 9.305555555555889 1 2.542559022967587 9.437238865959177 1 5.665712838399648 7.646561105893051 1 0.6311234914559642 7.501278702834433 1 0.8607982987955778 7.361872243750861 1 0.6281663431491753 4.30555555555604 1 0.6180581256684601 9.481561668557946 1 1.357294272396601 9.306577099180132 1 1.104215783860305 9.027740612772629 1 1.100141844278361 9.166830729770258 1 0.8596192258564312 8.888899679543954 1 0.858787147891517 9.02777777777832 1 0.6180581256687968 8.750000000000545 1 0.6180581256687704 9.305555555556095 1 0.6180581256688128 0.5166141851451949 1 1.367787923797265 0.7061129486041291 1 1.595053832020939 0.5165499837608176 1 6.129081052573199 0.7057703436487863 1 5.900656067964505 0.5751052903719609 1 0.8529920532785358 0.6944444444449336 1 0.6180581256682559 0.4333446983066299 1 0.6370674280311791 0.5313252705612834 1 2.781260941259482 0.5162101823554326 1 6.645033439533802 9.577970496388552 1 5.421238137486471 9.483488176282037 1 6.645678029380941 9.480778039434274 1 3.289517443309783 9.305555555555951 1 3.02368424729224 0.5889475180152581 1 7.569729209724409 9.438113741217711 1 7.115838123989048 9.304304773984875 1 7.35435581141174 9.027672579953588 1 7.353864297349167 9.166440670100833 1 7.594473474432086 9.578577337825298 1 7.356980274504808 9.444444444444764 1 3.745372083779279 9.730614217603337 1 5.680206618565969 0.8333333333333349 1 9.518874775675005 0.5534599700517315 1 9.526677430861394 0.4154916761634632 1 9.289695385538581 1.111111111111119 1 9.51887477567508 1.666666666666686 1 9.518874775675103 1.94444444444447 1 9.518874775675167 3.055555555555504 1 9.518874775675162 3.333333333333297 1 9.518874775675201 3.472222222222207 1 9.278312163512846 4.166666666666712 1 9.037749551350581 4.027777777777834 1 9.278312163512965 3.888888888888931 1 9.037749551350576 6.111111111111136 1 9.518874775675204 5.833333333333351 1 9.518874775675179 5.694444444444439 1 9.75943738783757 3.611111111111093 1 9.518874775675251 5.277777777777815 1 9.518874775675247 9.297149047322719 1 5.905582093449009 6.388888888888903 1 9.518874775675245 4.583333333333345 1 8.797186939188235 8.333307260228597 1 4.707637585742816 7.22222222222261 1 1.820871186480309 7.361111111111514 1 1.580308574317978 9.43241813609853 1 1.817853603779118 9.306503676221176 1 8.797186939188492 9.4444444444444 1 8.556624327026139 9.300569668769107 1 8.318940317942026 9.451615762869874 1 9.036596353046487 9.306750775292979 1 9.278119963795771 9.586384116479572 1 9.287967204421095 9.447247697095442 1 9.528254571060129 9.588016327870134 1 8.785160543066398 8.611112909554056 1 0.858648472841162 8.472222222222781 1 0.6180581256687118 8.195540475445481 1 0.6273860473135309 8.069986630396206 1 0.4142261978463993 6.666666666666885 1 4.226497308103758 6.527777777777997 1 3.98593469594141 9.027556989889138 1 3.023811719239365 8.888852090907747 1 2.783142880454392 9.026376693072411 1 5.909626676608419 9.481002086680064 1 6.136567114832246 5.555555555555618 1 8.07549910270113 5.833333333333396 1 8.075499102701166 6.527777777778162 1 2.542559022967317 8.472194043889084 1 4.467076189034643 4.30555555555565 1 7.353811266214054 0.6944444444444061 1 9.759437387837314 5.555555555555615 1 7.594373878376448 3.33333333333332 1 9.037749551350442 3.611111111111131 1 9.037749551350505 7.500000000000392 1 1.820871186480322 7.638888888889292 1 2.061433798642697 7.777777777778176 1 1.820871186480349 7.500000000000001 1 7.594373878376651 7.222222222222218 1 7.594373878376652 7.083333333333348 1 7.353811266214273 3.472222222222347 1 7.353811266214035 3.611111111111231 1 7.594373878376386 6.805555555555776 1 4.467059920266107 9.026946796646673 1 8.316541482043466 6.805555555555784 1 3.985934695941419 9.165697188680394 1 8.076058831077747 9.484009240739065 1 8.069511185493953 5.138888888888898 1 8.797186939188181 8.194444444444756 1 3.98593469594153 8.055555555555847 1 4.226497308103864 6.666666666667056 1 2.301996410804972 3.33333333333345 1 7.11324865405168 6.388888888889348 1 0.8586207378308678 6.527777777778259 1 0.618058125668538 6.250000000000484 1 0.6180581256685076 6.805555555556036 1 0.6180581256685688 6.111111111111567 1 0.8586207378308364 5.97222222222271 1 0.6180581256684655 5.695540475445427 1 0.6273860473133356 5.569986630396194 1 0.414226197846265 2.083333333333668 1 3.02368424729178 1.944444444444793 1 2.783121635129429 1.388888888888898 1 9.518874775675121 2.222222222222521 1 3.745372083778824 0.8344273291515909 1 8.074867483920759 0.5162339886830614 1 8.068388376505689 0.6944444444444838 1 8.316061714863213 7.222222222222276 1 8.556624327025947 7.638888888888911 1 7.353811266214292 8.75000000000048 1 1.580308574318128 7.638888888889221 1 3.504809471616796 6.388888888888943 1 8.55662432702589 2.361111111111367 1 4.467059920265863 7.083333333333721 1 2.061433798642658 9.305555555555726 1 6.391560817565009 8.749999999999975 1 7.834936490539048 7.916666666667034 1 3.023684247292133 8.611111111111185 1 6.632123429727327 8.33333333333322 1 9.518874775675368 8.055555555555477 1 9.518874775675341 0.6944444444445962 1 6.872686041889149 0.5714166418651172 1 7.109514581686987 8.194435402538316 1 4.467065140613327 9.425918517103124 1 0.8536658802299064 9.566825936273085 1 0.6371797325232651 5.000000000000172 1 6.150998205402399 4.583333333333504 1 5.910435593240008 4.583333333333383 1 8.31606171486346 4.722222222222259 1 8.556624327025823 9.305555555555561 1 7.834936490539079 7.083333333333436 1 6.39156081756488 6.527777777778127 1 3.023684247292021 6.388888888889262 1 2.783121635129655 6.111111111111473 1 2.783121635129632 7.361111111111132 1 9.278312163512981 7.500000000000297 1 3.745372083779127 7.916665159682528 1 4.467060790324048 6.527777777777893 1 6.391560817564839 2.500000000000115 1 7.113248654051629 2.361111111111246 1 6.872686041889276 2.22222222222234 1 7.113248654051611 2.083333333333469 1 6.872686041889258 2.22222222222237 1 6.632123429726929 1.944444444444567 1 7.113248654051599 2.083333333333643 1 3.504809471616473 7.777777777777843 1 6.632123429727269 7.638888888888975 1 6.391560817564919 7.777777777777883 1 6.150998205402582 0.8333333333333681 1 8.556624327025586 0.5555555555555823 1 8.556624327025595 0.4177539872853245 1 8.78544318970922 8.472222222222284 1 6.872686041889661 5.000000000000051 1 9.518874775675272 7.361111111111316 1 4.948185144590833 6.111111111111185 1 8.075499102701198 4.861111111111381 1 4.467059920265991 5.138888888889158 1 4.467059920266017 5.277777777778027 1 4.707622532428377 5.416666666666935 1 4.467059920266041 5.555555555555793 1 4.707622532428397 5.277777777778063 1 4.226497308103684 5.555555555555844 1 4.226497308103708 5.416666666666975 1 3.985934695941353 5.694444444444731 1 3.985934695941373 7.500000000000345 1 3.264246859454443 8.472222521963118 1 1.099187972495114 0.8347303368001764 1 3.265053419781494 0.5555555555559002 1 3.264246859454027 8.472222222222314 1 6.391560817564983 3.888888888889189 1 3.745372083778891 3.611111111111414 1 3.745372083778877 4.027777777778066 1 3.985934695941249 1.527777777777861 1 7.834936490538615 7.222222222222649 1 1.339745962155632 7.500000000000433 1 1.339745962155662 6.666666666666877 1 4.707622532428447 6.94444444444466 1 4.70762253242846 0.2248432125792565 1 7.381588371894474 7.36151053931839 1 0.2298794617771251 3.888888888888942 1 8.07549910270107 2.500000000000387 1 2.301996410804764 2.22222222222261 1 2.30199641080475 2.083333333333706 1 2.542559022967088 2.916666666667014 1 3.023684247291818 3.055555555555737 1 6.150998205402293 2.916666666666858 1 5.910435593239942 7.083333333333536 1 4.948185144590814 5.972222222222598 1 2.54255902296727 5.694444444444816 1 2.542559022967253 5.555555555555943 1 2.301996410804914 5.833333333333692 1 2.783121635129615 5.555555555555911 1 2.783121635129609 5.972222222222285 1 8.316061714863535 5.972222222222367 1 6.391560817564804 3.611111111111552 1 1.339764629893215 3.472222222222403 1 5.910435593239968 3.333333333333443 1 7.59437387837637 3.333333333333588 1 4.707622532428248 3.472222222222456 1 4.9481851445906 5.146561105892953 1 0.6311234914557191 4.861763510516552 1 0.627981176400251 4.305555555555872 1 3.504809471616577 0.2371228594963523 1 5.695552419285853 2.361111111111216 1 7.353811266213971 5.000000000000387 1 2.3019964108049 5.27777777777816 1 2.301996410804906 6.666666666666759 1 6.632123429727185 3.611111111111499 1 2.301996410804826 3.750000000000377 1 2.542559022967176 3.472222222222597 1 2.54255902296716 5.694444444444787 1 3.023684247291964 2.222222222222447 1 5.188747756752871 2.083333333333568 1 4.948185144590521 1.94444444444467 1 5.188747756752857 1.805555555555789 1 4.948185144590511 0.8333333333336307 1 3.745372083778748 0.6944444444447277 1 3.985934695941086 0.5555555555558525 1 3.745372083778733 0.4169866041135397 1 3.993367979360329 0.4143601209001226 1 3.493745035236073 7.222222222222413 1 5.188747756753171 0.555555555555826 1 4.226497308103421 2.22222222222242 1 5.66987298107756 5.972222222222662 1 1.0991833499932 8.888631303018734 1 3.264395576726219 1.666666666666961 1 3.745372083778793 9.759437387837655 1 4.027777777777777 9.542303115462612 1 4.167507757176843 9.536401914421313 1 4.467510437376479 4.027777777777779 1 0.2405626121623483 5.277777777778085 1 3.745372083778986 2.63888888888929 1 2.061433798642428 1.250000000000185 1 5.910435593239862 3.194045016237644 1 0.6289911596567126 4.166666666667055 1 2.301996410804856 4.861111111111509 1 2.061433798642549 4.027777777777795 1 9.759437387837655 3.888888888888916 1 9.518874775675306 3.055555555555999 1 1.339786217376956 2.500000000000034 1 8.556624327025684 1.944444444444833 1 2.301996410804735 9.759437387837657 1 6.249999999999995 7.500000000000192 1 5.188747756753188 0.2400208594510502 1 4.86010456610979 9.756792841377298 1 2.37886997830342 9.748325988433077 1 3.448849496312807 9.715037519746323 1 1.812748393470789 1.805555555555567 1 9.759437387837572 2.222222222222312 1 9.518874775675298 9.442250505990708 1 5.179461531714844 9.562388246226083 1 4.92740633599551 8.749999999999996 1 0.2405626121623523 6.250000000000348 1 3.023684247291998 3.472222222222515 1 3.985934695941222 0.2405626121623437 1 2.916666666666663 0.4827591755961045 1 2.483624717649957 0.2448876635262988 1 2.355924891392301 0.4646028498830426 1 2.210333657330987 0.4546258182232162 1 1.936590993805914 3.750000000000425 1 1.580311685607429 2.908994449662962 1 0.2274972463750577 4.166666666666874 1 5.188747756752969 4.027777777778004 1 4.948185144590624 4.305555555555753 1 5.429310368915313 9.762085752172815 1 1.243619008019341 4.8615105393183 1 0.2298794617770423 4.305555555555844 1 3.985934695941269 4.58333333333365 1 3.504809471616596 2.222222222222283 1 8.075499102701006 2.500000000000065 1 8.075499102701015 1.250000000000003 1 9.759437387837574 3.472222222222208 1 9.759437387837616 6.527777777777866 1 7.353811266214192 1.527777777777945 1 6.391560817564561 0.2405626121623416 1 8.194444444444434 4.722222222222389 1 6.150998205402368 4.027777777777926 1 6.391560817564676 8.749999999999954 1 9.759437387837684 1.66666666666702 1 2.783121635129407 0.6944075368783817 1 0.229090189410753 2.916666666666637 1 9.759437387837558 2.777777777777743 1 9.518874775675112 3.055555555555891 1 3.264246859454168 3.194444444444791 1 3.023684247291833 3.33333333333367 1 3.264246859454179 3.47222222222257 1 3.023684247291845 2.500000000000304 1 3.745372083778833 2.3611111111114 1 3.985934695941172 6.11111111111134 1 4.226497308103747 9.764147686959348 1 2.912928951486624 9.486131487267118 1 2.781367293272486 1.250000000000435 1 1.580308574317661 1.521201591775029 1 0.6233040764027959 1.797883338552183 1 0.6313650227848042 1.374640485882265 1 0.4143622635433111 1.943165741610942 1 0.8608385540167506 2.075265327357447 1 0.6416546404976216 2.212992220417198 1 0.8690434021901523 2.358476746476781 1 1.103243973817313 0.2405626121623438 1 1.25 2.360015080110581 1 0.2312346905174905 2.485568925159804 1 0.4443945399845349 2.082643653962253 1 0.2244533643198925 6.805555555555558 1 9.759437387837645 2.222222222222547 1 3.26424685945413 3.333333333333719 1 2.301996410804811 3.472222222222218 1 0.2405626121623451 2.500000000000416 1 1.820871186480076 2.361111111111513 1 2.061433798642412 0.9722222222226889 1 0.6229467463111957 6.249999999999998 1 0.2405626121623486 0.9745446193360112 1 5.427969532316466 7.916666666667081 1 2.061433798642749 1.944444444444643 1 5.669872981077546 3.750000000000484 1 0.6180581256684291 2.499999999999998 1 9.037749551350373 0.239102812238416 1 5.416851329140229 0.4573484735256459 1 5.559178278543709 0.2405626121623489 1 6.249999999999997 6.250000000000004 1 9.759437387837609 0.9780540119641874 1 2.063559185736941 0.8501294125231003 1 1.818701607552266 6.805555555555944 1 2.542559022967353 2.222222222222577 1 2.78312163512944 1.80534243841702 1 1.099552986024019 6.52777777777817 1 2.061433798642608 0.2387813660830613 1 7.925556136169726 4.583350662406621 1 0.2356031828792416 3.055555555555915 1 2.783121635129482 3.194444444444873 1 1.580315283521361 3.333333333333775 1 1.339811692678563 9.787257712329392 1 4.589414711037866 2.083333333333492 1 6.391560817564579 8.74999595397246 1 1.099376226969621 1.80555555555581 1 4.467059920265829 3.888888888889328 1 1.33975481112563 1.111293443747544 1 8.075393832904226 1.944444444444863 1 1.820871186480044 5.694444444444619 1 5.910435593240099 0.8342031237413551 1 4.225995134377382 9.754924349345892 1 6.799360376004519 9.755378170440196 1 7.919767842834763 8.055555555555552 1 7.594373878376656 1.111248812170403 1 1.339801183271598 6.805555555555609 1 7.83493649053891 4.166666666666916 1 4.70762253242829 7.222222222222554 1 3.264246859454421 0.9771269706827402 1 1.582468945415914 1.805555555555861 1 3.504809471616456 6.805555555555542 1 0.2405626121623387 2.083333333333544 1 5.429310368915208 0.2493454608981729 1 6.796083275770266 0.2405626121623464 1 4.583333333333331 3.333333333333695 1 2.783121635129496 3.472222222222352 1 6.872686041889347 4.305555555555978 1 1.580308574317831 6.666666666666831 1 5.669872981077818 6.111111111111312 1 5.188747756753118 5.833333333333532 1 5.188747756753103 1.111256076179339 1 4.226413612482441 0.6942928540613696 1 3.50309982560758 5.000000000000281 1 4.226497308103658 5.833333333333628 1 3.745372083779033 0.4539576619230848 1 5.279895886801656 4.027777777778152 1 2.542559022967191 5.277777777778132 1 2.7831216351296 9.759437387837668 1 8.194444444444422 5.972222222222311 1 7.834936490538835 7.2222222222223 1 6.632123429727239 2.083333333333738 1 2.061433798642398 5.277777777778207 1 1.339745962155536 4.444444444444777 1 3.264246859454243 3.194444444444453 1 8.797186939188089 6.250000000000115 1 6.872686041889494 7.361111111111253 1 5.910435593240212 4.305555555555588 1 8.797186939188194 1.666666666666887 1 5.188747756752848 5.277777777777917 1 6.632123429727103 5.000000000000151 1 6.632123429727077 5.13888888888901 1 6.87268604188943 3.055555555555655 1 7.594373878376354 4.583333333333337 1 9.759437387837661 4.722222222222286 1 7.594373878376409 4.58333333333371 1 2.542559022967221 4.305555555555934 1 2.542559022967205 4.722222222222609 1 2.301996410804886 5.416666666666869 1 5.4293103689154 5.138888888889233 1 3.023684247291939 1.66666666666691 1 4.707622532428164 2.777777777778058 1 4.22649730810353 1.527777777777819 1 8.797186939187988 5.000000000000428 1 1.339745962155524 4.861111111111162 1 8.316061714863459 4.166666666666968 1 3.745372083778912 1.388888888888914 1 9.037749551350322 7.777777526613978 1 4.226497453113479 7.777777777778075 1 3.74537208377915 4.166666666667103 1 1.339748524986121 3.194444444444573 1 6.872686041889331 3.055555555555748 1 5.669872981077605 0.7110384511444057 1 7.34424029863691 4.861111111111128 1 8.797186939188196 0.9749878900056507 1 7.352216104951044 5.69444444444466 1 4.94818514459075 9.305477943663202 1 0.2327001935409526 4.166666666666853 1 5.669872981077652 2.916666666666873 1 5.429310368915253 1.666666666667058 1 2.301996410804716 8.333333333333652 1 3.745372083779195 0.9741945153275955 1 4.948596783294834 1.80555555555593 1 2.542559022967071 5.833333333333748 1 1.82087118648024 6.944444444444525 1 6.632123429727213 7.916666624806281 1 3.985934720109781 4.305555555555705 1 6.391560817564685 3.055555555555775 1 5.188747756752918 4.444444444444671 1 5.188747756752991 2.500000000000246 1 4.707622532428203 3.333333333333551 1 5.188747756752933 7.500000000000367 1 2.783121635129757 4.444444444444905 1 0.8586213186451437 5.416666666666721 1 7.834936490538778 3.888888888889252 1 2.783121635129524 0.8514947710468104 1 5.180070978902982 4.305555555556004 1 1.099185542750582 3.611111111111474 1 2.783121635129509 3.333333333333638 1 3.745372083778876 3.611111111111447 1 3.26424685945419 7.083333333333564 1 4.467059920266125 3.750000000000031 1 8.797186939188146 6.527777777778191 1 1.580308574317916 7.08333333333338 1 8.31606171486361 3.611111111111326 1 5.188747756752948 6.666666666666698 1 9.037749551350576 7.638888888889248 1 3.023684247292111 8.055555555555959 1 1.820871186480405 6.944444444444909 1 0.8586207378309305 7.08336635484563 1 0.6229926116596299 4.861111111111124 1 9.75943738783765 6.250000000000239 1 3.985934695941406 4.86111111111155 1 1.099183349993177 2.500000000000275 1 4.22649730810352 8.194437858638077 1 4.948188946908157 8.611111111111512 1 2.30199641080516 2.361111111111129 1 8.797186939188018 3.333333333333403 1 8.075499102701043 8.194444444444422 1 8.316061714863695 2.08333333333338 1 8.316061714863327 1.388919277661684 1 8.075481557734825 5.833333333333557 1 4.707622532428411 2.638888888888938 1 8.316061714863361 3.19444444444463 1 5.910435593239958 8.888675691552017 1 7.113370459448985 1.944444444444687 1 4.707622532428175 3.888888888889138 1 4.707622532428274 4.027777777777846 1 7.834936490538734 8.749964467110569 1 6.872706342789172 2.500000000000149 1 6.632123429726949 6.527777777777961 1 5.429310368915468 5.694444444444845 1 2.061433798642574 5.416666666667066 1 2.061433798642567 5.416666666666675 1 9.759437387837606 5.138888888889123 1 4.948185144590699 6.666666666667064 1 1.820871186480272 7.638888888889031 1 5.910435593240226 4.722330955456838 1 0.8602746764218452 2.222222222222463 1 4.707622532428189 3.333333333333507 1 6.150998205402301 2.083333333333442 1 7.353811266213953 4.166666666666785 1 7.113248654051707 1.389055124165911 1 2.783217611111117 4.58333333333349 1 6.391560817564701 3.472222222222542 1 3.50480947161653 1.111111111111441 1 3.264246859454051 6.111111111111258 1 6.150998205402474 5.972222222222388 1 5.910435593240117 2.361111111111271 1 6.391560817564592 6.250000000000192 1 5.429310368915455 2.361111111111118 1 9.278312163512723 1.250153136238766 1 3.023772660540194 1.666666666666798 1 7.113248654051581 1.805555555555696 1 6.872686041889248 4.722222222222413 1 5.669872981077686 2.361111111111159 1 8.316061714863343 6.388888888889177 1 3.745372083779042 3.750000000000231 1 4.948185144590613 1.944444444444591 1 6.632123429726914 5.694444444444533 1 7.35381126621413 5.833333333333515 1 5.669872981077763 9.027578532019078 1 7.835046377944344 9.024428704798812 1 3.98848475594818 8.888662291262076 1 2.301865584604124 8.055555555555935 1 2.783121635129798 2.083333333333361 1 9.278312163512759 8.888779556857784 1 1.339904967521745 6.666666666666939 1 3.745372083779066 4.444444444444631 1 5.669872981077665 7.361111111111208 1 6.391560817564901 2.36111111111112 1 9.759437387837561 1.388888888889058 1 6.632123429726886 5.972222222222411 1 5.429310368915442 5.833333333333364 1 8.556624327025844 1.250000000000018 1 9.278312163512691 6.666666666666687 1 9.518874775675279 5.416666666667037 1 2.542559022967255 8.749946934139821 1 7.353840405636317 4.583366354845616 1 0.6230563590849337 7.916666666666679 1 7.353811266214305 4.583333333333419 1 7.353811266214064 5.416666666666892 1 4.948185144590724 8.472222222222168 1 8.797186939188384 6.805555555555942 1 2.061433798642633 4.861111111111275 1 6.391560817564725 4.444444444444532 1 9.518874775675288 1.666666666666823 1 6.632123429726903 5.694444444444511 1 7.834936490538807 8.194444444444807 1 3.023684247292155 7.500000000000115 1 6.150998205402564 3.472222222222317 1 7.834936490538716 7.499999999999993 1 9.518874775675325 1.250000000000186 1 6.391560817564533 5.694444444444632 1 5.429310368915426 8.333333333333476 1 5.669872981077939 5.694444444444482 1 9.278312163512831 9.027507280882821 1 2.542409933287059 9.319275535147673 1 4.018552631166973 6.388888888889 1 6.632123429727166 8.888791637887399 1 7.594422487379608 9.027976981067248 1 9.278280130226854 8.194444444444606 1 5.429310368915603 0.5512165959648843 1 9.036739770720304 3.750000000000083 1 7.834936490538726 4.166666666666742 1 9.5188747756753 5.277777777777874 1 7.113248654051763 3.888888888888986 1 7.594373878376381 6.25000000000013 1 6.391560817564825 4.722222222222329 1 7.11324865405174 4.027777777777883 1 7.353811266214044 5.555555555555763 1 5.188747756753075 7.7777777777778 1 8.556624327025999 7.639102006028342 1 1.099546276820795 3.750000000000019 1 9.278312163512906 7.638888888889306 1 1.580308574318011 1.111248122990312 1 6.150985835362013 5.694444444444692 1 4.467059920266047 5.555555555555657 1 7.113248654051786 6.111111111111158 1 8.556624327025865 5.555555555555582 1 9.518874775675213 0.974269719281954 1 5.908791240647087 9.173526493343108 1 2.782829182752188 7.222567698386861 1 0.8614907819036538 7.361417327134415 1 1.100085105304098 0.8499389291962223 1 5.673140772288441 5.833333333333589 1 4.226497308103729 6.66666666666675 1 7.113248654051874 9.444444444444384 1 7.594373878376749 6.250000000000046 1 8.797186939188203 7.916666666666622 1 9.759437387837677 6.527777777777807 1 9.278312163512904 4.861111111111238 1 6.872686041889403 6.527777777777871 1 6.872686041889509 5.972222222222486 1 3.985934695941389 8.055555555555546 1 8.556624327026018 8.055555555555516 1 9.037749551350664 7.916666666667092 1 1.580308574318054 6.388888888888935 1 9.037749551350547 6.805555555555605 1 7.353811266214227 8.194444444444418 1 8.797186939188361 7.638888888888921 1 8.316061714863659 8.611081065870295 1 5.188765103381296 7.08333333333335 1 7.834936490538944 7.91666666666662 1 9.278312163513 7.222222222222258 1 8.075499102701297 7.361111111111162 1 8.316061714863642 6.944444444444478 1 7.59437387837659 8.194444444444377 1 9.75943738783768 8.333324987869837 1 5.188752575008998 9.026487738802082 1 4.948754183823571 8.611111111111024 1 9.518874775675368 7.777777777777747 1 9.518874775675332 8.888922089437052 1 9.518869436794335 2.499999999999989 1 9.518874775675044 8.888637138712399 1 5.188878158772209 9.167371812704298 1 9.520399812925419 9.303870006000071 1 9.762565608254247 0.2329165327257747 1 1.803221385050987 9.297019119250789 1 4.947683666924116 0.6952286794362309 1 2.068392637212912 9.573502838894399 1 9.770829741943967 0.4248642659001168 1 9.771680725662614 0.7042381777732419 1 5.422190519672732 9.752702527729628 1 0.4262870548698547 0.2473148839623749 1 0.4262755952277655 0.4565442699389162 1 1.670770715888829 0.452802163295146 1 5.833333333333321 0.4568473391377572 1 5.007561117835489 9.549331404283334 1 8.331671653247536 0.4485486573967944 1 8.332277217292473 0.4331080832426238 1 1.058562169111847 9.568196384633627 1 1.056369445320404 0.4436835325131812 1 6.388683649111584 9.556628304161567 1 6.389908788190532 9.274668226104719 1 4.484892728239395 9.409252056154433 1 4.712263570755434 0.4498013281769891 1 4.449723179179257 0.4576485240277843 1 3.04347659316911 9.553806643019655 1 3.040333259043035 9.796186726554375 1 4.859598690557704 0.7269146294709714 1 2.555889158802762 9.551285283228701 1 2.522570525351124 0.441113851401289 1 7.756978978035786 9.544903639922294 1 7.807030419866085 7.783340570038709 1 0.4172442110247441 5.283340570038593 1 0.4172442110245372 2.772214985517314 1 0.4415778029138694 1.247339960303371 1 0.21125236166645 8.19713492944693 1 0.2112296840502817 5.697134929446907 1 0.2112296840502231 2.354726899673881 1 0.6544729581804175 1.661134319711786 1 0.4175486751914219 0.1921870288208647 1 0.6944444444444445 9.807812971179793 1 0.6944444444444445 9.541951462911712 1 6.907453879760074 0.462357306133875 1 6.903761555659847 9.53807430741058 1 5.874306745319233 9.535482780327598 1 1.616404300134415 9.446547360170985 1 0.4263801563860403 9.166754533867616 1 0.4288421338418836 8.88890353342266 1 0.429232329736652 7.503182140971553 1 0.4257137251288142 8.611111111111718 1 0.4293103689157645 7.22295150944403 1 0.4294375204653934 6.94444444444442 1 0.4293103689152725 6.666666666666903 1 0.4293103689154469 5.003164018765684 1 0.4256828640038125 6.388888888889086 1 0.4293103689154019 4.72293325504962 1 0.4285855688434793 6.111111111111111 1 0.4293103689152267 4.444571341680101 1 0.4291960362590058 4.166687816206103 1 0.4292913134726344 3.888892413812288 1 0.4293071930082324 3.611111698598503 1 0.4293098395974912 3.333333333333327 1 0.4293103689151862 3.052500270024361 1 0.4348681850083126 1.940001190274152 1 0.4270891057430948 0.8330418762103735 1 0.4273609152847818 0.5534163181109355 1 0.4254329527367771 8.333333333333901 1 0.429666280616099 5.833333333333796 1 0.4296662806160225 2.218042191651364 1 0.434855951971242 1.523254766881999 1 0.2102869624752116 7.92123027130345 1 0.2102097612285986 5.421230271303417 1 0.210209761228517 2.632613632179494 1 0.6535988172008059 1.11111111111161 1 0.4296662806161798 0.1878571138611373 1 8.74999999999998 0.1872861973824529 1 4.027777777777771 9.817590732165442 1 9.297546978797074 0.183781187003043 1 9.298136821720247 9.538504359070325 1 3.547814783869402 9.814622978967002 1 5.416666666666661 9.814750869532181 1 7.361111111111099 9.534861648207738 1 2.014830665826442 0.4669776580968114 1 7.3247642017685 9.818280840188992 1 8.74999999999998 9.550600550985264 1 3.943839543635188 0.1813323727394367 1 3.479779071210002 9.796652553453084 1 9.796652553453084 0.2033474465469151 1 9.796652553453091 0.2019331290430713 1 0.2019331290430713 9.798066870956932 1 0.2019331290430742 0.6340196174878086 1 5.677699794360542 0.6325282257451187 1 1.817901957296172 9.360936350455999 1 4.291912923955717 0.6344984786887795 1 5.15225970417497 0.6368274863628656 1 2.346163033295811 9.61829733113712 1 4.711238749144599 0.3642996740170794 1 0.8269421303361235 9.635955316792531 1 0.8267986005048267 0.3851737608145452 1 7.51918588001528 2 5 0 111 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 8.195183847839587 0.2419513644738763 0 2.638588883506802 0.7558082695681322 0 4.305555555555554 0.7594373878376568 0 5.416028156562049 0.7528972362777914 0 6.528600992546211 0.7424817819646818 0 7.36030402203307 0.7530543205520379 0 4.8630488067325 0.7478908797506058 0 3.193805934339827 0.2471027637222071 0 8.750300072087358 0.7487528936723657 0 1.808220139850526 0.2559736038727985 0 3.749038745569627 0.2485438892286539 0 1.250353790844795 0.754271029159155 0 5.971922216840132 0.7559193398854837 0 0.6970516325982433 0.7409029857707835 0 9.303389969216781 0.7420786699908655 0 9.593881008339052 0.2522220868522006 0 0.4061189916609386 0.2522220868522 0 7.63800072154689 0.240816631606323 0 5.692653433664004 0.2459604181191316 0 2.358024995128665 0.2454446331780684 0 5.139674083834459 0.2472456534837165 0 7.081197832530994 0.2454826082281401 0 2.08131643379535 0.7547216075641878 0 3.470431211441785 0.7540395818808677 0 4.583633338715413 0.2441917304318678 0 0.9770944942447276 0.2430992641528823 0 6.249999999999992 0.2405626121623435 0 9.029181836425508 0.2413518407229592 0 7.916392508334144 0.7510154914107225 0 0.1989502103198869 0.6189454121443064 0 9.801049789680112 0.6189454121443051 0 0.6934985439472406 0.2417953204701935 0 0.5710431639301781 0.4967594024306105 0 0.8366857311590201 0.4873473320437507 0 1.112675140479545 0.4848015100456094 0 9.30823536441407 0.2413908825975778 0 9.430007274348824 0.4967747428542277 0 9.165286516902562 0.48890269486967 0 8.889666942206743 0.4901760718452349 0 8.750059242045181 0.2453610072228571 0 8.610925382958952 0.4899915753242748 0 8.47210090462781 0.7413438951642345 0 8.333106786721908 0.4870556455647148 0 9.027366509328163 0.7449850550630225 0 0.9727378633573125 0.7377228211549155 0 1.398153757718042 0.5103326167346031 0 1.262259979386459 0.2553016842182484 0 1.529490273268032 0.7575794868156964 0 1.67153898812454 0.5168407208992695 0 8.472286617335007 0.2440599320976205 0 8.054560728625132 0.4885796575865268 0 7.916666666666655 0.243648747235535 0 7.77697550274144 0.4884246407083944 0 7.49783745324775 0.4896935357888229 0 7.638407213984222 0.7412835966069862 0 7.21292995523106 0.5142159726518134 0 6.527777777777769 0.2405626121623439 0 6.389026091350286 0.485017569635437 0 6.667392447243646 0.4859026545815704 0 6.110681215157774 0.4855240664507802 0 6.810691597296129 0.7321301469564789 0 6.250027442368378 0.7389449843849607 0 5.827942783133838 0.5080851770283155 0 5.692751090058793 0.7497792085981728 0 4.027777777777774 0.7594373878376572 0 4.166857912912112 0.5129144319974182 0 4.444765762631414 0.5157589151646337 0 3.88779929976103 0.5016699020590552 0 4.305788894518315 0.2599243299369814 0 4.725063436340751 0.4952907571270281 0 4.027506734719438 0.2538420922036848 0 3.605663252228482 0.4915528729866074 0 3.470409108214669 0.2509043379233355 0 4.862550708464379 0.2446770716439318 0 3.194444444444441 0.7594373878376564 0 5.139890614753924 0.7501661967541144 0 5.277950270953948 0.5053314790634514 0 2.916560248315896 0.2416526374223215 0 3.055555555555555 0.4811252243246878 0 2.777460139823638 0.4840297875279142 0 2.916614145974812 0.7344662081142599 0 2.495311575296368 0.5033052701788792 0 2.3580099408672 0.7492444431840584 0 2.637522456057057 0.2457387213845306 0 2.210620530382462 0.4816315117931516 0 5.415889269452266 0.2467185081772912 0 3.748611923534844 0.7511166241273646 0 5.970953646066673 0.2466887122934284 0 4.583940503324626 0.7548842465107504 0 6.805341649108229 0.2408951440671394 0 3.330079110047328 0.51279487411487 0 5.553256403768069 0.4958367170735748 0 7.358698030796483 0.2483681247125165 0 8.194174969532977 0.7446657816210331 0 1.806233590892557 0.7594415732784867 0 5.00136298684666 0.4984336729704746 0 7.083025440566692 0.7505414006662896 0 2.081246178514105 0.2517595622059642 0 6.94220233606439 0.4871378293729766 0 1.943562717561555 0.5152051442270775 0 9.585496603803087 0.7480868249387012 0 0.414655645186101 0.7479652918117925 0 1.532621403439187 0.2564081042874865 0 9.807783769426262 0.3825223630166431 0 0.1922162305737325 0.3825223630166411 0 0.1782767266567531 0.8233821407912196 0 9.821753723141084 0.823406447416601 0 9.821766998964733 0.176985751482318 0 0.1782330010352638 0.1769857514823137 0 9.643643689119466 0.4997102859612156 0 0.3565968483341674 0.4996829112511101 0 2 6 0 111 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 8.192013782680061 0.2434041748910533 10 2.638588883506802 0.7558082695681322 10 4.305922770962639 0.7592253759235239 10 5.416666666666661 0.2405626121623432 10 6.527777777777774 0.7594373878376568 10 7.356093183708816 0.7565402861011714 10 4.861439090582362 0.2439154882999098 10 3.193805934339827 0.2471027637222071 10 8.740725624368764 0.7462847840807201 10 1.808220139850526 0.2559736038727985 10 3.74969999461791 0.2440806601145161 10 1.250353790844795 0.754271029159155 10 5.972222222222217 0.7594373878376557 10 0.6970516325982433 0.7409029857707834 10 9.303233360695812 0.2589128594606885 10 9.593888130137003 0.747658587085392 10 0.4061189916609386 0.2522220868522 10 7.639188894270967 0.2441917304318683 10 5.141037258865599 0.747123597954781 10 2.358024995128665 0.2454446331780684 10 7.08299337423446 0.2441681050015693 10 2.08131643379535 0.7547216075641878 10 3.470431211441785 0.7540395818808677 10 0.9770944942447276 0.2430992641528823 10 6.249473497482836 0.2531918460524743 10 7.916666666666662 0.7594373878376564 10 9.80105809844439 0.381054413872688 10 0.1989502103198869 0.6189454121443064 10 4.305555555555554 0.2529671999709173 10 8.73941655906653 0.243338976157232 10 0.6934985439472406 0.2417953204701935 10 0.5710431639301781 0.4967594024306105 10 0.8366857311590201 0.4873473320437506 10 1.112675140479545 0.4848015100456094 10 9.308140321905004 0.758318083121564 10 9.429818219720119 0.5032312499427896 10 9.159079484071716 0.5093049755028812 10 9.018874678837037 0.2515959767876297 10 8.878029449634937 0.4949614293418292 10 8.593392882734214 0.4806435259755308 10 8.460155751375197 0.7423102364725152 10 0.9727378633573125 0.7377228211549155 10 1.398153757718042 0.5103326167346031 10 1.262259979386459 0.2553016842182484 10 1.529490273268032 0.7575794868156964 10 1.67153898812454 0.5168407208992695 10 9.023588405922659 0.7514782120078324 10 8.319140862199022 0.4965784394937556 10 7.639205068330985 0.7536647772702485 10 7.500152651936144 0.5143480077542154 10 7.220390181621354 0.5149402561931564 10 7.360906427494259 0.2601901537871349 10 6.935012327883285 0.4890173855954848 10 7.784692781832679 0.4871362140073496 10 7.070845868072022 0.7443878372214923 10 6.803291266752914 0.2418344108158 10 6.659628917641188 0.4793550484682567 10 7.915555277246942 0.2507123625190822 10 4.027838980345622 0.7594020525186351 10 4.166738069662485 0.5141827028149724 10 4.444976048195388 0.5128222753964835 10 3.88845871372651 0.5144252130154126 10 4.027699351879128 0.2604119839307772 10 3.605720548798217 0.4919126224764997 10 4.583500868438382 0.2604941515429199 10 4.723730073237034 0.506825541145886 10 5.001643722727104 0.4961147024176025 10 4.583919269330414 0.7557498694850071 10 3.470528865817673 0.2502204246526279 10 5.140012370936978 0.2436496895324669 10 5.694444444444439 0.7594373878376544 10 5.833142087087882 0.5129144319974119 10 5.555555555555556 0.518874775675304 10 6.110464983800179 0.5079278821063999 10 5.694330607393584 0.2651343523057245 10 5.971718453286639 0.2525343757061206 10 6.24955705584313 0.757806465874889 10 3.194444444444441 0.7594373878376564 10 5.417819593344483 0.7511235159637809 10 2.916560248315896 0.2416526374223215 10 3.055555555555555 0.4811252243246878 10 2.777460139823638 0.4840297875279142 10 2.916614145974812 0.7344662081142599 10 2.495311575296368 0.5033052701788792 10 2.3580099408672 0.7492444431840584 10 2.637522456057057 0.2457387213845306 10 2.210620530382462 0.4816315117931516 10 3.748741575718688 0.7532965783152359 10 4.862092091063727 0.7509689518338794 10 3.330086791489641 0.512780810366223 10 6.38708482834628 0.5124554685694369 10 1.806233590892557 0.7594415732784867 10 5.281568788675653 0.4860610301975904 10 6.52639294433874 0.2449158240534713 10 2.081246178514105 0.2517595622059642 10 8.187957548648342 0.7571672387574665 10 1.943562717561555 0.5152051442270775 10 9.585467266884745 0.2520148387722703 10 0.4146556451861011 0.7479652918117925 10 1.532621403439187 0.2564081042874865 10 6.795082845308512 0.7287436622079503 10 9.80779464995091 0.6174575463261195 10 0.1922162305737325 0.3825223630166411 10 8.048474443735886 0.5139964335734256 10 8.464734755187376 0.2439941860862619 10 0.1782767266567531 0.8233821407912196 10 9.821749517510273 0.1766138505289916 10 9.821769570725106 0.8229943318434503 10 0.1782330010352638 0.1769857514823137 10 0.3565968483341675 0.4996829112511101 10 9.643605273027433 0.5002833271998519 10 3 1 0 1997 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 0.5984668177761516 0.5000000000000001 1.959520517930501 9.161435051282592 0.5 4.867761372027045 1.94423314841405 0.5 1.020598626697287 0.6036971024937124 0.4999999999999999 5.531963318756511 5.836488938438514 0.5 0.7000675525125846 8.336488938438562 0.4999999999999999 0.7000675525128058 8.888888888889376 0.5 1.500227033174648 8.888802857082712 0.5 7.434059951842318 8.05555555555555 0.5 8.716999401800901 6.388888888889007 0.5 6.471748354952277 1.666666666666829 0.5 6.471748354952011 7.916666666666647 0.5000000000000002 8.155686640088794 5.416666666666888 0.5 5.108560219365614 8.611111111111043 0.5 8.87737447657585 5.000000000000441 0.5 1.018995812605736 1.944444444444477 0.5 8.716999401800553 7.916666666666615 0.5 9.43868723828788 6.666666666666853 0.5 5.34912283152803 6.250000000000167 0.5 5.750060518465244 1.666666666667105 0.5000000000000001 1.500121036930236 1.666666666666925 0.5 4.386872382878376 3.611111111111307 0.5 5.509497906302737 4.722222222222648 0.5 1.500121036930406 1.388888888889355 0.5 1.018995812605533 2.222222222222658 0.5 1.500121036930268 5.555555555555714 0.5 6.31137328017733 1.388888888889292 0.5 2.141621336029804 3.055555555555961 0.5 1.981246261255004 4.583333333333702 0.5 2.702934097742116 2.08333333333351 0.5 6.070810668014792 2.77777777777799 0.5 5.349122831527798 1.805555555555618 0.4999999999999999 8.155686640088419 5.000000000000071 0.5 7.27362372882664 3.750000000000407 0.5000000000000001 1.901058723867594 2.777777777778155 0.5 2.462371485579676 1.250000000000239 0.5 4.787810069815591 5.2777777777782 0.5 1.500121036930431 4.444444444444839 0.5 2.141621336029975 5.138888888889027 0.5 6.712310967114539 1.388888888889039 0.5 6.95287357927667 4.305555555555893 0.5 3.184059322066786 4.722222222222454 0.5 5.028372681978116 7.083333333333489 0.5 5.750060518465296 6.388888888888967 0.5 7.915124027926324 3.055555555555844 0.5 4.066122233328649 1.94444444444458 0.5 6.952873579276703 8.4722222222226 0.4999999999999999 2.702934097742387 1.388888888889175 0.5 3.905747158553674 4.861111111111438 0.5 3.344434396841717 7.500000000000033 0.5 8.877374476575744 1.944444444444682 0.4999999999999999 4.867997607203071 4.02777777777792 0.5 6.712310967114469 2.777777777777902 0.5 6.952873579276758 6.388888888889094 0.5 4.867997607203336 3.333333333333595 0.5 4.547247457653352 5.694444444444626 0.5 5.750060518465205 7.916666666666829 0.5 5.58968544369046 2.500000000000406 0.5 1.981246261254972 2.222222222222438 0.5000000000000001 5.349122831527767 3.055555555555898 0.5 3.103871784679273 6.250000000000407 0.5 1.901058723867699 6.944444444444542 0.4999999999999999 6.471748354952318 6.80555555555589 0.5 3.184059322066942 3.750000000000359 0.5 2.863309172516963 6.250000000000115 0.5 7.033061116664387 6.388888888889363 0.5 0.6982456630559722 3.333333333333711 0.5 2.462371485579707 1.944444444444854 0.5 1.98124626125494 2.500000000000012 0.4999999999999998 8.877374476575476 3.750000000000162 0.5 6.231185742789776 7.916666666666726 0.5 6.712310967114727 6.944444444444858 0.5 1.500121036930495 1.388888888889079 0.5 5.830248055852422 4.444444444444714 0.5 4.386872382878519 5.000000000000033 0.5000000000000134 8.877374476575568 5.138888888889089 0.5 5.589685443690273 5.416666666666714 0.5 8.47643678963836 5.000000000000401 0.5000000000000001 1.981246261255106 3.88888888888916 0.5 4.386872382878484 8.333333333333334 0.5 7.433998803601781 2.63888888888896 0.5 7.995311565313576 7.361111111111297 0.5 5.268935294140627 1.527777777778091 0.5 3.344434396841545 4.583333333333631 0.5 3.825559621166388 1.666666666666778 0.5 7.433998803601379 6.666666666666719 0.5 8.396249252251023 1.527777777777995 0.5 5.268935294140292 8.611111111111448 0.5 3.424621934229421 5.138888888889149 0.5 4.627434995040912 2.777777777778093 0.5 3.584997009003946 3.8888888888892 0.5000000000000001 3.584997009003996 5.694444444444855 0.5 1.901058723867679 8.472222222222191 0.4999999999999999 8.155686640088826 8.611111111111528 0.4999999999999999 2.141621336030265 2.638888888889057 0.5 6.231185742789716 5.138888888889243 0.5 2.863309172517045 1.944444444444731 0.5 3.905747158553706 5.000000000000053 0.5000000000000001 7.915124027926214 5.972222222222418 0.5 5.26893529414055 5.972222222222459 0.5 4.30668484549119 3.888888888889007 0.5 7.273623728826591 4.166666666666734 0.5000000000000001 7.75474895315129 3.750000000000055 0.5 8.155686640088518 6.944444444444652 0.5 4.867997607203358 4.16666666666684 0.4999999999999999 5.830248055852547 3.333333333333467 0.5 6.792498504501892 7.500000000000248 0.4999999999999999 4.38687238287871 2.91666666666671 0.5 8.476436789638273 2.222222222222599 0.5 2.462371485579647 6.80555555555559 0.5 8.957562013963166 2.222222222222324 0.5 7.433998803601414 7.361111111111471 0.5 2.863309172517195 8.055555555555889 0.5 3.424621934229386 2.500000000000241 0.5 4.8679976072031 2.222222222222482 0.5 4.386872382878408 3.055555555555749 0.5 5.8302480558525 5.972222222222609 0.5 2.382183948192374 2.500000000000347 0.5 2.94349670990435 8.333333333333458 0.4999999999999999 5.990623130627731 7.222222222222269 0.5 6.952873579277034 7.500000000000097 0.5 6.311373280177458 3.888888888889115 0.5 5.028372681978066 7.361111111111116 0.5 9.438687238287869 5.694444444444478 0.5 8.957562013963051 2.083333333333651 0.5 3.344434396841574 6.666666666666726 0.5 7.433998803601661 7.916666666667038 0.4999999999999999 2.863309172517235 1.8055555555559 0.5 2.863309172516871 4.444444444444602 0.5 6.311373280177246 3.472222222222333 0.4999999999999999 7.674561415763819 5.416666666667049 0.4999999999999999 2.382183948192358 8.472222222222296 0.5 6.551935892339879 3.333333333333651 0.4999999999999999 3.584997009003978 5.416666666666992 0.5 3.344434396841749 2.916666666666768 0.5 7.514186340988901 7.222222222222261 0.4999999999999998 8.396249252251058 6.250000000000334 0.5 3.184059322066897 5.972222222222648 0.5000000000000001 1.419933499543004 7.3611111111114 0.4999999999999999 3.825559621166563 4.444444444444493 0.4999999999999999 8.235874177475999 5.41666666666696 0.4999999999999999 4.14630977071625 6.527777777777992 0.4999999999999999 4.3066848454912 7.777777777777799 0.5000000000000001 7.273623728826845 5.694444444444561 0.5 7.033061116664362 4.444444444444537 0.5 7.273623728826612 3.194444444444444 0.5000000000000009 8.957562013962978 7.500000000000419 0.5 1.500121036930558 6.250000000000057 0.5000000000000027 8.957562013963093 6.94444444444447 0.5 7.915124027926374 7.499999999999999 0.4999999999999999 7.754748953151545 1.388888888888933 0.5 8.716999401800527 5.555555555555608 0.4999999999999999 7.915124027926232 5.6944444444448 0.5 2.863309172517065 6.111111111111168 0.4999999999999984 8.396249252250978 5.972222222222319 0.4999999999999999 7.514186340989061 8.055555555555998 0.5 1.500121036930649 5.972222222222515 0.5 3.66518454639158 6.527777777777781 0.5000000000000017 9.438687238287832 6.527777777778065 0.4999999999999999 3.665184546391601 6.52777777777816 0.5 2.702934097742216 4.166666666666684 0.5000000000000085 8.71699940180067 7.638888888889288 0.5 2.382183948192524 6.805555555555951 0.5 2.221808873417531 7.777777777778008 0.5 4.867997607203424 4.861111111111177 0.4999999999999797 9.438687238287809 5.972222222222219 0.4999999999999996 9.438687238287786 4.166666666666728 0.4999999999999803 9.358499700900403 3.611111111111096 0.4999999999999964 9.358499700900335 2.777777777777734 0.5 9.358499700900207 1.111111111111141 0.5000000000000001 9.198124626125209 1.666666666666687 0.5 9.198124626125232 5.416666666666689 0.4999999999999974 9.438687238287754 2.22222222222225 0.5 9.358499700900337 8.750000000000124 0.5 5.589685443690504 2.777777777778213 0.5 1.5001210369303 8.333333333333652 0.4999999999999999 3.905747158554092 4.166666666667094 0.5 1.500122745488687 8.333322176861046 0.4999999999999998 5.028379800424278 3.472235803311733 0.5 1.419947563534638 8.055551537030691 0.4999999999999999 4.386871222844642 1.111111111111203 0.5000000000000001 7.75474895315112 4.027780923239746 0.5 0.9388156048596672 8.472222222222122 0.5 9.438687238287946 1.111111111111297 0.5 6.471748354951968 8.611092326190919 0.5000000000000001 4.386883228357705 1.111664218356363 0.4999999999999999 2.943678779679331 3.055624508496037 0.5 1.020003453038402 7.777779249573337 0.4999999999999999 1.018994962864668 9.027777777777745 0.5 8.476755356107791 0.8333333333336121 0.5 4.065788851483181 0.8333333333333681 0.5 8.716999401800486 6.943066352150918 0.5 0.6990413050129414 8.888888888889426 0.5 0.6983565841658057 0.8337437051644375 0.4999999999999999 3.424920689135918 1.112912143258469 0.5 1.499118779729379 9.028589497118167 0.5 9.439114011689005 1.111826942258177 0.4999999999999999 0.576643413367345 0.5975686409165903 0.4995699320431696 0.5412522120911469 1.661092077191925 0.4999999999999999 0.5741460848027118 9.406478632622626 0.5 1.677493142858426 0.8454515270843898 0.5 7.267533810902234 0.5705756180046619 0.5 6.829780949426203 9.430697527551009 0.4999999999999999 0.7026761805152769 3.228571428571655 0.5000000000000001 5.088856995893136 3.993650793651175 0.5 2.401887171664639 6.493650793651223 0.4999999999999999 1.239855201295779 4.617460317460511 0.5 5.569982220217893 4.895238095238276 0.4999999999999999 6.051107444542597 7.256349206349613 0.5 1.96154303778286 3.645238095238115 0.5000000000000048 8.697296178328314 8.055555555555975 0.5 2.020652708200025 8.92301587301597 0.5 6.291670056705224 9.234087249595779 0.5 4.350979535126148 9.438426713975923 0.4999999999999999 3.876214916374521 3.611111111111598 0.5 0.5747841114288161 1.111111111111167 0.5 8.275280624420498 8.888874105611947 0.5 6.913520181932427 4.44527506118948 0.5 0.5753077678986931 2.226189617790804 0.5 0.5821284305785253 8.853333333333653 0.5 3.885219148982936 2.4976578605648 0.5 1.030433793133158 8.948636633141728 0.5 7.949737285364428 9.422089089749084 0.5 7.734991364370943 9.483461812094816 0.5 8.243303412354708 5.283418028362973 0.5 0.5821910221315211 9.270000000000122 0.5 5.569157434119263 9.445745672633857 0.5000000000000001 6.285050279299013 7.502280310093347 0.5000000000000001 0.5756270108446271 9.430989113942738 0.5000000000000001 6.806802666536234 9.163997685436472 0.5 3.430359072568729 8.992238904894149 0.4999999999999999 2.682393528400035 0.8754634317381578 0.5 1.032630129786316 9.270486768472662 0.4999999999999999 8.937174956570383 0.5911111111111405 0.5 9.177596616553988 0.5756810900350754 0.5 2.975529840930696 2.947440996118374 0.4999999999999999 0.5143792897846654 0.9051308058279113 0.5 6.001665463834255 0.9478785912669405 0.5000000000000001 2.413588658010784 8.472259839568419 0.5 1.204429705548712 9.452899581447991 0.4999999999999999 2.92837743553495 9.493645807536225 0.5 2.415397872937043 4.633950617284084 0.5 6.785014334345779 7.550617283950957 0.5 3.351918566998056 2.36111111111126 0.4900548696844953 6.658852608856088 6.666666666666806 0.4986282578875091 6.044081488885912 0.5680949276340462 0.5 8.272586430711193 0.8125549868280906 0.5 5.060621842650446 5.80997150997175 0.5 4.788550262468656 7.026210826211083 0.5 4.206265375593715 0.5714961903966533 0.5 4.51333481606902 3.134057971014655 0.5028627661477909 6.32880535352229 2.336956521739173 0.502862766147797 8.399735666919804 0.5032733677153481 0.4999999999999999 6.326957441331883 0.5902351120296327 0.4989268678985715 7.722727979021748 5.492847156858191 0.5135288550024898 1.055200523474379 2.563131313131596 0.4861578750467699 4.029673352697968 5.075757575757887 0.5138421249532275 3.789110740535766 3.13131313131321 0.5138421249532292 8.031760445944251 2.840909090909353 0.4861578750467651 4.510798577022668 2.500000000000191 0.4861578750467628 5.757350294591154 3.547979797980087 0.4861578750467619 4.02967335269802 6.729797979798066 0.4861578750467372 6.916424698646304 7.840909316465011 0.4861572527315851 3.942193304468129 7.285171465130563 0.4861675113585702 1.055338003838558 9.111979381756537 0.5037920009015069 2.086382541368489 4.907407407407447 0.4814814814814741 8.39624925225089 4.537037037037053 0.4814814814815115 9.03774955135051 4.512172298624967 0.4856733045043977 1.056344754739956 9.285391242849681 0.4982010763828564 1.186775445361681 1.840277777777974 0.4750514403292191 5.649826096730676 6.014957264957419 0.5284108895220115 6.169503021722643 5.448717948718003 0.5284108895220094 7.446335347815007 7.147435897435948 0.5284108895220131 7.427830531494986 9.536380070880362 0.4684594777868928 9.536367939243581 1.084992649133698 0.5315465244078095 5.457213813058245 4.889779794635278 0.4627201577955689 4.22392548474197 4.138888888889174 0.4609053497942396 3.985934695941252 5.945246834610282 0.4603322139615755 6.633116130108937 0.6140830785296079 0.5174724984690668 1.45935263134036 9.332931925604042 0.466230967567021 7.269999454283973 4.305555555555772 0.4428605746992634 5.228714760521752 0.466143401702637 0.4866790461035684 3.745119513487816 8.472196727422105 0.5506864290024382 1.700611959544234 2.187500000000078 0.4493312757201641 7.895077143579237 7.534722222222369 0.5506687242798373 5.850294940199638 1.423760548798105 0.550696397925508 2.602613398119031 8.782686568736121 0.4475983448571319 5.13011054340099 4.960317460317842 0.5589359200470327 2.439460760611952 7.956349206349308 0.441064079952969 6.254096467757884 3.293650793650909 0.5589359200470307 7.250713003858736 7.956349206349203 0.5589359200470365 7.697472140731954 8.293650793650828 0.5589359200470353 6.975784304244938 1.210317460317724 0.441075557097263 4.329595570458745 9.536188925976868 0.4721612446265341 5.16885553013569 0.4699006983615364 0.5257197506725568 2.419926630994279 3.194444444444384 0.5576491488595363 9.557252618660909 4.611111111111176 0.4300411522633692 7.69059892324135 6.972222222222528 0.5699588477366262 3.601034516481682 7.194444444444824 0.4300411522633887 2.446333978102443 7.947562382931766 0.55187115891739 0.4489528177737917 9.558511023053578 0.4446071400048752 4.660086770240923 4.270065879098842 0.5699588477366255 4.797168877125658 8.101453629315865 0.5692951435093139 2.460992002248526 1.388888888888899 0.4510985482231135 9.551700007384632 1.791205640336439 0.4176079461908949 2.390468875606996 4.865609223244848 0.5696481680801049 0.4249987063903286 4.02828953543985 0.4283464047867385 0.4214060540099525 8.333333333333483 0.5809835460765744 5.463681976708792 3.600784974839452 0.4148572183849719 1.007078905628039 0.4251526472792328 0.583365991046225 9.574942975707664 0.8492453687165792 0.444780186436604 9.555630882981058 3.336962312420287 0.4082835794694842 8.402100801049139 6.944444444444443 0.5623845331074884 9.566103527647929 1.024287351629354 0.4161556424935794 1.917708135412874 3.472222222222562 0.595679012345678 3.184059322066739 8.333333333333689 0.5956790123456814 3.103871784679616 5.972222222222278 0.4043209876543348 7.995311565313725 7.361111111111323 0.4043209876543205 4.787810069815937 8.194444444444377 0.4043209876542955 9.117937088738124 7.638888888888878 0.5956790123456909 8.476436789638536 6.11374880909962 0.5951905497552843 1.020518688249207 2.362287242733156 0.5961146166500232 3.661789346849319 8.888741612418547 0.5958675375740636 3.104055872010973 1.805555555555559 0.5990585671322677 9.599062313062642 6.947086318142929 0.5699588477366282 2.769394056712773 3.472222222222407 0.4300411522633711 5.91043559323997 6.111111111111478 0.4300411522633816 2.78312163512963 5.833333333333662 0.4300411522633745 3.264246859454314 6.66666666666708 0.569958847736626 1.820871186480286 5.555555555555842 0.5699588477366235 3.745372083779005 6.388888888889278 0.4300411522633741 2.301996410804945 6.250000000000232 0.5699588477366359 3.985934695941409 1.527777777777861 0.430041152263374 7.834936490538609 5.307231772377185 0.590224568901377 5.973617858916948 4.169788469788836 0.4277287055064812 2.784924009002269 3.888888888888948 0.4277287055065448 9.041354299095971 4.571544715447197 0.60004516711833 8.630005702703293 7.664037576576873 0.5940747854432433 1.881780063710217 1.254027740441834 0.5744341148940879 7.360787517298641 0.4211697353615698 0.5780734600074021 0.9360781163727718 9.574173035023344 0.5658505598186766 5.874003977071546 8.583887723695824 0.5990399243722524 7.759988096502408 9.592054100204802 0.4268842186292212 3.474270701826224 2.386181315783058 0.6003216428404616 7.06200969549602 0.9835172423515806 0.4216744706861878 6.8661648589771 6.875098952946783 0.5896901698597344 1.099699280211658 0.4029526655452598 0.588858933542689 5.161066063309276 0.4229296944846085 0.5812538406223784 7.227668637524062 9.022452103287897 0.5828790333113044 5.894848693903514 8.888869571307458 0.6085368340965769 1.099291808670227 0.4135105095276749 0.5772668100036307 5.911778759114136 8.780504268935976 0.6038161534855225 4.748359049446875 6.666402959318559 0.5861791463370585 0.4023881467315693 4.490498633512275 0.4048590037177225 9.601159023166296 4.842828597865841 0.5946695118850926 6.445914051694815 4.007130087357403 0.5929007259817036 5.465073217782678 8.61177097273009 0.5865807194301866 0.4028474235495365 9.58387861525221 0.4112595704379659 8.653745834941464 9.62285485698777 0.3751433019912382 0.3773561383081141 5.518200209904423 0.6095143255499025 4.525680338785988 9.162179822085626 0.5877748232937058 0.4011624833155502 1.691176470588415 0.6017308157831061 6.08024449594271 4.746732026144049 0.3982691842168969 4.636868822968812 4.281045751634299 0.6017308157831032 3.57556318107609 7.524509803921628 0.6017308157831015 6.702877139186767 7.148692810457629 0.6017308157831083 6.136847463510636 3.700980392156993 0.3982691842168962 6.929289009456956 8.40686274509803 0.3982691842168762 8.542473585134145 7.173202614379112 0.6017308157831063 9.094352518918233 4.14215643779231 0.3982686333516426 1.89162612267389 7.982016306127122 0.6017350666255447 5.202900391904438 3.839873892324603 0.6017345882720109 1.283145957385615 6.111709507246673 0.5862633121632663 0.4021989332093497 1.201264629859275 0.3981338329301772 3.561482769775675 3.354547417372883 0.3973537064717911 2.852448256018065 5.74387601727295 0.6026462935282146 8.263026468723277 7.521214084039245 0.3973537064717765 8.144825723589879 7.848423434645396 0.6026462935282281 9.054040926098985 0.4035744582920346 0.4343340809137463 8.750070346009167 2.889730206057486 0.6010171075750398 4.894490957120031 2.481249618068356 0.3966693447753416 3.332506666036601 3.222780045351675 0.398557151255561 5.478389069349237 2.830204772742645 0.3936466797624486 6.568575491583442 5.168752491448766 0.3944724308782639 6.324952050998808 7.191081387307391 0.3954402245798597 3.210309351191244 3.541307798481948 0.3852634639470366 4.868411992489531 5.312500000000113 0.3914609053497997 7.05310800101121 3.92361111111145 0.3914609053497918 3.204106206413624 5.520833333333469 0.6085390946502089 6.692264082767702 9.608422664830577 0.4078755105650393 2.027738712800286 2.571764107086019 0.3964920810084065 0.3880201136943801 2.046680490024126 0.6098261753749715 6.449695110317306 3.142363543309903 0.6085368895897589 1.610377496607682 3.420138888889287 0.3914609053497935 2.091504125162766 5.052083333333549 0.3914609053497921 5.218818083273326 2.552083333333427 0.3914609053497959 7.624444204896621 4.079861111111155 0.3914609053497925 8.346132041383722 5.329861111111132 0.3914609053498027 9.067819877870795 8.333316299611537 0.3914584930979428 4.647491270259119 4.530952380952541 0.3912404467959948 5.940677750197565 8.611096747546071 0.3912202251539076 7.173752051175252 0.4419298544541847 0.6114957081536334 3.35112809397459 1.389316477767604 0.3913421306613797 1.760915684854914 4.44915410480859 0.6098473336401322 1.762769876198692 3.659072683857703 0.6098475900746132 6.598993489455382 7.131294906079827 0.3901524099253836 8.764056998916667 0.4426695517910026 0.6128716955984329 4.137597680194003 1.384178305361221 0.3901524099253804 6.2090991159419 1.481586172469785 0.6104094844995058 8.350505515219661 3.048564582556765 0.6104810315944157 2.726008162196115 5.787367101374315 0.3895189684055713 8.591235423706959 1.862558748916584 0.6195497057211208 7.753346407473212 9.615804101395815 0.6225432154578256 4.302074875845334 6.722488435849651 0.6161072475733695 3.985934695941423 2.500000000000053 0.3852287657008686 9.619726193235234 5.615263252556028 0.6027626645211492 0.3816185580539698 7.166164393991293 0.3952003750030851 0.3812812703357183 8.149261302938376 0.6201635081265825 1.020923356855973 3.888888888888877 0.3859058483733686 9.621837128096585 8.271287364906456 0.3819050132458708 7.843425383930585 8.704297171687564 0.3788681853104244 5.992039774631033 7.14034791197235 0.6256700139400009 4.556286440358508 3.798403736233275 0.6237407768845148 5.826597862808096 5.791251916910914 0.3762592231154953 3.985934695941369 3.281757094928446 0.6350048400053959 0.7330006663347479 9.609304049559196 0.3835989000480406 9.140118829250108 0.9455947472237107 0.6176296358645376 4.564431394420303 8.925134176241329 0.6134317216802965 9.079998476724956 6.829663041362362 0.3825796839127389 4.517896927915451 9.114948796229429 0.6181677015478471 5.234056798798906 4.772158219766776 0.3910956743437535 0.7487193639571457 4.307959433936356 0.3756896498092606 6.939633799868377 6.434618331173432 0.3697620794309155 1.593595902056757 3.295118203010019 0.3866576547456173 0.3705233916081752 1.607142857143098 0.6250734861845979 4.741988619879929 4.642857142857488 0.3749265138154025 3.058050334743675 5.337301587301996 0.6250734861845963 1.855237273931991 1.666666666666966 0.3749265138154037 3.676639908875265 6.329365079365274 0.3749265138153999 5.223113844204885 1.884920634920854 0.3749265138154019 5.223113844204624 7.023809523809704 0.6250734861845988 5.394944281463738 5.47619047619068 0.3749265138153979 5.463676456367167 5.634920634921055 0.625073486184598 1.545942486866123 4.087301587301744 0.374926513815401 6.357194730112917 2.162698412698763 0.3749265138154048 2.817487722581201 5.277777777777823 0.6250734861845978 8.144231277604646 6.250000000000221 0.625073486184602 4.535792095169622 2.857142857142869 0.6250734861845988 8.831553026639821 3.809523809523893 0.6250734861846063 7.800570403086983 6.329365079365154 0.6250734861846109 7.560007790924786 6.527777777777854 0.6250734861846103 8.728454764284724 2.162698412698388 0.3749265138154597 9.003383463898716 1.468571674302009 0.6251911550911533 2.98950158751215 3.650438183376112 0.6213005642983713 2.289617916856668 5.14416920488152 0.3558141673209716 7.594373878376431 7.427915397559302 0.3558141673209617 7.238102847922677 7.710855552834303 0.3556831245481988 5.304660450511173 8.6780508713326 0.6443077843372895 8.44071689618567 9.621842309839197 0.374609910147097 1.364508947509652 0.9778726372450524 0.6442421079211416 3.745447192838445 5.833257089277366 0.3527375133857206 1.099472520333216 8.83419570007354 0.3762304895605764 1.857388017163216 0.3340032616541192 0.6336411982047438 0.3337520088270273 8.61111111111147 0.3519972506410762 3.022307150825704 6.600042089020725 0.6298073315994648 5.696859733833227 1.199721066816647 0.3644041480372165 5.137588774973485 3.758401919196336 0.6471193415637868 4.707622532428266 2.601859662947242 0.3599720513977916 7.253602431302076 9.111449740119896 0.614056485761765 6.613878055701406 7.98733230375477 0.6325013712273737 5.933222753833839 2.631131810363096 0.6196733271460599 0.6927287117095269 1.946798081650588 0.3745199302645583 0.3546258603420467 7.770593172697789 0.6502799449565322 3.613941834089346 9.631202792037353 0.6093547906329234 1.027126211178463 5.694444444444441 0.6440072900149245 9.644007290014965 8.263764924796275 0.3651621434819219 0.3527504498343019 0.8408876537140281 0.6128650587820754 8.015014788785791 3.568390943518068 0.6312970572699856 5.164083256493147 8.930900778458184 0.3579460779343759 4.51314231004294 2.162250166382023 0.639319401032008 5.73559597321863 6.249999999999982 0.6443099980285323 9.643535414921507 4.331944444444822 0.6376396237507338 2.467297291447847 3.532738095238121 0.6376396237507075 9.022972133746237 6.957427476778877 0.3494083282621865 9.261655700639347 8.167499831675624 0.6379042541697462 8.391460952382316 4.531507984600943 0.3620957458302406 3.443775133704314 7.27404757095502 0.362095745830233 6.571089091814951 7.665833501657775 0.3620957458302385 6.948085279408256 3.828769448580797 0.362095818443838 1.565943422160377 1.18987584861857 0.6379425549284854 3.278877723627973 5.138888888888959 0.3554254333510369 9.6431229932581 8.75024909222617 0.3556594190243981 9.643272020629436 8.582917586175062 0.6384989742494338 6.226706468539587 7.273537529618635 0.6387543230635888 8.012697929772189 7.610159131442972 0.3612456769363877 9.202471217240106 1.385437912020742 0.371742801059721 0.3507034494089559 9.638099796396173 0.3706072770647796 5.53330860223886 5.441697034834974 0.345701507284986 4.773358780016082 2.726840825377534 0.6393849147233113 3.200135026372855 7.999844557111436 0.3538281123595431 0.7591691743599552 8.194444444444343 0.6443931983843807 9.643405718402438 6.639737534980703 0.3610270902077879 0.9306614228272438 8.947492655353006 0.3610431231431885 8.810242337203789 2.55391614234472 0.6586217875637757 4.355743883582186 4.893167417858836 0.6471193415637885 7.594373878376424 4.66880593115166 0.6471193415637867 7.982979372614913 6.328548283956809 0.3566110453235686 6.080327837364927 9.637099570715954 0.6286929851774925 7.442149765755944 2.239843058011878 0.6597870352177476 4.055948839042274 3.45460138643292 0.3402129647822491 8.005484959599944 8.723325836615917 0.3622245312513653 2.467226704316655 6.943214595029566 0.3396215500524259 3.886064018931194 8.914234089563772 0.6322049996285621 4.223944691730485 3.611111111111431 0.3386139529965336 3.406767758345693 2.312346252633761 0.356994928738244 6.319924630416171 7.375065149535591 0.3374968185859114 5.597741811530979 6.913626883986527 0.3539295987462312 7.205206033773832 5.050910879629865 0.6440429526748986 4.952980760264151 4.09932406868536 0.6612150242543655 8.088303239753815 5.328688657407452 0.6440429526748952 8.801982554861606 5.099053009259253 0.6440429526749021 9.199723164683208 8.103693792758657 0.6440478320697056 4.781424386151317 3.98846550137537 0.3528806584362135 4.707622532428282 3.206339645434201 0.6640282461804516 8.629944166919705 5.277777777777836 0.6640514151205943 7.741049674967698 7.488136077079475 0.6640514151205841 7.427149164509927 1.618586473349797 0.6441461798621383 1.894879123315825 3.143790674346555 0.3556612159895284 1.345121656602053 2.509381478505553 0.3341097371644162 4.541831058512879 4.674757725015509 0.3548276599542509 1.897011957205657 6.902236389908193 0.64517255977331 8.63580028692167 3.659986505281748 0.3546000570188571 2.539878745833926 0.378161344446215 0.3696108413163797 4.832804048563618 1.709882502763946 0.3543475442452888 8.47719900586327 2.824917677230409 0.3542866636961848 2.860386845461746 6.015565907472615 0.6457133363038068 8.71772998356456 3.462307832474689 0.3649285765336284 6.411950282081897 8.613298455813709 0.3636155538140219 0.8960076746930959 7.638888888888862 0.3553268754699895 9.642969356726473 8.335351496804893 0.3271947527749748 3.584928087815522 7.777777777778182 0.3274453224216702 1.660940115542892 2.777777777778174 0.3271604938271603 2.141621336029884 2.500000000000426 0.3271604938271602 1.66049611170518 1.944444444444873 0.3271604938271601 1.660496111705148 1.666666666666944 0.3271604938271597 4.066122233328586 5.000000000000417 0.6728395061728401 1.660496111705315 1.666666666666818 0.6728395061728437 6.792498504501793 1.944444444444694 0.3271604938271589 4.547247457653281 2.222222222222621 0.6728395061728394 2.141621336029855 6.666666666666865 0.6728395061728412 5.028372681978241 3.05555555555588 0.3271604938271602 3.424621934229064 2.222222222222452 0.32716049382716 5.028372681977976 2.500000000000369 0.6728395061728397 2.622746560354556 5.138888888889225 0.3271604938271601 3.184059322066836 1.944444444444561 0.3271604938271602 7.273623728826495 5.972222222222636 0.6728395061728405 1.740683649092795 1.805555555555878 0.3271604938271606 3.184059322066664 5.694444444444835 0.3271604938271601 2.221808873417471 5.972222222222409 0.3271604938271561 5.589685443690334 1.666666666666702 0.3271604938271575 8.877374476575444 6.388888888888954 0.6728395061728416 8.235874177476111 7.638888888889266 0.3271604938271622 2.702934097742322 5.416666666667026 0.3271604938271618 2.702934097742153 6.527777777777804 0.3271604938271582 9.117937088738039 5.972222222222333 0.6728395061728422 7.193436191439266 6.527777777778101 0.6728395061728405 3.344434396841812 4.166666666666764 0.6728395061728454 7.433998803601502 6.944444444444501 0.6728395061728427 8.235874177476155 5.972222222222256 0.3271604938271754 9.117937088737978 6.666666666666733 0.6728395061728447 7.754748953151438 1.111111111111139 0.3271604938271638 8.877374476575408 2.499999999999988 0.6728395061728414 9.19812462612526 7.777776103394112 0.6728398162439326 4.547248424359621 1.66609951797011 0.3270554662906762 1.179698330833337 7.595174889181188 0.6471193415637868 5.505025237411621 3.425141449895447 0.6487267310924258 1.834970132700766 8.701042077006065 0.3516132171516584 9.197466044315499 9.159802380109463 0.3408870067500154 3.093818940581722 3.843982677092744 0.6579821633340424 3.908719434789242 4.669035639673397 0.3495995697443512 2.383888851887862 3.099883198636855 0.3495995697443512 7.026241501882088 8.150116801363348 0.6504004302556508 6.478567969734542 8.099883198636755 0.3495995697443475 7.200255806221557 3.569736447852726 0.3495995697443518 7.358925977300632 8.792529513301664 0.3529551919240968 8.2426308094222 2.779547498494301 0.6732628246687005 1.180690663837215 7.832800559826146 0.3487251890306349 3.181900076825094 4.345618647743625 0.6512748109693665 6.625645694001244 4.91613389315924 0.3487251890306289 6.955032824518776 6.611451082614733 0.6513666214475227 4.625228043675215 8.798596652509854 0.3491167979091642 6.596701316619927 9.658537411195976 0.4031248962708535 7.091119792996839 2.218162150182447 0.326273735074695 1.182135527564463 3.290654395426282 0.350469086176717 9.274552894401165 8.297374187550593 0.3549874018525935 2.246281519256173 2.265444515488546 0.3352358180105326 3.891885347842857 6.932164266794537 0.3466840304286267 1.920569922694185 1.308687762263389 0.6533184879310961 8.015014788785823 3.429621860947561 0.6647848772862013 8.166445840475433 7.22222222222262 0.3252337984490683 1.648482428277392 0.8813151151043039 0.350521221600421 0.335808975218875 3.014797898425442 0.6563504068405285 6.731497375995191 4.100773840383956 0.6564510225097591 7.028212233008727 3.428139641584467 0.6548757034372568 6.187859287669128 0.7720459127687422 0.3595933195243105 6.546898509549238 1.635160222072091 0.3430207573018886 4.963555209340536 4.820730755495761 0.6569792426981103 2.92300329023777 7.051826888738714 0.3430207573018914 5.173377692003128 5.65406408882894 0.6569792426981137 5.32862941186127 4.059284222372753 0.6569792426981085 6.135628140652307 1.872557644234239 0.6569792426981104 3.590120363920585 2.190715777627754 0.6569792426981104 3.039054312041817 5.309284222372982 0.3430207573018872 2.076803863392594 6.357382444294135 0.3430207573019049 7.338441201464176 6.321886800210605 0.3430207573019077 8.641935219329978 2.885160222071845 0.3430207573018959 9.053119616100448 1.984824800060186 0.656979242698173 9.138430508404721 4.158200168600551 0.6744073761850782 9.674361715512623 2.608197282920051 0.3424775315512647 8.572841196915778 6.080707656575729 0.3422854305957386 4.964701470234487 2.013270109586396 0.6584369260641157 8.402130041662826 4.836201223695213 0.6554254917049779 5.331355956850446 3.863979001472814 0.6554254917049738 8.458669914960854 7.625599086491289 0.3246994193090303 3.657511675399783 2.917981829108914 0.3457109944705649 9.653815637310064 8.600315691736613 0.3251613420910857 4.072354971611064 0.3554302964027606 0.3592565810969133 7.988922106691619 3.362148319051582 0.6589601182700779 1.117664222660609 9.332180823659854 0.6319303287855311 9.276164669254577 3.115702305269701 0.3446337366973266 4.786088401418799 0.3486366656409536 0.6384011991240703 1.709816112620377 4.489076156314615 0.6594957745720185 9.346834527946283 6.34860485526093 0.656243233679787 5.443533109152382 8.038979249422592 0.3240906474904566 1.18894172106873 2.044258638910573 0.3303845473090431 9.621622098406167 7.559622365006618 0.6628194499381879 4.074280248945563 3.574235213683555 0.6628200063445642 4.339318064426519 2.755032478652833 0.6628200063445626 5.934910507441551 3.15756854701672 0.3371799936554363 7.722115734215747 6.448510085441967 0.6628200063445666 6.784340199768184 6.389033770554591 0.3564195934071488 0.3659244881561931 8.887370648331984 0.3558340552331727 0.3671676234835968 7.638888888889242 0.6429675954691478 3.036628110608972 4.722222222222313 0.6429675954691561 7.100304790734866 8.215824696203477 0.3362699620779376 5.695766494115403 4.220781893004053 0.6471193415637362 9.03774955135054 9.08962532888814 0.6529013091344285 1.758381768870523 4.222578361846789 0.6645892290917584 1.18845235576317 5.159032449639568 0.6765697952006924 4.318314735712804 5.659287731737708 0.3343146857873608 4.348283733374933 1.940599499192719 0.6762398006801019 0.7098925138664796 9.0651336199212 0.3290378771568303 0.9598046567418126 9.107196320368693 0.3441588158116053 7.670029778413634 7.796326507844069 0.3324549869686797 5.954807713934779 6.788733429632945 0.3332312115205328 5.639242524719101 7.222222222222619 0.6812083867579739 1.656931540076587 1.11735705834157 0.6664915168373778 9.670194980438566 5.740672283626276 0.3308022044310074 6.05933836678812 5.68126582915602 0.3308022044310115 7.628790782057069 7.189172998329068 0.3308022044310171 7.720450620671547 1.666666666666817 0.3173066032393284 6.792498504501793 2.777777777778174 0.6826933967606749 2.141621336029884 5.972222222222409 0.6826933967606715 5.589685443690334 1.944444444444873 0.6826933967606748 1.660496111705148 1.666666666666944 0.6826933967606745 4.066122233328586 1.944444444444694 0.6826933967606736 4.547247457653281 5.000000000000417 0.3173066032393254 1.660496111705314 6.666666666666865 0.317306603239326 5.028372681978241 2.222222222222621 0.317306603239325 2.141621336029854 2.222222222222452 0.6826933967606745 5.028372681977976 3.05555555555588 0.682693396760675 3.424621934229064 5.972222222222636 0.317306603239326 1.740683649092795 1.94444444444456 0.6826933967606748 7.273623728826495 5.138888888889224 0.682693396760675 3.184059322066835 6.388888888888953 0.3173066032393269 8.235874177476111 2.500000000000369 0.3173066032393251 2.622746560354556 6.944444444444504 0.3173066032393275 8.235874177476145 5.694444444444835 0.682693396760675 2.221808873417471 4.166666666666764 0.3173066032393286 7.433998803601502 6.527777777778101 0.3173066032393259 3.344434396841815 1.805555555555878 0.6826933967606751 3.184059322066664 6.666666666666742 0.3173066032393288 7.754748953151434 5.972222222222333 0.3173066032393268 7.193436191439266 1.666666666666702 0.6826933967606731 8.877374476575444 5.416666666667024 0.6826933967606762 2.702934097742153 6.527777777777809 0.6826933967606726 9.117937088738014 5.972222222222254 0.6826933967606821 9.11793708873793 2.499999999999988 0.317306603239328 9.198124626125258 2.500000000000426 0.682693396760675 1.66049611170518 7.777776773119937 0.3173069053380435 4.547248037693236 8.333333333333657 0.68270846907084 3.584997009004298 1.666453403591551 0.6826084774132439 1.179494014874535 1.111111111111139 0.6826933967606773 8.877374476575408 4.871979351906924 0.6768647805415902 5.743785736716174 9.148218412644804 0.3414217279593097 4.03266511964242 7.873556479228594 0.3293176083626314 8.464193069665953 8.226602910696952 0.3293176083626225 2.894521830014213 7.233173943408328 0.6706823916373794 4.984916304508705 5.844285054519299 0.6706823916373926 7.798205330620949 8.301174867081137 0.670682391637378 8.908587134072782 4.754318550948711 0.6707859541807857 2.172618742822607 2.959559372763675 0.670785954180784 7.205733724087818 8.290440627236539 0.3292140458192138 6.29907574752881 7.959559372763593 0.6707859541807895 7.020763584015808 4.869853382221999 0.3217539015890512 5.745013165886054 0.3322073814614237 0.3609494088298162 7.504337752564822 2.392921277073902 0.6712628921199248 6.040804558113368 6.537858748239972 0.6712628921199186 7.150884724666356 7.359890197989509 0.6766072023154728 2.251645952221923 3.601559282855055 0.6746083632572758 9.673735099835275 3.467533395865666 0.3418701405402091 9.647857126859432 8.194444444444422 0.6774728022205927 8.024201940294256 9.649770880422603 0.6497708804226022 6.551905531263524 8.92107935846018 0.6446468151768514 2.358971963646641 8.434263691495715 0.6731355614998287 2.395702372617627 2.777777777778232 0.3175338994868238 1.179370887380509 4.406931694481154 0.6733478380537944 4.079750959886775 2.219730346874087 0.6818854078460003 1.180809572283772 1.939040934640604 0.6743811992251745 2.585056053287502 5.724378822529473 0.3256107947504042 5.085052029281345 7.325785232258986 0.325610794750404 4.132139933890563 2.92143213652742 0.3251934408123994 6.107838104522091 0.7037221397656619 0.357845490770762 2.656105169482315 4.132673110773774 0.6671088649980512 2.122149217037539 1.937369271876145 0.3208215977748009 0.7079456935750843 2.251233012206124 0.6759285187511601 8.696690614748455 1.558842202049624 0.6764184693356652 5.574461170314581 6.281621409749701 0.6646560340591134 1.470864689707692 7.641084818995791 0.6765195856901806 5.142917311829541 8.595986312262941 0.6797694442530051 4.074854540015613 3.055555555555523 0.6779835390946449 9.230199641080295 9.668797437536035 0.3730547505669586 7.963065265270076 1.082547377522423 0.3234459655446547 3.88661421207679 1.387081447993185 0.3226896027982924 0.712184521806527 1.387081447993185 0.6773103972017076 0.712184521806527 3.501229357199324 0.3217794636623097 1.723936371905477 9.295372582405982 0.3568793392103872 5.98427864499944 7.219867944575674 0.3221059342180048 3.554821383207873 5.141276293715358 0.3217511937024122 8.607217913332825 4.836675700090376 0.321751193702461 9.134801617506973 7.667420831300029 0.6787669826674523 2.686461173110967 6.062135747522644 0.3343137523390743 4.605208697390732 4.887800810049622 0.3217142167832281 2.690665805930415 7.775057580678781 0.6782857832167722 6.44250025174672 8.221134143382645 0.321714216783229 6.724579258926466 7.775057580678689 0.3217142167832271 7.885875924720795 1.137790157256987 0.6782846004208551 4.078379449147778 2.21313147672469 0.6745229775612398 9.674001306090034 7.251764976854668 0.6769804001685173 3.41418225826934 8.88603377066082 0.3246090521211848 3.574033002835251 8.88888888888922 0.6807721382856681 3.580330335585595 6.66666666666678 0.6786414639908929 6.347550708784625 7.777777777778235 0.6471191598600519 1.339745395659548 5.972508022463241 0.6473310454457641 3.023849254137861 6.249714199759706 0.6473310454457658 2.542394016121397 2.53061351149378 0.6688642872487791 7.407909188610308 8.493275802618582 0.3215766028351171 5.286753731875822 6.66666666666678 0.3211746539051527 6.348697284112572 7.347437821356485 0.3251060085489438 6.046034320049886 9.059105343364871 0.668173489166058 7.173813372049048 7.756199355100444 0.3303767037074166 2.096513992308086 2.633050027966335 0.684795641476754 6.548564824414022 0.3753120982187531 0.3479175118759747 1.227036304166436 1.361722401901734 0.3219679457632536 5.525686669024005 4.311561680117462 0.3263659168597068 5.560681909642999 0.3408121678032062 0.3628130657666183 2.725428965813819 2.743058635529526 0.3207310230404032 5.048417788101201 2.767941154959006 0.6746611029911094 9.673570673617723 0.877337564202861 0.3279111876051798 4.372310307149715 4.144952354701524 0.6688162777293821 0.6518857095409456 3.83781470113683 0.3477422570740472 7.58636390337032 5.717393502477851 0.6815603685350529 6.057561023181859 4.758211109949319 0.6795041150111123 1.200149081397441 0.3509199766828831 0.3303672281027384 2.148742694147697 8.593742796530774 0.6727361077305818 6.832753455415823 0.8529142722846048 0.6764342623554076 3.115120364697685 0.8606136305182728 0.3221578630559906 3.119566797041796 3.018820226687974 0.6796423448520594 5.53070705831329 8.606513560242469 0.3183842845650526 4.855396334463748 2.64408224916638 0.6490428083332089 8.313063326909187 8.211426563065544 0.3235144633136582 1.760386872565344 0.850863726033502 0.6540642601795044 1.701570348838255 9.305555555555507 0.6749071336520823 8.624507031268607 5.239472484160649 0.3200669209350182 1.201486458962126 3.0940340770668 0.679965158304501 4.364656798126065 4.822632589600452 0.3200348416954997 3.64296896163913 2.500000000000208 0.6799651583045021 5.465066736797922 2.816256299289046 0.6799651583045009 3.883531573801364 2.878188145155761 0.3200348416954992 8.177902224840857 3.29485481182266 0.6799651583045015 3.88353157380139 6.982922965955497 0.6799651583045043 6.770282919749726 8.094033067287159 0.6799650352015389 4.08833683668575 6.799438048204429 0.3506149149726915 2.53902707845116 1.154708699657247 0.3254736033052217 2.640030974997028 0.3387368470733619 0.6612631529266375 6.604896345216438 7.248590955022669 0.6656149448425571 0.7547719080658603 3.900116760157145 0.3207689196533398 5.970216461770758 5.717731073715266 0.6792310803466672 4.145830058036498 7.514129711543353 0.6523121877442437 7.072585583605838 4.191661204685767 0.3212437534220581 1.174242898581116 2.04847320153079 0.3327272896340417 6.663539422565048 3.592060487139087 0.3155519025309182 4.375873499999835 6.407939512861305 0.3155519025309226 6.781499621623412 3.175393820472259 0.6844480974690832 7.685560298642433 8.597740277868681 0.6794691872327132 5.848427693298442 5.328688245451689 0.3278569937746738 3.635576516062147 2.356402581659199 0.6781538862575427 8.098083208626408 1.508773806843348 0.3158539694903186 8.164585536740603 0.8696229514410659 0.6672585067300345 2.112334776327801 9.260564260802353 0.6602567803596542 9.659281809675152 3.844109323461026 0.3188679817108512 5.323269337373764 6.648649632991945 0.6848605563515533 1.491921007712801 4.587389582495291 0.3201337999040723 4.124402707124936 9.188396188351007 0.6569185466794968 7.52613396067418 4.722222222222253 0.3186317987482983 8.770179081316574 4.322769807972418 0.6859200470311572 5.580094956545513 1.244651592540801 0.6840488489904152 1.883070448055095 4.397509578544119 0.3184688519937566 7.942221885388166 4.7222222222223 0.3184688519937526 7.379803088677596 6.111111111111315 0.6864362034815823 5.00947406678298 9.026963351675581 0.3140426036255063 7.173808972635657 6.19509360717926 0.3218298538054088 1.220317739173888 5.186738196809959 0.3182995108788648 4.334310656299731 6.967914434939035 0.3248355815103198 6.027929045076267 1.136625781286573 0.3223184647833472 1.193371687325696 1.136625781286573 0.6776815352166528 1.193371687325696 5.760847459114646 0.6757725993849564 1.206623966996261 5.229101430773937 0.6818536445069655 1.207474189426724 5.534905517056051 0.3339648798199744 0.7586531192249468 5.85783238508364 0.343422799690901 0.3269963747547253 4.812005416959927 0.6819331532379308 3.636833360654398 3.104661249707331 0.3180668467620673 4.35852119714133 2.826883471929573 0.3180668467620683 3.877395972816632 2.500000000000209 0.3180668467620659 5.45279553482845 3.284227639182127 0.3180668467620663 3.877395972816653 8.104660689929247 0.3180669031398398 4.094472801038942 7.548886715863328 0.3180805896417448 1.207679227059365 3.748196303564021 0.6809451981445528 0.8383521560098939 4.77175089789301 0.3179885168511672 1.207966281611502 9.166690063512368 0.3413914813974396 8.186443942471795 1.250071302090838 0.6873829254154291 6.088233489768939 5.587123008937955 0.3459736778352449 1.344605483934416 7.240671935378344 0.3183000811644636 0.7188893034764143 3.496120760275784 0.6806389322116726 2.710173023416185 5.54987538005894 0.3193610677883296 8.211557973571589 7.662787426942094 0.6806389322116781 8.002550490987998 7.795996140334298 0.3193610677883196 8.860297198345497 8.351229319068713 0.6806496356393327 1.998948652489652 2.103285092583238 0.3299397588283487 8.20998160749633 0.8389164606652423 0.6779909300149356 8.412309802337194 0.8389164606652423 0.3220090699850644 8.412309802337194 6.957801778786305 0.6886653490474772 1.973534400677488 3.611111111111236 0.6888040877118382 7.418791354620168 1.830764931849045 0.3192154190949803 6.225309080174985 7.66409826518228 0.3192154190949804 6.557812554954504 4.002569166886421 0.6807846642834288 1.746562157318078 8.037852341500773 0.3192148089514567 5.009491160518514 4.166666666666931 0.6826887409189825 4.485833707667827 9.158511675081488 0.6508380648841781 0.861259578954275 1.396477777871596 0.6807904174089503 3.609785497013229 0.8270342871270651 0.6669904680439289 6.31605522976529 3.348930080382207 0.6537752475317566 5.676136278246278 3.472222222222435 0.3107384697598637 5.254306585357639 5.017305893660859 0.6797771957811571 0.7198752386556899 8.594477752359161 0.3191949443046704 1.473595014469459 2.821883354258486 0.3448406961428446 0.8056292157431351 1.927576982609291 0.6789621422812563 5.383675023084178 3.843292329993539 0.3176064249494883 4.095908872215943 5.127959445891102 0.6810555407435168 7.007446055900654 9.262367372501092 0.6611104408423334 8.012136932237814 9.65279748647554 0.6499924075714839 3.19308997570868 7.765867208396138 0.6795349207399516 0.7191184202562118 6.714545421752375 0.3246877940532754 9.674024843461901 6.991139378547986 0.3161885131347683 6.76553917172768 3.61111111111143 0.683162569929795 3.488990189529627 4.026224725593647 0.6544013168389342 3.003671260501373 4.764972221749849 0.3413564817176907 8.113615446641019 6.816890614059269 0.3098366688504544 8.643356163491747 4.595488497411352 0.6827775752304646 4.763208217605281 4.302173618253755 0.3175567008406565 0.8324566607558247 3.786196399325171 0.3179620844150616 2.193131071006353 3.137553734362708 0.3166251771453495 8.669657731193276 6.74849426826168 0.316593588772672 2.896253522096779 9.664177676754434 0.335822323245568 4.096930396879126 8.598309493060459 0.6812041260651596 9.172046322174545 5.00000000000024 0.3095783741208187 4.88068356372444 4.027777777777833 0.3095783741208168 8.00799752183482 1.655649136326148 0.3096014628039806 1.974885287146781 2.799366785401056 0.3448847296869261 5.65740856171487 1.496310355329792 0.3185200806333232 4.626808105317546 4.598524142132153 0.6814799193666765 3.211624354160177 5.431857475465348 0.6814799193666776 5.617250475783655 5.448134089115315 0.3185200806333233 1.740056759369615 6.218532577551851 0.3185200806333246 7.675188305487141 3.52152464388069 0.6793254762418572 7.020347109007434 1.358114359100568 0.3183792538025304 3.104191899074358 6.406016075362237 0.3184525748536897 4.574396062215983 5.123556899905666 0.3180638218498703 8.181728565231554 6.537965929968129 0.6910128913819653 0.9446904076277169 2.232183970384087 0.3088194019305004 6.958624997259493 5.694444444444449 0.3165085460947564 9.532643340243162 7.50957400688128 0.6914678138328016 9.192597070675403 2.379555115606471 0.6754685502359148 7.71837049087951 1.448532675910204 0.3161153480824944 7.239188372334294 7.231602532257249 0.6916112929782412 6.477164079476094 6.249999999999994 0.3165414268039462 9.532848364055225 2.279405515701295 0.3156825209165218 8.683984611917289 4.16629345567072 0.3082438522995676 3.434904366908184 8.982533359576541 0.3401905736987059 5.390508506563847 5.278133572097651 0.6918383045690091 6.461578908872313 1.388888888888909 0.6831028995312793 9.294503513382558 8.773195692511832 0.6887492950686653 6.538543853024197 6.510541290443811 0.3442685004382927 3.999359721635098 5.407766904476611 0.311065455442025 6.559232559079493 1.093543520229699 0.3383675716982874 5.745548267539575 0.8443967906002197 0.6849501393082392 0.7063782890588131 6.187281864369735 0.6844539757340733 2.185598540928055 5.631726308814116 0.6844539757340733 3.147848989577425 6.034940357853205 0.68445397573407 3.380644729331222 5.909504086591925 0.6844539757340723 2.666723765252731 6.312718135631028 0.6844539757340709 2.89951950500654 6.590495913408819 0.6844539757340702 2.418394280681853 6.250000000000286 0.3155460242659294 3.75313895618765 4.733069603491524 0.6810020536616336 4.439986202101091 8.750016866803671 0.6834710919411078 9.532741090725329 5.100801262220195 0.324907130954817 0.3407145283419242 8.194444444444347 0.3165505243388447 9.532905090669031 4.368910383463216 0.6845718817112293 2.899887099463743 3.888888888888927 0.6845718817112163 9.271280480019009 8.872843729807732 0.6863091948218987 8.722444663373667 5.541276585208769 0.6790939898911801 0.7287603793386753 8.118584906144349 0.3300399596579294 5.365157615551212 1.31175070846506 0.6842748225552168 5.072908431210563 3.055555555555928 0.315255333640877 2.548513328020987 7.287668616689453 0.6849592088519497 8.679213908337722 4.444444705248363 0.3150406775803405 1.584924868365789 6.25000000000022 0.3149526084404375 4.222430610590264 5.138888888888935 0.6847906578667791 9.540090443676521 5.182869363113586 0.6828702584529073 2.20817803883395 8.045369967467508 0.6828702584529079 7.389095178361277 6.382140791946278 0.6881623526422425 6.005926991941287 3.372478341348264 0.6831810648360763 4.835755818141622 7.697185449378823 0.3316302475267651 0.3352282731402217 3.26552990026416 0.6853956974820189 2.180767666364607 5.206692321958657 0.6853956974820208 5.308081624475177 4.234470099736271 0.6853956974820186 8.435395582585576 5.484470099736266 0.6853956974820217 9.157083419072633 2.987751665357959 0.3146042178645642 1.699642705963138 8.630505168279035 0.685482034820475 5.32610020723617 8.333314647276223 0.6853969559663359 4.468979742124374 8.611077141081868 0.6853955803711909 7.351856821448847 8.74387923505236 0.3059194372996987 7.678095241054309 4.634948260579671 0.3242152283066825 0.345253729989127 7.63888888888887 0.6834186759352703 9.533097138753332 1.054624901671773 0.3157689323476071 7.46951417746956 2.041513431450794 0.3164928355354609 3.631926079305148 1.736111111111335 0.685699588477366 5.068466450671678 7.98611111111148 0.6856995884773656 3.143965553373306 8.194444444444821 0.6856995884773673 2.783121635129816 1.944444444444468 0.3143004115226513 9.278312163512787 4.300109153335919 0.3054747012329359 2.385328429980153 3.477668624442229 0.3054747012329254 8.954417532175169 6.457750884841688 0.3143651280217237 5.54898637676826 8.556706069745749 0.3313232953161492 6.839925922978182 7.040257859331422 0.3162896129784845 1.226118448832858 1.17595886190629 0.6848483489126576 6.755058638123919 4.638826213332495 0.6803928969559125 0.786563381287478 3.801183889612465 0.6768536755773187 0.3483736848769811 4.043185097767173 0.6900687307001674 3.344541461693417 4.446379204055049 0.3145320244301835 4.943389847480228 9.074691074246726 0.684072220227694 4.59206854599491 5.366071377061862 0.6843896016612024 4.823819703808427 4.722222222222228 0.6915409824312385 9.690190902793372 4.270645820644595 0.6691293530127388 0.3308706469872612 2.211951424070273 0.3098435899565358 5.816210637330988 2.255882898265753 0.6595862586168553 4.688188532053505 2.811438453821465 0.6595862586168497 1.801437186105408 1.355228212845779 0.3404137413831456 6.651557430101573 9.665995525049972 0.6647484186065683 8.912853827293981 5.363150865930711 0.3125771566181993 5.780957880426093 1.632421227197484 0.6598028376635339 7.133020267747713 6.006467661691936 0.340197162336468 2.08120541233871 1.978689883914032 0.3401971623364619 4.206725694407366 5.450912106136332 0.3401971623364682 3.043455860988084 5.728689883914142 0.3401971623364687 2.562330636663398 1.388888888888919 0.340197162336462 9.077292778742585 4.724837196123842 0.3033773469228912 6.309863524291339 9.698934921873651 0.3351175609766062 0.8337526897655051 1.667849873088656 0.3131971168717718 5.89740800771703 7.410052722098027 0.3160966051756576 2.206027098770001 1.388888888889143 0.6877354838355501 4.485879088621155 4.382259246874637 0.6873089409721891 6.026525771184083 1.388888888889069 0.6872409479882341 6.401171784312514 5.640088882211609 0.6881910436677502 8.668194062900366 2.721082844897516 0.6880606091373829 7.722016118391076 3.8680700240665 0.311150989591013 0.7011449047082765 1.389656253099059 0.6870548202971442 1.573187298792441 7.075583734830561 0.666515104696332 3.912041992641033 6.973110368683371 0.6900765773102592 2.450769900974767 0.3607659377672049 0.6807069967860682 2.131921035457807 5.27777036151485 0.6985541772535671 3.585001290785665 2.638888888889117 0.6985596707818942 5.108560219365448 4.166666666666936 0.3014403292181063 4.386872382878501 7.222222222222216 0.3014403292181088 9.679249850450212 6.666666666667023 0.6985596707818935 2.943496709904586 6.388888888889244 0.3014403292181107 2.943496709904555 6.111111111111428 0.3014403292181111 3.42462193422924 7.638888888888889 0.3014403292181127 7.514186340989189 6.25000000000029 0.6985596707818946 3.665184546391591 5.825848122982582 0.685435546673539 6.406171983948284 6.112404074325254 0.3147856755353498 0.6127928407597223 1.111325577915948 0.6827274782683806 2.653435359476274 4.612968280190115 0.3086375927629715 5.288176679684806 4.312694388597055 0.312904876428312 6.604903919061186 2.475902481915882 0.3139152720831346 0.7305571417133561 9.404842976503454 0.6821371615084826 1.971800192912485 9.117921600226895 0.3160310842877982 1.675761013798054 2.002664252320911 0.3331700741744683 7.633762023526296 7.222222222222459 0.3106926909785228 4.456163030330556 6.905956784292695 0.6911853153072816 7.251402867877674 0.9750620638247534 0.6981460238513104 7.512896717488472 0.7778595288254163 0.3399942113075625 3.725492964179896 0.6966526807758054 0.3276645406719026 2.245437814615501 9.166738167170109 0.3016887080706647 9.680308878605612 0.3147814476291606 0.6871945025391857 5.539298489326508 3.798560766984628 0.309207186660407 6.523899320449025 8.194444444444418 0.3045091114413073 8.165254156199115 3.901666895946182 0.6855006744896368 8.820559401509927 3.203141110118164 0.3059845266865771 0.7806289696776015 7.450895931142427 0.3346939662667248 8.584974574399201 9.160545380076295 0.3145268629082098 0.6061711758883312 5.140979065607507 0.6915601381752934 8.523701847885622 1.101735548814375 0.6775972681446227 5.781132702550574 9.078834029598797 0.315759887422815 9.154070368034491 7.81780788691646 0.6915933996822061 2.167518151147971 4.390966629667908 0.333074060370821 8.525748896268867 3.763279830840645 0.3152142146398708 8.439191977113493 5.471118288258825 0.3327133911798723 8.76574928080413 8.745734346521587 0.7001395424407264 1.903521500052217 1.53096058788819 0.308563456718097 2.813380956235784 9.664588990304189 0.6664169128469795 4.908348261166441 3.691852703768567 0.6686627821845497 1.613891800413887 1.762380305261689 0.6932674427244736 2.196881631037551 7.179547424752537 0.6651268486036492 1.321972895533926 4.861111111111263 0.3080227541328409 6.62405078054311 8.510256284342562 0.6841826292690678 0.9237459345740247 0.8559408014061218 0.3170767055783285 1.635145940575863 1.079267928936408 0.6635091868241498 7.083982125074479 8.457444767071365 0.6952596366131774 4.782669027636313 6.837897373602604 0.6650292527030944 9.250393375065864 6.66666666666715 0.3085063076894864 0.5968462041416149 1.666666666666681 0.2995292835661138 9.67924985045004 6.250000000000003 0.6391808513207561 9.305557618874699 7.233952596176737 0.6923384634929923 9.688947752848124 6.111111111111236 0.7012491477147591 6.800883463750358 8.611056892082194 0.6992275752416111 2.939425979966391 0.8410114769801391 0.3101269010111463 5.34930278492423 3.640287114522475 0.335759151788681 3.74252682910046 9.167117212214352 0.3456113268739451 2.406499186650664 0.9344510107156813 0.6848093189728637 0.3545894633631484 8.626175984174999 0.3028441158989275 6.310898361199344 4.310469164325679 0.3088987992465911 3.739237108909362 2.8015772584623 0.3352514134849223 4.212756671523907 5.701410779058242 0.3320547342038034 3.55767223211677 6.520811443164674 0.332054734203794 2.008571038142489 5.431358586357232 0.6899931652883984 7.152019041195968 0.3376544994559171 0.3318041049191459 5.678346673692766 7.909798895569573 0.3014329924686032 2.394056402946935 7.659967220554528 0.3080367452905124 4.162253048500382 0.9379522223036634 0.3321217432907996 4.774571848040735 9.687791310760765 0.683668755410294 0.5564359008023052 7.705809467310385 0.6744028213551441 6.111406906908609 3.956120380710928 0.6886027286244869 2.677109573121667 4.768315893175101 0.6912099323316425 9.162372575182816 6.6580178227575 0.7017629463038093 9.674256438091039 5.441281282188855 0.3119436866162367 0.3458955421098837 1.515438440776513 0.6835186260925233 0.3299293851850951 0.8462323639150779 0.6839689148833757 9.311445352394546 9.146839436655263 0.6775564995352915 3.943059513186797 0.9743875407358935 0.3006492831144534 7.994129531640014 8.815533527800117 0.305175255595968 1.22186446285743 1.38991107895713 0.322595862760563 1.432394125675632 1.328205919964782 0.3108951093134993 8.446959702538885 8.927544251873391 0.6939859605876353 8.222355943062823 0.8432886935370082 0.3377707546532667 0.7266985612204875 3.34407648147228 0.686506434904024 6.514357621854602 9.244746498752912 0.3133219150113902 8.656562366851277 4.425121380907185 0.6984036375661211 6.955930518160335 9.658035560656623 0.3373528890848563 2.686563462136263 7.50000000000035 0.2971500081544113 3.090495887365961 1.445371158224283 0.6709834954154437 7.6178029700805 4.447466248654261 0.6795491841231367 1.43561828672397 9.160997708353005 0.3085517068756597 6.865577105400456 9.289502882241628 0.3230260325478475 6.541716184765581 0.6474607376937347 0.3345073962201497 5.832927325230929 2.396065304051864 0.6851597032698575 0.3535569784634025 8.026115445757073 0.3310709593093301 3.711374127492177 8.292419926268245 0.3113546293974363 0.9719812666490798 4.250342316480065 0.3188249987190639 8.984662031726618 5.287364812910287 0.3026090012708947 7.891231678240731 7.067387116296084 0.6690912896562788 3.064566343981869 0.5561109569038535 0.3088631702828786 3.469622138736812 6.125429395688359 0.3096063839777986 6.39602988031921 2.375493272603252 0.7303453502350198 3.37659677800796 2.83175459670519 0.3196470555125011 7.791476590997819 7.960855411895857 0.6859200470311494 1.760386872565333 6.666666666666703 0.4086533016197013 8.075499102701251 8.262557631071335 0.6910331856572348 7.698026674113097 9.407742693727595 0.6881699516768127 3.593276846344549 9.252947580677979 0.3032330004322759 4.617128883125805 0.5725639586686138 0.6722122027264577 4.854298689408181 0.5566272805758302 0.3002499079617937 9.698907354263529 4.429915582131622 0.7039407308977794 7.746360710583946 5.674558291501498 0.3123039298494996 6.75862914965794 5.714486392396123 0.6693749935005073 3.47009579948224 6.507735829826811 0.6693749935005167 2.096147470777046 9.027777777777915 0.2995096520463346 5.71864376839387 2.059357700747754 0.6919529810931568 0.3612254458901153 4.831940980596967 0.6687866113700703 3.968906982157296 9.620830623392369 0.3121390223308853 3.155987336689648 7.130359595661011 0.6923073642013992 7.717027765822667 4.437840735473352 0.6948150540237512 5.056092449186012 9.589365009294456 0.6985848787739621 7.947378427465016 0.5972871647632545 0.6829111604637841 8.886855122991186 3.299318470157443 0.694971761709318 5.348701909894611 3.945617847960851 0.6826702952206352 6.446979269756746 8.727099973512944 0.3115797463020707 8.566099798490763 2.498494244436344 0.4071270087819681 2.302865759185 2.222222222222641 0.5928729912180356 1.819132489719593 6.789032068422978 0.7046794808310745 4.31622468523528 9.678330361494581 0.3165111276699334 6.6459448419928 1.944444444444891 0.5877686781446916 1.340815351237419 9.238810294902228 0.3222697036671983 5.140075240201183 5.155866847778994 0.2951521962959868 2.391986177327627 7.100636467880549 0.2950317608674199 2.873299141905627 5.115979059717671 0.3289171140985808 9.313342112775469 9.687557228975638 0.6948250835661972 1.652707735180393 5.835714067082928 0.7044223592384226 4.528969403957345 3.590016626998756 0.3048305960417871 3.077904872338337 8.342545217650944 0.3161533064824139 4.325019134632496 0.646214675059791 0.6916402979924114 7.454938989124064 7.3299131553619 0.6888354483276697 0.3558223030294466 6.985062451235886 0.6786509074470203 0.3196492377042158 3.437393798383385 0.6894414342341577 0.360408478775236 8.620899890558746 0.6835392711788382 1.436379565609687 0.3258004076416735 0.3144247085608285 6.659284060512145 3.999596438664406 0.3013186712000278 7.033440408827481 1.372362361912225 0.3287753861750019 7.560937046145131 7.531662485054716 0.3295581543397036 0.8769753710749086 6.919028346860464 0.2985796065042894 3.420162508851265 8.171755618210398 0.6710581305249774 9.313647721466031 4.606616439171386 0.3051370456443804 7.061863417724937 7.492925909368356 0.7086619169992422 1.183938727443171 2.237936163347614 0.3015293300684538 3.130534174714012 1.12173372409258 0.2945036882795904 9.673116881985683 1.162292754621151 0.6738443001638021 8.551295295077162 7.288696853986888 0.2994638472251586 9.159745479581934 1.481236447950465 0.3041947728201203 2.39077145346964 2.463124624157071 0.3052208796530718 6.030919975573656 8.6051570641692 0.3002596034973348 0.5704032701609705 5.138888888889333 0.2949193515169574 0.7987635968915405 3.904829259550794 0.3001992316910898 8.736870215372329 3.959808324258075 0.3211786153442718 5.645874104584597 1.130701257528547 0.3286134184235566 7.147643174014529 9.239263232334146 0.6775851124469507 3.139550475707294 9.010000000000124 0.7051440329218108 5.5794214389049 2.521045872909156 0.2936455614739955 8.223723337086509 7.252171535716641 0.700370977980739 2.625570108841709 9.307819352476002 0.6900555395078579 6.041543106522763 2.764649047745204 0.6841909171699707 2.875959742113364 0.3570033678689817 0.3150835623695444 1.810428435765386 9.703506889508461 0.6869372000113942 9.70352005351879 0.3108813795430607 0.3134215179236653 6.109347270946662 8.228442252762255 0.696057500736458 0.3433882552725219 9.30115477641974 0.6673824020217234 2.658216240957666 2.603114932689786 0.6978655082379802 8.635729772097848 3.61301078958616 0.3088025720756092 0.2999405511137158 3.187556791859817 0.2965169232963841 6.579215317126126 0.7438784910260949 0.6956258541687944 5.765368910167158 2.123632609552515 0.6946620138352773 6.757807977530751 9.684974924506887 0.3239278018939448 6.100727141770308 5.612995288038132 0.311842922904418 9.214340664841062 5.165524775601011 0.6836944991287952 0.3276530065022262 2.794396575409242 0.3183516428470862 3.185380644507698 2.279793494095486 0.6767451967329946 0.8560145194243871 8.228290964085415 0.3080635064573157 3.222034190669469 6.127075052205934 0.6919364935426946 7.963423408065931 7.515963941094978 0.6919364935426831 4.819698227063743 7.966532411565377 0.3001286647746603 7.495981381883257 0.2987782253578327 0.6741632256144156 9.168696783016598 1.250000000000392 0.7068854582386445 2.356226711793536 7.79645744950561 0.6992776326071111 8.744876775409208 4.030102074505018 0.7063073467358696 4.174490433846266 5.57963060626917 0.2925236437686495 7.259723991816475 0.2991171641978633 0.3172894105637907 0.2951334281587854 8.503698497235504 0.2976884612549675 1.906907307209815 4.425294638575723 0.3065349783369298 9.293564176146482 1.955907996018667 0.6670814671830493 4.2198788235164 2.895507588823876 0.7039633208879688 6.228230972432598 0.3275591246250129 0.6815078888384196 7.615006888665033 0.4287804133988569 0.2965832516820881 7.053338927262018 0.8091504182264297 0.6889331294469555 5.341057868713809 0.7199336982348125 0.2946656030363251 7.494854141871044 6.09486499389527 0.7055714478775592 0.7097596157216839 8.352642696040455 0.3003935152373406 8.850456965307927 3.497733751720137 0.7011144482260627 8.484847791408027 2.941388994260956 0.6988128985068792 0.7800597496772507 5.718643820600937 0.7067547634275859 7.497821562277815 3.086849258607186 0.6768630015180995 1.294650095593999 2.498651748297932 0.6112905484629263 1.339682675612936 0.3368344537691925 0.3341664864265432 9.348262900166123 0.3079217209777464 0.3061848673455098 3.060336427994828 6.848884923436059 0.319504816780909 0.3195750862365548 5.394217236316295 0.3024723137279867 6.10647681269637 8.061261874831336 0.6520262240750757 3.764042279962907 2.733138577724861 0.6867886610486205 0.3180820136670189 0.34265646798045 0.3115798404679701 5.342296462999218 6.035192224110689 0.3204485557080928 5.918389546364868 6.919847768966874 0.3204485557080937 7.535863280502587 3.137616076796486 0.308323695889246 2.232538980138738 2.519007265915215 0.3101531240424604 3.645082365242585 0.3274484853909445 0.6992141335583451 6.933514783352617 4.248403972017247 0.308184538166356 6.0813238493146 3.420598614446173 0.3114349817133916 7.07142346530576 3.133769907416848 0.6796745036993922 8.312467284767305 9.67462118523061 0.6790956632949154 2.733389782675664 3.862305662637572 0.2992070365076046 1.163691376578254 0.3368764990496619 0.6568923350456428 8.486095734974638 3.035015612689716 0.6935227000891747 2.411091540469994 1.726030006067905 0.679501368079315 8.554761174394306 6.033888296463911 0.3200237253016155 8.792815945124399 2.651620430075989 0.7029866374549508 4.663288587397111 2.364024229026887 0.6753735605088744 6.365201945051663 0.3082904233824577 0.6952363974347985 3.050518247180354 7.526940987693968 0.2904524927323953 5.043927068475524 1.127755786889184 0.3146788834578304 2.211724487563754 9.396943129611097 0.7040276954438697 4.546382844543126 0.7587450588833621 0.6944808590229603 7.016801818148396 7.66290626627766 0.6960757887688614 0.3534629171046297 5.310401601157597 0.7011993158964213 3.913976757568061 7.282196648989218 0.6932414480617157 5.580215505571599 0.302080832042849 0.3025759510229729 8.329783413926334 0.5565250043001851 0.3085586017406478 4.019866326877503 8.869733603823565 0.3013810657538719 2.174483627563853 0.8484703948105339 0.3063174093551138 9.254753247804507 0.3024557678161955 0.3053793336268968 4.444528701508355 6.905813320853643 0.6928091843405116 5.941640304247113 7.206560732895911 0.3227344560698223 8.044483570737739 4.886548304385479 0.70074526714339 6.749555463170121 2.228368535379552 0.3366495833930667 4.704073956872418 6.765050958340477 0.3077486219917399 4.197194204239577 0.7122222222222742 0.294855967078192 8.947298009177247 7.49306330199997 0.3241195011692221 1.826751943237124 8.887826902256839 0.6918711634860775 7.695483099287467 9.682742485582352 0.693585572701186 6.920996252578033 0.9932193144026578 0.2936751637643091 6.243236492264838 8.61249972706775 0.6753620659281087 3.75062136224848 2.265124838263597 0.3027960385984309 0.3163786373791641 6.140684747033099 0.7078559898667258 6.478491424092924 3.267439431231475 0.6926282922439835 2.95275578197759 5.874298876015363 0.3073717077560175 8.288310434614463 5.789398623077732 0.7042420392921693 5.038603094285305 5.80205898694869 0.3050561409532957 6.388088007778745 5.256713116678826 0.2990663999685125 3.949633400754993 8.088375526709392 0.7074017437120536 0.7151682397528589 8.246270444290019 0.6995452374778476 5.751596864897859 6.695454492210527 0.3140799529688421 1.410852613505121 8.301142327768837 0.7088749695201206 1.476524498463203 9.237712343138814 0.6924687747127207 1.458129967124982 6.252604543630477 0.2900918796124951 0.9034273108710051 9.539857406486606 0.3092367945738966 7.483994713242846 0.8300240016193097 0.665074414794697 6.686372370027407 2.538320296968489 0.3062750406008611 6.856354601248915 0.3024510362446687 0.695145796729057 4.448665381505727 8.729991525300681 0.6881996494102396 2.635979052890805 0.3382393954210476 0.3335678343366693 0.7030191852831196 2.038728134603856 0.6931584856969175 8.044749712449409 4.599675867364531 0.7007242186919451 7.472383456682396 3.242897891789974 0.3048817243007478 6.099050260993669 3.297023300855005 0.3158098270896017 3.211562266463636 0.798724148133971 0.6643512550531689 2.781421185146695 9.472033137694501 0.663456915866476 0.3024111485870256 8.614038108788261 0.3234615301441457 3.749153740738477 2.986095861071436 0.6859200470311582 5.189408664658032 5.954774860854378 0.6839966784870205 3.928448616862383 8.534236812258932 0.3065475850713384 5.728943560294609 1.906627774416127 0.2874341551335164 7.93695749254683 4.932506227166584 0.6973178226434144 8.159558339416591 3.018383425271028 0.3140799529688417 5.245332366304376 3.113044741122747 0.3105598780164445 7.34476597976502 3.05555555555586 0.5162780911474185 3.745372083778858 2.367982647078835 0.29042366442546 4.192558181809209 4.374963232145028 0.3036213424376082 4.630834858178198 6.533081042706623 0.2891277737381618 7.075605636778738 5.000000000000432 0.5006354218756174 1.339844597320594 2.873864631341007 0.6946122917174598 8.094060285111897 0.6803268375141819 0.7005892860473086 3.861818757808068 0.3094886988798745 0.6565853692250483 1.367194407678473 7.285280350549956 0.6859684696523476 4.238397020632864 5.101690539054411 0.6991270124096992 6.194111189959231 1.638807810498721 0.6993536322125201 7.968327635783371 8.924681002264363 0.2857942895734195 4.847180885240676 9.402782356188185 0.3043766950792735 0.9574306763327147 4.10451598202061 0.6861781982212001 5.174622436696364 3.823475038855617 0.6883650751532366 6.871357071164865 4.674591602672789 0.6859200470311579 6.189468180176682 3.362503064115233 0.701047686230497 9.323489974144131 0.7459967492849126 0.6959492866952206 4.315059512165559 3.768631444596729 0.7152672784978318 3.182842401320479 4.194831302685359 0.2884841049939091 9.662988990263118 9.310657110901076 0.3119375703359977 0.3193052342535656 7.071121820223963 0.3133224439807392 5.490975522479733 9.715733631921083 0.2889258473549317 9.715737114589137 9.673243056586859 0.6731310050873744 8.461402661340019 4.133353725313402 0.2961888749831624 5.003417802979031 4.74615691290252 0.6833878085074863 1.853757858788404 9.703311391510208 0.6703537673640785 2.215224262995717 8.830651962473191 0.3173194754793233 3.25622854850397 3.313188572186031 0.2962117204088478 1.080611538188382 9.688550975666065 0.6885509756660646 6.160257911908117 8.287327689150947 0.3116928661674309 1.388472676946185 4.672156576506451 0.6952651974905366 8.343132722018845 4.315434419358948 0.2966894838049678 0.3632318045278743 9.35207557574625 0.6965496045342983 5.033706134721456 9.546319096320428 0.6946178593717708 5.56269503494927 8.259787467338194 0.3111735871589387 2.559411367072883 1.664390499427525 0.6334833225653733 0.8640908904458673 8.566152963164766 0.2847891633120611 7.941080626745562 9.692172244884864 0.7079083614612827 3.893371970706657 4.583466883768627 0.7151884493920827 0.3822257208326837 1.670561139300961 0.2868567573451419 5.457285404440065 4.787494686340087 0.3086641340987908 9.690510647819712 4.680667676925932 0.7041640482270157 2.479844205243319 6.044710825093531 0.6911832691669504 5.898611805881148 7.145675821501744 0.2937927765896445 6.288998202731329 9.672560831678606 0.6730757131284328 9.303687795694481 3.152540012576261 0.714716492807556 6.042647301178891 8.103113183577959 0.2838263929135587 6.018080539968389 6.099803172778806 0.2891594865669892 6.850372306399353 5.181434616089541 0.6984477882604773 7.441192610194274 1.000831924731839 0.6863114138489819 4.875397453809606 3.193085261551134 0.7053189706730607 6.988560119829676 9.315703624725789 0.3008617899845595 1.933841053013209 7.054283834651509 0.2805996133877761 2.205037137533557 9.7028544402216 0.344546527751721 1.688002495556561 4.865539209485807 0.70652778150465 8.678826394450986 8.888038181927953 0.7247484302467421 5.020076620496781 1.907171473677236 0.2861263601954918 2.653676341921822 5.79530758483681 0.7058885498150571 6.815347688028365 8.42461004125712 0.7041469514748128 8.619661488785351 7.68221257712439 0.3009915218969428 5.661925787386303 8.181151266405996 0.7107804374489572 6.170060703238574 4.911276459000192 0.282825895181806 2.192629680921976 0.3278063455352871 0.6800870732902713 8.106913888392707 9.331950642386024 0.3030308465388757 3.63436715506471 2.825844140339409 0.6894182307004688 4.198746180739772 5.744347055599088 0.6936521890756111 9.336213619155759 1.113970726909337 0.6820699890476924 0.8758022259704195 1.663392727187026 0.3154691613331057 0.8643839545048024 9.099574147739466 0.3104986781237321 1.360312202351313 0.707396780219361 0.7231397713142822 9.606540347608714 0.7472948436348784 0.2983130774581343 7.041054233369024 4.896434065651531 0.3104236367200142 3.948680270606512 9.494871572720614 0.3077399094502359 4.372586107401685 2.071802025965367 0.2958865440181913 5.535082656144653 3.888888888888864 0.2814664694104829 9.3225643888905 8.997872807216057 0.2865282013861357 6.069199447228125 3.100243863907648 0.6901980673655694 4.678764713062131 8.886363030197559 0.7102044382398585 0.2891548300078337 9.302030530297836 0.3039172361468783 9.387119668518451 6.389113041822622 0.7083691580190467 0.2900888541232891 3.118068416178521 0.7027862285593627 0.3337677096922264 9.266395210753801 0.3146689899630813 2.723311414145591 6.037220893142285 0.3047334947919808 3.061211247444441 6.185001329080659 0.3047334947919782 2.505032022814818 3.740923015173879 0.3096697451520048 7.881908477509739 4.334142797381451 0.7091642330450464 0.8987481830634516 9.353286252017082 0.6976036516909228 7.047967922577365 5.27637276115896 0.6883616094940628 0.8971114025258878 9.681329680858937 0.3044888285105961 4.928684202436018 6.696728379912369 0.3101581342882309 6.659901961782839 6.278009612272951 0.7077484541320574 8.559650001536349 8.90380437036068 0.2931076438219585 2.909000343198126 0.3167353477351045 0.6969452167802183 0.6521245575881915 2.200951197379654 0.3726625227925455 0.8715312568896157 2.494569675110523 0.6836032496594671 9.514370314822788 7.468298420279534 0.7157484230698095 8.244198483356612 7.908024937167703 0.2842515769301835 9.149553615056387 9.693771676273753 0.2877124431583126 8.368654681853085 8.885854562803315 0.3140974657940332 4.204607504339579 0.3975404121055898 0.6972267254337535 2.704264249457376 7.823427162799188 0.6474228365637194 4.239829347314071 9.152372511609675 0.7178762570704325 6.316803948083693 0.8600082119835645 0.5643079962147255 9.022348802980996 1.882933877653884 0.7032808195062129 5.857107096742997 2.544138056346937 0.2843807460535568 6.514173307072407 0.5541897391237718 0.308649001025334 5.097415538002685 6.711838111250695 0.7097235220140093 0.6857594524267464 5.968522976006753 0.3077927016576987 9.689152219082718 3.318458115194273 0.5075557664485471 4.237395533114015 0.6796485260496524 0.2871550749608937 6.153958986886118 8.678326817518528 0.6995625206940481 8.037798199691602 2.470755284787484 0.445891613149708 5.171863312552438 4.677305399087355 0.2755574264524739 8.422181992178979 2.210958939412402 0.694593964746657 2.732183395827565 4.530978320543922 0.70472533576347 5.351425222910036 7.143365533398089 0.713796180742281 9.382211154572143 0.6104257455251312 0.2996569557242455 0.9690707714791453 1.521499089216924 0.7295799031387289 9.602687315593403 1.120404915555349 0.3647075168331275 0.8791872703657171 7.468789316756051 0.7146026333773016 3.630972534635267 1.651166802764448 0.7228592332004452 2.483681697846167 4.568318526947603 0.7194013575235592 5.781931464887578 3.937211563352169 0.2749284418102143 2.650645669463756 6.527196738913107 0.3029713891504366 5.849837758502808 5.117933489498518 0.3026206299205367 5.96845021925913 2.260429125435999 0.6954175154371729 9.004682934484279 3.000963243340098 0.2857396010451119 9.361843094521692 8.000187325772515 0.2793960024331588 6.513302586279542 6.942277940176012 0.2994567482104156 0.9338034369904693 2.743519868426554 0.3047466914169863 4.740417835807033 1.181707666228507 0.275293456952497 4.58800639775399 1.281810230375548 0.2841862167982454 7.955382931391044 7.231859465770918 0.7007528404043409 7.186598565251124 4.005027673764036 0.2842150158278007 3.771856408823396 2.028958444134186 0.2918335476956966 8.506387770287462 8.761844741262015 0.7209657387213807 7.085959335139686 8.042909584972859 0.3070623539378592 4.702406218135705 6.711733523264117 0.2849794238683144 1.716018882333663 0.3026804765332503 0.6973195234667491 6.182565651492047 2.471232339869858 0.3055849229581277 1.355278329902057 9.22461607973089 0.6885179795505288 8.322045318830078 3.449015521590014 0.2687849814840951 8.651237855284174 4.91808660480011 0.7054100736266067 4.683404560090426 2.660203117246394 0.7175412296798107 7.134257547486597 5.077124051654928 0.7271241343576568 2.667274152338453 1.327119243198629 0.2728776465520502 4.101784954895745 4.878942723278322 0.2874215662306958 7.731088512621961 7.69500753223458 0.7102687889652943 7.647892100205642 6.250000000000219 0.7282278466101095 4.24776158593193 5.283500098689077 0.2747239597977125 7.334382854762044 0.5955996997759296 0.2704602871002099 0.290249550523044 3.532627981368903 0.2877377696833792 6.69928208900533 3.506444412074842 0.2732736168236823 0.7522843710310267 7.699823677327742 0.2753537754374937 6.257682643315829 6.385107695887165 0.6981928790122355 5.143427196588553 8.447268828421056 0.35052861068392 9.709269266095582 4.087881929962459 0.2797421714230375 2.16755179413754 2.438418874442121 0.2793303081915258 7.930342814998895 1.32446582345099 0.706636778909828 5.378697661360244 7.962917524547101 0.2951820068043487 6.933362060973677 9.242004185875098 0.6846186057040313 2.323535491501625 8.446614862157842 0.2822756183217989 7.614811760391534 1.388888888888913 0.633524585198326 8.993497508292011 3.448750837593724 0.2809966421294998 5.645669779247481 0.266908325491446 0.2794259953055249 9.736261044963094 8.495966726457674 0.6542767970546131 9.703826703279217 6.713892804632107 0.6173610975296272 6.642079278449791 4.395325141919522 0.2699529996391208 2.915137667369072 7.083333333333551 0.2704369767894788 4.724093881941447 6.567193875623339 0.3011642612098511 8.817228317710562 3.009252783340292 0.2877562836546903 0.2942737972679451 2.846554445522529 0.2931422290380567 8.75544103635792 8.131352376141532 0.7190863222231321 6.774357885634537 6.957933743415846 0.7066411160788424 5.109378105600312 2.107501496552549 0.7196570966479938 3.772820297328367 9.368890358742949 0.2826827857641954 7.954376781171102 7.359904943040798 0.7162067846950232 3.132752170582176 2.083333333333431 0.7301752324190389 7.575993849446099 6.741190027907561 0.2837063982223925 3.666091060325441 7.277641907347566 0.7091138133095943 5.883580621317032 6.26287869910018 0.7068543127824116 7.275064289979079 3.237499445554846 0.2839919551914887 1.869655745117529 9.716779397099565 0.708579817862549 5.284570111956907 4.467131882203524 0.7327449521565969 8.882325678179477 1.707070414752976 0.3685308551036303 7.088973327462502 2.569984396420369 0.7057439136032937 6.844708555129196 6.406957360757516 0.7069375277066274 1.744030768864097 0.8314271522671322 0.3251480464044007 1.309580753300782 4.21723457267782 0.7191271645418169 3.847716040911245 7.723151833412422 0.2969326182384553 0.6395444633497885 8.300793236299185 0.7225445878194543 7.230824976871379 1.114610128572671 0.3033514209768012 3.285791306839223 6.855118302481789 0.7316434270644774 3.373049462121292 0.2520377284855223 0.7249814472436132 9.745169178795123 5.392815851117295 0.64351368779455 9.711362348848635 9.745492726635021 0.7252224747511545 0.257375155106502 7.518870216801369 0.6331491930371954 0.8904470439067731 0.4038591386476332 0.2842618978320776 9.032933900146357 9.354501649741863 0.7174054889633171 4.167922197198097 5.373181970795198 0.6354244899181155 2.998578346424726 5.650959748572998 0.6354244899181212 2.517453122100043 7.941372916595065 0.3494437019426817 9.707885506428733 7.892845161078506 0.6534386623693585 9.704522342541331 5.439197546062182 0.3414681658938562 9.699243641110765 5.9288128585954 0.633765967738221 2.037272561561406 5.699111462464671 0.2619324469281898 4.638989012623329 7.322423875682278 0.2714814981970912 2.669447756072242 3.531675653318316 0.7080984782779292 7.885384969318012 5.073759723817094 0.2936853116710721 3.477139673192248 1.579507319223555 0.279001165264263 9.388368652953131 2.311008530507854 0.2786701708010535 7.248636632832752 4.871733471086778 0.3014639061484815 5.443707063385148 8.135131737276197 0.7254874590183573 2.204887896365404 5.539976382346747 0.283914416373915 3.846566573381043 8.069419594447783 0.7273868307773457 5.463010241637366 5.754936252798501 0.2919922550404825 5.383328866598602 5.851414961094968 0.7053550830781931 0.9204610705180475 8.611353444469232 0.2683299968250469 0.2688018537046036 6.250000000000017 0.298011695609761 9.231798264222542 0.6332166927398007 0.6814834982409126 1.170586358311375 2.027731362632244 0.7212387258724801 9.432050578575165 9.686458893344742 0.3196401779515255 3.775234256711566 4.012032709285827 0.7138198300692495 4.855691747600877 9.517756450314167 0.6681257621356129 1.315357367978477 0.7186811553128221 0.7040787581867598 2.379209924601422 0.8773523322572333 0.6846517440153357 1.382735173250521 8.674492610745512 0.7118048856846966 0.671092309207065 6.882828148774315 0.7289365668155194 1.685112128276313 6.472789850028738 0.7307850231321991 3.864260437663599 2.499543731160104 0.7034905740140118 2.253208205934421 2.179742262979738 0.2965094259859898 1.844870148508586 7.766749947370586 0.7092642732312469 5.744399998148442 0.6317663973746785 0.7063177869788417 0.2994392119688649 3.216231804247217 0.2612717823060429 8.169927057170556 6.71107996375591 0.7043266508098477 8.049857073671202 1.909235068384047 0.2630405096521473 2.161949478776536 2.731543930836148 0.3640439823328206 1.847564310457751 1.227936341101345 0.722991939068632 0.4107091641663663 6.882209299711167 0.7101240878641975 7.549690106923963 1.205362655882579 0.2801020593238903 9.38294910284522 8.811910051842215 0.7265864437250967 6.053571446561767 4.394557949843042 0.7355025953932101 8.075675874375248 2.481675605674971 0.7411791615642263 3.895167564557267 9.067556694174634 0.7246717836203546 2.884230759213159 2.741818006519929 0.6380732061927675 5.636729448271408 7.989016269373931 0.2735532911839125 2.681383496280477 2.783522337968803 0.7093452646645713 9.109221306007059 8.639747119169757 0.260613818823785 4.563846886027236 3.575985396345587 0.7057408980360151 3.785053049841876 1.896547772907625 0.2938352475834472 1.367262828126841 6.695346132781268 0.2606220244868857 9.375057798381873 8.969732742001174 0.591949295831389 9.724814178935929 5.250424958146913 0.2625954457958322 5.036480441597224 0.285424949133426 0.7138290201564597 3.61067640670059 0.2874270271947679 0.7026260949810084 8.858420225294838 6.162116899611061 0.2774800664477276 1.513738627281141 1.646365744022601 0.2625951772731016 1.680130049975745 6.883043038076116 0.7089855534708236 5.64444331942293 6.720832080060337 0.726202446564412 3.639566618920459 7.074481213207775 0.2625942930843246 8.500369587739687 7.898262324179496 0.7426557444621185 8.465811037549329 4.919420213174698 0.2900031928952345 2.985540932164775 0.6477167930459554 0.7028859031854657 3.557880661320432 4.486419117584165 0.2911756356378244 1.290596064273907 7.399815179956748 0.2929219729848692 6.832463593669472 1.707833451069899 0.2911387242523701 7.642444190003437 7.800634190298362 0.2959643828122795 1.36552759245734 8.472222222222568 0.7429475835334771 3.322447138296889 6.23095847554044 0.2570524164665314 7.984317936041206 3.841803487211149 0.717471370421245 2.082660491690831 5.16206448949854 0.7416124588007224 5.762218731741473 1.405582421230051 0.6219026517893969 4.195897309183976 6.982328347710371 0.7345122815577922 8.908329486176982 4.39869478847068 0.2654876714032445 1.963915428290271 7.517118521865952 0.7436598067164697 1.670379494912635 3.707486589488392 0.2751435514370483 4.647303993688112 6.375497009120154 0.7418529114190019 6.298673225956934 9.693916705825345 0.7116978193492556 4.609479069147339 4.735618795373923 0.2576778934550119 4.374798086535294 7.767433016480338 0.7404250767509866 6.804432508725291 1.078493916728584 0.3905178575805354 8.588264155076015 5.418734646782787 0.7413520878812383 6.204224221085521 4.991747953904292 0.2530563133688795 4.552011778688323 1.667147230941792 0.2731483840477629 0.2761542179795431 3.886997912844301 0.7106907799124104 7.526831915232532 6.952914570356486 0.7469024291853609 6.306729428491805 3.892911725421499 0.2522361132794403 2.943500463900653 4.164867335304563 0.2517115305804129 3.101652293755571 5.972222222222236 0.7500000000000097 9.599062313062667 9.361175393928331 0.2869568317630633 3.322716078819154 3.099837757371755 0.2647660450190305 2.928123788601129 5.936767780935368 0.735233954980969 8.445773738582011 0.6601823520234649 0.2855407891072141 8.053488671982844 6.071828670544726 0.2795584269933211 3.987739652523353 7.853609283832622 0.2878842511148622 3.471438617835958 5.561958426922797 0.7482783940976975 7.751052253643924 7.300066960524445 0.2848725380598575 1.365325826613024 4.548816466912884 0.7056945316598414 3.502750037682509 1.643452382951562 0.7057553095623044 3.771611467347491 3.807416613003312 0.7387645760483772 5.302084791113705 9.386661206765917 0.2782295474409077 4.883664646921661 2.233687668318861 0.7462010018120455 7.269794255631314 8.063058679540339 0.7083240238600266 1.290000664910168 8.160689974820302 0.2580483395906837 8.456948637514738 5.82609239218249 0.2533387607558593 1.491844263150588 1.953812636690331 0.2623680901795403 5.952063241576933 8.254125726703053 0.7164056386066509 5.213305931516914 0.273977155028627 0.6553580794406052 4.758025699761435 7.736732760881102 0.7250734219330464 3.322872288358533 8.594186259054284 0.7458903683500083 5.039393320184188 5.715820419270204 0.2592296240618442 7.974785599657615 7.850292720571246 0.7245998780499147 2.459168618912251 4.361451058946678 0.2773186522713404 7.652155228291492 7.271649929704836 0.7402069770806534 6.765350359374221 3.880008734835737 0.7054701745268714 9.569377038142209 0.2747109745459354 0.2879707291079979 3.889247572602022 2.238646356127657 0.2548955040674112 3.421598153261787 0.5990502387624934 0.6984158775525582 6.118693669882584 6.651736938490241 0.293026233807358 4.735067291380789 3.191433147271213 0.2542893962612066 9.586373793246873 4.29935409596025 0.2583441113826478 4.127395741384622 4.24680411337886 0.7137569968003334 6.355414262580067 7.489970469902373 0.2584286866137024 4.56691090022932 1.188356342666642 0.2701743254685852 6.019499422654014 2.28752568307482 0.274422447003321 7.677857410846713 9.718015172292088 0.6881979339212877 3.584686953003522 1.805495212378174 0.7488404847700693 6.544601353444675 8.623184537052452 0.7469055477163862 4.545649408915582 1.528928226536288 0.2508807950530438 4.314169575610246 1.417099176636135 0.5833864554393113 1.299475875679144 0.5490153130534882 0.3040999326718596 8.512725243318338 6.316411042561865 0.7277312075865005 1.186348194631416 4.608806754595583 0.7464669447665158 6.537228805716746 8.348034532226809 0.5795227981521065 4.195667940752237 7.08956163067568 0.5716999006506748 2.207950295915089 7.986281692227135 0.2800469610142175 0.2870348384344938 8.364029613851395 0.2859249859223174 7.056182088203999 7.222222222222229 0.2451964471688055 7.433998803601749 1.793743652580068 0.6095766356428202 0.2563565380676958 7.500000000000283 0.2465615134391889 3.910331530495418 9.303139499231904 0.7422546963080741 5.744977025927934 4.699561111114496 0.2608278134308941 9.386765067895471 4.453667874356888 0.2482919574236908 2.628071710097247 3.611111111111089 0.2482919574237029 9.208774925610555 6.527347533662046 0.7515964006511437 4.157009144718037 2.616397542478851 0.7389620542201556 3.635314882657975 3.537647960468459 0.715020576131686 5.923195110065236 3.458092096167337 0.2602373675008824 2.350266995027157 6.446630320235364 0.4379580818461587 9.7139478337141 1.12508265014923 0.7409103810260598 4.365979443873984 6.935773597743673 0.2486421663298249 3.110423518852572 3.761688506005088 0.7438364229526666 7.174220059954913 3.56518890822513 0.2887940275065585 6.149017252753804 4.043167862791129 0.7389945339666153 5.715748871069657 2.0650500518007 0.2594087551608723 2.409183566756512 2.870755742948964 0.2668248960153244 7.187490510779434 1.668722575514712 0.7507901836473327 9.350011664711452 7.119765697928069 0.7234042820233234 1.011029647905125 3.698530191944279 0.2564133078590196 5.078002793241403 1.932291936677749 0.7127802635334314 6.201653678311663 6.737202256960456 0.7431362644410084 2.663802154257326 7.415009250850247 0.7210045169271577 6.140786773020101 5.87149448275467 0.7322460314030993 0.3091558003104575 3.589788630982577 0.2815634631424795 1.266369079081804 7.948919893199811 0.2630171709375311 1.888183431505812 7.497215394236957 0.7512167449555134 4.534837508294471 3.339971458050466 0.7415710622506284 3.399085671498665 6.89102091357393 0.7148755964868141 4.678303017169208 9.698216212919467 0.2953063198043597 2.302843103273716 1.141083610366131 0.2559254357652039 1.677800742218027 9.712949807983259 0.2652482510464719 9.398461002623737 3.645114422172912 0.7281348368650935 1.106900259409519 0.2784433428075988 0.3877933886248732 1.519147832417382 0.9321864927733805 0.2910819434365119 2.833284601389762 8.48472860593029 0.2491025836330268 3.34723226417962 3.181715713264468 0.2476428275592258 5.757409454838371 5.0248358998496 0.7384795120619609 3.446197209801548 9.44135038590049 0.2576636961374065 8.879135701487558 6.049478529167361 0.7160012472247405 4.726395253014497 1.797607899846991 0.2494728447370621 6.541457163766882 1.949471432086622 0.7505774761355939 8.865066693744993 6.797410196781228 0.2494225238643648 5.279442684558447 1.653494320250376 0.750577476135633 3.422821541816264 1.936299085670274 0.7505774761356343 2.932989319486471 6.540950124194461 0.2494225238643523 8.474636397225687 2.630743530114384 0.2494225238643663 8.947054623545069 7.420201027403707 0.7399676621483531 1.944798250428508 4.166666666667086 0.2473889929330355 1.644218553141199 4.041879717151939 0.7526110731510929 1.42807619904781 1.403142774742153 0.2473603915087113 3.416392449394783 5.966728288944245 0.2587182949669001 0.8584845241291179 6.65207535782138 0.7419202582765034 1.207026206530483 7.916666581027212 0.2434264821830095 4.303010192092354 8.183045251464852 0.7524842743693958 3.34658224116799 3.062245345118358 0.751071542147186 6.461188866186375 3.044945603103084 0.2464375942160207 8.403727287615046 6.096248420237274 0.2473748240575351 5.339748872997176 1.945131185229195 0.2473748240575463 8.859816029444579 8.457033488426323 0.2512019760018084 6.074558058323483 8.423535713326119 0.2847596321639886 9.250129892771715 5.40178211204334 0.752587369458499 1.429581065103099 5.261702158497945 0.2534046352076498 6.803113106591595 9.386408985375605 0.285603065220634 5.397017632565011 9.511589080030589 0.2857216288922423 5.790505773262927 0.2921171610164438 0.2845036844035218 2.439636893937926 5.539486135095887 0.7524684628194485 8.403945157686698 9.428144167154757 0.2612791114130729 6.977460246715561 1.372076907435894 0.2540468301669747 4.880614375028889 8.764203930363136 0.7425853775673301 3.323644404736957 8.663794349027961 0.2840356410557112 2.743721770052384 4.322011096028413 0.2480866410899592 7.199401454160703 6.527777777778119 0.4999999999999999 3.102114038661018 6.317922191739367 0.5000000000000124 3.465594575932195 9.100837719815813 0.4711646717357927 3.720741701078082 6.096758651597019 0.7521573541455197 5.337715571599559 4.436938255313688 0.7387467888087289 9.738528373708803 1.788234211421167 0.7522656415281076 7.507122769759677 7.495309808124659 0.2485496736888542 7.897957037410658 5.570588610704689 0.7523305844702031 1.969740332513955 4.444444444444707 0.7532923143881947 4.526718616791982 1.934617852473459 0.2445659490301066 2.9386633049041 0.7726650897887586 0.259015501886996 1.943538464385521 5.128025230693149 0.5265621596627681 4.073147617205409 5.941026862495686 0.2713768538480502 7.740622927398256 5.673390494298439 0.7420889095422599 8.019975904422616 7.766944808614976 0.2579110904577124 8.205308752245296 5.278906863839026 0.7460549564268064 6.769855281661329 9.085325625189544 0.7142026786268487 6.886786380739706 7.370146968539759 0.7534792116831194 8.947385845736436 5.6475844107481 0.7387915629206397 4.789430833549576 1.111111111111315 0.7534478470718489 6.332871926875707 6.547041500104536 0.7535673559864279 8.465314874367548 2.774739754780965 0.2548987931380452 7.459282644415331 3.329271433062079 0.2464425344723599 2.60795683289136 4.718919866959909 0.245111122881732 4.879628524791444 2.482941568519096 0.7473839573224856 3.090637742452309 2.980924391114492 0.2645572422380025 6.777746679509383 1.635137751517438 0.7136439726669361 2.771412641442881 8.342956154636484 0.7569614102317083 1.184928112358617 4.007234470885362 0.7538043160912449 3.653323862626894 4.588329007343575 0.2438246230551576 6.556633710782312 6.037883302298774 0.7322195419297512 1.262418787205538 0.2795816973271545 0.2662798455157526 3.586747966004118 8.073286502804093 0.2544417675453453 8.903801486186312 3.729101211291876 0.753457118768915 5.578907214050182 2.777784928826373 0.2460103428093625 2.597857134123438 5.811774882407451 0.7539896571906407 8.889812996701751 9.36819562708286 0.2734561879633675 1.486205313924513 9.106705838791887 0.7353064565509974 8.888257789929897 3.708026114217956 0.2528200338690323 5.767114290001707 7.105398981928484 0.7540862312213176 8.46369718148228 4.722222222222641 0.2459137303758328 1.635016655936365 2.777777777778147 0.7540923978446449 2.597228892784416 7.105551664244485 0.2458854942757203 7.020233357331996 3.333333333333566 0.2444899545132656 5.008550982926105 9.714652456924959 0.4584701390274565 7.678207406620389 7.81099356435924 0.7337161954959255 9.307731822765595 4.552728345636122 0.2472370171704621 0.9377600870806142 9.372080123206972 0.7308766448394337 5.32664673148139 1.666666666667098 0.7542652758837337 1.633900483365002 8.055549443506358 0.7542807571477753 4.520544807498531 2.893491499460288 0.2457083023691078 1.43331368856823 3.886084007382051 0.2468054844576168 3.449399159118625 5.115561403011077 0.2456800952078156 8.944093883711933 6.521018605974342 0.2854979185959332 2.512075002926788 9.18741559309653 0.2582846008007508 7.406760434222585 3.356677769430246 0.7543089076295315 1.486683260141545 4.324152393494675 0.7473434106012766 3.328788580799948 1.03695355180244 0.7196874172403269 5.162367290405934 3.055555555555534 0.7412087564834505 9.740642938710272 4.123343570465746 0.2600797524067873 5.35434777000307 3.772679398492211 0.7459786812340852 6.085018076190623 2.517328709860242 0.2521355396236736 3.087173486039489 2.801647465958962 0.7544203126261253 7.447779974498266 3.170557869907517 0.7544234397291363 1.914849644106712 9.399605304926874 0.2662692192465292 8.40702179808064 3.30998175835469 0.7517053775860701 8.882691317700832 8.331717878356558 0.2461483542180833 4.894809971031978 6.131479677433329 0.265008460751104 0.2650084607511065 2.619625102509801 0.7510677955331284 0.951551767545752 0.9078760329159369 0.2569584175911186 7.714036219254533 6.986209810686939 0.2788770513865961 8.985094212874763 4.444444444444846 0.7546223905140977 2.010068636057309 8.904541126276538 0.2483072338113362 9.373438966149681 7.196965475925948 0.2453228247599211 5.815666066579656 2.222222222222431 0.7546802670759475 5.480314648975945 5.772648896996177 0.4984899622667534 7.308659904481647 5.434970000323124 0.7477568361811515 4.288969526984972 1.120345492009912 0.7402302394925642 9.389277184918097 1.113997785926847 0.7528207761506559 1.636244574421068 9.128998188648511 0.7435125366449151 1.193079024789099 2.660821409520793 0.2459384221051881 9.426024491596785 2.339178590479232 0.2459384221051712 9.426024491596841 3.6111111111114 0.7629353097641726 4.066122233328679 7.777777763824513 0.762935136023198 3.905747150497961 4.289796021547554 0.2616816141784787 8.201229663860543 7.216784105884312 0.2571054054686739 3.870861328540792 5.277777777778149 0.7621107110384762 2.465975927305576 3.406595091075727 0.258360220626047 4.12868455127029 5.406830156411745 0.2514514557434592 7.636702671973061 5.872698869551882 0.2793059953208999 2.828945716397789 3.752292071968968 0.2455350026742314 7.165282779354125 2.075952308284746 0.7597144458271827 7.031924480166131 3.341226513439305 0.2736611852915261 7.512686176602844 5.21055998724596 0.2765120890307189 5.42684139291404 0.2804406882181637 0.7354895266644936 3.912908790127338 4.766089428551183 0.2477530492698524 6.01594987401 4.58333333333352 0.2477530492698443 5.699407031700072 5.419886429350941 0.2840502226493288 4.495464660408246 8.793829741217046 0.247753351973046 7.007730229964721 2.760738077008593 0.2508812316712604 6.331546506985076 8.051750596399662 0.2435191323193122 2.153524190872049 7.902206044839916 0.7505925655913125 0.9601628408110434 5.592999168692223 0.2805474288905113 3.299001258636032 7.9325392086061 0.7297887257122724 7.924457976328874 9.184213816002318 0.3729965737233088 6.275176445791486 3.629899048076056 0.2444803254294659 1.966310221066031 1.379021676842379 0.2485265076526754 2.007524562845699 0.5500920974418408 0.7398511274212289 9.352218161764389 3.33542585638216 0.7492837841303737 7.458749969370635 7.659208822989955 0.2437464403049268 4.795795670158503 7.514419588833371 0.2429367947501237 2.460861507985835 1.564626330873345 0.7228508055503817 5.855522575335088 8.026908549001762 0.2547514945827335 7.770704777392748 9.526335423734848 0.7430586914719108 0.8042597519674846 2.7777777777781 0.2443648553417111 3.459759218911213 0.6101363241873243 0.6479371582094673 8.594945638679143 6.770644478138885 0.7523467010248051 7.008573362842121 4.864578803768534 0.7584479701868428 0.9475521475201392 1.514056479120568 0.2443184266905359 8.651920917597796 5.555105587046736 0.7591977764679971 6.453322757406668 9.366926329933985 0.7265734493286208 1.038808487545395 2.003713093690548 0.5841519034674384 2.300774356789269 5.218112617590936 0.4938553550432803 2.585816087902622 5.555555555555992 0.2373988784728991 1.025674599091166 4.447259435595056 0.2495731509574989 8.791629446843199 2.138503396265267 0.501541609342297 7.160647535909683 5.702417889590363 0.7623166717224085 7.198039662140545 1.353766353369027 0.7183526482974796 7.13622888554258 5.308155732263693 0.2527303708650163 8.387736798339825 3.364290846814495 0.2457245221961004 1.486788137920851 9.409699089275604 0.2885699397086127 2.219020749794374 6.388888888889376 0.7559200744621821 0.5747845193922049 8.029980761500914 0.7545614422617896 8.896955065140411 5.106460988128432 0.7560051668074895 8.938839756729715 6.394085841772339 0.2433868810190044 6.332328432869851 3.648310223416418 0.7388061147778017 6.346272360467315 5.558173354575955 0.2383198925228276 1.989154630088899 6.096993098679658 0.7310121755305008 7.683895222953901 3.51742073689041 0.7537144655752008 4.602134512726562 7.41058030043874 0.2531689139392684 3.35624853763456 5.277819170923054 0.7554618644241367 4.563654310105878 3.543563522007994 0.2698945775540204 8.26553605014707 9.752325989753126 0.5868227090464386 8.164241937367018 1.119208442190285 0.252210122901904 5.389109552159187 1.402760677423029 0.2825074873070624 3.724211305810209 6.719773023903715 0.496948337708435 3.456596882247021 3.926214864752859 0.7397278036179384 1.051026448372427 1.836814495972516 0.4115282740268122 3.452878851874672 9.366623797269977 0.7393739551406241 6.523327380141439 7.505893995310423 0.762458075818633 6.470232961768588 4.33040332816204 0.7530864197530875 7.217228787075348 6.250000000000409 0.2435606300127979 1.780835586644451 5.967230896811519 0.5149384138450653 6.958368175943789 4.867660594101511 0.7639435343384922 3.180941890857222 5.700993927434702 0.7639435343384922 5.586568012480715 6.110536144238201 0.236056465661518 7.426768069345793 7.802795166600521 0.2469135802469144 2.919410330364599 9.435318658195849 0.2488438796842442 0.5678278736739646 2.713641764940962 0.382979400780233 5.924490116944196 3.261600088535454 0.7534902702024792 7.956539236120096 8.531045616346907 0.2767255437507253 8.319196176821366 8.721191644951974 0.2455274060731274 8.935552815060451 3.583330043310753 0.7452619090519046 2.97131860566276 8.430311416456995 0.720564301819822 8.327645602124067 8.416853680827888 0.7292335935427625 0.5531384918375998 6.94525209140669 0.2438624389751124 0.5759845224454195 3.882867250217597 0.2381446696707345 6.784026835443128 5.026837984312584 0.7550484291922075 5.514526062065054 1.701309178258759 0.7488865585918715 8.239345544238089 4.897420802614725 0.2432759830549692 0.9597716853818337 8.846962601731777 0.7413002159991304 1.642312022346451 8.236716698109351 0.7446884074831386 1.749011743815885 3.880303386450297 0.5785766954341149 0.6103744040279035 7.417701955293814 0.2610851663649235 0.3383907224964812 1.241571977373739 0.7645458125394327 3.830425542298395 1.003320211034259 0.7206738083894053 3.474485236848609 8.649237520471857 0.7438772282164088 1.162081547050508 8.646995534477753 0.254732028406815 7.418080625085648 9.714918199653043 0.4243575482179298 6.37515800412743 1.646989748032778 0.7572320198150888 6.311412181767558 1.841856136926674 0.246913580246913 4.797432574302115 5.395470186194961 0.746869388777073 0.4929343230202723 7.781511250384813 0.2556029410536936 9.399902748021098 8.529718283005002 0.744548715989404 5.582683938352563 4.869456500643706 0.2537165700738904 0.4945174724770494 8.714471254799392 0.7565793972594481 2.201296342811944 0.7691689541296306 0.7424204803422036 7.713876990842092 6.66666666666674 0.2426790644238258 7.319272565383539 5.101252667373451 0.2460054819596477 1.913512398623417 1.488084303617809 0.7573506433630314 2.198891835425696 3.4325052825235 0.757354988833167 2.405114534018929 4.161195210328108 0.2491436688465795 0.5962510906175089 1.129732719862026 0.4830164645876585 0.2929247183376257 5.126022825836897 0.2402773341956843 6.556691177044757 3.888888888888888 0.249087185274681 0.2486807090735056 6.977135952530245 0.2816631847736791 9.536881611504656 1.66666666666692 0.7574540839294426 4.500768390130435 1.845807608774785 0.757454083929442 4.811049603577037 6.38888888888909 0.2425459160705569 4.98189361445539 5.098636835670304 0.7574540839294419 1.92429825762908 1.845807608774834 0.2425459160705578 3.84879915492767 2.916666666666698 0.7574540839294434 8.590332796890328 6.388888888888973 0.7574540839294446 7.801228020674282 6.56802983099684 0.7574540839294471 7.490946807227675 6.348636835669938 0.7574540839294481 8.900614010337074 7.222222222222425 0.2436339581697571 4.972556199540634 3.910897879529245 0.2489411313168288 1.950398560013275 6.122140211282789 0.7625031099074241 8.235802599566682 3.431426129429351 0.2424451680012722 4.603881359884806 1.03213992432803 0.2740630386250605 6.626957022208989 5.662859438812428 0.2594661031582879 0.5160199962823936 7.949926883726381 0.2527952440368657 5.733157123417617 6.639294915889289 0.2761483987942498 2.25725735188443 5.513803350077161 0.7577318899034482 5.052478329050514 7.403046954250232 0.7577658968776145 7.698773086089162 0.6156576205735936 0.3440400930054566 9.420292911608904 4.127213361326184 0.7569062238712235 6.767226325405689 2.956565420897923 0.5697275023860641 7.81910703024003 7.453836298996703 0.5076545788056599 2.593251941086353 7.500000000000387 0.7647531632563841 2.478279195268734 1.233496957040288 0.7492010587047497 2.89778378255776 2.415787682461083 0.7532735400934472 5.773494778242449 4.01269613663614 0.24026825132625 1.375719320140485 6.702603948594047 0.7555805809279497 8.904822615829094 4.071512616569477 0.2419009557793281 7.699811736713151 0.590251448044506 0.2815626642929863 4.313412451751161 5.000000000000067 0.2417775704875464 7.382728807163531 7.68329000825617 0.2417775704875441 7.219071189658401 4.156662367028322 0.2462124093696584 9.239069659269305 7.455456543448562 0.2417512117496999 5.323405654897367 5.788540688800683 0.2417050658272795 8.903235521954265 9.737435394097906 0.298245236503645 8.883928901787822 1.025456897035076 0.2348518406598243 4.186567535966495 7.348637924817194 0.2645632152849981 8.888358982693921 6.666666666666845 0.7583961685642469 5.457144580351045 3.154575415909261 0.7545755897274906 0.9542986741978842 7.77549601007333 0.7574077385493854 7.383856579674331 5.832668811407332 0.7576009090035434 0.586756199765572 9.388172619250529 0.7380037296248732 0.5598361151621185 0.6076620348907085 0.706822905547706 6.503207999513704 3.86387472724664 0.7472856309453733 2.419524368231394 1.021068262410673 0.7534049454523393 8.183772194979017 5.151919782832754 0.2469135802469148 2.74474927709333 8.84246959654458 0.2413354833722965 7.941924218857068 1.480975963218022 0.7586670026962616 8.663832904647748 3.333333333333655 0.2413314202482744 3.478673848243111 1.665020588298609 0.7581158190687911 5.329023507735027 2.053326593055691 0.2779599558472107 6.389415862671403 0.6435267114346539 0.2777693023252873 4.711068032590879 0.575572424612853 0.2883478815994501 3.178052926600611 2.03625986314047 0.7584285267195801 0.9664788674445933 5.876915155263701 0.7532598911788163 1.489957702062509 4.48914533468805 0.7438781494618506 1.159920320170352 6.026323995744509 0.2636962872246914 8.519137587265238 3.333333333333324 0.7692696211724388 9.679249850450118 3.757986773235416 0.7553302708566572 8.042381342136405 1.76630081603718 0.7515817283823092 0.5009260564780738 8.332922053691407 0.2412357955247389 0.5942677891813593 7.804879496506348 0.7549336072194746 5.355208485215634 1.065538230810415 0.740051962370351 7.898219307594391 8.150908088170583 0.7530124219164513 8.645296687676886 2.868289260288323 0.7589587789590335 1.447864208138343 9.735984269056527 0.2641981382821948 1.116857343105051 8.333333333333343 0.2409638596869796 7.329967523682189 5.794446909862228 0.2441281608916962 5.799507959885782 6.937265952158024 0.2441281608917061 7.803795631723362 6.895347393105057 0.7252660009696313 1.342820522152119 1.400816193580134 0.2467375831220296 1.138369771221421 3.055555555555719 0.2352720955050528 6.33529032189757 3.472628566007297 0.7474253547680426 6.754300381462599 8.973914102018561 0.7294330442996628 0.5570910651217783 0.9456491530950446 0.2496219151129316 5.081722881917654 0.8333333333333153 0.2456110603961167 9.754914203910744 8.934832366596336 0.7405700622707045 9.329737198430278 3.888888888889153 0.759414724229883 4.488543047113914 7.932028370688498 0.7575759154920244 2.723413454970215 5.115092855661126 0.7503087682772349 7.956020915182661 9.741385997180734 0.4610651445001382 2.936677865487658 4.659472280231063 0.6129521790266035 4.180230298938851 0.2510554515690523 0.3717886984062797 6.386035469177488 2.134749754055438 0.759521559392901 1.449618783887236 6.615164889488418 0.7595373661441235 9.38823426581799 8.246323946280349 0.240392684845263 3.855512265516839 5.503649006812626 0.2403876761586456 2.432403225690157 2.586584119950278 0.7596860683220406 1.931256896294373 0.8687787872093649 0.4748291274285288 5.634633473186569 1.232559946548195 0.2772220389080021 6.893528339222221 2.500000000000401 0.2401886797760767 2.080443997608079 2.030352204124555 0.7598113202239244 1.931647393078394 1.508984041294357 0.2748914129743643 6.429280107795483 5.517265600278787 0.7432357438063532 5.874591662596333 7.063356629727553 0.2339376440930913 4.134776215511874 1.427884049802846 0.6085764371616716 6.665113324198991 9.439107705201897 0.2474742068086299 9.75295253654574 2.603457070238167 0.247073169782303 0.9712451378489558 $EndNodes $Elements 4 26864 1 26864 2 4 2 3048 1 3 3416 81 2 266 3416 3 3 47 3417 4 4 4 3417 231 5 157 3415 7 6 7 3415 300 7 8 3418 123 8 265 3418 8 9 48 3340 47 10 3340 3417 47 11 49 3368 48 12 48 3368 3340 13 50 2024 49 14 2024 3368 49 15 51 3047 50 16 50 3047 2024 17 52 1995 51 18 1995 3047 51 19 53 3333 52 20 52 3333 1995 21 54 2021 53 22 2021 3333 53 23 55 3004 54 24 54 3004 2021 25 56 1990 55 26 1990 3004 55 27 57 3002 56 28 56 3002 1990 29 58 2017 57 30 2017 3002 57 31 59 3414 58 32 58 3414 2017 33 60 1979 59 34 1979 3414 59 35 61 3404 60 36 60 3404 1979 37 62 2010 61 38 2010 3404 61 39 63 3100 62 40 62 3100 2010 41 64 2991 63 42 2991 3100 63 43 65 1975 64 44 1975 2991 64 45 66 3064 65 46 65 3064 1975 47 67 2950 66 48 2950 3064 66 49 68 2009 67 50 2009 2950 67 51 69 3066 68 52 68 3066 2009 53 70 1984 69 54 1984 3066 69 55 71 3099 70 56 70 3099 1984 57 72 2022 71 58 2022 3099 71 59 73 2925 72 60 72 2925 2022 61 74 1992 73 62 1992 2925 73 63 75 3074 74 64 74 3074 1992 65 76 3022 75 66 3022 3074 75 67 77 2001 76 68 2001 3022 76 69 78 3403 77 70 77 3403 2001 71 79 2023 78 72 2023 3403 78 73 80 3406 79 74 79 3406 2023 75 81 2032 80 76 2032 3406 80 77 81 3416 2032 78 123 3339 124 79 123 3418 3339 80 124 3369 125 81 3339 3369 124 82 125 2028 126 83 125 3369 2028 84 126 3012 127 85 2028 3012 126 86 127 1996 128 87 127 3012 1996 88 128 2994 129 89 1996 2994 128 90 129 2026 130 91 129 2994 2026 92 130 2992 131 93 2026 2992 130 94 131 1988 132 95 131 2992 1988 96 132 3037 133 97 1988 3037 132 98 133 2012 134 99 133 3037 2012 100 134 2993 135 101 2012 2993 134 102 135 1980 136 103 135 2993 1980 104 136 2974 137 105 1980 2974 136 106 137 2005 138 107 137 2974 2005 108 138 3079 139 109 2005 3079 138 110 139 3355 140 111 3079 3355 139 112 140 1978 141 113 140 3355 1978 114 141 3408 142 115 1978 3408 141 116 142 2770 143 117 142 3408 2770 118 143 2007 144 119 143 2770 2007 120 144 2989 145 121 2007 2989 144 122 145 1986 146 123 145 2989 1986 124 146 3088 147 125 1986 3088 146 126 147 2018 148 127 147 3088 2018 128 148 3409 149 129 2018 3409 148 130 149 1994 150 131 149 3409 1994 132 150 3089 151 133 1994 3089 150 134 151 3114 152 135 3089 3114 151 136 152 1998 153 137 152 3114 1998 138 153 3412 154 139 1998 3412 153 140 154 2004 155 141 154 3412 2004 142 155 3405 156 143 2004 3405 155 144 156 2031 157 145 156 3405 2031 146 2031 3415 157 147 231 2033 232 148 231 3417 2033 149 232 3027 233 150 2033 3027 232 151 233 2003 234 152 233 3027 2003 153 234 3363 235 154 2003 3363 234 155 235 3398 236 156 3363 3398 235 157 236 1999 237 158 236 3398 1999 159 237 3050 238 160 1999 3050 237 161 238 3048 239 162 238 3050 3048 163 239 1987 240 164 239 3048 1987 165 240 3008 241 166 1987 3008 240 167 241 2016 242 168 241 3008 2016 169 242 3054 243 170 2016 3054 242 171 243 1982 244 172 243 3054 1982 173 244 2977 245 174 1982 2977 244 175 245 2013 246 176 245 2977 2013 177 246 3075 247 178 2013 3075 246 179 247 3013 248 180 247 3075 3013 181 248 1977 249 182 248 3013 1977 183 249 3400 250 184 1977 3400 249 185 250 3365 251 186 250 3400 3365 187 251 2008 252 188 251 3365 2008 189 252 3058 253 190 2008 3058 252 191 253 1985 254 192 253 3058 1985 193 254 3097 255 194 1985 3097 254 195 255 2025 256 196 255 3097 2025 197 256 2926 257 198 2025 2926 256 199 257 1993 258 200 257 2926 1993 201 258 3399 259 202 1993 3399 258 203 259 3364 260 204 259 3399 3364 205 260 2002 261 206 260 3364 2002 207 261 2999 262 208 2002 2999 261 209 262 2020 263 210 262 2999 2020 211 263 3152 264 212 2020 3152 263 213 264 2030 265 214 264 3152 2030 215 2030 3418 265 216 267 3337 266 217 3337 3416 266 218 268 2818 267 219 2818 3337 267 220 269 2029 268 221 2029 2818 268 222 270 3018 269 223 269 3018 2029 224 271 1997 270 225 1997 3018 270 226 272 2995 271 227 271 2995 1997 228 273 2027 272 229 2027 2995 272 230 274 3246 273 231 273 3246 2027 232 275 1989 274 233 1989 3246 274 234 276 3028 275 235 275 3028 1989 236 277 2014 276 237 2014 3028 276 238 278 3019 277 239 277 3019 2014 240 279 1981 278 241 1981 3019 278 242 280 2984 279 243 279 2984 1981 244 281 2006 280 245 2006 2984 280 246 282 3129 281 247 281 3129 2006 248 283 3186 282 249 282 3186 3129 250 284 1976 283 251 1976 3186 283 252 285 3209 284 253 284 3209 1976 254 286 2785 285 255 2785 3209 285 256 287 2015 286 257 2015 2785 286 258 288 3067 287 259 287 3067 2015 260 289 1983 288 261 1983 3067 288 262 290 3051 289 263 289 3051 1983 264 291 2011 290 265 2011 3051 290 266 292 2034 291 267 291 2034 2011 268 293 1991 292 269 1991 2034 292 270 294 3305 293 271 293 3305 1991 272 295 3323 294 273 294 3323 3305 274 296 2000 295 275 2000 3323 295 276 297 3025 296 277 296 3025 2000 278 298 2019 297 279 2019 3025 297 280 299 3332 298 281 298 3332 2019 282 300 3336 299 283 299 3336 3332 284 300 3415 3336 285 1975 3343 2991 286 3064 3111 1975 287 3111 3343 1975 288 2787 2900 1976 289 1976 3209 2787 290 2900 3186 1976 291 3013 3382 1977 292 1977 3382 3361 293 3361 3400 1977 294 1978 2997 2759 295 2759 3408 1978 296 1978 2998 2997 297 1978 3355 2998 298 1979 2966 2965 299 2965 2967 1979 300 1979 3404 2966 301 2967 3414 1979 302 1980 3407 2769 303 2769 3413 1980 304 1980 3413 2974 305 2993 3407 1980 306 1981 2985 2786 307 2786 3019 1981 308 2984 2985 1981 309 1982 3388 2977 310 3054 3389 1982 311 1982 3389 3388 312 2789 3067 1983 313 1983 3251 2789 314 3051 3251 1983 315 1984 3099 2758 316 2758 3348 1984 317 1984 3348 3066 318 3058 3383 1985 319 1985 3381 3097 320 1985 3383 3381 321 2760 3088 1986 322 1986 3349 2760 323 2989 3349 1986 324 1987 3362 3008 325 3048 3049 1987 326 3049 3362 1987 327 2992 3357 1988 328 1988 3038 3037 329 1988 3357 3038 330 3028 3029 1989 331 3029 3329 1989 332 1989 3329 3246 333 1990 3002 2757 334 2757 3003 1990 335 3003 3004 1990 336 1991 3267 2034 337 1991 3327 3267 338 3305 3327 1991 339 1992 3427 2925 340 3074 3358 1992 341 3358 3427 1992 342 2926 3377 1993 343 1993 3377 3360 344 3360 3399 1993 345 2768 3303 1994 346 1994 3409 2768 347 1994 3359 3089 348 3303 3359 1994 349 2750 3047 1995 350 1995 3341 2750 351 3333 3341 1995 352 1996 3012 2742 353 2742 3373 1996 354 1996 3373 2994 355 2775 2850 1997 356 1997 2995 2775 357 2850 3018 1997 358 2796 2802 1998 359 1998 3344 2796 360 2802 3412 1998 361 3114 3344 1998 362 1999 3392 3050 363 3367 3392 1999 364 1999 3398 3367 365 2866 3323 2000 366 2000 3326 2866 367 3025 3326 2000 368 2001 2898 2897 369 2897 3345 2001 370 2001 3403 2898 371 2001 3345 3022 372 2002 3378 2999 373 3364 3395 2002 374 2002 3395 3378 375 3027 3393 2003 376 2003 3402 3363 377 3393 3402 2003 378 2798 2800 2004 379 2004 2802 2798 380 2800 3405 2004 381 2004 3412 2802 382 2974 2975 2005 383 2975 2976 2005 384 2976 3079 2005 385 2006 3280 2984 386 3129 3261 2006 387 3261 3280 2006 388 2770 3372 2007 389 2812 2989 2007 390 2007 3372 2812 391 2008 3385 3058 392 3365 3396 2008 393 2008 3396 3385 394 2009 3066 2752 395 2752 3342 2009 396 2009 3342 2950 397 2010 2969 2966 398 2966 3404 2010 399 2010 3352 2969 400 3100 3352 2010 401 2034 2035 2011 402 2035 2036 2011 403 2036 3051 2011 404 2761 2993 2012 405 2012 3354 2761 406 3037 3354 2012 407 2977 3387 2013 408 2013 3386 3075 409 2013 3387 3386 410 2014 2778 2777 411 2777 3028 2014 412 2014 3019 2778 413 2783 2784 2015 414 2015 3067 2783 415 2784 2785 2015 416 3008 3391 2016 417 2016 3390 3054 418 2016 3391 3390 419 2017 2967 2915 420 2915 3353 2017 421 2017 3414 2967 422 2017 3353 3002 423 2764 2768 2018 424 2018 3370 2764 425 2768 3409 2018 426 3088 3370 2018 427 2019 3328 3025 428 2019 3331 3328 429 2019 3332 3331 430 2999 3376 2020 431 2020 3375 3152 432 2020 3376 3375 433 3004 3005 2021 434 3005 3006 2021 435 3006 3333 2021 436 2869 3371 2022 437 2022 3411 2869 438 2925 3411 2022 439 2022 3371 3099 440 2773 3278 2023 441 2023 3406 2773 442 2023 3278 2898 443 2898 3403 2023 444 3047 3346 2024 445 3346 3425 2024 446 2024 3425 3368 447 2025 3379 2926 448 3097 3380 2025 449 2025 3380 3379 450 2735 2992 2026 451 2026 3410 2735 452 2994 3410 2026 453 2776 2995 2027 454 2027 2996 2776 455 2027 3246 2996 456 2028 3347 3012 457 2028 3426 3347 458 3369 3426 2028 459 2029 2774 2771 460 2771 2818 2029 461 2029 3018 2774 462 3152 3374 2030 463 2030 3374 3339 464 3339 3418 2030 465 2800 2801 2031 466 2031 3405 2800 467 2801 3336 2031 468 3336 3415 2031 469 2772 2773 2032 470 2032 3337 2772 471 2773 3406 2032 472 2032 3416 3337 473 2033 3394 3027 474 3340 3394 2033 475 2033 3417 3340 476 2034 3267 2035 477 2035 2037 2036 478 2035 2882 2037 479 2035 3267 2882 480 2037 2038 2036 481 2038 3251 2036 482 2036 3251 3051 483 2037 2039 2038 484 2037 2040 2039 485 2037 2882 2040 486 2039 3181 2038 487 3181 3306 2038 488 2038 3306 3251 489 2040 2041 2039 490 2041 2042 2039 491 2042 3181 2039 492 2040 2120 2041 493 2040 2455 2120 494 2040 2882 2455 495 2041 2043 2042 496 2041 2855 2043 497 2120 2855 2041 498 2043 2044 2042 499 2044 2344 2042 500 2344 3181 2042 501 2043 2045 2044 502 2043 3179 2045 503 2855 3179 2043 504 2045 2046 2044 505 2046 2859 2044 506 2044 2859 2344 507 2045 2047 2046 508 2045 2108 2047 509 2045 3179 2108 510 2047 2048 2046 511 2048 2141 2046 512 2141 2859 2046 513 2047 2049 2048 514 2047 3092 2049 515 2108 3092 2047 516 2049 2050 2048 517 2050 2902 2048 518 2048 2902 2141 519 2049 2051 2050 520 2049 2345 2051 521 2049 3092 2345 522 2051 2052 2050 523 2052 3115 2050 524 2050 3115 2902 525 2051 2053 2052 526 2051 3020 2053 527 2345 3020 2051 528 2053 2054 2052 529 2054 2112 2052 530 2112 3115 2052 531 2053 2055 2054 532 2053 2089 2055 533 2053 3020 2089 534 2055 2056 2054 535 2056 3235 2054 536 2054 3235 2112 537 2055 2057 2056 538 2055 3121 2057 539 2089 3121 2055 540 2057 2058 2056 541 2058 3293 2056 542 2056 3293 3235 543 2057 2059 2058 544 2057 2192 2059 545 2057 3121 2192 546 2059 2060 2058 547 2060 2086 2058 548 2086 3293 2058 549 2059 2061 2060 550 2059 2941 2061 551 2192 2941 2059 552 2061 2062 2060 553 2062 3125 2060 554 2060 3125 2086 555 2061 2063 2062 556 2061 2082 2063 557 2061 2941 2082 558 2063 2064 2062 559 2064 2190 2062 560 2190 3125 2062 561 2063 2065 2064 562 2063 3086 2065 563 2082 3086 2063 564 2065 2066 2064 565 2066 2873 2064 566 2064 2873 2190 567 2065 2067 2066 568 2065 2194 2067 569 2065 3086 2194 570 2067 2068 2066 571 2068 2072 2066 572 2072 2873 2066 573 2067 2069 2068 574 2067 3134 2069 575 2194 3134 2067 576 2069 2070 2068 577 2070 3230 2068 578 2068 3230 2072 579 2069 2071 2070 580 2069 2074 2071 581 2069 3134 2074 582 2071 2073 2070 583 2073 2336 2070 584 2336 3230 2070 585 2071 2075 2073 586 2074 3210 2071 587 2071 3210 2075 588 2072 3023 2873 589 2874 3023 2072 590 2072 3230 2874 591 2075 2076 2073 592 2076 3164 2073 593 2073 3164 2336 594 3134 3286 2074 595 2074 3257 3210 596 2074 3286 3257 597 2075 2077 2076 598 2075 2188 2077 599 2075 3210 2188 600 2077 2078 2076 601 2078 2079 2076 602 2079 3164 2076 603 2077 2080 2078 604 2077 2903 2080 605 2188 2903 2077 606 2078 3093 2079 607 2080 2081 2078 608 2081 3093 2078 609 2079 3010 3009 610 3009 3164 2079 611 2079 3093 3010 612 2080 2083 2081 613 2080 2084 2083 614 2080 2903 2084 615 2083 2085 2081 616 2085 2195 2081 617 2195 3093 2081 618 2941 3222 2082 619 2082 3223 3086 620 3222 3223 2082 621 2084 2087 2083 622 2083 3014 2085 623 2087 3014 2083 624 2084 2088 2087 625 2084 3109 2088 626 2903 3109 2084 627 2085 2196 2195 628 2085 2919 2196 629 2085 3014 2919 630 3125 3127 2086 631 3127 3281 2086 632 3281 3293 2086 633 2088 2090 2087 634 2090 2189 2087 635 2189 3014 2087 636 2088 2091 2090 637 2088 2191 2091 638 2088 3109 2191 639 3020 3302 2089 640 2089 3308 3121 641 3302 3308 2089 642 2091 2092 2090 643 2092 3015 2090 644 2090 3015 2189 645 2091 2093 2092 646 2091 2978 2093 647 2191 2978 2091 648 2093 2094 2092 649 2094 2096 2092 650 2096 3015 2092 651 2093 2095 2094 652 2093 2097 2095 653 2093 2978 2097 654 2095 3135 2094 655 2094 2386 2096 656 2094 3135 2386 657 2097 2098 2095 658 2098 2113 2095 659 2113 3135 2095 660 2386 2392 2096 661 2392 3119 2096 662 2096 3119 3015 663 2097 2099 2098 664 2097 2579 2099 665 2097 2978 2579 666 2099 2100 2098 667 2100 2958 2098 668 2098 2958 2113 669 2099 2101 2100 670 2099 3110 2101 671 2579 3110 2099 672 2101 2102 2100 673 2102 2186 2100 674 2186 2958 2100 675 2101 2103 2102 676 2101 2147 2103 677 2101 3110 2147 678 2103 2104 2102 679 2104 3000 2102 680 2102 3000 2186 681 2103 2105 2104 682 2103 3232 2105 683 2147 3232 2103 684 2105 2106 2104 685 2106 2879 2104 686 2879 3000 2104 687 2105 2107 2106 688 2105 3243 2107 689 3232 3243 2105 690 2107 2109 2106 691 2109 2114 2106 692 2114 2879 2106 693 2107 2110 2109 694 2107 2111 2110 695 2107 3243 2111 696 2108 3318 3092 697 3179 3320 2108 698 2108 3320 3318 699 2110 3094 2109 700 2109 2115 2114 701 2109 3094 2115 702 2111 2116 2110 703 2116 2457 2110 704 2457 3094 2110 705 2111 2117 2116 706 2111 2832 2117 707 2111 3243 2832 708 2112 3235 2819 709 2819 3263 2112 710 2112 3263 3115 711 2113 2958 2939 712 2939 3113 2113 713 3113 3135 2113 714 2115 2121 2114 715 2121 2429 2114 716 2429 2879 2114 717 2115 2122 2121 718 2115 2631 2122 719 2115 3094 2631 720 2117 2118 2116 721 2118 2883 2116 722 2116 2883 2457 723 2117 2119 2118 724 2117 2187 2119 725 2117 2832 2187 726 2119 2123 2118 727 2123 2127 2118 728 2127 2883 2118 729 2119 2124 2123 730 2119 3176 2124 731 2187 3176 2119 732 2455 2532 2120 733 2532 2729 2120 734 2729 2855 2120 735 2122 2125 2121 736 2125 3070 2121 737 2121 3070 2429 738 2122 2126 2125 739 2122 3167 2126 740 2631 3167 2122 741 2124 2128 2123 742 2123 3143 2127 743 2128 3143 2123 744 2124 2129 2128 745 2124 2137 2129 746 2124 3176 2137 747 2126 2132 2125 748 2132 2133 2125 749 2133 3070 2125 750 2126 2134 2132 751 2126 2135 2134 752 2126 3167 2135 753 2127 3144 2883 754 3143 3161 2127 755 2127 3161 3144 756 2129 2130 2128 757 2130 2884 2128 758 2884 3143 2128 759 2129 2131 2130 760 2129 2901 2131 761 2137 2901 2129 762 2131 2138 2130 763 2138 2151 2130 764 2151 2884 2130 765 2131 2139 2138 766 2131 2990 2139 767 2901 2990 2131 768 2132 2861 2133 769 2134 2146 2132 770 2146 2861 2132 771 2838 3070 2133 772 2133 3259 2838 773 2861 3259 2133 774 2135 2136 2134 775 2136 2823 2134 776 2134 2823 2146 777 2135 2140 2136 778 2135 2193 2140 779 2135 3167 2193 780 2140 2148 2136 781 2148 3060 2136 782 2136 3060 2823 783 2137 2934 2901 784 2924 2934 2137 785 2137 3176 2924 786 2139 2142 2138 787 2142 3190 2138 788 2138 3190 2151 789 2139 2143 2142 790 2139 2144 2143 791 2139 2990 2144 792 2140 2153 2148 793 2140 3240 2153 794 2193 3240 2140 795 2141 3294 2859 796 2902 2940 2141 797 2940 3294 2141 798 2143 3277 2142 799 2142 3324 3190 800 3277 3324 2142 801 2144 2145 2143 802 2145 2149 2143 803 2149 3277 2143 804 2144 2152 2145 805 2144 2443 2152 806 2144 2990 2443 807 2145 2150 2149 808 2145 3212 2150 809 2152 3212 2145 810 2146 2822 2792 811 2792 2861 2146 812 2146 2823 2822 813 3110 3309 2147 814 3187 3232 2147 815 2147 3309 3187 816 2153 2156 2148 817 2156 2157 2148 818 2157 3060 2148 819 2150 2154 2149 820 2154 3270 2149 821 3270 3277 2149 822 2150 2155 2154 823 2150 2895 2155 824 2150 3212 2895 825 2791 2870 2151 826 2151 3190 2791 827 2870 2884 2151 828 2443 2444 2152 829 2444 3122 2152 830 3122 3212 2152 831 2153 2171 2156 832 2153 2172 2171 833 2153 3240 2172 834 2155 2158 2154 835 2158 2168 2154 836 2168 3270 2154 837 2155 2159 2158 838 2155 2160 2159 839 2155 2895 2160 840 2156 2169 2157 841 2156 3191 2169 842 2171 3191 2156 843 2169 2170 2157 844 2170 3183 2157 845 2157 3183 3060 846 2159 2916 2158 847 2158 2185 2168 848 2158 2916 2185 849 2160 2161 2159 850 2161 2162 2159 851 2162 2916 2159 852 2160 2893 2161 853 2160 2894 2893 854 2160 2895 2894 855 2161 2163 2162 856 2161 2164 2163 857 2161 2893 2164 858 2163 2899 2162 859 2162 2899 2865 860 2865 2916 2162 861 2164 2165 2163 862 2165 2166 2163 863 2166 2899 2163 864 2164 2175 2165 865 2164 2184 2175 866 2164 2893 2184 867 2165 2167 2166 868 2165 3255 2167 869 2175 3255 2165 870 2167 2173 2166 871 2173 2337 2166 872 2337 2899 2166 873 2167 2174 2173 874 2167 3090 2174 875 2167 3255 3090 876 2185 2350 2168 877 2350 2461 2168 878 2461 3270 2168 879 2169 2346 2170 880 2169 2625 2346 881 2169 3191 2625 882 2346 2347 2170 883 2347 2348 2170 884 2348 3183 2170 885 2172 2180 2171 886 2180 2367 2171 887 2367 3191 2171 888 2172 2181 2180 889 2172 3264 2181 890 3240 3264 2172 891 2174 2176 2173 892 2176 3253 2173 893 2173 3253 2337 894 2174 2177 2176 895 2174 2178 2177 896 2174 3090 2178 897 2184 2404 2175 898 2404 2856 2175 899 2856 3255 2175 900 2177 2863 2176 901 2863 3275 2176 902 2176 3275 3253 903 2178 2179 2177 904 2179 2182 2177 905 2182 2863 2177 906 2178 2397 2179 907 2178 2428 2397 908 2178 3090 2428 909 2179 2183 2182 910 2179 3194 2183 911 2397 3194 2179 912 2181 2375 2180 913 2180 2810 2367 914 2375 2810 2180 915 2181 2376 2375 916 2181 2388 2376 917 2181 3264 2388 918 2183 2373 2182 919 2373 2402 2182 920 2402 2863 2182 921 2183 2374 2373 922 2183 2396 2374 923 2183 3194 2396 924 2184 2405 2404 925 2184 2635 2405 926 2184 2893 2635 927 2185 2406 2350 928 2185 2556 2406 929 2185 2916 2556 930 2881 2938 2186 931 2186 3000 2881 932 2938 2958 2186 933 2807 2830 2187 934 2187 2832 2807 935 2830 3176 2187 936 2188 2904 2903 937 2188 2905 2904 938 2188 3210 2905 939 2189 3015 2949 940 2949 3141 2189 941 2189 3141 3014 942 2873 3260 2190 943 2190 3126 3125 944 2190 3260 3126 945 2908 2910 2191 946 2191 3109 2908 947 2910 2978 2191 948 2192 3283 2941 949 3121 3274 2192 950 3274 3283 2192 951 2193 3182 2864 952 2864 3240 2193 953 3167 3182 2193 954 3086 3236 2194 955 2194 3269 3134 956 3236 3269 2194 957 2196 2197 2195 958 2197 3202 2195 959 2195 3202 3093 960 2196 2198 2197 961 2196 2450 2198 962 2196 2919 2450 963 2198 2199 2197 964 2199 2570 2197 965 2570 3202 2197 966 2198 2200 2199 967 2198 3001 2200 968 2450 3001 2198 969 2200 2201 2199 970 2201 2945 2199 971 2199 2945 2570 972 2200 2202 2201 973 2200 2203 2202 974 2200 3001 2203 975 2202 2206 2201 976 2206 2207 2201 977 2207 2945 2201 978 2203 2204 2202 979 2204 3137 2202 980 2202 3137 2206 981 2203 2205 2204 982 2203 3174 2205 983 3001 3174 2203 984 2205 2210 2204 985 2210 2299 2204 986 2299 3137 2204 987 2205 2211 2210 988 2205 2268 2211 989 2205 3174 2268 990 2206 2208 2207 991 2206 2704 2208 992 2206 3137 2704 993 2208 2209 2207 994 2209 2300 2207 995 2300 2945 2207 996 2208 2212 2209 997 2208 3165 2212 998 2704 3165 2208 999 2212 2213 2209 1000 2213 3163 2209 1001 2209 3163 2300 1002 2211 2214 2210 1003 2214 3034 2210 1004 2210 3034 2299 1005 2211 2215 2214 1006 2211 3030 2215 1007 2268 3030 2211 1008 2212 2216 2213 1009 2212 2221 2216 1010 2212 3165 2221 1011 2216 2217 2213 1012 2217 3154 2213 1013 3154 3163 2213 1014 2215 2218 2214 1015 2218 2220 2214 1016 2220 3034 2214 1017 2215 2219 2218 1018 2215 2931 2219 1019 2215 3030 2931 1020 2216 2228 2217 1021 2221 2959 2216 1022 2216 2959 2228 1023 2228 2229 2217 1024 2229 2230 2217 1025 2230 3154 2217 1026 2219 2222 2218 1027 2218 3052 2220 1028 2222 3052 2218 1029 2219 2223 2222 1030 2219 2224 2223 1031 2219 2931 2224 1032 2220 2892 2851 1033 2851 3034 2220 1034 2220 3052 2892 1035 2221 2960 2959 1036 2221 3214 2960 1037 3165 3214 2221 1038 2223 3071 2222 1039 2848 3052 2222 1040 2222 3071 2848 1041 2224 2225 2223 1042 2225 2227 2223 1043 2227 3071 2223 1044 2224 2226 2225 1045 2224 3076 2226 1046 2931 3076 2224 1047 2226 2249 2225 1048 2225 2928 2227 1049 2249 2928 2225 1050 2226 2250 2249 1051 2226 2261 2250 1052 2226 3076 2261 1053 2928 2929 2227 1054 2929 2930 2227 1055 2930 3071 2227 1056 2228 2970 2229 1057 2959 3098 2228 1058 2228 3098 2970 1059 2229 2231 2230 1060 2229 2232 2231 1061 2229 2970 2232 1062 2231 2933 2230 1063 2933 3147 2230 1064 3147 3154 2230 1065 2232 2233 2231 1066 2233 2234 2231 1067 2234 2933 2231 1068 2232 2248 2233 1069 2232 2301 2248 1070 2232 2970 2301 1071 2233 2235 2234 1072 2233 3224 2235 1073 2248 3224 2233 1074 2235 2236 2234 1075 2236 2932 2234 1076 2932 2933 2234 1077 2235 2237 2236 1078 2235 3205 2237 1079 2235 3224 3205 1080 2237 2238 2236 1081 2238 2258 2236 1082 2258 2932 2236 1083 2237 2239 2238 1084 2237 2240 2239 1085 2237 3205 2240 1086 2239 3146 2238 1087 2238 2338 2258 1088 2238 3146 2338 1089 2240 2241 2239 1090 2241 2242 2239 1091 2242 3146 2239 1092 2240 2886 2241 1093 2240 2887 2886 1094 2240 3205 2887 1095 2241 2243 2242 1096 2241 2245 2243 1097 2241 2886 2245 1098 2243 2244 2242 1099 2244 2839 2242 1100 2839 3146 2242 1101 2243 3128 2244 1102 2245 2246 2243 1103 2246 3128 2243 1104 2828 2839 2244 1105 2244 2944 2828 1106 2244 3128 2944 1107 2245 2247 2246 1108 2245 2951 2247 1109 2886 2951 2245 1110 2247 2251 2246 1111 2251 2278 2246 1112 2278 3128 2246 1113 2247 2252 2251 1114 2247 2253 2252 1115 2247 2951 2253 1116 2301 2302 2248 1117 2302 3080 2248 1118 3080 3224 2248 1119 2250 2255 2249 1120 2255 2979 2249 1121 2249 2979 2928 1122 2250 2256 2255 1123 2250 3053 2256 1124 2261 3053 2250 1125 2252 3017 2251 1126 2251 2279 2278 1127 2251 3017 2279 1128 2253 2254 2252 1129 2254 3016 2252 1130 3016 3017 2252 1131 2253 2257 2254 1132 2253 3216 2257 1133 2951 3216 2253 1134 2257 2259 2254 1135 2259 2260 2254 1136 2260 3016 2254 1137 2256 2262 2255 1138 2262 2263 2255 1139 2263 2979 2255 1140 2256 2264 2262 1141 2256 2310 2264 1142 2256 3053 2310 1143 2257 2265 2259 1144 2257 2272 2265 1145 2257 3216 2272 1146 2338 2339 2258 1147 2339 3215 2258 1148 2258 3215 2932 1149 2259 2266 2260 1150 2265 2920 2259 1151 2259 2920 2266 1152 2266 2267 2260 1153 2267 3195 2260 1154 2260 3195 3016 1155 2957 3053 2261 1156 2261 3101 2957 1157 3076 3101 2261 1158 2262 2269 2263 1159 2264 3077 2262 1160 2262 3077 2269 1161 2269 2270 2263 1162 2270 3055 2263 1163 2263 3055 2979 1164 2310 2311 2264 1165 2311 2335 2264 1166 2335 3077 2264 1167 2272 2273 2265 1168 2273 2277 2265 1169 2277 2920 2265 1170 2266 2271 2267 1171 2266 3196 2271 1172 2920 3196 2266 1173 2271 2274 2267 1174 2274 2275 2267 1175 2275 3195 2267 1176 2268 3032 3030 1177 2268 3220 3032 1178 3174 3220 2268 1179 2269 2354 2270 1180 2269 2986 2354 1181 2269 3077 2986 1182 2354 2355 2270 1183 2355 2356 2270 1184 2356 3055 2270 1185 2271 2276 2274 1186 2271 2349 2276 1187 2271 3196 2349 1188 2272 3228 2273 1189 2272 3216 2891 1190 2891 3228 2272 1191 2273 2372 2277 1192 2273 2468 2372 1193 2273 3228 2468 1194 2274 2377 2275 1195 2276 3138 2274 1196 2274 3138 2377 1197 2377 2378 2275 1198 2378 2572 2275 1199 2572 3195 2275 1200 2349 2400 2276 1201 2400 2401 2276 1202 2401 3138 2276 1203 2372 2413 2277 1204 2413 2705 2277 1205 2705 2920 2277 1206 2279 2280 2278 1207 2280 2568 2278 1208 2568 3128 2278 1209 2279 2281 2280 1210 2279 3198 2281 1211 3017 3198 2279 1212 2281 2282 2280 1213 2282 3193 2280 1214 2280 3193 2568 1215 2281 2283 2282 1216 2281 2522 2283 1217 2281 3198 2522 1218 2283 2284 2282 1219 2284 2285 2282 1220 2285 3193 2282 1221 2283 3120 2284 1222 2522 2523 2283 1223 2523 3120 2283 1224 2284 2286 2285 1225 2284 2379 2286 1226 2284 3120 2379 1227 2286 2287 2285 1228 2287 2459 2285 1229 2459 3193 2285 1230 2286 2288 2287 1231 2286 3177 2288 1232 2379 3177 2286 1233 2288 2289 2287 1234 2289 2927 2287 1235 2287 2927 2459 1236 2288 2290 2289 1237 2288 2380 2290 1238 2288 3177 2380 1239 2290 2291 2289 1240 2291 2292 2289 1241 2292 2927 2289 1242 2290 2293 2291 1243 2290 3123 2293 1244 2380 3123 2290 1245 2291 2294 2292 1246 2293 2875 2291 1247 2291 2875 2294 1248 2294 2295 2292 1249 2295 3203 2292 1250 2292 3203 2927 1251 2790 2876 2293 1252 2293 3123 2790 1253 2293 2876 2875 1254 2294 2296 2295 1255 2294 2298 2296 1256 2294 2875 2298 1257 2296 2297 2295 1258 2297 2395 2295 1259 2395 3203 2295 1260 2296 3130 2297 1261 2298 2384 2296 1262 2384 3130 2296 1263 2297 2817 2395 1264 2297 3256 2817 1265 3130 3256 2297 1266 2298 2385 2384 1267 2298 3140 2385 1268 2875 3140 2298 1269 3034 3035 2299 1270 3035 3189 2299 1271 2299 3189 3137 1272 2300 2946 2945 1273 2300 3166 2946 1274 3163 3166 2300 1275 2301 2303 2302 1276 2301 3061 2303 1277 2970 3061 2301 1278 2303 2304 2302 1279 2304 2403 2302 1280 2403 3080 2302 1281 2303 2305 2304 1282 2303 2307 2305 1283 2303 3061 2307 1284 2305 2306 2304 1285 2306 3021 2304 1286 2304 3021 2403 1287 2305 2980 2306 1288 2307 2308 2305 1289 2308 2980 2305 1290 2980 3291 2306 1291 2306 3268 3021 1292 2306 3291 3268 1293 2307 2309 2308 1294 2307 2569 2309 1295 2307 3061 2569 1296 2309 2370 2308 1297 2370 2411 2308 1298 2411 2980 2308 1299 2309 2371 2370 1300 2309 3124 2371 1301 2569 3124 2309 1302 2310 2312 2311 1303 2310 2955 2312 1304 2310 3053 2955 1305 2312 2313 2311 1306 2313 3007 2311 1307 2311 3007 2335 1308 2312 2314 2313 1309 2312 2321 2314 1310 2312 2955 2321 1311 2314 2315 2313 1312 2315 2318 2313 1313 2318 3007 2313 1314 2314 2316 2315 1315 2314 2982 2316 1316 2321 2982 2314 1317 2316 2317 2315 1318 2317 3103 2315 1319 2315 3103 2318 1320 2316 2319 2317 1321 2316 2709 2319 1322 2316 2982 2709 1323 2319 2320 2317 1324 2320 2322 2317 1325 2322 3103 2317 1326 2318 3083 3007 1327 2318 3145 3083 1328 3103 3145 2318 1329 2319 2983 2320 1330 2709 3133 2319 1331 2319 3133 2983 1332 2320 2323 2322 1333 2320 2324 2323 1334 2320 2983 2324 1335 2955 2956 2321 1336 2956 3112 2321 1337 2321 3112 2982 1338 2323 2332 2322 1339 2332 2710 2322 1340 2710 3103 2322 1341 2324 2325 2323 1342 2325 3139 2323 1343 2323 3139 2332 1344 2324 2326 2325 1345 2324 2387 2326 1346 2324 2983 2387 1347 2326 2327 2325 1348 2327 3118 2325 1349 3118 3139 2325 1350 2326 2328 2327 1351 2326 3208 2328 1352 2387 3208 2326 1353 2328 2329 2327 1354 2329 2330 2327 1355 2330 3118 2327 1356 2328 3159 2329 1357 2328 3207 3159 1358 2328 3208 3207 1359 2329 2331 2330 1360 2329 2333 2331 1361 2329 3159 2333 1362 2331 2421 2330 1363 2421 2458 2330 1364 2458 3118 2330 1365 2333 2334 2331 1366 2334 2971 2331 1367 2331 2971 2421 1368 2332 2711 2710 1369 2332 3188 2711 1370 3139 3188 2332 1371 2333 2381 2334 1372 2333 2383 2381 1373 2333 3159 2383 1374 2381 2382 2334 1375 2382 2417 2334 1376 2417 2971 2334 1377 2335 3007 2942 1378 2942 3078 2335 1379 2335 3078 3077 1380 2336 3164 3011 1381 3011 3244 2336 1382 2336 3244 3230 1383 2337 3204 2899 1384 3200 3204 2337 1385 2337 3253 3200 1386 2338 2340 2339 1387 2338 3102 2340 1388 2338 3146 3102 1389 2340 2341 2339 1390 2341 2342 2339 1391 2342 3215 2339 1392 2340 2343 2341 1393 2340 2464 2343 1394 2340 3102 2464 1395 2341 2393 2342 1396 2343 3024 2341 1397 2341 3024 2393 1398 2393 2394 2342 1399 2394 2943 2342 1400 2943 3215 2342 1401 2464 2465 2343 1402 2465 2466 2343 1403 2466 3024 2343 1404 2859 3304 2344 1405 2344 3313 3181 1406 3304 3313 2344 1407 2345 3314 3020 1408 3092 3322 2345 1409 2345 3322 3314 1410 2346 2857 2347 1411 2625 2626 2346 1412 2626 2857 2346 1413 2347 2351 2348 1414 2347 2353 2351 1415 2347 2857 2353 1416 2351 2352 2348 1417 2352 3312 2348 1418 2348 3312 3183 1419 2349 2474 2400 1420 2349 3084 2474 1421 2349 3196 3084 1422 2406 2811 2350 1423 2350 2462 2461 1424 2350 2811 2462 1425 2351 2415 2352 1426 2353 2913 2351 1427 2351 2913 2415 1428 2415 2416 2352 1429 2416 2470 2352 1430 2470 3312 2352 1431 2857 3242 2353 1432 2353 3081 2913 1433 2353 3242 3081 1434 2354 2475 2355 1435 2354 2476 2475 1436 2354 2986 2476 1437 2355 2357 2356 1438 2355 3046 2357 1439 2475 3046 2355 1440 2357 2358 2356 1441 2358 2511 2356 1442 2511 3055 2356 1443 2357 2359 2358 1444 2357 2414 2359 1445 2357 3046 2414 1446 2359 2360 2358 1447 2360 3085 2358 1448 2358 3085 2511 1449 2359 2361 2360 1450 2359 3072 2361 1451 2414 3072 2359 1452 2361 2362 2360 1453 2362 2364 2360 1454 2364 3085 2360 1455 2361 2363 2362 1456 2361 2422 2363 1457 2361 3072 2422 1458 2363 3039 2362 1459 2362 2365 2364 1460 2362 3039 2365 1461 2422 2423 2363 1462 2423 3091 2363 1463 2363 3091 3039 1464 2365 2366 2364 1465 2366 2605 2364 1466 2605 3085 2364 1467 2365 2368 2366 1468 2365 2412 2368 1469 2365 3039 2412 1470 2368 2369 2366 1471 2369 3155 2366 1472 2366 3155 2605 1473 2810 3272 2367 1474 2367 3239 3191 1475 2367 3272 3239 1476 2368 2407 2369 1477 2368 3068 2407 1478 2412 3068 2368 1479 2407 2408 2369 1480 2408 2456 2369 1481 2456 3155 2369 1482 2371 2424 2370 1483 2370 3059 2411 1484 2424 3059 2370 1485 2371 2425 2424 1486 2371 2430 2425 1487 2371 3124 2430 1488 2372 3150 2413 1489 2468 2469 2372 1490 2469 3150 2372 1491 2374 2398 2373 1492 2398 2831 2373 1493 2373 2831 2402 1494 2396 3258 2374 1495 2374 2399 2398 1496 2374 3258 2399 1497 2376 2972 2375 1498 2809 2810 2375 1499 2375 2972 2809 1500 2388 2389 2376 1501 2389 2390 2376 1502 2390 2972 2376 1503 2377 2493 2378 1504 2377 2616 2493 1505 2377 3138 2616 1506 2493 2494 2378 1507 2494 3192 2378 1508 2378 3192 2572 1509 2820 2821 2379 1510 2379 3120 2820 1511 2821 3177 2379 1512 2380 2782 2780 1513 2780 3123 2380 1514 2380 3177 2782 1515 2381 3178 2382 1516 2383 2638 2381 1517 2638 3178 2381 1518 2382 2418 2417 1519 2382 2419 2418 1520 2382 3178 2419 1521 2383 2639 2638 1522 2383 2640 2639 1523 2383 3159 2640 1524 2385 2498 2384 1525 2498 2501 2384 1526 2501 3130 2384 1527 2385 2499 2498 1528 2385 2500 2499 1529 2385 3140 2500 1530 2386 2513 2392 1531 2386 2620 2513 1532 2386 3135 2620 1533 2952 2953 2387 1534 2387 2983 2952 1535 2953 3208 2387 1536 2388 2512 2389 1537 2388 2563 2512 1538 2388 3264 2563 1539 2389 2391 2390 1540 2389 3156 2391 1541 2512 3156 2389 1542 2391 2409 2390 1543 2409 2482 2390 1544 2482 2972 2390 1545 2391 2410 2409 1546 2391 2451 2410 1547 2391 3156 2451 1548 2513 2518 2392 1549 2518 2519 2392 1550 2519 3119 2392 1551 2393 2514 2394 1552 2393 2632 2514 1553 2393 3024 2632 1554 2514 2515 2394 1555 2515 2516 2394 1556 2516 2943 2394 1557 2817 3285 2395 1558 2395 3282 3203 1559 2395 3285 3282 1560 3194 3310 2396 1561 2396 3315 3258 1562 3310 3315 2396 1563 2428 2471 2397 1564 2471 2657 2397 1565 2657 3194 2397 1566 2399 2485 2398 1567 2485 2548 2398 1568 2548 2831 2398 1569 2399 2534 2485 1570 2399 2535 2534 1571 2399 3258 2535 1572 2400 2484 2401 1573 2474 2896 2400 1574 2400 2896 2484 1575 2484 2492 2401 1576 2492 3142 2401 1577 2401 3142 3138 1578 2831 2833 2402 1579 2833 3237 2402 1580 2402 3237 2863 1581 3021 3262 2403 1582 2403 3234 3080 1583 2403 3262 3234 1584 2405 2531 2404 1585 2531 2560 2404 1586 2560 2856 2404 1587 2405 2623 2531 1588 2405 3116 2623 1589 2635 3116 2405 1590 2556 2557 2406 1591 2557 2558 2406 1592 2558 2811 2406 1593 2407 2486 2408 1594 2407 2544 2486 1595 2407 3068 2544 1596 2408 3218 2456 1597 2486 2510 2408 1598 2510 3218 2408 1599 2410 3238 2409 1600 2409 2650 2482 1601 2409 3238 2650 1602 2451 2452 2410 1603 2452 2453 2410 1604 2453 3238 2410 1605 2411 3296 2980 1606 3059 3300 2411 1607 2411 3300 3296 1608 3039 3095 2412 1609 2412 3069 3068 1610 2412 3095 3069 1611 2413 2706 2705 1612 2413 2707 2706 1613 2413 3150 2707 1614 2414 3045 3043 1615 3043 3072 2414 1616 2414 3046 3045 1617 2415 2477 2416 1618 2415 2487 2477 1619 2415 2913 2487 1620 2416 3288 2470 1621 2477 2488 2416 1622 2488 3288 2416 1623 2418 2840 2417 1624 2840 2844 2417 1625 2844 2971 2417 1626 2419 2420 2418 1627 2420 2541 2418 1628 2541 2840 2418 1629 2419 2426 2420 1630 2419 2495 2426 1631 2419 3178 2495 1632 2426 2427 2420 1633 2427 3184 2420 1634 2420 3184 2541 1635 2421 2478 2458 1636 2421 2573 2478 1637 2421 2971 2573 1638 2422 2479 2423 1639 2422 2580 2479 1640 2422 3072 2580 1641 2479 2490 2423 1642 2490 2491 2423 1643 2491 3091 2423 1644 2425 3157 2424 1645 2424 3171 3059 1646 3157 3171 2424 1647 2430 2431 2425 1648 2431 2432 2425 1649 2432 3157 2425 1650 2426 2921 2427 1651 2495 2555 2426 1652 2555 2921 2426 1653 2921 3299 2427 1654 2427 3298 3184 1655 2427 3299 3298 1656 2428 2472 2471 1657 2428 2693 2472 1658 2428 3090 2693 1659 2815 2880 2429 1660 2429 3070 2815 1661 2429 2880 2879 1662 2430 3136 2431 1663 2430 3124 2962 1664 2962 3136 2430 1665 2431 2433 2432 1666 2431 2434 2433 1667 2431 3136 2434 1668 2433 2603 2432 1669 2603 2604 2432 1670 2604 3157 2432 1671 2434 2435 2433 1672 2435 3107 2433 1673 2433 3107 2603 1674 2434 2436 2435 1675 2434 3082 2436 1676 2434 3136 3082 1677 2436 2437 2435 1678 2437 2438 2435 1679 2438 3107 2435 1680 2436 2496 2437 1681 2436 2497 2496 1682 2436 3082 2497 1683 2437 2439 2438 1684 2437 2973 2439 1685 2496 2973 2437 1686 2439 2440 2438 1687 2440 2480 2438 1688 2480 3107 2438 1689 2439 2441 2440 1690 2439 2442 2441 1691 2439 2973 2442 1692 2441 2481 2440 1693 2440 2963 2480 1694 2481 2963 2440 1695 2442 2606 2441 1696 2441 3221 2481 1697 2606 3221 2441 1698 2442 2607 2606 1699 2442 3096 2607 1700 2973 3096 2442 1701 2443 2445 2444 1702 2443 2968 2445 1703 2443 2990 2968 1704 2445 2446 2444 1705 2446 2448 2444 1706 2448 3122 2444 1707 2445 2447 2446 1708 2445 2581 2447 1709 2445 2968 2581 1710 2447 3104 2446 1711 2446 2449 2448 1712 2446 3104 2449 1713 2581 2582 2447 1714 2582 3206 2447 1715 2447 3206 3104 1716 2449 2460 2448 1717 2460 2524 2448 1718 2524 3122 2448 1719 2449 2525 2460 1720 2449 2526 2525 1721 2449 3104 2526 1722 2917 2918 2450 1723 2450 2919 2917 1724 2918 3001 2450 1725 2451 2615 2452 1726 2451 2836 2615 1727 2451 3156 2836 1728 2452 2454 2453 1729 2452 2816 2454 1730 2615 2816 2452 1731 2454 2473 2453 1732 2473 2540 2453 1733 2540 3238 2453 1734 2454 2530 2473 1735 2454 2550 2530 1736 2454 2816 2550 1737 2455 2533 2532 1738 2455 2715 2533 1739 2455 2882 2715 1740 3026 3158 2456 1741 2456 3218 3026 1742 2456 3158 3155 1743 2457 2883 2858 1744 2858 2912 2457 1745 2912 3094 2457 1746 2478 2489 2458 1747 2489 2713 2458 1748 2713 3118 2458 1749 2927 3279 2459 1750 2459 3266 3193 1751 2459 3279 3266 1752 2460 2878 2524 1753 2525 2527 2460 1754 2527 2878 2460 1755 2462 2463 2461 1756 2463 2727 2461 1757 2727 3270 2461 1758 2462 2483 2463 1759 2462 2539 2483 1760 2462 2811 2539 1761 2483 3330 2463 1762 2463 3317 2727 1763 2463 3330 3317 1764 2464 2645 2465 1765 2464 2700 2645 1766 2464 3102 2700 1767 2465 2467 2466 1768 2465 3217 2467 1769 2645 3217 2465 1770 2467 2520 2466 1771 2520 3162 2466 1772 2466 3162 3024 1773 2467 2521 2520 1774 2467 2702 2521 1775 2467 3217 2702 1776 2468 2528 2469 1777 2468 2636 2528 1778 2468 3228 2636 1779 2528 2529 2469 1780 2529 2545 2469 1781 2545 3150 2469 1782 2470 3288 2922 1783 2922 3290 2470 1784 3290 3312 2470 1785 2472 2651 2471 1786 2651 3316 2471 1787 2471 3316 2657 1788 2472 2663 2651 1789 2472 2825 2663 1790 2693 2825 2472 1791 2530 2536 2473 1792 2536 3350 2473 1793 2473 3350 2540 1794 2852 2854 2474 1795 2474 3084 2852 1796 2854 2896 2474 1797 2476 2542 2475 1798 2542 2596 2475 1799 2596 3046 2475 1800 2476 2543 2542 1801 2476 2575 2543 1802 2476 2986 2575 1803 2487 2805 2477 1804 2477 2674 2488 1805 2477 2805 2674 1806 2478 2675 2489 1807 2573 2846 2478 1808 2478 2846 2675 1809 2479 2676 2490 1810 2580 3040 2479 1811 2479 3040 2676 1812 2963 2964 2480 1813 2964 3087 2480 1814 3087 3107 2480 1815 2914 3108 2481 1816 2481 3221 2914 1817 2481 3108 2963 1818 2650 2665 2482 1819 2665 2666 2482 1820 2666 2972 2482 1821 2539 2667 2483 1822 2667 2728 2483 1823 2728 3330 2483 1824 2484 2547 2492 1825 2484 2664 2547 1826 2484 2896 2664 1827 2534 2546 2485 1828 2546 2795 2485 1829 2485 2795 2548 1830 2486 2537 2510 1831 2486 3356 2537 1832 2544 3356 2486 1833 2803 2804 2487 1834 2487 2913 2803 1835 2804 2805 2487 1836 2674 2738 2488 1837 2738 2739 2488 1838 2739 3288 2488 1839 2675 2947 2489 1840 2489 2714 2713 1841 2489 2947 2714 1842 2490 2538 2491 1843 2490 3057 2538 1844 2676 3057 2490 1845 2538 2670 2491 1846 2670 2671 2491 1847 2671 3091 2491 1848 2547 2683 2492 1849 2683 3250 2492 1850 2492 3250 3142 1851 2493 3241 2494 1852 2616 2617 2493 1853 2617 3241 2493 1854 3063 3192 2494 1855 2494 3226 3063 1856 2494 3241 3226 1857 2495 2689 2555 1858 2495 3211 2689 1859 3178 3211 2495 1860 2497 2566 2496 1861 2566 2571 2496 1862 2571 2973 2496 1863 2497 2567 2566 1864 2497 2609 2567 1865 2497 3082 2609 1866 2499 3169 2498 1867 2498 2559 2501 1868 2498 3169 2559 1869 2500 2502 2499 1870 2502 2813 2499 1871 2813 3169 2499 1872 2500 2503 2502 1873 2500 2574 2503 1874 2500 3140 2574 1875 2559 2611 2501 1876 2611 2630 2501 1877 2630 3130 2501 1878 2503 2504 2502 1879 2504 2562 2502 1880 2562 2813 2502 1881 2503 2505 2504 1882 2503 2835 2505 1883 2574 2835 2503 1884 2505 2506 2504 1885 2506 3249 2504 1886 2504 3249 2562 1887 2505 2507 2506 1888 2505 2508 2507 1889 2505 2835 2508 1890 2507 2509 2506 1891 2509 2655 2506 1892 2655 3249 2506 1893 2508 2549 2507 1894 2507 3271 2509 1895 2549 3271 2507 1896 2508 2551 2549 1897 2508 2552 2551 1898 2508 2835 2552 1899 2509 2658 2655 1900 2509 2685 2658 1901 2509 3271 2685 1902 2537 2694 2510 1903 2694 3227 2510 1904 2510 3227 3218 1905 2511 3056 3055 1906 2511 3117 3056 1907 3085 3117 2511 1908 2563 2610 2512 1909 2610 2612 2512 1910 2612 3156 2512 1911 2513 3131 2518 1912 2620 2621 2513 1913 2621 3131 2513 1914 2514 3153 2515 1915 2632 2633 2514 1916 2633 3153 2514 1917 2515 2517 2516 1918 2515 2608 2517 1919 2515 3153 2608 1920 2517 2613 2516 1921 2613 2624 2516 1922 2624 2943 2516 1923 2608 2634 2517 1924 2517 3180 2613 1925 2634 3180 2517 1926 2518 2597 2519 1927 2518 3132 2597 1928 3131 3132 2518 1929 2597 2598 2519 1930 2598 2599 2519 1931 2599 3119 2519 1932 2521 2726 2520 1933 2726 3219 2520 1934 2520 3219 3162 1935 2702 3284 2521 1936 2521 3307 2726 1937 3284 3307 2521 1938 2522 2720 2523 1939 2522 2987 2720 1940 2522 3198 2987 1941 2720 2721 2523 1942 2721 2722 2523 1943 2722 3120 2523 1944 2878 3245 2524 1945 2524 3265 3122 1946 3245 3265 2524 1947 2526 2646 2525 1948 2525 2885 2527 1949 2646 2885 2525 1950 2526 2647 2646 1951 2526 2716 2647 1952 2526 3104 2716 1953 2527 3160 2878 1954 2885 2954 2527 1955 2954 3160 2527 1956 2528 2648 2529 1957 2636 3247 2528 1958 2528 3247 2648 1959 2529 2868 2545 1960 2648 2649 2529 1961 2649 2868 2529 1962 2530 3325 2536 1963 2550 2718 2530 1964 2718 3325 2530 1965 2531 2827 2560 1966 2623 2652 2531 1967 2652 2827 2531 1968 2533 2730 2532 1969 2532 3287 2729 1970 2730 3287 2532 1971 2715 3319 2533 1972 2533 3311 2730 1973 2533 3319 3311 1974 2535 2659 2534 1975 2534 3276 2546 1976 2659 3276 2534 1977 2535 2660 2659 1978 2535 2661 2660 1979 2535 3258 2661 1980 3325 3334 2536 1981 3334 3351 2536 1982 2536 3351 3350 1983 2537 2695 2694 1984 2537 2757 2695 1985 2537 3356 2757 1986 2538 2754 2670 1987 2538 2755 2754 1988 2538 3057 2755 1989 2539 2737 2667 1990 2539 2788 2737 1991 2539 2811 2788 1992 2540 3273 3238 1993 2540 3421 3273 1994 3350 3421 2540 1995 2541 2841 2840 1996 2541 2843 2841 1997 2541 3184 2843 1998 2543 2679 2542 1999 2542 3401 2596 2000 2679 3401 2542 2001 2575 2576 2543 2002 2576 2981 2543 2003 2543 2981 2679 2004 3068 3335 2544 2005 3335 3423 2544 2006 2544 3423 3356 2007 2868 2869 2545 2008 2869 3148 2545 2009 3148 3150 2545 2010 2546 2798 2795 2011 2546 2799 2798 2012 2546 3276 2799 2013 2664 3278 2547 2014 2547 2684 2683 2015 2547 3278 2684 2016 2795 2796 2548 2017 2796 2797 2548 2018 2797 2831 2548 2019 2551 2787 2549 2020 2787 3295 2549 2021 2549 3295 3271 2022 2550 2719 2718 2023 2550 2791 2719 2024 2550 2816 2791 2025 2552 2553 2551 2026 2553 2900 2551 2027 2551 2900 2787 2028 2552 2554 2553 2029 2552 3149 2554 2030 2835 3149 2552 2031 2554 2561 2553 2032 2561 2690 2553 2033 2690 2900 2553 2034 2554 2687 2561 2035 2554 2790 2687 2036 2554 3149 2790 2037 2689 2792 2555 2038 2792 2793 2555 2039 2793 2921 2555 2040 2556 2564 2557 2041 2556 2865 2564 2042 2556 2916 2865 2043 2557 2862 2558 2044 2564 2565 2557 2045 2565 2862 2557 2046 2788 2811 2558 2047 2558 2812 2788 2048 2558 2862 2812 2049 2559 2703 2611 2050 2559 2819 2703 2051 2559 3169 2819 2052 2560 2826 2825 2053 2825 2856 2560 2054 2560 2827 2826 2055 2687 2688 2561 2056 2688 3261 2561 2057 2561 3261 2690 2058 2562 2814 2813 2059 2562 2940 2814 2060 2562 3249 2940 2061 2563 2698 2610 2062 2563 2864 2698 2063 2563 3264 2864 2064 2564 2614 2565 2065 2564 3204 2614 2066 2865 3204 2564 2067 2614 2672 2565 2068 2672 2760 2565 2069 2760 2862 2565 2070 2567 3035 2566 2071 2566 2851 2571 2072 2566 3035 2851 2073 2609 2860 2567 2074 2860 3189 2567 2075 2567 3189 3035 2076 2944 3128 2568 2077 2568 3266 2944 2078 3193 3266 2568 2079 2569 3098 2961 2080 2961 3124 2569 2081 3061 3098 2569 2082 2945 2946 2570 2083 2946 3233 2570 2084 2570 3233 3202 2085 2851 2892 2571 2086 2892 3096 2571 2087 2571 3096 2973 2088 2572 3192 2987 2089 2987 3231 2572 2090 2572 3231 3195 2091 2844 2845 2573 2092 2573 2971 2844 2093 2845 2846 2573 2094 2574 3149 2835 2095 2574 3140 2876 2096 2876 3149 2574 2097 2575 2577 2576 2098 2575 3078 2577 2099 2986 3078 2575 2100 2577 2578 2576 2101 2578 2678 2576 2102 2678 2981 2576 2103 2577 2592 2578 2104 2577 2942 2592 2105 2577 3078 2942 2106 2592 2593 2578 2107 2593 3062 2578 2108 2578 3062 2678 2109 2910 2911 2579 2110 2579 2978 2910 2111 2911 3110 2579 2112 2580 3041 3040 2113 2580 3043 3041 2114 2580 3072 3043 2115 2581 2583 2582 2116 2581 2934 2583 2117 2581 2968 2934 2118 2583 2584 2582 2119 2584 2585 2582 2120 2585 3206 2582 2121 2583 2923 2584 2122 2583 2924 2923 2123 2583 2934 2924 2124 2584 2586 2585 2125 2584 2587 2586 2126 2584 2923 2587 2127 2586 3105 2585 2128 3105 3225 2585 2129 2585 3225 3206 2130 2587 2588 2586 2131 2588 2591 2586 2132 2591 3105 2586 2133 2587 2589 2588 2134 2587 2691 2589 2135 2587 2923 2691 2136 2589 2590 2588 2137 2590 3197 2588 2138 2588 3197 2591 2139 2589 3036 2590 2140 2691 2692 2589 2141 2692 3036 2589 2142 3036 3301 2590 2143 2590 3292 3197 2144 2590 3301 3292 2145 2591 3106 3105 2146 2591 3151 3106 2147 2591 3197 3151 2148 2592 2594 2593 2149 2592 3083 2594 2150 2942 3083 2592 2151 2594 2595 2593 2152 2595 2677 2593 2153 2677 3062 2593 2154 2594 3172 2595 2155 3083 3145 2594 2156 3145 3172 2594 2157 2595 2741 2677 2158 2595 3168 2741 2159 2595 3172 3168 2160 3045 3046 2596 2161 2596 3366 3045 2162 2596 3401 3366 2163 2597 3170 2598 2164 2597 3132 3112 2165 3112 3170 2597 2166 2598 2600 2599 2167 2598 2601 2600 2168 2598 3170 2601 2169 2600 2602 2599 2170 2602 2949 2599 2171 2949 3119 2599 2172 2601 3175 2600 2173 2600 2619 2602 2174 2600 3175 2619 2175 2601 3173 3033 2176 3033 3175 2601 2177 3170 3173 2601 2178 2619 2917 2602 2179 2917 3141 2602 2180 2602 3141 2949 2181 2603 2680 2604 2182 2603 3087 2680 2183 2603 3107 3087 2184 2680 2681 2604 2185 2681 2682 2604 2186 2682 3157 2604 2187 2988 3117 2605 2188 2605 3155 2988 2189 2605 3117 3085 2190 2607 2696 2606 2191 2696 3227 2606 2192 2606 3227 3221 2193 2607 2697 2696 2194 2607 2699 2697 2195 2607 3096 2699 2196 2608 3009 2634 2197 2608 3011 3009 2198 2608 3153 3011 2199 2609 3214 2860 2200 3082 3201 2609 2201 3201 3214 2609 2202 2610 3144 2612 2203 2698 2858 2610 2204 2858 3144 2610 2205 2611 2653 2630 2206 2611 3281 2653 2207 2703 3281 2611 2208 2836 3156 2612 2209 2612 3161 2836 2210 3144 3161 2612 2211 2613 2712 2624 2212 2613 3166 2712 2213 2613 3180 3166 2214 2614 2673 2672 2215 2614 3200 2673 2216 2614 3204 3200 2217 2615 2870 2816 2218 2836 2837 2615 2219 2837 2870 2615 2220 2616 2618 2617 2221 2616 3142 2618 2222 3138 3142 2616 2223 2618 2775 2617 2224 2775 2776 2617 2225 2776 3241 2617 2226 2618 2850 2775 2227 2618 3250 2850 2228 3142 3250 2618 2229 2619 2918 2917 2230 2619 3220 2918 2231 3175 3220 2619 2232 2620 2622 2621 2233 2620 3113 2622 2234 2620 3135 3113 2235 2622 2952 2621 2236 2952 3133 2621 2237 2621 3133 3131 2238 2622 2953 2952 2239 2622 3252 2953 2240 3113 3252 2622 2241 2623 2656 2652 2242 2623 3160 2656 2243 3116 3160 2623 2244 2712 3147 2624 2245 2624 3199 2943 2246 3147 3199 2624 2247 2625 2627 2626 2248 2625 3239 2627 2249 3191 3239 2625 2250 2627 2628 2626 2251 2628 2629 2626 2252 2629 2857 2626 2253 2627 2731 2628 2254 2627 2732 2731 2255 2627 3239 2732 2256 2628 2733 2629 2257 2731 2794 2628 2258 2628 2794 2733 2259 2733 2734 2629 2260 2734 3242 2629 2261 2629 3242 2857 2262 2653 3284 2630 2263 2630 3256 3130 2264 2630 3284 3256 2265 2631 3094 2912 2266 2912 3182 2631 2267 2631 3182 3167 2268 2632 2637 2633 2269 2632 3162 2637 2270 3024 3162 2632 2271 2637 2874 2633 2272 2874 3244 2633 2273 2633 3244 3153 2274 3009 3010 2634 2275 3010 3233 2634 2276 2634 3233 3180 2277 2893 2894 2635 2278 2894 3245 2635 2279 2635 3245 3116 2280 3228 3229 2636 2281 3229 3262 2636 2282 2636 3262 3247 2283 2637 3023 2874 2284 2637 3219 3023 2285 3162 3219 2637 2286 2639 3073 2638 2287 3073 3211 2638 2288 2638 3211 3178 2289 2640 2641 2639 2290 2641 2643 2639 2291 2643 3073 2639 2292 2640 2642 2641 2293 2640 3207 2642 2294 3159 3207 2640 2295 2642 2935 2641 2296 2641 2644 2643 2297 2641 2935 2644 2298 2642 2936 2935 2299 2642 2937 2936 2300 2642 3207 2937 2301 2644 2815 2643 2302 2815 2838 2643 2303 2838 3073 2643 2304 2644 2880 2815 2305 2644 2881 2880 2306 2644 2935 2881 2307 2700 2701 2645 2308 2701 3285 2645 2309 2645 3285 3217 2310 2647 3222 2646 2311 2646 3283 2885 2312 3222 3283 2646 2313 2716 2717 2647 2314 2717 3223 2647 2315 2647 3223 3222 2316 2648 2654 2649 2317 2648 3268 2654 2318 3247 3268 2648 2319 2654 2668 2649 2320 2668 2758 2649 2321 2758 2868 2649 2322 2650 2769 2665 2323 2650 3273 2769 2324 3238 3273 2650 2325 2663 3320 2651 2326 2651 3321 3316 2327 3320 3321 2651 2328 2656 3302 2652 2329 2652 3314 2827 2330 3302 3314 2652 2331 2653 3281 3127 2332 3127 3307 2653 2333 2653 3307 3284 2334 2654 2669 2668 2335 2654 3291 2669 2336 3268 3291 2654 2337 2658 3304 2655 2338 2655 3294 3249 2339 2655 3304 3294 2340 2656 3160 2954 2341 2954 3308 2656 2342 2656 3308 3302 2343 2657 3310 3194 2344 3287 3310 2657 2345 2657 3316 3287 2346 2685 2686 2658 2347 2686 3313 2658 2348 2658 3313 3304 2349 2660 3326 2659 2350 2659 3328 3276 2351 3326 3328 2659 2352 2661 2662 2660 2353 2662 2866 2660 2354 2866 3326 2660 2355 2661 3311 2662 2356 3258 3315 2661 2357 2661 3315 3311 2358 2662 2867 2866 2359 2662 3319 2867 2360 3311 3319 2662 2361 2825 2826 2663 2362 2826 3318 2663 2363 3318 3320 2663 2364 2896 2897 2664 2365 2897 2898 2664 2366 2898 3278 2664 2367 2665 2761 2666 2368 2665 3407 2761 2369 2769 3407 2665 2370 2761 2762 2666 2371 2762 2809 2666 2372 2809 2972 2666 2373 2667 2997 2728 2374 2737 2759 2667 2375 2759 2997 2667 2376 2669 2752 2668 2377 2752 3348 2668 2378 2668 3348 2758 2379 2669 2753 2752 2380 2669 3296 2753 2381 3291 3296 2669 2382 2670 2750 2671 2383 2670 3346 2750 2384 2754 3346 2670 2385 2750 2751 2671 2386 2751 3095 2671 2387 2671 3095 3091 2388 2673 2764 2672 2389 2672 3370 2760 2390 2764 3370 2672 2391 2673 2765 2764 2392 2673 2766 2765 2393 2673 3200 2766 2394 2674 3360 2738 2395 2805 2806 2674 2396 2806 3360 2674 2397 2846 2847 2675 2398 2847 3361 2675 2399 2675 3361 2947 2400 3040 3042 2676 2401 3042 3402 2676 2402 2676 3402 3057 2403 2741 3387 2677 2404 2677 3388 3062 2405 3387 3388 2677 2406 2678 3390 2981 2407 3062 3389 2678 2408 3389 3390 2678 2409 2981 3391 2679 2410 2679 3391 3362 2411 3362 3401 2679 2412 2680 3352 2681 2413 2680 3087 2969 2414 2969 3352 2680 2415 2681 3343 2682 2416 2681 3100 2991 2417 2991 3343 2681 2418 2681 3352 3100 2419 2682 3171 3157 2420 2682 3422 3171 2421 3343 3422 2682 2422 2684 2771 2683 2423 2771 2774 2683 2424 2774 3250 2683 2425 2684 2772 2771 2426 2684 2773 2772 2427 2684 3278 2773 2428 2685 2783 2686 2429 2685 2784 2783 2430 2685 3271 2784 2431 2783 2789 2686 2432 2789 3306 2686 2433 3306 3313 2686 2434 2687 2780 2688 2435 2687 3123 2780 2436 2790 3123 2687 2437 2780 2781 2688 2438 2781 3280 2688 2439 2688 3280 3261 2440 2689 2861 2792 2441 2689 3259 2861 2442 3211 3259 2689 2443 2690 3186 2900 2444 3129 3186 2690 2445 2690 3261 3129 2446 2691 2807 2692 2447 2691 2830 2807 2448 2691 2923 2830 2449 2807 2808 2692 2450 2808 3187 2692 2451 2692 3187 3036 2452 2693 2856 2825 2453 2693 3255 2856 2454 3090 3255 2693 2455 2695 2914 2694 2456 2914 3221 2694 2457 3221 3227 2694 2458 2757 3353 2695 2459 2695 2915 2914 2460 2695 3353 2915 2461 2697 3026 2696 2462 3026 3218 2696 2463 3218 3227 2696 2464 2699 2848 2697 2465 2848 2849 2697 2466 2849 3026 2697 2467 2698 2912 2858 2468 2864 3182 2698 2469 2698 3182 2912 2470 2699 3052 2848 2471 2892 3052 2699 2472 2699 3096 2892 2473 2700 2828 2701 2474 2700 2839 2828 2475 2700 3102 2839 2476 2828 2829 2701 2477 2829 3282 2701 2478 3282 3285 2701 2479 2702 3217 2817 2480 2817 3256 2702 2481 3256 3284 2702 2482 2819 3235 2703 2483 3235 3293 2703 2484 2703 3293 3281 2485 2860 3165 2704 2486 2704 3189 2860 2487 3137 3189 2704 2488 2706 3084 2705 2489 2705 3196 2920 2490 3084 3196 2705 2491 2707 2708 2706 2492 2708 2852 2706 2493 2852 3084 2706 2494 2707 2763 2708 2495 2707 3148 2763 2496 2707 3150 3148 2497 2763 3358 2708 2498 2708 2853 2852 2499 2708 3358 2853 2500 2982 3132 2709 2501 2709 3132 3131 2502 3131 3133 2709 2503 2711 3172 2710 2504 2710 3145 3103 2505 2710 3172 3145 2506 3168 3172 2711 2507 2711 3213 3168 2508 3188 3213 2711 2509 2712 3154 3147 2510 2712 3163 3154 2511 2712 3166 3163 2512 2714 3188 2713 2513 2713 3139 3118 2514 2713 3188 3139 2515 2947 2948 2714 2516 2948 3213 2714 2517 2714 3213 3188 2518 2882 3267 2715 2519 3267 3327 2715 2520 2715 3327 3319 2521 2716 3225 2717 2522 3104 3206 2716 2523 3206 3225 2716 2524 2717 3236 3223 2525 3225 3248 2717 2526 2717 3248 3236 2527 2719 3317 2718 2528 3317 3330 2718 2529 2718 3330 3325 2530 2791 3190 2719 2531 3190 3324 2719 2532 2719 3324 3317 2533 2720 3063 2721 2534 2987 3192 2720 2535 2720 3192 3063 2536 2721 2723 2722 2537 2721 2725 2723 2538 2721 3063 2725 2539 2723 2724 2722 2540 2724 2820 2722 2541 2820 3120 2722 2542 2723 2777 2724 2543 2725 3029 2723 2544 2723 3029 2777 2545 2777 2778 2724 2546 2778 2779 2724 2547 2779 2820 2724 2548 2725 3329 3029 2549 3063 3226 2725 2550 3226 3329 2725 2551 3126 3260 2726 2552 2726 3307 3126 2553 2726 3260 3219 2554 2727 3277 3270 2555 2727 3324 3277 2556 3317 3324 2727 2557 2997 3334 2728 2558 3325 3330 2728 2559 2728 3334 3325 2560 2729 3321 2855 2561 3287 3316 2729 2562 3316 3321 2729 2563 2730 3310 3287 2564 2730 3315 3310 2565 3311 3315 2730 2566 2732 2735 2731 2567 2735 3410 2731 2568 2731 3410 2794 2569 2732 2736 2735 2570 2732 3272 2736 2571 3239 3272 2732 2572 2733 2742 2734 2573 2733 3373 2742 2574 2794 3373 2733 2575 2742 2743 2734 2576 2743 2744 2734 2577 2744 3242 2734 2578 2736 3357 2735 2579 2735 3357 2992 2580 2736 3297 3038 2581 3038 3357 2736 2582 3272 3297 2736 2583 2737 2770 2759 2584 2737 3372 2770 2585 2788 3372 2737 2586 2738 2740 2739 2587 2738 3377 2740 2588 3360 3377 2738 2589 2740 3298 2739 2590 2739 3299 3288 2591 3298 3299 2739 2592 3185 3298 2740 2593 2740 3379 3185 2594 3377 3379 2740 2595 3168 3254 2741 2596 3254 3386 2741 2597 3386 3387 2741 2598 2742 3347 2743 2599 3012 3347 2742 2600 2743 2745 2744 2601 2743 2871 2745 2602 2743 3347 2871 2603 2745 2746 2744 2604 2746 3081 2744 2605 3081 3242 2744 2606 2745 2747 2746 2607 2745 2749 2747 2608 2745 2871 2749 2609 2747 2748 2746 2610 2748 2803 2746 2611 2803 3081 2746 2612 2747 3376 2748 2613 2749 3375 2747 2614 3375 3376 2747 2615 2748 2804 2803 2616 2748 3378 2804 2617 3376 3378 2748 2618 2871 2872 2749 2619 2872 3374 2749 2620 3374 3375 2749 2621 2750 3341 2751 2622 2750 3346 3047 2623 3069 3095 2751 2624 2751 3420 3069 2625 3341 3420 2751 2626 2753 3342 2752 2627 3066 3348 2752 2628 3296 3300 2753 2629 3300 3419 2753 2630 2753 3419 3342 2631 2755 2756 2754 2632 2756 3425 2754 2633 2754 3425 3346 2634 2755 3394 2756 2635 3057 3393 2755 2636 3393 3394 2755 2637 3340 3368 2756 2638 2756 3394 3340 2639 3368 3425 2756 2640 3002 3353 2757 2641 2757 3356 3003 2642 2758 3371 2868 2643 3099 3371 2758 2644 2770 3408 2759 2645 2760 3349 2862 2646 2760 3370 3088 2647 2761 3354 2762 2648 2761 3407 2993 2649 2762 3297 2809 2650 3038 3297 2762 2651 2762 3354 3038 2652 3148 3411 2763 2653 2763 3427 3358 2654 3411 3427 2763 2655 2765 2768 2764 2656 2766 2767 2765 2657 2767 3303 2765 2658 2765 3303 2768 2659 2766 3275 2767 2660 3200 3253 2766 2661 3253 3275 2766 2662 2767 3237 2877 2663 2877 3303 2767 2664 2767 3275 3237 2665 3273 3413 2769 2666 2772 2818 2771 2667 2772 3337 2818 2668 2774 3018 2850 2669 2850 3250 2774 2670 2775 2995 2776 2671 2996 3241 2776 2672 2777 3029 3028 2673 2778 2786 2779 2674 2778 3019 2786 2675 2786 3289 2779 2676 2779 2821 2820 2677 2779 3289 2821 2678 2780 2782 2781 2679 2782 3289 2781 2680 2985 3280 2781 2681 2781 3289 2985 2682 2782 3177 2821 2683 2821 3289 2782 2684 2783 3067 2789 2685 2784 3295 2785 2686 3271 3295 2784 2687 2785 3295 3209 2688 2985 3289 2786 2689 3209 3295 2787 2690 2812 3372 2788 2691 3251 3306 2789 2692 2790 3149 2876 2693 2816 2870 2791 2694 2792 2822 2793 2695 2822 3290 2793 2696 2793 2922 2921 2697 2793 3290 2922 2698 2994 3373 2794 2699 2794 3410 2994 2700 2795 2802 2796 2701 2798 2802 2795 2702 2796 3344 2797 2703 2797 2833 2831 2704 2797 2834 2833 2705 2797 3344 2834 2706 2799 2800 2798 2707 2799 2801 2800 2708 2799 3331 2801 2709 3276 3331 2799 2710 3331 3332 2801 2711 3332 3336 2801 2712 2913 3081 2803 2713 2804 3395 2805 2714 3378 3395 2804 2715 2805 3395 2806 2716 2806 3399 3360 2717 2806 3395 3364 2718 3364 3399 2806 2719 2807 2832 2808 2720 2832 3243 2808 2721 2808 3232 3187 2722 2808 3243 3232 2723 2809 3297 2810 2724 2810 3297 3272 2725 2862 3349 2812 2726 2812 3349 2989 2727 2814 3263 2813 2728 2813 3263 3169 2729 2814 2940 2902 2730 2902 3115 2814 2731 3115 3263 2814 2732 2815 3070 2838 2733 3217 3285 2817 2734 3169 3263 2819 2735 2823 2824 2822 2736 2824 3290 2822 2737 2823 3060 2824 2738 3060 3183 2824 2739 3183 3312 2824 2740 2824 3312 3290 2741 2827 3322 2826 2742 2826 3322 3318 2743 3314 3322 2827 2744 2828 2944 2829 2745 2944 3266 2829 2746 3266 3279 2829 2747 3279 3282 2829 2748 2923 2924 2830 2749 2924 3176 2830 2750 2834 2877 2833 2751 2877 3237 2833 2752 2834 3359 2877 2753 2834 3114 3089 2754 3089 3359 2834 2755 2834 3344 3114 2756 2836 3161 2837 2757 2837 2884 2870 2758 2837 3143 2884 2759 2837 3161 3143 2760 2838 3259 3073 2761 3102 3146 2839 2762 2841 2842 2840 2763 2842 2844 2840 2764 2841 3383 2842 2765 2843 3381 2841 2766 3381 3383 2841 2767 2842 2845 2844 2768 2842 3385 2845 2769 3383 3385 2842 2770 3184 3185 2843 2771 3185 3380 2843 2772 3380 3381 2843 2773 2845 3396 2846 2774 3385 3396 2845 2775 2846 3396 2847 2776 2847 3400 3361 2777 2847 3396 3365 2778 3365 3400 2847 2779 2848 3071 2849 2780 2849 3071 2930 2781 2930 3158 2849 2782 2849 3158 3026 2783 2851 3035 3034 2784 2853 2854 2852 2785 2853 3345 2854 2786 2853 3074 3022 2787 3022 3345 2853 2788 2853 3358 3074 2789 2854 2897 2896 2790 2854 3345 2897 2791 2855 3321 3179 2792 2883 3144 2858 2793 3294 3304 2859 2794 2860 3214 3165 2795 3237 3275 2863 2796 2864 3264 3240 2797 2899 3204 2865 2798 2867 3323 2866 2799 3305 3323 2867 2800 2867 3327 3305 2801 3319 3327 2867 2802 2868 3371 2869 2803 2869 3411 3148 2804 2871 3426 2872 2805 3347 3426 2871 2806 2872 3369 3339 2807 3339 3374 2872 2808 2872 3426 3369 2809 3023 3260 2873 2810 3230 3244 2874 2811 2876 3140 2875 2812 2877 3359 3303 2813 2878 3160 3116 2814 3116 3245 2878 2815 2880 3000 2879 2816 2881 3000 2880 2817 2935 2938 2881 2818 2885 3274 2954 2819 2885 3283 3274 2820 2887 2888 2886 2821 2888 2951 2886 2822 2887 2889 2888 2823 2887 2890 2889 2824 2887 3205 2890 2825 2889 2891 2888 2826 2891 3216 2888 2827 2888 3216 2951 2828 2890 3234 2889 2829 2889 3229 2891 2830 2889 3234 3229 2831 2890 3224 3080 2832 3080 3234 2890 2833 3205 3224 2890 2834 2891 3229 3228 2835 2895 3265 2894 2836 2894 3265 3245 2837 3212 3265 2895 2838 2934 2968 2901 2839 2968 2990 2901 2840 2904 3109 2903 2841 2905 2906 2904 2842 2906 2908 2904 2843 2908 3109 2904 2844 2905 2907 2906 2845 2905 3257 2907 2846 3210 3257 2905 2847 2907 3292 2906 2848 2906 2909 2908 2849 2906 3292 2909 2850 3151 3197 2907 2851 2907 3257 3151 2852 3197 3292 2907 2853 2909 2910 2908 2854 2909 2911 2910 2855 2909 3301 2911 2856 3292 3301 2909 2857 2911 3309 3110 2858 3301 3309 2911 2859 2915 3108 2914 2860 2967 3108 2915 2861 2919 3141 2917 2862 2918 3174 3001 2863 2918 3220 3174 2864 3014 3141 2919 2865 2922 3299 2921 2866 3288 3299 2922 2867 2925 3427 3411 2868 2926 3379 3377 2869 3203 3279 2927 2870 2928 3056 2929 2871 2979 3056 2928 2872 2929 2988 2930 2873 2929 3117 2988 2874 3056 3117 2929 2875 2988 3158 2930 2876 3030 3031 2931 2877 3031 3076 2931 2878 2932 3199 2933 2879 2932 3215 3199 2880 2933 3199 3147 2881 2936 2938 2935 2882 2937 3252 2936 2883 2936 2939 2938 2884 2936 3252 2939 2885 2937 3208 2953 2886 2953 3252 2937 2887 3207 3208 2937 2888 2939 2958 2938 2889 2939 3252 3113 2890 3249 3294 2940 2891 2941 3283 3222 2892 3007 3083 2942 2893 3199 3215 2943 2894 3166 3180 2946 2895 3180 3233 2946 2896 2947 3382 2948 2897 3361 3382 2947 2898 2948 3254 3213 2899 2948 3384 3254 2900 3382 3384 2948 2901 3015 3119 2949 2902 2950 3065 3064 2903 2950 3342 3065 2904 2983 3133 2952 2905 3274 3308 2954 2906 2955 2957 2956 2907 2955 3053 2957 2908 2957 3173 2956 2909 2956 3170 3112 2910 2956 3173 3170 2911 3101 3173 2957 2912 2960 2961 2959 2913 2961 3098 2959 2914 2960 2962 2961 2915 2960 3201 2962 2916 2960 3214 3201 2917 2962 3124 2961 2918 2962 3201 3136 2919 2963 2965 2964 2920 2963 3108 2965 2921 2965 2966 2964 2922 2966 2969 2964 2923 2969 3087 2964 2924 2965 3108 2967 2925 2970 3098 3061 2926 2974 3413 2975 2927 2975 3421 2976 2928 2975 3413 3273 2929 3273 3421 2975 2930 2976 3424 3079 2931 3350 3351 2976 2932 2976 3421 3350 2933 3351 3424 2976 2934 2977 3388 3387 2935 3055 3056 2979 2936 2980 3296 3291 2937 3390 3391 2981 2938 3112 3132 2982 2939 2984 3280 2985 2940 3077 3078 2986 2941 3198 3231 2987 2942 3155 3158 2988 2943 3226 3241 2996 2944 2996 3329 3226 2945 3246 3329 2996 2946 2998 3334 2997 2947 2998 3351 3334 2948 2998 3424 3351 2949 3355 3424 2998 2950 2999 3378 3376 2951 3003 3005 3004 2952 3003 3423 3005 2953 3356 3423 3003 2954 3005 3335 3006 2955 3005 3423 3335 2956 3006 3341 3333 2957 3335 3420 3006 2958 3006 3420 3341 2959 3362 3391 3008 2960 3011 3164 3009 2961 3093 3202 3010 2962 3202 3233 3010 2963 3153 3244 3011 2964 3075 3384 3013 2965 3013 3384 3382 2966 3016 3231 3017 2967 3195 3231 3016 2968 3017 3231 3198 2969 3020 3314 3302 2970 3247 3262 3021 2971 3021 3268 3247 2972 3219 3260 3023 2973 3025 3328 3326 2974 3027 3394 3393 2975 3030 3032 3031 2976 3032 3033 3031 2977 3033 3101 3031 2978 3031 3101 3076 2979 3032 3175 3033 2980 3032 3220 3175 2981 3033 3173 3101 2982 3187 3309 3036 2983 3036 3309 3301 2984 3038 3354 3037 2985 3091 3095 3039 2986 3041 3367 3040 2987 3040 3367 3042 2988 3043 3044 3041 2989 3044 3392 3041 2990 3041 3392 3367 2991 3042 3398 3363 2992 3363 3402 3042 2993 3367 3398 3042 2994 3043 3045 3044 2995 3045 3366 3044 2996 3366 3397 3044 2997 3044 3397 3392 2998 3048 3397 3049 2999 3050 3397 3048 3000 3049 3401 3362 3001 3049 3397 3366 3002 3366 3401 3049 3003 3392 3397 3050 3004 3054 3390 3389 3005 3057 3402 3393 3006 3058 3385 3383 3007 3171 3338 3059 3008 3059 3338 3300 3009 3388 3389 3062 3010 3065 3111 3064 3011 3065 3338 3111 3012 3065 3419 3338 3013 3342 3419 3065 3014 3069 3335 3068 3015 3069 3420 3335 3016 3073 3259 3211 3017 3075 3386 3384 3018 3079 3424 3355 3019 3136 3201 3082 3020 3223 3236 3086 3021 3318 3322 3092 3022 3097 3381 3380 3023 3106 3248 3105 3024 3105 3248 3225 3025 3151 3286 3106 3026 3106 3269 3248 3027 3106 3286 3269 3028 3338 3422 3111 3029 3111 3422 3343 3030 3121 3308 3274 3031 3122 3265 3212 3032 3126 3127 3125 3033 3126 3307 3127 3034 3269 3286 3134 3035 3257 3286 3151 3036 3152 3375 3374 3037 3213 3254 3168 3038 3171 3422 3338 3039 3179 3321 3320 3040 3181 3313 3306 3041 3184 3298 3185 3042 3379 3380 3185 3043 3203 3282 3279 3044 3234 3262 3229 3045 3248 3269 3236 3046 3384 3386 3254 3047 3328 3331 3276 3048 3338 3419 3300 2 5 2 300 3049 2 82 3536 3050 161 2 3536 3051 84 4 3533 3052 4 231 3533 3053 158 6 3535 3054 6 195 3535 3055 8 160 3534 3056 265 8 3534 3057 82 83 3532 3058 82 3532 3536 3059 83 84 3457 3060 83 3457 3532 3061 3457 84 3533 3062 159 158 3531 3063 3531 158 3535 3064 160 159 3458 3065 3458 159 3531 3066 160 3458 3534 3067 162 161 3444 3068 3444 161 3536 3069 163 162 3459 3070 162 3444 3459 3071 164 163 3453 3072 3453 163 3459 3073 165 164 3474 3074 164 3453 3474 3075 166 165 3530 3076 165 3474 3530 3077 167 166 3437 3078 3437 166 3530 3079 168 167 3525 3080 167 3437 3525 3081 169 168 3447 3082 3447 168 3525 3083 170 169 3511 3084 169 3447 3511 3085 171 170 3505 3086 3505 170 3511 3087 172 171 3435 3088 3435 171 3505 3089 173 172 3500 3090 172 3435 3500 3091 174 173 3438 3092 3438 173 3500 3093 175 174 3498 3094 174 3438 3498 3095 176 175 3496 3096 3496 175 3498 3097 177 176 3452 3098 3452 176 3496 3099 178 177 3501 3100 177 3452 3501 3101 179 178 3448 3102 3448 178 3501 3103 180 179 3513 3104 179 3448 3513 3105 181 180 3446 3106 3446 180 3513 3107 182 181 3515 3108 181 3446 3515 3109 183 182 3454 3110 3454 182 3515 3111 184 183 3484 3112 183 3454 3484 3113 185 184 3517 3114 184 3484 3517 3115 186 185 3449 3116 3449 185 3517 3117 187 186 3520 3118 186 3449 3520 3119 188 187 3445 3120 3445 187 3520 3121 189 188 3479 3122 188 3445 3479 3123 190 189 3428 3124 3428 189 3479 3125 191 190 3477 3126 190 3428 3477 3127 192 191 3467 3128 3467 191 3477 3129 193 192 3455 3130 3455 192 3467 3131 194 193 3463 3132 193 3455 3463 3133 195 194 3443 3134 3443 194 3463 3135 195 3443 3535 3136 231 232 3529 3137 231 3529 3533 3138 232 233 3441 3139 232 3441 3529 3140 233 234 3472 3141 3441 233 3472 3142 234 235 3439 3143 234 3439 3472 3144 235 236 3475 3145 3439 235 3475 3146 236 237 3522 3147 3475 236 3522 3148 237 238 3450 3149 237 3450 3522 3150 238 239 3510 3151 3450 238 3510 3152 239 240 3429 3153 239 3429 3510 3154 240 241 3508 3155 3429 240 3508 3156 241 242 3502 3157 241 3502 3508 3158 242 243 3451 3159 242 3451 3502 3160 243 244 3514 3161 3451 243 3514 3162 244 245 3492 3163 244 3492 3514 3164 245 246 3430 3165 245 3430 3492 3166 246 247 3516 3167 3430 246 3516 3168 247 248 3434 3169 247 3434 3516 3170 248 249 3503 3171 3434 248 3503 3172 249 250 3431 3173 249 3431 3503 3174 250 251 3491 3175 3431 250 3491 3176 251 252 3440 3177 251 3440 3491 3178 252 253 3489 3179 3440 252 3489 3180 253 254 3432 3181 253 3432 3489 3182 254 255 3488 3183 3432 254 3488 3184 255 256 3524 3185 3488 255 3524 3186 256 257 3433 3187 256 3433 3524 3188 257 258 3482 3189 3433 257 3482 3190 258 259 3456 3191 258 3456 3482 3192 259 260 3521 3193 3456 259 3521 3194 260 261 3469 3195 260 3469 3521 3196 261 262 3436 3197 261 3436 3469 3198 262 263 3471 3199 3436 262 3471 3200 263 264 3442 3201 263 3442 3471 3202 264 265 3528 3203 3442 264 3528 3204 3528 265 3534 3205 3428 3470 3477 3206 3470 3428 3478 3207 3478 3428 3479 3208 3507 3429 3508 3209 3429 3507 3509 3210 3429 3509 3510 3211 3492 3430 3493 3212 3493 3430 3494 3213 3494 3430 3516 3214 3431 3491 3519 3215 3503 3431 3504 3216 3504 3431 3519 3217 3485 3432 3486 3218 3432 3485 3489 3219 3486 3432 3488 3220 3481 3433 3482 3221 3433 3481 3483 3222 3433 3483 3524 3223 3434 3497 3516 3224 3497 3434 3523 3225 3434 3503 3523 3226 3500 3435 3518 3227 3435 3505 3506 3228 3435 3506 3518 3229 3436 3466 3468 3230 3466 3436 3471 3231 3436 3468 3469 3232 3437 3476 3527 3233 3476 3437 3530 3234 3525 3437 3527 3235 3438 3495 3498 3236 3495 3438 3499 3237 3499 3438 3500 3238 3439 3462 3472 3239 3462 3439 3473 3240 3473 3439 3475 3241 3487 3440 3489 3242 3440 3487 3490 3243 3440 3490 3491 3244 3460 3441 3461 3245 3441 3460 3529 3246 3461 3441 3472 3247 3442 3464 3465 3248 3464 3442 3528 3249 3442 3465 3471 3250 3443 3463 3464 3251 3443 3464 3537 3252 3443 3531 3535 3253 3531 3443 3537 3254 3459 3444 3460 3255 3460 3444 3538 3256 3532 3444 3536 3257 3444 3532 3538 3258 3479 3445 3480 3259 3480 3445 3481 3260 3481 3445 3520 3261 3446 3490 3515 3262 3490 3446 3519 3263 3446 3513 3519 3264 3447 3509 3511 3265 3509 3447 3512 3266 3512 3447 3525 3267 3448 3501 3523 3268 3448 3504 3513 3269 3504 3448 3523 3270 3449 3483 3520 3271 3483 3449 3526 3272 3449 3517 3526 3273 3450 3510 3512 3274 3450 3512 3527 3275 3522 3450 3527 3276 3499 3451 3514 3277 3451 3499 3518 3278 3502 3451 3518 3279 3494 3452 3496 3280 3452 3494 3497 3281 3452 3497 3501 3282 3453 3459 3461 3283 3453 3461 3462 3284 3453 3462 3474 3285 3484 3454 3485 3286 3485 3454 3487 3287 3487 3454 3515 3288 3463 3455 3465 3289 3465 3455 3466 3290 3466 3455 3467 3291 3456 3478 3480 3292 3478 3456 3521 3293 3456 3480 3482 3294 3529 3457 3533 3295 3457 3529 3538 3296 3532 3457 3538 3297 3458 3528 3534 3298 3528 3458 3537 3299 3458 3531 3537 3300 3459 3460 3461 3301 3529 3460 3538 3302 3462 3461 3472 3303 3462 3473 3474 3304 3464 3463 3465 3305 3464 3528 3537 3306 3465 3466 3471 3307 3466 3467 3468 3308 3468 3467 3477 3309 3469 3468 3470 3310 3470 3468 3477 3311 3469 3470 3521 3312 3470 3478 3521 3313 3474 3473 3530 3314 3473 3475 3476 3315 3473 3476 3530 3316 3476 3475 3522 3317 3476 3522 3527 3318 3478 3479 3480 3319 3480 3481 3482 3320 3483 3481 3520 3321 3524 3483 3526 3322 3484 3485 3486 3323 3484 3486 3517 3324 3485 3487 3489 3325 3486 3488 3526 3326 3517 3486 3526 3327 3490 3487 3515 3328 3488 3524 3526 3329 3491 3490 3519 3330 3492 3493 3495 3331 3492 3495 3514 3332 3493 3494 3496 3333 3495 3493 3498 3334 3493 3496 3498 3335 3497 3494 3516 3336 3495 3499 3514 3337 3501 3497 3523 3338 3499 3500 3518 3339 3502 3506 3508 3340 3506 3502 3518 3341 3503 3504 3523 3342 3513 3504 3519 3343 3506 3505 3507 3344 3507 3505 3511 3345 3506 3507 3508 3346 3509 3507 3511 3347 3510 3509 3512 3348 3512 3525 3527 2 6 2 300 3349 1 3647 44 3350 196 3647 1 3351 46 3644 3 3352 3 3644 266 3353 120 3645 5 3354 5 3645 230 3355 7 3646 122 3356 300 3646 7 3357 44 3641 45 3358 44 3647 3641 3359 45 3566 46 3360 45 3641 3566 3361 3566 3644 46 3362 121 3565 120 3363 3565 3645 120 3364 122 3640 121 3365 121 3640 3565 3366 122 3646 3640 3367 197 3555 196 3368 3555 3647 196 3369 198 3569 197 3370 197 3569 3555 3371 199 3562 198 3372 3562 3569 198 3373 200 3582 199 3374 199 3582 3562 3375 201 3638 200 3376 200 3638 3582 3377 202 3548 201 3378 3548 3638 201 3379 203 3633 202 3380 202 3633 3548 3381 204 3558 203 3382 3558 3633 203 3383 205 3624 204 3384 204 3624 3558 3385 206 3618 205 3386 3618 3624 205 3387 207 3546 206 3388 3546 3618 206 3389 208 3607 207 3390 207 3607 3546 3391 209 3549 208 3392 3549 3607 208 3393 210 3601 209 3394 209 3601 3549 3395 211 3567 210 3396 3567 3601 210 3397 212 3603 211 3398 211 3603 3567 3399 213 3545 212 3400 3545 3603 212 3401 214 3608 213 3402 213 3608 3545 3403 215 3542 214 3404 3542 3608 214 3405 216 3613 215 3406 215 3613 3542 3407 217 3614 216 3408 216 3614 3613 3409 218 3563 217 3410 3563 3614 217 3411 219 3632 218 3412 218 3632 3563 3413 220 3594 219 3414 3594 3632 219 3415 221 3559 220 3416 3559 3594 220 3417 222 3590 221 3418 221 3590 3559 3419 223 3556 222 3420 3556 3590 222 3421 224 3596 223 3422 223 3596 3556 3423 225 3539 224 3424 3539 3596 224 3425 226 3643 225 3426 225 3643 3539 3427 227 3568 226 3428 3568 3643 226 3429 228 3576 227 3430 227 3576 3568 3431 229 3553 228 3432 3553 3576 228 3433 230 3636 229 3434 229 3636 3553 3435 230 3645 3636 3436 266 3637 267 3437 266 3644 3637 3438 267 3552 268 3439 267 3637 3552 3440 268 3580 269 3441 3552 3580 268 3442 269 3550 270 3443 269 3580 3550 3444 270 3583 271 3445 3550 3583 270 3446 271 3630 272 3447 3583 3630 271 3448 272 3560 273 3449 272 3630 3560 3450 273 3623 274 3451 3560 3623 273 3452 274 3540 275 3453 274 3623 3540 3454 275 3621 276 3455 3540 3621 275 3456 276 3616 277 3457 276 3621 3616 3458 277 3561 278 3459 277 3616 3561 3460 278 3626 279 3461 3561 3626 278 3462 279 3597 280 3463 279 3626 3597 3464 280 3541 281 3465 280 3597 3541 3466 281 3606 282 3467 3541 3606 281 3468 282 3627 283 3469 3606 3627 282 3470 283 3557 284 3471 283 3627 3557 3472 284 3617 285 3473 3557 3617 284 3474 285 3609 286 3475 285 3617 3609 3476 286 3551 287 3477 286 3609 3551 3478 287 3615 288 3479 3551 3615 287 3480 288 3543 289 3481 288 3615 3543 3482 289 3639 290 3483 3543 3639 289 3484 290 3593 291 3485 290 3639 3593 3486 291 3544 292 3487 291 3593 3544 3488 292 3587 293 3489 3544 3587 292 3490 293 3564 294 3491 293 3587 3564 3492 294 3634 295 3493 3564 3634 294 3494 295 3579 296 3495 295 3634 3579 3496 296 3547 297 3497 296 3579 3547 3498 297 3585 298 3499 3547 3585 297 3500 298 3573 299 3501 298 3585 3573 3502 299 3554 300 3503 299 3573 3554 3504 3554 3646 300 3505 3586 3642 3539 3506 3539 3643 3586 3507 3539 3642 3596 3508 3620 3621 3540 3509 3540 3622 3620 3510 3540 3623 3622 3511 3597 3598 3541 3512 3598 3599 3541 3513 3599 3606 3541 3514 3542 3631 3608 3515 3542 3613 3611 3516 3611 3631 3542 3517 3543 3629 3595 3518 3595 3639 3543 3519 3615 3629 3543 3520 3544 3588 3587 3521 3544 3589 3588 3522 3544 3593 3589 3523 3545 3604 3603 3524 3545 3605 3604 3525 3545 3608 3605 3526 3607 3628 3546 3527 3546 3619 3618 3528 3546 3628 3619 3529 3547 3578 3577 3530 3577 3585 3547 3531 3547 3579 3578 3532 3548 3635 3584 3533 3584 3638 3548 3534 3633 3635 3548 3535 3549 3601 3600 3536 3600 3602 3549 3537 3602 3607 3549 3538 3550 3580 3572 3539 3572 3581 3550 3540 3581 3583 3550 3541 3609 3610 3551 3542 3610 3612 3551 3543 3612 3615 3551 3544 3570 3571 3552 3545 3552 3637 3570 3546 3571 3580 3552 3547 3574 3575 3553 3548 3553 3636 3574 3549 3575 3576 3553 3550 3573 3574 3554 3551 3574 3649 3554 3552 3640 3646 3554 3553 3554 3649 3640 3554 3569 3570 3555 3555 3570 3648 3555 3556 3641 3647 3555 3557 3555 3648 3641 3558 3588 3590 3556 3559 3556 3592 3588 3560 3556 3596 3592 3561 3557 3627 3605 3562 3605 3631 3557 3563 3557 3631 3617 3564 3558 3624 3622 3565 3622 3625 3558 3566 3625 3633 3558 3567 3559 3590 3589 3568 3589 3591 3559 3569 3591 3594 3559 3570 3560 3625 3623 3571 3560 3635 3625 3572 3630 3635 3560 3573 3602 3626 3561 3574 3561 3628 3602 3575 3616 3628 3561 3576 3562 3571 3569 3577 3562 3572 3571 3578 3562 3582 3572 3579 3612 3614 3563 3580 3563 3629 3612 3581 3563 3632 3629 3582 3587 3592 3564 3583 3592 3642 3564 3584 3564 3642 3634 3585 3636 3645 3565 3586 3565 3649 3636 3587 3640 3649 3565 3588 3637 3644 3566 3589 3566 3648 3637 3590 3641 3648 3566 3591 3567 3599 3598 3592 3598 3601 3567 3593 3567 3603 3599 3594 3576 3577 3568 3595 3577 3578 3568 3596 3578 3643 3568 3597 3569 3571 3570 3598 3637 3648 3570 3599 3572 3580 3571 3600 3572 3582 3581 3601 3573 3575 3574 3602 3573 3585 3575 3603 3636 3649 3574 3604 3575 3577 3576 3605 3575 3585 3577 3606 3579 3586 3578 3607 3586 3643 3578 3608 3579 3634 3586 3609 3582 3638 3581 3610 3581 3584 3583 3611 3581 3638 3584 3612 3584 3630 3583 3613 3584 3635 3630 3614 3634 3642 3586 3615 3588 3592 3587 3616 3589 3590 3588 3617 3589 3593 3591 3618 3593 3639 3591 3619 3591 3595 3594 3620 3591 3639 3595 3621 3596 3642 3592 3622 3595 3632 3594 3623 3629 3632 3595 3624 3597 3600 3598 3625 3597 3626 3600 3626 3600 3601 3598 3627 3603 3604 3599 3628 3604 3606 3599 3629 3600 3626 3602 3630 3602 3628 3607 3631 3605 3627 3604 3632 3604 3627 3606 3633 3608 3631 3605 3634 3609 3611 3610 3635 3609 3617 3611 3636 3611 3613 3610 3637 3610 3614 3612 3638 3613 3614 3610 3639 3617 3631 3611 3640 3612 3629 3615 3641 3616 3621 3619 3642 3619 3628 3616 3643 3619 3620 3618 3644 3620 3624 3618 3645 3619 3621 3620 3646 3622 3624 3620 3647 3623 3625 3622 3648 3625 3635 3633 3 1 4 23216 3649 1787 4332 4308 5507 3650 604 4332 605 4763 3651 1818 1433 3772 4144 3652 3691 4167 2075 4271 3653 2657 4134 3661 4361 3654 3886 4490 3291 5371 3655 3749 4447 3036 5089 3656 3030 2931 3709 4148 3657 2484 3840 4499 4805 3658 4447 4934 3036 5089 3659 769 4416 3763 5052 3660 605 4763 4332 4988 3661 2073 3691 2075 4271 3662 2484 4499 2896 4805 3663 2657 3661 2397 4361 3664 2484 3840 2896 4499 3665 3925 4298 3109 4573 3666 2968 4090 3731 4890 3667 1723 4024 3713 4181 3668 2578 4074 4487 5312 3669 602 4332 1787 5507 3670 2399 4534 3663 4579 3671 2323 4195 3672 4422 3672 2108 4143 3798 4770 3673 2379 3859 3177 4132 3674 2586 2587 3703 5319 3675 966 4471 3855 4919 3676 3109 4298 3925 4768 3677 3291 3886 3296 4490 3678 2138 4020 3813 4171 3679 966 3855 4151 4919 3680 3330 4598 4079 4815 3681 4190 4755 4402 5215 3682 769 3763 4201 5052 3683 3713 4024 1723 4788 3684 3818 4380 3029 4417 3685 694 1334 1410 3858 3686 964 1036 3837 4149 3687 2915 3353 4425 4883 3688 644 3698 642 5202 3689 1022 897 1635 3865 3690 1911 3885 4040 4515 3691 2399 2535 3663 4534 3692 4103 4225 2310 5210 3693 621 4662 4044 5375 3694 2723 3029 3818 4380 3695 875 1670 3686 4491 3696 3774 4753 2892 5115 3697 2657 3661 4134 5201 3698 4307 4752 1772 4867 3699 2138 3813 2130 4171 3700 3749 4934 4447 5089 3701 3638 545 3953 4701 3702 1897 4254 3902 4795 3703 3605 4587 4140 4622 3704 3301 3036 3749 4447 3705 2395 3751 3203 5225 3706 526 476 3943 4146 3707 2916 4142 3781 4231 3708 873 4316 3686 4433 3709 3826 4053 3103 4505 3710 630 1772 4307 4752 3711 2322 3672 2323 4965 3712 4116 4127 3233 4591 3713 3774 2892 4260 5115 3714 1011 3823 4406 4935 3715 1845 4763 4036 4843 3716 2108 3318 4143 4770 3717 2399 4077 4534 4579 3718 2421 3904 2478 5157 3719 828 4288 4754 5174 3720 3813 4020 2138 4378 3721 2200 4434 2203 4439 3722 847 4245 3905 4870 3723 1635 3865 897 5072 3724 1569 3582 545 4804 3725 2443 2968 3731 4890 3726 2379 3177 3859 4855 3727 3794 4762 4216 5253 3728 3139 4195 2323 4422 3729 2567 2860 3764 4153 3730 3582 3953 545 4804 3731 2586 3703 4469 5319 3732 962 1593 1624 3652 3733 694 3858 1410 4993 3734 1185 4631 3980 4714 3735 1052 4060 4494 5480 3736 2399 2535 3258 3663 3737 2479 2422 2423 3673 3738 904 905 906 3674 3739 2323 2322 2332 3672 3740 761 765 1703 3680 3741 3154 2217 2213 3680 3742 1263 1193 1262 3668 3743 2432 2431 2425 3685 3744 2204 2203 2202 3694 3745 873 875 1670 3686 3746 751 752 750 3694 3747 2073 2076 2075 3691 3748 2172 2171 2180 3696 3749 2586 2587 2584 3703 3750 1781 1442 1440 3695 3751 1043 1102 974 3721 3752 743 744 745 3728 3753 635 638 737 3733 3754 2087 2189 2090 3733 3755 2990 2443 2968 3731 3756 769 760 1715 3763 3757 1852 1135 1586 3749 3758 2227 2930 2929 3758 3759 2699 3052 2892 3774 3760 2642 2641 2935 3766 3761 2567 2860 2609 3764 3762 1711 1769 1183 3778 3763 1416 1466 710 3781 3764 2865 2162 2916 3781 3765 2095 2098 2097 3783 3766 2104 2102 3000 3786 3767 1778 1200 1824 3797 3768 2939 2938 2958 3802 3769 1672 1413 1268 3795 3770 1662 695 649 3806 3771 3110 2101 2147 3806 3772 2133 2838 3259 3812 3773 2131 2130 2138 3813 3774 3280 2781 2688 3816 3775 2900 2690 2553 3814 3776 3123 2380 2290 3810 3777 1097 1330 1331 3821 3778 2787 2549 3295 3821 3779 2836 3156 2451 3825 3780 1102 4249 3721 5078 3781 1140 1138 1139 3831 3782 2660 3326 2866 3832 3783 2990 2443 3731 4224 3784 1889 4696 3928 4820 3785 2203 4434 3694 4439 3786 3884 4425 3353 4883 3787 2200 4434 4439 5049 3788 1841 964 1036 3837 3789 3233 4116 3771 4127 3790 2158 4454 4142 5001 3791 3253 3657 2766 4903 3792 1294 4187 3842 4809 3793 630 4752 4307 4912 3794 761 3680 1703 4938 3795 1708 4542 4321 5245 3796 3650 4431 3420 4458 3797 2432 3685 4076 4640 3798 3154 3680 2213 4933 3799 968 4151 4916 5069 3800 1296 1294 3842 4809 3801 2931 3030 3709 4909 3802 1827 3810 838 4811 3803 2916 3781 2162 4231 3804 3289 4132 4578 4956 3805 2471 4495 3661 5201 3806 3724 3916 4723 4995 3807 3765 4287 2933 4427 3808 2158 2168 4454 5001 3809 2484 2664 2896 3840 3810 2395 3203 3751 4762 3811 3903 5003 4126 5538 3812 905 906 3674 5190 3813 941 4093 3719 4675 3814 1091 3836 1024 4968 3815 3823 1011 4406 4558 3816 4211 5186 4717 5252 3817 1334 1410 3858 4246 3818 1433 3772 4144 4806 3819 1672 3795 1268 4243 3820 4211 4390 5186 5252 3821 3092 3798 2108 5175 3822 2584 3703 2587 4239 3823 1296 1294 1295 3842 3824 2202 2204 3694 5005 3825 3698 4135 644 4435 3826 964 4149 3837 4283 3827 4279 4481 754 5070 3828 769 760 3763 4416 3829 2484 4342 3840 4805 3830 828 4754 4438 5174 3831 2130 3813 2131 4837 3832 3110 3806 2147 4934 3833 1224 1949 3846 4145 3834 1043 3721 974 4916 3835 4620 4886 2536 4973 3836 2471 3661 2657 5201 3837 962 3652 1624 5190 3838 3420 3650 4280 4431 3839 3901 4429 3231 4825 3840 1511 4201 4089 5014 3841 3103 4053 3826 4741 3842 3280 3816 2688 4281 3843 2990 4224 3731 4378 3844 3030 4148 3709 4320 3845 1088 3862 4128 4759 3846 3301 3749 3036 4787 3847 3253 2766 3275 4903 3848 3205 3893 2890 4882 3849 2323 3672 2332 4422 3850 3685 4084 2431 4582 3851 2108 3798 4143 4217 3852 1010 3823 1011 4935 3853 3936 4782 1878 4951 3854 604 3793 4332 4763 3855 1778 3797 1824 5110 3856 2653 3682 2630 4293 3857 3817 4578 4132 4956 3858 3726 4494 4060 5480 3859 1861 900 3805 4970 3860 968 4916 4614 5069 3861 1459 3790 4299 5154 3862 2227 3758 2929 5170 3863 904 3674 906 5171 3864 3836 4177 1024 4968 3865 3147 3765 2933 4427 3866 4321 4542 1708 5488 3867 1351 1238 1237 4900 3868 2853 4126 5003 5538 3869 1104 4710 3861 5016 3870 3167 4817 3761 5117 3871 3737 4835 4340 5208 3872 737 3733 4435 4711 3873 946 3838 1379 4776 3874 2227 2930 3758 5054 3875 1187 3980 1185 4631 3876 1861 3805 896 4970 3877 4190 3987 4755 5215 3878 1102 3721 1043 5078 3879 3017 3730 2251 4945 3880 4320 4437 2211 5286 3881 621 4044 619 5375 3882 1787 4308 4332 5427 3883 3839 4382 1028 4671 3884 3838 4234 1379 4776 3885 2781 2688 3816 4295 3886 2380 3810 3123 4295 3887 1845 634 4036 4763 3888 3656 4111 1406 4666 3889 2432 2431 3685 4640 3890 1670 873 3686 4433 3891 3063 3192 2720 4825 3892 2158 2168 4142 4454 3893 719 4160 1740 4244 3894 640 3698 644 4435 3895 2202 3694 2203 4434 3896 737 3733 638 4435 3897 2203 3694 2204 4439 3898 3694 4437 2204 4439 3899 2892 3774 3052 4753 3900 4263 4331 599 5539 3901 1091 1024 1120 4968 3902 3908 4481 4279 5070 3903 4189 4340 3737 4835 3904 630 4307 1772 4867 3905 919 3736 1675 4255 3906 637 3714 603 4263 3907 2892 2699 3774 4260 3908 3052 3774 2699 4261 3909 1029 4023 3843 4671 3910 4210 4324 3803 4836 3911 2233 2235 3744 4848 3912 1200 1824 3797 5159 3913 3826 4505 3103 5329 3914 2162 3781 4424 5113 3915 1869 4026 3785 4679 3916 1510 5441 4633 5454 3917 1464 1659 1029 3843 3918 1817 1377 3779 5025 3919 2890 3893 3205 4829 3920 1869 3785 4026 4897 3921 3730 4456 2251 4644 3922 4723 4995 3916 5124 3923 1511 4201 3708 4483 3924 2422 2423 3673 5270 3925 2180 3696 2171 4924 3926 3908 754 4481 5070 3927 4633 5441 3977 5454 3928 2421 4476 3904 5157 3929 3185 4792 3841 5047 3930 2716 3668 2717 4282 3931 2458 2478 2421 3904 3932 3869 4344 957 5354 3933 2586 3703 2584 5095 3934 1689 4316 873 4433 3935 2666 4400 2482 5349 3936 2212 3763 2221 4881 3937 1715 3763 760 5070 3938 635 638 3733 5012 3939 631 628 3723 4942 3940 1711 1769 3778 5381 3941 928 1827 838 4811 3942 2211 4320 2205 4437 3943 2205 4320 2268 4439 3944 3242 3999 3656 4794 3945 2422 3673 2479 4976 3946 2958 3802 2938 4403 3947 675 1710 1694 3912 3948 2716 2717 3668 4983 3949 3880 4160 1823 5350 3950 3764 2567 4153 4158 3951 1839 4091 3662 5193 3952 2432 3685 2425 4990 3953 4190 4402 3796 5215 3954 2518 4577 4131 4982 3955 2397 3661 2657 5455 3956 1458 3790 1459 4913 3957 2931 3031 3030 4909 3958 2935 3766 2641 4404 3959 3000 3786 2102 4403 3960 3017 2251 3730 4456 3961 3809 4404 2880 5301 3962 1510 3977 5441 5454 3963 4288 3907 4754 5174 3964 2815 2880 4404 5301 3965 2380 3810 4295 4677 3966 4154 4155 2296 4762 3967 3130 4154 2296 4762 3968 2678 4074 3864 4487 3969 675 3912 1694 5280 3970 599 4331 4263 4543 3971 1200 3797 1778 4880 3972 4142 4454 3768 5001 3973 2478 3904 4580 5157 3974 1662 695 3806 5234 3975 1022 3865 1635 4729 3976 2395 2295 3203 4762 3977 719 4160 4244 4975 3978 2216 4319 4436 5426 3979 2089 3714 3121 4289 3980 1193 3668 1263 4867 3981 975 3913 1848 5069 3982 1410 3858 4246 4993 3983 2180 2172 3696 4705 3984 2653 2630 3682 4989 3985 1138 1139 3831 4876 3986 2213 3680 2217 4651 3987 744 3728 743 4652 3988 2221 3763 2212 4651 3989 649 3806 695 4656 3990 2101 2147 3806 4658 3991 1103 4710 1104 5016 3992 2095 3783 2097 4650 3993 2627 4688 3914 5537 3994 2716 3668 2647 4983 3995 1670 4433 3686 4491 3996 3979 4764 3110 4934 3997 2086 4715 4038 4998 3998 1097 1330 3821 4785 3999 1787 4843 4308 5427 4000 1136 4369 4269 5146 4001 3676 4466 4458 4840 4002 1586 1852 3749 5234 4003 3813 2130 4171 4222 4004 3111 4674 3996 4851 4005 1842 3796 1335 4902 4006 3869 957 4399 5354 4007 3139 4195 4422 4944 4008 1024 4177 3836 4365 4009 2097 3783 2098 4764 4010 3110 2101 3806 4764 4011 3259 3812 2838 4765 4012 919 4115 3736 4255 4013 3744 4287 2233 4848 4014 3253 2766 3657 4409 4015 3843 4023 1029 5132 4016 1135 3749 1852 4299 4017 2268 4439 4320 5307 4018 3258 2399 3663 4999 4019 2929 3758 2930 5473 4020 4438 4754 3907 5174 4021 3420 3650 3006 4280 4022 2660 3832 2866 4800 4023 2526 4590 4114 4896 4024 1740 4160 3743 4244 4025 1459 3790 1458 4472 4026 3946 4762 3794 5253 4027 610 4863 3675 4912 4028 3948 4442 673 4784 4029 1817 3779 1377 5444 4030 3811 4358 3987 4639 4031 1183 3778 1769 4636 4032 1702 1062 3754 4812 4033 4463 4519 3237 4903 4034 751 3694 750 4481 4035 761 765 3680 4483 4036 776 1511 3708 4483 4037 751 752 3694 4484 4038 752 4482 3694 4484 4039 3783 643 4455 5149 4040 3842 3999 2746 5167 4041 1848 975 1850 3913 4042 1708 877 4542 5245 4043 1715 769 3763 4899 4044 1409 3764 1154 4899 4045 2310 4225 4103 4593 4046 3656 3999 3242 5431 4047 2216 2959 4319 5426 4048 1787 4332 4843 5427 4049 1472 3796 1842 5207 4050 4263 4331 4099 4543 4051 964 3837 1841 4486 4052 631 3723 628 5219 4053 2666 3879 4400 5349 4054 2532 4841 2533 5369 4055 1224 4145 3846 4383 4056 2709 4982 4131 5423 4057 3335 3650 3420 4458 4058 2990 3731 2968 4347 4059 2535 3258 3663 4349 4060 710 3781 1466 4352 4061 4099 4263 3775 4331 4062 900 1861 3805 5207 4063 4148 4320 2211 5286 4064 1818 4144 3772 4188 4065 1388 3715 1389 4919 4066 3638 545 3582 3953 4067 3776 5186 4390 5252 4068 1861 896 900 4970 4069 1413 3795 1672 4611 4070 897 3865 4732 5072 4071 3301 3036 4447 4934 4072 4458 4466 2368 4840 4073 1354 5032 1823 5350 4074 4340 5208 4835 5334 4075 642 3698 644 5149 4076 3420 3335 3006 3650 4077 3946 3794 4762 4927 4078 3880 1823 5032 5350 4079 4339 4837 4222 5263 4080 743 3728 745 5216 4081 1459 3790 4472 5449 4082 2657 3661 2471 5455 4083 3185 4445 3841 4792 4084 2397 4361 3661 5455 4085 1032 3840 1447 4901 4086 1472 4486 3796 5207 4087 1593 1624 3652 5008 4088 3936 4558 1878 4782 4089 3036 4787 3749 5089 4090 2567 3764 2609 4847 4091 765 1703 3680 4538 4092 2087 2189 3733 4366 4093 3783 4455 643 5454 4094 2587 4096 3703 5319 4095 751 3694 4481 5439 4096 2073 2076 3691 4771 4097 2746 3999 3842 4508 4098 1740 4845 3743 4893 4099 2322 2332 3672 4741 4100 1511 776 3708 5014 4101 3110 2911 3979 4934 4102 838 3810 1827 5476 4103 1779 4545 4443 5314 4104 2234 2233 4287 4848 4105 3156 3825 2836 4864 4106 2189 2090 3733 5238 4107 3963 4458 3676 4466 4108 1466 3781 1416 4710 4109 1154 3764 1409 4941 4110 644 3698 640 5149 4111 4131 4982 3687 5423 4112 761 3680 4416 4483 4113 2890 3893 4829 4882 4114 2451 3825 3156 4906 4115 905 3674 904 5080 4116 644 4085 3698 5202 4117 4456 4552 2251 4644 4118 1440 1781 3695 4450 4119 2410 4162 3869 4728 4120 1827 4748 3810 4811 4121 962 1593 3652 5034 4122 2131 3813 2138 4378 4123 2725 3029 3818 5187 4124 1268 3795 1413 4531 4125 964 3837 4486 5207 4126 2133 2838 3812 4648 4127 1188 1187 3766 5024 4128 1188 3766 1485 5024 4129 2553 2900 3814 4587 4130 2549 3821 2787 4587 4131 4049 4414 1178 4872 4132 815 814 3681 4936 4133 1511 3708 4201 5014 4134 1861 896 3805 4430 4135 941 4675 3719 5293 4136 2162 3781 2865 4424 4137 3359 3303 4157 4772 4138 2723 3818 3029 5187 4139 1103 1104 954 5016 4140 3205 4829 3893 5126 4141 1440 3695 1442 4549 4142 3762 4340 4835 5334 4143 611 4863 610 4912 4144 1313 1828 3657 5529 4145 1010 1011 3823 4558 4146 1234 1755 3815 4550 4147 1697 4031 1703 4538 4148 1262 3668 1193 5064 4149 2860 2609 3764 4625 4150 2160 4393 4721 5001 4151 1188 3766 1187 4631 4152 1188 1485 3766 4634 4153 3734 4553 820 5206 4154 1234 3815 1333 4555 4155 1224 1949 1618 3846 4156 2087 3733 2090 4768 4157 2647 3668 2716 4590 4158 821 820 4553 5206 4159 2642 2641 3766 4566 4160 2642 3766 2935 4569 4161 2098 3783 2095 4567 4162 2104 2102 3786 4568 4163 2104 3786 3000 4570 4164 2939 3802 2958 4567 4165 2938 3802 2939 4569 4166 4114 4590 3894 4896 4167 3280 2781 3816 4578 4168 3709 4819 2931 4909 4169 3676 4840 4458 4885 4170 2217 3680 3154 5185 4171 2432 4076 3685 4990 4172 1075 1709 3711 5030 4173 1234 3815 4218 4550 4174 3029 2725 3818 5035 4175 3259 2133 3812 4501 4176 1842 3796 1472 5237 4177 1477 4536 3752 4686 4178 2160 4721 2155 5001 4179 2233 3744 2235 4882 4180 689 4910 4324 5209 4181 603 3714 637 4988 4182 357 4056 4895 5256 4183 2463 4598 3330 4815 4184 2425 3685 2431 4582 4185 1138 3831 1140 4645 4186 1299 3928 1889 4696 4187 1135 1586 3749 4586 4188 1416 3781 710 4613 4189 2290 3123 3810 4595 4190 3295 3821 2549 4596 4191 649 1662 3806 4713 4192 919 1675 3736 4980 4193 1781 1442 3695 5125 4194 2916 2865 3781 4561 4195 2933 3765 3147 4986 4196 856 3722 853 4638 4197 875 3686 873 4542 4198 737 635 3733 4711 4199 2076 2075 3691 4528 4200 2172 2171 3696 4608 4201 1262 1263 3668 4612 4202 1447 3840 1032 5221 4203 1140 3831 1139 4449 4204 752 750 3694 4712 4205 2290 3810 2380 4677 4206 745 3728 744 4451 4207 1711 3778 1183 4872 4208 3121 3714 2089 5121 4209 1794 1406 3656 4730 4210 815 3681 814 4457 4211 635 3733 4462 5012 4212 1182 1690 3915 4547 4213 1097 3821 1331 4831 4214 1335 3796 1842 5237 4215 3783 4203 643 5149 4216 3326 3832 2660 4534 4217 2212 4651 3763 4881 4218 1911 4040 1948 4515 4219 1102 974 3721 4614 4220 2987 3231 4429 4825 4221 1841 3837 1036 4798 4222 1182 3915 4388 4547 4223 1103 954 4710 5016 4224 4835 5208 3965 5334 4225 2553 3814 2690 4723 4226 3676 4458 3963 4885 4227 2553 3814 4170 4587 4228 3756 4222 4837 5263 4229 1783 4556 3901 5075 4230 1828 1313 3657 5406 4231 498 3950 469 5013 4232 3280 4267 3816 4281 4233 2549 3821 4587 4596 4234 3397 3366 3044 3868 4235 3751 4098 3203 5225 4236 3724 4464 3916 4995 4237 2755 4565 2754 5033 4238 1477 4686 3752 5493 4239 4044 4535 619 5375 4240 2548 2398 3838 4579 4241 3177 4132 3859 4677 4242 3678 4131 4577 4982 4243 3734 4204 820 4553 4244 3811 4211 4717 5252 4245 1024 3836 1091 4515 4246 1174 3656 1406 4666 4247 2795 3882 2798 5389 4248 609 611 610 4912 4249 1333 3815 1234 5048 4250 1779 4443 1058 5314 4251 2690 3814 2900 4622 4252 1406 3656 1174 5009 4253 3656 1406 4111 4514 4254 1238 4546 3791 4586 4255 2399 4579 3663 4999 4256 1827 928 4748 4811 4257 1755 1234 3815 5048 4258 1268 4265 3795 4531 4259 941 3719 4093 4446 4260 3786 4655 652 5023 4261 652 4656 3786 5023 4262 3353 3884 2695 4425 4263 1268 4243 3795 4265 4264 2584 4199 3703 4239 4265 2086 2058 4715 4998 4266 2090 4480 3733 5238 4267 2286 4272 4677 4855 4268 3301 3036 2590 4787 4269 1088 4128 3862 5039 4270 889 4675 941 5293 4271 3739 4437 4320 5286 4272 3063 4221 3718 5187 4273 1839 3662 4091 4369 4274 1406 4514 3656 4730 4275 3184 3841 3185 4445 4276 1794 3656 1406 5009 4277 4316 4433 1689 4944 4278 4262 4588 3780 5359 4279 3765 4511 3147 4986 4280 4142 4231 2916 5001 4281 1966 4706 3653 4744 4282 4443 4545 3835 5314 4283 930 966 3855 4916 4284 1030 4399 3879 4967 4285 2535 4349 3663 4534 4286 3840 4342 2484 4773 4287 3810 4046 838 4811 4288 3123 3810 4595 5124 4289 3788 4647 2118 5060 4290 4262 4327 3741 5359 4291 2451 3825 4379 5274 4292 3036 2590 4787 5089 4293 2216 4436 4319 4651 4294 2383 4205 3710 4566 4295 2104 3786 4215 4568 4296 2104 4215 3786 4570 4297 3657 3253 4409 4600 4298 2301 3679 4356 5300 4299 2915 4425 4051 4883 4300 1779 1768 4443 4545 4301 3103 4741 3826 5329 4302 1331 3821 1330 5144 4303 3711 4523 1709 4984 4304 3226 5066 3822 5161 4305 3813 4837 4339 5263 4306 751 4484 3694 5439 4307 2423 2479 3673 5007 4308 1061 4085 4392 5283 4309 2781 4295 3816 4578 4310 2666 3879 2482 4400 4311 3274 4401 4289 5217 4312 1028 4382 3839 5584 4313 966 930 3855 4471 4314 1790 957 958 3869 4315 2205 4437 4320 4940 4316 2205 4320 4439 4940 4317 1379 4489 3838 4736 4318 2866 3832 3326 5106 4319 1010 1011 1009 4935 4320 3904 4476 2458 5341 4321 320 3944 3004 5040 4322 3859 4677 4272 4855 4323 3627 4587 3605 4622 4324 3723 3926 4652 4842 4325 1463 4187 3888 4730 4326 1088 4128 1021 4759 4327 2536 4886 3351 4973 4328 2946 3233 4127 4591 4329 1294 1295 3842 4680 4330 3678 4392 4085 5283 4331 2642 3766 4327 4566 4332 2642 4327 3766 4569 4333 3783 4323 2095 4567 4334 3808 4329 653 4572 4335 3802 4334 2939 4569 4336 2939 4334 3802 4567 4337 616 4354 4629 5445 4338 3185 3841 3184 5047 4339 3691 4044 4662 5375 4340 3977 4633 3802 5441 4341 1234 3815 4555 5159 4342 1464 3843 1029 5132 4343 1424 4636 4033 5447 4344 905 3674 4242 5190 4345 3808 4572 653 5119 4346 2233 4287 3744 4356 4347 3714 4289 2089 4357 4348 3139 2325 4195 4477 4349 3680 4651 2213 4933 4350 3769 3911 4669 5468 4351 1820 4057 3833 5641 4352 3920 4752 4307 4867 4353 2116 2118 4647 5060 4354 3780 4327 4262 5359 4355 3651 4886 4620 4973 4356 1096 4489 1379 4736 4357 2261 4493 4059 5542 4358 1662 3806 4073 5234 4359 2322 4741 3672 4965 4360 623 619 4535 5375 4361 3698 4203 642 5202 4362 3358 5003 3903 5538 4363 3794 4328 4252 5351 4364 3936 4406 1011 4558 4365 1237 4546 4078 4900 4366 1727 1361 3985 4611 4367 2896 3840 2664 5467 4368 2723 2777 3029 4380 4369 3605 4622 4140 4981 4370 3693 4324 4836 5209 4371 838 4046 3810 4685 4372 3811 4390 4211 5252 4373 4089 4201 3708 5014 4374 1477 835 4686 5493 4375 975 4614 3913 5069 4376 1472 3796 4486 5237 4377 2678 3389 3062 3864 4378 1104 4240 4743 5456 4379 1224 3846 1618 5059 4380 1459 4299 3790 5449 4381 2915 3353 2695 4425 4382 3186 1976 3627 4587 4383 3859 3795 4173 5082 4384 4131 4577 2597 4722 4385 1897 3902 4254 5050 4386 2398 2548 3838 5081 4387 1011 3936 1865 4406 4388 753 4200 4482 4940 4389 753 4484 4200 4940 4390 2699 4261 3774 4330 4391 3774 4260 2699 4330 4392 603 4263 3714 4332 4393 2678 3864 3062 4487 4394 962 4242 3652 5190 4395 1703 4538 4031 4938 4396 3678 4256 2513 4577 4397 3862 4344 3863 5013 4398 1463 4514 3888 4970 4399 621 619 623 5375 4400 2556 2406 4561 5181 4401 3687 4982 4350 5423 4402 1915 3868 1594 5034 4403 2455 2533 4551 5369 4404 1762 1674 4408 5000 4405 1424 4033 5065 5447 4406 2480 4946 3839 4957 4407 3672 4195 2323 4965 4408 3935 3954 3777 4689 4409 3326 3832 4534 4574 4410 4201 4483 1511 5052 4411 3872 4157 3303 4772 4412 2402 3871 3237 4733 4413 2018 4904 4157 5027 4414 1778 4264 3797 5110 4415 3859 4132 2379 5417 4416 3785 4897 1869 5200 4417 2180 4705 3696 4924 4418 1740 1170 4845 4893 4419 1327 3817 4360 5015 4420 1852 4073 3749 5234 4421 2795 4432 3882 5389 4422 3030 4320 3709 4909 4423 2740 3877 2738 5137 4424 3928 1889 4820 5313 4425 2379 2286 3177 4855 4426 3661 4495 2471 5455 4427 2911 3979 4447 4889 4428 3823 4558 4598 4815 4429 1635 4729 3865 5072 4430 3111 3338 4674 4851 4431 2483 3330 4079 4815 4432 803 4191 3677 4597 4433 2754 4565 3989 5033 4434 4211 4390 3776 5186 4435 2483 2463 3330 4815 4436 1878 1865 1011 3936 4437 964 4283 3837 5207 4438 743 4172 3728 5216 4439 3741 4262 4207 4327 4440 1289 1804 3867 4529 4441 3765 4427 3147 4511 4442 3769 3911 4166 4669 4443 2301 4356 2248 5300 4444 1839 622 4091 5193 4445 2480 3087 4946 4957 4446 2384 2296 4154 4155 4447 3130 2384 2296 4154 4448 3769 4440 3911 5468 4449 4079 4598 4558 4815 4450 4140 4587 3814 4622 4451 3061 4376 4516 5044 4452 3882 4432 2795 4628 4453 2455 2532 2533 5369 4454 1631 3950 498 5013 4455 2553 4170 3814 4723 4456 1797 4408 3770 5094 4457 1029 3843 1659 4671 4458 4402 4755 3290 5215 4459 3725 4629 4354 5445 4460 4328 4796 4252 5351 4461 1949 1618 3846 4250 4462 3316 4495 2471 5201 4463 1916 1590 1591 3848 4464 1181 4553 4310 5638 4465 2395 4216 3751 5225 4466 2492 4727 4342 5429 4467 1991 3587 2034 4603 4468 4630 4740 2273 5479 4469 1161 4209 3820 4609 4470 2423 4475 3673 5270 4471 2709 4350 4982 5423 4472 3762 4340 4189 4835 4473 628 3723 4942 5219 4474 3693 4324 4210 4836 4475 4222 4339 3813 4837 4476 3811 3987 4410 4639 4477 3894 3711 4473 5226 4478 2215 4148 2211 5286 4479 1263 4208 3668 4612 4480 1966 1887 1616 3653 4481 4252 4328 3750 4796 4482 673 3948 4784 5147 4483 1746 1136 4269 5146 4484 3148 3850 3150 4670 4485 1740 1170 717 4845 4486 3668 2717 4282 4312 4487 3905 4482 847 4870 4488 1135 3749 4391 4586 4489 3121 4704 3714 5121 4490 4269 4369 3897 5146 4491 2290 4595 3810 4677 4492 1591 3848 1590 5008 4493 3630 2995 2027 3973 4494 966 4151 3855 4916 4495 1227 3885 1911 4515 4496 3226 4221 3822 5066 4497 3593 3051 2011 3962 4498 3044 3868 3366 4834 4499 4342 4727 3819 5429 4500 2787 3821 3295 5135 4501 3794 4216 4252 4328 4502 1140 3831 4449 4529 4503 3862 5013 3863 5139 4504 2937 4588 4327 5438 4505 3675 4563 610 4912 4506 2647 3668 4590 4983 4507 897 3865 1022 4732 4508 2147 3806 4658 4934 4509 2492 4342 5103 5429 4510 1154 4632 3764 4941 4511 3698 4085 644 4135 4512 820 4553 4204 5125 4513 1034 3887 1092 4372 4514 4196 4450 3660 5267 4515 3901 4498 1783 5075 4516 1783 3901 4556 4816 4517 2398 3838 4733 5081 4518 3233 4127 3771 5240 4519 1334 3858 694 4902 4520 2690 3814 4622 4723 4521 3205 4411 3893 4882 4522 3758 2227 4202 5170 4523 904 4192 3674 5171 4524 1584 4245 847 4870 4525 1102 1236 4249 5078 4526 2627 3914 4363 5537 4527 3871 4519 3237 4733 4528 1727 4611 3985 4811 4529 803 4597 3677 5122 4530 4320 4909 3030 5307 4531 2138 3190 4020 4171 4532 4051 4425 3884 4883 4533 356 357 303 5256 4534 1784 653 4572 5119 4535 2549 4587 4170 4596 4536 3274 4289 4401 5107 4537 3728 744 4451 4517 4538 1769 4636 3778 5381 4539 3186 4587 3627 4622 4540 1820 3833 4627 5641 4541 2664 3840 2484 4773 4542 1967 4696 1889 4820 4543 2958 3802 4403 4567 4544 3802 2938 4403 4569 4545 3809 2880 4404 4570 4546 1128 4257 1484 5109 4547 650 4656 652 5023 4548 1551 652 4655 5023 4549 4195 4477 2325 5341 4550 3059 4682 3300 4851 4551 2177 4361 3991 5051 4552 1161 4609 3820 5150 4553 2691 4239 4096 5285 4554 2406 5042 4561 5181 4555 3316 5036 4495 5201 4556 3289 2779 4132 4956 4557 2641 4404 3766 4566 4558 2102 4403 3786 4568 4559 2935 3766 4404 4569 4560 3000 3786 4403 4570 4561 4209 4266 3820 5338 4562 694 4639 3858 4993 4563 4031 4538 1697 5316 4564 3295 3821 4596 5006 4565 867 4229 4179 5214 4566 1172 4111 4893 4992 4567 3771 4116 3233 5163 4568 2279 3017 2251 4945 4569 3059 3924 4682 4851 4570 838 4685 3810 5476 4571 3230 4271 4343 5055 4572 3817 5015 1327 5284 4573 4115 4255 919 5348 4574 3702 4251 2239 4351 4575 477 3943 476 4146 4576 689 1452 4910 5209 4577 4706 4744 1966 5637 4578 2171 4364 3696 4608 4579 3859 2379 4855 5417 4580 2690 4622 4281 4723 4581 3312 3290 4402 4755 4582 2627 4296 3914 4688 4583 3004 3944 320 4649 4584 1878 3936 1011 4558 4585 3821 4550 1331 4831 4586 3681 4498 815 4936 4587 3686 875 4491 4542 4588 2716 2647 2717 4983 4589 3673 4384 2479 4976 4590 2838 4571 3812 4648 4591 1203 4036 4238 5578 4592 498 469 414 5013 4593 3736 4413 919 4980 4594 2162 4231 3781 5113 4595 1967 4696 4820 5362 4596 3761 4292 3167 5117 4597 3795 3859 4173 5417 4598 3996 4674 3653 4851 4599 1851 4706 1966 5637 4600 2556 4561 2406 5042 4601 2407 2486 2544 4840 4602 3728 4172 743 4652 4603 3873 4772 3344 5494 4604 2402 3237 3871 4903 4605 1120 1024 4177 4968 4606 2768 2018 4157 5027 4607 3758 4368 2930 5473 4608 3708 4483 4201 5052 4609 1899 1968 1088 3862 4610 4332 4988 4763 5504 4611 3665 4266 4209 5338 4612 3853 4774 3166 4933 4613 710 3781 4352 4394 4614 3254 3867 2741 4979 4615 2794 4296 3849 4665 4616 2556 2406 2557 5042 4617 1790 957 3869 4344 4618 635 4462 3733 4711 4619 2480 3839 4396 4957 4620 2556 2557 4561 5042 4621 485 4786 4039 4966 4622 3857 4949 2072 4955 4623 1289 3867 1804 4972 4624 2075 4167 3691 4528 4625 357 4895 303 5256 4626 3901 4270 3231 4456 4627 3905 4245 847 4941 4628 2484 4773 4342 5043 4629 3777 4261 4206 5361 4630 4246 4249 1236 5078 4631 1377 4420 3779 5025 4632 4454 4815 2462 5181 4633 365 525 4182 4866 4634 3756 4339 4222 5263 4635 1768 4443 4545 4689 4636 2798 3882 2795 4628 4637 2729 2532 4584 4841 4638 1091 4678 3836 4968 4639 2786 3817 4578 5255 4640 1187 3980 4631 5024 4641 637 3714 4263 4943 4642 1069 4081 4801 5381 4643 3280 3816 4267 4578 4644 3274 2885 4401 5217 4645 3806 1662 4073 4713 4646 3722 4564 856 5264 4647 3736 4115 919 4413 4648 2554 4995 4723 5124 4649 3325 4620 3651 4996 4650 1797 3770 4408 4984 4651 2215 2211 2214 5286 4652 1917 425 4008 4637 4653 3397 3868 3044 4767 4654 3656 5431 3242 5522 4655 4310 4553 3689 5638 4656 3916 4464 3986 4995 4657 3731 4347 2990 4378 4658 2398 4733 2831 5081 4659 1061 5108 4085 5283 4660 3679 796 4624 4808 4661 4332 5427 4308 5507 4662 2496 4847 3746 5115 4663 1955 415 526 4146 4664 2301 3679 4129 4356 4665 2911 4447 3979 4934 4666 3230 5055 4343 5062 4667 597 4756 4331 5209 4668 3749 4073 1852 4299 4669 3052 3774 4261 4753 4670 1205 4166 3911 4943 4671 2486 3887 2544 4840 4672 4324 4910 689 5605 4673 2746 4695 3999 5528 4674 3877 4521 2738 5137 4675 1477 837 4536 4686 4676 1899 3862 1088 4759 4677 3999 4695 2746 5167 4678 4182 4866 525 5046 4679 3714 3121 4289 4704 4680 1010 4558 3823 4766 4681 1294 3842 4301 4680 4682 2122 4750 4817 5117 4683 3838 4152 946 4736 4684 3912 4273 1694 5280 4685 1710 3912 675 4718 4686 1032 1447 1212 4901 4687 968 4151 966 4916 4688 3267 4551 3772 5056 4689 4310 4553 1181 5125 4690 3061 2307 4376 5044 4691 946 4152 3838 4776 4692 4351 2244 5414 5460 4693 1388 4700 3715 4919 4694 1903 4738 3889 4769 4695 1118 4556 1783 5075 4696 3176 4071 4779 4948 4697 3723 4366 3926 4842 4698 4089 4516 4319 4606 4699 3061 4376 2307 4516 4700 493 4786 485 4966 4701 769 764 4416 5052 4702 3253 4600 3657 4903 4703 3139 4477 4195 4944 4704 2729 4584 3969 4841 4705 3150 4697 3850 4887 4706 1650 1511 4089 5014 4707 753 4482 4200 5466 4708 1887 3653 1966 4706 4709 2572 3231 2987 4375 4710 2233 2234 2235 4848 4711 4261 4803 4206 5361 4712 3135 4323 4256 5085 4713 3695 4450 4196 5267 4714 3842 4291 1296 4809 4715 3702 4351 2239 5084 4716 3770 4136 1797 4504 4717 4196 4310 3660 4450 4718 1250 3908 754 4712 4719 4266 4609 3820 5338 4720 604 605 606 4763 4721 2410 2409 3869 4906 4722 3819 5103 4342 5429 4723 1827 3810 4748 5476 4724 3588 4603 4188 4703 4725 1104 3861 4240 5456 4726 695 4572 3806 5234 4727 526 415 476 4146 4728 1183 4636 4049 4872 4729 1327 4360 4068 5015 4730 906 4193 3674 5190 4731 2669 3886 3291 5371 4732 3783 4567 2098 4764 4733 2101 4568 3806 4764 4734 3812 4571 2838 4765 4735 638 4435 3733 5012 4736 1275 4294 4406 4581 4737 4547 4749 933 5087 4738 1004 4807 4689 4997 4739 4205 4566 2383 5145 4740 1804 3867 4529 5398 4741 2507 4596 4169 5387 4742 3203 4098 3751 4168 4743 2189 3733 4366 5129 4744 1102 3721 4249 4614 4745 3894 4473 1073 5064 4746 3794 4216 4762 4927 4747 3741 4542 4321 5488 4748 3679 4164 796 4808 4749 2853 5003 3358 5538 4750 3128 5414 2244 5460 4751 1798 3558 4064 4284 4752 1238 4562 3791 4900 4753 4036 4763 3793 4843 4754 2507 4169 4643 5387 4755 3734 2273 4630 4740 4756 3840 4342 4773 5043 4757 1185 4631 4714 5503 4758 1790 3869 958 5039 4759 4096 5089 2691 5285 4760 631 629 628 4942 4761 3965 4835 3737 5208 4762 958 3869 957 4932 4763 3274 4401 2885 5107 4764 4191 4869 4311 4878 4765 1850 3913 975 4614 4766 3653 4674 3338 4851 4767 3730 4644 2251 4945 4768 2933 4427 4287 5185 4769 4206 4261 3774 4803 4770 4096 4239 3791 5285 4771 3998 4815 4454 5181 4772 3296 3291 2669 3886 4773 3017 4429 3730 4945 4774 2118 3788 4285 4647 4775 4046 4536 837 4686 4776 3714 4943 637 4988 4777 1092 4372 3887 4672 4778 2206 3908 4881 5005 4779 645 643 4455 5454 4780 2097 4650 3783 4764 4781 1820 3833 4057 4905 4782 3652 4223 1624 5190 4783 3749 4586 1586 5234 4784 771 4325 4094 5413 4785 1689 4316 4488 5392 4786 3267 3772 4551 4603 4787 1073 4156 4407 5064 4788 2942 5312 4691 5407 4789 4204 4553 3734 5125 4790 2089 3714 4357 5121 4791 1585 847 4245 4941 4792 3150 2545 4697 4887 4793 2877 3237 4463 4519 4794 856 4413 3722 4638 4795 4200 4484 753 5597 4796 3998 2462 4815 5181 4797 4039 4786 4665 4966 4798 1029 988 4023 4671 4799 3913 4492 1848 5069 4800 3728 4228 4517 5434 4801 3986 3916 4995 5124 4802 687 4106 4506 4884 4803 3850 4852 3997 5011 4804 597 596 4756 5209 4805 324 3989 2024 4947 4806 2189 3733 5129 5238 4807 3797 4213 1824 5110 4808 3730 4552 4456 4644 4809 1178 4414 4049 5448 4810 3110 2911 2579 3979 4811 1187 1189 1185 3980 4812 3828 4691 5312 5407 4813 1851 1966 4744 5637 4814 2722 4380 4097 5417 4815 3668 4114 2716 4590 4816 1172 4666 4111 4992 4817 3920 4307 4752 4912 4818 3176 4779 2187 4948 4819 2733 3849 2794 4296 4820 2740 3377 2738 3877 4821 4091 5193 622 5445 4822 1223 3874 1498 4810 4823 1182 1048 1690 4547 4824 1848 3913 1850 4798 4825 3686 4316 873 4542 4826 3148 3850 4670 4790 4827 3065 3338 3653 4674 4828 3869 4162 2410 4379 4829 1845 606 4763 4843 4830 675 4718 3912 5280 4831 4670 4740 2413 5611 4832 3865 4500 1022 4732 4833 1194 3916 1272 4846 4834 2815 4404 4571 5301 4835 3848 1590 4383 5224 4836 4351 5414 4453 5460 4837 3680 4427 3154 5185 4838 3017 3730 4429 4456 4839 3788 3947 4647 5060 4840 3799 4175 4657 5278 4841 1872 4581 4406 5418 4842 3758 4198 2929 5170 4843 3674 4193 906 5171 4844 2782 4578 4132 4677 4845 3770 4504 1797 5094 4846 639 4455 3906 4913 4847 639 3906 4455 5149 4848 3863 5013 4533 5139 4849 988 4382 4023 4671 4850 4094 4325 775 5295 4851 3665 4209 4266 4333 4852 3777 4206 4261 4330 4853 3735 4264 4210 4324 4854 2826 3922 2560 4175 4855 2101 3806 4568 4658 4856 3806 4572 695 4656 4857 3914 4296 2627 4665 4858 1183 3778 4636 4872 4859 3777 3954 3935 5378 4860 1779 5132 4545 5314 4861 1327 4360 3817 5284 4862 3735 4210 4264 5031 4863 4281 4622 3814 4723 4864 4208 4282 3668 5337 4865 754 755 4279 5070 4866 3891 4801 4081 5381 4867 1234 4218 3815 5159 4868 2666 4814 3879 5349 4869 3185 3380 4792 5047 4870 3325 2536 3334 4973 4871 1194 4389 3916 4846 4872 3821 1097 4785 4831 4873 2518 4131 3131 4982 4874 3330 4079 4598 4996 4875 4316 1689 4488 4944 4876 1727 1361 1362 3985 4877 3754 4414 4049 4872 4878 1275 1830 4294 4581 4879 3656 1794 4730 5009 4880 1238 3791 4562 4586 4881 4343 5055 3856 5062 4882 1223 1910 1498 3874 4883 583 4653 4806 5547 4884 765 3680 4483 4538 4885 3165 2212 2221 4881 4886 4693 4802 2922 5215 4887 2458 3904 2421 4476 4888 1794 1406 1174 5009 4889 4033 4636 3857 5447 4890 3946 4526 844 5087 4891 3238 4162 2410 4728 4892 1447 3840 4500 5271 4893 4140 4622 3814 4981 4894 1070 1747 4268 4438 4895 4020 4171 3190 5247 4896 3780 4207 4262 4327 4897 814 4457 3681 4936 4898 3904 2458 4477 5341 4899 2422 4341 3673 4976 4900 3280 4578 4267 5255 4901 1075 3711 4407 5030 4902 4167 4528 2075 5083 4903 3946 4467 844 4526 4904 1804 4080 3867 5398 4905 2482 4400 3879 4758 4906 775 4325 4777 5295 4907 3128 4453 5414 5460 4908 3677 4311 4869 4878 4909 1070 4438 4268 5336 4910 3781 4394 710 4613 4911 1294 3842 4187 4301 4912 4033 3857 5065 5447 4913 631 4462 3723 5219 4914 1711 4093 3778 4872 4915 3819 4560 5103 5429 4916 3747 4749 4547 5087 4917 3806 3110 4764 4934 4918 1441 4164 4450 5045 4919 930 4082 3855 4471 4920 2480 4396 3087 4957 4921 493 2994 4786 4966 4922 3366 4745 4120 4834 4923 4282 4612 3668 5337 4924 2560 3922 2826 5073 4925 2740 4445 3877 5137 4926 3166 3853 4591 4774 4927 1779 1240 5132 5314 4928 2678 2578 4074 4487 4929 1781 4310 3695 4450 4930 2290 4272 4595 4677 4931 1949 3846 4145 5544 4932 1594 4374 3868 4907 4933 2916 3781 4142 4561 4934 2642 4566 4327 5145 4935 3752 5025 1477 5493 4936 876 1708 877 4542 4937 3167 4292 3761 4390 4938 3788 4398 3947 5060 4939 4086 4588 4262 5359 4940 2678 3389 3864 4793 4941 3373 2794 2733 3849 4942 4128 4620 4162 5268 4943 2939 4569 4334 5141 4944 4334 4567 2939 5140 4945 2095 4567 4323 5140 4946 2642 4327 4569 5141 4947 4256 4323 3745 5085 4948 3728 4517 3910 5434 4949 4320 4439 3782 5307 4950 997 1073 4473 5064 4951 1182 4388 1048 4547 4952 2653 3682 4293 4518 4953 4141 4226 1874 5340 4954 1899 1968 3862 5013 4955 3954 5061 3935 5378 4956 1694 3912 1710 4746 4957 3068 4458 2368 4840 4958 3366 3868 3397 4745 4959 3682 4518 2653 4989 4960 2587 3703 4096 4239 4961 4342 4727 2492 5043 4962 3857 4343 2072 4949 4963 3893 4450 4164 5045 4964 1441 4450 3893 5045 4965 2199 4434 4286 5490 4966 1458 1459 1460 4913 4967 414 469 4533 5013 4968 2402 4903 3871 5051 4969 3679 4624 796 5246 4970 640 3698 4435 5149 4971 3657 4463 2766 4903 4972 1203 5090 4036 5578 4973 3750 4252 4216 4328 4974 3663 4534 4077 4579 4975 2478 3904 2458 5028 4976 2199 2200 4286 4434 4977 754 3908 1250 5070 4978 3184 3995 2541 5047 4979 1479 775 4777 5295 4980 1616 3653 1887 4866 4981 1591 3848 4374 5224 4982 3997 4852 4850 5011 4983 1388 1387 4700 4919 4984 1441 3893 4549 4922 4985 2322 4053 4741 4965 4986 1698 4850 4852 5011 4987 4892 4895 4056 5256 4988 930 3855 4082 4916 4989 893 599 4331 5539 4990 3795 4243 1672 4611 4991 3977 5023 1510 5441 4992 3746 2496 5115 5239 4993 788 4922 5296 5377 4994 4267 4578 3816 5255 4995 3967 4837 3813 5263 4996 2486 2544 3887 5165 4997 2964 2480 3087 4946 4998 1762 4408 4303 5000 4999 4059 4878 2261 5542 5000 4344 4533 3863 5013 5001 3677 4311 4191 4869 5002 3709 4148 2931 4819 5003 1828 3657 4302 5406 5004 1187 4631 3766 5024 5005 1485 3766 4634 5024 5006 1377 3779 4420 5444 5007 3893 4411 3205 5126 5008 2160 2895 2155 4721 5009 3809 4571 4404 5301 5010 1779 1768 1058 4443 5011 2422 3673 4341 5270 5012 2873 2072 4949 4955 5013 3274 2885 2954 5107 5014 1659 3843 1464 4751 5015 3831 4529 1140 4645 5016 1234 4550 4218 4831 5017 3755 4873 1696 5092 5018 3806 4656 649 4713 5019 4380 4417 3945 5410 5020 3856 4343 4271 5055 5021 3369 2028 3426 5465 5022 3813 4378 2131 4837 5023 540 368 4276 4355 5024 4665 4786 2994 4966 5025 2311 2310 4225 5210 5026 3700 4089 4319 4606 5027 2660 4534 3832 4800 5028 3771 5163 3233 5240 5029 1711 3778 4093 4663 5030 1334 4246 3858 4249 5031 3987 4358 3811 4684 5032 3710 4205 4377 5196 5033 3761 4817 4750 5117 5034 4062 4533 469 5013 5035 3796 4249 1335 4902 5036 2532 4584 4841 5369 5037 2133 3812 4501 4648 5038 815 4183 3681 4457 5039 3722 4413 856 4564 5040 1275 4406 4294 4935 5041 1024 4365 3836 4515 5042 2560 4175 3922 5073 5043 3912 4122 3788 5435 5044 3184 3841 4445 5298 5045 3689 4553 4310 5125 5046 1430 4329 654 4532 5047 2273 4740 3734 5357 5048 2723 4380 3818 5187 5049 3657 4470 1313 5529 5050 4561 5042 3861 5181 5051 2931 4819 4059 4909 5052 2091 4768 3906 4889 5053 4424 4561 3204 5368 5054 2431 4084 3685 4640 5055 3777 4689 3954 4997 5056 4049 4636 3778 4872 5057 3815 4550 1755 5048 5058 2836 3825 4441 4864 5059 2072 4949 4343 5211 5060 3812 3259 4501 4765 5061 2176 4600 3991 4757 5062 1842 4190 3796 4902 5063 1968 1088 3862 4344 5064 1910 3874 1223 4725 5065 3799 3922 4175 5278 5066 4144 4188 1818 5534 5067 1593 3652 4374 5008 5068 3166 4591 4127 4774 5069 4495 5036 3969 5201 5070 4068 4360 3817 5015 5071 4268 4556 3901 4816 5072 901 4514 1463 4970 5073 2273 3734 4630 5357 5074 2200 5049 4439 5434 5075 1848 4492 3913 4798 5076 3420 4280 3341 4431 5077 769 764 760 4416 5078 3710 4714 4631 5503 5079 2432 4640 4076 5290 5080 3242 4794 3656 5522 5081 4078 4546 3791 4900 5082 2544 4458 2407 4840 5083 1335 4249 3796 5237 5084 4179 4229 867 5002 5085 2840 4548 3970 4853 5086 2268 3174 4439 5307 5087 3921 2819 4989 5236 5088 643 4203 3783 5454 5089 3827 4406 4581 5418 5090 2325 4086 4195 5341 5091 2075 4167 2071 4271 5092 2680 4076 3899 4957 5093 1333 4555 3815 5048 5094 867 1255 4229 5214 5095 3226 3241 5066 5161 5096 3822 5035 3226 5161 5097 1073 4407 3894 5064 5098 961 5072 4797 5421 5099 3996 4760 3422 4851 5100 3898 4647 2187 4948 5101 3751 4216 4762 5253 5102 1255 4610 4229 5214 5103 1046 933 4749 5087 5104 2880 4570 3809 5301 5105 1948 4515 4040 4664 5106 1872 4506 4581 5418 5107 3130 4154 4762 4927 5108 3945 4380 3818 4417 5109 2174 4600 4757 5131 5110 1459 4472 1458 5449 5111 1864 4026 1869 4679 5112 4355 4850 3997 4852 5113 900 3805 4970 5207 5114 2922 2793 4693 5215 5115 3588 4188 4653 4703 5116 3748 4282 4208 5337 5117 1075 4407 3711 4984 5118 3420 3341 2751 4431 5119 4302 4463 3871 4519 5120 3909 3708 4483 4624 5121 3936 4558 4079 4598 5122 876 1708 4542 5488 5123 788 5296 787 5377 5124 1911 4040 3885 5111 5125 2191 4768 2091 4889 5126 1845 604 606 4843 5127 3062 3864 3389 4617 5128 1251 4797 961 5072 5129 3627 1976 3557 4587 5130 1413 4531 3795 4611 5131 365 4182 3996 4866 5132 4191 4597 803 5177 5133 4051 395 4861 5383 5134 3899 4076 2680 4760 5135 3668 1262 4612 5064 5136 3377 2738 3877 4888 5137 3914 4893 4111 4992 5138 1139 4449 3831 4876 5139 3199 3147 4511 4986 5140 1250 4178 3908 4712 5141 1797 1816 4408 5094 5142 1828 4302 3657 4601 5143 2118 4285 3788 5060 5144 1014 4663 4093 5518 5145 1755 1333 1234 5048 5146 770 771 4094 5413 5147 3711 1709 4523 5030 5148 2720 4825 4097 5187 5149 3819 4727 4342 5043 5150 1069 4238 4694 4801 5151 4092 4205 3159 5359 5152 4128 4162 3834 5268 5153 974 3721 4614 4916 5154 3006 3650 3335 4649 5155 3675 610 4563 4863 5156 853 4638 3722 5264 5157 2544 3887 4458 4840 5158 2566 4847 2496 5115 5159 4085 5108 3678 5283 5160 1010 4766 3823 4935 5161 3185 2843 3380 5047 5162 3805 4430 896 4970 5163 2443 3731 4224 4890 5164 3798 4219 3092 4770 5165 4063 4647 2187 4779 5166 1030 3879 1214 4967 5167 3680 4436 2217 4651 5168 4682 4828 3300 4851 5169 3710 4566 4205 5145 5170 3909 4129 3708 4624 5171 3772 4653 4188 4703 5172 653 4329 3808 5119 5173 1113 4632 1154 4941 5174 2210 2211 4437 5286 5175 654 4532 4329 5291 5176 1593 4374 3652 5034 5177 2879 4215 2104 4570 5178 2104 4215 2103 4568 5179 769 4201 3763 4899 5180 3764 4197 1154 4899 5181 2451 4379 3825 4906 5182 744 4517 3728 4652 5183 3687 4229 4610 5214 5184 4460 4512 1065 5104 5185 2911 2579 3979 4889 5186 3850 4813 1699 5011 5187 3894 4407 4156 5064 5188 1182 4464 4388 5053 5189 2703 3921 2819 4989 5190 4151 4700 1387 4919 5191 2172 4608 3696 4705 5192 616 4629 4354 5065 5193 1897 4795 3902 5631 5194 3715 4660 1389 4919 5195 3795 4097 4380 5417 5196 2716 4114 3668 4282 5197 2491 3881 2538 5007 5198 1958 4850 4355 4852 5199 3139 2323 2332 4422 5200 776 4483 3708 5014 5201 3764 4315 2609 4847 5202 2496 4314 3746 4847 5203 4483 4624 3708 5014 5204 3772 4703 3267 5056 5205 1828 4601 3657 5529 5206 4191 3684 4869 4878 5207 2826 3922 2827 5073 5208 750 4481 3694 4712 5209 752 3694 4482 4712 5210 2832 2187 4063 4647 5211 1696 4827 3755 5092 5212 3825 4340 3156 4906 5213 1161 1162 4609 5150 5214 2138 3190 2142 4020 5215 3695 4829 4450 5267 5216 1094 4152 4683 5318 5217 1967 1299 1889 4696 5218 2261 3101 4059 4493 5219 1052 4060 1108 4494 5220 2118 4647 4285 4948 5221 1915 4664 3868 5034 5222 3814 4587 2900 4622 5223 1616 1966 3653 4716 5224 3867 1289 4529 5543 5225 4097 4825 3718 5187 5226 2755 2754 2756 5033 5227 324 2024 3047 4947 5228 4001 4620 4128 5268 5229 1174 3656 4666 5009 5230 3156 4340 3825 4864 5231 493 482 2994 4966 5232 1899 3862 4759 5013 5233 1975 3996 403 5248 5234 4332 4763 3793 5504 5235 3893 4922 1441 5045 5236 1415 4346 4236 4835 5237 2559 4989 2819 5236 5238 2398 2831 2548 5081 5239 3123 4295 3810 5124 5240 4081 4663 1013 5518 5241 2176 2174 4600 4757 5242 2496 3746 4314 5239 5243 3627 3557 3605 4587 5244 2032 3959 334 4839 5245 3691 4271 2073 4771 5246 2786 2779 3289 4956 5247 1458 4472 3790 4913 5248 1817 3779 4159 5025 5249 3818 4221 2725 5187 5250 3871 4519 4463 4903 5251 2315 3103 4053 4505 5252 1584 1585 847 4245 5253 2217 4436 3680 5185 5254 3830 4740 4670 5611 5255 3695 4204 1442 4549 5256 3831 4645 1138 4876 5257 1532 856 4564 5264 5258 3661 4495 3969 5201 5259 2116 3947 2110 4398 5260 1968 4344 3862 5013 5261 2076 4528 3691 4771 5262 2206 4881 3908 5017 5263 2768 2764 2018 5027 5264 1447 4500 3840 5221 5265 4095 5236 3169 5365 5266 2630 4154 3682 4989 5267 3733 4480 2090 4768 5268 1614 1741 4101 5326 5269 1756 1127 4088 5322 5270 1723 4181 3713 5227 5271 2741 4419 3867 5026 5272 1094 4736 4152 5318 5273 3835 4545 5132 5314 5274 2948 3955 4616 4979 5275 3126 4004 2190 4559 5276 1014 4093 4675 5518 5277 2609 4315 3764 4625 5278 3763 4319 2221 4625 5279 3910 4517 4228 5434 5280 764 1511 4483 5052 5281 3721 4916 1043 5078 5282 3796 4190 1842 5207 5283 3672 4741 4053 4965 5284 3784 4453 4351 5414 5285 828 4288 826 4754 5286 2301 4129 3679 5044 5287 4409 4600 3253 5076 5288 4319 4516 2961 4606 5289 369 4355 306 4850 5290 2606 4102 2607 5323 5291 3659 3927 4752 4988 5292 3723 4652 4507 4842 5293 1823 4160 915 5350 5294 4059 4493 3716 5542 5295 1313 4470 3657 5406 5296 1624 4223 3652 5008 5297 3832 4141 1874 5340 5298 3121 2055 4704 5121 5299 964 4486 1841 5207 5300 3723 4462 631 5261 5301 3995 4548 2541 5047 5302 2177 3991 4361 4757 5303 754 4279 755 4481 5304 3184 3995 5047 5298 5305 415 477 476 4146 5306 2929 4198 3758 5473 5307 2479 4384 3673 5007 5308 2337 2166 4424 5131 5309 2398 3838 4579 4733 5310 3950 4062 469 5013 5311 3744 4411 2235 4882 5312 642 4203 3698 5149 5313 3184 2420 2541 3995 5314 2755 3847 4565 5033 5315 2877 3303 3872 4463 5316 2287 4272 4855 5607 5317 1808 5253 4468 5351 5318 4419 4617 3387 4623 5319 1419 4254 3994 5561 5320 1455 4535 4147 5223 5321 3795 3859 4611 5082 5322 3147 4427 2933 5185 5323 3109 4768 2191 5363 5324 2534 4077 2399 4579 5325 3850 4790 3148 4887 5326 1825 1960 3863 4533 5327 1154 4197 3764 4632 5328 1188 4207 3766 4631 5329 1188 3766 4207 4634 5330 3820 4209 1161 4635 5331 3763 4178 1715 4899 5332 1409 4178 3764 4899 5333 432 4157 2018 4904 5334 2725 4221 3818 5035 5335 1062 4446 3754 4812 5336 4050 5076 3941 5131 5337 2765 2768 4157 5027 5338 3377 3877 2740 4791 5339 3781 1466 4352 4710 5340 2202 3694 4434 5005 5341 2204 4437 3694 5005 5342 2430 2431 4084 4582 5343 3659 4752 4452 4988 5344 3064 403 1975 3996 5345 4191 4583 797 4869 5346 3868 4374 1594 5034 5347 3987 4639 4358 5327 5348 990 1152 5330 5499 5349 1820 4627 3833 5561 5350 3850 4604 1699 4813 5351 3772 4603 3267 4703 5352 2885 4401 2954 5107 5353 3685 4582 2425 4990 5354 2332 4422 3672 4741 5355 3788 4122 3912 4273 5356 1841 4486 3837 4798 5357 3695 4310 4196 4450 5358 4236 4346 1415 5508 5359 3267 2882 4551 5056 5360 1975 403 307 5248 5361 2486 4661 3887 4840 5362 1464 4426 3843 5132 5363 2384 4155 4154 5628 5364 3820 4635 1161 5150 5365 1069 4663 4081 5381 5366 1797 4136 3770 4984 5367 3748 4208 4282 4312 5368 3791 5089 4096 5285 5369 3980 4631 3710 4714 5370 3702 5084 2239 5126 5371 3699 4027 4841 5369 5372 1916 3848 1591 5224 5373 3734 4740 4630 5479 5374 1825 4533 4344 5013 5375 403 3064 385 3996 5376 962 3652 4242 5034 5377 2368 4458 3068 4466 5378 691 4581 4106 5563 5379 2746 4508 3842 5622 5380 653 4329 651 4572 5381 3677 4869 803 5122 5382 1377 4420 4233 5444 5383 3781 4240 1416 4710 5384 2478 4580 3904 5028 5385 1440 4450 3695 4549 5386 1172 1173 4666 4992 5387 990 1648 1152 5499 5388 1234 1712 4550 4831 5389 3820 4266 4209 4333 5390 3774 4261 4206 4330 5391 4210 4264 3803 4324 5392 1699 4852 3850 5011 5393 3065 3111 3338 4674 5394 1133 4546 4391 5550 5395 3894 3711 4407 4473 5396 1200 3797 4880 5159 5397 775 1480 4094 5295 5398 3827 4581 4506 5418 5399 3952 5186 3776 5252 5400 2688 4281 3816 4295 5401 2337 4424 5076 5131 5402 1916 1590 3848 5224 5403 3587 4603 3588 4703 5404 1707 4807 1004 4997 5405 2311 4225 3683 5210 5406 1711 3778 4663 5381 5407 1205 1853 4166 4943 5408 3803 4264 4210 5031 5409 3867 4972 1289 5543 5410 1224 4383 3846 5059 5411 3766 4327 4566 5145 5412 3154 4427 3680 4933 5413 1361 3985 4611 5284 5414 3867 4080 1804 4602 5415 2860 3764 4153 4625 5416 3722 3919 4638 4980 5417 3295 4124 3821 5006 5418 3722 4376 3919 4980 5419 3184 5047 3841 5298 5420 3301 4447 3749 4787 5421 796 4164 3679 5599 5422 3994 4254 1419 5011 5423 1703 3680 4538 4938 5424 796 3679 5246 5599 5425 2177 2179 4361 5051 5426 1949 4250 3846 5544 5427 4246 4305 3721 5168 5428 3064 385 3996 4674 5429 3754 4446 1062 4872 5430 761 4416 3680 4938 5431 1091 4515 3836 4678 5432 3358 4849 3903 5003 5433 3678 4256 3937 4982 5434 4924 5032 4705 5350 5435 4460 5104 1065 5390 5436 3150 4670 3850 4697 5437 3126 4004 4559 4898 5438 1817 4159 3779 5444 5439 3296 4490 3886 4682 5440 3802 4334 4569 5141 5441 3802 4567 4334 5140 5442 3783 4323 4567 5140 5443 3766 4569 4327 5141 5444 2199 2201 4434 5490 5445 719 1740 704 4244 5446 3928 4696 3650 4820 5447 1430 4329 4532 5352 5448 3693 4331 4756 5209 5449 3968 3663 4534 5340 5450 3671 4512 4460 5104 5451 3997 4355 369 4850 5452 4188 4603 3772 4703 5453 3763 4416 760 5070 5454 1227 3885 4515 4678 5455 1138 4645 3958 4876 5456 1789 5116 4302 5595 5457 3952 4717 5186 5252 5458 3937 4256 3678 4392 5459 1670 1689 873 4433 5460 1251 5072 961 5421 5461 2095 4323 3783 4650 5462 2027 3560 3630 3973 5463 2221 4319 3763 4651 5464 3786 4329 652 4655 5465 652 4329 3786 4656 5466 1694 4273 3912 4746 5467 3908 4178 1250 5070 5468 4228 3728 4842 5434 5469 2239 4251 3702 5126 5470 4191 4311 3684 4878 5471 1430 4532 4655 5352 5472 2551 4170 2549 4587 5473 1873 1878 4782 4951 5474 3989 4565 2754 5160 5475 2544 4458 3887 5165 5476 3734 3988 4740 5479 5477 1430 4655 4329 5352 5478 4145 4383 1590 5224 5479 2636 4196 5479 5644 5480 3999 4794 3242 5528 5481 737 638 1566 4435 5482 2199 2201 2200 4434 5483 2200 2202 2203 4434 5484 2210 2211 2205 4437 5485 2204 4437 2205 4439 5486 2203 2204 2205 4439 5487 2205 2268 3174 4439 5488 1070 829 1747 4438 5489 2854 3895 2853 4126 5490 2482 3879 2665 4758 5491 1040 4635 4220 5180 5492 642 644 640 5149 5493 4493 4722 4181 5592 5494 1762 700 1674 5000 5495 3895 4126 2854 4499 5496 1911 3885 1227 5111 5497 2412 4458 4431 4466 5498 1889 3928 1298 5313 5499 3867 3254 4616 4979 5500 4157 4241 417 4920 5501 2786 4359 3817 5255 5502 4179 4229 3687 5214 5503 898 4070 4766 4935 5504 3185 4791 4445 4792 5505 3970 4548 3855 4919 5506 1092 3887 1034 4885 5507 1299 1298 1889 3928 5508 2567 4158 3764 4847 5509 2315 4505 4053 5423 5510 3755 4230 1696 4873 5511 603 4332 3714 4988 5512 3325 3651 4973 4996 5513 4147 4535 3738 5223 5514 4127 4591 3853 4774 5515 4327 4588 3780 5438 5516 4162 4620 2454 5268 5517 306 4355 1475 4850 5518 2704 2206 4881 5005 5519 4220 4635 3819 5180 5520 1869 4679 3785 5200 5521 1698 4850 1958 4852 5522 1070 829 4438 5336 5523 3706 4106 4581 5563 5524 2233 4356 3744 4882 5525 2933 4287 3765 4986 5526 3671 5104 4460 5390 5527 4351 4453 3784 5460 5528 3061 2307 2569 4516 5529 3882 2798 4278 4628 5530 2912 5060 4398 5249 5531 2536 3351 3334 4973 5532 2832 4063 2187 4779 5533 1470 3982 814 4936 5534 3029 3818 4417 5035 5535 3758 2930 4368 5054 5536 3772 4806 4653 5547 5537 797 4583 4191 5386 5538 3822 4221 3226 5035 5539 3739 4320 4148 5286 5540 4233 4420 3779 5444 5541 3316 2471 2657 5201 5542 3359 4157 1994 4772 5543 1912 551 1949 5544 5544 4797 5072 3830 5421 5545 3908 2206 4434 5005 5546 1330 4140 3821 4785 5547 1756 4088 4612 5322 5548 1840 4496 4345 4679 5549 3864 4074 2678 4793 5550 898 4766 1010 4935 5551 2717 4312 3668 4983 5552 1069 4238 1856 4694 5553 4113 4705 3737 5349 5554 3898 2187 4647 4779 5555 2084 3109 4573 5630 5556 4089 4201 1512 5532 5557 1864 4026 4679 5366 5558 3840 4220 1032 5221 5559 1702 3754 4414 4812 5560 1424 1812 4033 4636 5561 1741 4556 4101 5326 5562 2548 3838 4432 4579 5563 3713 4788 1723 5227 5564 3653 4706 1887 4866 5565 4095 4174 3169 5236 5566 3967 5263 3813 5461 5567 1123 3958 1138 4645 5568 3887 4443 1034 4885 5569 2586 4469 3703 5095 5570 3371 2758 2868 3851 5571 1919 1419 1305 3851 5572 2794 3849 3373 4786 5573 2402 3871 4733 5051 5574 3983 4307 3705 4421 5575 3689 5479 4196 5644 5576 3320 4143 5036 5391 5577 4135 4435 3733 4711 5578 4398 5060 3892 5249 5579 2653 2611 2630 4989 5580 4246 4249 3721 4305 5581 2538 3881 2491 5160 5582 1533 4678 4083 5111 5583 3832 4574 3326 5106 5584 798 797 4583 4869 5585 4215 4570 2879 4654 5586 2103 4568 4215 4658 5587 650 652 1551 5023 5588 1188 1485 1187 5024 5589 1128 4317 5109 5259 5590 1498 3874 1910 4575 5591 3702 5296 4922 5377 5592 3909 4808 777 5510 5593 1272 3916 1194 5476 5594 3728 4451 745 5216 5595 3842 5167 2746 5622 5596 1022 4732 4500 5221 5597 3683 4691 2311 5210 5598 2066 4949 2072 5211 5599 3350 4620 2540 5139 5600 808 815 4498 4936 5601 3737 4705 4113 5208 5602 3756 4837 3967 5263 5603 1331 4550 3821 5144 5604 3344 2834 3873 5081 5605 3167 4390 3761 4817 5606 2072 4343 3857 4955 5607 2560 2826 2827 5073 5608 3413 3273 3863 5139 5609 2866 3832 4150 4800 5610 616 4629 615 5445 5611 3410 4665 2994 4966 5612 3882 4278 2798 5389 5613 894 4111 1406 4514 5614 1804 3867 4602 4972 5615 3752 4536 1477 5025 5616 1137 1138 3958 4876 5617 1698 1420 4850 5011 5618 417 4157 480 4241 5619 3803 4910 4324 5605 5620 2327 4086 2325 5341 5621 4212 4633 1489 5441 5622 869 3854 5063 5097 5623 2349 4058 4805 5593 5624 3797 4264 1778 4880 5625 2054 3804 4214 5489 5626 1193 3668 4867 5064 5627 1502 4045 795 4117 5628 3871 4302 5116 5595 5629 2538 2754 4565 5160 5630 1588 3889 1903 4738 5631 2868 3371 3851 4887 5632 4319 4651 4436 5052 5633 3908 4434 2206 5017 5634 3736 1675 4255 4980 5635 4215 4658 4568 5353 5636 4570 4654 4215 5352 5637 3806 4764 3979 4934 5638 3752 4855 4272 5607 5639 3357 4875 3890 4966 5640 3804 4308 5427 5507 5641 679 4884 687 5461 5642 686 679 687 5461 5643 3086 4983 4421 5506 5644 3906 639 4913 5012 5645 2853 3358 2708 5538 5646 2669 4510 3886 5371 5647 820 4204 3734 5206 5648 3762 4835 1060 5235 5649 3044 4300 3868 4834 5650 1671 4557 4135 5228 5651 3798 4217 2108 5175 5652 3798 3092 4219 5175 5653 1123 1137 1138 3958 5654 1441 3893 4450 4549 5655 3708 4624 4129 5014 5656 2507 4169 2505 4643 5657 2564 3204 4561 5368 5658 2054 4857 3804 5489 5659 2407 3068 2368 4840 5660 3851 1419 4254 5011 5661 639 4435 3906 5149 5662 894 4111 4514 4845 5663 1781 3695 4310 5125 5664 1502 4045 4117 5151 5665 3728 3910 4286 5434 5666 3912 3788 4285 5435 5667 3882 4683 4152 5318 5668 3874 4810 4513 5536 5669 2423 3673 4475 5007 5670 4269 4391 1746 5146 5671 827 4816 4438 5098 5672 2449 2525 2526 4896 5673 2559 2703 2819 4989 5674 2411 3059 2370 5099 5675 2235 4411 3744 4848 5676 2082 3920 3222 4659 5677 3719 4446 941 5293 5678 2865 4424 3781 4561 5679 2301 5044 3679 5300 5680 3753 5109 4317 5259 5681 4050 4600 5076 5131 5682 3854 4530 869 5063 5683 364 3996 365 4182 5684 2328 4092 3159 5359 5685 3504 4725 4065 4832 5686 1442 4204 3695 5125 5687 3992 4758 4520 4814 5688 2293 3123 4595 5124 5689 3132 2597 4131 4577 5690 2782 2821 4132 4578 5691 558 303 4895 5256 5692 3032 3030 4909 5307 5693 3716 4878 4059 5542 5694 3751 4216 2395 4762 5695 3387 4419 3388 4617 5696 1906 4738 3890 5022 5697 1729 1869 4897 5200 5698 2627 4296 2628 4665 5699 1042 1614 1741 4101 5700 2327 2326 2325 4086 5701 2328 2329 3159 4092 5702 1513 1650 1511 4089 5703 1756 1127 1130 4088 5704 770 771 1623 4094 5705 1684 1839 622 4091 5706 1623 775 1480 4094 5707 3705 4307 3983 4863 5708 3867 4623 2741 4979 5709 3691 4528 4167 5083 5710 2704 4881 4153 5005 5711 2227 3758 4202 5054 5712 4209 4609 1161 5338 5713 3729 4757 4600 5131 5714 1824 4213 3797 5159 5715 1011 4406 1275 4935 5716 1817 4288 4159 5444 5717 2250 4311 2255 4593 5718 3063 3718 4221 5066 5719 2787 4587 3821 5135 5720 2383 3710 4205 5127 5721 3796 4802 4693 5215 5722 2964 4946 3087 4957 5723 1740 3743 4160 4893 5724 1132 4546 1133 5550 5725 2142 4020 3190 5247 5726 3764 4178 1409 4941 5727 4376 4682 2308 5099 5728 3683 4225 2311 4691 5729 3741 4321 4542 5245 5730 1594 4121 4374 4907 5731 3703 4199 2584 5095 5732 1484 5109 4257 5557 5733 4289 4401 3659 5217 5734 604 4332 3793 4843 5735 3657 4409 2766 4463 5736 2826 3922 4175 5566 5737 4197 4632 1636 5269 5738 2606 2696 2607 4102 5739 3492 4617 3956 4623 5740 1416 4240 3781 4613 5741 2328 4086 2327 4092 5742 1060 4189 3762 5235 5743 4038 4659 3927 4912 5744 2130 4222 3813 4837 5745 857 919 4413 4980 5746 3704 4451 4116 5216 5747 3788 4122 5060 5435 5748 3258 3663 4349 4999 5749 3704 4116 4451 5490 5750 3335 3650 4458 4649 5751 2899 2337 2166 4424 5752 4208 4612 1263 5337 5753 3639 3051 3593 3962 5754 2211 4148 2215 4320 5755 4600 3991 5102 5529 5756 3366 3868 4745 4834 5757 3762 4189 1060 4835 5758 3882 4152 4736 5318 5759 3972 4113 3737 5349 5760 3677 4191 803 4869 5761 998 4517 4707 5439 5762 3668 4208 1263 4867 5763 2311 2312 2310 5210 5764 3699 4551 4027 5369 5765 3920 4590 3222 5217 5766 2054 4214 3804 4857 5767 3274 2954 4289 5107 5768 3694 4439 4434 5049 5769 3941 4424 2166 5131 5770 1336 4555 4522 5191 5771 1861 4190 3805 5207 5772 1731 4213 4133 5422 5773 1839 3662 4369 5193 5774 869 4530 3854 5097 5775 4180 4217 3785 4326 5776 1790 4344 3869 5039 5777 1182 3915 1690 5053 5778 2054 4214 5121 5489 5779 1715 4178 3763 5070 5780 4373 5097 5210 5558 5781 535 3511 4040 5111 5782 2877 4463 3872 4519 5783 2250 4311 4593 4878 5784 2513 4256 3678 4982 5785 4133 4213 1731 5191 5786 3696 4364 2171 4924 5787 905 4242 3674 5080 5788 3674 4192 904 5080 5789 3774 3971 4753 5115 5790 2725 2723 3029 5187 5791 4044 4662 621 5152 5792 3222 4659 3920 4908 5793 1682 4610 5063 5283 5794 316 334 2032 3959 5795 777 4538 3909 5510 5796 3663 4349 3968 4534 5797 2087 4366 3733 4768 5798 3076 2931 4059 4909 5799 1838 4420 4328 5442 5800 2899 2166 3941 4424 5801 1708 4631 4321 5488 5802 2174 2173 4600 5131 5803 1354 1823 915 5350 5804 810 4597 803 5122 5805 2349 4247 4058 5593 5806 4105 4657 4175 5278 5807 2073 2075 2071 4271 5808 1689 871 4316 5392 5809 3350 4886 4620 5139 5810 3867 4419 2741 4623 5811 4180 4326 3785 5200 5812 2411 3924 3059 5099 5813 1784 4572 4562 5119 5814 4438 4816 3730 5098 5815 3357 2992 4875 4966 5816 3876 4743 1898 5530 5817 3651 3950 4886 4973 5818 3605 4140 4587 5135 5819 651 4572 4329 4656 5820 4339 3813 5263 5461 5821 1241 4372 3884 5314 5822 1419 3994 1077 5561 5823 3109 2191 4298 5363 5824 4047 4785 1097 4831 5825 694 3858 4639 4902 5826 3544 3587 3588 4703 5827 3109 4298 4768 5363 5828 3710 4321 4205 5196 5829 3848 4383 1590 5008 5830 1823 4160 3880 4708 5831 3972 4705 4113 5349 5832 1798 4284 4064 5433 5833 3729 4600 3991 5102 5834 3584 4701 3953 5058 5835 2074 4594 4167 5565 5836 3894 4407 1073 4473 5837 4015 4473 3711 5226 5838 3802 4633 4212 5441 5839 3373 3849 2733 4918 5840 4160 4364 4244 4975 5841 320 373 3944 5040 5842 2482 2650 4400 4758 5843 2313 2311 4691 5210 5844 3031 3032 3030 4909 5845 1491 689 1452 4910 5846 3303 4157 3872 4463 5847 2315 4373 4505 5423 5848 3132 4131 2597 4722 5849 814 3982 4457 4936 5850 3677 4597 4191 5177 5851 3653 4744 4706 5637 5852 2058 4715 4998 5478 5853 3832 4226 4141 5340 5854 4154 4155 3747 5628 5855 2073 4771 4271 5055 5856 3916 4464 1194 5476 5857 3970 4548 2840 5272 5858 1421 5077 4789 5333 5859 1989 3540 3246 5035 5860 3873 3344 4963 5494 5861 3344 3873 2834 4772 5862 1477 835 837 4686 5863 2084 4768 3109 5630 5864 2911 4447 2910 4889 5865 4324 4910 3803 5209 5866 1966 3653 4716 4744 5867 2480 4396 3839 4946 5868 2407 4458 3068 4840 5869 3675 4659 4038 4912 5870 3501 4575 3955 4602 5871 2650 4400 4758 5354 5872 4600 5102 3729 5529 5873 3737 4705 5208 5349 5874 3758 4777 4325 5295 5875 3880 5032 4924 5350 5876 3924 4682 4851 5637 5877 1898 3876 1411 4743 5878 757 848 4279 4938 5879 4246 4501 4305 5168 5880 2733 3849 4296 4918 5881 493 485 482 4966 5882 1088 3862 4344 5039 5883 3140 4971 4681 4995 5884 3273 2769 3413 3863 5885 1316 1825 1960 3863 5886 1419 1305 3851 4254 5887 4021 4691 2942 5312 5888 1818 4188 3772 4653 5889 2513 4256 4982 5085 5890 4120 4745 3868 4834 5891 1379 4234 3838 4489 5892 3896 4760 3996 4851 5893 3672 4422 4195 4944 5894 1015 1013 4081 4663 5895 2546 4077 4278 5625 5896 3955 3874 4513 5536 5897 3775 4331 4263 5539 5898 4236 3776 4607 4835 5899 594 593 4756 5325 5900 4828 4851 4682 5637 5901 1972 1631 3950 5029 5902 757 4279 4416 4938 5903 3231 4270 3195 4456 5904 1004 956 4689 4807 5905 3210 2074 4167 5565 5906 2853 2708 4126 5538 5907 3906 4435 639 5012 5908 4600 4601 3991 5529 5909 751 4481 750 5439 5910 1022 4500 3865 4729 5911 3984 5063 4610 5283 5912 609 610 4563 4912 5913 2911 2910 2579 4889 5914 4286 4451 4116 5490 5915 1659 4671 3843 4751 5916 3879 4758 3992 4814 5917 3741 4542 4092 5245 5918 945 4676 4395 5366 5919 1073 4407 4156 5486 5920 3868 4300 3044 4767 5921 2996 3226 5035 5161 5922 2610 4864 4122 5334 5923 3371 4871 3851 4887 5924 3683 4225 4103 5210 5925 3397 4745 3868 4767 5926 3659 3894 4156 5217 5927 3828 4691 4021 5312 5928 3868 4664 1915 4907 5929 2330 2458 4476 5341 5930 1014 1013 4663 5518 5931 3848 4383 4145 5224 5932 1133 4391 4269 5550 5933 3399 3949 3456 4823 5934 705 4845 4430 5452 5935 4320 4437 3739 4940 5936 3782 4439 4320 4940 5937 1912 3453 551 5544 5938 4346 4607 3776 4835 5939 3871 4463 4302 4903 5940 1618 3846 4250 4734 5941 4329 4656 4572 5353 5942 1591 4374 3848 5008 5943 3242 5431 4918 5522 5944 2086 4038 4715 5367 5945 2255 4593 4311 5415 5946 3140 4937 4681 4971 5947 3841 5047 3995 5298 5948 1917 425 1888 4008 5949 3937 4982 4256 5085 5950 1699 4604 3850 4852 5951 1825 3863 4344 4533 5952 4443 4689 956 4807 5953 4016 4233 3750 4544 5954 3955 4513 2948 4616 5955 1362 1727 3985 4811 5956 3205 2887 4829 5126 5957 3222 4590 3920 4983 5958 3884 4883 3353 5040 5959 3987 4190 3796 5215 5960 3377 3877 4791 4888 5961 1723 4024 4181 5374 5962 1041 1161 4609 5338 5963 1754 1441 4922 5045 5964 2758 3851 3371 4871 5965 2308 4682 4376 5463 5966 2731 2627 2628 4665 5967 1684 4091 622 5445 5968 2288 4272 2290 4677 5969 2287 4855 4248 5607 5970 1612 3919 855 4638 5971 1498 3874 4575 4810 5972 2027 3560 3973 4397 5973 3370 3878 4904 5027 5974 3354 4520 3889 4875 5975 4381 5038 3873 5116 5976 593 4326 4756 5325 5977 1513 4089 1512 5532 5978 4135 4557 3690 5228 5979 3659 4452 4289 4704 5980 3535 518 440 4008 5981 368 390 540 4276 5982 4789 5077 3829 5333 5983 1294 4301 4187 4730 5984 3926 3723 4652 5261 5985 3222 2941 4659 4908 5986 2083 2085 4366 4507 5987 3940 4069 3661 5464 5988 2890 3205 2887 4829 5989 1350 5276 4149 5609 5990 1775 1263 4612 5337 5991 1874 4141 3832 5096 5992 4106 5000 691 5563 5993 2803 4695 2746 5528 5994 3888 4187 1463 4747 5995 2122 4750 3974 4817 5996 2546 4278 4077 5389 5997 1042 4101 1793 5433 5998 3795 4132 3859 5417 5999 4019 5097 4373 5558 6000 4171 4698 3190 5247 6001 3859 4132 3795 4611 6002 3593 3962 2011 4703 6003 3667 4257 4317 5114 6004 3668 4282 4208 4312 6005 3657 4601 4600 5529 6006 634 4036 4763 5342 6007 1441 4549 1438 4922 6008 4206 4545 4102 4689 6009 3871 3237 4519 4903 6010 3991 4600 3657 4601 6011 3722 4413 4376 4980 6012 3925 4012 3738 4573 6013 4248 4855 3752 5607 6014 2722 4097 2523 5417 6015 2661 4349 4534 4800 6016 2462 4815 4454 5535 6017 2445 4090 2968 4890 6018 3885 4865 2679 5021 6019 3804 4263 4332 5121 6020 3535 440 3531 4008 6021 1698 4852 1699 5011 6022 1905 1034 1092 4372 6023 3699 4841 4584 5369 6024 852 4057 4503 4638 6025 4645 4826 1613 5093 6026 1305 1919 3851 4795 6027 2372 2413 3988 4740 6028 551 4250 1949 5544 6029 3069 3420 4431 4458 6030 2350 4454 2462 5181 6031 761 4416 764 4483 6032 2652 5073 4669 5468 6033 1874 5096 3832 5340 6034 1956 417 4241 4920 6035 2122 2121 3974 4750 6036 2413 4740 2705 5611 6037 3934 4303 3770 4408 6038 3413 3863 4978 5139 6039 2801 4278 3923 4459 6040 779 777 4808 5510 6041 3817 4359 2786 4956 6042 3656 4918 5431 5522 6043 3229 4630 4196 5443 6044 3918 4952 4108 5388 6045 4375 4825 3192 5066 6046 3210 4167 4621 5565 6047 4395 4676 945 5464 6048 2554 2790 4995 5124 6049 4689 4807 3954 4997 6050 3821 4124 3295 5135 6051 3840 4773 2664 5467 6052 3570 3960 4761 5010 6053 583 4806 585 5547 6054 1483 4538 4371 5316 6055 1198 957 4344 5354 6056 1032 4220 3840 4901 6057 3843 4426 1464 4751 6058 3894 4473 4015 5226 6059 3006 4280 3650 4649 6060 2525 3894 4401 4590 6061 1899 1088 1021 4759 6062 4238 4468 1837 5578 6063 3139 4422 3188 4477 6064 3661 4069 3940 4361 6065 2473 2454 4162 4620 6066 1820 3833 4905 5561 6067 2291 4971 4595 5182 6068 2866 4150 3832 5106 6069 705 4244 4845 5452 6070 1664 5063 4610 5097 6071 1356 1411 1898 3876 6072 1678 1203 4036 4238 6073 869 5063 1664 5097 6074 1330 3821 4140 5144 6075 3873 5116 5038 5416 6076 3895 4126 3903 5003 6077 3780 4588 4327 5359 6078 2083 4507 4366 5360 6079 4265 4531 1268 5112 6080 3086 3236 4983 5506 6081 3941 5076 4424 5131 6082 3705 4258 4312 5156 6083 4073 4299 3790 5154 6084 1060 4746 4189 5235 6085 1639 1516 4892 5584 6086 2413 4670 3988 4740 6087 1127 4317 4088 5322 6088 4101 4337 1614 5326 6089 3682 4238 4036 5578 6090 2452 4379 4162 5268 6091 3708 4436 4319 5426 6092 2982 4373 4131 5592 6093 3872 4463 4302 4519 6094 3783 4323 5149 5317 6095 3704 4451 4286 5490 6096 1015 1014 1013 4663 6097 1104 4240 1111 4743 6098 1094 1033 4152 4736 6099 3586 4150 4576 5142 6100 4049 4414 3754 4465 6101 3856 4414 4049 4465 6102 3581 3584 3953 5058 6103 2782 4132 2821 4677 6104 3684 4184 4202 4325 6105 1334 4249 3858 4902 6106 2767 2877 3237 4463 6107 1223 4478 3874 4810 6108 1766 5151 4667 5265 6109 4102 4330 2607 5323 6110 3879 4227 1214 4967 6111 4178 4712 1738 4941 6112 1016 4553 1181 5638 6113 3389 4617 3864 4793 6114 4206 5330 1152 5499 6115 3715 4700 4151 4919 6116 2666 2665 2482 3879 6117 990 5330 4087 5499 6118 3062 3864 4617 5524 6119 526 3943 476 5029 6120 3916 4389 1194 4464 6121 1241 3884 4426 5314 6122 3888 4747 1463 4970 6123 2230 3147 2933 5185 6124 3794 4468 5253 5351 6125 4233 3750 4544 5292 6126 1910 4575 3874 4725 6127 1637 4193 4537 5176 6128 2239 4351 4251 4991 6129 3051 3962 3639 4724 6130 3734 4667 4322 5357 6131 2452 4599 4379 5268 6132 3149 4723 2554 4995 6133 2018 465 3409 4157 6134 1903 3889 1309 4769 6135 1864 4679 4345 5366 6136 3871 5116 4489 5595 6137 1362 3985 4748 4811 6138 2293 4595 3986 5124 6139 1008 4473 4407 4984 6140 2409 3869 4400 4728 6141 1533 4083 1939 5111 6142 1994 4772 4157 5396 6143 3718 4337 4265 5187 6144 4430 4845 4244 5452 6145 1284 1906 3890 5022 6146 1874 4226 4141 5424 6147 1080 4496 1840 4679 6148 3722 4638 4413 4980 6149 3581 3953 3584 4701 6150 432 465 2018 4157 6151 558 4895 4892 5256 6152 1342 4683 1343 5019 6153 4331 4543 597 5209 6154 3869 4275 958 5039 6155 1388 1389 1387 4919 6156 3188 4477 4422 5469 6157 3865 4805 4058 5593 6158 2634 3233 5163 5240 6159 4347 4837 4378 4884 6160 4142 4352 4231 5001 6161 3770 4408 4303 5094 6162 2187 4779 3898 4948 6163 1591 4374 4121 5224 6164 842 1426 4526 5436 6165 3698 4256 4323 5202 6166 1372 4657 4309 5358 6167 1336 4522 4555 5289 6168 3057 5007 4565 5178 6169 3149 2554 2790 4995 6170 1698 1420 1958 4850 6171 3846 4734 1618 5059 6172 1561 4964 4172 5299 6173 3709 4909 4320 5307 6174 3149 4723 4995 5485 6175 3735 4326 4180 5200 6176 2765 4463 4409 5027 6177 3927 4763 4038 4912 6178 3017 2251 4456 4552 6179 1785 1561 4172 5299 6180 2547 4773 2484 5043 6181 2826 4770 3922 5566 6182 1289 1804 1934 4972 6183 3684 4202 4184 4819 6184 4472 4913 1661 5012 6185 2679 3885 4856 4865 6186 3650 4820 4696 5362 6187 2896 4499 3840 5467 6188 735 4078 1726 5643 6189 3062 4487 3864 5524 6190 3965 4113 4705 5208 6191 4288 4939 4453 5444 6192 2348 4755 3312 5243 6193 3059 3924 2411 4682 6194 2361 4781 2359 5400 6195 3484 4290 533 4862 6196 1008 4407 1075 4984 6197 4051 4861 4751 5383 6198 443 4720 504 5465 6199 3523 3955 3501 4575 6200 1250 1738 4178 4712 6201 3882 5019 4683 5318 6202 392 324 3047 4947 6203 2348 4917 4755 5243 6204 2746 4695 2803 5167 6205 4001 4128 3834 5268 6206 4489 4736 1096 5416 6207 3909 4624 777 4808 6208 3686 4433 4316 4944 6209 4216 4328 3794 5253 6210 4615 5479 3689 5644 6211 3735 4217 4180 4326 6212 572 397 4412 4925 6213 2765 4157 3303 4463 6214 673 4442 3948 4993 6215 3905 3739 4870 5286 6216 3017 2252 2251 4552 6217 3413 3863 2769 4978 6218 3891 4694 4238 4801 6219 3189 5005 4153 5183 6220 3709 4059 4819 4909 6221 3131 2513 2518 4982 6222 3285 4252 4216 5292 6223 2861 5275 4501 5327 6224 1159 4742 4240 5450 6225 3701 4093 4663 5518 6226 788 789 787 5296 6227 1093 1698 1699 5011 6228 4303 4408 3934 5000 6229 998 4707 1552 5439 6230 2559 4174 4989 5236 6231 3558 3625 4064 4284 6232 3391 2679 4865 5021 6233 3017 4456 2252 4552 6234 4328 4420 3750 5442 6235 4034 4799 3947 5133 6236 4667 5118 4322 5357 6237 3881 4565 2538 5007 6238 2953 3208 2937 4588 6239 2248 4356 4882 5300 6240 1897 4254 1216 5050 6241 2613 4774 4127 5385 6242 3781 4231 4142 4352 6243 3877 4492 1288 5130 6244 3910 4707 4517 5439 6245 879 4471 4110 5245 6246 4101 4609 4266 5338 6247 4343 5065 3725 5211 6248 2513 4982 2621 5085 6249 1160 4789 4275 5634 6250 1294 4187 1633 4730 6251 2443 2445 2968 4890 6252 4078 4668 1726 5643 6253 2398 4579 4107 4733 6254 3889 4520 3354 4814 6255 1342 4683 5019 5318 6256 2844 2840 3970 4853 6257 2547 2492 4727 5043 6258 2409 4400 3869 4906 6259 3983 4421 3705 5642 6260 595 597 596 4756 6261 594 593 595 4756 6262 3711 3894 4401 5226 6263 3731 4347 4378 4884 6264 3669 4176 4193 4313 6265 2525 4401 3894 4896 6266 1455 5223 4147 5449 6267 3898 4779 4071 4948 6268 2110 2116 2111 3947 6269 3230 2336 4271 5055 6270 3989 4412 397 4925 6271 1182 4388 3915 5053 6272 2762 3038 3354 3889 6273 1309 1903 1588 3889 6274 4426 5132 1240 5314 6275 4324 4756 596 5209 6276 3335 4649 4458 5165 6277 1104 1110 1111 4240 6278 2579 3110 3979 4764 6279 2579 3979 2097 4764 6280 3259 3211 3978 4765 6281 4443 3887 4840 4885 6282 1897 1305 4254 4795 6283 2861 4358 5275 5327 6284 3718 4825 4375 5066 6285 1678 4238 4036 5342 6286 3696 4364 4160 4975 6287 1431 3976 4655 5024 6288 3504 4065 3431 4832 6289 2082 3222 3920 4983 6290 1158 1065 4512 5104 6291 1639 4892 4418 5584 6292 1673 637 4943 4988 6293 1510 3977 648 5023 6294 1432 3976 1431 5024 6295 1426 5053 4526 5436 6296 1558 4138 5304 5481 6297 3864 4826 4645 5093 6298 2116 2111 3947 4647 6299 1362 4748 928 4811 6300 3869 4379 2410 4906 6301 1510 1489 4633 5441 6302 4343 4955 2072 5062 6303 3978 4501 3259 4765 6304 3979 4650 2097 4764 6305 4522 5191 4555 5289 6306 4189 4746 3762 5235 6307 1768 1004 956 4689 6308 1241 4426 3884 5601 6309 3391 2679 3362 4865 6310 2412 3068 4458 4466 6311 4157 4904 4241 5027 6312 773 797 4777 5386 6313 4418 4892 3839 5584 6314 669 673 4442 4784 6315 3354 3889 3038 4875 6316 1783 4498 3901 4816 6317 3865 4500 4732 5221 6318 2137 4347 4071 4837 6319 3686 4477 4195 5341 6320 3320 5036 3179 5391 6321 990 4087 1648 5499 6322 1406 4111 1171 4666 6323 773 797 1478 4777 6324 3662 3897 4147 5370 6325 3919 4516 4376 5044 6326 4131 4373 2709 5423 6327 4293 4737 2521 4898 6328 793 1502 795 4117 6329 1160 4275 999 5634 6330 1707 3954 4807 4997 6331 3676 3954 4537 4692 6332 4170 4587 3821 4596 6333 753 4482 4484 4940 6334 1502 4045 5151 5265 6335 2953 4588 2937 5438 6336 847 4712 3905 4941 6337 1195 4389 1194 4846 6338 1362 3985 1361 5284 6339 3493 3492 3956 4623 6340 4319 4436 3708 5052 6341 1558 4385 4138 5481 6342 3866 4561 4424 5368 6343 3857 5065 4343 5211 6344 958 4275 3869 4932 6345 4391 4787 3749 5146 6346 854 4057 852 4638 6347 3827 4698 4171 5247 6348 2547 2684 3278 4727 6349 3770 4303 3934 4721 6350 4256 4392 3937 5085 6351 3756 4837 4222 5306 6352 1823 5022 3880 5032 6353 4108 4952 1290 5388 6354 1969 1891 1303 5091 6355 1279 4992 1172 5482 6356 3492 3495 3956 4617 6357 2853 4126 3895 5003 6358 3345 3895 2854 5467 6359 1172 1280 4708 4893 6360 4189 4835 3737 5315 6361 1042 1793 1776 5433 6362 3669 4193 4176 5197 6363 1431 3976 1432 4655 6364 2097 3979 2579 4650 6365 3169 4174 4095 5628 6366 3864 4074 3958 4487 6367 2449 2526 4114 4896 6368 3676 4807 3954 5061 6369 3917 4080 3664 5521 6370 3729 4069 3940 4838 6371 1575 4093 941 4675 6372 1014 4093 1575 4675 6373 4101 4609 1793 5433 6374 855 3919 1612 4980 6375 3982 4936 1470 5206 6376 3231 4429 3901 4456 6377 352 4850 4795 4871 6378 3320 3321 3179 5036 6379 3862 4620 4886 5139 6380 961 4797 4604 5421 6381 3903 4276 3895 5003 6382 3406 2032 334 4839 6383 3170 4722 4525 5514 6384 4307 4421 3983 4863 6385 2571 5115 2496 5239 6386 3894 4015 4896 5226 6387 4285 5041 2123 5306 6388 1318 4894 4804 5180 6389 4094 4325 3767 5413 6390 3321 3179 5036 5391 6391 3813 4506 4106 4884 6392 2604 2680 4076 4760 6393 2977 3387 4617 4623 6394 2538 4565 3881 5160 6395 2187 4647 2117 4948 6396 3750 4016 4544 5292 6397 1768 956 4443 4689 6398 1840 4345 1864 4679 6399 3938 4721 4393 5001 6400 3876 1898 4830 5530 6401 2606 4509 4139 5323 6402 3588 4188 4603 5143 6403 2982 4131 3112 5592 6404 4392 4783 1166 5002 6405 1479 4777 4318 5295 6406 4309 4657 1372 5278 6407 4565 5007 3846 5178 6408 4279 4938 848 5395 6409 3880 4363 3272 4824 6410 2011 3051 2036 3962 6411 4001 4048 3834 5188 6412 3065 4674 3653 4828 6413 3965 3737 4113 5208 6414 3972 3879 4814 5349 6415 1697 1258 1703 4031 6416 4243 4360 1326 5284 6417 1502 795 4045 5265 6418 3947 4398 4034 5133 6419 3659 4401 3894 5217 6420 4205 3787 4377 5196 6421 1397 3953 545 4701 6422 1919 3851 4795 4850 6423 3858 4305 4246 4501 6424 3877 5130 1288 5525 6425 2914 2915 4425 5203 6426 4050 4424 3941 5076 6427 1580 4833 4200 5231 6428 3605 4587 3557 5135 6429 2412 3069 4431 4458 6430 586 4133 1731 5191 6431 3861 1104 5016 5456 6432 3996 4851 3653 5046 6433 3922 3799 4309 5278 6434 2547 4727 3278 4773 6435 1822 1275 4294 4935 6436 3676 5061 3954 5541 6437 2154 4915 2168 5001 6438 2480 4109 4396 4946 6439 3659 4156 3894 4407 6440 2045 4217 4180 5372 6441 4086 4092 2328 5359 6442 2695 3353 2757 3884 6443 1815 4346 1415 4835 6444 3903 4126 3895 5233 6445 443 504 4123 5465 6446 722 5102 4838 5464 6447 1356 3876 1898 4830 6448 984 1636 4632 5269 6449 2738 4521 3877 4888 6450 3501 3955 3497 4602 6451 3712 4799 4034 5133 6452 619 4044 621 5152 6453 3705 3983 4629 4863 6454 1015 4081 1069 4663 6455 1111 4240 4742 4743 6456 3728 4517 4228 4842 6457 2616 5103 4333 5297 6458 3189 2299 5005 5183 6459 2313 4691 4505 5210 6460 4124 4550 3613 5144 6461 1414 5159 4555 5191 6462 3351 4886 4690 4973 6463 3738 4012 3925 5223 6464 3721 4249 4246 5078 6465 1812 4033 4636 5545 6466 1336 1414 4555 5191 6467 1077 3994 1419 5011 6468 2661 4534 2660 4800 6469 2548 4432 3838 5081 6470 2361 2359 2360 5400 6471 4243 4265 1268 5067 6472 3783 5149 4650 5317 6473 2650 4728 4400 5354 6474 2252 2254 4552 4926 6475 3713 4181 4493 4722 6476 2243 4351 2244 5414 6477 4456 4816 4498 5098 6478 2854 3345 2853 3895 6479 753 4200 759 5466 6480 1479 775 1478 4777 6481 3570 3571 3960 5010 6482 2327 4092 4086 5341 6483 2055 3121 2089 5121 6484 740 4452 1826 4752 6485 1637 5171 4193 5176 6486 2492 2683 4727 5429 6487 4452 4752 740 4988 6488 3057 2676 5007 5178 6489 3758 4325 4094 5295 6490 2252 4552 4456 4926 6491 3769 4105 3922 5394 6492 3586 4576 4150 5096 6493 3777 4206 4102 4689 6494 3960 4804 1318 4894 6495 3120 2722 2523 5417 6496 1172 4708 1280 5482 6497 909 4223 4731 5197 6498 3855 4548 4151 4919 6499 2392 2513 4256 4577 6500 3921 4989 4174 5236 6501 3373 4786 3849 4918 6502 1636 4539 4197 5269 6503 895 4514 4430 4845 6504 3841 4445 4066 4792 6505 1985 3432 3097 4002 6506 4358 4639 3858 5327 6507 4103 4493 4181 5592 6508 3954 4689 3935 4807 6509 968 966 967 4916 6510 3925 3738 4298 4573 6511 1189 1185 3980 4714 6512 1336 4555 1414 5159 6513 1234 4555 1333 5159 6514 3858 4249 4246 4305 6515 1203 4238 1837 5578 6516 429 4772 1994 5396 6517 1093 1699 4813 5011 6518 1399 4981 4785 5282 6519 4388 4464 3915 5053 6520 4071 4347 2137 5308 6521 3743 3914 4688 5537 6522 1654 1696 4873 5092 6523 498 3950 1631 5029 6524 4345 4496 3969 4679 6525 4229 4392 1166 5002 6526 320 3944 372 4649 6527 2361 4341 4781 5400 6528 4069 4838 3729 5102 6529 3706 5000 4106 5563 6530 4210 4836 3803 5559 6531 1431 5024 4655 5405 6532 3905 4870 3971 5286 6533 2200 4286 4434 5049 6534 3984 4577 4131 4722 6535 4456 4498 3933 5098 6536 3821 4785 4047 4831 6537 4038 4715 3793 4998 6538 769 4201 764 5052 6539 764 4201 1511 5052 6540 1113 1154 1409 4941 6541 3338 4828 3653 4851 6542 2827 3922 2826 4770 6543 3923 4278 2801 4985 6544 4513 4810 4080 5536 6545 3869 4399 957 4932 6546 3989 4565 3847 5033 6547 2220 2892 4753 5115 6548 3917 3664 4488 5521 6549 2620 3135 4256 5085 6550 1007 1477 5025 5493 6551 3738 4147 5223 5449 6552 4051 4425 2915 5203 6553 3113 3135 5085 5140 6554 1288 4492 3877 5525 6555 370 4861 395 5383 6556 4206 1245 5257 5499 6557 4371 4538 3765 5316 6558 3139 3188 2713 4477 6559 3139 3118 2325 4477 6560 4236 4346 3776 4835 6561 4552 4926 2254 5118 6562 4376 4682 3722 5463 6563 1193 4867 4156 5064 6564 2058 3293 2086 4715 6565 3101 4059 4493 4909 6566 1108 4494 4060 4910 6567 4015 4473 3894 4896 6568 949 5221 4220 5470 6569 4193 4537 4176 5197 6570 4176 4193 3717 4537 6571 4191 4777 797 5386 6572 3722 3924 4682 5099 6573 2665 4758 3879 4814 6574 3352 3899 2681 4923 6575 3571 4306 3960 5010 6576 3921 4989 4036 5090 6577 3909 4483 777 4624 6578 2616 4333 4266 5297 6579 2411 4682 3924 5099 6580 1441 4450 4164 5599 6581 2819 3921 2703 4857 6582 1912 1949 4145 5544 6583 2679 4856 3885 5021 6584 4168 4272 2289 5607 6585 3399 3456 3949 4888 6586 3126 3260 2190 4004 6587 3811 4410 3987 4684 6588 3903 3895 4276 5233 6589 4379 4599 2452 5274 6590 1906 1284 3890 5482 6591 3345 2853 3895 5003 6592 1444 4504 4137 5100 6593 4159 4288 3779 5444 6594 3312 4755 4402 5243 6595 3076 4059 2931 4819 6596 2190 4559 4004 4949 6597 687 4106 691 4581 6598 1747 4268 4438 4816 6599 2590 4096 4787 5089 6600 3920 3222 4908 5217 6601 900 4970 4283 5207 6602 3118 2325 4477 5341 6603 3897 4391 4269 5146 6604 3861 4743 4240 5456 6605 3878 5368 5027 5500 6606 2972 3972 4814 5349 6607 4043 4103 3683 4225 6608 4804 4894 3960 5180 6609 2760 3370 3878 4904 6610 3128 2243 2244 5414 6611 776 764 1511 4483 6612 761 764 765 4483 6613 753 4482 752 4484 6614 751 753 752 4484 6615 3682 4036 4989 5090 6616 1708 1757 4631 5488 6617 948 4732 1022 5221 6618 2417 3970 2840 5272 6619 3610 4550 4124 5048 6620 1937 1613 4826 5093 6621 1378 1237 4078 4900 6622 4153 4712 4178 4941 6623 1822 1275 1830 4294 6624 535 4040 1911 5111 6625 1804 4602 1934 4972 6626 3708 4319 4089 4516 6627 949 4732 5221 5470 6628 3788 4285 4647 4948 6629 1580 4200 4929 5231 6630 3839 4418 3942 5290 6631 3185 3379 4791 4792 6632 3394 3847 2755 5033 6633 1731 4133 586 5422 6634 1850 3913 4614 5237 6635 1195 1194 1272 4846 6636 1689 4488 4433 5521 6637 4204 4667 1766 5151 6638 3904 4810 4433 5028 6639 3188 2713 4477 5469 6640 549 341 4028 4891 6641 1834 1678 1203 4036 6642 2762 3889 3354 4814 6643 4184 4325 771 5413 6644 2992 431 4875 4966 6645 4103 4225 4043 4593 6646 4122 4864 3762 5334 6647 2454 2452 4162 5268 6648 909 5190 4223 5197 6649 1834 4036 1203 5090 6650 3613 4124 3610 4550 6651 690 687 691 4581 6652 836 838 4046 4811 6653 3735 4180 4527 5200 6654 2417 2844 2840 3970 6655 659 4161 4387 4799 6656 2220 4753 3971 5115 6657 4299 3749 4787 5146 6658 2682 3171 3896 5409 6659 3767 4202 4184 4325 6660 1907 540 4276 4355 6661 3854 4610 5063 5097 6662 430 499 2007 3990 6663 4341 2361 5270 5400 6664 3921 4715 4036 4989 6665 4838 5102 722 5615 6666 3890 4875 484 4966 6667 3717 4537 4193 5176 6668 3660 4450 4310 5320 6669 4646 5270 2361 5400 6670 1087 4558 4766 5343 6671 3722 4682 4376 5099 6672 3659 3927 4704 4908 6673 1187 1189 3980 5024 6674 828 1114 4288 5174 6675 4204 4322 3734 4667 6676 740 607 3927 4752 6677 1323 4701 4609 5150 6678 2999 2002 3436 4006 6679 2058 3293 4715 5478 6680 1856 4238 1069 4801 6681 1326 4243 1325 4360 6682 394 4276 4849 5003 6683 1523 4110 879 4471 6684 1241 1304 3884 4372 6685 2950 388 319 4000 6686 3272 4363 3880 4924 6687 648 4656 3977 4713 6688 2372 3988 3150 4697 6689 1762 4303 4408 5094 6690 4088 4612 4282 5337 6691 2666 2482 2972 5349 6692 1514 4089 1513 5532 6693 440 3531 4008 5136 6694 3847 4565 3989 4734 6695 2756 3394 2755 5033 6696 1612 3919 4638 5246 6697 4321 4631 3741 5488 6698 4295 4578 2782 4677 6699 4026 3969 4679 5366 6700 879 882 4471 5245 6701 1905 4372 1092 4672 6702 334 3959 335 4839 6703 2615 2452 4599 5274 6704 720 4346 729 5350 6705 2650 4758 4728 5354 6706 3886 4564 1846 4744 6707 4130 5048 4555 5289 6708 2777 4380 3945 5410 6709 1723 5063 4181 5227 6710 4208 3668 4612 5337 6711 897 4732 4457 5072 6712 3481 4888 4791 5525 6713 1972 1631 1528 3950 6714 2128 2123 5041 5306 6715 3863 4344 3862 5139 6716 649 4656 648 4713 6717 793 795 4045 4117 6718 4329 4532 3712 5291 6719 1762 4408 1816 5094 6720 3860 4497 4244 4845 6721 3906 4650 2091 4889 6722 4209 3820 4609 5338 6723 3856 4465 4049 5062 6724 3183 5153 4755 5523 6725 1867 4576 1210 5037 6726 1321 1318 4804 5180 6727 1938 4083 4678 5093 6728 4307 4863 611 4912 6729 2547 2664 2484 4773 6730 431 484 4875 4966 6731 4301 4952 3918 5009 6732 430 516 3990 4974 6733 3676 3954 4692 5541 6734 807 1470 4936 5206 6735 3631 4140 3605 5135 6736 4118 4240 3861 4743 6737 1242 4545 4206 4689 6738 3886 4744 1846 5050 6739 4450 4829 4041 5267 6740 1839 4369 4091 5156 6741 3150 3988 2372 4670 6742 3150 3988 4670 4697 6743 4184 4202 3767 4819 6744 2948 4616 3254 4979 6745 3152 2020 3442 4010 6746 2412 3068 3069 4458 6747 3657 4470 4050 5076 6748 4075 5019 3882 5318 6749 729 4346 4113 5350 6750 1511 1650 776 5014 6751 4690 4886 3950 4973 6752 3296 3886 2669 4828 6753 828 1114 826 4288 6754 3808 4562 4572 5119 6755 3924 3722 4413 5099 6756 4013 5129 3733 5238 6757 4743 4780 1898 5530 6758 4305 4693 2793 5215 6759 3804 5121 4214 5489 6760 3685 4255 4084 4582 6761 4411 4922 4032 5126 6762 4316 4542 4086 5540 6763 1577 1004 4689 4997 6764 4371 4538 1483 5510 6765 2740 3877 4445 4791 6766 1200 4880 4218 5159 6767 3969 4584 3699 4841 6768 3740 5074 4013 5129 6769 2200 4286 5049 5434 6770 319 2950 4000 4674 6771 3939 4351 3784 5460 6772 1424 1812 738 4033 6773 3523 3497 3501 3955 6774 1087 1285 5343 5344 6775 3823 4454 4815 5535 6776 4506 4884 3813 5461 6777 4838 5102 4069 5464 6778 1798 575 3558 4284 6779 1577 1707 1004 4997 6780 1210 4576 3968 5037 6781 1642 722 4838 5464 6782 1214 3879 1030 5230 6783 2265 4950 4740 5357 6784 2216 4436 2228 5426 6785 4361 5051 2179 5515 6786 3139 4422 4477 4944 6787 949 4220 4635 5470 6788 3667 4317 4199 5114 6789 1303 4734 3847 4925 6790 3805 4402 4190 4755 6791 3895 3345 4877 5467 6792 1000 5039 4275 5188 6793 2205 4439 4437 4940 6794 1968 1825 4344 5013 6795 3992 4814 4520 5230 6796 4200 4833 3709 5231 6797 1837 4468 4238 4801 6798 3675 4038 4763 4912 6799 4462 4711 635 5261 6800 3625 4064 4284 4397 6801 2082 3920 4421 4983 6802 494 4786 434 5164 6803 1087 1215 1031 4558 6804 3717 4193 4176 4313 6805 1299 3928 4696 5128 6806 645 4455 643 5149 6807 1514 1513 1512 5532 6808 3966 3803 4910 5209 6809 3183 2157 5153 5523 6810 1960 1316 3863 5162 6811 3670 4632 4197 5269 6812 3369 435 2028 5465 6813 3954 5061 4692 5541 6814 3344 3873 4963 5081 6815 2216 2228 2959 5426 6816 3804 4332 4214 5121 6817 3691 4271 4771 5055 6818 3705 4421 4983 5506 6819 1825 4344 3863 5004 6820 2627 4363 3914 5101 6821 3352 2680 2681 3899 6822 4235 4856 4515 5420 6823 3686 4086 4316 4542 6824 3693 4099 4331 4543 6825 4785 4981 3814 5282 6826 1523 879 882 4471 6827 2639 4765 4566 5127 6828 1197 4254 1419 5561 6829 1159 4240 1110 5450 6830 4193 5171 3717 5176 6831 793 4117 4045 5373 6832 3891 4737 4293 4898 6833 3897 3662 4911 5370 6834 4433 4810 3664 5028 6835 2300 2209 4029 4933 6836 1245 4803 4206 5257 6837 2118 2883 4285 5060 6838 3661 4395 4676 5366 6839 3992 3879 4814 5230 6840 4082 3710 4377 5196 6841 2682 3896 4990 5409 6842 3481 4592 4888 5525 6843 1854 4302 1428 5116 6844 512 3531 440 5136 6845 1616 4716 3653 4866 6846 3887 4661 2486 5165 6847 1039 1086 3881 5059 6848 4345 4679 3969 5366 6849 3659 4401 4289 5107 6850 3665 4333 4266 5321 6851 3777 4330 4261 5324 6852 3667 4317 4257 5322 6853 4265 4337 3718 5326 6854 4264 4324 3735 5325 6855 648 3977 1510 5454 6856 3784 4453 4288 4939 6857 1399 4140 4785 4981 6858 2608 3011 4465 4953 6859 3769 3922 4166 5394 6860 2934 2137 4347 5308 6861 3274 4289 4908 5217 6862 3916 4723 4281 5282 6863 2867 4800 5143 5397 6864 3259 3978 3211 4501 6865 4533 5013 4062 5139 6866 2608 4465 4005 4953 6867 4084 4582 4255 4606 6868 3752 4686 4855 5493 6869 1661 4913 739 5012 6870 400 3641 328 5134 6871 1867 4576 5037 5534 6872 3173 4493 4722 5514 6873 3969 4496 3699 4679 6874 3702 4032 4922 5126 6875 2801 4459 3923 4821 6876 3879 4399 1030 5004 6877 3906 2091 4650 5317 6878 4306 5180 3960 5429 6879 3927 4752 607 4912 6880 4266 5066 3241 5161 6881 4206 4545 1152 5330 6882 4433 4488 1689 4944 6883 1349 1350 4149 5609 6884 1174 1406 1171 4666 6885 1278 1859 4345 5384 6886 1102 4614 4249 5237 6887 1366 5253 1808 5351 6888 4144 4496 1003 5585 6889 2291 2875 4971 5182 6890 1865 3936 1264 4428 6891 1311 3929 4920 5347 6892 430 2007 2770 3990 6893 3612 5048 3610 5229 6894 3229 2891 4630 5443 6895 4049 4465 3754 5062 6896 777 4483 3909 4538 6897 3189 4153 2567 4158 6898 1994 3359 3303 4157 6899 4548 4853 2840 5483 6900 1110 4240 1159 4742 6901 2121 2122 3974 4817 6902 2916 4231 2159 5001 6903 1865 4406 3936 4428 6904 815 808 814 4936 6905 807 1470 814 4936 6906 3888 4067 4970 5243 6907 4029 4416 4279 4938 6908 2196 4842 4286 5434 6909 391 369 306 4850 6910 1356 1411 3876 5456 6911 793 4045 795 5373 6912 2613 4127 5240 5385 6913 3230 2336 2070 4271 6914 4474 5128 1643 5310 6915 3741 4092 4321 5245 6916 4113 4705 5032 5350 6917 3246 3540 3623 5035 6918 1327 1326 4360 5284 6919 3682 4036 4715 4989 6920 2451 2615 2836 5274 6921 3705 4312 4208 5156 6922 4122 5249 2610 5334 6923 3894 4473 4304 4896 6924 2196 4286 4842 5626 6925 3968 4534 4349 4800 6926 3204 5076 4424 5368 6927 3272 4924 3880 5184 6928 814 3982 1470 4457 6929 4445 4791 4066 4792 6930 554 3567 1807 4003 6931 1111 4240 1110 4742 6932 4275 4789 1000 5188 6933 3492 3495 3493 3956 6934 4089 4255 1675 4980 6935 3835 5132 4426 5314 6936 2755 3847 3394 5173 6937 2547 4727 4773 5043 6938 316 335 334 3959 6939 2372 2277 2413 4740 6940 3892 4387 4273 5060 6941 3929 4742 4409 5027 6942 3183 3060 4755 5153 6943 4004 5273 3778 5381 6944 3453 4250 551 5544 6945 2237 4251 2239 5126 6946 659 4161 4799 5119 6947 3725 4343 4354 5065 6948 1689 4433 1259 5521 6949 3863 3273 4728 5139 6950 1846 4905 3886 5050 6951 2514 4641 4259 5294 6952 4214 4704 2055 5121 6953 4604 4797 3830 5421 6954 977 4655 4532 5405 6955 3906 4480 2091 5317 6956 2684 3278 4727 5459 6957 1825 3863 1316 5004 6958 3458 3531 512 5136 6959 1673 4943 4452 4988 6960 1638 4629 4307 5616 6961 3654 3904 4110 5157 6962 3484 3486 4290 4862 6963 2833 2402 3237 4733 6964 3810 4595 4272 4677 6965 799 827 4754 5098 6966 2161 4393 5113 5220 6967 4358 4684 3987 5327 6968 1825 1527 4533 5013 6969 3959 4839 2032 5459 6970 771 1623 4094 4325 6971 775 4094 1623 4325 6972 1042 1614 4101 4337 6973 891 1014 4675 5518 6974 3112 4131 4722 5592 6975 3836 4515 4235 4856 6976 1938 4678 1533 5093 6977 4681 4937 3915 4971 6978 1444 5068 4504 5100 6979 3974 4442 3948 4784 6980 3171 4851 3896 5409 6981 3929 4470 4409 4742 6982 1851 1887 1966 4706 6983 1011 1275 1009 4935 6984 4148 4753 4030 5286 6985 3169 4095 2499 5628 6986 3669 4731 4223 5197 6987 1512 4089 1513 4201 6988 1511 1513 4089 4201 6989 2827 3922 4770 5179 6990 4200 3709 4929 5231 6991 2601 3170 4525 5514 6992 3855 4151 3995 4916 6993 4287 4427 3765 5185 6994 3686 4195 4086 5341 6995 2551 2549 2787 4587 6996 3723 4507 4366 4842 6997 537 4064 3624 4274 6998 941 4446 4093 4872 6999 1015 1069 1068 4663 7000 400 3566 3641 5134 7001 1840 1864 1277 4679 7002 1335 1842 1472 5237 7003 2607 4102 2696 4330 7004 3897 4787 4391 5146 7005 1351 4562 1238 4900 7006 3662 4147 3897 4369 7007 3740 3926 5074 5129 7008 842 4526 4467 5436 7009 3622 3540 4417 5035 7010 373 372 320 3944 7011 4058 4247 3865 5593 7012 4284 4609 1323 4701 7013 889 1575 941 4675 7014 891 1014 1575 4675 7015 2991 1975 307 5248 7016 3903 4852 4670 5421 7017 2834 4519 3873 5081 7018 2672 5027 5368 5500 7019 1809 4369 4147 5193 7020 1897 4822 3902 5050 7021 1071 1268 4531 5112 7022 3839 4957 4418 5290 7023 2823 4684 4358 5327 7024 1727 4611 4811 5082 7025 4276 4355 394 4849 7026 3273 2769 3863 4728 7027 4149 5276 4125 5609 7028 1304 1241 3884 5601 7029 2346 4688 3932 5522 7030 1069 1068 4663 5381 7031 3654 4110 3904 4478 7032 3823 4406 3936 4558 7033 2082 3222 2941 4659 7034 3174 5189 4439 5307 7035 3278 4773 4727 5459 7036 1548 526 3943 5343 7037 2083 2081 2085 4507 7038 462 464 424 5344 7039 2959 4516 4319 5426 7040 2758 2868 3851 4921 7041 4083 4678 3885 5111 7042 4037 4163 3740 4958 7043 4121 4374 3848 5224 7044 1859 5244 4345 5384 7045 3891 3778 5273 5381 7046 1891 3847 1303 5091 7047 3701 4675 4093 5518 7048 1202 1205 1853 4166 7049 1826 4752 4452 5486 7050 2576 2678 2578 4074 7051 3004 3003 3944 4649 7052 3914 3743 4688 4893 7053 3832 4534 3968 4800 7054 4286 4434 3704 5490 7055 3894 4401 3659 4407 7056 3711 4401 3894 4407 7057 4197 4084 4539 5532 7058 462 424 4830 5344 7059 4130 5048 3612 5229 7060 1874 1417 5096 5340 7061 3819 3960 5180 5429 7062 4001 4428 4048 5188 7063 3965 4607 4346 4835 7064 3718 4221 4337 5187 7065 3966 4543 5364 5489 7066 4283 4970 4067 5243 7067 1183 4049 4636 5447 7068 4156 4867 3668 5064 7069 1443 5257 1245 5499 7070 3693 4543 4331 5209 7071 1327 529 4068 4360 7072 4223 5190 3669 5197 7073 4051 4425 3843 5601 7074 2950 2009 388 4000 7075 4127 4774 3671 5385 7076 2083 2081 4507 5360 7077 4595 4971 3789 5182 7078 4013 5074 3926 5129 7079 2473 4162 2540 4620 7080 2757 3884 3353 5040 7081 3770 4303 4721 5094 7082 1087 1215 4558 5343 7083 3743 4363 3914 5537 7084 2922 4802 4402 5215 7085 3331 5192 3328 5625 7086 3004 3944 3003 5040 7087 3661 4361 3940 5455 7088 852 4503 4057 5641 7089 540 390 1626 4276 7090 4283 4970 3805 5207 7091 2153 4364 2171 4608 7092 3860 4430 4497 4845 7093 3723 3926 4366 5261 7094 3896 4851 3996 5046 7095 689 4910 1491 5605 7096 4179 4350 4229 5002 7097 941 4093 1177 4872 7098 3897 3662 4369 4911 7099 3842 4187 3999 4695 7100 4163 4524 3740 4958 7101 2114 4654 4750 5133 7102 1311 4920 4241 5347 7103 320 379 373 5040 7104 1704 4537 4807 5176 7105 4025 4836 5365 5559 7106 3958 4277 4074 4968 7107 2027 3973 2776 5161 7108 4130 3612 5048 5289 7109 516 4146 3990 4974 7110 4273 4387 3788 5060 7111 3691 4535 4044 5375 7112 3069 3335 3420 4458 7113 3891 4237 3778 5381 7114 753 758 4482 5466 7115 3904 4433 4810 5475 7116 3775 4357 4166 4943 7117 2546 2798 4278 5389 7118 3726 4388 4681 5480 7119 466 4157 417 4920 7120 2547 2492 2683 4727 7121 2111 4647 4063 5199 7122 3868 4374 4121 4907 7123 2134 4358 2823 4684 7124 4115 4582 4255 5348 7125 4492 4798 1288 5130 7126 3915 4388 3724 4464 7127 1222 4149 1350 5276 7128 3839 4396 4109 4946 7129 3919 855 4638 4980 7130 3698 4323 4203 5202 7131 3876 1411 4743 5456 7132 1291 1290 4952 5388 7133 4231 4393 2160 5001 7134 2491 3881 4475 5166 7135 3059 2411 3300 4682 7136 4050 4470 3866 5076 7137 3830 4670 5421 5538 7138 4036 4038 4763 5342 7139 3741 4205 4092 5359 7140 2633 4641 2514 5294 7141 4458 4840 3887 4885 7142 3422 3111 3996 4851 7143 3453 1912 3474 5544 7144 2629 3242 4918 5522 7145 748 5439 4481 5560 7146 3891 3778 4237 5273 7147 3739 4148 4030 5286 7148 3736 4255 4115 4582 7149 309 549 341 4028 7150 494 4123 4108 5164 7151 2981 4074 4856 5021 7152 3670 4197 4084 4539 7153 4195 4477 3686 4944 7154 3793 4038 4036 4715 7155 2977 3387 3388 4617 7156 2615 4379 2452 5274 7157 1244 5235 4236 5491 7158 3687 4229 4179 4350 7159 4196 4630 3695 5443 7160 1956 4241 1315 4920 7161 443 435 3369 5465 7162 3586 4576 3539 5142 7163 3698 4323 4256 5505 7164 3705 4312 4258 5506 7165 3804 4332 4263 5507 7166 3958 4074 4678 4968 7167 2982 2709 4131 4373 7168 3879 5004 1030 5230 7169 3725 4354 4629 5065 7170 3783 4323 4203 5149 7171 3092 4770 4219 5179 7172 3289 2786 4578 5255 7173 4107 4579 3838 4733 7174 2372 3988 2413 4670 7175 2175 4448 4353 5588 7176 1897 3902 4822 5631 7177 735 4900 4078 5643 7178 3011 4465 4953 5055 7179 1088 1021 4128 5039 7180 2811 2462 3998 5181 7181 1791 4160 1823 4708 7182 1789 1381 5116 5595 7183 3732 4102 4206 4545 7184 4038 4036 4715 5367 7185 3915 4547 4095 4681 7186 2027 2995 2776 3973 7187 3953 4306 3581 5058 7188 1639 4418 4892 5577 7189 3986 4595 3810 5124 7190 2139 2138 4020 4378 7191 4235 4515 3870 5420 7192 1214 4227 3879 5230 7193 634 1845 606 4763 7194 4343 4949 3857 5211 7195 2411 2308 4682 5099 7196 2623 5073 4440 5254 7197 2801 4821 3923 4985 7198 3935 4102 3835 4689 7199 3863 4728 2769 4758 7200 3739 3905 4437 5286 7201 2162 4424 2899 5113 7202 859 861 4138 5457 7203 4131 4373 3854 5592 7204 1929 533 4290 4862 7205 1522 4624 4483 5014 7206 3889 4227 1309 4769 7207 2359 4781 3072 5602 7208 3140 4681 2574 4995 7209 2819 3921 4857 5236 7210 1362 1833 928 4748 7211 4328 4796 1838 5442 7212 2959 2961 4319 4516 7213 742 4091 4629 5616 7214 3321 2729 4584 5036 7215 742 5156 4091 5616 7216 2265 4061 4950 5357 7217 3185 3379 4445 4791 7218 1790 1198 957 4344 7219 3715 4548 3970 4919 7220 3535 1965 518 4008 7221 4200 4940 4484 5597 7222 4035 4127 4116 4591 7223 1785 4172 5216 5299 7224 3173 4493 2956 4722 7225 3969 4496 4345 4841 7226 4336 4702 2685 5229 7227 3588 4603 3587 5143 7228 1094 1339 1033 4736 7229 4041 3660 4450 5267 7230 3842 4695 3999 5167 7231 1102 1043 1236 5078 7232 2163 4353 5113 5131 7233 1784 4562 1795 5119 7234 4136 4523 3711 4984 7235 4148 3709 4320 4833 7236 3969 3699 4496 4841 7237 4200 4320 3709 4833 7238 3740 5129 4013 5380 7239 3218 2408 2456 3935 7240 4036 4038 3793 4763 7241 2027 4397 3973 5161 7242 4029 4279 3853 4938 7243 997 4473 4304 5064 7244 964 1025 4149 4283 7245 2806 3949 3399 4823 7246 510 1888 425 4008 7247 443 4123 435 5465 7248 2812 4969 3349 5500 7249 3835 4545 4443 4689 7250 1891 1303 3847 4925 7251 480 417 466 4157 7252 1955 526 1306 4146 7253 3814 4281 4723 5282 7254 3704 4116 4035 5216 7255 2111 2832 4063 4647 7256 1671 644 4085 4135 7257 2794 4665 3849 4786 7258 3622 4064 4397 5035 7259 818 4192 5177 5402 7260 3667 4612 4088 5322 7261 2606 3227 4102 4139 7262 1562 1714 3930 4662 7263 1427 4464 1182 5053 7264 3494 4623 4602 4979 7265 1247 4420 1838 5442 7266 2230 4427 3147 5185 7267 4681 4971 3915 4995 7268 3331 4278 4459 5625 7269 3229 4196 4829 5443 7270 3969 4584 2729 5036 7271 3772 4133 4806 5547 7272 3989 4734 4565 5057 7273 3679 4882 4356 5300 7274 352 3997 369 4850 7275 4345 4496 1278 5384 7276 1305 3851 4254 4795 7277 3860 4244 4430 4845 7278 1633 4187 1463 4730 7279 3311 4027 4800 5397 7280 3058 3489 4022 5303 7281 2161 4393 4231 5113 7282 4097 4380 2722 5187 7283 3788 5060 4285 5435 7284 4429 4438 4268 4816 7285 3471 3442 2020 4010 7286 3311 4800 4027 5484 7287 4443 4807 956 4885 7288 3715 3970 4548 4853 7289 4111 4688 3743 4893 7290 3613 4550 3610 5048 7291 1013 4796 4081 5518 7292 3571 3580 4306 5010 7293 3833 4490 4905 5371 7294 4667 5151 3760 5265 7295 2829 4502 5148 5460 7296 4911 5370 3662 5565 7297 4166 4357 3911 4943 7298 3659 4156 3920 5217 7299 2687 4723 4281 5124 7300 3966 4025 4836 5365 7301 3331 4459 5192 5625 7302 3967 4837 4347 4884 7303 735 1378 1726 4078 7304 719 4244 704 4975 7305 4376 4413 3722 5099 7306 930 967 966 4916 7307 4915 4935 3957 5535 7308 847 1738 4712 4941 7309 1938 1533 1226 5093 7310 1160 4485 4789 5634 7311 3773 4185 4336 4880 7312 3851 2758 4921 5591 7313 2829 4502 4098 5148 7314 2719 3190 4698 5247 7315 3986 5124 3810 5476 7316 3164 3011 4953 5055 7317 4153 4158 3189 5183 7318 3676 3935 4807 5061 7319 352 3997 4850 4871 7320 3757 4268 4429 4438 7321 4101 4556 3718 5326 7322 2121 4654 3974 4750 7323 2085 4366 4507 4842 7324 2670 2538 2491 5160 7325 4218 4880 3797 5159 7326 1522 777 4483 4624 7327 1731 5110 4213 5422 7328 2346 3932 4497 5523 7329 3610 5048 4124 5229 7330 4316 4944 4488 5392 7331 2155 4721 4119 5001 7332 3705 4307 4867 4983 7333 4768 4889 2191 5363 7334 3657 4409 4470 5076 7335 3195 3231 2572 4270 7336 3879 4967 4400 5349 7337 3774 4206 5257 5499 7338 2002 3469 3436 4006 7339 494 434 503 5164 7340 4304 4473 3692 4896 7341 2137 4837 4071 5306 7342 2163 5113 3941 5131 7343 3622 4417 4064 5035 7344 3991 4361 3742 5051 7345 1902 1304 4861 5601 7346 1839 4369 1809 5193 7347 1243 1242 4206 4689 7348 3743 3914 4363 4893 7349 3724 3915 4464 4995 7350 3196 4058 2349 4247 7351 4454 4935 4915 5535 7352 3701 4663 4081 5518 7353 3705 4421 4307 4983 7354 1109 1060 4835 5235 7355 316 3959 2032 5134 7356 3941 5113 4353 5131 7357 3038 3889 2762 4824 7358 4200 4482 3739 5466 7359 2082 4421 3920 4659 7360 1205 4943 3911 5030 7361 616 615 4629 5065 7362 3539 4576 3586 5096 7363 462 4830 3990 5344 7364 3752 4536 4046 4686 7365 2914 5203 4425 5527 7366 4322 4667 3760 5118 7367 3676 4537 3954 4807 7368 3799 4309 4657 5358 7369 1878 1264 1865 3936 7370 4048 4428 4001 4698 7371 1867 1418 4576 5534 7372 3925 4472 1661 5012 7373 4555 5048 3563 5289 7374 4002 4290 3486 4862 7375 4153 4881 3908 5005 7376 3591 3962 4653 5547 7377 4000 4674 3342 4828 7378 3916 3810 5124 5476 7379 2833 3237 4519 4733 7380 1562 3930 4414 4662 7381 2666 2972 4814 5349 7382 1673 603 637 4988 7383 3709 4320 4929 5307 7384 432 480 465 4157 7385 1710 3912 4485 4746 7386 3739 4482 4200 4940 7387 3519 4065 3504 4725 7388 595 4756 656 5617 7389 2758 4444 3851 4871 7390 4409 4463 3929 5027 7391 3784 4351 4117 5414 7392 3889 4814 2762 4824 7393 4207 4262 3741 5488 7394 3622 3623 3540 5035 7395 1938 4083 1533 4678 7396 3134 4258 4594 5565 7397 3895 4499 2854 5467 7398 3863 4533 1960 5162 7399 2680 3899 3352 4957 7400 764 4483 4416 5052 7401 4740 4950 4061 5357 7402 1887 4866 4706 5046 7403 3773 4831 4218 5006 7404 331 365 525 4182 7405 3914 4688 4111 4893 7406 3769 4166 3911 5394 7407 673 681 4442 4993 7408 1037 4810 4433 5475 7409 2111 4063 2832 5199 7410 720 4975 4346 5350 7411 1443 4605 5257 5499 7412 3922 4105 5278 5394 7413 1380 4562 4161 5119 7414 2201 5017 4434 5490 7415 3631 3605 3557 5135 7416 1197 1419 1077 5561 7417 2035 3267 4703 5056 7418 3891 5273 4004 5381 7419 3637 3337 5010 5134 7420 3659 4908 4289 5217 7421 719 4160 4975 5350 7422 3060 4684 4755 5153 7423 662 4532 654 5291 7424 3857 4354 4343 5065 7425 1299 1298 3928 5128 7426 1703 4031 1258 4938 7427 3058 2008 3440 5303 7428 3966 4836 4543 5489 7429 3753 4317 4257 5114 7430 3494 4602 4623 4972 7431 3695 4196 4829 5267 7432 3838 4152 4432 5389 7433 444 4008 425 4637 7434 2880 4654 4570 5301 7435 3714 4332 4263 5121 7436 3622 4397 3623 5035 7437 2834 3873 4519 4772 7438 3666 5143 4800 5397 7439 3965 4608 2181 4705 7440 4032 4848 3900 5451 7441 4086 4262 3741 5359 7442 3903 5421 4670 5538 7443 3844 5128 4474 5310 7444 1322 4701 1323 5150 7445 3916 4389 4723 5282 7446 2518 3132 3131 4131 7447 2821 3289 2779 4132 7448 1231 1040 4894 5180 7449 3321 5036 4584 5391 7450 738 4033 1812 5545 7451 818 5177 4597 5402 7452 1071 1268 1413 4531 7453 3705 4629 4307 4863 7454 3072 4781 4341 5602 7455 2860 4625 4153 4881 7456 3748 4312 4258 5156 7457 3996 4866 4182 5046 7458 4488 4944 3672 5392 7459 4286 4842 3728 5434 7460 585 4806 4133 5547 7461 2363 2361 4646 5270 7462 3795 4531 4173 5082 7463 2188 2905 4167 5492 7464 4241 4920 3929 5347 7465 3782 4929 4320 5307 7466 3974 4817 3761 5147 7467 3948 4817 3974 5147 7468 3946 4155 4154 4762 7469 1327 1326 1325 4360 7470 4069 3940 4838 5464 7471 3745 4323 4256 5202 7472 3132 4131 2518 4577 7473 3289 4132 2821 4578 7474 3818 4265 4337 5187 7475 662 1430 654 4532 7476 3657 4600 4409 5076 7477 4298 4573 3738 5083 7478 3814 4785 4140 4981 7479 3947 5119 4063 5199 7480 3935 3835 4443 4689 7481 1438 1754 1441 4922 7482 2507 2505 2506 4643 7483 3665 4101 4266 5338 7484 1565 635 4711 5261 7485 1303 1941 1969 5091 7486 3549 4068 529 4360 7487 859 861 1558 4138 7488 1668 1429 1709 4136 7489 3762 5249 4122 5334 7490 4153 3905 4712 4941 7491 3904 4491 4476 5341 7492 1636 4197 4539 5532 7493 3752 4855 4248 5493 7494 3686 4491 3904 5341 7495 1948 1227 1911 4515 7496 1202 1205 4166 5394 7497 2503 4643 4169 5346 7498 2503 2504 4643 5346 7499 1558 883 4385 5481 7500 2133 4648 4501 5275 7501 4478 4810 3904 5028 7502 2814 5365 4836 5559 7503 2837 4441 2615 4599 7504 2300 4029 2209 5017 7505 3971 5183 3905 5286 7506 1342 5019 4075 5318 7507 3958 4678 4074 5093 7508 4235 4365 3870 4515 7509 2977 4617 3492 4623 7510 801 5151 1766 5265 7511 2994 482 2026 4966 7512 1356 3876 4386 5456 7513 1192 4156 1073 5064 7514 1242 1152 4206 4545 7515 3712 4532 4329 5352 7516 2665 3879 2666 4814 7517 732 1444 4137 5100 7518 3777 4094 4261 5361 7519 4105 4175 3922 5278 7520 3833 4490 4057 4905 7521 901 1463 899 4970 7522 2188 4167 5083 5492 7523 2507 4643 2506 5387 7524 3708 4129 3909 4436 7525 1258 4512 1716 4938 7526 3173 4722 3170 5514 7527 1092 4672 3887 4885 7528 3005 3003 4649 5165 7529 2658 4336 4185 5556 7530 4430 4514 895 4970 7531 4078 4546 1237 5259 7532 3760 4667 4204 5151 7533 2241 2239 4351 5084 7534 932 844 4526 5087 7535 3132 3112 4131 4722 7536 3352 3899 4923 4957 7537 4316 3672 4944 5392 7538 2281 4429 4945 5553 7539 1846 3886 4905 5264 7540 1690 4526 3915 4547 7541 1061 4392 4085 5202 7542 3195 4456 4270 4926 7543 1636 4539 1687 5532 7544 462 3990 4146 5344 7545 2946 4127 3166 4591 7546 2105 4658 4215 5199 7547 2152 3934 3212 5120 7548 1683 867 4229 5002 7549 2867 4800 4150 5143 7550 3880 4824 3272 5184 7551 2695 3884 2757 4930 7552 1780 4553 820 5125 7553 1118 1538 1783 4556 7554 919 857 1675 4980 7555 4206 4803 3774 5257 7556 1234 1712 1755 4550 7557 3386 2741 4623 4979 7558 1309 3889 1588 5022 7559 2005 2974 441 4062 7560 2437 4314 5212 5526 7561 2158 2154 2168 5001 7562 1362 4748 3985 5580 7563 1210 1867 1418 4576 7564 3884 4861 1304 5601 7565 3061 4516 4129 5044 7566 2430 4582 4084 4606 7567 3958 4074 3864 5093 7568 1907 1254 1310 4852 7569 1258 4031 4512 4938 7570 4398 4750 4034 5133 7571 4525 4722 3713 5514 7572 1990 320 3004 5040 7573 994 4304 4473 5425 7574 2877 4519 3872 4772 7575 3470 4125 4006 4823 7576 4032 4922 4411 5045 7577 4081 4663 3891 5381 7578 572 4925 4412 5057 7579 430 516 462 3990 7580 2837 4441 4599 5401 7581 2059 4659 4908 4998 7582 2158 2168 2185 4142 7583 732 712 1444 5100 7584 3860 3952 4684 4717 7585 2812 4818 3876 5500 7586 4411 4922 3893 5045 7587 1598 535 3447 4040 7588 4449 1695 5204 5574 7589 394 4849 404 5003 7590 3820 3973 4609 5161 7591 1810 4776 4017 4854 7592 3935 5061 3676 5541 7593 2577 4277 2576 5312 7594 4031 4427 3680 4538 7595 2502 4681 4095 5346 7596 2237 4411 4251 5126 7597 2190 4004 3260 4949 7598 3357 3890 4824 5101 7599 2422 2363 2423 5270 7600 1780 1181 4553 5125 7601 1431 4655 977 5405 7602 2694 4139 4425 5572 7603 3434 3013 3955 4832 7604 3733 4366 3926 5261 7605 2300 3166 3163 4933 7606 4275 5039 3834 5188 7607 462 4146 464 5344 7608 3581 4306 3953 4804 7609 1688 949 4635 5470 7610 2812 3876 4969 5500 7611 3663 3968 4854 5340 7612 3886 4905 4490 5371 7613 2611 2653 4518 4989 7614 2492 3142 3250 5103 7615 2616 2618 3142 5103 7616 3661 4026 3969 4495 7617 2121 2114 4654 4750 7618 2482 2665 2650 4758 7619 4132 4578 3985 4677 7620 3434 3955 3013 4979 7621 1222 5130 4149 5276 7622 2108 3318 3320 4143 7623 1818 1261 1433 4144 7624 4031 4538 3680 4938 7625 4138 5457 861 5558 7626 4405 4552 2253 5242 7627 4294 4406 3957 4935 7628 2839 4544 2828 5460 7629 1445 1797 4504 5094 7630 4293 4468 3682 4927 7631 2874 2072 4955 5062 7632 2363 3091 4475 4646 7633 2956 4722 4493 5592 7634 3769 3911 4523 5394 7635 3537 4008 3531 5136 7636 3735 4527 4326 5200 7637 2223 5054 4202 5376 7638 2346 4497 3932 4688 7639 3834 4789 4275 5188 7640 966 965 4471 4919 7641 4191 4583 3684 5386 7642 3335 3005 4649 5165 7643 4505 4691 3683 5210 7644 753 759 758 5466 7645 3789 4526 5053 5436 7646 2578 2577 2576 5312 7647 503 4123 494 5164 7648 1854 1908 4920 5116 7649 964 1025 1036 4149 7650 3839 4892 4418 5577 7651 2288 2290 2380 4677 7652 656 4756 4326 5617 7653 1772 4752 4156 4867 7654 1290 4952 4108 5614 7655 1803 1313 4470 5529 7656 2899 4424 3941 5113 7657 3933 4926 4552 5118 7658 368 394 4276 4355 7659 3612 3563 5048 5289 7660 955 1034 4443 4885 7661 3760 4322 4204 4667 7662 4118 4742 4240 4743 7663 3589 4653 3962 4703 7664 3735 4264 4100 5031 7665 4520 4758 2761 4814 7666 3886 2669 4828 5258 7667 3955 4513 4080 5536 7668 4351 5084 4117 5414 7669 3839 3942 4396 5290 7670 2165 4353 2163 5131 7671 671 4718 4370 5263 7672 4734 4925 1303 5057 7673 925 823 4183 5338 7674 780 777 4624 4808 7675 3097 3432 3488 4002 7676 3753 4199 4239 5259 7677 3537 3531 3458 5136 7678 2206 2208 4881 5017 7679 1492 4752 630 4912 7680 2500 4095 2502 4681 7681 3661 4676 4395 5464 7682 2519 4525 4577 5408 7683 2868 4887 3851 4921 7684 2252 4456 3016 4926 7685 4255 4582 3685 5348 7686 3823 4558 3936 4598 7687 3947 4161 4063 5119 7688 1772 630 1492 4752 7689 3950 4973 3651 5241 7690 2681 3899 2680 4760 7691 2905 4621 4167 5492 7692 3822 5066 4266 5161 7693 429 1994 4157 5396 7694 2633 4465 4641 5294 7695 3832 3968 4534 5340 7696 4501 4648 3812 5275 7697 3855 4548 3970 5272 7698 382 4280 3333 4649 7699 1746 4269 1136 4391 7700 3030 2215 2931 4148 7701 1096 1379 4489 5416 7702 2347 3932 2346 5523 7703 1198 4399 957 5354 7704 4102 4139 3227 5572 7705 4376 4980 3736 5598 7706 3881 4474 1039 5059 7707 4216 4252 3750 5292 7708 3773 4336 4218 4880 7709 2059 4908 4704 4998 7710 1336 531 4522 5289 7711 1562 4414 3930 5411 7712 3761 4784 3974 5147 7713 3750 4233 4016 5442 7714 801 1766 4667 5265 7715 854 852 853 4638 7716 4270 4375 2275 5321 7717 847 4482 3905 4712 7718 754 3908 4481 4712 7719 1647 1643 5128 5310 7720 3056 4778 2511 5636 7721 4160 4708 1791 4893 7722 3126 4898 4559 5367 7723 4655 5024 3809 5405 7724 3904 4810 4478 5475 7725 4067 4283 3888 4970 7726 3682 4036 5090 5578 7727 3504 3519 3431 4065 7728 3972 4967 3879 5349 7729 3781 3941 4424 5113 7730 2091 4480 3906 4768 7731 4751 4861 565 5383 7732 1382 5038 4381 5116 7733 3771 4116 4035 4127 7734 4162 4379 3834 5268 7735 3128 4453 2278 4644 7736 3801 5236 4095 5365 7737 3394 3847 5033 5173 7738 3799 4657 4309 5278 7739 3952 5252 3776 5627 7740 3794 4252 4081 5351 7741 2547 2484 4342 5043 7742 2547 4342 2492 5043 7743 594 4756 4324 5325 7744 2755 4565 3847 5173 7745 3357 4824 3890 4875 7746 3046 4859 4367 5420 7747 3894 4304 4114 4896 7748 4402 4755 3805 5243 7749 597 4331 599 4543 7750 3686 3904 4477 5341 7751 4489 5116 1381 5595 7752 2002 3469 4006 4823 7753 740 3927 607 4988 7754 1135 4391 1134 4586 7755 3637 5010 3959 5134 7756 3603 1807 3567 4003 7757 2281 4945 4874 5553 7758 4268 4438 3757 5336 7759 2640 2383 4566 5145 7760 3714 4704 4214 5121 7761 4094 4803 4261 5361 7762 4006 4125 3470 5158 7763 2338 3146 4251 5621 7764 1094 1339 4736 5318 7765 2453 2454 2452 4162 7766 4475 4646 3091 5430 7767 4379 4599 3834 5268 7768 3989 4565 3881 5057 7769 397 3989 384 4412 7770 3651 4782 3936 4951 7771 2803 2746 3081 5528 7772 2839 3939 4544 5460 7773 4458 4649 3650 5165 7774 1601 4522 3594 5547 7775 781 4808 4164 5451 7776 3946 4468 1680 5253 7777 4080 3917 5398 5521 7778 1850 3913 4486 4798 7779 2119 2187 2117 4948 7780 3765 4538 4371 5510 7781 3164 3011 3009 4953 7782 1303 4734 4250 5091 7783 1016 1780 1181 4553 7784 1780 821 820 4553 7785 4601 5102 3991 5529 7786 3049 4120 3366 4745 7787 3824 4177 4365 4858 7788 3857 3983 5065 5211 7789 1279 1172 1280 5482 7790 3143 2128 2123 5041 7791 4439 5189 3782 5307 7792 3128 4453 4644 5414 7793 535 1559 3511 5111 7794 2289 4272 2287 5607 7795 2153 3952 4364 4608 7796 3884 4415 1304 4861 7797 3316 3969 5036 5201 7798 3149 2554 4723 5485 7799 3901 4375 4268 4825 7800 4210 5031 3735 5372 7801 3718 4268 4375 4825 7802 2253 2951 4405 5242 7803 3675 4863 4307 4912 7804 4116 4286 3728 4451 7805 930 4082 4471 5196 7806 2920 4740 2265 4950 7807 2642 2640 4566 5145 7808 440 4008 521 5136 7809 4268 4375 3901 4556 7810 3718 4375 4268 4556 7811 3325 2530 4620 4996 7812 3779 5444 4453 5460 7813 1658 4269 4369 5337 7814 3971 3774 4605 5115 7815 2306 5463 2304 5531 7816 919 4413 4115 5495 7817 3851 4444 2758 5591 7818 3633 3558 575 4284 7819 1073 4156 1192 5486 7820 374 4280 4649 4820 7821 3838 4432 4152 4736 7822 2634 5163 4953 5240 7823 1338 4992 4994 5388 7824 2356 4778 2511 5632 7825 2113 4567 2095 5140 7826 2642 4569 2936 5141 7827 2113 2939 4567 5140 7828 2936 4569 2939 5141 7829 859 4138 4385 5457 7830 3804 5427 4332 5507 7831 1475 4355 1958 4850 7832 354 3997 2925 4849 7833 1461 1852 4073 4299 7834 3588 3592 4188 5143 7835 3830 5421 4126 5538 7836 3966 5364 4348 5489 7837 2942 4021 3083 4691 7838 2308 2980 4682 5463 7839 2044 2045 4180 5372 7840 3932 4111 3656 5522 7841 3922 5278 4166 5394 7842 4252 4796 4081 5351 7843 3160 4440 5107 5226 7844 4226 4574 4141 5424 7845 1284 3890 4708 5022 7846 3399 3949 3360 4888 7847 1989 4417 3540 5035 7848 1562 3930 1714 5411 7849 4598 4815 2463 5535 7850 3945 4380 2777 4956 7851 1851 4706 4564 5495 7852 3675 4038 4563 4763 7853 781 4164 5045 5451 7854 802 1567 3933 4936 7855 1810 922 4017 4776 7856 4358 4684 2134 5571 7857 4200 4320 3782 4929 7858 4407 4473 3711 4984 7859 1123 3958 4645 5093 7860 1819 4388 4464 5404 7861 3559 559 1601 5547 7862 1243 4689 4206 5361 7863 3662 4147 4621 5370 7864 3847 4734 3989 5057 7865 3874 3955 4575 5536 7866 3470 4006 3469 4823 7867 476 477 475 3943 7868 3815 4218 4831 5006 7869 948 897 1022 4732 7870 2615 4441 2836 5274 7871 4205 4321 3787 5196 7872 4555 5191 3807 5289 7873 374 4649 4423 4820 7874 3845 4574 4226 5424 7875 3142 4560 3250 5103 7876 2618 4560 3142 5103 7877 444 4008 4637 4720 7878 1221 5347 4470 5406 7879 2412 4466 4431 5430 7880 886 4827 1696 5092 7881 2072 2873 3023 4955 7882 3757 4945 4429 5553 7883 2782 4295 2780 4578 7884 2258 4986 4253 5335 7885 3261 3280 2688 4281 7886 2389 2390 4906 5208 7887 400 328 411 5134 7888 3221 4139 2694 5572 7889 4167 4594 3662 5565 7890 1668 4136 1709 4523 7891 3591 4522 3962 5547 7892 3757 4874 4945 5553 7893 3703 4391 4269 5319 7894 3651 4079 3936 4782 7895 512 440 521 5136 7896 2402 2863 4903 5051 7897 845 1680 4468 5253 7898 703 4352 3938 5068 7899 2610 2512 4864 5334 7900 1642 4838 722 5615 7901 3307 2653 4293 4518 7902 2374 4579 2399 4999 7903 3884 4425 4051 5601 7904 2390 4906 5208 5349 7905 2092 4480 5238 5505 7906 3399 2806 3360 3949 7907 689 4264 4324 5605 7908 3973 5150 3953 5297 7909 1907 4276 3903 4355 7910 3749 4787 4096 5089 7911 4400 3879 4758 5354 7912 4197 4539 3670 5269 7913 2252 3016 2254 4926 7914 2163 2899 2166 3941 7915 1087 4558 1031 4766 7916 3820 4609 4266 5161 7917 3506 5021 4865 5111 7918 4167 4621 3662 5193 7919 4248 4855 3961 5493 7920 3046 2475 4859 5420 7921 4012 3738 4573 5083 7922 816 4200 753 5597 7923 4086 4195 3686 4316 7924 4089 4201 3700 4319 7925 3708 4201 4089 4319 7926 3727 4195 4086 4316 7927 4092 4205 3741 4321 7928 3787 4205 4092 4321 7929 4099 4219 3693 4331 7930 3775 4219 4099 4331 7931 3907 4159 3779 5511 7932 4281 4295 2687 5124 7933 3264 2181 3965 4608 7934 4118 4743 3861 5456 7935 3859 4811 4611 5082 7936 4198 4778 3056 5636 7937 555 424 464 5344 7938 3638 3582 3581 3953 7939 2066 2873 2072 4949 7940 2948 3384 3955 4979 7941 1362 1833 4748 5580 7942 4755 4917 3805 5243 7943 3559 1601 3594 5547 7944 1291 4952 4301 5009 7945 3823 4454 3998 4815 7946 994 4304 997 4473 7947 1810 4776 4854 5513 7948 2556 4561 4142 5181 7949 3775 4943 4166 5539 7950 3940 3792 4657 5088 7951 3944 4672 4372 5345 7952 3080 2248 4882 5300 7953 2952 4350 3937 4982 7954 3750 4796 4328 5442 7955 2613 4511 4774 5385 7956 1264 3936 1878 4951 7957 3675 4421 4307 4863 7958 3591 3962 3589 4653 7959 4424 5076 3866 5368 7960 1591 4121 1940 5224 7961 3672 4179 4316 4965 7962 3800 4209 4183 4879 7963 2864 4607 4292 5627 7964 4401 4896 2525 5226 7965 1996 434 4786 5164 7966 370 565 4861 5383 7967 4215 4568 3786 5353 7968 3786 4570 4215 5352 7969 2491 4475 3881 5007 7970 476 3943 475 5029 7971 3641 5105 328 5134 7972 1682 4610 1664 5063 7973 1222 1349 1350 4149 7974 3901 4498 4456 4816 7975 846 932 844 4526 7976 3838 4579 4152 5389 7977 2735 3357 3890 4966 7978 2244 3939 4351 4991 7979 3149 2552 2554 5485 7980 3661 4069 4676 5464 7981 3712 4034 4750 5133 7982 4894 5138 1232 5567 7983 3773 4218 4336 5006 7984 3743 4244 4160 4364 7985 748 4481 749 5560 7986 1663 4866 1887 5046 7987 2719 5247 4698 5250 7988 3656 4111 3932 4514 7989 4074 4083 3864 5093 7990 471 441 2974 4062 7991 3991 4600 2176 4903 7992 3237 2767 4463 4903 7993 1641 4381 501 5396 7994 1819 4388 1182 4464 7995 2552 4723 2554 5485 7996 309 1950 549 4028 7997 4139 4509 3732 5323 7998 1375 1336 4522 5191 7999 4086 3727 4316 5540 8000 757 1713 848 4938 8001 836 4046 4686 4811 8002 1039 3881 1086 5057 8003 1907 4355 3903 4852 8004 3280 2781 4578 5255 8005 3744 4848 4032 5451 8006 4076 4760 4719 4990 8007 2462 2463 4815 5535 8008 4208 3705 4867 4983 8009 2181 4608 2172 4705 8010 4564 4706 1851 5637 8011 767 4184 771 5413 8012 1382 5038 5116 5416 8013 1485 5024 4634 5441 8014 3709 4929 3964 5307 8015 3164 4953 4771 5055 8016 3199 2933 3147 4986 8017 3798 4868 4219 5179 8018 4025 4095 3801 4494 8019 4302 4920 1854 5406 8020 3900 4848 4371 5451 8021 1303 3847 4734 5091 8022 3742 5051 4361 5515 8023 2265 4061 2259 4950 8024 4609 4701 3973 5150 8025 3554 4459 3336 4821 8026 3570 3959 3637 5010 8027 3715 4853 4548 5483 8028 3183 2157 3060 5153 8029 4457 4732 3865 5072 8030 3801 4174 4095 5236 8031 1303 4250 1941 5091 8032 2338 4251 4735 5621 8033 925 4183 4209 5338 8034 1040 4220 1095 4894 8035 1376 4873 792 5444 8036 2152 4224 3934 4890 8037 1086 4734 3881 5059 8038 3954 4807 4537 5176 8039 4894 4901 1232 5138 8040 2903 4573 4298 5083 8041 1329 1087 4766 5344 8042 2430 2425 2431 4582 8043 593 4527 4326 5325 8044 1528 3950 1631 5013 8045 3902 4254 3851 4795 8046 1455 4147 4535 5193 8047 3658 4345 5244 5384 8048 955 1092 1034 4885 8049 1690 3915 4526 5053 8050 2230 2933 4287 5185 8051 1534 1664 4610 5097 8052 3301 3309 3036 4934 8053 2503 4169 4681 5346 8054 3111 3064 1975 3996 8055 3724 4995 4723 5485 8056 3889 4769 4520 5230 8057 3961 4855 4686 5493 8058 3882 4432 4152 5389 8059 3794 4252 4216 5502 8060 4456 4498 4270 4926 8061 4553 4797 821 5206 8062 4236 4739 1244 5491 8063 4157 4241 3929 5027 8064 3733 3926 4711 5261 8065 3820 4333 5103 5297 8066 3945 4360 3628 5260 8067 2287 2285 4248 4855 8068 4873 4939 792 5444 8069 4255 4582 3736 4606 8070 4064 4274 537 5432 8071 2509 5006 4596 5387 8072 4270 4456 3901 4498 8073 3331 2019 3328 5192 8074 3966 4025 3803 5559 8075 4074 4678 4083 5093 8076 2812 3876 4818 4969 8077 3223 3086 3236 4983 8078 2278 4644 4453 5569 8079 4154 4174 2501 5628 8080 3725 4343 4271 5152 8081 2356 4338 4778 5632 8082 4306 4804 3960 5180 8083 4329 4572 3808 5353 8084 3675 4763 4563 4912 8085 1530 4455 639 4913 8086 4094 4803 770 5413 8087 811 803 4597 5177 8088 818 811 4597 5177 8089 2929 2930 2988 5473 8090 2405 4014 2184 4448 8091 4247 4729 3865 5611 8092 3307 4518 4293 4898 8093 3589 3962 3591 4703 8094 2921 2922 2793 4693 8095 4208 4312 3705 4983 8096 2355 3046 2475 4859 8097 802 3933 1567 5098 8098 2637 4955 3219 5262 8099 1567 4498 3933 4936 8100 2293 3986 4595 4971 8101 4160 4364 4363 5537 8102 3889 5022 4227 5184 8103 4552 5118 2253 5242 8104 3937 4783 4392 5002 8105 4266 4333 3820 5297 8106 4311 4593 3677 5415 8107 3229 4829 4196 5267 8108 2910 4889 4447 5428 8109 3937 4392 4229 5002 8110 4095 4494 4025 5346 8111 4865 5021 3885 5111 8112 3700 4201 4089 5532 8113 2696 4330 4102 5378 8114 4290 4700 1929 4862 8115 357 4895 4056 4923 8116 3748 4312 4282 5355 8117 3726 4494 4095 5346 8118 2444 5120 2448 5198 8119 2816 4599 2452 5268 8120 3357 2735 3890 5101 8121 1846 4564 3886 5264 8122 1309 4227 3889 5022 8123 3889 4520 4814 5230 8124 2691 4779 4239 5285 8125 2640 2383 2639 4566 8126 1784 653 651 4572 8127 2642 2640 2641 4566 8128 2879 2104 3000 4570 8129 2113 2098 2095 4567 8130 2113 2939 2958 4567 8131 2104 2103 2102 4568 8132 2642 2935 2936 4569 8133 2936 2938 2939 4569 8134 3388 4617 4419 5524 8135 3866 4470 4409 5076 8136 3290 2922 4402 5215 8137 2750 2751 3341 3928 8138 349 4795 352 4850 8139 2739 2740 2738 5137 8140 1311 1315 4241 4920 8141 3820 5150 3973 5297 8142 4233 4544 4016 4873 8143 2813 5346 4095 5365 8144 4122 4273 3788 5060 8145 3726 4025 4494 5346 8146 4026 3969 4495 5036 8147 1376 1386 792 4873 8148 1284 4708 3890 5482 8149 3185 3184 2843 5047 8150 3365 3400 3491 4065 8151 3752 4686 4272 4855 8152 1996 503 434 5164 8153 3877 4798 4492 5130 8154 1176 4784 4739 5147 8155 1850 4486 3913 5237 8156 1921 1338 4994 5388 8157 2697 4330 2696 5378 8158 4058 4247 3196 5520 8159 823 5075 4183 5338 8160 3998 5042 4818 5181 8161 4458 4672 3963 4885 8162 3798 4331 4219 4868 8163 2903 3109 4298 4573 8164 2829 5148 2944 5460 8165 3586 3642 4150 5142 8166 749 4481 4279 5560 8167 4215 4654 2106 5133 8168 3712 4750 4654 5133 8169 4670 4852 4604 5421 8170 2828 4544 4502 5460 8171 3974 4784 3948 5147 8172 3507 4040 3511 5111 8173 3736 4255 4089 4980 8174 1612 4980 3919 5014 8175 3738 4298 4009 4472 8176 4009 4298 3790 4472 8177 4363 4364 4160 4924 8178 1313 1803 1828 5529 8179 4173 4855 3859 5082 8180 3735 5031 4100 5372 8181 4172 4964 3771 5299 8182 3944 4649 3003 5165 8183 3965 3737 4835 5315 8184 1140 4645 4529 5543 8185 2158 4142 2916 5001 8186 4307 4421 3920 4983 8187 3611 4124 3613 5144 8188 3787 4321 4092 5245 8189 3295 4596 2549 5006 8190 4203 4633 1685 5594 8191 3698 5149 4323 5317 8192 3809 4655 3976 5024 8193 3729 3940 4069 4757 8194 2269 4042 2262 4626 8195 3177 2821 4132 4677 8196 3619 3945 3628 5260 8197 2519 2599 4525 5408 8198 2174 4757 2167 5131 8199 4133 4699 4213 5191 8200 4307 3920 4867 4983 8201 1851 1846 4564 4744 8202 3431 4832 4065 5533 8203 3581 4306 3550 5058 8204 2688 2687 4281 4295 8205 3974 4648 2121 4817 8206 4152 4432 3882 4736 8207 3664 4422 3917 4488 8208 1774 4164 1441 5045 8209 949 4732 948 5221 8210 2392 2518 2513 4577 8211 3688 4559 4004 4898 8212 4791 4888 3877 5525 8213 1145 4788 1725 5403 8214 4434 5017 3704 5490 8215 2593 4487 4419 5498 8216 3756 3967 4837 5306 8217 3058 3440 3489 5303 8218 4025 5365 2814 5559 8219 3735 4756 4326 5325 8220 2108 4143 3320 4217 8221 4504 5068 3720 5100 8222 393 3989 397 4925 8223 4421 3086 5506 5642 8224 3804 5364 4543 5489 8225 3905 3739 4482 4870 8226 4213 5110 3759 5422 8227 3960 4306 3572 4804 8228 3410 2994 2026 4966 8229 3884 4372 1304 4415 8230 3849 4994 4992 5388 8231 3769 4166 3922 5073 8232 4308 5364 660 5507 8233 3662 5193 4091 5445 8234 4409 5027 4742 5368 8235 4719 4760 4076 5600 8236 3759 4213 4133 4699 8237 3894 4590 4156 5217 8238 1729 4897 4326 5200 8239 1398 4245 4870 5257 8240 4566 4765 3710 5127 8241 4061 5118 4667 5357 8242 1380 1795 4562 5119 8243 2628 2733 2794 4296 8244 3824 4365 4235 4858 8245 3940 3661 4395 5464 8246 3748 4088 4282 5337 8247 2456 3935 2408 4840 8248 3823 4766 4070 4935 8249 1145 4037 4788 5403 8250 4690 4973 3950 5241 8251 3507 4865 4040 5111 8252 3219 5262 4955 5273 8253 2899 3941 2163 5113 8254 1823 4708 3880 5022 8255 3871 4302 4519 5116 8256 430 3990 2770 4974 8257 3966 4836 4025 5559 8258 2437 5239 4314 5526 8259 1865 1265 4406 4428 8260 1039 3881 5057 5128 8261 3936 4598 4079 4996 8262 1342 1094 1343 4683 8263 3793 4998 4715 5478 8264 3920 4156 3659 4752 8265 3386 3254 2741 4979 8266 469 4062 3950 5218 8267 2071 4271 4167 4594 8268 2289 4272 4168 4595 8269 804 803 4869 5122 8270 2561 4281 2687 4723 8271 2491 5160 3881 5166 8272 1224 1592 1949 4145 8273 4755 4917 2348 5523 8274 4032 4922 785 5377 8275 3796 4402 4802 5215 8276 3779 5148 4502 5460 8277 4233 4544 4502 5292 8278 462 3990 516 4146 8279 3814 4723 4389 5282 8280 2995 3973 3630 5058 8281 4443 4661 3887 5314 8282 1461 1459 1852 4299 8283 1598 4040 3447 4907 8284 1834 1678 4036 5342 8285 1421 4048 4789 5077 8286 932 4526 933 5087 8287 2392 4256 4540 4577 8288 1725 4788 4163 5403 8289 1055 4687 4047 4831 8290 553 414 4533 5013 8291 1276 1873 1878 4782 8292 3733 4462 4366 5261 8293 494 4108 4786 5164 8294 1008 1073 4407 4473 8295 4370 4668 671 5263 8296 2527 3160 5107 5226 8297 3751 4328 4216 5253 8298 1109 1415 4236 4835 8299 4517 4652 633 5261 8300 4172 4652 4507 4942 8301 4257 5109 3753 5557 8302 2405 4014 4448 5254 8303 3659 4156 4407 5486 8304 2746 3999 3081 5528 8305 3796 4693 4305 5215 8306 3807 4555 5159 5191 8307 4892 4895 558 5577 8308 1317 555 464 5344 8309 3414 367 4051 5194 8310 3823 3957 4406 4935 8311 3961 4855 4173 5082 8312 2974 471 4062 4978 8313 3584 3973 4701 5058 8314 4187 4695 3842 5167 8315 3067 1983 3615 4130 8316 3973 4609 4284 4701 8317 2658 4702 4336 5556 8318 1826 4452 5030 5486 8319 1080 4496 4679 5585 8320 798 797 774 4583 8321 2149 5155 4915 5172 8322 468 469 4062 4533 8323 3728 4116 4451 5216 8324 3913 3841 5069 5298 8325 370 395 322 5383 8326 2152 4890 3934 5120 8327 565 4861 4751 5601 8328 797 774 4583 5386 8329 4278 4628 2798 4985 8330 1587 4738 1903 4769 8331 2760 4904 3878 5500 8332 320 1990 379 5040 8333 3925 5012 1661 5219 8334 2092 5238 2096 5505 8335 490 2992 431 4875 8336 3275 2766 4463 4903 8337 1029 1515 988 4671 8338 1120 1024 1537 4177 8339 2677 4419 2593 4487 8340 3554 3573 3336 4459 8341 2960 4625 4319 5549 8342 3285 2645 4252 5292 8343 4488 5398 3917 5521 8344 3815 4218 4550 4831 8345 2811 2350 2462 5181 8346 1796 4414 1178 5448 8347 2167 4757 4589 5131 8348 3785 5036 4143 5391 8349 4084 4197 3670 4315 8350 3700 4197 4084 4315 8351 3388 3387 2677 4419 8352 1571 4263 599 5539 8353 3927 4763 607 4988 8354 2152 3212 3122 5120 8355 1643 4731 4474 5310 8356 2310 4593 4103 5542 8357 4262 4588 3727 4783 8358 1492 607 4752 4912 8359 4092 4476 4491 5341 8360 3991 4069 3742 4361 8361 2765 2764 2768 5027 8362 3936 3827 4406 4598 8363 4403 4569 2881 4570 8364 2881 4569 4404 4570 8365 2100 4567 4403 4568 8366 4404 4566 2643 4571 8367 3210 2188 2905 4167 8368 2295 2292 3203 4168 8369 366 365 3996 4866 8370 1244 1407 5235 5491 8371 1045 984 1636 4632 8372 3228 3229 2891 4630 8373 1708 1757 1186 4631 8374 1692 1688 949 4635 8375 2151 2138 2130 4171 8376 2869 4790 3997 4887 8377 3898 4647 4063 4779 8378 859 4138 1558 4385 8379 3650 4280 3928 4820 8380 2948 3254 3384 4979 8381 484 3890 4738 4875 8382 2532 2120 4584 5369 8383 3788 4273 3912 5280 8384 1640 1918 4241 5347 8385 1069 4694 1274 5381 8386 3851 4444 3902 4795 8387 2567 3189 2860 4153 8388 2937 4327 5141 5438 8389 3845 4141 4574 5424 8390 3893 4922 4411 5126 8391 3732 4206 4102 4330 8392 4102 4206 3777 4330 8393 3030 2215 4148 4320 8394 4216 5225 3285 5292 8395 1695 1655 4585 5328 8396 1557 4820 4423 5362 8397 3705 4629 4091 5616 8398 1639 1028 1516 5584 8399 4073 4713 1662 5154 8400 3991 4600 3729 4757 8401 3836 4365 4235 4515 8402 4020 4106 3813 4506 8403 2414 4781 2359 5602 8404 946 4152 1033 4736 8405 3296 4682 3886 4828 8406 773 4777 4325 5386 8407 2161 2893 4393 5220 8408 1678 4694 4238 5342 8409 3928 4412 1298 5313 8410 2858 5060 2912 5249 8411 3771 4953 4460 5411 8412 4172 4507 3951 4942 8413 2811 3998 2558 5181 8414 4151 4548 3715 4919 8415 3881 4565 3989 5160 8416 2901 2990 4347 4378 8417 4452 4943 3714 4988 8418 1112 4632 4245 5552 8419 3867 4616 4529 5398 8420 341 339 4028 4891 8421 3801 4095 4025 5365 8422 925 4209 4183 5470 8423 2677 4419 4487 5524 8424 3936 3827 4598 5250 8425 732 4137 1444 4504 8426 3406 2032 4839 5459 8427 3447 535 3511 4040 8428 3727 4783 4588 5002 8429 3949 4125 3655 4149 8430 4154 3682 4468 4927 8431 4532 4655 3809 5405 8432 2626 4296 2627 4688 8433 3456 3949 3478 4823 8434 1316 5004 3863 5162 8435 3570 4761 3959 5010 8436 628 625 4012 4942 8437 2193 2864 4292 5627 8438 2414 4367 4781 5602 8439 4245 4632 1112 4941 8440 4167 3662 4621 5565 8441 2414 4367 2359 4781 8442 1133 1746 1136 4391 8443 3912 4285 3788 5280 8444 1798 1547 4284 5433 8445 4181 5063 3713 5227 8446 2011 3962 2036 4703 8447 3212 3934 2152 5172 8448 2304 5463 4011 5531 8449 4113 4705 3972 5032 8450 3972 4924 4705 5184 8451 1114 4159 4288 5174 8452 3970 4853 4660 5331 8453 2461 2462 4454 5535 8454 2402 2863 3237 4903 8455 1131 1133 4269 5550 8456 3917 4529 4616 5398 8457 1900 1972 1528 3950 8458 2934 4347 5114 5308 8459 4602 4623 3867 4979 8460 877 4491 875 4542 8461 554 3567 4003 4959 8462 3944 3650 4649 5165 8463 2824 3290 4755 5215 8464 1700 4147 1809 4369 8465 3922 4105 3769 5073 8466 2617 2616 4266 5297 8467 2729 2532 2120 4584 8468 3321 2729 2855 4584 8469 2336 5055 3230 5062 8470 1366 845 1808 5253 8471 2359 4341 3072 4781 8472 1750 1785 1561 4172 8473 3218 3935 2456 5378 8474 4661 4930 2486 5165 8475 4481 5439 4451 5560 8476 2792 4501 4305 5327 8477 3965 3776 4346 4607 8478 632 1661 5012 5219 8479 403 3996 364 5248 8480 4032 4848 4411 5335 8481 3321 4584 2855 5391 8482 2619 4524 4618 5380 8483 4153 5005 3905 5183 8484 307 403 364 5248 8485 2686 4702 2658 5556 8486 740 1492 607 4752 8487 3784 4117 4351 5296 8488 776 1522 4483 5014 8489 4226 4574 3845 5625 8490 1464 4751 4426 5601 8491 4260 4605 3774 5115 8492 4171 4222 2130 5401 8493 3064 3996 3111 4674 8494 4153 4158 3905 4941 8495 3764 4158 4153 4941 8496 2189 5129 4013 5238 8497 1783 4498 1744 5075 8498 1560 3930 1714 4964 8499 4153 4625 4178 4881 8500 1907 3903 1254 4852 8501 2346 4497 2170 5523 8502 3911 4357 4166 4669 8503 3559 3591 4653 5547 8504 3962 4522 3591 4724 8505 1695 4585 1655 5204 8506 4030 3767 4261 5376 8507 3132 2597 3112 4722 8508 3904 3654 4580 5157 8509 4298 2191 4889 5363 8510 3867 4623 4602 4972 8511 2036 4699 3962 5633 8512 2561 2690 4281 4723 8513 3722 4638 4057 5264 8514 2956 4493 5542 5592 8515 3930 4619 1714 4964 8516 1055 4687 4831 5582 8517 2631 3167 4292 5117 8518 753 4484 1724 5597 8519 3729 5102 4838 5615 8520 3272 4824 4363 5101 8521 3800 4635 4220 5470 8522 2168 2185 4142 4454 8523 3271 4596 2509 5006 8524 4049 4343 3857 4354 8525 3856 4343 4049 4354 8526 2484 2896 2400 4805 8527 4063 5119 3808 5199 8528 2681 3899 4760 4923 8529 3906 5149 3698 5317 8530 3987 4410 4639 4902 8531 2361 4341 2359 4781 8532 1135 1134 1586 4586 8533 4755 5153 3860 5523 8534 354 355 3997 4849 8535 4271 4343 3856 5152 8536 4084 4197 3700 5532 8537 1741 4268 4556 5326 8538 2952 4350 2983 4588 8539 4125 4149 3949 5276 8540 1270 4243 1268 5067 8541 2983 4588 4350 5551 8542 4592 3877 4888 5525 8543 1261 4144 1818 5534 8544 3888 4970 4917 5243 8545 2796 3344 4963 5081 8546 2043 2044 2045 4180 8547 3907 3779 4453 5511 8548 4037 4788 4163 4958 8549 3779 4159 3907 4288 8550 4695 4914 2487 5516 8551 3796 3913 4693 4802 8552 2045 4180 4217 5391 8553 4092 4542 4491 5245 8554 4346 4975 3696 5350 8555 2039 4018 2037 4699 8556 3913 3796 4693 5237 8557 1378 4078 735 4900 8558 917 956 4807 4885 8559 3857 4049 4955 5062 8560 3937 4350 2952 4588 8561 2621 2952 3937 4982 8562 4172 5163 4507 5626 8563 3919 1612 5014 5246 8564 1342 1094 4683 5318 8565 1610 4706 1851 5495 8566 3336 3573 3332 4459 8567 1689 1737 4488 5521 8568 3888 4794 4730 5528 8569 2498 2501 4174 5628 8570 4730 4794 3999 5528 8571 1301 1846 4744 5050 8572 2619 5189 4524 5380 8573 3946 4762 4154 4927 8574 3325 4973 2728 4996 8575 672 671 4668 5263 8576 960 3963 916 5458 8577 1873 4951 4782 5241 8578 3571 3572 3960 4306 8579 828 826 4438 4754 8580 2920 4247 2705 4740 8581 3703 4239 4199 5259 8582 1265 4406 4428 5418 8583 2024 3425 3989 5033 8584 3788 4387 3947 4398 8585 2125 2121 4648 4817 8586 3834 4599 4379 5274 8587 4163 4788 3964 4958 8588 3826 4297 4741 5204 8589 3810 3916 4748 5476 8590 749 755 4279 4481 8591 2593 4419 2595 5498 8592 3709 3964 4909 5307 8593 3697 5212 4314 5526 8594 1329 4766 4386 5344 8595 3735 4180 4217 5372 8596 3815 4702 4336 5229 8597 2843 3381 3380 5047 8598 3779 4288 3907 4453 8599 3728 4286 3910 4451 8600 1398 4605 4245 5257 8601 3804 4348 5364 5489 8602 4141 4226 3832 4574 8603 3212 5120 3934 5302 8604 1205 1857 4943 5030 8605 3985 4611 3859 4811 8606 3926 3728 4652 4842 8607 3246 3623 4397 5035 8608 2824 4684 3987 4755 8609 4353 4448 3792 5588 8610 2292 4168 2295 5182 8611 2114 2106 4654 5133 8612 3958 4968 4678 5093 8613 3511 1559 3505 5111 8614 748 747 5439 5560 8615 2261 3101 3076 4059 8616 1052 1805 1108 4060 8617 822 925 823 4183 8618 1872 4506 690 4581 8619 3734 4061 4667 5357 8620 3728 4451 3910 4517 8621 1704 4807 3954 5176 8622 729 4113 4346 4835 8623 1916 1591 1940 5224 8624 3919 4129 3679 5246 8625 4385 5122 4042 5481 8626 3146 4991 4251 5621 8627 4294 3957 4915 4935 8628 767 772 771 4184 8629 1968 1527 1825 5013 8630 4161 4562 1380 4900 8631 3753 4199 4317 5114 8632 1997 2995 3583 5058 8633 3767 4030 4261 4803 8634 3602 4359 4068 4360 8635 4216 4328 3751 4420 8636 3196 2271 2349 4058 8637 3880 4924 3972 5184 8638 4470 5347 3929 5406 8639 3695 4829 4196 5443 8640 3311 4800 3319 5397 8641 2371 4582 4606 5598 8642 1069 1856 1274 4694 8643 3134 3286 4258 5565 8644 3860 4755 4684 5153 8645 1074 1192 1073 5064 8646 3956 4645 3864 4826 8647 3714 4214 4332 5121 8648 3860 4430 4244 5452 8649 2839 3939 2244 4991 8650 4166 4357 3775 4669 8651 3724 3916 4389 4723 8652 3929 5347 1311 5406 8653 4141 5106 3578 5192 8654 2890 4829 4041 4882 8655 3254 3168 2741 5026 8656 4565 4709 3057 5178 8657 4890 5120 2444 5198 8658 1443 1245 1648 5499 8659 2832 2117 2187 4647 8660 1163 1161 4635 5150 8661 703 3938 4987 5094 8662 3308 5107 2954 5468 8663 1195 4389 4846 5282 8664 3921 3801 4174 5440 8665 3795 4265 4243 4380 8666 4098 4502 2829 5225 8667 3970 3855 4471 4919 8668 1797 4136 1180 4504 8669 3857 4343 4049 5062 8670 3650 3944 4672 5165 8671 1133 1136 4269 4391 8672 3916 5124 3986 5476 8673 3672 4316 4195 4965 8674 3995 5332 4916 5618 8675 3858 4902 4305 5215 8676 4425 5203 3843 5527 8677 4258 4541 3134 4594 8678 3630 3584 3583 5058 8679 2558 3998 4818 5181 8680 3468 4006 3470 5158 8681 2278 5511 4945 5569 8682 1689 1259 1737 5521 8683 3904 4477 2458 5028 8684 2606 2441 4139 4509 8685 2619 2917 5189 5380 8686 4172 4116 5163 5626 8687 2316 2709 4373 5423 8688 1925 1288 5130 5525 8689 2446 2444 2448 5198 8690 3583 2995 3630 5058 8691 1096 946 1033 4736 8692 3810 4272 4046 4811 8693 4661 4930 3887 5314 8694 2045 5175 4217 5372 8695 1080 1003 4496 5585 8696 3876 1356 4386 4830 8697 3962 4133 3772 5547 8698 3899 4076 4760 5600 8699 3800 4333 4209 4879 8700 468 414 469 4533 8701 845 4468 1808 5253 8702 1079 4105 952 5205 8703 1811 4714 4246 5078 8704 2746 2744 3999 4508 8705 2371 4582 2430 4606 8706 3748 4208 4312 5156 8707 2036 3962 3051 4724 8708 4120 4856 3885 4865 8709 1024 4177 4365 5402 8710 2705 4740 4247 5611 8711 2570 4116 4591 5490 8712 4534 4574 4226 5625 8713 3732 5330 4206 5499 8714 3957 4406 4294 4581 8715 4364 4924 4363 5537 8716 4226 4534 3663 5340 8717 1535 868 4179 5540 8718 1704 4537 914 4807 8719 3841 4151 3995 5047 8720 395 4051 4861 4883 8721 525 1542 331 4182 8722 3713 4722 4493 5514 8723 366 365 364 3996 8724 960 1620 916 3963 8725 2149 4915 4119 5172 8726 3906 3698 4480 5317 8727 3768 4915 4454 4935 8728 3187 4658 3981 4934 8729 4501 5275 3858 5327 8730 2813 2502 4095 5346 8731 3851 3902 4444 5591 8732 3298 5137 3299 5298 8733 2315 3103 2317 4053 8734 2628 4296 2794 4665 8735 3059 5099 3924 5409 8736 1640 4241 4780 5347 8737 3248 4312 4258 5355 8738 568 3455 4291 4960 8739 846 844 4467 4526 8740 3732 4545 4206 5330 8741 1290 1896 4952 5614 8742 1916 4145 1590 5224 8743 3966 4836 4348 5365 8744 2861 2146 4358 5327 8745 4216 4420 3751 5225 8746 4012 3691 4535 5083 8747 2109 4750 4398 5133 8748 3686 4433 3904 4491 8749 2728 4973 4079 4996 8750 3962 3772 4133 5056 8751 4056 4946 2964 4957 8752 1024 1537 4177 5402 8753 1254 4852 3903 5421 8754 1679 4288 4939 5373 8755 2802 4628 4432 4963 8756 3581 3638 3953 4701 8757 3841 4492 3913 5069 8758 3260 4949 4004 4955 8759 3818 4337 4221 5187 8760 1741 1266 4268 5326 8761 1489 4634 4212 5441 8762 3248 4258 4312 5506 8763 4256 4323 3135 5505 8764 4263 4332 603 5507 8765 3455 3465 4291 4960 8766 973 5348 4719 5623 8767 4243 4380 4265 5067 8768 4484 4940 3782 5597 8769 3745 4203 4323 5202 8770 4010 4291 3465 4960 8771 1393 4478 1119 5331 8772 2507 2509 4596 5387 8773 4035 4116 3704 5490 8774 2663 2651 4143 4495 8775 1081 1003 4144 4496 8776 2904 2903 4298 5083 8777 2487 4695 4067 4914 8778 3911 4523 1205 5030 8779 1114 4159 1817 4288 8780 2176 2174 2173 4600 8781 4491 4542 877 5245 8782 2250 2255 2256 4593 8783 3271 2507 2509 4596 8784 2290 2293 3123 4595 8785 810 811 803 4597 8786 818 811 817 4597 8787 2663 4495 4143 5566 8788 4430 4514 3932 4845 8789 2816 2615 2452 4599 8790 2837 2615 2870 4599 8791 2151 4171 2130 5401 8792 3956 4617 4419 4623 8793 818 4597 817 5402 8794 2837 4599 2870 5401 8795 3390 4793 4074 5021 8796 1785 4172 1750 5216 8797 4213 4699 3807 5191 8798 3054 3514 1982 4793 8799 771 4325 4184 5386 8800 4185 4336 2658 5387 8801 4565 4734 3881 5057 8802 2255 2256 4593 5415 8803 355 4355 3997 4849 8804 4157 4772 3872 5396 8805 3822 4609 4101 5433 8806 2658 4185 2655 5556 8807 1095 4894 4220 4901 8808 2435 5212 2436 5548 8809 1640 4241 460 4780 8810 4570 4654 3809 5301 8811 4390 3776 5252 5627 8812 4490 4682 2980 5463 8813 3106 3248 4258 5355 8814 703 4987 1446 5094 8815 3901 4375 4270 5075 8816 3497 3955 3434 4979 8817 2860 3165 4625 4881 8818 372 3944 4423 4649 8819 463 4780 4241 4904 8820 3929 3872 4463 5406 8821 2782 2780 4295 4677 8822 2757 4930 3884 5040 8823 4030 4261 4753 5376 8824 4425 4930 2694 5572 8825 4345 4496 3658 4841 8826 1900 4759 3950 5013 8827 4384 5007 2676 5178 8828 4660 4853 3970 4919 8829 3214 4625 2960 5549 8830 4057 4905 4490 5264 8831 3221 2694 4139 4425 8832 4009 3738 4472 5449 8833 3007 2942 3083 4691 8834 3953 5180 4306 5429 8835 4953 5163 3771 5240 8836 3788 4647 4370 4948 8837 2355 2270 4859 5613 8838 702 716 4294 5339 8839 3728 4517 3926 4652 8840 1176 4034 4739 4784 8841 1128 5109 1474 5259 8842 3431 3491 3400 4065 8843 1462 1244 4739 5491 8844 395 4051 5194 5383 8845 792 4873 1386 4939 8846 2861 4501 2792 5327 8847 3966 3803 4836 5559 8848 2685 5006 4336 5229 8849 2674 3360 3949 4521 8850 2521 3307 4293 4898 8851 4168 4467 3789 5436 8852 3843 4425 4051 5203 8853 3823 4815 4598 5535 8854 4149 4283 1025 4747 8855 2152 3934 4224 5172 8856 3785 4143 4217 5391 8857 4074 4277 3836 4968 8858 1393 4478 5331 5562 8859 1469 4517 633 5261 8860 1007 835 1477 5493 8861 2783 2685 4702 5229 8862 2330 2458 2421 4476 8863 4163 4788 4037 5403 8864 2054 2112 4857 5489 8865 2364 4176 5400 5640 8866 3910 4707 3782 5189 8867 3094 4398 2109 4750 8868 3830 4729 4247 5611 8869 4370 4718 3756 5263 8870 443 504 435 4123 8871 495 4108 494 4123 8872 3671 4774 4511 5385 8873 4285 5060 2883 5435 8874 4147 4369 1700 5146 8875 2923 4199 2584 4239 8876 3851 4254 3902 5591 8877 3630 3973 3584 5058 8878 2092 5317 4480 5505 8879 3797 4336 4185 4880 8880 2364 5400 3085 5640 8881 3480 3949 3456 4888 8882 850 796 5246 5599 8883 1221 1311 5347 5406 8884 4049 4343 3856 5062 8885 384 397 393 3989 8886 1596 5034 4242 5646 8887 4171 4222 3829 5077 8888 4042 5122 4597 5481 8889 3820 4609 3973 5150 8890 3688 4036 4038 5367 8891 1557 4423 1883 5362 8892 3800 4220 5221 5470 8893 3388 4419 2677 5524 8894 3782 3910 4484 4707 8895 1084 4951 1873 5241 8896 3176 2187 2119 4948 8897 4105 5205 1079 5394 8898 3256 4293 2630 4927 8899 4018 4699 2039 5213 8900 2175 4353 4448 5220 8901 2905 3210 4167 4621 8902 2176 3991 2177 4757 8903 3744 4371 4848 5451 8904 3688 4038 4036 5342 8905 2045 2043 4180 5391 8906 3767 4325 4184 5413 8907 1254 3903 1907 5233 8908 3080 4882 4041 5300 8909 3970 4660 4919 5331 8910 2337 5076 4600 5131 8911 3720 5113 4393 5220 8912 2363 4646 4475 5270 8913 4250 4565 3846 4709 8914 616 614 615 5065 8915 2900 4587 3186 4622 8916 4289 5107 3308 5468 8917 2240 2239 5084 5126 8918 938 4932 4399 5315 8919 2981 3390 4074 5021 8920 3227 3221 2694 5572 8921 2349 4058 2276 4805 8922 984 4632 4194 5269 8923 2413 2277 2705 4740 8924 2036 3962 4724 5633 8925 3841 3913 4445 5298 8926 4573 5360 2083 5630 8927 4203 4323 3698 5149 8928 1535 872 868 5540 8929 3890 4738 1906 5309 8930 2587 4096 2691 4239 8931 708 3938 703 5094 8932 2901 4378 4347 4837 8933 4001 4620 2530 4996 8934 595 4326 656 4756 8935 595 4331 597 4756 8936 593 4326 595 4756 8937 595 596 4324 4756 8938 594 595 4324 4756 8939 4215 4658 3808 5199 8940 2371 4606 3124 5598 8941 2122 2115 2121 4750 8942 747 4451 5439 5560 8943 3904 4433 3686 4477 8944 2566 4158 4847 5115 8945 1620 916 3963 4885 8946 3928 4431 3650 4696 8947 479 1641 501 5396 8948 511 439 3640 4821 8949 2619 4618 4524 4958 8950 1548 1306 526 5343 8951 4257 4961 1520 5581 8952 3414 367 2017 4051 8953 3857 4955 4343 5062 8954 4159 5148 3779 5511 8955 3874 4810 4478 5028 8956 1722 4449 5204 5398 8957 1434 4273 4387 5280 8958 771 4184 772 5386 8959 2655 4185 2658 5387 8960 3160 4554 4440 5226 8961 4205 4377 2381 5127 8962 3254 4616 3168 5026 8963 661 1685 4633 5594 8964 1338 4992 4039 4994 8965 1657 4269 1658 5337 8966 3272 2810 4924 5184 8967 2812 5042 4818 5500 8968 4155 4526 3946 5087 8969 837 836 838 4046 8970 1400 3545 523 4140 8971 3818 4274 3945 4417 8972 2155 2895 4119 4721 8973 2952 2621 3937 5085 8974 3826 4449 4297 5204 8975 2275 4879 4270 5321 8976 3913 3796 4486 4802 8977 2656 3308 2954 5468 8978 2648 4615 4921 5371 8979 3663 3968 4349 4854 8980 4160 3743 4364 5537 8981 4576 5096 1417 5340 8982 4388 4687 4169 5404 8983 1869 4026 1201 4897 8984 3903 4276 1907 5233 8985 3698 3906 4435 5149 8986 3747 4526 4155 5087 8987 1009 898 1010 4935 8988 3941 3781 4394 5113 8989 3679 4129 3919 5044 8990 3431 4065 3400 5533 8991 3867 4080 3955 4616 8992 3910 3782 4439 5189 8993 2656 2954 5107 5468 8994 3055 2511 4778 5636 8995 439 3565 3640 4821 8996 3117 5473 2988 5640 8997 3841 4445 3913 4492 8998 4314 5239 3697 5526 8999 981 5086 3942 5269 9000 3501 4575 4602 5536 9001 3635 4284 3973 4397 9002 4240 4742 3866 5450 9003 1142 1682 1664 5063 9004 3698 4435 3906 4480 9005 3739 4437 3905 4482 9006 3708 4436 3909 4483 9007 3910 4439 3782 4484 9008 3796 3913 4486 5237 9009 3911 4440 3769 4523 9010 2371 2430 3124 4606 9011 3264 2172 2181 4608 9012 2172 2153 2171 4608 9013 2864 3264 4607 4608 9014 2864 3240 3264 4608 9015 1041 1161 1162 4609 9016 2695 4425 3884 4930 9017 3700 4606 4319 5549 9018 372 3944 373 5345 9019 834 1727 4811 5082 9020 2978 2091 4650 4889 9021 3999 4730 3656 4794 9022 2510 2694 4930 5572 9023 916 3963 4885 5458 9024 3656 5009 3999 5431 9025 3654 4478 3904 4580 9026 1070 4268 5112 5336 9027 1224 1618 1038 5059 9028 2864 4608 4607 5627 9029 2864 3240 4608 5627 9030 2411 2370 2308 5099 9031 1647 5128 4696 5310 9032 2988 5473 4692 5640 9033 4056 4895 4892 5577 9034 3514 4617 1982 4793 9035 834 4811 4686 5082 9036 3932 4688 4111 5522 9037 3865 4500 4126 4729 9038 1056 4047 1055 4687 9039 2927 4168 2289 5607 9040 3945 4956 2777 5606 9041 2437 5212 2438 5526 9042 1436 1826 5030 5486 9043 3588 3587 3592 5143 9044 797 4191 1478 4777 9045 3056 4198 2511 4778 9046 1811 1760 4714 5078 9047 3684 4583 4191 4869 9048 3551 3612 3610 5229 9049 2558 4818 5042 5181 9050 3581 3572 4306 4804 9051 1327 4068 1337 5015 9052 4302 3872 4519 5116 9053 2346 2347 2857 5522 9054 549 4891 4028 5271 9055 3703 4096 4391 5319 9056 2952 5085 3937 5438 9057 3285 4216 4252 5502 9058 3871 4977 4234 5051 9059 2982 2316 2709 4373 9060 1722 4529 4449 5398 9061 4202 4819 2223 5376 9062 2887 3993 4829 5126 9063 3771 5216 4172 5299 9064 366 3996 385 4674 9065 3928 4280 3650 4431 9066 3288 4402 4802 5453 9067 3719 3975 4072 4446 9068 3790 4073 3979 4447 9069 328 5105 411 5134 9070 1037 4433 1006 5475 9071 3576 567 4141 4673 9072 703 3938 4352 4987 9073 1262 1775 1263 4612 9074 1576 3576 567 4141 9075 3055 4778 4338 5636 9076 1891 4925 3847 5091 9077 3708 4129 4436 5426 9078 2999 4006 3436 5018 9079 4265 4337 1271 5432 9080 1002 5039 1000 5188 9081 3060 4684 2824 4755 9082 4129 4516 3061 5426 9083 4270 4375 3665 5075 9084 3903 4849 4276 5003 9085 659 4387 4161 5437 9086 4440 5073 3769 5254 9087 2511 4778 2358 5632 9088 3609 2785 2015 5229 9089 2693 3090 5088 5588 9090 1056 1055 1053 4687 9091 2200 4439 3001 5434 9092 2432 2433 4640 5290 9093 3785 4217 4143 4897 9094 3411 3427 2925 4849 9095 2972 3972 2809 4814 9096 3907 4874 4438 5336 9097 4916 5332 4461 5618 9098 3896 4760 2682 4990 9099 3618 562 1578 4274 9100 4087 4194 3746 5239 9101 3890 5309 1906 5482 9102 3756 5041 4285 5306 9103 531 4555 1619 5289 9104 1583 1723 4024 4788 9105 773 1478 4325 4777 9106 3055 2511 4338 4778 9107 3012 503 1996 5164 9108 2222 5054 2223 5376 9109 3792 3940 4657 4838 9110 1354 1847 1823 5032 9111 1141 5034 1596 5646 9112 3229 3234 4829 5267 9113 3917 4297 3831 4449 9114 757 4416 4279 5070 9115 4338 4859 2270 5613 9116 3227 4139 3221 5572 9117 3790 4009 4472 5449 9118 3878 4904 4362 5500 9119 2990 2144 2443 4224 9120 4064 3818 4337 5035 9121 3085 5400 4313 5640 9122 4262 4783 3727 5002 9123 659 4387 658 4799 9124 3602 4068 3549 4360 9125 2597 4577 4525 4722 9126 4056 5256 357 5446 9127 2258 3215 4253 4986 9128 3114 3344 4772 5494 9129 1276 1878 4558 4782 9130 3532 3457 401 4844 9131 4289 4357 3714 4943 9132 2873 4949 3260 4955 9133 2247 2253 4405 4552 9134 4305 4902 3796 5215 9135 3983 3725 5065 5211 9136 2820 4956 4380 5417 9137 3256 4293 4927 5502 9138 2558 3998 2811 4818 9139 3892 4398 4387 5060 9140 2247 2253 2951 4405 9141 1591 1940 4121 4374 9142 3790 4447 3979 4889 9143 337 4839 5138 5195 9144 4085 4540 4256 4577 9145 3916 4748 1272 4846 9146 4299 4787 4009 5146 9147 2778 2777 4956 5606 9148 4313 5400 4176 5640 9149 1599 1915 4664 4907 9150 2355 4859 2356 5632 9151 4465 3930 4953 5055 9152 4202 5054 3767 5376 9153 3941 4050 3729 5277 9154 3911 4357 4289 4943 9155 4114 4896 4304 5198 9156 4460 4953 4005 5411 9157 4366 2083 5360 5630 9158 4150 4800 3666 5143 9159 535 1911 1559 5111 9160 3004 3005 3003 4649 9161 3973 4284 3635 4701 9162 703 707 4352 5068 9163 4442 4532 669 4784 9164 2501 2384 4154 5628 9165 3903 4355 4276 4849 9166 3933 5098 802 5265 9167 3729 4050 3941 5131 9168 3861 3998 5042 5456 9169 4304 4473 3894 5064 9170 899 1463 4747 4970 9171 1985 3432 4002 5020 9172 895 894 4514 4845 9173 3788 3947 4387 5437 9174 925 4183 822 5470 9175 2383 4205 2381 5127 9176 3611 3610 3613 4124 9177 716 4935 4294 5339 9178 3908 4481 4434 5017 9179 2795 4432 2802 4628 9180 1039 4474 3881 5128 9181 1040 1801 4635 5180 9182 3917 4449 3831 4529 9183 3863 4758 2769 4978 9184 4117 5084 4405 5414 9185 431 484 490 4875 9186 3937 4588 4783 5002 9187 3267 4603 2034 4703 9188 4913 5012 4472 5363 9189 2397 2657 2471 5455 9190 4147 4369 3662 5193 9191 2942 4277 5312 5407 9192 1176 663 4034 4784 9193 2358 4778 4313 5632 9194 3953 4635 4560 5150 9195 3810 4748 3916 5124 9196 3677 4593 4311 4878 9197 3888 4514 4917 4970 9198 1956 417 566 4241 9199 643 4633 4203 5454 9200 4434 4481 3704 5017 9201 4167 4535 3691 5083 9202 2595 4419 5026 5498 9203 3296 2669 2753 4828 9204 3838 5081 4432 5416 9205 2765 2768 3303 4157 9206 2525 4590 4401 5217 9207 3712 3974 4750 5291 9208 788 785 4922 5377 9209 2301 4356 4129 5573 9210 2074 2071 4167 4594 9211 2291 2289 4168 4595 9212 2507 2508 4169 4596 9213 2549 4170 2508 4596 9214 2615 4599 4441 5274 9215 4075 4278 3882 5019 9216 4012 4619 4528 4942 9217 555 4830 424 5344 9218 3590 4188 582 4653 9219 2639 2383 2638 5127 9220 737 1565 635 4711 9221 2781 2780 4295 4578 9222 3174 3220 5189 5307 9223 820 4667 4204 5206 9224 2074 2071 3210 4167 9225 2292 2291 2289 4168 9226 2507 2508 2505 4169 9227 2549 2551 2508 4170 9228 4147 3662 4621 5193 9229 4727 4773 3883 5459 9230 4645 4826 3956 5546 9231 4227 5022 3880 5184 9232 2526 2716 4114 4590 9233 775 4325 1478 4777 9234 2356 4338 2511 4778 9235 2079 3093 2078 3951 9236 3687 4373 4131 5423 9237 2249 5170 4311 5393 9238 1213 1030 5004 5230 9239 2611 4518 3281 4989 9240 3582 3581 3953 4804 9241 3778 4636 4004 5381 9242 3822 4064 4337 5035 9243 1118 1783 1744 5075 9244 719 4975 720 5350 9245 3907 5174 4874 5336 9246 4447 4787 3292 5428 9247 4246 4714 1811 5564 9248 1064 1065 5104 5390 9249 4039 4786 485 4994 9250 3714 4704 4452 4988 9251 3737 4400 4967 5349 9252 4133 4213 3759 5422 9253 3727 4316 4179 4965 9254 3906 4650 5149 5317 9255 1894 5233 4891 5271 9256 2015 3067 3615 5229 9257 4818 5042 3876 5500 9258 4399 4400 3879 4967 9259 1640 4780 1918 5347 9260 4281 4846 3916 5282 9261 2811 3998 2462 4815 9262 4247 4740 2920 4950 9263 2852 2854 2853 4126 9264 1113 1112 4632 4941 9265 2435 4640 5212 5548 9266 3943 4146 477 5123 9267 3256 2702 4293 5502 9268 3187 2147 4658 4934 9269 3828 4225 4042 4385 9270 3810 4295 4748 5124 9271 2428 2693 3090 5088 9272 3995 3855 4916 5332 9273 1392 5331 4660 5562 9274 4194 5496 4087 5552 9275 3845 4459 4278 5625 9276 3859 4855 4173 5417 9277 329 3532 401 4844 9278 898 4766 4070 5016 9279 3932 4514 4111 4845 9280 4257 4317 1128 5322 9281 2699 4261 4330 5324 9282 2699 4330 4260 5323 9283 4266 4333 2616 5321 9284 689 4324 4264 5325 9285 1271 4337 4265 5326 9286 1056 1097 4047 4785 9287 456 1986 437 4362 9288 4100 3759 4335 5110 9289 1707 3954 1704 4807 9290 1212 1449 4901 5271 9291 4452 4752 3659 5486 9292 1237 1378 4078 5259 9293 3789 4467 4168 5182 9294 3134 4594 2074 5565 9295 3350 2473 2540 4620 9296 2882 3267 2035 5056 9297 2654 2648 4921 5371 9298 2724 2777 4380 4956 9299 1672 1268 1270 4243 9300 1303 1941 4250 4734 9301 1620 4672 4885 5362 9302 3507 3506 4865 5111 9303 893 1571 599 5539 9304 3703 4088 4317 5095 9305 4786 4918 3373 5164 9306 3997 4790 4355 4852 9307 3838 4432 4736 5416 9308 3247 4642 3262 5644 9309 3006 3333 4280 4649 9310 3799 3922 4309 4770 9311 3927 740 4752 4988 9312 3970 3654 4853 5331 9313 2686 3313 4702 5556 9314 717 705 4244 4845 9315 3898 4647 4370 5437 9316 2287 4248 2459 5607 9317 1256 1695 1655 5204 9318 3954 4537 4692 5176 9319 4518 4715 3281 4989 9320 3919 4624 4129 5246 9321 899 4747 963 4970 9322 2665 2761 4758 4814 9323 3946 3794 4468 5253 9324 2163 3941 2166 5131 9325 2818 3552 3337 5010 9326 1378 1351 1237 4900 9327 372 4423 3944 5345 9328 2530 2454 4620 5268 9329 633 4517 744 4652 9330 4418 4957 4076 5290 9331 4013 4711 3926 5074 9332 3916 4748 4295 5124 9333 2048 5175 4210 5554 9334 4247 4950 3196 5520 9335 3196 2271 4058 5520 9336 3776 4346 4236 5508 9337 352 4795 347 4871 9338 2435 2434 4640 5548 9339 3816 4267 4003 4281 9340 3298 4445 5137 5298 9341 3655 4149 4125 5609 9342 2890 4041 3080 4882 9343 3724 4389 3916 4464 9344 3624 4064 3620 4274 9345 3974 4784 4750 5291 9346 3929 4742 5027 5347 9347 3769 4669 4166 5073 9348 4560 4635 3953 5180 9349 3704 4434 4286 5049 9350 4177 3836 4365 4858 9351 1679 4754 4288 5373 9352 3176 4779 4071 5308 9353 4771 4953 2079 5163 9354 673 680 3948 5147 9355 1226 1937 4826 5093 9356 899 1463 963 4747 9357 3483 4791 4066 5525 9358 1820 4905 4057 5264 9359 3965 4346 3776 4608 9360 3862 4062 5013 5139 9361 395 5194 361 5383 9362 537 1798 3624 4064 9363 1271 1269 4265 5432 9364 2984 3597 1981 5255 9365 1683 867 1255 4229 9366 2159 2916 2162 4231 9367 3889 4738 1588 5022 9368 2002 4823 4006 5516 9369 2944 5148 4453 5460 9370 3609 4124 2785 5229 9371 522 4962 3923 5311 9372 1110 4240 1753 5450 9373 3776 4607 3965 4608 9374 3718 4101 4337 5066 9375 948 1022 4500 5221 9376 4406 4598 3827 5247 9377 1226 1937 1938 4826 9378 1338 1957 4039 4992 9379 2208 4029 2212 4881 9380 4040 4865 3885 5111 9381 2368 4840 4466 5541 9382 2347 2346 2170 5523 9383 3968 4576 3666 5037 9384 3285 4252 3217 5502 9385 3957 4598 4406 5247 9386 2153 4364 3952 5153 9387 875 878 1670 4491 9388 818 5080 4192 5402 9389 403 385 366 3996 9390 3758 4094 4325 5054 9391 2940 4025 2814 5559 9392 2448 5120 4896 5198 9393 955 4443 956 4885 9394 728 720 729 5350 9395 3201 4625 3214 5549 9396 1956 566 1315 4241 9397 3973 5161 3820 5297 9398 3799 3922 4770 5566 9399 526 1548 3943 5029 9400 3699 4496 4144 5585 9401 2363 4341 2361 5270 9402 3517 533 1649 4862 9403 4299 4447 4009 4787 9404 4237 4663 3778 5381 9405 1847 5022 1823 5032 9406 4253 4735 2258 5335 9407 3797 4218 4336 4880 9408 3885 4083 4074 4678 9409 2456 3935 4840 5061 9410 3883 5138 4894 5567 9411 4200 3782 4940 5597 9412 2297 4762 4216 4927 9413 3831 4297 3917 5026 9414 3106 4258 4911 5355 9415 1584 847 4482 4870 9416 3682 4036 4518 4715 9417 4467 4526 3789 5436 9418 654 4329 4799 5291 9419 1272 4748 3916 5476 9420 2301 2232 4356 5573 9421 3938 4393 4231 5001 9422 2297 4216 2817 4927 9423 673 674 680 5147 9424 3620 4274 4064 4417 9425 2869 3148 4790 4887 9426 3932 4917 4514 4970 9427 917 955 956 4885 9428 1583 4024 1581 4929 9429 1525 4087 5496 5552 9430 2770 2007 3372 3990 9431 1731 590 5110 5422 9432 337 4839 336 5138 9433 2110 3947 2111 5133 9434 3117 4198 5473 5640 9435 2212 4029 4651 4881 9436 2003 3472 3363 5178 9437 3360 2806 2674 3949 9438 2384 4937 4155 5628 9439 3963 4052 3844 4466 9440 3813 4222 4171 5077 9441 3304 2655 4185 5556 9442 2356 4859 4338 5632 9443 703 3938 708 5068 9444 3823 3936 4406 4598 9445 1080 1840 1277 4679 9446 1864 1869 1277 4679 9447 4514 4794 3888 4917 9448 3692 3934 4408 5425 9449 2799 4278 3331 5625 9450 4207 4631 1757 5488 9451 2363 4475 2423 5270 9452 1874 4226 1207 5340 9453 2291 4595 4168 5182 9454 1207 4226 1874 5424 9455 4085 4256 3678 4577 9456 1545 1338 1957 4039 9457 1594 4121 1940 4374 9458 468 4533 4062 4978 9459 2962 2961 4606 5549 9460 3519 4479 4065 4725 9461 2435 2436 2434 5548 9462 3304 2658 2655 5556 9463 1131 1132 1133 5550 9464 3201 3214 2960 5549 9465 2962 2960 2961 5549 9466 2686 2658 3313 5556 9467 4151 4548 3995 5047 9468 1892 4182 525 5046 9469 1469 3926 4517 5261 9470 3895 4877 3345 5003 9471 4107 4579 2374 4999 9472 3915 3724 4388 4995 9473 3331 4459 2019 5192 9474 2347 4794 2857 5522 9475 4129 4516 3708 5014 9476 3471 4010 2020 5018 9477 3560 3635 3973 4397 9478 785 4922 4032 5045 9479 1400 3545 4140 4981 9480 4795 4850 3851 4871 9481 2287 2285 2459 4248 9482 4660 4853 3654 5331 9483 4711 5074 1565 5261 9484 2648 4642 4615 5371 9485 3780 5141 4327 5438 9486 3756 4071 3967 5306 9487 474 3950 498 5029 9488 1661 4472 3925 5219 9489 2111 5133 3947 5199 9490 3903 4849 3358 5538 9491 4430 4755 3805 5305 9492 4319 4516 3708 5426 9493 2636 2528 3247 5644 9494 598 597 4543 5209 9495 994 4473 996 5425 9496 3659 3920 4908 5217 9497 1681 4392 4229 5283 9498 3831 3917 4529 5026 9499 1756 4612 4304 5322 9500 3351 3424 4690 5218 9501 4719 4760 3896 4990 9502 4012 4528 3723 4942 9503 4194 4314 3746 5239 9504 2923 2584 2587 4239 9505 3658 4496 4345 5384 9506 4563 4763 608 4912 9507 625 4012 4942 5375 9508 4271 4343 3725 5519 9509 4231 4393 3720 5113 9510 3934 3692 4408 5120 9511 3312 2824 3290 4755 9512 4033 4563 610 4863 9513 1054 4060 1052 4687 9514 4490 4682 3722 5264 9515 2157 4497 5153 5523 9516 1302 1303 4925 5057 9517 4751 4861 4051 5601 9518 3679 5044 3919 5246 9519 2679 3401 3362 4120 9520 3953 5058 3973 5297 9521 4497 3860 5153 5523 9522 4158 4632 4245 4941 9523 4168 4536 4467 5436 9524 4130 4702 2789 5633 9525 3850 3997 4887 5011 9526 3049 3401 4120 4865 9527 1056 1098 1097 4785 9528 3905 5183 4437 5286 9529 2636 4196 4630 5479 9530 2589 4096 2590 5089 9531 2589 2691 4096 5089 9532 4292 4739 4211 5508 9533 4126 5421 3903 5538 9534 704 1740 717 4244 9535 3087 4957 4396 5290 9536 4915 5155 3706 5172 9537 3764 4178 4153 4625 9538 3750 4328 4216 4420 9539 748 749 747 5560 9540 1048 4547 4388 5480 9541 3724 4388 4169 5404 9542 1390 4700 1089 5069 9543 3785 4026 3969 4679 9544 4615 4697 2529 4921 9545 1503 1166 4783 5002 9546 4522 3807 5191 5289 9547 4119 4915 3706 5172 9548 2661 2660 2662 4800 9549 3860 4684 4410 4717 9550 3667 4090 4257 5114 9551 3058 4022 3489 5020 9552 3037 4520 3354 4875 9553 3049 4120 4745 4865 9554 347 4795 4444 4871 9555 359 357 5256 5446 9556 1675 4089 1514 4255 9557 3078 4277 2942 5407 9558 3076 3031 2931 4909 9559 1985 3097 3381 4002 9560 4190 3805 4755 5305 9561 4213 4335 3759 5110 9562 1141 1595 1596 5034 9563 3411 2925 3997 4849 9564 1912 4145 3474 5544 9565 3900 4735 4251 4827 9566 4091 4541 4258 4594 9567 1444 712 5068 5100 9568 3804 4099 4263 5121 9569 2191 2908 4298 4889 9570 3901 4556 4375 5075 9571 3608 523 3545 4140 9572 1803 4470 5450 5529 9573 3874 4575 4810 5536 9574 1470 3982 4797 5072 9575 1025 4149 4747 5609 9576 3117 4198 2988 5473 9577 3049 3401 3366 4120 9578 3999 4187 3842 4301 9579 4322 4630 2891 5443 9580 3703 4317 4199 5095 9581 3857 4033 4004 4636 9582 582 3556 539 4188 9583 2633 4641 4465 5062 9584 3067 4130 3615 5229 9585 1434 5280 4387 5437 9586 3342 4000 2950 4674 9587 2176 2177 2174 4757 9588 1314 4302 1854 5406 9589 805 4667 820 5206 9590 4370 4647 3898 4948 9591 3919 3722 4638 5463 9592 1469 1565 5074 5261 9593 1446 4987 4303 5094 9594 3663 4017 4107 4776 9595 3021 3262 4642 5531 9596 1375 1336 531 4522 9597 3552 3570 3637 5010 9598 844 3946 1680 5253 9599 2453 2473 2454 4162 9600 3883 4901 4894 5138 9601 2827 4669 3922 5179 9602 2107 2110 2111 5133 9603 2952 3133 4350 4982 9604 3865 4499 4126 4500 9605 3892 4236 5235 5491 9606 3867 4616 3955 4979 9607 3483 3481 4791 5525 9608 4366 4507 3723 5360 9609 3132 2518 2597 4577 9610 2782 3289 2821 4578 9611 2781 2782 2780 4578 9612 2015 3551 3609 5229 9613 3711 4473 4015 4984 9614 1544 3992 433 4769 9615 3210 4621 3257 5565 9616 4199 5114 2582 5586 9617 2107 5133 2111 5199 9618 4213 4335 3807 4699 9619 335 4839 3959 4860 9620 3083 4691 4021 5329 9621 2002 2999 3378 4006 9622 2457 4398 2912 5060 9623 4484 4707 1724 5597 9624 3889 4824 3038 4875 9625 2244 4351 2242 4991 9626 2920 2265 2259 4950 9627 4425 4426 3843 5601 9628 2648 3247 4615 4642 9629 3722 3919 4376 5463 9630 531 1619 3632 5289 9631 4312 4983 3236 5506 9632 616 5152 4354 5445 9633 3924 4115 3896 5409 9634 3484 533 3517 4862 9635 4451 5049 4481 5560 9636 4035 4116 3771 5216 9637 3718 4337 4221 5066 9638 2436 5212 4314 5548 9639 3854 4722 4131 5592 9640 3546 3619 3628 5260 9641 3750 4420 4216 5225 9642 2280 4945 2278 5511 9643 4136 4440 3769 5254 9644 2930 4368 2988 5473 9645 1567 3933 4498 5098 9646 4035 5216 3771 5299 9647 4559 4898 3688 5367 9648 3677 4869 4593 4878 9649 3758 4325 4202 5054 9650 2451 4379 2615 5274 9651 4046 4685 838 5436 9652 4156 4752 3920 4867 9653 2208 4029 4881 5017 9654 3919 4516 4129 5014 9655 2381 4205 2333 4377 9656 1254 3903 5233 5421 9657 2579 2099 3110 4764 9658 2099 2579 2097 4764 9659 3259 3073 3211 4765 9660 373 4415 3944 5040 9661 3705 4983 4312 5506 9662 2762 4824 4814 5184 9663 4808 5451 782 5510 9664 3256 3284 2630 4293 9665 368 394 390 4276 9666 4481 5049 4451 5439 9667 1717 1176 4739 5147 9668 3574 3923 4459 4821 9669 2169 4364 4497 5537 9670 3407 4758 2761 5266 9671 3619 4274 3945 5260 9672 1443 1648 4605 5499 9673 3682 4468 4293 4801 9674 995 1756 4304 5322 9675 4239 4779 3791 5285 9676 3907 4438 5174 5336 9677 3799 4175 3922 5566 9678 2969 4056 2964 4957 9679 1916 1592 1590 4145 9680 3933 4061 4926 5118 9681 3753 4317 4199 5259 9682 4202 4819 3684 5393 9683 3461 5091 4250 5173 9684 2123 4948 4285 5306 9685 2269 4042 4626 5613 9686 3682 4293 4238 4801 9687 1061 940 4085 5108 9688 1671 4085 940 5108 9689 3843 4425 4139 5132 9690 3830 4670 4604 5421 9691 3218 3935 5378 5572 9692 4154 5087 4468 5578 9693 2003 4709 3472 5178 9694 2500 4095 4681 4937 9695 4126 3865 4729 5611 9696 3369 4720 443 5465 9697 4074 3836 4678 4968 9698 2083 4573 2080 5360 9699 3670 3942 4539 4640 9700 3982 4061 3681 4936 9701 980 4719 973 5348 9702 3191 4924 4364 5537 9703 3813 4106 4020 4378 9704 2132 2133 2861 5275 9705 1567 4498 4816 5098 9706 2244 4351 3939 5460 9707 3308 4289 2954 5107 9708 537 3624 1578 4274 9709 1716 4938 4512 5395 9710 3705 4091 4258 5156 9711 2018 3409 2768 4157 9712 1817 1495 4288 5444 9713 1084 4759 4951 5241 9714 4250 4734 3847 5091 9715 3854 4131 3984 4610 9716 3985 4132 3859 4611 9717 2989 437 4362 4969 9718 3827 3936 4428 5250 9719 4423 4672 1883 5362 9720 973 4719 1706 5623 9721 567 1876 4141 4673 9722 4030 4753 4261 4803 9723 1717 4739 4211 5147 9724 3697 4194 4087 5239 9725 1404 4679 1869 5200 9726 3932 4794 4514 4917 9727 2132 4648 4358 4817 9728 1434 4273 1005 4387 9729 4481 5049 3704 5560 9730 2827 4770 2826 5179 9731 2677 4487 3062 5524 9732 3997 3851 4887 5011 9733 3949 4521 3360 4888 9734 3951 4771 2079 5163 9735 2883 2118 2116 5060 9736 1336 4555 531 5289 9737 3887 4672 4458 4885 9738 1221 1312 1311 5406 9739 1077 1093 4813 5011 9740 3846 4565 4250 4734 9741 3580 2029 4306 5010 9742 1959 420 4007 5583 9743 974 4614 968 4916 9744 4423 4820 3650 5362 9745 3624 3618 1578 4274 9746 4011 4503 4057 4638 9747 4095 5346 4025 5365 9748 2084 4573 2083 5630 9749 4071 4347 3967 4837 9750 4818 5042 3998 5456 9751 4144 3666 4603 5534 9752 3210 3257 2074 5565 9753 3134 2074 3286 5565 9754 1077 4813 3994 5011 9755 3754 4641 4465 5294 9756 4115 4413 3736 5099 9757 3903 4790 4670 4852 9758 3325 2530 2536 4620 9759 3988 4670 3830 4740 9760 914 4807 4537 5458 9761 3709 4320 4200 4929 9762 2078 3951 3093 5360 9763 3684 4777 4191 5386 9764 3962 3807 4699 5191 9765 3765 4427 4031 4538 9766 3766 4631 3980 5024 9767 3976 4634 3766 5024 9768 3466 4006 4291 5018 9769 3212 3934 4721 5302 9770 1640 502 460 4241 9771 2044 4100 4180 5575 9772 4221 4337 3818 5035 9773 3847 4565 4250 4709 9774 3784 4117 4405 5414 9775 3939 4502 4233 4544 9776 3768 4294 4915 4935 9777 4103 5542 4493 5592 9778 2661 2662 3311 4800 9779 3750 5225 4216 5292 9780 4144 4603 4188 5534 9781 4142 4561 3861 5181 9782 4116 4172 3771 5216 9783 605 607 4763 4988 9784 4451 3704 5049 5560 9785 3266 2944 2829 5148 9786 3382 3955 3013 4832 9787 2262 4626 4042 5415 9788 3785 4326 4217 4897 9789 3298 2739 3299 5137 9790 4659 3927 4908 4998 9791 3898 4668 4078 5643 9792 1988 2992 490 4875 9793 369 3997 352 4871 9794 2796 4963 4432 5081 9795 4172 1645 4942 4964 9796 3858 4902 5215 5327 9797 4192 3824 5177 5402 9798 4088 4317 3667 5322 9799 3718 4337 4101 5326 9800 3769 4440 4136 4523 9801 3801 3921 4308 5440 9802 4199 4239 2923 5308 9803 1560 1714 3930 5411 9804 1806 4232 713 5579 9805 444 510 425 4008 9806 4697 4887 2529 4921 9807 3485 4290 4002 5020 9808 3935 3676 4840 5541 9809 842 1426 846 4526 9810 3717 4692 4537 5176 9811 1083 4854 5340 5513 9812 3615 3551 2015 5229 9813 3798 4770 4868 5179 9814 2538 2670 2754 5160 9815 1583 1723 1653 4024 9816 3430 3075 2013 4979 9817 1765 806 887 4186 9818 3883 4773 4727 5043 9819 3212 3122 5120 5302 9820 1804 4602 4080 5536 9821 3039 3091 4646 5430 9822 2208 2209 2212 4029 9823 1047 4547 4494 4749 9824 2363 3039 3091 4646 9825 4326 4527 3735 5325 9826 994 997 996 4473 9827 1126 4257 1128 5322 9828 2699 2848 4261 5324 9829 3096 2699 4260 5323 9830 689 4264 1408 5325 9831 1267 1271 4265 5326 9832 2493 4266 2616 5321 9833 2996 5035 4397 5161 9834 1065 4812 4460 5390 9835 4069 4361 3661 4676 9836 3772 4188 4144 4603 9837 3663 5340 4854 5513 9838 3152 3375 2020 4010 9839 3943 4973 4690 5241 9840 3882 4278 4075 4628 9841 2291 4168 2292 5182 9842 454 1952 426 5311 9843 4098 4420 3779 4502 9844 345 1984 4444 5079 9845 3732 4330 4102 5323 9846 3662 4091 4258 4594 9847 3728 4842 4286 5626 9848 4111 4666 3914 4992 9849 3885 4120 4040 4515 9850 1175 1837 4468 5578 9851 4183 4209 3665 4879 9852 4042 4385 4225 5122 9853 4098 4168 3203 5607 9854 3698 5238 4480 5505 9855 1084 1873 1882 5241 9856 4097 3718 4265 5187 9857 1645 627 4942 4964 9858 4431 4458 3963 4466 9859 3854 4373 4131 4610 9860 4110 4471 3787 5245 9861 3173 2956 3170 4722 9862 1470 4797 1251 5072 9863 2100 4567 4568 4764 9864 2643 4571 4566 4765 9865 3109 2088 2191 4768 9866 3896 4115 3924 4706 9867 2028 435 4123 5465 9868 1439 1442 4204 4549 9869 3997 3850 4790 4852 9870 4156 4590 3920 5217 9871 4058 4457 4247 4950 9872 3691 4771 4662 5055 9873 3486 4002 3485 4290 9874 2333 4377 4205 5603 9875 4129 4624 3679 5246 9876 1811 4993 4246 5564 9877 3965 4113 3737 5315 9878 2361 2362 4646 5400 9879 4634 5024 3976 5441 9880 3090 3940 4757 5455 9881 2255 4311 4626 5415 9882 1950 4028 309 5138 9883 3016 4456 3195 4926 9884 1512 4201 4899 5532 9885 4422 4488 3672 5204 9886 1925 1288 1286 5130 9887 4282 4312 2717 5355 9888 3958 4021 3831 5498 9889 1159 1110 1753 5450 9890 2315 4053 2317 5423 9891 3054 3451 3514 4793 9892 3723 4942 4528 5360 9893 378 4861 4415 4883 9894 4281 4295 3916 4846 9895 3816 4295 4281 4846 9896 429 3089 1994 4772 9897 3682 4238 4468 4801 9898 3366 4120 2596 4834 9899 4510 4905 3886 5371 9900 4502 4544 3939 5460 9901 3865 4247 4058 4457 9902 3499 4617 4793 4826 9903 2244 3939 2839 5460 9904 3744 4411 4032 4848 9905 1846 1217 4905 5050 9906 3663 4107 4017 4999 9907 3945 4359 3817 4956 9908 3890 4966 484 5309 9909 3698 4085 4256 5202 9910 661 1665 1685 5594 9911 4126 4729 4500 5233 9912 4564 5495 4706 5637 9913 587 1731 586 5422 9914 2982 3132 3112 4131 9915 2821 2379 3177 4132 9916 4517 4707 4228 5074 9917 981 983 5086 5269 9918 4065 4832 4725 5533 9919 3696 4975 4160 5350 9920 4018 4133 3772 5056 9921 1810 922 944 4017 9922 1046 932 933 5087 9923 2142 2139 2138 4020 9924 1109 1815 1415 4835 9925 3804 5364 4308 5507 9926 1793 4609 4284 5433 9927 3685 4719 4115 4990 9928 4235 4365 3836 4858 9929 3968 4576 1210 5340 9930 2637 4641 4955 5262 9931 2934 2924 2137 5308 9932 3682 4715 4518 4989 9933 4042 3828 4385 5481 9934 1646 4387 4034 4799 9935 2648 3268 4642 5371 9936 3159 4205 5145 5359 9937 3951 4528 4942 5360 9938 4102 4545 3835 4689 9939 3829 4789 4048 5077 9940 4272 4686 4046 4811 9941 3588 4653 3589 4703 9942 3560 3635 3630 3973 9943 886 1696 1654 5092 9944 3670 4539 3942 5269 9945 352 369 391 4850 9946 4583 4869 3684 4878 9947 2581 2582 5114 5586 9948 4289 4452 3714 4704 9949 4704 4908 3927 4998 9950 1581 4929 4024 5231 9951 503 495 494 4123 9952 333 4844 4112 4925 9953 2363 2361 2362 4646 9954 4017 4134 3742 4676 9955 3952 4975 4608 5186 9956 1485 1432 5024 5441 9957 1520 4961 993 5581 9958 1819 4464 4389 5404 9959 2165 2163 2166 5131 9960 3822 4337 4221 5035 9961 339 4877 4028 4891 9962 839 838 4685 5436 9963 3817 4359 3945 4360 9964 3872 3929 4920 5406 9965 3775 4263 4099 5121 9966 3701 4237 4093 5262 9967 449 4628 3412 4963 9968 3113 5085 4334 5140 9969 4249 4305 3796 4693 9970 3885 4856 4074 5021 9971 3775 4357 4263 5121 9972 4251 4411 2237 5335 9973 3930 4662 4771 5055 9974 4287 4371 3765 4848 9975 3504 4575 4725 4832 9976 854 852 4057 5641 9977 1371 4902 4410 5305 9978 4490 4905 3886 5264 9979 609 4563 608 4912 9980 2887 4829 3993 5443 9981 4422 4477 3664 5469 9982 2610 2512 2612 4864 9983 3888 4067 5243 5379 9984 4083 4826 3864 5093 9985 4336 5006 3815 5229 9986 3856 3930 4414 5055 9987 2017 367 308 4051 9988 1900 3950 1528 5013 9989 3930 4465 4414 5055 9990 3986 4464 3915 4995 9991 1599 4664 4040 4907 9992 2132 2861 4358 5275 9993 3761 4211 4292 4739 9994 3478 3456 3480 3949 9995 805 4204 820 4667 9996 702 4294 4987 5339 9997 3705 4421 5506 5642 9998 3979 4447 4073 4934 9999 3546 3628 4360 5260 10000 3852 4637 4008 4720 10001 3796 4249 4693 5237 10002 4529 4616 3867 5026 10003 4474 4731 3844 5310 10004 1558 4138 1634 5304 10005 351 4674 4000 4716 10006 3712 4654 4215 5133 10007 2755 3393 4565 5173 10008 3881 4734 1086 5057 10009 3690 4577 4525 5408 10010 1025 4747 1035 5609 10011 4157 4920 466 5396 10012 648 4713 3977 5454 10013 3693 4543 4836 5489 10014 2260 4926 4270 5520 10015 612 1424 4033 5065 10016 1514 4255 4089 5532 10017 4564 1851 4744 5637 10018 3466 4006 3468 4291 10019 3731 4257 4090 5114 10020 4302 4463 3872 5406 10021 1620 4672 1092 4885 10022 3649 3923 4962 5645 10023 3727 4195 4316 4965 10024 3906 4889 4768 5363 10025 3823 4070 3998 4454 10026 4169 4687 4047 5404 10027 2260 4270 2267 5520 10028 3731 4347 4257 5114 10029 3947 4387 4161 4799 10030 3917 4616 4529 5026 10031 2674 3949 2806 4914 10032 1264 4428 3936 4951 10033 3917 4488 4422 5204 10034 3856 4414 4465 5055 10035 4184 4325 3684 5386 10036 3773 4336 4185 5387 10037 2801 3336 4459 4821 10038 3199 4986 4511 5287 10039 628 4942 4012 5219 10040 1380 1795 1352 4562 10041 998 4707 4517 5074 10042 3687 4131 4229 4982 10043 718 4430 705 4845 10044 1017 1077 1093 4813 10045 1882 1873 4782 5241 10046 2531 2652 2623 5073 10047 3351 4690 4886 5218 10048 2372 3150 2469 4697 10049 3637 3337 3552 5010 10050 4028 4901 1449 5271 10051 1908 542 4920 5396 10052 4339 4718 3756 5041 10053 3669 4781 4341 5400 10054 2059 2192 4704 4908 10055 842 846 4467 4526 10056 3843 4426 4425 5132 10057 2590 4787 4096 5319 10058 4269 4369 3748 4911 10059 2548 4579 4432 5389 10060 3872 4157 3929 4463 10061 4007 4432 3873 5416 10062 4714 5078 1184 5503 10063 3547 3578 5106 5192 10064 4739 4784 3761 5147 10065 4080 4616 3867 5398 10066 1854 1314 1428 4302 10067 582 4188 1818 4653 10068 4098 3751 5025 5576 10069 1470 825 1251 4797 10070 2044 4180 4100 5372 10071 3177 2782 2821 4677 10072 4126 4729 5233 5421 10073 3801 4308 3921 5236 10074 3978 4765 3211 5127 10075 4348 5251 4308 5364 10076 2952 2622 5085 5438 10077 2605 4176 2364 5640 10078 3349 4969 4362 5500 10079 3921 4174 3801 5236 10080 4259 4641 3754 5294 10081 4131 4373 3687 4610 10082 3288 4802 5137 5453 10083 1547 1793 4284 5433 10084 3775 4219 4868 5179 10085 1648 4206 1152 5499 10086 2278 4453 5511 5569 10087 3873 4432 5081 5416 10088 3886 4510 2669 5258 10089 2317 4053 2322 4965 10090 869 1664 1534 5097 10091 1298 4412 3928 5128 10092 3586 3539 3642 5142 10093 4187 4301 3999 4730 10094 4021 4297 3826 4449 10095 3715 4853 4660 4919 10096 4706 4866 3653 5046 10097 4743 4780 3878 5347 10098 3711 5107 4440 5226 10099 4022 4290 3485 5020 10100 1516 1028 1515 4671 10101 2761 4758 4520 5266 10102 4119 4721 3938 5001 10103 3023 2874 2072 4955 10104 355 369 354 3997 10105 3785 4584 3969 5036 10106 4700 5069 1390 5517 10107 3851 4254 3994 5011 10108 484 4738 3890 5309 10109 1327 529 1337 4068 10110 3568 3576 1576 4141 10111 746 4517 998 5439 10112 4930 5040 3356 5165 10113 4219 4331 3775 4868 10114 3737 4400 4399 4967 10115 3101 3076 4059 4909 10116 1108 4060 1805 4910 10117 1983 3543 4130 4724 10118 3977 4656 648 5023 10119 1432 4655 3976 5023 10120 4025 2940 5232 5559 10121 3465 4010 3466 4291 10122 3750 4796 4016 4954 10123 3666 5037 4576 5534 10124 3979 4073 3806 4934 10125 1258 4031 1697 5316 10126 2823 3987 2824 4684 10127 4091 5156 3705 5616 10128 1085 4372 1241 5314 10129 1493 1558 1634 5304 10130 1297 4680 1293 4952 10131 2604 4760 4076 4990 10132 1557 1556 1883 4423 10133 446 522 3923 5311 10134 3926 3733 4711 5129 10135 4635 5150 3953 5180 10136 3846 4709 4565 5178 10137 3777 3954 4368 4997 10138 4461 4916 3855 5332 10139 3733 4711 4462 5261 10140 3800 5221 4732 5470 10141 2057 4704 4214 4998 10142 2520 2521 4737 5273 10143 3768 4352 4142 5001 10144 1545 486 421 4039 10145 4181 4722 3854 5592 10146 2601 4525 4958 5514 10147 3937 3727 4588 5002 10148 3018 3550 4306 5058 10149 2429 4654 2880 5301 10150 2789 4724 4130 5633 10151 3750 4252 4796 4954 10152 4247 3865 4729 5072 10153 3924 4413 4115 5099 10154 319 4000 351 4674 10155 3998 4070 3823 4766 10156 1923 568 4291 4960 10157 3247 3021 3262 4642 10158 2648 3268 3247 4642 10159 1812 4636 4694 5545 10160 3299 5137 4802 5298 10161 4326 4897 3785 5200 10162 2528 4615 3247 5644 10163 2753 4828 2669 5258 10164 469 498 474 3950 10165 3988 4697 2372 5479 10166 3949 4125 3478 4823 10167 3651 3950 4759 4886 10168 4155 4467 3946 4526 10169 3676 4537 4176 4692 10170 3835 4102 3935 5572 10171 3765 4848 4371 4986 10172 1119 5331 4478 5475 10173 2133 4501 2861 5275 10174 475 3943 477 5123 10175 897 4457 1745 5072 10176 1236 4246 1334 4249 10177 3211 4461 3978 5127 10178 374 4280 382 4649 10179 4345 4676 1206 5366 10180 2184 4448 4014 5220 10181 3187 4934 3981 5089 10182 2355 4859 2354 5613 10183 4638 5044 4011 5246 10184 3749 4934 3981 5234 10185 3692 4165 3934 5425 10186 1536 529 3549 4068 10187 4494 4547 4095 4749 10188 2037 4699 4018 5056 10189 3831 4021 3958 4876 10190 2519 4577 4540 5408 10191 1031 1215 1276 4558 10192 420 546 4007 5038 10193 3772 4133 4018 4806 10194 4608 4975 4346 5186 10195 1206 4676 4345 5244 10196 2754 3989 3425 5033 10197 2083 2084 2080 4573 10198 3820 5161 4266 5297 10199 729 4113 4835 5315 10200 4098 3751 4536 5025 10201 1037 4478 4810 5475 10202 4442 4993 681 5564 10203 4574 5106 4141 5192 10204 1189 4714 3980 5564 10205 3519 3446 4479 4725 10206 3968 4027 4800 5484 10207 610 612 4033 4863 10208 3991 4977 3871 5051 10209 4069 4361 3991 4757 10210 3615 1983 3543 4130 10211 3549 529 1570 4360 10212 3672 4316 4179 5392 10213 4129 4516 3919 5044 10214 4449 3917 5204 5398 10215 3897 4009 4787 5146 10216 2114 4750 2109 5133 10217 3944 4930 4372 5165 10218 1372 4309 1211 5358 10219 3430 2013 4623 4979 10220 4370 4647 3788 5437 10221 2690 3261 4281 4622 10222 3497 4602 3955 4979 10223 1774 1441 4164 5599 10224 2242 4351 2239 4991 10225 3854 4610 3984 5063 10226 466 4920 417 5396 10227 3688 4033 4004 4559 10228 3784 4117 4045 4405 10229 1364 1337 4959 5015 10230 3276 2799 3331 5625 10231 3967 4071 3753 4347 10232 3796 4305 4249 4902 10233 1636 982 4539 5269 10234 2703 4715 3921 4989 10235 3891 4663 4237 5381 10236 3716 4059 4024 4493 10237 4025 4060 3726 4494 10238 3558 3624 1798 4064 10239 4021 5304 3828 5312 10240 4247 4457 3865 5072 10241 3888 5243 4917 5379 10242 1452 3966 4910 5209 10243 3662 4258 4091 4369 10244 1460 1459 1461 5154 10245 4019 4138 3683 4505 10246 3826 4138 4019 4505 10247 3655 4914 4695 5516 10248 458 4780 463 4904 10249 3466 4291 4010 5018 10250 844 1680 845 5253 10251 1297 1293 1422 4952 10252 3288 2416 4402 5453 10253 4098 4502 3779 5148 10254 1245 4206 4803 5361 10255 3264 3965 4607 4608 10256 966 965 930 4471 10257 3735 4217 5175 5372 10258 1971 4672 1556 5345 10259 3978 4246 3721 5168 10260 949 824 4732 5470 10261 1304 1902 1241 5601 10262 1250 1686 1738 4712 10263 2338 3146 2238 4251 10264 3985 4578 4295 4677 10265 3649 3923 3574 4821 10266 949 824 948 4732 10267 4508 4680 3842 5622 10268 4003 4281 4267 5356 10269 1844 1135 4299 5146 10270 4536 5025 3751 5576 10271 3285 2645 3217 4252 10272 3649 3574 3923 5645 10273 3974 4750 3761 4817 10274 3937 4588 2952 5438 10275 3518 4793 4083 4826 10276 522 446 3923 4821 10277 3908 4178 4153 4712 10278 901 1633 1463 4730 10279 3749 4447 4299 4787 10280 895 4430 718 4845 10281 4305 4501 3858 5327 10282 316 411 3959 5134 10283 1336 1619 531 4555 10284 3681 4061 3982 4950 10285 3703 4199 4317 5259 10286 3935 4661 2408 4840 10287 3390 2678 4074 4793 10288 417 1956 542 4920 10289 3740 4618 4037 4958 10290 309 341 339 4028 10291 3191 2367 4364 4924 10292 2818 2029 3552 5010 10293 3897 4369 4269 4911 10294 566 502 1640 4241 10295 682 684 4410 5462 10296 1175 1203 1837 5578 10297 1806 713 723 5579 10298 3665 4375 4556 5075 10299 1681 1166 4229 4392 10300 2161 2160 4231 4393 10301 1025 1349 4149 5609 10302 3932 4430 3805 4970 10303 4308 4348 3801 5251 10304 3284 2653 2630 4293 10305 2193 2864 3182 4292 10306 3182 2631 3167 4292 10307 3256 2702 3284 4293 10308 966 4151 1387 4919 10309 882 5196 4471 5245 10310 1823 1791 915 4160 10311 3822 4284 4064 4397 10312 515 4772 429 5396 10313 4019 4053 3826 4505 10314 2106 4215 2879 4654 10315 2103 4215 2105 4658 10316 4245 4605 1112 5552 10317 3660 4057 4011 4503 10318 3352 4923 2969 4957 10319 3712 4532 3974 5291 10320 3372 4818 3990 4969 10321 3833 4905 4510 5371 10322 3730 3933 4456 4552 10323 3831 4297 4021 4449 10324 369 3997 355 4355 10325 1025 1035 1349 5609 10326 4372 3887 4930 5314 10327 3852 4508 4010 4680 10328 562 3607 1570 4360 10329 991 993 4961 5581 10330 3866 4240 4118 4742 10331 3037 513 4520 4875 10332 2277 2372 2273 4740 10333 2998 3351 4690 4973 10334 1897 1305 1216 4254 10335 3863 4533 4062 5139 10336 1831 1232 4901 5138 10337 437 1986 2989 4362 10338 4619 4942 627 4964 10339 991 1520 993 5581 10340 3140 2500 4681 4937 10341 1548 3943 5029 5241 10342 1312 1315 1311 4920 10343 3225 4282 2717 5355 10344 1568 4816 827 5098 10345 3501 4602 1564 5536 10346 3905 4158 4153 5183 10347 856 853 855 4638 10348 309 4028 343 5138 10349 3653 4674 4000 4828 10350 3143 2123 4285 5041 10351 3618 3546 562 4274 10352 337 343 4028 5138 10353 1566 4135 1500 4711 10354 3944 5040 4930 5165 10355 2571 4260 5115 5239 10356 2010 4056 330 5446 10357 3860 4684 3952 5153 10358 1128 1126 1484 4257 10359 2620 3135 2386 4256 10360 978 919 1675 4255 10361 3052 2699 2848 4261 10362 2892 3096 2699 4260 10363 3106 3248 3269 4258 10364 637 603 601 4263 10365 1267 1271 1269 4265 10366 2493 2617 2616 4266 10367 981 3942 5071 5269 10368 3501 1564 4575 5536 10369 689 1408 4264 5605 10370 4304 4896 3692 5198 10371 1347 4187 4809 5609 10372 3512 4745 4767 4907 10373 3025 3328 2019 4574 10374 3958 5304 4021 5312 10375 1480 4997 4094 5295 10376 3844 4052 3963 5310 10377 2237 2239 2240 5126 10378 836 4046 837 4686 10379 3663 4226 5340 5513 10380 2128 5041 4222 5306 10381 689 1777 1408 5605 10382 3651 3936 4079 4996 10383 1535 4179 5002 5540 10384 3831 3958 4645 4876 10385 1496 749 4279 5560 10386 3658 4027 3968 5484 10387 3925 4768 4298 5363 10388 734 1510 648 5023 10389 1432 1431 1190 5024 10390 4115 4719 3896 4990 10391 1777 4264 1408 5605 10392 4449 4529 3917 5398 10393 4183 4209 3800 5470 10394 3725 4354 4343 5152 10395 3886 4682 4490 5264 10396 3609 3209 2785 5135 10397 398 335 411 5105 10398 1658 4269 1136 4369 10399 3591 3962 3593 4703 10400 3792 4353 4137 4448 10401 3920 4307 3675 4421 10402 2155 2895 2150 4119 10403 2927 2289 2287 5607 10404 3505 3507 3511 5111 10405 564 1606 3500 4083 10406 2153 2148 3952 5252 10407 433 3992 506 4769 10408 3431 3400 4832 5533 10409 1991 2034 3267 4603 10410 1146 1145 4037 4788 10411 3691 3930 4662 4771 10412 3668 4208 4867 4983 10413 3072 4976 2580 5602 10414 4098 5025 4420 5576 10415 2024 3989 324 5033 10416 2709 4350 3133 4982 10417 3733 4435 4135 4480 10418 3701 4093 4775 5262 10419 3875 4766 4558 5343 10420 2530 4620 4001 5268 10421 3920 3675 4307 4912 10422 468 4062 471 4978 10423 460 4241 463 4780 10424 4245 4632 3746 5552 10425 1371 4190 4902 5305 10426 3915 4681 4095 4937 10427 3900 4251 4032 4827 10428 4143 4217 3798 4897 10429 3548 3635 4284 4701 10430 3697 4314 4194 5239 10431 2948 3955 3382 4513 10432 2576 4074 4277 5587 10433 3434 3955 3523 4832 10434 1437 4117 4922 5151 10435 4438 4874 3757 5336 10436 2501 4174 4154 4989 10437 4168 4467 3751 5182 10438 1406 894 1171 4111 10439 4091 4369 4258 5156 10440 1538 1741 1266 4268 10441 4137 4448 4353 5220 10442 1641 479 542 5396 10443 4086 3208 4588 5359 10444 3669 4341 5270 5400 10445 2177 2182 2179 5051 10446 4507 4652 3728 4842 10447 978 919 4255 5348 10448 1102 1471 4614 5237 10449 3898 4161 4647 5437 10450 1612 4638 851 5246 10451 1483 4371 1748 5316 10452 1838 4796 4328 5351 10453 2583 4199 2923 5308 10454 4117 3702 4351 5296 10455 3955 4602 4575 5536 10456 4213 5159 1414 5191 10457 4082 4377 3855 4471 10458 3783 4455 4650 5149 10459 3854 4181 4530 5063 10460 3815 4336 4218 5006 10461 3531 3443 3535 4008 10462 3682 4468 4238 5578 10463 1398 1112 4245 4605 10464 1481 4833 1580 5231 10465 4161 4562 4063 5119 10466 2959 3098 4516 5426 10467 1657 1136 1658 4269 10468 2118 2117 4647 4948 10469 2501 2498 2384 5628 10470 3382 4513 3955 4832 10471 2713 5028 4477 5469 10472 3831 4645 4419 5543 10473 628 626 625 4942 10474 499 2007 3990 4969 10475 2436 4314 4847 5548 10476 4222 4339 3829 5077 10477 2580 2422 2479 4976 10478 3681 4457 3982 4936 10479 2677 2593 3062 4487 10480 3925 4472 5012 5363 10481 3468 3469 3470 4006 10482 2789 1983 4130 4724 10483 3406 4839 2773 5459 10484 3765 3975 4511 4986 10485 2729 3969 3287 4841 10486 1256 1655 4585 5204 10487 3687 4053 4019 5423 10488 4412 4925 3989 5057 10489 3947 4387 4034 4398 10490 1820 1843 4905 5264 10491 3980 4566 3710 4631 10492 3766 4566 3980 4631 10493 3976 4569 3766 4634 10494 3977 4567 3802 4633 10495 4154 4104 5087 5578 10496 3983 3857 4949 5211 10497 1681 1061 4392 5283 10498 1619 4555 3563 5289 10499 3724 4170 4785 5404 10500 4061 2254 4926 5118 10501 1863 4854 5244 5384 10502 1650 4089 1115 5014 10503 3468 4291 4006 5158 10504 2527 5107 4401 5226 10505 4010 4680 4508 5622 10506 3801 4025 3966 5365 10507 3969 4026 3661 5366 10508 3724 4170 4389 4785 10509 2366 4466 4176 5541 10510 1404 4679 4055 5585 10511 3714 4452 4289 4943 10512 4235 4856 2476 5587 10513 1347 4809 1348 5609 10514 3687 4019 4373 5423 10515 4040 4515 4120 4664 10516 2045 2046 5175 5372 10517 3978 4461 3211 5168 10518 3922 4669 2827 5073 10519 429 515 3089 4772 10520 2862 5042 2812 5500 10521 2581 2447 2582 5586 10522 3794 5253 4328 5351 10523 3574 4459 3554 4821 10524 3838 4432 4579 5389 10525 4032 4411 4251 5335 10526 4136 4554 4440 5254 10527 2365 4176 2366 4466 10528 3191 2367 4924 5537 10529 4280 3650 4649 4820 10530 1607 4192 5171 5639 10531 1821 5156 742 5616 10532 4660 5331 3654 5562 10533 3710 4377 4205 5127 10534 3588 4188 3590 4653 10535 3711 4440 4136 4554 10536 3583 3581 3550 5058 10537 1176 663 1646 4034 10538 2378 2275 4375 5321 10539 3683 4019 4505 5210 10540 3733 3926 4366 5129 10541 3933 3760 4667 5118 10542 3590 3556 582 4188 10543 3408 496 2770 4974 10544 1637 4537 4193 5197 10545 3331 4278 2801 4459 10546 3659 5030 4452 5486 10547 4110 4478 3654 5331 10548 2220 2851 2892 5115 10549 3691 4044 4271 4662 10550 4015 3770 4554 4984 10551 3665 4375 4270 5321 10552 3835 4426 4425 5314 10553 3563 4555 1619 5048 10554 394 342 4276 5003 10555 3866 4409 4470 4742 10556 4176 4313 3669 5400 10557 1820 4057 854 5264 10558 3813 4339 4222 5077 10559 4284 4609 3973 5161 10560 3810 4677 4272 4811 10561 3715 3970 4853 4919 10562 3860 3952 4717 5452 10563 3478 4125 3949 5276 10564 3864 4617 3956 4826 10565 3817 4360 4243 5284 10566 2520 4737 4237 5273 10567 3668 4312 4208 4983 10568 3314 4357 4669 5555 10569 3734 4797 4553 5206 10570 3784 4939 4288 5373 10571 561 3498 1529 4972 10572 4161 4387 3947 5437 10573 4049 4636 3857 4955 10574 3722 4057 4011 4490 10575 981 5071 3942 5584 10576 439 3565 4821 4962 10577 2751 3928 2750 5166 10578 2781 2780 2688 4295 10579 2380 3123 2780 4295 10580 4281 4723 3916 5124 10581 4409 4742 3866 5368 10582 3040 4976 4384 5608 10583 575 1546 3548 4284 10584 3975 4072 3671 5287 10585 3694 4437 4439 4940 10586 4141 4673 1876 5424 10587 2132 4648 2133 5275 10588 3997 4871 2869 4887 10589 3730 3933 4552 5098 10590 518 510 440 4008 10591 3072 2580 3043 5602 10592 2260 3195 2267 4270 10593 3663 4854 4776 5513 10594 673 3948 680 4993 10595 2613 4127 3180 5240 10596 3233 3180 4127 5240 10597 1496 749 755 4279 10598 3824 4365 4177 5402 10599 2771 4306 5010 5429 10600 2856 4448 2175 5588 10601 3626 1981 3597 5255 10602 2817 4927 4216 5502 10603 2514 5294 4259 5412 10604 742 4629 1638 5616 10605 3152 4010 3442 4931 10606 4726 5178 3473 5544 10607 2355 2357 4859 5632 10608 4386 4766 3875 5344 10609 1552 4707 4484 5439 10610 4443 4661 3935 4840 10611 2564 4561 4118 5368 10612 851 1612 855 4638 10613 3166 4774 3163 4933 10614 3128 4644 2246 5414 10615 3018 1997 3550 5058 10616 411 5105 3959 5134 10617 1719 4749 5251 5440 10618 2950 3342 2009 4000 10619 3659 3920 4752 4908 10620 4137 4504 3720 5100 10621 4419 4617 3956 5524 10622 1278 4345 1840 4496 10623 3932 3805 4917 4970 10624 4367 4859 3870 5420 10625 3494 4602 3497 4979 10626 1758 5488 4262 5635 10627 3461 3460 5091 5173 10628 2513 2620 4256 5085 10629 2449 2526 3104 4114 10630 1566 1500 737 4711 10631 1487 5488 1758 5635 10632 3760 4117 3993 4405 10633 357 358 4895 4923 10634 3675 3920 4659 4912 10635 3684 4184 4059 4819 10636 3817 4243 4132 5284 10637 2136 2134 4684 5571 10638 3920 4421 3675 4659 10639 2386 4256 3135 5505 10640 3248 3269 4258 5506 10641 601 4263 603 5507 10642 3951 4953 3771 4964 10643 3930 4953 3951 4964 10644 1793 4101 1041 4609 10645 4253 4986 3900 5335 10646 1470 4457 3982 5072 10647 420 452 546 5038 10648 1595 1915 1594 5034 10649 4292 4607 3776 5627 10650 4297 3917 4741 5204 10651 3399 3521 3364 4823 10652 754 756 755 5070 10653 4149 5130 3949 5276 10654 3959 5105 3648 5134 10655 4531 4611 1413 5082 10656 2760 4362 4904 5500 10657 3926 4228 3740 5074 10658 3968 4027 3666 4800 10659 343 309 337 4028 10660 1239 4657 4395 5464 10661 3724 4785 4389 5404 10662 3763 4178 4625 4881 10663 3663 4107 4579 4776 10664 1756 4088 1775 4612 10665 2749 5590 4508 5622 10666 3757 5112 4268 5336 10667 1774 781 4164 5045 10668 2156 2169 4364 4497 10669 2856 2404 2175 4448 10670 2231 4287 2233 4356 10671 2089 4289 3308 4357 10672 1276 4558 1215 5343 10673 3830 4247 4729 5072 10674 2916 4142 2556 4561 10675 2802 4432 2796 4963 10676 2179 5051 2182 5515 10677 3888 4514 4730 4794 10678 3609 2785 4124 5135 10679 4172 4507 3728 5626 10680 1661 4472 5219 5223 10681 3729 3940 4589 4838 10682 4371 4928 1748 5316 10683 2220 3971 2851 5115 10684 4019 4138 3826 5328 10685 1089 4700 4151 5069 10686 3828 5312 4277 5407 10687 3656 4918 5009 5431 10688 896 4430 895 4970 10689 4138 4691 4505 5329 10690 3650 4672 4458 5165 10691 648 647 649 4713 10692 1189 1625 1185 4714 10693 2121 4648 3974 5301 10694 4131 4229 3678 5283 10695 2579 4650 3979 4889 10696 4098 4420 3751 5576 10697 3632 1619 3563 5289 10698 3945 3628 4360 5606 10699 1239 4838 4657 5464 10700 1891 4844 4925 5091 10701 3184 2420 3995 5298 10702 4343 4354 3856 5152 10703 1433 585 583 4806 10704 3072 4341 4976 5602 10705 937 4932 938 5315 10706 1724 4707 1468 5597 10707 3953 4804 4306 5180 10708 3078 2577 2942 4277 10709 3751 4467 4168 4536 10710 3671 4005 4072 4812 10711 4955 5262 3778 5273 10712 1100 1399 4785 5282 10713 3996 4674 366 4866 10714 3832 4226 4534 4574 10715 3551 4124 3609 5229 10716 3885 4515 4678 4856 10717 4725 4832 3874 5533 10718 4169 3726 4681 5346 10719 2810 2375 4705 5184 10720 3699 4679 4496 5585 10721 3887 4661 4443 4840 10722 3393 4709 4565 5173 10723 1821 742 1788 5616 10724 1644 595 656 5617 10725 2275 4270 2572 4375 10726 3048 3050 3510 4767 10727 3774 4030 3971 5257 10728 4231 4394 3781 5113 10729 3932 4514 4430 4970 10730 639 4455 1530 5149 10731 3823 4406 3957 4598 10732 4243 4611 4132 5284 10733 4705 4924 2810 5184 10734 1567 4498 1783 4816 10735 2599 4618 4525 5408 10736 1900 1972 3950 5241 10737 475 4690 3943 5123 10738 3733 4480 4135 5238 10739 3681 4270 4183 5075 10740 625 4942 626 5375 10741 1439 4549 4204 5151 10742 1688 4635 4209 5470 10743 1821 1788 5156 5616 10744 4250 4565 3847 4734 10745 4420 4502 4098 5225 10746 1556 1883 4423 4672 10747 1109 4835 4236 5235 10748 1592 4145 1224 4383 10749 3211 4501 3978 5168 10750 610 612 738 4033 10751 2955 2310 4103 5542 10752 1179 4460 4964 5299 10753 4373 4505 4019 5210 10754 4034 4387 3947 4799 10755 3915 4388 4681 4995 10756 3679 4011 5044 5246 10757 3097 4002 3488 4792 10758 3966 4025 3801 5251 10759 2036 4703 3962 5056 10760 4169 4047 4596 5485 10761 4170 4596 4047 5485 10762 3449 4066 573 5525 10763 1895 572 4412 5057 10764 3678 4131 3984 4577 10765 3985 4132 3817 4578 10766 3753 5114 4347 5308 10767 1259 4433 1037 4810 10768 1233 1365 1807 4003 10769 3944 4415 373 5345 10770 2583 2934 5114 5308 10771 3811 4684 4358 5571 10772 4010 4931 3852 4960 10773 3968 4800 4349 5484 10774 496 516 430 4974 10775 889 4186 4675 5293 10776 3878 5027 4742 5347 10777 682 4410 4639 5462 10778 1431 1190 5024 5405 10779 4718 5041 4339 5333 10780 4117 4351 3702 5084 10781 1508 1507 4181 4530 10782 3760 3933 4552 5118 10783 1515 4382 988 4671 10784 3721 4246 3978 5078 10785 2606 2442 4509 5323 10786 3975 3765 4928 4986 10787 4131 4610 4229 5283 10788 2749 4508 2747 5622 10789 3485 4002 3486 5020 10790 3724 4464 4388 5404 10791 692 691 4106 5000 10792 4030 4753 3971 5286 10793 1102 1471 974 4614 10794 3274 4289 4704 4908 10795 3952 4684 4717 5252 10796 2259 4061 2265 5357 10797 2317 2322 2320 4965 10798 2627 4363 3239 5537 10799 696 4717 4975 5452 10800 1117 1112 4605 5552 10801 3025 4574 2019 5192 10802 3048 3510 4745 4767 10803 3546 562 4274 5260 10804 3968 4027 3658 5384 10805 1134 4391 4546 4586 10806 3550 1997 3583 5058 10807 4126 4499 3895 4500 10808 3976 5024 1432 5441 10809 2716 2717 3225 4282 10810 540 1626 1907 4276 10811 4209 4333 3665 4879 10812 4097 4265 3795 4380 10813 3963 4885 4672 5362 10814 3128 2278 2246 4644 10815 4352 4394 4231 5068 10816 3792 5088 3940 5588 10817 3883 4839 4773 5195 10818 948 1447 1032 5221 10819 3984 4131 3854 4722 10820 3343 4760 3996 5248 10821 4045 4117 3784 5373 10822 980 1706 973 4719 10823 518 1965 510 4008 10824 3979 4889 4455 4913 10825 395 4861 396 4883 10826 3827 4171 4020 5247 10827 1959 420 546 4007 10828 632 5012 4462 5219 10829 345 326 1984 5079 10830 1398 1117 1112 4605 10831 1637 4537 1150 5176 10832 4270 4879 3665 5321 10833 3195 4270 2260 4926 10834 4289 4452 3911 4943 10835 3803 4025 3966 4910 10836 4373 4610 3854 5097 10837 680 4639 3948 5462 10838 3795 4243 4132 4956 10839 684 4717 4410 5462 10840 3936 4406 3827 4428 10841 3719 4072 3975 5287 10842 2127 4285 2883 5435 10843 2198 2196 4286 5434 10844 4670 4790 3903 5538 10845 4158 3764 4632 4941 10846 4032 3900 4848 5335 10847 3666 4144 4603 5397 10848 1552 1468 4484 4707 10849 1494 4928 3975 5316 10850 4081 4796 3701 5518 10851 3577 4141 3578 5192 10852 1545 1338 4039 4994 10853 4117 3993 4922 5151 10854 1151 1152 4545 5330 10855 3687 4610 4373 5097 10856 3883 4773 5138 5195 10857 1874 1207 1208 5340 10858 1974 1958 4355 4852 10859 1276 4782 4558 5343 10860 3742 4234 4977 5051 10861 2614 3204 2564 5368 10862 3277 3957 3270 5155 10863 920 4553 4604 4797 10864 1478 4777 4191 5639 10865 2511 4778 4198 5640 10866 2056 2057 4214 4998 10867 819 4183 815 4457 10868 4307 4629 3705 5616 10869 2476 4856 4235 5420 10870 1403 5233 1894 5271 10871 4251 4351 3702 4991 10872 4162 4728 2540 5139 10873 3993 4117 3760 5151 10874 3737 5208 4906 5349 10875 1770 1468 4707 5597 10876 4644 5414 4453 5569 10877 3984 4131 3678 5283 10878 3817 4132 3985 5284 10879 816 753 1724 5597 10880 1770 1724 1468 5597 10881 1083 4854 1209 5340 10882 3443 1965 3535 4008 10883 3700 4319 4201 4899 10884 4197 4315 3700 4899 10885 3957 4915 3270 5155 10886 4231 4352 3781 4394 10887 4377 4471 4082 5196 10888 4018 3699 4551 4806 10889 607 4763 3927 4912 10890 1741 4268 1538 4556 10891 4719 5348 4115 5623 10892 1535 4179 867 5002 10893 1741 926 4101 4556 10894 2318 3103 4505 5329 10895 4315 4625 3700 4899 10896 3700 4625 4319 4899 10897 1483 1697 4538 5316 10898 554 1807 1365 4003 10899 4086 4588 3208 5551 10900 2882 4551 4018 5369 10901 4311 5170 3684 5393 10902 1587 4738 4769 5629 10903 4235 4859 2475 5420 10904 4251 4735 3755 4827 10905 3710 5196 4082 5503 10906 696 4975 4244 5452 10907 4271 4662 4044 5152 10908 2221 2216 4319 4651 10909 652 4329 1430 4655 10910 651 4329 652 4656 10911 4082 1184 5078 5503 10912 1365 4846 1364 4959 10913 2619 2600 4618 4958 10914 2527 3160 2954 5107 10915 3637 3959 3648 5134 10916 3935 4689 4443 4807 10917 4033 4863 3983 5222 10918 1415 4346 1792 5508 10919 2619 2917 2918 5189 10920 1804 4529 1718 5398 10921 3526 4792 4002 4862 10922 4427 4933 4031 4938 10923 2580 4976 3040 5608 10924 4018 4551 2882 5056 10925 3785 4217 4180 5391 10926 3657 4600 3991 4903 10927 1761 4687 4388 5404 10928 3722 4682 4490 5463 10929 3691 4528 4012 4619 10930 3258 2374 2399 4999 10931 3846 5007 4384 5178 10932 4278 4683 3882 5019 10933 878 1006 4433 4491 10934 1861 1733 4430 5305 10935 4136 4440 3711 4523 10936 1371 1370 4410 4902 10937 4023 4109 3843 4671 10938 3468 4006 3466 5018 10939 3971 4030 3774 4753 10940 2521 2726 4898 5273 10941 3685 4640 4539 5071 10942 2942 4277 2577 5312 10943 1646 658 4387 4799 10944 3966 5251 4348 5364 10945 3951 4507 3093 5360 10946 2697 5324 4330 5378 10947 2578 2678 3062 4487 10948 2249 2225 5170 5393 10949 2121 3974 4654 5301 10950 3518 3499 4793 4826 10951 593 4326 4527 5200 10952 945 4395 1019 5366 10953 1923 4291 4680 4960 10954 3776 3952 4608 5186 10955 3655 4125 3949 4823 10956 3975 3671 4511 5287 10957 1548 4782 3943 5241 10958 4293 4518 4238 4898 10959 3696 4924 4705 5350 10960 3716 4181 4103 4493 10961 4698 5247 3827 5250 10962 861 5328 4138 5558 10963 3223 4421 3086 4983 10964 3749 4073 4934 5234 10965 3795 4380 4956 5417 10966 3598 4068 4267 4959 10967 3798 4770 4309 4868 10968 4164 4808 3744 5451 10969 1470 4797 3982 5206 10970 3737 4340 4189 4906 10971 4074 4083 3885 5021 10972 1653 4024 1723 5374 10973 1714 4619 3930 4662 10974 2709 2319 4350 5423 10975 1784 1352 1795 4562 10976 2997 4973 4690 5123 10977 3328 5192 4574 5625 10978 1741 926 1042 4101 10979 2326 2327 2328 4086 10980 2329 2328 2327 4092 10981 644 940 1671 4085 10982 2499 2813 2502 4095 10983 1514 1675 1513 4089 10984 941 1575 1177 4093 10985 1756 1130 1775 4088 10986 1513 1115 1650 4089 10987 2691 2587 2589 4096 10988 1041 1793 1042 4101 10989 1364 5015 4959 5580 10990 2564 2557 4118 4561 10991 4145 4384 3848 4726 10992 920 4604 4553 4813 10993 3485 4022 3487 4290 10994 3721 3995 4916 5618 10995 4001 4428 3936 5250 10996 3942 4539 4640 5071 10997 3551 4130 3612 5229 10998 3675 4863 4033 5222 10999 1244 1462 1407 5491 11000 1579 537 4274 5432 11001 2343 4054 4775 4954 11002 4024 4788 3713 5514 11003 1030 1214 1524 4967 11004 3778 4636 4049 4955 11005 3651 4951 3936 4996 11006 1357 4749 4494 5251 11007 1258 4031 1158 4512 11008 2606 3227 2696 4102 11009 2661 4349 2535 4534 11010 4012 3691 4619 5375 11011 3844 4696 5128 5310 11012 2019 4574 3328 5192 11013 2201 2945 5017 5490 11014 3972 4705 2375 5184 11015 4247 4740 3830 5611 11016 4022 3490 4479 5303 11017 3813 4378 4837 4884 11018 3975 4446 3719 5293 11019 3839 4396 4957 5290 11020 1373 4309 1372 5278 11021 4395 4495 3940 5088 11022 3964 4788 4024 5514 11023 820 821 813 5206 11024 391 349 352 4850 11025 3889 4769 4738 5629 11026 3261 4281 4622 5356 11027 3777 3935 4689 5378 11028 1360 1000 4789 5188 11029 2405 4448 5073 5254 11030 2236 4411 4848 5335 11031 450 4628 449 4963 11032 3591 3639 3593 3962 11033 4047 4687 1056 5404 11034 3820 5103 4560 5297 11035 2724 4380 2820 4956 11036 930 4082 1728 4916 11037 3967 4071 3756 4668 11038 3826 4021 4449 5574 11039 2531 5073 2623 5254 11040 3595 3591 4522 4724 11041 566 417 502 4241 11042 3007 4691 3083 5329 11043 3670 4315 4197 4847 11044 3670 4194 4314 4847 11045 614 4629 615 5065 11046 1146 4788 4037 5227 11047 3671 5240 4127 5385 11048 3720 3941 4353 5100 11049 3721 4693 4249 5237 11050 3767 4819 4202 5376 11051 783 781 5045 5451 11052 3382 2948 3384 3955 11053 2300 2946 3166 4591 11054 844 1680 3946 5087 11055 2722 2820 4380 5417 11056 1796 1702 1178 4414 11057 4288 4453 3779 5444 11058 3979 4073 3790 5154 11059 3664 4477 4433 5028 11060 715 4838 1642 5615 11061 3615 4130 3551 5229 11062 1307 4780 4743 5347 11063 3831 5026 4419 5498 11064 4233 4502 3750 5292 11065 3670 4197 4632 4847 11066 3670 4632 4194 4847 11067 3942 4418 4076 5290 11068 2959 3098 2961 4516 11069 1269 5067 4265 5432 11070 3191 2367 2171 4364 11071 4348 4836 2814 5365 11072 1469 4517 3926 5074 11073 632 1661 636 5012 11074 2947 5028 4513 5533 11075 3771 4953 3951 5163 11076 3546 4360 562 5260 11077 3982 4061 3734 4740 11078 2040 4018 2882 5056 11079 2414 2359 3072 5602 11080 3651 4759 4620 4886 11081 337 5138 4028 5195 11082 4399 4932 3737 5315 11083 4251 4735 3900 5335 11084 780 779 777 4808 11085 453 4772 4381 5494 11086 777 778 4483 4538 11087 4068 4959 1337 5015 11088 3927 4752 3920 4908 11089 3498 1529 4972 5546 11090 727 4977 4676 5512 11091 3516 3013 3075 4979 11092 4005 4465 3930 4953 11093 1729 1869 1868 4897 11094 2598 2519 2599 4525 11095 516 4974 496 5123 11096 3074 404 4849 5003 11097 486 1545 574 4039 11098 1047 4494 4547 5480 11099 2278 2251 4644 4945 11100 2510 4930 4661 5572 11101 2040 2882 4018 5369 11102 3893 4549 3993 4829 11103 2057 2055 4214 4704 11104 4515 4856 4120 5420 11105 641 645 643 5149 11106 1622 669 673 4442 11107 4189 4340 3825 4906 11108 1838 1767 4796 5351 11109 758 1584 4482 4870 11110 1469 5074 3926 5261 11111 3896 4719 4115 5623 11112 4372 4930 3944 5040 11113 3836 4678 4515 4856 11114 3581 3583 3584 5058 11115 3472 3439 3363 5178 11116 1370 4639 4410 4902 11117 3918 4123 4108 4952 11118 1651 349 391 4850 11119 450 4007 4628 4963 11120 4399 4967 938 5315 11121 4384 4726 4145 5178 11122 384 4412 3989 4947 11123 3430 3516 3075 4979 11124 3815 4831 4550 5006 11125 4091 4594 3662 5445 11126 3816 3985 4295 5580 11127 3600 4068 4359 5255 11128 3808 4063 4562 5119 11129 742 4091 1684 4629 11130 4621 3662 5370 5565 11131 2867 5143 3327 5397 11132 4560 4635 3820 5150 11133 4096 4546 4391 4586 11134 4528 4619 3951 4942 11135 346 345 4444 5079 11136 4029 4933 4416 4938 11137 1246 4016 1654 4873 11138 3853 4279 4029 5017 11139 2069 4594 4541 5519 11140 3920 4659 3927 4908 11141 2449 4896 4114 5198 11142 2488 3288 5137 5453 11143 3119 2519 4540 5408 11144 1141 4664 5034 5646 11145 1761 1053 4388 4687 11146 4008 3852 4931 4960 11147 1379 950 4234 4489 11148 2276 4805 4058 5596 11149 3016 3231 3195 4456 11150 1170 4111 4845 4893 11151 3993 4829 4549 5477 11152 1506 1436 1826 5030 11153 3737 4906 4189 4932 11154 3140 2876 4971 4995 11155 2240 2239 2241 5084 11156 1589 4052 910 4731 11157 3746 4245 4158 4632 11158 2958 4403 2100 4567 11159 2938 2881 4403 4569 11160 2881 4404 2880 4570 11161 2643 2815 4404 4571 11162 1498 4810 4575 5536 11163 4064 4337 3818 5432 11164 3822 4337 4064 5433 11165 777 778 765 4483 11166 749 754 755 4481 11167 1522 777 776 4483 11168 1724 1552 1468 4484 11169 758 1584 847 4482 11170 4067 3888 4283 4747 11171 2561 2553 2690 4723 11172 977 4532 4442 5405 11173 3260 2726 4004 4898 11174 3724 4681 4388 4995 11175 2483 4815 4079 5399 11176 3885 4678 4074 4856 11177 1913 550 3477 4125 11178 3837 4802 4402 5453 11179 3952 2153 5252 5627 11180 3678 4256 4085 4392 11181 1539 1704 1707 3954 11182 765 4483 778 4538 11183 3651 4128 4001 4620 11184 3059 3924 4851 5409 11185 1533 1938 1939 4083 11186 3199 3147 2624 4511 11187 1724 4484 1468 4707 11188 4359 4360 3628 5606 11189 1292 1291 4301 5009 11190 4432 4628 4007 4963 11191 4201 4319 3763 4899 11192 3764 4315 4197 4899 11193 3939 4544 4233 4873 11194 4100 3735 4527 5325 11195 321 2022 3997 4871 11196 3093 3951 2079 5163 11197 3017 4429 3231 4456 11198 2111 3947 4647 5199 11199 4319 4625 3763 4899 11200 3764 4625 4315 4899 11201 364 365 331 4182 11202 4080 4513 3955 4616 11203 4100 4527 5110 5325 11204 3499 4617 3514 4793 11205 3480 4592 3949 4888 11206 2102 2100 4403 4568 11207 2881 3000 4403 4570 11208 2935 4404 2881 4569 11209 2641 2643 4404 4566 11210 3198 2987 3231 4429 11211 4185 4336 3797 5556 11212 3013 3382 3384 3955 11213 3693 4756 4324 5209 11214 742 613 1638 4629 11215 742 1684 615 4629 11216 3737 4399 4906 4932 11217 960 5310 3963 5458 11218 1803 4470 1749 5450 11219 1713 848 4938 5395 11220 4506 5077 4171 5418 11221 3953 4701 1397 5150 11222 2306 2305 2304 5463 11223 4041 4882 3679 5300 11224 1297 4680 4952 5509 11225 1392 1393 5331 5562 11226 4584 5036 3785 5391 11227 998 1467 4707 5074 11228 3925 4298 3738 4472 11229 1364 4959 4846 5580 11230 2354 4859 4235 5613 11231 3846 4383 4145 4384 11232 977 669 4442 4532 11233 494 4786 4108 4994 11234 3712 4799 4329 5291 11235 3985 4748 4295 5580 11236 4399 4400 3737 4906 11237 3846 4384 4145 5178 11238 3827 4506 4171 5418 11239 2367 2171 4364 4924 11240 3580 3571 3552 5010 11241 3622 4064 3625 4397 11242 3942 4076 4640 5290 11243 1793 1323 4284 4609 11244 3759 4335 4213 4699 11245 3854 4722 4181 5063 11246 3904 4478 4110 5475 11247 2674 4521 3949 4914 11248 513 4520 4875 5629 11249 3663 4579 4107 4999 11250 2278 2279 2251 4945 11251 4217 4326 3798 4897 11252 2594 5026 4297 5498 11253 3969 4026 3785 5036 11254 3666 4027 3968 5037 11255 3648 3959 4761 5105 11256 3279 2829 4098 5148 11257 4249 4305 3858 4902 11258 1734 1390 1089 5069 11259 1547 1793 1323 4284 11260 1798 1547 575 4284 11261 3883 5138 4839 5195 11262 3825 4379 4275 4906 11263 4549 4922 3993 5151 11264 3838 4736 4489 5416 11265 794 4045 799 4754 11266 4009 3292 4787 5428 11267 2322 4053 3103 4741 11268 1671 1500 4135 4557 11269 4248 4855 2285 4874 11270 3849 4665 4039 4786 11271 2153 2156 4364 5153 11272 1383 4485 1160 5634 11273 3801 4494 4095 4749 11274 2380 4295 2780 4677 11275 4301 4508 3852 4680 11276 3013 3955 3384 4979 11277 3270 3957 3277 5535 11278 1233 4003 1807 4981 11279 4105 4137 952 5205 11280 2387 4588 2983 5551 11281 3748 4088 4469 5095 11282 333 4925 4112 5033 11283 2448 4015 2460 4896 11284 1758 4262 1504 5635 11285 2460 2525 4896 5226 11286 1084 4759 4128 4951 11287 4071 4837 3967 5306 11288 4617 4826 3495 5546 11289 2036 3962 4699 5056 11290 3962 4699 4133 5191 11291 3927 4659 4038 4998 11292 4310 4450 1781 5320 11293 3211 4765 3073 5127 11294 1421 1435 5077 5333 11295 909 4731 910 5197 11296 548 3568 1576 5096 11297 4070 4710 954 5016 11298 3826 4053 4019 5328 11299 3326 4534 2659 4574 11300 3667 5114 4199 5586 11301 1490 4550 3613 5048 11302 3939 5444 3779 5460 11303 2355 2354 2270 5613 11304 3748 4088 5095 5355 11305 4287 4848 3765 4986 11306 2432 2433 2431 4640 11307 1914 4479 3446 4725 11308 1836 4752 1826 5486 11309 2392 4540 2519 4577 11310 3825 4189 4906 4932 11311 4065 4478 3654 4580 11312 3433 1993 2926 4888 11313 4065 4478 3874 5562 11314 3260 4004 3126 4898 11315 3941 3729 4232 5277 11316 3825 4746 4485 4864 11317 2127 2118 2883 4285 11318 2234 2233 2231 4287 11319 2089 3121 3308 4289 11320 1114 1817 1495 4288 11321 2355 4235 2354 4859 11322 3926 4652 4517 5261 11323 315 1953 343 5138 11324 4035 4279 3853 4591 11325 3704 4279 4035 4591 11326 4433 4477 3904 5028 11327 4004 4033 3688 5545 11328 4096 4391 3749 4586 11329 3703 4269 4469 5319 11330 3713 4181 4024 4493 11331 2282 2285 4855 4874 11332 374 382 371 4649 11333 4366 4768 2087 5630 11334 1404 4055 4679 5200 11335 3822 4609 4284 5161 11336 4024 4059 3716 4583 11337 3984 4610 4131 5283 11338 4132 4611 3985 5284 11339 3406 2773 2032 5459 11340 1382 1893 5038 5416 11341 3186 2900 1976 4587 11342 4030 4148 3739 4833 11343 3486 4002 3526 4792 11344 4138 1634 5304 5574 11345 762 4030 768 4870 11346 3948 3812 4442 4648 11347 458 4362 4780 4904 11348 4261 4753 3774 4803 11349 3576 4673 4141 5192 11350 1616 1887 1663 4866 11351 4311 4878 2249 5393 11352 3813 4171 4020 4506 11353 4020 4171 3827 4506 11354 2387 2952 2983 4588 11355 3520 573 1476 5525 11356 4049 3754 4641 5062 11357 2398 4107 2373 4733 11358 800 802 1567 5098 11359 3845 5192 4459 5625 11360 2594 2595 5026 5498 11361 4145 4383 3848 4384 11362 3765 4538 4031 5316 11363 1053 1056 4687 5404 11364 4160 4363 3743 5537 11365 1869 1201 1868 4897 11366 2635 2184 2405 4014 11367 2040 2037 2039 4018 11368 2448 2524 2460 4015 11369 1012 1654 1246 4016 11370 3164 3009 4771 4953 11371 2749 2871 4508 5465 11372 4234 4977 3871 5595 11373 3844 3963 4466 5430 11374 4137 4504 732 5205 11375 3906 4480 4435 4768 11376 3829 4222 4171 5401 11377 2437 2435 2438 5212 11378 2422 4341 2363 5270 11379 3411 3997 4790 4849 11380 4042 4225 3677 5122 11381 1446 708 703 5094 11382 4087 4509 3732 5496 11383 4079 5343 4782 5399 11384 3919 5044 4638 5246 11385 1592 1590 4145 4383 11386 3826 4585 4053 5328 11387 1134 4546 1238 4586 11388 4335 4702 3313 5556 11389 4177 4042 4597 5481 11390 378 396 4861 4883 11391 3825 4906 4275 4932 11392 3683 4138 4019 5558 11393 1810 947 4776 5513 11394 1836 740 1826 4752 11395 4001 4128 3651 4951 11396 2320 2322 2323 4965 11397 4029 3853 4933 4938 11398 2689 4305 2792 4501 11399 715 1642 722 5615 11400 1556 4672 4423 5345 11401 3526 4002 3486 4862 11402 918 4413 919 5495 11403 1348 1035 1347 5609 11404 3487 4290 4022 5419 11405 3698 4540 5238 5505 11406 2196 2198 4286 5626 11407 1318 4804 3960 5624 11408 3312 2352 2348 5243 11409 3684 4819 4059 5393 11410 4031 4933 3853 4938 11411 4058 3681 4457 4950 11412 4917 4970 3805 5243 11413 3915 4464 3986 5053 11414 2613 2516 4511 5385 11415 1029 988 989 4023 11416 842 846 844 4467 11417 845 1680 1808 4468 11418 3948 4442 3812 4993 11419 4265 4380 4097 5187 11420 2343 4054 2341 4775 11421 2766 4409 2765 4463 11422 3858 5215 4305 5327 11423 2314 2315 4373 4505 11424 2890 3234 4041 4829 11425 4435 4480 3733 4768 11426 2373 5051 4107 5515 11427 3738 3925 4472 5223 11428 944 1810 4017 4854 11429 3694 4481 4434 4712 11430 4434 4481 3908 4712 11431 4437 4482 3694 4712 11432 3905 4482 4437 4712 11433 2914 3108 2915 5203 11434 1434 4387 664 5437 11435 2452 2453 4162 4379 11436 4236 4607 3762 4835 11437 1421 4048 1360 4789 11438 4024 4583 3716 5374 11439 3344 2797 2834 5081 11440 1536 3549 3601 4068 11441 3790 4298 4009 5428 11442 3920 4590 4156 4983 11443 3991 4601 3871 4977 11444 1350 4125 5276 5609 11445 3783 4650 4323 5317 11446 2382 4461 4377 5272 11447 954 4070 733 4710 11448 4321 5196 3710 5503 11449 533 3454 1609 4290 11450 3651 4001 4951 4996 11451 3912 4718 4285 5280 11452 3722 4682 4564 5264 11453 4318 4777 3758 5295 11454 4824 5022 3889 5184 11455 3757 4173 4097 4531 11456 4097 4173 3795 4531 11457 3046 4367 4834 5420 11458 1096 1341 1379 5416 11459 702 716 1822 4294 11460 4138 4021 4691 5329 11461 1583 1653 1581 4024 11462 1864 1201 1869 4026 11463 2814 2940 2562 4025 11464 2409 4400 2650 4728 11465 2193 4292 4390 5627 11466 3753 4347 4071 5308 11467 4563 4763 4038 5342 11468 4079 4558 3936 4782 11469 3365 2847 3400 4065 11470 3513 524 1947 4725 11471 2153 3952 2148 5153 11472 3700 4319 4625 5549 11473 3656 4730 4514 4794 11474 3781 4142 4561 4710 11475 3853 4031 4774 4933 11476 3853 4938 4279 5395 11477 1834 1845 634 4036 11478 3832 3968 4576 4800 11479 4345 4841 3658 5201 11480 3006 2021 3333 4649 11481 4604 4670 3850 4852 11482 2890 3234 3080 4041 11483 4049 4414 3856 5448 11484 4259 5294 4072 5412 11485 3861 4561 4142 4710 11486 4230 4251 3702 4991 11487 2355 2270 4338 4859 11488 4053 4585 4019 5328 11489 1550 568 3455 4291 11490 4154 4468 3682 5578 11491 688 683 4211 4717 11492 3873 4432 4007 4963 11493 3806 4073 3979 4713 11494 4118 5368 3878 5500 11495 3745 4392 4256 5085 11496 1562 4414 884 4662 11497 315 4860 1953 5138 11498 4106 4506 4020 4581 11499 3898 4078 4071 4779 11500 3906 4768 4435 5012 11501 3077 5407 2264 5415 11502 3134 4541 2069 4594 11503 3798 4219 4770 5179 11504 2952 2622 2621 5085 11505 2513 2621 2620 5085 11506 1427 1819 1182 4464 11507 4423 4649 3650 4820 11508 4165 4890 3731 4961 11509 4192 5080 3824 5402 11510 2069 4541 2067 5519 11511 1145 1146 4037 5227 11512 3859 4132 3985 4677 11513 3745 4633 4203 5594 11514 3999 4508 2744 5431 11515 4126 4500 3895 5233 11516 3558 3633 3625 4284 11517 4024 4181 3716 4493 11518 3074 4849 3358 5003 11519 351 4716 4000 4822 11520 4115 3685 4582 5348 11521 1660 981 983 5086 11522 4383 5059 1027 5619 11523 1220 4743 4742 5347 11524 2209 2212 4029 4651 11525 3955 4080 3867 4602 11526 4047 4785 4170 5404 11527 4773 4028 5138 5195 11528 2555 4693 4305 5618 11529 762 766 768 4030 11530 709 5068 712 5100 11531 2359 4781 4367 5632 11532 1714 4619 627 4964 11533 3713 4181 4722 5063 11534 3580 3552 2029 5010 11535 3966 4348 4836 5489 11536 1072 1797 4408 4984 11537 709 1444 712 5068 11538 4435 4768 3733 5012 11539 3979 3790 4889 4913 11540 1872 1739 4506 5418 11541 3699 4055 4018 5369 11542 2236 2237 4411 5335 11543 3963 4672 4458 5362 11544 2355 2475 4235 4859 11545 2582 5095 4199 5586 11546 3238 2453 2410 4162 11547 4077 4226 3845 5625 11548 1325 4360 4243 5260 11549 3924 4413 3722 4564 11550 977 669 1622 4442 11551 1622 673 681 4442 11552 3356 2486 4930 5165 11553 2560 4448 4175 5073 11554 2289 2290 4272 4595 11555 3737 4113 3972 4967 11556 4393 4504 3938 5068 11557 1640 1918 566 4241 11558 4212 4634 3802 5441 11559 3748 5095 4469 5355 11560 1265 1872 4406 5418 11561 3668 4867 4156 4983 11562 4156 4867 3920 4983 11563 676 4718 671 5263 11564 3090 3940 4589 4757 11565 1198 1030 4399 5004 11566 553 1528 1631 5013 11567 1078 1084 4128 4951 11568 469 3950 474 5218 11569 2404 4175 2560 4448 11570 1289 1718 1804 4529 11571 4016 4054 3701 4675 11572 4303 4987 3938 5094 11573 800 802 5098 5265 11574 3233 3180 2946 4127 11575 810 803 804 5122 11576 3378 5018 3376 5167 11577 1376 4233 4873 5444 11578 3654 4022 4479 5303 11579 2877 2767 3303 4463 11580 1505 523 3608 5144 11581 4371 782 5451 5510 11582 1424 738 612 4033 11583 650 648 4656 5023 11584 1551 4655 1432 5023 11585 4144 4551 3699 4806 11586 4126 5233 3903 5421 11587 4093 4259 3778 4872 11588 3017 3198 3231 4429 11589 1691 1565 4711 5074 11590 2555 4305 5168 5618 11591 4301 4680 3852 4952 11592 3833 4921 4615 5371 11593 2910 4447 2909 5428 11594 4190 4755 3987 5305 11595 1168 1668 4523 5205 11596 4066 4445 3877 4791 11597 3740 4618 4524 5380 11598 378 4883 4415 5040 11599 3411 4790 3427 4849 11600 1053 4687 1761 5404 11601 3448 4575 524 4725 11602 3655 4823 3949 4914 11603 3574 4459 3923 5645 11604 962 1595 1593 5034 11605 3649 3640 3565 4821 11606 1554 4415 4372 5345 11607 3807 5159 4213 5191 11608 1651 4795 349 4850 11609 4367 4859 2357 5632 11610 4782 4951 3651 5241 11611 2355 4338 2356 4859 11612 4461 5272 2382 5332 11613 3746 4847 4158 5115 11614 3434 3013 3516 4979 11615 3726 4060 4025 4643 11616 4197 4315 3764 4847 11617 3746 4314 4194 4847 11618 3958 4487 3831 4645 11619 1508 869 1507 4530 11620 1839 4091 1684 5156 11621 1795 653 1784 5119 11622 1055 4047 1097 4831 11623 3651 4620 4001 4996 11624 511 522 439 4821 11625 2096 5238 4540 5505 11626 4340 4864 2512 5334 11627 3912 4485 5041 5333 11628 4136 4554 3770 4984 11629 3779 4233 3939 4502 11630 3778 4259 4641 4872 11631 3971 4605 4245 5115 11632 3827 4428 4698 5250 11633 3568 4141 1576 5096 11634 1583 4788 4024 4929 11635 4134 4345 3661 5244 11636 3010 2634 3233 5163 11637 2583 5114 4199 5308 11638 3864 4487 3958 4645 11639 3713 4788 4037 4958 11640 3466 4010 3465 5018 11641 2548 2485 4579 5389 11642 1742 4159 1114 5174 11643 3941 3720 4394 5100 11644 3694 4712 4434 5005 11645 4437 4712 3694 5005 11646 3551 3610 4124 5229 11647 3835 4930 4425 5572 11648 1123 1122 1137 3958 11649 4434 4712 3908 5005 11650 3905 4712 4437 5005 11651 608 4763 607 4912 11652 3255 4353 4589 5588 11653 878 4433 1670 4491 11654 3654 4478 4065 5562 11655 3773 4596 5006 5387 11656 694 4639 1370 4902 11657 2926 4791 3433 4888 11658 1099 1819 4389 5404 11659 1819 1761 4388 5404 11660 3878 4743 4362 4780 11661 3748 4369 4269 5337 11662 3947 4799 4161 5119 11663 3033 3964 3032 4909 11664 1452 3966 1358 4910 11665 3958 3831 4487 5498 11666 4077 4278 3845 4683 11667 2783 2789 4130 4702 11668 3799 4495 4395 5088 11669 3104 2449 4114 5198 11670 2798 2795 2802 4628 11671 3835 4425 4930 5314 11672 2720 2721 3063 5187 11673 3760 4552 4405 5242 11674 3090 4757 2178 5455 11675 3667 4090 4304 4961 11676 2150 4119 2895 4721 11677 3654 4479 4065 5303 11678 4009 4787 4447 5428 11679 3773 4831 4687 5582 11680 3805 4970 4283 5243 11681 1648 4605 4087 5552 11682 4082 5078 4714 5503 11683 3107 3087 4396 5290 11684 3648 3637 3570 3959 11685 2523 4097 2722 5187 11686 2824 4755 3987 5215 11687 3760 5118 4552 5242 11688 3634 4150 3323 5106 11689 1047 4494 1357 4749 11690 2404 4448 2560 5073 11691 2751 4431 3928 5166 11692 3013 3503 1977 4832 11693 316 411 335 3959 11694 4009 4299 3790 4447 11695 3997 4850 3851 5011 11696 4077 4534 4226 5625 11697 3659 4704 4289 4908 11698 2522 4429 2281 5553 11699 2341 4775 4054 5487 11700 3912 4485 4746 4864 11701 3969 4841 4345 5201 11702 1560 3930 4964 5411 11703 1422 1297 4952 5509 11704 2958 2938 2186 4403 11705 2815 2880 2644 4404 11706 1061 4085 940 5202 11707 1233 1365 4003 5282 11708 1218 5057 4412 5128 11709 3794 4468 4293 4927 11710 542 479 417 4920 11711 849 796 4624 5246 11712 1726 4668 4078 5109 11713 3999 5009 3918 5431 11714 2749 5465 4508 5590 11715 3604 4622 3605 4981 11716 2291 2294 2875 5182 11717 3874 4478 4065 4580 11718 3654 5303 4065 5589 11719 3657 4409 3929 4470 11720 3312 3290 2470 4402 11721 2470 3290 2922 4402 11722 4197 3764 4632 4847 11723 3746 4194 4632 4847 11724 3995 5069 3841 5298 11725 3478 3949 3480 5276 11726 3224 3205 2890 4882 11727 4066 4445 3841 4492 11728 1988 3357 2992 4875 11729 1603 4043 804 4869 11730 4023 3732 4509 5496 11731 2958 2186 2100 4403 11732 2186 2938 2881 4403 11733 2881 2644 2880 4404 11734 2643 2815 2644 4404 11735 3776 4292 4211 5508 11736 3357 4824 2736 5101 11737 1437 4922 4549 5151 11738 2829 3279 4098 5225 11739 1820 854 1843 5264 11740 1726 4078 1474 5109 11741 2355 2357 4367 4859 11742 3981 4934 3749 5089 11743 902 5080 818 5402 11744 3698 4480 5317 5505 11745 3493 4623 3956 4972 11746 827 4438 826 4754 11747 3744 4411 4882 5045 11748 2365 4176 4466 4646 11749 1752 1512 4899 5532 11750 3547 5106 4574 5192 11751 2689 4305 4501 5168 11752 4135 4435 3698 4480 11753 1309 4769 4227 5230 11754 1039 5057 1218 5128 11755 3665 4101 4375 5066 11756 3506 3508 4865 5021 11757 971 1027 5059 5619 11758 1822 4294 716 4935 11759 4658 5169 3808 5199 11760 3743 4244 4497 4845 11761 3803 4324 4264 5605 11762 3658 5244 4854 5384 11763 2436 4847 3082 5548 11764 4272 4686 3859 4855 11765 3411 3997 2869 4790 11766 1646 4799 4034 5291 11767 3381 4002 3097 4792 11768 3945 3818 4380 5067 11769 2230 5185 2231 5573 11770 3929 4409 3657 4463 11771 3813 4106 4378 4884 11772 4210 5175 3693 5554 11773 3740 4557 4013 5074 11774 4156 4590 3668 4983 11775 4090 3731 4890 4961 11776 3778 4237 4093 4663 11777 3831 4449 4021 4876 11778 3880 5032 4227 5184 11779 3288 2416 2470 4402 11780 2102 2100 2186 4403 11781 2881 3000 2186 4403 11782 2935 2644 2881 4404 11783 2641 2643 2644 4404 11784 3957 4935 3823 5535 11785 3964 3032 4909 5307 11786 4009 4298 3738 5492 11787 1890 4744 4716 4822 11788 4004 3688 4694 5545 11789 3945 4243 3817 4360 11790 4532 4784 3974 5291 11791 4029 4651 4416 4933 11792 2718 2550 4001 5250 11793 2681 2680 2604 4760 11794 4416 4651 3680 4933 11795 1183 4049 1178 4872 11796 1844 1135 1852 4299 11797 973 4115 5348 5623 11798 4670 4790 3850 4852 11799 4001 4698 4428 5250 11800 3000 2102 2186 4403 11801 2644 2935 2641 4404 11802 1050 1052 4494 5480 11803 4175 4657 3792 5088 11804 4478 5331 4110 5475 11805 3927 4659 3920 4912 11806 1825 1527 1960 4533 11807 4015 4554 2524 5226 11808 3900 4928 4371 4986 11809 3699 4584 4055 5369 11810 3600 4068 3602 4359 11811 3077 4042 5407 5415 11812 3861 5042 3998 5181 11813 2315 2316 4373 5423 11814 963 1025 4283 4747 11815 4082 4377 3710 5127 11816 3348 4444 1984 5079 11817 2473 2530 2454 4620 11818 3716 4493 4103 5542 11819 3372 2770 3990 4974 11820 2929 2988 4198 5473 11821 481 433 506 4769 11822 4118 4561 2557 5042 11823 3680 4427 4031 4938 11824 2712 2624 4427 4511 11825 4010 4508 3852 5590 11826 3952 4608 2153 5627 11827 2390 4400 4906 5349 11828 1179 4964 1561 5299 11829 3454 533 3484 4290 11830 4447 4889 3790 5428 11831 3852 4508 4301 4952 11832 3549 1570 3607 4360 11833 1648 4087 4605 5499 11834 2261 4059 2226 4878 11835 3455 3467 1550 4291 11836 3176 2830 4779 5308 11837 1378 1474 1726 4078 11838 3964 4929 3782 5307 11839 1797 1816 1072 4408 11840 4093 4237 3701 4663 11841 4138 4505 3826 5329 11842 3439 3473 4726 5178 11843 2410 4162 2453 4379 11844 3860 3987 4755 5305 11845 4645 5524 4419 5543 11846 3743 3932 4688 4845 11847 4093 4237 3778 5262 11848 4016 4675 3701 5518 11849 3805 4430 3932 5523 11850 3375 4010 3152 5590 11851 4524 5189 3220 5307 11852 704 4244 696 4975 11853 4005 4465 2608 5294 11854 2937 5141 3252 5438 11855 3748 4911 4258 5355 11856 4518 4715 4036 5367 11857 3939 3779 4502 5460 11858 2264 5407 4225 5415 11859 2969 4923 4056 4957 11860 1545 4039 421 4994 11861 3777 4094 4368 5054 11862 2739 4445 2740 5137 11863 3399 3456 3521 4823 11864 2053 5121 4099 5489 11865 3727 4350 4179 5002 11866 3721 4305 4249 4693 11867 1913 3477 3428 4125 11868 333 410 4112 4844 11869 2340 4054 2343 4954 11870 3961 4874 5174 5336 11871 1245 4803 1395 5361 11872 562 3546 3607 4360 11873 782 779 4808 5510 11874 3255 4353 2165 4589 11875 2633 3153 4465 5294 11876 2132 4358 4648 5275 11877 1469 744 633 4517 11878 3831 4419 4529 5543 11879 3314 4357 3302 4669 11880 1750 4172 743 5216 11881 4004 4898 2726 5273 11882 2395 4216 2297 4762 11883 3920 4752 3927 4912 11884 3323 3634 3305 5143 11885 3765 4371 4928 4986 11886 3681 4498 4270 5075 11887 3307 2653 3284 4293 11888 3853 4591 4279 5017 11889 3987 5215 4902 5327 11890 3774 3971 4605 5257 11891 2981 3390 2678 4074 11892 4433 4488 3664 5521 11893 2278 4453 2568 5511 11894 3906 4455 4889 4913 11895 2389 4906 4340 5208 11896 3841 4002 4792 4862 11897 4381 3873 4772 5116 11898 3676 4052 3963 4466 11899 3457 4112 401 4844 11900 2222 4261 5054 5376 11901 3979 3790 4913 5154 11902 3090 4589 2167 4757 11903 3260 4004 2726 5273 11904 4466 4840 3676 5541 11905 496 430 2770 4974 11906 866 4138 861 5328 11907 3995 4614 3721 4916 11908 4101 4337 3822 5433 11909 4064 4284 3822 5433 11910 2534 2659 4534 5625 11911 3752 4272 4168 5607 11912 359 3931 361 5194 11913 4549 4829 3695 5477 11914 4416 4483 3680 5052 11915 3654 5331 4478 5562 11916 2605 4692 4176 5640 11917 3655 4187 4809 5167 11918 4511 4986 3975 5287 11919 2262 2269 3077 4042 11920 804 1603 858 4043 11921 794 795 799 4045 11922 1056 1097 1055 4047 11923 4426 4930 4425 5314 11924 3916 4295 4281 5124 11925 475 3943 4690 5029 11926 4551 4603 4144 5397 11927 2197 4286 2198 5626 11928 3788 4387 4398 5060 11929 1360 1421 1332 4048 11930 4433 4491 1006 5475 11931 4665 5101 3914 5482 11932 4007 4432 3882 4628 11933 3949 4823 2806 4914 11934 4094 4368 3758 4997 11935 3943 5343 4974 5399 11936 3924 4564 3722 4682 11937 2405 2635 4014 5254 11938 2196 2197 2198 5626 11939 2724 2778 2777 4956 11940 1814 1719 5251 5440 11941 2445 4890 2444 5198 11942 2222 3071 2223 5054 11943 2580 3040 3041 5608 11944 995 1756 1656 4304 11945 1015 1069 4081 4801 11946 1054 4060 4687 5582 11947 3678 4229 3937 4392 11948 3035 3189 4158 5183 11949 3696 4364 3952 4608 11950 913 910 1589 4052 11951 2064 2066 3983 4949 11952 3760 4117 4045 5151 11953 2621 3133 2952 4982 11954 4120 3870 4515 5420 11955 3570 3552 3571 5010 11956 3109 2084 2088 4768 11957 2299 4437 5005 5183 11958 3795 4173 4097 5417 11959 2476 2542 4856 5420 11960 3176 2124 4071 4948 11961 879 4110 969 4491 11962 1436 5030 4407 5486 11963 2317 3103 2322 4053 11964 2340 2341 2343 4054 11965 1669 5171 1637 5176 11966 3877 4445 4066 4492 11967 3831 4419 4645 5524 11968 4061 4926 2259 4950 11969 611 4307 1638 4863 11970 3749 4391 4096 4787 11971 2533 4027 3311 5397 11972 4234 4489 950 5595 11973 1736 4562 4572 5234 11974 561 3496 3498 4972 11975 2177 4361 2178 4757 11976 1005 4387 4273 5491 11977 4519 4772 3873 5116 11978 2061 2063 4421 5471 11979 1183 1425 1178 4049 11980 2226 2261 3076 4059 11981 1054 1805 1052 4060 11982 2534 4534 4077 5625 11983 3182 4292 3167 4390 11984 2349 2271 2276 4058 11985 2334 4377 2333 5603 11986 3201 4315 4625 5549 11987 1645 4652 4172 4942 11988 3512 4767 4121 4907 11989 4353 4589 4232 5131 11990 3600 4267 4068 5255 11991 394 404 342 5003 11992 4171 5077 4048 5418 11993 2282 4248 2285 4874 11994 4085 4392 4256 5202 11995 757 4279 755 5070 11996 481 1544 433 4769 11997 4377 5272 4471 5382 11998 3890 5101 4665 5482 11999 2191 2088 2091 4768 12000 462 499 430 3990 12001 2904 5083 4298 5492 12002 564 3500 3435 4083 12003 3314 3020 4357 5555 12004 786 784 4032 5620 12005 676 4339 4718 5263 12006 3868 4300 4121 4374 12007 4115 4719 3685 5348 12008 2446 2445 2444 5198 12009 3812 4501 3978 4765 12010 3639 3962 3591 4724 12011 4298 4889 2908 5428 12012 2666 2972 2809 4814 12013 1819 1194 4389 4464 12014 1357 1719 4749 5251 12015 3663 4854 4349 4999 12016 3935 5061 2456 5378 12017 4527 5110 590 5422 12018 4005 4414 3930 4465 12019 3191 4364 2169 5537 12020 1250 754 1686 4712 12021 847 1738 1686 4712 12022 3857 4636 4049 5447 12023 4230 3702 4351 4991 12024 3255 2175 4353 5588 12025 3848 4300 4121 5608 12026 1455 736 4535 5223 12027 2509 4336 5006 5387 12028 3748 4469 4269 4911 12029 3346 4947 3989 5160 12030 3757 4268 4097 4825 12031 4041 4450 3660 5320 12032 3998 4815 2811 5281 12033 1291 1290 1896 4952 12034 1517 3931 4671 4751 12035 3671 4072 4005 5385 12036 688 4717 4211 5186 12037 4162 4275 3834 4379 12038 4196 3262 5267 5644 12039 2856 4175 4448 5588 12040 4285 4948 3756 5306 12041 4242 5080 1596 5646 12042 1948 4040 1599 4664 12043 768 1398 4870 5257 12044 3844 4646 4475 5430 12045 1483 4538 778 5510 12046 4524 5189 3740 5380 12047 3617 3209 3609 5135 12048 3728 3926 4517 4842 12049 1806 4838 4232 5579 12050 2686 2783 2685 4702 12051 3657 3929 4463 5406 12052 3665 4101 5066 5321 12053 3597 4267 3600 5255 12054 3757 4874 4438 4945 12055 3724 4047 4170 5404 12056 3724 4169 4047 5404 12057 2856 4175 2404 4448 12058 889 4186 887 4675 12059 1587 1588 1903 4738 12060 1386 4873 4230 4939 12061 1158 4512 4031 5104 12062 3633 575 3548 4284 12063 523 4140 3608 5144 12064 2061 4421 4659 5471 12065 4440 4554 3711 5226 12066 3998 4386 3875 5281 12067 2273 4630 2272 5357 12068 4011 4057 3722 4638 12069 2355 2356 2357 5632 12070 2356 2511 2358 5632 12071 1779 1058 1240 5314 12072 3860 4244 3952 5452 12073 4419 4487 3831 5498 12074 2667 5281 4815 5399 12075 3963 4052 3676 5458 12076 3244 5055 2336 5062 12077 3487 4022 3485 5020 12078 949 948 4220 5221 12079 4055 4584 4018 5369 12080 2236 4411 2235 4848 12081 2355 4367 3046 4859 12082 3951 4507 4172 5163 12083 4782 5343 3943 5399 12084 4041 4503 3660 5300 12085 357 4056 330 4923 12086 4456 4552 3933 4926 12087 2174 3090 2167 4757 12088 2789 4702 2686 5633 12089 3941 3720 4353 5113 12090 3306 2789 2686 5633 12091 3362 4120 3401 4865 12092 4134 3661 4676 5244 12093 4506 5077 686 5461 12094 3025 2019 3585 5192 12095 935 4783 4262 5002 12096 864 4610 1255 5214 12097 4063 4161 3947 4647 12098 2028 503 3012 4123 12099 343 1950 309 5138 12100 3923 4821 3649 4962 12101 4323 4650 2095 5317 12102 3811 4717 4684 5252 12103 3465 4931 4010 4960 12104 1756 1656 4304 4612 12105 1861 1733 896 4430 12106 3532 3538 3457 4844 12107 1449 549 1950 4028 12108 2110 2109 4398 5133 12109 3929 3657 4470 5406 12110 3547 4574 3025 5192 12111 1863 4854 944 5244 12112 522 4821 3923 4962 12113 3819 5180 3953 5429 12114 2078 4528 3951 5360 12115 2524 4554 4015 5302 12116 2554 4723 2687 5124 12117 1974 1310 1958 4852 12118 3837 4149 4067 4283 12119 3692 4473 4304 5425 12120 2839 2244 2242 4991 12121 985 5086 4194 5496 12122 1909 5130 1222 5276 12123 898 1355 4766 5016 12124 1232 5138 1320 5567 12125 2066 2065 2064 3983 12126 3776 4608 4346 5186 12127 3486 3488 4002 4792 12128 4453 5148 3779 5460 12129 645 4455 1124 4713 12130 2209 4651 4029 4933 12131 4381 4772 505 5396 12132 3976 4569 4403 4570 12133 4404 4569 3976 4570 12134 4403 4567 3977 4568 12135 3980 4566 4404 4571 12136 3999 4301 3918 5009 12137 4460 4812 3671 5390 12138 3574 4673 4459 5645 12139 2799 2801 3331 4278 12140 3721 3978 4461 5078 12141 395 308 367 4051 12142 779 1483 778 5510 12143 3760 5151 4045 5265 12144 479 417 4920 5396 12145 2139 4378 4020 5610 12146 3919 4516 4089 4980 12147 1142 3984 5227 5228 12148 3547 3577 3578 5192 12149 5046 5600 3896 5623 12150 3868 4120 4040 4745 12151 1517 4671 3931 4892 12152 1646 657 4799 5291 12153 610 4563 4033 5545 12154 435 503 2028 4123 12155 1904 498 1631 5029 12156 3819 4635 4560 5180 12157 2901 2131 4378 4837 12158 4384 4726 3040 5608 12159 3746 5115 4260 5239 12160 3172 4297 2594 5026 12161 4306 2850 5058 5429 12162 1825 1198 4344 5004 12163 1786 1781 4450 5320 12164 3701 4775 4237 5262 12165 1546 3548 4284 4701 12166 3981 4658 3187 5169 12167 3929 4157 3872 4920 12168 3434 3503 3013 4832 12169 3994 4813 1077 5638 12170 3114 3344 2834 4772 12171 433 3992 1544 5162 12172 3889 4227 4814 5184 12173 359 361 3931 5256 12174 3654 4022 5303 5589 12175 1004 1707 1704 4807 12176 3422 3996 3343 4760 12177 4109 4396 4382 5526 12178 3697 4382 4396 5526 12179 2681 4923 4760 5248 12180 1490 3613 4550 5144 12181 3781 4561 4240 4710 12182 558 4892 1518 5256 12183 1037 4478 1223 4810 12184 3996 3653 4866 5046 12185 4418 5071 1148 5584 12186 3801 5251 4749 5440 12187 3837 4402 4283 5243 12188 3797 4264 4185 5031 12189 4117 4922 3702 5296 12190 3741 4631 4207 5488 12191 3622 3620 4064 4417 12192 3936 4951 4001 4996 12193 3298 4445 2739 5137 12194 3679 4624 4356 4808 12195 2158 2916 2159 5001 12196 1243 1577 4689 5361 12197 4111 4688 3932 4845 12198 496 4974 3408 5123 12199 1383 1160 999 5634 12200 4121 4300 3848 4374 12201 3727 4350 3937 4588 12202 624 4619 4662 5375 12203 4017 4134 4676 5244 12204 1487 1758 1504 5635 12205 4638 5044 3919 5463 12206 1455 1454 5223 5449 12207 3861 4240 4561 4710 12208 1671 1144 4557 5228 12209 4017 4776 3663 4854 12210 516 4146 4974 5123 12211 4011 4057 3660 5531 12212 3497 3434 3516 4979 12213 3949 4592 3480 5276 12214 3882 4278 4077 4683 12215 1911 1599 1948 4040 12216 2231 5185 4287 5573 12217 1158 1064 1065 5104 12218 1736 4586 4562 5234 12219 3871 4977 4601 5595 12220 3433 3482 1993 4888 12221 4129 4356 3679 4624 12222 3909 4356 4129 4624 12223 1233 4003 4981 5282 12224 3814 4281 4003 4622 12225 3448 524 3513 4725 12226 3556 1855 539 5142 12227 4006 5018 3378 5167 12228 2343 4954 4775 5568 12229 2550 4698 4001 5250 12230 326 3066 1984 5079 12231 3189 2299 3137 5005 12232 2704 3137 2206 5005 12233 1158 4031 1258 5104 12234 4089 4980 1115 5014 12235 2501 4154 2630 4989 12236 980 5071 4719 5348 12237 4116 4172 3728 5626 12238 2656 2954 4440 5107 12239 3761 4292 4211 4390 12240 3059 2370 5099 5409 12241 1198 5004 4399 5354 12242 3968 3666 4576 4800 12243 4045 4117 3760 4405 12244 3869 4275 4162 4379 12245 1710 4746 4485 5634 12246 3752 5025 4159 5148 12247 3932 4497 3743 4688 12248 4030 3774 4753 4803 12249 1237 1238 1134 4546 12250 4112 5091 3460 5173 12251 3720 4504 4393 5068 12252 3777 4094 5054 5324 12253 2053 4099 2052 5489 12254 3917 4741 4422 5604 12255 4272 4677 3859 4811 12256 3012 4123 503 5164 12257 4030 4833 3739 5466 12258 3727 3937 4350 5002 12259 2596 3366 3401 4120 12260 3178 4461 3211 5127 12261 4068 4578 3816 5015 12262 3817 4578 4068 5015 12263 738 610 4033 5545 12264 644 642 934 5202 12265 895 894 1406 4514 12266 3663 4017 4854 4999 12267 3705 4541 4629 5642 12268 3655 4067 4695 4914 12269 3990 3875 4386 5281 12270 4074 4793 4083 5021 12271 4275 4379 3869 4906 12272 3975 4928 4253 4986 12273 4194 4632 3670 5269 12274 3788 4370 4285 4948 12275 4362 4743 3878 5500 12276 3926 5074 4711 5261 12277 3062 3388 2677 5524 12278 3797 4336 4702 5556 12279 3740 4524 4618 4958 12280 2284 2282 4855 4874 12281 4188 4603 3666 5534 12282 3747 4174 4095 4749 12283 2207 2300 2209 5017 12284 1539 1704 3954 5176 12285 1683 4229 1166 5002 12286 4189 4340 3762 4864 12287 1287 1848 1850 4798 12288 1372 1373 1211 4309 12289 1183 4636 1574 5447 12290 3412 4628 2802 4963 12291 2627 2732 4363 5101 12292 3887 4930 4661 5165 12293 1636 982 1687 4539 12294 2392 3119 2519 4540 12295 598 597 599 4543 12296 874 875 873 4542 12297 2069 3134 2067 4541 12298 1643 1589 4731 5310 12299 499 3990 459 4969 12300 3659 4752 3927 4908 12301 1691 1469 1565 5074 12302 4009 4447 3790 5428 12303 1633 1294 1347 4187 12304 4093 4446 4259 4872 12305 2288 2289 2290 4272 12306 2610 2612 4122 4864 12307 3825 4485 4441 4864 12308 4452 4943 1857 5030 12309 4358 3858 5275 5327 12310 3323 2000 3579 5106 12311 3869 4906 4399 4932 12312 3704 5216 4035 5560 12313 3473 5178 3439 5544 12314 3160 2878 4554 5226 12315 3055 3056 2511 5636 12316 330 4056 2010 4923 12317 3664 4477 4422 4944 12318 3890 4665 4039 5482 12319 3686 4092 4086 4542 12320 4086 4092 3741 4542 12321 2596 4834 4120 5420 12322 3906 4650 4455 5149 12323 3869 4400 4399 4906 12324 3830 4247 3982 4740 12325 3964 4163 3782 4929 12326 4397 5035 3822 5161 12327 3898 4078 4900 5643 12328 3023 2873 3260 4955 12329 2954 3160 2656 4440 12330 3001 2200 2203 4439 12331 826 827 828 4438 12332 888 889 887 4675 12333 3726 4643 4025 5346 12334 337 336 343 5138 12335 1658 4369 5156 5337 12336 3932 4497 4430 4845 12337 1163 5150 4635 5180 12338 3172 2594 2595 5026 12339 3160 4440 2954 5107 12340 4241 4780 3878 4904 12341 1670 878 1006 4433 12342 4513 4832 2947 5533 12343 3982 4247 4457 4950 12344 3323 4150 3634 5143 12345 3951 4953 4771 5163 12346 664 4387 659 5437 12347 2522 3198 2281 4429 12348 3719 4259 4093 4446 12349 2261 2957 4493 5542 12350 4072 3671 5287 5385 12351 1037 1259 1006 4433 12352 2586 2588 2587 5319 12353 1176 670 4784 5147 12354 1013 1015 4081 4796 12355 3827 4171 4048 5418 12356 1245 4206 1648 5499 12357 3802 5023 3977 5441 12358 2675 5028 2947 5533 12359 3147 4427 2624 4511 12360 645 4455 4713 5454 12361 4106 4224 4165 5000 12362 1801 1163 4635 5180 12363 3696 4113 3965 4346 12364 3693 4099 4543 5489 12365 3781 3941 4394 4613 12366 1863 5244 1859 5384 12367 3795 4956 4132 5417 12368 4511 5287 3671 5385 12369 887 4186 889 5293 12370 3932 3656 4794 5522 12371 4118 4561 3866 5368 12372 3270 4915 3957 5535 12373 2949 4013 2189 5129 12374 2590 4096 2589 5319 12375 4092 4476 2330 5603 12376 4295 4748 3916 4846 12377 1242 1151 1152 4545 12378 1247 1835 1838 4420 12379 1015 4081 1248 4801 12380 4090 3667 4304 5198 12381 1598 1599 535 4040 12382 3667 4090 4961 5322 12383 784 785 786 4032 12384 3894 4896 4401 5226 12385 884 4662 4414 5448 12386 1972 1904 1631 5029 12387 2040 4018 2039 5213 12388 4096 4787 4391 5319 12389 4310 4627 1181 5638 12390 3368 3425 2024 5033 12391 3721 4461 4916 5078 12392 1377 1247 4233 4420 12393 494 487 4786 4994 12394 3890 2735 4966 5101 12395 2334 2381 2333 4377 12396 2858 2457 2912 5060 12397 2259 4926 2260 4950 12398 611 1638 613 4863 12399 3930 4771 3951 4953 12400 1298 1218 4412 5128 12401 955 1034 956 4443 12402 1122 4968 3958 5093 12403 4427 4774 4031 4933 12404 3837 5137 4802 5453 12405 3655 3949 4149 4914 12406 1109 1155 1060 5235 12407 3934 3212 4721 5172 12408 1177 4093 1711 4872 12409 3933 802 4936 5265 12410 2494 3226 3241 5066 12411 3941 4232 3729 5131 12412 4206 4689 3777 5361 12413 2663 2472 4495 5566 12414 3832 4576 3968 5340 12415 4213 4335 3797 4702 12416 3797 4336 4218 4702 12417 4275 4906 3869 4932 12418 2365 4176 4646 5400 12419 1074 1073 997 5064 12420 1122 3958 1123 5093 12421 321 354 369 3997 12422 3604 4003 3599 4622 12423 3956 3864 4645 5524 12424 3490 4022 3487 5303 12425 3698 4135 4480 5238 12426 4441 4485 3912 4864 12427 4077 4278 3882 5389 12428 2044 4180 2042 5575 12429 3715 4151 4700 5047 12430 953 1079 952 5205 12431 4165 4224 4106 5581 12432 308 2017 4051 4883 12433 4095 4547 3915 4937 12434 1931 4290 1933 4660 12435 4814 4824 3889 5184 12436 3671 4072 3975 5390 12437 4525 4577 3984 4722 12438 2863 3991 2176 4903 12439 2175 4448 2184 5220 12440 1914 4479 4725 5562 12441 3487 4022 3490 4479 12442 2659 3326 2660 4534 12443 2771 4306 2029 5010 12444 1663 1887 1970 5046 12445 2379 2284 4855 5417 12446 2605 2364 3085 5640 12447 3864 4083 4074 4793 12448 4065 3874 4725 5562 12449 4891 5233 3895 5271 12450 1278 1859 1840 4345 12451 2990 2968 2901 4347 12452 1415 1815 1792 4346 12453 2535 2661 3258 4349 12454 4050 5450 4470 5529 12455 4203 4633 3783 5454 12456 3972 4227 5032 5184 12457 4072 5287 3719 5412 12458 3716 4181 4024 5374 12459 4189 3762 4746 4864 12460 3133 2709 2319 4350 12461 2242 2241 2239 4351 12462 707 710 1466 4352 12463 2165 3255 2175 4353 12464 2712 2624 3147 4427 12465 976 4395 945 5464 12466 4110 5157 3970 5331 12467 2514 4072 5294 5412 12468 2839 4544 3939 4991 12469 1814 5251 4308 5440 12470 3876 4743 4362 5500 12471 3281 2611 2653 4518 12472 1332 4048 1421 5077 12473 1578 4274 562 5260 12474 3884 4426 4425 5601 12475 4300 4767 4121 5608 12476 4062 4533 3863 4978 12477 2869 4871 3371 4887 12478 4003 3599 4622 5356 12479 1657 4269 4088 5550 12480 1949 1941 1618 4250 12481 3781 4424 3941 4613 12482 1341 4489 1379 5416 12483 994 4961 4304 5425 12484 726 4676 4069 5464 12485 3978 4246 3812 4714 12486 3244 4465 5055 5062 12487 2860 4153 2704 4881 12488 863 4019 5097 5214 12489 1845 4036 1834 4843 12490 4069 4676 727 4977 12491 571 1950 343 5138 12492 2441 4509 5526 5527 12493 4659 4998 2059 5471 12494 3648 3959 3570 4761 12495 4010 4931 3152 5590 12496 1172 4111 1171 4893 12497 4288 4754 3784 5373 12498 4839 4860 336 5138 12499 2384 2298 4155 4937 12500 1539 3954 1707 5295 12501 2438 5212 4396 5526 12502 2974 4062 2975 4978 12503 863 5097 864 5214 12504 4044 3662 4594 5445 12505 3939 4233 3779 5444 12506 1717 4211 4739 5508 12507 3730 4552 4045 5098 12508 2270 4626 4338 5613 12509 2301 2232 2248 4356 12510 3302 3314 3020 4357 12511 1560 1714 627 4964 12512 3958 5312 4021 5498 12513 4279 4481 3704 5560 12514 3495 4617 3499 4826 12515 2771 5010 4727 5429 12516 571 343 1953 5138 12517 3423 3003 3005 5165 12518 2654 4921 4510 5371 12519 3108 5203 2914 5527 12520 1789 1428 4302 5116 12521 1293 4680 4301 4952 12522 4357 4669 3911 5468 12523 4444 5079 3348 5591 12524 3449 573 3520 5525 12525 4063 4647 3947 5199 12526 1612 1115 4980 5014 12527 1592 4145 1916 5224 12528 3049 3362 3401 4865 12529 3678 3937 4229 4982 12530 609 608 607 4912 12531 4023 4382 4109 4671 12532 2749 2745 2747 4508 12533 3893 4829 3993 5126 12534 3834 4599 4048 5268 12535 4222 4339 3756 5041 12536 3398 3475 1999 4726 12537 754 1250 756 5070 12538 4057 4503 3660 5641 12539 321 3997 369 4871 12540 4121 4300 3868 4767 12541 4136 4523 1668 5205 12542 4155 4762 4467 5182 12543 4589 4757 3729 5131 12544 2306 4642 4490 5531 12545 2740 4445 3379 4791 12546 4211 4739 3761 5147 12547 3860 4497 4430 5523 12548 3598 4068 3600 4267 12549 3092 3322 4770 5179 12550 2533 3311 3319 5397 12551 405 4674 4716 4866 12552 2405 4448 2531 5073 12553 359 3931 5194 5446 12554 3342 5079 4000 5258 12555 3687 4229 4350 4982 12556 2566 2496 2571 5115 12557 364 3996 4182 5248 12558 549 4028 1449 5271 12559 1618 4250 1941 4734 12560 4097 3718 4268 5112 12561 2230 2231 2229 5573 12562 2483 2667 4815 5399 12563 2182 5051 2373 5515 12564 2159 4231 2160 5001 12565 3843 4426 4751 5601 12566 2597 2519 4525 4577 12567 1623 770 4094 4803 12568 2837 5041 4441 5401 12569 780 4624 796 4808 12570 2746 2747 4508 5622 12571 3999 4695 4187 5528 12572 405 366 4674 4866 12573 1404 4055 589 5585 12574 2502 2503 4681 5346 12575 4105 3769 4448 5205 12576 1871 4576 3539 5096 12577 4558 4782 4079 5343 12578 3094 2110 2109 4398 12579 4095 4174 3801 4749 12580 1052 1051 4687 5480 12581 4098 4168 3752 4536 12582 945 4676 726 5464 12583 781 782 4808 5451 12584 3451 3499 3514 4793 12585 799 1568 827 5098 12586 1198 4344 5004 5354 12587 4050 3941 4424 4613 12588 2230 2229 5185 5573 12589 2315 2318 3103 4505 12590 1445 1797 1180 4504 12591 690 1872 1739 4506 12592 2436 2497 3082 4847 12593 4550 4831 3821 5006 12594 2998 4690 2997 4973 12595 1967 4820 1557 5362 12596 4876 5304 1634 5574 12597 2606 2442 2441 4509 12598 4105 4448 4137 5205 12599 1241 1085 1304 4372 12600 2259 4061 2254 4926 12601 4665 4966 2735 5101 12602 4377 4471 3787 5382 12603 3692 5120 4890 5198 12604 3584 3973 3635 4701 12605 1366 4328 5253 5351 12606 3784 4453 5414 5569 12607 2716 4114 4282 5586 12608 1720 5063 1723 5227 12609 3839 3942 4418 5584 12610 3801 4749 4174 5440 12611 3182 2193 4292 4390 12612 3509 4040 4745 4907 12613 1933 1943 1392 4660 12614 2901 2131 2990 4378 12615 3730 4456 3933 5098 12616 2508 4596 4170 5485 12617 2508 4169 4596 5485 12618 3957 3706 4294 4915 12619 4489 5081 3838 5416 12620 3856 4414 3930 4662 12621 3756 4668 4370 5263 12622 4269 4469 3897 4911 12623 3260 3126 2726 4898 12624 1015 1248 1069 4801 12625 4090 5114 3667 5586 12626 3349 2862 2812 5500 12627 1180 732 4504 5205 12628 3841 4792 4066 4862 12629 1662 4073 1858 5234 12630 1384 1421 4789 5333 12631 1623 4094 1480 4997 12632 3941 4353 4232 5131 12633 4182 4895 363 5248 12634 4686 4811 3859 5082 12635 3284 2521 3307 4293 12636 4557 4711 4013 5074 12637 1581 4024 1653 5231 12638 2562 4025 2940 5232 12639 1765 4928 4186 5293 12640 1028 4382 1515 4671 12641 2189 4366 3014 5129 12642 4050 4470 3657 5529 12643 3710 4082 3978 4714 12644 2510 2694 2537 4930 12645 4144 4551 3772 4603 12646 1008 1075 1429 4984 12647 3946 4467 4155 4762 12648 1455 4535 1759 5193 12649 2686 3313 4335 4702 12650 2686 4336 2658 4702 12651 989 1029 4023 5132 12652 4108 4123 495 5614 12653 1736 4562 1784 4572 12654 1397 4804 3953 5180 12655 3665 5066 4375 5321 12656 3805 3932 4917 5523 12657 3025 4574 3547 5106 12658 4210 5175 2046 5372 12659 2261 2957 3101 4493 12660 2663 2472 2651 4495 12661 1050 1052 1108 4494 12662 1081 1080 1003 4496 12663 3853 4279 4035 5395 12664 4123 4108 4952 5614 12665 3815 5048 4130 5229 12666 1933 4479 1943 4660 12667 3557 4587 1976 5135 12668 1252 5072 1251 5421 12669 2036 4724 3251 5633 12670 2673 2765 4409 5027 12671 3180 4127 2613 4774 12672 1900 3950 4759 5241 12673 4013 4711 3733 5129 12674 2169 4497 2346 4688 12675 2956 4493 2957 5542 12676 3197 5319 4911 5370 12677 4211 4292 3776 4390 12678 1637 912 4537 5197 12679 2405 2404 2531 4448 12680 3983 4629 4541 5642 12681 624 4662 621 5375 12682 4075 4628 4278 4985 12683 3875 4974 5343 5399 12684 4060 4185 3773 4880 12685 4093 3778 4259 5262 12686 4471 4919 1523 5331 12687 3050 3450 3510 4767 12688 2591 4911 3197 5319 12689 4166 4669 3922 5073 12690 4100 4180 3759 4527 12691 3891 4004 4694 5381 12692 3140 2574 2876 4995 12693 2903 2084 3109 4573 12694 3010 4953 2634 5163 12695 2533 4551 4027 5397 12696 3864 3956 4617 5524 12697 4488 5204 880 5392 12698 3708 4516 4129 5426 12699 1774 783 781 5045 12700 3985 5015 1362 5580 12701 832 833 830 3961 12702 1365 4003 4846 4959 12703 4048 1332 5188 5418 12704 4087 3732 4509 5323 12705 3770 4393 3938 4721 12706 3718 4097 4268 4825 12707 2826 4175 2560 5566 12708 1850 4614 975 5237 12709 4667 4936 802 5265 12710 3050 1999 3522 4767 12711 3705 4629 3983 5642 12712 3834 4275 4162 5039 12713 4032 4251 3900 5335 12714 3691 4012 4528 5083 12715 4412 5128 5057 5160 12716 971 1027 1038 5059 12717 1179 4964 4460 5411 12718 2293 2876 3986 4971 12719 3658 3968 4349 5484 12720 1905 1971 4372 4672 12721 2675 2489 2947 5028 12722 1991 3587 4603 5143 12723 2169 4497 4688 5537 12724 799 4754 4045 5098 12725 2048 2049 5175 5554 12726 3476 4726 4145 5224 12727 581 4844 399 4925 12728 4086 4092 3686 5341 12729 1386 4230 790 4939 12730 3886 4564 4682 5264 12731 3835 4425 4139 5572 12732 3753 4239 4078 5259 12733 4597 5177 3824 5402 12734 3106 4911 4469 5355 12735 4078 4239 3791 4546 12736 4308 4857 3921 5236 12737 1939 1911 1227 5111 12738 3191 2156 2169 4364 12739 4685 5053 1426 5436 12740 922 1810 947 4776 12741 1728 4082 1184 5078 12742 3322 2827 2826 5179 12743 786 4032 5377 5620 12744 2822 2824 2823 3987 12745 3350 2540 3421 5139 12746 746 4451 4517 5439 12747 308 4051 395 4883 12748 4146 4974 3943 5343 12749 554 4003 1365 4959 12750 3923 4821 446 4985 12751 4245 4605 3746 5115 12752 3792 4137 4353 5100 12753 3159 5145 3207 5359 12754 3914 4296 4111 4688 12755 4077 4683 4226 5513 12756 1230 5600 5046 5623 12757 3741 5145 4205 5359 12758 2087 3014 2189 4366 12759 3070 4571 2838 4648 12760 2462 2461 2463 5535 12761 1407 4273 5235 5491 12762 3944 4423 3650 4672 12763 2748 3378 3376 5167 12764 2110 4398 3947 5133 12765 2823 3987 4684 5327 12766 3829 4599 4441 5401 12767 1600 3437 547 4121 12768 4067 4695 2487 5379 12769 3680 4933 4427 4938 12770 3893 4882 4411 5045 12771 4011 5044 4638 5463 12772 3671 4460 4127 5240 12773 4127 4460 3771 5240 12774 3601 4068 3598 4959 12775 3979 4650 4455 4889 12776 4047 4687 3773 4831 12777 3913 5069 3995 5298 12778 4240 4424 3866 4561 12779 4183 4457 819 4732 12780 4455 4650 3906 4889 12781 3382 2947 4513 4832 12782 3699 4584 3969 4679 12783 3969 4584 3785 4679 12784 2610 2612 3144 4122 12785 388 351 319 4000 12786 2314 4505 4373 5210 12787 4030 766 5413 5466 12788 1629 4177 4597 5481 12789 3077 4858 4042 5613 12790 1078 1084 1021 4128 12791 2786 4956 4359 5606 12792 2048 4210 4836 5554 12793 1858 4073 1852 5234 12794 799 4045 795 5098 12795 4077 4152 4683 5513 12796 3664 4488 4433 4944 12797 3539 4576 1871 5142 12798 3654 3970 5157 5331 12799 4081 4252 3794 4737 12800 3933 3760 4552 5265 12801 3244 2633 4465 5062 12802 2258 4253 2339 4735 12803 3757 4097 4268 5112 12804 4599 4698 4048 5268 12805 4269 4391 3897 5319 12806 3905 4245 3971 4870 12807 3871 4519 4489 5116 12808 3875 4558 4079 5343 12809 2002 4006 3378 5516 12810 3312 4402 2470 5243 12811 3773 5006 4336 5387 12812 1651 391 570 4850 12813 1690 933 4526 4547 12814 3809 3976 4404 5024 12815 3802 4403 3977 5023 12816 3797 4213 4702 5159 12817 3797 4702 4218 5159 12818 2284 4855 4173 4874 12819 3800 4183 4058 4879 12820 4273 4387 3892 5491 12821 875 877 878 4491 12822 2727 4598 3957 5247 12823 3709 4184 4148 4819 12824 363 4895 358 5248 12825 4275 3825 4789 5274 12826 4164 3744 5045 5451 12827 2988 4368 3158 5061 12828 453 515 4381 4772 12829 1137 3958 1122 5304 12830 2116 4398 2457 5060 12831 3243 2832 4063 5199 12832 2395 3203 3282 5225 12833 2255 4626 2262 5415 12834 3650 4423 3944 4649 12835 3758 4997 4368 5295 12836 1390 5069 1734 5517 12837 3775 4868 4669 5179 12838 3767 4184 4148 4833 12839 1482 1748 4371 4928 12840 703 708 707 5068 12841 3721 4249 4614 5237 12842 1700 1457 4147 5146 12843 3795 4097 4531 5112 12844 3579 3634 3323 5106 12845 3975 5104 1494 5316 12846 1508 4181 1723 5063 12847 3734 4061 3982 5206 12848 4087 4509 5239 5323 12849 3844 4475 4474 5166 12850 1170 4111 894 4845 12851 3832 5096 4576 5340 12852 3875 5343 4079 5399 12853 1622 4442 681 5564 12854 1510 5023 734 5441 12855 4167 4271 4044 4594 12856 4168 4272 4046 4595 12857 1008 1073 1075 4407 12858 3401 4120 2679 4856 12859 3277 2727 3957 5247 12860 4062 4978 3863 5139 12861 945 1206 4676 5366 12862 3206 5095 2582 5586 12863 3852 4931 4010 5590 12864 3741 4092 4086 5359 12865 3167 4390 4817 5571 12866 3698 4256 4085 5505 12867 3705 4258 4091 5506 12868 3804 4263 4099 5507 12869 3896 4760 4719 5600 12870 3740 4228 4707 5074 12871 2791 4171 4599 4698 12872 2206 2207 2208 5017 12873 525 1892 1542 4182 12874 1821 1839 1684 5156 12875 3837 4283 4067 5243 12876 1067 1671 5108 5228 12877 3301 3292 4447 4787 12878 4082 4916 4461 5078 12879 1744 4498 815 5075 12880 4078 4071 4779 5308 12881 515 505 4381 4772 12882 4354 5152 3725 5445 12883 1839 1700 1809 4369 12884 3795 4132 4243 4611 12885 3954 4368 4997 5295 12886 4074 4678 3836 4856 12887 4362 4969 3876 5500 12888 2137 2901 4347 4837 12889 729 4346 1815 4835 12890 2814 4348 3115 4836 12891 4119 4294 3706 4915 12892 3722 4490 4011 5463 12893 437 457 4362 4969 12894 4095 4681 3726 5346 12895 3931 5256 361 5383 12896 1887 4706 1970 5046 12897 565 1519 4751 5383 12898 2347 4794 3932 4917 12899 3779 4420 4233 4502 12900 3677 4626 4311 5415 12901 2727 3277 3957 5535 12902 3655 4125 4006 4809 12903 3695 4630 4322 5443 12904 3238 2540 4162 4728 12905 2612 3144 4122 4864 12906 624 4619 1714 4662 12907 4761 4860 580 5105 12908 4637 4720 3852 5465 12909 593 4527 591 5200 12910 743 4172 1645 4652 12911 464 4146 1317 5344 12912 3922 4669 4868 5179 12913 3794 4737 4252 5502 12914 1931 1933 1389 4660 12915 373 378 4415 5040 12916 3732 4023 5330 5496 12917 4041 4164 3893 4450 12918 2897 3345 2854 5467 12919 3887 4672 4372 5165 12920 4438 4874 3907 4945 12921 4162 4275 3869 5039 12922 3964 4524 4163 4958 12923 3753 4239 4199 5308 12924 2132 2125 4648 4817 12925 3807 4702 4130 5633 12926 1483 1482 1748 4371 12927 1807 4003 3603 4981 12928 974 968 967 4916 12929 2546 2798 2799 4278 12930 3739 4833 4200 5466 12931 3945 3817 4243 4956 12932 3687 4229 4131 4610 12933 2271 4058 4879 5596 12934 3723 4366 5360 5630 12935 3692 4408 4015 4473 12936 3556 539 4188 5142 12937 713 711 5100 5277 12938 1764 1752 1512 4899 12939 4257 4347 3731 5557 12940 2886 5084 4405 5242 12941 1470 825 4797 5206 12942 4477 5028 3664 5469 12943 4153 4178 3764 4941 12944 1103 1110 1104 4240 12945 2703 3281 4715 4989 12946 3814 4003 4281 5282 12947 3900 4371 4848 4986 12948 3889 4824 4738 5022 12949 2477 2487 4067 4914 12950 1166 4392 1167 4783 12951 3292 2909 4447 5428 12952 4895 4923 358 5248 12953 2887 3993 2888 5443 12954 3687 4179 4053 4965 12955 2822 3987 2823 5327 12956 3777 5054 4368 5324 12957 3770 4721 3938 5094 12958 4433 4810 1259 5521 12959 4246 4993 3812 5564 12960 3741 4262 4086 5488 12961 2531 4448 2404 5073 12962 3815 4124 5048 5229 12963 682 4410 1370 4639 12964 4104 4154 3682 5578 12965 2627 2732 3239 4363 12966 3897 4369 4147 5146 12967 3818 3945 4274 5067 12968 2189 4013 2949 5238 12969 3948 4442 3974 4648 12970 2791 4599 4171 5401 12971 3878 4742 5027 5368 12972 3105 3106 4469 5355 12973 3705 4091 4541 5506 12974 3698 4085 4540 5505 12975 3804 4099 4543 5507 12976 2304 4011 2303 5300 12977 704 696 701 4975 12978 1022 1401 4500 4729 12979 2114 2121 2115 4750 12980 4525 5227 3984 5228 12981 4567 4633 3977 5454 12982 4225 5407 4042 5415 12983 4212 4783 1802 5594 12984 3743 4688 4111 4845 12985 3875 4386 3998 4766 12986 3702 4117 3993 4922 12987 4244 4975 4717 5452 12988 3969 3661 4345 5366 12989 3801 3966 4348 5365 12990 4228 4517 3910 4707 12991 2801 3336 3332 4459 12992 3574 3573 3554 4459 12993 4569 4634 3976 5441 12994 3864 4645 3958 5093 12995 1307 1898 4743 4780 12996 3654 5157 4110 5331 12997 4173 4855 2284 5417 12998 3275 2766 2767 4463 12999 1820 4905 1204 5561 13000 3689 4630 4196 5479 13001 3678 4229 4131 4982 13002 1194 4464 1849 5476 13003 3354 4520 2761 4814 13004 2782 2380 2780 4677 13005 2593 2677 2595 4419 13006 3651 4951 4759 5241 13007 4220 4901 4894 5043 13008 3810 4685 3986 5476 13009 3497 3523 3434 3955 13010 1502 5151 801 5265 13011 3376 5167 5018 5622 13012 3721 4916 4461 5618 13013 1657 4088 4269 5337 13014 4263 4357 3775 4943 13015 1161 1163 1162 5150 13016 1805 4880 4060 5582 13017 4042 4225 3828 5407 13018 1056 4785 4047 5404 13019 3770 3934 4408 5302 13020 3723 4528 4012 4573 13021 4382 5086 4396 5584 13022 2917 4228 5189 5380 13023 4110 4471 1523 5331 13024 3828 4968 4277 5304 13025 2378 2275 2572 4375 13026 1629 4597 4177 5402 13027 3953 5058 4560 5429 13028 2350 2461 2462 4454 13029 3060 2823 2824 4684 13030 655 4799 4329 5119 13031 3753 4071 3967 5109 13032 4258 4541 4091 5506 13033 4263 4543 4099 5507 13034 4256 4540 4085 5505 13035 4833 5413 766 5466 13036 4021 4876 4449 5574 13037 3728 4507 4172 4652 13038 3600 4359 3626 5255 13039 2041 4584 4180 5391 13040 865 4585 4179 5392 13041 4057 4642 3660 5531 13042 1095 4220 1032 4901 13043 4202 5170 2225 5393 13044 4082 4461 3978 5078 13045 4460 4964 3771 5411 13046 3597 3600 3626 5255 13047 3847 4925 4844 5091 13048 3604 4003 4622 4981 13049 2627 2625 4688 5537 13050 2561 2687 2554 4723 13051 1141 4664 1595 5034 13052 612 4033 4863 5065 13053 3938 4393 3770 5094 13054 3690 4577 4085 5108 13055 4085 4577 3678 5108 13056 691 697 4581 5563 13057 3720 3941 4394 5113 13058 2910 2911 2909 4447 13059 3789 4971 3986 5053 13060 4004 4559 4033 4949 13061 864 5097 4610 5214 13062 4283 4747 3888 4970 13063 2629 3242 2734 4918 13064 3224 2890 3080 4882 13065 2139 2131 2138 4378 13066 630 4307 611 4912 13067 3788 4387 4273 5280 13068 1520 4257 993 4961 13069 3452 561 1627 4972 13070 4024 4493 4059 4909 13071 4060 4494 4025 4910 13072 3940 4395 3661 5455 13073 3912 5041 4718 5333 13074 4114 4590 3668 5064 13075 4021 4138 3828 5304 13076 2721 2523 2722 5187 13077 1628 4184 4583 5386 13078 4356 4624 3909 4808 13079 1727 927 4611 5082 13080 4041 3660 4503 5599 13081 4289 4452 3659 5107 13082 4452 5030 3659 5107 13083 3865 4457 4058 4732 13084 3912 4273 4122 4746 13085 3789 4526 4971 5053 13086 3755 4251 4991 5621 13087 3860 4755 4430 5305 13088 843 4536 4467 5576 13089 3341 3420 3006 4280 13090 2922 4693 2921 4802 13091 3849 4665 4296 4992 13092 4079 4973 3651 4996 13093 3816 4295 3985 4578 13094 3140 2500 2574 4681 13095 3955 4575 3523 4832 13096 2823 4358 2134 5327 13097 1227 4515 1091 4678 13098 4015 4408 3692 5120 13099 3933 4936 4667 5265 13100 3939 3784 4351 4939 13101 2476 4858 4235 5587 13102 4468 4801 1808 5351 13103 346 326 345 5079 13104 3464 4931 3465 4960 13105 4166 4669 3775 4868 13106 2790 3986 4995 5124 13107 3007 4505 4691 5329 13108 3792 3940 4589 5588 13109 3565 3649 4821 4962 13110 3787 4110 3970 4471 13111 3847 4925 4734 5057 13112 4187 4695 3888 5528 13113 3930 3856 4662 5055 13114 1434 1005 664 4387 13115 313 557 4716 4822 13116 522 439 4821 4962 13117 3930 4005 4953 5411 13118 2978 4650 2579 4889 13119 4052 4176 3669 4646 13120 3930 3691 4619 4771 13121 3180 3166 4127 4774 13122 2975 2974 2005 4062 13123 4290 1933 4660 5419 13124 2330 4476 4092 5341 13125 4046 4168 3789 5436 13126 4044 4167 3691 4271 13127 4046 4168 3752 4272 13128 2140 5252 2153 5627 13129 3789 4467 4155 4526 13130 1463 4187 1347 4747 13131 2745 2749 2871 4508 13132 3935 4443 3835 4661 13133 3876 4743 5042 5456 13134 1171 4111 1170 4893 13135 4690 5029 3943 5241 13136 1024 1091 1090 4515 13137 2136 4684 5252 5571 13138 3930 4619 3691 4662 13139 3755 4735 4251 5621 13140 3731 4961 4257 5581 13141 3731 4224 4165 5581 13142 1021 4128 1084 4759 13143 2041 4180 4584 5213 13144 865 4179 4585 5214 13145 1865 1265 1872 4406 13146 3824 4042 4177 4858 13147 3686 4491 4092 4542 13148 4122 5235 3892 5249 13149 3958 4277 4968 5304 13150 3900 4735 4253 5335 13151 3741 4086 4542 5488 13152 3332 3585 2019 4459 13153 3422 3338 3111 4851 13154 3683 4103 4043 4530 13155 682 684 1370 4410 13156 3946 1680 4468 5087 13157 1971 1556 1554 5345 13158 4071 4078 3898 4668 13159 2258 2932 4986 5335 13160 569 375 4423 4820 13161 844 4467 3946 5253 13162 3817 4068 4578 5255 13163 1053 1051 4388 4687 13164 4719 3896 5600 5623 13165 3706 4915 3957 5155 13166 314 581 399 4925 13167 2077 2075 4528 5083 13168 2149 4119 2150 5172 13169 3892 4739 4236 5491 13170 3372 2812 4818 4969 13171 841 1427 5053 5476 13172 727 725 4069 4977 13173 3797 4100 4264 5031 13174 4040 4120 3868 4664 13175 4039 4665 3890 4966 13176 1061 940 934 5202 13177 2989 4362 3349 4969 13178 2839 2700 2828 4544 13179 3951 3093 4507 5163 13180 3954 4368 5295 5473 13181 3866 4050 4424 4613 13182 4297 4449 3917 5204 13183 2347 4917 3932 5523 13184 963 4747 4283 4970 13185 3889 4814 4227 5230 13186 1592 1912 1949 4145 13187 2340 2341 4054 5487 13188 462 459 499 3990 13189 4068 3816 4578 5255 13190 1628 4583 4184 5231 13191 1146 1725 1145 4788 13192 4004 4033 3857 4949 13193 890 889 941 5293 13194 1770 1164 4163 4707 13195 3751 4168 4098 4536 13196 4023 4109 4509 5527 13197 3841 4792 4002 5047 13198 2971 2844 2417 3970 13199 1681 1061 1166 4392 13200 2161 2893 2160 4393 13201 945 976 1019 4395 13202 1517 3931 4751 5383 13203 2878 2524 4554 5226 13204 3758 5295 4368 5473 13205 2488 3288 2739 5137 13206 1099 1819 1194 4389 13207 1182 1819 1761 4388 13208 4065 4725 3874 5533 13209 1924 1923 4291 4680 13210 3667 4961 4304 5322 13211 4068 4359 3817 4360 13212 3825 4340 4189 4864 13213 3940 3792 4589 4838 13214 4233 4873 4016 5442 13215 1362 5015 3985 5284 13216 1140 4449 1722 4529 13217 3081 2744 3242 3999 13218 1027 5008 4383 5619 13219 5155 5172 2145 5610 13220 4211 4717 683 5462 13221 1582 4163 1725 4929 13222 2627 2626 2628 4296 13223 2608 3009 3011 4953 13224 3849 4786 4039 4994 13225 3394 5033 4112 5173 13226 4372 4672 3944 5165 13227 4113 4346 3696 5350 13228 340 4891 342 5003 13229 4169 4388 3724 4681 13230 1599 1944 1915 4907 13231 3862 4344 4162 4728 13232 4666 4992 1281 5388 13233 3221 4425 4139 5527 13234 4099 5121 3804 5489 13235 4000 3902 4822 5050 13236 806 4827 4186 5620 13237 3702 4922 4032 5377 13238 3661 4345 4134 5201 13239 4464 5053 1427 5476 13240 1338 1281 4992 5388 13241 3932 3743 4497 4845 13242 3318 3092 3322 4770 13243 3182 3167 2193 4390 13244 351 313 4716 4822 13245 4242 5034 3870 5646 13246 2441 4139 4509 5527 13247 4132 4243 3817 4956 13248 1760 1184 4714 5078 13249 998 1468 1552 4707 13250 2722 2820 2724 4380 13251 3679 4356 4164 4808 13252 4096 4586 3749 5089 13253 3791 4586 4096 5089 13254 3027 3441 2003 4709 13255 4130 4724 3543 5289 13256 641 639 1530 5149 13257 4059 4184 3684 4583 13258 3081 2746 2744 3999 13259 3559 4653 559 5547 13260 3680 4416 4933 4938 13261 4072 4446 4259 5412 13262 2143 5155 2145 5610 13263 1801 1040 1231 5180 13264 2148 5153 3952 5252 13265 2998 3351 3424 4690 13266 727 4069 726 4676 13267 3241 3226 2996 5161 13268 4959 5015 3816 5580 13269 2500 4095 4937 5628 13270 654 4329 655 4799 13271 4230 4251 3755 5377 13272 2339 2258 3215 4253 13273 4055 4180 3785 5200 13274 4237 4081 4737 5568 13275 4041 4164 3679 4882 13276 4164 4450 4041 5599 13277 1851 1301 1846 4744 13278 3687 4350 4179 4965 13279 625 628 4012 5219 13280 2993 3407 2761 5266 13281 4057 4490 3833 4642 13282 3687 4965 4053 5423 13283 4262 4542 4086 5488 13284 3690 4540 4085 4577 13285 3568 548 3643 5096 13286 398 4860 335 5105 13287 2829 3282 3279 5225 13288 3033 3175 3032 3964 13289 1358 1452 1667 3966 13290 2388 3264 2181 3965 13291 685 1451 677 3967 13292 3316 3287 2729 3969 13293 1210 1209 1860 3968 13294 3922 4669 4166 4868 13295 4348 4857 4308 5236 13296 4615 4627 3994 5561 13297 3476 3473 4145 4726 13298 4364 4497 4244 5153 13299 3725 4629 3983 5065 13300 3760 3933 4667 5265 13301 2712 4511 4427 4774 13302 3907 4288 4159 5174 13303 3785 4180 4055 4584 13304 3672 4179 4053 4585 13305 4177 4277 3828 4968 13306 3829 5041 4485 5333 13307 3735 4180 4100 4527 13308 3264 4607 3965 5334 13309 3861 5016 3998 5456 13310 2149 2154 4119 4915 13311 1020 4395 1239 4657 13312 4033 4949 3983 5065 13313 1582 4163 4929 5597 13314 3884 4930 4426 5314 13315 3937 2621 4982 5085 13316 3730 4816 4456 5098 13317 4016 4054 3755 5621 13318 4118 4240 3866 4561 13319 2539 2811 4815 5281 13320 1382 1666 4381 5038 13321 1623 4094 1395 4803 13322 1971 1554 1905 4372 13323 952 4137 4105 5579 13324 2311 4225 2335 4691 13325 4063 4779 2832 5285 13326 942 941 4446 5293 13327 918 857 919 4413 13328 313 1501 353 4716 13329 3924 3896 4851 5409 13330 3018 4306 2850 5058 13331 3783 4650 3979 4764 13332 4090 4890 2445 5198 13333 1717 4739 1732 5508 13334 746 4451 744 4517 13335 2933 4848 4287 4986 13336 4228 3740 5189 5380 13337 3707 5171 4192 5639 13338 568 1701 3455 4960 13339 1520 5557 4257 5581 13340 4166 4943 1853 5539 13341 4020 4581 3827 5247 13342 4071 4948 2124 5306 13343 1220 1307 4743 5347 13344 2450 4842 2196 5434 13345 4233 4420 1247 5442 13346 3625 4284 3635 4397 13347 1544 3992 1954 5162 13348 3898 4161 5437 5643 13349 1753 4240 1416 4613 13350 4148 4184 3709 4833 13351 3816 4003 4267 4959 13352 4425 4426 3884 4930 13353 3228 4196 3229 4630 13354 661 1685 4203 4633 13355 1045 4194 984 4632 13356 1757 4207 1186 4631 13357 1045 1636 4197 4632 13358 1692 4209 1688 4635 13359 2156 4497 4364 5153 13360 3656 4514 3932 4794 13361 2851 2220 3034 3971 13362 1766 4204 805 4667 13363 4148 4184 3767 4819 13364 4119 4294 4987 5563 13365 346 5079 4444 5631 13366 4084 4255 3685 5348 13367 453 515 4772 5494 13368 1692 949 4220 4635 13369 2876 2790 3986 4995 13370 4041 5320 3660 5599 13371 2703 2611 3281 4989 13372 3825 4189 4746 4864 13373 3278 4839 4773 5459 13374 3953 4306 5058 5429 13375 3083 4021 2942 5312 13376 3942 3839 4396 5584 13377 4346 5186 1792 5508 13378 3977 4568 4567 4764 13379 4566 4571 3980 4765 13380 3965 4835 4113 5315 13381 4053 4019 4585 5214 13382 4055 4018 4584 5213 13383 2405 5073 2531 5254 13384 3732 4087 5330 5499 13385 2450 4228 4842 5434 13386 2734 4918 3242 5431 13387 4134 4361 3742 4676 13388 3922 4868 4770 5179 13389 3295 2549 3271 5006 13390 3703 4391 4096 4546 13391 593 592 4527 5325 13392 3700 4899 4201 5532 13393 3789 4595 3986 4971 13394 4259 4446 3719 5412 13395 3662 4167 4044 4594 13396 3789 4168 4046 4595 13397 3773 4169 4047 4596 13398 4047 4170 3821 4596 13399 3665 4266 4101 5321 13400 3667 4257 4090 5322 13401 3777 4261 4094 5324 13402 4097 4265 3718 5326 13403 4100 4264 3735 5325 13404 3829 4171 4048 4599 13405 3984 5108 1142 5283 13406 3999 4730 4301 5009 13407 3003 3356 5040 5165 13408 1400 4140 1399 4981 13409 3577 3576 4141 5192 13410 1155 4746 1060 5235 13411 2861 2146 2132 4358 13412 2060 2059 4998 5471 13413 3898 5437 4370 5643 13414 3752 4098 5025 5148 13415 3948 3812 4648 5275 13416 3824 4177 4042 4597 13417 4081 4237 3701 5568 13418 3067 2789 1983 4130 13419 3860 4430 4755 5523 13420 4095 4547 4494 5480 13421 3510 3512 4745 4767 13422 3928 5160 2750 5166 13423 3190 4171 2791 4698 13424 758 4870 4482 5466 13425 1891 1302 1303 4925 13426 3509 4745 3512 4907 13427 4296 4665 3914 4992 13428 1243 1577 1242 4689 13429 4236 5235 3762 5249 13430 4410 4684 3811 4717 13431 1172 1171 1170 4893 13432 4238 4293 3682 4518 13433 3970 4110 3787 5382 13434 3875 3990 4386 5344 13435 1972 5029 3950 5241 13436 4115 4582 3685 4990 13437 1368 4308 4843 5440 13438 3671 4127 4460 4512 13439 3665 4375 4101 4556 13440 4183 4732 819 5470 13441 2949 4013 5380 5408 13442 786 5377 4827 5620 13443 2480 3107 3087 4396 13444 4258 4369 3662 4911 13445 2637 3219 3162 5262 13446 1385 1622 681 5564 13447 3619 3546 4274 5260 13448 1629 4597 5122 5481 13449 3963 4431 3650 4458 13450 4442 5405 4571 5564 13451 3918 5009 4918 5431 13452 3084 4247 2349 5593 13453 3773 4185 4060 4643 13454 3938 4504 4393 5094 13455 3180 2613 3166 4774 13456 1765 4186 887 5293 13457 3833 4627 4615 5561 13458 4262 4086 4542 5540 13459 3835 3935 4661 5572 13460 2713 2714 5028 5469 13461 4114 4304 3894 5064 13462 1334 1236 1410 4246 13463 3799 4309 4143 4770 13464 3683 5457 4138 5558 13465 1582 1725 4163 5597 13466 4053 4179 3672 4965 13467 2177 2179 2178 4361 13468 3962 3772 4653 5547 13469 3872 4920 4302 5406 13470 4386 4818 3998 5456 13471 3675 4038 4659 5471 13472 3665 4209 4183 5338 13473 2082 2061 4421 4659 13474 1767 4081 1015 4796 13475 2807 2832 4779 5285 13476 4451 5216 3704 5560 13477 2527 2954 4401 5107 13478 3840 4901 4028 5271 13479 3790 4299 4073 4447 13480 630 611 609 4912 13481 3733 4768 4462 5012 13482 2066 3983 4949 5211 13483 4275 4932 999 5634 13484 908 5190 909 5197 13485 1400 523 1399 4140 13486 3599 4003 3567 4959 13487 4326 4897 656 5617 13488 3892 5235 4236 5249 13489 2927 3203 4168 5607 13490 1787 4332 604 4843 13491 3084 3196 2349 4247 13492 3845 4278 4077 5625 13493 4418 4719 4076 5600 13494 4023 3697 4509 5526 13495 2118 2119 2117 4948 13496 3114 4963 3344 5494 13497 3662 4044 4167 5193 13498 312 572 397 4412 13499 1544 481 560 4769 13500 2638 3211 3073 5127 13501 405 4674 351 4716 13502 2745 2746 2747 4508 13503 4183 4270 3681 4879 13504 3670 3942 4640 5212 13505 948 1032 4220 5221 13506 4470 4742 3929 5347 13507 310 569 1881 4820 13508 2709 3131 4131 4982 13509 3813 4837 3967 4884 13510 3966 3801 4348 5251 13511 4167 3738 5083 5492 13512 4064 4274 3818 4417 13513 3922 4309 4770 4868 13514 3669 4176 4052 5197 13515 942 890 941 5293 13516 3691 4662 4271 5055 13517 3893 4450 4549 4829 13518 2217 3154 2230 5185 13519 4105 1079 5278 5394 13520 1168 5205 4523 5394 13521 696 4717 701 4975 13522 2896 4499 2400 4805 13523 1178 4049 1425 5448 13524 1425 4049 1183 5447 13525 3810 4295 3985 4748 13526 3791 4546 4096 4586 13527 4138 5304 4876 5574 13528 833 3961 832 5082 13529 1046 4749 4104 5087 13530 4151 3841 4700 5047 13531 944 4854 4017 5244 13532 2469 2372 4697 5479 13533 4250 4709 3461 5173 13534 1654 4873 4016 5092 13535 2150 2149 2154 4119 13536 3807 4335 4213 4702 13537 4218 4336 3815 4702 13538 2997 4690 1978 5123 13539 3771 4172 3951 4964 13540 3556 3596 1855 5142 13541 3650 4672 4423 5362 13542 1834 4843 4036 5090 13543 2888 2887 2886 3993 13544 2610 5249 2563 5334 13545 4031 3671 4512 4774 13546 4058 4950 4247 5520 13547 3819 3953 4560 5429 13548 3342 2009 4000 5079 13549 3040 4384 3042 4726 13550 3316 3969 2729 5036 13551 1860 1210 3968 5037 13552 474 4690 3950 5029 13553 3985 4295 3810 4677 13554 4045 4754 794 5373 13555 3852 4960 4008 5509 13556 4148 4753 2218 5376 13557 832 3961 830 5336 13558 677 3967 1451 5461 13559 579 4008 3443 4960 13560 2209 2213 4651 4933 13561 3803 4264 4185 4880 13562 1820 1196 4627 5561 13563 3827 4428 4406 5418 13564 4412 3928 5128 5160 13565 1620 3963 960 5362 13566 3951 4172 4942 4964 13567 2448 2524 4015 5120 13568 4134 4345 3658 5201 13569 4395 4657 1020 5358 13570 1753 4240 4613 5450 13571 3486 3526 3488 4792 13572 1576 567 1876 4141 13573 4058 4183 3800 4732 13574 2982 2321 4373 5592 13575 3229 4829 2889 5443 13576 3062 4617 3388 5524 13577 4279 4416 4029 5070 13578 2441 5526 2440 5527 13579 1854 1428 1908 5116 13580 1813 4627 4310 5641 13581 1404 589 668 5585 13582 3899 4418 4076 5600 13583 450 4007 448 4628 13584 3995 5298 2420 5618 13585 2598 2597 2519 4525 13586 1499 4810 4080 5521 13587 1723 4181 1509 5374 13588 2176 2863 2177 3991 13589 3871 4302 4601 4903 13590 708 5068 3938 5094 13591 4017 4676 3742 5512 13592 832 4531 3961 5336 13593 4110 4491 879 5245 13594 3762 5235 4122 5249 13595 4244 4364 3743 4497 13596 2137 4071 2124 5306 13597 4011 3660 4503 5300 13598 3344 2796 2797 5081 13599 2271 4879 2274 5596 13600 1599 4040 1598 4907 13601 3827 4020 4506 4581 13602 2082 3223 3222 4983 13603 4104 4154 3747 4174 13604 2084 2083 2087 5630 13605 4135 4557 1500 4711 13606 750 4481 748 5439 13607 3381 3097 3380 4792 13608 3697 4396 4382 5086 13609 3896 4115 4706 5623 13610 3975 3765 4511 5316 13611 4021 4138 3826 5329 13612 1517 5256 3931 5383 13613 2307 4376 5044 5463 13614 2811 4818 3998 5281 13615 2702 4737 4293 5502 13616 1654 4016 1012 5092 13617 3795 4380 4243 4956 13618 786 4032 785 5377 13619 3844 4466 4052 4646 13620 1449 4028 1950 5138 13621 1603 4043 4869 5288 13622 641 4455 645 5149 13623 1646 4034 4387 5491 13624 634 4763 608 5342 13625 1517 4892 3931 5256 13626 965 1523 4471 4919 13627 3826 4741 4585 5204 13628 2500 2502 2503 4681 13629 1603 4869 809 5374 13630 1124 4713 4455 5154 13631 2136 2134 2823 4684 13632 3729 4589 3940 4757 13633 1589 4052 4731 5310 13634 3784 4405 4045 4644 13635 4077 4579 2534 5389 13636 1404 668 4679 5585 13637 2783 2686 2789 4702 13638 3005 3006 3335 4649 13639 713 5100 4232 5277 13640 4035 3704 4591 5490 13641 2054 2052 2112 5489 13642 3866 4470 4050 5450 13643 2083 4366 2087 5630 13644 3706 4294 4119 5563 13645 1026 1119 4478 5475 13646 3485 4290 3487 5419 13647 3933 4667 4061 5118 13648 4134 4361 3194 5515 13649 3755 4230 4873 4991 13650 4011 5044 2303 5300 13651 4024 4059 4583 5231 13652 4366 4842 3014 5129 13653 444 4637 504 4720 13654 331 1542 387 4182 13655 833 3961 5082 5493 13656 647 4713 648 5454 13657 4432 4963 3873 5081 13658 4030 5413 4833 5466 13659 3160 3116 4440 4554 13660 4167 4621 3738 5492 13661 4043 4225 3677 4593 13662 1817 1377 1495 5444 13663 3825 4485 4789 5274 13664 4023 4139 3732 5330 13665 1167 1802 4783 5594 13666 3828 4277 4177 4858 13667 1189 1625 4714 5564 13668 3877 3949 4521 5130 13669 2899 2162 2865 4424 13670 727 725 726 4069 13671 1931 1929 4290 4700 13672 2313 2312 2311 5210 13673 3771 3951 4172 5163 13674 363 4182 387 4895 13675 1148 4418 4719 5071 13676 1352 1784 1736 4562 13677 1409 4178 1738 4941 13678 2473 2453 2540 4162 13679 782 1483 779 5510 13680 3943 4782 1548 5343 13681 801 1502 1766 5151 13682 782 4371 1483 5510 13683 608 4763 4563 5342 13684 2427 2420 5298 5618 13685 664 658 659 4387 13686 1440 1786 1781 4450 13687 3731 4106 4224 5581 13688 3973 4701 3953 5150 13689 3849 4918 4786 5164 13690 3703 4269 4088 4469 13691 4034 3892 4739 5117 13692 1780 820 4204 5125 13693 1245 1602 4803 5257 13694 4143 4309 3799 4897 13695 2525 2646 4590 5217 13696 2056 4998 4214 5478 13697 1107 4657 4105 5278 13698 3876 5042 4743 5500 13699 3957 4598 2727 5535 13700 3081 3999 3242 5528 13701 2021 3004 371 4649 13702 3938 4987 4119 5001 13703 3946 4468 4154 5087 13704 4107 4234 3742 5051 13705 4727 5010 4306 5429 13706 2063 5222 4421 5471 13707 3939 4873 4230 4991 13708 3896 4706 3924 4851 13709 2078 4528 2076 4771 13710 4060 4880 1805 5605 13711 2022 3411 2925 3997 13712 3662 4594 4258 5565 13713 2649 2654 2648 4921 13714 4006 3842 4291 5622 13715 2483 4079 2728 5399 13716 2692 2691 5089 5285 13717 2085 3014 4366 4842 13718 3368 2024 324 5033 13719 3723 4507 4652 4942 13720 1426 839 4685 5436 13721 1708 1186 4321 4631 13722 3228 2891 4322 4630 13723 2456 4840 2369 5061 13724 4118 5042 4743 5456 13725 1378 1474 4078 5259 13726 1185 931 4631 5503 13727 1750 743 745 5216 13728 1199 4880 1805 5582 13729 3574 3575 4459 4673 13730 3956 4826 4617 5546 13731 313 557 1501 4716 13732 3900 4032 5451 5620 13733 3934 3770 4721 5302 13734 2619 4618 2602 5380 13735 3007 2318 4505 5329 13736 3090 2178 2428 5455 13737 3872 4772 4519 5116 13738 4410 4717 3811 5462 13739 3372 3990 2007 4969 13740 3338 3300 4828 4851 13741 4173 4531 3961 5082 13742 2230 4287 2231 5185 13743 3490 4065 3519 4479 13744 3725 4541 4091 4594 13745 4738 4824 3889 4875 13746 2746 2745 2744 4508 13747 3782 4707 4484 5597 13748 3819 4220 4894 5043 13749 3837 4798 4521 5130 13750 1999 3522 4767 5279 13751 3997 4790 3850 4887 13752 2530 2718 2550 4001 13753 2997 2998 1978 4690 13754 3839 4957 4056 5577 13755 2613 2516 2624 4511 13756 1445 1816 1797 5094 13757 4214 4998 4704 5504 13758 2177 3991 2863 5051 13759 4067 4283 4149 4747 13760 3184 3185 3298 4445 13761 3830 4729 4126 5421 13762 1615 304 1501 4716 13763 3757 4438 4429 4945 13764 4666 5009 4918 5388 13765 1933 4290 1931 5419 13766 3939 4939 4873 5444 13767 2703 3235 4857 5478 13768 3201 4315 3214 4625 13769 3214 4319 2960 4625 13770 1799 4310 1813 4627 13771 1588 4738 1906 5022 13772 412 501 1641 4381 13773 2174 2167 2173 5131 13774 2373 4733 4107 5051 13775 3342 4000 4828 5258 13776 4119 4294 3768 4987 13777 2091 2978 2191 4889 13778 2647 4590 3222 4983 13779 2779 2820 4132 4956 13780 3778 4955 4641 5262 13781 1365 1273 1364 4846 13782 3835 4930 4661 5314 13783 1577 4997 4689 5361 13784 3958 4487 5312 5498 13785 3812 4714 4246 5564 13786 4163 4788 1725 4929 13787 3466 4291 3468 5158 13788 4827 5377 4032 5620 13789 4285 4718 4370 5280 13790 4510 4905 4254 5050 13791 2040 2037 4018 5056 13792 3896 4115 4990 5409 13793 4363 4924 2367 5537 13794 1461 4073 1662 5154 13795 4111 4296 3914 4666 13796 1761 1053 1051 4388 13797 4155 4937 3747 5628 13798 3950 5029 4690 5241 13799 3088 456 500 4362 13800 3767 4803 4094 5413 13801 3829 4339 5041 5333 13802 3706 4106 4020 4581 13803 2430 4606 4084 5549 13804 3904 4476 4110 5157 13805 3010 2079 4953 5163 13806 4326 4756 3798 5617 13807 4037 5227 4525 5228 13808 3247 3262 4196 5644 13809 3729 3991 4757 5102 13810 3795 4531 4265 5112 13811 4255 4539 4084 5532 13812 680 3948 4639 4993 13813 437 457 456 4362 13814 3902 5050 4000 5258 13815 3656 4918 4666 5009 13816 1065 4460 1730 4512 13817 1585 4245 1112 4941 13818 2079 2078 2076 4771 13819 3983 3725 4541 4629 13820 762 766 4030 5466 13821 3498 3496 3493 4972 13822 579 1965 3443 4008 13823 3187 5089 3981 5169 13824 2786 2778 4956 5606 13825 3737 4967 4399 5315 13826 1529 1935 4972 5546 13827 4023 5132 4139 5330 13828 3787 4092 4476 4491 13829 3335 3423 3005 5165 13830 1945 3474 1912 4145 13831 4294 4581 697 5563 13832 4430 4497 3932 5523 13833 3494 4623 3493 4972 13834 3400 4065 2847 5533 13835 1635 897 1745 5072 13836 2769 4728 2650 4758 13837 850 5246 4503 5599 13838 2559 4174 2501 4989 13839 2084 2087 4768 5630 13840 2975 4978 4062 5139 13841 3744 4882 4164 5045 13842 2774 4306 2771 5429 13843 4048 5188 4428 5418 13844 3093 4507 5163 5626 13845 3651 4128 4620 4759 13846 1850 975 1471 5237 13847 2401 5103 4342 5596 13848 459 3990 462 4830 13849 3805 4755 4430 5523 13850 4341 4781 3652 5602 13851 4896 5120 3692 5198 13852 3773 4596 4831 5006 13853 582 539 1818 4188 13854 2302 2301 2248 5300 13855 4036 4238 3682 4518 13856 3688 4238 4036 4518 13857 2740 3185 3379 4445 13858 3684 4878 4311 5393 13859 1403 4500 5233 5271 13860 342 4891 4276 5003 13861 3890 4966 4665 5101 13862 3669 5270 4646 5400 13863 2483 3330 2728 4079 13864 3785 4143 4026 4897 13865 2908 3109 2191 4298 13866 2904 2903 3109 4298 13867 4061 4740 3982 4950 13868 4136 1180 4504 5205 13869 3729 4600 4050 5131 13870 2729 3287 2532 4841 13871 1474 5109 4078 5259 13872 1353 1524 4227 4967 13873 2260 4950 4926 5520 13874 4729 5072 1252 5421 13875 3077 2986 4858 5613 13876 2912 5117 4292 5249 13877 4760 4923 3899 5248 13878 3753 3967 4347 5557 13879 3807 3962 4522 5191 13880 3324 4598 5247 5250 13881 3833 4642 4490 5371 13882 4359 4956 3945 5606 13883 4430 5305 705 5452 13884 1478 4191 797 5639 13885 2511 4198 3056 5640 13886 1238 4562 1736 4586 13887 2754 3425 2756 5033 13888 2783 4702 4130 5229 13889 3661 3969 4345 5201 13890 570 1475 1958 4850 13891 2457 2116 2110 4398 13892 4009 4147 3897 5370 13893 2368 4466 2366 5541 13894 468 470 4533 4978 13895 3696 4608 3965 4705 13896 3456 3478 3521 4823 13897 3706 5000 4303 5172 13898 4089 4516 3919 5014 13899 1470 1745 4457 5072 13900 3665 4183 5075 5338 13901 1273 1364 4846 5580 13902 4078 4239 3753 5308 13903 3753 4347 4257 5557 13904 3692 4090 4304 5198 13905 4442 4571 3812 5564 13906 3280 2985 2781 5255 13907 3960 3819 4727 5429 13908 3701 4796 4252 4954 13909 4059 4819 3076 5393 13910 1097 1098 1330 4785 13911 3657 4050 4600 5076 13912 4130 4724 3807 5633 13913 4050 3866 4424 5076 13914 1595 4242 1596 5034 13915 3664 4080 4513 4810 13916 2192 3274 4704 4908 13917 3772 4018 4551 4806 13918 3894 4590 4114 5064 13919 1607 5171 1608 5639 13920 1039 1038 1086 5059 13921 4008 4637 3852 5509 13922 2598 2601 3170 4525 13923 3870 4515 4365 5646 13924 3206 2585 2582 5095 13925 2800 4278 2798 4985 13926 1652 387 4182 4895 13927 3915 4971 4526 5053 13928 4044 4271 3725 4594 13929 4046 4272 3810 4595 13930 442 498 1904 5029 13931 2640 4205 2383 5145 13932 2149 2145 5155 5172 13933 4069 4757 3991 5102 13934 2040 2882 2037 5056 13935 3325 3334 2728 4973 13936 4159 5025 3779 5148 13937 4017 4854 3658 5244 13938 2293 2876 2790 3986 13939 3845 4226 4077 4683 13940 3754 4259 4072 4446 13941 3795 4265 4097 5112 13942 3761 4739 4034 4784 13943 3650 4431 3963 5362 13944 3806 3981 4934 5234 13945 1368 4308 1787 4843 13946 3437 1600 3525 4121 13947 1463 1347 1035 4747 13948 3742 4069 3991 4977 13949 1038 1039 971 4474 13950 910 4731 4052 5197 13951 3870 4834 4367 5420 13952 4771 4953 3930 5055 13953 3828 4177 4042 4858 13954 3769 4014 4448 5205 13955 4045 5098 4552 5265 13956 2580 4384 3040 4976 13957 3585 3547 3025 5192 13958 2686 2685 4336 4702 13959 3153 2608 4465 5294 13960 4138 5328 4019 5558 13961 3493 3956 3495 5546 13962 3156 2836 2612 4864 13963 4095 4494 3726 5480 13964 565 4751 1465 5601 13965 893 4331 4868 5539 13966 5089 5169 3187 5285 13967 3903 4355 4790 4852 13968 1552 746 998 5439 13969 378 402 4883 5040 13970 1006 4491 878 5475 13971 3724 4389 4170 4723 13972 681 4993 1811 5564 13973 4598 3827 5247 5250 13974 3670 4847 4314 5548 13975 3801 4308 5251 5440 13976 4169 4643 3726 5346 13977 739 4913 639 5012 13978 3619 3945 4274 5410 13979 1374 4166 5278 5394 13980 3965 4346 4113 4835 13981 4641 4955 4049 5062 13982 3477 4125 550 5158 13983 3771 4964 4460 5299 13984 2963 4109 2480 4946 13985 2162 2899 2163 5113 13986 4015 4896 2448 5120 13987 2660 2866 2662 4800 13988 3716 4869 4583 4878 13989 3823 4935 4454 5535 13990 2949 2189 3141 5129 13991 373 379 378 5040 13992 2844 3970 2971 5157 13993 3125 3126 4559 5367 13994 3974 4532 4442 4784 13995 3868 4664 4120 4834 13996 572 312 1597 4412 13997 3992 4520 506 4769 13998 4552 5098 3933 5265 13999 4132 4956 2820 5417 14000 3322 2826 4770 5179 14001 3945 5410 3628 5606 14002 2993 2761 4520 5266 14003 2865 3204 4424 4561 14004 474 498 442 5029 14005 3792 4353 4232 5100 14006 3190 2719 3324 5247 14007 1770 1468 1164 4707 14008 1142 3984 5063 5227 14009 4743 5042 4118 5500 14010 569 310 375 4820 14011 1061 1066 5108 5283 14012 4007 448 4628 5583 14013 3975 4928 1494 5293 14014 676 4718 4339 5333 14015 3866 4424 4240 4613 14016 1021 1001 1002 4128 14017 3750 4954 4016 5292 14018 3692 4304 4090 4961 14019 3634 3564 3305 5143 14020 3110 2099 2101 4764 14021 2099 2097 2098 4764 14022 3073 3259 2838 4765 14023 2278 4945 4644 5569 14024 697 4294 1830 4581 14025 4471 5196 3787 5245 14026 3725 4271 4044 5152 14027 837 4536 4046 5436 14028 1489 1488 4634 5441 14029 3711 4015 4554 4984 14030 3669 4646 4176 5400 14031 1494 1748 4928 5316 14032 4143 4897 3799 5358 14033 3670 3942 5212 5269 14034 3990 4830 459 4969 14035 2287 4272 2286 4855 14036 2977 3492 2013 4623 14037 4026 4143 3799 5358 14038 4225 4593 2310 5415 14039 2132 4817 4358 5571 14040 2636 3247 4196 5644 14041 4142 4454 2185 5181 14042 1982 3492 2977 4617 14043 3677 4225 4042 5415 14044 981 5071 4539 5269 14045 2406 2558 5042 5181 14046 4363 4708 4160 4893 14047 2401 3138 5103 5596 14048 1799 4627 1813 5641 14049 685 1451 3967 5557 14050 3178 4377 2382 4461 14051 2024 3425 3346 3989 14052 4008 4720 521 5136 14053 1710 1157 4746 5634 14054 4018 4055 3699 5585 14055 1221 4742 4470 5347 14056 1734 5069 4492 5517 14057 1251 825 961 4797 14058 2487 2415 2477 4067 14059 3249 4643 4185 5387 14060 3695 4549 4450 4829 14061 3970 4471 4110 5331 14062 3748 4282 4088 5355 14063 3368 324 332 5033 14064 3504 4575 3448 4725 14065 1107 1372 4657 5278 14066 3507 3506 3508 4865 14067 4035 4279 3704 5560 14068 3684 4583 4184 5386 14069 1505 3608 3542 5144 14070 388 4000 2009 5079 14071 3161 2836 4441 4864 14072 2739 2738 4521 5137 14073 1895 4412 1218 5057 14074 589 4055 4527 5422 14075 3956 4617 3495 5546 14076 948 4500 1447 5221 14077 3671 4812 4072 5390 14078 4462 5012 4768 5630 14079 1499 4080 4810 5536 14080 765 778 1703 4538 14081 778 1483 1697 4538 14082 4119 4987 3768 5001 14083 1897 1300 4822 5050 14084 1356 4386 1105 5456 14085 1072 4473 4408 5425 14086 3964 4909 4024 4929 14087 471 468 441 4062 14088 3860 4717 4410 5452 14089 2153 2140 2148 5252 14090 3221 2914 4425 5527 14091 2744 3242 3999 5431 14092 3807 4702 4213 5159 14093 3815 4218 4702 5159 14094 4306 4727 3960 5010 14095 3716 4593 4869 4878 14096 4508 5590 4010 5622 14097 3993 5443 4829 5477 14098 1111 1110 1159 4742 14099 1145 1144 5228 5403 14100 4285 4370 3788 5280 14101 4666 4918 3849 5388 14102 4478 4580 3874 5028 14103 3332 3573 3585 4459 14104 1418 5142 4576 5534 14105 3455 3465 3466 4291 14106 4101 4375 3718 4556 14107 3857 4949 4033 5065 14108 1780 4310 1181 5125 14109 1112 1044 4632 5552 14110 2376 5208 4705 5349 14111 2687 2561 2688 4281 14112 4199 5095 3667 5586 14113 3777 4368 4094 4997 14114 2352 3312 2470 5243 14115 2921 2793 4305 4693 14116 3182 2631 4292 5117 14117 4156 4752 1772 5486 14118 3967 4884 1451 5461 14119 4072 4446 3975 5390 14120 2005 4062 441 5218 14121 3794 3946 4468 4927 14122 1142 5108 3984 5228 14123 3925 5219 4472 5223 14124 3796 4402 4190 5207 14125 3801 4348 4308 5236 14126 2012 3037 513 4520 14127 4258 4312 3748 5355 14128 3729 4589 4232 4838 14129 1809 1700 1457 4147 14130 3933 4498 4456 4926 14131 2727 3324 4598 5247 14132 3402 3057 4709 5178 14133 3986 4685 3789 5053 14134 2375 2809 2972 3972 14135 3184 4445 3298 5298 14136 964 963 1025 4283 14137 4738 4824 3890 5022 14138 4081 4237 3891 4663 14139 833 830 3961 5174 14140 2951 2886 4405 5242 14141 3655 4006 4125 5516 14142 2823 2134 2146 5327 14143 840 4467 843 4536 14144 1467 1164 4707 5403 14145 3500 4083 1606 4826 14146 1311 1315 566 4241 14147 988 4023 4382 5496 14148 4080 3664 4513 5469 14149 1002 4128 5039 5188 14150 4026 4897 4143 5358 14151 3272 2367 4363 4924 14152 3983 4949 4033 5222 14153 2182 2373 2183 5515 14154 2334 5382 4377 5603 14155 1890 1300 4744 4822 14156 4618 5380 4013 5408 14157 1685 5202 4203 5594 14158 4615 4642 3247 5644 14159 4442 4648 4571 5301 14160 2025 3524 2926 4791 14161 4387 5280 3788 5437 14162 2667 2539 4815 5281 14163 905 907 906 5190 14164 3948 4639 4358 5570 14165 3819 3960 4894 5180 14166 2556 4142 2185 5181 14167 1734 4492 1735 5517 14168 3281 2086 4715 5367 14169 1360 4048 1332 5188 14170 1282 1291 5009 5388 14171 3962 4699 3807 5633 14172 3771 4460 4127 5299 14173 3696 3965 4113 4705 14174 811 4191 803 5177 14175 818 4192 811 5177 14176 655 4329 653 5119 14177 3170 2597 4525 4722 14178 1633 1347 1463 4187 14179 4407 5030 3659 5486 14180 3939 4873 4233 5444 14181 3311 4027 2533 5484 14182 917 4885 4807 5458 14183 3558 3625 3622 4064 14184 1201 4897 4026 5358 14185 863 4019 862 5097 14186 3900 5451 4371 5620 14187 1467 4707 5074 5403 14188 751 750 748 5439 14189 3811 4358 4639 5570 14190 4465 4641 3754 5062 14191 4127 4512 3671 4774 14192 447 4985 4075 5311 14193 3782 5189 4524 5307 14194 2134 4358 2146 5327 14195 785 1754 4922 5045 14196 4024 4909 3709 4929 14197 3781 4424 4240 4561 14198 2065 2064 3983 5222 14199 3154 2712 4427 4933 14200 2066 2065 3983 5211 14201 516 477 4146 5123 14202 3761 4034 4739 5117 14203 932 846 933 4526 14204 1603 5288 4869 5374 14205 762 4030 4870 5466 14206 863 862 864 5097 14207 4294 3768 4987 5339 14208 4775 5262 2466 5568 14209 2061 2063 2082 4421 14210 3486 3485 3484 4290 14211 1802 4783 4212 5635 14212 3940 4495 4395 5455 14213 907 962 1624 5190 14214 2708 2852 2853 4126 14215 4088 4269 3748 4469 14216 1521 4892 558 5577 14217 3243 4063 2832 5169 14218 2636 4196 3228 4630 14219 1186 4207 1188 4631 14220 1045 1044 4194 4632 14221 643 661 4203 4633 14222 1045 4197 1154 4632 14223 661 1489 4212 4633 14224 1692 1161 4209 4635 14225 2886 3993 5084 5242 14226 3905 5005 4437 5183 14227 1300 4744 4822 5050 14228 619 4535 4044 5193 14229 4061 4926 3681 4936 14230 3738 4012 4535 5083 14231 4112 4844 3847 4925 14232 3785 4180 4584 5391 14233 4179 4585 3672 5392 14234 3455 1701 3463 4960 14235 2219 2931 4148 4819 14236 3264 3965 2388 5334 14237 1692 4220 1040 4635 14238 4013 4135 3733 4711 14239 1082 4683 4226 5424 14240 1002 4128 1001 5039 14241 1038 1039 4474 5059 14242 4225 4385 3828 4691 14243 3768 4142 4352 5339 14244 1954 1544 1308 3992 14245 1409 1715 4178 4899 14246 3954 4807 3935 5061 14247 340 4877 4891 5003 14248 4041 4829 3893 4882 14249 3948 4993 3812 5275 14250 4164 4356 3679 4882 14251 3654 4479 4660 5562 14252 3660 5320 4503 5599 14253 4498 4926 3933 4936 14254 3805 4190 4402 5207 14255 2949 3141 4013 5129 14256 4396 5086 3942 5584 14257 1001 4128 1021 5039 14258 3982 4061 4936 5206 14259 4067 4149 3837 5453 14260 1675 1115 4089 4980 14261 3409 465 1994 4157 14262 1504 4262 4783 5635 14263 4035 4127 3853 4512 14264 3681 4926 4498 4936 14265 448 4007 450 5583 14266 3628 3945 3619 5410 14267 1082 4226 4683 5513 14268 3787 4476 4110 4491 14269 1927 4492 4066 5517 14270 3281 4715 4518 5367 14271 3974 3761 4750 4784 14272 1781 1780 1442 5125 14273 3896 5046 4760 5600 14274 3945 4380 4243 5067 14275 3910 4439 5049 5434 14276 3892 5235 4273 5491 14277 4462 4768 3733 5630 14278 4107 4733 4234 5051 14279 3872 4381 4772 5116 14280 4014 4136 3769 5254 14281 4098 3751 4420 5225 14282 3901 4456 4429 4816 14283 4429 4456 3730 4816 14284 2880 2815 2429 5301 14285 2179 3194 4361 5515 14286 2620 3113 3135 5085 14287 1441 4450 1440 4549 14288 1098 4785 1056 5404 14289 1715 1764 769 4899 14290 1764 1409 1154 4899 14291 2474 2349 4805 5593 14292 1304 4372 1554 4415 14293 4154 4468 3946 4927 14294 4135 4540 3690 5408 14295 2435 4314 2436 5212 14296 3656 4730 3999 5009 14297 4137 4448 4014 5205 14298 2983 4350 4965 5551 14299 573 4066 3449 4862 14300 3683 4385 4138 5457 14301 2165 4589 4353 5131 14302 1778 1824 892 5110 14303 3934 4721 4303 5172 14304 4303 4721 4119 5172 14305 2047 4210 2048 5175 14306 2047 2046 4210 5175 14307 988 989 4023 5496 14308 2616 3142 4333 5103 14309 3324 3317 4598 5250 14310 4135 5238 4540 5408 14311 4226 4683 3845 5424 14312 1377 1832 4420 5025 14313 2492 4342 3142 5103 14314 4063 4562 4161 4900 14315 4467 4762 3751 5182 14316 4048 4171 3829 5077 14317 1817 1832 1377 5025 14318 3902 4510 4254 5050 14319 3986 4595 3789 4685 14320 3810 4595 3986 4685 14321 4582 4990 4115 5409 14322 4460 4512 4127 5299 14323 1041 4609 4101 5338 14324 3844 4474 5128 5166 14325 3835 4661 4443 5314 14326 836 4686 834 4811 14327 1301 1217 1846 5050 14328 2860 2704 3165 4881 14329 1351 1352 1238 4562 14330 3867 4419 3956 5543 14331 3949 3877 4592 5130 14332 4016 4796 3701 4954 14333 3677 4225 4043 5122 14334 3701 4054 4016 4954 14335 1246 4016 4873 5442 14336 3603 4003 3604 4981 14337 795 5098 4045 5265 14338 935 5002 4262 5540 14339 3249 4185 4643 5232 14340 1623 1395 770 4803 14341 3522 3450 3050 4767 14342 2942 4691 2335 5407 14343 1099 4389 1100 4785 14344 2335 4691 4225 5407 14345 3905 3971 4245 5183 14346 3715 4002 4290 5483 14347 2642 4327 2640 5145 14348 1439 4204 1766 5151 14349 3142 2401 3138 5103 14350 4158 4245 3971 5183 14351 3862 4162 4128 4620 14352 1063 4812 1065 5390 14353 2036 2038 4699 5633 14354 4513 5028 3874 5533 14355 4176 4537 3717 4692 14356 416 461 1540 5530 14357 371 3004 320 4649 14358 3926 4711 4013 5129 14359 1542 1652 387 4182 14360 4296 4666 3656 4918 14361 4240 4424 3781 4613 14362 4047 3821 4170 4785 14363 1679 794 4754 5373 14364 1298 1218 1895 4412 14365 4388 4687 1051 5480 14366 4084 3685 4539 5348 14367 3143 4222 2128 5041 14368 3837 4521 4149 5130 14369 3754 4414 4005 4465 14370 3935 4840 5061 5541 14371 4237 4737 3891 5273 14372 678 686 5077 5461 14373 4078 4239 4546 5259 14374 4110 4476 3787 5382 14375 2031 4821 2801 4985 14376 2133 3070 2838 4648 14377 624 1714 621 4662 14378 1258 1716 1713 4938 14379 3661 4676 4345 5366 14380 1968 1825 1088 4344 14381 3783 3979 4455 4713 14382 1775 4612 4088 5337 14383 1401 4500 4729 5233 14384 4620 4759 3862 4886 14385 1603 858 4043 5288 14386 4012 4942 3723 5219 14387 806 887 4186 4827 14388 954 898 733 4070 14389 563 3563 1619 5048 14390 544 492 423 4108 14391 2948 4616 4513 5469 14392 3768 4294 4119 4915 14393 2306 4490 2305 5463 14394 3836 4856 4235 5587 14395 1982 4617 3389 4793 14396 3072 4341 2580 4976 14397 3978 4082 3710 5127 14398 3492 3430 2013 4623 14399 4251 4827 3755 5377 14400 3844 4431 3963 5430 14401 4557 5228 1144 5403 14402 3103 3145 4741 5329 14403 3725 4594 4091 5445 14404 935 1504 4262 4783 14405 1008 997 1073 4473 14406 3805 4917 4755 5523 14407 3970 4476 4110 5382 14408 3733 4135 4013 5238 14409 2253 4552 2254 5118 14410 3243 2111 2832 5199 14411 4185 4643 3773 5387 14412 1116 4035 1785 5216 14413 4145 4726 3473 5544 14414 1384 4789 4485 5333 14415 2928 2225 4202 5170 14416 1607 4192 1059 5171 14417 2580 2479 4384 4976 14418 4462 5012 3925 5219 14419 2946 3180 3166 4127 14420 2047 2045 2046 5175 14421 2047 2048 2049 5175 14422 2369 5061 4840 5541 14423 997 4304 1656 5064 14424 446 4985 447 5311 14425 3245 4554 2524 5302 14426 2928 4202 2227 5170 14427 1059 4192 904 5171 14428 1540 4830 1898 5530 14429 513 419 2012 4520 14430 1990 3004 3003 5040 14431 4350 4588 3727 5551 14432 754 4481 750 4712 14433 752 4482 847 4712 14434 2884 5041 2837 5401 14435 3452 3496 561 4972 14436 3750 4233 4420 4502 14437 2656 5107 4440 5468 14438 1360 4789 4048 5188 14439 3828 4138 4021 4691 14440 4027 4144 3666 5397 14441 951 4503 852 5641 14442 395 4051 367 5194 14443 975 4614 1471 5237 14444 2665 2666 2761 4814 14445 4002 4700 4290 4862 14446 3696 4160 4364 4924 14447 3972 4227 3879 4967 14448 1622 977 4442 5405 14449 3161 4441 2837 5041 14450 3880 4363 4824 5101 14451 4248 5148 4159 5511 14452 2216 2217 4436 4651 14453 1929 1649 533 4862 14454 2775 2776 2995 3973 14455 2371 5099 4582 5598 14456 1133 1134 4391 4546 14457 1838 4796 1191 5442 14458 2004 2798 4628 4985 14459 2712 4774 4427 4933 14460 1499 1260 4810 5521 14461 3767 5054 4261 5376 14462 372 4423 374 4649 14463 3998 4070 3861 5181 14464 589 4527 4055 5200 14465 2398 2374 4107 4579 14466 1393 1026 1119 4478 14467 636 4462 632 5012 14468 3442 4010 3465 4931 14469 536 4738 413 5309 14470 930 929 4082 5196 14471 3215 4986 2943 5287 14472 3694 4484 4482 4940 14473 4109 5203 2963 5527 14474 2113 2095 4323 5140 14475 2642 2936 4327 5141 14476 2113 4334 2939 5140 14477 2936 2939 4334 5141 14478 2600 4525 2598 4618 14479 2416 5243 4402 5453 14480 2907 4009 3292 5370 14481 515 505 453 4381 14482 1419 1197 1305 4254 14483 1188 4634 4207 5635 14484 4212 4634 1489 5635 14485 2271 4879 4058 5520 14486 716 4070 898 4935 14487 2580 4341 2422 4976 14488 3042 4726 4384 5178 14489 2150 4119 4721 5172 14490 3003 5040 3944 5165 14491 3716 4103 4043 4593 14492 3757 4531 4097 5112 14493 3696 4705 4113 5350 14494 1772 4156 1193 4867 14495 3311 2662 3319 4800 14496 3687 4373 4019 5097 14497 3161 2612 2836 4864 14498 643 646 4633 5454 14499 4528 4573 3723 5360 14500 2150 4721 3212 5172 14501 4508 4952 3852 5472 14502 3880 5022 4824 5184 14503 3035 3189 2567 4158 14504 1114 1742 1817 4159 14505 3934 4303 5000 5172 14506 3828 4858 4042 5407 14507 2874 4955 4641 5062 14508 2887 2886 3993 5126 14509 3794 4927 4293 5502 14510 3912 4485 4441 5041 14511 4466 4646 3844 5430 14512 2566 4158 2567 4847 14513 1865 1264 1265 4428 14514 4236 4739 4292 5508 14515 1380 4562 1352 4900 14516 4029 4279 3908 5017 14517 1780 4204 1442 5125 14518 3842 4809 4187 5167 14519 1098 1099 1100 4785 14520 4408 4473 3692 5425 14521 2401 4342 4805 5596 14522 1010 1031 1011 4558 14523 3657 4601 4302 4903 14524 3803 4264 4880 5605 14525 3864 4793 4617 4826 14526 3718 4556 4268 5326 14527 4252 4737 4081 5568 14528 3732 4139 4102 4545 14529 4102 4139 3835 4545 14530 2269 4626 2270 5613 14531 1103 1416 4240 4710 14532 3962 4653 3772 4703 14533 1203 1156 5090 5578 14534 1023 1596 5080 5646 14535 971 1038 4474 5059 14536 4066 4492 1927 5525 14537 3512 3527 4121 4767 14538 3209 3557 1976 5135 14539 2500 2499 4095 5628 14540 3877 4521 3949 4888 14541 1102 1236 1334 4249 14542 4183 4879 3681 5520 14543 3968 3658 4349 4854 14544 3992 4520 4769 5230 14545 3795 4611 4531 5082 14546 3452 1627 4602 4972 14547 4060 4025 4643 5232 14548 3905 4245 4158 5183 14549 700 4165 5000 5581 14550 700 5000 692 5581 14551 3429 1987 3048 4745 14552 3784 5414 4644 5569 14553 3690 4135 4085 4540 14554 4085 4135 3698 4540 14555 2613 5240 2517 5385 14556 3812 4571 4442 4648 14557 1947 1914 3446 4725 14558 2059 4659 2941 4908 14559 2516 5287 4511 5385 14560 4143 4495 2651 5036 14561 1081 4496 4144 5037 14562 4394 5100 711 5277 14563 2928 2249 2225 5170 14564 1607 1059 1608 5171 14565 4050 4600 3729 5529 14566 2711 4616 5469 5604 14567 4067 4914 4149 5453 14568 3984 3690 4525 5228 14569 3991 4601 3657 4903 14570 3696 3952 4364 4975 14571 1188 1486 4634 5635 14572 1486 1489 4634 5635 14573 2082 4421 3223 4983 14574 4314 5212 3670 5548 14575 4023 4509 4109 5526 14576 884 5152 4662 5448 14577 1145 5228 4037 5403 14578 635 636 638 5012 14579 569 375 1555 4423 14580 1666 412 4381 5038 14581 4282 5095 4088 5355 14582 5079 5258 3348 5591 14583 3182 2912 4292 5249 14584 2964 4056 2966 4946 14585 4062 4886 3421 5139 14586 3982 3830 4740 4797 14587 4072 3719 4446 5412 14588 2132 2126 4817 5571 14589 4034 4750 3761 4784 14590 3995 4151 3855 4548 14591 4084 4539 4255 5348 14592 4054 4954 2340 5621 14593 1116 1497 1785 4035 14594 2273 2265 4740 5357 14595 1604 581 314 4925 14596 2583 2924 2934 5308 14597 3821 4831 4596 5006 14598 3650 4696 4431 5362 14599 3961 4173 3757 4531 14600 1171 894 1170 4111 14601 2984 4267 3597 5255 14602 3730 4945 4438 5569 14603 3199 2943 4986 5287 14604 3778 4641 4259 5262 14605 4095 4174 3747 5628 14606 3318 2663 4143 4770 14607 4054 4186 3755 4735 14608 3880 5022 4227 5032 14609 4067 4695 3888 4747 14610 1770 4707 4163 5597 14611 3735 5175 4210 5372 14612 4040 4664 3868 4907 14613 3350 3421 4886 5139 14614 4676 4977 3742 5512 14615 4257 5557 3731 5581 14616 3275 4463 2767 4903 14617 1272 1194 1849 5476 14618 947 4152 946 4776 14619 2777 5410 3945 5606 14620 1532 856 959 4564 14621 3809 5024 4404 5405 14622 4171 4599 3829 5401 14623 1140 1225 4645 5543 14624 1546 4284 1323 4701 14625 1368 4843 1249 5440 14626 3961 3907 4248 5174 14627 4103 4181 3854 5592 14628 4058 4879 4183 5520 14629 1924 1295 1923 4680 14630 3823 4766 4558 4815 14631 909 4731 4223 5619 14632 2435 4396 2438 5212 14633 4750 4784 4034 5291 14634 3721 4614 4693 5237 14635 2980 2305 4490 5463 14636 2487 4914 2805 5516 14637 2368 2365 2366 4466 14638 3970 4471 5272 5382 14639 4058 4183 3681 5520 14640 4191 4311 3677 5177 14641 3824 4338 4192 5177 14642 3723 4366 4462 5261 14643 3159 4205 2640 5145 14644 412 4381 5038 5494 14645 3655 4809 4006 5167 14646 3824 4177 4597 5402 14647 3719 3975 4253 5287 14648 4386 4766 1355 5016 14649 4007 4963 450 5038 14650 757 4416 761 4938 14651 4019 4053 3687 5214 14652 3759 4018 4055 5213 14653 3752 4098 4536 5025 14654 3653 4674 3996 4866 14655 1540 534 416 5530 14656 3148 3411 2869 4790 14657 4526 4547 3747 4937 14658 3915 4547 4526 4937 14659 4047 4169 3773 4687 14660 3077 4042 4858 5407 14661 2548 2485 2398 4579 14662 3794 4737 4293 4801 14663 3975 4511 5104 5316 14664 3759 4100 4527 5110 14665 3816 4959 4068 5015 14666 3715 4290 4022 5483 14667 505 4772 515 5396 14668 3810 4748 3985 4811 14669 1605 551 3453 4250 14670 1620 4885 3963 5362 14671 3782 4163 3964 4524 14672 2415 4067 2487 5379 14673 3414 4051 2967 5194 14674 4007 4736 4432 5416 14675 3661 4361 4134 4676 14676 996 4473 1072 5425 14677 2928 2227 2929 5170 14678 1059 904 906 5171 14679 3022 325 344 4877 14680 1012 4016 1246 5442 14681 905 4242 907 5190 14682 1744 808 815 4498 14683 4815 5281 3875 5399 14684 710 4394 1450 4613 14685 1985 4002 3381 5020 14686 2257 2254 2259 4061 14687 1399 4140 1330 4785 14688 4006 4291 5018 5622 14689 763 4833 766 5466 14690 3385 4853 4022 5483 14691 907 4242 962 5190 14692 3952 4244 3860 5153 14693 1672 4611 4243 5284 14694 3933 4926 4061 4936 14695 4273 4746 1694 5235 14696 4503 5246 3679 5599 14697 619 622 4044 5445 14698 1169 4031 1258 5316 14699 3865 4126 5593 5611 14700 399 4844 333 4925 14701 3054 1982 3389 4793 14702 3792 5100 4232 5579 14703 1258 4031 1169 5104 14704 1673 4452 740 4988 14705 1235 1234 1333 5159 14706 1235 1336 1414 5159 14707 3862 4728 4162 5139 14708 4735 5487 2340 5621 14709 4000 5050 4744 5258 14710 4025 4494 3801 5251 14711 3229 3234 2889 4829 14712 1224 1038 4383 5059 14713 1369 1842 1335 4902 14714 3308 4357 4289 5468 14715 1564 524 3501 4575 14716 4030 768 4870 5257 14717 1355 4386 1329 4766 14718 4054 2340 5487 5621 14719 3926 4517 4228 5074 14720 4874 4945 2280 5511 14721 2439 5239 2437 5526 14722 1013 1767 1015 4796 14723 4054 5487 4735 5621 14724 2375 2809 3972 5184 14725 3688 4518 4036 5367 14726 3837 4486 4802 5137 14727 3986 4464 3916 5476 14728 2300 3163 2209 4933 14729 3837 4486 4402 4802 14730 4205 4321 3710 5145 14731 4512 4938 3853 5395 14732 4419 4529 3867 5026 14733 4084 4640 2431 5548 14734 3715 4548 4151 5047 14735 3908 4279 4029 5070 14736 4255 4539 1687 5348 14737 3975 5293 1494 5390 14738 1113 1585 1112 4941 14739 3949 4592 3877 4888 14740 4484 4707 3910 5439 14741 1341 5116 4489 5416 14742 1580 4929 1581 5231 14743 1409 1764 1715 4899 14744 4149 4914 4521 5453 14745 3378 4006 2999 5018 14746 2565 2672 5368 5500 14747 4160 4363 3880 4708 14748 3770 4136 4014 4554 14749 3098 3061 4516 5426 14750 3994 4697 4615 4921 14751 3995 4151 3841 5069 14752 2559 2498 2501 4174 14753 2856 2560 2404 4175 14754 2528 4697 4615 5479 14755 3891 4293 4238 4898 14756 808 4498 1567 4936 14757 809 4869 4583 5374 14758 3988 4740 3830 4797 14759 3707 4778 4198 5636 14760 3974 4532 3712 4654 14761 709 4394 5068 5100 14762 4475 4646 3844 5270 14763 3175 3964 3033 5514 14764 3732 5330 4087 5496 14765 3859 4686 4272 4811 14766 1047 933 4547 4749 14767 1402 4891 1894 5233 14768 4278 4459 3845 5019 14769 902 4365 5080 5402 14770 1017 1093 1699 4813 14771 2375 2376 4705 5349 14772 3829 4441 4599 5274 14773 811 1531 4191 5177 14774 811 4192 1607 5177 14775 2092 3015 2096 5238 14776 3691 4528 4619 4771 14777 1169 5104 4031 5316 14778 4054 4016 4954 5621 14779 3874 4725 4575 4832 14780 2002 3364 3469 4823 14781 1722 1140 1139 4449 14782 1993 3456 3399 4888 14783 4560 5058 2850 5429 14784 2794 2994 4665 4786 14785 3480 3481 4592 4888 14786 4016 3755 4544 5621 14787 4149 4521 3837 5453 14788 3970 4919 4471 5331 14789 3598 3601 3600 4068 14790 2521 4293 3284 4737 14791 3206 4282 5095 5586 14792 1858 1461 1852 4073 14793 1461 1858 1662 4073 14794 2830 4239 2691 4779 14795 3961 4248 4159 5174 14796 2303 4011 2304 5463 14797 1082 4683 4152 5513 14798 2453 3238 2540 4162 14799 587 586 4133 5422 14800 4262 5488 4207 5635 14801 4142 4710 4352 5339 14802 3772 4551 4144 4806 14803 4103 3854 4530 5210 14804 381 543 312 5313 14805 3185 3380 3379 4792 14806 4525 4618 2600 4958 14807 4020 4106 3706 5610 14808 1544 1308 3992 4769 14809 2254 4061 2257 5118 14810 2866 4150 2867 4800 14811 2452 2410 2453 4379 14812 1951 558 1518 5256 14813 4624 5014 1612 5246 14814 3381 5020 4002 5483 14815 3867 4529 4419 5543 14816 1834 1203 1156 5090 14817 3952 3696 4608 4975 14818 1209 3968 1210 5340 14819 4025 3966 4910 5251 14820 2284 2282 2285 4855 14821 3077 4042 2269 5613 14822 698 4303 1446 4987 14823 663 4034 4784 5291 14824 2281 4429 3198 4945 14825 1728 930 929 4082 14826 1704 1150 4537 5176 14827 3709 4059 4024 5231 14828 4025 4060 3803 5232 14829 3159 2640 3207 5145 14830 2036 2035 4703 5056 14831 2490 3057 2676 5007 14832 819 815 814 4457 14833 3755 4054 4016 5092 14834 3706 4303 4119 5172 14835 4044 5152 619 5445 14836 4002 5047 3381 5483 14837 4137 4353 3720 5220 14838 2907 2906 3292 4009 14839 3988 4604 4553 4797 14840 1189 3980 5024 5405 14841 4081 4737 3794 4801 14842 1562 884 1714 4662 14843 4229 4610 1255 5283 14844 2250 2249 4311 4878 14845 4115 3924 5099 5409 14846 716 4070 4935 5339 14847 4311 4626 3677 5177 14848 3824 4626 4338 5177 14849 2389 2390 2391 4906 14850 1138 1140 1225 4645 14851 2884 4222 3143 5041 14852 3759 4055 4018 5422 14853 885 721 4050 5615 14854 359 5256 3931 5446 14855 3782 4929 4163 5597 14856 1618 4734 1038 5059 14857 944 4017 922 5512 14858 1409 1250 1738 4178 14859 4537 4807 3676 5458 14860 3904 4580 4478 5028 14861 857 856 855 4980 14862 2598 4525 2599 4618 14863 885 1803 5450 5529 14864 1607 5177 4192 5639 14865 4232 4353 3941 5100 14866 3284 4293 2702 4737 14867 3959 4761 3960 5010 14868 3987 3860 4410 5305 14869 1579 537 1578 4274 14870 863 862 4019 5558 14871 832 3961 4531 5082 14872 870 880 5204 5392 14873 4294 4935 3768 5339 14874 3865 5593 4247 5611 14875 3784 4405 4644 5414 14876 4009 4787 3292 5370 14877 3161 2837 3143 5041 14878 2314 2313 4505 5210 14879 2003 3441 3472 4709 14880 573 1928 4066 4862 14881 446 3923 4985 5311 14882 4088 3703 4469 5095 14883 2851 3971 3034 5183 14884 1318 3960 4894 5567 14885 3484 3517 3486 4862 14886 3821 4587 4170 4785 14887 3852 4680 4010 4960 14888 3696 4346 3965 4608 14889 1157 1694 1710 4746 14890 3299 4802 4693 5298 14891 3372 4974 3990 5281 14892 3873 5081 4489 5416 14893 3908 4881 4029 5017 14894 1860 3968 1209 5384 14895 3385 4022 4853 5589 14896 2121 2125 2122 4817 14897 3994 4627 4615 5638 14898 1538 4268 1747 4816 14899 2400 2474 2349 4805 14900 3319 4800 2867 5397 14901 3782 4707 4524 5189 14902 1148 4418 1149 4719 14903 2512 4340 2612 4864 14904 2142 2139 4020 5610 14905 3734 4322 4204 5125 14906 2406 2811 2558 5181 14907 4115 5099 4582 5409 14908 3956 4419 3867 4623 14909 3981 3791 4562 5285 14910 3154 3163 2712 4933 14911 3812 4993 4442 5564 14912 4080 4513 4616 5469 14913 3730 4438 4754 5569 14914 857 4413 856 4980 14915 641 1530 4455 5149 14916 1705 999 4932 5634 14917 4553 4604 3988 4813 14918 3758 4368 4094 5054 14919 4387 4398 3892 5491 14920 741 688 4211 5186 14921 1077 4813 1017 5638 14922 4026 4143 3785 5036 14923 3666 4144 4027 5037 14924 2431 3136 2430 4084 14925 2445 2447 2581 4090 14926 1648 990 1525 4087 14927 1115 1513 1675 4089 14928 1575 1711 1177 4093 14929 2502 2500 2499 4095 14930 2053 2051 2052 4099 14931 3861 4070 3998 5016 14932 3688 4563 4038 5342 14933 3753 4078 4071 5109 14934 3875 4558 4766 4815 14935 4122 4746 4273 5235 14936 2217 2229 4436 5185 14937 3951 4619 4528 4771 14938 730 4977 727 5512 14939 3059 2424 2370 5409 14940 804 4043 858 5122 14941 2971 3970 2417 5382 14942 2437 4314 2435 5212 14943 3974 4654 3712 4750 14944 2060 4998 4038 5471 14945 1213 1214 1030 5230 14946 1764 4197 1752 4899 14947 1764 1512 4201 4899 14948 3914 4666 4296 4992 14949 3706 3957 4294 4581 14950 3658 4345 4134 5244 14951 3954 1539 5176 5295 14952 3287 3969 3316 5201 14953 3870 5080 4242 5646 14954 3730 4438 4429 4816 14955 3296 2980 4490 4682 14956 3818 4337 4265 5432 14957 4441 4485 3829 5041 14958 2526 2647 2716 4590 14959 1667 3966 1452 5209 14960 2388 3965 2181 5208 14961 668 1080 4679 5585 14962 3784 4351 4939 5296 14963 1595 4374 1593 5034 14964 3978 4714 3812 4765 14965 3783 3979 4713 4764 14966 1319 580 4761 4860 14967 4017 4134 3658 5612 14968 3674 4778 4338 5632 14969 685 3967 677 5263 14970 3734 4740 4061 5357 14971 1764 1154 4197 4899 14972 1764 4201 769 4899 14973 4238 4694 3688 5342 14974 1667 1358 3966 5251 14975 2771 2774 2029 4306 14976 4001 4128 4951 5188 14977 3682 4989 4104 5090 14978 3982 4457 3681 4950 14979 2036 4699 2037 5056 14980 3914 4992 4665 5482 14981 4562 5169 3981 5285 14982 1328 1327 5015 5284 14983 3175 3032 3964 5307 14984 3349 2989 1986 4362 14985 3655 4695 4067 4747 14986 913 4052 1589 5310 14987 2716 4282 3206 5586 14988 3663 4579 4152 4776 14989 2636 4630 2468 5479 14990 1826 740 1673 4452 14991 745 744 746 4451 14992 3737 4906 4400 5349 14993 4087 5239 4260 5323 14994 4209 4635 3800 5470 14995 1927 1735 4492 5517 14996 2488 5137 4521 5453 14997 1891 4844 581 4925 14998 2568 2944 3266 5511 14999 2568 4453 2944 5511 15000 3736 4089 4606 5598 15001 3907 4248 4159 5511 15002 3614 563 1490 5048 15003 488 1543 413 5309 15004 393 324 3989 5033 15005 1449 4901 4028 5138 15006 917 4807 914 5458 15007 2598 3170 2597 4525 15008 4321 4631 3710 5145 15009 3513 3504 3448 4725 15010 3761 4817 4390 5570 15011 3782 4163 4524 4707 15012 3679 4503 4011 5246 15013 445 3405 438 4985 15014 4070 3998 4454 5181 15015 1871 3643 548 5096 15016 3736 4606 4582 5598 15017 4393 4504 3770 5094 15018 962 4242 1595 5034 15019 4744 4828 4000 5258 15020 2965 5194 4946 5446 15021 4362 4969 457 5530 15022 1285 1087 1329 5344 15023 1433 4144 1003 4806 15024 3898 4668 4370 4948 15025 2495 3211 4461 5168 15026 2224 3076 4819 5393 15027 4544 4954 4016 5621 15028 3762 4236 4835 5235 15029 931 4321 1186 4631 15030 3228 4322 2272 4630 15031 4005 5294 2608 5385 15032 3463 1701 579 4960 15033 4305 3721 5168 5618 15034 3913 4798 4492 5137 15035 3699 4144 4027 4551 15036 408 3533 3417 4112 15037 2993 4520 478 5266 15038 3214 4315 2609 4625 15039 3214 2221 4319 4625 15040 3342 2752 5079 5258 15041 1799 1181 4310 4627 15042 2573 5157 4580 5589 15043 4402 4486 3796 4802 15044 3913 4492 4445 5137 15045 1713 4938 1716 5395 15046 479 4920 542 5396 15047 3175 3964 4524 5307 15048 1327 1570 529 4360 15049 2824 3987 2822 5215 15050 4271 3725 4594 5519 15051 1785 5216 4035 5299 15052 1146 1723 4788 5227 15053 2549 4596 3271 5006 15054 3853 4512 4031 4938 15055 4024 4059 3709 4909 15056 3803 4060 4025 4910 15057 2846 2573 4580 5589 15058 3449 3520 4066 5525 15059 3681 4950 4058 5520 15060 3886 4828 4744 5258 15061 3981 5169 5089 5285 15062 3843 4139 4023 5132 15063 3829 4339 4222 5041 15064 3385 4022 3058 5020 15065 4012 5219 3925 5223 15066 854 4057 1820 5641 15067 1374 4166 1862 4868 15068 4036 4715 3921 4843 15069 1503 1683 1166 5002 15070 2763 4849 4790 5538 15071 2091 2090 4480 4768 15072 856 4413 959 4564 15073 927 1413 4611 5082 15074 862 5097 4019 5558 15075 3372 3990 4818 5281 15076 3675 4563 4033 4863 15077 536 413 1543 5309 15078 4229 4392 3678 5283 15079 710 707 709 5068 15080 3824 4859 4338 5613 15081 4183 3800 4732 5470 15082 836 834 1727 4811 15083 5267 5531 3660 5644 15084 2503 4169 2835 4681 15085 2530 2718 4001 4996 15086 1955 1317 415 4146 15087 456 3088 1986 4362 15088 3677 4593 4225 5415 15089 3951 4619 3930 4964 15090 3930 4619 3951 4771 15091 3452 4602 3494 4972 15092 794 795 4045 5373 15093 3650 4458 4672 5362 15094 4005 4414 3754 4812 15095 2321 5210 4373 5592 15096 716 898 4070 5339 15097 1302 4925 572 5057 15098 3502 3054 2016 4793 15099 2340 2343 2464 4954 15100 4642 3660 5531 5644 15101 4107 3838 4579 4776 15102 4073 4299 3749 4447 15103 1954 3992 1308 5230 15104 3260 4955 4004 5273 15105 3918 5164 4918 5388 15106 506 4520 3992 5266 15107 3702 4251 4230 5377 15108 4101 3718 4375 5066 15109 1417 1874 1208 5340 15110 3780 4588 4262 4783 15111 4034 4398 4387 5491 15112 1345 5019 3923 5311 15113 1369 4190 1842 4902 15114 4159 4248 3907 5174 15115 3923 1345 5311 5645 15116 2534 2546 4077 5389 15117 1018 964 1841 5207 15118 886 4186 887 4827 15119 1371 4190 1369 4902 15120 2129 4837 2137 5306 15121 3855 4471 4377 5272 15122 1683 1535 867 5002 15123 719 720 728 5350 15124 693 691 5000 5563 15125 2272 4630 4322 5357 15126 1371 1369 1370 4902 15127 1087 1285 1215 5343 15128 4122 4864 3144 5435 15129 3890 4824 4738 4875 15130 4183 4270 3665 5075 15131 374 4423 375 4820 15132 3755 4186 4054 5092 15133 781 782 779 4808 15134 3830 4126 4729 5611 15135 1288 1927 4492 5525 15136 717 718 705 4845 15137 2916 2556 2865 4561 15138 348 351 4000 4822 15139 2865 2564 3204 4561 15140 3964 3709 4909 4929 15141 2113 3135 3113 5140 15142 2937 2936 3252 5141 15143 1481 4184 767 4833 15144 2293 3986 2790 5124 15145 691 697 1830 4581 15146 3981 3806 4572 5234 15147 1584 1398 4245 4870 15148 3267 4551 2715 4603 15149 1371 1842 1369 4190 15150 710 709 4394 5068 15151 2393 5412 4775 5487 15152 3091 5166 4475 5430 15153 4022 5020 3385 5483 15154 3684 5170 4202 5393 15155 3960 5010 4727 5567 15156 4087 3732 5323 5499 15157 2220 3034 3971 5286 15158 3871 4601 3991 4903 15159 3517 1649 573 4862 15160 4946 5194 2965 5203 15161 4119 4915 2154 5001 15162 885 4050 721 5529 15163 805 1766 820 4204 15164 811 1531 803 4191 15165 1511 764 769 4201 15166 1757 1188 1186 4207 15167 2325 2323 3139 4195 15168 3117 2929 2988 4198 15169 1045 1044 984 4194 15170 2227 2928 2225 4202 15171 3228 2636 3229 4196 15172 2381 2383 2333 4205 15173 753 816 759 4200 15174 2584 2923 2583 4199 15175 1752 1764 1154 4197 15176 2640 3159 2383 4205 15177 3262 2636 3247 4196 15178 1685 643 661 4203 15179 1511 1512 1513 4201 15180 1245 1152 1648 4206 15181 1243 1242 1152 4206 15182 1780 820 1442 4204 15183 1154 1045 1636 4197 15184 1512 769 1764 4201 15185 2106 2104 2879 4215 15186 2047 2046 2048 4210 15187 1766 1439 1442 4204 15188 1665 661 1489 4212 15189 2104 2105 2103 4215 15190 2056 2057 2055 4214 15191 683 741 688 4211 15192 1688 1692 1161 4209 15193 2297 2395 2817 4216 15194 2108 3320 3179 4217 15195 1607 904 1059 4192 15196 811 818 1607 4192 15197 3143 2884 2128 4222 15198 2329 4092 2330 5603 15199 2775 3973 2995 5058 15200 2835 4995 4681 5485 15201 3363 3439 3398 4726 15202 3628 4359 3602 4360 15203 1536 4068 3601 4959 15204 949 948 1032 4220 15205 949 1040 1692 4220 15206 2432 4076 2603 5290 15207 2567 2609 2497 4847 15208 2566 2497 2496 4847 15209 1100 4785 4389 5282 15210 1935 1936 5543 5546 15211 1231 1040 1095 4894 15212 3538 4112 3457 4844 15213 1762 1674 1816 4408 15214 3921 4843 4715 5427 15215 2181 3965 4705 5208 15216 729 4835 936 5315 15217 541 1946 3479 4592 15218 4541 5211 2067 5519 15219 1160 1000 4275 4789 15220 4027 4496 3658 5384 15221 3979 4913 4455 5154 15222 3953 4560 5058 5297 15223 1296 4291 1924 4809 15224 4259 4446 3754 4872 15225 3913 4614 3995 5069 15226 3868 4767 4745 4907 15227 1167 4783 4392 5594 15228 3130 2630 4154 4927 15229 3111 3343 3422 3996 15230 2863 3991 4903 5051 15231 1515 1029 1659 4671 15232 622 619 4044 5193 15233 2748 5167 3376 5622 15234 902 903 818 5080 15235 617 619 5152 5445 15236 2036 2038 2037 4699 15237 1898 4780 534 5530 15238 4199 5114 3753 5308 15239 2840 2841 4548 5483 15240 1926 1924 4291 4809 15241 4265 4380 3818 5067 15242 4229 4350 3937 5002 15243 2727 3270 3277 5535 15244 3599 3604 3603 4003 15245 1507 4181 4530 5288 15246 1595 1594 4374 5034 15247 3992 5004 1954 5162 15248 487 485 4786 4994 15249 1722 5204 1257 5398 15250 4038 4763 3927 4998 15251 4253 3975 4986 5287 15252 3769 4136 4014 5205 15253 3797 4100 5031 5556 15254 3836 4277 4177 4968 15255 4228 4517 3926 4842 15256 2860 3214 2609 4625 15257 3214 3165 2221 4625 15258 2255 2263 2262 4626 15259 2269 2263 2270 4626 15260 1799 1820 1196 4627 15261 2522 4825 4429 5553 15262 4489 4519 3871 4733 15263 1734 1848 4492 5069 15264 1615 304 4716 4866 15265 4671 4892 3839 4946 15266 1540 1898 534 5530 15267 1672 4243 1326 5284 15268 1501 304 353 4716 15269 3734 4630 4322 5125 15270 3767 4148 4030 5413 15271 3757 4173 3961 4874 15272 2794 2994 3410 4665 15273 3931 361 5194 5383 15274 2528 2529 4615 4697 15275 3853 4127 4035 4591 15276 3895 5233 4500 5271 15277 1237 1473 1378 5259 15278 3672 5204 4488 5392 15279 4017 3742 4134 5515 15280 4050 721 5529 5615 15281 4283 4402 3837 5207 15282 2709 3131 3132 4131 15283 2821 2779 2820 4132 15284 1890 4716 557 4822 15285 4486 3913 4802 5137 15286 4401 4590 3894 5217 15287 910 4052 913 5197 15288 3476 4145 3473 5224 15289 2605 2366 4176 4692 15290 1429 4136 1797 4984 15291 2262 4042 3077 5415 15292 4479 4660 1933 5419 15293 3897 4147 4009 5146 15294 4301 4730 1292 5009 15295 2841 5047 4548 5483 15296 4102 4330 3777 5378 15297 3605 4140 3545 4981 15298 1047 1046 933 4749 15299 814 1470 1745 4457 15300 3803 4880 4185 5605 15301 2217 2230 2229 5185 15302 3748 5156 4369 5337 15303 3743 4497 4364 5537 15304 3882 4007 4628 5318 15305 4071 4668 3898 4948 15306 3749 3981 4586 5234 15307 3979 4713 4073 5154 15308 4283 4402 3805 5243 15309 4350 4965 3687 5423 15310 1607 1531 5177 5639 15311 2636 3228 2468 4630 15312 1185 931 1186 4631 15313 1186 1188 1187 4631 15314 2273 3228 2272 4630 15315 1113 1045 1154 4632 15316 643 646 661 4633 15317 1045 1112 1044 4632 15318 1188 1486 1485 4634 15319 661 1510 1489 4633 15320 1486 1489 1488 4634 15321 1692 1040 1801 4635 15322 1692 1163 1161 4635 15323 1944 1600 1940 4907 15324 2341 2393 4775 5487 15325 2181 4705 2376 5208 15326 1372 1020 4657 5358 15327 3243 4063 5169 5199 15328 3945 4417 4274 5410 15329 757 755 756 5070 15330 4372 4930 3887 5165 15331 937 939 938 4932 15332 3655 4695 4187 5167 15333 3995 4614 3913 4693 15334 3720 4137 4014 4504 15335 4014 4136 3770 4504 15336 2219 2223 4819 5376 15337 3474 1945 3530 4145 15338 4222 5041 3756 5306 15339 447 448 4075 4628 15340 323 3333 382 4280 15341 474 3950 4690 5218 15342 3510 3450 3512 4767 15343 553 467 1526 4533 15344 804 4869 4043 5122 15345 3150 2545 2469 4697 15346 3857 3983 4949 5065 15347 4015 2460 4896 5226 15348 1792 4346 720 4975 15349 3918 4301 3999 4508 15350 2949 4013 3141 5380 15351 4081 3701 4252 5568 15352 4002 3841 4700 4862 15353 4117 5296 3784 5373 15354 1779 1240 1771 5132 15355 3476 4726 5224 5279 15356 3850 4670 3988 4697 15357 4097 3718 5112 5326 15358 4013 4135 3690 5408 15359 841 5053 4685 5476 15360 2258 2932 3215 4986 15361 2849 3158 4368 5378 15362 2955 2956 5542 5592 15363 2276 4058 2271 5596 15364 4404 5024 3980 5405 15365 2800 2801 4278 4985 15366 2553 2552 4170 4723 15367 4358 4648 3948 4817 15368 878 879 969 4491 15369 3027 3441 4709 5173 15370 3624 3622 3620 4064 15371 2398 2373 2831 4733 15372 3175 4524 3964 4958 15373 589 4527 590 5422 15374 3763 4651 4029 4881 15375 3471 3465 4010 5018 15376 4422 4741 2332 5604 15377 3330 4996 4598 5250 15378 1605 3453 3459 4250 15379 3921 4174 4104 5440 15380 3612 3551 3615 4130 15381 1740 4160 1791 4893 15382 2400 4499 2474 4805 15383 3875 4974 4146 5343 15384 4100 5110 4264 5325 15385 2331 2330 4476 5603 15386 3849 4918 5164 5388 15387 4143 4309 3798 4770 15388 1558 861 866 4138 15389 1671 1566 644 4135 15390 1668 1797 1429 4136 15391 4101 4556 926 5338 15392 4345 4676 3661 5244 15393 1432 5023 3976 5441 15394 2606 3221 3227 4139 15395 3469 3468 3436 4006 15396 3831 4529 4645 5543 15397 3070 4648 2121 5301 15398 3847 5091 4112 5173 15399 2355 2475 2354 4235 15400 2754 3346 3425 3989 15401 3713 4958 4525 5514 15402 3727 5002 4179 5540 15403 4098 3779 5025 5148 15404 483 484 4966 5309 15405 1600 4121 1940 4907 15406 3994 4887 4697 4921 15407 3686 4092 4491 5341 15408 3153 2608 3011 4465 15409 2253 2252 2254 4552 15410 4185 4264 3803 5031 15411 909 911 4731 5619 15412 3986 4971 3915 5053 15413 2501 2630 2611 4989 15414 3432 3486 4002 5020 15415 4297 4741 3145 5329 15416 3759 5110 4527 5422 15417 732 4137 723 5100 15418 1446 4303 1762 5094 15419 3732 4139 4023 4509 15420 579 3443 3463 4960 15421 3414 2017 2967 4051 15422 3750 4502 4420 5225 15423 2757 3356 4930 5040 15424 1378 1473 1474 5259 15425 1705 939 937 4189 15426 1173 1281 4666 4992 15427 4017 3658 4999 5612 15428 3509 4745 4040 4865 15429 3909 4436 4129 5573 15430 1238 1352 1736 4562 15431 703 698 1446 4987 15432 732 723 712 5100 15433 1681 4229 1255 5283 15434 4340 4906 3737 5208 15435 2742 3373 4918 5164 15436 1003 4806 4144 5585 15437 413 4738 484 5309 15438 3471 3465 3442 4010 15439 854 1572 852 5641 15440 2522 3198 4429 4825 15441 4124 4550 3821 5006 15442 3302 4669 4357 5468 15443 849 796 780 4624 15444 4524 4707 3740 5189 15445 1337 4068 1536 4959 15446 1054 1805 4060 5582 15447 766 768 4030 5257 15448 4744 5050 3886 5258 15449 3156 2612 4340 4864 15450 4223 4341 3652 4976 15451 1850 4486 1841 4798 15452 3983 4541 3725 5211 15453 3338 3300 3419 4828 15454 1345 3923 5019 5645 15455 3093 5163 3202 5626 15456 1047 1050 4494 5480 15457 1781 4310 1780 5125 15458 4481 3694 5049 5439 15459 447 4628 4075 4985 15460 3929 5027 4241 5347 15461 2775 2776 3973 5297 15462 544 423 1563 4108 15463 4334 5085 3745 5140 15464 3907 4754 4438 5569 15465 3244 2633 3153 4465 15466 321 369 352 4871 15467 2613 4511 2624 4774 15468 3582 3572 3581 4804 15469 1768 4545 1242 4689 15470 4259 4775 2393 5412 15471 4257 4961 4090 5322 15472 1673 1857 4452 4943 15473 3799 4143 4026 4495 15474 4027 4144 3699 4496 15475 3066 3348 1984 5079 15476 3713 3984 4525 5227 15477 1773 630 1772 4867 15478 4292 4739 3892 5117 15479 3961 833 5174 5493 15480 3679 4503 4041 5300 15481 3954 4997 1707 5295 15482 3766 4327 4207 5141 15483 4203 4323 3783 5140 15484 4212 4334 3802 5141 15485 3802 4334 4212 5140 15486 2480 4396 4109 5526 15487 3789 4526 4155 4971 15488 3070 2125 2121 4648 15489 4125 4809 3655 5609 15490 853 1532 854 5264 15491 1680 4468 5087 5578 15492 463 4241 480 4904 15493 1039 1086 1218 5057 15494 2902 2814 4836 5559 15495 3899 4895 4182 5248 15496 1927 573 1928 4066 15497 3977 4656 3806 4713 15498 4044 622 5193 5445 15499 1832 4420 5025 5576 15500 3189 3137 4153 5005 15501 2704 4153 3137 5005 15502 2869 3997 2022 4871 15503 2394 4072 2514 5412 15504 852 4638 4503 5246 15505 811 1607 1531 5177 15506 2387 3208 4588 5551 15507 3855 3970 4471 5272 15508 3998 5016 4386 5456 15509 969 4491 4110 5475 15510 4034 3892 4398 5491 15511 885 4050 5277 5615 15512 3204 2614 5076 5368 15513 4266 5066 4101 5321 15514 1832 1835 4420 5576 15515 3594 1601 531 4522 15516 3843 4023 4139 5527 15517 3142 3138 4333 5103 15518 4001 4951 4428 5188 15519 3178 2495 3211 4461 15520 885 5450 4050 5529 15521 3695 4829 5443 5477 15522 981 4539 982 5269 15523 4228 3740 4707 5189 15524 433 472 3992 5162 15525 3839 4946 4056 4957 15526 3142 4342 2401 5103 15527 4234 4489 3871 4733 15528 2032 3959 2772 5134 15529 1713 757 761 4938 15530 3838 4489 4234 4733 15531 3839 4382 4109 4396 15532 1387 966 1089 4151 15533 3723 4573 5219 5630 15534 3793 4715 4843 5427 15535 2591 4469 3106 4911 15536 4389 4785 1099 5404 15537 719 915 1740 4160 15538 4002 5020 4290 5483 15539 3955 4513 3874 4832 15540 4033 4559 3675 5222 15541 2231 4287 4356 5573 15542 1122 1121 4968 5093 15543 4112 5033 3847 5173 15544 4035 4591 4116 5490 15545 2993 419 478 4520 15546 1732 1244 4236 4739 15547 4087 5323 4260 5499 15548 4526 4937 4155 4971 15549 1095 1040 1032 4220 15550 3831 4529 4419 5026 15551 3654 4479 4022 4660 15552 4227 5022 1847 5032 15553 4261 5054 4094 5324 15554 4018 4055 4806 5422 15555 3941 5100 4394 5277 15556 1318 5567 4761 5624 15557 4109 5526 4509 5527 15558 1438 4549 1437 4922 15559 1926 4291 1924 5158 15560 1027 4383 1038 5059 15561 3882 4628 4075 5318 15562 3756 4668 4071 4948 15563 4232 4353 3792 4589 15564 2619 2600 2602 4618 15565 3877 4521 4798 5130 15566 937 4189 4932 5315 15567 2689 4501 3211 5168 15568 1931 1388 1929 4700 15569 2093 2095 4650 5317 15570 1926 4809 4291 5158 15571 3708 4516 4089 5014 15572 4046 4536 4168 5436 15573 1982 3514 3492 4617 15574 1416 710 1450 4613 15575 2850 4306 2774 5429 15576 3105 3106 2591 4469 15577 1524 1214 4227 4967 15578 1072 4408 4473 4984 15579 1803 1313 1749 4470 15580 754 750 1686 4712 15581 752 847 1686 4712 15582 3363 3439 4726 5178 15583 537 1877 1798 4064 15584 4300 4374 3652 4976 15585 939 4189 1705 4932 15586 937 4189 939 4932 15587 2280 2282 4874 5511 15588 4114 4304 3667 5198 15589 1027 970 5008 5619 15590 3930 4414 4005 5411 15591 4431 4696 3963 5362 15592 4716 4744 4000 4822 15593 3841 4862 4066 5517 15594 726 4069 725 5102 15595 3961 3757 4874 5336 15596 1153 4460 1065 4812 15597 2185 2916 2158 4142 15598 470 5162 4978 5266 15599 1487 4207 5488 5635 15600 3789 4155 4467 5182 15601 3729 4757 4069 5102 15602 1864 1201 4026 5366 15603 2814 4025 2562 5365 15604 1673 637 1857 4943 15605 4164 4882 3893 5045 15606 3679 4041 4503 5599 15607 2344 4100 2044 5575 15608 788 787 785 5377 15609 1792 4346 4975 5186 15610 2600 2598 4525 4958 15611 2675 4580 5028 5533 15612 1597 4412 312 5313 15613 4120 4664 3870 4834 15614 3891 4293 4737 4801 15615 3673 4341 4223 4976 15616 605 4332 603 4988 15617 447 4075 448 5583 15618 377 1555 375 4423 15619 3447 4040 3509 4907 15620 796 4164 781 4808 15621 3413 4978 2975 5139 15622 1646 4034 663 5291 15623 2484 2400 4342 4805 15624 732 952 4137 5205 15625 4305 4693 3721 5618 15626 4494 4749 3801 5251 15627 3899 4923 4895 5248 15628 3820 4333 4209 5103 15629 1335 4249 1334 4902 15630 3089 4772 515 5494 15631 3851 4871 3997 4887 15632 2640 4327 3207 5145 15633 3501 524 3448 4575 15634 1597 312 543 5313 15635 1230 4719 5600 5623 15636 3162 5262 3219 5273 15637 3610 3609 3551 4124 15638 565 1519 1465 4751 15639 553 414 467 4533 15640 3875 4146 3990 5344 15641 4220 4342 3819 5103 15642 2155 2159 2160 5001 15643 3181 2039 4699 5575 15644 3033 3964 4909 5514 15645 3847 3989 4925 5057 15646 4142 3781 4352 4710 15647 3297 4824 2762 5184 15648 4097 4825 2720 5553 15649 2524 2460 4015 5226 15650 3024 2393 4259 4775 15651 3756 3967 4668 5263 15652 1404 589 4055 5200 15653 4346 4608 3696 4975 15654 1734 1848 1735 4492 15655 3433 2926 3524 4791 15656 3756 4370 4668 4948 15657 3176 2124 2137 4071 15658 3812 4246 3978 4501 15659 1184 1185 4714 5503 15660 3439 3475 3398 4726 15661 2222 4261 3071 5054 15662 4021 4876 4138 5304 15663 3318 2663 3320 4143 15664 1261 1003 1433 4144 15665 2897 4877 3345 5467 15666 1921 4994 4108 5388 15667 2384 2385 2298 4937 15668 3470 3478 4125 4823 15669 3506 4083 5021 5111 15670 4081 3701 4237 4663 15671 3074 404 1992 4849 15672 3956 4419 5524 5543 15673 3283 4908 3222 5217 15674 4207 4327 3766 5145 15675 4001 3834 4128 5188 15676 4580 5533 2846 5589 15677 2976 3421 4062 4886 15678 3671 4460 4005 4812 15679 4300 4834 3044 5602 15680 3215 4253 4986 5287 15681 4389 4464 3724 5404 15682 4304 4961 3692 5425 15683 3299 4693 2921 5298 15684 1937 1226 1613 5093 15685 778 1697 1703 4538 15686 521 4008 444 4720 15687 978 4255 1687 5348 15688 1959 4007 1346 5583 15689 2004 438 3405 4985 15690 4148 4833 4030 5413 15691 2921 4305 2555 4693 15692 2184 4014 2635 5220 15693 2113 4323 3135 5140 15694 2113 3113 4334 5140 15695 2936 4334 3252 5141 15696 2937 4327 2936 5141 15697 3744 4356 4287 5510 15698 3880 4708 4363 5101 15699 3589 3591 3593 4703 15700 942 1494 5293 5390 15701 4047 4169 3724 5485 15702 4047 3724 4170 5485 15703 3816 4846 4959 5580 15704 2375 3972 2972 5349 15705 3980 4571 5405 5564 15706 2711 3168 4616 5604 15707 447 438 4628 4985 15708 4516 4606 4089 5598 15709 3711 4554 4136 4984 15710 2427 2921 4693 5298 15711 3747 4174 4154 5628 15712 4242 4367 3870 5034 15713 451 450 4963 5038 15714 3401 2542 4120 4856 15715 4773 4839 3883 5459 15716 3324 5247 2719 5250 15717 2427 3299 2921 5298 15718 2966 2964 2969 4056 15719 4129 4624 3919 5014 15720 1128 1484 1474 5109 15721 3855 3995 4548 5332 15722 3952 3776 4608 5627 15723 3767 4833 4148 5413 15724 560 481 491 4769 15725 608 609 610 4563 15726 4445 4492 3877 5137 15727 3813 5077 4506 5461 15728 4045 4552 3730 4644 15729 3305 3564 1991 5143 15730 977 1359 1431 5405 15731 3688 4694 4238 4898 15732 2516 2624 4511 5287 15733 2375 4705 3972 5349 15734 4038 4998 4659 5471 15735 4492 4798 3877 5137 15736 2474 4805 4499 5593 15737 692 693 691 5000 15738 4338 4859 3674 5632 15739 785 1754 788 4922 15740 2467 4237 2520 4737 15741 3274 4289 3121 4704 15742 3713 4493 4024 5514 15743 2563 5249 4607 5334 15744 4083 4793 3518 5021 15745 3827 4428 4048 4698 15746 2619 2918 4524 5189 15747 2175 2404 2184 4448 15748 991 4961 4165 5581 15749 3664 4810 4513 5028 15750 939 1705 999 4932 15751 1620 1883 4672 5362 15752 1133 1132 1134 4546 15753 4214 4857 2054 5478 15754 1060 4835 4189 5315 15755 3301 3292 2909 4447 15756 3330 2728 4079 4996 15757 2385 4937 2384 5628 15758 884 1782 5152 5448 15759 3797 4185 4264 4880 15760 4231 4352 3938 5001 15761 1497 1785 4035 5299 15762 2727 3324 3317 4598 15763 1696 4230 1386 4873 15764 3651 4973 4782 5241 15765 2005 441 3079 5218 15766 4128 4759 3651 4951 15767 792 1386 790 4939 15768 3652 4976 4341 5602 15769 1976 4587 2787 5135 15770 3516 3494 3497 4979 15771 3907 3961 4248 4874 15772 988 4382 986 5496 15773 1928 4066 4862 5517 15774 563 3614 3563 5048 15775 2391 2451 3156 4906 15776 874 4542 4262 5488 15777 2149 2145 2143 5155 15778 4177 4277 3836 4858 15779 2226 4059 3076 5393 15780 1119 4110 5331 5475 15781 3787 4471 4377 5196 15782 3967 685 5109 5263 15783 1199 1805 4880 5605 15784 1054 4687 1055 5582 15785 3809 4532 3974 4654 15786 843 1751 4536 5576 15787 2487 2804 4695 5516 15788 3968 3658 4854 5384 15789 1353 4227 1847 5032 15790 4355 4790 3997 4849 15791 3082 4847 4315 5548 15792 1318 3960 5567 5624 15793 4391 4787 3897 5319 15794 3900 4253 4186 4928 15795 2071 4271 4594 5519 15796 4032 4411 3744 5045 15797 529 1536 1337 4068 15798 2011 2036 2035 4703 15799 4204 4667 3734 5206 15800 3688 5342 4694 5545 15801 4194 5086 3697 5496 15802 2716 3104 2526 4114 15803 4377 4461 3855 5272 15804 4164 4356 3744 4808 15805 605 740 607 4988 15806 1938 564 1939 4083 15807 4279 5395 1496 5560 15808 3689 4310 4196 5125 15809 2483 2728 2667 5399 15810 2130 4222 4837 5306 15811 4033 3675 4559 4563 15812 3833 4615 3994 5561 15813 3824 4235 4365 4859 15814 3723 4573 4012 5219 15815 3713 4722 3984 5063 15816 3720 4353 4137 5100 15817 3950 3862 4759 4886 15818 951 852 1572 5641 15819 3743 4845 4111 4893 15820 4280 3928 4820 5313 15821 3436 4006 3468 5018 15822 3755 4251 4230 4991 15823 2847 2846 5533 5589 15824 3726 4388 4169 4681 15825 3451 3054 3502 4793 15826 4067 4149 3655 4747 15827 947 1033 946 4152 15828 3805 4402 4283 5207 15829 1446 1762 1816 5094 15830 935 1503 4783 5002 15831 4018 4806 4055 5585 15832 2154 2155 4119 5001 15833 1002 1001 1000 5039 15834 903 1023 1596 5080 15835 3661 4395 4026 4495 15836 3819 4560 3953 5180 15837 4125 1942 5158 5609 15838 3585 2019 4459 5192 15839 4290 5020 4022 5483 15840 1447 1448 1212 5271 15841 4175 5088 3792 5588 15842 2219 2931 2215 4148 15843 1929 533 1931 4290 15844 3818 4274 4064 5432 15845 2226 4878 4059 5393 15846 4170 4389 3814 4723 15847 4269 3897 4469 5319 15848 4023 4509 4139 5527 15849 3878 4780 4241 5347 15850 4238 4518 3688 4898 15851 3709 4059 4184 4819 15852 3826 4138 4021 5574 15853 3549 3602 3600 4068 15854 1564 3452 1627 4602 15855 2712 2624 4511 4774 15856 2053 4099 5121 5555 15857 3749 4073 4447 4934 15858 658 1646 657 4799 15859 3136 4084 2431 5548 15860 2430 4084 3136 5549 15861 1525 1648 4087 5552 15862 1130 1657 4088 5550 15863 3208 2326 4086 5551 15864 2523 4097 2720 5553 15865 2859 4100 2344 5556 15866 2053 2051 4099 5555 15867 4513 4810 3874 5028 15868 4063 5169 4562 5285 15869 2392 4540 4256 5505 15870 599 4543 4263 5507 15871 3134 4541 4258 5506 15872 2859 5031 4100 5556 15873 1173 1338 1281 4992 15874 4386 4830 1356 5344 15875 2339 2340 4735 5487 15876 4232 5277 3729 5615 15877 2980 2305 2306 4490 15878 3317 3330 4598 5250 15879 4003 4846 4281 5282 15880 3766 4207 4634 5141 15881 4203 3783 4633 5140 15882 4212 3802 4634 5141 15883 3802 4212 4633 5140 15884 4520 4758 3992 5266 15885 930 1728 967 4916 15886 1693 1710 4718 5333 15887 3756 4718 4339 5263 15888 3824 4859 4365 5080 15889 3877 4798 4521 5137 15890 3144 5060 4122 5435 15891 1924 1923 568 4291 15892 1743 4676 5244 5512 15893 3878 4780 4362 4904 15894 2337 4600 2173 5131 15895 2000 3025 3547 5106 15896 4782 4973 3943 5241 15897 3196 4247 2920 4950 15898 3400 1977 3431 4832 15899 2919 3014 4842 5129 15900 2573 2478 4580 5157 15901 3828 4385 4138 4691 15902 3808 4562 3981 4572 15903 2894 4721 4393 5501 15904 3806 4934 4073 5234 15905 1927 4066 1928 5517 15906 4104 4989 3921 5090 15907 3053 2261 4878 5542 15908 4159 4248 3752 5148 15909 506 4520 507 4769 15910 4189 4746 1060 5634 15911 4383 4384 3673 4976 15912 3891 4237 4081 4737 15913 3599 3603 3567 4003 15914 3665 4270 4183 4879 15915 2808 2832 4063 5169 15916 3598 3599 3567 4959 15917 455 3089 515 5494 15918 855 1612 1115 4980 15919 3891 4238 4694 4898 15920 2105 4215 5133 5199 15921 4179 4316 3727 5540 15922 3727 4262 4086 4588 15923 3791 3981 4586 5089 15924 3981 3749 4586 5089 15925 4539 5071 3942 5269 15926 3740 4013 4557 4618 15927 3971 4245 4158 5115 15928 3721 4693 4614 5618 15929 3802 4634 4569 5441 15930 852 851 4638 5246 15931 4072 4259 3754 5294 15932 3714 4357 4263 4943 15933 3402 2676 3057 5178 15934 3792 4232 4838 5579 15935 4614 4693 3995 5618 15936 3796 4190 3987 4902 15937 3761 4739 4292 5117 15938 4166 4868 1374 5278 15939 3744 5451 4808 5510 15940 3982 4740 4247 4950 15941 4627 5641 4642 5644 15942 719 915 4160 5350 15943 3342 4828 2753 5258 15944 2436 4314 2497 4847 15945 2497 4315 3082 4847 15946 2450 4228 2919 4842 15947 1422 1973 1423 5509 15948 2247 4552 4405 4644 15949 3889 4227 4769 5230 15950 3689 4553 3988 4813 15951 3900 4253 4928 4986 15952 635 4462 636 5012 15953 3479 3445 541 4592 15954 1779 1242 1768 4545 15955 1353 4967 4227 5032 15956 1320 5138 4860 5567 15957 3891 4737 4081 4801 15958 3919 5014 4624 5246 15959 4115 4413 3924 5495 15960 510 1965 1888 4008 15961 4366 3733 4768 5630 15962 3244 2336 3230 5062 15963 4194 4632 1044 5552 15964 4038 4559 3675 4563 15965 1831 1320 1232 5138 15966 4097 5112 4265 5326 15967 3740 4557 4037 4618 15968 4053 4965 2317 5423 15969 2076 2077 2075 4528 15970 4454 4915 2168 5535 15971 3744 4808 4356 5510 15972 3940 4361 4069 4757 15973 939 957 938 4932 15974 1450 4613 4394 5277 15975 2280 3193 2282 5511 15976 2280 2278 2568 5511 15977 3918 4952 4508 5472 15978 1335 1334 1369 4902 15979 3359 1994 3089 4772 15980 3770 4015 4408 4984 15981 1918 566 4241 5347 15982 4444 4795 3851 4871 15983 3797 5031 4185 5556 15984 3088 4362 500 4904 15985 1623 1396 4094 4997 15986 2410 4379 2451 4906 15987 3923 4459 4278 5019 15988 3629 4130 3543 5289 15989 3983 2064 4949 5222 15990 2637 4641 2874 4955 15991 3470 4125 3477 5158 15992 3539 1871 1855 5142 15993 999 4275 958 4932 15994 2494 3241 4266 5066 15995 1733 705 4430 5305 15996 2898 5195 4877 5467 15997 3855 5272 4461 5332 15998 1828 4302 1314 5406 15999 3849 4296 4666 4992 16000 2555 4305 2689 5168 16001 907 905 962 4242 16002 1430 4532 977 4655 16003 4000 4674 3653 4716 16004 902 4365 903 5080 16005 4013 5238 4135 5408 16006 3154 4427 2230 5185 16007 4376 4413 3736 4980 16008 3925 5012 4462 5630 16009 1626 390 301 4276 16010 1679 826 4288 4754 16011 1595 4664 1915 5034 16012 3652 4300 4834 5034 16013 3793 4715 4036 4843 16014 2116 2118 2117 4647 16015 1179 1560 4964 5411 16016 2416 2470 4402 5243 16017 4028 4901 4773 5138 16018 3764 4158 4632 4847 16019 4158 3746 4632 4847 16020 4521 4798 3837 5137 16021 645 1124 647 4713 16022 1625 1811 1760 4714 16023 2223 4819 4202 5393 16024 3748 4369 4258 4911 16025 4017 4999 4134 5612 16026 2575 4277 3078 4858 16027 3234 4041 4829 5267 16028 837 840 4536 5436 16029 3721 4614 3995 5618 16030 4042 4177 3828 5481 16031 3652 4976 4374 5008 16032 4042 4597 3677 4626 16033 3824 4597 4042 4626 16034 942 5293 4446 5390 16035 895 896 718 4430 16036 1252 1251 961 5421 16037 1947 3446 3513 4725 16038 3022 4877 344 5003 16039 3937 4783 4588 5474 16040 4440 4554 3116 5254 16041 1392 1393 1119 5331 16042 3729 5277 4050 5615 16043 3998 4766 3823 4815 16044 3342 2752 2009 5079 16045 3688 4033 4559 4563 16046 3750 4252 4954 5292 16047 4037 5228 4557 5403 16048 3365 4065 3491 5303 16049 2566 2567 2497 4847 16050 1176 1717 670 5147 16051 2497 4314 2496 4847 16052 2609 4315 2497 4847 16053 1657 1131 4269 5550 16054 626 4942 4619 5375 16055 2689 2555 2792 4305 16056 917 1704 914 4807 16057 432 463 480 4904 16058 998 4517 1469 5074 16059 1287 4492 1848 4798 16060 3839 4418 4957 5577 16061 4321 4631 931 5503 16062 676 1693 4718 5333 16063 3809 4404 3980 5405 16064 4026 4395 3799 4495 16065 2025 3524 4791 4792 16066 2500 4937 2385 5628 16067 3690 3984 4577 5108 16068 3984 3678 4577 5108 16069 1825 1316 1198 5004 16070 2377 4879 2275 5321 16071 1416 1753 1110 4240 16072 3831 4487 4419 5524 16073 3652 4834 4300 5602 16074 2514 4072 2394 5294 16075 3683 4043 4225 4385 16076 1567 4816 1568 5098 16077 3978 4501 4246 5168 16078 806 886 887 4827 16079 3161 4441 5041 5435 16080 1079 5205 953 5394 16081 3548 3584 3635 4701 16082 1752 4899 4197 5532 16083 2478 2846 2573 4580 16084 2710 3145 4297 4741 16085 2883 5060 3144 5435 16086 4014 4393 3720 4504 16087 3770 4393 4014 4504 16088 701 4975 4717 5186 16089 3270 2168 4915 5535 16090 3874 4832 4513 5533 16091 1417 4576 1871 5096 16092 3907 4438 4945 5569 16093 4086 4262 3727 5540 16094 3971 4030 4870 5257 16095 340 4877 339 4891 16096 4058 4732 3800 4805 16097 3878 4118 4742 5368 16098 3799 4657 4175 5088 16099 3951 4942 4619 4964 16100 4031 4511 3765 5316 16101 3865 4732 4058 4805 16102 1308 3992 4769 5230 16103 3925 4768 5012 5630 16104 4207 3766 4631 5145 16105 3820 4209 4635 5103 16106 4112 4925 3847 5033 16107 1909 4592 5130 5276 16108 413 484 488 5309 16109 3659 5030 4407 5107 16110 1973 4637 1423 5509 16111 4154 4174 4104 4989 16112 3432 3486 3488 4002 16113 4220 3819 4635 5103 16114 458 500 4362 4904 16115 1907 1974 540 4355 16116 2648 4615 2529 4921 16117 3826 4297 4021 5329 16118 1587 560 491 4769 16119 4106 5000 4165 5581 16120 2546 2795 2798 5389 16121 3447 3511 3509 4040 16122 2340 4954 2464 5621 16123 2324 2323 4195 4965 16124 564 1939 4083 5111 16125 625 5219 4012 5223 16126 4031 5104 4511 5316 16127 5010 5459 4727 5567 16128 3977 4403 3802 4567 16129 3802 4403 3976 4569 16130 3980 4404 3809 4571 16131 3809 4404 3976 4570 16132 3715 4700 4002 5047 16133 2689 3259 3211 4501 16134 3259 2861 2133 4501 16135 3769 5205 4105 5394 16136 3984 4525 3690 4577 16137 2410 2391 2409 4906 16138 1507 5288 4530 5457 16139 3993 4117 3702 5084 16140 4169 4388 3726 4687 16141 348 4000 388 5079 16142 4773 4901 3883 5138 16143 3671 4005 4460 5240 16144 3658 4134 4017 5244 16145 954 898 4070 5016 16146 3953 5150 1397 5180 16147 3209 3617 3557 5135 16148 3780 4588 4783 5474 16149 3867 3956 4623 4972 16150 1926 5158 1942 5609 16151 458 460 463 4780 16152 874 4262 4542 5540 16153 2390 2409 2391 4400 16154 3288 4402 2470 4802 16155 4003 4622 4281 5356 16156 441 4062 469 5218 16157 1548 5029 1549 5241 16158 3934 4224 4165 4890 16159 3938 4352 4231 5068 16160 3976 4403 3786 4570 16161 3786 4403 3977 4568 16162 3976 4404 3766 4569 16163 3766 4404 3980 4566 16164 4250 5091 3847 5173 16165 3931 5194 4051 5383 16166 3690 4135 4013 4557 16167 2588 2590 2589 5319 16168 3196 2705 2920 4247 16169 1687 4539 4255 5532 16170 3690 4557 4013 4618 16171 2390 4400 2391 4906 16172 1849 4464 1427 5476 16173 3789 4168 4595 5182 16174 3962 3807 4724 5633 16175 1450 4394 711 5277 16176 4186 4928 4253 5293 16177 3291 3296 2980 4490 16178 4485 4746 3825 5634 16179 3690 4037 4557 4618 16180 3705 4541 4091 4629 16181 4025 4910 4494 5251 16182 3790 4299 4009 5449 16183 2059 2941 2192 4908 16184 1007 5025 4159 5493 16185 2808 3243 2832 5169 16186 3652 4223 4976 5008 16187 4459 4673 3923 5645 16188 3937 5085 4392 5474 16189 3799 4897 4309 5358 16190 3919 4980 4089 5014 16191 4084 4539 3685 4640 16192 1561 1645 4172 4964 16193 1778 4264 1777 4880 16194 3987 4684 3860 4755 16195 3977 4568 3806 4656 16196 3976 4570 3786 4655 16197 3808 4572 3981 4658 16198 3786 4568 3977 4656 16199 3809 4570 3976 4655 16200 3981 4572 3806 4658 16201 3798 4309 4143 4897 16202 767 4833 4184 5413 16203 2409 2391 4400 4906 16204 957 4399 938 4932 16205 1989 3246 3329 5035 16206 3279 4098 3203 5607 16207 3289 2985 2786 5255 16208 2401 4342 2400 4805 16209 2987 4429 3198 4825 16210 2608 5240 4005 5385 16211 1648 1117 4605 5552 16212 4152 4579 3838 4776 16213 3759 4133 4018 4699 16214 3385 5303 4022 5589 16215 3662 4044 5193 5445 16216 3923 4673 4459 5019 16217 673 4784 670 5147 16218 3947 5119 5199 5497 16219 3901 4268 4429 4825 16220 3783 4455 3979 4650 16221 2763 3358 4849 5538 16222 903 4365 1023 5080 16223 992 4165 991 4961 16224 4036 4238 3688 5342 16225 3745 4392 5085 5474 16226 1157 1060 4746 5634 16227 3848 4726 4384 5608 16228 4078 4668 4071 5109 16229 3688 4559 4038 4563 16230 2275 2267 4270 4879 16231 4304 4612 3667 5322 16232 4000 4822 4744 5050 16233 3835 4661 4930 5572 16234 3364 3521 3469 4823 16235 3660 5300 4011 5531 16236 2589 2692 2691 5089 16237 3036 2589 2590 5089 16238 3901 4429 4268 4816 16239 3695 4204 4549 5477 16240 472 5162 470 5266 16241 3094 4398 4750 5117 16242 1582 1725 4788 4929 16243 4775 4954 3701 5568 16244 2093 4650 2091 5317 16245 2535 2534 2659 4534 16246 1666 412 1641 4381 16247 3809 4442 3974 4532 16248 2774 2850 3018 4306 16249 3391 4865 3008 5021 16250 3215 3199 2943 4986 16251 616 617 5152 5445 16252 2557 2565 2564 4118 16253 2842 2840 4853 5483 16254 2150 2154 2155 4119 16255 3694 4484 4439 5049 16256 4225 4691 3828 5407 16257 4016 4054 4675 5092 16258 4384 4976 3848 5608 16259 3663 4152 4077 5513 16260 3209 1976 2787 5135 16261 3953 4701 3973 5058 16262 3744 4371 4287 4848 16263 2521 3284 2702 4737 16264 3411 2022 2869 3997 16265 4415 4861 3884 4883 16266 2604 2682 4760 4990 16267 2711 4616 3213 5469 16268 3884 4930 4372 5040 16269 1799 1181 4627 5638 16270 4174 4749 4104 5440 16271 4459 4673 3845 5019 16272 2414 2359 4367 5632 16273 1459 1458 1456 5449 16274 2888 3993 2886 5242 16275 4395 4495 3661 5455 16276 1258 1158 1716 4512 16277 1158 1065 1730 4512 16278 3410 2735 4665 4966 16279 323 1995 3333 4280 16280 3955 4602 3867 4979 16281 3069 2412 4431 5430 16282 3837 5243 4067 5453 16283 4673 5019 1879 5424 16284 2391 2410 2451 4906 16285 2488 2739 4521 5137 16286 4032 4827 4251 5377 16287 4241 5027 3878 5347 16288 4308 4348 3804 4857 16289 3802 4403 5023 5441 16290 680 4639 694 4993 16291 3755 4735 4186 4827 16292 1720 1508 1723 5063 16293 869 1508 1664 5063 16294 3968 5037 4027 5384 16295 2236 2237 2235 4411 16296 3757 4429 4268 4825 16297 4396 5212 2435 5290 16298 2922 2470 4402 4802 16299 2613 3180 2517 5240 16300 3233 2634 3180 5240 16301 4021 4297 3831 5498 16302 4035 4512 3853 5395 16303 2314 2315 2316 4373 16304 3792 4175 4105 4657 16305 3853 4031 4512 4774 16306 1729 1868 4326 4897 16307 3545 3605 3608 4140 16308 1993 3482 3456 4888 16309 3506 4083 3518 5021 16310 3987 3796 4902 5215 16311 4439 4484 3910 5049 16312 2984 2006 3597 4267 16313 1269 1268 4265 5067 16314 2876 3986 4971 4995 16315 1149 4719 4418 5600 16316 4169 4681 3724 5485 16317 2105 4215 2106 5133 16318 506 478 4520 5266 16319 3692 4890 4165 4961 16320 4084 3700 4255 5532 16321 4075 4628 448 5583 16322 3689 4813 3988 5479 16323 2688 2780 2687 4295 16324 939 999 958 4932 16325 694 1370 1369 4902 16326 4263 4943 3775 5539 16327 1875 5142 1418 5534 16328 2735 2992 3357 4966 16329 2314 2982 2321 4373 16330 3915 4937 4526 4971 16331 4014 3770 4554 5501 16332 4027 4496 3699 4841 16333 1901 5577 4895 5600 16334 3693 4210 4756 5175 16335 4210 3735 4756 5175 16336 4137 4014 4448 5220 16337 3693 4836 4210 5554 16338 2004 4628 438 4985 16339 3768 4142 4070 4454 16340 3929 4241 4157 4920 16341 4106 4224 3706 5610 16342 3355 418 514 4690 16343 3387 2741 4419 4623 16344 3668 4590 4156 5064 16345 2084 2087 2088 4768 16346 802 808 1567 4936 16347 2367 3239 4363 5537 16348 4760 5046 4182 5600 16349 533 3454 183 1609 16350 427 446 4821 4985 16351 4100 4335 3759 5575 16352 4153 3908 4712 5005 16353 3905 4153 4712 5005 16354 3689 4196 4630 5125 16355 801 1766 805 4667 16356 4367 4834 3870 5034 16357 3998 4818 4386 5281 16358 4178 3763 4625 4899 16359 3764 4178 4625 4899 16360 1620 1883 1092 4672 16361 3232 2105 3243 5199 16362 1418 1871 4576 5142 16363 3773 4169 4643 4687 16364 1649 3517 184 533 16365 2466 4775 3024 5262 16366 1377 1832 1835 4420 16367 887 4186 886 5092 16368 2835 4681 4169 5485 16369 4192 4338 3824 4859 16370 898 1355 1010 4766 16371 3659 4407 4401 5107 16372 1124 1662 4713 5154 16373 1168 953 1668 5205 16374 695 4572 651 4656 16375 2879 4570 2880 4654 16376 2101 4568 2103 4658 16377 1497 5395 4035 5560 16378 318 1992 404 4849 16379 3757 4097 4173 5553 16380 924 923 4113 4967 16381 3910 4517 4451 5439 16382 2004 2800 2798 4985 16383 2446 2448 4896 5198 16384 4123 3852 4952 5472 16385 3583 1997 271 2995 16386 3720 4394 4231 5113 16387 2091 2088 2090 4768 16388 4946 5194 3931 5446 16389 4565 3846 5007 5059 16390 405 4716 304 4866 16391 2006 280 2984 3597 16392 3993 4549 3893 4922 16393 1376 4233 1246 4873 16394 4230 4939 4351 5296 16395 2100 2098 4567 4764 16396 2100 4568 2101 4764 16397 2643 4566 2639 4765 16398 2643 2838 4571 4765 16399 2766 2673 2765 4409 16400 986 4382 5086 5496 16401 4009 4621 4147 5370 16402 3163 4774 2712 4933 16403 3957 3823 4598 5535 16404 1356 1105 1411 5456 16405 378 379 402 5040 16406 4615 4642 3833 5371 16407 3938 4721 4303 5094 16408 4613 5277 885 5450 16409 3523 4575 3504 4832 16410 625 1453 5219 5223 16411 1374 5278 1079 5394 16412 4223 3673 4976 5008 16413 1137 4876 3958 5304 16414 2718 4001 4996 5250 16415 1868 656 4326 4897 16416 2555 2426 4693 5618 16417 3931 4892 4671 4946 16418 3297 3272 4824 5184 16419 3861 4240 4118 4561 16420 3614 1490 3613 5048 16421 2105 5133 2107 5199 16422 4525 4618 3690 5408 16423 1229 4895 4182 5600 16424 4087 4260 3746 4605 16425 3738 4147 4009 4621 16426 3697 4396 5086 5212 16427 3222 4590 2646 5217 16428 4344 4728 3862 5139 16429 1225 1936 4645 5543 16430 3681 4270 4498 4926 16431 3196 4950 2266 5520 16432 2248 4356 2233 4882 16433 3968 1209 4854 5340 16434 1010 1031 4558 4766 16435 618 619 621 5152 16436 286 2015 3609 2785 16437 2580 2479 3040 4384 16438 1005 4273 1407 5491 16439 3874 4575 3955 4832 16440 3053 4878 4593 5542 16441 4301 4508 3918 4952 16442 3674 4338 4192 4859 16443 421 4039 485 4994 16444 3717 4313 4176 5640 16445 2443 4224 2152 4890 16446 3655 4149 4067 4914 16447 3162 4237 5262 5273 16448 2657 4134 3194 5201 16449 3083 4021 5312 5498 16450 3763 4178 4881 5070 16451 2776 5161 3973 5297 16452 3830 3982 4247 5072 16453 3738 4535 4167 5083 16454 1470 813 825 5206 16455 2919 4842 4228 5129 16456 2389 2391 4340 4906 16457 4006 4823 4125 5516 16458 4079 4558 3875 4815 16459 4472 5223 1454 5449 16460 1490 1505 3542 5144 16461 3391 3362 3008 4865 16462 2355 2357 3046 4367 16463 4202 3684 4777 5170 16464 3707 4778 4192 5171 16465 4072 5287 2394 5385 16466 708 4504 5068 5094 16467 4742 4743 3878 5347 16468 464 415 1317 4146 16469 2314 4373 2321 5210 16470 958 957 939 4932 16471 2391 3156 4340 4906 16472 1346 1959 546 4007 16473 4060 4643 3726 4687 16474 3663 4077 4226 5513 16475 3942 5086 4396 5212 16476 4383 4976 3673 5008 16477 4244 4364 3952 4975 16478 206 562 1578 3618 16479 1691 4711 4557 5074 16480 3811 5252 4684 5571 16481 4200 4833 1580 5466 16482 3029 3329 2725 5035 16483 1595 1594 1593 4374 16484 924 938 4967 5315 16485 2324 2320 2323 4965 16486 2277 2920 2705 4740 16487 2932 4848 2933 4986 16488 3045 3044 4834 5602 16489 3931 5194 4946 5203 16490 4405 5084 3993 5242 16491 1518 558 1521 4892 16492 4071 4078 3753 5308 16493 766 4803 5257 5413 16494 2627 2731 2732 5101 16495 1926 4809 5158 5609 16496 3734 4667 4061 5206 16497 3836 4277 4074 5587 16498 2247 4644 4405 5414 16499 815 4183 823 5075 16500 3072 2359 2361 4341 16501 3981 4572 4562 5234 16502 3948 4648 4358 5275 16503 2849 4368 5324 5378 16504 3993 4922 3893 5126 16505 3104 4114 2716 5586 16506 4244 4717 3952 5452 16507 595 1644 597 4331 16508 1181 1780 1781 4310 16509 2221 2216 2959 4319 16510 1813 1799 1181 4310 16511 2250 2249 2255 4311 16512 2437 2436 2435 4314 16513 2497 2436 2496 4314 16514 2642 3207 2640 4327 16515 871 873 1689 4316 16516 771 775 1623 4325 16517 775 773 1478 4325 16518 2609 3214 3201 4315 16519 593 656 595 4326 16520 2205 2211 2268 4320 16521 1708 1186 931 4321 16522 3030 2211 2215 4320 16523 2960 2959 2961 4319 16524 2113 2095 3135 4323 16525 652 654 1430 4329 16526 3082 2497 2609 4315 16527 2697 2607 2696 4330 16528 2891 2272 3228 4322 16529 596 594 595 4324 16530 655 654 653 4329 16531 2960 3214 2221 4319 16532 652 651 653 4329 16533 2936 2939 3252 4334 16534 2113 3113 2939 4334 16535 597 893 599 4331 16536 604 1787 602 4332 16537 603 605 604 4332 16538 2937 2642 2936 4327 16539 2616 3142 3138 4333 16540 2686 2685 2658 4336 16541 1729 1868 656 4326 16542 2686 3313 3306 4335 16543 1042 1776 1614 4337 16544 2270 2356 2355 4338 16545 3055 2511 2356 4338 16546 3892 4273 4122 5060 16547 2389 2391 3156 4340 16548 2512 3156 2612 4340 16549 4120 4515 3870 4664 16550 3007 4505 2313 4691 16551 2401 2484 2400 4342 16552 2492 2401 3142 4342 16553 3072 2422 2580 4341 16554 3870 4365 4235 4859 16555 2279 2281 3198 4945 16556 3443 4008 3464 4960 16557 1344 4075 5019 5311 16558 4066 4791 3483 4792 16559 2847 5533 4065 5589 16560 3880 4824 4708 5101 16561 3960 4727 4306 5429 16562 3526 4066 4792 4862 16563 3346 3989 2754 5160 16564 3862 4128 4162 5039 16565 3992 3863 5162 5266 16566 3816 4267 4068 4959 16567 4030 4148 3767 5376 16568 730 4234 4977 5512 16569 1691 4557 1147 5074 16570 593 592 591 4527 16571 2363 2422 2361 4341 16572 4122 4273 3892 5235 16573 1662 1858 695 5234 16574 1277 668 1080 4679 16575 1404 1277 1869 4679 16576 4089 4255 3700 5532 16577 2919 5129 4228 5380 16578 3998 4070 4766 5016 16579 1340 4007 5038 5416 16580 1497 4035 1116 5560 16581 3161 4864 4441 5435 16582 564 1938 1606 4083 16583 986 5086 985 5496 16584 1070 5112 831 5336 16585 704 717 705 4244 16586 3651 4759 3950 5241 16587 1957 574 1545 4039 16588 4382 4396 3839 5584 16589 1938 1606 4083 4826 16590 3357 2736 2735 5101 16591 3681 4879 4270 5520 16592 2516 2394 5287 5385 16593 2861 2792 2146 5327 16594 2884 3143 2837 5041 16595 4331 4868 3798 5617 16596 4565 4709 3847 5173 16597 3875 3990 4146 4974 16598 3650 3963 4458 5362 16599 3232 3243 5169 5199 16600 3754 4641 4259 4872 16601 1585 1738 847 4941 16602 4533 4978 470 5162 16603 3928 4947 2750 5160 16604 4202 4777 3758 5170 16605 3674 4192 4778 5171 16606 1560 1562 1714 5411 16607 3855 4377 4082 4461 16608 2841 2541 4548 5047 16609 4242 4367 3674 4859 16610 922 4017 4776 5512 16611 4696 5310 3963 5362 16612 2445 2447 4090 5198 16613 4671 4946 4109 5203 16614 1391 1523 4919 5331 16615 3794 4293 4468 4801 16616 4096 4239 3703 4546 16617 3791 4239 4096 4546 16618 2806 3399 3364 4823 16619 2220 3971 4753 5286 16620 766 5257 4030 5413 16621 3630 272 2027 2995 16622 4377 4461 3178 5127 16623 3630 3583 271 2995 16624 1774 1441 1754 5045 16625 573 3517 185 1649 16626 841 1849 1427 5476 16627 2739 4802 3299 5137 16628 3537 4931 4008 5136 16629 4681 4995 3724 5485 16630 1211 4309 1866 4897 16631 4519 4733 4489 5081 16632 1856 1837 4238 4801 16633 3487 4022 4479 5419 16634 1704 1150 914 4537 16635 1637 912 1150 4537 16636 1983 3615 288 3067 16637 4668 5109 685 5263 16638 787 5296 4230 5377 16639 1746 4391 1135 5146 16640 1455 736 1759 4535 16641 840 843 1751 4536 16642 4076 4418 3942 5071 16643 2998 3334 3351 4973 16644 4035 5395 4279 5560 16645 4104 4749 1046 5440 16646 3854 4181 4103 4530 16647 920 4604 961 4797 16648 3056 5170 4198 5636 16649 3941 4232 5100 5277 16650 963 4283 900 4970 16651 4103 4043 4530 5288 16652 1879 1876 4673 5424 16653 3652 4834 4367 5034 16654 4191 4311 3707 4777 16655 3684 4311 4191 4777 16656 3707 4318 4198 4778 16657 4198 4318 3717 4778 16658 3840 4773 4028 4901 16659 1564 3501 3452 4602 16660 3763 4881 4029 5070 16661 3343 3111 1975 3996 16662 2048 4836 4210 5559 16663 1903 4769 1309 5230 16664 1587 4769 491 5629 16665 4092 4205 3787 5603 16666 3089 455 3114 5494 16667 3274 4908 3283 5217 16668 4063 4779 3791 4900 16669 3898 4779 4063 4900 16670 544 4108 1921 4994 16671 4446 5293 3975 5390 16672 535 1599 1911 4040 16673 3934 5120 4408 5302 16674 3771 4127 4035 5299 16675 2413 2706 4670 5611 16676 3742 4107 4017 5512 16677 3676 4176 4052 4466 16678 791 1679 4939 5373 16679 1639 4892 1516 5577 16680 4098 3779 4420 5025 16681 4848 4986 2932 5335 16682 699 1332 1421 5077 16683 821 4553 920 4797 16684 485 421 486 4039 16685 4619 4942 4012 5375 16686 388 348 351 4000 16687 4657 4838 1806 5579 16688 2086 2060 4038 5367 16689 1834 4036 634 5342 16690 3907 3961 4874 5174 16691 2260 2266 4950 5520 16692 2533 2715 4551 5397 16693 965 1391 1523 4919 16694 3224 3080 2248 4882 16695 3843 4671 4109 5203 16696 3659 4752 4156 5486 16697 4185 5031 3304 5556 16698 2612 3144 4864 5435 16699 192 3455 1550 568 16700 3260 3219 4955 5273 16701 2079 4771 3009 4953 16702 4287 4356 3909 5510 16703 3292 4009 2906 5428 16704 625 736 5223 5375 16705 1106 4104 1046 5440 16706 3626 4359 1981 5255 16707 1353 923 4967 5032 16708 3830 4797 3982 5072 16709 1229 1652 4182 4895 16710 509 4962 522 5311 16711 3992 4758 3863 5266 16712 886 4186 4827 5092 16713 4235 4858 3836 5587 16714 3845 4673 4141 5424 16715 3985 3816 4578 5015 16716 3817 3985 4578 5015 16717 3429 3048 3510 4745 16718 3862 4162 4344 5039 16719 4372 4415 3944 5345 16720 3807 4522 3962 4724 16721 3995 4693 3913 5298 16722 4799 5133 3712 5497 16723 3652 4367 4242 5034 16724 1927 573 4066 5525 16725 2238 4251 2237 5335 16726 3209 2787 3295 5135 16727 2987 3192 4375 4825 16728 3756 4370 4285 4718 16729 1773 4307 630 4867 16730 3987 4410 3860 4684 16731 4143 4495 3799 5566 16732 3787 4092 4491 5245 16733 3816 4846 4003 4959 16734 4429 4438 3730 4945 16735 4231 4394 3720 5068 16736 3927 4763 4988 5504 16737 1645 627 626 4942 16738 3717 4176 4692 5640 16739 858 5288 1507 5457 16740 3615 2015 287 3067 16741 1264 1878 1873 4951 16742 3744 4356 4164 4882 16743 3740 4524 4163 4707 16744 711 4394 709 5100 16745 1046 4104 1049 5087 16746 1743 731 4676 5512 16747 629 4652 1645 4942 16748 4027 4841 2533 5484 16749 3818 4265 5067 5432 16750 3848 4374 4300 4976 16751 3706 3957 4581 5155 16752 4049 4354 3857 5447 16753 3856 4354 4049 5448 16754 3848 4384 4383 4976 16755 1030 1524 4399 4967 16756 4137 5100 3792 5579 16757 3484 3454 183 533 16758 1207 1082 4226 5424 16759 3674 4781 4242 5190 16760 1341 1382 5116 5416 16761 3716 4043 4103 5288 16762 2907 4009 5370 5492 16763 4773 4839 3278 5195 16764 3691 4167 4044 4535 16765 3752 4168 4046 4536 16766 4402 5243 3837 5453 16767 589 591 4527 5200 16768 3484 184 3517 533 16769 2424 5099 2370 5409 16770 1796 884 4414 5448 16771 3981 4562 4586 5234 16772 3597 2006 3541 4267 16773 4254 4905 1216 5050 16774 1659 1464 1465 4751 16775 3143 5041 4285 5435 16776 1120 4177 1630 4968 16777 3977 3806 4568 4764 16778 3710 4566 3980 4765 16779 3783 3977 4567 4764 16780 3980 4571 3812 4765 16781 865 5214 4585 5328 16782 4338 4626 3824 5613 16783 3452 3494 3496 4972 16784 684 683 4717 5462 16785 1264 1101 4428 4951 16786 3728 4172 4116 5216 16787 1353 923 1524 4967 16788 1534 4610 864 5097 16789 495 494 4108 5614 16790 3206 4282 2585 5095 16791 2997 4973 5123 5399 16792 3947 5133 4799 5497 16793 3666 4800 4027 5397 16794 3397 3048 4745 4767 16795 1667 5251 3966 5364 16796 4055 4584 3699 4679 16797 1760 1728 1184 5078 16798 2301 2302 5044 5300 16799 1061 1066 940 5108 16800 1067 1671 940 5108 16801 1485 4634 1488 5441 16802 2012 419 2993 4520 16803 1468 998 1467 4707 16804 2809 4814 3972 5184 16805 903 902 1023 4365 16806 2541 2840 2841 4548 16807 3804 4348 4308 5364 16808 962 1596 1595 4242 16809 1369 1334 694 4902 16810 3713 4525 3984 4722 16811 1182 1690 1427 5053 16812 2405 2184 2404 4448 16813 1264 1078 1101 4951 16814 2791 4171 2151 5401 16815 3789 5053 4685 5436 16816 3493 3495 3498 5546 16817 4187 4747 3655 5609 16818 3326 4574 3025 5106 16819 3731 4224 4106 4378 16820 3652 4242 4781 5190 16821 2303 5044 4011 5463 16822 2365 2364 4176 5400 16823 3808 3981 4562 5169 16824 4607 4608 3776 5627 16825 1180 732 1444 4504 16826 2314 2313 2315 4505 16827 687 690 686 4506 16828 4087 4194 3697 5496 16829 2805 2806 4823 4914 16830 2910 2908 4889 5428 16831 3162 2520 4237 5273 16832 3731 4378 4106 4884 16833 3294 3304 4185 5031 16834 3224 4411 3205 4882 16835 4158 5115 3035 5183 16836 3676 4052 4176 4537 16837 785 4032 784 5451 16838 3939 4351 4230 4939 16839 865 4179 868 5392 16840 2043 2041 4180 5391 16841 4018 3699 4806 5585 16842 3821 4140 4587 4785 16843 1850 1841 1287 4798 16844 2921 2793 2555 4305 16845 1777 4880 4264 5605 16846 1441 1440 1438 4549 16847 1439 1440 1442 4549 16848 1016 920 4553 4813 16849 3164 4771 2073 5055 16850 3843 4751 4051 5601 16851 2006 280 3597 3541 16852 1690 4526 1426 5053 16853 1628 772 4184 5386 16854 3249 4185 2655 5387 16855 3833 4254 4510 4905 16856 3889 4875 4520 5629 16857 4184 4583 4059 5231 16858 3141 4013 5129 5380 16859 1690 846 1426 4526 16860 2869 2545 3148 4887 16861 3679 4164 4041 5599 16862 462 516 464 4146 16863 1601 219 3594 531 16864 4056 4895 3899 4923 16865 4084 4315 3670 5548 16866 3700 4315 4084 5549 16867 3703 4317 4088 5550 16868 3797 4335 4100 5556 16869 1204 1216 4254 4905 16870 3775 4669 4357 5555 16871 3581 3584 3638 4701 16872 4486 4798 3913 5137 16873 3780 4262 4207 5635 16874 2984 279 1981 3597 16875 3999 4301 3842 4508 16876 1132 5259 4546 5550 16877 1537 1629 4177 5402 16878 3913 4802 5137 5298 16879 4680 4960 3852 5509 16880 3681 4183 4058 4457 16881 3972 5032 3880 5184 16882 3765 4928 4371 5316 16883 3765 3975 4928 5316 16884 1125 1591 1590 5008 16885 2981 4856 4074 5587 16886 3176 2119 2124 4948 16887 573 3449 3517 4862 16888 4017 4107 3742 5515 16889 3783 4633 4567 5454 16890 1621 5310 4696 5362 16891 4365 4859 3870 5080 16892 2561 2690 3261 4281 16893 3973 4397 4284 5161 16894 3080 4041 3234 5267 16895 2516 2943 2624 5287 16896 1023 5080 4365 5646 16897 4065 4479 3490 5303 16898 3776 4236 4292 5508 16899 2077 4573 4528 5360 16900 3043 2580 3041 4300 16901 1994 465 429 4157 16902 945 727 726 4676 16903 3663 4077 4152 4579 16904 3940 5088 4495 5455 16905 3431 1977 3503 4832 16906 1494 5104 3975 5390 16907 3863 4728 4344 5139 16908 525 365 1615 4866 16909 822 4183 819 5470 16910 3988 4604 3830 4670 16911 3673 4384 4383 5059 16912 3236 4312 2717 4983 16913 1426 839 841 4685 16914 2970 2301 4129 5573 16915 2335 4225 2264 5407 16916 3846 4383 4384 5059 16917 2484 2492 2547 4342 16918 1991 4603 3327 5143 16919 2106 2114 2109 5133 16920 2105 2106 2107 5133 16921 4277 4858 3828 5407 16922 1307 1918 4780 5347 16923 550 4125 1942 5158 16924 4441 5041 3829 5401 16925 3487 3489 4022 5020 16926 4330 5324 3777 5378 16927 3773 4643 4060 4687 16928 3902 5079 4444 5591 16929 4133 4806 585 5422 16930 2651 4495 3316 5036 16931 3182 2698 2912 5249 16932 4686 5082 3961 5493 16933 3762 4864 4340 5334 16934 3861 4710 4070 5016 16935 3267 2882 2715 4551 16936 1153 1065 1063 4812 16937 2346 2169 2170 4497 16938 2844 4853 3970 5157 16939 3664 4810 4433 5521 16940 3490 3519 3446 4479 16941 1085 1034 4372 5314 16942 3798 4897 4326 5617 16943 4012 4573 3925 5219 16944 4009 4147 3738 5449 16945 2725 3226 4221 5035 16946 2742 3373 2733 4918 16947 1448 1449 1212 5271 16948 3837 4798 4486 5137 16949 1870 4868 4309 5278 16950 3687 4610 5097 5214 16951 4372 4415 3884 5040 16952 3608 1505 214 523 16953 2988 3155 4692 5061 16954 2412 2368 3068 4466 16955 1233 4981 1399 5282 16956 4356 4808 3909 5510 16957 2851 5115 3971 5183 16958 4055 4584 4180 5213 16959 4053 4585 4179 5214 16960 3918 4508 3999 5431 16961 1593 1125 1624 5008 16962 619 1759 4535 5193 16963 3908 4881 4178 5070 16964 1451 4884 3967 5557 16965 2565 5368 4118 5500 16966 537 1877 4064 5432 16967 1798 4064 1877 5433 16968 3984 4722 3854 5063 16969 1148 4719 980 5071 16970 3706 4119 4303 5563 16971 3727 4179 4350 4965 16972 3083 5312 2592 5498 16973 2574 4681 2835 4995 16974 3245 2878 2524 4554 16975 3160 2878 3116 4554 16976 4266 4609 3822 5161 16977 4271 4662 3856 5055 16978 2659 4574 4534 5625 16979 3168 5026 4616 5604 16980 4050 885 5277 5450 16981 606 605 607 4763 16982 2849 3026 3158 5378 16983 2921 2555 2426 4693 16984 3862 4620 4128 4759 16985 3038 4824 3357 4875 16986 1053 1052 1051 4687 16987 1054 1053 1055 4687 16988 1870 4309 1373 5278 16989 1866 656 4897 5617 16990 3980 4765 3812 5564 16991 1671 1144 1500 4557 16992 4642 5641 3660 5644 16993 4070 3768 4454 4935 16994 4585 4741 3672 5204 16995 528 497 433 5162 16996 3867 3956 4972 5543 16997 1145 5227 4037 5228 16998 1027 1224 1038 4383 16999 970 4223 1624 5008 17000 2893 5220 2635 5501 17001 4503 4638 4011 5246 17002 4004 4949 3857 4955 17003 2039 5213 4699 5575 17004 4962 5311 1345 5645 17005 3981 4562 3791 4586 17006 1679 4939 4288 5444 17007 4006 4809 4125 5158 17008 4153 4178 3908 4881 17009 2032 2772 3337 5134 17010 3500 3518 4083 4826 17011 2529 4697 2545 4887 17012 3850 4604 3988 4670 17013 2479 2490 2676 4384 17014 546 1340 4007 5038 17015 2190 3125 3126 4559 17016 4063 4161 3898 4900 17017 3700 4255 4089 4606 17018 4089 4255 3736 4606 17019 3888 4695 4187 4747 17020 3917 4297 4741 5604 17021 2530 4001 2550 5268 17022 1730 4512 4460 5299 17023 3742 4977 3991 5051 17024 4237 4775 3701 5568 17025 3316 2651 2471 4495 17026 1107 4105 1079 5278 17027 4072 4812 4005 5294 17028 3689 4697 4813 5479 17029 3223 3236 2717 4983 17030 2450 2919 2196 4842 17031 2785 3609 285 3209 17032 1205 1857 1853 4943 17033 1016 4813 4553 5638 17034 3977 4713 3806 4764 17035 3710 3980 4714 4765 17036 473 3079 441 5218 17037 3848 5224 4726 5279 17038 2893 4393 5220 5501 17039 3791 4779 4078 4900 17040 4078 4779 3898 4900 17041 347 4444 389 4871 17042 2515 2608 5294 5385 17043 3853 4512 4127 4774 17044 3975 3719 4253 5293 17045 192 3455 3467 1550 17046 2608 4953 4005 5240 17047 3876 4386 3990 4830 17048 2271 2274 4879 5520 17049 2465 4252 2645 4954 17050 376 4280 374 4820 17051 3639 3591 3595 4724 17052 3842 4508 4301 4680 17053 1402 4276 4891 5233 17054 3849 4666 4296 4918 17055 2468 2528 2636 5479 17056 2591 3151 3197 4911 17057 1057 4831 4218 5582 17058 2080 4573 2077 5360 17059 3815 4555 4130 5048 17060 1619 217 3563 563 17061 1774 781 796 4164 17062 4176 4692 2366 5541 17063 1098 1099 4785 5404 17064 4442 4532 3809 5405 17065 971 5059 4474 5619 17066 3808 5199 5119 5497 17067 3667 4114 4282 4612 17068 2476 4235 4858 5613 17069 2147 3187 3309 4934 17070 3907 4288 4754 5569 17071 3078 4858 4277 5407 17072 1089 4151 968 5069 17073 3689 4697 3994 4813 17074 4165 4224 3731 4890 17075 3785 4584 4055 4679 17076 433 1544 528 5162 17077 1946 3479 4592 5276 17078 2933 2234 4287 4848 17079 1590 4383 1027 5008 17080 3503 3434 3523 4832 17081 2906 4009 2907 5492 17082 2038 3181 2039 4699 17083 4494 4910 1108 5251 17084 393 324 384 3989 17085 2696 4102 3218 5378 17086 3705 5156 4208 5616 17087 3643 1871 3539 5096 17088 3743 4363 4160 4893 17089 1970 4706 1721 5623 17090 3624 1578 205 537 17091 3942 5071 4418 5584 17092 3700 4625 4315 5549 17093 3963 3676 4885 5458 17094 4014 4137 3720 5220 17095 3950 4886 4690 5218 17096 3792 4137 4105 4448 17097 1089 966 968 4151 17098 1272 4846 4748 5580 17099 3197 4911 3151 5370 17100 1998 3412 2802 4963 17101 4402 4486 3837 5207 17102 1920 4386 1356 5344 17103 3809 4442 4571 5301 17104 2709 3132 2982 4131 17105 3918 4918 5009 5388 17106 3843 4109 4023 5527 17107 3089 3114 4772 5494 17108 2408 4661 2486 4840 17109 3759 4180 4055 4527 17110 993 4961 4257 5322 17111 1996 4786 3373 5164 17112 4483 4538 3680 5185 17113 2528 2469 2529 4697 17114 2188 4167 2075 5083 17115 3964 3782 4524 5307 17116 870 5204 4585 5392 17117 4149 4521 3949 5130 17118 4535 5223 736 5375 17119 4232 4589 3792 4838 17120 4436 4483 3680 5185 17121 3898 4161 4063 4647 17122 2302 2304 2303 5300 17123 1145 1143 5227 5228 17124 1623 1480 1396 4997 17125 3950 4759 3862 5013 17126 4510 4921 3833 5371 17127 4163 4707 1164 5403 17128 2970 4129 3061 5426 17129 1417 1871 548 5096 17130 3397 3050 3048 4767 17131 2251 4552 2247 4644 17132 4591 5017 2945 5490 17133 2690 2900 3186 4622 17134 2690 3129 3261 4622 17135 2822 5215 3987 5327 17136 3689 4627 4310 5638 17137 1524 1214 1353 4227 17138 348 4822 4000 5079 17139 715 4232 1806 4838 17140 4324 4756 3735 5325 17141 3768 4070 4142 5339 17142 3950 3862 4886 5013 17143 1566 1671 1500 4135 17144 1797 1668 1180 4136 17145 4194 5212 5086 5269 17146 1680 5087 1049 5578 17147 3550 2029 3018 4306 17148 4208 4867 3705 5616 17149 1586 1858 1852 5234 17150 3960 4761 3959 5567 17151 3509 4040 3507 4865 17152 2921 4693 3299 4802 17153 3061 4129 2301 5044 17154 4583 5231 1628 5374 17155 4106 3706 4224 5000 17156 514 4690 475 5123 17157 3747 4547 4095 4937 17158 3671 4031 4511 4774 17159 1667 3966 5209 5364 17160 4584 5213 4018 5369 17161 2123 2118 4285 4948 17162 2450 2918 2917 4228 17163 3811 4639 4410 5462 17164 924 4113 729 5315 17165 1468 1467 1164 4707 17166 3710 4714 3978 4765 17167 3979 3806 4713 4764 17168 1000 999 1160 4275 17169 2441 3221 2606 4139 17170 3763 4416 4029 4651 17171 3870 4367 4242 4859 17172 3775 4868 4331 5539 17173 3830 4604 3988 4797 17174 780 777 1522 4624 17175 1743 5244 731 5512 17176 3632 4522 531 5289 17177 1088 1001 1021 5039 17178 3697 4509 4087 5496 17179 4155 4937 2298 4971 17180 1702 4812 4414 5411 17181 4122 3762 4746 5235 17182 2065 5222 3983 5642 17183 3673 5059 4383 5619 17184 2917 4228 2918 5189 17185 3809 3974 4442 5301 17186 3658 4349 4999 5612 17187 3701 4775 4054 4954 17188 5057 5128 3881 5160 17189 4104 4174 3747 4749 17190 3893 4164 4041 4882 17191 3760 4405 3993 5242 17192 4540 4577 3690 5408 17193 1622 1359 977 5405 17194 4095 4547 3747 4749 17195 364 403 366 3996 17196 4444 5079 3902 5631 17197 3609 2015 286 3551 17198 3329 3246 2996 5035 17199 1609 4290 3454 5419 17200 627 4619 626 4942 17201 4230 4351 3702 5296 17202 4041 4450 5320 5599 17203 3213 4616 2948 5469 17204 969 4110 1119 5475 17205 1578 3624 205 3618 17206 1358 4910 3966 5251 17207 4186 3900 4928 5620 17208 3985 4677 3810 4811 17209 3385 2842 4853 5483 17210 1878 1031 1276 4558 17211 3736 4413 4376 5099 17212 4158 4245 3746 5115 17213 1774 1632 1441 5599 17214 2942 3007 2335 4691 17215 3007 2313 2311 4691 17216 3791 4239 4078 4779 17217 3249 5232 4643 5346 17218 3787 4491 4110 5245 17219 3224 2235 4411 4882 17220 2224 4819 2223 5393 17221 3722 4057 4490 5264 17222 4008 3852 4720 4931 17223 2742 5164 4918 5431 17224 3960 4727 3819 4894 17225 3010 2079 3009 4953 17226 479 466 417 5396 17227 3734 3988 4553 4797 17228 2185 2556 2916 4142 17229 1078 4951 4128 5188 17230 3431 3519 3491 4065 17231 3957 4581 4020 5247 17232 790 4230 787 5296 17233 1125 1590 1027 5008 17234 1319 4860 4761 5567 17235 645 4713 647 5454 17236 3657 4600 4050 5529 17237 3327 5143 4603 5397 17238 1287 1288 4492 4798 17239 1083 5340 4226 5513 17240 1778 892 4264 5110 17241 3850 4697 3994 4887 17242 3875 4766 3998 4815 17243 4040 4120 3885 4865 17244 4039 4992 3849 4994 17245 1159 4470 4742 5450 17246 3844 3963 4431 4696 17247 2918 4228 2450 5189 17248 3922 4175 4105 5073 17249 4103 5210 2955 5592 17250 3182 4292 2912 5117 17251 3033 3032 3031 4909 17252 1452 1358 1491 4910 17253 4218 4880 1200 5582 17254 3320 2663 2651 4143 17255 1261 1081 1003 4144 17256 1925 5130 4592 5525 17257 3988 4813 4697 5479 17258 1204 4905 4254 5561 17259 4203 5202 3745 5594 17260 1621 1620 960 5362 17261 3978 4714 4082 5078 17262 3741 4631 4321 5145 17263 4138 4385 3683 4691 17264 3657 4463 4302 5406 17265 3548 575 202 1546 17266 3707 4626 4311 5177 17267 4338 4626 3707 5177 17268 4585 5214 4019 5328 17269 2490 2676 4384 5007 17270 4052 4466 4176 4646 17271 993 4257 1126 5322 17272 3763 4651 4319 5052 17273 950 4489 1381 5595 17274 730 4977 4234 5595 17275 4636 4694 4004 5381 17276 2490 4384 2479 5007 17277 3332 3585 298 2019 17278 2670 5160 2491 5166 17279 246 2013 3430 3075 17280 1743 4676 1206 5244 17281 4177 4968 3828 5481 17282 995 4304 994 4961 17283 2509 4336 2685 5006 17284 3492 2013 245 2977 17285 920 1699 4604 4813 17286 1999 4726 5279 5608 17287 3761 5147 4817 5570 17288 3952 4364 4244 5153 17289 4145 4726 3848 5224 17290 4383 5008 3673 5619 17291 3693 4099 5489 5554 17292 3911 4943 4452 5030 17293 1525 4087 990 5496 17294 766 4833 763 5413 17295 973 4115 919 5348 17296 4126 5538 2706 5611 17297 4102 5378 3935 5572 17298 2784 4124 3295 5006 17299 3959 4860 4839 5459 17300 3704 4279 4591 5017 17301 1747 4438 827 4816 17302 3916 4846 4389 5282 17303 795 800 5098 5265 17304 1791 1740 915 4160 17305 3707 4198 4318 4777 17306 3684 4325 4202 4777 17307 4193 4313 3717 4778 17308 3707 4338 4192 4778 17309 3734 3982 4740 4797 17310 3856 4414 4662 5448 17311 4244 4497 3860 5153 17312 1455 1809 4147 5193 17313 345 3099 389 4444 17314 1351 1352 4562 4900 17315 4665 4992 4039 5482 17316 3970 3787 4471 5382 17317 3620 4417 3621 5410 17318 3594 531 3632 4522 17319 3783 3977 4764 5454 17320 1622 5405 4442 5564 17321 3909 4538 4483 5185 17322 1506 4407 1436 5030 17323 3127 4518 3307 4898 17324 3850 4887 3994 5011 17325 2851 3035 5115 5183 17326 924 4967 4113 5315 17327 3689 4615 3994 4697 17328 2220 4753 2214 5286 17329 4239 4779 2830 5308 17330 3526 3449 4066 4862 17331 3693 4331 4219 4756 17332 4217 4326 3735 4756 17333 4219 4331 3798 4756 17334 3798 4326 4217 4756 17335 4210 4324 3693 4756 17336 3735 4324 4210 4756 17337 1249 4843 1834 5090 17338 1351 1380 1352 4900 17339 4048 4171 3827 4698 17340 3936 4428 4001 4951 17341 3909 4483 4436 5185 17342 3698 4540 4135 5238 17343 3948 4648 3974 4817 17344 543 1889 1298 5313 17345 2041 5213 4584 5369 17346 1417 1210 4576 5340 17347 1497 1496 5395 5560 17348 3786 4329 4655 5352 17349 3786 4656 4329 5353 17350 3186 1976 283 3627 17351 3901 4270 4498 5075 17352 2308 2980 2411 4682 17353 3660 5267 4041 5300 17354 3233 4116 3202 5163 17355 4056 4892 3839 5577 17356 4041 5267 3080 5300 17357 1397 5150 1163 5180 17358 3272 2367 3239 4363 17359 1364 1363 5015 5580 17360 2680 2603 4076 4957 17361 4020 4581 3957 5155 17362 1510 4633 646 5454 17363 3990 4386 4818 5281 17364 4030 5257 4803 5413 17365 966 1387 965 4919 17366 3224 2233 2235 4882 17367 2188 3210 2075 4167 17368 2292 2927 3203 4168 17369 2835 2503 2505 4169 17370 2552 2551 2553 4170 17371 4094 4997 3758 5295 17372 3190 2138 2151 4171 17373 4060 4880 3773 5582 17374 3817 4359 4068 5255 17375 3668 4282 4114 4612 17376 2476 4858 2986 5613 17377 1490 4550 1331 5144 17378 4027 4551 4144 5397 17379 4322 4630 3695 5125 17380 752 1686 750 4712 17381 799 795 800 5098 17382 936 4835 1060 5315 17383 3934 4165 4224 5000 17384 4806 5422 4055 5585 17385 4162 4344 3869 4728 17386 3736 4582 4115 5099 17387 4143 4770 2663 5566 17388 2858 4122 3144 5060 17389 3967 3813 4884 5461 17390 3968 4854 1209 5384 17391 708 1445 4504 5094 17392 763 1580 4833 5466 17393 1464 1465 4751 5601 17394 3832 4576 4150 4800 17395 3964 4024 4909 5514 17396 4257 4347 3753 5114 17397 3716 4583 4059 4878 17398 2800 2801 2799 4278 17399 3753 4078 5109 5259 17400 1499 4810 1498 5536 17401 1529 561 175 3498 17402 4170 4723 2552 5485 17403 3948 4817 5147 5570 17404 3794 4801 4468 5351 17405 2515 2394 4072 5294 17406 1248 4801 4081 5351 17407 3881 4565 5007 5059 17408 2857 4794 3242 5522 17409 3758 4318 4198 4777 17410 4202 4325 3758 4777 17411 3674 4313 4193 4778 17412 4192 4338 3674 4778 17413 3790 4889 4298 5428 17414 807 802 4667 4936 17415 494 4108 492 4994 17416 2605 2366 2364 4176 17417 4263 4357 3714 5121 17418 739 1530 639 4913 17419 1120 1537 1630 4177 17420 938 1030 1524 4399 17421 3129 3261 4622 5356 17422 1377 1835 1247 4420 17423 4068 4267 3816 5255 17424 3288 4802 2739 5137 17425 3812 4765 4714 5564 17426 4031 4427 3765 4511 17427 4689 4997 3777 5361 17428 4087 5330 990 5496 17429 3776 4292 4236 4607 17430 1418 1855 1871 5142 17431 3789 4595 4046 4685 17432 4046 4595 3810 4685 17433 2526 2525 2646 4590 17434 3712 4215 4654 5352 17435 3808 4658 4215 5353 17436 1651 1919 4795 4850 17437 2002 3395 4823 5516 17438 3882 4432 4007 4736 17439 3931 5256 4056 5446 17440 2600 2598 2599 4618 17441 1895 1302 572 5057 17442 4719 5071 3685 5348 17443 3923 4278 4075 5019 17444 3741 4321 4205 5145 17445 3277 3957 5155 5247 17446 2245 2951 2886 4405 17447 3692 4090 4890 4961 17448 1920 1356 4830 5344 17449 3849 4786 4108 5164 17450 4014 2635 5220 5501 17451 3824 5080 4365 5402 17452 1109 4236 1244 5235 17453 2015 3615 287 3551 17454 3825 4932 4275 5634 17455 4431 4466 3963 5430 17456 1905 1092 1971 4672 17457 4258 4911 3662 5565 17458 3884 4861 4051 4883 17459 3743 4688 4497 5537 17460 2130 4837 2129 5306 17461 2649 4510 2654 4921 17462 1976 284 3557 3209 17463 731 727 4676 5512 17464 4187 4695 3655 4747 17465 3861 4142 4070 4710 17466 3710 4082 4714 5503 17467 3792 4105 4175 4448 17468 1970 5046 4706 5623 17469 4408 5120 4015 5302 17470 4033 4949 4559 5222 17471 944 5244 4017 5512 17472 944 731 5244 5512 17473 352 349 347 4795 17474 4204 4322 3695 5125 17475 3652 4341 4223 4781 17476 4489 5116 3873 5416 17477 1932 4602 1804 5536 17478 3715 4290 4002 4700 17479 3514 1982 243 3054 17480 1365 4846 4003 5282 17481 2749 3375 5590 5622 17482 4284 4609 3822 5433 17483 812 1629 5122 5481 17484 4067 5243 2415 5453 17485 2525 2449 2460 4896 17486 3734 4740 3988 4797 17487 4223 4341 3669 4781 17488 3515 1914 556 4479 17489 3925 5219 4573 5630 17490 2725 3329 3226 5035 17491 4049 4641 3778 4955 17492 1229 1901 4895 5600 17493 3161 5041 3143 5435 17494 3130 4762 2297 4927 17495 3848 4374 4976 5008 17496 1249 1845 1834 4843 17497 1368 1787 1249 4843 17498 1358 1108 4910 5251 17499 3952 4717 4244 4975 17500 585 4806 588 5422 17501 4037 4525 3690 5228 17502 3246 4397 2996 5035 17503 988 986 987 5496 17504 2491 2538 2490 5007 17505 553 99 1526 467 17506 834 5082 4686 5493 17507 1122 1123 1121 5093 17508 4054 4186 3719 4675 17509 4508 5465 2871 5472 17510 2955 5542 4103 5592 17511 3769 5073 4448 5254 17512 3520 3481 3483 5525 17513 2810 4705 2180 4924 17514 2907 5370 4621 5492 17515 3670 5212 4194 5269 17516 1026 4478 1037 5475 17517 3814 4389 4170 4785 17518 2983 4350 2319 4965 17519 2811 2788 4818 5281 17520 3746 4605 4260 5115 17521 858 812 5122 5457 17522 3731 4090 4257 4961 17523 3848 4976 4383 5008 17524 858 5122 4043 5457 17525 4017 5244 4676 5512 17526 2629 4918 4296 5522 17527 1591 1125 1593 4374 17528 1005 1434 1407 4273 17529 4348 4857 2112 5489 17530 1385 5405 1622 5564 17531 3842 4006 4291 4809 17532 4029 4881 3908 5070 17533 3917 4616 4080 5398 17534 2419 4461 2382 5332 17535 3757 3961 4531 5336 17536 4042 3677 4597 5122 17537 3019 1981 3626 4359 17538 4258 4369 3748 5156 17539 899 963 900 4970 17540 2509 2685 3271 5006 17541 1263 4867 4208 5616 17542 3796 4486 4402 5207 17543 3870 4664 4515 5646 17544 2485 2534 4579 5389 17545 4474 4475 3673 5059 17546 4081 4252 3701 4796 17547 3235 2819 2703 4857 17548 4004 4636 3778 4955 17549 4482 4870 3739 5466 17550 3702 4922 3993 5126 17551 4037 4525 3713 4958 17552 3654 4065 4479 5562 17553 4968 5304 3828 5481 17554 524 4575 1910 4725 17555 2772 3959 2032 5459 17556 802 805 807 4667 17557 3719 4675 4093 4775 17558 3707 4311 4191 5177 17559 4192 4338 3707 5177 17560 4119 4303 3938 4721 17561 2229 4436 5185 5573 17562 3835 4139 4102 5572 17563 1593 4374 1125 5008 17564 3588 3590 3589 4653 17565 2266 2259 2260 4950 17566 537 1798 204 3624 17567 938 4399 1524 4967 17568 2377 4879 4333 5596 17569 3539 1855 3596 5142 17570 3002 402 379 5040 17571 625 5223 4012 5375 17572 4285 4370 3756 4948 17573 2818 2029 268 3552 17574 1874 1417 548 5096 17575 3127 4898 3126 5367 17576 3545 213 1400 523 17577 4018 4699 4133 5056 17578 2800 2799 2798 4278 17579 3850 3988 4604 4813 17580 4079 4815 3875 5399 17581 4055 4527 4180 5200 17582 3983 4863 4033 5065 17583 3038 2762 3297 4824 17584 3767 4261 4094 4803 17585 1063 4446 1062 4812 17586 397 1604 314 4925 17587 3653 4716 4674 4866 17588 4237 5262 4775 5568 17589 2804 5167 4695 5516 17590 4124 4550 3815 5048 17591 3045 3044 3366 4834 17592 562 207 1570 3607 17593 3360 4521 2738 4888 17594 3839 4109 4382 4671 17595 2521 2726 3307 4898 17596 1562 1796 884 4414 17597 833 5082 834 5493 17598 3776 4390 4292 5627 17599 2311 2264 2335 4225 17600 1273 4846 1272 5580 17601 1122 3958 4968 5304 17602 1801 1397 1163 5180 17603 976 1239 4395 5464 17604 3762 4122 4746 4864 17605 4119 4987 4303 5563 17606 2085 2919 3014 4842 17607 1198 1030 957 4399 17608 2427 5298 4693 5618 17609 3633 3548 3635 4284 17610 4565 4734 3846 5059 17611 3252 5141 4334 5438 17612 2336 2073 4271 5055 17613 1192 4156 1772 5486 17614 3347 3426 2028 5465 17615 3802 3976 4403 5441 17616 319 351 405 4674 17617 2731 4665 2735 5101 17618 4056 3899 4895 5577 17619 3778 4641 4049 4872 17620 3762 4607 4236 5249 17621 3981 4658 3806 4934 17622 4165 4961 3731 5581 17623 4086 4195 3727 5551 17624 3746 4194 4087 5552 17625 3693 4219 4099 5554 17626 4099 4219 3775 5555 17627 3719 4675 4186 5293 17628 3761 4750 4034 5117 17629 3742 4361 4069 4676 17630 3740 4163 4037 5403 17631 3702 4032 4251 5377 17632 4237 2466 5262 5568 17633 3859 4677 3985 4811 17634 3670 4539 4084 4640 17635 3669 4313 4193 4781 17636 4193 4313 3674 4781 17637 1142 5227 1143 5228 17638 1125 1027 970 5008 17639 4513 5028 2714 5469 17640 2060 5367 3125 5471 17641 340 344 4877 5003 17642 3107 4396 2435 5290 17643 1384 1160 4485 4789 17644 3464 3442 3465 4931 17645 659 4799 655 5119 17646 3329 3029 1989 4417 17647 4091 4541 3725 4629 17648 3783 4764 4713 5454 17649 2848 5054 4261 5324 17650 3880 4924 4160 5350 17651 2704 2206 2208 4881 17652 3716 4103 4593 5542 17653 4232 4589 3729 5131 17654 2321 2955 5210 5592 17655 2564 4118 2565 5368 17656 371 53 2021 3333 17657 3818 4380 4265 5187 17658 3077 4858 2986 5407 17659 4615 4627 3689 5638 17660 3945 4360 4359 5606 17661 1311 4241 566 5347 17662 950 730 4234 5595 17663 427 4821 2031 4985 17664 3635 3584 3630 3973 17665 4001 3936 4996 5250 17666 3046 4834 4367 5602 17667 2712 2613 2624 4774 17668 649 647 1662 4713 17669 1625 1184 1185 4714 17670 970 1624 1125 5008 17671 2267 4270 4879 5520 17672 4103 4530 4181 5288 17673 4064 3822 4397 5035 17674 3232 3187 4658 5169 17675 1494 4928 1765 5293 17676 3035 4158 2566 5115 17677 301 4276 342 4891 17678 3587 1991 3564 5143 17679 3871 4234 4733 5051 17680 897 819 4457 4732 17681 4087 4509 3697 5239 17682 4159 4248 3961 5493 17683 1591 1125 4374 5008 17684 701 4717 688 5186 17685 2805 4914 4823 5516 17686 3750 4420 4233 5442 17687 2691 2807 4779 5285 17688 3969 3287 4841 5201 17689 4040 4745 4120 4865 17690 3520 3483 4066 5525 17691 3355 514 1978 4690 17692 3823 4070 4454 4935 17693 4106 692 5000 5581 17694 4298 5083 3738 5492 17695 2456 2408 2369 4840 17696 4007 4736 1340 5318 17697 2848 3071 4261 5054 17698 4220 4342 3800 5221 17699 1248 1808 4801 5351 17700 4022 4290 3715 4660 17701 554 211 1807 3567 17702 568 193 3455 1701 17703 2065 3983 5211 5642 17704 3976 3786 4403 5023 17705 3977 4403 3786 5023 17706 3766 4404 3976 5024 17707 3766 3980 4404 5024 17708 654 4799 657 5291 17709 4045 4552 3760 5265 17710 1799 1076 1181 5638 17711 3879 4227 3972 4814 17712 4216 4927 3794 5502 17713 3847 4709 4250 5173 17714 1567 1783 1568 4816 17715 1783 1538 1747 4816 17716 4115 3924 4706 5495 17717 2353 4794 2351 5379 17718 4823 4914 3655 5516 17719 1584 768 1398 4870 17720 3430 2013 245 3492 17721 1930 1498 4575 5536 17722 3053 2250 4593 4878 17723 864 1534 1255 4610 17724 927 1413 1672 4611 17725 3683 4385 4225 4691 17726 4028 4877 339 5195 17727 1767 4081 4796 5351 17728 2985 4578 2781 5255 17729 3742 4676 4069 4977 17730 4700 4862 3841 5517 17731 3213 2711 3168 4616 17732 2310 2264 4225 5415 17733 2914 2915 2695 4425 17734 3667 4282 4088 4612 17735 3046 4834 2596 5420 17736 1981 278 3019 3626 17737 475 4690 474 5029 17738 1318 1319 4761 5567 17739 3285 5225 2701 5292 17740 3719 4054 4675 4775 17741 987 986 985 5496 17742 3879 4399 5004 5354 17743 3340 4112 3394 5033 17744 3687 5097 4019 5214 17745 798 4583 809 4869 17746 868 867 1535 4179 17747 2044 2043 2042 4180 17748 2550 4001 4698 5268 17749 4032 784 5451 5620 17750 1879 5019 1829 5424 17751 4111 4296 3656 5522 17752 1047 1357 1719 4749 17753 3850 4697 3988 4813 17754 4571 4648 3070 5301 17755 3170 2601 3173 5514 17756 3671 3975 5104 5390 17757 2500 2385 2499 5628 17758 3429 1987 4745 4865 17759 3980 3812 4571 5564 17760 3682 4154 4104 4989 17761 3834 5039 4128 5188 17762 3767 4094 4261 5054 17763 2797 4519 2834 5081 17764 2336 2073 2070 4271 17765 2287 2288 2286 4272 17766 3824 4192 4859 5080 17767 3994 3689 4813 5638 17768 3970 5272 2417 5382 17769 3224 2235 3205 4411 17770 3955 4080 4602 5536 17771 3980 4714 4765 5564 17772 3857 4636 4004 4955 17773 959 4564 4413 5495 17774 1691 1500 4557 4711 17775 444 521 510 4008 17776 1792 720 701 4975 17777 4256 4392 3745 5202 17778 3673 5007 4384 5059 17779 2200 2198 4286 5434 17780 3143 4285 2127 5435 17781 4156 4590 3894 5064 17782 427 2031 445 4985 17783 1663 525 4866 5046 17784 4415 4883 3884 5040 17785 3949 5130 4592 5276 17786 874 4262 1758 5488 17787 2556 2185 2406 5181 17788 3568 3577 3576 4141 17789 3927 4998 4763 5504 17790 3988 4553 3689 5479 17791 2898 4877 2897 5467 17792 3934 5000 4224 5172 17793 4205 4377 3787 5603 17794 3754 4812 4072 5294 17795 995 4304 4961 5322 17796 3652 4374 4300 5034 17797 4794 4917 2351 5379 17798 3989 4925 393 5033 17799 1180 4136 1668 5205 17800 3483 3526 4066 4792 17801 1712 1331 4550 4831 17802 1999 3367 4726 5608 17803 2485 2534 2399 4579 17804 3944 4415 4372 5040 17805 3800 4879 4058 5596 17806 1806 1405 4657 5579 17807 3751 4420 4328 5576 17808 2860 3165 3214 4625 17809 2269 2262 2263 4626 17810 2493 5066 4266 5321 17811 1947 524 1910 4725 17812 3053 2261 2250 4878 17813 99 553 414 467 17814 3690 4525 4037 4618 17815 1177 1711 1183 4872 17816 4044 4535 4167 5193 17817 1509 1723 1508 4181 17818 3846 4384 5007 5059 17819 2153 2148 2156 5153 17820 2377 2274 4879 5596 17821 3464 4008 4931 4960 17822 2848 3071 5054 5324 17823 4297 5329 2594 5498 17824 3759 4018 4133 5422 17825 4060 4643 4185 5232 17826 4284 4397 3822 5161 17827 2711 5469 4422 5604 17828 1820 4627 1799 5641 17829 3655 4125 4823 5516 17830 2617 4266 5161 5297 17831 4176 4537 4052 5197 17832 1817 4159 1007 5025 17833 2059 4704 2057 4998 17834 3181 4699 4335 5575 17835 1490 3542 3613 5144 17836 2224 3076 2931 4819 17837 2675 4580 2489 5028 17838 2111 2117 2832 4647 17839 893 4868 4331 5617 17840 1199 1200 4880 5582 17841 4121 4767 5279 5608 17842 1603 798 809 4869 17843 951 5320 4503 5641 17844 3921 4036 4843 5090 17845 3466 3467 4291 5158 17846 1985 254 3097 3432 17847 3329 2996 3226 5035 17848 3843 4751 4671 5203 17849 4564 4744 3886 5637 17850 1202 4166 1374 5394 17851 1989 3329 4417 5035 17852 3822 4101 4266 5066 17853 3029 4417 3329 5035 17854 4556 5075 926 5338 17855 1619 4555 1333 5048 17856 1380 4161 659 5119 17857 1574 4636 1424 5447 17858 2528 2469 4697 5479 17859 4253 4735 4186 5487 17860 3200 3204 2614 5076 17861 3097 255 2025 4792 17862 1810 4854 1083 5513 17863 4082 3978 4461 5127 17864 3967 3753 5109 5557 17865 333 399 410 4844 17866 2601 4525 2598 4958 17867 2494 4266 2493 5066 17868 2440 5526 4109 5527 17869 3803 4025 5232 5559 17870 3401 2679 2542 4856 17871 4339 5077 1435 5333 17872 1966 4716 1890 4744 17873 2245 4405 2886 5084 17874 2736 4824 3272 5101 17875 3731 5557 4884 5581 17876 4298 4889 3790 5363 17877 3443 3537 3464 4008 17878 1612 849 4624 5246 17879 3838 4107 4234 4776 17880 3046 3045 4834 5602 17881 3982 4457 4247 5072 17882 2152 4224 2145 5172 17883 3716 4593 4043 4869 17884 815 822 823 4183 17885 4024 5231 4583 5374 17886 3064 65 1975 403 17887 1722 1718 4529 5398 17888 1395 4803 4094 5361 17889 4109 4946 2963 5203 17890 1580 4929 4200 5597 17891 1219 1647 1643 5128 17892 1000 958 4275 5039 17893 507 4769 4520 5629 17894 3721 4461 3978 5168 17895 2988 3158 3155 5061 17896 3783 4713 4455 5454 17897 1185 1186 1187 4631 17898 2273 2468 3228 4630 17899 1045 1113 1112 4632 17900 646 1510 661 4633 17901 1486 1488 1485 4634 17902 1692 1801 1163 4635 17903 4054 3701 4675 4775 17904 767 1481 772 4184 17905 2655 3294 3304 4185 17906 2645 4954 4252 5292 17907 895 718 894 4845 17908 1472 1842 1018 5207 17909 3667 4088 4282 5095 17910 2970 2232 2301 5573 17911 4151 4700 3841 5069 17912 1811 4714 1625 5564 17913 1639 1516 1521 5577 17914 1715 1250 4178 5070 17915 2273 2468 4630 5479 17916 1382 1893 1666 5038 17917 4464 4685 3986 5053 17918 3492 244 1982 2977 17919 3892 4034 4398 5117 17920 1991 292 2034 3587 17921 4209 3800 4635 5103 17922 2150 2895 3212 4721 17923 3200 5076 2614 5368 17924 4158 4245 3905 4941 17925 2544 3068 2407 4458 17926 3809 4571 4442 5405 17927 3207 5145 4327 5359 17928 4062 4886 3862 5013 17929 3855 4461 4082 4916 17930 3800 4220 4635 5103 17931 673 669 670 4784 17932 2416 2415 5243 5453 17933 3849 5164 4108 5388 17934 4300 3868 4834 5034 17935 1516 4671 1517 4892 17936 4208 5156 1788 5616 17937 270 1997 3550 3018 17938 2970 2301 3061 4129 17939 4022 4660 3715 4853 17940 3670 4314 4194 5212 17941 3745 4212 4633 5594 17942 16 1555 569 375 17943 636 635 632 4462 17944 4090 5198 2447 5586 17945 1587 491 4738 5629 17946 4300 4374 3868 5034 17947 3959 4860 4761 5105 17948 302 380 1553 4415 17949 2296 4155 2294 5182 17950 3712 4750 4034 5291 17951 3736 4582 5099 5598 17952 3494 3493 3496 4972 17953 4553 4630 3689 5479 17954 935 1503 1504 4783 17955 1503 1166 1167 4783 17956 1991 3327 3305 5143 17957 1846 4905 1843 5264 17958 2206 2202 4434 5005 17959 2299 4437 2204 5005 17960 4054 4186 4735 5487 17961 645 646 643 5454 17962 3962 4703 3772 5056 17963 1022 1447 948 4500 17964 2474 2400 2896 4499 17965 1785 1179 1561 5299 17966 4093 4675 3701 4775 17967 2347 2351 4794 4917 17968 294 3305 3323 3634 17969 4209 4333 3800 5103 17970 4070 4142 3861 5181 17971 3676 4692 4176 5541 17972 2000 3326 3025 5106 17973 3833 3994 4615 4921 17974 4084 4255 3700 4606 17975 3822 4266 4101 4609 17976 3745 4203 4633 5140 17977 4207 3780 4634 5141 17978 3780 4212 4634 5141 17979 3745 4633 4212 5140 17980 2945 4591 2300 5017 17981 3729 4838 4232 5615 17982 3210 2071 2075 4167 17983 2289 2927 2292 4168 17984 4139 3835 4545 5132 17985 2012 3354 3037 4520 17986 4442 3974 4648 5301 17987 3190 2151 2791 4171 17988 3176 2830 2187 4779 17989 2807 2832 2187 4779 17990 4006 3655 5167 5516 17991 3800 4342 4220 5103 17992 1364 1337 1536 4959 17993 1875 1855 1418 5142 17994 1942 550 1913 4125 17995 3814 4622 4003 4981 17996 338 325 2001 4877 17997 413 1587 491 4738 17998 2366 2365 2364 4176 17999 4843 5090 1249 5440 18000 1661 5219 1453 5223 18001 2259 2254 2260 4926 18002 2031 3405 445 4985 18003 1037 1223 1498 4810 18004 3900 4186 4735 4827 18005 3727 4965 4350 5551 18006 2841 3381 5047 5483 18007 1246 4873 4233 5442 18008 2476 2575 4858 5587 18009 1526 467 497 5162 18010 2670 2491 2671 5166 18011 1954 5004 3992 5230 18012 4076 4719 4418 5071 18013 2440 2480 4109 5526 18014 1318 4761 1367 5624 18015 4078 4779 4239 5308 18016 3175 4958 3964 5514 18017 950 730 921 4234 18018 2145 5172 4224 5610 18019 3227 2696 4102 5572 18020 1661 739 636 5012 18021 3907 4945 4874 5511 18022 2969 2964 3087 4957 18023 4400 4728 3869 5354 18024 3728 4286 4116 5626 18025 1712 1097 1331 4831 18026 2494 5066 2493 5321 18027 3029 2777 3028 5410 18028 3850 3994 4697 4813 18029 4242 4367 3652 4781 18030 599 4263 601 5507 18031 2392 4256 2386 5505 18032 3134 4258 3269 5506 18033 3537 3464 4008 4931 18034 1034 1905 1085 4372 18035 1239 1806 4657 4838 18036 4018 4551 3699 5369 18037 3674 4367 4242 4781 18038 540 1475 368 4355 18039 2432 2604 4076 4990 18040 4045 4405 3760 4552 18041 4170 4587 3814 4785 18042 3574 3553 4673 5645 18043 563 216 3614 1490 18044 559 220 3559 1601 18045 4104 4749 3747 5087 18046 2748 2746 5167 5622 18047 3338 3059 3300 4851 18048 3710 4765 3978 5127 18049 1731 587 590 5422 18050 4311 4777 3684 5170 18051 3707 4318 4778 5171 18052 4110 4476 3904 4491 18053 4052 913 5197 5458 18054 1550 4291 3467 5158 18055 575 3558 203 1798 18056 3385 4853 2845 5589 18057 3943 4974 4146 5123 18058 336 4839 335 4860 18059 3447 1598 169 535 18060 3667 5095 4282 5586 18061 1379 950 921 4234 18062 1123 4645 1613 5093 18063 4690 4973 3943 5123 18064 2423 4475 2491 5007 18065 371 2021 54 3004 18066 4475 5007 3673 5059 18067 2467 2520 2521 4737 18068 3974 3809 4654 5301 18069 3615 3543 3629 4130 18070 3130 2296 2297 4762 18071 4042 4858 3824 5613 18072 718 1733 705 4430 18073 2157 4497 2156 5153 18074 450 448 449 4628 18075 4260 4330 3774 5499 18076 2973 2571 2496 5239 18077 1989 3028 3540 4417 18078 3382 3013 1977 4832 18079 4004 4694 3688 4898 18080 726 725 722 5102 18081 2016 3502 4793 5021 18082 3994 4887 3851 5011 18083 3800 4805 4342 5596 18084 1155 1694 4746 5235 18085 1555 4423 377 5345 18086 3886 4905 4510 5050 18087 868 865 867 4179 18088 2043 2041 2042 4180 18089 4121 5279 3848 5608 18090 2472 5088 4495 5566 18091 3175 2619 4524 4958 18092 1036 4149 1222 5130 18093 2227 4202 2223 5054 18094 3591 3589 3559 4653 18095 455 436 3114 4963 18096 4012 4535 3691 5375 18097 4048 5077 1332 5418 18098 2353 2347 2351 4794 18099 3022 2001 325 4877 18100 3683 4043 4385 5457 18101 2123 2124 4948 5306 18102 2804 2803 4695 5167 18103 3218 5378 4102 5572 18104 270 1997 3583 3550 18105 2195 4507 3093 5626 18106 1202 4166 1853 5539 18107 3724 4723 4170 5485 18108 3834 4162 4128 5039 18109 2350 2185 4454 5181 18110 3714 4214 4704 5504 18111 2886 5084 3993 5126 18112 2403 3080 5267 5300 18113 4042 4626 3677 5415 18114 2281 2280 4874 4945 18115 1957 5309 4039 5482 18116 3830 5072 4729 5421 18117 3741 4207 4631 5145 18118 206 562 3618 3546 18119 2152 2144 2145 4224 18120 2152 2443 2144 4224 18121 2487 2804 2803 4695 18122 1340 4736 4007 5416 18123 2137 2129 2901 4837 18124 729 1815 936 4835 18125 2814 3115 2902 4836 18126 3861 4561 4118 5042 18127 4047 4596 3821 4831 18128 3856 4662 4271 5152 18129 2132 2126 2125 4817 18130 1710 4485 1383 5634 18131 4100 4180 3735 5372 18132 564 1606 172 3500 18133 3802 4569 3976 5441 18134 2435 5212 4640 5290 18135 659 658 655 4799 18136 1799 4627 1196 5638 18137 4192 3674 4859 5080 18138 2710 2332 4741 5604 18139 3745 4323 4203 5140 18140 4207 4327 3780 5141 18141 3745 4212 4334 5140 18142 3780 4334 4212 5141 18143 1189 5024 1190 5405 18144 4242 4859 3674 5080 18145 865 867 4179 5214 18146 2042 4180 2041 5213 18147 1875 4188 5142 5534 18148 2405 2531 2623 5254 18149 4000 4744 3653 4828 18150 3571 3580 3572 4306 18151 822 815 819 4183 18152 1019 5358 1201 5366 18153 4110 4476 3970 5157 18154 4077 4152 3882 4683 18155 725 4977 4601 5102 18156 1874 4141 1876 5424 18157 708 4504 1444 5068 18158 3509 3429 4745 4865 18159 1791 4708 1280 4893 18160 2542 4120 4856 5420 18161 1481 1628 772 4184 18162 3249 3294 2655 4185 18163 3903 4790 4355 4849 18164 3945 4243 4380 4956 18165 2423 2490 2479 5007 18166 852 4503 850 5246 18167 2010 4056 2969 4923 18168 3884 4051 4861 5601 18169 4446 4812 1063 5390 18170 2169 4688 2625 5537 18171 1019 4395 5358 5366 18172 3994 5561 4627 5638 18173 3892 4292 4236 4739 18174 543 1298 4412 5313 18175 1576 227 567 3576 18176 3547 3579 2000 5106 18177 4100 3797 4264 5110 18178 4162 3869 4344 5039 18179 3671 3975 4511 5104 18180 3656 4296 4111 4666 18181 4297 5026 3831 5498 18182 3531 3537 3443 4008 18183 3697 5086 4194 5212 18184 3146 2239 4251 4991 18185 830 3961 5174 5336 18186 2144 2145 4224 5610 18187 2784 5006 2685 5229 18188 3816 4281 4003 4846 18189 1773 4867 1263 5616 18190 893 1870 4868 5617 18191 4121 4767 3868 4907 18192 2407 2408 2486 4840 18193 2522 2987 3198 4825 18194 1384 1421 1160 4789 18195 1705 4932 4189 5634 18196 1488 1489 1510 5441 18197 4028 4891 4877 5271 18198 992 991 993 4961 18199 1630 5304 4968 5481 18200 4053 4179 3687 5214 18201 3759 4055 4180 5213 18202 3052 4753 4261 5376 18203 317 408 3417 4112 18204 3705 4867 4307 5616 18205 3798 4868 4309 5617 18206 1628 4184 1481 5231 18207 3294 4185 3249 5232 18208 2981 2543 4856 5587 18209 2427 4693 2426 5618 18210 3839 4109 4671 4946 18211 4056 4923 3899 4957 18212 2206 4434 2201 5017 18213 3773 4880 4218 5582 18214 1481 4184 4833 5231 18215 3225 5095 4282 5355 18216 3982 4797 3734 5206 18217 220 3594 3559 1601 18218 4133 4699 3962 5056 18219 3803 4185 4060 5605 18220 4058 4457 4183 4732 18221 1762 4303 693 5000 18222 812 5122 4385 5481 18223 1183 1769 1574 4636 18224 1245 1602 1395 4803 18225 3833 3994 4921 5561 18226 1814 4308 1368 5440 18227 4140 3814 4587 4785 18228 1732 1462 1244 4739 18229 3525 4121 1600 4907 18230 3709 4184 4059 5231 18231 4060 4185 3803 5232 18232 3441 2003 233 3027 18233 2651 3320 4143 5036 18234 1081 4144 1261 5037 18235 1604 397 572 4925 18236 4292 5117 3892 5249 18237 3585 3332 298 3573 18238 4196 3695 4630 5125 18239 484 4738 489 4875 18240 3738 5223 4472 5449 18241 3152 3442 2030 4931 18242 3818 4064 4417 5035 18243 4671 4751 3931 5203 18244 403 3064 65 385 18245 3839 4892 4056 4946 18246 3627 3605 3604 4622 18247 3752 4248 4159 5493 18248 3912 4746 4122 4864 18249 1871 225 548 3643 18250 1221 1159 4470 4742 18251 3756 4948 4071 5306 18252 4108 4123 3918 5164 18253 3950 4886 4062 5013 18254 2999 2002 261 3436 18255 3658 4496 4027 4841 18256 3125 5367 4559 5471 18257 4333 5103 3138 5596 18258 3968 1860 5037 5384 18259 4082 4461 4377 5127 18260 884 1782 618 5152 18261 2840 4548 2418 5272 18262 2466 2343 4775 5568 18263 2510 2537 4661 4930 18264 1328 1327 1337 5015 18265 1364 1363 1337 5015 18266 4050 5277 4613 5450 18267 1015 4081 1767 5351 18268 2539 2811 2462 4815 18269 2858 4122 5060 5249 18270 4515 4664 1948 5646 18271 2293 2875 2876 4971 18272 3449 3517 185 573 18273 1477 4536 1751 5025 18274 1679 794 826 4754 18275 725 4601 724 5102 18276 3741 4327 4207 5145 18277 1995 3341 4280 4947 18278 3876 3990 4386 4818 18279 2051 2052 4099 5489 18280 3683 4530 4043 5457 18281 2894 3265 2895 4721 18282 3246 3623 2027 4397 18283 612 4863 613 5065 18284 972 919 4115 5495 18285 3024 2341 2393 4775 18286 4713 4764 3977 5454 18287 4196 4310 3695 5125 18288 807 4936 4667 5206 18289 711 709 712 5100 18290 4176 4466 3676 5541 18291 3226 3063 4221 5066 18292 1789 1381 1428 5116 18293 3491 4065 3490 5303 18294 3246 273 2027 3623 18295 885 4613 1450 5277 18296 3772 4551 4018 5056 18297 4287 3765 4538 5185 18298 3956 5524 4645 5543 18299 3986 3915 4971 4995 18300 1467 998 1469 5074 18301 193 3463 3455 1701 18302 4720 4931 3374 5136 18303 1155 1157 1060 4746 18304 4065 5533 4580 5589 18305 2596 4120 3401 5420 18306 2898 4773 5195 5467 18307 213 3545 3608 523 18308 1999 5279 4767 5608 18309 3783 4567 3977 5454 18310 2632 4641 2637 5262 18311 3976 4655 3786 5023 18312 3786 4656 3977 5023 18313 1357 1047 1050 4494 18314 2957 2956 3173 4493 18315 1080 1278 1840 4496 18316 3910 4228 4707 5189 18317 1506 1826 4452 5030 18318 1189 3980 5405 5564 18319 2181 2375 2376 4705 18320 3441 3461 4709 5173 18321 3628 3561 4359 5606 18322 2915 4051 2017 4883 18323 1211 4309 4897 5358 18324 2401 4805 2276 5596 18325 2277 2273 2265 4740 18326 3769 4448 4014 5254 18327 217 3614 3563 563 18328 3106 4258 3286 4911 18329 2464 4954 4544 5621 18330 4518 4898 3127 5367 18331 1103 1466 1416 4710 18332 1728 1184 4082 5503 18333 2975 4062 3421 5139 18334 1149 1148 1228 4418 18335 917 916 4885 5458 18336 2971 5157 3970 5382 18337 3012 3347 2028 4123 18338 2832 2808 4063 5285 18339 2543 2476 4856 5587 18340 3683 4505 4138 4691 18341 2060 4038 5367 5471 18342 1643 4474 1039 5128 18343 492 4108 544 4994 18344 4302 4463 3657 4903 18345 3824 4626 4042 5613 18346 3784 4644 4045 4754 18347 1284 1588 1906 5022 18348 2515 2514 2394 5294 18349 4127 4512 4035 5299 18350 4236 4607 4292 5249 18351 3747 4154 4104 5087 18352 3984 3713 5063 5227 18353 4016 4544 3755 4873 18354 2168 2350 2185 4454 18355 3377 4791 2926 4888 18356 3305 293 1991 3564 18357 3546 3628 3607 4360 18358 4264 5110 1408 5325 18359 2961 4606 4516 5598 18360 2962 4606 2430 5549 18361 2706 5538 4670 5611 18362 3471 3466 3465 5018 18363 2710 3103 3145 4741 18364 4436 5426 4129 5573 18365 4053 4585 3826 4741 18366 681 673 680 4993 18367 680 694 1410 4993 18368 1437 4549 1439 5151 18369 840 4467 4536 5436 18370 4014 4504 4137 5205 18371 4014 4136 4504 5205 18372 1496 4279 848 5395 18373 3626 1981 279 3597 18374 2178 4757 4361 5455 18375 614 612 613 5065 18376 3829 4599 4048 4789 18377 4333 4879 3800 5596 18378 4027 5037 4496 5384 18379 3524 3483 4791 4792 18380 3756 4718 4285 5041 18381 1922 4008 579 4960 18382 3765 4287 4538 5510 18383 1856 1069 1837 4801 18384 1832 5025 1751 5576 18385 1914 4725 1394 5562 18386 4978 5162 3863 5266 18387 2156 2157 2169 4497 18388 1191 1838 1767 4796 18389 1076 1799 1196 5638 18390 3023 2637 2874 4955 18391 2114 2115 2109 4750 18392 3774 5257 4605 5499 18393 3629 3612 4130 5289 18394 3629 3563 3612 5289 18395 4006 4809 3842 5167 18396 1626 301 1573 4276 18397 1643 1589 911 4731 18398 2162 2161 4231 5113 18399 4224 5000 3706 5172 18400 3811 4717 4211 5462 18401 2059 2192 2057 4704 18402 3274 3121 2192 4704 18403 1346 546 1340 4007 18404 3083 2942 2592 5312 18405 331 387 363 4182 18406 3624 3620 3618 4274 18407 2697 2696 3026 5378 18408 3473 4145 3530 5224 18409 2451 2452 2615 4379 18410 1999 4767 3392 5608 18411 3707 4777 4311 5170 18412 3717 4778 4318 5171 18413 3832 4534 4226 5340 18414 304 1615 365 4866 18415 1149 4418 1228 5600 18416 2859 2344 4100 5372 18417 2056 2058 4998 5478 18418 455 4963 3114 5494 18419 1855 539 223 3556 18420 3663 4226 4077 4534 18421 2884 4222 5041 5401 18422 2320 2317 4965 5423 18423 3719 4186 4054 5487 18424 3432 3485 3486 5020 18425 2780 4295 3123 5124 18426 1344 1952 552 5311 18427 3681 4926 4061 4950 18428 3800 4342 5103 5596 18429 2121 4654 2429 5301 18430 2585 4282 3225 5095 18431 3849 4992 4666 5388 18432 1739 699 4506 5077 18433 1582 4929 1580 5597 18434 1837 1808 4468 4801 18435 3914 4708 4363 4893 18436 486 483 4039 5309 18437 4070 4710 4142 5339 18438 4020 5155 3957 5247 18439 4056 4957 3899 5577 18440 3272 2810 2367 4924 18441 3813 4171 4506 5077 18442 3994 4813 3850 5011 18443 2629 2733 4296 4918 18444 2760 4362 3088 4904 18445 1248 4081 1015 5351 18446 1075 1506 1709 5030 18447 3544 2034 292 3587 18448 486 4039 574 5309 18449 3809 3980 4571 5405 18450 2398 2399 2374 4579 18451 326 1984 69 345 18452 4051 4751 3931 5383 18453 4627 4642 3833 5644 18454 4133 3962 5191 5547 18455 1582 1725 1583 4788 18456 4253 4928 3975 5293 18457 3560 272 2027 3630 18458 472 506 433 3992 18459 703 4352 706 4987 18460 1322 1397 4701 5150 18461 3053 4593 2310 5542 18462 1669 4318 5171 5176 18463 1805 4910 4060 5605 18464 4010 4680 4291 4960 18465 3994 4254 3851 4921 18466 345 1984 3099 4444 18467 1158 1258 1169 5104 18468 3793 4763 4998 5504 18469 1104 4743 1411 5456 18470 295 2000 3579 3323 18471 2296 4762 4155 5182 18472 4720 4931 3852 5590 18473 1762 698 693 4303 18474 1329 4386 1355 5016 18475 2844 2842 2840 4853 18476 3383 3385 5020 5483 18477 807 4667 805 5206 18478 1940 1600 547 4121 18479 2491 4475 3091 5166 18480 3891 4694 4004 4898 18481 3283 2941 3222 4908 18482 585 586 584 4133 18483 3194 2396 4134 5515 18484 1755 4550 1490 5048 18485 3913 4693 4614 5237 18486 208 529 1570 3549 18487 1986 145 456 437 18488 3902 4510 5050 5258 18489 892 1408 4264 5110 18490 825 920 961 4797 18491 3762 4607 5249 5334 18492 2330 4092 2329 5341 18493 3981 3808 4658 5169 18494 297 2019 3585 3025 18495 1130 1775 4088 5337 18496 1041 4101 1042 5338 18497 1582 4788 1583 4929 18498 3847 4844 4112 5091 18499 4475 5166 3844 5430 18500 2326 3208 4086 5359 18501 743 1750 1645 4172 18502 1750 1561 1645 4172 18503 3609 3617 285 3209 18504 2919 4228 2917 5380 18505 3959 5010 3960 5567 18506 3550 3580 2029 4306 18507 4621 5370 4009 5492 18508 355 394 4355 4849 18509 3383 5020 3381 5483 18510 3655 4747 4149 5609 18511 766 4803 1602 5257 18512 3711 4523 4440 5107 18513 2472 4495 5088 5455 18514 423 1563 4108 5614 18515 715 4232 4838 5615 18516 2585 5095 3225 5355 18517 789 1437 793 4117 18518 3029 3028 4417 5410 18519 1526 4533 467 5162 18520 2791 4698 4599 5268 18521 4385 5122 812 5457 18522 3838 4234 4107 4733 18523 686 1739 699 4506 18524 3752 4046 4272 4686 18525 708 1445 1444 4504 18526 2313 3007 2318 4505 18527 693 4303 698 5563 18528 4048 4599 4171 4698 18529 732 4137 952 5579 18530 4063 4562 3791 5285 18531 2626 2627 2625 4688 18532 2483 2667 2539 4815 18533 4242 3870 4859 5080 18534 3667 4304 4114 4612 18535 1623 4094 1396 5361 18536 699 1421 1435 5077 18537 2694 4425 2537 4930 18538 818 904 4192 5080 18539 2324 2983 4965 5551 18540 2326 4086 2328 5359 18541 3881 4734 4565 5059 18542 3377 2926 1993 4888 18543 3938 5068 4504 5094 18544 2441 3221 4139 5527 18545 3052 4261 2222 5376 18546 1292 1282 1291 5009 18547 4669 5179 3314 5555 18548 973 972 919 4115 18549 1227 1091 1533 4678 18550 218 3632 531 1619 18551 3572 4804 3562 5624 18552 2152 2444 4890 5120 18553 3256 4927 2817 5502 18554 2327 2329 4092 5341 18555 4214 4998 3793 5478 18556 1403 4500 1401 5233 18557 1623 1395 4094 5361 18558 1042 4101 926 5338 18559 1130 4088 1657 5337 18560 2751 2750 2671 5166 18561 3923 5311 4962 5645 18562 3057 4565 3393 4709 18563 701 696 688 4717 18564 2044 4100 2344 5372 18565 1192 1193 1772 4156 18566 3675 4659 4421 5471 18567 3791 3981 5089 5285 18568 3886 5050 4510 5258 18569 3606 4622 3599 5356 18570 1615 28 1501 304 18571 3726 4643 4169 4687 18572 2087 2090 2088 4768 18573 4728 4758 3863 5354 18574 693 5000 4303 5563 18575 909 911 910 4731 18576 3218 4102 2696 5572 18577 1798 3558 204 3624 18578 4422 5469 4616 5604 18579 510 521 440 4008 18580 4045 4644 3730 4754 18581 1702 1153 4812 5411 18582 852 850 851 5246 18583 4230 5296 3702 5377 18584 4065 5303 2847 5589 18585 3815 4550 4124 5006 18586 3430 3516 246 3075 18587 4108 5164 3918 5388 18588 1329 4386 1920 5344 18589 2099 2100 2101 4764 18590 2100 2099 2098 4764 18591 3073 2643 2639 4765 18592 2643 3073 2838 4765 18593 2247 2246 4644 5414 18594 3778 4004 4955 5273 18595 3716 4103 4181 5288 18596 1681 1166 1683 4229 18597 2161 2160 2159 4231 18598 1696 790 1386 4230 18599 1553 1902 1304 4861 18600 1326 1270 1325 4243 18601 2025 256 2926 3524 18602 3667 4114 5198 5586 18603 1106 1049 1046 4104 18604 952 1079 1107 4105 18605 4108 4786 3849 4994 18606 3780 4783 4262 5635 18607 4342 4805 3800 5221 18608 226 1576 548 3568 18609 4175 4448 4105 5073 18610 446 509 522 5311 18611 3607 3602 3549 4360 18612 1828 1314 1313 5406 18613 3496 175 561 3498 18614 1926 1296 1924 4809 18615 219 3632 3594 531 18616 580 1886 4761 5105 18617 4010 5590 3375 5622 18618 3799 4395 4026 5358 18619 1509 4181 1508 5288 18620 687 692 691 4106 18621 2183 2373 2374 4107 18622 2374 2373 2398 4107 18623 4204 5151 4549 5477 18624 412 453 4381 5494 18625 2093 2095 2097 4650 18626 2978 2097 2579 4650 18627 2216 2213 2217 4651 18628 2209 2213 2212 4651 18629 1551 652 1430 4655 18630 2221 2212 2216 4651 18631 633 744 743 4652 18632 629 743 1645 4652 18633 1372 1020 1239 4657 18634 2114 2106 2879 4654 18635 1551 1431 1432 4655 18636 649 695 651 4656 18637 650 651 652 4656 18638 2121 2114 2429 4654 18639 649 650 648 4656 18640 2429 2879 2880 4654 18641 1239 1806 1405 4657 18642 1431 1430 977 4655 18643 3232 2103 2105 4658 18644 3232 3187 2147 4658 18645 1405 1107 1372 4657 18646 2101 2103 2147 4658 18647 2093 2978 2091 4650 18648 3941 4613 4050 5277 18649 371 382 53 3333 18650 3746 4260 4087 5239 18651 2813 2562 5346 5365 18652 3060 2824 3183 4755 18653 454 552 4075 5583 18654 4102 4689 3935 5378 18655 3273 2650 2769 4728 18656 2425 4990 4582 5409 18657 1978 4690 514 5123 18658 1235 1333 4555 5159 18659 1235 4555 1336 5159 18660 3660 5267 5300 5531 18661 2769 4978 4758 5266 18662 1989 274 3246 3540 18663 4296 4918 3656 5522 18664 3789 4971 4155 5182 18665 3797 4702 4335 5556 18666 2035 3267 2034 4703 18667 3919 5044 4376 5463 18668 4015 4554 3770 5302 18669 4239 3703 4546 5259 18670 1508 4181 1507 5288 18671 4544 4954 2464 5292 18672 3865 4126 4499 5593 18673 481 506 507 4769 18674 3754 4446 4072 4812 18675 947 4152 4776 5513 18676 513 507 4520 5629 18677 352 347 389 4871 18678 2005 137 441 2974 18679 2745 2744 4508 5431 18680 575 3548 202 3633 18681 2413 2706 2707 4670 18682 3280 3261 2006 5356 18683 4014 4554 4136 5254 18684 2630 2501 3130 4154 18685 3130 2501 2384 4154 18686 2384 2298 2296 4155 18687 2298 2294 2296 4155 18688 2733 2628 2629 4296 18689 1837 1203 1856 4238 18690 2973 4260 2571 5239 18691 1062 4446 1063 5390 18692 1490 1331 1505 5144 18693 2691 2830 2923 4239 18694 3949 4521 4149 4914 18695 2562 5232 3249 5346 18696 3340 3394 2756 5033 18697 1897 4822 1617 5631 18698 1290 1921 4108 5388 18699 2839 3102 4544 4991 18700 3574 3553 3575 4673 18701 1999 237 3050 3522 18702 1522 1612 4624 5014 18703 4200 4929 3782 5597 18704 699 686 4506 5077 18705 2529 2469 2545 4697 18706 1287 4798 1036 5130 18707 1630 4968 4177 5481 18708 4150 4576 3666 4800 18709 1976 283 3627 3557 18710 1832 1477 1751 5025 18711 4026 4395 3661 5366 18712 339 337 309 4028 18713 3683 4103 4530 5210 18714 2791 4599 2816 5268 18715 3808 4562 4063 5169 18716 2897 4499 2896 5467 18717 4440 4523 3911 5107 18718 2867 3305 3327 5143 18719 858 4043 5288 5457 18720 2319 4965 4350 5423 18721 892 1408 5110 5325 18722 2858 3144 2883 5060 18723 3224 2248 2233 4882 18724 4052 4646 3669 4731 18725 4139 4425 3843 5527 18726 4094 4997 1396 5361 18727 3446 1914 3515 4479 18728 3586 4150 3634 5106 18729 3451 3514 243 3054 18730 1597 543 4412 5313 18731 3502 3518 4793 5021 18732 4490 4642 2306 5371 18733 3693 5489 4836 5554 18734 2189 3015 2090 5238 18735 2396 4999 4134 5515 18736 4049 4641 3754 4872 18737 2827 4669 2652 5073 18738 3421 2975 2976 4062 18739 3152 264 2030 3442 18740 1083 1810 1209 4854 18741 730 921 4234 5512 18742 302 1553 538 4415 18743 3626 3561 3019 4359 18744 4246 4714 3978 5078 18745 4014 4393 3770 5501 18746 2285 2282 3193 4248 18747 450 4007 420 5583 18748 3387 3386 2741 4623 18749 3652 4367 4834 5602 18750 314 581 10 399 18751 2604 2680 2603 4076 18752 267 3337 2818 3552 18753 4069 4977 725 5102 18754 1669 1479 4318 5176 18755 2440 2480 2963 4109 18756 3213 3254 2948 4616 18757 3538 4844 3444 5091 18758 2591 4469 4911 5319 18759 3212 4721 3265 5302 18760 3742 4361 4134 5515 18761 2481 2440 2963 4109 18762 1749 4470 1159 5450 18763 1377 4233 1376 5444 18764 618 617 619 5152 18765 1553 1304 4415 4861 18766 4318 5176 1479 5295 18767 3556 3590 3588 4188 18768 584 4133 586 5547 18769 2976 4062 2005 5218 18770 4287 4371 3744 5510 18771 3490 3491 3519 4065 18772 1945 1912 1592 4145 18773 4576 5142 3666 5534 18774 821 920 825 4797 18775 4141 4673 3845 5192 18776 4045 4754 3730 5098 18777 613 4863 4629 5065 18778 3218 2510 2408 5572 18779 1811 1410 4246 4993 18780 2000 2866 3326 5106 18781 733 4070 898 5339 18782 2904 2188 5083 5492 18783 1642 726 722 5464 18784 1557 569 4423 4820 18785 1574 1812 1424 4636 18786 3649 3574 3554 4821 18787 3672 4585 4053 4741 18788 1078 4128 1002 5188 18789 2077 4528 4573 5083 18790 564 4083 3435 5111 18791 1732 4739 4236 5508 18792 585 4133 584 5547 18793 2632 4259 4641 5262 18794 3145 2594 4297 5329 18795 4029 4416 3763 5070 18796 2603 4957 3087 5290 18797 4469 4911 3748 5355 18798 2038 2039 2037 4699 18799 1303 1618 1941 4734 18800 3691 4662 4619 5375 18801 522 427 446 4821 18802 3844 4646 4052 4731 18803 2482 2650 2409 4400 18804 2603 2432 2604 4076 18805 848 755 757 4279 18806 2417 2840 2418 5272 18807 1000 1001 958 5039 18808 4715 3921 5427 5478 18809 2029 269 3550 3018 18810 3401 4120 2542 5420 18811 797 4191 1531 5639 18812 3056 4198 3117 5640 18813 677 5263 3967 5461 18814 1571 637 4263 4943 18815 3251 2036 3051 4724 18816 340 344 325 4877 18817 1399 1330 1098 4785 18818 4030 4753 4148 5376 18819 3871 4903 3991 5051 18820 1111 4742 1220 4743 18821 3250 2683 2492 5429 18822 1743 731 727 4676 18823 945 1206 1743 4676 18824 973 972 4115 5623 18825 393 332 324 5033 18826 1509 1508 1507 5288 18827 1412 4601 725 4977 18828 2981 2678 2576 4074 18829 227 1576 3568 3576 18830 1693 1710 675 4718 18831 1269 1270 1268 5067 18832 1927 1476 573 5525 18833 3206 3225 2585 4282 18834 2510 4661 2408 5572 18835 1435 4339 678 5077 18836 468 471 470 4978 18837 3984 3678 5108 5283 18838 1175 4468 1680 5578 18839 3842 4006 5167 5622 18840 1909 1222 1350 5276 18841 3654 4660 4022 4853 18842 3799 4770 4143 5566 18843 4048 4599 3834 4789 18844 2179 2182 2183 5515 18845 1038 4734 1086 5059 18846 3959 5459 5010 5567 18847 2767 2765 3303 4463 18848 3693 4756 4219 5175 18849 4217 4756 3735 5175 18850 1925 1909 4592 5130 18851 1431 1359 1190 5405 18852 1555 16 377 375 18853 4423 4672 3944 5345 18854 2694 2695 2537 4425 18855 3841 5069 4700 5517 18856 2396 4134 4999 5612 18857 2352 4917 2348 5243 18858 2662 2866 2867 4800 18859 3921 4843 4308 5440 18860 2257 4061 2259 5357 18861 2365 4646 4466 5430 18862 2073 3164 2076 4771 18863 3617 3557 284 3209 18864 3603 1807 211 3567 18865 1222 1036 1025 4149 18866 696 4244 704 5452 18867 3242 4794 2353 5528 18868 2423 2491 2490 5007 18869 1705 4189 1060 5634 18870 4200 4320 3739 4940 18871 3782 4320 4200 4940 18872 1751 5025 4536 5576 18873 3221 2914 2694 4425 18874 2888 3993 5242 5443 18875 2584 4199 2582 5095 18876 3580 268 2029 3552 18877 3024 4775 4259 5262 18878 3742 4234 4107 5512 18879 4194 4314 3697 5212 18880 1016 1017 920 4813 18881 278 3019 3626 3561 18882 4071 4668 3967 5109 18883 2393 2514 4259 5412 18884 3752 4168 4098 5607 18885 2849 4368 2930 5054 18886 384 383 4412 4947 18887 4427 4538 3765 5185 18888 3773 4596 4047 4831 18889 2490 4565 3057 5007 18890 4184 4833 3767 5413 18891 3963 5310 4052 5458 18892 1682 1534 1664 4610 18893 1727 927 1361 4611 18894 2538 4565 2490 5007 18895 3871 4489 4234 5595 18896 539 582 222 3556 18897 3307 3127 2653 4518 18898 4105 4137 3792 5579 18899 4195 4316 3672 4944 18900 3686 4316 4195 4944 18901 699 678 686 5077 18902 4198 3758 4777 5170 18903 3674 4778 4193 5171 18904 1584 1398 1585 4245 18905 1363 1362 5015 5580 18906 960 913 5310 5458 18907 4225 4385 4043 5122 18908 3012 3347 4123 5164 18909 1634 4138 1558 5574 18910 4043 4593 3677 4869 18911 4260 4605 4087 5499 18912 1487 1188 4207 5635 18913 1489 1802 4212 5635 18914 2647 2646 3222 4590 18915 3099 2758 3371 4871 18916 209 1536 529 3549 18917 2700 4544 2464 5292 18918 3501 1564 178 524 18919 4059 4583 3684 4878 18920 2297 2817 3256 4927 18921 1973 1917 1423 4637 18922 3690 3984 5108 5228 18923 3838 4489 4733 5081 18924 3615 1983 288 3543 18925 1804 4080 1499 5536 18926 54 320 371 3004 18927 3692 4473 4015 4896 18928 1763 4080 1804 5398 18929 2167 4589 2165 5131 18930 878 4491 969 5475 18931 4075 5318 4628 5583 18932 1095 1232 4894 4901 18933 1587 413 536 4738 18934 4191 5177 1531 5639 18935 3713 4525 4037 5227 18936 724 725 1412 4601 18937 2381 4377 3178 5127 18938 2612 4864 3161 5435 18939 1403 1022 1401 4500 18940 4005 4414 4812 5411 18941 4287 5185 4538 5510 18942 2923 4239 2830 5308 18943 1329 1356 1920 4386 18944 4099 3804 4543 5489 18945 4236 4292 3892 5249 18946 4111 4688 4296 5522 18947 2149 3270 4915 5155 18948 2851 3035 2566 5115 18949 2322 2710 2332 4741 18950 2249 4878 2226 5393 18951 3845 4683 4278 5019 18952 3058 2008 252 3440 18953 3512 4121 3525 4907 18954 1270 1325 4243 5260 18955 376 323 4280 4947 18956 3619 3620 3621 5410 18957 3877 4492 4066 5525 18958 3844 3963 4696 5310 18959 1868 4897 1201 5358 18960 1906 1283 1284 5482 18961 1913 190 3477 550 18962 547 4121 3437 5224 18963 1654 1696 1386 4873 18964 1362 1328 5015 5284 18965 893 4868 1862 5539 18966 711 713 714 5277 18967 3202 3233 2570 4116 18968 3760 3993 5151 5477 18969 3450 4767 3522 5279 18970 1990 3002 379 5040 18971 1822 1009 1275 4935 18972 4230 4351 3939 4991 18973 1426 4685 841 5053 18974 3817 3985 5015 5284 18975 2868 2869 3371 4887 18976 1855 224 1871 3539 18977 2749 2747 3375 5622 18978 3844 4474 4475 5270 18979 3668 4612 4114 5064 18980 3967 5109 4668 5263 18981 4123 4637 3852 5465 18982 890 887 889 5293 18983 561 1627 176 3452 18984 4002 4700 3841 5047 18985 846 1690 933 4526 18986 4104 4174 3921 4989 18987 2415 2477 4067 5453 18988 1672 1270 1326 4243 18989 310 374 375 4820 18990 339 337 4028 5195 18991 836 928 838 4811 18992 1476 541 187 5525 18993 2164 2161 5113 5220 18994 1119 969 1523 4110 18995 4182 5046 1892 5600 18996 2467 4237 4737 5568 18997 723 5100 4137 5579 18998 4841 5201 2730 5612 18999 1954 5004 1316 5162 19000 926 4556 1118 5075 19001 3799 4657 4395 5358 19002 1715 756 1250 5070 19003 4056 4892 3931 4946 19004 486 483 485 4039 19005 1569 3582 200 545 19006 3280 2006 4267 5356 19007 2912 4398 3094 5117 19008 3365 2847 4065 5303 19009 341 340 339 4891 19010 2710 4741 4297 5604 19011 1957 574 4039 5309 19012 4304 4612 1656 5064 19013 1201 5358 4026 5366 19014 1608 4318 1479 5639 19015 2358 3085 4313 5640 19016 2305 2980 2308 5463 19017 638 639 4435 5012 19018 207 562 3546 3607 19019 2190 4559 4949 5222 19020 3652 4781 4223 5190 19021 1502 801 795 5265 19022 321 72 354 2925 19023 340 301 342 4891 19024 378 380 4415 4861 19025 1026 1223 1037 4478 19026 616 615 617 5445 19027 3042 4384 2676 5178 19028 1731 1824 4213 5110 19029 969 879 1523 4110 19030 2378 4375 3192 5066 19031 3958 4876 4021 5304 19032 3057 2490 2538 4565 19033 2238 2239 2237 4251 19034 1500 1147 1691 4557 19035 4138 4876 4021 5574 19036 4159 5025 3752 5493 19037 3765 4371 4287 5510 19038 2195 2085 4507 4842 19039 2227 2223 3071 5054 19040 2365 4646 2362 5400 19041 485 4039 483 4966 19042 4076 4957 2603 5290 19043 4489 4519 3873 5116 19044 3022 3345 4877 5003 19045 714 4232 713 5615 19046 3870 4834 4664 5034 19047 2472 5088 2428 5455 19048 4041 4450 3893 4829 19049 1792 4975 701 5186 19050 4807 4885 3676 5458 19051 1355 1329 1087 4766 19052 526 1549 1548 5029 19053 1807 212 1400 4981 19054 3994 4615 3689 5638 19055 3268 2306 4642 5371 19056 3162 4237 2466 5262 19057 2755 2538 2754 4565 19058 831 5112 4531 5336 19059 3075 3516 247 3013 19060 3674 4193 4781 5190 19061 3024 4259 2632 5262 19062 3948 5462 4639 5570 19063 1321 1318 577 4804 19064 1872 690 1830 4581 19065 1868 1866 656 4897 19066 3746 4605 4245 5552 19067 1100 1399 1098 4785 19068 1571 601 599 4263 19069 1408 1778 892 4264 19070 2386 2392 2513 4256 19071 1520 1126 993 4257 19072 2973 3096 2571 4260 19073 3024 2393 2632 4259 19074 2222 2848 3071 4261 19075 3286 3269 3134 4258 19076 2494 3241 2493 4266 19077 4839 4860 3883 5459 19078 2458 4477 2713 5028 19079 2852 2706 4126 5538 19080 3769 4523 4136 5205 19081 2180 2181 2172 4705 19082 2892 2571 4260 5115 19083 3970 4853 3654 5157 19084 3840 4805 4342 5221 19085 2373 4107 2183 5515 19086 3461 3472 4709 5544 19087 3884 4372 4930 5314 19088 3235 2054 4857 5478 19089 1879 1876 567 4673 19090 1731 4213 1414 5191 19091 2455 2533 2715 4551 19092 3064 2950 66 4674 19093 3319 2662 2867 4800 19094 398 580 4860 5105 19095 4685 5053 4464 5476 19096 3895 4891 4877 5003 19097 1818 583 582 4653 19098 2979 2255 4311 5636 19099 3055 4338 2270 5636 19100 863 5214 865 5328 19101 3937 4350 4229 4982 19102 4113 4967 3737 5315 19103 534 4780 416 5530 19104 3272 4363 2732 5101 19105 2331 2329 2330 5603 19106 3719 4253 4186 5487 19107 1439 1437 1438 4549 19108 1380 659 1795 5119 19109 1070 1747 1538 4268 19110 2742 1996 3373 5164 19111 3064 66 385 4674 19112 3008 4865 3508 5021 19113 3882 4152 4077 5389 19114 3720 4393 4014 5220 19115 924 923 729 4113 19116 1287 1841 1036 4798 19117 1322 1397 545 4701 19118 1322 1546 1323 4701 19119 1506 4452 1857 5030 19120 3985 3816 5015 5580 19121 1763 1499 1804 4080 19122 1862 1374 1202 4166 19123 1133 1136 1131 4269 19124 2489 2478 2458 5028 19125 2852 4126 2706 5611 19126 338 339 4877 5195 19127 4000 4716 3653 4744 19128 3675 4421 5222 5471 19129 2427 2921 2426 4693 19130 2779 2786 2778 4956 19131 4325 4777 3684 5386 19132 3094 2109 2115 4750 19133 2660 2661 2535 4534 19134 2215 4148 2218 5376 19135 1255 1681 1683 4229 19136 787 790 1696 4230 19137 1376 1377 1247 4233 19138 2161 2159 2162 4231 19139 1806 715 713 4232 19140 4002 3715 5047 5483 19141 2375 2810 2809 5184 19142 2529 4887 2868 4921 19143 1077 5561 3994 5638 19144 456 458 500 4362 19145 3514 244 1982 3492 19146 1728 4082 929 5503 19147 843 4467 5253 5576 19148 4662 5152 3856 5448 19149 1829 5019 4683 5424 19150 1813 4310 5320 5641 19151 3461 4709 4250 5544 19152 1596 4242 905 5080 19153 959 4413 918 5495 19154 1477 837 840 4536 19155 623 619 1759 4535 19156 885 1450 4613 5450 19157 3881 4475 4474 5059 19158 1616 1890 1966 4716 19159 210 554 1536 4959 19160 1275 1011 1865 4406 19161 2027 2776 2996 5161 19162 2489 2714 4513 5028 19163 3215 2342 4253 5287 19164 2283 2281 4874 5553 19165 4219 5175 2049 5554 19166 1281 1174 4666 5009 19167 1783 1567 1744 4498 19168 2742 4918 2734 5431 19169 4541 4594 3725 5519 19170 685 3967 5109 5557 19171 2762 3354 2761 4814 19172 589 591 590 4527 19173 1075 4407 1506 5030 19174 2780 2687 4295 5124 19175 357 330 358 4923 19176 2275 3195 2572 4270 19177 2264 2311 2310 4225 19178 3959 3883 4860 5459 19179 3507 3509 3511 4040 19180 1946 3479 188 541 19181 2750 4947 3346 5160 19182 4013 4557 4135 4711 19183 3771 4172 4116 5163 19184 3902 5258 5079 5591 19185 2379 4132 2821 5417 19186 2582 4199 2583 5114 19187 169 3447 535 3511 19188 4628 5318 4007 5583 19189 3429 1987 239 3048 19190 525 27 1615 365 19191 2309 4376 2308 5099 19192 3719 5287 4253 5412 19193 1478 1608 1479 5639 19194 1478 797 1531 5639 19195 2358 2511 3085 5640 19196 2511 3056 3117 5640 19197 167 547 1600 3437 19198 2515 4072 2394 5385 19199 3482 3480 3456 4888 19200 4025 5346 2562 5365 19201 953 5205 1168 5394 19202 3255 4589 3090 5588 19203 4532 4654 3809 5352 19204 1062 942 4446 5390 19205 785 5045 4032 5451 19206 2434 2431 4640 5548 19207 3622 3624 3558 4064 19208 163 1605 551 3453 19209 3181 3306 4335 5633 19210 2825 5088 4175 5588 19211 2825 4175 2856 5588 19212 3895 4500 4499 5467 19213 760 4416 757 5070 19214 2220 2218 2214 4753 19215 3680 4538 4427 5185 19216 2190 4949 2064 5222 19217 3120 2283 4173 5553 19218 3807 4555 4702 5159 19219 3815 4702 4555 5159 19220 3150 2372 2413 4670 19221 4313 4781 3669 5400 19222 4522 5191 3962 5547 19223 2489 4580 2478 5028 19224 3445 187 541 5525 19225 1318 577 4804 5624 19226 4238 4293 3891 4801 19227 3196 2266 2271 5520 19228 2358 4313 2360 5632 19229 301 1573 4276 4891 19230 556 1943 1933 4479 19231 449 438 3412 4628 19232 1925 1286 1909 5130 19233 900 4283 964 5207 19234 2179 3194 2397 4361 19235 2141 5031 4210 5372 19236 3487 3485 3489 5020 19237 4945 5511 3907 5569 19238 2419 3178 2382 4461 19239 1287 1036 1286 5130 19240 2418 4548 2541 5332 19241 3302 4357 3308 5468 19242 3759 4180 4100 5575 19243 787 4230 1696 5377 19244 2396 3194 4134 5612 19245 4083 4793 3864 4826 19246 4107 4776 4017 5512 19247 4186 4827 3900 5620 19248 3711 4401 4407 5107 19249 3361 2947 4832 5533 19250 2617 4266 3241 5161 19251 1062 1063 942 5390 19252 2486 4661 2537 4930 19253 758 762 4870 5466 19254 368 1475 306 4355 19255 2418 2541 2420 5332 19256 1833 1827 928 4748 19257 2861 2689 2792 4501 19258 3770 4408 4015 5302 19259 3476 3473 3530 5224 19260 3310 2730 5201 5612 19261 4118 3866 4742 5368 19262 3398 236 1999 3475 19263 1605 4250 3459 5091 19264 2054 4214 2055 5121 19265 2481 4109 2963 5527 19266 3352 2010 2969 4923 19267 799 827 826 4754 19268 3811 4639 5462 5570 19269 1615 4716 1616 4866 19270 1088 4344 1790 5039 19271 1105 5016 1104 5456 19272 1782 5447 4354 5448 19273 1782 620 4354 5447 19274 2183 4107 2374 5515 19275 1072 4473 1008 4984 19276 1292 4730 1794 5009 19277 3396 2847 5303 5589 19278 4113 4967 923 5032 19279 1379 1381 950 4489 19280 255 3524 2025 4792 19281 1155 1694 1157 4746 19282 3108 2914 2481 5527 19283 4643 5232 4025 5346 19284 897 819 1745 4457 19285 405 304 366 4866 19286 3877 4066 4791 5525 19287 3096 4260 5239 5323 19288 1770 4163 1725 5597 19289 2023 3278 4839 5195 19290 3466 3468 3467 5158 19291 3833 4921 4254 5561 19292 358 363 387 4895 19293 3840 4499 4805 5221 19294 3860 5305 4430 5452 19295 4544 4991 3102 5621 19296 669 4784 4532 5291 19297 2570 3202 4116 5626 19298 3792 4448 4175 5588 19299 4093 4259 3719 4775 19300 3438 3495 4826 5546 19301 3983 5222 4421 5642 19302 2299 2210 4437 5183 19303 2388 3965 5208 5334 19304 4296 4688 2626 5522 19305 598 5209 4543 5364 19306 1545 1921 1338 4994 19307 2263 3055 2270 5636 19308 2979 2263 2255 5636 19309 3436 2002 261 3469 19310 4467 4536 3751 5576 19311 3866 4613 4240 5450 19312 3367 3040 4726 5608 19313 1505 3608 214 3542 19314 3368 332 3340 5033 19315 1627 1564 177 3452 19316 4028 3840 5271 5467 19317 2166 2337 2173 5131 19318 2763 3427 4790 4849 19319 471 441 137 2974 19320 4161 4900 1380 5643 19321 4485 4789 3829 5333 19322 3436 3468 3466 5018 19323 3028 275 1989 3540 19324 713 4232 714 5277 19325 1868 1211 1866 4897 19326 2467 4737 4252 5568 19327 3364 260 2002 3469 19328 2440 4109 2481 5527 19329 3300 4682 3296 4828 19330 2922 3288 2470 4802 19331 2414 4367 2357 5632 19332 1579 4274 1324 5067 19333 2241 5084 4351 5414 19334 1592 1224 1590 4383 19335 3793 4998 4214 5504 19336 3660 4627 4310 5644 19337 3230 4343 2072 5062 19338 3571 3572 3562 5624 19339 3226 2494 3063 5066 19340 376 4947 4280 5313 19341 1882 1873 1276 4782 19342 4024 4788 3964 4929 19343 2381 2382 3178 4377 19344 1299 1219 1298 5128 19345 3575 4673 3576 5192 19346 2676 3042 3040 4384 19347 1128 1474 1473 5259 19348 885 5277 714 5615 19349 3094 2912 2457 4398 19350 2190 3260 2873 4949 19351 2543 2476 2542 4856 19352 441 138 2005 3079 19353 3437 5224 4121 5279 19354 542 1854 1908 4920 19355 864 1255 867 5214 19356 3034 5183 3971 5286 19357 4493 4909 4024 5514 19358 616 1782 4354 5152 19359 469 441 468 4062 19360 3779 5148 4453 5511 19361 4100 5031 2859 5372 19362 2256 2310 4593 5415 19363 397 384 312 4412 19364 3793 4763 4038 4998 19365 1487 1486 1188 5635 19366 1489 1486 1802 5635 19367 3558 203 3633 575 19368 3807 4555 4130 4702 19369 4130 4555 3815 4702 19370 3148 4670 2707 4790 19371 1157 1705 1060 5634 19372 1710 1383 1157 5634 19373 3500 3499 3518 4826 19374 2489 2675 2478 4580 19375 2053 5121 3020 5555 19376 1167 1166 1165 4392 19377 711 1450 710 4394 19378 1239 1020 976 4395 19379 4243 4360 3945 5260 19380 242 2016 3502 3054 19381 4048 4428 3827 5418 19382 3897 4911 5319 5370 19383 1244 1109 1415 4236 19384 1678 1856 1203 4238 19385 2466 3162 2520 4237 19386 4437 5183 2210 5286 19387 3706 4581 4020 5155 19388 3315 3258 4349 4999 19389 817 4597 1629 5402 19390 1165 1167 4392 5594 19391 1402 1907 4276 5233 19392 2438 2435 3107 4396 19393 506 3992 472 5266 19394 2870 4599 2791 5401 19395 920 1017 1699 4813 19396 1031 1878 1011 4558 19397 1048 1182 1051 4388 19398 1100 1194 1195 4389 19399 1272 4748 1833 5580 19400 3289 4578 2985 5255 19401 2587 2691 2923 4239 19402 2027 2996 4397 5161 19403 1048 4388 1051 5480 19404 1958 1475 1974 4355 19405 4500 5271 3840 5467 19406 2199 2200 2198 4286 19407 826 1114 1679 4288 19408 2231 2230 2933 4287 19409 3308 3274 2954 4289 19410 3143 2123 2127 4285 19411 1005 1646 658 4387 19412 3167 4817 2126 5571 19413 3759 4699 4018 5213 19414 4422 4616 3917 5604 19415 480 502 417 4241 19416 3339 4720 3374 5136 19417 3538 3444 3460 5091 19418 1205 4523 1709 5030 19419 2719 3190 2791 4698 19420 3961 4173 4855 4874 19421 3181 2038 3306 5633 19422 2036 3251 2038 5633 19423 472 3992 5162 5266 19424 3020 5121 4357 5555 19425 1749 1221 1159 4470 19426 3445 4592 3481 5525 19427 1973 1896 4637 4952 19428 1132 1129 5259 5550 19429 2278 3128 2568 4453 19430 1826 1857 1506 4452 19431 2359 2358 2360 5632 19432 1025 1349 1222 4149 19433 2354 4235 2476 5613 19434 3685 4719 4076 5071 19435 2489 2713 2714 5028 19436 3824 4858 4235 5613 19437 4030 4803 3767 5413 19438 3530 4145 1945 5224 19439 2505 4169 2508 5485 19440 2551 2508 4170 5485 19441 2963 2480 2964 4946 19442 697 1822 1830 4294 19443 3833 4510 4254 4921 19444 1357 4494 1108 5251 19445 3961 4855 4248 4874 19446 3475 236 1999 3522 19447 4487 4645 3864 5524 19448 3737 4932 4189 5315 19449 1082 4152 1033 5513 19450 4664 4834 3868 5034 19451 2414 2357 2359 5632 19452 2424 4582 2371 5099 19453 1653 1628 5231 5374 19454 1090 4515 1948 5646 19455 1151 4545 1771 5132 19456 2377 4333 4879 5321 19457 4057 3660 4642 5641 19458 1318 1319 1367 4761 19459 2142 4020 5155 5610 19460 3809 4570 4655 5352 19461 3806 4658 4572 5353 19462 3806 4656 4568 5353 19463 2149 3277 3270 5155 19464 3613 3614 216 1490 19465 3472 234 2003 3363 19466 1342 5318 4075 5583 19467 3028 3621 3540 4417 19468 3323 3579 295 3634 19469 3896 3996 4760 5046 19470 1690 1048 933 4547 19471 3039 4646 2365 5430 19472 501 412 1641 113 19473 3680 4436 4651 5052 19474 4050 4613 3866 5450 19475 2933 2932 2234 4848 19476 2169 2346 2625 4688 19477 1938 1937 1606 4826 19478 4016 1012 5092 5518 19479 849 1522 1612 4624 19480 3528 2030 3442 4931 19481 3744 4371 5451 5510 19482 1151 1779 1771 4545 19483 1921 544 1290 4108 19484 2489 4513 2947 5028 19485 528 1544 1954 5162 19486 2710 3145 3172 4297 19487 1629 1537 4177 5481 19488 2337 4424 3204 5076 19489 816 1580 4200 5597 19490 3372 2737 4974 5281 19491 3002 4883 402 5040 19492 3693 5175 4219 5554 19493 3184 2427 2420 5298 19494 3667 5198 4090 5586 19495 4061 4667 3933 4936 19496 3972 4814 4227 5184 19497 3840 4342 4220 5221 19498 3189 3137 2704 4153 19499 4106 4020 4378 5610 19500 1195 1100 4389 5282 19501 1280 1791 1823 4708 19502 3845 5019 4673 5424 19503 1847 4227 1309 5022 19504 4016 3701 4796 5518 19505 3707 4198 4777 5170 19506 3717 4193 4778 5171 19507 2548 4432 2795 5389 19508 3342 2950 3065 4674 19509 1370 1611 1371 4410 19510 2966 4946 4056 5446 19511 3931 4946 4671 5203 19512 2745 4508 2871 5472 19513 4627 5561 1196 5638 19514 1669 1637 1150 5176 19515 1669 1539 1479 5176 19516 2739 2738 2488 4521 19517 1479 5176 1539 5295 19518 4344 3863 5004 5354 19519 3200 4409 5076 5368 19520 3435 564 172 3500 19521 2252 2247 2251 4552 19522 3286 4911 4258 5565 19523 2195 3093 3202 5626 19524 2570 2197 3202 5626 19525 1646 4387 1005 5491 19526 1459 1456 1844 4299 19527 1541 4884 1451 5557 19528 3878 4742 4118 4743 19529 991 4165 700 5581 19530 4144 4806 3699 5585 19531 3310 3194 4134 5201 19532 4163 4707 3782 5597 19533 2082 3086 3223 4421 19534 3140 2298 4937 4971 19535 1631 100 553 414 19536 2442 2439 4509 5239 19537 3737 4967 3972 5349 19538 890 942 1494 5293 19539 1887 1851 1610 4706 19540 4186 4253 3900 4735 19541 4118 3878 4743 5500 19542 1921 1281 1338 5388 19543 4052 4537 3676 5458 19544 2096 3015 3119 4540 19545 876 877 875 4542 19546 982 981 979 4539 19547 4198 5170 3707 5636 19548 532 4795 1897 5631 19549 1464 1029 1771 5132 19550 1344 552 4075 5311 19551 52 382 323 3333 19552 642 643 4203 5149 19553 2207 2945 2300 5017 19554 3468 3470 3477 5158 19555 3428 190 3477 1913 19556 3791 4562 4063 4900 19557 3096 4260 2973 5239 19558 2191 2910 2908 4889 19559 1656 997 994 4304 19560 223 1855 3556 3596 19561 2070 4271 2071 5519 19562 870 4585 865 5392 19563 2855 4584 2041 5391 19564 3119 4540 3015 5238 19565 1414 4213 1824 5159 19566 1234 1200 4218 5159 19567 676 1693 671 4718 19568 4307 4867 1773 5616 19569 4309 4868 1870 5617 19570 3441 233 2003 3472 19571 1070 4268 1266 5112 19572 2048 2902 4836 5559 19573 3204 2337 2899 4424 19574 1732 4236 1244 5508 19575 2180 2810 2375 4705 19576 3707 4192 5177 5639 19577 1888 1965 579 4008 19578 3829 5077 4339 5333 19579 3398 1999 3367 4726 19580 307 1975 64 403 19581 3604 3599 3606 4622 19582 254 3097 3432 3488 19583 3586 5096 4150 5106 19584 2467 2520 4237 5568 19585 1371 4410 1611 5305 19586 493 487 485 4786 19587 3212 3265 3122 5302 19588 3711 5030 4523 5107 19589 699 1435 678 5077 19590 1667 5209 598 5364 19591 3102 2464 4544 5621 19592 4106 4378 4224 5610 19593 3643 226 548 3568 19594 3776 5186 4346 5508 19595 3049 3366 3397 4745 19596 1629 4597 810 5122 19597 4105 4448 3769 5073 19598 2565 4118 2557 5042 19599 4217 3798 4756 5175 19600 4219 4756 3798 5175 19601 3632 218 3563 1619 19602 3570 3569 4761 5624 19603 2000 296 3547 3025 19604 2897 2854 4499 5467 19605 3993 4405 4117 5084 19606 508 1917 576 4637 19607 2926 257 1993 3433 19608 4015 5120 2524 5302 19609 979 4539 981 5071 19610 2241 4351 2243 5414 19611 1638 630 1773 4307 19612 1870 1866 1373 4309 19613 660 1787 1368 4308 19614 2401 2400 2276 4805 19615 3299 2739 3288 4802 19616 3844 4731 4474 5270 19617 1687 4255 978 5532 19618 1207 4226 1082 5513 19619 4107 4234 4776 5512 19620 2467 4252 3217 5568 19621 2283 4874 4173 5553 19622 1758 4262 874 5540 19623 3851 4850 3997 4871 19624 1520 1541 1451 5557 19625 1772 4752 1836 5486 19626 1638 4307 1773 5616 19627 1866 4309 1870 5617 19628 1002 1078 1021 4128 19629 1516 1515 1517 4671 19630 1119 4110 1523 5331 19631 2723 2724 2777 4380 19632 1800 1788 4208 5156 19633 1628 4583 774 5386 19634 2901 2934 2137 4347 19635 720 1815 729 4346 19636 1864 1840 1206 4345 19637 2814 3263 3115 4348 19638 3091 2423 2363 4475 19639 4185 4880 4060 5605 19640 3480 3482 3481 4888 19641 556 4479 1933 5419 19642 2983 2952 3133 4350 19643 2244 2243 2242 4351 19644 2165 2164 2163 4353 19645 703 707 706 4352 19646 1473 1237 1132 4546 19647 3761 4390 4211 5570 19648 1459 1456 4299 5449 19649 3015 4540 2096 5238 19650 555 464 424 105 19651 2232 2231 2233 4356 19652 3302 2089 3308 4357 19653 4368 5054 2849 5324 19654 1643 911 971 5619 19655 2987 3192 2572 4375 19656 4069 3991 4977 5102 19657 2904 2188 2903 5083 19658 1658 1136 1700 4369 19659 2930 3158 2988 4368 19660 3777 4689 4102 5378 19661 2153 2156 2171 4364 19662 692 4106 687 5581 19663 2085 3014 2083 4366 19664 3618 3619 3546 4274 19665 1049 4104 1106 5578 19666 952 4105 1107 5579 19667 1986 145 437 2989 19668 238 3510 3048 3050 19669 4000 4822 3902 5079 19670 730 727 731 5512 19671 3989 4947 4412 5160 19672 3990 4818 3876 4969 19673 1517 4671 1659 4751 19674 1728 4916 4082 5078 19675 1984 326 69 3066 19676 3634 294 3305 3564 19677 3723 5219 4462 5630 19678 2268 3220 3174 5307 19679 1473 1237 4546 5259 19680 959 856 918 4413 19681 2402 4733 2373 5051 19682 3840 4901 4220 5043 19683 4075 4278 3923 4985 19684 3868 4745 4040 4907 19685 502 463 460 4241 19686 2767 2766 2765 4463 19687 3448 3501 178 524 19688 1341 1381 4489 5116 19689 1200 1057 4218 5582 19690 863 5328 861 5558 19691 4499 4500 3840 5467 19692 3440 3490 3487 5303 19693 1881 14 310 381 19694 3449 3520 3483 4066 19695 2608 2634 4953 5240 19696 1814 1368 1719 5440 19697 2425 3157 4990 5409 19698 2231 4356 2232 5573 19699 2745 5431 4508 5472 19700 1256 870 880 5204 19701 2348 3183 3312 4755 19702 818 903 904 5080 19703 1254 1253 4852 5421 19704 1498 1499 1260 4810 19705 1086 4734 1303 5057 19706 1018 900 964 5207 19707 1864 4345 1206 5366 19708 3263 4348 2814 5365 19709 451 5038 4963 5494 19710 1516 4892 1521 5577 19711 399 333 314 4925 19712 732 723 4137 5579 19713 3626 3600 3602 4359 19714 3083 2594 5329 5498 19715 1779 1771 4545 5132 19716 1240 4426 1771 5132 19717 2576 4277 2577 5587 19718 713 4232 715 5615 19719 3754 4005 4812 5294 19720 1057 1055 4831 5582 19721 996 1008 1072 4473 19722 2163 4353 2164 5113 19723 1285 4146 5343 5344 19724 304 28 1501 353 19725 4129 4356 3909 5573 19726 3581 3572 3550 4306 19727 2379 2284 2286 4855 19728 3174 3220 2918 5189 19729 2466 2343 3024 4775 19730 419 506 478 4520 19731 619 617 622 5445 19732 3706 5172 5155 5610 19733 3757 4825 4097 5553 19734 1807 3603 212 4981 19735 2664 4773 2898 5467 19736 3445 188 3479 541 19737 2573 2421 2478 5157 19738 2302 2303 5044 5300 19739 2668 3348 5258 5591 19740 3690 4618 4013 5408 19741 2707 4670 2706 5538 19742 1132 1473 4546 5259 19743 3895 5271 4500 5467 19744 3852 4952 4680 5509 19745 992 4961 994 5425 19746 3096 5239 2973 5323 19747 2968 2934 4347 5114 19748 1123 1138 1613 4645 19749 1028 988 1515 4382 19750 3881 5007 4475 5059 19751 805 820 813 5206 19752 2929 4198 3056 5170 19753 906 4193 1637 5171 19754 4308 3921 4857 5427 19755 3281 4518 3127 5367 19756 371 320 372 4649 19757 3105 4469 2586 5095 19758 3830 5538 4126 5611 19759 1726 4668 667 5643 19760 2377 4333 3138 5596 19761 1600 1598 168 4907 19762 1995 2750 3341 4947 19763 1540 461 416 107 19764 308 395 396 4883 19765 1844 4299 1456 5449 19766 4058 4805 3800 5596 19767 353 351 313 4716 19768 859 1558 883 4385 19769 2674 2738 3360 4521 19770 535 1559 170 3511 19771 733 4710 4070 5339 19772 3137 2299 2204 5005 19773 2206 3137 2202 5005 19774 3074 3358 2853 5003 19775 3844 5128 4696 5166 19776 1630 1122 4968 5304 19777 2560 4175 2825 5566 19778 2769 4758 3407 5266 19779 516 477 415 4146 19780 3865 4499 4500 5221 19781 1278 1863 1859 5384 19782 2215 2219 4148 5376 19783 482 2994 129 493 19784 2237 3205 4411 5126 19785 2219 4819 4148 5376 19786 824 819 4732 5470 19787 1481 1580 1581 5231 19788 2199 2945 2201 5490 19789 1382 4381 1908 5116 19790 1291 1293 4301 4952 19791 4223 5008 970 5619 19792 885 714 721 5615 19793 714 713 715 5615 19794 494 492 487 4994 19795 3549 1570 208 3607 19796 979 1687 4539 5348 19797 3516 3434 247 3013 19798 2089 4357 3020 5121 19799 4375 5066 2378 5321 19800 3483 3526 3449 4066 19801 2409 2650 3238 4728 19802 3856 5055 4465 5062 19803 3129 3186 282 4622 19804 3852 4123 5465 5472 19805 2897 2854 2896 4499 19806 2889 4829 2887 5443 19807 2041 2040 5213 5369 19808 3601 210 1536 4959 19809 3785 4679 4055 5200 19810 1862 4868 4166 5539 19811 2045 2108 4217 5175 19812 2049 4219 3092 5175 19813 1012 5442 1191 5518 19814 4037 4557 3740 5403 19815 3660 4310 4196 5644 19816 1604 581 10 314 19817 2148 4684 5153 5252 19818 1254 1253 1310 4852 19819 3900 4986 4848 5335 19820 1739 5077 4506 5418 19821 3353 4883 3002 5040 19822 1941 1949 551 4250 19823 1273 1272 1833 5580 19824 3727 4588 4086 5551 19825 614 613 4629 5065 19826 589 5422 588 5585 19827 4458 4672 3887 5165 19828 2695 2537 4425 4930 19829 2001 4877 2898 5195 19830 259 3364 3399 3521 19831 1753 4613 1450 5450 19832 2048 4836 2050 5554 19833 989 5132 4023 5330 19834 1605 163 3459 3453 19835 2792 4305 5215 5327 19836 4223 4781 3669 5190 19837 3725 4044 4594 5445 19838 1191 5442 4796 5518 19839 2610 2698 2563 5249 19840 1579 4274 5067 5432 19841 3433 2926 256 3524 19842 2569 3098 3061 4516 19843 3077 2269 2986 5613 19844 4187 3655 4809 5609 19845 1331 1330 1505 5144 19846 3403 2001 2898 5195 19847 2354 2476 2986 5613 19848 4145 5178 4726 5544 19849 4270 4926 3681 5520 19850 1655 865 4585 5328 19851 3578 4141 5096 5106 19852 2656 4440 2623 5468 19853 3851 4887 3994 4921 19854 3876 4830 3990 4969 19855 3631 3608 4140 5144 19856 4011 4638 3722 5463 19857 4285 4718 3912 5041 19858 3616 3628 5410 5606 19859 3807 4699 4335 5633 19860 1283 1906 5309 5482 19861 1608 5171 4318 5639 19862 389 345 70 3099 19863 3068 3335 3069 4458 19864 1796 1178 1425 5448 19865 1782 1425 5447 5448 19866 1425 1183 1574 5447 19867 1782 1425 620 5447 19868 589 4055 5422 5585 19869 878 4491 877 5245 19870 1464 1771 1240 4426 19871 2495 2555 5168 5618 19872 1332 5077 699 5418 19873 2027 3623 3560 4397 19874 885 1803 1749 5450 19875 1308 4769 1903 5230 19876 1318 4894 1232 5567 19877 2442 2973 2439 5239 19878 2795 2796 2802 4432 19879 3976 5023 4403 5441 19880 885 1753 1450 5450 19881 1663 1892 525 5046 19882 2720 4825 2522 5553 19883 2674 4521 4914 5453 19884 3560 2027 273 3623 19885 569 310 1881 15 19886 4667 4936 4061 5206 19887 105 555 464 1317 19888 14 1881 543 381 19889 4484 5049 3694 5439 19890 3158 5061 4368 5378 19891 2833 4733 4519 5081 19892 3511 1559 170 3505 19893 3858 4993 4639 5275 19894 443 3369 124 4720 19895 3675 4559 4038 5471 19896 3451 3518 3499 4793 19897 1533 4678 1121 5093 19898 4031 4512 3671 5104 19899 1545 486 91 421 19900 575 1323 1546 4284 19901 3679 4011 4503 5300 19902 590 4527 592 5110 19903 4098 5148 3752 5607 19904 3792 4589 4353 5588 19905 1153 4460 4812 5411 19906 1018 1841 4486 5207 19907 3732 4206 4330 5499 19908 1643 971 4474 5619 19909 3200 2673 4409 5368 19910 1246 4233 1376 5442 19911 333 393 4925 5033 19912 1420 1919 4850 5011 19913 3365 3400 250 3491 19914 1977 249 3400 3431 19915 3148 3150 2707 4670 19916 1226 1533 1121 5093 19917 1789 1428 1314 4302 19918 1464 1771 4426 5132 19919 3723 5360 4573 5630 19920 55 1990 320 3004 19921 2345 3092 4219 5179 19922 1017 4813 1016 5638 19923 483 4966 4039 5309 19924 3528 2030 264 3442 19925 2714 2947 2489 4513 19926 2739 3298 2740 4445 19927 3337 267 3637 3552 19928 1828 4601 1412 5595 19929 1282 1290 1291 5388 19930 3871 4601 4302 5595 19931 3083 5329 4021 5498 19932 1947 3513 179 524 19933 434 494 487 4786 19934 2092 4480 3015 5238 19935 3272 3239 2732 4363 19936 3854 4373 5210 5592 19937 2057 3121 2055 4704 19938 4193 3669 4781 5190 19939 1277 1404 668 4679 19940 2562 4025 5232 5346 19941 3451 242 3502 3054 19942 908 1637 4193 5197 19943 3047 3346 2750 4947 19944 2780 3123 2687 5124 19945 975 968 4614 5069 19946 2321 2955 2312 5210 19947 3938 4303 4119 4987 19948 3374 4931 2030 5136 19949 1490 215 3542 1505 19950 3665 4556 4101 5338 19951 34 391 306 1475 19952 2595 4419 2741 5026 19953 1737 1257 4488 5398 19954 3844 4696 4431 5166 19955 4392 4783 3937 5474 19956 4016 4954 4544 5292 19957 3046 4367 2414 5602 19958 3635 3625 3633 4284 19959 1892 5046 1230 5600 19960 4194 5086 985 5269 19961 1839 1809 622 5193 19962 3063 2725 4221 5187 19963 3354 3038 3037 4875 19964 582 3590 222 3556 19965 3911 5107 4289 5468 19966 4523 5030 3911 5107 19967 908 4193 906 5190 19968 678 5077 4339 5461 19969 4352 4710 1466 5339 19970 908 909 910 5197 19971 1266 5112 4268 5326 19972 107 416 1540 534 19973 1529 1935 561 4972 19974 1124 1662 647 4713 19975 1184 1625 1760 4714 19976 2710 4297 3172 5604 19977 2424 4582 5099 5409 19978 835 836 837 4686 19979 793 789 4117 5296 19980 269 2029 3550 3580 19981 423 4108 494 5614 19982 3470 3521 3478 4823 19983 4869 5288 3716 5374 19984 3918 4123 4952 5472 19985 3501 177 1564 3452 19986 1173 1172 1279 4992 19987 3549 209 1536 3601 19988 4401 5107 3711 5226 19989 1103 954 733 4710 19990 3865 4805 4499 5221 19991 3704 5017 4591 5490 19992 3587 1991 293 3564 19993 3738 4535 4012 5223 19994 688 684 683 4717 19995 4532 3809 4655 5352 19996 2383 2381 2638 5127 19997 3873 4963 4007 5038 19998 2715 4603 4551 5397 19999 1102 4249 1335 5237 20000 4055 4679 3699 5585 20001 1582 1770 1725 5597 20002 816 1582 1580 5597 20003 2377 3138 2274 5596 20004 2276 2271 2274 5596 20005 237 3050 3522 3450 20006 2954 2885 2527 4401 20007 980 1148 1149 4719 20008 176 561 3452 3496 20009 441 469 473 5218 20010 1820 1204 1196 5561 20011 1288 1848 1287 4492 20012 1702 1063 1062 4812 20013 2858 2610 4122 5249 20014 943 4328 1838 5576 20015 1301 1890 1300 4744 20016 4107 5051 3742 5515 20017 909 1624 4223 5190 20018 3623 3622 3625 4397 20019 4052 5310 913 5458 20020 290 2011 3593 3051 20021 4033 4563 3688 5545 20022 3237 3275 2767 4903 20023 3697 4023 4509 5496 20024 985 4194 1044 5552 20025 2325 2324 4195 5551 20026 543 312 13 381 20027 4583 4869 3716 5374 20028 2789 3251 4724 5633 20029 3768 4915 4119 5001 20030 3680 4483 4436 5052 20031 4410 4717 684 5452 20032 2207 2206 2201 5017 20033 1729 1404 1869 5200 20034 4311 4626 3707 5636 20035 3707 4626 4338 5636 20036 4708 3890 4824 5022 20037 3472 3441 3461 4709 20038 3671 4511 4031 5104 20039 1160 1360 1000 4789 20040 2859 3304 5031 5556 20041 3923 5019 4075 5311 20042 2142 5155 4020 5247 20043 494 423 492 4108 20044 1995 4280 323 4947 20045 1679 792 4939 5444 20046 2220 2892 3052 4753 20047 1301 4744 1300 5050 20048 732 953 952 5205 20049 3183 4755 2348 5523 20050 2925 1992 318 4849 20051 3539 1855 224 3596 20052 3899 4957 4418 5577 20053 3440 252 3058 3489 20054 2042 2344 2044 5575 20055 1658 4369 1839 5156 20056 1342 4075 552 5583 20057 1345 5019 4673 5645 20058 2072 4343 2068 5211 20059 834 833 832 5082 20060 2249 2979 4311 5170 20061 1669 4318 1608 5171 20062 1737 5398 4488 5521 20063 201 1546 545 4701 20064 2693 3255 3090 5588 20065 2564 2565 2614 5368 20066 567 228 1880 4673 20067 863 4019 5214 5328 20068 422 470 4978 5266 20069 447 454 4075 5583 20070 3437 4121 3527 5279 20071 3435 4083 3506 5111 20072 4318 5171 3707 5639 20073 354 2925 318 4849 20074 1789 1828 1412 5595 20075 2525 4401 2885 5217 20076 3711 4554 4015 5226 20077 978 4255 1514 5532 20078 1879 4673 1345 5019 20079 2857 2353 3242 4794 20080 1842 4190 1861 5207 20081 3502 2016 3008 5021 20082 4009 3738 4621 5492 20083 640 4435 639 5149 20084 2784 2785 3295 4124 20085 556 3515 181 1914 20086 3697 4382 4023 5496 20087 2983 2319 2320 4965 20088 3099 4444 2758 4871 20089 1875 1818 4188 5534 20090 441 473 138 3079 20091 3643 1871 225 3539 20092 3717 4318 4198 5473 20093 3598 4267 3541 5356 20094 1571 4943 4263 5539 20095 1254 5233 4729 5421 20096 3883 3959 4860 5567 20097 4974 5123 3943 5399 20098 1321 4804 1397 5180 20099 3854 5210 4103 5592 20100 4974 5281 2667 5399 20101 2339 2340 2338 4735 20102 4429 4825 3757 5553 20103 1454 4472 1661 5223 20104 3330 2463 3317 4598 20105 146 3088 456 500 20106 3986 4685 4464 5476 20107 3547 297 3585 3025 20108 1786 4450 1441 5599 20109 2730 2533 4841 5484 20110 3755 4827 4186 5092 20111 3426 2872 3369 5465 20112 3897 4911 4469 5319 20113 3870 5034 4664 5646 20114 1506 1075 1436 4407 20115 2577 4277 2575 5587 20116 671 4370 4718 5280 20117 2229 5426 4436 5573 20118 2195 4842 4507 5626 20119 4130 3807 4724 5289 20120 3696 4160 4924 5350 20121 1863 944 1859 5244 20122 1743 944 731 5244 20123 3863 4758 3992 5004 20124 3672 4585 5204 5392 20125 3773 4687 4060 5582 20126 1758 935 4262 5540 20127 642 4203 1685 5202 20128 1346 4007 1340 5318 20129 3931 4892 4056 5256 20130 2808 5169 4063 5285 20131 2585 2584 2582 5095 20132 199 1569 577 4804 20133 3711 4407 5030 5107 20134 2349 2276 2400 4805 20135 1420 1419 1919 5011 20136 1358 1357 1108 5251 20137 4262 5002 3727 5540 20138 584 1375 4522 5547 20139 755 848 1496 4279 20140 3437 1600 167 3525 20141 3598 3600 3597 4267 20142 3863 4978 4533 5162 20143 4076 4418 3899 4957 20144 194 3463 1701 579 20145 3315 4999 4349 5612 20146 1597 543 1298 4412 20147 3747 4155 4526 4937 20148 1103 1416 1110 4240 20149 1202 1862 4166 5539 20150 3989 5057 3881 5160 20151 1930 1498 1910 4575 20152 3264 2563 4607 5334 20153 1494 5104 1169 5316 20154 3754 4465 4005 5294 20155 4014 5220 4393 5501 20156 1198 1213 1030 5004 20157 3858 4639 4358 5275 20158 306 369 355 4355 20159 1375 1601 584 4522 20160 2305 2303 2304 5463 20161 669 4532 662 5291 20162 3438 3495 3499 4826 20163 3275 2863 2176 4903 20164 2152 3122 2444 5120 20165 3093 4507 2081 5360 20166 3206 3104 2716 5586 20167 3638 200 3582 545 20168 3353 2915 2017 4883 20169 4405 4552 4045 4644 20170 4293 4737 3794 5502 20171 3992 4758 3879 5004 20172 2304 4011 5300 5531 20173 1385 681 1811 5564 20174 3350 2536 4620 4886 20175 776 1650 1522 5014 20176 528 1526 497 5162 20177 559 221 582 4653 20178 3825 4746 4189 5634 20179 4268 5112 3718 5326 20180 2783 2789 3067 4130 20181 4365 5080 3870 5646 20182 1345 1344 5019 5311 20183 4022 4853 3715 5483 20184 4196 4310 3689 5644 20185 1653 5231 4024 5374 20186 3129 282 3606 4622 20187 4118 3861 5042 5456 20188 4026 4495 4143 5036 20189 4144 4496 4027 5037 20190 4337 5432 4064 5433 20191 2476 2575 2986 4858 20192 2820 2821 4132 5417 20193 563 1619 1333 5048 20194 497 1526 98 467 20195 3910 4451 4286 5049 20196 4039 4665 3849 4992 20197 1829 4683 1082 5424 20198 585 587 586 4133 20199 4289 4357 3911 5468 20200 3175 2600 2619 4958 20201 364 4182 363 5248 20202 26 525 331 365 20203 5018 5167 4006 5622 20204 4857 5427 3921 5478 20205 1828 1789 1314 4302 20206 3164 3009 2079 4771 20207 412 5038 451 5494 20208 1699 1253 4604 4852 20209 1281 5009 4666 5388 20210 359 360 357 5446 20211 2576 2577 2575 5587 20212 2664 2898 2897 5467 20213 1687 978 1514 5532 20214 4016 5092 4675 5518 20215 616 618 1782 5152 20216 210 3567 554 4959 20217 2531 2827 2652 5073 20218 2602 4618 2599 5408 20219 3193 2459 4248 5148 20220 1983 3051 289 4724 20221 1262 1656 4612 5064 20222 3094 4750 2115 5117 20223 1200 1199 1057 5582 20224 1054 1199 1805 5582 20225 4973 3943 5123 5399 20226 3669 4341 4223 5270 20227 620 1424 5065 5447 20228 2506 4643 3249 5387 20229 5031 5232 3294 5559 20230 3455 3463 3465 4960 20231 4361 4757 3940 5455 20232 3570 3571 3569 5624 20233 4124 3611 5135 5144 20234 2852 2708 2706 5538 20235 1890 1501 557 4716 20236 3538 3460 3529 4112 20237 2897 2896 2664 5467 20238 3759 4527 4055 5422 20239 1260 1259 4810 5521 20240 834 927 1727 5082 20241 2420 2427 2426 5618 20242 2077 4573 2903 5083 20243 3146 3102 4991 5621 20244 2681 3100 4923 5248 20245 1330 1399 523 4140 20246 4241 4904 3878 5027 20247 1205 1506 1857 5030 20248 991 700 692 5581 20249 1541 692 687 5581 20250 4412 5057 3989 5160 20251 2950 319 66 4674 20252 1758 874 935 5540 20253 4389 4785 3814 5282 20254 598 4543 600 5364 20255 372 374 371 4649 20256 3023 3260 3219 4955 20257 3527 4121 4767 5279 20258 4193 5190 908 5197 20259 2439 4509 5239 5526 20260 4152 4579 4077 5389 20261 1156 1049 1106 5578 20262 1405 952 1107 5579 20263 1175 1680 1049 5578 20264 732 952 723 5579 20265 3280 4267 2984 5255 20266 385 66 319 4674 20267 1874 1576 1876 4141 20268 2465 3217 4252 5568 20269 3433 257 1993 3482 20270 702 4987 4294 5563 20271 4133 5191 586 5547 20272 3726 4687 4388 5480 20273 2040 4018 5213 5369 20274 2485 2548 2795 5389 20275 1974 1475 540 4355 20276 2866 3323 2867 4150 20277 565 1961 1519 5383 20278 887 886 888 5092 20279 2395 3285 4216 5225 20280 1402 4276 1573 4891 20281 1885 4844 1891 5091 20282 3651 4079 4782 4973 20283 2228 4436 2229 5426 20284 317 333 4112 5033 20285 4144 5037 3666 5534 20286 347 4444 4795 5631 20287 4310 4627 3660 5641 20288 4125 5158 4809 5609 20289 3831 4645 4487 5524 20290 499 2007 143 430 20291 1804 1932 1934 4602 20292 3045 3046 2414 5602 20293 2435 4640 2433 5290 20294 1942 4125 1350 5609 20295 3118 4477 2458 5341 20296 988 987 989 5496 20297 1127 4317 1129 5550 20298 3082 4315 3201 5548 20299 3201 5548 4315 5549 20300 2755 3394 3393 5173 20301 495 4123 504 4637 20302 1244 4236 1415 5508 20303 3101 4909 4493 5514 20304 2716 3225 3206 4282 20305 1731 892 1824 5110 20306 320 1990 55 379 20307 3340 332 317 5033 20308 1229 1901 1652 4895 20309 1168 4523 1205 5394 20310 2618 2850 4560 5297 20311 1270 4243 5067 5260 20312 2071 4594 2069 5519 20313 452 450 451 5038 20314 3215 2943 2342 5287 20315 3382 3361 2947 4832 20316 3809 4654 4570 5352 20317 3806 4572 4656 5353 20318 3806 4568 4658 5353 20319 4354 5152 1782 5448 20320 809 4583 1628 5374 20321 2504 3249 4643 5346 20322 3873 5038 4381 5494 20323 274 3246 3540 3623 20324 377 4423 372 5345 20325 1596 905 903 5080 20326 323 1995 52 3333 20327 4358 4639 3948 5275 20328 2757 3003 3356 5040 20329 3454 4290 3485 5419 20330 304 1615 27 365 20331 4186 4253 3719 5293 20332 4308 4843 3921 5427 20333 100 1631 498 414 20334 2649 2648 2529 4921 20335 3586 3634 3579 5106 20336 4366 4462 3733 5630 20337 5086 5212 3942 5269 20338 3469 3364 260 3521 20339 1835 943 1838 5576 20340 1832 1751 1835 5576 20341 2564 2556 2557 4561 20342 1261 5037 4144 5534 20343 1765 1494 1748 4928 20344 2041 4584 2120 5369 20345 930 4471 882 5196 20346 4006 5167 3378 5516 20347 2722 4380 2723 5187 20348 921 4776 4234 5512 20349 4114 4612 4304 5064 20350 4188 3592 5142 5143 20351 2432 2603 2433 5290 20352 4329 4799 3712 5497 20353 3746 4087 4605 5552 20354 2004 3412 438 4628 20355 3114 436 1998 4963 20356 3900 4827 4032 5620 20357 633 4652 629 5261 20358 3780 4634 4212 5635 20359 4207 4634 3780 5635 20360 3332 2019 3331 4459 20361 2025 4791 3379 4792 20362 319 2950 67 388 20363 2034 291 2011 4703 20364 313 1501 29 353 20365 761 760 764 4416 20366 714 5277 4232 5615 20367 4358 4817 3948 5570 20368 3840 4028 4773 5467 20369 3575 4459 4673 5192 20370 2247 4405 2245 5414 20371 3914 5101 4708 5482 20372 944 922 731 5512 20373 446 447 426 5311 20374 433 497 528 97 20375 187 3520 1476 5525 20376 3340 3368 48 332 20377 4615 3833 4642 5644 20378 2339 4735 4253 5487 20379 1147 5074 4557 5403 20380 1138 1137 1139 4876 20381 3819 4560 4635 5103 20382 3820 4635 4560 5103 20383 1598 3447 168 4907 20384 1165 4392 1061 5202 20385 4315 4847 3670 5548 20386 2465 2467 3217 5568 20387 863 4019 5328 5558 20388 1356 1898 1540 4830 20389 2915 2967 4051 5203 20390 2701 4502 2828 5292 20391 2602 2599 2949 5408 20392 1443 4605 1398 5257 20393 1058 1768 956 4443 20394 4322 5118 3216 5357 20395 844 932 1680 5087 20396 2141 2859 5031 5372 20397 4546 5259 3703 5550 20398 4416 3680 4651 5052 20399 4260 5323 4330 5499 20400 376 383 323 4947 20401 1455 4147 1457 5449 20402 1763 1499 4080 5521 20403 831 4531 832 5336 20404 4228 4842 3926 5129 20405 1376 1246 1386 4873 20406 3748 4269 4088 5337 20407 4790 4849 3903 5538 20408 2742 2734 2743 5431 20409 2850 5058 4560 5297 20410 586 1731 1414 5191 20411 1414 1336 1375 5191 20412 3921 5090 4843 5440 20413 2022 72 321 2925 20414 1812 4694 4636 5381 20415 1360 1002 1000 5188 20416 616 617 618 5152 20417 685 672 4668 5263 20418 841 839 838 4685 20419 1360 1332 1101 5188 20420 3895 4891 4276 5233 20421 1914 3446 180 1947 20422 3186 3627 282 4622 20423 3512 3527 3525 4121 20424 508 425 1917 4637 20425 955 1620 1092 4885 20426 347 346 4444 5631 20427 1526 1960 4533 5162 20428 2112 4857 4348 5236 20429 3740 5074 4707 5403 20430 3363 4726 3042 5178 20431 199 577 3562 4804 20432 2224 2219 2223 4819 20433 801 4667 802 5265 20434 2966 4056 2010 5446 20435 91 574 486 1545 20436 626 4619 624 5375 20437 4926 4950 3681 5520 20438 4510 4921 2649 5591 20439 3892 5060 4122 5249 20440 3628 3561 3602 4359 20441 3519 3513 3446 4725 20442 3197 4787 5319 5370 20443 3509 3510 3512 4745 20444 1706 4719 1230 5623 20445 1076 1016 1181 5638 20446 2244 2839 2828 5460 20447 2582 2583 2581 5114 20448 4530 5288 4043 5457 20449 3336 299 3332 3573 20450 15 569 310 375 20451 2353 4794 5379 5528 20452 422 472 470 5266 20453 389 4444 3099 4871 20454 2340 2338 4735 5621 20455 1611 4410 684 5452 20456 1977 249 3431 3503 20457 507 419 513 4520 20458 672 676 671 5263 20459 2573 4853 5157 5589 20460 1319 580 1886 4761 20461 2990 4378 2139 5610 20462 587 4133 585 5422 20463 4201 4319 3708 5052 20464 3763 4319 4201 5052 20465 4016 4873 3755 5092 20466 1817 1007 1832 5025 20467 1554 1304 1905 4372 20468 3281 3127 2086 5367 20469 1527 553 4533 5013 20470 3888 4695 4067 5379 20471 3783 4567 4633 5140 20472 3766 4634 4569 5141 20473 3802 4633 4567 5140 20474 3802 4569 4634 5141 20475 1481 763 1580 4833 20476 1507 4530 860 5457 20477 532 31 305 5631 20478 1847 1353 1309 4227 20479 2324 4965 4195 5551 20480 1592 1945 4145 5224 20481 4024 4929 3709 5231 20482 2239 2238 3146 4251 20483 1788 1263 4208 5616 20484 1936 530 1937 5546 20485 1866 4897 4309 5617 20486 1088 1790 1001 5039 20487 1739 699 5077 5418 20488 1529 1936 1935 5546 20489 212 3545 1400 4981 20490 4822 5079 348 5631 20491 4254 4921 3994 5561 20492 4553 4630 3734 5125 20493 4230 4873 3939 4939 20494 1572 854 1820 5641 20495 3428 1913 4125 5276 20496 3386 4623 2013 4979 20497 618 621 4662 5152 20498 1179 1560 1561 4964 20499 3819 4342 4220 5043 20500 3669 4223 4731 5270 20501 3188 3139 2332 4422 20502 3217 2645 2465 4252 20503 3356 2486 2537 4930 20504 3937 4588 5438 5474 20505 2197 5490 4286 5626 20506 3689 4630 4553 5125 20507 2320 2324 2983 4965 20508 491 4769 481 5629 20509 2802 2796 1998 4963 20510 4330 5323 3732 5499 20511 4615 4697 3689 5479 20512 187 3445 3520 5525 20513 1095 1831 1232 4901 20514 539 1875 1818 4188 20515 3091 3095 5166 5430 20516 2136 4684 2148 5252 20517 3710 4631 4566 5145 20518 3347 2028 4123 5465 20519 2062 4559 2190 5222 20520 620 5065 4354 5447 20521 3467 3455 3466 4291 20522 2768 1994 3303 4157 20523 1375 5191 4522 5547 20524 828 5174 4438 5336 20525 538 4415 1554 5345 20526 4220 4342 3840 5043 20527 350 305 31 5631 20528 3028 275 3540 3621 20529 2674 4914 2477 5453 20530 995 4961 993 5322 20531 1948 1090 1227 4515 20532 3622 3540 3620 4417 20533 1993 258 3399 3456 20534 4070 4454 4142 5181 20535 2053 2054 2055 5121 20536 1053 1054 1052 4687 20537 689 4324 596 5209 20538 1540 461 4830 5530 20539 312 543 13 1597 20540 2826 2560 2825 5566 20541 3885 5021 4083 5111 20542 144 499 437 4969 20543 4130 4702 3815 5229 20544 1667 598 600 5364 20545 3499 3495 3514 4617 20546 3766 4566 4631 5145 20547 4048 4789 3834 5188 20548 3279 3266 2829 5148 20549 4554 5302 3245 5501 20550 311 359 5194 5446 20551 2320 4965 2319 5423 20552 3459 4250 3461 5091 20553 608 4563 1676 5342 20554 3521 3470 3469 4823 20555 2527 4401 2525 5226 20556 1407 4273 1694 5235 20557 3904 4491 4433 5475 20558 1616 1615 1501 4716 20559 42 315 398 1953 20560 1630 4177 1537 5481 20561 4123 4637 495 5614 20562 2477 4914 4067 5453 20563 4469 5095 3105 5355 20564 4329 5119 4799 5497 20565 3131 2621 2513 4982 20566 168 3525 1600 4907 20567 1983 2789 3251 4724 20568 650 734 648 5023 20569 1551 1432 734 5023 20570 1190 1485 1432 5024 20571 1187 1190 1189 5024 20572 4065 4725 4479 5562 20573 1632 1786 1441 5599 20574 3485 3454 3484 4290 20575 2760 3088 3370 4904 20576 587 585 588 5422 20577 1432 734 5023 5441 20578 2971 4476 5157 5382 20579 2948 3382 2947 4513 20580 3230 2068 4343 5519 20581 1083 4226 1207 5513 20582 430 2007 143 2770 20583 1472 1018 4486 5207 20584 505 515 429 5396 20585 378 396 380 4861 20586 1410 1236 1811 4246 20587 997 1656 1074 5064 20588 995 994 993 4961 20589 427 445 446 4985 20590 2164 4353 2175 5220 20591 3154 3147 2230 4427 20592 2775 3973 5058 5297 20593 4065 4580 3654 5589 20594 3631 4140 5135 5144 20595 3880 4363 4160 4924 20596 1618 1086 1038 4734 20597 2626 2629 2628 4296 20598 1012 4016 5442 5518 20599 2674 2488 4521 5453 20600 3840 4500 4499 5221 20601 633 629 631 5261 20602 2785 4124 2784 5229 20603 3483 3481 3433 4791 20604 1717 1176 1732 4739 20605 547 1940 4121 5224 20606 383 4947 376 5313 20607 3084 2705 3196 4247 20608 2792 4305 2793 5215 20609 3677 4626 4597 5177 20610 4597 4626 3824 5177 20611 3834 4379 4275 5274 20612 333 410 317 4112 20613 3361 4832 3400 5533 20614 2442 5239 4509 5323 20615 1066 1142 5108 5283 20616 1058 4443 1034 5314 20617 637 601 1571 4263 20618 2513 2620 2386 4256 20619 1520 1484 1126 4257 20620 2632 2393 2514 4259 20621 978 1675 1514 4255 20622 2892 2571 3096 4260 20623 3286 3106 3269 4258 20624 2222 3052 2848 4261 20625 935 1504 1758 4262 20626 1408 1777 1778 4264 20627 1268 1267 1269 4265 20628 2617 2493 3241 4266 20629 3829 4485 4441 5274 20630 4150 5142 3642 5143 20631 1389 4660 1391 4919 20632 3398 3363 235 3439 20633 3611 3609 4124 5135 20634 3870 4859 4235 5420 20635 1525 987 985 5496 20636 1732 1244 1415 5508 20637 1019 4395 1020 5358 20638 2073 2071 2070 4271 20639 2288 2287 2289 4272 20640 1135 1746 1133 4391 20641 2986 4858 3078 5407 20642 926 5075 823 5338 20643 2800 2031 2801 4985 20644 372 375 374 4423 20645 2971 4476 2421 5157 20646 4727 5459 3883 5567 20647 2466 4237 2520 5568 20648 4147 4009 5146 5449 20649 2144 2990 2139 5610 20650 3309 2911 3110 4934 20651 1626 37 301 390 20652 2986 2575 3078 4858 20653 3374 3375 3152 5590 20654 447 445 438 4985 20655 2061 4659 2059 5471 20656 2303 2301 2302 5044 20657 812 4385 883 5481 20658 2701 2828 2700 5292 20659 1550 1924 568 4291 20660 4012 5223 4535 5375 20661 2573 2845 4853 5589 20662 3335 4458 2544 5165 20663 1496 1497 1116 5560 20664 3502 3008 3508 5021 20665 572 1597 1895 4412 20666 3340 317 4112 5033 20667 4018 4806 4133 5422 20668 759 4200 1580 5466 20669 3875 4815 3998 5281 20670 567 3576 228 4673 20671 4107 4999 2374 5515 20672 2702 2467 4737 5502 20673 4393 4721 3770 5501 20674 4390 5252 2135 5627 20675 2437 2496 4314 5239 20676 2783 4130 3067 5229 20677 2702 3217 2467 5502 20678 345 1984 70 3099 20679 3428 4125 3478 5276 20680 4010 5018 4291 5622 20681 584 4522 1601 5547 20682 1064 1063 1065 5390 20683 443 444 504 4720 20684 1634 4876 1137 5304 20685 2237 2240 3205 5126 20686 533 1609 1931 4290 20687 1074 1262 1193 5064 20688 1957 4039 4992 5482 20689 437 2989 144 4969 20690 881 5196 4321 5503 20691 2981 4074 2576 5587 20692 1846 1217 1843 4905 20693 3793 4843 4332 5427 20694 1773 1193 1263 4867 20695 893 1870 1862 4868 20696 3410 2735 2731 4665 20697 4692 5473 3717 5640 20698 3042 3363 3398 4726 20699 992 700 4165 5425 20700 2692 5089 3187 5285 20701 1111 1220 1307 4743 20702 3852 4637 4123 4952 20703 2141 5031 3294 5559 20704 3095 4431 2751 5166 20705 3568 3578 4141 5096 20706 3506 3435 3518 4083 20707 3723 4462 4366 5630 20708 4541 3725 5211 5519 20709 2430 3136 2962 5549 20710 1127 1129 1130 5550 20711 2434 3136 2431 5548 20712 985 1044 1525 5552 20713 3082 3201 3136 5548 20714 1130 1131 1657 5550 20715 3201 3136 5548 5549 20716 1525 1117 1648 5552 20717 2325 2326 2324 5551 20718 3208 2387 2326 5551 20719 2523 2720 2522 5553 20720 2051 2049 5554 5555 20721 2051 2345 2049 5555 20722 3120 2523 2283 5553 20723 2053 3020 2051 5555 20724 2859 2344 3304 5556 20725 931 881 4321 5503 20726 3720 5068 4394 5100 20727 458 4780 4362 5530 20728 3804 4857 4348 5489 20729 3431 250 3400 3491 20730 979 978 1687 5348 20731 2487 4695 2913 5379 20732 3902 4795 4444 5631 20733 2287 2286 2285 4855 20734 1729 4326 593 5200 20735 2591 2586 4469 5319 20736 1538 1266 1070 4268 20737 4721 5302 3770 5501 20738 2551 4170 2552 5485 20739 2835 4169 2505 5485 20740 4727 4894 3960 5567 20741 1641 479 501 112 20742 850 796 849 5246 20743 2420 5332 3995 5618 20744 2922 2921 3299 4802 20745 476 442 102 5029 20746 3664 5028 4513 5469 20747 4277 4858 2575 5587 20748 590 592 892 5110 20749 3664 4080 4810 5521 20750 3502 2016 241 3008 20751 1915 1595 1141 4664 20752 3402 2003 3363 5178 20753 3512 3450 3527 4767 20754 4396 5212 3697 5526 20755 4548 5047 3715 5483 20756 631 632 4462 5219 20757 3804 4308 4857 5427 20758 3874 4580 4065 5533 20759 3952 5153 4684 5252 20760 1259 1689 1670 4433 20761 3598 3541 3599 5356 20762 2002 3378 3395 5516 20763 3461 3462 3472 5544 20764 3385 3058 3383 5020 20765 1228 5577 1901 5600 20766 884 618 4662 5152 20767 3548 1546 201 4701 20768 331 363 364 4182 20769 1172 1791 1280 4893 20770 912 914 4537 5458 20771 1953 4860 1320 5138 20772 2950 2009 67 388 20773 1228 4418 5577 5600 20774 1657 1131 1136 4269 20775 893 4331 1644 5617 20776 3717 5176 4318 5473 20777 1285 1317 4146 5344 20778 640 1566 638 4435 20779 2201 2202 2200 4434 20780 1747 829 827 4438 20781 2228 2216 2217 4436 20782 2204 2210 2205 4437 20783 2203 2205 3174 4439 20784 3116 2623 3160 4440 20785 2017 2915 2967 4051 20786 2874 3230 2072 5062 20787 2339 3215 2342 4253 20788 2837 2836 2615 4441 20789 2000 296 3579 3547 20790 350 31 1617 5631 20791 2955 2956 2957 5542 20792 2955 3053 2310 5542 20793 2215 2218 2219 5376 20794 878 879 4491 5245 20795 2465 4954 2343 5568 20796 395 367 361 5194 20797 1484 4257 1520 5557 20798 131 490 2992 431 20799 4035 5216 1116 5560 20800 1987 3429 3008 4865 20801 2517 5240 2608 5385 20802 1257 5204 4488 5398 20803 1493 1634 1137 5304 20804 1247 1376 4233 5442 20805 2112 4348 3263 5236 20806 1230 5046 1970 5623 20807 3513 3448 179 524 20808 3926 4842 4366 5129 20809 164 551 1912 3453 20810 4182 4760 3996 5046 20811 4322 4630 3734 5357 20812 3374 3152 4931 5590 20813 3729 4050 5529 5615 20814 1202 1853 1862 5539 20815 828 4438 829 5336 20816 2769 1980 4978 5266 20817 3439 235 3398 3475 20818 1284 4708 1823 5022 20819 1142 5063 1720 5227 20820 3874 5028 4580 5533 20821 572 12 312 397 20822 532 1617 31 5631 20823 239 3510 3429 3048 20824 828 1742 1114 5174 20825 3601 3567 210 4959 20826 1504 4783 1802 5635 20827 989 1771 1029 5132 20828 1985 3381 3383 5020 20829 2133 2132 2125 4648 20830 3280 2984 2985 5255 20831 4758 4978 3863 5266 20832 1448 549 1449 5271 20833 1196 5561 1077 5638 20834 3989 3847 4925 5033 20835 2265 2920 2277 4740 20836 1879 1880 1345 4673 20837 3292 4787 3197 5370 20838 1308 1903 1309 5230 20839 1256 4585 870 5204 20840 4120 4515 3885 4856 20841 1146 1723 1583 4788 20842 682 4639 680 5462 20843 578 1345 4962 5311 20844 1362 928 1727 4811 20845 2827 3314 4669 5179 20846 4335 5556 3313 5575 20847 64 1975 307 2991 20848 543 4820 1889 5313 20849 2585 3105 2586 5095 20850 3428 3477 3470 4125 20851 2282 2283 2281 4874 20852 1924 4291 1550 5158 20853 480 466 465 4157 20854 4592 5130 3877 5525 20855 2510 2537 2486 4661 20856 1288 1927 1735 4492 20857 3653 4851 4828 5637 20858 3339 3374 2030 5136 20859 3780 5438 4588 5474 20860 2377 2274 2275 4879 20861 3062 3389 3388 4617 20862 2140 2135 5252 5627 20863 361 5256 386 5383 20864 1033 4152 947 5513 20865 4512 5299 1730 5395 20866 3529 3533 3457 4112 20867 2474 4499 2854 5593 20868 959 1851 1846 4564 20869 3891 4898 4004 5273 20870 706 4352 1466 5339 20871 2034 3544 291 4703 20872 2876 3149 2790 4995 20873 228 3553 1880 4673 20874 1755 1490 563 5048 20875 4693 4802 3913 5298 20876 3582 1569 199 4804 20877 3858 4501 4246 5275 20878 3879 4227 4814 5230 20879 1343 4683 1829 5019 20880 2969 2680 3352 4957 20881 1199 1200 1778 4880 20882 1923 1701 568 4960 20883 3821 4550 4124 5144 20884 592 5110 4527 5325 20885 3717 5171 4318 5176 20886 2467 2466 2520 5568 20887 530 4826 1937 5546 20888 642 641 643 5149 20889 1544 433 528 97 20890 801 805 802 4667 20891 3352 2681 3100 4923 20892 201 545 3638 4701 20893 3220 4524 2918 5189 20894 3880 4708 4824 5022 20895 3013 3384 3075 4979 20896 3015 4480 2090 5238 20897 1884 4962 1345 5645 20898 638 636 639 5012 20899 2062 2190 2064 5222 20900 436 450 449 4963 20901 3093 2079 3010 5163 20902 2629 4296 2626 5522 20903 1712 1057 1055 4831 20904 303 357 358 4895 20905 3595 4724 4522 5289 20906 3606 282 3627 4622 20907 3642 3634 4150 5143 20908 4113 5032 923 5350 20909 401 408 317 4112 20910 538 1304 1554 4415 20911 491 481 560 95 20912 433 497 472 5162 20913 449 153 436 3412 20914 2673 2764 2765 5027 20915 1129 4317 1128 5259 20916 3195 2275 2267 4270 20917 1934 4602 1627 4972 20918 843 4467 844 5253 20919 2949 5238 4013 5408 20920 3590 582 221 4653 20921 34 570 391 1475 20922 1967 1621 4696 5362 20923 3330 3325 2728 4996 20924 2416 2352 2470 5243 20925 1235 1414 1824 5159 20926 1234 1235 1200 5159 20927 3310 4134 3194 5612 20928 3080 2302 2248 5300 20929 3768 4935 4070 5339 20930 4079 4973 2728 5399 20931 4138 5328 866 5574 20932 4141 4574 3832 5106 20933 2067 5211 4541 5642 20934 3451 3502 3518 4793 20935 2307 5044 2303 5463 20936 3670 5212 4640 5548 20937 3277 3324 2727 5247 20938 525 331 1542 26 20939 1558 4138 866 5574 20940 3882 4736 4007 5318 20941 3181 4335 3313 5575 20942 3521 3399 259 3456 20943 3909 4356 4287 5573 20944 474 4690 418 5218 20945 3545 212 3603 4981 20946 4368 3954 5061 5473 20947 4037 4788 3713 5227 20948 1591 1594 1940 4374 20949 4013 4618 3740 5380 20950 312 12 572 1597 20951 3789 4685 4046 5436 20952 1285 4146 1306 5343 20953 3775 5179 4669 5555 20954 544 492 89 423 20955 3007 2311 2335 4691 20956 2177 2863 2182 5051 20957 2495 2426 2555 5618 20958 3363 3472 234 3439 20959 3513 3519 3504 4725 20960 1986 146 3088 456 20961 1105 4386 1329 5016 20962 3049 4745 1987 4865 20963 2852 4126 2708 5538 20964 3714 4704 4988 5504 20965 124 428 443 4720 20966 1557 1881 569 4820 20967 4150 4576 3832 5096 20968 378 402 396 4883 20969 1254 4729 1252 5421 20970 3600 3601 3549 4068 20971 955 917 916 4885 20972 1142 1067 5108 5228 20973 2617 5161 2776 5297 20974 1926 1924 1550 5158 20975 1562 1702 4414 5411 20976 2700 3102 2464 4544 20977 2149 2150 2145 5172 20978 1880 1345 4673 5645 20979 912 913 914 5458 20980 3826 4741 4297 5329 20981 3500 3518 3435 4083 20982 2808 3187 5169 5285 20983 1606 530 173 4826 20984 3913 5137 4445 5298 20985 2829 4502 2701 5225 20986 1102 1335 1471 5237 20987 3149 4995 2835 5485 20988 702 4294 697 5563 20989 3386 2013 3075 4979 20990 1501 29 557 313 20991 1403 1402 1894 5233 20992 2033 4112 3529 5173 20993 4034 4750 4398 5117 20994 1485 1488 1432 5441 20995 129 2026 2994 482 20996 3858 4246 4993 5275 20997 87 508 1917 576 20998 862 4530 869 5097 20999 1800 1821 1788 5156 21000 3875 3990 4974 5281 21001 3793 4715 5427 5478 21002 3116 2623 4440 5254 21003 2369 4840 2368 5541 21004 924 938 1524 4967 21005 2033 3394 4112 5173 21006 3463 3443 3464 4960 21007 1908 1382 1641 4381 21008 992 4165 4961 5425 21009 1837 1248 1808 4801 21010 4310 4627 3689 5644 21011 989 5330 4023 5496 21012 2236 2235 2234 4848 21013 1083 1207 1082 5513 21014 1658 5156 1800 5337 21015 1472 4486 1850 5237 21016 2295 4762 2296 5182 21017 4223 4341 3673 5270 21018 634 608 1676 5342 21019 1942 1913 1350 4125 21020 2575 2577 3078 4277 21021 3689 4627 4615 5644 21022 2382 4377 2334 5272 21023 1497 1730 5299 5395 21024 3200 2614 2673 5368 21025 2275 2274 2267 4879 21026 3593 2011 291 4703 21027 1091 1227 1090 4515 21028 706 4987 4352 5339 21029 1651 33 391 349 21030 1396 4997 1577 5361 21031 1579 1578 1324 4274 21032 2849 5324 3026 5378 21033 4496 5037 1081 5384 21034 2698 4607 2563 5249 21035 1553 4415 380 4861 21036 3671 4005 5240 5385 21037 3922 4868 4166 5278 21038 3240 2153 4608 5627 21039 238 3510 3050 3450 21040 2164 2893 2161 5220 21041 4758 5004 3863 5354 21042 2608 2634 3009 4953 21043 2339 4253 2342 5487 21044 4678 4968 1121 5093 21045 2116 2117 2111 4647 21046 634 606 608 4763 21047 3339 124 3369 4720 21048 2193 4390 2135 5627 21049 3648 4761 3555 5105 21050 1124 1461 1662 5154 21051 2585 3105 5095 5355 21052 3595 3543 4724 5289 21053 1164 1725 4163 5403 21054 2792 5215 2822 5327 21055 3666 4576 4150 5142 21056 2295 2395 2297 4762 21057 1569 1397 1321 4804 21058 2884 2130 4222 5401 21059 4072 4812 4446 5390 21060 4066 4492 3841 5517 21061 850 1632 796 5599 21062 3084 2705 4247 5611 21063 2858 2610 3144 4122 21064 4052 5197 4537 5458 21065 312 4412 383 5313 21066 3652 4781 4367 5602 21067 3804 4857 4214 5427 21068 4009 5428 4298 5492 21069 3333 3341 3006 4280 21070 1530 4455 4913 5154 21071 4431 4696 3928 5166 21072 3321 3316 2729 5036 21073 1860 1867 1210 5037 21074 4265 5112 1267 5326 21075 3542 3613 215 1490 21076 3763 4416 4651 5052 21077 4299 5146 4009 5449 21078 862 860 869 4530 21079 4007 3873 5038 5416 21080 2249 2928 2979 5170 21081 1669 1608 1059 5171 21082 3439 3473 3475 4726 21083 3460 3529 4112 5173 21084 4523 5205 3769 5394 21085 1072 4408 1674 5425 21086 4783 5474 4392 5594 21087 2877 2833 3237 4519 21088 2559 3169 4174 5236 21089 3654 4853 4022 5589 21090 3834 4275 4789 5274 21091 2839 3146 3102 4991 21092 943 1366 4328 5253 21093 3367 3040 3042 4726 21094 1105 1329 1355 5016 21095 2066 2072 2068 5211 21096 2167 3255 2165 4589 21097 2953 2387 3208 4588 21098 413 488 93 1543 21099 3910 5049 4286 5434 21100 1385 1359 1622 5405 21101 4303 5000 3706 5563 21102 1462 1176 1646 5491 21103 1317 1920 555 5344 21104 2225 2223 4202 5393 21105 326 388 68 5079 21106 312 384 383 4412 21107 2045 4217 3179 5391 21108 2652 2656 2623 5468 21109 1788 1773 1263 5616 21110 1870 893 1644 5617 21111 3378 2999 3376 5018 21112 1043 4916 1728 5078 21113 470 467 4533 5162 21114 442 1904 102 5029 21115 3800 4805 4732 5221 21116 2919 3141 5129 5380 21117 376 4280 4820 5313 21118 4206 3774 4330 5499 21119 2402 2373 2182 5051 21120 2445 2446 2447 5198 21121 1868 1211 4897 5358 21122 4056 4946 3931 5446 21123 1711 4663 1068 5381 21124 1846 1532 959 4564 21125 2051 5489 4099 5554 21126 310 376 374 4820 21127 2378 3192 2494 5066 21128 2844 2573 4853 5157 21129 1312 1854 4920 5406 21130 3895 4276 4891 5003 21131 3372 2007 2812 4969 21132 1666 1641 1382 4381 21133 3476 5224 3437 5279 21134 859 4385 812 5457 21135 2065 5211 2067 5642 21136 2784 4124 5006 5229 21137 1071 4531 831 5112 21138 1846 1532 4564 5264 21139 1981 4359 2786 5255 21140 108 460 416 4780 21141 3948 4639 4993 5275 21142 1734 975 1848 5069 21143 3229 4196 3262 5267 21144 4120 4834 3870 5420 21145 4088 4269 3703 5550 21146 1462 4739 1176 5491 21147 3463 194 3443 579 21148 1001 1790 958 5039 21149 3022 3345 2001 4877 21150 2752 3348 5079 5258 21151 3667 4282 4114 5586 21152 3001 4439 3174 5189 21153 984 4194 985 5269 21154 314 393 397 4925 21155 2309 5099 2371 5598 21156 1219 1643 1039 5128 21157 2928 2929 3056 5170 21158 906 1637 1059 5171 21159 1060 4189 937 5315 21160 368 36 540 390 21161 4692 5061 3954 5473 21162 3447 3525 168 4907 21163 2719 4698 2550 5250 21164 2028 125 435 3369 21165 3375 3376 2020 5622 21166 3163 3166 2712 4774 21167 1926 550 1942 5158 21168 756 760 757 5070 21169 4198 4318 3758 5473 21170 3175 4524 3220 5307 21171 2758 2649 2868 4921 21172 3673 4475 4474 5270 21173 483 484 431 4966 21174 3116 5254 4554 5501 21175 4615 4627 3833 5644 21176 2281 2280 2282 4874 21177 2123 2119 2118 4948 21178 4076 4719 3685 4990 21179 322 1961 20 370 21180 2591 2588 2586 5319 21181 2833 4519 2797 5081 21182 2860 3189 2704 4153 21183 922 4776 921 5512 21184 3778 5262 4237 5273 21185 3515 3446 181 1914 21186 2461 2168 3270 5535 21187 2461 4454 2168 5535 21188 2245 5084 2241 5414 21189 1647 1589 1643 5310 21190 2059 2058 2060 4998 21191 3927 4988 4704 5504 21192 4601 4977 3991 5102 21193 2834 4519 2877 4772 21194 1302 1086 1303 5057 21195 3071 2849 2930 5054 21196 2370 2309 2308 5099 21197 307 362 63 5248 21198 428 521 4720 5136 21199 1587 413 491 94 21200 359 361 311 5194 21201 2981 3391 3390 5021 21202 3865 4732 4805 5221 21203 2635 5254 3116 5501 21204 1204 4254 1197 5561 21205 3706 4581 4294 5563 21206 3821 4587 4140 5135 21207 2804 2487 2805 5516 21208 2973 5239 2442 5323 21209 1679 4288 1495 5444 21210 4015 4473 4408 4984 21211 3313 5556 2344 5575 21212 2046 2141 4210 5372 21213 3554 299 3336 3573 21214 1929 4862 4700 5517 21215 881 5196 882 5245 21216 3562 3582 199 4804 21217 2048 2902 2050 4836 21218 936 1109 1060 4835 21219 2130 2131 2129 4837 21220 3301 2590 3292 4787 21221 3044 4300 3041 5608 21222 1324 4274 1578 5260 21223 3155 5061 2369 5541 21224 2975 2005 2976 4062 21225 1708 4321 881 5245 21226 3744 4032 5045 5451 21227 888 4675 5092 5518 21228 2367 3191 3239 5537 21229 2627 3239 2625 5537 21230 1540 461 106 4830 21231 2045 2047 2108 5175 21232 2049 3092 2047 5175 21233 32 305 349 4795 21234 2978 2579 2910 4889 21235 4783 5474 4212 5635 21236 2128 4222 2130 5306 21237 2257 3216 5118 5357 21238 1542 1229 1652 4182 21239 416 534 108 4780 21240 1728 929 1184 5503 21241 1629 1630 1537 5481 21242 1530 1124 4455 5154 21243 3907 4453 4288 5569 21244 323 392 51 3047 21245 3037 490 513 4875 21246 1812 1274 4694 5381 21247 2769 3407 1980 5266 21248 1278 4496 1081 5384 21249 4696 5128 3928 5166 21250 3155 2456 2369 5061 21251 2831 4733 2833 5081 21252 705 704 4244 5452 21253 532 305 32 4795 21254 3712 4034 4799 5291 21255 1093 1420 1698 5011 21256 3708 4436 4483 5052 21257 4246 4501 3812 5275 21258 3873 4519 4489 5081 21259 362 358 4923 5248 21260 327 3406 334 4839 21261 4727 5010 2771 5459 21262 3998 4766 4386 5016 21263 860 4530 862 5558 21264 2675 2846 4580 5533 21265 2682 3422 3343 4760 21266 2374 4999 2396 5515 21267 2140 2193 2135 5627 21268 1696 4827 786 5377 21269 2498 4174 3169 5628 21270 1199 1778 1777 4880 21271 4197 4899 3700 5532 21272 3577 3575 3576 5192 21273 3697 5239 4509 5526 21274 2342 4253 5287 5412 21275 719 704 701 4975 21276 232 3027 2033 5173 21277 3666 4603 4188 5143 21278 3340 2033 3394 4112 21279 3402 4709 2003 5178 21280 892 5110 592 5325 21281 2489 2458 2713 5028 21282 1263 1800 4208 5337 21283 925 4209 1161 5338 21284 2091 4480 2092 5317 21285 3589 3544 3588 4703 21286 766 770 1602 4803 21287 1914 1943 4479 5562 21288 618 621 884 4662 21289 3830 4670 5538 5611 21290 4627 3660 5641 5644 21291 3829 4599 4789 5274 21292 1604 1891 581 4925 21293 899 896 895 4970 21294 4298 5428 2908 5492 21295 2849 5054 3071 5324 21296 2494 2378 5066 5321 21297 3146 2242 2239 4991 21298 2333 4205 3159 5603 21299 3556 4188 3592 5142 21300 429 4157 466 5396 21301 3446 3513 180 1947 21302 2056 2058 2057 4998 21303 3665 5075 4556 5338 21304 2830 2691 2807 4779 21305 507 481 4769 5629 21306 2471 4495 2472 5455 21307 766 770 4803 5413 21308 397 1604 11 314 21309 2927 3279 3203 5607 21310 2966 2010 3404 5446 21311 2697 3026 5324 5378 21312 1147 4557 1144 5403 21313 2667 4974 2737 5281 21314 3690 4557 4037 5228 21315 323 51 1995 3047 21316 1734 1089 968 5069 21317 109 460 1640 502 21318 645 1530 1124 4455 21319 473 418 3355 5218 21320 2540 4728 3273 5139 21321 4860 5138 3883 5567 21322 3327 3319 2867 5397 21323 3050 3392 1999 4767 21324 1073 1436 4407 5486 21325 3181 3313 2344 5575 21326 3474 4145 3473 5544 21327 3340 317 3417 4112 21328 4390 5570 4817 5571 21329 1455 1759 1809 5193 21330 4338 4778 3707 5636 21331 1384 4485 1710 5333 21332 3021 4642 2306 5531 21333 2976 4886 4062 5218 21334 600 660 5364 5507 21335 3034 2210 5183 5286 21336 3162 3219 2520 5273 21337 2726 2521 2520 5273 21338 983 985 5086 5269 21339 2961 3124 4606 5598 21340 671 666 4370 5280 21341 667 4668 4370 5643 21342 2635 4014 5254 5501 21343 3101 3033 4909 5514 21344 3787 4476 4092 5603 21345 3863 5004 3992 5162 21346 2136 5252 2135 5571 21347 3044 3041 3392 5608 21348 2966 2969 2010 4056 21349 716 898 1009 4935 21350 1587 491 560 95 21351 1665 4212 1802 5594 21352 3692 4896 4015 5120 21353 1212 1449 1831 4901 21354 944 1863 1810 4854 21355 1582 1583 1581 4929 21356 4275 4379 3825 5274 21357 3274 3283 2885 5217 21358 1730 1065 1179 4460 21359 3395 2805 4823 5516 21360 1639 4418 1148 5584 21361 3524 3483 3433 4791 21362 2293 2790 3123 5124 21363 2345 3322 3092 5179 21364 1151 4545 5132 5330 21365 702 4987 706 5339 21366 3445 541 4592 5525 21367 2730 4841 3287 5201 21368 1167 1802 1504 4783 21369 113 412 1641 1666 21370 3230 2070 2068 5519 21371 302 18 1553 380 21372 3996 4760 4182 5248 21373 2904 4298 2908 5492 21374 1752 4197 1636 5532 21375 3285 2817 4216 5502 21376 741 4211 1717 5508 21377 908 912 1637 5197 21378 4495 5088 3799 5566 21379 1403 1447 4500 5271 21380 2309 2307 4376 5598 21381 4182 4895 3899 5600 21382 3663 4776 4152 5513 21383 2491 3091 2671 5166 21384 2141 4210 5031 5559 21385 1561 627 1645 4964 21386 3355 140 514 418 21387 3448 3523 3501 4575 21388 258 1993 3482 3456 21389 1402 1573 1894 4891 21390 418 4690 3355 5218 21391 1973 576 4637 5614 21392 3372 4818 2788 5281 21393 1024 1023 4365 5646 21394 2665 2761 3407 4758 21395 758 762 1584 4870 21396 4286 4451 3704 5049 21397 2360 4313 3085 5400 21398 3017 3016 2252 4456 21399 3340 48 317 332 21400 4673 5019 3923 5645 21401 2080 2903 2077 4573 21402 1781 1813 4310 5320 21403 1128 4317 1127 5322 21404 2607 4330 2699 5323 21405 2616 4333 2377 5321 21406 2699 4330 2697 5324 21407 689 594 4324 5325 21408 1614 4337 1271 5326 21409 654 655 657 4799 21410 424 106 461 4830 21411 516 496 477 5123 21412 1350 4125 1913 5276 21413 4121 5224 3848 5279 21414 2532 2730 2533 4841 21415 4163 3964 4788 4929 21416 1449 1950 571 5138 21417 1307 1898 1411 4743 21418 513 132 490 3037 21419 3798 4756 4331 5617 21420 495 423 494 5614 21421 663 1176 670 4784 21422 3660 4196 5267 5644 21423 3470 3478 3428 4125 21424 566 109 1640 502 21425 1293 1292 1291 4301 21426 4038 4559 3688 5367 21427 909 4223 970 5619 21428 1135 1133 1134 4391 21429 1022 1635 1401 4729 21430 2772 5010 3959 5459 21431 3971 5115 4158 5183 21432 3959 3883 5459 5567 21433 4123 4952 4637 5614 21434 1024 4365 902 5402 21435 903 905 904 5080 21436 2797 2833 2834 4519 21437 1101 1265 4428 5418 21438 3712 4654 4532 5352 21439 1773 1772 1193 4867 21440 1870 1374 1862 4868 21441 3510 3509 3429 4745 21442 873 4316 872 5540 21443 1838 4328 1366 5351 21444 2551 2552 2508 5485 21445 2835 2505 2508 5485 21446 3063 2721 2725 5187 21447 3376 5018 2020 5622 21448 4030 3774 4803 5257 21449 435 495 503 4123 21450 1861 4190 1371 5305 21451 872 4316 871 5392 21452 2717 4312 3248 5355 21453 4895 5577 3899 5600 21454 2945 2570 2946 4591 21455 2272 4322 3216 5357 21456 23 356 303 1951 21457 3207 4327 2937 5359 21458 1506 1205 1709 5030 21459 3413 2974 2975 4978 21460 1449 1831 4901 5138 21461 419 2012 133 513 21462 1229 4182 1892 5600 21463 1458 4472 1456 5449 21464 3113 4334 5085 5438 21465 3120 4173 2284 5417 21466 1912 1945 165 3474 21467 2897 2898 2001 4877 21468 3046 3045 2596 4834 21469 908 906 907 5190 21470 3294 5031 4185 5232 21471 3829 4789 4485 5274 21472 2674 2477 2488 5453 21473 3883 4894 4727 5567 21474 2658 4336 2509 5387 21475 771 773 4325 5386 21476 588 5422 4806 5585 21477 1659 1517 1515 4671 21478 2987 2720 3192 4825 21479 240 1987 3429 3008 21480 559 3559 221 4653 21481 1455 1456 1454 5449 21482 2148 4684 3060 5153 21483 447 438 448 4628 21484 1947 1394 1914 4725 21485 4030 3739 4870 5466 21486 4530 5097 862 5558 21487 1196 1077 1076 5638 21488 3883 4860 4839 5138 21489 241 3508 3502 3008 21490 3315 4349 2661 5484 21491 1819 1849 1194 4464 21492 625 1453 628 5219 21493 458 463 500 4904 21494 1610 972 1721 5495 21495 3719 4775 4259 5412 21496 3492 3514 3495 4617 21497 584 5191 1375 5547 21498 3368 2024 49 324 21499 2757 3353 3002 5040 21500 3459 3461 3460 5091 21501 3355 3079 473 5218 21502 2649 2668 2654 4510 21503 4308 5251 1814 5364 21504 359 386 361 5256 21505 3931 4751 4051 5203 21506 3553 228 3576 4673 21507 1342 1344 552 4075 21508 4313 4778 3674 5632 21509 4005 4072 5294 5385 21510 3902 4254 4510 5591 21511 3593 291 3544 4703 21512 3064 3111 3065 4674 21513 1809 1457 1455 4147 21514 4427 4511 4031 4774 21515 2299 3034 2210 5183 21516 3035 2299 3189 5183 21517 1694 4273 1434 5280 21518 1922 1888 579 4008 21519 530 3438 173 4826 21520 304 405 353 4716 21521 804 803 798 4869 21522 4559 5367 4038 5471 21523 3875 5343 4146 5344 21524 398 580 42 1953 21525 2180 2171 2367 4924 21526 2748 2747 2746 5622 21527 3897 4787 4009 5370 21528 2966 2965 4946 5446 21529 694 682 1370 4639 21530 909 907 1624 5190 21531 2476 4235 2475 5420 21532 392 3047 323 4947 21533 3293 3281 2086 4715 21534 2122 2126 3167 4817 21535 1776 1271 4337 5433 21536 3614 3612 3563 5048 21537 2820 2379 2821 5417 21538 1341 1382 1381 5116 21539 1717 5147 4211 5462 21540 880 4488 1257 5204 21541 888 5092 1012 5518 21542 3892 4034 4739 5491 21543 2196 4842 2195 5626 21544 3679 5044 4011 5300 21545 2977 2013 3387 4623 21546 449 438 154 3412 21547 348 313 351 4822 21548 1260 1259 1037 4810 21549 3910 5049 4484 5439 21550 2709 3133 3131 4982 21551 840 842 843 4467 21552 1837 1808 1175 4468 21553 1178 1062 1177 4872 21554 3250 4560 2850 5429 21555 4227 4967 3972 5032 21556 584 586 5191 5547 21557 2028 126 3012 503 21558 2775 2995 1997 5058 21559 1995 323 3047 4947 21560 3066 326 68 5079 21561 2183 2374 2396 5515 21562 660 4308 1814 5364 21563 3560 3625 3635 4397 21564 2791 2550 4698 5268 21565 3961 5174 4159 5493 21566 1814 1719 1357 5251 21567 3692 4890 4090 5198 21568 4186 4675 4054 5092 21569 2462 2463 2483 4815 21570 1046 4749 1719 5440 21571 3786 4655 4570 5352 21572 4568 4656 3786 5353 21573 3808 4572 4658 5353 21574 4637 4952 3852 5509 21575 2917 2919 2450 4228 21576 972 918 919 5495 21577 2810 3272 3297 5184 21578 2033 3529 232 5173 21579 1660 1639 1148 5584 21580 1626 540 36 390 21581 598 596 597 5209 21582 1452 689 596 5209 21583 2390 2389 2376 5208 21584 648 1510 646 5454 21585 33 391 570 1651 21586 346 348 5079 5631 21587 1171 1173 1174 4666 21588 2683 2771 4727 5429 21589 2007 499 144 4969 21590 3638 3548 201 4701 21591 528 1526 98 497 21592 514 475 477 5123 21593 763 759 1580 5466 21594 762 763 766 5466 21595 395 370 396 4861 21596 3115 4348 2112 5489 21597 972 1721 5495 5623 21598 1271 5432 4337 5433 21599 2970 5426 2229 5573 21600 2389 5208 4340 5334 21601 2574 2835 3149 4995 21602 1233 1399 1100 5282 21603 1530 4913 1460 5154 21604 3716 4869 4043 5288 21605 2257 5118 4061 5357 21606 2684 4727 2771 5459 21607 2773 4839 3278 5459 21608 3310 2730 3287 5201 21609 3310 2657 3194 5201 21610 834 4686 835 5493 21611 4394 4613 3941 5277 21612 2604 3157 2682 4990 21613 289 3051 3639 4724 21614 544 89 1563 423 21615 3649 4962 3636 5645 21616 3851 4921 4254 5591 21617 490 1988 131 2992 21618 366 385 405 4674 21619 1456 1458 1454 4472 21620 2441 2440 2481 5527 21621 1730 4460 1179 5299 21622 1007 4159 1742 5493 21623 4339 5077 3813 5461 21624 3702 3993 5084 5126 21625 4091 4629 3725 5445 21626 823 926 1118 5075 21627 3008 3429 3508 4865 21628 492 544 90 4994 21629 2295 2296 2294 5182 21630 2845 2844 2573 4853 21631 1140 1722 1718 4529 21632 4286 5490 4116 5626 21633 746 744 998 4517 21634 3774 4605 4260 5499 21635 332 3368 49 324 21636 435 125 443 3369 21637 3695 4322 4204 5477 21638 1018 1842 1861 5207 21639 2874 4641 2633 5062 21640 2411 3296 3300 4682 21641 642 1685 934 5202 21642 1245 1443 1602 5257 21643 2214 2211 2210 5286 21644 1443 1648 1117 4605 21645 2512 2389 4340 5334 21646 4051 4751 3843 5203 21647 2390 5208 2376 5349 21648 1374 4868 1870 5278 21649 1610 1721 4706 5495 21650 4377 5382 3787 5603 21651 4235 4859 3824 5613 21652 2197 2199 4286 5490 21653 4204 4322 3760 5477 21654 3730 4644 4945 5569 21655 1219 4696 1647 5128 21656 2907 4621 2905 5492 21657 1327 1325 1570 4360 21658 342 301 390 4276 21659 1930 4575 1564 5536 21660 4761 4860 3959 5567 21661 2127 2123 2118 4285 21662 2199 2198 2197 4286 21663 2234 2231 2933 4287 21664 3274 3308 3121 4289 21665 1679 1114 1495 4288 21666 2570 4591 2945 5490 21667 2907 3292 3197 5370 21668 4003 3814 4981 5282 21669 3639 290 3593 3051 21670 3902 4000 5079 5258 21671 4817 5570 4358 5571 21672 1957 1283 5309 5482 21673 3118 3139 2713 4477 21674 832 4531 1413 5082 21675 3845 4574 5192 5625 21676 126 2028 435 503 21677 1549 5029 1972 5241 21678 434 1996 127 503 21679 571 40 343 1950 21680 1917 1973 576 4637 21681 2253 5118 3216 5242 21682 716 733 898 5339 21683 924 1524 923 4967 21684 3358 3074 1992 4849 21685 144 2989 2007 4969 21686 1540 106 555 4830 21687 3993 3760 5242 5477 21688 745 4451 747 5216 21689 362 363 358 5248 21690 2455 4551 2882 5369 21691 3153 2633 2514 5294 21692 1394 4725 1223 5562 21693 2012 2993 2761 4520 21694 1240 1241 4426 5314 21695 1043 974 967 4916 21696 197 1367 1886 4761 21697 3504 3523 3448 4575 21698 2090 3015 2092 4480 21699 758 752 753 4482 21700 749 748 750 4481 21701 776 765 764 4483 21702 753 751 1724 4484 21703 1384 1160 1383 4485 21704 1285 1317 1306 4146 21705 2250 2226 2249 4878 21706 4212 4334 3780 5474 21707 1605 1941 551 4250 21708 1703 1258 1713 4938 21709 302 373 4415 5345 21710 1018 1841 1472 4486 21711 4214 4332 3804 5427 21712 1243 4206 1245 5361 21713 1451 4884 679 5461 21714 1106 1046 1719 5440 21715 3752 5148 4248 5607 21716 1402 1254 1907 5233 21717 425 508 1917 87 21718 2768 3409 1994 4157 21719 1961 565 20 370 21720 3710 4631 4321 5503 21721 1168 1668 1709 4523 21722 3745 4334 4212 5474 21723 840 842 4467 5436 21724 2365 4466 2412 5430 21725 974 975 968 4614 21726 1676 4563 610 5545 21727 3742 4977 4234 5512 21728 1948 1599 1915 4664 21729 880 1689 1737 4488 21730 3056 2979 5170 5636 21731 2952 4588 2953 5438 21732 513 2012 133 3037 21733 611 612 610 4863 21734 2818 3337 2772 5010 21735 2064 2873 2066 4949 21736 4182 4760 3899 5248 21737 790 4939 4230 5296 21738 3480 4592 3479 5276 21739 3990 4830 4386 5344 21740 591 1729 593 5200 21741 2267 4879 2274 5520 21742 2561 3261 2688 4281 21743 1934 1627 561 4972 21744 2792 2793 2822 5215 21745 2793 2922 3290 5215 21746 1879 1343 1829 5019 21747 2309 2569 2307 5598 21748 2711 3188 4422 5469 21749 1456 4472 1454 5449 21750 492 90 421 4994 21751 1070 1071 831 5112 21752 3697 5086 4382 5496 21753 4027 3658 4841 5484 21754 458 4362 457 5530 21755 3714 4332 4214 5504 21756 347 346 345 4444 21757 1580 1582 1581 4929 21758 4215 4329 3786 5352 21759 3786 4329 4215 5353 21760 1882 4782 1548 5241 21761 2390 2482 4400 5349 21762 2593 2592 2578 4487 21763 3605 3631 3608 4140 21764 3936 4598 4996 5250 21765 702 1822 697 4294 21766 631 4462 635 5261 21767 2077 4528 2078 5360 21768 4022 4660 4479 5419 21769 536 413 1587 94 21770 2437 2973 2496 5239 21771 980 979 5071 5348 21772 1920 4830 555 5344 21773 2095 2094 4323 5317 21774 1247 1246 1376 5442 21775 3372 2737 2770 4974 21776 3543 1983 289 4724 21777 1744 815 823 5075 21778 327 2023 3406 4839 21779 4043 4869 3677 5122 21780 3780 5474 4783 5635 21781 2731 2628 2794 4665 21782 1393 1392 1943 5562 21783 3890 4708 4824 5101 21784 886 786 1696 4827 21785 173 3500 1606 4826 21786 4052 4731 3669 5197 21787 112 1641 479 542 21788 804 858 812 5122 21789 3195 2260 3016 4926 21790 1740 1791 1170 4893 21791 3291 4490 2306 5371 21792 375 372 377 4423 21793 2751 3069 3420 4431 21794 1553 538 18 302 21795 4706 5495 1721 5623 21796 2268 4320 3030 5307 21797 2906 2908 5428 5492 21798 1299 1967 1621 4696 21799 2668 4510 2649 5591 21800 2718 2719 2550 5250 21801 338 339 325 4877 21802 2395 3282 3285 5225 21803 623 4535 736 5375 21804 1604 11 572 397 21805 2334 5272 4377 5382 21806 3193 5148 4248 5511 21807 3784 4754 4045 5373 21808 1753 1416 1450 4613 21809 3452 3497 3494 4602 21810 2381 2334 2382 4377 21811 5176 5295 4318 5473 21812 307 63 2991 5248 21813 3453 1912 164 3474 21814 581 1891 1885 4844 21815 2531 2404 2560 5073 21816 32 349 1651 4795 21817 511 439 121 3640 21818 555 106 424 4830 21819 4084 4606 3700 5549 21820 1953 1320 571 5138 21821 1568 1747 827 4816 21822 874 876 4542 5488 21823 3315 2396 3258 4999 21824 3840 4773 4901 5043 21825 3309 3110 2147 4934 21826 3314 3302 2652 4669 21827 1523 882 965 4471 21828 925 1688 4209 5470 21829 1457 5146 1844 5449 21830 2718 4996 3330 5250 21831 379 3002 56 402 21832 2805 2674 2806 4914 21833 4646 4731 3844 5270 21834 2303 2307 3061 5044 21835 665 659 4161 5437 21836 3750 4016 4796 5442 21837 4189 4932 3825 5634 21838 532 32 1651 4795 21839 1363 1833 1362 5580 21840 439 3565 121 3640 21841 4531 5112 3757 5336 21842 4508 5465 3852 5590 21843 2449 2446 2448 4896 21844 3057 2755 3393 4565 21845 327 4839 337 5195 21846 783 5045 785 5451 21847 1047 4547 1048 5480 21848 4093 4259 4775 5262 21849 873 872 874 5540 21850 1010 1087 1031 4766 21851 1170 894 717 4845 21852 3825 4441 4485 5274 21853 3876 5042 4818 5456 21854 1145 1147 1144 5403 21855 3862 4886 4062 5139 21856 3585 4459 3575 5192 21857 4593 4878 3716 5542 21858 4553 4813 3689 5638 21859 3339 428 124 4720 21860 1378 735 1351 4900 21861 1105 4386 5016 5456 21862 1812 4694 1677 5545 21863 3130 3256 2630 4927 21864 1832 1007 1477 5025 21865 1155 1109 1244 5235 21866 1888 4008 1922 5509 21867 1497 5299 4035 5395 21868 3163 2213 2209 4933 21869 1082 1033 947 5513 21870 3172 3145 2594 4297 21871 4467 3751 5253 5576 21872 4253 5412 2342 5487 21873 93 536 413 1543 21874 1105 954 1104 5016 21875 1716 4512 1730 5395 21876 2337 3253 4600 5076 21877 1973 4637 1896 5614 21878 4339 5263 676 5461 21879 1101 1332 1265 5418 21880 80 2032 334 3406 21881 2333 3159 2329 5603 21882 636 739 639 5012 21883 108 1640 460 4780 21884 3101 4493 3173 5514 21885 3462 3439 3472 5544 21886 1165 5202 1685 5594 21887 3674 4859 4367 5632 21888 3792 4838 4657 5579 21889 1299 4696 1219 5128 21890 3405 156 2031 445 21891 3098 2970 3061 5426 21892 2970 2228 2229 5426 21893 2779 2724 2820 4956 21894 2791 2816 2550 5268 21895 1347 1296 1348 4809 21896 996 1072 1674 5425 21897 992 1674 700 5425 21898 678 4339 676 5461 21899 2515 5294 4072 5385 21900 663 4784 669 5291 21901 812 883 1629 5481 21902 1457 1844 1456 5449 21903 1015 1068 1014 4663 21904 3746 4632 4194 5552 21905 4022 4290 4660 5419 21906 2425 2424 3157 5409 21907 789 790 787 5296 21908 3447 3509 3512 4907 21909 4252 4954 2465 5568 21910 2194 2067 4541 5642 21911 2703 4715 3293 5478 21912 1024 1090 1023 5646 21913 3163 3154 2213 4933 21914 2745 2743 5431 5472 21915 2004 154 438 3412 21916 387 25 1542 331 21917 1207 1829 1082 5424 21918 3834 4789 4599 5274 21919 1255 4610 1682 5283 21920 1361 4611 1672 5284 21921 2316 2315 2317 5423 21922 2320 2319 2317 5423 21923 412 453 501 4381 21924 3709 4833 4184 5231 21925 3350 3351 2536 4886 21926 1198 1790 1825 4344 21927 376 4820 310 5313 21928 3664 4422 4488 4944 21929 4037 4618 4525 4958 21930 3672 4488 4422 4944 21931 2592 4487 2593 5498 21932 989 1771 5132 5330 21933 4254 4905 3833 5561 21934 2380 3177 2288 4677 21935 2679 2981 2543 4856 21936 1929 1928 4862 5517 21937 2142 5155 2143 5610 21938 3360 1993 3399 4888 21939 4287 5185 3909 5573 21940 2649 4921 2758 5591 21941 2647 3222 3223 4983 21942 3694 4482 4437 4940 21943 3739 4437 4482 4940 21944 3694 4439 4484 4940 21945 3782 4484 4439 4940 21946 1132 1129 1473 5259 21947 1665 1802 1167 5594 21948 1329 1105 1356 4386 21949 2331 2330 2421 4476 21950 2906 2904 2908 5492 21951 3664 4433 4477 4944 21952 2081 2195 2085 4507 21953 3317 2718 3330 5250 21954 3686 4477 4433 4944 21955 2600 2601 2598 4958 21956 445 3405 155 438 21957 2578 4487 2592 5312 21958 3101 3031 3076 4909 21959 1108 1805 1491 4910 21960 3396 5303 3385 5589 21961 68 388 2009 5079 21962 3302 2652 4669 5468 21963 2189 2949 3015 5238 21964 1713 761 1703 4938 21965 2432 2425 3157 4990 21966 1941 4250 1605 5091 21967 1281 1282 1174 5009 21968 4370 5437 666 5643 21969 3476 3437 3527 5279 21970 1139 4449 4876 5574 21971 3629 3612 3615 4130 21972 1151 5132 1771 5330 21973 2310 2256 2264 5415 21974 2264 2262 3077 5415 21975 4116 3202 5163 5626 21976 923 5032 1354 5350 21977 2245 2241 2243 5414 21978 2247 2245 2246 5414 21979 1953 343 571 41 21980 4499 4805 3865 5593 21981 3852 5465 4508 5472 21982 4012 4573 4528 5083 21983 2574 2503 2835 4681 21984 1953 315 343 41 21985 3100 63 362 5248 21986 2407 2368 2369 4840 21987 108 534 1640 4780 21988 3585 3573 3575 4459 21989 858 1507 860 5457 21990 1860 1081 5037 5384 21991 4110 4491 3904 5475 21992 1479 1480 775 5295 21993 911 909 970 5619 21994 1399 1233 1400 4981 21995 1095 1032 1212 4901 21996 1473 1129 1128 5259 21997 490 3037 1988 4875 21998 3140 2875 2298 4971 21999 3043 4300 3044 5602 22000 2425 4582 2424 5409 22001 2308 4376 2307 5463 22002 1717 4211 683 5462 22003 482 130 2026 431 22004 79 334 327 3406 22005 3060 2148 2136 4684 22006 1459 1844 1852 4299 22007 1786 1440 1441 4450 22008 3077 2986 3078 5407 22009 1053 1761 1056 5404 22010 1098 1056 1099 5404 22011 599 600 4543 5507 22012 2096 4540 2392 5505 22013 3134 2194 4541 5506 22014 2446 4896 2449 5198 22015 3077 2335 2264 5407 22016 3791 4779 4063 5285 22017 40 309 343 1950 22018 1019 1020 1201 5358 22019 3402 3057 3393 4709 22020 3162 2466 3024 5262 22021 3400 3361 1977 4832 22022 4644 4754 3784 5569 22023 1537 817 1629 5402 22024 3310 5201 4134 5612 22025 2696 3218 3026 5378 22026 3906 4913 4889 5363 22027 1024 902 1537 5402 22028 197 3569 1367 4761 22029 2884 2151 2130 5401 22030 3952 4717 4975 5186 22031 2870 2791 2151 5401 22032 3790 4913 4472 5363 22033 3027 2003 3393 4709 22034 4889 4913 3790 5363 22035 2528 2468 2469 5479 22036 1612 1650 1115 5014 22037 1290 4108 1563 5614 22038 1195 4846 1365 5282 22039 3559 3590 221 4653 22040 2525 2885 2646 5217 22041 2396 3310 3194 5612 22042 4246 3812 4993 5275 22043 2365 2362 2364 5400 22044 2364 2360 3085 5400 22045 3487 4479 3515 5419 22046 782 1482 4371 5620 22047 4218 4831 3773 5582 22048 3706 4224 5172 5610 22049 1978 140 514 3355 22050 2178 4361 2397 5455 22051 631 628 632 5219 22052 1380 665 4161 5643 22053 824 822 819 5470 22054 850 4503 951 5599 22055 1548 4782 1276 5343 22056 1897 1300 1617 4822 22057 3282 2829 2701 5225 22058 2567 2566 3035 4158 22059 1007 1817 1742 4159 22060 747 5216 4451 5560 22061 3315 2661 3311 5484 22062 782 4371 5451 5620 22063 1105 1104 1411 5456 22064 3088 2760 1986 4362 22065 4113 3972 4967 5032 22066 3001 4439 5189 5434 22067 4455 4713 3979 5154 22068 3493 3430 3492 4623 22069 2195 2196 2085 4842 22070 3992 5004 3879 5230 22071 3844 4731 4052 5310 22072 1896 4637 4952 5614 22073 4021 5329 4297 5498 22074 3238 3273 2540 4728 22075 3461 3453 3462 4250 22076 4118 5042 2565 5500 22077 2170 4497 2157 5523 22078 3503 3504 3431 4832 22079 1932 1564 4602 5536 22080 2787 2900 2551 4587 22081 4020 3706 5155 5610 22082 4054 4775 3719 5487 22083 321 389 71 4871 22084 2895 3265 3212 4721 22085 4474 5270 4731 5619 22086 3808 5169 4063 5199 22087 2515 2517 2608 5385 22088 1702 1153 1063 4812 22089 2459 4248 5148 5607 22090 3012 127 1996 503 22091 1202 1374 1079 5394 22092 1202 1168 1205 5394 22093 3125 4559 2062 5471 22094 2119 2123 2124 4948 22095 2684 2547 2683 4727 22096 3182 2912 2631 5117 22097 671 4718 675 5280 22098 2530 3325 2718 4996 22099 1952 117 454 426 22100 620 1424 614 5065 22101 1189 1190 1359 5405 22102 2226 3076 2224 5393 22103 2225 2224 2223 5393 22104 4564 3924 5495 5637 22105 868 872 871 5392 22106 870 865 868 5392 22107 2045 3179 2043 5391 22108 2043 2855 2041 5391 22109 4877 4891 3895 5271 22110 3176 2924 2830 5308 22111 132 1988 490 3037 22112 1752 1636 1687 5532 22113 645 641 1530 4455 22114 3578 3577 3568 4141 22115 584 1601 559 5547 22116 1192 1772 1836 5486 22117 1380 665 659 4161 22118 2905 3257 3210 4621 22119 484 489 490 4875 22120 1820 1843 1204 4905 22121 691 1830 690 4581 22122 1213 5004 1954 5230 22123 3740 4707 4163 5403 22124 541 1909 1946 4592 22125 532 1897 1617 5631 22126 1221 1220 4742 5347 22127 4017 4134 4999 5515 22128 1544 560 1308 4769 22129 728 923 1354 5350 22130 3454 3485 3487 5419 22131 2872 4720 3369 5465 22132 2424 2371 2370 5099 22133 4141 3832 5096 5106 22134 4115 5495 4706 5623 22135 416 4780 458 5530 22136 514 418 475 4690 22137 2655 2658 2509 5387 22138 771 772 773 5386 22139 3220 2619 2918 4524 22140 1628 774 772 5386 22141 2506 3249 2655 5387 22142 1739 1332 699 5418 22143 667 4370 666 5643 22144 1564 1930 524 4575 22145 3673 5270 4474 5619 22146 3725 5152 4044 5445 22147 1789 950 1381 5595 22148 3755 4054 4735 5621 22149 1787 604 1845 4843 22150 3730 4754 4644 5569 22151 3462 4250 3453 5544 22152 342 390 394 4276 22153 4363 4708 3914 5101 22154 3873 4963 5038 5494 22155 1112 1585 1398 4245 22156 2730 5484 4841 5612 22157 1004 1768 1577 4689 22158 1844 1746 1135 5146 22159 360 3404 61 330 22160 1247 1838 1191 5442 22161 2618 3250 3142 4560 22162 934 1165 1061 5202 22163 3010 3009 2634 4953 22164 900 1018 1861 5207 22165 2985 1981 2786 5255 22166 735 1380 4900 5643 22167 2558 2811 2788 4818 22168 2051 2050 5489 5554 22169 2794 3373 2994 4786 22170 741 5186 4211 5508 22171 943 845 1366 5253 22172 2784 3295 3271 5006 22173 382 374 376 4280 22174 1435 676 4339 5333 22175 956 1004 917 4807 22176 4212 5474 4783 5594 22177 3843 5203 4109 5527 22178 2441 4509 2439 5526 22179 4335 4702 3807 5633 22180 3670 4640 4084 5548 22181 552 1952 117 454 22182 1708 881 877 5245 22183 741 1717 1732 5508 22184 2112 3235 2054 4857 22185 457 458 456 4362 22186 995 1656 994 4304 22187 3193 2459 2285 4248 22188 2637 3023 3219 4955 22189 640 639 641 5149 22190 3520 3445 3481 5525 22191 368 540 35 1475 22192 3285 3217 2817 5502 22193 1417 1208 1210 5340 22194 197 1886 3555 4761 22195 4017 4999 4107 5515 22196 4300 4976 3652 5602 22197 537 1579 1877 5432 22198 1798 1877 1547 5433 22199 1776 1877 1271 5433 22200 2464 2465 2645 4954 22201 2331 4476 2971 5382 22202 3423 3335 2544 5165 22203 1208 1083 1209 5340 22204 3879 5004 4758 5354 22205 791 1679 792 4939 22206 3207 2937 3208 5359 22207 2693 2428 2472 5088 22208 404 394 318 4849 22209 3374 4931 4720 5590 22210 2272 3216 2257 5357 22211 2695 2757 2537 4930 22212 2471 2472 2428 5455 22213 1318 1232 1319 5567 22214 3397 3044 3392 4767 22215 3225 2717 3248 5355 22216 2031 3336 2801 4821 22217 2919 2917 3141 5380 22218 2949 3141 2602 5380 22219 2207 2201 2945 5017 22220 4412 4947 3928 5160 22221 1592 1916 1945 5224 22222 1767 1838 1366 5351 22223 2569 2961 4516 5598 22224 2396 4999 3315 5612 22225 1466 4710 733 5339 22226 2236 2238 2237 5335 22227 1742 4159 5174 5493 22228 3669 4731 4646 5270 22229 3688 4898 4518 5367 22230 1701 1922 579 4960 22231 3669 5190 4193 5197 22232 4180 5213 2042 5575 22233 831 1071 1413 4531 22234 368 355 394 4355 22235 4075 4985 3923 5311 22236 973 1706 972 5623 22237 1126 1128 1127 5322 22238 3096 2607 2699 5323 22239 689 1408 594 5325 22240 2699 2697 2848 5324 22241 1267 1614 1271 5326 22242 2493 2616 2377 5321 22243 756 1715 760 5070 22244 1781 1786 1813 5320 22245 1935 1936 1225 5543 22246 3821 4124 5135 5144 22247 447 448 454 5583 22248 677 1451 679 5461 22249 578 1345 1884 4962 22250 1164 1725 1770 4163 22251 30 350 1617 4822 22252 583 585 584 5547 22253 977 1430 662 4532 22254 337 327 336 4839 22255 1315 542 1956 4920 22256 1206 4345 1859 5244 22257 1586 4586 1736 5234 22258 1339 1340 4736 5318 22259 4543 5209 3966 5364 22260 2192 3283 3274 4908 22261 3912 5041 4441 5435 22262 2421 2971 2331 4476 22263 695 1736 4572 5234 22264 2893 2894 4393 5501 22265 2721 2722 2723 5187 22266 2450 5189 4228 5434 22267 4706 4851 3653 5637 22268 3501 3497 3452 4602 22269 4492 5069 3841 5517 22270 1407 1694 1155 5235 22271 2915 3108 2967 5203 22272 1573 1626 37 301 22273 1877 5432 1271 5433 22274 2887 2240 2886 5126 22275 1298 1219 1218 5128 22276 2202 3137 2204 5005 22277 2208 2212 3165 4881 22278 793 5296 4117 5373 22279 1025 963 1035 4747 22280 3836 4074 4856 5587 22281 3792 4657 4105 5579 22282 4082 5196 929 5503 22283 4223 4731 5270 5619 22284 432 147 500 4904 22285 2046 2859 2141 5372 22286 2859 2044 2344 5372 22287 1235 1333 1336 4555 22288 3094 2115 2631 5117 22289 1642 4838 1239 5464 22290 1712 1331 1755 4550 22291 4181 5288 1509 5374 22292 1106 5090 4104 5440 22293 1613 1225 1936 4645 22294 2194 5506 3086 5642 22295 2516 2515 2394 5385 22296 994 992 993 4961 22297 3066 68 2009 5079 22298 2465 2464 2343 4954 22299 2982 3112 2321 5592 22300 1883 1967 1557 5362 22301 153 1998 436 3412 22302 2668 3348 2752 5258 22303 2605 3155 2366 4692 22304 3079 473 139 3355 22305 1417 1210 1418 4576 22306 1955 1306 1317 4146 22307 424 459 462 4830 22308 2924 2583 2923 5308 22309 4370 4668 3898 5643 22310 3876 4818 4386 5456 22311 2415 5243 4067 5379 22312 3881 5160 5128 5166 22313 1223 1026 1393 4478 22314 3074 74 1992 404 22315 3429 3508 240 3008 22316 3126 3127 3307 4898 22317 189 1913 3428 5276 22318 3393 3027 4709 5173 22319 1741 1538 1118 4556 22320 3607 3628 3602 4360 22321 2632 2637 3162 5262 22322 3474 1945 165 3530 22323 4123 5164 3347 5472 22324 1765 4928 1482 5620 22325 3532 407 3536 4844 22326 2925 3427 1992 4849 22327 2351 4917 2352 5243 22328 4005 4812 4460 5411 22329 1164 1145 1725 5403 22330 3267 2715 3327 4603 22331 3899 5577 4418 5600 22332 302 373 378 4415 22333 173 3438 3500 4826 22334 4877 5195 4028 5467 22335 3897 5319 4787 5370 22336 2439 2973 2437 5239 22337 3461 4250 3462 5544 22338 3832 4150 5096 5106 22339 1340 5038 1893 5416 22340 3532 329 407 4844 22341 1926 1942 1348 5609 22342 459 4969 4830 5530 22343 1901 558 4895 5577 22344 3012 1996 2742 5164 22345 1567 808 1744 4498 22346 2495 4461 2419 5618 22347 3074 344 404 5003 22348 1517 527 5256 5383 22349 992 700 991 4165 22350 4182 3899 4760 5600 22351 4412 4947 383 5313 22352 327 2023 79 3406 22353 891 4675 888 5518 22354 3268 3291 2306 5371 22355 3326 2659 3328 4574 22356 504 444 425 4637 22357 3395 2805 2806 4823 22358 2736 3357 3038 4824 22359 1579 5067 1269 5432 22360 2886 2240 5084 5126 22361 512 3458 159 3531 22362 1060 937 936 5315 22363 92 488 486 5309 22364 401 3532 83 3457 22365 2504 2562 3249 5346 22366 2965 5194 2967 5203 22367 329 3532 83 401 22368 440 512 159 3531 22369 3641 45 400 328 22370 3002 56 1990 379 22371 2078 3093 2081 5360 22372 2077 2078 2080 5360 22373 2651 3321 3320 5036 22374 1867 1081 1261 5037 22375 2004 155 3405 438 22376 400 3566 45 3641 22377 4421 5222 2063 5642 22378 1267 5112 1071 5326 22379 2164 5113 4353 5220 22380 2132 4358 2134 5571 22381 318 1992 74 404 22382 30 313 350 4822 22383 1653 1723 1509 5374 22384 3104 2446 2449 5198 22385 3758 4318 5295 5473 22386 3866 4742 4470 5450 22387 2082 2941 2061 4659 22388 1223 4478 1393 5562 22389 1189 5405 1385 5564 22390 1305 1197 1216 4254 22391 4775 5412 3719 5487 22392 2026 482 431 4966 22393 2273 2372 2468 5479 22394 615 614 613 4629 22395 3595 3591 3594 4522 22396 466 429 465 4157 22397 4059 4878 3684 5393 22398 1491 4910 1805 5605 22399 1926 1348 4809 5609 22400 1280 4708 1284 5482 22401 4008 4960 1922 5509 22402 2433 2435 2434 4640 22403 336 334 335 4839 22404 1821 1658 1839 5156 22405 1556 1557 569 4423 22406 436 451 4963 5494 22407 2715 3327 4603 5397 22408 3808 5119 4329 5497 22409 3595 3629 3543 5289 22410 889 891 1575 4675 22411 4310 3660 5320 5641 22412 1726 685 4668 5109 22413 359 357 356 5256 22414 2330 3118 2458 5341 22415 1016 821 1780 4553 22416 3039 2365 2412 5430 22417 1860 1278 1081 5384 22418 1609 1931 4290 5419 22419 1403 1448 1447 5271 22420 543 1881 1889 4820 22421 4026 5358 4395 5366 22422 436 4963 455 5494 22423 2595 2677 2741 4419 22424 1562 1153 1702 5411 22425 1902 4861 565 5601 22426 3355 473 139 418 22427 3616 3628 3619 5410 22428 2388 5208 2389 5334 22429 2227 3071 2930 5054 22430 4288 4453 3784 5569 22431 1253 4604 4852 5421 22432 1844 5146 4299 5449 22433 1263 1775 1800 5337 22434 925 1161 1041 5338 22435 1467 5074 1147 5403 22436 3229 3262 3234 5267 22437 3107 2603 3087 5290 22438 2051 2050 2052 5489 22439 464 516 415 4146 22440 2590 3197 4787 5319 22441 1197 1204 1216 4254 22442 2664 2547 3278 4773 22443 791 4939 790 5296 22444 3063 2494 3192 5066 22445 4198 3717 5473 5640 22446 2827 3322 3314 5179 22447 3411 2763 3427 4790 22448 984 985 983 5269 22449 2154 3270 2168 4915 22450 4451 5049 3910 5439 22451 3780 4212 5474 5635 22452 4211 4390 3811 5570 22453 892 1731 590 5110 22454 334 2032 80 316 22455 1970 1887 1721 4706 22456 4150 3666 5142 5143 22457 1763 1260 1499 5521 22458 2128 2130 2129 5306 22459 2025 3379 3380 4792 22460 2040 2455 2882 5369 22461 2585 2586 2584 5095 22462 3184 2541 2843 5047 22463 3777 5324 4368 5378 22464 3925 4462 5219 5630 22465 1973 1422 1896 4952 22466 3441 3027 232 5173 22467 2464 4954 2645 5292 22468 3631 3542 3608 5144 22469 3790 4472 4298 5363 22470 3365 3396 2847 5303 22471 96 1544 481 560 22472 427 2031 156 445 22473 1556 4423 1555 5345 22474 3216 4322 2891 5443 22475 4104 1049 5087 5578 22476 3515 3487 3490 4479 22477 3673 5008 4223 5619 22478 780 796 781 4808 22479 1893 1382 1341 5416 22480 2982 2314 2316 4373 22481 967 1728 1043 4916 22482 1967 1889 1557 4820 22483 3888 4917 4794 5379 22484 3216 5242 4322 5443 22485 3185 2740 3298 4445 22486 684 1611 1370 4410 22487 2366 4692 3155 5541 22488 1867 5037 1261 5534 22489 2592 5312 4487 5498 22490 2670 3346 2754 5160 22491 3666 4188 5142 5143 22492 3018 2850 1997 5058 22493 899 900 896 4970 22494 3332 3331 2801 4459 22495 1116 1785 1750 5216 22496 1762 1446 698 4303 22497 3120 2283 2284 4173 22498 2675 2847 2846 5533 22499 3875 5281 4974 5399 22500 2559 3169 2498 4174 22501 2856 2825 2560 4175 22502 1458 1460 739 4913 22503 3642 3634 3586 4150 22504 630 1638 611 4307 22505 1814 660 1368 4308 22506 1866 1211 1373 4309 22507 2505 2504 2506 4643 22508 3924 4851 4706 5637 22509 1021 1084 1899 4759 22510 501 4381 505 5396 22511 377 372 373 5345 22512 2460 2527 2525 5226 22513 768 1443 1398 5257 22514 3819 4894 4727 5043 22515 3770 5302 4554 5501 22516 1946 4592 1909 5276 22517 3527 4767 3450 5279 22518 435 504 495 4123 22519 828 830 5174 5336 22520 1270 5067 1324 5260 22521 413 491 489 4738 22522 2553 2554 2552 4723 22523 2089 3020 2053 5121 22524 3613 3610 3614 5048 22525 1982 2977 3388 4617 22526 150 1994 429 3089 22527 1180 1668 953 5205 22528 2418 2382 5272 5332 22529 3890 4708 5101 5482 22530 2258 4735 2338 5335 22531 1028 986 4382 5584 22532 2512 2388 2389 5334 22533 736 1455 1454 5223 22534 1454 1661 1453 5223 22535 687 679 1541 4884 22536 1651 570 1919 4850 22537 4434 4481 3694 5049 22538 2498 3169 2499 5628 22539 1426 842 839 5436 22540 1217 1216 4905 5050 22541 2701 5225 4502 5292 22542 4699 5213 3759 5575 22543 2878 3160 2527 5226 22544 4441 4864 3912 5435 22545 4145 3846 5178 5544 22546 3883 4901 4773 5043 22547 1481 767 763 4833 22548 674 682 680 5462 22549 2968 2581 2934 5114 22550 322 395 361 5383 22551 987 5330 989 5496 22552 457 4969 459 5530 22553 4243 3945 5067 5260 22554 1130 1657 1775 5337 22555 1041 1042 926 5338 22556 2951 2253 3216 5242 22557 4344 4728 3863 5354 22558 2430 2371 2425 4582 22559 2327 2330 2329 5341 22560 3474 3462 3453 5544 22561 738 1676 610 5545 22562 1713 1716 848 5395 22563 1497 1716 1730 5395 22564 2278 2280 2279 4945 22565 961 1699 1253 4604 22566 4062 4886 3950 5218 22567 987 1525 990 5496 22568 987 990 989 5330 22569 989 1151 1771 5330 22570 3506 3518 3502 5021 22571 3441 232 3529 5173 22572 4298 4472 3925 5363 22573 1401 4729 1254 5233 22574 3007 3083 2318 5329 22575 1655 863 865 5328 22576 863 866 861 5328 22577 4695 5167 3655 5516 22578 3145 3083 2594 5329 22579 987 990 5330 5496 22580 767 763 4833 5413 22581 2438 4396 2480 5526 22582 1698 1958 1310 4852 22583 3371 2869 2022 4871 22584 3026 5061 3158 5378 22585 1545 90 544 4994 22586 3473 3439 3462 5544 22587 852 851 853 4638 22588 3704 4481 4434 5049 22589 701 720 719 4975 22590 2813 2562 2502 5346 22591 1957 1283 574 5309 22592 515 455 151 3089 22593 665 666 5437 5643 22594 3328 4574 2659 5625 22595 3845 4673 4459 5192 22596 2714 2948 4513 5469 22597 1563 1290 544 4108 22598 2967 5194 4051 5203 22599 2145 3212 2152 5172 22600 1324 1578 562 5260 22601 1542 25 387 1652 22602 2640 2639 2641 4566 22603 2098 2113 2958 4567 22604 2938 2936 2935 4569 22605 3000 2880 2879 4570 22606 2102 2103 2101 4568 22607 2838 3070 2815 4571 22608 695 1784 651 4572 22609 3503 3523 3504 4832 22610 1742 5174 833 5493 22611 2326 2328 3208 5359 22612 556 1914 1943 4479 22613 812 1629 810 5122 22614 1301 1851 1966 4744 22615 1969 1885 1891 5091 22616 3342 3419 2753 4828 22617 3278 2898 4773 5195 22618 2673 5027 4409 5368 22619 1111 1411 1104 4743 22620 3611 3617 3609 5135 22621 2266 3196 2920 4950 22622 3609 3610 3611 4124 22623 413 489 484 4738 22624 1679 1495 792 5444 22625 1518 4892 1517 5256 22626 3481 3445 3480 4592 22627 858 859 812 5457 22628 2759 3408 4974 5123 22629 2251 2247 2246 4644 22630 3906 4768 5012 5363 22631 2247 2951 2245 4405 22632 3445 3479 3480 4592 22633 3100 2991 63 5248 22634 2291 2292 2294 5182 22635 2257 2259 2265 5357 22636 2834 2877 3359 4772 22637 1544 481 433 96 22638 1757 1487 4207 5488 22639 1254 1401 1252 4729 22640 2844 2971 2573 5157 22641 2818 2771 2029 5010 22642 3569 197 3555 4761 22643 1627 1932 1564 4602 22644 1169 1258 1697 5316 22645 1748 1494 1169 5316 22646 4335 4699 3759 5575 22647 2518 2392 2519 4577 22648 3289 2781 2985 4578 22649 389 3099 71 4871 22650 2829 2828 4502 5460 22651 1946 1913 189 5276 22652 1494 1064 5104 5390 22653 2585 3225 3105 5355 22654 629 626 628 4942 22655 1545 421 90 4994 22656 2736 3297 3272 4824 22657 3079 2976 2005 5218 22658 340 342 344 5003 22659 3640 3646 511 4821 22660 1706 1149 1230 4719 22661 2403 2304 5300 5531 22662 1923 4960 4680 5509 22663 384 392 383 4947 22664 2766 3200 2673 4409 22665 960 916 913 5458 22666 2486 3356 2544 5165 22667 663 669 662 5291 22668 3245 5302 3265 5501 22669 2025 2926 3379 4791 22670 4557 5074 3740 5403 22671 1438 1437 788 4922 22672 1609 1933 1931 5419 22673 2645 3285 2701 5292 22674 1409 1715 1250 4178 22675 2379 3120 2284 5417 22676 2054 2056 4214 5478 22677 4317 5259 1129 5550 22678 2748 2746 2803 5167 22679 1840 1859 1206 4345 22680 2968 2934 2901 4347 22681 1792 1815 720 4346 22682 2112 3115 3263 4348 22683 3315 3258 2661 4349 22684 3193 3266 2459 5148 22685 3277 5155 2142 5247 22686 520 511 3646 4821 22687 3116 4554 3245 5501 22688 1390 1388 1089 4700 22689 147 432 2018 4904 22690 774 809 798 4583 22691 1737 1763 5398 5521 22692 3133 2319 2983 4350 22693 2241 2242 2243 4351 22694 2164 2165 2175 4353 22695 706 707 1466 4352 22696 1621 1647 4696 5310 22697 489 4738 491 5629 22698 625 623 736 5375 22699 1248 1015 1767 5351 22700 3429 3509 3507 4865 22701 3845 4574 4141 5192 22702 3665 4879 4333 5321 22703 2890 2887 2889 4829 22704 1717 674 5147 5462 22705 1910 1223 1394 4725 22706 1900 4759 1084 5241 22707 1391 4919 4660 5331 22708 828 829 830 5336 22709 2542 2476 2475 5420 22710 2893 2184 2635 5220 22711 3379 3377 2740 4791 22712 1207 1874 1876 5424 22713 1589 910 911 4731 22714 1699 1698 1253 4852 22715 1929 4700 1390 5517 22716 1146 1720 1723 5227 22717 2618 2775 2850 5297 22718 2559 2819 3169 5236 22719 2403 2304 2302 5300 22720 3876 4969 4362 5530 22721 3902 5079 4822 5631 22722 954 1355 898 5016 22723 4140 3821 5135 5144 22724 2524 5120 3122 5302 22725 2992 2026 130 431 22726 2775 5058 2850 5297 22727 676 5263 677 5461 22728 879 881 882 5245 22729 470 467 468 4533 22730 475 474 442 5029 22731 3556 3588 3592 4188 22732 3925 5012 4768 5363 22733 4134 5201 3658 5612 22734 782 5451 784 5620 22735 2745 2743 2744 5431 22736 3525 3527 3437 4121 22737 4431 5166 3095 5430 22738 2194 2065 2067 5642 22739 575 1547 1323 4284 22740 2648 3247 2528 4615 22741 2232 2233 2248 4356 22742 3302 3020 2089 4357 22743 1096 1033 1339 4736 22744 4223 5270 3673 5619 22745 921 922 946 4776 22746 3747 4937 4095 5628 22747 429 515 150 3089 22748 2390 2972 2482 5349 22749 419 478 134 2993 22750 2832 2807 2808 5285 22751 3021 3268 2306 4642 22752 1293 1297 1295 4680 22753 2729 2120 2855 4584 22754 870 1256 1655 4585 22755 3119 4540 5238 5408 22756 1737 1763 1257 5398 22757 678 676 677 5461 22758 303 558 23 1951 22759 3113 5085 2622 5438 22760 3318 2826 2663 4770 22761 2944 4453 3128 5460 22762 1904 101 1631 498 22763 3167 2135 4390 5571 22764 302 4415 538 5345 22765 965 882 930 4471 22766 698 4987 702 5563 22767 3476 3475 3473 4726 22768 1425 4049 5447 5448 22769 3252 4334 3113 5438 22770 1319 1320 4860 5567 22771 3043 3044 3045 5602 22772 2141 2048 4210 5559 22773 347 345 389 4444 22774 1979 5194 2965 5446 22775 1134 1238 1586 4586 22776 3106 3286 3151 4911 22777 3682 5090 4104 5578 22778 3556 3592 3596 5142 22779 3070 2815 4571 5301 22780 2477 2805 2487 4914 22781 3970 5157 4476 5382 22782 624 627 1714 4619 22783 30 1617 557 4822 22784 2763 3358 3427 4849 22785 1868 1201 1211 5358 22786 2852 2474 2854 5593 22787 1066 1682 1142 5283 22788 1681 1255 1682 5283 22789 1361 1672 1326 5284 22790 1362 1361 1328 5284 22791 2803 2913 4695 5528 22792 3279 5148 4098 5607 22793 2637 2632 2633 4641 22794 1812 4636 1769 5381 22795 4522 4724 3807 5289 22796 2819 4857 2112 5236 22797 1389 1392 1391 4660 22798 398 315 335 4860 22799 1076 1017 1016 5638 22800 2077 2188 2075 5083 22801 2808 2692 3187 5285 22802 1722 1257 1718 5398 22803 2016 3054 3390 4793 22804 2981 2576 2543 5587 22805 1191 4796 1013 5518 22806 3211 2638 3178 5127 22807 1671 1067 1144 5228 22808 1200 1235 1824 5159 22809 1387 1389 1391 4919 22810 3396 3385 2845 5589 22811 152 455 436 3114 22812 35 306 368 1475 22813 1918 1307 1220 5347 22814 1319 1320 580 4860 22815 1556 569 1555 4423 22816 2925 1992 73 318 22817 2060 2061 2059 5471 22818 3026 2456 3158 5061 22819 2717 2647 3223 4983 22820 2016 4793 3390 5021 22821 3404 2010 61 330 22822 3254 3213 3168 4616 22823 3039 2362 2365 4646 22824 1535 5002 935 5540 22825 1455 1457 1456 5449 22826 3169 5236 3263 5365 22827 833 834 835 5493 22828 1565 631 635 5261 22829 3084 4247 5593 5611 22830 1230 1970 1721 5623 22831 4603 5143 3666 5397 22832 2595 2741 3168 5026 22833 791 792 790 4939 22834 2758 4444 3348 5591 22835 1517 4751 1519 5383 22836 1189 1359 1385 5405 22837 3169 3263 2813 5365 22838 945 1019 1206 5366 22839 289 3639 3543 4724 22840 1726 685 672 4668 22841 3049 1987 3362 4865 22842 2069 2070 2071 5519 22843 3089 455 151 3114 22844 1646 663 657 5291 22845 2992 2026 431 4966 22846 1548 1276 1215 5343 22847 3355 4690 3424 5218 22848 2899 2865 3204 4424 22849 3365 3491 251 5303 22850 1003 1080 668 5585 22851 134 2012 419 2993 22852 2495 5168 4461 5618 22853 3052 2218 4753 5376 22854 30 557 313 4822 22855 2021 3005 3004 4649 22856 2129 2137 2124 5306 22857 2173 3253 2176 4600 22858 2074 3134 2069 4594 22859 3053 2250 2256 4593 22860 2293 2290 2291 4595 22861 2549 2507 3271 4596 22862 811 810 817 4597 22863 2816 2870 2615 4599 22864 3575 3573 3574 4459 22865 831 832 830 5336 22866 4060 4910 3803 5605 22867 2736 3272 2732 5101 22868 4008 4931 4720 5136 22869 323 382 376 4280 22870 1765 1482 806 5620 22871 782 784 1482 5620 22872 3479 189 3428 5276 22873 1302 1604 572 4925 22874 2415 2416 2477 5453 22875 4043 5122 4385 5457 22876 2060 3125 2062 5471 22877 1457 4147 5146 5449 22878 3022 344 3074 5003 22879 2345 3314 5179 5555 22880 1204 1217 1216 4905 22881 3856 5152 4354 5448 22882 76 3022 325 344 22883 2236 4848 2932 5335 22884 336 335 315 4860 22885 3731 4884 4106 5581 22886 612 614 1424 5065 22887 3347 5164 2742 5472 22888 1093 1077 1419 5011 22889 2351 5243 2352 5379 22890 719 728 915 5350 22891 715 1806 1642 4838 22892 2537 2757 3356 4930 22893 3568 3643 3578 5096 22894 3541 4267 2006 5356 22895 4706 5046 3896 5623 22896 1902 565 1465 5601 22897 3784 5296 4939 5373 22898 1266 1071 5112 5326 22899 1987 3049 3048 4745 22900 3945 4274 5067 5260 22901 1756 1262 1656 4612 22902 3168 3172 5026 5604 22903 924 729 936 5315 22904 2456 5061 3026 5378 22905 3555 3648 3570 4761 22906 3441 3460 3461 5173 22907 2415 2352 5243 5379 22908 961 4604 1253 5421 22909 1221 4470 1313 5406 22910 3086 4421 2063 5642 22911 2906 5428 4009 5492 22912 564 3435 171 5111 22913 1392 1391 4660 5331 22914 3216 5118 4322 5242 22915 2322 3103 2710 4741 22916 2663 4770 2826 5566 22917 1073 1192 1436 5486 22918 3895 4877 5271 5467 22919 1973 1896 576 5614 22920 2171 2156 3191 4364 22921 3059 4851 3171 5409 22922 1623 1396 1395 5361 22923 890 1765 887 5293 22924 1829 1343 1094 4683 22925 3218 2456 3026 5378 22926 986 5086 4382 5584 22927 2962 2961 3124 4606 22928 2962 3124 2430 4606 22929 2153 2172 3240 4608 22930 2563 2698 2864 4607 22931 2172 3264 3240 4608 22932 3264 2563 2864 4607 22933 1793 1041 1162 4609 22934 1793 1162 1323 4609 22935 4683 5019 3845 5424 22936 1890 557 1300 4822 22937 2352 2351 2348 4917 22938 1229 1892 1230 5600 22939 2956 3112 3170 4722 22940 1711 1068 1769 5381 22941 2083 3014 2087 4366 22942 559 4653 583 5547 22943 1948 4664 1141 5646 22944 1153 1179 4460 5411 22945 4773 4028 5195 5467 22946 1273 1195 1272 4846 22947 4539 5071 979 5348 22948 4521 5137 3837 5453 22949 3714 4988 4332 5504 22950 1262 1756 1775 4612 22951 414 468 467 4533 22952 1364 554 1365 4959 22953 436 1998 152 3114 22954 826 794 799 4754 22955 3453 3461 3459 4250 22956 3530 3473 3474 4145 22957 2095 2093 2094 5317 22958 1901 1521 558 5577 22959 3115 4836 4348 5489 22960 892 592 1408 5325 22961 995 993 1126 5322 22962 3096 2973 2442 5323 22963 2848 2849 3071 5324 22964 1266 1267 1071 5326 22965 2494 2493 2378 5321 22966 1653 809 1628 5374 22967 2448 3122 2524 5120 22968 2268 3030 3032 5307 22969 2677 3387 2741 4419 22970 3227 3218 2696 5572 22971 2178 2174 2177 4757 22972 4440 5107 3911 5468 22973 2256 2310 3053 4593 22974 2071 2074 2069 4594 22975 2289 2291 2290 4595 22976 2507 2549 2508 4596 22977 817 810 1629 4597 22978 1695 4449 1139 5574 22979 3017 3231 3016 4456 22980 1219 1299 1647 4696 22981 1786 1632 5320 5599 22982 1145 1143 1146 5227 22983 2173 2337 3253 4600 22984 2791 2870 2816 4599 22985 1786 1632 951 5320 22986 1632 951 5320 5599 22987 2247 2252 2253 4552 22988 4917 5243 2351 5379 22989 436 455 451 5494 22990 1827 4748 1272 5476 22991 475 418 474 4690 22992 532 1305 1897 4795 22993 3183 2170 2157 5523 22994 321 71 2022 4871 22995 1375 531 1601 4522 22996 2775 2617 2776 5297 22997 2065 2063 5222 5642 22998 1294 1292 1293 4301 22999 665 667 666 5643 23000 735 1726 667 5643 23001 2500 3140 2385 4937 23002 3807 4130 4555 5289 23003 951 1572 5320 5641 23004 3244 2874 2633 5062 23005 1470 807 813 5206 23006 4693 5298 3995 5618 23007 1861 1371 1733 5305 23008 3151 4911 3286 5565 23009 3088 500 147 4904 23010 92 486 574 5309 23011 1116 745 747 5216 23012 1199 4880 1777 5605 23013 2094 3135 4323 5505 23014 603 4332 602 5507 23015 3248 4312 3236 5506 23016 2928 3056 2979 5170 23017 1669 1059 1637 5171 23018 1216 1300 1897 5050 23019 1894 4891 549 5271 23020 925 822 1688 5470 23021 1586 1238 1736 4586 23022 1008 996 997 4473 23023 4706 5495 3924 5637 23024 724 4601 1828 5529 23025 2041 2855 2120 4584 23026 865 870 1655 4585 23027 3340 3417 2033 4112 23028 3364 2002 3395 4823 23029 3018 2029 2774 4306 23030 2452 2454 2816 5268 23031 2271 2267 2274 5520 23032 3604 3605 3545 4981 23033 1559 564 171 5111 23034 1243 1245 1395 5361 23035 1256 1257 1722 5204 23036 2683 2774 2771 5429 23037 1964 407 399 4844 23038 2001 76 3022 325 23039 547 1916 1940 5224 23040 3642 3564 3634 5143 23041 2183 3194 2179 5515 23042 1143 1145 1144 5228 23043 3408 2770 2759 4974 23044 4399 4400 3869 5354 23045 774 1628 809 4583 23046 457 437 459 4969 23047 2668 5258 4510 5591 23048 366 304 365 4866 23049 2849 3158 2930 4368 23050 1556 1971 1883 4672 23051 1658 1700 1839 4369 23052 666 667 671 4370 23053 416 458 457 5530 23054 2528 2529 2648 4615 23055 2443 2444 2445 4890 23056 1262 1074 1656 5064 23057 2415 2351 2352 5379 23058 4108 4994 3849 5388 23059 2415 2487 2913 5379 23060 1046 1049 932 5087 23061 474 418 473 5218 23062 2902 2940 2814 5559 23063 2597 2518 2519 4577 23064 2781 3289 2782 4578 23065 2394 5287 4072 5412 23066 3264 2388 2563 5334 23067 624 626 627 4619 23068 890 1494 1765 5293 23069 2041 2120 2040 5369 23070 4488 5204 3917 5398 23071 3366 2596 3045 4834 23072 3898 4900 4161 5643 23073 521 444 428 4720 23074 689 1491 1777 5605 23075 3000 2881 2880 4570 23076 2958 2100 2098 4567 23077 2935 2881 2938 4569 23078 2639 2643 2641 4566 23079 2100 2102 2101 4568 23080 2643 2838 2815 4571 23081 1736 1784 695 4572 23082 897 948 824 4732 23083 2092 2094 5317 5505 23084 1209 4854 1863 5384 23085 2529 2868 2649 4921 23086 2332 2711 4422 5604 23087 1482 1483 782 4371 23088 2963 4946 2965 5203 23089 1492 1836 1772 4752 23090 2907 3257 4621 5370 23091 1796 1562 1702 4414 23092 1282 5009 1281 5388 23093 4028 5271 4877 5467 23094 3780 4334 5141 5438 23095 2425 2371 2424 4582 23096 1800 5156 4208 5337 23097 646 645 647 5454 23098 4580 5157 3654 5589 23099 3112 4722 2956 5592 23100 1833 1272 1827 4748 23101 1012 1191 1013 5518 23102 2783 2784 2685 5229 23103 2015 2783 3067 5229 23104 2015 2785 2784 5229 23105 3104 5198 4114 5586 23106 1632 850 951 5599 23107 4381 4772 3873 5494 23108 3883 4727 4894 5043 23109 412 451 453 5494 23110 888 1654 1012 5092 23111 4311 5170 2979 5636 23112 1230 4719 1149 5600 23113 3886 4682 4564 5637 23114 1076 1077 1017 5638 23115 737 1691 1565 4711 23116 3010 3233 3202 5163 23117 1274 1856 1677 4694 23118 3505 171 3435 5111 23119 3907 4874 4248 5511 23120 821 1016 920 4553 23121 4274 1324 5067 5260 23122 1307 534 1898 4780 23123 675 1694 1434 5280 23124 2593 2578 3062 4487 23125 489 4875 4738 5629 23126 625 626 624 5375 23127 2685 2784 3271 5006 23128 1553 1304 538 4415 23129 1464 4426 1241 5601 23130 73 354 2925 318 23131 2594 2593 2595 5498 23132 2219 2224 2931 4819 23133 1542 1892 1229 4182 23134 3385 2842 2845 4853 23135 3069 4431 3095 5430 23136 2786 4359 3019 5606 23137 4616 5026 3917 5604 23138 5128 5160 3928 5166 23139 1559 171 3505 5111 23140 3475 4726 3476 5279 23141 977 662 669 4532 23142 832 831 1413 4531 23143 3001 3174 2918 5189 23144 1640 1307 1918 4780 23145 2678 3390 3389 4793 23146 3931 4051 5194 5203 23147 723 713 712 5100 23148 1490 1755 1331 4550 23149 2047 3092 2108 5175 23150 2590 2588 3197 5319 23151 3811 4358 5570 5571 23152 1142 1143 1067 5228 23153 1861 1842 1371 4190 23154 2238 2258 2338 5335 23155 3658 5201 4841 5612 23156 3349 4362 2760 5500 23157 3703 5259 4317 5550 23158 4291 4809 4006 5158 23159 4081 4801 3794 5351 23160 4744 4828 3886 5637 23161 1336 1333 1619 4555 23162 3175 2619 3220 4524 23163 1312 1314 1854 5406 23164 546 1893 1340 5038 23165 1282 1292 1794 5009 23166 4254 4921 4510 5591 23167 2481 2914 3221 5527 23168 1060 1705 937 4189 23169 2752 3342 2753 5258 23170 3192 2378 2572 4375 23171 3803 5031 4210 5559 23172 3102 2700 2839 4544 23173 1531 797 803 4191 23174 1637 906 908 4193 23175 1044 985 984 4194 23176 2324 2323 2325 4195 23177 3056 2929 3117 4198 23178 2584 2583 2582 4199 23179 816 1580 759 4200 23180 3262 3229 2636 4196 23181 1752 1154 1636 4197 23182 1512 1511 769 4201 23183 1442 820 1766 4204 23184 642 643 1685 4203 23185 2227 2225 2223 4202 23186 1188 1757 1487 4207 23187 1243 1152 1245 4206 23188 3159 2333 2383 4205 23189 2048 2046 2141 4210 23190 2105 2104 2106 4215 23191 1800 1788 1263 4208 23192 741 683 1717 4211 23193 2108 3179 2045 4217 23194 1665 1489 1802 4212 23195 1731 1824 1414 4213 23196 2395 3285 2817 4216 23197 2056 2055 2054 4214 23198 1057 1234 1200 4218 23199 3092 2049 2345 4219 23200 925 1688 1161 4209 23201 3063 2725 3226 4221 23202 1607 818 904 4192 23203 2130 2128 2884 4222 23204 2672 5027 2673 5368 23205 949 1032 1040 4220 23206 1674 1072 1816 4408 23207 1871 1417 1418 4576 23208 1530 1460 1124 5154 23209 2346 2626 4688 5522 23210 473 469 474 5218 23211 2654 4510 2669 5371 23212 1700 1746 1457 5146 23213 3405 2800 2004 4985 23214 1552 4484 751 5439 23215 2343 2341 3024 4775 23216 2857 2347 2353 4794 23217 1232 1318 1231 4894 23218 2889 2887 2888 5443 23219 1571 1853 637 4943 23220 501 505 479 5396 23221 2949 3015 5238 5408 23222 897 824 819 4732 23223 573 1649 1928 4862 23224 696 684 4717 5452 23225 1918 1311 566 5347 23226 2850 3250 2618 4560 23227 3649 3636 3574 5645 23228 1621 960 1647 5310 23229 2081 3093 2195 4507 23230 909 1624 970 4223 23231 485 483 482 4966 23232 3886 4828 4682 5637 23233 3101 3173 3033 5514 23234 1741 1118 926 4556 23235 3326 3328 3025 4574 23236 128 434 493 4786 23237 4761 5567 3960 5624 23238 3921 4104 5090 5440 23239 344 75 3074 404 23240 1904 442 101 498 23241 1142 1720 1143 5227 23242 3365 251 2008 5303 23243 2940 3294 5232 5559 23244 3327 1991 3267 4603 23245 2307 2308 2309 4376 23246 4503 5320 3660 5641 23247 782 781 783 5451 23248 2139 2990 2131 4378 23249 981 982 983 5269 23250 1402 1907 1626 4276 23251 1762 693 700 5000 23252 2084 2903 2080 4573 23253 3621 4417 3028 5410 23254 2363 2362 3039 4646 23255 1587 1903 560 4769 23256 988 1028 986 4382 23257 1034 1058 956 4443 23258 3601 3598 3567 4959 23259 3170 3112 2597 4722 23260 3348 2758 1984 4444 23261 1333 1755 563 5048 23262 880 1737 1257 4488 23263 843 844 845 5253 23264 749 750 754 4481 23265 777 765 776 4483 23266 752 758 847 4482 23267 2092 2091 2090 4480 23268 1552 1724 751 4484 23269 1710 1384 1383 4485 23270 3912 4864 4122 5435 23271 4413 4564 3924 5495 23272 706 1466 733 5339 23273 4329 5352 4215 5497 23274 3118 2713 2458 4477 23275 2703 2559 2611 4989 23276 2134 2136 2135 5571 23277 2126 2132 2134 5571 23278 483 488 484 5309 23279 3479 1946 189 5276 23280 4148 4819 3767 5376 23281 488 92 1543 5309 23282 2418 5272 4548 5332 23283 338 78 327 5195 23284 1421 1360 1160 4789 23285 448 450 420 5583 23286 3462 3474 3473 5544 23287 1661 1454 1458 4472 23288 1139 4876 1634 5574 23289 3879 4400 4399 5354 23290 3818 5067 4274 5432 23291 874 1758 876 5488 23292 3712 5352 4329 5497 23293 3377 3360 2738 4888 23294 843 842 844 4467 23295 1808 1680 1175 4468 23296 2633 2874 2637 4641 23297 1986 2760 3349 4362 23298 607 1492 609 4912 23299 1113 1409 1738 4941 23300 1849 1819 1427 4464 23301 791 4939 5296 5373 23302 2403 3080 3234 5267 23303 1116 5216 747 5560 23304 2061 2941 2059 4659 23305 2146 2134 2132 4358 23306 1334 1335 1102 4249 23307 1065 1153 1179 4460 23308 947 946 922 4776 23309 2557 2406 2558 5042 23310 2858 2912 2698 5249 23311 262 2020 2999 5018 23312 2457 2110 3094 4398 23313 4173 4874 3757 5553 23314 2706 2413 2705 5611 23315 3793 5427 4332 5504 23316 2565 2760 2672 5500 23317 4195 4965 3727 5551 23318 3268 3021 3247 4642 23319 4039 4966 3890 5309 23320 2905 2907 3257 4621 23321 1472 1841 1850 4486 23322 513 4875 489 5629 23323 666 5280 1434 5437 23324 1811 681 1410 4993 23325 2245 4405 5084 5414 23326 1434 1694 1407 4273 23327 3333 1995 3341 4280 23328 2348 4917 2347 5523 23329 896 1733 718 4430 23330 2773 2772 2032 5459 23331 317 332 333 5033 23332 664 666 1434 5437 23333 1667 1814 5251 5364 23334 2475 2476 2354 4235 23335 999 1000 958 4275 23336 4332 5427 4214 5504 23337 3372 2812 2788 4818 23338 4215 5353 4329 5497 23339 744 1469 998 4517 23340 767 766 763 5413 23341 3292 2906 2909 5428 23342 1435 1693 676 5333 23343 1085 1905 1304 4372 23344 1435 1421 1384 5333 23345 920 1699 961 4604 23346 1047 1048 1050 5480 23347 900 963 964 4283 23348 1259 1670 1006 4433 23349 2206 2202 2201 4434 23350 2229 2228 2217 4436 23351 2210 2204 2299 4437 23352 2623 2656 3160 4440 23353 639 640 638 4435 23354 827 829 828 4438 23355 3001 2203 3174 4439 23356 2837 3161 2836 4441 23357 1472 1850 1471 5237 23358 1717 683 674 5462 23359 2164 2175 2184 5220 23360 1836 1492 740 4752 23361 3154 2712 3147 4427 23362 3483 3524 3526 4792 23363 2416 2415 2352 5243 23364 2635 3116 3245 5501 23365 3188 2332 2711 4422 23366 2908 2904 3109 4298 23367 1718 1289 1140 4529 23368 3058 253 1985 5020 23369 760 761 757 4416 23370 2023 327 78 5195 23371 2569 2961 3098 4516 23372 855 853 851 4638 23373 3610 3612 3614 5048 23374 3068 2544 3335 4458 23375 3712 4215 5352 5497 23376 1073 1436 1075 4407 23377 2527 2885 2525 4401 23378 980 973 979 5348 23379 2179 2397 2178 4361 23380 4329 5353 3808 5497 23381 2050 4836 3115 5489 23382 147 2018 3088 4904 23383 2985 2984 1981 5255 23384 814 808 807 4936 23385 812 859 883 4385 23386 3745 4392 5474 5594 23387 1374 1107 1079 5278 23388 1107 1373 1372 5278 23389 1374 1870 1373 5278 23390 2723 2722 2724 4380 23391 3296 2411 2980 4682 23392 658 664 1005 4387 23393 4474 5059 3673 5619 23394 984 982 1636 5269 23395 302 378 380 4415 23396 1929 1390 1928 5517 23397 1571 1853 4943 5539 23398 1423 1888 1922 5509 23399 4288 3784 4754 5569 23400 1003 588 4806 5585 23401 791 794 1679 5373 23402 953 732 1180 5205 23403 3729 5529 5102 5615 23404 3619 3618 3620 4274 23405 347 4795 305 5631 23406 1900 1549 1972 5241 23407 3119 5238 3015 5408 23408 3430 3493 3494 4623 23409 2773 2023 3278 4839 23410 2402 2833 2831 4733 23411 1099 1194 1100 4389 23412 1761 1051 1182 4388 23413 3167 2135 2193 4390 23414 2403 5267 3262 5531 23415 2949 3119 3015 5408 23416 3114 1998 3344 4963 23417 1061 1165 1166 4392 23418 2894 2160 2893 4393 23419 711 710 709 4394 23420 976 1020 1019 4395 23421 3354 2012 2761 4520 23422 918 856 857 4413 23423 3760 5151 4204 5477 23424 2841 3383 3381 5483 23425 3383 2842 3385 5483 23426 1345 1344 1343 5019 23427 3444 3536 1964 4844 23428 930 882 929 5196 23429 2403 3262 3021 5531 23430 556 3515 4479 5419 23431 1319 1232 1320 5567 23432 2480 2438 3107 4396 23433 17 302 538 5345 23434 2703 3293 3235 5478 23435 2056 3293 2058 5478 23436 1117 1398 1443 4605 23437 3528 4931 3537 5136 23438 650 1551 734 5023 23439 1187 1485 1190 5024 23440 3216 2888 5242 5443 23441 3324 2142 3190 5247 23442 4796 5442 4016 5518 23443 3052 2222 2218 5376 23444 1106 1249 5090 5440 23445 1471 975 974 4614 23446 3918 5431 5164 5472 23447 1205 1168 1709 4523 23448 2068 2072 3230 4343 23449 1865 1872 1275 4406 23450 1526 528 1960 5162 23451 4309 4897 3798 5617 23452 2516 2394 2943 5287 23453 698 4303 4987 5563 23454 2463 2727 4598 5535 23455 2900 2787 1976 4587 23456 4007 5318 1346 5583 23457 909 908 907 5190 23458 555 1920 1356 4830 23459 3278 2023 2898 5195 23460 3478 3480 3479 5276 23461 3242 2629 2857 5522 23462 2868 2529 2545 4887 23463 1507 869 860 4530 23464 2945 2946 2300 4591 23465 370 19 380 4861 23466 354 318 355 4849 23467 4215 3808 5353 5497 23468 2788 2811 2539 5281 23469 2825 4175 5088 5566 23470 3848 4976 4300 5608 23471 2918 5189 2450 5434 23472 262 3471 2020 5018 23473 2473 2536 2530 4620 23474 2403 5300 5267 5531 23475 2309 4376 5099 5598 23476 2443 2152 2444 4890 23477 2782 3177 2380 4677 23478 1691 737 1500 4711 23479 2772 2771 5010 5459 23480 3645 439 517 4962 23481 1122 1120 1630 4968 23482 1634 1558 866 5574 23483 1726 672 667 4668 23484 565 19 370 4861 23485 339 338 337 5195 23486 1492 630 609 4912 23487 1794 1292 1633 4730 23488 2278 2251 2246 4644 23489 3565 439 3645 4962 23490 1328 1363 1362 5015 23491 905 1596 962 4242 23492 2998 3355 1978 4690 23493 3410 2026 2735 4966 23494 682 694 680 4639 23495 1482 4928 4371 5620 23496 402 57 308 4883 23497 3074 3022 75 344 23498 559 583 584 5547 23499 3387 2013 3386 4623 23500 495 4637 508 5614 23501 71 3099 2022 4871 23502 2984 3280 2006 4267 23503 3127 3126 3125 5367 23504 4344 3869 4728 5354 23505 1923 4680 1297 5509 23506 1969 1941 1605 5091 23507 2554 2687 2790 5124 23508 2953 2952 2387 4588 23509 3090 3255 2167 4589 23510 1900 1084 1882 5241 23511 2178 3090 2174 4757 23512 2819 2112 3263 5236 23513 528 1954 1316 5162 23514 742 615 613 4629 23515 2017 308 57 4883 23516 3374 4720 2872 5590 23517 3872 4772 4381 5396 23518 2439 2437 2438 5526 23519 2441 2439 2440 5526 23520 1495 1377 1376 5444 23521 1284 1823 1847 5022 23522 1309 1588 1847 5022 23523 942 941 1062 4446 23524 2909 2911 3301 4447 23525 957 1030 938 4399 23526 3517 3526 3486 4862 23527 1957 4992 1279 5482 23528 705 5305 1611 5452 23529 507 506 419 4520 23530 620 616 1782 4354 23531 1246 1654 1386 4873 23532 2423 3091 2491 4475 23533 1643 971 1039 4474 23534 4035 5299 4512 5395 23535 2997 2728 4973 5399 23536 1786 5320 4450 5599 23537 3216 2891 2888 5443 23538 1026 969 1119 5475 23539 2345 5179 4219 5555 23540 4354 5447 4049 5448 23541 2353 5379 2913 5528 23542 2473 3350 2536 4620 23543 4352 4987 3768 5339 23544 2504 3249 2506 4643 23545 2433 2434 2431 4640 23546 1006 1026 1037 5475 23547 599 601 600 5507 23548 3134 3269 2194 5506 23549 2096 2392 2386 5505 23550 4502 5225 3750 5292 23551 2350 2168 2461 4454 23552 1140 4529 1289 5543 23553 1406 901 895 4514 23554 3019 4359 3561 5606 23555 3019 2786 1981 4359 23556 3507 3505 3506 5111 23557 3983 4629 4863 5065 23558 1572 1813 5320 5641 23559 1354 1353 1847 5032 23560 4166 4868 3775 5539 23561 2971 2421 2573 5157 23562 1565 1469 633 5261 23563 1790 1088 1825 4344 23564 1834 634 1678 5342 23565 1548 1882 1276 4782 23566 1274 1812 1769 5381 23567 1812 1274 1677 4694 23568 1733 1611 705 5305 23569 632 635 631 4462 23570 1453 625 736 5223 23571 3028 1989 3029 4417 23572 253 3432 1985 5020 23573 3266 5148 3193 5511 23574 2524 2878 2460 5226 23575 3175 2601 4958 5514 23576 963 1463 1035 4747 23577 4138 3826 5328 5574 23578 341 38 301 4891 23579 3240 2140 2153 5627 23580 2803 3081 2913 5528 23581 3793 4214 5427 5504 23582 2393 2394 2514 5412 23583 1620 955 916 4885 23584 1914 1394 1943 5562 23585 3168 2711 3172 5604 23586 1132 1237 1134 4546 23587 353 405 351 4716 23588 876 1757 1708 5488 23589 2392 2096 3119 4540 23590 982 979 1687 4539 23591 874 876 875 4542 23592 2067 3134 2194 4541 23593 598 599 600 4543 23594 1579 1324 1269 5067 23595 128 493 2994 4786 23596 3815 5006 4124 5229 23597 532 305 4795 5631 23598 2707 4790 4670 5538 23599 128 1996 434 4786 23600 1396 1707 1577 4997 23601 2169 2157 2170 4497 23602 2957 3173 3101 4493 23603 1357 1050 1108 4494 23604 2471 2651 2472 4495 23605 1278 1080 1081 4496 23606 24 558 303 4895 23607 852 951 850 4503 23608 1444 1445 1180 4504 23609 2318 2315 2313 4505 23610 686 690 1739 4506 23611 3281 2653 3127 4518 23612 885 721 1803 5529 23613 4503 5320 951 5599 23614 1712 1055 1097 4831 23615 2604 2682 2681 4760 23616 2441 2442 2439 4509 23617 671 675 666 5280 23618 705 696 704 5452 23619 3415 3646 3554 4821 23620 878 877 879 5245 23621 2530 2550 2454 5268 23622 1480 1707 4997 5295 23623 427 520 3415 4821 23624 1349 1942 1350 5609 23625 2452 2451 2410 4379 23626 2660 2535 2659 4534 23627 1527 553 1526 4533 23628 2092 2096 2094 5505 23629 2194 3236 3086 5506 23630 600 602 660 5507 23631 4549 5151 3993 5477 23632 2336 3164 2073 5055 23633 1242 1779 1151 4545 23634 1875 1261 1818 5534 23635 2086 3125 2060 5367 23636 1626 1573 1402 4276 23637 788 1754 1438 4922 23638 3058 3489 253 5020 23639 3001 5189 2918 5434 23640 2953 2937 3252 5438 23641 2622 2952 2953 5438 23642 2743 3347 2742 5472 23643 1820 1799 1572 5641 23644 24 303 387 4895 23645 1085 1058 1034 5314 23646 2144 2143 2145 5610 23647 4918 5164 3918 5431 23648 1493 5304 1630 5481 23649 4297 5026 3172 5604 23650 262 2999 3436 5018 23651 3012 2742 3347 5164 23652 3080 2403 2302 5300 23653 933 1048 1047 4547 23654 1214 1309 4227 5230 23655 1584 762 768 4870 23656 2116 2457 2883 5060 23657 338 3403 78 5195 23658 3464 3465 3463 4960 23659 2501 2611 2559 4989 23660 891 1013 1014 5518 23661 2063 3086 2082 4421 23662 973 919 978 5348 23663 1711 1014 1068 4663 23664 2469 2468 2372 5479 23665 2804 3378 5167 5516 23666 1488 1510 734 5441 23667 3910 5189 4439 5434 23668 3707 4777 4318 5639 23669 3717 4778 4313 5640 23670 333 393 314 4925 23671 2944 3128 2244 5460 23672 3246 2027 2996 4397 23673 2824 3312 3183 4755 23674 2281 2279 2280 4945 23675 2487 2803 2913 4695 23676 1927 1928 1735 5517 23677 3136 4084 5548 5549 23678 2051 5554 4099 5555 23679 3374 3339 2872 4720 23680 2711 3213 3188 5469 23681 3829 5041 4222 5401 23682 1630 1493 1122 5304 23683 1794 1633 901 4730 23684 3692 4961 4165 5425 23685 114 452 412 5038 23686 2951 2888 2886 5242 23687 1932 1804 1499 5536 23688 1290 1563 1896 5614 23689 1240 1085 1241 5314 23690 302 17 377 5345 23691 2093 2091 2092 5317 23692 1082 1829 1094 4683 23693 339 340 325 4877 23694 2021 3006 3005 4649 23695 807 805 813 5206 23696 700 693 692 5000 23697 2810 2180 2367 4924 23698 4322 5118 3760 5242 23699 3440 251 3491 5303 23700 1877 4064 5432 5433 23701 2014 5410 2777 5606 23702 832 1413 927 5082 23703 2531 2560 2827 5073 23704 726 976 945 5464 23705 714 885 1450 5277 23706 4285 5041 3912 5435 23707 1693 1384 1710 5333 23708 3674 4781 4313 5632 23709 1305 1651 1919 4795 23710 2420 2419 5332 5618 23711 834 836 835 4686 23712 2077 2076 2078 4528 23713 2897 2001 3345 4877 23714 541 1925 1909 4592 23715 712 713 711 5100 23716 4214 5427 4857 5478 23717 1256 880 1257 5204 23718 2751 3095 3069 4431 23719 4100 2344 5556 5575 23720 38 341 549 4891 23721 794 793 795 5373 23722 2772 2684 2771 5459 23723 3803 5232 5031 5559 23724 1251 1745 1470 5072 23725 1007 1742 833 5493 23726 2555 2793 2792 4305 23727 3175 3220 3032 5307 23728 2940 2141 3294 5559 23729 3031 3101 3033 4909 23730 1358 1108 1491 4910 23731 1101 1265 1264 4428 23732 606 607 608 4763 23733 1165 4392 5202 5594 23734 407 1964 3536 4844 23735 2616 2617 2618 5297 23736 1351 735 1380 4900 23737 2402 2182 2863 5051 23738 1675 857 1115 4980 23739 3194 2183 2396 5515 23740 1270 1324 1325 5260 23741 1069 1274 1068 5381 23742 2875 3140 2876 4971 23743 976 1642 1239 5464 23744 376 310 381 5313 23745 92 574 1543 5309 23746 702 706 716 5339 23747 2222 2223 2219 5376 23748 4354 5065 3857 5447 23749 2974 136 471 4978 23750 2338 2258 2339 4735 23751 2759 2997 5123 5399 23752 3199 2932 2933 4986 23753 1587 536 1588 4738 23754 3653 4828 4744 5637 23755 3016 2260 2254 4926 23756 3403 2023 78 5195 23757 2478 2675 2846 4580 23758 2441 2481 3221 5527 23759 62 330 2010 4923 23760 3909 5185 4436 5573 23761 1572 1799 1813 5641 23762 3526 3517 3449 4862 23763 685 677 672 5263 23764 2654 2669 3291 5371 23765 3328 3276 3331 5625 23766 975 1734 968 5069 23767 1283 1280 1284 5482 23768 2825 5088 2472 5566 23769 4185 5031 3803 5232 23770 3283 3222 2646 5217 23771 3322 2826 3318 4770 23772 3001 2918 2450 5434 23773 2200 3001 2198 5434 23774 2198 2450 2196 5434 23775 2127 2883 3144 5435 23776 3161 3143 2127 5435 23777 2612 3161 3144 5435 23778 4541 5211 3983 5642 23779 605 603 1673 4988 23780 1453 1661 632 5219 23781 581 1964 399 4844 23782 3104 2447 5198 5586 23783 1433 1003 588 4806 23784 2390 2482 2409 4400 23785 487 421 485 4994 23786 333 332 393 5033 23787 693 697 691 5563 23788 1090 1948 1141 5646 23789 330 62 362 4923 23790 1224 1027 1590 4383 23791 1273 1365 1195 4846 23792 508 495 504 4637 23793 1873 1084 1078 4951 23794 1695 1722 1139 4449 23795 346 348 326 5079 23796 3040 2479 2676 4384 23797 496 3408 141 5123 23798 3257 4621 5370 5565 23799 1450 711 714 5277 23800 1009 1822 716 4935 23801 4327 5145 3741 5359 23802 2671 3095 2751 5166 23803 4507 4842 3728 5626 23804 3338 3422 3171 4851 23805 2553 2561 2554 4723 23806 1617 4822 350 5631 23807 1813 1181 1781 4310 23808 2255 2249 2979 4311 23809 2358 3085 2360 4313 23810 2436 2437 2496 4314 23811 872 873 871 4316 23812 3082 2609 3201 4315 23813 1127 1128 1129 4317 23814 2717 3236 3248 4312 23815 2211 3030 2268 4320 23816 1669 1479 1608 4318 23817 3135 2095 2094 4323 23818 2959 2960 2221 4319 23819 2891 3216 2272 4322 23820 775 771 773 4325 23821 1708 931 881 4321 23822 3207 2642 2937 4327 23823 653 654 652 4329 23824 2607 2697 2699 4330 23825 689 594 596 4324 23826 593 1729 656 4326 23827 1838 943 1366 4328 23828 597 1644 893 4331 23829 3138 2377 2616 4333 23830 603 604 602 4332 23831 3113 3252 2939 4334 23832 3306 3313 3181 4335 23833 2658 2685 2509 4336 23834 1614 1776 1271 4337 23835 3055 2356 2270 4338 23836 678 1435 676 4339 23837 2512 2389 3156 4340 23838 2492 2484 2401 4342 23839 1894 549 1448 5271 23840 891 889 888 4675 23841 766 1602 768 5257 23842 2449 2448 2460 4896 23843 1228 4418 1639 5577 23844 4191 4777 3707 5639 23845 4198 4778 3717 5640 23846 791 5296 793 5373 23847 3072 2361 2422 4341 23848 4367 4781 3674 5632 23849 1925 4592 541 5525 23850 401 317 410 4112 23851 2258 2236 2932 5335 23852 459 4830 461 5530 23853 1404 591 589 5200 23854 3836 4858 4277 5587 23855 3237 2863 3275 4903 23856 1400 1233 1807 4981 23857 1795 655 653 5119 23858 3069 3095 2412 5430 23859 727 730 725 4977 23860 1745 819 814 4457 23861 1603 804 798 4869 23862 2314 2312 2313 5210 23863 436 451 450 4963 23864 1882 1548 1549 5241 23865 1177 1183 1178 4872 23866 2420 2426 2419 5618 23867 2463 2727 3317 4598 23868 2812 2989 3349 4969 23869 2894 3245 3265 5501 23870 1221 1220 1159 4742 23871 2412 2365 2368 4466 23872 747 745 746 4451 23873 1857 1826 1673 4452 23874 2944 2568 3128 4453 23875 1467 1691 1147 5074 23876 2023 4839 327 5195 23877 3636 3645 1962 4962 23878 2135 5252 4390 5571 23879 4287 3909 5185 5510 23880 2342 5287 2394 5412 23881 509 1962 517 4962 23882 2714 3213 2948 5469 23883 4321 5196 881 5245 23884 662 654 657 5291 23885 1678 5342 1676 5545 23886 4564 4682 3924 5637 23887 478 506 472 5266 23888 3719 5412 4253 5487 23889 2519 3119 2599 5408 23890 502 480 463 4241 23891 2970 4129 5426 5573 23892 2691 2692 2807 5285 23893 3044 3043 3041 4300 23894 2829 2944 2828 5460 23895 1681 1066 1061 5283 23896 1328 1326 1327 5284 23897 2154 2158 2155 5001 23898 2904 2905 2188 5492 23899 381 312 383 5313 23900 4094 3777 4997 5361 23901 2906 2907 2905 5492 23902 626 629 1645 4942 23903 3538 3529 3457 4112 23904 2419 2495 3178 4461 23905 1677 1678 1676 5545 23906 2858 2698 2610 5249 23907 2665 2769 2650 4758 23908 721 5102 724 5529 23909 2298 2385 3140 4937 23910 2852 5593 4126 5611 23911 951 1572 1813 5320 23912 3866 5076 4409 5368 23913 1024 1023 902 4365 23914 589 590 587 5422 23915 3035 2851 3034 5183 23916 665 664 659 5437 23917 251 3440 2008 5303 23918 2378 2377 2275 5321 23919 2607 2442 2606 5323 23920 1756 995 1127 5322 23921 3026 2849 2697 5324 23922 1741 1614 1266 5326 23923 592 593 594 5325 23924 1527 1528 553 5013 23925 3561 277 3019 5606 23926 1385 1811 1625 5564 23927 1555 17 538 5345 23928 2700 2464 2645 5292 23929 3707 5170 4311 5636 23930 3416 266 3644 5134 23931 640 641 642 5149 23932 938 924 937 5315 23933 1096 4736 1340 5416 23934 1556 1555 1554 5345 23935 4250 4709 3846 5544 23936 442 476 475 5029 23937 3745 5085 4334 5474 23938 2512 2610 2563 5334 23939 2680 3087 2603 4957 23940 507 491 481 5629 23941 1649 1929 1928 4862 23942 2668 2669 4510 5258 23943 2237 3205 2235 4411 23944 4309 4868 3922 5278 23945 2408 2510 2486 4661 23946 446 445 447 4985 23947 2965 2964 2966 4946 23948 3755 4991 4544 5621 23949 3104 2447 2446 5198 23950 3011 3164 2336 5055 23951 3562 4804 577 5624 23952 2847 3396 2846 5589 23953 3888 5379 4794 5528 23954 4538 5185 3909 5510 23955 2128 2124 2123 5306 23956 3153 3011 3244 4465 23957 600 5364 4543 5507 23958 3146 2338 3102 5621 23959 2703 3281 3293 4715 23960 588 585 1433 4806 23961 2732 2731 2735 5101 23962 2890 2889 3234 4829 23963 771 770 767 5413 23964 3290 2824 2822 5215 23965 1577 1768 1242 4689 23966 3808 4215 5199 5497 23967 3252 3113 2622 5438 23968 3276 2659 2534 5625 23969 3906 5012 4913 5363 23970 1228 1901 1229 5600 23971 2539 2667 2737 5281 23972 4211 5186 3776 5508 23973 936 1815 1109 4835 23974 2901 2129 2131 4837 23975 2902 3115 2050 4836 23976 646 647 648 5454 23977 4353 5113 3720 5220 23978 3250 2850 2774 5429 23979 2887 3205 2240 5126 23980 2346 2857 2626 5522 23981 2591 2586 3105 4469 23982 2376 2375 2972 5349 23983 2414 3046 2357 4367 23984 2657 3287 3316 5201 23985 1189 1385 1625 5564 23986 2684 2683 2771 4727 23987 3578 5096 3586 5106 23988 2250 2261 2226 4878 23989 698 702 697 5563 23990 3347 5465 4123 5472 23991 1208 1209 1210 5340 23992 3102 2340 2464 5621 23993 1221 1749 1313 4470 23994 1553 380 19 4861 23995 4115 972 5495 5623 23996 4315 5548 4084 5549 23997 703 706 702 4987 23998 2823 3060 2136 4684 23999 3081 3242 2353 5528 24000 1867 1875 1418 5534 24001 402 3002 57 4883 24002 2503 2574 2500 4681 24003 2910 2909 2908 5428 24004 722 5102 721 5615 24005 4099 5554 4219 5555 24006 2681 2991 3100 5248 24007 910 913 912 5197 24008 2569 3124 2961 5598 24009 2495 2419 2426 5618 24010 4280 4947 3928 5313 24011 1219 1039 1218 5128 24012 1627 1934 1932 4602 24013 730 731 921 5512 24014 398 406 1963 5105 24015 2892 2851 2571 5115 24016 696 1611 684 5452 24017 833 1742 830 5174 24018 3107 2435 2433 5290 24019 1982 3388 3389 4617 24020 1615 1616 1663 4866 24021 2827 3314 2652 4669 24022 355 318 394 4849 24023 2548 2831 2797 5081 24024 2674 2488 2738 4521 24025 2485 2399 2398 4579 24026 2893 2635 2894 5501 24027 3716 5288 4181 5374 24028 622 1759 619 5193 24029 514 496 141 5123 24030 3108 2963 2965 5203 24031 470 497 467 5162 24032 1291 1422 1293 4952 24033 2714 2713 3188 5469 24034 1803 724 1828 5529 24035 2052 3115 2112 5489 24036 2862 2565 2557 5042 24037 3947 4799 5119 5497 24038 262 3436 3471 5018 24039 2388 2181 2376 5208 24040 598 1667 1452 5209 24041 721 5102 5529 5615 24042 2428 2178 2397 5455 24043 2459 5148 3279 5607 24044 1864 1019 1201 5366 24045 2813 2814 2562 5365 24046 2432 3157 2604 4990 24047 1591 1593 1594 4374 24048 1315 1312 1854 4920 24049 3229 2889 2891 5443 24050 1848 1288 1735 4492 24051 3059 3171 2424 5409 24052 453 505 501 4381 24053 3155 2605 2988 4692 24054 3632 3595 4522 5289 24055 1603 1509 5288 5374 24056 2556 2564 2865 4561 24057 4100 5556 4335 5575 24058 2031 2800 3405 4985 24059 1072 1008 1429 4984 24060 1482 1765 1748 4928 24061 3129 4622 3606 5356 24062 3002 2017 57 4883 24063 780 781 779 4808 24064 1396 1577 1243 5361 24065 1555 377 17 5345 24066 520 3646 3415 4821 24067 793 791 789 5296 24068 2141 2859 3294 5031 24069 2166 2167 2165 5131 24070 783 1754 785 5045 24071 3418 2030 3534 5136 24072 624 621 623 5375 24073 2980 2306 3291 4490 24074 2455 2120 2532 5369 24075 3554 3336 3415 4821 24076 2796 3344 1998 4963 24077 3324 2719 3317 5250 24078 1996 128 2994 4786 24079 831 829 1070 5336 24080 2646 2647 2526 4590 24081 2381 3178 2638 5127 24082 3282 2701 3285 5225 24083 1169 1494 1064 5104 24084 2753 3300 3296 4828 24085 565 1553 19 4861 24086 2594 3083 2592 5498 24087 2617 3241 2776 5161 24088 2133 2125 3070 4648 24089 1165 934 1685 5202 24090 1199 1777 1805 5605 24091 253 3489 3432 5020 24092 1666 114 412 5038 24093 266 3637 3644 5134 24094 1911 1939 1559 5111 24095 2342 2943 2394 5287 24096 2924 2923 2830 5308 24097 4554 5254 4014 5501 24098 3502 3508 3506 5021 24099 3091 3095 2671 5166 24100 1225 1613 1138 4645 24101 2689 2861 3259 4501 24102 1483 1748 1697 5316 24103 2948 2947 2714 4513 24104 3954 5295 5176 5473 24105 2723 2725 2721 5187 24106 3541 3598 3597 4267 24107 2305 2308 2307 5463 24108 738 1812 1677 5545 24109 722 724 721 5102 24110 884 621 1714 4662 24111 2843 2841 3381 5047 24112 2829 2828 2701 4502 24113 2241 2886 2240 5084 24114 3800 5103 4333 5596 24115 1226 1123 1613 5093 24116 3527 3450 3522 5279 24117 2332 2710 2711 5604 24118 2862 2565 5042 5500 24119 4453 3907 5511 5569 24120 2833 2877 2834 4519 24121 1658 1821 1800 5156 24122 2418 2419 2382 5332 24123 2077 2903 2188 5083 24124 1503 935 1535 5002 24125 2913 2353 2351 5379 24126 2538 2755 3057 4565 24127 1676 608 610 4563 24128 4080 5398 1763 5521 24129 2089 2053 2055 5121 24130 1052 1050 1051 5480 24131 2581 2583 2934 5114 24132 1158 1730 1716 4512 24133 786 4827 806 5620 24134 1944 1599 1598 4907 24135 2066 2067 2065 5211 24136 2337 3200 3253 5076 24137 1588 536 1906 4738 24138 306 355 368 4355 24139 1639 1228 1148 4418 24140 1006 878 969 5475 24141 3279 2459 3266 5148 24142 922 921 731 5512 24143 3124 2309 2371 5598 24144 2340 2339 2341 5487 24145 668 589 588 5585 24146 4508 5431 3918 5472 24147 3555 4761 1886 5105 24148 1980 136 2974 4978 24149 1603 809 1509 5374 24150 3413 2975 3273 5139 24151 4208 5156 3748 5337 24152 2997 2728 3334 4973 24153 1174 1282 1794 5009 24154 2065 2063 2064 5222 24155 2150 3212 2145 5172 24156 3099 1984 2758 4444 24157 2014 2777 2778 5606 24158 2778 2786 3019 5606 24159 1757 1758 1487 5488 24160 1072 1429 1797 4984 24161 783 785 784 5451 24162 2030 4931 3528 5136 24163 1522 849 780 4624 24164 135 422 1980 5266 24165 1760 1236 1043 5078 24166 2588 2591 3197 5319 24167 2600 2599 2602 4618 24168 2030 3528 3534 5136 24169 1372 1211 1020 5358 24170 1930 1499 1498 5536 24171 1312 1221 1313 5406 24172 3872 4920 4157 5396 24173 1573 301 38 4891 24174 162 3459 3444 5091 24175 592 590 591 4527 24176 866 5328 1695 5574 24177 162 3444 1885 5091 24178 866 1655 1695 5328 24179 3759 5213 4180 5575 24180 3103 2318 3145 5329 24181 3294 2859 3304 5031 24182 4390 5252 3811 5571 24183 1480 1539 1707 5295 24184 490 489 513 4875 24185 2831 2373 2402 4733 24186 4830 4969 3876 5530 24187 2259 2266 2920 4950 24188 1151 990 1152 5330 24189 1248 1366 1808 5351 24190 912 914 1150 4537 24191 623 1759 736 4535 24192 1477 840 1751 4536 24193 1667 1814 1358 5251 24194 1704 917 1004 4807 24195 2762 4814 2809 5184 24196 362 4923 3100 5248 24197 1432 1488 734 5441 24198 4601 4977 1412 5595 24199 1298 1895 1597 4412 24200 1934 1935 1289 4972 24201 136 422 471 4978 24202 1693 675 671 4718 24203 1281 1174 1173 4666 24204 350 4822 348 5631 24205 4543 5364 3804 5507 24206 1923 1922 4960 5509 24207 1070 1266 1071 5112 24208 1340 1096 1339 4736 24209 2142 3277 2143 5155 24210 1792 5186 741 5508 24211 3265 3245 2524 5302 24212 601 603 602 5507 24213 2094 2386 3135 5505 24214 3248 3236 3269 5506 24215 683 684 682 5462 24216 24 387 1652 4895 24217 3584 3548 3638 4701 24218 2418 2840 2541 4548 24219 1289 4972 1935 5543 24220 1407 1155 1244 5235 24221 3100 362 62 4923 24222 3561 3628 3616 5606 24223 2798 2802 2004 4628 24224 4894 4901 3883 5043 24225 1438 1440 1439 4549 24226 839 840 837 5436 24227 891 888 1012 5518 24228 926 823 925 5338 24229 1658 1800 1657 5337 24230 2502 2504 2503 5346 24231 3175 3033 2601 5514 24232 4520 4769 3889 5629 24233 2345 3314 3322 5179 24234 3105 3248 3106 5355 24235 2327 2325 3118 5341 24236 3413 2769 1980 4978 24237 843 5253 943 5576 24238 277 2014 3019 5606 24239 2054 3235 2056 5478 24240 3024 2632 3162 5262 24241 1603 1507 858 5288 24242 2455 2715 2882 4551 24243 1964 1885 3444 4844 24244 3666 5142 4188 5534 24245 1286 1036 1222 5130 24246 3927 4704 4998 5504 24247 1616 1501 1890 4716 24248 3116 2878 3245 4554 24249 1069 1248 1837 4801 24250 2795 2548 2796 4432 24251 2303 3061 2301 5044 24252 2273 2272 2265 5357 24253 1147 1500 1144 4557 24254 544 1921 1545 4994 24255 2141 2902 2048 5559 24256 2062 3125 2190 4559 24257 1426 841 1427 5053 24258 1880 4673 3553 5645 24259 1464 1240 1241 4426 24260 59 367 3414 5194 24261 3155 4692 5061 5541 24262 2695 2694 2914 4425 24263 3159 3207 2328 5359 24264 135 2993 478 5266 24265 1652 558 24 4895 24266 546 452 114 5038 24267 3787 5196 4321 5245 24268 2417 5272 2334 5382 24269 2190 2873 2064 4949 24270 617 615 1684 5445 24271 525 1615 1663 4866 24272 2712 3166 2613 4774 24273 508 4637 576 5614 24274 1153 1560 1179 5411 24275 3490 3446 3515 4479 24276 3153 2515 2608 5294 24277 2307 2303 2305 5463 24278 428 4720 3339 5136 24279 3647 3555 1963 5105 24280 1146 1583 1725 4788 24281 1233 1195 1365 5282 24282 2220 2214 3034 5286 24283 584 586 1375 5191 24284 1910 524 1930 4575 24285 3186 3129 2690 4622 24286 1239 1642 1806 4838 24287 2149 3270 2154 4915 24288 800 1567 1568 5098 24289 3100 62 2010 4923 24290 1517 1659 1519 4751 24291 277 3616 2014 5606 24292 3701 4954 4252 5568 24293 2076 3164 2079 4771 24294 1379 1341 1381 4489 24295 1988 3038 3357 4875 24296 2474 2896 2854 4499 24297 1403 1447 1022 4500 24298 3576 3575 3553 4673 24299 3152 2030 3374 4931 24300 1925 1927 1288 5525 24301 2050 4836 5489 5554 24302 1101 1078 1002 5188 24303 613 612 611 4863 24304 135 478 422 5266 24305 3636 1962 1884 4962 24306 1527 1526 1960 4533 24307 3257 5370 3151 5565 24308 2011 2035 2034 4703 24309 589 587 588 5422 24310 1339 1094 1342 5318 24311 1883 1971 1092 4672 24312 2331 4476 5382 5603 24313 3937 5438 5085 5474 24314 1122 1121 1120 4968 24315 1149 1706 980 4719 24316 3122 2448 2444 5120 24317 1960 528 1316 5162 24318 2749 2872 2871 5465 24319 162 1605 3459 5091 24320 3358 2763 2708 5538 24321 2440 2438 2480 5526 24322 1860 1209 1863 5384 24323 448 438 449 4628 24324 1980 2993 135 5266 24325 2062 5222 2063 5471 24326 428 3418 519 5136 24327 3685 5071 4539 5348 24328 2748 2804 3378 5167 24329 1980 422 136 4978 24330 1232 1231 1095 4894 24331 2749 2872 5465 5590 24332 4161 665 5437 5643 24333 724 1412 1828 4601 24334 2309 2370 2371 5099 24335 3561 3616 277 5606 24336 1885 3444 4844 5091 24337 3021 2306 2304 5531 24338 2170 2348 2347 5523 24339 3626 3602 3561 4359 24340 674 673 670 5147 24341 2083 2080 2081 5360 24342 617 1684 622 5445 24343 3288 2488 2416 5453 24344 3097 2025 3380 4792 24345 2142 2143 2139 5610 24346 3355 3424 3079 5218 24347 1823 1284 1280 4708 24348 4461 5332 2419 5618 24349 1534 1682 1255 4610 24350 927 1672 1361 4611 24351 38 549 1573 4891 24352 352 389 321 4871 24353 1876 1879 1829 5424 24354 2987 2522 2720 4825 24355 1612 851 849 5246 24356 3631 5135 3611 5144 24357 1142 1664 1720 5063 24358 3890 4039 5309 5482 24359 4215 3712 5133 5497 24360 4548 5272 3855 5332 24361 2722 3120 2820 5417 24362 1801 1231 1321 5180 24363 1953 580 1320 4860 24364 2719 2791 2550 4698 24365 1530 739 1460 4913 24366 4410 1611 5305 5452 24367 3148 2707 2763 4790 24368 2761 2666 2762 4814 24369 141 3408 1978 5123 24370 4396 3942 5212 5290 24371 4219 5179 3775 5555 24372 4412 3928 4947 5313 24373 1962 230 3645 3636 24374 949 1688 824 5470 24375 85 510 518 1965 24376 1660 5086 986 5584 24377 945 1743 727 4676 24378 3268 2648 2654 5371 24379 2759 4974 2667 5399 24380 3126 3307 2726 4898 24381 1497 1496 848 5395 24382 728 1354 915 5350 24383 1667 660 1814 5364 24384 3130 2297 3256 4927 24385 3355 2998 3424 4690 24386 9 1964 407 399 24387 2260 2267 2266 5520 24388 1046 1047 1719 4749 24389 2067 5211 2068 5519 24390 1539 1150 1704 5176 24391 3260 2726 3219 5273 24392 2035 2036 2037 5056 24393 2427 3298 3299 5298 24394 2037 2882 2035 5056 24395 2976 3350 3421 4886 24396 4228 5189 3910 5434 24397 2140 2136 2148 5252 24398 3539 3586 3643 5096 24399 2046 2045 2044 5372 24400 1522 1650 1612 5014 24401 1602 770 1395 4803 24402 3736 5099 4376 5598 24403 2724 2779 2778 4956 24404 3475 3476 3522 5279 24405 1172 1170 1791 4893 24406 3707 5177 4191 5639 24407 2730 2532 3287 4841 24408 3641 406 328 5105 24409 3141 2189 3014 5129 24410 2907 3151 3257 5370 24411 3580 3550 3572 4306 24412 3641 3647 406 5105 24413 3572 3582 3562 4804 24414 514 141 1978 5123 24415 1137 1122 1493 5304 24416 1769 1812 1574 4636 24417 1013 1191 1767 4796 24418 733 1466 1103 4710 24419 943 5253 4328 5576 24420 2533 3319 2715 5397 24421 1634 1695 1139 5574 24422 2157 2148 3060 5153 24423 1810 1863 1209 4854 24424 3918 5164 4123 5472 24425 1618 1303 1086 4734 24426 472 497 470 5162 24427 3416 409 81 5134 24428 2517 2516 2613 5385 24429 4371 4928 3900 5620 24430 2913 5379 4695 5528 24431 1335 1472 1471 5237 24432 2864 2193 3240 5627 24433 2292 2295 2294 5182 24434 4323 3698 5317 5505 24435 2737 2667 2759 4974 24436 801 802 800 5265 24437 917 914 916 5458 24438 3705 5506 4541 5642 24439 1836 1826 1436 5486 24440 2061 2062 2063 5471 24441 708 1444 709 5068 24442 1899 1528 1968 5013 24443 2467 2521 2702 4737 24444 2602 2917 2619 5380 24445 3258 2396 2374 4999 24446 3066 2752 3348 5079 24447 3658 4841 5484 5612 24448 2971 2417 2334 5382 24449 231 2033 3417 3533 24450 265 2030 3534 3418 24451 5147 5462 3948 5570 24452 305 347 349 4795 24453 1156 1106 1249 5090 24454 3089 3114 2834 4772 24455 1581 1653 1628 5231 24456 2562 2940 3249 5232 24457 686 678 679 5461 24458 2162 2163 2161 5113 24459 1518 1517 527 5256 24460 1467 1147 1164 5403 24461 695 1858 1736 5234 24462 3594 3632 3595 4522 24463 1550 3467 191 5158 24464 3917 5026 4297 5604 24465 3438 4826 530 5546 24466 3587 3564 3592 5143 24467 823 1118 1744 5075 24468 1502 1439 1766 5151 24469 2126 2122 2125 4817 24470 861 5457 860 5558 24471 688 696 684 4717 24472 836 1727 928 4811 24473 4640 5212 3942 5290 24474 2978 2910 2191 4889 24475 1763 1804 1718 5398 24476 1517 1518 1516 4892 24477 1139 1137 1634 4876 24478 3277 2142 3324 5247 24479 1163 1322 1162 5150 24480 162 1885 1605 5091 24481 865 863 864 5214 24482 2041 2040 2039 5213 24483 2978 2093 2097 4650 24484 629 633 743 4652 24485 2212 2213 2216 4651 24486 1551 1430 1431 4655 24487 2114 2879 2429 4654 24488 649 651 650 4656 24489 1239 1405 1372 4657 24490 2147 2103 3232 4658 24491 773 774 797 5386 24492 2509 2507 2506 5387 24493 3414 1979 59 5194 24494 1028 1660 986 5584 24495 3415 2031 427 4821 24496 2475 3046 2596 5420 24497 3133 2621 3131 4982 24498 3592 3642 5142 5143 24499 860 861 859 5457 24500 3151 2591 3106 4911 24501 1339 1346 1340 5318 24502 1966 1890 1301 4744 24503 3745 5202 4392 5594 24504 3393 2003 3402 4709 24505 1743 1206 1859 5244 24506 3799 5088 4175 5566 24507 3559 3589 3590 4653 24508 356 1951 22 5256 24509 460 458 416 4780 24510 3321 2855 3179 5391 24511 870 871 880 5392 24512 3047 2750 1995 4947 24513 3165 2704 2208 4881 24514 2249 2226 2225 5393 24515 4738 4875 3889 5629 24516 2284 2285 2286 4855 24517 1302 1891 1604 4925 24518 1561 1560 627 4964 24519 3415 300 3554 3646 24520 1079 953 1168 5394 24521 1858 1586 1736 5234 24522 1465 1464 1241 5601 24523 2831 2833 2797 5081 24524 2692 3036 3187 5089 24525 3596 3642 3539 5142 24526 2614 2672 2673 5368 24527 1010 1355 1087 4766 24528 3631 3557 3617 5135 24529 3265 2524 3122 5302 24530 3227 2694 2510 5572 24531 2065 3086 2063 5642 24532 894 718 717 4845 24533 3534 2030 265 3528 24534 3647 3555 196 1963 24535 655 658 657 4799 24536 3167 2126 2135 5571 24537 2033 231 3529 3533 24538 3761 4211 5147 5570 24539 1271 1579 1269 5432 24540 1776 1793 1547 5433 24541 2998 2997 3334 4973 24542 1445 708 1446 5094 24543 1066 1142 1067 5108 24544 1353 1214 1309 4227 24545 409 316 81 5134 24546 1213 1954 1308 5230 24547 913 1589 960 5310 24548 5133 5199 4215 5497 24549 2804 2748 2803 5167 24550 2693 2472 2825 5088 24551 3477 550 191 5158 24552 2069 2067 2068 5519 24553 1872 1265 1739 5418 24554 2181 2180 2375 4705 24555 3095 3091 3039 5430 24556 3146 2839 2242 4991 24557 412 452 451 5038 24558 422 4978 1980 5266 24559 4328 5253 3751 5576 24560 2362 2361 2360 5400 24561 3367 3042 3398 4726 24562 2626 2625 2346 4688 24563 2155 2158 2159 5001 24564 486 488 483 5309 24565 3578 3579 3547 5106 24566 3059 3338 3171 4851 24567 2884 2837 2870 5401 24568 3150 2413 2707 4670 24569 3848 5279 4726 5608 24570 2382 2334 2417 5272 24571 457 459 461 5530 24572 818 817 902 5402 24573 3263 5236 4348 5365 24574 509 426 118 5311 24575 2759 5123 4974 5399 24576 347 305 346 5631 24577 1761 1819 1099 5404 24578 2335 3078 2942 5407 24579 2058 2059 2057 4998 24580 3569 1367 4761 5624 24581 2406 2350 2811 5181 24582 3010 3202 3093 5163 24583 3356 3003 3423 5165 24584 3844 5166 4431 5430 24585 3545 3603 3604 4981 24586 1412 4977 730 5595 24587 2192 3121 2057 4704 24588 3128 2246 2243 5414 24589 1043 1728 1760 5078 24590 3315 4349 5484 5612 24591 3418 519 123 428 24592 3417 317 47 408 24593 2255 2262 2256 5415 24594 1543 1283 1906 5309 24595 3537 3528 3464 4931 24596 886 806 786 4827 24597 1534 864 862 5097 24598 1141 1948 1915 4664 24599 1673 740 605 4988 24600 3412 2004 2802 4628 24601 2109 2110 2107 5133 24602 2194 4541 5506 5642 24603 3555 1886 1963 5105 24604 344 342 404 5003 24605 1191 1012 1246 5442 24606 3560 3623 3625 4397 24607 1389 1933 1392 4660 24608 3149 2876 2574 4995 24609 118 426 1952 5311 24610 43 398 406 1963 24611 119 1962 517 509 24612 1091 1121 1533 4678 24613 429 466 505 5396 24614 582 583 559 4653 24615 1909 1286 1222 5130 24616 2026 2992 2735 4966 24617 4334 5438 3780 5474 24618 1448 1403 1894 5271 24619 2314 2321 2312 5210 24620 888 886 1654 5092 24621 3345 3022 2853 5003 24622 1977 3361 3382 4832 24623 3049 3397 3048 4745 24624 3460 3441 3529 5173 24625 3621 3620 3540 4417 24626 1534 862 869 5097 24627 1176 1462 1732 4739 24628 1322 545 1546 4701 24629 2709 2316 2319 5423 24630 3542 3611 3613 5144 24631 3084 5593 2852 5611 24632 2163 2164 2161 5113 24633 2236 2234 2932 4848 24634 992 994 996 5425 24635 311 367 59 5194 24636 2959 2228 3098 5426 24637 2565 2672 2614 5368 24638 1880 1879 567 4673 24639 2254 2257 2253 5118 24640 2595 3168 3172 5026 24641 3141 3014 2919 5129 24642 1550 191 550 5158 24643 863 861 862 5558 24644 1680 932 1049 5087 24645 2295 2297 2296 4762 24646 1726 1474 685 5109 24647 4720 5465 2872 5590 24648 4461 5168 3721 5618 24649 546 114 1666 5038 24650 2578 2592 2577 5312 24651 2590 3197 3292 4787 24652 2495 2689 3211 5168 24653 2997 1978 2759 5123 24654 3675 5222 4559 5471 24655 2830 2807 2187 4779 24656 1585 1113 1738 4941 24657 2334 2331 5382 5603 24658 724 5102 4601 5529 24659 1887 1610 1721 4706 24660 1504 1503 1167 4783 24661 1106 1368 1249 5440 24662 669 663 670 4784 24663 2950 3064 3065 4674 24664 1962 509 578 4962 24665 1338 1279 1957 4992 24666 578 4962 509 5311 24667 2196 2919 2085 4842 24668 2965 1979 2967 5194 24669 2596 3401 2542 5420 24670 3563 3629 3632 5289 24671 1958 1420 570 4850 24672 3243 2107 2111 5199 24673 443 428 444 4720 24674 2819 3235 2112 4857 24675 2841 2843 2541 5047 24676 685 5109 1484 5557 24677 2702 3256 2817 5502 24678 1792 701 688 5186 24679 2650 3273 3238 4728 24680 2347 2348 2351 4917 24681 1285 1306 1215 5343 24682 1568 1783 1747 4816 24683 1792 741 1415 5508 24684 2707 2763 4790 5538 24685 3311 2533 2730 5484 24686 1983 3251 3051 4724 24687 3467 3477 191 5158 24688 356 22 386 5256 24689 2462 2483 2539 4815 24690 578 509 118 5311 24691 2955 2321 2956 5592 24692 2621 2622 2620 5085 24693 1295 1297 1923 4680 24694 659 655 1795 5119 24695 3297 2736 3038 4824 24696 983 986 1660 5086 24697 2742 2733 2734 4918 24698 4370 5280 666 5437 24699 2941 3283 2192 4908 24700 2668 2752 2669 5258 24701 1845 1249 1787 4843 24702 580 398 1963 5105 24703 1774 1754 783 5045 24704 4322 5242 3760 5477 24705 3543 3639 3595 4724 24706 4510 5258 3902 5591 24707 434 487 493 4786 24708 2039 2042 5213 5575 24709 2369 2408 2407 4840 24710 3491 3490 3440 5303 24711 2736 2732 2735 5101 24712 230 1962 1884 3636 24713 3654 5157 4853 5589 24714 3627 3604 3606 4622 24715 883 1493 1630 5481 24716 857 855 1115 4980 24717 1853 1857 637 4943 24718 1460 1461 1124 5154 24719 1343 1879 1345 5019 24720 364 363 307 5248 24721 3052 2218 2220 4753 24722 2498 2385 2384 5628 24723 3695 5443 4322 5477 24724 1437 1439 1502 5151 24725 1221 1311 1220 5347 24726 3232 2808 3187 5169 24727 2756 3368 3340 5033 24728 2844 2845 2842 4853 24729 722 725 724 5102 24730 2858 2883 2457 5060 24731 1084 1900 1899 4759 24732 3645 120 517 439 24733 166 3530 1945 5224 24734 2068 5211 4343 5519 24735 1148 980 981 5071 24736 3108 2965 2967 5203 24737 1269 1324 1270 5067 24738 120 3645 3565 439 24739 1691 1467 1469 5074 24740 3458 512 3534 5136 24741 1512 1752 1514 5532 24742 965 1387 1391 4919 24743 3534 512 519 5136 24744 2094 4323 5317 5505 24745 2245 2886 2241 5084 24746 1801 1321 1397 5180 24747 3129 3606 281 5356 24748 2730 3315 5484 5612 24749 3793 5427 4214 5478 24750 1541 679 1451 4884 24751 2869 2868 2545 4887 24752 2427 3184 3298 5298 24753 3437 166 547 5224 24754 166 1945 547 5224 24755 3488 3526 3524 4792 24756 786 806 784 5620 24757 1220 1111 1159 4742 24758 1979 311 59 5194 24759 959 918 1610 5495 24760 3515 556 182 5419 24761 1947 1910 1394 4725 24762 3479 3428 3478 5276 24763 3389 3390 3054 4793 24764 807 808 802 4936 24765 1380 735 665 5643 24766 1569 1321 577 4804 24767 707 708 709 5068 24768 1397 1322 1163 5150 24769 980 979 981 5071 24770 1707 1396 1480 4997 24771 3566 400 3644 5134 24772 1923 1297 1922 5509 24773 3644 400 409 5134 24774 3415 427 157 520 24775 500 463 432 4904 24776 3507 3508 3429 4865 24777 3369 2872 3339 4720 24778 3199 3215 2932 4986 24779 552 454 116 5583 24780 1494 942 1064 5390 24781 2684 2773 3278 5459 24782 1412 725 730 4977 24783 2629 2734 2733 4918 24784 698 703 702 4987 24785 1683 1503 1535 5002 24786 1810 1083 947 5513 24787 1517 1519 527 5383 24788 1964 9 581 399 24789 3385 3396 2008 5303 24790 3377 3379 2926 4791 24791 810 804 812 5122 24792 3636 3649 3565 4962 24793 439 522 509 4962 24794 758 759 762 5466 24795 3411 3148 2763 4790 24796 2664 3278 2898 4773 24797 3415 3554 300 3336 24798 1951 527 22 5256 24799 1944 1598 1600 4907 24800 4563 5342 3688 5545 24801 3084 2852 2706 5611 24802 1307 1411 1111 4743 24803 1987 3008 3362 4865 24804 1064 1158 1169 5104 24805 555 1356 1540 4830 24806 792 1495 1376 5444 24807 2912 3094 2631 5117 24808 2405 3116 2635 5254 24809 3299 3288 2922 4802 24810 3569 3555 3570 4761 24811 3658 5484 4349 5612 24812 398 411 328 5105 24813 556 1609 182 5419 24814 3397 3392 3050 4767 24815 182 1609 3454 5419 24816 872 1535 935 5540 24817 2016 3390 3391 5021 24818 2966 1979 2965 5446 24819 2463 2461 2727 5535 24820 800 1568 799 5098 24821 1462 1005 1407 5491 24822 405 385 319 4674 24823 2105 2107 3243 5199 24824 1873 1078 1264 4951 24825 1964 161 3536 3444 24826 2534 2485 2546 5389 24827 3370 2764 2672 5027 24828 542 1315 1854 4920 24829 2731 2794 3410 4665 24830 1886 196 3555 1963 24831 2666 2809 2762 4814 24832 2477 2674 2805 4914 24833 2841 2840 2842 5483 24834 2140 2135 2136 5252 24835 3459 3460 3444 5091 24836 407 3536 82 3532 24837 1251 1635 1745 5072 24838 3532 82 407 329 24839 328 3641 44 406 24840 3534 160 519 512 24841 2942 2577 2592 5312 24842 3647 44 3641 406 24843 160 3534 3458 512 24844 401 84 408 3533 24845 3406 2023 2773 4839 24846 46 409 3644 400 24847 3566 46 3644 400 24848 84 401 3457 3533 24849 3008 2016 3391 5021 24850 2571 2851 2566 5115 24851 3149 2835 2552 5485 24852 2730 3310 3315 5612 24853 800 795 801 5265 24854 122 511 3640 3646 24855 741 1792 688 5186 24856 1165 1685 1665 5594 24857 281 3541 2006 5356 24858 399 329 410 4844 24859 1363 1364 1273 5580 24860 3302 3308 2656 5468 24861 386 22 527 5256 24862 1923 1922 1701 4960 24863 3645 517 1962 4962 24864 511 122 520 3646 24865 1959 552 116 5583 24866 3637 3648 3566 5134 24867 1027 971 970 5619 24868 1299 1621 1647 4696 24869 923 1353 1354 5032 24870 3860 4410 5305 5452 24871 3458 3528 3537 5136 24872 554 1364 1536 4959 24873 2334 2333 2331 5603 24874 786 785 787 5377 24875 2679 2543 2542 4856 24876 1173 1279 1338 4992 24877 3038 1988 3037 4875 24878 1390 1929 1388 4700 24879 2743 2745 2871 5472 24880 578 118 1952 5311 24881 326 348 388 5079 24882 3384 3254 3386 4979 24883 499 459 437 4969 24884 3393 3394 3027 5173 24885 3418 428 3339 5136 24886 3888 4695 5379 5528 24887 1445 1446 1816 5094 24888 3811 5462 4211 5570 24889 3578 3586 3579 5106 24890 3437 3530 166 5224 24891 4348 5236 3801 5365 24892 843 845 943 5253 24893 3321 2651 3316 5036 24894 1867 1860 1081 5037 24895 3129 281 2006 5356 24896 3593 3544 3589 4703 24897 1214 1308 1309 5230 24898 931 1185 1184 5503 24899 2418 2382 2417 5272 24900 3113 2620 2622 5085 24901 983 985 986 5086 24902 1735 1390 1734 5517 24903 341 301 340 4891 24904 2337 3204 3200 5076 24905 3447 3512 3525 4907 24906 380 396 370 4861 24907 3241 2996 2776 5161 24908 2062 4559 5222 5471 24909 346 350 348 5631 24910 407 329 399 4844 24911 2634 2608 2517 5240 24912 2543 2575 2476 5587 24913 4343 5211 3725 5519 24914 1843 854 1532 5264 24915 1667 600 660 5364 24916 461 459 424 4830 24917 302 377 373 5345 24918 3788 5280 4370 5437 24919 1937 530 1606 4826 24920 2752 2753 2669 5258 24921 2871 5465 3347 5472 24922 2169 2625 3191 5537 24923 3175 2601 2600 4958 24924 509 446 426 5311 24925 2964 2965 2963 4946 24926 1497 1730 1785 5299 24927 1846 1843 1532 5264 24928 322 21 1961 5383 24929 2167 2166 2173 5131 24930 1260 1737 1259 5521 24931 3361 3400 2847 5533 24932 2654 2668 2669 4510 24933 313 348 350 4822 24934 929 882 881 5196 24935 1007 833 835 5493 24936 330 362 358 4923 24937 748 1552 751 5439 24938 2812 2007 2989 4969 24939 2157 2156 2148 5153 24940 1249 1834 1156 5090 24941 422 470 471 4978 24942 3547 3585 3577 5192 24943 2681 2682 3343 4760 24944 2397 2471 2428 5455 24945 3745 5474 4212 5594 24946 3640 3649 3554 4821 24947 522 511 427 4821 24948 3811 5570 4390 5571 24949 1881 1557 1889 4820 24950 327 334 336 4839 24951 2675 2947 3361 5533 24952 2670 2750 3346 5160 24953 1498 1260 1037 4810 24954 1946 1909 1350 5276 24955 2185 2350 2406 5181 24956 2039 3181 2042 5575 24957 21 527 1961 5383 24958 1367 1319 1886 4761 24959 386 527 21 5383 24960 513 489 507 5629 24961 1197 1077 1196 5561 24962 2672 2764 2673 5027 24963 2752 3066 2009 5079 24964 3244 3230 2874 5062 24965 681 680 1410 4993 24966 1213 1316 1954 5004 24967 2050 3115 2052 5489 24968 1664 1508 1720 5063 24969 116 420 1959 5583 24970 1328 1337 1363 5015 24971 1574 1424 620 5447 24972 884 1796 1782 5448 24973 1639 1660 1028 5584 24974 2555 2689 2495 5168 24975 3648 3555 3641 5105 24976 2927 2287 2459 5607 24977 1753 1749 1159 5450 24978 1999 3392 3367 5608 24979 3444 3538 3532 4844 24980 1690 1426 1427 5053 24981 1422 1423 1297 5509 24982 1640 534 1307 4780 24983 85 1888 510 1965 24984 3636 4962 1884 5645 24985 508 504 425 4637 24986 3157 2424 3171 5409 24987 1676 5342 4563 5545 24988 1093 1419 1420 5011 24989 454 420 116 5583 24990 3787 5382 4476 5603 24991 893 1862 1571 5539 24992 1904 1549 526 5029 24993 2788 2812 2558 4818 24994 2369 2368 2366 5541 24995 2822 2823 2146 5327 24996 2261 3053 2957 5542 24997 3454 3515 182 5419 24998 3243 2808 3232 5169 24999 560 1903 1308 4769 25000 3151 5370 4911 5565 25001 3358 1992 3427 4849 25002 2466 2465 2343 5568 25003 1484 685 1474 5109 25004 3541 281 3606 5356 25005 860 5457 4530 5558 25006 1904 1972 1549 5029 25007 2434 2436 3082 5548 25008 3201 2960 2962 5549 25009 2324 2387 2983 5551 25010 1044 1112 1117 5552 25011 1131 1129 1132 5550 25012 2522 2281 2283 5553 25013 2049 2048 2050 5554 25014 3304 3313 2658 5556 25015 2345 3020 3314 5555 25016 2756 3425 3368 5033 25017 316 400 411 5134 25018 2692 2589 3036 5089 25019 1638 1788 742 5616 25020 656 1866 1644 5617 25021 2197 2570 2199 5490 25022 1750 745 1116 5216 25023 1212 1831 1095 4901 25024 3087 2680 2969 4957 25025 1527 1968 1528 5013 25026 1329 1920 1285 5344 25027 1496 747 749 5560 25028 787 1696 786 5377 25029 428 512 521 5136 25030 2806 3364 3395 4823 25031 322 386 21 5383 25032 2257 3216 2253 5118 25033 1284 1847 1588 5022 25034 3444 3532 3536 4844 25035 1663 1970 1892 5046 25036 5242 5443 3993 5477 25037 3442 3464 3528 4931 25038 2033 3027 3394 5173 25039 3257 3286 2074 5565 25040 3489 3485 3432 5020 25041 3436 3466 3471 5018 25042 2334 2331 2971 5382 25043 2825 2472 2663 5566 25044 3377 1993 3360 4888 25045 557 1617 1300 4822 25046 1285 1920 1317 5344 25047 416 457 461 5530 25048 3404 360 60 5446 25049 1196 1204 1197 5561 25050 2149 2143 3277 5155 25051 576 88 508 5614 25052 1023 1141 1596 5646 25053 3158 2456 3155 5061 25054 3351 3350 2976 4886 25055 1225 1140 1289 5543 25056 2175 3255 2856 5588 25057 1067 940 1066 5108 25058 1659 1465 1519 4751 25059 276 3621 3028 5410 25060 3340 317 47 3417 25061 670 1717 674 5147 25062 3339 3418 123 428 25063 303 358 387 4895 25064 1990 2757 3002 5040 25065 511 520 427 4821 25066 3554 3646 3640 4821 25067 1003 668 588 5585 25068 2744 2734 3242 5431 25069 532 1651 1305 4795 25070 2573 2846 2845 5589 25071 843 943 1751 5576 25072 4334 5085 5438 5474 25073 311 1979 60 5446 25074 1123 1226 1121 5093 25075 4720 3852 5465 5590 25076 1296 1926 1348 4809 25077 2109 2107 2106 5133 25078 1175 1156 1203 5578 25079 723 1405 1806 5579 25080 1228 1639 1521 5577 25081 60 360 311 5446 25082 3631 3611 3542 5144 25083 1541 1520 991 5581 25084 2229 2231 2232 5573 25085 4530 5457 3683 5558 25086 1777 1491 1805 5605 25087 1635 1252 1401 4729 25088 1055 1057 1054 5582 25089 161 1964 1885 3444 25090 1516 1518 1521 4892 25091 1391 1119 1523 5331 25092 1085 1240 1058 5314 25093 43 580 398 1963 25094 1392 1119 1391 5331 25095 2474 3084 2349 5593 25096 1962 119 578 509 25097 2447 3206 2582 5586 25098 2715 3319 3327 5397 25099 685 1484 1451 5557 25100 3438 3499 3500 4826 25101 3070 2429 2815 5301 25102 1345 578 1344 5311 25103 2804 3395 3378 5516 25104 3375 2747 3376 5622 25105 950 1412 730 5595 25106 3040 3367 3041 5608 25107 2759 2770 2737 4974 25108 2792 2822 2146 5327 25109 1394 1223 1393 5562 25110 2276 3138 2401 5596 25111 1724 1770 816 5597 25112 2414 3072 3043 5602 25113 2718 3325 3330 4996 25114 1341 1096 1340 5416 25115 2121 2429 3070 5301 25116 2665 3407 2769 4758 25117 1934 561 1935 4972 25118 392 323 383 4947 25119 3022 3074 2853 5003 25120 1283 1279 1280 5482 25121 2270 2354 2269 5613 25122 3180 2634 2517 5240 25123 3616 5410 2014 5606 25124 2871 3426 3347 5465 25125 308 396 402 4883 25126 715 722 721 5615 25127 157 2031 427 3415 25128 1979 3404 60 5446 25129 482 483 431 4966 25130 4709 5178 3846 5544 25131 3437 3476 3530 5224 25132 791 790 789 5296 25133 1980 3407 2993 5266 25134 174 3438 530 5546 25135 198 3562 577 5624 25136 2997 2667 2728 5399 25137 2042 2041 2039 5213 25138 865 864 867 5214 25139 1529 3498 174 5546 25140 2014 276 3028 5410 25141 1035 1348 1349 5609 25142 1957 1279 1283 5482 25143 1843 1217 1204 4905 25144 748 746 1552 5439 25145 1350 1913 1946 5276 25146 2196 2195 2197 5626 25147 3424 2976 3079 5218 25148 2757 1990 3003 5040 25149 1827 1272 1849 5476 25150 1628 1481 1581 5231 25151 2940 3294 3249 5232 25152 2358 2357 2356 5632 25153 832 927 834 5082 25154 311 360 359 5446 25155 3395 2804 2805 5516 25156 2789 3306 3251 5633 25157 2668 2649 2758 5591 25158 3578 3643 3586 5096 25159 1383 999 1705 5634 25160 1320 1831 571 5138 25161 1504 1802 1487 5635 25162 1925 541 1476 5525 25163 1310 1253 1698 4852 25164 3435 3506 3505 5111 25165 2979 3056 3055 5636 25166 574 1283 1543 5309 25167 508 88 423 5614 25168 1892 1970 1230 5046 25169 198 1367 3569 5624 25170 1531 1607 1608 5639 25171 3085 3117 2605 5640 25172 1932 1930 1564 5536 25173 1896 1422 1291 4952 25174 1301 1300 1217 5050 25175 3129 2006 3261 5356 25176 327 337 338 5195 25177 565 1902 1553 4861 25178 3297 2762 2809 5184 25179 453 455 515 5494 25180 1316 1213 1198 5004 25181 961 1253 1252 5421 25182 2017 3002 3353 4883 25183 492 421 487 4994 25184 2850 2775 1997 5058 25185 3123 2790 2687 5124 25186 1105 1355 954 5016 25187 3116 2405 2623 5254 25188 322 361 386 5383 25189 1979 311 5194 5446 25190 2341 2339 2342 5487 25191 3374 2749 3375 5590 25192 514 477 496 5123 25193 423 88 1563 5614 25194 840 839 842 5436 25195 1880 3553 229 5645 25196 576 1563 88 5614 25197 3370 3088 2018 4904 25198 1150 1539 1669 5176 25199 2795 2546 2485 5389 25200 2748 3376 2747 5622 25201 3592 3564 3642 5143 25202 3468 3477 3467 5158 25203 2907 3197 3151 5370 25204 1403 1401 1402 5233 25205 1901 558 1652 4895 25206 386 5256 527 5383 25207 2592 2593 2594 5498 25208 3359 3089 2834 4772 25209 851 850 849 5246 25210 1306 1548 1215 5343 25211 1785 1730 1179 5299 25212 2568 3266 3193 5511 25213 2194 3086 2065 5642 25214 3947 5199 5133 5497 25215 1371 1611 1733 5305 25216 3100 2010 3352 4923 25217 1573 549 1894 4891 25218 2994 3373 1996 4786 25219 3328 2659 3276 5625 25220 1827 1849 841 5476 25221 1562 1560 1153 5411 25222 509 517 439 4962 25223 3636 3565 3645 4962 25224 564 1559 1939 5111 25225 3028 2777 2014 5410 25226 2461 3270 2727 5535 25227 3153 2514 2515 5294 25228 3034 2214 2210 5286 25229 3084 2706 2705 5611 25230 1809 1759 622 5193 25231 912 908 910 5197 25232 3596 3592 3642 5142 25233 2093 2092 2094 5317 25234 1729 591 1404 5200 25235 1964 581 1885 4844 25236 3372 2788 2737 5281 25237 2629 2626 2857 5522 25238 1195 1233 1100 5282 25239 3415 3336 2031 4821 25240 1382 1908 1428 5116 25241 3647 1963 406 5105 25242 3058 1985 3383 5020 25243 2280 2568 3193 5511 25244 1831 1449 571 5138 25245 3421 2540 3273 5139 25246 1230 1721 1706 5623 25247 3632 3629 3595 5289 25248 1507 1603 1509 5288 25249 586 1414 1375 5191 25250 174 530 1529 5546 25251 1302 1218 1086 5057 25252 1360 1101 1002 5188 25253 3371 2022 3099 4871 25254 1382 1428 1381 5116 25255 2014 3616 276 5410 25256 3042 2676 3402 5178 25257 830 1742 828 5174 25258 2711 2710 3172 5604 25259 1480 1479 1539 5295 25260 1457 1746 1844 5146 25261 944 1743 1859 5244 25262 2020 3376 2999 5018 25263 1900 1882 1549 5241 25264 3636 1884 229 5645 25265 198 577 1367 5624 25266 1282 1281 1290 5388 25267 1358 1814 1357 5251 25268 1919 570 1420 4850 25269 2772 2771 2818 5010 25270 3617 3611 3631 5135 25271 4211 5462 5147 5570 25272 2353 2913 3081 5528 25273 3250 2774 2683 5429 25274 3263 2814 2813 5365 25275 1019 1864 1206 5366 25276 2418 2420 2419 5332 25277 2062 2064 2063 5222 25278 664 665 666 5437 25279 3300 2753 3419 4828 25280 2170 3183 2348 5523 25281 1646 1005 1462 5491 25282 1867 1261 1875 5534 25283 3032 3220 2268 5307 25284 1312 1313 1314 5406 25285 2066 2068 2067 5211 25286 2184 2893 2164 5220 25287 3035 3034 2299 5183 25288 1302 1895 1218 5057 25289 677 676 672 5263 25290 3112 2956 2321 5592 25291 633 631 1565 5261 25292 3107 2433 2603 5290 25293 3075 3384 3386 4979 25294 3173 2601 3033 5514 25295 2885 3283 2646 5217 25296 1803 721 724 5529 25297 1621 1883 1620 5362 25298 3585 3575 3577 5192 25299 1318 1367 577 5624 25300 3606 3599 3541 5356 25301 942 1063 1064 5390 25302 2657 3310 3287 5201 25303 628 1453 632 5219 25304 1452 596 598 5209 25305 2388 2376 2389 5208 25306 479 505 466 5396 25307 1555 538 1554 5345 25308 1217 1300 1216 5050 25309 2972 2390 2376 5349 25310 726 1642 976 5464 25311 2668 2758 3348 5591 25312 3402 3363 3042 5178 25313 3467 191 192 1550 25314 2645 2701 2700 5292 25315 2340 3102 2338 5621 25316 2793 3290 2822 5215 25317 270 1997 271 3583 25318 1278 1860 1863 5384 25319 3484 183 184 533 25320 381 383 376 5313 25321 2232 2970 2229 5573 25322 693 698 697 5563 25323 791 793 794 5373 25324 1213 1308 1214 5230 25325 3630 271 272 2995 25326 2342 2394 2393 5412 25327 2726 2520 3219 5273 25328 184 185 3517 1649 25329 198 3569 3562 5624 25330 1106 1719 1368 5440 25331 3403 2898 2023 5195 25332 2499 2385 2498 5628 25333 1443 768 1602 5257 25334 3594 220 219 1601 25335 1050 1048 1051 5480 25336 3127 3125 2086 5367 25337 1902 1465 1241 5601 25338 3615 287 288 3067 25339 979 973 978 5348 25340 2719 2718 3317 5250 25341 1574 620 1425 5447 25342 1782 1796 1425 5448 25343 2759 1978 3408 5123 25344 280 2006 281 3541 25345 1254 1252 1253 5421 25346 1753 885 1749 5450 25347 2809 2810 3297 5184 25348 546 1666 1893 5038 25349 246 2013 245 3430 25350 2267 2271 2266 5520 25351 3438 174 3498 5546 25352 634 1676 1678 5342 25353 3608 214 213 523 25354 2949 2599 3119 5408 25355 1402 1401 1254 5233 25356 182 183 3454 1609 25357 3216 2888 2951 5242 25358 205 206 1578 3618 25359 2906 2908 2909 5428 25360 2984 280 279 3597 25361 2015 287 286 3551 25362 2199 2570 2945 5490 25363 2222 2219 2218 5376 25364 3498 3495 3438 5546 25365 3227 2510 3218 5572 25366 3413 1980 2974 4978 25367 562 1325 1324 5260 25368 766 767 770 5413 25369 877 881 879 5245 25370 1880 229 1884 5645 25371 2550 2816 2454 5268 25372 2544 3356 3423 5165 25373 2878 2527 2460 5226 25374 3609 285 286 2785 25375 736 1454 1453 5223 25376 2020 262 263 3471 25377 282 281 3129 3606 25378 3455 192 193 568 25379 861 860 862 5558 25380 1610 918 972 5495 25381 784 782 783 5451 25382 3302 2656 2652 5468 25383 3365 2008 3396 5303 25384 1451 1484 1520 5557 25385 2396 3315 3310 5612 25386 561 176 175 3496 25387 222 221 3590 582 25388 2333 2329 2331 5603 25389 2944 2244 2828 5460 25390 4322 5443 5242 5477 25391 209 210 1536 3601 25392 1165 1665 1167 5594 25393 218 217 3563 1619 25394 1807 211 212 3603 25395 1720 1146 1143 5227 25396 252 253 3058 3489 25397 3548 202 201 1546 25398 569 15 16 375 25399 2819 3263 3169 5236 25400 733 716 706 5339 25401 2029 269 268 3580 25402 1959 1346 552 5583 25403 1143 1144 1067 5228 25404 3562 3569 3571 5624 25405 54 53 2021 371 25406 190 191 3477 550 25407 1855 223 224 3596 25408 3262 2403 3234 5267 25409 2459 3279 2927 5607 25410 1273 1833 1363 5580 25411 1788 1638 1773 5616 25412 1644 1866 1870 5617 25413 1149 1228 1229 5600 25414 1478 1531 1608 5639 25415 2511 3117 3085 5640 25416 911 970 971 5619 25417 982 984 983 5269 25418 3616 3619 3621 5410 25419 216 215 3613 1490 25420 3186 283 282 3627 25421 2263 2979 3055 5636 25422 1687 1514 1752 5532 25423 3019 278 277 3561 25424 276 275 3028 3621 25425 1802 1486 1487 5635 25426 1705 1157 1383 5634 25427 283 1976 284 3557 25428 3418 3534 519 5136 25429 2488 2477 2416 5453 25430 3306 2038 3251 5633 25431 913 916 914 5458 25432 567 227 228 3576 25433 1589 1647 960 5310 25434 2359 2357 2358 5632 25435 2195 3202 2197 5626 25436 1230 1149 1229 5600 25437 530 174 173 3438 25438 2000 296 295 3579 25439 874 872 935 5540 25440 244 1982 243 3514 25441 1415 741 1732 5508 25442 548 225 226 3643 25443 3638 201 200 545 25444 2042 3181 2344 5575 25445 2702 2817 3217 5502 25446 3616 3621 276 5410 25447 1606 173 172 3500 25448 537 204 205 3624 25449 243 242 3451 3054 25450 715 721 714 5615 25451 2818 268 267 3552 25452 3553 3574 3636 5645 25453 2269 2354 2986 5613 25454 2783 2015 2784 5229 25455 66 65 3064 385 25456 1813 1786 951 5320 25457 1576 226 227 3568 25458 2379 2820 3120 5417 25459 1127 995 1126 5322 25460 2607 3096 2442 5323 25461 2849 2848 2697 5324 25462 1266 1614 1267 5326 25463 2377 2378 2493 5321 25464 1408 592 594 5325 25465 3255 2693 2856 5588 25466 1570 207 208 3607 25467 1582 816 1770 5597 25468 3138 2276 2274 5596 25469 464 104 105 1317 25470 362 307 363 5248 25471 2543 2576 2575 5587 25472 937 924 936 5315 25473 3323 295 294 3634 25474 2447 3104 3206 5586 25475 1199 1054 1057 5582 25476 1020 1211 1201 5358 25477 2466 2467 2465 5568 25478 991 692 1541 5581 25479 3644 409 3416 5134 25480 1175 1049 1156 5578 25481 952 1405 723 5579 25482 1880 228 229 3553 25483 1529 175 174 3498 25484 2236 2258 2238 5335 25485 950 1789 1412 5595 25486 1751 943 1835 5576 25487 3454 3487 3515 5419 25488 343 40 571 41 25489 2128 2129 2124 5306 25490 27 28 1615 304 25491 1083 1082 947 5513 25492 2663 2826 2825 5566 25493 3097 254 255 3488 25494 3257 3151 3286 5565 25495 657 663 662 5291 25496 1981 279 278 3626 25497 1248 1767 1366 5351 25498 883 1630 1629 5481 25499 3636 229 3553 5645 25500 1290 1281 1921 5388 25501 2775 2618 2617 5297 25502 1496 1116 747 5560 25503 3225 3248 3105 5355 25504 3136 3201 2962 5549 25505 2326 2387 2324 5551 25506 3082 3136 2434 5548 25507 1131 1130 1129 5550 25508 1117 1525 1044 5552 25509 2051 2049 2050 5554 25510 2523 2522 2283 5553 25511 2345 2051 3020 5555 25512 2344 3313 3304 5556 25513 2272 2257 2265 5357 25514 2807 2692 2808 5285 25515 2955 2957 3053 5542 25516 2366 3155 2369 5541 25517 1571 1862 1853 5539 25518 3208 2328 3207 5359 25519 2708 2707 2706 5538 25520 1066 1681 1682 5283 25521 1328 1361 1326 5284 25522 3617 284 285 3209 25523 1164 1147 1145 5403 25524 3633 203 202 575 25525 65 64 1975 403 25526 2502 2562 2504 5346 25527 3311 2730 3315 5484 25528 1885 162 161 3444 25529 2330 2327 3118 5341 25530 562 206 207 3546 25531 1748 1169 1697 5316 25532 1800 1775 1657 5337 25533 926 925 1041 5338 25534 1265 1332 1739 5418 25535 1184 929 931 5503 25536 866 863 1655 5328 25537 204 203 3558 1798 25538 2318 3083 3145 5329 25539 3449 185 186 573 25540 2516 2517 2515 5385 25541 989 990 1151 5330 25542 2552 2835 2508 5485 25543 763 762 759 5466 25544 260 261 2002 3469 25545 2081 2080 2078 5360 25546 2388 2512 2563 5334 25547 2044 2859 2046 5372 25548 1191 1246 1247 5442 25549 2917 2602 3141 5380 25550 1555 16 17 377 25551 774 773 772 5386 25552 2506 2655 2509 5387 25553 3179 2855 2043 5391 25554 870 868 871 5392 25555 2225 2226 2224 5393 25556 1202 1079 1168 5394 25557 2970 3098 2228 5426 25558 992 996 1674 5425 25559 2319 2316 2317 5423 25560 1099 1056 1761 5404 25561 2246 2245 2243 5414 25562 2256 2262 2264 5415 25563 2360 2364 2362 5400 25564 2151 2884 2870 5401 25565 1207 1876 1829 5424 25566 3077 3078 2335 5407 25567 817 1537 902 5402 25568 361 367 311 5194 25569 3239 3191 2625 5537 25570 3268 2654 3291 5371 25571 1737 1260 1763 5521 25572 2143 2144 2139 5610 25573 1509 809 1653 5374 25574 3492 245 244 2977 25575 2068 2070 2069 5519 25576 2120 2455 2040 5369 25577 2999 261 262 3436 25578 1877 1579 1271 5432 25579 1776 1547 1877 5433 25580 829 831 830 5336 25581 3639 289 290 3051 25582 17 18 538 302 25583 233 234 2003 3472 25584 200 199 3582 1569 25585 666 675 1434 5280 25586 535 170 169 3511 25587 3416 2032 3337 5134 25588 39 38 341 549 25589 398 328 406 5105 25590 99 553 100 414 25591 292 1991 293 3587 25592 859 858 860 5457 25593 3246 274 273 3623 25594 273 272 2027 3560 25595 3414 2967 1979 5194 25596 254 1985 253 3432 25597 3562 199 198 577 25598 848 1716 1497 5395 25599 217 216 3614 563 25600 625 624 623 5375 25601 1688 822 824 5470 25602 546 115 114 452 25603 291 2034 292 3544 25604 3152 263 264 3442 25605 297 2019 298 3585 25606 2906 2905 2904 5492 25607 1107 1374 1373 5278 25608 28 29 1501 353 25609 679 678 677 5461 25610 3569 198 197 1367 25611 1243 1395 1396 5361 25612 2759 2667 2997 5399 25613 1192 1836 1436 5486 25614 1476 1927 1925 5525 25615 2557 2558 2862 5042 25616 79 78 2023 327 25617 2193 2140 3240 5627 25618 554 210 211 3567 25619 320 54 55 3004 25620 2018 147 148 432 25621 472 422 478 5266 25622 14 543 13 381 25623 1763 1718 1257 5398 25624 696 705 1611 5452 25625 1068 1274 1769 5381 25626 2403 3021 2304 5531 25627 56 55 1990 379 25628 294 293 3305 3564 25629 564 172 171 3435 25630 116 552 117 454 25631 181 182 3515 556 25632 674 683 682 5462 25633 1384 1693 1435 5333 25634 92 93 488 1543 25635 2415 2913 2351 5379 25636 560 481 96 95 25637 155 2004 154 438 25638 1962 578 1884 4962 25639 1984 70 69 345 25640 9 10 581 399 25641 3124 2569 2309 5598 25642 2005 137 138 441 25643 219 218 3632 531 25644 146 1986 145 456 25645 299 300 3554 3336 25646 580 1963 1886 5105 25647 3095 3039 2412 5430 25648 248 247 3434 3013 25649 1969 1605 1885 5091 25650 476 103 526 102 25651 1228 1521 1901 5577 25652 212 213 1400 3545 25653 2060 2062 2061 5471 25654 386 359 356 5256 25655 256 2025 255 3524 25656 69 68 3066 326 25657 247 246 3516 3075 25658 140 141 1978 514 25659 86 1888 510 85 25660 437 145 144 2989 25661 2022 72 71 321 25662 317 47 48 3340 25663 3339 123 124 428 25664 3555 197 196 1886 25665 479 111 112 542 25666 738 1677 1676 5545 25667 1916 547 1945 5224 25668 62 61 2010 330 25669 2714 3188 3213 5469 25670 2888 2891 2889 5443 25671 461 1540 106 107 25672 2994 128 129 493 25673 110 109 566 502 25674 77 76 2001 325 25675 1871 224 225 3539 25676 497 98 528 97 25677 1617 30 31 350 25678 164 163 551 3453 25679 3547 296 297 3025 25680 525 26 27 365 25681 1880 1884 1345 5645 25682 134 2012 133 419 25683 233 232 3441 3027 25684 471 137 136 2974 25685 19 20 565 370 25686 1634 866 1695 5574 25687 3550 269 270 3018 25688 1090 1141 1023 5646 25689 153 1998 152 436 25690 1550 550 1926 5158 25691 1564 178 177 3501 25692 2707 2708 2763 5538 25693 1598 169 168 3447 25694 3463 193 194 1701 25695 558 24 303 23 25696 143 142 430 2770 25697 221 220 3559 559 25698 2862 3349 2760 5500 25699 1951 1518 527 5256 25700 876 1758 1757 5488 25701 454 448 420 5583 25702 1884 229 230 3636 25703 891 1012 1013 5518 25704 3647 3641 3555 5105 25705 291 290 2011 3593 25706 2030 3418 3339 5136 25707 2056 3235 3293 5478 25708 2953 3252 2622 5438 25709 2902 2141 2940 5559 25710 2950 67 66 319 25711 299 298 3332 3573 25712 3245 2894 2635 5501 25713 52 53 382 3333 25714 1026 1006 969 5475 25715 2992 130 131 431 25716 12 312 13 1597 25717 21 386 22 527 25718 33 570 391 34 25719 3043 3045 2414 5602 25720 3001 2450 2198 5434 25721 2127 3144 3161 5435 25722 1559 171 170 3505 25723 1482 784 806 5620 25724 239 238 3510 3048 25725 81 80 2032 316 25726 2975 3421 3273 5139 25727 68 67 2009 388 25728 267 266 3337 3637 25729 157 2031 156 427 25730 2743 2871 3347 5472 25731 135 136 1980 422 25732 2096 2386 2094 5505 25733 601 602 600 5507 25734 2194 3269 3236 5506 25735 2134 2135 2126 5571 25736 556 1933 1609 5419 25737 52 51 1995 323 25738 2440 2439 2438 5526 25739 222 223 539 3556 25740 2475 2596 2542 5420 25741 665 735 667 5643 25742 532 31 32 305 25743 42 580 398 43 25744 529 208 209 3549 25745 574 486 92 91 25746 507 489 491 5629 25747 107 108 416 534 25748 119 118 578 509 25749 241 240 3508 3008 25750 10 11 1604 314 25751 99 98 1526 467 25752 1883 1621 1967 5362 25753 37 1626 36 390 25754 3534 3528 3458 5136 25755 12 572 11 397 25756 186 187 3520 1476 25757 1721 972 1706 5623 25758 91 90 1545 421 25759 144 2007 143 499 25760 2565 2862 2760 5500 25761 3426 2871 2872 5465 25762 423 89 1563 88 25763 3637 3566 3644 5134 25764 1651 32 33 349 25765 307 63 64 2991 25766 392 50 51 3047 25767 237 1999 236 3522 25768 3527 3522 3476 5279 25769 1627 177 176 3452 25770 249 1977 248 3503 25771 1640 108 460 109 25772 274 1989 275 3540 25773 478 135 134 2993 25774 2852 3084 2474 5593 25775 544 89 492 90 25776 58 57 2017 308 25777 350 346 305 5631 25778 168 167 1600 3525 25779 1943 1394 1393 5562 25780 150 1994 149 429 25781 258 1993 257 3482 25782 2926 256 257 3433 25783 25 1542 331 26 25784 95 1587 491 94 25785 389 70 71 3099 25786 289 288 1983 3543 25787 133 132 513 3037 25788 167 166 547 3437 25789 1988 131 132 490 25790 2675 3361 2847 5533 25791 215 214 3542 1505 25792 252 2008 251 3440 25793 2737 2788 2539 5281 25794 3479 188 189 1946 25795 126 127 3012 503 25796 515 151 150 3089 25797 495 508 423 5614 25798 178 179 3448 524 25799 235 236 3398 3475 25800 2014 2778 3019 5606 25801 3088 146 147 500 25802 3443 194 195 579 25803 2014 277 276 3616 25804 94 536 413 93 25805 3050 237 238 3450 25806 1605 163 162 3459 25807 240 1987 239 3429 25808 113 1641 501 112 25809 75 74 3074 404 25810 451 455 453 5494 25811 29 30 557 313 25812 250 251 3365 3491 25813 578 1952 1344 5311 25814 3428 189 190 1913 25815 428 519 512 5136 25816 368 540 36 35 25817 3445 187 188 541 25818 1979 60 59 311 25819 316 409 400 5134 25820 106 555 424 105 25821 3041 3367 3392 5608 25822 259 260 3364 3521 25823 2026 129 130 482 25824 97 1544 433 96 25825 264 265 2030 3528 25826 2033 231 232 3529 25827 242 2016 241 3502 25828 1961 527 1519 5383 25829 310 14 1881 15 25830 179 180 3513 1947 25831 166 165 1945 3530 25832 128 1996 127 434 25833 3400 249 250 3431 25834 180 181 3446 1914 25835 1342 1346 1339 5318 25836 1499 1930 1932 5536 25837 2744 2743 2734 5431 25838 473 139 138 3079 25839 165 164 1912 3474 25840 121 120 3565 439 25841 2749 3374 2872 5590 25842 408 4 3417 3533 25843 3534 519 8 3418 25844 6 518 3535 1965 25845 7 3415 520 3646 25846 3644 409 3 3416 25847 406 3647 1 1963 25848 3536 2 1964 407 25849 517 1962 5 3645 25850 1529 530 1936 5546 25851 1341 1340 1893 5416 25852 412 113 114 1666 25853 354 72 73 2925 25854 1225 1289 1935 5543 25855 63 62 3100 362 25856 37 38 1573 301 25857 2772 2773 2684 5459 25858 576 87 508 88 25859 35 34 306 1475 25860 2028 125 126 435 25861 1220 1311 1918 5347 25862 3399 258 259 3456 25863 87 1917 425 86 25864 2966 3404 1979 5446 25865 18 19 1553 380 25866 1563 576 1896 5614 25867 159 160 3458 512 25868 3641 44 45 328 25869 83 84 401 3457 25870 3566 45 46 400 25871 159 158 440 3531 25872 83 82 3532 329 25873 3363 234 235 3439 25874 50 49 2024 324 25875 3383 2841 2842 5483 25876 100 1631 101 498 25877 3396 2845 2846 5589 25878 152 151 455 3114 25879 1348 1942 1349 5609 25880 1928 1390 1735 5517 25881 3022 76 75 344 25882 74 73 1992 318 25883 1953 42 315 41 25884 117 1952 118 426 25885 121 122 511 3640 25886 57 56 3002 402 25887 24 387 25 1652 25888 49 48 3368 332 25889 443 125 124 3369 25890 61 60 3404 360 25891 59 58 3414 367 25892 104 1955 415 103 25893 102 442 101 1904 25894 1951 23 356 22 25895 3409 148 149 465 25896 1961 20 21 322 25897 155 156 3405 445 25898 78 77 3403 338 25899 449 154 153 3412 25900 334 79 80 3406 25901 1956 111 110 417 25902 3355 139 140 418 25903 496 142 141 3408 25904 1423 1922 1297 5509 25905 39 309 40 1950 25906 3647 196 1 1963 25907 3535 195 6 1965 25908 3415 7 300 3646 25909 9 1964 2 407 25910 8 265 3534 3418 25911 1962 230 5 3645 25912 116 115 1959 420 25913 3 266 3644 3416 25914 4 231 3417 3533 25915 519 123 8 3418 25916 47 4 3417 408 25917 85 518 6 1965 25918 158 6 518 3535 25919 408 84 4 3533 25920 519 8 160 3534 25921 409 81 3 3416 25922 3415 157 7 520 25923 409 3 46 3644 25924 122 7 520 3646 25925 517 5 120 3645 25926 1 44 3647 406 25927 82 2 3536 407 25928 119 1962 5 517 25929 43 406 1 1963 25930 1964 161 2 3536 25931 545 4804 1397 1569 25932 1397 4804 545 3953 25933 1787 5507 660 602 25934 660 5507 1787 4308 25935 5630 3109 3925 4768 25936 5630 3925 3109 4573 25937 4361 2657 3194 2397 25938 4361 3194 2657 4134 25939 4825 3231 4375 2987 25940 4825 4375 3231 3901 25941 4710 1104 4240 1103 25942 4710 4240 1104 3861 25943 5209 3803 4836 3966 25944 5209 4836 3803 4324 25945 5480 4060 4687 1052 25946 5480 4687 4060 3726 25947 4825 3063 5187 2720 25948 4825 5187 3063 3718 25949 4578 4956 2786 3289 25950 2786 4956 4578 3817 25951 4770 2108 3092 3798 25952 4770 3092 2108 3318 25953 4514 1463 4730 901 25954 4514 4730 1463 3888 25955 5369 4027 2533 4551 25956 5369 2533 4027 4841 25957 1379 4736 946 1096 25958 946 4736 1379 3838 25959 5182 4762 4168 2295 25960 5182 4168 4762 3751 25961 3203 4168 4762 2295 25962 3203 4762 4168 3751 25963 4809 1294 1347 1296 25964 4809 1347 1294 4187 25965 4916 5069 3995 4614 25966 3995 5069 4916 4151 25967 5117 2122 3167 4817 25968 5117 3167 2122 2631 25969 5312 4074 3958 4277 25970 5312 3958 4074 4487 25971 4896 4590 2525 2526 25972 4896 2525 4590 3894 25973 4984 1709 1075 1429 25974 4984 1075 1709 3711 25975 4454 5001 4915 3768 25976 4915 5001 4454 2168 25977 4845 1740 4244 717 25978 4845 4244 1740 3743 25979 2221 4881 4625 3165 25980 4625 4881 2221 3763 25981 4763 604 4843 606 25982 4763 4843 604 3793 25983 4913 1459 5154 3790 25984 4913 5154 1459 1460 25985 5264 856 853 1532 25986 5264 853 856 3722 25987 4677 4855 3177 2286 25988 3177 4855 4677 3859 25989 4375 3231 4270 2572 25990 4375 4270 3231 3901 25991 1062 4872 1702 3754 25992 1062 1702 4872 1178 25993 4414 1702 4872 3754 25994 4414 4872 1702 1178 25995 4577 4982 2513 3678 25996 2513 4982 4577 2518 25997 4933 4591 3166 3853 25998 4933 3166 4591 2300 25999 4901 1447 5271 3840 26000 4901 5271 1447 1212 26001 4620 4973 3325 3651 26002 3325 4973 4620 2536 26003 4887 3150 3148 3850 26004 4887 3148 3150 2545 26005 1379 4776 921 946 26006 921 4776 1379 4234 26007 5146 1136 1700 1746 26008 5146 1700 1136 4369 26009 4566 5127 2383 2639 26010 2383 5127 4566 3710 26011 4678 5111 1227 3885 26012 5027 4463 4157 2765 26013 5027 4157 4463 3929 26014 5286 2215 4753 2214 26015 5286 4753 2215 4148 26016 2218 4753 2215 2214 26017 2218 2215 4753 4148 26018 5060 3947 2116 4398 26019 5060 2116 3947 4647 26020 2836 5274 3825 2451 26021 3825 5274 2836 4441 26022 4900 4546 1238 1237 26023 4900 1238 4546 3791 26024 5468 3769 5073 4669 26025 5468 5073 3769 4440 26026 4927 3682 2630 4154 26027 4927 2630 3682 4293 26028 5066 4825 3063 3718 26029 5066 3063 4825 3192 26030 4907 1594 1915 3868 26031 4907 1915 1594 1944 26032 4772 3303 2877 3359 26033 4772 2877 3303 3872 26034 4653 4806 1433 583 26035 1433 4806 4653 3772 26036 1433 1818 4653 583 26037 4653 1818 1433 3772 26038 1709 4984 4136 1429 26039 4136 4984 1709 4523 26040 5387 4169 3773 4596 26041 5387 3773 4169 4643 26042 5378 3954 4368 3777 26043 5378 4368 3954 5061 26044 2410 4728 2409 3238 26045 2409 4728 2410 3869 26046 4703 3587 2034 3544 26047 4703 2034 3587 4603 26048 4947 2024 3346 3989 26049 4947 3346 2024 3047 26050 5085 4323 5140 3135 26051 5085 5140 4323 3745 26052 4139 5323 4102 2606 26053 4102 5323 4139 3732 26054 4730 1406 901 1794 26055 4730 901 1406 4514 26056 687 5461 4506 686 26057 4506 5461 687 4884 26058 644 4435 1566 640 26059 1566 4435 644 4135 26060 4816 1538 4556 1783 26061 4816 4556 1538 4268 26062 4835 5334 4607 3762 26063 4607 5334 4835 3965 26064 3065 4828 3338 3419 26065 3338 4828 3065 3653 26066 5130 3837 1036 4149 26067 5130 1036 3837 4798 26068 4988 3659 4704 4452 26069 4988 4704 3659 3927 26070 4547 5087 4526 3747 26071 4526 5087 4547 933 26072 4438 5098 4754 827 26073 4754 5098 4438 3730 26074 5111 1533 1227 1939 26075 5111 1227 1533 4678 26076 4135 5228 5108 1671 26077 5108 5228 4135 3690 26078 5108 4085 4135 1671 26079 4135 4085 5108 3690 26080 4220 5180 4894 1040 26081 4894 5180 4220 3819 26082 3171 4851 2682 3896 26083 3171 2682 4851 3422 26084 4760 2682 4851 3896 26085 4760 4851 2682 3422 26086 4666 1172 1171 1173 26087 4666 1171 1172 4111 26088 5359 2937 4588 4327 26089 5359 4588 2937 3208 26090 4620 5139 4162 2540 26091 4162 5139 4620 3862 26092 4665 2627 5101 2731 26093 4665 5101 2627 3914 26094 4398 5249 5117 2912 26095 5117 5249 4398 3892 26096 4591 3233 2570 2946 26097 4591 2570 3233 4116 26098 4317 5109 4257 1128 26099 4257 5109 4317 3753 26100 4766 5343 5344 1087 26101 5344 5343 4766 3875 26102 4892 5584 1028 3839 26103 1028 5584 4892 1516 26104 1028 4671 4892 3839 26105 4892 4671 1028 1516 26106 4581 1275 1872 4406 26107 4581 1872 1275 1830 26108 4095 2813 3169 2499 26109 4095 3169 2813 5365 26110 5391 3320 4217 3179 26111 5391 4217 3320 4143 26112 2300 5017 4933 4029 26113 2300 4933 5017 4591 26114 3853 4933 5017 4029 26115 3853 5017 4933 4591 26116 3047 324 50 2024 26117 3047 50 324 392 26118 5063 5283 1142 1682 26119 1142 5283 5063 3984 26120 5210 5558 4530 3683 26121 4530 5558 5210 5097 26122 4677 2286 2288 4272 26123 4677 2288 2286 3177 26124 4534 2534 2399 2535 26125 4534 2399 2534 4077 26126 5479 3734 4553 4630 26127 5479 4553 3734 3988 26128 5116 4381 5396 3872 26129 5396 4381 5116 1908 26130 5396 4920 5116 3872 26131 5116 4920 5396 1908 26132 4998 2086 2060 4038 26133 4998 2060 2086 2058 26134 5433 1042 4337 1776 26135 5433 4337 1042 4101 26136 5392 1689 880 4488 26137 5392 880 1689 871 26138 5343 526 4146 1306 26139 5343 4146 526 3943 26140 5417 4173 5553 3120 26141 5553 4173 5417 4097 26142 5553 2523 5417 3120 26143 5417 2523 5553 4097 26144 4898 4737 5273 3891 26145 4898 5273 4737 2521 26146 4581 687 4506 690 26147 4581 4506 687 4106 26148 4721 2160 2894 4393 26149 4721 2894 2160 2895 26150 4638 854 5264 853 26151 4638 5264 854 4057 26152 4431 3341 3928 4280 26153 4431 3928 3341 2751 26154 2576 5312 4074 2578 26155 4074 5312 2576 4277 26156 5522 2347 3932 2346 26157 5522 3932 2347 4794 26158 4869 797 803 798 26159 4869 803 797 4191 26160 5027 2018 3370 2764 26161 5027 3370 2018 4904 26162 5097 5210 3854 4373 26163 3854 5210 5097 4530 26164 5046 4851 4706 3896 26165 5046 4706 4851 3653 26166 5479 4740 2372 3988 26167 5479 2372 4740 2273 26168 4865 2679 4120 4856 26169 4865 4120 2679 3362 26170 5531 5463 4490 2306 26171 5531 4490 5463 4011 26172 4587 2553 2551 4170 26173 4587 2551 2553 2900 26174 4831 1234 1057 4218 26175 4831 1057 1234 1712 26176 4801 5381 4694 1069 26177 4694 5381 4801 3891 26178 5296 788 4117 4922 26179 5296 4117 788 789 26180 1437 4117 788 4922 26181 1437 788 4117 789 26182 5550 4391 3703 4546 26183 5550 3703 4391 4269 26184 5026 3254 3867 2741 26185 5026 3867 3254 4616 26186 5248 1975 3343 2991 26187 5248 3343 1975 3996 26188 5465 504 4637 4720 26189 5465 4637 504 4123 26190 4920 5116 4302 1854 26191 4302 5116 4920 3872 26192 5500 5027 2760 2672 26193 5500 2760 5027 3878 26194 3370 2760 5027 2672 26195 3370 5027 2760 3878 26196 4893 4992 5482 1172 26197 5482 4992 4893 3914 26198 5482 4708 4893 1172 26199 4893 4708 5482 3914 26200 2623 5468 5073 2652 26201 5073 5468 2623 4440 26202 4320 4833 3739 4148 26203 3739 4833 4320 4200 26204 4299 1461 5154 4073 26205 4299 5154 1461 1459 26206 4863 1638 4629 4307 26207 4863 4629 1638 613 26208 5103 2618 5297 2616 26209 5103 5297 2618 4560 26210 3250 5103 5429 2492 26211 5429 5103 3250 4560 26212 4828 3065 3342 3419 26213 4828 3342 3065 4674 26214 1387 4700 1089 1388 26215 1089 4700 1387 4151 26216 3740 5129 4228 3926 26217 3740 4228 5129 5380 26218 4643 2503 2505 2504 26219 4643 2505 2503 4169 26220 4872 941 1062 1177 26221 4872 1062 941 4446 26222 5210 4019 5558 3683 26223 5210 5558 4019 4373 26224 5180 1318 1231 1321 26225 5180 1231 1318 4894 26226 5460 5444 4939 3939 26227 4939 5444 5460 4453 26228 4939 3784 5460 3939 26229 5460 3784 4939 4453 26230 4947 324 384 392 26231 4947 384 324 3989 26232 1695 5204 5328 4585 26233 1695 5328 5204 5574 26234 4680 1294 1293 4301 26235 4680 1293 1294 1295 26236 1661 4913 1458 739 26237 1458 4913 1661 4472 26238 4641 2514 2632 2633 26239 4641 2632 2514 4259 26240 4924 3972 5032 3880 26241 4924 5032 3972 4705 26242 4947 3341 3928 2750 26243 4947 3928 3341 4280 26244 5303 3058 3385 4022 26245 5303 3385 3058 2008 26246 5009 4952 5388 1291 26247 5009 5388 4952 3918 26248 5021 2679 2981 3391 26249 5021 2981 2679 4856 26250 3594 5547 3591 3559 26251 3591 5547 3594 4522 26252 5126 4032 4251 3702 26253 5126 4251 4032 4411 26254 5644 2528 5479 2636 26255 5644 5479 2528 4615 26256 5406 1311 4920 1312 26257 5406 4920 1311 3929 26258 4792 3381 5047 3380 26259 4792 5047 3381 4002 26260 5481 4138 3828 4385 26261 5481 3828 4138 5304 26262 4789 5634 3825 4275 26263 3825 5634 4789 4485 26264 4971 2291 2293 2875 26265 4971 2293 2291 4595 26266 1631 414 5013 498 26267 5013 414 1631 553 26268 4903 3253 2176 3275 26269 4903 2176 3253 4600 26270 5603 3159 4092 4205 26271 5603 4092 3159 2329 26272 4335 5110 3797 4100 26273 3797 5110 4335 4213 26274 5093 1938 4826 1226 26275 5093 4826 1938 4083 26276 4317 5095 3667 4199 26277 3667 5095 4317 4088 26278 5010 5134 2772 3959 26279 2772 5134 5010 3337 26280 5549 2961 4319 2960 26281 5549 4319 2961 4606 26282 5481 1493 1558 883 26283 5481 1558 1493 5304 26284 4337 5066 3822 4221 26285 3822 5066 4337 4101 26286 5134 3641 3648 3566 26287 5134 3648 3641 5105 26288 4535 4167 4621 3738 26289 4621 4167 4535 5193 26290 4621 4147 4535 3738 26291 4535 4147 4621 5193 26292 4325 5054 3767 4202 26293 3767 5054 4325 4094 26294 4694 1678 1856 1677 26295 4694 1856 1678 4238 26296 1323 5150 1162 1322 26297 1162 5150 1323 4609 26298 3442 2020 263 3471 26299 3442 263 2020 3152 26300 5617 595 4331 1644 26301 5617 4331 595 4756 26302 415 526 103 1955 26303 103 526 415 476 26304 5146 3749 1135 4299 26305 5146 1135 3749 4391 26306 4730 1294 1292 1633 26307 4730 1292 1294 4301 26308 3755 5377 1696 4230 26309 1696 5377 3755 4827 26310 4316 5540 5392 872 26311 4316 5392 5540 4179 26312 868 5392 5540 872 26313 868 5540 5392 4179 26314 4408 5425 5000 1674 26315 700 5000 5425 1674 26316 700 5425 5000 4165 26317 5017 4481 4279 3908 26318 5017 4279 4481 3704 26319 4547 4388 4681 3915 26320 4547 4681 4388 5480 26321 5303 3489 3487 3440 26322 5303 3487 3489 4022 26323 4155 5087 4154 3747 26324 4154 5087 4155 3946 26325 5519 3230 4271 4343 26326 5519 4271 3230 2070 26327 4422 5204 4741 3917 26328 4741 5204 4422 3672 26329 4884 4347 5557 3731 26330 4884 5557 4347 3967 26331 4048 5268 4001 3834 26332 4001 5268 4048 4698 26333 3253 4409 3200 2766 26334 3200 4409 3253 5076 26335 5409 2682 3157 4990 26336 5409 3157 2682 3171 26337 4406 5247 4581 3957 26338 4581 5247 4406 3827 26339 5147 680 5462 674 26340 5147 5462 680 3948 26341 5038 420 450 4007 26342 5038 450 420 452 26343 671 4668 667 672 26344 667 4668 671 4370 26345 5455 3090 5088 2428 26346 5455 5088 3090 3940 26347 5423 4019 4505 4053 26348 5423 4505 4019 4373 26349 4516 4376 4980 3919 26350 4516 4980 4376 5598 26351 4934 3036 3187 3309 26352 4934 3187 3036 5089 26353 5082 4855 4686 3961 26354 5082 4686 4855 3859 26355 981 5584 5086 1660 26356 5086 5584 981 3942 26357 4530 1508 5063 4181 26358 4530 5063 1508 869 26359 5446 330 357 4056 26360 5446 357 330 360 26361 5019 1342 1344 1343 26362 5019 1344 1342 4075 26363 4771 2078 3951 2079 26364 4771 3951 2078 4528 26365 5579 713 5100 4232 26366 5579 5100 713 723 26367 5396 1641 1908 542 26368 5396 1908 1641 4381 26369 5594 661 4212 4633 26370 5594 4212 661 1665 26371 1851 5495 959 1610 26372 959 5495 1851 4564 26373 5540 873 4542 874 26374 5540 4542 873 4316 26375 5105 335 3959 4860 26376 5105 3959 335 411 26377 5121 3775 5555 4099 26378 5121 5555 3775 4357 26379 5132 4425 3835 4426 26380 5132 3835 4425 4139 26381 5586 2581 4090 5114 26382 5586 4090 2581 2447 26383 5436 838 837 839 26384 5436 837 838 4046 26385 4730 5528 4187 3888 26386 4187 5528 4730 3999 26387 5114 3731 2968 4090 26388 5114 2968 3731 4347 26389 4964 4953 5411 3930 26390 4964 5411 4953 3771 26391 5602 2580 4300 4976 26392 5602 4300 2580 3043 26393 4711 1566 4435 737 26394 4711 4435 1566 4135 26395 5437 4647 3947 4161 26396 5437 3947 4647 3788 26397 5588 3940 3090 5088 26398 5588 3090 3940 4589 26399 5464 4657 3940 4838 26400 5464 3940 4657 4395 26401 5257 4245 3971 4605 26402 5257 3971 4245 4870 26403 4152 1094 1082 1033 26404 4152 1082 1094 4683 26405 5622 4680 4291 4010 26406 5622 4291 4680 3842 26407 5075 3681 815 4183 26408 5075 815 3681 4498 26409 5112 1268 1267 1071 26410 5112 1267 1268 4265 26411 5311 454 447 426 26412 5311 447 454 4075 26413 4629 1684 5445 4091 26414 4629 5445 1684 615 26415 3934 3692 4890 4165 26416 4890 3692 3934 5120 26417 1014 4093 1711 1575 26418 1711 4093 1014 4663 26419 5552 985 5496 1525 26420 5552 5496 985 4194 26421 5551 2325 4086 4195 26422 5551 4086 2325 2326 26423 4852 1974 1907 4355 26424 4852 1907 1974 1310 26425 5078 1811 1236 4246 26426 5078 1236 1811 1760 26427 5584 981 1148 1660 26428 5584 1148 981 5071 26429 5182 2875 4155 2294 26430 5182 4155 2875 4971 26431 2298 4155 2875 2294 26432 2298 2875 4155 4971 26433 2209 5017 2208 2207 26434 2208 5017 2209 4029 26435 480 4904 4157 432 26436 4157 4904 480 4241 26437 5514 4788 4958 3964 26438 5514 4958 4788 3713 26439 4942 5360 4507 3951 26440 4507 5360 4942 3723 26441 5489 2053 2054 2052 26442 5489 2054 2053 5121 26443 4637 5509 1917 1423 26444 4637 1917 5509 4008 26445 1888 1917 5509 1423 26446 1888 5509 1917 4008 26447 5625 2546 2534 3276 26448 5625 2534 2546 4077 26449 5625 2799 2546 3276 26450 5625 2546 2799 4278 26451 2686 5633 4335 3306 26452 4335 5633 2686 4702 26453 4640 5071 4076 3942 26454 4076 5071 4640 3685 26455 4460 4953 5240 4005 26456 5240 4953 4460 3771 26457 2988 5640 2605 3117 26458 2605 5640 2988 4692 26459 5102 726 5464 722 26460 5102 5464 726 4069 26461 5608 2580 4300 3041 26462 5608 4300 2580 4976 26463 5013 1900 1899 1528 26464 5013 1899 1900 4759 26465 4854 4999 3658 4349 26466 3658 4999 4854 4017 26467 5641 3833 4642 4057 26468 5641 4642 3833 4627 26469 5480 4095 4681 3726 26470 5480 4681 4095 4547 26471 5345 1971 4372 1554 26472 5345 4372 1971 4672 26473 5526 4382 4023 3697 26474 5526 4023 4382 4109 26475 4295 5580 4846 3816 26476 4846 5580 4295 4748 26477 5545 4004 4636 4694 26478 5545 4636 4004 4033 26479 4902 5305 3987 4410 26480 3987 5305 4902 4190 26481 566 417 110 502 26482 110 417 566 1956 26483 5279 3475 1999 3522 26484 5279 1999 3475 4726 26485 5469 4080 4422 4616 26486 5469 4422 4080 3664 26487 3917 4422 4080 4616 26488 3917 4080 4422 3664 26489 2338 5335 4251 2238 26490 4251 5335 2338 4735 26491 5624 3572 3960 3571 26492 5624 3960 3572 4804 26493 425 1888 86 1917 26494 86 1888 425 510 26495 4660 1943 5562 4479 26496 4660 5562 1943 1392 26497 4395 5088 4657 3799 26498 4657 5088 4395 3940 26499 2018 465 148 3409 26500 148 465 2018 432 26501 5305 3805 1861 4190 26502 5305 1861 3805 4430 26503 4980 856 4638 4413 26504 4980 4638 856 855 26505 5531 4057 4490 4011 26506 5531 4490 4057 4642 26507 4393 5068 4231 3720 26508 4231 5068 4393 3938 26509 5330 4139 4545 5132 26510 5330 4545 4139 3732 26511 4782 5399 4973 4079 26512 4973 5399 4782 3943 26513 3935 4443 4885 4807 26514 4885 4443 3935 4840 26515 4885 3676 3935 4807 26516 3935 3676 4885 4840 26517 5210 2955 2310 4103 26518 5210 2310 2955 2312 26519 5117 2115 2122 4750 26520 5117 2122 2115 2631 26521 4660 1931 3715 1389 26522 4660 3715 1931 4290 26523 1388 3715 1931 1389 26524 778 5510 777 779 26525 777 5510 778 4538 26526 5530 4743 4362 3876 26527 5530 4362 4743 4780 26528 5135 2785 3295 3209 26529 5135 3295 2785 4124 26530 5304 4277 5312 3958 26531 5304 5312 4277 3828 26532 3503 3013 248 3434 26533 3503 248 3013 1977 26534 5598 4089 4980 3736 26535 5598 4980 4089 4516 26536 4888 3433 3481 4791 26537 4888 3481 3433 3482 26538 5550 1127 4088 1130 26539 5550 4088 1127 4317 26540 5068 710 4352 4394 26541 5068 4352 710 707 26542 4873 4991 4544 3755 26543 4544 4991 4873 3939 26544 5178 3472 5544 4709 26545 5178 5544 3472 3439 26546 5418 1101 5188 4428 26547 5418 5188 1101 1332 26548 5001 4987 4352 3938 26549 5001 4352 4987 3768 26550 5222 4863 4421 3675 26551 5222 4421 4863 3983 26552 2581 4090 2968 2445 26553 2581 2968 4090 5114 26554 4762 5253 4467 3751 26555 4467 5253 4762 3946 26556 4747 1347 5609 4187 26557 4747 5609 1347 1035 26558 4979 3430 3494 4623 26559 4979 3494 3430 3516 26560 1576 5096 1874 548 26561 1874 5096 1576 4141 26562 5199 3232 4658 5169 26563 5199 4658 3232 2105 26564 4360 562 1325 1570 26565 4360 1325 562 5260 26566 5356 3280 4281 4267 26567 5356 4281 3280 3261 26568 2854 5593 4126 2852 26569 4126 5593 2854 4499 26570 4970 901 895 899 26571 4970 895 901 4514 26572 1940 4907 1594 1944 26573 1594 4907 1940 4121 26574 5546 3493 4972 3498 26575 5546 4972 3493 3956 26576 5064 1192 1193 1074 26577 5064 1193 1192 4156 26578 401 4844 410 329 26579 410 4844 401 4112 26580 5478 3921 2703 4715 26581 5478 2703 3921 4857 26582 4968 1091 1121 1120 26583 4968 1121 1091 4678 26584 3723 5261 4942 4652 26585 3723 4942 5261 631 26586 629 4942 5261 4652 26587 629 5261 4942 631 26588 960 5362 5310 1621 26589 5310 5362 960 3963 26590 4952 1973 5509 4637 26591 4952 5509 1973 1422 26592 3265 5501 4721 2894 26593 4721 5501 3265 5302 26594 5166 4474 3881 4475 26595 5166 3881 4474 5128 26596 1838 5576 4420 1835 26597 4420 5576 1838 4328 26598 5476 838 841 1827 26599 5476 841 838 4685 26600 5144 523 1330 1505 26601 5144 1330 523 4140 26602 4680 1924 3842 4291 26603 4680 3842 1924 1295 26604 1296 3842 1924 4291 26605 1296 1924 3842 1295 26606 5106 3323 2866 4150 26607 5106 2866 3323 2000 26608 1684 5156 742 1821 26609 742 5156 1684 4091 26610 5425 3934 5000 4165 26611 5425 5000 3934 4408 26612 5142 539 1875 1855 26613 5142 1875 539 4188 26614 5143 3323 2867 3305 26615 5143 2867 3323 4150 26616 5138 315 336 343 26617 5138 336 315 4860 26618 4700 1931 3715 4290 26619 4700 3715 1931 1388 26620 3333 371 4649 2021 26621 3333 4649 371 382 26622 4874 2284 2283 4173 26623 4874 2283 2284 2282 26624 5218 3351 2976 4886 26625 5218 2976 3351 3424 26626 5511 2944 5148 4453 26627 5511 5148 2944 3266 26628 5531 5644 3262 4642 26629 3262 5644 5531 5267 26630 5394 3911 1205 4166 26631 5394 1205 3911 4523 26632 4836 5209 4543 3693 26633 4543 5209 4836 3966 26634 4692 5176 5473 3954 26635 5473 5176 4692 3717 26636 415 1317 104 464 26637 104 1317 415 1955 26638 5308 2137 3176 2924 26639 5308 3176 2137 4071 26640 573 3520 186 3449 26641 573 186 3520 1476 26642 5187 2523 2720 2721 26643 5187 2720 2523 4097 26644 2770 496 142 430 26645 2770 142 496 3408 26646 5410 3029 4380 4417 26647 5410 4380 3029 2777 26648 3073 5127 2639 2638 26649 2639 5127 3073 4765 26650 5543 5546 4972 1935 26651 4972 5546 5543 3956 26652 5333 3912 1710 4718 26653 5333 1710 3912 4485 26654 543 5313 1881 4820 26655 543 1881 5313 381 26656 310 1881 5313 4820 26657 310 5313 1881 381 26658 5314 3887 1034 4372 26659 5314 1034 3887 4443 26660 5092 887 4675 888 26661 5092 4675 887 4186 26662 5202 940 644 4085 26663 5202 644 940 934 26664 4560 5150 5297 3953 26665 5297 5150 4560 3820 26666 5646 1024 4515 4365 26667 5646 4515 1024 1090 26668 5562 3874 1223 4478 26669 5562 1223 3874 4725 26670 5632 4781 5400 2359 26671 5400 4781 5632 4313 26672 5400 2360 5632 2359 26673 5632 2360 5400 4313 26674 5633 3181 4699 4335 26675 5633 4699 3181 2038 26676 729 5350 923 728 26677 923 5350 729 4113 26678 4934 3301 2911 4447 26679 4934 2911 3301 3309 26680 5636 2255 4626 2263 26681 5636 4626 2255 4311 26682 2270 5636 4626 2263 26683 4626 5636 2270 4338 26684 1479 5639 4777 1478 26685 4777 5639 1479 4318 26686 5640 2358 4778 4313 26687 5640 4778 2358 2511 26688 5511 2282 4248 3193 26689 5511 4248 2282 4874 26690 5225 3279 3203 3282 26691 5225 3203 3279 4098 26692 5543 5546 4645 3956 26693 4645 5546 5543 1936 26694 5311 552 454 1952 26695 5311 454 552 4075 26696 5107 4452 3911 4289 26697 5107 3911 4452 5030 26698 465 1994 149 3409 26699 465 149 1994 429 26700 5491 1176 4034 4739 26701 5491 4034 1176 1646 26702 5595 1828 4302 1789 26703 5595 4302 1828 4601 26704 417 542 111 479 26705 111 542 417 1956 26706 5065 616 620 4354 26707 5065 620 616 614 26708 4003 5356 4959 3599 26709 4003 4959 5356 4267 26710 3598 4959 5356 3599 26711 3598 5356 4959 4267 26712 5527 3108 2963 2481 26713 5527 2963 3108 5203 26714 5055 3244 3011 4465 26715 5055 3011 3244 2336 26716 4951 1101 5188 1078 26717 4951 5188 1101 4428 26718 4117 1502 1437 793 26719 4117 1437 1502 5151 26720 5557 1541 5581 1520 26721 5557 5581 1541 4884 26722 3198 4945 3017 2279 26723 3017 4945 3198 4429 26724 5484 2661 4800 4349 26725 5484 4800 2661 3311 26726 5042 2812 2558 2862 26727 5042 2558 2812 4818 26728 4607 5249 2864 4292 26729 4607 2864 5249 2698 26730 3182 2864 5249 4292 26731 3182 5249 2864 2698 26732 5292 2828 4544 4502 26733 5292 4544 2828 2700 26734 5011 1919 3851 1419 26735 5011 3851 1919 4850 26736 5410 3620 4274 3619 26737 5410 4274 3620 4417 26738 5340 1207 1083 4226 26739 5340 1083 1207 1208 26740 5206 825 821 813 26741 5206 821 825 4797 26742 5599 1774 796 4164 26743 5599 796 1774 1632 26744 747 5439 746 748 26745 746 5439 747 4451 26746 2589 5319 2587 2588 26747 2587 5319 2589 4096 26748 2408 5572 3935 3218 26749 3935 5572 2408 4661 26750 5408 2602 5380 2949 26751 5408 5380 2602 4618 26752 5458 912 5197 4537 26753 5458 5197 912 913 26754 5091 3538 4112 3460 26755 5091 4112 3538 4844 26756 4870 5286 4030 3971 26757 4030 5286 4870 3739 26758 5624 3570 3960 4761 26759 5624 3960 3570 3571 26760 3533 401 4112 408 26761 3533 4112 401 3457 26762 5204 1695 1722 1256 26763 5204 1722 1695 4449 26764 5327 4902 4639 3858 26765 5327 4639 4902 3987 26766 5545 1678 4694 1677 26767 5545 4694 1678 5342 26768 1475 391 4850 570 26769 1475 4850 391 306 26770 5598 2307 4516 2569 26771 5598 4516 2307 4376 26772 5287 2624 3199 2943 26773 5287 3199 2624 4511 26774 4792 255 3488 3097 26775 4792 3488 255 3524 26776 5332 2541 3995 4548 26777 5332 3995 2541 2420 26778 5309 536 1906 1543 26779 5309 1906 536 4738 26780 5195 2001 338 3403 26781 5195 338 2001 4877 26782 5588 2825 2693 2856 26783 5588 2693 2825 5088 26784 1106 5578 5090 1156 26785 5090 5578 1106 4104 26786 1107 5579 4657 1405 26787 4657 5579 1107 4105 26788 687 5581 4884 1541 26789 4884 5581 687 4106 26790 5626 2570 5490 4116 26791 5626 5490 2570 2197 26792 5546 4645 1613 1936 26793 1613 4645 5546 4826 26794 1613 1937 5546 1936 26795 5546 1937 1613 4826 26796 1252 5072 1635 1251 26797 1635 5072 1252 4729 26798 2925 321 3997 354 26799 2925 3997 321 2022 26800 3404 330 5446 2010 26801 5446 330 3404 360 26802 5610 2990 4224 2144 26803 5610 4224 2990 4378 26804 440 3535 158 518 26805 158 3535 440 3531 26806 5619 1643 4731 4474 26807 5619 4731 1643 911 26808 5130 1287 1288 1286 26809 5130 1288 1287 4798 26810 5166 2670 2750 2671 26811 5166 2750 2670 5160 26812 5248 3343 2681 2991 26813 5248 2681 3343 4760 26814 398 1953 4860 580 26815 4860 1953 398 315 26816 303 1951 5256 558 26817 5256 1951 303 356 26818 5620 1765 4186 806 26819 5620 4186 1765 4928 26820 5502 2467 4252 3217 26821 5502 4252 2467 4737 26822 5061 5473 2988 4368 26823 2988 5473 5061 4692 26824 5555 2049 4219 2345 26825 5555 4219 2049 5554 26826 5608 3044 4767 3392 26827 5608 4767 3044 4300 26828 102 5029 526 476 26829 526 5029 102 1904 26830 2020 5622 4010 3375 26831 4010 5622 2020 5018 26832 5503 881 929 931 26833 5503 929 881 5196 26834 5081 2796 2548 4432 26835 5081 2548 2796 2797 26836 5583 1342 1346 552 26837 5583 1346 1342 5318 26838 2017 367 58 308 26839 58 367 2017 3414 26840 338 2001 77 3403 26841 338 77 2001 325 26842 436 3412 4963 449 26843 4963 3412 436 1998 26844 5487 2393 2342 2341 26845 5487 2342 2393 5412 26846 2742 5472 5431 2743 26847 5431 5472 2742 5164 26848 1961 370 5383 565 26849 5383 370 1961 322 26850 549 309 39 1950 26851 549 39 309 341 26852 546 420 115 452 26853 115 420 546 1959 26854 2033 3533 4112 3417 26855 4112 3533 2033 3529 26856 1965 3443 195 579 26857 1965 195 3443 3535 26858 5134 266 3337 3416 26859 5134 3337 266 3637 26860 81 5134 2032 3416 26861 2032 5134 81 316 26862 5204 3826 5328 4585 26863 5204 5574 3826 4449 26864 3826 5574 5204 5328 $EndElements feenox-1.1/tests/expressions_sum.fee0000644000175000017500000000004114773607165014664 00000000000000VAR k PRINT sum(k^2,k,1,24)-70^2 feenox-1.1/tests/nafems-t1.fee0000644000175000017500000000053314773607165013217 00000000000000PROBLEM mechanical 2D plane_stress READ_MESH nafems-t1.msh E = 100e3 nu = 0.3 alpha_bulk = 0 alpha_hot = 1e-3 T(x,y) = (x^2+y^2) < 1 BC x v=0 BC y u=0 SOLVE_PROBLEM PRINT sigmay(1.005,0) # sigmay_profile(x) := sigmay(x,0) # PRINT_FUNCTION sigmay_profile MIN 0.9 MAX 1.1 NSTEPS 100 # WRITE_MESH nafems-t1.vtk VECTOR u v 0 sigmax sigmay tauxy feenox-1.1/tests/ray-effect-half.msh0000644000175000017500000003547014773607165014421 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 4 1 3 "mirror" 1 4 "vacuum" 2 1 "src" 2 2 "bulk" $EndPhysicalNames $Entities 8 9 2 0 1 0 -1 0 0 2 0 -2 0 0 3 1 -1 0 0 4 1 1 0 0 5 0 1 0 0 6 0 2 0 0 7 2 2 0 0 8 2 -2 0 0 1 -1e-07 -2.0000001 -1e-07 1e-07 -0.9999999000000001 1e-07 1 3 2 1 -2 2 -9.999999994736442e-08 -1.0000001 -1e-07 1.0000001 -0.9999999000000001 1e-07 0 2 1 -3 3 0.9999999000000001 -1.0000001 -1e-07 1.0000001 1.0000001 1e-07 0 2 3 -4 4 -9.999999994736442e-08 0.9999999000000001 -1e-07 1.0000001 1.0000001 1e-07 0 2 4 -5 5 -1e-07 0.9999999000000001 -1e-07 1e-07 2.0000001 1e-07 1 3 2 6 -5 6 -9.999999994736442e-08 1.9999999 -1e-07 2.0000001 2.0000001 1e-07 1 4 2 7 -6 7 1.9999999 -2.0000001 -1e-07 2.0000001 2.0000001 1e-07 1 4 2 8 -7 8 -9.999999994736442e-08 -2.0000001 -1e-07 2.0000001 -1.9999999 1e-07 1 4 2 2 -8 9 -1.000000002220446e-07 -1.0000001 -1.000000002220446e-07 1.000000002220446e-07 1.0000001 1.000000002220446e-07 1 3 2 5 -1 1 -1.00000000169409e-07 -1.0000001 -1.000000002220446e-07 1.0000001 1.0000001 1.000000002220446e-07 1 1 4 2 3 4 9 2 -9.999999994736442e-08 -2.0000001 -1e-07 2.0000001 2.0000001 1e-07 1 2 8 1 8 7 6 5 -4 -3 -2 $EndEntities $Nodes 19 325 1 325 0 1 0 1 1 0 -1 0 0 2 0 1 2 0 -2 0 0 3 0 1 3 1 -1 0 0 4 0 1 4 1 1 0 0 5 0 1 5 0 1 0 0 6 0 1 6 0 2 0 0 7 0 1 7 2 2 0 0 8 0 1 8 2 -2 0 1 1 0 5 9 10 11 12 13 0 -1.333333333333333 0 0 -1.666666666666667 0 0 -1.166666666666667 0 0 -1.5 0 0 -1.833333333333333 0 1 2 0 5 14 15 16 17 18 0.3333333333333333 -1 0 0.6666666666666666 -1 0 0.1666666666666667 -1 0 0.5 -1 0 0.8333333333333333 -1 0 1 3 0 11 19 20 21 22 23 24 25 26 27 28 29 1 -0.6666666666666667 0 1 -0.3333333333333334 0 1 0 0 1 0.3333333333333333 0 1 0.6666666666666665 0 1 -0.8333333333333334 0 1 -0.5 0 1 -0.1666666666666667 0 1 0.1666666666666665 0 1 0.5 0 1 0.8333333333333333 0 1 4 0 5 30 31 32 33 34 0.6666666666666667 1 0 0.3333333333333334 1 0 0.8333333333333334 1 0 0.5 1 0 0.1666666666666667 1 0 1 5 0 5 35 36 37 38 39 0 1.666666666666667 0 0 1.333333333333333 0 0 1.833333333333333 0 0 1.5 0 0 1.166666666666667 0 1 6 0 11 40 41 42 43 44 45 46 47 48 49 50 1.666666666666667 2 0 1.333333333333333 2 0 1 2 0 0.6666666666666667 2 0 0.3333333333333335 2 0 1.833333333333333 2 0 1.5 2 0 1.166666666666667 2 0 0.8333333333333335 2 0 0.5 2 0 0.1666666666666667 2 0 1 7 0 23 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 2 -1.666666666666667 0 2 -1.333333333333333 0 2 -1 0 2 -0.6666666666666667 0 2 -0.3333333333333335 0 2 0 0 2 0.333333333333333 0 2 0.6666666666666665 0 2 1 0 2 1.333333333333333 0 2 1.666666666666667 0 2 -1.833333333333333 0 2 -1.5 0 2 -1.166666666666667 0 2 -0.8333333333333335 0 2 -0.5 0 2 -0.1666666666666667 0 2 0.1666666666666665 0 2 0.5 0 2 0.833333333333333 0 2 1.166666666666667 0 2 1.5 0 2 1.833333333333333 0 1 8 0 11 74 75 76 77 78 79 80 81 82 83 84 0.3333333333333333 -2 0 0.6666666666666666 -2 0 1 -2 0 1.333333333333333 -2 0 1.666666666666667 -2 0 0.1666666666666667 -2 0 0.5 -2 0 0.8333333333333333 -2 0 1.166666666666667 -2 0 1.5 -2 0 1.833333333333333 -2 0 1 9 0 11 85 86 87 88 89 90 91 92 93 94 95 0 0.6666666666666667 0 0 0.3333333333333334 0 0 0 0 0 -0.3333333333333333 0 0 -0.6666666666666665 0 0 0.8333333333333334 0 0 0.5 0 0 0.1666666666666667 0 0 -0.1666666666666665 0 0 -0.5 0 0 -0.8333333333333333 0 2 1 0 55 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 0.6666666666666667 -0.3333333333333333 0 0.6666666666666667 0 0 0.6666666666666667 0.3333333333333333 0 0.3333333333333334 -0.6666666666666664 0 0.6666666666666667 -0.6666666666666665 0 0.6666666666666667 0.6666666666666667 0 0.3333333333333334 0.6666666666666667 0 0.3333333333333334 2.560750006139201e-17 0 0.3333333333333334 -0.3333333333333332 0 0.3333333333333334 0.3333333333333334 0 0.5 1.2803750030696e-17 0 0.3333333333333334 -0.1666666666666666 0 0.5 -0.3333333333333333 0 0.6666666666666667 -0.1666666666666666 0 0.5 -0.1666666666666666 0 0.6666666666666667 0.1666666666666666 0 0.5 0.3333333333333333 0 0.3333333333333334 0.1666666666666667 0 0.5 0.1666666666666667 0 0.1666666666666667 0.6666666666666667 0 0.3333333333333334 0.8333333333333334 0 0.1666666666666667 0.8333333333333333 0 0.5 0.6666666666666667 0 0.6666666666666667 0.8333333333333334 0 0.5 0.8333333333333333 0 0.1666666666666667 0.3333333333333334 0 0.3333333333333334 0.5 0 0.1666666666666667 0.5 0 0.1666666666666667 1.2803750030696e-17 0 0.1666666666666667 0.1666666666666667 0 0.3333333333333334 -0.4999999999999998 0 0.5 -0.6666666666666665 0 0.6666666666666667 -0.4999999999999999 0 0.5 -0.4999999999999998 0 0.6666666666666667 0.5 0 0.5 0.5 0 0.8333333333333334 0.6666666666666666 0 0.8333333333333334 0.8333333333333333 0 0.3333333333333333 -0.8333333333333333 0 0.6666666666666666 -0.8333333333333333 0 0.5 -0.8333333333333333 0 0.8333333333333334 -0.6666666666666666 0 0.8333333333333334 -0.3333333333333333 0 0.8333333333333334 -0.4999999999999999 0 0.8333333333333334 0 0 0.8333333333333334 -0.1666666666666667 0 0.1666666666666667 -0.6666666666666665 0 0.1666666666666666 -0.3333333333333333 0 0.1666666666666667 -0.4999999999999999 0 0.1666666666666667 -0.8333333333333333 0 0.8333333333333333 -0.8333333333333333 0 0.8333333333333334 0.3333333333333333 0 0.8333333333333334 0.1666666666666666 0 0.8333333333333334 0.5 0 0.1666666666666666 -0.1666666666666665 0 2 2 0 175 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 1.666666666666667 1 0 1.666666666666667 -4.853837600946043e-17 0 0.6666666666666667 -1.333333333333333 0 1.333333333333333 -0.6666666666666666 0 1.666666666666667 -1.333333333333333 0 1 1.333333333333333 0 1.333333333333333 0.6666666666666667 0 1.666666666666667 1.333333333333333 0 0.6666666666666666 1.333333333333333 0 0.3333333333333334 -1.333333333333333 0 1.333333333333333 0.3333333333333332 0 1.333333333333333 -2.42861286636753e-17 0 1.333333333333333 1.666666666666667 0 0.3333333333333334 -1.666666666666667 0 0.3333333333333334 1.333333333333333 0 0.3333333333333334 1.666666666666667 0 0.6666666666666667 1.666666666666667 0 1.666666666666667 -1.666666666666667 0 1.666666666666667 -1 0 1.666666666666667 -0.6666666666666666 0 1.666666666666667 0.3333333333333332 0 1 -1.666666666666667 0 1.666666666666667 1.666666666666667 0 1.333333333333333 1 0 1.333333333333333 1.333333333333333 0 1 -1.333333333333333 0 1.333333333333333 -1 0 1.333333333333333 -0.3333333333333332 0 1 1.666666666666667 0 1.666666666666667 -0.3333333333333333 0 1.333333333333333 -1.666666666666667 0 1.666666666666667 0.6666666666666665 0 0.6666666666666666 -1.666666666666667 0 1.333333333333333 -1.333333333333333 0 0.1666666666666667 -1.333333333333333 0 0.3333333333333333 -1.166666666666667 0 0.1666666666666665 -1.166666666666667 0 1.333333333333333 1.166666666666667 0 1.166666666666667 1.333333333333333 0 1 1.166666666666667 0 1.166666666666667 1 0 1.166666666666667 1.166666666666667 0 0.5 -1.333333333333333 0 0.3333333333333334 -1.5 0 0.5 -1.666666666666667 0 0.6666666666666667 -1.5 0 0.5 -1.5 0 1.666666666666667 0.1666666666666666 0 1.5 0.3333333333333332 0 1.333333333333333 0.1666666666666666 0 1.5 -3.641225233656786e-17 0 1.5 0.1666666666666666 0 1.166666666666667 0.6666666666666666 0 1.333333333333333 0.8333333333333334 0 1.166666666666667 0.8333333333333334 0 0.1666666666666667 1.666666666666667 0 0.3333333333333335 1.833333333333333 0 0.1666666666666667 1.833333333333333 0 1.333333333333333 1.833333333333333 0 1.5 1.666666666666667 0 1.666666666666667 1.833333333333333 0 1.5 1.833333333333333 0 1.833333333333333 -1 0 1.666666666666667 -1.166666666666667 0 1.833333333333333 -1.333333333333333 0 1.833333333333333 -1.166666666666667 0 1.833333333333333 1.333333333333333 0 1.833333333333333 1.666666666666667 0 1.666666666666667 1.5 0 1.833333333333333 1.5 0 1 -1.833333333333333 0 0.8333333333333333 -1.666666666666667 0 0.6666666666666666 -1.833333333333333 0 0.8333333333333333 -1.833333333333333 0 0.8333333333333334 -1.333333333333333 0 1 -1.5 0 0.8333333333333333 -1.5 0 1.666666666666667 -0.4999999999999999 0 1.5 -0.3333333333333333 0 1.333333333333333 -0.4999999999999999 0 1.5 -0.6666666666666666 0 1.5 -0.5 0 1.666666666666667 -1.5 0 1.5 -1.333333333333333 0 1.333333333333333 -1.5 0 1.5 -1.666666666666667 0 1.5 -1.5 0 0.5 1.333333333333333 0 0.6666666666666667 1.5 0 0.5 1.666666666666667 0 0.3333333333333334 1.5 0 0.5 1.5 0 1 1.5 0 0.8333333333333334 1.666666666666667 0 0.8333333333333333 1.333333333333333 0 0.8333333333333333 1.5 0 1.333333333333333 -0.8333333333333333 0 1.5 -1 0 1.666666666666667 -0.8333333333333333 0 1.5 -0.8333333333333333 0 1.166666666666667 -1.666666666666667 0 1.166666666666667 -1.333333333333333 0 1.166666666666667 -1.5 0 0.6666666666666667 -1.166666666666667 0 0.5 -1.166666666666667 0 1 -1.166666666666667 0 0.8333333333333333 -1.166666666666667 0 1.166666666666667 -0.6666666666666667 0 1.166666666666667 -0.3333333333333333 0 1.166666666666667 -0.5 0 1.333333333333333 -0.1666666666666666 0 1.166666666666667 -1.214306433183765e-17 0 1.166666666666667 -0.1666666666666667 0 1.833333333333333 1.833333333333333 0 0.6666666666666667 1.833333333333333 0 1 1.833333333333333 0 0.8333333333333335 1.833333333333333 0 1.833333333333333 -2.426918800473021e-17 0 1.666666666666667 -0.1666666666666667 0 1.833333333333333 -0.3333333333333334 0 1.833333333333333 -0.1666666666666667 0 1.666666666666667 0.8333333333333333 0 1.833333333333333 0.6666666666666665 0 1.833333333333333 1 0 1.833333333333333 0.8333333333333331 0 1.666666666666667 0.4999999999999999 0 1.833333333333333 0.3333333333333331 0 1.833333333333333 0.4999999999999999 0 1.333333333333333 -1.833333333333333 0 1.166666666666667 -1.833333333333333 0 1.5 1 0 1.666666666666667 1.166666666666667 0 1.5 1.333333333333333 0 1.5 1.166666666666667 0 1.5 0.6666666666666666 0 1.333333333333333 0.5 0 1.5 0.4999999999999999 0 1.5 0.8333333333333333 0 1.5 -0.1666666666666667 0 1.333333333333333 1.5 0 1.166666666666667 1.666666666666667 0 1.166666666666667 1.5 0 0.6666666666666666 1.166666666666667 0 0.8333333333333333 1.166666666666667 0 0.3333333333333334 1.166666666666667 0 0.1666666666666667 1.333333333333333 0 0.1666666666666667 1.166666666666667 0 0.5 1.166666666666667 0 1.333333333333333 -1.166666666666667 0 1.5 -1.166666666666667 0 0.3333333333333333 -1.833333333333333 0 0.1666666666666667 -1.666666666666667 0 0.1666666666666667 -1.833333333333333 0 1.166666666666667 -1 0 1.166666666666667 -0.8333333333333333 0 1.166666666666667 -1.166666666666667 0 1.833333333333333 -1.666666666666667 0 1.666666666666667 -1.833333333333333 0 1.833333333333333 -1.833333333333333 0 0.1666666666666667 -1.5 0 1.166666666666667 0.3333333333333333 0 1.166666666666667 0.1666666666666666 0 1.166666666666667 0.5 0 0.1666666666666667 1.5 0 1.166666666666667 1.833333333333333 0 0.5 1.833333333333333 0 1.833333333333333 -1.5 0 1.833333333333333 -0.6666666666666667 0 1.833333333333333 -0.5 0 1.833333333333333 -0.8333333333333334 0 1.833333333333333 0.1666666666666666 0 1.833333333333333 1.166666666666667 0 0.5 -1.833333333333333 0 1.5 -1.833333333333333 0 1.5 1.5 0 $EndNodes $Elements 8 108 1 108 1 1 8 3 1 1 9 11 2 9 10 12 3 10 2 13 1 5 8 3 4 6 35 37 5 35 36 38 6 36 5 39 1 6 8 6 7 7 40 45 8 40 41 46 9 41 42 47 10 42 43 48 11 43 44 49 12 44 6 50 1 7 8 12 13 8 51 62 14 51 52 63 15 52 53 64 16 53 54 65 17 54 55 66 18 55 56 67 19 56 57 68 20 57 58 69 21 58 59 70 22 59 60 71 23 60 61 72 24 61 7 73 1 8 8 6 25 2 74 79 26 74 75 80 27 75 76 81 28 76 77 82 29 77 78 83 30 78 8 84 1 9 8 6 31 5 85 90 32 85 86 91 33 86 87 92 34 87 88 93 35 88 89 94 36 89 1 95 2 1 10 18 37 97 103 104 96 106 107 108 109 110 38 97 98 105 103 111 112 113 106 114 39 31 5 85 102 34 90 115 116 117 40 30 31 102 101 33 116 118 119 120 41 86 105 102 85 121 122 115 91 123 42 87 103 105 86 124 113 121 92 125 43 96 104 99 100 108 126 127 128 129 44 98 101 102 105 130 118 122 112 131 45 23 4 30 101 29 32 119 132 133 46 100 99 14 15 127 134 17 135 136 47 100 19 20 96 137 25 138 128 139 48 21 97 96 20 140 109 138 26 141 49 88 89 99 104 94 142 126 143 144 50 89 1 14 99 95 16 134 142 145 51 15 3 19 100 18 24 137 135 146 52 22 98 97 21 147 111 140 27 148 53 101 98 22 23 130 147 28 132 149 54 104 103 87 88 107 124 93 143 150 2 2 10 54 55 1 9 160 14 11 185 186 16 187 56 174 175 156 4 188 189 190 191 192 57 153 160 164 183 193 194 195 196 197 58 152 171 161 162 198 199 200 201 202 59 174 4 23 157 191 29 203 204 205 60 6 35 166 44 37 206 207 50 208 61 40 41 163 173 46 209 210 211 212 62 53 169 155 52 213 214 215 64 216 63 158 60 61 173 217 72 218 219 220 64 75 76 172 183 81 221 222 223 224 65 176 153 183 172 225 196 222 226 227 66 170 180 178 154 228 229 230 231 232 67 168 155 184 181 233 234 235 236 237 68 165 159 167 166 238 239 240 241 242 69 156 179 167 159 243 244 239 245 246 70 154 177 169 170 247 248 249 231 250 71 176 172 181 184 226 251 235 252 253 72 160 153 15 14 193 254 17 186 255 73 3 15 153 176 18 254 225 256 257 74 20 19 154 178 25 258 230 259 260 75 20 178 162 21 259 261 262 26 263 76 7 40 173 61 45 211 218 73 264 77 42 43 167 179 48 265 244 266 267 78 55 56 152 180 67 268 269 270 271 79 151 182 58 59 272 273 70 274 275 80 57 58 182 171 69 273 276 277 278 81 172 76 77 181 221 82 279 251 280 82 175 174 151 158 188 281 282 283 284 83 161 171 182 157 199 276 285 286 287 84 151 174 157 182 281 204 285 272 288 85 152 162 178 180 201 261 229 269 289 86 156 175 163 179 189 290 291 243 292 87 30 4 156 159 32 190 245 293 294 88 36 5 31 165 39 34 295 296 297 89 31 30 159 165 33 293 238 295 298 90 177 184 155 169 299 234 214 248 300 91 10 2 74 164 13 79 301 302 303 92 19 3 177 154 24 304 247 258 305 93 184 177 3 176 299 304 256 252 306 94 78 8 51 168 84 62 307 308 309 95 164 160 9 10 194 185 12 302 310 96 162 161 22 21 200 311 27 262 312 97 23 22 161 157 28 311 286 203 313 98 165 166 35 36 241 206 38 296 314 99 42 179 163 41 266 291 209 47 315 100 166 167 43 44 240 265 49 207 316 101 155 168 51 52 233 307 63 215 317 102 180 170 54 55 228 318 66 270 319 103 53 54 170 169 65 318 249 213 320 104 171 152 56 57 198 268 68 277 321 105 158 151 59 60 282 274 71 217 322 106 75 183 164 74 223 195 301 80 323 107 168 181 77 78 236 279 83 308 324 108 158 173 163 175 219 210 290 283 325 $EndElements feenox-1.1/tests/qrng.fee0000644000175000017500000000005214773607165012367 00000000000000static_steps = 10 PRINT quasi_random(0,1) feenox-1.1/tests/initial_conditions.fee0000644000175000017500000000004414773607165015303 00000000000000INITIAL_CONDITIONS FROM_DERIVATIVES feenox-1.1/tests/nafems-t4.geo0000644000175000017500000000055114773607165013235 00000000000000SetFactory("OpenCASCADE"); Rectangle(1) = {0, 0, 0, 0.6, 1.0, 0}; Physical Curve("AB") = {1}; Physical Curve("BC") = {2}; Physical Curve("CD") = {3}; Physical Curve("DA") = {4}; Physical Surface("bulk") = {1}; Mesh.RecombineAll = 1; Mesh.ElementOrder = 1; k = 50; Transfinite Curve {1, 3} = k*5+1; Transfinite Curve {4, 2} = k*3+1; Transfinite Surface "*"; feenox-1.1/tests/nafems-le1-8.msh0000644000175000017500000001444414773607165013557 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 9 0 1 "A" 0 2 "B" 0 3 "C" 0 4 "D" 1 5 "AB" 1 6 "BC" 1 7 "CD" 1 8 "DA" 2 9 "bulk" $EndPhysicalNames $Entities 4 4 1 0 1 6.123233995736766e-14 1000 0 1 1 2 9.950255243072245e-14 2750 0 1 2 3 3250 0 0 1 3 4 2000 0 0 1 4 1 -1e-07 999.9999999 -1e-07 1e-07 2750.0000001 1e-07 1 5 2 1 -2 2 -9.999985195463523e-08 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 6 2 3 -2 3 1999.9999999 -1e-07 -1e-07 3250.0000001 1e-07 1e-07 1 7 2 3 -4 4 -9.999985195463523e-08 -1.000000224848918e-07 -1e-07 2000.0000001 1000.0000001 1e-07 1 8 2 4 -1 1 -1.000000793283107e-07 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 9 4 1 -2 3 4 $EndEntities $Nodes 9 117 1 117 0 1 0 1 1 6.123233995736766e-14 1000 0 0 2 0 1 2 9.950255243072245e-14 2750 0 0 3 0 1 3 3250 0 0 0 4 0 1 4 2000 0 0 1 1 0 7 5 6 7 8 9 10 11 0 1434.232387780806 0 0 1870.635937451771 0 0 2309.221504784242 0 0 1217.116193890403 0 0 1652.434162616289 0 0 2089.928721118007 0 0 2529.610752392121 0 1 2 0 11 12 13 14 15 16 17 18 19 20 21 22 3122.462036085646 762.8211063815952 0 2760.436694568109 1451.465694415729 0 2214.818610289794 2012.544242367443 0 1542.004361425019 2420.757654968403 0 790.4638145833807 2667.420913683683 0 3217.713710984367 386.6640467349545 0 2967.748292699926 1120.944705687722 0 2506.599310405891 1750.426233039374 0 1890.644312601312 2236.787179861301 0 1172.987393778596 2564.64199776051 0 397.3919830891709 2729.364896783245 0 1 3 0 7 23 24 25 26 27 28 29 2935.158217794536 0 0 2621.882812463697 0 0 2310.165991177719 0 0 3092.579108897268 0 0 2778.520515129116 0 0 2466.024401820708 0 0 2155.082995588859 0 0 1 4 0 11 30 31 32 33 34 35 36 37 38 39 40 1861.446094820848 365.7247722250347 0 1559.233579327545 626.2568652512748 0 1196.780614328439 801.2047430538036 0 808.4029301048257 914.669981823763 0 407.2395142007033 979.0500469937141 0 1961.850933064361 194.3842306068678 0 1721.609433414114 508.9353983511886 0 1382.350556681957 722.6871623394666 0 1004.573648941004 864.701073182715 0 608.7371269160137 952.5543436353169 0 203.891146165294 994.7899778992804 0 2 1 0 77 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 502.3300301855381 1397.990225787693 0 990.4335021784177 1288.379722679649 0 1449.389225604628 1101.777796300221 0 1857.291463218973 831.0182368467947 0 2174.345502280971 464.257394712871 0 597.8959987819819 1819.025105443216 0 1173.374227174532 1663.958012219458 0 1703.260880027457 1403.853714800613 0 2156.839636644623 1036.803415292877 0 2488.809406913281 563.2826803089997 0 693.9397972024943 2242.165159413261 0 1357.229655759425 2041.414193132276 0 1958.401892672171 1707.440012833444 0 2457.885550878158 1243.617519590274 0 2804.845631006595 662.8030923134188 0 251.1650150927692 1416.11130678425 0 454.7847721931207 1188.520136390704 0 227.5280806290316 1205.450642341765 0 746.3817661819779 1343.184974233671 0 899.4182161416218 1101.524852251706 0 677.5594465489958 1147.869658934494 0 1219.911363891523 1195.078759489935 0 1323.084919966533 951.4912696770125 0 1112.242506416263 1029.889916336325 0 1653.3403444118 966.398016573508 0 1708.262521273259 728.6375510490348 0 1517.845450546879 844.5425894564873 0 2015.818482749972 647.6378157798329 0 2017.89579855091 414.9910834689529 0 1868.713958082043 578.2866070655107 0 2242.255746729345 232.1286973564356 0 2102.053339896853 213.2564639816519 0 298.9479993909911 1844.830521447493 0 550.11301448376 1608.507665615454 0 275.0565072418801 1630.470914115871 0 885.6351129782569 1741.491558831337 0 1081.903864676475 1476.168867449554 0 816.0084395801175 1542.338266532504 0 1438.317553600994 1533.905863510036 0 1576.325052816042 1252.815755550417 0 1329.114458746259 1364.492311499985 0 1930.05025833604 1220.328565046745 0 2007.065549931798 933.9108260698358 0 1791.69530137392 1093.363290810127 0 2322.824521778952 800.0430478009382 0 2331.577454597126 513.7700375109354 0 2169.321502264462 723.8404317903857 0 2555.346109688489 281.6413401544999 0 2398.800928208917 256.8850187554676 0 346.9698986012472 2275.693332098752 0 645.9178979922381 2030.595132428238 0 322.9589489961193 2060.261926773122 0 1025.58472648096 2141.789676272769 0 1265.301941466979 1852.686102675867 0 955.6099197296085 1941.640617552053 0 1657.815774215798 1874.42710298286 0 1830.831386349814 1555.646863817029 0 1548.066663908396 1704.166483246448 0 2208.143721775165 1475.528766211859 0 2307.362593761391 1140.210467441575 0 2069.096990055602 1347.928665629302 0 2631.365590942377 953.2103059518465 0 2646.827518959938 613.0428863112093 0 2477.095056360665 876.6266768763924 0 2870.001924400565 331.4015461567094 0 2712.674017044527 306.5214431556046 0 742.2018058929375 2454.793036548472 0 372.1809408452091 2502.529114440998 0 1449.617008592222 2231.08592405034 0 1099.286060129778 2353.215837016639 0 2086.610251480983 1859.992127600443 0 1774.230043408555 2055.607141422081 0 2609.161122723133 1347.541607003002 0 2357.371516090528 1612.977499625617 0 2963.653833546121 712.812099347507 0 2799.556941821152 1037.077505819784 0 3043.857817692466 359.032796445832 0 $EndNodes $Elements 9 48 1 48 0 1 15 1 1 1 0 2 15 1 2 2 0 3 15 1 3 3 0 4 15 1 4 4 1 1 8 4 5 1 5 8 6 5 6 9 7 6 7 10 8 7 2 11 1 2 8 6 9 3 12 17 10 12 13 18 11 13 14 19 12 14 15 20 13 15 16 21 14 16 2 22 1 3 8 4 15 3 23 26 16 23 24 27 17 24 25 28 18 25 4 29 1 4 8 6 19 4 30 35 20 30 31 36 21 31 32 37 22 32 33 38 23 33 34 39 24 34 1 40 2 1 10 24 25 1 5 41 34 8 56 57 40 58 26 34 41 42 33 57 59 60 39 61 27 33 42 43 32 60 62 63 38 64 28 32 43 44 31 63 65 66 37 67 29 31 44 45 30 66 68 69 36 70 30 30 45 25 4 69 71 29 35 72 31 5 6 46 41 9 73 74 56 75 32 41 46 47 42 74 76 77 59 78 33 42 47 48 43 77 79 80 62 81 34 43 48 49 44 80 82 83 65 84 35 44 49 50 45 83 85 86 68 87 36 45 50 24 25 86 88 28 71 89 37 6 7 51 46 10 90 91 73 92 38 46 51 52 47 91 93 94 76 95 39 47 52 53 48 94 96 97 79 98 40 48 53 54 49 97 99 100 82 101 41 49 54 55 50 100 102 103 85 104 42 50 55 23 24 103 105 27 88 106 43 7 2 16 51 11 22 107 90 108 44 51 16 15 52 107 21 109 93 110 45 52 15 14 53 109 20 111 96 112 46 53 14 13 54 111 19 113 99 114 47 54 13 12 55 113 18 115 102 116 48 55 12 3 23 115 17 26 105 117 $EndElements feenox-1.1/tests/reaction-elastic-lr.fee0000644000175000017500000000113314773607165015262 00000000000000PROBLEM mechanical 3D READ_MESH cube-hex.msh E = 1 nu = 0 BC left fixed BC right Fx=1 SOLVE_PROBLEM REACTION left RESULT left REACTION right RESULT right REACTION bottom RESULT bottom REACTION top RESULT top REACTION front RESULT front REACTION back RESULT back PRINT %.4f left[1] abs(left[2]) abs(left[3]) PRINT %.4f right[1] abs(right[2]) abs(right[3]) PRINT %.4f abs(bottom[1]) abs(bottom[2]) abs(bottom[3]) PRINT %.4f abs(top[1]) abs(top[2]) abs(top[3]) PRINT %.4f abs(front[1]) abs(front[2]) abs(front[3]) PRINT %.4f abs(back[1]) abs(back[2]) abs(back[3]) feenox-1.1/tests/qrng2d_rhalton.fee0000644000175000017500000000010714773607165014345 00000000000000static_steps = 8 PRINT qrng2d_reversehalton(1) qrng2d_reversehalton(2) feenox-1.1/tests/Pu-239a.fee0000644000175000017500000000067014773607165012466 00000000000000# material PU-239 (a) nu1_fuel = 3.24 Sigma_f1_fuel = 0.081600 nuSigma_f1_fuel = nu1_fuel*Sigma_f1_fuel Sigma_s1.1_fuel = 0.225216 Sigma_t1_fuel = 0.32640 chi[1] = 1 # these ones are not used by the problem but to check Sigma_c1_fuel = 0.019584 c_fuel = 1.5 IF equal(Sigma_t1_fuel,Sigma_c1_fuel+Sigma_f1_fuel+Sigma_s1.1_fuel)=0|equal(c_fuel,(Sigma_s1.1_fuel+nuSigma_f1_fuel)/Sigma_t1_fuel)=0 PRINT "XS mismatch in $0" ABORT ENDIF feenox-1.1/tests/two-squares-bin-gmsh.msh0000644000175000017500000000627214773607165015456 00000000000000$MeshFormat 4.1 1 8  $EndMeshFormat $PhysicalNames 4 1 1 "left" 1 2 "right" 2 3 "soft" 2 4 "hard" $EndPhysicalNames $Entities ????@@??@@????@? $EndEntities $Nodes ????@@???? ?? ? ? @? ???????? ??m۶m[?$I$I???G$I?1 0 ??? $EndNodes $Elements                           $EndElements feenox-1.1/tests/pipe-sch27-2-2.geo0000644000175000017500000000324414773607165013620 00000000000000// structured curved hex27 Mesh.SecondOrderLinear = 0; Mesh.RecombineAll = 1; Mesh.SecondOrderIncomplete = 0; SetFactory("OpenCASCADE"); l = 2*(( 323.8/2 )-( ( 323.8/2 )-21.5 )); Point(1) = {-l/2, 0, 0}; Point(2) = {-l/2, ( ( 323.8/2 )-21.5 ), 0}; Point(3) = {-l/2, 0, ( ( 323.8/2 )-21.5 )}; Point(4) = {-l/2, -( ( 323.8/2 )-21.5 ), 0}; Point(5) = {-l/2, 0, -( ( 323.8/2 )-21.5 )}; Point(6) = {-l/2, ( 323.8/2 ), 0}; Point(7) = {-l/2, 0, ( 323.8/2 )}; Point(8) = {-l/2, -( 323.8/2 ), 0}; Point(9) = {-l/2, 0, -( 323.8/2 )}; Circle(1) = {3, 1, 2}; Circle(2) = {2, 1, 5}; Circle(3) = {5, 1, 4}; Circle(4) = {4, 1, 3}; Circle(5) = {7, 1, 6}; Circle(6) = {6, 1, 9}; Circle(7) = {9, 1, 8}; Circle(8) = {8, 1, 7}; Line(9) = {3, 7}; Line(10) = {2, 6}; Line(11) = {5, 9}; Line(12) = {4, 8}; Curve Loop(1) = {5, -10, -1, 9}; Plane Surface(1) = {1}; Curve Loop(2) = {6, -11, -2, 10}; Plane Surface(2) = {2}; Curve Loop(3) = {7, -12, -3, 11}; Plane Surface(3) = {3}; Curve Loop(4) = {8, -9, -4, 12}; Plane Surface(4) = {4}; Transfinite Curve {1, 2, 3, 4, 5, 6, 7, 8} = 1+Pi/4*((( 323.8/2 )+( ( 323.8/2 )-21.5 ))/(( 323.8/2 )-( ( 323.8/2 )-21.5 )))*2; Transfinite Curve {10, 11, 12, 9} = 1+2; Transfinite Surface {:}; If (Mesh.RecombineAll) Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; Recombine; } Else Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; } EndIf Physical Surface("front") = {1, 2, 3, 4}; Physical Surface("back") = {17, 13, 9, 20}; Physical Surface("pressure") = {12, 16, 19, 7}; Physical Volume("bulk") = {2, 3, 4, 1}; Mesh.ElementOrder = 2; feenox-1.1/tests/pipe-sct10-2-2.geo0000644000175000017500000000320414773607165013620 00000000000000// structured curved tet10 Mesh.SecondOrderLinear = 0; Mesh.RecombineAll = 0; SetFactory("OpenCASCADE"); l = 2*(( 323.8/2 )-( ( 323.8/2 )-21.5 )); Point(1) = {-l/2, 0, 0}; Point(2) = {-l/2, ( ( 323.8/2 )-21.5 ), 0}; Point(3) = {-l/2, 0, ( ( 323.8/2 )-21.5 )}; Point(4) = {-l/2, -( ( 323.8/2 )-21.5 ), 0}; Point(5) = {-l/2, 0, -( ( 323.8/2 )-21.5 )}; Point(6) = {-l/2, ( 323.8/2 ), 0}; Point(7) = {-l/2, 0, ( 323.8/2 )}; Point(8) = {-l/2, -( 323.8/2 ), 0}; Point(9) = {-l/2, 0, -( 323.8/2 )}; Circle(1) = {3, 1, 2}; Circle(2) = {2, 1, 5}; Circle(3) = {5, 1, 4}; Circle(4) = {4, 1, 3}; Circle(5) = {7, 1, 6}; Circle(6) = {6, 1, 9}; Circle(7) = {9, 1, 8}; Circle(8) = {8, 1, 7}; Line(9) = {3, 7}; Line(10) = {2, 6}; Line(11) = {5, 9}; Line(12) = {4, 8}; Curve Loop(1) = {5, -10, -1, 9}; Plane Surface(1) = {1}; Curve Loop(2) = {6, -11, -2, 10}; Plane Surface(2) = {2}; Curve Loop(3) = {7, -12, -3, 11}; Plane Surface(3) = {3}; Curve Loop(4) = {8, -9, -4, 12}; Plane Surface(4) = {4}; Transfinite Curve {1, 2, 3, 4, 5, 6, 7, 8} = 1+Pi/4*((( 323.8/2 )+( ( 323.8/2 )-21.5 ))/(( 323.8/2 )-( ( 323.8/2 )-21.5 )))*2; Transfinite Curve {10, 11, 12, 9} = 1+2; Transfinite Surface {:}; If (Mesh.RecombineAll) Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; Recombine; } Else Extrude {l, 0, 0} { Surface{1}; Surface{2}; Surface{3}; Surface{4}; Layers {1+2}; } EndIf Physical Surface("front") = {1, 2, 3, 4}; Physical Surface("back") = {17, 13, 9, 20}; Physical Surface("pressure") = {12, 16, 19, 7}; Physical Volume("bulk") = {2, 3, 4, 1}; Mesh.ElementOrder = 2; feenox-1.1/tests/nafems-le11.fee0000644000175000017500000000052414773607165013435 00000000000000--- title: NAFEMS LE11 benchmark ... PROBLEM mechanical 3D READ_MESH $0-$1.msh T(x,y,z) = sqrt(x^2 + y^2) + z BC xz symmetry BC yz symmetry BC xy w=0 BC HIH'I' w=0 E = 2.11e11 nu = 0.3 alpha = 2.3e-4 SOLVE_PROBLEM WRITE_MESH ${0}-${1}.vtk VECTOR u v w T sigmax sigmay sigmaz tauxy tauyz tauzx PRINT %.1f sigmaz(1,0,0)/1e6 feenox-1.1/tests/statically_indeterminate_reaction.geo0000644000175000017500000000056114773607165020405 00000000000000// SetFactory("OpenCASCADE"); Box(1) = {0, 0, 0, 1, 1, 4}; Box(2) = {0, 0, 4, 1, 1, 3}; Box(3) = {0, 0, 7, 1, 1, 3}; Coherence; Physical Surface("bottom") = {5}; Physical Surface("top") = {16}; Physical Surface("one") = {11}; Physical Surface("two") = {6}; Physical Volume("bulk") = {1,2,3}; Mesh.MeshSizeMax = 0.5; // Mesh.OptimizeNetgen = 1; Mesh.ElementOrder = 2; feenox-1.1/tests/lag.sh0000755000175000017500000000067614773607165012055 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkida answer lag.fee "0.16" exitifwrong $? answer lag_compact.fee "0.16" exitifwrong $? # check TIME_PATH echo -n "time_path_raw.fee ... " if [ "x$(${feenox} ${dir}/time_path_raw.fee | wc -l)" != "x5" ]; then echo "failed" return 1 fi echo "ok" feenox-1.1/tests/integrate2d.fee0000644000175000017500000000030214773607165013626 00000000000000READ_MESH mesh2d.$1 DIMENSIONS 2 READ_FUNCTION f INTEGRATE f RESULT I1 INTEGRATE f CELLS RESULT I2 INTEGRATE f(x,y)^2 RESULT I3 INTEGRATE f(x,y)^2 CELLS RESULT I4 PRINT %.7f I1 I2 I3 I4 SEP " " feenox-1.1/tests/iaea-pwr.sh0000755000175000017500000000066514773607165013015 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkgmsh checkslepc checkpde neutron_diffusion gmsh -v 0 -2 ${dir}/2dpwr-quarter.geo || exit $? answer1 2dpwr.fee quarter "1.0298" exitifwrong $? gmsh -v 0 -2 ${dir}/2dpwr-eighth.geo || exit $? answer1 2dpwr.fee eighth "1.0297" exitifwrong $? feenox-1.1/tests/thermal-square.fee0000644000175000017500000000031214773607165014351 00000000000000PROBLEM thermal 2d READ_MESH square-centered.msh BC left T=0 BC right T=0 BC bottom T=0 BC up T=0 q = 1 k = 1 SOLVE_PROBLEM WRITE_RESULTS FORMAT vtk PRINT dTdx(1,1)+qx(1,1)+dTdy(1,1)+qy(1,1) feenox-1.1/tests/square.msh0000644000175000017500000000223714773607165012757 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 5 1 1 "left" 1 2 "right" 1 3 "bottom" 1 4 "up" 2 5 "bulk" $EndPhysicalNames $Entities 4 4 1 0 1 0 0 0 0 2 1 0 0 0 3 1 1 0 0 4 0 1 0 0 1 -9.999999994736442e-08 -1e-07 -1e-07 1.0000001 1e-07 1e-07 1 3 2 1 -2 2 0.9999999000000001 -9.999999994736442e-08 -1e-07 1.0000001 1.0000001 1e-07 1 2 2 2 -3 3 -9.999999994736442e-08 0.9999999000000001 -1e-07 1.0000001 1.0000001 1e-07 1 4 2 3 -4 4 -1e-07 -9.999999994736442e-08 -1e-07 1e-07 1.0000001 1e-07 1 1 2 4 -1 1 -9.999999994736442e-08 -9.999999994736442e-08 -1e-07 1.0000001 1.0000001 1e-07 1 5 4 1 2 3 4 $EndEntities $Nodes 9 12 1 12 0 1 0 1 1 0 0 0 0 2 0 1 2 1 0 0 0 3 0 1 3 1 1 0 0 4 0 1 4 0 1 0 1 1 0 1 5 0.5 0 0 1 2 0 1 6 1 0.5 0 1 3 0 1 7 0.5 1 0 1 4 0 1 8 0 0.5 0 2 1 0 4 9 10 11 12 0.25 0.25 0 0.625 0.3750000000000001 0 0.71875 0.7187500000000001 0 0.345703125 0.654296875 0 $EndNodes $Elements 5 22 1 22 1 1 1 2 1 1 5 2 5 2 1 2 1 2 3 2 6 4 6 3 1 3 1 2 5 3 7 6 7 4 1 4 1 2 7 4 8 8 8 1 2 1 2 14 9 2 10 5 10 6 10 2 11 4 12 7 12 8 12 4 13 3 11 6 14 7 11 3 15 5 9 1 16 1 9 8 17 10 12 9 18 9 12 8 19 5 10 9 20 11 12 10 21 7 12 11 22 6 11 10 $EndElements feenox-1.1/tests/default_argument_value.fee0000644000175000017500000000012314773607165016141 00000000000000DEFAULT_ARGUMENT_VALUE 1 hello DEFAULT_ARGUMENT_VALUE 2 world! PRINT $1 $2 SEP " " feenox-1.1/tests/nafems-le11-hex8.geo0000644000175000017500000000017114773607165014320 00000000000000Mesh.ElementOrder = 1; // 1st order Mesh.RecombineAll = 1; // hexahedra Merge "nafems-le11.geo"; feenox-1.1/tests/xfail-few-properties-ortho-young.fee0000644000175000017500000000036114773607165017767 00000000000000PROBLEM mechanical READ_MESH cylinder.msh Ex = 1 Ey = 2 # Ez = 3 nuxy = 0.3 nuyz = 0.3 nuzx = 0.3 Gxy = 3 Gyz = 2 Gzx = 1 alphax = 0.1 alphay = 0.2 alphaz = 0.3 T(x,y,z) = x^2+y^2+z^2 BC bottom fixed SOLVE_PROBLEM PRINT %.2f displ_max feenox-1.1/tests/iterative.ref0000644000175000017500000000000614773607165013430 000000000000001 2 4 feenox-1.1/tests/thermal-two-squares-material-implicit-space.fee0000644000175000017500000000033314773607165022043 00000000000000PROBLEM thermal DIMENSIONS 2 # this mesh was exported as binary from Gmsh READ_MESH two-squares-bin-gmsh.msh k_soft(x,y) = 0.5+x k_hard(x,y) = 1.5+2*(x-1) BC left T=0 BC right T=1 SOLVE_PROBLEM PRINT %.3f T(1,0.5) feenox-1.1/tests/bc-groups6.fee0000644000175000017500000000026214773607165013412 00000000000000PROBLEM mechanical READ_MESH cube.msh E = 1 nu = 0.3 BC A fixed GROUPS left front bottom right BC C p=1 GROUPS right back top SOLVE_PROBLEM WRITE_RESULTS FORMAT vtk feenox-1.1/tests/bc-groups1.ref0000644000175000017500000000032314773607165013420 00000000000000{ "bcs": [ { "name": "A", "groups": [ "left", "front", "bottom" ] }, { "name": "B", "groups": [ "right", "back", "top" ] } ] } feenox-1.1/tests/thermal-slab-convection-as-heat-nosource.fee0000644000175000017500000000016314773607165021316 00000000000000PROBLEM thermal 1D READ_MESH slab2.msh BC left T=0 BC right q=1*(1-T(x)) k = 1 SOLVE_PROBLEM PRINT T(0.5)-1/4 feenox-1.1/tests/beam-cantilever-hex20.geo0000644000175000017500000000015514773607165015421 00000000000000Mesh.ElementOrder = 2; Mesh.RecombineAll = 1; Mesh.SecondOrderIncomplete = 1; Merge "beam-cantilever.geo"; feenox-1.1/tests/bunny-sn-box.fee0000644000175000017500000000036614773607165013767 00000000000000PROBLEM neutron_sn 3D SN 4 READ_MESH bunny-box.msh MATERIAL bunny nuSigma_f1=2.4*0.08 Sigma_s1.1=0.22 Sigma_t1=0.4 MATERIAL box nuSigma_f1=0 Sigma_s1.1=0 Sigma_t1=0 BC vacuum vacuum SOLVE_PROBLEM PRINT keff-1.015 WRITE_RESULTS feenox-1.1/tests/lag.fee0000644000175000017500000000102014773607165012157 00000000000000# this is a transient problem and lasts 5 units of time end_time = 5 # each time step is equal to 1/20th of a unit of time dt = 1/20 # some parameters, which we define as constants # CONST a b tau a = 1 b = 3 tau = 1.234 # signal r is equal to zero except for a < t < b r = heaviside(t-a)-heaviside(t-b) # signal y is equal to signal r filtered through a lag # of characteristic time tau y = lag(r, tau) # PRINT t r y IF done PRINT %.2f y ENDIF # exercise: investigate how the result of the lag # depends on the time step feenox-1.1/tests/reaction-force.ref0000644000175000017500000000021414773607165014335 000000000000001 164.18 0.00 0.03 1 0.01 164.18 0.19 1 164.18 0.00 0.11 1 0.01 164.18 0.14 1 0.00 0.00 100.00 1 0.00 0.00 100.00 total 4e-03 -7e-03 -3e-02 feenox-1.1/tests/two-is-2.ref0000644000175000017500000000000214773607165013011 000000000000002 feenox-1.1/tests/Barra1D_b_Trans.fee0000644000175000017500000000134114773607165014306 00000000000000PROBLEM thermal 1d READ_MESH Barra1D.msh # all units SI D = 0.02 Area = pi * D * D / 4 Perim = pi * D k = 50 q0 = 30 rho = 8000 cp = 400 h = 10 Tinf = 300 # cte de tiempo ~ D * rho * cp / 4 / h tau = D * rho * cp / 4 / h end_time = 4*tau #end_time = 3200 # fuente: dependiente de T (convección) q(x) = h * Perim * (Tinf - T(x)) / Area # Esta sí funciona: # fuente (x): mejor con media 0 (CC Neumann puro = 0) #q(x) = 100000*sin((x-0.5)*pi) # boundary conditions: BC left q=0 BC right q=0 FUNCTION T_0(x) FILE "Tini.dat" INTERPOLATION linear #T_0(x) = 323 + 277 * (1-cos((x-0.5) * pi)) SOLVE_PROBLEM # IF done # PRINT_FUNCTION T # ENDIF # PRINT t T(0.5) T(1) IF done PRINT T(0.5)-301.655 ENDIF #WRITE_RESULTS FORMAT gmsh feenox-1.1/tests/atan2.fee0000644000175000017500000000002714773607165012427 00000000000000PRINT atan2(1,-1)-pi/2 feenox-1.1/tests/iterative.fee0000644000175000017500000000005514773607165013417 00000000000000static_steps = 3 x_init = 1 x = 2*x PRINT x feenox-1.1/tests/qrng_others.ref0000644000175000017500000000034714773607165013777 000000000000000.5 0 0.5 0.5 0.75 0.5 0.25 0.25 0.25 0.75 0.75 0.75 0.375 0.25 0.125 0.125 0.875 0.375 0.625 0.625 0.625 0.875 0.375 0.375 0.125 0.625 0.875 0.875 0.1875 0.125 0.0625 0.0625 0.6875 0.1875 0.5625 0.5625 0.9375 0.6875 0.3125 0.3125 feenox-1.1/tests/two-cubes-orthotropic.sh0000755000175000017500000000071614773607165015567 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkgmsh gmsh -v 0 -3 ${dir}/two-cubes.geo || exit $? answer two-cubes-orthotropic-variables.fee "9.9" exitifwrong $? answer two-cubes-orthotropic-functions.fee "9.9" exitifwrong $? answer two-cubes-orthotropic-materials.fee "9.9" exitifwrong $? feenox-1.1/tests/bunny-modal.fee0000644000175000017500000000072514773607165013654 00000000000000PROBLEM modal 3D MODES 6 # create mesh with # > wget https://upload.wikimedia.org/wikipedia/commons/4/43/Stanford_Bunny.stl # > gmsh -3 bunny.geo -order 2 -o bunny-2nd.msh # READ_MESH bunny-2nd.msh # 2nd-order meshing is buggy in the gmsh version in the ubuntu repo # which is used by github actions so we keep 1st order for now READ_MESH bunny.msh nu = 0.3 rho = 1 E = 1e6 INCLUDE bunny-modal-${1}.fee SOLVE_PROBLEM PRINT %.0f SEP " " f WRITE_RESULTS FORMAT vtk feenox-1.1/tests/ray-effect-quarter.geo0000644000175000017500000000071314773607165015145 00000000000000SetFactory("OpenCASCADE"); Rectangle(1) = {0, 0, 0, 1, 1, 0}; Rectangle(2) = {0, 0, 0, 2, 2, 0}; Coherence; n = 3; Transfinite Curve {7, 1, 2, 8} = 1+n; Transfinite Curve {3, 6} = 1+n; Transfinite Curve {4, 5} = 1+2*n; Mesh.Algorithm = 8; Mesh.RecombineAll = 1; Mesh.ElementOrder = 2; Mesh.SecondOrderIncomplete = 0; Physical Surface("src") = {1}; Physical Surface("bulk") = {2}; Physical Curve("mirror") = {3, 8, 7, 6}; Physical Curve("vacuum") = {4, 5}; feenox-1.1/tests/statically_indeterminate_reaction.fee0000644000175000017500000000057114773607165020373 00000000000000# problem taken from Ansys Workbench Verification manual (case VMMECH001) PROBLEM mechanical 3D READ_MESH statically_indeterminate_reaction.msh E = 2.9008e7 nu = 0.3 BC bottom fixed BC top fixed BC one Fz=-1000 BC two Fz=-500 SOLVE_PROBLEM REACTION bottom RESULT R_bottom REACTION top RESULT R_top PRINT sqrt(((R_bottom[3]-600)/600)^2+((R_top[3]-900)/900)^2) feenox-1.1/tests/vector.fee0000644000175000017500000000014014773607165012720 00000000000000VECTOR x SIZE 3 DATA 1^1 2+2 3*3 VECTOR y[3] y[i] = i^2 PRINT (x[1]+x[2]+x[3])*(y[1]+y[2]+y[3]) feenox-1.1/tests/spinning-disk.sh0000755000175000017500000000122314773607165014054 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical checkgmsh # solid 3d for i in quarter eighth sixteenth; do gmsh -v 0 -3 ${dir}/spinning-disk-parallel-solid-half${i}_unstruct.geo || exit $? answer1zero spinning-disk-parallel-solid-half.fee ${i}_unstruct exitifwrong $? done # plane stress for i in quarter eighth sixteenth; do gmsh -v 0 -2 ${dir}/spinning-disk-parallel-plane-${i}_unstruct.geo || exit $? answer1zero spinning-disk-parallel-plane.fee ${i}_unstruct exitifwrong $? done feenox-1.1/tests/i-beam-euler-bernoulli.fee0000644000175000017500000000114714773607165015663 00000000000000PROBLEM mechanical 3D READ_MESH i-beam-$2.msh E = 200e3 # Young modulus [MPa] nu = 0 # Poisson's ratio total_force = -100 # Total vertical force [N] width = 60 # [mm] thickness = 10 # [mm] length = 500 # [mm] # analytical moment of inertia I = 2*thickness*width^3/12 + 2*(width*thickness^3/12 + width*thickness*(0.5*(width+thickness))^2) BC $1 Fz=total_force BC left fixed # bernoulli's prediction (k = 3 for point load at end, k = 8 for distributed) k_right = 3 k_top = 8 w_eb = total_force*length^3/(k_$1*E*I) SOLVE_PROBLEM PRINT %+.0e (w(1000,0,0)-w_eb)/w_eb feenox-1.1/tests/slab.msh0000644000175000017500000000116314773607165012375 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 3 0 1 "left" 0 2 "right" 1 3 "bulk" $EndPhysicalNames $Entities 2 1 0 0 1 0 0 0 1 1 2 1 0 0 1 2 1 0 0 0 1 0 0 1 3 2 1 -2 $EndEntities $Nodes 3 11 1 11 0 1 0 1 1 0 0 0 0 2 0 1 2 1 0 0 1 1 0 9 3 4 5 6 7 8 9 10 11 0.09999999999981414 0 0 0.1999999999995569 0 0 0.299999999999265 0 0 0.3999999999989731 0 0 0.4999999999986921 0 0 0.599999999998945 0 0 0.6999999999992088 0 0 0.7999999999994725 0 0 0.8999999999997362 0 0 $EndNodes $Elements 3 12 1 12 0 1 15 1 1 1 0 2 15 1 2 2 1 1 1 10 3 1 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 8 9 10 9 10 11 10 11 12 11 2 $EndElements feenox-1.1/tests/parallelepiped-from-msh.fee0000644000175000017500000000222514773607165016135 00000000000000# references: # - http://www.code-aster.org/V2/doc/default/fr/man_v/v7/v7.03.100.pdf # - https://www.seamplex.com/docs/SP-FI-17-BM-12F2-A.pdf PROBLEM mechanical 3D READ_MESH parallelepiped.msh MAIN # instead of defining T(x,y,z) as an algebraic expression # we read it from a msh file that does not have to be the same # as the main one (it has a different element size and order) READ_MESH parallelepiped-thermal.msh DIM 3 READ_FUNCTION T E(x,y,z) = 1000/(800-T(x,y,z)) nu = 0.3 BC O fixed BC B u=0 w=0 BC C u=0 # here "load" is a fantasy name BC load tension=1 GROUPS left right SOLVE_PROBLEM # analytical solutions h = 10 A = 0.002 B = 0.003 C = 0.004 D = 0.76 # the "e" means exact ue(x,y,z) := A/2*(x^2 + nu*(y^2+z^2)) + B*x*y + C*x*z + D*x - nu*A*h/4*(y+z) ve(x,y,z) := -nu*(A*x*y + B/2*(y^2-z^2+x^2/nu) + C*y*z + D*y -A*h/4*x - C*h/4*z) we(x,y,z) := -nu*(A*x*z + B*y*z + C/2*(z^2-y^2+x^2/nu) + D*z + C*h/4*y - A*h/4*x) # compute the L-2 norm of the error in the displacement field INTEGRATE (u(x,y,z)-ue(x,y,z))^2+(v(x,y,z)-ve(x,y,z))^2+(w(x,y,z)-we(x,y,z))^2 RESULT num MESH parallelepiped.msh INTEGRATE 1 RESULT den MESH parallelepiped.msh PRINT num/den feenox-1.1/tests/materials.sh0000755000175000017500000000035314773607165013263 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi answer materials.fee "0.1 10" exitifwrong $? feenox-1.1/tests/two-is-3.ref0000644000175000017500000000000414773607165013014 000000000000002 3 feenox-1.1/tests/la-p47-U-2-0-IN.fee0000644000175000017500000000040114773607165013424 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 47 PROBLEM neutron_sn 1D GROUPS 2 SN 6 READ_MESH la-IN.msh INCLUDE U-235.fee BC mirror mirror SOLVE_PROBLEM PRINT (keff-2.216349)+(phi2(0)/phi1(0))-0.474967 feenox-1.1/tests/la-p05-PUb-1-0-IN.fee0000644000175000017500000000036314773607165013706 00000000000000# Los Alamos LA-13511 Analytical Benchmark Test Set for Criticallity Code Verification # problem 5 PROBLEM neutron_sn 1D GROUPS 1 SN 2 READ_MESH la-IN.msh INCLUDE Pu-239b.fee # implicit? BC mirror mirror SOLVE_PROBLEM PRINT keff-2.290323 feenox-1.1/tests/thermal-slab-transient-mms-capacity-of-T.fee0000644000175000017500000000072414773607165021176 00000000000000READ_MESH slab2.msh PROBLEM thermal DIMENSIONS 1 DIRICHLET_SCALING relative 1 end_time = 1 T_0(x) = 0 BC left T=0 BC right T=0 T_mms(x,t) = sin(pi*x)*t k_mms(x,t) = 1+T_mms(x,t) # rhocp_mms(x,t) = 1+T_mms(x,t) rhocp_mms(x,t) = 1 k(x) = 1+T(x) rhocp(x) = 1+T(x) VAR x' x'' t' q(x) = -derivative(k_mms(x',t) * derivative(T_mms(x'',t), x'', x'), x', x) + derivative(rhocp_mms(x,t')*T_mms(x,t'),t',t) SOLVE_PROBLEM IF done PRINT T(0.5)-T_mms(0.5,end_time) ENDIF feenox-1.1/tests/2dpwr.fee0000644000175000017500000000430614773607165012464 00000000000000# BENCHMARK PROBLEM # # Identification: 11-A2 Source Situation ID.11 # Date Submitted: June 1976 By: R. R. Lee (CE) # D. A. Menely (Ontario Hydro) # B. Micheelsen (Riso-Denmark) # D. R. Vondy (ORNL) # M. R. Wagner (KWU) # W. Werner (GRS-Munich) # # Date Accepted: June 1977 By: H. L. Dodds, Jr. (U. of Tenn.) # M. V. Gregory (SRL) # # Descriptive Title: Two-dimensional LWR Problem, # also 2D IAEA Benchmark Problem # # Reduction of Source Situation # 1. Two-groupo diffusion theory # 2. Two-dimensional (x,y)-geometry # PROBLEM neutron_diffusion 2D GROUPS 2 DEFAULT_ARGUMENT_VALUE 1 quarter # either quarter or eighth READ_MESH 2dpwr-$1.msh # define materials and cross sections according to the two-group constants # each material corresponds to a physical entity in the geometry file Bg2 = 0.8e-4 # axial geometric buckling in the z direction MATERIAL fuel1 { D1=1.5 Sigma_a1=0.010+D1(x,y)*Bg2 Sigma_s1.2=0.02 D2=0.4 Sigma_a2=0.080+D2(x,y)*Bg2 nuSigma_f2=0.135 }#eSigmaF_2 nuSigmaF_2(x,y) } MATERIAL fuel2 { D1=1.5 Sigma_a1=0.010+D1(x,y)*Bg2 Sigma_s1.2=0.02 D2=0.4 Sigma_a2=0.085+D2(x,y)*Bg2 nuSigma_f2=0.135 }#eSigmaF_2 nuSigmaF_2(x,y) } MATERIAL fuel2rod { D1=1.5 Sigma_a1=0.010+D1(x,y)*Bg2 Sigma_s1.2=0.02 D2=0.4 Sigma_a2=0.130+D2(x,y)*Bg2 nuSigma_f2=0.135 }#eSigmaF_2 nuSigmaF_2(x,y) } MATERIAL reflector { D1=2.0 Sigma_a1=0.000+D1(x,y)*Bg2 Sigma_s1.2=0.04 D2=0.3 Sigma_a2=0.010+D2(x,y)*Bg2 } # define boundary conditions as requested by the problem BC external vacuum=0.4692 # "external" is the name of the entity in the .geo BC mirror mirror # the first mirror is the name, the second is the BC type # # set the power setpoint equal to the volume of the core # # (and set eSigmaF_2 = nuSigmaF_2 as above) # power = 17700 SOLVE_PROBLEM # solve! PRINT %.4f keff WRITE_MESH $0-$1.vtu phi1 phi2 VECTOR NAME J1 Jx1 Jy2 0 VECTOR NAME J2 Jx2 Jy2 0 feenox-1.1/tests/airfoil.fee0000644000175000017500000000372114773607165013053 00000000000000PROBLEM laplace 2D static_steps = 20 READ_MESH airfoil.msh # boundary conditions constant -> streamline BC bottom phi=0 BC top phi=1 # initialize c = streamline constant for the wing DEFAULT_ARGUMENT_VALUE 1 0.5 IF in_static_first c = $1 ENDIF BC wing phi=c SOLVE_PROBLEM PHYSICAL_GROUP kutta DIM 0 e = phi(kutta_cog[1], kutta_cog[2]) - c # PRINT TEXT "\# "step_static %.6f c %+.1e e HEADER # check for convergence done_static = done_static | (abs(e) < 1e-8) IF done_static PHYSICAL_GROUP left DIM 1 vx(x,y) = +dphidy(x,y) * left_length vy(x,y) = -dphidx(x,y) * left_length # write post-processing views WRITE_MESH $0-converged.msh phi VECTOR vx vy 0 WRITE_MESH $0-converged.vtk phi VECTOR vx vy 0 # circulation on profile INTEGRATE vx(x,y)*(+ny)+vy(x,y)*(-nx) OVER wing RESULT circ_profile # function unit tangent PHYSICAL_GROUP circle DIM 1 cx = circle_cog[1] cy = circle_cog[2] tx(x,y) = -(y-cy)/sqrt((x-cx)*(x-cx)+(y-cy)*(y-cy)) ty(x,y) = +(x-cx)/sqrt((x-cx)*(x-cx)+(y-cy)*(y-cy)) # circulation on the circumference with tangent INTEGRATE vx(x,y)*tx(x,y)+vy(x,y)*ty(x,y) OVER circle RESULT circ_circle_t # circulation on the outer box INTEGRATE vx(x,y)*(+ny)+vy(x,y)*(-nx) OVER circle RESULT circ_circle_n INTEGRATE -vx(x,y) OVER top GAUSS RESULT inttop INTEGRATE +vx(x,y) OVER bottom GAUSS RESULT intbottom INTEGRATE -vy(x,y) OVER left GAUSS RESULT intleft INTEGRATE +vy(x,y) OVER right GAUSS RESULT intright circ_box = inttop + intleft + intbottom + intright # pressure forces p(x,y) = 1.0 - vx(x,y)^2 + vy(x,y)^2 INTEGRATE p(x,y)*(nx) OVER circle RESULT pFx INTEGRATE p(x,y)*(ny) OVER circle RESULT pFy PRINTF "%.1f %.1f %.1f %.1f %.1f %.1f" -circ_profile -circ_circle_t -circ_circle_n -circ_box pFy pFx ELSE # update c IF in_static_first c_last = c e_last = e c = c_last - 0.1 ELSE c_next = c_last - e_last * (c_last-c)/(e_last-e) c_last = c e_last = e c = c_next ENDIF ENDIF feenox-1.1/tests/nafems-le1-1.msh0000644000175000017500000000564214773607165013550 00000000000000$MeshFormat 4.1 0 8 $EndMeshFormat $PhysicalNames 9 0 1 "A" 0 2 "B" 0 3 "C" 0 4 "D" 1 5 "AB" 1 6 "BC" 1 7 "CD" 1 8 "DA" 2 9 "bulk" $EndPhysicalNames $Entities 4 4 1 0 1 6.123233995736766e-14 1000 0 1 1 2 9.950255243072245e-14 2750 0 1 2 3 3250 0 0 1 3 4 2000 0 0 1 4 1 -1e-07 999.9999999 -1e-07 1e-07 2750.0000001 1e-07 1 5 2 1 -2 2 -9.999985195463523e-08 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 6 2 3 -2 3 1999.9999999 -1e-07 -1e-07 3250.0000001 1e-07 1e-07 1 7 2 3 -4 4 -9.999985195463523e-08 -1.000000224848918e-07 -1e-07 2000.0000001 1000.0000001 1e-07 1 8 2 4 -1 1 -1.000000793283107e-07 -1.000000793283107e-07 -1e-07 3250.0000001 2750.0000001 1e-07 1 9 4 1 -2 3 4 $EndEntities $Nodes 9 35 1 35 0 1 0 1 1 6.123233995736766e-14 1000 0 0 2 0 1 2 9.950255243072245e-14 2750 0 0 3 0 1 3 3250 0 0 0 4 0 1 4 2000 0 0 1 1 0 3 5 6 7 0 1434.232387780806 0 0 1870.635937451771 0 0 2309.221504784242 0 1 2 0 5 8 9 10 11 12 3122.462036085646 762.8211063815952 0 2760.436694568109 1451.465694415729 0 2214.818610289794 2012.544242367443 0 1542.004361425019 2420.757654968403 0 790.4638145833807 2667.420913683683 0 1 3 0 3 13 14 15 2935.158217794536 0 0 2621.882812463697 0 0 2310.165991177719 0 0 1 4 0 5 16 17 18 19 20 1861.446094820848 365.7247722250347 0 1559.233579327545 626.2568652512748 0 1196.780614328439 801.2047430538036 0 808.4029301048257 914.669981823763 0 407.2395142007033 979.0500469937141 0 2 1 0 15 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 502.3300301855381 1397.990225787693 0 990.4335021784177 1288.379722679649 0 1449.389225604628 1101.777796300221 0 1857.291463218973 831.0182368467947 0 2174.345502280971 464.257394712871 0 597.8959987819819 1819.025105443216 0 1173.374227174532 1663.958012219458 0 1703.260880027457 1403.853714800613 0 2156.839636644623 1036.803415292877 0 2488.809406913281 563.2826803089997 0 693.9397972024943 2242.165159413261 0 1357.229655759425 2041.414193132276 0 1958.401892672171 1707.440012833444 0 2457.885550878158 1243.617519590274 0 2804.845631006595 662.8030923134188 0 $EndNodes $Elements 9 72 1 72 0 1 15 1 1 1 0 2 15 1 2 2 0 3 15 1 3 3 0 4 15 1 4 4 1 1 1 4 5 1 5 6 5 6 7 6 7 8 7 2 1 2 1 6 9 3 8 10 8 9 11 9 10 12 10 11 13 11 12 14 12 2 1 3 1 4 15 3 13 16 13 14 17 14 15 18 15 4 1 4 1 6 19 4 16 20 16 17 21 17 18 22 18 19 23 19 20 24 20 1 2 1 2 48 25 1 5 20 26 20 5 21 27 20 21 19 28 19 21 22 29 19 22 18 30 18 22 23 31 18 23 17 32 17 23 24 33 17 24 16 34 16 24 25 35 16 25 4 36 4 25 15 37 5 6 21 38 21 6 26 39 21 26 22 40 22 26 27 41 22 27 23 42 23 27 28 43 23 28 24 44 24 28 29 45 24 29 25 46 25 29 30 47 25 30 15 48 15 30 14 49 6 7 26 50 26 7 31 51 26 31 27 52 27 31 32 53 27 32 28 54 28 32 33 55 28 33 29 56 29 33 34 57 29 34 30 58 30 34 35 59 30 35 14 60 14 35 13 61 7 2 31 62 31 2 12 63 31 12 32 64 32 12 11 65 32 11 33 66 33 11 10 67 33 10 34 68 34 10 9 69 34 9 35 70 35 9 8 71 35 8 13 72 13 8 3 $EndElements feenox-1.1/tests/bunny-thermal-mpi.sh0000755000175000017500000000126514773607165014655 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde thermal checkgmsh checkmpirun if [ ! -e ${dir}/bunny.msh ]; then exit 77 fi if [ ! -e ${dir}/bunny4.msh ]; then gmsh - ${dir}/bunny.msh -part 4 -o ${dir}/bunny4.msh || exit $? fi # this input file reads bunny4.msh that has 4 partitions for n in $(seq 1 4); do answerzerompi ${n} bunny-thermal-mpi.fee 1e-2 exitifwrong $? done # this input file reads bunny.msh that does not have partitions for n in $(seq 1 4); do answerzerompi ${n} bunny-thermal.fee 1e-2 exitifwrong $? done feenox-1.1/tests/asme-expansion-table.dat0000644000175000017500000000062214773607165015450 00000000000000# temp A B C 20 21.7 21.7 0 50 23.3 22.6 0.7 75 23.9 23.1 1.3 100 24.3 23.4 1.9 125 24.7 23.7 2.5 150 25.2 23.9 3.1 175 25.7 24.2 3.7 200 26.4 24.4 4.4 225 27.0 24.7 5.1 250 27.5 25.0 5.7 275 27.7 25.2 6.4 300 27.6 25.5 7.1 325 27.1 25.6 7.8 feenox-1.1/tests/bunny-box.geo0000644000175000017500000000153414773607165013362 00000000000000// SetFactory("OpenCASCADE"); // Box(1) = {-28, -50, 0, 115, 100, 115}; // https://upload.wikimedia.org/wikipedia/commons/4/43/Stanford_Bunny.stl Merge "Stanford_Bunny.stl"; Merge "box.stl"; angle = 40; includeBoundary = 1; forceParametrizablePatches = 0; curveAngle = 180; ClassifySurfaces{angle * Pi/180, includeBoundary, forceParametrizablePatches, curveAngle * Pi / 180}; CreateGeometry; Surface Loop(1) = {4, 3, 6, 8, 17, 7, 9, 10, 18, 19, 12, 13, 20, 11, 5, 16, 14, 15}; Volume(1) = {1}; Surface Loop(2) = {26, 21, 23, 25, 22, 24}; Volume(2) = {1, 2}; Physical Volume("bunny") = {1}; Physical Volume("box") = {2}; Physical Surface("vacuum", 64) = {4, 21, 26, 24, 22, 3, 25, 23}; Mesh.MeshSizeMin = 8; Mesh.MeshSizeMax = 15; // Mesh.ElementOrder = 1; Mesh.Algorithm = 6; Mesh.Algorithm3D = 1; Mesh.Optimize = 1; Mesh.MeshSizeExtendFromBoundary = 0; feenox-1.1/tests/ud20-1-0-sl-src-vacuum.fee0000644000175000017500000000047614773607165015176 00000000000000PROBLEM neutron_diffusion 1d READ_MESH ud20-1-0-sl.msh a = 2 * 10.371065 # critical size of the problem UD20-1-0-SL (number 22 report Los Alamos) Sigma_t1 = 0.54628 Sigma_s1.1 = 0.464338 S1 = 0.5*1.70*0.054628 D1 = 1/(3*Sigma_t1) BC left vacuum BC right vacuum SOLVE_PROBLEM PRINT %.3f phi1(5) phi1(15) SEP " " feenox-1.1/tests/reactions-elastic.sh0000755000175000017500000000056214773607165014715 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical # checkgmsh # gmsh -v 0 -3 ${dir}/cube-hex.geo || exit $? answerdiff reaction-elastic-lr.fee exitifwrong $? answerdiff reaction-elastic-lt.fee exitifwrong $? feenox-1.1/tests/printf.ref0000644000175000017500000000016614773607165012745 00000000000000hola2 2hola4 3.3 2.50 1.429 3.1e+00 3.14e+00 3.142e+00 3.1416e+00 1 2 3 4 5 1 2 3 4 5 6 1x2x3x4x5x6x7 1x2x3x4x5x6x7x8 feenox-1.1/tests/nafems-le10.ref0000644000175000017500000000133014773607165013445 00000000000000stress tensor at D -0.08 +0.05 -0.04 +0.05 -5.45 +0.01 -0.04 +0.01 -1.02 von Mises at D 4.97 average displacement on bulk -0.0001 -0.0004 -0.0609 maximum displacement on bulk +0.0000 -0.0417 -0.1976 location of maximum displacement on bulk +0.00 +1000.00 +300.00 min/max/average von Mises on bulk +0.46 +15.79 +4.21 location of min/max von Mises on bulk +0.00 +1000.00 +0.00 +587.74 +2704.66 +300.00 average displacement on DCD'C' -0.0002 +0.0000 -0.0441 maximum displacement on DCD'C' -0.0275 +0.0000 -0.0982 location of maximum displacement on DCD'C' +2000.00 +0.00 +300.00 min/max/average von Mises on DCD'C' +0.66 +10.59 +3.67 location of min/max von Mises on DCD'C' +2000.00 +0.00 -43.98 +3250.00 +0.00 +300.00 feenox-1.1/tests/single-arc.fee0000644000175000017500000000013214773607165013443 00000000000000READ_MESH single-arc${1}.msh PHYSICAL_GROUP quarter DIM 1 PRINT %.1e quarter_length-pi/2 feenox-1.1/tests/long-bar-mechanical.fee0000644000175000017500000000111014773607165015177 00000000000000# Case VMMECH007:Thermal Stress in a Bar with Temperature Dependent Conductivity PROBLEM mechanical 3D DEFAULT_ARGUMENT_VALUE 1 struct DEFAULT_ARGUMENT_VALUE 2 $1 READ_MESH long-bar-$1.msh READ_MESH long-bar-$2-temperature.msh DIM 3 READ_FUNCTION T E = 2e11 nu = 0 alpha = 1.5e-5 T0 = 5 BC rear tangential radial BC front tangential radial SOLVE_PROBLEM FIND_EXTREMA w MAX w_max X_MAX w_max_x Y_MAX w_max_y Z_MAX w_max_z # "target" is 0.00232 but that's too small # "ansys mechanical" is 0.002341 and that looks also small PRINT (w_max-0.00234673)/w_max #w_max_x w_max_y w_max_z feenox-1.1/tests/expressions_cumbersome.fee0000644000175000017500000000255314773607165016233 00000000000000# from hamilton-analytical m1 = 0.3 m2 = 0.2 l1 = 0.3 l2 = 0.25 g = 9.8 theta1 = 0.1 theta2 = 0.2 p1 = 0.3 p2 = 0.4 c1 = p1 * p2 * sin( theta1 - theta2 ) / ( l1 * l2 * ( m1 + m2 * sin( theta1 - theta2 ) ^2 ) ) c2 = (p1^2*m2*l2^2 - 2*p1*p2*m2*l1*l2*cos(theta1-theta2) + p2^2*(m1+m2)*l1^2)*sin(2*(theta1-theta2))/(2*l1^2*l2^2*(m1+m2*sin(theta1-theta2)^2)^2) theta1_dot = (p1*l2 - p2*l1*cos(theta1-theta2))/(l1^2*l2*(m1 + m2*sin(theta1-theta2)^2)) theta2_dot = (p2*(m1+m2)/m2*l1 - p1*l2*cos(theta1-theta2))/(l1*l2^2*(m1 + m2*sin(theta1-theta2)^2)) p1_dot = - (m1+m2)*g*l1*sin(theta1) - c1 + c2 p2_dot = - m2*g*l2*sin(theta2) + c1 - c2 # the reference values come from julia PRINT theta1_dot-(-6.534433950331411) PRINT theta2_dot-(39.802146797976675) PRINT p1_dot-(-0.5362319852498947) PRINT p2_dot-(0.29212889068947734) # from hamilton-numerical H(theta1,theta2,p1,p2) = - (m1*g*l1*cos(theta1) + m2*g*(l1*cos(theta1) + l2*cos(theta2))) - (l2^2*m2*p1^2 - 2*l1*l2*m2*cos(theta1-theta2)*p1*p2 + l1^2*(m1+m2)*p2^2)/(l1^2*l2^2*m2 * (-2*m1-m2+m2*cos(2*(theta1-theta2)))) PRINT H(theta1,theta2,p1,p2)-5.037375520944719 # from some test f(time) = ((-1 * asin(((0.26568 * sin(((62.83185 * time) - acos(0.26568)))) / sqrt(((1 + (0.26568 ^ 2)) - ((2 * 0.26568) * cos(((62.83185 * time) - acos(0.26568))))))))) - asin(0.26568)); PRINT f(0) PRINT f(0.01)+0.062722981468626149 feenox-1.1/tests/bunny-diffusion.fee0000644000175000017500000000035014773607165014540 00000000000000PROBLEM neutron_diffusion 3D READ_MESH bunny.msh nu1 = 2.4 Sigma_f1 = 0.08 nuSigma_f1 = nu1*Sigma_f1 Sigma_s1.1 = 0.22 Sigma_t1 = 0.4 chi[1] = 1.0 BC base vacuum BC rest vacuum SOLVE_PROBLEM PRINT keff-1.029 WRITE_RESULTS feenox-1.1/tests/neutron-fully-mirrored.sh0000755000175000017500000000064014773607165015745 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde neutron_diffusion checkpde neutron_sn checkgmsh gmsh -v 0 -2 ${dir}/square-struct.geo || exit $? answerzero diffusion-square-fully-mirrored.fee exitifwrong $? answerzero sn-square-fully-mirrored.fee exitifwrong $? feenox-1.1/tests/reflected-src.fee0000644000175000017500000000067114773607165014151 00000000000000READ_MESH reflected.msh DIMENSIONS 1 PROBLEM neutron_diffusion GROUPS 2 MATERIAL fuel { D1=1.5 D2=0.4 Sigma_s1.2=0.02 Sigma_a1=0.01 Sigma_a2=0.08 S1=0.05 } MATERIAL left_refl { D1=2.0 D2=0.3 Sigma_s1.2=0.04 Sigma_a1=0.00 Sigma_a2=0.01 } MATERIAL right_refl { D1=2.0 D2=0.3 Sigma_s1.2=0.05 Sigma_a1=0.00 Sigma_a2=0.005 } BC left null BC right null SOLVE_PROBLEM PRINT %.4f phi1(100) phi2(100) SEP " " feenox-1.1/tests/read_mesh2d.fee0000644000175000017500000000012614773607165013577 00000000000000DEFAULT_ARGUMENT_VALUE 1 41 READ_MESH square$1 PRINTF "%g %g %g" nodes elements cells feenox-1.1/tests/xfail-few-properties-ortho-poisson.fee0000644000175000017500000000036114773607165020320 00000000000000PROBLEM mechanical READ_MESH cylinder.msh Ex = 1 Ey = 2 Ez = 3 # nuxy = 0.3 nuyz = 0.3 nuzx = 0.3 Gxy = 3 Gyz = 2 Gzx = 1 alphax = 0.1 alphay = 0.2 alphaz = 0.3 T(x,y,z) = x^2+y^2+z^2 BC bottom fixed SOLVE_PROBLEM PRINT %.2f displ_max feenox-1.1/tests/function_file1d_columns.fee0000644000175000017500000000007714773607165016240 00000000000000FUNCTION f(x) FILE data1d_columns.dat COLUMNS 1 3 PRINT f(2.5) feenox-1.1/tests/ortho-expansion-alpha-of-space.sh0000755000175000017500000000042114773607165017211 00000000000000#!/bin/sh for i in . tests; do if [ -e ${i}/functions.sh ]; then . ${i}/functions.sh fi done if [ -z "${functions_found}" ]; then echo "could not find functions.sh" exit 1; fi checkpde mechanical answerzero ortho-expansion-alpha-of-space.fee exitifwrong $? feenox-1.1/COPYING0000644000175000017500000010451314773607165010637 00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . feenox-1.1/README4engineers0000644000175000017500000002330214773607200012432 00000000000000FeenoX for Engineers - 1 How FeenoX works - 2 What Feenox can solve - 3 Why FeenoX works the way it does [1 How FeenoX works]: #how-feenox-works [2 What Feenox can solve]: #what-feenox-can-solve [3 Why FeenoX works the way it does]: #why-feenox-works-the-way-it-does How FeenoX works Heads up! First things first: 1. FeenoX is not a traditional point-and-click finite-element solver. It does not include a graphical interface. 2. FeenoX is designed as a cloud-first back end for generic computational workflows to solve engineering-related problems. One of these many workflows can be point-and-click graphical interface such as CAEplex which allows to solve thermo-mechanical problems directly from the browser. 3. Since it is a cloud-first tool, FeenoX targets at GNU/Linux. If you are using Windows, FeenoX may not be for you (but CAEplex may). See below to find out why FeenoX works the way it does. In plain engineering terms, FeenoX works like a transfer function between one or more input files and zero or more output files: +------------+ mesh (*.msh) } | | { terminal data (*.dat) } input ----> | FeenoX |----> output { data files input (*.fee) } | | { post (vtk/msh) +------------+ When solving problems using the finite element method, FeenoX sits in the middle of pre and post-processing tools. The former should aid the engineer to prepare the mesh and, eventually, the input file. The latter should show the numerical results. See the tensile test tutorial for an in-depth step-by-step explanation. To fix ideas, let us consider the NAFEMS LE10 “Thick plate pressure” benchmark. Fig. 1 shows that there is a one-to-one correspondence between the human-friendly problem formulation and the input file FeenoX reads. There is no need to give extra settings if the problem does not ask for them. Note that since the problem has only one volume, E means “the” Young modulus. No need to deal with a map between materials and mesh entities (in this case the mapping is not needed but in multi-material problems the mapping is needed indeed). Nothing more, nothing less. [Figure 1: The NAFEMS LE10 problem statement and the corresponding FeenoX input] Figure 1: The NAFEMS LE10 problem statement and the corresponding FeenoX input Say we already have a nafems-le10.geo file which tells Gmsh how to create a mesh nafems-le10.msh (check out the tensile test tutorial for details). Then, we can create an input file for FeenoX (using editors with syntax highlighting for example) as follows: # NAFEMS Benchmark LE-10: thick plate pressure PROBLEM mechanical DIMENSIONS 3 READ_MESH nafems-le10.msh # mesh in millimeters # LOADING: uniform normal pressure on the upper surface BC upper p=1 # 1 Mpa # BOUNDARY CONDITIONS: BC DCD'C' v=0 # Face DCD'C' zero y-displacement BC ABA'B' u=0 # Face ABA'B' zero x-displacement BC BCB'C' u=0 v=0 # Face BCB'C' x and y displ. fixed BC midplane w=0 # z displacements fixed along mid-plane # MATERIAL PROPERTIES: isotropic single-material properties E = 210e3 # Young modulus in MPa nu = 0.3 # Poisson's ratio SOLVE_PROBLEM # solve! # print the direct stress y at D (and nothing more) PRINT "σ_y @ D = " sigmay(2000,0,300) "MPa" Heads up! The .msh file from Gmsh can be either a. version 2.2, or b. version 4.0, or c. version 4.1. and can be partitioned or not. Once we put these two files, nafems-le10.geo and nafems-le10.fee in the same directory, say in the examples directory of the repository, then we call first Gmsh and then FeenoX from the terminal to solve the benchmark problem: Check out the section about invocation in the FeenoX manual. The trick is that this workflow is susceptible of being automated and customized to run in the cloud, possibly in parallel throughout several servers using the MPI standard. Check out this 1-minute video that covers a similar case from the tensile-test tutorial: []  There is a sound explanation about why FeenoX works this way and not like other FEA tools you might have encountered in the past. If you are feeling curious, take a look at what FeenoX has to offer to hackers and academics. [FeenoX]: https://www.seamplex.com/feenox [cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first [back end]: https://en.wikipedia.org/wiki/Frontend_and_backend [CAEplex]: https://www.caeplex.com [why]: #why [input files]: https://seamplex.com/feenox/doc/sds.html#sec:input [output files]: https://seamplex.com/feenox/doc/sds.html#sec:output [tensile test tutorial]: https://www.seamplex.com/feenox/doc/tutorials/110-tensile-test/ [NAFEMS LE10 “Thick plate pressure” benchmark]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark [multi-material problems]: https://seamplex.com/feenox/examples/mechanical.html#two-cubes-compressing-each-other [Figure 1: The NAFEMS LE10 problem statement and the corresponding FeenoX input]: nafems-le10-problem-input.svg [nafems-le10.geo]: https://github.com/seamplex/feenox/blob/main/examples/nafems-le10.geo [Gmsh]: http://gmsh.info/ [editors with syntax highlighting]: https://seamplex.com/feenox/doc/sds.html#sec:syntactic [examples]: https://github.com/seamplex/feenox/tree/main/examples [invocation]: https://www.seamplex.com/feenox/doc/feenox-manual.html#running-feenox [FeenoX manual]: https://www.seamplex.com/feenox/doc/feenox-manual.html [in the cloud]: https://www.seamplex.com/feenox/doc/sds.html#cloud-first [in parallel throughout several servers using the MPI standard]: https://seamplex.com/feenox/doc/sds.html#sec:scalability [1]: https://seamplex.com/feenox/doc/tutorials/110-tensile-test/quick.mp4 [hackers]: README4hackers.md [academics]: README4academics.md What Feenox can solve FeenoX can solve the following types of problems: - Basic mathematics - Systems of ODEs/DAEs - Laplace’s equation - Heat conduction - Linear elasticity - Modal analysis - Neutron diffusion - Neutron SN Take the tutorials to learn how to solve those types of problems: 0. Setting up your workspace 1. Overview: the tensile test case 2. Fun & games: solving mazes with PDES instead of AI 3. Heat conduction Browse through the documentation to dive deeper into the details. [Basic mathematics]: https://seamplex.com/feenox/examples/basic.html [Systems of ODEs/DAEs]: https://seamplex.com/feenox/examples/daes.html [Laplace’s equation]: https://seamplex.com/feenox/examples/laplace.html [Heat conduction]: https://seamplex.com/feenox/examples/thermal.html [Linear elasticity]: https://seamplex.com/feenox/examples/mechanical.html [Modal analysis]: https://seamplex.com/feenox/examples/modal.html [Neutron diffusion]: https://seamplex.com/feenox/examples/neutron_diffusion.html [Neutron SN]: https://seamplex.com/feenox/examples/neutron_sn.html [Setting up your workspace]: https://www.seamplex.com/feenox/doc/tutorials/000-setup [Overview: the tensile test case]: https://www.seamplex.com/feenox/doc/tutorials/110-tensile-test [Fun & games: solving mazes with PDES instead of AI]: https://www.seamplex.com/feenox/doc/tutorials/120-mazes [2]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal [the documentation]: https://seamplex.com/feenox/doc/ Why FeenoX works the way it does There are two “why” questions we have to answer. 1. Why is FeenoX different from other “similar” tools? Consider again the NAFEMS LE10 case from fig. 1 above. Take some time to think (or investigate) how other FEA tools handle this case. Note the following features FeenoX provides: - ready-to-run executable that reads the problem at runtime (no need to compile anything to solve a particular problem) - self-explanatory plain-text near-English input file - one-to-one correspondence between computer input file and human description of the problem - Git-traceable (mesh is not part of the input file) - everything is an expression - material properties can be given as functions of space and/or time and/or temperature (or other intermediate variables) - these functions can be given as algebraic expressions or come from interpolated point-wise defined data - 100% user-defined output - simple problems need simple inputs - similar problems need similar inputs - parametric and optimization runs through command-line arguments - flexibility to handle many workflows, including web-based interfaces 2. Why FeenoX works the way it does? Because it is cloud first and its objective is to be flexible enough to power web-based interfaces like CAEplex and many other workflows. More information in the details for Unix experts and academic professors. Depending on the complexity of the case, CAEplex might be enough or not. If the latter, one has to see what’s sitting under the hood. Peek into the documentation and the repository for further details. [ready-to-run executable]: https://www.seamplex.com/feenox/doc/sds.html#sec:execution [100% user-defined output]: https://seamplex.com/feenox/doc/sds.html#sec:output [web-based interfaces]: https://www.caeplex.com [cloud first]: https://seamplex.com/feenox/doc/sds.html#cloud-first [Unix experts]: README4hackers.md [academic professors]: README4academics.md [the documentation]: https://seamplex.com/feenox/doc/ [the repository]: https://github.com/seamplex/feenox/ feenox-1.1/INSTALL0000644000175000017500000003717714773607165010650 00000000000000See particular instructions to compile and install FeenoX online at Generic instructions from the GNU project follow below. ---------8<-------------------8<-------------------8<---------- Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package. It may also create one or more '.h' files containing system-dependent definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how 'configure' could check whether to do them, and mail diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of 'autoconf'. The simplest way to compile this package is: 1. 'cd' to the directory containing the package's source code and type './configure' to configure the package for your system. Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type 'make' to compile the package. 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile the package for a different kind of computer), type 'make distclean'. There is also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' script. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' to specify different values for particular kinds of files. Run 'configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving 'configure' the option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. Some packages pay attention to '--enable-FEATURE' options to 'configure', where FEATURE indicates an optional part of the package. They may also pay attention to '--with-PACKAGE' options, where PACKAGE is something like 'gnu-as' or 'x' (for the X Window System). The 'README' should mention any '--enable-' and '--with-' options that the package recognizes. For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, you can use the 'configure' options '--x-includes=DIR' and '--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file 'config.sub' for the possible values of each field. If 'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. Sharing Defaults ================ If you want to set default values for 'configure' scripts to share, you can create a site shell script called 'config.site' that gives default values for variables like 'CC', 'cache_file', and 'prefix'. 'configure' looks for 'PREFIX/share/config.site' if it exists, then 'PREFIX/etc/config.site' if it exists. Or, you can set the 'CONFIG_SITE' environment variable to the location of the site script. A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--quiet' '--silent' '-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). '--srcdir=DIR' Look for the package's source code in directory DIR. Usually 'configure' can determine that directory automatically. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. feenox-1.1/config.h.in0000644000175000017500000000137714773607171011630 00000000000000#undef HAVE_ASPRINTF #undef HAVE_CLOCK_GETTIME #undef HAVE_GETRUSAGE #undef HAVE_PETSC #undef HAVE_SLEPC #undef HAVE_SUNDIALS #undef HAVE_SYSCONF #undef HAVE_UNISTD_H #undef HAVE___BUILTIN_EXPECT #undef FEENOX_VERSION #undef FEENOX_GIT_VERSION #undef FEENOX_GIT_BRANCH #undef FEENOX_GIT_DATE #undef FEENOX_GIT_CLEAN #undef FEENOX_COMPILATION_DATE #undef FEENOX_COMPILATION_USERNAME #undef FEENOX_COMPILATION_HOSTNAME #undef FEENOX_COMPILER_COMMAND #undef FEENOX_COMPILER_VERSION #undef FEENOX_COMPILER_ARCH #undef FEENOX_COMPILER_CFLAGS #undef FEENOX_COMPILER_LDFLAGS #undef FEENOX_COMPILER_SHOW #undef PACKAGE #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_URL #undef PACKAGE_VERSION #undef STDC_HEADERS feenox-1.1/src/0000755000175000017500000000000014773607300010436 500000000000000feenox-1.1/src/pdes/0000755000175000017500000000000014773607300011371 500000000000000feenox-1.1/src/pdes/petsc_snes.c0000644000175000017500000001403514773607165013637 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's non-linear solver using PETSc routines * * Copyright (C) 2020--2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_problem_solve_petsc_nonlinear(void) { #ifdef HAVE_PETSC if (feenox.pde.snes == NULL) { // TODO: move to a separate function petsc_call(SNESCreate(PETSC_COMM_WORLD, &feenox.pde.snes)); // monitor // petsc_call(SNESMonitorSet(feenox.pde.snes, feenox.pde.snes_monitor, NULL, 0)); feenox_check_alloc(feenox.pde.r = feenox_problem_create_vector("r")); petsc_call(SNESSetFunction(feenox.pde.snes, feenox.pde.r, feenox_snes_residual, NULL)); feenox_check_alloc(feenox.pde.J_snes = feenox_problem_create_matrix("J_snes")); petsc_call(SNESSetJacobian(feenox.pde.snes, feenox.pde.J_snes, feenox.pde.J_snes, feenox_snes_jacobian, NULL)); // TODO feenox_call(feenox_problem_setup_snes(feenox.pde.snes)); } // solve feenox.pde.progress_last = 0; // reset the progress bar counter petsc_call(SNESSolve(feenox.pde.snes, NULL, feenox.pde.phi)); // check convergence SNESConvergedReason reason; petsc_call(SNESGetConvergedReason(feenox.pde.snes, &reason)); if (reason < 0) { feenox_push_error_message("PETSc's non-linear solver did not converge with reason '%s' (%d)", SNESConvergedReasons[reason], reason); // TODO: go deeper into the KSP and PC return FEENOX_ERROR; } // finish the progress line if (feenox.pde.progress_ascii == PETSC_TRUE) { int i; if (feenox.mpi_size == 1) { for (i = (int)(100*feenox.pde.progress_last); i < 100; i++) { printf(CHAR_PROGRESS_SOLVE); } } if (feenox.mpi_rank == 0) { printf("\n"); fflush(stdout); } } #endif return FEENOX_OK; } #ifdef HAVE_PETSC int feenox_problem_setup_snes(SNES snes) { // TODO: have an explicit default // TODO: set the line search if (feenox.pde.snes_type != NULL) { // if we have an explicit type, we set it petsc_call(SNESSetType(snes, feenox.pde.snes_type)); } petsc_call(SNESSetTolerances(snes, feenox_var_value(feenox.pde.vars.snes_atol), feenox_var_value(feenox.pde.vars.snes_rtol), feenox_var_value(feenox.pde.vars.snes_stol), (PetscInt)feenox_var_value(feenox.pde.vars.snes_max_it), PETSC_DEFAULT)); petsc_call(SNESSetFromOptions(snes)); // TODO: this call complains about DM (?) in thermal-slab-transient.fee // petsc_call(SNESSetUp(snes)); // customize ksp (and pc)---this needs to come after setting the jacobian KSP ksp; petsc_call(SNESGetKSP(snes, &ksp)); feenox_call(feenox_problem_setup_ksp(ksp)); return FEENOX_OK; } PetscErrorCode feenox_snes_residual(SNES snes, Vec phi, Vec r, void *ctx) { // set dirichlet BCs on the solution if (feenox.pde.phi_bc == NULL) { feenox_check_alloc(feenox.pde.phi_bc = feenox_problem_create_vector("phi_bc")); } feenox_call(feenox_problem_dirichlet_eval()); feenox_call(VecCopy(phi, feenox.pde.phi_bc)); feenox_call(feenox_problem_dirichlet_set_phi(feenox.pde.phi_bc)); // build the jacobian feenox_call(feenox_problem_phi_to_solution(feenox.pde.phi_bc)); feenox_call(feenox_problem_build()); // multiply K by phi_bc petsc_call(MatMult(feenox.pde.K, feenox.pde.phi_bc, r)); // subtract b petsc_call(VecAXPY(r, -1.0, feenox.pde.b)); // set dirichlet BCs on the residual feenox_call(feenox_problem_dirichlet_set_r(r, phi)); /* printf("solution\n"); VecView(phi, PETSC_VIEWER_STDOUT_SELF); printf("residual\n"); VecView(r, PETSC_VIEWER_STDOUT_SELF); */ return FEENOX_OK; } PetscErrorCode feenox_snes_jacobian(SNES snes,Vec phi, Mat J_snes, Mat P, void *ctx) { // J_snes = (K + JK - Jb)_bc // TODO: we want SAME_NONZERO_PATTERN! petsc_call(MatAssemblyBegin(feenox.pde.K, MAT_FINAL_ASSEMBLY)); petsc_call(MatAssemblyEnd(feenox.pde.K, MAT_FINAL_ASSEMBLY)); petsc_call(MatAssemblyBegin(J_snes, MAT_FINAL_ASSEMBLY)); petsc_call(MatAssemblyEnd(J_snes, MAT_FINAL_ASSEMBLY)); petsc_call(MatCopy(feenox.pde.K, J_snes, DIFFERENT_NONZERO_PATTERN)); if (feenox.pde.has_jacobian_K) { petsc_call(MatAXPY(J_snes, +1.0, feenox.pde.JK, DIFFERENT_NONZERO_PATTERN)); } if (feenox.pde.has_jacobian_b) { petsc_call(MatAXPY(J_snes, -1.0, feenox.pde.Jb, DIFFERENT_NONZERO_PATTERN)); } feenox_call(feenox_problem_dirichlet_set_J(J_snes)); /* printf("jacobian\n"); MatView(J_snes, PETSC_VIEWER_STDOUT_SELF); */ return FEENOX_OK; } PetscErrorCode feenox_snes_monitor(SNES snes, PetscInt n, PetscReal rnorm, void *dummy) { if (feenox.pde.progress_r0 == 0) { feenox.pde.progress_r0 = rnorm; } double current_progress = (rnorm > 1e-20) ? log((rnorm/feenox.pde.progress_r0))/log(feenox_var_value(feenox.pde.vars.ksp_rtol)) : 1; if (current_progress > 1) { current_progress = 1; } if (feenox.pde.progress_ascii == PETSC_TRUE) { size_t i = 0; for (i = (size_t)(100*feenox.pde.progress_last); i < (size_t)(100*current_progress); i++) { printf(CHAR_PROGRESS_SOLVE); fflush(stdout); } feenox.pde.progress_last = current_progress; } return 0; } #endif feenox-1.1/src/pdes/petsc_ksp.c0000644000175000017500000002375614773607165013476 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's linear solver using PETSc routines * * Copyright (C) 2015--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_problem_solve_petsc_linear(void) { #ifdef HAVE_PETSC // build --------------------------------------------------------------------- petsc_call(PetscLogStagePush(feenox.pde.stage_build)); feenox_call(feenox_problem_build()); feenox_call(feenox_problem_dirichlet_eval()); feenox_call(feenox_problem_dirichlet_set_K()); petsc_call(PetscLogStagePop()); // --------------------------------------------------------------------------- if (feenox.pde.missed_dump != NULL) { feenox_call(feenox_instruction_dump(feenox.pde.missed_dump)); } // solve --------------------------------------------------------------------- petsc_call(PetscLogStagePush(feenox.pde.stage_solve)); // create a KSP object if needed if (feenox.pde.ksp == NULL) { petsc_call(KSPCreate(PETSC_COMM_WORLD, &feenox.pde.ksp)); // set the monitor for the ascii progress if (feenox.pde.progress_ascii == PETSC_TRUE) { petsc_call(KSPMonitorSet(feenox.pde.ksp, feenox_problem_ksp_monitor, NULL, 0)); } petsc_call(KSPSetOperators(feenox.pde.ksp, feenox.pde.K_bc, feenox.pde.K_bc)); feenox_call(feenox_problem_setup_ksp(feenox.pde.ksp)); } // check if the stiffness matrix K has a near nullspace // and pass it on to K_bc MatNullSpace near_null_space = NULL; petsc_call(MatGetNearNullSpace(feenox.pde.K, &near_null_space)); if (near_null_space != NULL) { petsc_call(MatSetNearNullSpace(feenox.pde.K_bc, near_null_space)); } // try to use the solution as the initial guess (it already has Dirichlet BCs // but in quasi-static it has the previous solution which should be similar) // mumps cannot be used with a non-zero guess /* if ((feenox.pde.ksp_type == NULL || strcasecmp(feenox.pde.ksp_type, "mumps") != 0) && (feenox.pde.pc_type == NULL || strcasecmp(feenox.pde.pc_type, "mumps") != 0)) { petsc_call(KSPSetInitialGuessNonzero(feenox.pde.ksp, PETSC_TRUE)); } */ feenox.pde.progress_last = 0; // do the work! if (feenox.pde.do_not_solve == 0) { petsc_call(KSPSolve(feenox.pde.ksp, feenox.pde.b_bc, feenox.pde.phi)); // check for convergence KSPConvergedReason reason = 0; petsc_call(KSPGetConvergedReason(feenox.pde.ksp, &reason)); if (reason < 0) { // if the input file asks for a DUMP then we do it now if (feenox.pde.dumps != NULL) { feenox_instruction_dump((void *)feenox.pde.dumps); } feenox_push_error_message("PETSc's linear solver did not converge with reason '%s' (%d)", KSPConvergedReasons[reason], reason); // TODO: dive into the PC return FEENOX_ERROR; } } // finish the progress line if (feenox.pde.progress_ascii == PETSC_TRUE) { if (feenox.mpi_size == 1) { int i = 0; for (i = (int)(100*feenox.pde.progress_last); i < 100; i++) { printf(CHAR_PROGRESS_SOLVE); } } if (feenox.mpi_rank == 0) { printf("\n"); fflush(stdout); } } petsc_call(PetscLogStagePop()); // --------------------------------------------------------------------------- #endif return FEENOX_OK; } #ifdef HAVE_PETSC PetscErrorCode feenox_problem_ksp_monitor(KSP ksp, PetscInt n, PetscReal rnorm, void *dummy) { // feenox_value(feenox.pde.vars.iterations) = (double)n; // feenox_var_value(feenox.pde.vars.residual_norm) = rnorm; int i; double current_progress; if (feenox.mpi_rank == 0) { if (feenox.pde.progress_r0 == 0) { feenox.pde.progress_r0 = rnorm; } if (rnorm < 1e-20) { current_progress = 1; } else { current_progress = log((rnorm/feenox.pde.progress_r0))/log(feenox_var_value(feenox.pde.vars.ksp_rtol)); if (current_progress > 1) { current_progress = 1; } } // printf("%d %e %.0f\n", n, rnorm/r0, 100*current_progress); if (feenox.pde.progress_ascii == PETSC_TRUE) { if (feenox.pde.progress_last < current_progress) { for (i = (int)(100*feenox.pde.progress_last); i < (int)(100*current_progress); i++) { printf(CHAR_PROGRESS_SOLVE); fflush(stdout); } feenox.pde.progress_last = current_progress; } } } return 0; } int feenox_problem_setup_ksp(KSP ksp) { // the KSP type #ifdef PETSC_HAVE_MUMPS if ((feenox.pde.ksp_type != NULL && strcasecmp(feenox.pde.ksp_type, "mumps") == 0) || (feenox.pde.pc_type != NULL && strcasecmp(feenox.pde.pc_type, "mumps") == 0)) { // mumps is a particular case, see feenox_problem_setup_pc petsc_call(KSPSetType(ksp, KSPPREONLY)); } else if (feenox.pde.ksp_type != NULL) { #else if (feenox.pde.ksp_type != NULL) { #endif petsc_call(KSPSetType(ksp, feenox.pde.ksp_type)); } if (feenox.pde.setup_ksp != NULL) { feenox_call(feenox.pde.setup_ksp(ksp)); } if (feenox.pde.symmetric_K) { // K is symmetric. Set symmetric flag to enable ICC/Cholesky preconditioner // TODO: this is K for ksp but J for snes if (feenox.pde.has_stiffness) { if (feenox.pde.K != NULL) { petsc_call(MatSetOption(feenox.pde.K, MAT_SYMMETRIC, PETSC_TRUE)); petsc_call(MatSetOption(feenox.pde.K, MAT_SPD, PETSC_TRUE)); } if (feenox.pde.K_bc != NULL) { petsc_call(MatSetOption(feenox.pde.K_bc, MAT_SYMMETRIC, PETSC_TRUE)); petsc_call(MatSetOption(feenox.pde.K_bc, MAT_SPD, PETSC_TRUE)); } } if (feenox.pde.has_mass) { if (feenox.pde.M != NULL) { petsc_call(MatSetOption(feenox.pde.M, MAT_SYMMETRIC, PETSC_TRUE)); petsc_call(MatSetOption(feenox.pde.M, MAT_SPD, PETSC_TRUE)); } if (feenox.pde.M_bc != NULL) { petsc_call(MatSetOption(feenox.pde.M_bc, MAT_SYMMETRIC, PETSC_TRUE)); } } if (feenox.pde.has_jacobian_K) { if (feenox.pde.JK != NULL) { petsc_call(MatSetOption(feenox.pde.JK, MAT_SYMMETRIC, PETSC_TRUE)); petsc_call(MatSetOption(feenox.pde.JK, MAT_SPD, PETSC_TRUE)); } } if (feenox.pde.has_jacobian_b) { if (feenox.pde.Jb != NULL) { petsc_call(MatSetOption(feenox.pde.Jb, MAT_SYMMETRIC, PETSC_TRUE)); petsc_call(MatSetOption(feenox.pde.Jb, MAT_SPD, PETSC_TRUE)); } } } petsc_call(KSPSetTolerances(ksp, feenox_var_value(feenox.pde.vars.ksp_rtol), feenox_var_value(feenox.pde.vars.ksp_atol), feenox_var_value(feenox.pde.vars.ksp_divtol), (PetscInt)feenox_var_value(feenox.pde.vars.ksp_max_it))); PC pc = NULL; petsc_call(KSPGetPC(ksp, &pc)); if (pc == NULL) { feenox_push_error_message("cannot get preconditioner object"); return FEENOX_ERROR; } feenox_call(feenox_problem_setup_pc(pc)); // read command-line options petsc_call(KSPSetFromOptions(ksp)); return FEENOX_OK; } int feenox_problem_setup_pc(PC pc) { // if we were asked for mumps, then either LU o cholesky needs to be used // and MatSolverType to mumps #ifdef PETSC_HAVE_MUMPS if ((feenox.pde.ksp_type != NULL && strcasecmp(feenox.pde.ksp_type, "mumps") == 0) || (feenox.pde.pc_type != NULL && strcasecmp(feenox.pde.pc_type, "mumps") == 0)) { #if PETSC_VERSION_GT(3,9,0) // need to set this guy otherwise PCFactorSetMatSolverType does not work petsc_call(PCSetType(pc, feenox.pde.symmetric_K ? PCCHOLESKY : PCLU)); petsc_call(PCFactorSetMatSolverType(pc, MATSOLVERMUMPS)); #else feenox_push_error_message("MUMPS solver needs at least PETSc 3.9"); return FEENOX_ERROR; #endif } else { #endif if (feenox.pde.pc_type != NULL) { petsc_call(PCSetType(pc, feenox.pde.pc_type)); } #ifdef PETSC_HAVE_MUMPS } #endif if (feenox.pde.setup_pc != NULL) { feenox_call(feenox.pde.setup_pc(pc)); } // if using MUMPS, set icntl if needed #ifdef PETSC_HAVE_MUMPS #ifdef HAVE_SLEPC // in EPS we need to set the ST type to create it, otherwise the icntls do not work if (feenox.pde.eps != NULL) { ST st = NULL; petsc_call(EPSGetST(feenox.pde.eps, &st)); STType st_type = NULL; petsc_call(STGetType(st, &st_type)); if (st_type == NULL) { feenox_push_error_message("internal error, ST type is not set"); return FEENOX_ERROR; } // force creation of the operator petsc_call(STGetOperator(st, NULL)); } #endif MatSolverType mat_solver_type = NULL; petsc_call(PCFactorGetMatSolverType(pc, &mat_solver_type)); if (mat_solver_type != NULL && strcmp(mat_solver_type, MATSOLVERMUMPS) == 0) { if (feenox_var_value(feenox.pde.vars.mumps_icntl_14) != 0) { #if PETSC_VERSION_LT(3,20,0) petsc_call(PCSetUp(pc)); #endif Mat F; petsc_call(PCFactorGetMatrix(pc, &F)); petsc_call(MatMumpsSetIcntl(F, 14, (PetscInt)feenox_var_value(feenox.pde.vars.mumps_icntl_14))); } } #endif PCType pc_type; petsc_call(PCGetType(pc, &pc_type)); if (pc_type != NULL && strcmp(pc_type, PCGAMG) == 0) { petsc_call(PCGAMGSetThreshold(pc, &feenox_var_value(feenox.pde.vars.gamg_threshold), 1)); } // read command-line options petsc_call(PCSetFromOptions(pc)); return FEENOX_OK; } #endif feenox-1.1/src/pdes/parse.c0000644000175000017500000000430614773607166012604 00000000000000// automatically generated by autogen.sh on Thu Apr 3 07:40:54 PM -03 2025 #include "feenox.h" int feenox_pde_parse_problem_type(const char *token) { ///kw_pde+PROBLEM+desc Ask FeenoX to solve a partial differential equation problem. ///kw_pde+PROBLEM+usage PROBLEM ///kw_pde+PROBLEM+detail Currently, FeenoX can solve the following types of PDE-casted problems: ///kw_pde+PROBLEM+detail @ ///kw_pde+PROBLEM+usage { laplace if (strcasecmp(token, "laplace") == 0) { feenox.pde.parse_problem = feenox_problem_parse_problem_laplace; ///kw_pde+PROBLEM+usage | mechanical } else if (strcasecmp(token, "mechanical") == 0) { feenox.pde.parse_problem = feenox_problem_parse_problem_mechanical; ///kw_pde+PROBLEM+usage | modal } else if (strcasecmp(token, "modal") == 0) { feenox.pde.parse_problem = feenox_problem_parse_problem_modal; ///kw_pde+PROBLEM+usage | neutron_diffusion ///kw_pde+PROBLEM+detail * `neutron_diffusion` multi-group core-level neutron diffusion with a FEM formulation } else if (strcasecmp(token, "neutron_diffusion") == 0) { feenox.pde.parse_problem = feenox_problem_parse_problem_neutron_diffusion; ///kw_pde+PROBLEM+usage | neutron_sn ///kw_pde+PROBLEM+detail * `neutron_sn` multi-group core-level neutron transport using ///kw_pde+PROBLEM+detail - discrete ordinates $S_N$ for angular discretization, and ///kw_pde+PROBLEM+detail - isoparametric finite elements for spatial discretization. } else if (strcasecmp(token, "neutron_sn") == 0) { feenox.pde.parse_problem = feenox_problem_parse_problem_neutron_sn; ///kw_pde+PROBLEM+usage | thermal } else if (strcasecmp(token, "thermal") == 0) { feenox.pde.parse_problem = feenox_problem_parse_problem_thermal; } else { feenox_push_error_message("unknown problem type '%s'", token); return FEENOX_ERROR; } ///kw_pde+PROBLEM+usage }@ ///kw_pde+PROBLEM+detail @ ///kw_pde+PROBLEM+detail > If you are a programmer and want to contribute with another problem type, please do so! ///kw_pde+PROBLEM+detail > Check out the [programming guide in the FeenoX repository](https://github.com/seamplex/feenox/blob/main/doc/programming.md). ///kw_pde+PROBLEM+detail @ return FEENOX_OK; } feenox-1.1/src/pdes/thermal/0000755000175000017500000000000014773607300013025 500000000000000feenox-1.1/src/pdes/thermal/heatflux.c0000644000175000017500000000532414773607165014746 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for the heat equation: computation of heat fluxes * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "thermal.h" int feenox_problem_gradient_fill_thermal(void) { feenox_call(feenox_problem_fill_aux_solution(thermal.qx)); if (feenox.pde.dim > 1) { feenox_call(feenox_problem_fill_aux_solution(thermal.qy)); if (feenox.pde.dim > 2) { feenox_call(feenox_problem_fill_aux_solution(thermal.qz)); } } return FEENOX_OK; } // used only in rough int feenox_problem_gradient_properties_at_element_nodes_thermal(element_t *element, mesh_t *mesh) { return FEENOX_OK; } int feenox_problem_gradient_fluxes_at_node_alloc_thermal(node_t *node) { if (node->flux == NULL) { feenox_check_alloc(node->flux = calloc(feenox.pde.dim, sizeof(double))); } else { for (unsigned int d = 0; d < feenox.pde.dim; d++) { node->flux[d] = 0; } } return FEENOX_OK; } int feenox_problem_gradient_add_elemental_contribution_to_node_thermal(node_t *node, element_t *element, unsigned int j, double rel_weight) { double heat_flux = 0; double k = thermal.k.eval(&thermal.k, node->x, element->physical_group->material); for (unsigned int d = 0; d < feenox.pde.dim; d++) { heat_flux = -k * gsl_matrix_get(element->dphidx_node[j], 0, d); node->flux[d] += rel_weight * (heat_flux - node->flux[d]); } return FEENOX_OK; } int feenox_problem_gradient_fill_fluxes_thermal(mesh_t *mesh, size_t j) { // TODO: wrappers so pdes don't have to access the vectors feenox_vector_set(thermal.qx->vector_value, j, mesh->node[j].flux[0]); if (feenox.pde.dim > 1) { feenox_vector_set(thermal.qy->vector_value, j, mesh->node[j].flux[1]); if (feenox.pde.dim > 2) { feenox_vector_set(thermal.qz->vector_value, j, mesh->node[j].flux[2]); } } // TODO: uncertainties return FEENOX_OK; } feenox-1.1/src/pdes/thermal/parser.c0000644000175000017500000000513114773607165014416 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX parser for thermal-specific keywords * * Copyright (C) 2023 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms "of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "../../parser/parser.h" #include "thermal.h" int feenox_problem_parse_problem_thermal(const char *token) { ///kw_pde+PROBLEM+detail * `thermal` solves the heat conduction problem. // no need to parse anything; if (token != NULL) { feenox_push_error_message("undefined keyword '%s'", token); return FEENOX_ERROR; } else { // if token is NULL we have to do the parse-time initialization feenox_call(feenox_problem_parse_time_init_thermal()); } return FEENOX_OK; } int feenox_problem_parse_write_post_thermal(mesh_write_t *mesh_write, const char *token) { if (strcmp(token, "all") == 0) { feenox_call(feenox_problem_parse_write_post_thermal(mesh_write, "temperature")); feenox_call(feenox_problem_parse_write_post_thermal(mesh_write, "heat_flux")); } else if (strcmp(token, "temperature") == 0 || strcmp(token, "T") == 0) { feenox_call(feenox_add_post_field(mesh_write, 1, &feenox.pde.solution[0]->name, NULL, field_location_nodes)); } else if (strcmp(token, "heat_flux") == 0 || strcmp(token, "heat_fluxes") == 0) { char *tokens[3] = {NULL, NULL, NULL}; tokens[0] = strdup((0 < feenox.pde.dim) ? thermal.qx->name : "0"); tokens[1] = strdup((1 < feenox.pde.dim) ? thermal.qy->name : "0"); tokens[2] = strdup((2 < feenox.pde.dim) ? thermal.qz->name : "0"); feenox_call(feenox_add_post_field(mesh_write, 3, tokens, "heat_flux", field_location_nodes)); for (unsigned int m = 0; m < 3; m++) { feenox_free(tokens[m]); } } else { feenox_push_error_message("undefined keyword '%s' for thermal WRITE_RESULTS", token); return FEENOX_ERROR; } return FEENOX_OK; } feenox-1.1/src/pdes/thermal/post.c0000644000175000017500000000313514773607165014111 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for the heat equation: post * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "thermal.h" // TODO: move to heatflux int feenox_problem_solve_post_thermal(void) { if (thermal.T_max->used == 0 && thermal.T_min->used == 0) { return FEENOX_OK; } double T = 0; feenox_var_value(thermal.T_max) = -INFTY; feenox_var_value(thermal.T_min) = +INFTY; for (size_t j = 0; j < feenox.pde.mesh->n_nodes; j++) { T = feenox_vector_get(feenox.pde.solution[0]->vector_value, j); if (T > feenox_var_value(thermal.T_max)) { feenox_var_value(thermal.T_max) = T; } if (T < feenox_var_value(thermal.T_min)) { feenox_var_value(thermal.T_min) = T; } } return FEENOX_OK; } feenox-1.1/src/pdes/thermal/thermal.h0000644000175000017500000000452514773607165014571 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for the heat equation: global header * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef THERMAL_H #define THERMAL_H #define BC_TYPE_THERMAL_UNDEFINED 0 #define BC_TYPE_THERMAL_TEMPERATURE 1 #define BC_TYPE_THERMAL_HEATFLUX 2 #define BC_TYPE_THERMAL_CONVECTION_COEFFICIENT 3 #define BC_TYPE_THERMAL_CONVECTION_TEMPERATURE 4 typedef struct thermal_t thermal_t; struct thermal_t { distribution_t k; // isotropic conductivity distribution_t kx, ky, kz; // orthotropic conductivity distribution_t q; // volumetric heat source distribution_t kappa; // thermal diffusivity = k/(rho cp) distribution_t rho; // density distribution_t cp; // heat capacity distribution_t rhocp; // density times heat capacity int space_dependent_stiffness; int temperature_dependent_stiffness; int space_dependent_mass; int temperature_dependent_mass; int space_dependent_source; int temperature_dependent_source; int space_dependent_bc; int temperature_dependent_bc; double guessed_initial_guess; int n_bc_temperatures; // heat fluxes function_t *qx; function_t *qy; function_t *qz; // extrema var_t *T_max; var_t *T_min; // caches for uniform properties struct { double k; double kx, ky, kz; double q; double kappa; double rho; double cp; double rhocp; } cache; }; extern thermal_t thermal; #endif /* THERMAL_H */ feenox-1.1/src/pdes/thermal/init.c0000644000175000017500000004162114773607165014071 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for the heat equation: initialization * * Copyright (C) 2021-2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "thermal.h" thermal_t thermal; int feenox_problem_parse_time_init_thermal(void) { #ifdef HAVE_PETSC // virtual methods feenox.pde.parse_bc = feenox_problem_bc_parse_thermal; feenox.pde.parse_write_results = feenox_problem_parse_write_post_thermal; feenox.pde.init_before_run = feenox_problem_init_runtime_thermal; feenox.pde.setup_ksp = feenox_problem_setup_ksp_thermal; feenox.pde.setup_pc = feenox_problem_setup_pc_thermal; feenox.pde.element_build_volumetric_at_gauss = feenox_problem_build_volumetric_gauss_point_thermal; feenox.pde.solve_post = feenox_problem_solve_post_thermal; feenox.pde.gradient_fill = feenox_problem_gradient_fill_thermal; feenox.pde.gradient_nodal_properties = feenox_problem_gradient_properties_at_element_nodes_thermal; feenox.pde.gradient_alloc_nodal_fluxes = feenox_problem_gradient_fluxes_at_node_alloc_thermal; feenox.pde.gradient_add_elemental_contribution_to_node = feenox_problem_gradient_add_elemental_contribution_to_node_thermal; feenox.pde.gradient_fill_fluxes = feenox_problem_gradient_fill_fluxes_thermal; // we are FEM feenox.mesh.default_field_location = field_location_nodes; // thermal is a scalar problem feenox.pde.dofs = 1; ///re_thermal+T+description The temperature field\ $T(\vec{x})$. This is the primary unknown of the problem. feenox_check_alloc(feenox.pde.unknown_name = calloc(feenox.pde.dofs, sizeof(char *))); feenox_check_alloc(feenox.pde.unknown_name[0] = strdup("T")); // heat fluxes ///re_thermal+qx+description The heat flux field\ $q_x(\vec{x}) = -k(\vec{x}) \cdot \frac{\partial T}{\partial x}$ in the\ $x$ direction. This is a secondary unknown of the problem. ///re_thermal+qy+description The heat flux field\ $q_y(\vec{x}) = -k(\vec{x}) \cdot \frac{\partial T}{\partial y}$ in the\ $x$ direction. This is a secondary unknown of the problem. ///re_thermal+qy+description Only available for two and three-dimensional problems. ///re_thermal+qz+description The heat flux field\ $q_z(\vec{x}) = -k(\vec{x}) \cdot \frac{\partial T}{\partial z}$ in the\ $x$ direction. This is a secondary unknown of the problem. ///re_thermal+qz+description Only available for three-dimensional problems. feenox_call(feenox_problem_define_solution_function("qx", &thermal.qx, FEENOX_SOLUTION_GRADIENT)); if (feenox.pde.dim > 1) { feenox_call(feenox_problem_define_solution_function("qy", &thermal.qy, FEENOX_SOLUTION_GRADIENT)); if (feenox.pde.dim > 2) { feenox_call(feenox_problem_define_solution_function("qz", &thermal.qz, FEENOX_SOLUTION_GRADIENT)); } } ///pr_thermal+T_0+description The initial condition for the temperature in transient problems. ///pr_thermal+T_0+description If not given, a steady-steady computation at $t=0$ is performed. ///pr_thermal+T_guess+description The initial guess for the temperature in steady-state problems. ///pr_thermal+T_guess+description If not given, a uniform distribution equal to the the average ///pr_thermal+T_guess+description of all the temperature appearing in boundary conditions is used. ///va_thermal+T_max+detail The maximum temperature\ $T_\text{max}$. feenox_check_null(thermal.T_max = feenox_define_variable_get_ptr("T_max")); ///va_thermal+T_min+detail The minimum temperature\ $T_\text{min}$. feenox_check_null(thermal.T_min = feenox_define_variable_get_ptr("T_min")); #endif return FEENOX_OK; } int feenox_problem_init_runtime_thermal(void) { #ifdef HAVE_PETSC // we are FEM not FVM feenox.pde.mesh->data_type = data_type_node; feenox.pde.spatial_unknowns = feenox.pde.mesh->n_nodes; // check if we were given an initial guess if ((feenox.pde.initial_guess = feenox_get_function_ptr("T_guess")) != NULL) { if (feenox.pde.initial_guess->n_arguments != feenox.pde.dim) { feenox_push_error_message("initial guess function T_guess ought to have %d arguments instead of %d", feenox.pde.dim, feenox.pde.initial_guess->n_arguments); return FEENOX_ERROR; } } // check if we were given an initial solution if ((feenox.pde.initial_condition = feenox_get_function_ptr("T_0")) != NULL) { if (feenox.pde.initial_condition->n_arguments != feenox.pde.dim) { feenox_push_error_message("initial condition function T_0 ought to have %d arguments instead of %d", feenox.pde.dim, feenox.pde.initial_condition->n_arguments); return FEENOX_ERROR; } } // initialize distributions // here we just initialize everything, during build we know which // of them are mandatory and which are optional ///pr_thermal+k+usage k ///pr_thermal+k+description The thermal conductivity in units of power per length per degree of temperature. ///pr_thermal+k+description This property is mandatory. feenox_distribution_define_mandatory(thermal, k, "k", "thermal conductivity"); thermal.k.non_uniform = feenox_depends_on_space(thermal.k.dependency_variables); thermal.k.non_linear = feenox_depends_on_function(thermal.k.dependency_functions, feenox.pde.solution[0]); // TODO: orthotropic heat conduction ///pr_thermal+q'''+usage q''' ///pr_thermal+q'''+description The volumetric power dissipated in the material in units of power per unit of volume. ///pr_thermal+q'''+description Default is zero (i.e. no power). feenox_call(feenox_distribution_init(&thermal.q, "q'''")); if (thermal.q.defined == 0) { ///pr_thermal+q+usage q ///pr_thermal+q+description Alias for `q'''` feenox_call(feenox_distribution_init(&thermal.q, "q")); } thermal.q.non_uniform = feenox_depends_on_space(thermal.q.dependency_variables); thermal.q.non_linear = feenox_depends_on_function(thermal.q.dependency_functions, feenox.pde.solution[0]); feenox.pde.has_mass = (feenox_var_value(feenox_special_var(end_time)) > 0); if (feenox.pde.has_mass) { ///pr_thermal+kappa+usage kappa ///pr_thermal+kappa+description Thermal diffusivity in units of area per unit of time. ///pr_thermal+kappa+description Equal to $k / (\rho c_p)$, the thermal conductivity `k` divided by the density `rho` and specific heat capacity `cp`. ///pr_thermal+kappa+description Either `kappa`, `rhocp` or both `rho` and `cp` are needed for transient feenox_call(feenox_distribution_init(&thermal.kappa, "kappa")); if (thermal.kappa.defined == 0) { ///pr_thermal+rhocp+usage rhocp ///pr_thermal+rhocp+description Product of the density `rho` times the specific heat capacity `cp`, ///pr_thermal+rhocp+description in units of energy per unit of volume per degree of temperature. ///pr_thermal+rhocp+description Either `kappa`, `rhocp` or both `rho` and `cp` are needed for transient feenox_call(feenox_distribution_init(&thermal.rhocp, "rhocp")); if (thermal.rhocp.defined == 0) { ///pr_thermal+rho+usage rho ///pr_thermal+rho+description Density in units of mass per unit of volume. ///pr_thermal+rho+description Either `kappa`, `rhocp` or both `rho` and `cp` are needed for transient feenox_call(feenox_distribution_init(&thermal.rho, "rho")); ///pr_thermal+cp+usage cp ///pr_thermal+cp+description Specific heat in units of energy per unit of mass per degree of temperature. ///pr_thermal+cp+description Either `kappa`, `rhocp` or both `rho` and `cp` are needed for transient feenox_call(feenox_distribution_init(&thermal.cp, "cp")); if (thermal.rho.defined == 0 || thermal.cp.defined == 0) { feenox_push_error_message("either 'kappa', 'rhocp' or both 'rho' and 'cp' are needed for transient"); return FEENOX_ERROR; } if (thermal.rho.full == 0 || thermal.cp.full == 0) { feenox_push_error_message("either 'rho' or 'cp' is not defined over all volumes"); return FEENOX_ERROR; } } else if (thermal.rhocp.full == 0) { feenox_push_error_message("product 'rhocp' is not defined over all volumes"); return FEENOX_ERROR; } } else if (thermal.kappa.full == 0) { feenox_push_error_message("thermal diffusivity 'kappa' is not defined over all volumes"); return FEENOX_ERROR; } } thermal.kappa.non_uniform = feenox_depends_on_space(thermal.kappa.dependency_variables); thermal.rho.non_uniform = feenox_depends_on_space(thermal.rho.dependency_variables); thermal.cp.non_uniform = feenox_depends_on_space(thermal.cp.dependency_variables); thermal.rhocp.non_uniform = feenox_depends_on_space(thermal.rhocp.dependency_variables); thermal.kappa.non_linear = feenox_depends_on_function(thermal.kappa.dependency_functions, feenox.pde.solution[0]); thermal.rho.non_linear = feenox_depends_on_function(thermal.rho.dependency_functions, feenox.pde.solution[0]); thermal.cp.non_linear = feenox_depends_on_function(thermal.cp.dependency_functions, feenox.pde.solution[0]); thermal.rhocp.non_linear = feenox_depends_on_function(thermal.rhocp.dependency_functions, feenox.pde.solution[0]); thermal.space_dependent_stiffness = thermal.k.non_uniform || thermal.kx.non_uniform || thermal.ky.non_uniform || thermal.kz.non_uniform; thermal.space_dependent_source = thermal.q.non_uniform; thermal.space_dependent_mass = thermal.kappa.non_uniform || thermal.rho.non_uniform || thermal.cp.non_uniform || thermal.rhocp.non_uniform; thermal.temperature_dependent_source = thermal.q.non_linear; thermal.temperature_dependent_stiffness = feenox_depends_on_function(thermal.k.dependency_functions, feenox.pde.solution[0]) || feenox_depends_on_function(thermal.kx.dependency_functions, feenox.pde.solution[0]) || feenox_depends_on_function(thermal.ky.dependency_functions, feenox.pde.solution[0]) || feenox_depends_on_function(thermal.kz.dependency_functions, feenox.pde.solution[0]); thermal.temperature_dependent_mass = feenox_depends_on_function(thermal.kappa.dependency_functions, feenox.pde.solution[0]) || feenox_depends_on_function(thermal.rho.dependency_functions, feenox.pde.solution[0]) || feenox_depends_on_function(thermal.cp.dependency_functions, feenox.pde.solution[0]) || feenox_depends_on_function(thermal.rhocp.dependency_functions, feenox.pde.solution[0]); // check BCs are consistent bc_t *bc = NULL; bc_t *bc_tmp = NULL; HASH_ITER(hh, feenox.mesh.bcs, bc, bc_tmp) { int first_type_math = bc_type_math_undefined; bc_data_t *bc_data = NULL; bc_data_t *bc_data_tmp = NULL; DL_FOREACH_SAFE(bc->bc_datums, bc_data, bc_data_tmp) { // this is general, maybe we can put it in a non-virtual method if (first_type_math == bc_type_math_undefined) { first_type_math = bc_data->type_math; } else if (first_type_math != bc_data->type_math) { feenox_push_error_message("BCs of different types cannot be mixed '%s' and '%s'", bc->bc_datums->string, bc_data->string); return FEENOX_ERROR; } // convection (i.e. Robin) BCs have two arguments h and Tref, // we need to check they both are given (and only these two and nothing more) if (bc_data->type_math == bc_type_math_robin) { // first, check that there are only two bc_datums // utlist's doubly-linked lists work like this, sorry! if (bc_data == bc->bc_datums && bc_data->next == NULL) { feenox_push_error_message("both 'h' and 'Tref' have to be given in the same BC line"); return FEENOX_ERROR; } else if (!(bc_data->prev == bc_data->next || bc_data->next == NULL)) { feenox_push_error_message("only 'h' and 'Tref' have to be given in the same BC line"); return FEENOX_ERROR; } // check we have one h and one Tref if (bc_data == bc->bc_datums) { if ((bc_data->type_phys == BC_TYPE_THERMAL_CONVECTION_COEFFICIENT && bc_data->next->type_phys == BC_TYPE_THERMAL_CONVECTION_COEFFICIENT) || (bc_data->type_phys == BC_TYPE_THERMAL_CONVECTION_TEMPERATURE && bc_data->next->type_phys == BC_TYPE_THERMAL_CONVECTION_TEMPERATURE)) { feenox_push_error_message("convection BC needs one 'h' and one 'Tref' in the same BC line"); return FEENOX_ERROR; } } else if (bc_data->next == NULL) { // mark the second as disabled so only the first one is processed bc_data->disabled = 1; } else { feenox_push_error_message("internal mismatch in convection BC"); return FEENOX_ERROR; } } bc_data->space_dependent = feenox_depends_on_space(bc_data->expr.variables); thermal.space_dependent_bc |= bc_data->space_dependent; bc_data->nonlinear = feenox_depends_on_function(bc_data->expr.functions, feenox.pde.solution[0]); thermal.temperature_dependent_bc |= bc_data->nonlinear; } } // if there is no initial guess, make up one if (feenox.pde.initial_guess == NULL && thermal.n_bc_temperatures != 0) { // average BC temperatures thermal.guessed_initial_guess /= thermal.n_bc_temperatures; if (feenox.pde.initial_guess == NULL) { feenox_check_null(feenox.pde.initial_guess = feenox_define_function_get_ptr("T_guess", feenox.pde.dim)); feenox_call(feenox_function_set_argument_variable("T_guess", 0, "x")); if (feenox.pde.dim > 1) { feenox_call(feenox_function_set_argument_variable("T_guess", 1, "y")); if (feenox.pde.dim > 2) { feenox_call(feenox_function_set_argument_variable("T_guess", 2, "z")); } } } char *evaluated_temp = NULL; feenox_check_minusone(asprintf(&evaluated_temp, "%g", thermal.guessed_initial_guess)); feenox_call(feenox_function_set_expression("T_guess", evaluated_temp)); feenox_free(evaluated_temp); } if (feenox.pde.math_type == math_type_automatic) { feenox.pde.math_type = (thermal.temperature_dependent_stiffness == 0 && thermal.temperature_dependent_mass == 0 && thermal.temperature_dependent_source == 0 && thermal.temperature_dependent_bc == 0) ? math_type_linear : math_type_nonlinear; } // TODO: check for transient_type feenox.pde.solve = (feenox_special_var_value(end_time) > 0) ? feenox_problem_solve_petsc_transient : ((feenox.pde.math_type == math_type_linear) ? feenox_problem_solve_petsc_linear : feenox_problem_solve_petsc_nonlinear); feenox.pde.has_stiffness = 1; feenox.pde.has_rhs = 1; // has_mass is above feenox.pde.has_jacobian_K = thermal.temperature_dependent_stiffness; feenox.pde.has_jacobian_M = thermal.temperature_dependent_mass; feenox.pde.has_jacobian_b = (thermal.temperature_dependent_source || thermal.temperature_dependent_bc); feenox.pde.has_jacobian = feenox.pde.has_jacobian_K || feenox.pde.has_jacobian_M || feenox.pde.has_jacobian_b; // if the conductivity depends on temperature the jacobian is not symmetric feenox.pde.symmetric_K = !thermal.temperature_dependent_stiffness; feenox.pde.symmetric_M = 1; // see if we have to compute gradients feenox.pde.compute_gradients |= (thermal.qx != NULL && thermal.qx->used) || (thermal.qy != NULL && thermal.qy->used) || (thermal.qz != NULL && thermal.qz->used); #endif return FEENOX_OK; } #ifdef HAVE_PETSC int feenox_problem_setup_pc_thermal(PC pc) { PCType pc_type = NULL; petsc_call(PCGetType(pc, &pc_type)); if (pc_type == NULL) { petsc_call(PCSetType(pc, PCGAMG)); } return FEENOX_OK; } int feenox_problem_setup_ksp_thermal(KSP ksp ) { KSPType ksp_type = NULL; petsc_call(KSPGetType(ksp, &ksp_type)); if (ksp_type == NULL) { petsc_call(KSPSetType(ksp, KSPCG)); } return FEENOX_OK; } #endif feenox-1.1/src/pdes/thermal/bulk.c0000644000175000017500000000770214773607165014065 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for the heat equation: bulk elements * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "thermal.h" // TODO: put the gauss loop inside this call so we can cache number of nodes, etc int feenox_problem_build_volumetric_gauss_point_thermal(element_t *e, unsigned int q) { #ifdef HAVE_PETSC double *x = feenox_fem_compute_x_at_gauss_if_needed(e, q, feenox.pde.mesh->integration, thermal.space_dependent_stiffness || thermal.space_dependent_source || thermal.space_dependent_mass); material_t *material = feenox_fem_get_material(e); double k = thermal.k.eval(&thermal.k, x, material); double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, feenox.pde.mesh->integration); gsl_matrix *B = feenox_fem_compute_B_at_gauss_integration(e, q, feenox.pde.mesh->integration); feenox_call(feenox_blas_BtB_accum(B, wdet*k, feenox.fem.Ki)); // volumetric heat source term Ht*q // TODO: total source Q if (thermal.q.defined) { double power = thermal.q.eval(&thermal.q, x, material); feenox_call(feenox_problem_rhs_add(e, q, &power)); } if (feenox.pde.has_jacobian) { gsl_matrix *elemental_T = NULL; feenox_check_alloc(elemental_T = gsl_matrix_calloc(e->type->nodes, 1)); double T = 0; double Tj = 0; gsl_matrix *H = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); for (unsigned int j = 0; j < e->type->nodes; j++) { Tj = feenox_vector_get(feenox.pde.solution[0]->vector_value, e->node[j]->index_dof[0]); gsl_matrix_set(elemental_T, j, 0, Tj); T += gsl_matrix_get(H, 0, j) * Tj; } if (thermal.temperature_dependent_stiffness) { double dkdT = feenox_expression_derivative_wrt_function(thermal.k.expr, feenox.pde.solution[0], T); gsl_matrix *BtB = gsl_matrix_calloc(e->type->nodes, e->type->nodes); feenox_call(feenox_blas_BtB(B, 1.0, BtB)); feenox_call(feenox_blas_PtCB_accum(BtB, elemental_T, H, NULL, wdet*dkdT, feenox.fem.JKi)); gsl_matrix_free(BtB); } if (thermal.temperature_dependent_source) { double dqdT = feenox_expression_derivative_wrt_function(thermal.q.expr, feenox.pde.solution[0], T); // mind the positive sign! feenox_call(feenox_blas_BtB_accum(H, +wdet*dqdT, feenox.fem.Jbi)); } gsl_matrix_free(elemental_T); } // mass matrix Ht*rho*cp*H if (feenox.pde.has_mass) { double rhocp = 0; if (thermal.rhocp.defined) { rhocp = thermal.rhocp.eval(&thermal.rhocp, x, material); } else if (thermal.kappa.defined) { rhocp = k / thermal.kappa.eval(&thermal.kappa, x, material); } else if (thermal.rho.defined && thermal.cp.defined) { rhocp = thermal.rho.eval(&thermal.rho, x, material) * thermal.cp.eval(&thermal.cp, x, material); } else { // this should have been already checked feenox_push_error_message("no heat capacity found"); return FEENOX_ERROR; } gsl_matrix *H = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); feenox_call(feenox_blas_BtB_accum(H, wdet*rhocp, feenox.fem.Mi)); } #endif return FEENOX_OK; } feenox-1.1/src/pdes/thermal/methods.h0000644000175000017500000000503714773607165014577 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for the heat equation: virtual methods * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef THERMAL_METHODS_H #define THERMAL_METHODS_H // thermal/parser.c extern int feenox_problem_parse_problem_thermal(const char *token); extern int feenox_problem_parse_write_post_thermal(mesh_write_t *mesh_write, const char *token); // thermal/init.c extern int feenox_problem_parse_time_init_thermal(void); extern int feenox_problem_init_runtime_thermal(void); #ifdef HAVE_PETSC extern int feenox_problem_setup_pc_thermal(PC pc); extern int feenox_problem_setup_ksp_thermal(KSP ksp); #endif // thermal/bulk.c extern int feenox_problem_build_volumetric_gauss_point_thermal(element_t *element, unsigned int q); // thermal/bc.c extern int feenox_problem_bc_parse_thermal(bc_data_t *bc_data, const char *lhs, char *rhs); extern int feenox_problem_bc_set_thermal_temperature(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_thermal_heatflux(bc_data_t *bc_data, element_t *e, unsigned int q); extern int feenox_problem_bc_set_thermal_convection(bc_data_t *bc_data, element_t *e, unsigned int q); // thermal/heatflux.c extern int feenox_problem_gradient_fill_thermal(void); extern int feenox_problem_gradient_properties_at_element_nodes_thermal(element_t *element, mesh_t *mesh); extern int feenox_problem_gradient_fluxes_at_node_alloc_thermal(node_t *node); extern int feenox_problem_gradient_add_elemental_contribution_to_node_thermal(node_t *node, element_t *element, unsigned int j, double rel_weight); extern int feenox_problem_gradient_fill_fluxes_thermal(mesh_t *mesh, size_t j); // thermal/post.c extern int feenox_problem_solve_post_thermal(void); #endif feenox-1.1/src/pdes/thermal/bc.c0000644000175000017500000001542514773607165013515 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for the heat equation: boundary conditions * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "thermal.h" // this virtual method is called from the parser, it fills in the already-allocated // structure bc_data according to the two strings lhs=rhs, i.e. q=1 or T=1+x // note that h=a and Tref=b are handled by two bc_datas but linked together through next int feenox_problem_bc_parse_thermal(bc_data_t *bc_data, const char *lhs, char *rhs) { // TODO: document BCs with triple comments if (strcmp(lhs, "T") == 0) { // temperature bc_data->type_phys = BC_TYPE_THERMAL_TEMPERATURE; bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_thermal_temperature; } else if (strcmp(lhs, "q''") == 0 || strcmp(lhs, "q") == 0 || strcmp(lhs, "adiabatic") == 0) { // heat flux bc_data->type_phys = BC_TYPE_THERMAL_HEATFLUX; bc_data->type_math = bc_type_math_neumann; bc_data->set_natural = feenox_problem_bc_set_thermal_heatflux; } else if (strcmp(lhs, "h") == 0) { // heat flux bc_data->type_phys = BC_TYPE_THERMAL_CONVECTION_COEFFICIENT; bc_data->type_math = bc_type_math_robin; bc_data->set_natural = feenox_problem_bc_set_thermal_convection; bc_data->fills_matrix = 1; } else if (strcmp(lhs, "Tref") == 0 || strcmp(lhs, "T_ref") == 0 || strcmp(lhs, "Tinf") == 0 || strcmp(lhs, "T_inf") == 0) { // heat flux bc_data->type_phys = BC_TYPE_THERMAL_CONVECTION_TEMPERATURE; bc_data->type_math = bc_type_math_robin; bc_data->set_natural = feenox_problem_bc_set_thermal_convection; bc_data->fills_matrix = 1; } else { feenox_push_error_message("unknown thermal boundary condition '%s'", lhs); return FEENOX_ERROR; } feenox_call(feenox_expression_parse(&bc_data->expr, rhs)); // for non-linear problems it is important to have a good initial guess // if the user did not give us one in T_guess we average all the temperatures from the BCs if (bc_data->type_phys == BC_TYPE_THERMAL_TEMPERATURE || bc_data->type_phys == BC_TYPE_THERMAL_CONVECTION_TEMPERATURE ) { thermal.guessed_initial_guess += feenox_expression_eval(&bc_data->expr); thermal.n_bc_temperatures++; } bc_data->space_dependent = feenox_depends_on_space(bc_data->expr.variables); bc_data->nonlinear = feenox_depends_on_function(bc_data->expr.functions, feenox.pde.solution[0]); if (bc_data->nonlinear && bc_data->type_phys == BC_TYPE_THERMAL_TEMPERATURE) { feenox_push_error_message("essential boundary condition '%s' cannot depend on temperature", rhs); return FEENOX_ERROR; } // TODO: check that a single BC does not mix T and Tref return FEENOX_OK; } // this virtual method fills in the dirichlet indexes and values with bc_data int feenox_problem_bc_set_thermal_temperature(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC feenox_call(feenox_problem_dirichlet_add(j_global, 0, feenox_expression_eval(&this->expr))); // TODO: only in transient // feenox.pde.dirichlet_derivatives[*k] = feenox_expression_derivative_wrt_variable(&bc_data->expr, feenox_special_var(t), feenox_special_var_value(t)); #endif return FEENOX_OK; } // this virtual method builds the surface elemental matrix // TODO: one method for constant flux, one for temp, one for space int feenox_problem_bc_set_thermal_heatflux(bc_data_t *this, element_t *e, unsigned int q) { #ifdef HAVE_PETSC // TODO: cache if neither space nor temperature dependent double *x = feenox_fem_compute_x_at_gauss_if_needed_and_update_var(e, q, feenox.pde.mesh->integration, this->space_dependent); double power = feenox_expression_eval(&this->expr); feenox_call(feenox_problem_rhs_add(e, q, &power)); if (this->nonlinear) { double T = feenox_function_eval(feenox.pde.solution[0], x); double dqdT = feenox_expression_derivative_wrt_function(&this->expr, feenox.pde.solution[0], T); // mind the positive sign! gsl_matrix *H = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, feenox.pde.mesh->integration); feenox_call(feenox_blas_BtB_accum(H, +wdet*dqdT, feenox.fem.Jbi)); } #endif return FEENOX_OK; } // this virtual method builds the surface elemental matrix int feenox_problem_bc_set_thermal_convection(bc_data_t *this, element_t *e, unsigned int q) { #ifdef HAVE_PETSC // convection needs something in the next bc_data, if there is nothing then we are done if (this->next == NULL) { return FEENOX_OK; } feenox_fem_compute_x_at_gauss_if_needed_and_update_var(e, q, feenox.pde.mesh->integration, this->space_dependent); double h = 0; double Tref = 0; if (this->type_phys == BC_TYPE_THERMAL_CONVECTION_COEFFICIENT && this->next->type_phys == BC_TYPE_THERMAL_CONVECTION_TEMPERATURE) { h = feenox_expression_eval(&this->expr); Tref = feenox_expression_eval(&this->next->expr); } else if (this->type_phys == BC_TYPE_THERMAL_CONVECTION_TEMPERATURE && this->next->type_phys == BC_TYPE_THERMAL_CONVECTION_COEFFICIENT) { Tref = feenox_expression_eval(&this->expr); h = feenox_expression_eval(&this->next->expr); } else { feenox_push_error_message("convection condition needs h and Tref"); return FEENOX_ERROR; } // the h*Tref goes to b double rhs = h*Tref; feenox_call(feenox_problem_rhs_add(e, q, &rhs)); // TODO: the h*T goes directly to the stiffness matrix // this is not efficient because if h depends on t or T we might need to re-build the whole K double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, feenox.pde.mesh->integration); gsl_matrix *H = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); feenox_call(feenox_blas_BtB_accum(H, +wdet*h, feenox.fem.Ki)); #endif return FEENOX_OK; } // TODO: we can do something of the like for radiation but care // has to be taken regarding the units of the temperatures! feenox-1.1/src/pdes/laplace/0000755000175000017500000000000014773607300012772 500000000000000feenox-1.1/src/pdes/laplace/parser.c0000644000175000017500000000513514773607165014367 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX parser for laplace-specific keywords * * Copyright (C) 2023 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms "of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "../../parser/parser.h" #include "laplace.h" ///pb_laplace+NONE+description Laplace's equation does not need any extra keyword to `PROBLEM`. int feenox_problem_parse_problem_laplace(const char *token) { ///kw_pde+PROBLEM+detail * `laplace` solves the Laplace (or Poisson) equation. // no need to parse anything; if (token != NULL) { feenox_push_error_message("undefined keyword '%s' for laplace PROBLEM", token); return FEENOX_ERROR; } else { // if token is NULL we have to do the parse-time initialization feenox_call(feenox_problem_parse_time_init_laplace()); } return FEENOX_OK; } int feenox_problem_parse_write_post_laplace(mesh_write_t *mesh_write, const char *token) { if (strcmp(token, "all") == 0) { feenox_call(feenox_problem_parse_write_post_laplace(mesh_write, "phi")); feenox_call(feenox_problem_parse_write_post_laplace(mesh_write, "gradient")); } else if (strcmp(token, "phi") == 0) { feenox_call(feenox_add_post_field(mesh_write, 1, &feenox.pde.solution[0]->name, NULL, field_location_nodes)); } else if (strcmp(token, "grad_phi") == 0 || strcmp(token, "gradient") == 0) { char *tokens[3] = {NULL, NULL, NULL}; for (unsigned int m = 0; m < 3; m++) { tokens[m] = strdup((m < feenox.pde.dim) ? feenox.pde.gradient[0][m]->name : "0"); } feenox_call(feenox_add_post_field(mesh_write, 3, tokens, "grad_phi", field_location_nodes)); for (unsigned int m = 0; m < 3; m++) { feenox_free(tokens[m]); } } else { feenox_push_error_message("undefined keyword '%s' for laplace WRITE_RESULTS", token); return FEENOX_ERROR; } return FEENOX_OK; } feenox-1.1/src/pdes/laplace/laplace.h0000644000175000017500000000276414773607165014506 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for Laplace's equation: global header * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef LAPLACE_H #define LAPLACE_H typedef struct laplace_t laplace_t; struct laplace_t { distribution_t f; distribution_t alpha; // TODO: uniform instead of "space-dependent" // TODO: constant (i.e. non-time-depedent) int space_dependent_mass; int phi_dependent_mass; int space_dependent_source; int phi_dependent_source; int space_dependent_bc; int phi_dependent_bc; // caches for uniform properties struct { double f; double alpha; } cache; }; extern laplace_t laplace; #endif /* LAPLACE_H */ feenox-1.1/src/pdes/laplace/init.c0000644000175000017500000001415714773607165014042 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for Laplace's equation: initialization * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "laplace.h" laplace_t laplace; int feenox_problem_parse_time_init_laplace(void) { #ifdef HAVE_PETSC // virtual methods feenox.pde.parse_bc = feenox_problem_bc_parse_laplace; feenox.pde.parse_write_results = feenox_problem_parse_write_post_laplace; feenox.pde.init_before_run = feenox_problem_init_runtime_laplace; feenox.pde.setup_ksp = feenox_problem_setup_ksp_laplace; feenox.pde.setup_pc = feenox_problem_setup_pc_laplace; feenox.pde.element_build_volumetric_at_gauss = feenox_problem_build_volumetric_gauss_point_laplace; // we are FEM feenox.mesh.default_field_location = field_location_nodes; // laplace is a scalar problem feenox.pde.dofs = 1; ///re_laplace+phi+description The scalar field\ $\phi(\vec{x})$ whose Laplacian is equal to zero or to\ $f(\vec{x})$. feenox_check_alloc(feenox.pde.unknown_name = calloc(feenox.pde.dofs, sizeof(char *))); feenox_check_alloc(feenox.pde.unknown_name[0] = strdup("phi")); #endif return FEENOX_OK; } int feenox_problem_init_runtime_laplace(void) { #ifdef HAVE_PETSC // we are FEM not FVM feenox.pde.mesh->data_type = data_type_node; feenox.pde.spatial_unknowns = feenox.pde.mesh->n_nodes; // check if we were given an initial guess if ((feenox.pde.initial_guess = feenox_get_function_ptr("phi_guess")) != NULL) { if (feenox.pde.initial_guess->n_arguments != feenox.pde.dim) { feenox_push_error_message("initial guess function phi_guess ought to have %d arguments instead of %d", feenox.pde.dim, feenox.pde.initial_condition->n_arguments); return FEENOX_ERROR; } } // check if we were given an initial solution if ((feenox.pde.initial_condition = feenox_get_function_ptr("phi_0")) != NULL) { if (feenox.pde.initial_condition->n_arguments != feenox.pde.dim) { feenox_push_error_message("initial condition function phi_0 ought to have %d arguments instead of %d", feenox.pde.dim, feenox.pde.initial_condition->n_arguments); return FEENOX_ERROR; } } // initialize distributions ///pr_laplace+f+description The right hand side of the equation\ $\nabla^2 \phi=f(\vec{x})$. ///pr_laplace+f+description If not given, default is zero (i.e. Laplace). feenox_call(feenox_distribution_init(&laplace.f, "f")); laplace.f.non_uniform = feenox_depends_on_space(laplace.f.dependency_variables); laplace.f.non_linear = feenox_depends_on_function(laplace.f.dependency_functions, feenox.pde.solution[0]); ///pr_laplace+alpha+description The coefficient of the temporal derivative for the transient ///pr_laplace+alpha+description equation \ $\alpha \frac{\partial \phi}{\partial t} + \nabla^2 \phi=f(\vec{x})$. ///pr_laplace+alpha+description If not given, default is one. feenox.pde.has_mass = (feenox_var_value(feenox_special_var(end_time)) > 0); if (feenox.pde.has_mass) { feenox_call(feenox_distribution_init(&laplace.alpha, "alpha")); if (laplace.alpha.defined == 0) { // TODO: define something identically equal to one feenox_push_error_message("'alpha' is needed for transient"); return FEENOX_ERROR; } if (laplace.alpha.full == 0) { feenox_push_error_message("'alpha' is not defined over all volumes"); return FEENOX_ERROR; } } laplace.alpha.non_uniform = feenox_depends_on_space(laplace.alpha.dependency_variables); laplace.alpha.non_linear = feenox_depends_on_function(laplace.alpha.dependency_functions, feenox.pde.solution[0]); laplace.space_dependent_source = laplace.f.non_uniform; laplace.space_dependent_mass = laplace.alpha.non_uniform; laplace.phi_dependent_mass = feenox_depends_on_function(laplace.alpha.dependency_functions, feenox.pde.solution[0]); if (feenox.pde.math_type == math_type_automatic) { feenox.pde.math_type = (laplace.phi_dependent_mass == 0 && laplace.phi_dependent_source == 0 && laplace.phi_dependent_bc == 0) ? math_type_linear : math_type_nonlinear; } feenox.pde.solve = (feenox_special_var_value(end_time) > 0) ? feenox_problem_solve_petsc_transient : ((feenox.pde.math_type == math_type_linear) ? feenox_problem_solve_petsc_linear : feenox_problem_solve_petsc_nonlinear); feenox.pde.has_stiffness = 1; feenox.pde.has_rhs = 1; // has_mass is above feenox.pde.has_jacobian_K = 0; feenox.pde.has_jacobian_M = laplace.phi_dependent_mass; feenox.pde.has_jacobian_b = (laplace.phi_dependent_source || laplace.phi_dependent_bc); feenox.pde.has_jacobian = feenox.pde.has_jacobian_K || feenox.pde.has_jacobian_M || feenox.pde.has_jacobian_b; feenox.pde.symmetric_K = 1; feenox.pde.symmetric_M = 1; #endif return FEENOX_OK; } #ifdef HAVE_PETSC int feenox_problem_setup_pc_laplace(PC pc) { PCType pc_type = NULL; petsc_call(PCGetType(pc, &pc_type)); if (pc_type == NULL) { petsc_call(PCSetType(pc, PCGAMG)); } return FEENOX_OK; } int feenox_problem_setup_ksp_laplace(KSP ksp ) { KSPType ksp_type = NULL; petsc_call(KSPGetType(ksp, &ksp_type)); if (ksp_type == NULL) { petsc_call(KSPSetType(ksp, KSPCG)); } return FEENOX_OK; } #endif feenox-1.1/src/pdes/laplace/bulk.c0000644000175000017500000000453514773607165014033 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for Laplace's equation: bulk elements * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "laplace.h" int feenox_problem_build_volumetric_gauss_point_laplace(element_t *e, unsigned int q) { #ifdef HAVE_PETSC double wdet = feenox_fem_compute_w_det_at_gauss(e, q); gsl_matrix *B = feenox_fem_compute_B_at_gauss(e, q); // laplace stiffness matrix Ki += wdet * Bt*B feenox_call(feenox_blas_BtB_accum(B, wdet, feenox.fem.Ki)); // the material is needed for either RHS and/or mass material_t *material = feenox_fem_get_material(e); // right-hand side double *x = feenox_fem_compute_x_at_gauss_if_needed(e, q, feenox.pde.mesh->integration, laplace.space_dependent_source || laplace.space_dependent_mass); if (laplace.f.defined) { double f = laplace.f.eval(&laplace.f, x, material); feenox_call(feenox_problem_rhs_add(e, q, &f)); } if (feenox.pde.has_jacobian) { // TODO: jacobian } // mass matrix Ht*rho*cp*H if (feenox.pde.has_mass) { gsl_matrix *H_Gc = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); if (laplace.alpha.defined) { double alpha = laplace.alpha.eval(&laplace.alpha, x, material); feenox_call(feenox_blas_BtB_accum(H_Gc, wdet*alpha, feenox.fem.Mi)); } else { // this should have been already checked feenox_push_error_message("no alpha found needed for Laplace's mass matrix"); return FEENOX_ERROR; } } #endif return FEENOX_OK; } feenox-1.1/src/pdes/laplace/methods.h0000644000175000017500000000355114773607165014543 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for Laplace's equation: virtual methods * * Copyright (C) 2022-2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef LAPLACE_METHODS_H #define LAPLACE_METHODS_H // laplace/init.c extern int feenox_problem_parse_problem_laplace(const char *token); extern int feenox_problem_parse_write_post_laplace(mesh_write_t *mesh_write, const char *token); extern int feenox_problem_parse_time_init_laplace(void); extern int feenox_problem_init_runtime_laplace(void); #ifdef HAVE_PETSC extern int feenox_problem_setup_pc_laplace(PC pc); extern int feenox_problem_setup_ksp_laplace(KSP ksp); #endif // laplace/bulk.c extern int feenox_problem_build_volumetric_gauss_point_laplace(element_t *element, unsigned int q); // laplace/bc.c extern int feenox_problem_bc_parse_laplace(bc_data_t *bc_data, const char *lhs, char *rhs); extern int feenox_problem_bc_set_laplace_phi(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_laplace_derivative(bc_data_t *bc_data, element_t *e, unsigned int q); #endif feenox-1.1/src/pdes/laplace/bc.c0000644000175000017500000000751314773607165013461 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for Laplace's equation: boundary conditions * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "laplace.h" int feenox_problem_bc_parse_laplace(bc_data_t *bc_data, const char *lhs, char *rhs) { ///bc_laplace+phi+usage phi= ///bc_laplace+phi+description Dirichlet essential boundary condition in which the value of\ $\phi$ is prescribed. if (strcmp(lhs, "phi") == 0) { bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_laplace_phi; ///bc_laplace+phi'+usage phi'= ///bc_laplace+phi'+description Neumann natural boundary condition in which the value of the normal outward derivative\ $\frac{\partial \phi}{\partial n}$ is prescribed. ///bc_laplace+dphidn+usage dphidn= ///bc_laplace+dphidn+description Alias for `phi'`. } else if (strcmp(lhs, "phi'") == 0 || strcmp(lhs, "dphidn") == 0) { bc_data->type_math = bc_type_math_neumann; bc_data->set_natural = feenox_problem_bc_set_laplace_derivative; } else { feenox_push_error_message("unknown laplace boundary condition '%s'", lhs); return FEENOX_ERROR; } feenox_call(feenox_expression_parse(&bc_data->expr, rhs)); bc_data->space_dependent = feenox_depends_on_space(bc_data->expr.variables); bc_data->nonlinear = feenox_depends_on_function(bc_data->expr.functions, feenox.pde.solution[0]); if (bc_data->nonlinear && bc_data->type_math == bc_type_math_dirichlet) { feenox_push_error_message("essential boundary condition '%s' cannot depend on phi", rhs); return FEENOX_ERROR; } return FEENOX_OK; } int feenox_problem_bc_set_laplace_phi(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC feenox_call(feenox_problem_dirichlet_add(j_global, 0, feenox_expression_eval(&this->expr))); // TODO: only in transient // feenox.pde.dirichlet_derivatives[*k] = feenox_expression_derivative_wrt_variable(&bc_data->expr, feenox_special_var(t), feenox_special_var_value(t)); #endif return FEENOX_OK; } int feenox_problem_bc_set_laplace_derivative(bc_data_t *this, element_t *e, unsigned int q) { #ifdef HAVE_PETSC // TODO: cache if neither space nor temperature dependent double *x = feenox_fem_compute_x_at_gauss_if_needed_and_update_var(e, q, feenox.pde.mesh->integration, this->space_dependent); double derivative = feenox_expression_eval(&this->expr); feenox_call(feenox_problem_rhs_add(e, q, &derivative)); if (this->nonlinear) { double phi = feenox_function_eval(feenox.pde.solution[0], x); double dderivativedphi = feenox_expression_derivative_wrt_function(&this->expr, feenox.pde.solution[0], phi); double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, feenox.pde.mesh->integration); gsl_matrix *H_Gc = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); // mind the positive sign! feenox_call(feenox_blas_BtB_accum(H_Gc, +wdet*dderivativedphi, feenox.fem.Jbi)); } #endif return FEENOX_OK; } feenox-1.1/src/pdes/fem.c0000644000175000017500000005443614773607165012251 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related finite-element routines * * Copyright (C) 2014--2024 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" int feenox_fem_elemental_caches_reset(void) { if (feenox.fem.current_gauss_type != NULL) { int integration = (feenox.pde.mesh != NULL) ? feenox.pde.mesh->integration : 0; for (unsigned int q = 0; q < feenox.fem.current_gauss_type->gauss[integration].Q; q++) { if (feenox.fem.x != NULL && feenox.fem.x[q] != NULL) { feenox_free(feenox.fem.x[q]); } if (feenox.fem.Ji != NULL) { gsl_matrix_free(feenox.fem.Ji[q]); feenox.fem.Ji[q] = NULL; } if (feenox.fem.invJi != NULL) { gsl_matrix_free(feenox.fem.invJi[q]); feenox.fem.invJi[q] = NULL; } if (feenox.fem.Bi != NULL) { gsl_matrix_free(feenox.fem.Bi[q]); feenox.fem.Bi[q] = NULL; } if (feenox.fem.B_Gi != NULL) { gsl_matrix_free(feenox.fem.B_Gi[q]); feenox.fem.B_Gi[q] = NULL; } } } feenox_free(feenox.fem.w); gsl_matrix_free(feenox.fem.C); feenox.fem.C = NULL; feenox_free(feenox.fem.x); feenox_free(feenox.fem.Ji); feenox_free(feenox.fem.invJi); feenox_free(feenox.fem.Bi); feenox_free(feenox.fem.B_Gi); feenox.fem.current_gauss_element_tag = 0; feenox.fem.current_gauss_type = NULL; return FEENOX_OK; } // inverts a small-size square matrix // TODO: virtual methods linked to the element type? gsl_matrix *feenox_fem_matrix_invert(gsl_matrix *direct, gsl_matrix *inverse) { switch (direct->size1) { case 1: if (inverse == NULL) { feenox_check_alloc_null(inverse = gsl_matrix_alloc(1, 1)); } gsl_matrix_set(inverse, 0, 0, 1.0/gsl_matrix_get(direct, 0, 0)); break; case 2: { double a = gsl_matrix_get(direct, 0, 0); double d = gsl_matrix_get(direct, 1, 1); double b = gsl_matrix_get(direct, 0, 1); double c = gsl_matrix_get(direct, 1, 0); double det = a*d - b*c; double invdet = 1.0/det; if (inverse == NULL) { inverse = gsl_matrix_alloc(2, 2); } gsl_matrix_set(inverse, 0, 0, +invdet*d); gsl_matrix_set(inverse, 0, 1, -invdet*b); gsl_matrix_set(inverse, 1, 0, -invdet*c); gsl_matrix_set(inverse, 1, 1, invdet*a); } break; case 3: { // code from PETSc src/ksp/ksp/tutorials/ex42.c double a00 = gsl_matrix_get(direct, 0, 0); double a01 = gsl_matrix_get(direct, 0, 1); double a02 = gsl_matrix_get(direct, 0, 2); double a10 = gsl_matrix_get(direct, 1, 0); double a11 = gsl_matrix_get(direct, 1, 1); double a12 = gsl_matrix_get(direct, 1, 2); double a20 = gsl_matrix_get(direct, 2, 0); double a21 = gsl_matrix_get(direct, 2, 1); double a22 = gsl_matrix_get(direct, 2, 2); double t4 = a20 * a01; double t6 = a20 * a02; double t8 = a10 * a01; double t10 = a10 * a02; double t12 = a00 * a11; double t14 = a00 * a12; double den = (t4 * a12 - t6 * a11 - t8 * a22 + t10 * a21 + t12 * a22 - t14 * a21); double t17 = 1.0 / den; if (inverse == NULL) { inverse = gsl_matrix_alloc(3, 3); } gsl_matrix_set(inverse, 0, 0, +(a11 * a22 - a12 * a21) * t17); gsl_matrix_set(inverse, 0, 1, -(a01 * a22 - a02 * a21) * t17); gsl_matrix_set(inverse, 0, 2, +(a01 * a12 - a02 * a11) * t17); gsl_matrix_set(inverse, 1, 0, -(-a20 * a12 + a10 * a22) * t17); gsl_matrix_set(inverse, 1, 1, +(-t6 + a00 * a22) * t17); gsl_matrix_set(inverse, 1, 2, -(-t10 + t14) * t17); gsl_matrix_set(inverse, 2, 0, +(-a20 * a11 + a10 * a21) * t17); gsl_matrix_set(inverse, 2, 1, -(-t4 + a00 * a21) * t17); gsl_matrix_set(inverse, 2, 2, +(-t8 + t12) * t17); } break; default: feenox_push_error_message("invalid size %d of matrix to invert", direct->size1); break; } return inverse; } inline double feenox_fem_determinant(gsl_matrix *this) { if (this == NULL) { return 1.0; } switch (this->size1) { case 0: return 1.0; break; case 1: return gsl_matrix_get(this, 0, 0); break; case 2: return + gsl_matrix_get(this, 0, 0) * gsl_matrix_get(this, 1, 1) - gsl_matrix_get(this, 0, 1) * gsl_matrix_get(this, 1, 0); break; case 3: // compare to eigen's proposal // TODO: measure /* template inline const typename Derived::Scalar bruteforce_det3_helper (const MatrixBase& matrix, int a, int b, int c) { return matrix.coeff(0,a) * (matrix.coeff(1,b) * matrix.coeff(2,c) - matrix.coeff(1,c) * matrix.coeff(2,b)); } template struct determinant_impl { static inline typename traits::Scalar run(const Derived& m) { return bruteforce_det3_helper(m,0,1,2) - bruteforce_det3_helper(m,1,0,2) + bruteforce_det3_helper(m,2,0,1); } }; */ return + gsl_matrix_get(this, 0, 0) * gsl_matrix_get(this, 1, 1) * gsl_matrix_get(this, 2, 2) + gsl_matrix_get(this, 0, 1) * gsl_matrix_get(this, 1, 2) * gsl_matrix_get(this, 2, 0) + gsl_matrix_get(this, 0, 2) * gsl_matrix_get(this, 1, 0) * gsl_matrix_get(this, 2, 1) - gsl_matrix_get(this, 0, 2) * gsl_matrix_get(this, 1, 1) * gsl_matrix_get(this, 2, 0) - gsl_matrix_get(this, 0, 1) * gsl_matrix_get(this, 1, 0) * gsl_matrix_get(this, 2, 2) - gsl_matrix_get(this, 0, 0) * gsl_matrix_get(this, 1, 2) * gsl_matrix_get(this, 2, 1); break; } return 1.0; } // build the canonic B_c matrix at an arbitrary location xi gsl_matrix *feenox_fem_compute_B_c(element_t *e, double *xi) { gsl_matrix *B_c = gsl_matrix_calloc(e->type->dim, e->type->nodes); for (int d = 0; d < e->type->dim; d++) { for (int j = 0; j < e->type->nodes; j++) { gsl_matrix_set(B_c, d, j, e->type->dhdxi(j, d, xi)); } } return B_c; } // compute the gradient of h with respect to x evaluated at any arbitrary location gsl_matrix *feenox_fem_compute_B(element_t *e, double *xi) { gsl_matrix *J = feenox_fem_compute_J(e, xi); gsl_matrix *invJ = feenox_fem_matrix_invert(J, NULL); gsl_matrix *B_c = feenox_fem_compute_B_c(e, xi); gsl_matrix *B = gsl_matrix_calloc(e->type->dim, e->type->nodes); gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1.0, invJ, B_c, 0.0, B); return B; } inline gsl_matrix *feenox_fem_compute_invJ_at_gauss(element_t *e, unsigned int q, int integration) { // TODO: macro gsl_matrix ***invJ = (feenox.fem.cache_J) ? &e->invJ : &feenox.fem.invJi; if (*invJ == NULL) { feenox_check_alloc_null(*invJ = calloc(e->type->gauss[integration].Q, sizeof(gsl_matrix *))); } if ((*invJ)[q] == NULL) { (*invJ)[q] = gsl_matrix_calloc(e->type->dim, e->type->dim); } else if (feenox.fem.cache_J) { return (*invJ)[q]; } gsl_matrix *J = feenox_fem_compute_J_at_gauss(e, q, integration); feenox_fem_matrix_invert(J, (*invJ)[q]); return (*invJ)[q]; } // matrix with the coordinates inline gsl_matrix *feenox_fem_compute_C(element_t *e) { if (feenox.fem.cache_J == 0 && e->type != feenox.fem.current_gauss_type) { feenox_fem_elemental_caches_reset(); } gsl_matrix **C = (feenox.fem.cache_J) ? &e->C : &feenox.fem.C; if ((*C) == NULL) { feenox_check_alloc_null((*C) = gsl_matrix_calloc(e->type->dim, e->type->nodes)); } else if (feenox.fem.cache_J || e->tag == feenox.fem.current_gauss_element_tag) { return (*C); } // TODO: this is not cache friendly, is it? for (unsigned int j = 0; j < e->type->nodes; j++) { for (unsigned int d = 0; d < e->type->dim; d++) { gsl_matrix_set((*C), d, j, e->node[j]->x[d]); } } feenox.fem.current_gauss_element_tag = e->tag; return (*C); } inline gsl_matrix *feenox_fem_compute_J(element_t *e, double *xi) { // warning! this only works with volumetric elements, see dxdr_at_gauss() // TODO: measure // dxdxi = J = B_c * C_i // for (unsigned int d = 0; d < e->type->dim; d++) { // for (unsigned int d_prime = 0; d_prime < e->type->dim; d_prime++) { // for (unsigned int j = 0; j < e->type->nodes; j++) { // gsl_matrix_add_to_element(dxdxi, d, d_prime, e->type->dhdxi(j, d_prime, r) * e->node[j]->x[d]); // } // } // } gsl_matrix *J = gsl_matrix_calloc(e->type->dim, e->type->dim); gsl_matrix *B_c = feenox_fem_compute_B_c(e, xi); gsl_matrix *C = feenox_fem_compute_C(e); gsl_blas_dgemm(CblasNoTrans, CblasTrans, 1.0, C, B_c, 0.0, J); gsl_matrix_free(B_c); return J; } inline double *feenox_fem_compute_x_at_gauss_if_needed(element_t *e, unsigned int q, int integration, int condition) { return (condition) ? feenox_fem_compute_x_at_gauss(e, q, integration) : NULL; } inline double *feenox_fem_compute_x_at_gauss_if_needed_and_update_var(element_t *e, unsigned int q, int integration, int condition) { if (condition) { double *x = feenox_fem_compute_x_at_gauss(e, q, integration); feenox_fem_update_coord_vars(x); return x; } return NULL; } inline double *feenox_fem_compute_x_at_gauss_and_update_var(element_t *e, unsigned int q, int integration) { double *x = feenox_fem_compute_x_at_gauss(e, q, integration); feenox_fem_update_coord_vars(x); return x; } inline material_t *feenox_fem_get_material(element_t *e) { return (e->physical_group != NULL) ? e->physical_group->material : NULL; } inline double feenox_fem_compute_w_det_at_gauss_integration(element_t *e, unsigned int q, int integration) { if (feenox.fem.cache_J == 0 && e->type != feenox.fem.current_gauss_type) { feenox_fem_elemental_caches_reset(); } double **w = (feenox.fem.cache_J) ? &e->w : &feenox.fem.w; if ((*w) == NULL) { feenox_check_alloc((*w) = calloc(e->type->gauss[integration].Q, sizeof(double))); feenox.fem.current_gauss_type = e->type; } else if (((feenox.fem.current_weight_element_tag == e->tag && feenox.fem.current_weight_gauss_point == q) || feenox.fem.cache_J) && (*w)[q] != 0) { return (*w)[q]; } gsl_matrix *J = feenox_fem_compute_J_at_gauss(e, q, integration); // TODO: choose to complain about zero or negative? // TODO: choose to take the absolute value or not? put these two as defines double det = feenox_fem_determinant(J); (*w)[q] = e->type->gauss[integration].w[q] * fabs(det); feenox.fem.current_weight_element_tag = e->tag; feenox.fem.current_weight_gauss_point = q; return (*w)[q]; } inline gsl_matrix *feenox_fem_compute_J_at_gauss_1d(element_t *e, unsigned int q, int integration, gsl_matrix *J) { // this is a 1d particularization of the det(J'*J) trick // TODO: should we code the generic rectangular version of the "square" case below? double s1 = 0; for (unsigned int d = 0; d < 3; d++) { double s2 = 0; for (unsigned int j = 0; j < e->type->nodes; j++) { s2 += e->node[j]->x[d] * gsl_matrix_get(e->type->gauss[integration].B_c[q], 0, j); } s1 += s2*s2; } if (J == NULL) { feenox_check_alloc_null(J = gsl_matrix_calloc(1,1)); } gsl_matrix_set(J, 0, 0, sqrt(s1)); return J; } inline gsl_matrix *feenox_fem_compute_J_at_gauss_2d(element_t *e, unsigned int q, int integration, gsl_matrix *J) { /* * if we are a triangle or a quadrangle (quadrangles are two triangles so they are alike) * but we do not live on the x-y plane we have to do some tricks: * we need a transformation matrix R that maps the outward normal n into [0,0,1] * i.e. such that when R is applied to the triangle, it will now live in the xy plane * note that there are infinite Rs that do this (because the resulting triangle can look like this * * * + +----------+ * |`\ `\ | * | `\ `\ | * | `\ or like this `\ | * | `\ `\ | * | `\ `\ | * +----------+ `+ * * see * http://math.stackexchange.com/questions/180418/calculate-rotation-matrix-to-align-vector-a-to-vector-b-in-3d */ // the versor in the z direction double e_z[3] = {0, 0, 1}; double t[3]; feenox_mesh_cross(e->normal, e_z, t); // double c = feenox_fem_dot(e->normal, e_z); // cosine double k = 1/(1+feenox_mesh_dot(e->normal, e_z)); /* (%i4) T:matrix([0, -t2, t1],[t2, 0, -t0],[-t1, t0, 0]); [ 0 - t2 t1 ] [ ] (%o4) [ t2 0 - t0 ] [ ] [ - t1 t0 0 ] (%i5) T . T; [ 2 2 ] [ - t2 - t1 t0 t1 t0 t2 ] [ ] (%o5) [ 2 2 ] [ t0 t1 - t2 - t0 t1 t2 ] [ ] [ 2 2 ] [ t0 t2 t1 t2 - t1 - t0 ] */ double R[3][3] = {{ 1 + k * (-t[2]*t[2] - t[1]*t[1]), -t[2] + k * (t[0]*t[1]), +t[1] + k * (t[0]*t[2])}, { +t[2] + k * (t[0]*t[1]), 1 + k * (-t[2]*t[2] - t[0]*t[0]), -t[0] + k * (t[1]*t[2])}, { -t[1] + k * (t[0]*t[2]), +t[0] + k * (t[1]*t[2]), 1 + k * (-t[1]*t[1] - t[0]*t[0]) }}; // TODO: measure // write the new coordinates matrix and compute J (a.k.a dxdxi) // as the product between B and C if (J == NULL) { J = gsl_matrix_calloc(2,2); } double s = 0; for (int d = 0; d < 2; d++) { for (int d_prime = 0; d_prime < 2; d_prime++) { s = 0; for (int j = 0; j < e->type->nodes; j++) { s += gsl_matrix_get(e->type->gauss[integration].B_c[q], d, j) * (e->node[j]->x[0] * R[d_prime][0] + e->node[j]->x[1] * R[d_prime][1] + e->node[j]->x[2] * R[d_prime][2]); } gsl_matrix_set(J, d, d_prime, s); } } return J; } inline gsl_matrix *feenox_fem_compute_J_square_at_gauss(element_t *e, unsigned int q, int integration, gsl_matrix *J) { // we can do a full traditional computation // i.e. lines are in the x axis // surfaces are on the xy plane // volumes are always volumes! if (e->type->dim == 0) { return NULL; } // TODO: benchmark /* double xi = 0; for (unsigned int d = 0; d < dim; d++) { for (unsigned int d_prime = 0; d_prime < dim; d_prime++) { xi = 0; for (unsigned int j = 0; j < nodes; j++) { xi += gsl_matrix_get(e->type->gauss[integration].B_c[q], d_prime, j) * e->node[j]->x[d]; } gsl_matrix_set(e->J[q], d, d_prime, xi); } } */ gsl_matrix *C = feenox_fem_compute_C(e); if (J == NULL) { feenox_check_alloc_null(J = gsl_matrix_calloc(e->type->dim, e->type->dim)); } gsl_blas_dgemm(CblasNoTrans, CblasTrans, 1.0, C, e->type->gauss[integration].B_c[q], 0.0, J); return J; } // magic magic magic! inline gsl_matrix *feenox_fem_compute_J_at_gauss(element_t *e, unsigned int q, int integration) { if (feenox.fem.cache_J == 0 && e->type != feenox.fem.current_gauss_type) { feenox_fem_elemental_caches_reset(); } gsl_matrix ***J = (feenox.fem.cache_J) ? &e->J : &feenox.fem.Ji; if ((*J) == NULL) { feenox_check_alloc_null((*J) = calloc(e->type->gauss[integration].Q, sizeof(gsl_matrix *))); feenox.fem.current_gauss_type = e->type; } if ((*J)[q] == NULL) { feenox_check_alloc_null((*J)[q] = gsl_matrix_calloc(e->type->dim, e->type->dim)); } else if ((feenox.fem.current_gauss_element_tag == e->tag && feenox.fem.current_jacobian_gauss_point == q) || feenox.fem.cache_J) { return (*J)[q]; } // TODO: once the problem type and dimension is set, we know which element type // needs which kind of xixdr computation: we can then use some virtual // functions defined in e->type if (e->type->dim == 1 && (e->node[0]->x[1] != 0 || e->node[1]->x[1] != 0 || e->node[0]->x[2] != 0 || e->node[1]->x[2] != 0)) { (*J)[q] = feenox_fem_compute_J_at_gauss_1d(e, q, integration, (*J)[q]); } else if (e->type->dim == 2 && (e->node[0]->x[2] != 0 || e->node[1]->x[2] != 0 || e->node[2]->x[2])) { feenox_mesh_compute_normal_2d(e); double eps = feenox_var_value(feenox.mesh.vars.eps); // ANDs are more efficient than ORs because the minute one does not hold the evaluation finishes if (fabs(e->normal[0]) < eps && fabs(e->normal[1]) < eps && fabs(fabs(e->normal[2])-1) < eps) { (*J)[q] = feenox_fem_compute_J_square_at_gauss(e, q, integration, (*J)[q]); } else { (*J)[q] = feenox_fem_compute_J_at_gauss_2d(e, q, integration, (*J)[q]); } } else { (*J)[q] = feenox_fem_compute_J_square_at_gauss(e, q, integration, (*J)[q]); } feenox.fem.current_jacobian_element_tag = e->tag; feenox.fem.current_jacobian_gauss_point = q; return (*J)[q]; } inline double *feenox_fem_compute_x_at_gauss(element_t *e, unsigned int q, int integration) { if (feenox.fem.cache_J == 0 && e->type != feenox.fem.current_gauss_type) { feenox_fem_elemental_caches_reset(); } double ***x = (feenox.fem.cache_J) ? &e->x : &feenox.fem.x; if ((*x) == NULL) { feenox_check_alloc_null((*x) = calloc(e->type->gauss[integration].Q, sizeof(double *))); feenox.fem.current_gauss_type = e->type; } if ((*x)[q] == NULL) { (*x)[q] = calloc(3, sizeof(double)); } else if (feenox.fem.cache_J) { return (*x)[q]; } gsl_matrix *H = feenox_fem_compute_H_c_at_gauss(e, q, integration); (*x)[q][0] = (*x)[q][1] = (*x)[q][2] = 0; for (unsigned int j = 0; j < e->type->nodes; j++) { double h = gsl_matrix_get(H, 0, j); for (unsigned int d = 0; d < 3; d++) { (*x)[q][d] += h * e->node[j]->x[d]; } } return (*x)[q]; } inline gsl_matrix *feenox_fem_compute_H_c_at_gauss(element_t *e, unsigned int q, int integration) { return e->type->gauss[integration].H_c[q]; } inline gsl_matrix *feenox_fem_compute_H_Gc_at_gauss(element_t *e, unsigned int q, int integration) { if (e->type->H_Gc == NULL) { if (feenox.pde.dofs == 1) { e->type->H_Gc = e->type->gauss[integration].H_c; return e->type->H_Gc[q]; } else { e->type->H_Gc = calloc(e->type->gauss[integration].Q, sizeof(gsl_matrix *)); } } if (e->type->H_Gc[q] == NULL) { unsigned int J = e->type->nodes; unsigned int G = feenox.pde.dofs; e->type->H_Gc[q] = gsl_matrix_calloc(G, G*J); // TODO: measure order of loops for (unsigned int j = 0; j < J; j++) { double h = gsl_matrix_get(e->type->gauss[integration].H_c[q], 0, j); for (unsigned int g = 0; g < G; g++) { gsl_matrix_set(e->type->H_Gc[q], g, G*j+g, h); } } } return e->type->H_Gc[q]; } inline gsl_matrix *feenox_fem_compute_B_at_gauss_integration(element_t *e, unsigned int q, int integration) { if (feenox.fem.cache_J == 0 && e->type != feenox.fem.current_gauss_type) { feenox_fem_elemental_caches_reset(); } gsl_matrix ***B = (feenox.fem.cache_B) ? &e->B : &feenox.fem.Bi; if ((*B) == NULL) { feenox_check_alloc_null((*B) = calloc(e->type->gauss[integration].Q, sizeof(gsl_matrix *))); feenox.fem.current_gauss_type = e->type; } if ((*B)[q] == NULL) { (*B)[q] = gsl_matrix_calloc(e->type->dim, e->type->nodes); } else if (feenox.fem.cache_B) { return (*B)[q]; } gsl_matrix *invJ = feenox_fem_compute_invJ_at_gauss(e, q, feenox.pde.mesh->integration); gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1.0, invJ, e->type->gauss[integration].B_c[q], 0.0, (*B)[q]); return (*B)[q]; } inline gsl_matrix *feenox_fem_compute_B_G_at_gauss(element_t *e, unsigned int q, int integration) { unsigned int G = feenox.pde.dofs; if (G == 1) { // for G=1 B_G = B return feenox_fem_compute_B_at_gauss_integration(e, q, integration); } gsl_matrix ***B_G = (feenox.fem.cache_B) ? &e->B_G : &feenox.fem.B_Gi; if ((*B_G) == NULL) { feenox_check_alloc_null((*B_G) = calloc(e->type->gauss[integration].Q, sizeof(gsl_matrix *))); } unsigned int J = e->type->nodes; unsigned int D = e->type->dim; if ((*B_G)[q] == NULL) { (*B_G)[q] = gsl_matrix_calloc(G*D, G*J); } else if (feenox.fem.cache_B) { return (*B_G)[q]; } gsl_matrix *B = feenox_fem_compute_B_at_gauss_integration(e, q, integration); for (unsigned int d = 0; d < D; d++) { size_t Gd = G*d; for (unsigned int j = 0; j < J; j++) { size_t Gj = G*j; double dhdxi = gsl_matrix_get(B, d, j); for (unsigned int g = 0; g < feenox.pde.dofs; g++) { gsl_matrix_set((*B_G)[q], Gd+g, Gj+g, dhdxi); } } } return (*B_G)[q]; } #ifdef HAVE_PETSC PetscInt *feenox_fem_compute_dof_indices(element_t *e, int G) { if (feenox.fem.l == NULL) { feenox_check_alloc_null(feenox.fem.l = calloc(G * e->type->nodes, sizeof(PetscInt))); } // the vector l contains the global indexes of each DOF in the element // note that this vector is always node major independently of the global ordering for (unsigned int j = 0; j < e->type->nodes; j++) { for (unsigned int g = 0; g < G; g++) { feenox.fem.l[G*j + g] = e->node[j]->index_dof[g]; } } return feenox.fem.l; } #endif feenox-1.1/src/pdes/petsc_ts.c0000644000175000017500000001503214773607165013313 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's transient solver using PETSc routines * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_problem_solve_petsc_transient(void) { #ifdef HAVE_PETSC if (feenox_var_value(feenox_special_var(in_static))) { // if we are in the static step and no initial condition was given, we solve a steady state if (feenox.pde.initial_condition == NULL) { if (feenox.pde.math_type == math_type_linear) { feenox_call(feenox_problem_solve_petsc_linear()); petsc_call(KSPDestroy(&feenox.pde.ksp)); feenox.pde.ksp = NULL; } else if (feenox.pde.math_type == math_type_nonlinear) { feenox_call(feenox_problem_solve_petsc_nonlinear()); petsc_call(SNESDestroy(&feenox.pde.snes)); feenox.pde.snes = NULL; } } else { feenox_function_to_phi(feenox.pde.initial_condition, feenox.pde.phi); } if (feenox.pde.ts == NULL) { petsc_call(TSCreate(PETSC_COMM_WORLD, &feenox.pde.ts)); petsc_call(TSSetIFunction(feenox.pde.ts, NULL, feenox_ts_residual, NULL)); // if we have an initial condition then matrices do not exist yet if (feenox.pde.initial_condition != NULL) { feenox_call(feenox_problem_build()); } petsc_call(MatDuplicate(feenox.pde.has_jacobian_K ? feenox.pde.JK : feenox.pde.K, MAT_COPY_VALUES, &feenox.pde.J_tran)); petsc_call(TSSetIJacobian(feenox.pde.ts, feenox.pde.J_tran, feenox.pde.J_tran, feenox_ts_jacobian, NULL)); petsc_call(TSSetProblemType(feenox.pde.ts, (feenox.pde.math_type == math_type_linear) ? TS_LINEAR : TS_NONLINEAR)); // if BCs depend on time we need DAEs petsc_call(TSSetEquationType(feenox.pde.ts, TS_EQ_IMPLICIT)); // petsc_call(TSSetEquationType(feenox.pde.ts, TS_EQ_DAE_IMPLICIT_INDEX1)); // petsc_call(TSARKIMEXSetFullyImplicit(feenox.pde.ts, PETSC_TRUE)); feenox_call(feenox_problem_setup_ts(feenox.pde.ts)); petsc_call(TSSetTimeStep(feenox.pde.ts, feenox_special_var_value(dt))); petsc_call(TSSetMaxTime(feenox.pde.ts, 0.0)); petsc_call(TSSolve(feenox.pde.ts, feenox.pde.phi)); petsc_call(TSSetMaxTime(feenox.pde.ts, feenox_var_value(feenox_special_var(end_time)))); petsc_call(TSSetExactFinalTime(feenox.pde.ts, TS_EXACTFINALTIME_MATCHSTEP)); } return FEENOX_OK; } PetscInt ts_step = 0; petsc_call(TSGetStepNumber(feenox.pde.ts, &ts_step)); petsc_call(TSSetMaxSteps(feenox.pde.ts, ts_step+1)); petsc_call(TSSetTimeStep(feenox.pde.ts, feenox_special_var_value(dt))); petsc_call(TSSolve(feenox.pde.ts, feenox.pde.phi)); petsc_call(TSGetTime(feenox.pde.ts, feenox_value_ptr(feenox_special_var(t)))); petsc_call(TSGetTimeStep(feenox.pde.ts, feenox_value_ptr(feenox_special_var(dt)))); #endif return FEENOX_OK; } #ifdef HAVE_PETSC int feenox_problem_setup_ts(TS ts) { // TODO: the default depends on the physics type petsc_call(TSSetType(ts, (feenox.pde.ts_type != NULL) ? feenox.pde.ts_type : TSBDF)); TSAdapt adapt; petsc_call(TSGetAdapt(ts, &adapt)); petsc_call(TSAdaptSetType(adapt, (feenox.pde.ts_adapt_type != NULL) ? feenox.pde.ts_adapt_type : TSADAPTBASIC)); // the factors are so we can pass min_dt = max_dt petsc_call(TSAdaptSetStepLimits(adapt, (feenox_special_var_value(min_dt) > 0) ? (1-1e-8)*feenox_special_var_value(min_dt) : PETSC_DEFAULT, (feenox_special_var_value(max_dt) > 0) ? (1+1e-8)*feenox_special_var_value(max_dt) : PETSC_DEFAULT)); // TODO: choose // petsc_call(TSSetMaxStepRejections(feenox.pde.ts, 10000)); // petsc_call(TSSetMaxSNESFailures(feenox.pde.ts, 1000)); // options overwrite petsc_call(TSSetFromOptions(ts)); // TODO: this guy complains about DM (?) // petsc_call(TSSetUp(ts)); SNES snes; petsc_call(TSGetSNES(ts, &snes)); if (snes != NULL) { feenox_call(feenox_problem_setup_snes(snes)); } else { KSP ksp; petsc_call(TSGetKSP(ts, &ksp)); if (ksp != NULL) { feenox_call(feenox_problem_setup_ksp(ksp)); } } return FEENOX_OK; } PetscErrorCode feenox_ts_residual(TS ts, PetscReal t, Vec phi, Vec phi_dot, Vec r, void *ctx) { // static int count = 0; feenox_var_value(feenox_special_var(t)) = t; if (feenox.pde.math_type == math_type_nonlinear) { feenox_call(feenox_problem_phi_to_solution(phi)); } // TODO: for time-dependent neumann BCs it should not be needed to re-build the whole matrix, just the RHS feenox_call(feenox_problem_build()); // TODO: be smart about this too feenox_call(feenox_problem_dirichlet_eval()); // compute the residual R(t,phi,phi_dot) = M*(phi_dot)_dirichlet + K*(phi)_dirichlet - b // TODO: store in a global temporary vector Vec tmp; petsc_call(VecDuplicate(phi, &tmp)); // set dirichlet BCs on the time derivative and multiply by M petsc_call(VecCopy(phi_dot, tmp)); feenox_call(feenox_problem_dirichlet_set_phi_dot(tmp)); petsc_call(MatMult(feenox.pde.M, tmp, r)); // set dirichlet BCs on the solution and multiply by K petsc_call(VecCopy(phi, tmp)); feenox_call(feenox_problem_dirichlet_set_phi(tmp)); petsc_call(MatMultAdd(feenox.pde.K, tmp, r, r)); petsc_call(VecDestroy(&tmp)); petsc_call(VecAXPY(r, -1.0, feenox.pde.b)); // set dirichlet bcs on the residual feenox_call(feenox_problem_dirichlet_set_r(r, phi)); return FEENOX_OK; } PetscErrorCode feenox_ts_jacobian(TS ts, PetscReal t, Vec phi, Vec phi_dot, PetscReal s, Mat J, Mat P, void *ctx) { // return (K + s*M)_dirichlet petsc_call(MatCopy(feenox.pde.K, J, SAME_NONZERO_PATTERN)); petsc_call(MatAXPY(J, s, feenox.pde.M, SAME_NONZERO_PATTERN)); feenox_call(feenox_problem_dirichlet_set_J(J)); return FEENOX_OK; } #endif feenox-1.1/src/pdes/reaction.c0000644000175000017500000001344214773607165013276 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox function for computing reactions * * Copyright (C) 2016--2021 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_instruction_reaction(void *arg) { #ifdef HAVE_PETSC reaction_t *reaction = (reaction_t *)arg; if (reaction->vector != NULL && reaction->vector->initialized == 0) { feenox_vector_init(reaction->vector, FEENOX_VECTOR_NO_INITIAL); } // order == 1 for moment unsigned int g = 0; Vec arm[] = {NULL, NULL, NULL}; double x0[] = {0, 0, 0}; PetscInt *node_index = NULL; if (reaction->order == 1) { feenox_check_alloc(node_index = calloc(feenox.pde.size_local, sizeof(PetscInt))); for (g = 0; g < feenox.pde.dofs; g++) { if (reaction->x0[g].items != NULL) { // if an explicit coordinate was given, use it x0[g] = feenox_expression_eval(&reaction->x0[g]); } else { // use the COG if (reaction->physical_group->volume == 0) { feenox_call(feenox_physical_group_compute_volume(reaction->physical_group, feenox.pde.mesh)); } x0[g] = reaction->physical_group->cog[g]; } petsc_call(MatCreateVecs(feenox.pde.K, PETSC_NULLPTR, &arm[g])); } } PetscInt *row[] = {NULL, NULL, NULL}; for (g = 0; g < feenox.pde.dofs; g++) { feenox_check_alloc(row[g] = calloc(feenox.pde.size_local, sizeof(PetscInt))); } // get which nodes need to be taken into account size_t i = 0; size_t j = 0; size_t k = 0; unsigned int j_local = 0; int add = 0; for (j = feenox.pde.first_node; j < feenox.pde.last_node; j++) { add = 0; // this could have been done by sweeping the assigned elements and checking out if the nodes belong to the entity for (i = 0; add == 0 && i < reaction->physical_group->n_elements; i++) { element_t *element = &feenox.pde.mesh->element[reaction->physical_group->element[i]]; for (j_local = 0; add == 0 && j_local < element->type->nodes; j_local++) { if (element->node[j_local]->index_mesh == j) { add = 1; for (g = 0; g < feenox.pde.dofs; g++) { row[g][k] = feenox.pde.mesh->node[j].index_dof[g]; } if (reaction->order == 1) { node_index[k] = j; } k++; } } } } // the IS of the columns is the same for all the DOFs IS set_cols = NULL; petsc_call(ISCreateStride(PETSC_COMM_WORLD, feenox.pde.size_local, feenox.pde.first_row, 1, &set_cols)); IS set_rows[] = {NULL, NULL, NULL}; Mat K_row[] = {NULL, NULL, NULL}; Vec K_row_u[] = {NULL, NULL, NULL}; double R[] = {0, 0, 0}; for (g = 0; g < feenox.pde.dofs; g++) { // the IS of the rows depends on the DOF petsc_call(ISCreateGeneral(PETSC_COMM_WORLD, k, row[g], PETSC_USE_POINTER, &set_rows[g])); petsc_call(MatCreateSubMatrix(feenox.pde.K, set_rows[g], set_cols, MAT_INITIAL_MATRIX, &K_row[g])); petsc_call(MatCreateVecs(K_row[g], PETSC_NULLPTR, &K_row_u[g])); petsc_call(MatMult(K_row[g], feenox.pde.phi, K_row_u[g])); if (reaction->order == 1) { petsc_call(MatCreateVecs(K_row[g], PETSC_NULLPTR, &arm[g])); // TODO: do not set non-local values for (j = 0; j < k; j++) { petsc_call(VecSetValue(arm[g], j, feenox.pde.mesh->node[node_index[j]].x[g] - x0[g], INSERT_VALUES)); } } // zeroth-order reactions con be resolved right now if (reaction->order == 0) { petsc_call(VecSum(K_row_u[g], &R[g])); } } // for first-order moments we need to do another loop because moments need all the three forces if (reaction->order == 1) { for (g = 0; g < feenox.pde.dofs; g++) { int a; int b; switch (g) { case 0: a = 1; b = 2; break; case 1: a = 0; b = 2; break; case 2: a = 0; b = 1; break; } PetscScalar Fa_db = 0; petsc_call(VecDot(K_row_u[a], arm[b], &Fa_db)); PetscScalar Fb_da = 0; petsc_call(VecDot(K_row_u[b], arm[a], &Fb_da)); R[g] = Fa_db + Fb_da; } } for (g = 0; g < feenox.pde.dofs; g++) { if (feenox.pde.dofs == 1) { feenox_var_value(reaction->scalar) = R[0]; } else { gsl_vector_set(reaction->vector->value, g, R[g]); } petsc_call(VecDestroy(&K_row_u[g])); petsc_call(MatDestroy(&K_row[g])); petsc_call(ISDestroy(&set_rows[g])); if (reaction->order == 1) { petsc_call(VecDestroy(&arm[g])); } feenox_free(row[g]); } petsc_call(ISDestroy(&set_cols)); if (reaction->order == 1) { feenox_free(node_index); } // TODO /* if (fino.problem_kind == problem_kind_axisymmetric) { if (fino.symmetry_axis == symmetry_axis_y) { gsl_vector_set(reaction->vector->value, 0, 0); gsl_vector_set(reaction->vector->value, 1, 2*M_PI*R[1]); } else if (fino.symmetry_axis == symmetry_axis_x) { gsl_vector_set(reaction->vector->value, 0, 2*M_PI*R[0]); gsl_vector_set(reaction->vector->value, 1, 0); } } */ #endif return FEENOX_OK; } feenox-1.1/src/pdes/blas.c0000644000175000017500000001021414773607165012405 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's BLAS wrapper routines * * Copyright (C) 2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" // c = alpha * A*b int feenox_blas_Ab(gsl_matrix *A, gsl_vector *b, double alpha, gsl_vector *c) { feenox_call(gsl_blas_dgemv(CblasNoTrans, alpha, A, b, 0.0, c)); return FEENOX_OK; } // c = alpha * A'*b int feenox_blas_Atb(gsl_matrix *A, gsl_vector *b, double alpha, gsl_vector *c) { feenox_call(gsl_blas_dgemv(CblasTrans, alpha, A, b, 0.0, c)); return FEENOX_OK; } // c += alpha * A*b int feenox_blas_Ab_accum(gsl_matrix *A, gsl_vector *b, double alpha, gsl_vector *c) { feenox_call(gsl_blas_dgemv(CblasNoTrans, alpha, A, b, 1.0, c)); return FEENOX_OK; } // c += alpha * A'*b int feenox_blas_Atb_accum(gsl_matrix *A, gsl_vector *b, double alpha, gsl_vector *c) { feenox_call(gsl_blas_dgemv(CblasTrans, alpha, A, b, 1.0, c)); return FEENOX_OK; } // R += alpha * B'*B int feenox_blas_BtB_accum(gsl_matrix *B, double alpha, gsl_matrix *R) { // printf("dgemm BtB accum\n"); feenox_call(gsl_blas_dgemm(CblasTrans, CblasNoTrans, alpha, B, B, 1.0, R)); return FEENOX_OK; } // R = alpha * B'*B int feenox_blas_BtB(gsl_matrix *B, double alpha, gsl_matrix *R) { feenox_call(gsl_blas_dgemm(CblasTrans, CblasNoTrans, alpha, B, B, 0.0, R)); return FEENOX_OK; } // R += alpha * B'*C*B int feenox_blas_BtCB_accum(gsl_matrix *B, gsl_matrix *C, gsl_matrix *CB, double alpha, gsl_matrix *R) { int alloc = 0; if (CB == NULL) { CB = gsl_matrix_alloc(C->size1, B->size2); alloc = 1; } // printf("dgemm C B accum\n"); feenox_call(gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, C, B, 0.0, CB)); // printf("dgemm B CB accum\n"); feenox_call(gsl_blas_dgemm(CblasTrans, CblasNoTrans, alpha, B, CB, 1.0, R)); if (alloc) { gsl_matrix_free(CB); } return FEENOX_OK; } // R = alpha * B'*C*B int feenox_blas_BtCB(gsl_matrix *B, gsl_matrix *C, gsl_matrix *CB, double alpha, gsl_matrix *R) { int alloc = 0; if (CB == NULL) { CB = gsl_matrix_alloc(C->size1, B->size2); alloc = 1; } // printf("dgemm C B\n"); feenox_call(gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, C, B, 0.0, CB)); // printf("dgemm B CB\n"); feenox_call(gsl_blas_dgemm(CblasTrans, CblasNoTrans, alpha, B, CB, 0.0, R)); if (alloc) { gsl_matrix_free(CB); } return FEENOX_OK; } // R += alpha * P'*C*B int feenox_blas_PtCB_accum(gsl_matrix *P, gsl_matrix *C, gsl_matrix *B, gsl_matrix *CB, double alpha, gsl_matrix *R) { int alloc = 0; if (CB == NULL) { CB = gsl_matrix_alloc(C->size1, B->size2); alloc = 1; } // printf("dgemm CB accum\n"); feenox_call(gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, C, B, 0.0, CB)); // printf("dgemm P CB accum\n"); feenox_call(gsl_blas_dgemm(CblasTrans, CblasNoTrans, alpha, P, CB, 1.0, R)); if (alloc) { gsl_matrix_free(CB); } return FEENOX_OK; } // R = alpha * P'*C*B int feenox_blas_PtCB(gsl_matrix *P, gsl_matrix *C, gsl_matrix *B, gsl_matrix *CB, double alpha, gsl_matrix *R) { int alloc = 0; if (CB == NULL) { CB = gsl_matrix_alloc(C->size1, B->size2); alloc = 1; } // printf("dgemm C B\n"); feenox_call(gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, C, B, 0.0, CB)); // printf("dgemm P CB\n"); feenox_call(gsl_blas_dgemm(CblasTrans, CblasNoTrans, alpha, P, CB, 0.0, R)); if (alloc) { gsl_matrix_free(CB); } return FEENOX_OK; }feenox-1.1/src/pdes/slepc_eps.c0000644000175000017500000001572114773607165013451 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's eigen solver using SLEPc routines * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_problem_solve_slepc_eigen(void) { #ifdef HAVE_SLEPC // build --------------------------------------------------------------------- petsc_call(PetscLogStagePush(feenox.pde.stage_build)); // we need the matrices to set the operators feenox_call(feenox_problem_build()); feenox_call(feenox_problem_dirichlet_eval()); feenox_call(feenox_problem_dirichlet_set_K()); feenox_call(feenox_problem_dirichlet_set_M()); petsc_call(PetscLogStagePop()); // --------------------------------------------------------------------------- if (feenox.pde.missed_dump != NULL) { feenox_call(feenox_instruction_dump(feenox.pde.missed_dump)); } // solve --------------------------------------------------------------------- petsc_call(PetscLogStagePush(feenox.pde.stage_solve)); if (feenox.pde.eps == NULL) { petsc_call(EPSCreate(PETSC_COMM_WORLD, &feenox.pde.eps)); if (feenox.pde.eps_type != NULL) { petsc_call(EPSSetType(feenox.pde.eps, feenox.pde.eps_type)); } // here we might choose whether to use lambda or omega if (feenox.pde.setup_eps != NULL) { feenox_call(feenox.pde.setup_eps(feenox.pde.eps)); } // default is lambda but each PDE should choose whatever works better if (feenox.pde.eigen_formulation == eigen_formulation_undefined) { feenox.pde.eigen_formulation = eigen_formulation_lambda; } // operators depending on formulation if (feenox.pde.eigen_formulation == eigen_formulation_lambda) { petsc_call(EPSSetOperators(feenox.pde.eps, feenox.pde.M_bc, feenox.pde.K_bc)); petsc_call(EPSSetWhichEigenpairs(feenox.pde.eps, EPS_LARGEST_MAGNITUDE)); } else if (feenox.pde.eigen_formulation == eigen_formulation_omega) { petsc_call(EPSSetOperators(feenox.pde.eps, feenox.pde.K_bc, feenox.pde.M_bc)); petsc_call(EPSSetWhichEigenpairs(feenox.pde.eps, EPS_SMALLEST_MAGNITUDE)); } else { feenox_push_error_message("internal error, neither omega nor lambda set"); return FEENOX_ERROR; } // get the associated spectral transformation ST st = NULL; petsc_call(EPSGetST(feenox.pde.eps, &st)); if (st == NULL) { feenox_push_error_message("cannot retrieve spectral transformation object"); return FEENOX_ERROR; } if (feenox.pde.st_type != NULL) { petsc_call(STSetType(st, feenox.pde.st_type)); } else { if ((feenox.pde.eigen_formulation == eigen_formulation_lambda && feenox.pde.eigen_dirichlet_zero == eigen_dirichlet_zero_M) || (feenox.pde.eigen_formulation == eigen_formulation_omega && feenox.pde.eigen_dirichlet_zero == eigen_dirichlet_zero_K)) { petsc_call(STSetType(st, STSHIFT)); } else { petsc_call(STSetType(st, STSINVERT)); } } STType sttype = NULL; feenox_call(STGetType(st, &sttype)); if (strcmp(sttype, STSINVERT) == 0 || strcmp(sttype, STCAYLEY) == 0) { // shift and invert needs a target petsc_call(EPSSetTarget(feenox.pde.eps, 0)); petsc_call(EPSSetWhichEigenpairs(feenox.pde.eps, EPS_TARGET_MAGNITUDE)); } // shift and invert offsets if (feenox_var_value(feenox.pde.vars.eps_st_sigma) != 0) { petsc_call(STSetShift(st, feenox_var_value(feenox.pde.vars.eps_st_sigma))); } if (feenox_var_value(feenox.pde.vars.eps_st_nu) != 0) { petsc_call(STCayleySetAntishift(st, feenox_var_value(feenox.pde.vars.eps_st_nu))); } // tolerances petsc_call(EPSSetTolerances(feenox.pde.eps, feenox_var_value(feenox.pde.vars.eps_tol), (PetscInt)feenox_var_value(feenox.pde.vars.eps_max_it))); // setup the linear solver KSP ksp = NULL; petsc_call(STGetKSP(st, &ksp)); if (ksp == NULL) { feenox_push_error_message("cannot retrieve linear solver object"); return FEENOX_ERROR; } feenox_call(feenox_problem_setup_ksp(ksp)); // this should be faster but it is not // TODO: let the user choose EPSProblemType eps_type; petsc_call(EPSGetProblemType(feenox.pde.eps, &eps_type)); if (eps_type == 0) { petsc_call(EPSSetProblemType(feenox.pde.eps, (feenox.pde.symmetric_K && feenox.pde.symmetric_M) ? EPS_GHEP : EPS_GNHEP)); } // specify how many eigenvalues (and eigenvectors) to compute. if (feenox.pde.eps_ncv.items != NULL) { petsc_call(EPSSetDimensions(feenox.pde.eps, feenox.pde.nev, (PetscInt)(feenox_expression_eval(&feenox.pde.eps_ncv)), PETSC_DEFAULT)); } else { petsc_call(EPSSetDimensions(feenox.pde.eps, feenox.pde.nev, PETSC_DEFAULT, PETSC_DEFAULT)); } feenox_check_alloc(feenox.pde.eigenvalue = calloc(feenox.pde.nev, sizeof(PetscScalar))); feenox_check_alloc(feenox.pde.eigenvector = calloc(feenox.pde.nev, sizeof(Vec))); petsc_call(EPSSetFromOptions(feenox.pde.eps)); } petsc_call(EPSSetInitialSpace(feenox.pde.eps, 1, &feenox.pde.phi)); petsc_call(EPSSolve(feenox.pde.eps)); PetscInt nconv = 0; petsc_call(EPSGetConverged(feenox.pde.eps, &nconv)); if (nconv == 0) { feenox_push_error_message("no converged eigen-pairs found (%d requested)", feenox.pde.nev); return FEENOX_ERROR; } else if (nconv < feenox.pde.nev) { feenox_push_error_message("eigen-solver obtained only %d converged eigen-pairs (%d requested)", nconv, feenox.pde.nev); return FEENOX_ERROR; } PetscScalar imag = 0; unsigned int i = 0; for (i = 0; i < feenox.pde.nev; i++) { petsc_call(MatCreateVecs(feenox.pde.K, NULL, &feenox.pde.eigenvector[i])); petsc_call(EPSGetEigenpair(feenox.pde.eps, i, &feenox.pde.eigenvalue[i], &imag, feenox.pde.eigenvector[i], PETSC_NULLPTR)); // TODO: should we allow complex eigenvalues? if (fabs(imag) > feenox_var_value(feenox.pde.vars.eps_tol)) { feenox_push_error_message("the eigenvalue %d is complex (%g + i %g)", i+1, feenox.pde.eigenvalue[i], imag); return FEENOX_ERROR; } } petsc_call(PetscLogStagePop()); // --------------------------------------------------------------------------- #endif return FEENOX_OK; } feenox-1.1/src/pdes/distribution.c0000644000175000017500000002727614773607165014223 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's approach to handling distributions of properties * * Copyright (C) 2015-2021 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" // this method updates the linked list of variables and functions the distribution // depends on, but it does not set the non_linear nor space_dependent flags int feenox_distribution_init(distribution_t *this, const char *name) { feenox_check_alloc(this->name = strdup(name)); // first try a property, if this is the case then we have it easy int n_volumes = 0; int non_uniform = 0; HASH_FIND_STR(feenox.mesh.properties, name, this->property); if (this->property != NULL) { // check if the property is "full," i.e. defined over all volumes int full = 1; physical_group_t *physical_group = NULL; physical_group_t *tmp_group = NULL; HASH_ITER(hh, feenox.pde.mesh->physical_groups, physical_group, tmp_group) { if (physical_group->dimension == feenox.pde.dim) { if (physical_group->material != NULL) { property_data_t *property_data = NULL; HASH_FIND_STR(physical_group->material->property_datums, this->property->name, property_data); if (property_data != NULL) { feenox_pull_dependencies_variables(&this->dependency_variables, property_data->expr.variables); feenox_pull_dependencies_functions(&this->dependency_functions, property_data->expr.functions); non_uniform = (n_volumes++ > 0) || (feenox_depends_on_space(this->dependency_variables)); } else { full = 0; } } else { full = 0; } } } this->defined = 1; this->full = full; this->non_uniform = non_uniform; this->eval = feenox_distribution_eval_property; this->constant = (feenox_depends_on_time(this->dependency_variables) == 0); return FEENOX_OK; } // try one function for each volume int full = 1; non_uniform = 0; n_volumes = 0; physical_group_t *physical_group = NULL; physical_group_t *tmp_group = NULL; HASH_ITER(hh, feenox.pde.mesh->physical_groups, physical_group, tmp_group) { if (physical_group->dimension == feenox.pde.dim) { char *function_name = NULL; feenox_check_minusone(asprintf(&function_name, "%s_%s", name, physical_group->name)); function_t *function = NULL; if ((function = feenox_get_function_ptr(function_name)) != NULL) { if (function->n_arguments != feenox.pde.dim) { feenox_push_error_message("function '%s' should have %d arguments instead of %d to be used as a distribution", function->name, feenox.pde.dim, function->n_arguments); return FEENOX_ERROR; } if (this->function == NULL) { this->function = function; } // if there's no explicit material we create one if (physical_group->material == NULL) { physical_group->material = feenox_define_material_get_ptr(physical_group->name, feenox.pde.mesh); } feenox_call(feenox_pull_dependencies_variables_function(&this->dependency_variables, function)); feenox_call(feenox_pull_dependencies_functions_function(&this->dependency_functions, function)); non_uniform = (n_volumes++ > 0) || (feenox_depends_on_space(this->dependency_variables)); } else { full = 0; } feenox_free(function_name); } } if (this->function) { this->defined = 1; this->full = full; this->non_uniform = non_uniform; this->eval = feenox_distribution_eval_function_local; this->constant = (feenox_depends_on_time(this->dependency_variables) == 0); return FEENOX_OK; } // try a single function if ((this->function = feenox_get_function_ptr(name)) != NULL) { if (this->function->n_arguments != feenox.pde.dim) { feenox_push_error_message("function '%s' should have %d arguments instead of %d to be used as a distribution", this->function->name, feenox.pde.dim, this->function->n_arguments); return FEENOX_ERROR; } this->defined = 1; this->full = 1; this->eval = feenox_distribution_eval_function_global; this->expr = &this->function->algebraic_expression; feenox_call(feenox_pull_dependencies_variables_function(&this->dependency_variables, this->function)); feenox_call(feenox_pull_dependencies_functions_function(&this->dependency_functions, this->function)); this->non_uniform = feenox_depends_on_space(this->dependency_variables); this->constant = (feenox_depends_on_time(this->dependency_variables) == 0); return FEENOX_OK; } // try one variable for each volume full = 1; non_uniform = 0; n_volumes = 0; physical_group = NULL; tmp_group = NULL; HASH_ITER(hh, feenox.pde.mesh->physical_groups, physical_group, tmp_group) { if (physical_group->dimension == feenox.pde.dim) { char *var_name = NULL; feenox_check_minusone(asprintf(&var_name, "%s_%s", name, physical_group->name)); var_t *variable = NULL; if ((variable = feenox_get_variable_ptr(var_name)) != NULL) { if (this->variable == NULL) { this->variable = variable; } // if there's no explicit material we create one if (physical_group->material == NULL) { physical_group->material = feenox_define_material_get_ptr(physical_group->name, feenox.pde.mesh); } // if there are many volumes, we are not uniform non_uniform = (n_volumes++ > 0); } else { full = 0; } feenox_free(var_name); } } if (this->variable) { this->defined = 1; this->full = full; this->non_uniform = non_uniform; this->eval = feenox_distribution_eval_variable_local; return FEENOX_OK; } // try a single global variable if ((this->variable = feenox_get_variable_ptr(name)) != NULL) { this->defined = 1; this->full = 1; this->eval = feenox_distribution_eval_variable_global; return FEENOX_OK; } // not finding an actual distribution is not an error, there are optional distributions this->defined = 0; this->full = 0; this->eval = feenox_distribution_eval; return FEENOX_OK; } // default virtual method for undefined distributions double feenox_distribution_eval(distribution_t *this, const double *x, material_t *material) { this->value = 0; return this->value; } double feenox_distribution_eval_variable_global(distribution_t *this, const double *x, material_t *material) { this->value = feenox_var_value(this->variable); return this->value; } double feenox_distribution_eval_function_global(distribution_t *this, const double *x, material_t *material) { this->value = feenox_function_eval(this->function, x); return this->value; } double feenox_distribution_eval_variable_local(distribution_t *this, const double *x, material_t *material) { if (material == NULL) { this->value = 0; return this->value; } if (material != this->last_material) { char *var_name = NULL; feenox_check_minusone(asprintf(&var_name, "%s_%s", this->name, material->name)); if ((this->variable = feenox_get_variable_ptr(var_name)) == NULL) { feenox_push_error_message("cannot find variable '%s'", var_name); feenox_runtime_error(); } this->last_material = material; feenox_free(var_name); } this->value = feenox_var_value(this->variable); return this->value; } double feenox_distribution_eval_function_local(distribution_t *this, const double *x, material_t *material) { if (material == NULL) { this->value = 0; return this->value; } if (material != this->last_material) { char *function_name = NULL; feenox_check_minusone(asprintf(&function_name, "%s_%s", this->name, material->name)); if ((this->function = feenox_get_function_ptr(function_name)) == NULL) { feenox_push_error_message("cannot find function '%s'", function_name); feenox_runtime_error(); } this->last_material = material; this->expr = &this->function->algebraic_expression; feenox_free(function_name); } this->value = feenox_function_eval(this->function, x); return this->value; } double feenox_distribution_eval_property(distribution_t *this, const double *x, material_t *material) { if (material == NULL) { // these can be zeroes if the properties do not depend on space if (x != NULL) { switch (feenox.pde.dim) { case 1: feenox_push_error_message("cannot find a material for point x=%g", x[0]); break; case 2: feenox_push_error_message("cannot find a material for point x=%g, y=%g", x[0], x[1]); break; case 3: feenox_push_error_message("cannot find a material for point x=%g, y=%g, z=%g", x[0], x[1], x[2]); break; } } else { feenox_push_error_message("no material nor coordinate for property '%s'", this->name); } feenox_runtime_error(); } if (material != this->last_material) { this->last_material = material; property_data_t *property_data = NULL; HASH_FIND_STR(material->property_datums, this->property->name, property_data); this->last_property_data = property_data; if (property_data != NULL) { this->expr = &property_data->expr; } else { this->expr = NULL; this->value = 0; return this->value; } } if (this->last_property_data != NULL) { if (x != NULL) { // the property has an expression of x,y & z, it's not a function feenox_var_value(feenox.mesh.vars.x) = x[0]; if (feenox.pde.dim > 1) { feenox_var_value(feenox.mesh.vars.y) = x[1]; if (feenox.pde.dim > 2) { feenox_var_value(feenox.mesh.vars.z) = x[2]; } } } this->value = feenox_expression_eval(&this->last_property_data->expr); return this->value; } this->value = 0; return 0; } int feenox_pull_dependencies_variables_function(var_ll_t **to, function_t *function) { if (function->algebraic_expression.items != NULL) { feenox_pull_dependencies_variables(to, function->algebraic_expression.variables); } else { // we have to assume it depends on x,y & z var_ll_t *x; feenox_check_alloc(x = calloc(1, sizeof(var_ll_t))); x->var = feenox.mesh.vars.x; LL_APPEND(*to, x); if (function->n_arguments > 1) { var_ll_t *y; feenox_check_alloc(y = calloc(1, sizeof(var_ll_t))); y->var = feenox.mesh.vars.y; LL_APPEND(*to, y); if (function->n_arguments > 2) { var_ll_t *z; feenox_check_alloc(z = calloc(1, sizeof(var_ll_t))); z->var = feenox.mesh.vars.z; LL_APPEND(*to, z); } } } return FEENOX_OK; } int feenox_pull_dependencies_functions_function(function_ll_t **to, function_t *function) { if (function->algebraic_expression.items != NULL) { feenox_pull_dependencies_functions(to, function->algebraic_expression.functions); } return FEENOX_OK; } feenox-1.1/src/pdes/dirichlet.c0000644000175000017500000003533614773607165013447 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox routines to handle dirichlet BCs * * Copyright (C) 2015-2023 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_problem_dirichlet_add(size_t j_global, unsigned int g, double value) { feenox.pde.dirichlet_nodes[feenox.pde.dirichlet_k] = feenox.pde.mesh->node[j_global].tag; feenox.pde.dirichlet_dofs[feenox.pde.dirichlet_k] = g; #ifdef HAVE_PETSC feenox.pde.dirichlet_indexes[feenox.pde.dirichlet_k] = feenox.pde.mesh->node[j_global].index_dof[g]; feenox.pde.dirichlet_values[feenox.pde.dirichlet_k] = value; #endif feenox.pde.dirichlet_k++; return FEENOX_OK; } int feenox_problem_multifreedom_add(size_t j_global, double *coefficients) { #ifdef HAVE_PETSC PetscInt *l = NULL; feenox_check_alloc(l = calloc(feenox.pde.dofs, sizeof(PetscInt))); gsl_matrix *c = NULL; feenox_check_alloc(c = gsl_matrix_alloc(1, feenox.pde.dofs)); for (int g = 0; g < feenox.pde.dofs; g++) { l[g] = feenox.pde.mesh->node[j_global].index_dof[g]; gsl_matrix_set(c, 0, g, coefficients[g]); } feenox.pde.multifreedom_indexes[feenox.pde.multifreedom_k] = l; feenox.pde.multifreedom_coefficients[feenox.pde.multifreedom_k] = c; feenox.pde.multifreedom_k++; #endif return FEENOX_OK; } // evaluates the dirichlet BCs and stores them in the internal representation int feenox_problem_dirichlet_eval(void) { #ifdef HAVE_PETSC size_t n_bcs = 0; if (feenox.pde.dirichlet_rows == 0) { // on the first iteration, assume that all the nodes need a dirichlet BC // then we trim the extra space to save memory // caution! in small problems we might end up with more bcs than nodes // because there might nodes counted more than once because we loop over elements // TODO: allow the user to provide a factor at runtime n_bcs = 1.2*feenox.pde.dofs * (feenox.pde.last_node - feenox.pde.first_node); feenox_check_alloc(feenox.pde.dirichlet_nodes = calloc(n_bcs, sizeof(size_t))); feenox_check_alloc(feenox.pde.dirichlet_dofs = calloc(n_bcs, sizeof(int))); feenox_check_alloc(feenox.pde.dirichlet_indexes = calloc(n_bcs, sizeof(PetscInt))); feenox_check_alloc(feenox.pde.dirichlet_values = calloc(n_bcs, sizeof(PetscScalar))); feenox_check_alloc(feenox.pde.dirichlet_derivatives = calloc(n_bcs, sizeof(PetscScalar))); feenox_check_alloc(feenox.pde.multifreedom_indexes = calloc(n_bcs, sizeof(PetscInt *))); feenox_check_alloc(feenox.pde.multifreedom_coefficients = calloc(n_bcs, sizeof(PetscScalar *))); } else { // if we are here then we know more or less the number of BCs we need n_bcs = feenox.pde.dirichlet_rows; } feenox.pde.dirichlet_k = 0; feenox.pde.multifreedom_k = 0; for (size_t j_global = feenox.pde.first_node; j_global < feenox.pde.last_node; j_global++) { // TODO: optimize these ugly nested loops // maybe if we went the other way and looped over the elements first? // merge_sort + remove duplicates? physical_group_t *last_physical_group = NULL; element_ll_t *element_list = NULL; LL_FOREACH(feenox.pde.mesh->node[j_global].element_list, element_list) { element_t *element = element_list->element; if (element != NULL && element->type->dim < feenox.pde.dim && element->physical_group != NULL && element->physical_group != last_physical_group) { last_physical_group = element->physical_group; for (int i = 0; i < element->physical_group->n_bcs; i++) { bc_data_t *bc_data = NULL; DL_FOREACH(element->physical_group->bc[i]->bc_datums, bc_data) { // if there is a condition we evaluate it now if (bc_data->set_essential != NULL && (bc_data->condition.items == NULL || fabs(feenox_expression_eval(&bc_data->condition)) > DEFAULT_CONDITION_THRESHOLD)) { // TODO: normal-dependent if (bc_data->space_dependent) { feenox_fem_update_coord_vars(feenox.pde.mesh->node[j_global].x); } // TODO: for multi-freedom high-order nodes end up with a different penalty weight // TODO: pass the node instead of the index feenox_call(bc_data->set_essential(bc_data, element, j_global)); } } } } } } // now we know how many rows we need to change if (feenox.pde.dirichlet_rows != feenox.pde.dirichlet_k) { feenox.pde.dirichlet_rows = feenox.pde.dirichlet_k; // if k == 0 this like freeing feenox_check_alloc(feenox.pde.dirichlet_nodes = realloc(feenox.pde.dirichlet_nodes, feenox.pde.dirichlet_rows * sizeof(size_t))); feenox_check_alloc(feenox.pde.dirichlet_dofs = realloc(feenox.pde.dirichlet_dofs, feenox.pde.dirichlet_rows * sizeof(int))); feenox_check_alloc(feenox.pde.dirichlet_indexes = realloc(feenox.pde.dirichlet_indexes, feenox.pde.dirichlet_rows * sizeof(PetscInt))); feenox_check_alloc(feenox.pde.dirichlet_values = realloc(feenox.pde.dirichlet_values, feenox.pde.dirichlet_rows * sizeof(PetscScalar))); feenox_check_alloc(feenox.pde.dirichlet_derivatives = realloc(feenox.pde.dirichlet_derivatives, feenox.pde.dirichlet_rows * sizeof(PetscScalar))); } if (feenox.pde.multifreedom_nodes != feenox.pde.multifreedom_k) { feenox.pde.multifreedom_nodes = feenox.pde.multifreedom_k; feenox_check_alloc(feenox.pde.multifreedom_indexes = realloc(feenox.pde.multifreedom_indexes, feenox.pde.multifreedom_nodes * sizeof(PetscInt *))); feenox_check_alloc(feenox.pde.multifreedom_coefficients = realloc(feenox.pde.multifreedom_coefficients, feenox.pde.multifreedom_nodes * sizeof(gsl_matrix *))); } #endif return FEENOX_OK; } #ifdef HAVE_PETSC // K - stiffness matrix: needs one (alpha) in the diagonal, value (alpha*value) in b and keep symmetry // b - RHS: needs to be updated when modifying K // this is called only when solving an explicit KSP (or EPS) so // it takes K and b and writes K_bc and b_bc int feenox_problem_dirichlet_set_K(void) { if (feenox.pde.dirichlet_scale == 0) { feenox_problem_dirichlet_compute_scale(); } // sometimes there are hanging nodes with no associated volumes // this can trigger zeros on the diagonal and MatZeroRowsColumns complains if (feenox.pde.hanging_nodes) { int found = 0; Vec vec_diagonal = NULL; petsc_call(VecDuplicate(feenox.pde.phi, &vec_diagonal)); petsc_call(MatGetDiagonal(feenox.pde.K, vec_diagonal)); const PetscScalar *array_diagonal; petsc_call(VecGetArrayRead(vec_diagonal, &array_diagonal)); PetscInt size = feenox.pde.last_row - feenox.pde.first_row; petsc_call(MatSetOption(feenox.pde.K, MAT_NEW_NONZERO_ALLOCATION_ERR, PETSC_FALSE)); for (PetscInt j = 0; j < size; j++) { if (array_diagonal[j] == 0) { found = 1; if (feenox.pde.hanging_nodes == hanging_nodes_detect) { size_t index = j / feenox.pde.dofs; if (j % index == 0) { // only report the first dof where the hanging node is found feenox_push_error_message("%ld", feenox.pde.mesh->node[index].tag); } } else { PetscInt row = feenox.pde.first_row + j; petsc_call(MatSetValue(feenox.pde.K, row, row, feenox.pde.dirichlet_scale, INSERT_VALUES)); } } } petsc_call(MatSetOption(feenox.pde.K, MAT_NEW_NONZERO_ALLOCATION_ERR, PETSC_TRUE)); petsc_call(VecRestoreArrayRead(vec_diagonal, &array_diagonal)); petsc_call(VecDestroy(&vec_diagonal)); int found_global = 0; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-value" MPI_Allreduce(&found, &found_global, 1, MPIU_INT, MPIU_SUM, PETSC_COMM_WORLD); #pragma GCC diagnostic pop if (found_global) { if (feenox.pde.hanging_nodes == hanging_nodes_detect) { feenox_push_error_message("hanging nodes detected:"); return FEENOX_ERROR; } else { petsc_call(MatAssemblyBegin(feenox.pde.K, MAT_FINAL_ASSEMBLY)); petsc_call(MatAssemblyEnd(feenox.pde.K, MAT_FINAL_ASSEMBLY)); } } } if (feenox.pde.K_bc == NULL) { petsc_call(MatDuplicate(feenox.pde.K, MAT_COPY_VALUES, &feenox.pde.K_bc)); petsc_call(PetscObjectSetName((PetscObject)(feenox.pde.K_bc), "K_bc")); } else { petsc_call(MatCopy(feenox.pde.K, feenox.pde.K_bc, SAME_NONZERO_PATTERN)); } // add multifreedom constrains using the penalty method (before setting the rows to zero) // TODO: multi-freedom constrains with lagrange if (feenox.pde.multifreedom_nodes > 0) { gsl_matrix *P = NULL; feenox_check_alloc(P = gsl_matrix_calloc(feenox.pde.dofs, feenox.pde.dofs)); for (unsigned int k = 0; k < feenox.pde.multifreedom_nodes; k++) { gsl_matrix *c = feenox.pde.multifreedom_coefficients[k]; PetscInt *l = feenox.pde.multifreedom_indexes[k]; gsl_matrix_set_zero(P); feenox_call(feenox_blas_BtB(c, feenox_var_value(feenox.pde.vars.penalty_weight), P)); petsc_call(MatSetValues(feenox.pde.K_bc, feenox.pde.dofs, l, feenox.pde.dofs, l, gsl_matrix_ptr(P, 0, 0), ADD_VALUES)); } gsl_matrix_free(P); } int has_multidof_global = 0; int has_multidof_local = (feenox.pde.multifreedom_nodes > 0); #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-value" MPI_Allreduce(&has_multidof_local, &has_multidof_global, 1, MPIU_INT, MPIU_SUM, PETSC_COMM_WORLD); #pragma GCC diagnostic pop if (has_multidof_global) { petsc_call(MatAssemblyBegin(feenox.pde.K_bc, MAT_FINAL_ASSEMBLY)); petsc_call(MatAssemblyEnd(feenox.pde.K_bc, MAT_FINAL_ASSEMBLY)); } // this vector holds the dirichlet values and is used to re-write // the actual rhs vector b in order to keep the symmetry of K Vec rhs = NULL; if (feenox.pde.b != NULL) { if (feenox.pde.b_bc == NULL) { petsc_call(VecDuplicate(feenox.pde.b, &feenox.pde.b_bc)); petsc_call(PetscObjectSetName((PetscObject)(feenox.pde.b_bc), "b_bc")); } petsc_call(VecCopy(feenox.pde.b, feenox.pde.b_bc)); petsc_call(MatCreateVecs(feenox.pde.K, NULL, &rhs)); petsc_call(VecSetValues(rhs, feenox.pde.dirichlet_rows, feenox.pde.dirichlet_indexes, feenox.pde.dirichlet_values, INSERT_VALUES)); } PetscScalar diagonal = (feenox.pde.eigen_dirichlet_zero == eigen_dirichlet_zero_K) ? 0 : feenox.pde.dirichlet_scale; if (feenox.pde.symmetric_K) { petsc_call(MatZeroRowsColumns(feenox.pde.K_bc, feenox.pde.dirichlet_rows, feenox.pde.dirichlet_indexes, diagonal, rhs, feenox.pde.b_bc)); } else { petsc_call(MatZeroRows(feenox.pde.K_bc, feenox.pde.dirichlet_rows, feenox.pde.dirichlet_indexes, diagonal, rhs, feenox.pde.b_bc)); } if (rhs != NULL) { petsc_call(VecDestroy(&rhs)); } return FEENOX_OK; } // M - mass matrix: needs a zero in the diagonal and the same symmetry scheme that K // this is called only when solving an EPS so it takes // M and writes M_bc int feenox_problem_dirichlet_set_M(void) { if (feenox.pde.M_bc == NULL) { petsc_call(MatDuplicate(feenox.pde.M, MAT_COPY_VALUES, &feenox.pde.M_bc)); petsc_call(PetscObjectSetName((PetscObject)(feenox.pde.M_bc), "M_bc")); } else { petsc_call(MatCopy(feenox.pde.M, feenox.pde.M_bc, SAME_NONZERO_PATTERN)); } PetscScalar diagonal = (feenox.pde.eigen_dirichlet_zero == eigen_dirichlet_zero_M) ? 0 : feenox.pde.dirichlet_scale; if (feenox.pde.symmetric_M) { petsc_call(MatZeroRowsColumns(feenox.pde.M_bc, feenox.pde.dirichlet_rows, feenox.pde.dirichlet_indexes, diagonal, NULL, NULL)); } else { petsc_call(MatZeroRows(feenox.pde.M_bc, feenox.pde.dirichlet_rows, feenox.pde.dirichlet_indexes, diagonal, NULL, NULL)); } return FEENOX_OK; } // J - Jacobian matrix: same as K but without the RHS vector int feenox_problem_dirichlet_set_J(Mat J) { if (feenox.pde.dirichlet_scale == 0) { feenox_problem_dirichlet_compute_scale(); } // the jacobian is exactly one (actually alpha) for the dirichlet values and zero otherwise without keeping symmetry petsc_call(MatZeroRowsColumns(J, feenox.pde.dirichlet_rows, feenox.pde.dirichlet_indexes, feenox.pde.dirichlet_scale, NULL, NULL)); return FEENOX_OK; } // phi - solution: the BC values are set directly in order to be used as a initial condition or guess int feenox_problem_dirichlet_set_phi(Vec phi) { petsc_call(VecSetValues(phi, feenox.pde.dirichlet_rows, feenox.pde.dirichlet_indexes, feenox.pde.dirichlet_values, INSERT_VALUES)); return FEENOX_OK; } // phi - solution: the values at the BC DOFs are zeroed int feenox_problem_dirichlet_set_phi_dot(Vec phi_dot) { petsc_call(VecSetValues(phi_dot, feenox.pde.dirichlet_rows, feenox.pde.dirichlet_indexes, feenox.pde.dirichlet_derivatives, INSERT_VALUES)); return FEENOX_OK; } // r - residual: the BC indexes are set to the difference between the value and the solution, scaled by alpha int feenox_problem_dirichlet_set_r(Vec r, Vec phi) { size_t k; // TODO: put this array somewhere and avoid allocating/freeing each time PetscScalar *diff; feenox_check_alloc(diff = calloc(feenox.pde.dirichlet_rows, sizeof(PetscScalar))); petsc_call(VecGetValues(phi, feenox.pde.dirichlet_rows, feenox.pde.dirichlet_indexes, diff)); if (feenox.pde.dirichlet_scale == 0) { feenox_problem_dirichlet_compute_scale(); } for (k = 0; k < feenox.pde.dirichlet_rows; k++) { diff[k] -= feenox.pde.dirichlet_values[k]; diff[k] *= feenox.pde.dirichlet_scale; } petsc_call(VecSetValues(r, feenox.pde.dirichlet_rows, feenox.pde.dirichlet_indexes, diff, INSERT_VALUES)); feenox_free(diff); return FEENOX_OK; } // this is alpha in https://scicomp.stackexchange.com/questions/3298/appropriate-space-for-weak-solutions-to-an-elliptical-pde-with-mixed-inhomogeneo/3300#3300 int feenox_problem_dirichlet_compute_scale(void) { if (feenox.pde.dirichlet_scale_fraction != 0) { PetscScalar trace = 0; petsc_call(MatGetTrace(feenox.pde.K, &trace)); feenox.pde.dirichlet_scale = feenox.pde.dirichlet_scale_fraction * trace/feenox.pde.size_global; } else if (feenox.pde.dirichlet_scale == 0) { feenox.pde.dirichlet_scale = 1.0; } return FEENOX_OK; } #endif feenox-1.1/src/pdes/solve.c0000644000175000017500000001431214773607165012617 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's problem-solving routines * * Copyright (C) 2021--2025 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_instruction_solve_problem(void *arg) { #ifdef HAVE_PETSC // init ---------------------------------------------------------------------- petsc_call(PetscLogStagePush(feenox.pde.stage_init)); // initialize only if we did not initialize before if (feenox.pde.spatial_unknowns == 0) { // if there is no explicit mesh, use the main one if (feenox.pde.mesh == NULL && (feenox.pde.mesh = feenox.mesh.mesh_main) == NULL) { feenox_push_error_message("unknown mesh (no READ_MESH keyword)"); return FEENOX_ERROR; } feenox_call(feenox.pde.init_before_run()); if (feenox.pde.solve == NULL) { feenox_push_error_message("internal mismatch, undefined solver"); return FEENOX_ERROR; } feenox_call(feenox_problem_init_runtime_general()); } if (feenox_var_value(feenox_special_var(in_static)) && feenox.pde.initial_guess != NULL) { // TODO: what about SLEPc? feenox_call(feenox_function_to_phi(feenox.pde.initial_guess, feenox.pde.phi)); } petsc_call(PetscLogStagePop()); // --------------------------------------------------------------------------- // solve the problem with this per-mathematics virtual method // (which in turn calls a per-physics matrix & vector builds) feenox_call(feenox.pde.solve()); // post ---------------------------------------------------------------------- petsc_call(PetscLogStagePush(feenox.pde.stage_post)); // TODO: how to do this in parallel? feenox_call(feenox_problem_phi_to_solution((feenox.pde.nev == 0) ? feenox.pde.phi : feenox.pde.eigenvector[0])); if (feenox.pde.solve_post != NULL) { feenox_call(feenox.pde.solve_post()); } petsc_call(PetscLogStagePop()); // --------------------------------------------------------------------------- #endif return FEENOX_OK; } #ifdef HAVE_PETSC int feenox_function_to_phi(function_t *function, Vec phi) { // fill the petsc vector with the data from the initial condition function of space size_t j = 0; for (j = feenox.pde.first_node; j < feenox.pde.last_node; j++) { petsc_call(VecSetValue(phi, feenox.pde.mesh->node[j].index_dof[0], feenox_function_eval(function, feenox.pde.mesh->node[j].x), INSERT_VALUES)); } // TODO: add prefixes to allow -vec_view petsc_call(VecAssemblyBegin(phi)); petsc_call(VecAssemblyEnd(phi)); return FEENOX_OK; } int feenox_problem_phi_to_solution(Vec phi) { VecScatter vscat; Vec phi_full; PetscScalar *phi_full_array; PetscInt nlocal; // TODO: if nprocs == 1 then we already have the full vector petsc_call(VecScatterCreateToAll(phi, &vscat, &phi_full)); petsc_call(VecScatterBegin(vscat, phi, phi_full, INSERT_VALUES, SCATTER_FORWARD)); petsc_call(VecScatterEnd(vscat, phi, phi_full, INSERT_VALUES, SCATTER_FORWARD)); petsc_call(VecGetLocalSize(phi_full, &nlocal)); if (nlocal != feenox.pde.size_global) { feenox_push_error_message("internal check of problem size with scatter failed, %d != %d\n", nlocal, feenox.pde.size_global); return FEENOX_ERROR; } petsc_call(VecGetArray(phi_full, &phi_full_array)); // make up G functions with the solution for (size_t j = 0; j < feenox.pde.spatial_unknowns; j++) { if (feenox.pde.mesh->node[j].phi == NULL) { feenox_check_alloc(feenox.pde.mesh->node[j].phi = calloc(feenox.pde.dofs, sizeof(double))); } for (unsigned int g = 0; g < feenox.pde.dofs; g++) { feenox.pde.mesh->node[j].phi[g] = phi_full_array[feenox.pde.mesh->node[j].index_dof[g]]; // if we are not in rough mode we fill the solution here // because it is easier, in rough mode we need to // iterate over the elements instead of over the nodes if (feenox.pde.rough == 0) { feenox_vector_set(feenox.pde.solution[g]->vector_value, j, feenox.pde.mesh->node[j].phi[g]); } if (feenox.pde.nev > 1) { PetscScalar xi = 0; for (int i = 0; i < feenox.pde.nev; i++) { // the values already have the excitation factor PetscInt index = feenox.pde.mesh->node[j].index_dof[g]; petsc_call(VecGetValues(feenox.pde.eigenvector[i], 1, &index, &xi)); feenox_vector_set(feenox.pde.mode[g][i]->vector_value, j, xi); // TODO: point this to the former! feenox_vector_set(feenox.pde.vectors.phi[i], j, xi); } } } } petsc_call(VecRestoreArray(phi_full, &phi_full_array)); petsc_call(VecDestroy(&phi_full)); petsc_call(VecScatterDestroy(&vscat)); if (feenox.pde.rough) { node_t *node; // in rough mode we need to iterate over the elements first and then over the nodes // TODO: see if the order of the loops is the optimal one for (unsigned int g = 0; g < feenox.pde.dofs; g++) { for (size_t i = 0; i < feenox.pde.mesh_rough->n_elements; i++) { for (size_t j = 0; j < feenox.pde.mesh_rough->element[i].type->nodes; j++) { node = feenox.pde.mesh_rough->element[i].node[j]; feenox_vector_set(feenox.pde.solution[g]->vector_value, node->index_mesh, node->phi[g]); } } } } if (feenox.pde.compute_gradients) { feenox_call(feenox_problem_gradient_compute()); } return FEENOX_OK; } #endif int feenox_problem_init_default(void) { return FEENOX_OK; } feenox-1.1/src/pdes/build.c0000644000175000017500000003404214773607165012570 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox routines to build elemental objects * * Copyright (C) 2015-2023 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_problem_build(void) { #ifdef HAVE_PETSC size_t step = ceil((double)feenox.pde.mesh->n_elements/100.0); if (step < 1) { step = 1; } // TODO: may we don't need to always empty stuff, i.e. if we decide to re-use the matrices // empty global objects if (feenox.pde.has_stiffness) { petsc_call(MatZeroEntries(feenox.pde.K)); } if (feenox.pde.has_mass) { petsc_call(MatZeroEntries(feenox.pde.M)); } if (feenox.pde.has_jacobian_K) { petsc_call(MatZeroEntries(feenox.pde.JK)); } if (feenox.pde.has_jacobian_b) { petsc_call(MatZeroEntries(feenox.pde.Jb)); } if (feenox.pde.has_rhs) { petsc_call(VecZeroEntries(feenox.pde.b)); } size_t volumetric_elements = 0; int ascii_progress_chars = 0; for (size_t i = 0; i < feenox.pde.mesh->n_elements; i++) { element_t *e = &feenox.pde.mesh->element[i]; if (is_element_local(feenox.pde.mesh, e)) { // ------ progress bar ------------------------------------------ if (feenox.pde.progress_ascii == PETSC_TRUE && (i % step) == 0) { printf(CHAR_PROGRESS_BUILD); fflush(stdout); ascii_progress_chars++; } // -------------------------------------------------------------- // TODO: make a list of bulk elements and another with BC elements if (e->type->dim == feenox.pde.dim) { // volumetric elements need volumetric builds // TODO: process only elements that are local, i.e. the partition number // matches the local rank (not necessarily one to one) // TODO: check if we can skip re-building in linear transient and/or // nonlinear BCs only feenox_call(feenox_problem_build_element_volumetric(e)); volumetric_elements++; } else if (e->physical_group != NULL) { // lower-dimensional elements might have BCs (or not) for (int i = 0; i < e->physical_group->n_bcs; i++) { bc_data_t *bc_data = NULL; DL_FOREACH(e->physical_group->bc[i]->bc_datums, bc_data) { // we only handle natural BCs here, essential BCs are handled in feenox_dirichlet_*() if (bc_data->set_natural != NULL && bc_data->disabled == 0) { // and only apply them if the condition holds true (or if there's no condition at all) if (bc_data->condition.items == NULL || fabs(feenox_expression_eval(&bc_data->condition)) > DEFAULT_CONDITION_THRESHOLD) { feenox_call(feenox_problem_build_element_natural_bc(e, bc_data)); } } } } } } } int valid_local = (volumetric_elements > 0); int valid_global = 0; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-value" MPI_Allreduce(&valid_local, &valid_global, 1, MPIU_INT, MPIU_SUM, PETSC_COMM_WORLD); #pragma GCC diagnostic pop if (valid_global == 0) { feenox_push_error_message("no volumetric elements found in '%s'", feenox.pde.mesh->file->name); return FEENOX_ERROR; } // do we need this? feenox_call(feenox_fem_elemental_caches_reset()); // xxx feenox_call(feenox_problem_build_assemble()); // TODO: put 100 as a define or as a variable if (feenox.pde.progress_ascii == PETSC_TRUE) { if (feenox.mpi_size == 1) { while (ascii_progress_chars++ < 100) { printf(CHAR_PROGRESS_BUILD); } } if (feenox.mpi_rank == 0) { printf("\n"); fflush(stdout); } } #endif return FEENOX_OK; } int feenox_problem_build_elemental_objects_allocate(element_t *this) { #ifdef HAVE_PETSC feenox_call(feenox_problem_build_elemental_objects_free()); feenox.fem.current_elemental_type = this->type; feenox.fem.current_GJ = feenox.pde.dofs * this->type->nodes; feenox_check_alloc(feenox.fem.l = calloc(feenox.fem.current_GJ, sizeof(PetscInt))); if (feenox.pde.has_stiffness) { feenox_check_alloc(feenox.fem.Ki = gsl_matrix_calloc(feenox.fem.current_GJ, feenox.fem.current_GJ)); } if (feenox.pde.has_mass) { feenox_check_alloc(feenox.fem.Mi = gsl_matrix_calloc(feenox.fem.current_GJ, feenox.fem.current_GJ)); } if (feenox.pde.has_jacobian_K) { feenox_check_alloc(feenox.fem.JKi = gsl_matrix_calloc(feenox.fem.current_GJ, feenox.fem.current_GJ)); } if (feenox.pde.has_jacobian_b) { feenox_check_alloc(feenox.fem.Jbi = gsl_matrix_calloc(feenox.fem.current_GJ, feenox.fem.current_GJ)); } if (feenox.pde.has_rhs) { feenox_check_alloc(feenox.fem.bi = gsl_vector_calloc(feenox.fem.current_GJ)); if (feenox.fem.vec_f == NULL) { feenox_check_alloc(feenox.fem.vec_f = gsl_vector_calloc(feenox.pde.dofs)); } } if (feenox.pde.element_build_allocate_aux != NULL) { feenox.pde.element_build_allocate_aux(this->type->nodes); } #endif return FEENOX_OK; } int feenox_problem_build_elemental_objects_free(void) { #ifdef HAVE_PETSC gsl_matrix_free(feenox.fem.Ki); gsl_matrix_free(feenox.fem.Mi); gsl_matrix_free(feenox.fem.JKi); gsl_matrix_free(feenox.fem.Jbi); gsl_vector_free(feenox.fem.bi); feenox_free(feenox.fem.l); feenox.fem.current_elemental_type = NULL; #endif return FEENOX_OK; } int feenox_problem_build_element_volumetric(element_t *this) { #ifdef HAVE_PETSC // TODO: maybe we can relax this requirement if (this->physical_group == NULL) { feenox_push_error_message("volumetric element %d does not have an associated physical group", this->tag); return FEENOX_ERROR; } // if the current element's size is not equal to the previous one, re-allocate // TODO: data-oriented approach, store these objects in native arrays if (feenox.fem.current_elemental_type != this->type) { feenox_call(feenox_problem_build_elemental_objects_allocate(this)); } // initialize to zero the elemental objects if (feenox.pde.has_stiffness) { gsl_matrix_set_zero(feenox.fem.Ki); } if (feenox.pde.has_mass) { gsl_matrix_set_zero(feenox.fem.Mi); } if (feenox.pde.has_jacobian_K) { gsl_matrix_set_zero(feenox.fem.JKi); } if (feenox.pde.has_jacobian_b) { gsl_matrix_set_zero(feenox.fem.Jbi); } if (feenox.pde.has_rhs) { gsl_vector_set_zero(feenox.fem.bi); } // a single call over the element // if the specific pde wants, it can loop over gauss point in the call // or it can just do some things that are per-element only and then loop below if (feenox.pde.element_build_volumetric) { feenox_call(feenox.pde.element_build_volumetric(this)); } // or, if there's an entry point for gauss points, then we do the loop here if (feenox.pde.element_build_volumetric_at_gauss != NULL) { int Q = this->type->gauss[feenox.pde.mesh->integration].Q; for (unsigned int q = 0; q < Q; q++) { // TODO: hardcode the name of the method to allow inlining with LTO feenox_call(feenox.pde.element_build_volumetric_at_gauss(this, q)); } } /* printf("result\n"); printf("Ki\n"); feenox_debug_print_gsl_matrix(feenox.fem.Ki, stdout); printf("JKi\n"); feenox_debug_print_gsl_matrix(feenox.fem.JKi, stdout); */ // compute the indices of the DOFs to ensamble PetscInt *l = feenox_fem_compute_dof_indices(this, feenox.pde.dofs); if (feenox.pde.has_stiffness) { petsc_call(MatSetValues(feenox.pde.K, feenox.fem.current_GJ, l, feenox.fem.current_GJ, l, gsl_matrix_ptr(feenox.fem.Ki, 0, 0), ADD_VALUES)); } if (feenox.pde.has_mass) { petsc_call(MatSetValues(feenox.pde.M, feenox.fem.current_GJ, l, feenox.fem.current_GJ, l, gsl_matrix_ptr(feenox.fem.Mi, 0, 0), ADD_VALUES)); } if (feenox.pde.has_jacobian_K) { petsc_call(MatSetValues(feenox.pde.JK, feenox.fem.current_GJ, l, feenox.fem.current_GJ, l, gsl_matrix_ptr(feenox.fem.JKi, 0, 0), ADD_VALUES)); } if (feenox.pde.has_jacobian_b) { petsc_call(MatSetValues(feenox.pde.Jb, feenox.fem.current_GJ, l, feenox.fem.current_GJ, l, gsl_matrix_ptr(feenox.fem.Jbi, 0, 0), ADD_VALUES)); } if (feenox.pde.has_rhs) { petsc_call(VecSetValues(feenox.pde.b, feenox.fem.current_GJ, l, gsl_vector_ptr(feenox.fem.bi, 0), ADD_VALUES)); } #endif return FEENOX_OK; } int feenox_problem_build_element_natural_bc(element_t *this, bc_data_t *bc_data) { #ifdef HAVE_PETSC // total number of gauss points unsigned int Q = this->type->gauss[feenox.pde.mesh->integration].Q; if (feenox.fem.current_elemental_type != this->type) { feenox_call(feenox_problem_build_elemental_objects_allocate(this)); } if (feenox.fem.vec_f == NULL) { feenox_check_alloc(feenox.fem.vec_f = gsl_vector_calloc(feenox.pde.dofs)); } else { gsl_vector_set_zero(feenox.fem.vec_f); } if (feenox.pde.has_rhs) { gsl_vector_set_zero(feenox.fem.bi); } if (bc_data->fills_matrix) { gsl_matrix_set_zero(feenox.fem.Ki); } if (feenox.pde.has_jacobian_b) { gsl_matrix_set_zero(feenox.fem.Jbi); } for (unsigned int q = 0; q < Q; q++) { feenox_call(bc_data->set_natural(bc_data, this, q)); } PetscInt *l = feenox_fem_compute_dof_indices(this, feenox.pde.dofs); if (feenox.pde.has_rhs == PETSC_TRUE) { petsc_call(VecSetValues(feenox.pde.b, feenox.fem.current_GJ, l, gsl_vector_ptr(feenox.fem.bi, 0), ADD_VALUES)); } if (bc_data->fills_matrix) { petsc_call(MatSetValues(feenox.pde.K, feenox.fem.current_GJ, l, feenox.fem.current_GJ, l, gsl_matrix_ptr(feenox.fem.Ki, 0, 0), ADD_VALUES)); } /* if (feenox.pde.has_jacobian_K) { petsc_call(MatSetValues(feenox.pde.JK, feenox.pde.elemental_size, l, feenox.pde.elemental_size, l, gsl_matrix_ptr(feenox.pde.JKi, 0, 0), ADD_VALUES)); } */ if (feenox.pde.has_jacobian_b) { petsc_call(MatSetValues(feenox.pde.Jb, feenox.fem.current_GJ, l, feenox.fem.current_GJ, l, gsl_matrix_ptr(feenox.fem.Jbi, 0, 0), ADD_VALUES)); } #endif return FEENOX_OK; } /* inline double fino_compute_r_for_axisymmetric(element_t *element, int v) { double r_for_axisymmetric = 1.0; if (fino.problem_kind == problem_kind_axisymmetric) { if (element->x == NULL || element->x[v] == NULL) { mesh_compute_x_at_gauss(element, v, fino.mesh->integration); } if (fino.symmetry_axis == symmetry_axis_y) { if ((r_for_axisymmetric = element->x[v][0]) < ZERO) { feenox_push_error_message("axisymmetric problems with respect to y cannot have nodes with x <~ 0"); feenox_runtime_error(); } } else if (fino.symmetry_axis == symmetry_axis_x) { if ((r_for_axisymmetric = element->x[v][1]) < ZERO) { feenox_push_error_message("axisymmetric problems with respect to x cannot have nodes with y <~ 0"); feenox_runtime_error(); } } } return r_for_axisymmetric; } */ int feenox_problem_build_assemble(void) { #ifdef HAVE_PETSC // TODOD: which is better? measure! /* petsc_call(MatAssemblyBegin(feenox.K, MAT_FINAL_ASSEMBLY)); petsc_call(MatAssemblyEnd(feenox.K, MAT_FINAL_ASSEMBLY)); petsc_call(VecAssemblyBegin(feenox.phi)); petsc_call(VecAssemblyEnd(feenox.phi)); if (feenox.M != NULL) { petsc_call(MatAssemblyBegin(feenox.M, MAT_FINAL_ASSEMBLY)); petsc_call(MatAssemblyEnd(feenox.M, MAT_FINAL_ASSEMBLY)); } if (feenox.J != NULL) { petsc_call(VecAssemblyBegin(feenox.b)); petsc_call(VecAssemblyEnd(feenox.b)); } */ if (feenox.pde.phi != NULL) { petsc_call(VecAssemblyBegin(feenox.pde.phi)); } if (feenox.pde.b != NULL) { petsc_call(VecAssemblyBegin(feenox.pde.b)); } if (feenox.pde.K != NULL) { petsc_call(MatAssemblyBegin(feenox.pde.K, MAT_FINAL_ASSEMBLY)); } if (feenox.pde.JK != NULL) { petsc_call(MatAssemblyBegin(feenox.pde.JK, MAT_FINAL_ASSEMBLY)); } if (feenox.pde.Jb != NULL) { petsc_call(MatAssemblyBegin(feenox.pde.Jb, MAT_FINAL_ASSEMBLY)); } if (feenox.pde.M != NULL) { petsc_call(MatAssemblyBegin(feenox.pde.M, MAT_FINAL_ASSEMBLY)); } if (feenox.pde.phi != NULL) { petsc_call(VecAssemblyEnd(feenox.pde.phi)); } if (feenox.pde.b != NULL) { petsc_call(VecAssemblyEnd(feenox.pde.b)); } if (feenox.pde.K != NULL) { petsc_call(MatAssemblyEnd(feenox.pde.K, MAT_FINAL_ASSEMBLY)); } if (feenox.pde.JK != NULL) { petsc_call(MatAssemblyEnd(feenox.pde.JK, MAT_FINAL_ASSEMBLY)); } if (feenox.pde.Jb != NULL) { petsc_call(MatAssemblyEnd(feenox.pde.Jb, MAT_FINAL_ASSEMBLY)); } if (feenox.pde.M != NULL) { petsc_call(MatAssemblyEnd(feenox.pde.M, MAT_FINAL_ASSEMBLY)); } #endif return FEENOX_OK; } int feenox_problem_stiffness_add(element_t *e, unsigned int q, gsl_matrix *Kiq) { #ifdef HAVE_PETSC double wdet = feenox_fem_compute_w_det_at_gauss(e, q); gsl_matrix_scale(Kiq, wdet); gsl_matrix_add(feenox.fem.Ki, Kiq); #endif return FEENOX_OK; } int feenox_problem_rhs_add(element_t *e, unsigned int q, double *value) { #ifdef HAVE_PETSC for (unsigned int g = 0; g < feenox.pde.dofs; g++) { gsl_vector_set(feenox.fem.vec_f, g, value[g]); } double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, feenox.pde.mesh->integration); gsl_matrix *H_Gc = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); feenox_call(feenox_blas_Atb_accum(H_Gc, feenox.fem.vec_f, wdet, feenox.fem.bi)); #endif return FEENOX_OK; } feenox-1.1/src/pdes/init.c0000644000175000017500000007364214773607165012445 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's PDE initialization routines * * Copyright (C) 2015--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include // for signal #include // for sysconf #include // for setenv int feenox_problem_parse_time_init(void) { #ifdef HAVE_PETSC if (feenox.pde.petscinit_called == PETSC_TRUE) { return FEENOX_OK; } if (sizeof(PetscReal) != sizeof(PetscScalar)) { feenox_push_error_message("PETSc should be compiled with real scalar types and we have PetscReal = %d and PetscScalar = %d", sizeof(PetscReal), sizeof(PetscScalar)); return FEENOX_ERROR; } if (sizeof(PetscScalar) != sizeof(double)) { feenox_push_error_message("PETSc should be compiled with double-precision real scalar types and we have double = %d and PetscScalar = %d", sizeof(double), sizeof(PetscReal)); return FEENOX_ERROR; } // we already have processed basic options, now we loop over the original argv and convert // double-dash options to single-dash so --snes_view transforms into -snes_view // and split equal signs into two arguments, i.e. --mg_levels_pc_type=sor transforms into // -mg_levels_pc_type and sor separately int petsc_argc = 0; char **petsc_argv = NULL; if (feenox.argc != 0) { // in benchmark argc might be zero // worst-case scenario: all strings have arguments that we have to split into two feenox_check_alloc(petsc_argv = calloc(2*feenox.argc, sizeof(char *))); petsc_argv[0] = feenox.argv_orig[0]; for (int i = 0; i < feenox.argc; i++) { if (strlen(feenox.argv_orig[i]) > 2 && feenox.argv_orig[i][0] == '-' && feenox.argv_orig[i][1] == '-' && strcmp(feenox.argv_orig[i], "--check") && strcmp(feenox.argv_orig[i], "--ast")) { feenox_check_alloc(petsc_argv[++petsc_argc] = strdup(feenox.argv_orig[i]+1)); char *value = NULL; if ((value = strchr(petsc_argv[petsc_argc], '=')) != NULL) { *value = '\0'; petsc_argv[++petsc_argc] = strdup(value+1); } } } // this one takes into account argv[0] petsc_argc++; } PetscInt major = 0; PetscInt minor = 0; PetscInt subminor = 0; #ifdef HAVE_SLEPC // initialize SLEPc (which in turn initializes PETSc) with the original argv & argc petsc_call(SlepcInitialize(&petsc_argc, &petsc_argv, (char*)0, PETSC_NULLPTR)); // check the headers correspond to the runtime petsc_call(SlepcGetVersionNumber(&major, &minor, &subminor, NULL)); if (major != SLEPC_VERSION_MAJOR || minor != SLEPC_VERSION_MINOR || subminor != SLEPC_VERSION_SUBMINOR) { feenox_push_error_message("linked against SLEPc %d.%d.%d but using headers from %d.%d.%d", major, minor, subminor, SLEPC_VERSION_MAJOR, SLEPC_VERSION_MINOR, SLEPC_VERSION_SUBMINOR); return FEENOX_ERROR; } #else // initialize PETSc petsc_call(PetscInitialize(&petsc_argc, &petsc_argv, (char*)0, PETSC_NULLPTR)); #endif feenox_free(petsc_argv); // check the headers correspond to the runtime petsc_call(PetscGetVersionNumber(&major, &minor, &subminor, NULL)); if (major != PETSC_VERSION_MAJOR || minor != PETSC_VERSION_MINOR || subminor != PETSC_VERSION_SUBMINOR) { feenox_push_error_message("linked against PETSc %d.%d.%d but using headers from %d.%d.%d", major, minor, subminor, PETSC_VERSION_MAJOR, PETSC_VERSION_MINOR, PETSC_VERSION_SUBMINOR); return FEENOX_ERROR; } feenox.pde.petscinit_called = PETSC_TRUE; petsc_call(MPI_Comm_size(PETSC_COMM_WORLD, &feenox.mpi_size)); feenox_special_var_value(mpi_size) = (double)feenox.mpi_size; petsc_call(MPI_Comm_rank(PETSC_COMM_WORLD, &feenox.mpi_rank)); feenox_special_var_value(mpi_rank) = (double)feenox.mpi_rank; petsc_call(PetscLogStageRegister("init", &feenox.pde.stage_init)); petsc_call(PetscLogStageRegister("build", &feenox.pde.stage_build)); petsc_call(PetscLogStageRegister("solve", &feenox.pde.stage_solve)); petsc_call(PetscLogStageRegister("post", &feenox.pde.stage_post)); // segfaults are segfaults, try to leave PETSC out of them signal(SIGSEGV, SIG_DFL); // TODO: install out error handler for PETSc // petsc_call(PetscPushErrorHandler(&feenox_handler, NULL)); ///va+ksp_atol+name ksp_atol ///va+ksp_atol+detail Absolute tolerance of the iterative linear solver, as passed to PETSc’s ///va+ksp_atol+detail [`KSPSetTolerances`](https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/KSP/KSPSetTolerances.html) feenox.pde.vars.ksp_atol = feenox_define_variable_get_ptr("ksp_atol"); // TODO: set to PETSC_DEFAULT? ///va+ksp_atol+detail Default `1e-50`. feenox_var_value(feenox.pde.vars.ksp_atol) = 1e-50; // same as PETSc ///va+ksp_rtol+name ksp_rtol ///va+ksp_rtol+detail Relative tolerance of the iterative linear solver, ///va+ksp_rtol+detail as passed to PETSc’s ///va+ksp_rtol+detail [`KSPSetTolerances`](https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/KSP/KSPSetTolerances.html). feenox.pde.vars.ksp_rtol = feenox_define_variable_get_ptr("ksp_rtol"); ///va+ksp_rtol+detail Default `1e-6`. feenox_var_value(feenox.pde.vars.ksp_rtol) = 1e-6; // PETSc is 1e-5 ///va+ksp_divtol+name ksp_divtol ///va+ksp_divtol+detail Divergence tolerance of the iterative linear solver, ///va+ksp_divtol+detail as passed to PETSc’s ///va+ksp_divtol+detail [`KSPSetTolerances`](https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/KSP/KSPSetTolerances.html). feenox.pde.vars.ksp_divtol = feenox_define_variable_get_ptr("ksp_divtol"); ///va+ksp_divtol+detail Default `1e+4`. feenox_var_value(feenox.pde.vars.ksp_divtol) = 1e+4; // same as PETSc ///va+ksp_max_it+name ksp_max_it ///va+ksp_max_it+detail Number of maximum iterations of the iterative linear solver before diverging, ///va+ksp_max_it+detail as passed to PETSc’s ///va+ksp_max_it+detail [`KSPSetTolerances`](https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/KSP/KSPSetTolerances.html). feenox.pde.vars.ksp_max_it = feenox_define_variable_get_ptr("ksp_max_it"); ///va+ksp_max_it+detail Default `10,000`. feenox_var_value(feenox.pde.vars.ksp_max_it) = 10000; // same as PETSc ///va+snes_atol+name snes_atol ///va+snes_atol+detail Absolute tolerance of the non-linear solver, as passed to PETSc’s ///va+snes_atol+detail [`SNESSetTolerances`](https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSetTolerances.html) feenox.pde.vars.snes_atol = feenox_define_variable_get_ptr("snes_atol"); ///va+snes_atol+detail Default `1e-50`. feenox_var_value(feenox.pde.vars.snes_atol) = 1e-50; // same as PETSc ///va+snes_rtol+name snes_rtol ///va+snes_rtol+detail Relative tolerance of the non-linear solver, ///va+snes_rtol+detail as passed to PETSc’s ///va+snes_rtol+detail [`SNESSetTolerances`](https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSetTolerances.html). feenox.pde.vars.snes_rtol = feenox_define_variable_get_ptr("snes_rtol"); ///va+feenox_snes_rtol+detail Default `1e-8`. feenox_var_value(feenox.pde.vars.snes_rtol) = 1e-8; // same as PETSc ///va+snes_stol+name snes_stol ///va+snes_stol+detail Convergence tolerance of the non-linear solver in terms of the norm of the change in the solution between steps, ///va+snes_stol+detail as passed to PETSc’s ///va+snes_stol+detail [`SNESSetTolerances`](https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSetTolerances.html). feenox.pde.vars.snes_stol = feenox_define_variable_get_ptr("snes_stol"); ///va+snes_stol+detail Default `1e-8`. feenox_var_value(feenox.pde.vars.snes_stol) = 1e-8; // same as PETSc ///va+snes_max_it+name snes_max_it ///va+snes_max_itdetail Number of maximum iterations of the non-linear solver before diverging, ///va+snes_max_it+detail as passed to PETSc’s ///va+snes_max_it+detail [`SNESSetTolerances`](https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSetTolerances.html). feenox.pde.vars.snes_max_it = feenox_define_variable_get_ptr("snes_max_it"); ///va+snes_max_it+detail Default `50`. feenox_var_value(feenox.pde.vars.snes_max_it) = 50; // same as PETSc ///va+ts_atol+name ts_atol ///va+ts_atol+detail Absolute tolerance of the transient solver, as passed to PETSc’s ///va+ts_atol+detail [`TSSetTolerances`](https://petsc.org/release/docs/manualpages/TS/TSSetTolerances.html) feenox.pde.vars.ts_atol = feenox_define_variable_get_ptr("ts_atol"); ///va+ts_rtol+detail Default `1e-4`. feenox_var_value(feenox.pde.vars.ts_atol) = 1e-4; // same as PETSc ///va+ts_rtol+name ts_rtol ///va+ts_rtol+detail Relative tolerance of the transient solver, as passed to PETSc’s ///va+ts_rtol+detail [`TSSetTolerances`](https://petsc.org/release/docs/manualpages/TS/TSSetTolerances.html). feenox.pde.vars.ts_rtol = feenox_define_variable_get_ptr("ts_rtol"); ///va+ts_rtol+detail Default `1e-4`. feenox_var_value(feenox.pde.vars.ts_rtol) = 1e-4; // same as PETSc ///va+eps_tol+name eps_tol ///va+eps_tol+detail Tolerance (relative to the matrix norms) of the eigen solver, ///va+ksp_rtol+detail as passed to SLEPc’s ///va+ksp_rtol+detail [`EPSSetTolerances`](https://slepc.upv.es/documentation/current/docs/manualpages/EPS/EPSSetTolerances.html). feenox.pde.vars.eps_tol = feenox_define_variable_get_ptr("eps_tol"); ///va+ksp_rtol+detail Default `1e-8`. feenox_var_value(feenox.pde.vars.eps_tol) = 1e-8; // same as SLEPc ///va+eps_max_it+name eps_max_it ///va+eps_max_it Number of maximum iterations allowed in the eigen solver, ///va+eps_max_it+detail as passed to SLEPc’s ///va+ksp_rtol+detail [`EPSSetTolerances`](https://slepc.upv.es/documentation/current/docs/manualpages/EPS/EPSSetTolerances.html). feenox.pde.vars.eps_max_it = feenox_define_variable_get_ptr("eps_max_it"); ///va+snes_max_it+detail Default is a solver-dependent reasonable value`. feenox_var_value(feenox.pde.vars.eps_max_it) = PETSC_DEFAULT; ///va+eps_st_sigma+name eps_st_sigma ///va+eps_st_sigma Shift $\sigma$ associated with the spectral transformation. ///va+eps_st_sigma+detail as passed to SLEPc’s ///va+eps_st_sigma+detail [`STSetShift`](https://slepc.upv.es/documentation/current/docs/manualpages/ST/STSetShift.html). feenox.pde.vars.eps_st_sigma = feenox_define_variable_get_ptr("eps_st_sigma"); ///va+eps_st_sigma+detail Default is zero (but some PDEs can change it). feenox_var_value(feenox.pde.vars.eps_st_sigma) = 0; ///va+eps_st_nu+name eps_st_nu ///va+eps_st_nu Value $\nu$ of the anti-shift for the Cayley spectral transformation ///va+eps_st_nu+detail as passed to SLEPc’s ///va+eps_st_nu+detail [`STCayleySetAntishift`](https://slepc.upv.es/documentation/current/docs/manualpages/ST/STCayleySetAntishift.html). feenox.pde.vars.eps_st_nu = feenox_define_variable_get_ptr("eps_st_nu"); ///va+eps_st_nu+detail Default is zero (but some PDEs can change it). feenox_var_value(feenox.pde.vars.eps_st_nu) = 0; ///va+mumps_icntl_14+name mumps_icntl_14 ///va+mumps_icntl_14 MUMPS icntl value with the offset 14, relaxation value for the internal array. ///va+mumps_icntl_14+detail For some complex problems this value needs to be set. See MUMPS manual for details. feenox.pde.vars.mumps_icntl_14 = feenox_define_variable_get_ptr("mumps_icntl_14"); ///va+mumps_icntl_14+detail Default is zero, which means use MUMPS default. feenox_var_value(feenox.pde.vars.mumps_icntl_14) = 0; ///va+gamg_threshold+name gamg_threshold ///va+gamg_threshold Relative threshold to use for dropping edges in aggregation graph when using GAMG. ///va+gamg_threshold+detail See `PCGAMGSetThreshold()` in the PETSc documentation for further details. feenox.pde.vars.gamg_threshold = feenox_define_variable_get_ptr("gamg_threshold"); ///va+gamg_threshold+detail Default is zero (note that PETSc's default is -1). feenox_var_value(feenox.pde.vars.gamg_threshold) = 0; ///va+penalty_weight+name feenox_penalty_weight ///va+penalty_weight+detail The weight\ $w$ used when setting multi-freedom boundary conditions. ///va+penalty_weight+detail Higher values mean better precision in the constrain but worsen ///va+penalty_weight+detail the matrix condition number. feenox.pde.vars.penalty_weight = feenox_define_variable_get_ptr("penalty_weight"); ///va+feenox_penalty_weight+detail Default is `1e8`. feenox_var_value(feenox.pde.vars.penalty_weight) = 1e8; ///va+nodes_rough+name nodes_rough ///va+nodes_rough+detail The number of nodes of the mesh in `ROUGH` mode. feenox.pde.vars.nodes_rough = feenox_define_variable_get_ptr("nodes_rough"); ///va+total_dofs+name total_dofs ///va+total_dogs+detail The total number of degrees of freedom of the PDE being solved for. feenox.pde.vars.total_dofs = feenox_define_variable_get_ptr("total_dofs"); ///va+memory_available+name memory_available ///va+memory_available+detail Total available memory, in bytes. feenox.pde.vars.memory_available = feenox_define_variable_get_ptr("memory_available"); #ifdef HAVE_SYSCONF feenox_var_value(feenox.pde.vars.memory_available) = (double)(sysconf(_SC_PHYS_PAGES)*sysconf(_SC_PAGESIZE)); #else feenox_var_value(feenox.pde.vars.memory_available) = -1; #endif #endif return FEENOX_OK; } int feenox_problem_define_solutions(void) { #ifdef HAVE_PETSC char dimension_name[3][2] = {"x", "y", "z"}; if (feenox.pde.dim == 0) { feenox_push_error_message("do not know how many dimensions the problem has, tell me with DIMENSIONS in either PROBLEM or READ_MESH"); return FEENOX_ERROR; } if (feenox.pde.dofs == 0) { feenox_push_error_message("do not know how many degrees of freedom this problem has"); return FEENOX_ERROR; } if (feenox.pde.solution != NULL) { feenox_push_error_message("solutions already defined"); return FEENOX_ERROR; } feenox_check_alloc(feenox.pde.solution = calloc(feenox.pde.dofs, sizeof(function_t *))); feenox_check_alloc(feenox.pde.gradient = calloc(feenox.pde.dofs, sizeof(function_t *))); feenox_check_alloc(feenox.pde.delta_gradient = calloc(feenox.pde.dofs, sizeof(function_t *))); if (feenox.pde.nev > 0) { feenox_check_alloc(feenox.pde.mode = calloc(feenox.pde.dofs, sizeof(function_t *))); } for (unsigned int g = 0; g < feenox.pde.dofs; g++) { char *name = NULL; if (feenox.pde.unknown_name == NULL) { feenox_check_minusone(asprintf(&name, "phi%u", g+1)); } else { feenox_check_minusone(asprintf(&name, "%s", feenox.pde.unknown_name[g])); } feenox_check_alloc(feenox.pde.solution[g] = feenox_define_function_get_ptr(name, feenox.pde.dim)); feenox.pde.solution[g]->mesh = feenox.pde.mesh; if (feenox.pde.nev == 0) { // the derivatives of the solutions with respect to space feenox_check_alloc(feenox.pde.gradient[g] = calloc(feenox.pde.dim, sizeof(function_t *))); feenox_check_alloc(feenox.pde.delta_gradient[g] = calloc(feenox.pde.dim, sizeof(function_t *))); for (unsigned int d = 0; d < feenox.pde.dim; d++) { feenox.pde.solution[g]->var_argument[d] = feenox.mesh.vars.arr_x[d]; char *gradname = NULL; feenox_check_minusone(asprintf(&gradname, "d%sd%s", name, dimension_name[d])); feenox_check_alloc(feenox.pde.gradient[g][d] = feenox_define_function_get_ptr(gradname, feenox.pde.dim)); feenox_free(gradname); feenox.pde.gradient[g][d]->mesh = feenox.pde.solution[g]->mesh; feenox.pde.gradient[g][d]->var_argument = feenox.pde.solution[g]->var_argument; feenox.pde.gradient[g][d]->type = function_type_pointwise_mesh_node; feenox.pde.gradient[g][d]->spatial_derivative_of = feenox.pde.solution[g]; // this flag is used when interpolating feenox.pde.gradient[g][d]->spatial_derivative_with_respect_to = d; // this flag is used to know if gradients have to be computed feenox.pde.gradient[g][d]->is_gradient = 1; // same for uncertainty /* feenox_check_minusone(asprintf(&gradname, "delta_d%sd%s", name, dimension_name[d])); feenox_check_alloc(feenox.pde.delta_gradient[g][d] = feenox_define_function_get_ptr(gradname, feenox.pde.dim)); feenox_free(gradname); feenox.pde.delta_gradient[g][d]->mesh = feenox.pde.solution[g]->mesh; feenox.pde.delta_gradient[g][d]->var_argument = feenox.pde.solution[g]->var_argument; feenox.pde.delta_gradient[g][d]->type = function_type_pointwise_mesh_node; feenox.pde.delta_gradient[g][d]->is_gradient = 1; */ } } else { // there are many solution functions in modal feenox_check_alloc(feenox.pde.mode[g] = calloc(feenox.pde.nev, sizeof(function_t *))); for (int i = 0; i < feenox.pde.nev; i++) { char *modename = NULL; feenox_check_minusone(asprintf(&modename, "%s%d", name, i+1)); feenox_call(feenox_problem_define_solution_function(modename, &feenox.pde.mode[g][i], FEENOX_SOLUTION_NOT_GRADIENT)); feenox_free(modename); feenox.pde.mode[g][i]->mesh = feenox.pde.solution[g]->mesh; feenox.pde.mode[g][i]->var_argument = feenox.pde.solution[g]->var_argument; } } feenox_free(name); } #endif return FEENOX_OK; } int feenox_problem_define_solution_function(const char *name, function_t **function, int is_gradient) { // we can only define what's available at parse time if ((*function = feenox_define_function_get_ptr(name, feenox.pde.dim)) == NULL) { feenox_push_error_message("result function '%s' defined twice", name); return FEENOX_ERROR; } // we don't have a valid mesh here, do we? // (*function)->mesh = feenox.pde.mesh; // esto puede cambiar a rough despues // feenox_problem_define_solution_clean_nodal_arguments(*function); if (feenox.pde.solution == NULL) { feenox_call(feenox_problem_define_solutions()); } (*function)->var_argument = feenox.pde.solution[0]->var_argument; (*function)->type = (feenox.mesh.default_field_location == field_location_cells) ? function_type_pointwise_mesh_cell : function_type_pointwise_mesh_node; (*function)->is_gradient = is_gradient; return FEENOX_OK; } int feenox_problem_fill_aux_solution(function_t *function) { function->mesh = feenox.pde.rough==0 ? feenox.pde.mesh : feenox.pde.mesh_rough; function->data_size = function->mesh->n_nodes; feenox_call(feenox_create_pointwise_function_vectors(function)); for (unsigned int d = 0; d < function->n_arguments; d++) { feenox_realloc_vector_ptr(function->vector_argument[d], gsl_vector_ptr(function->mesh->nodes_argument[d], 0), 0); } return FEENOX_OK; } int feenox_problem_init_runtime_general(void) { #ifdef HAVE_PETSC // first set options from PETSC_OPTIONS if (feenox.pde.petsc_options != NULL) { petsc_call(PetscOptionsInsertString(NULL, feenox.pde.petsc_options)); } // command-line arguments take precedence over the options in the input file // so we have to read them here and overwrite what he have so far // recall that we already stripped off one dash from the original argv array PetscBool flag = PETSC_FALSE; ///op+progress+option `--progress` ///op+progress+desc print ASCII progress bars when solving PDEs if (feenox.pde.progress_ascii == PETSC_FALSE) { petsc_call(PetscOptionsHasName(PETSC_NULLPTR, PETSC_NULLPTR, "-progress", &feenox.pde.progress_ascii)); } ///op+mumps+option `--mumps` ///op+mumps+desc ask PETSc to use the direct linear solver MUMPS petsc_call(PetscOptionsHasName(PETSC_NULLPTR, PETSC_NULLPTR, "-mumps", &flag)); if (flag == PETSC_TRUE) { feenox.pde.ksp_type = strdup("mumps"); feenox.pde.pc_type = strdup("mumps"); } // read these guys just to avoid the "unused database option" complain petsc_call(PetscOptionsHasName(PETSC_NULLPTR, PETSC_NULLPTR, "-linear", &flag)); petsc_call(PetscOptionsHasName(PETSC_NULLPTR, PETSC_NULLPTR, "-non-linear", &flag)); petsc_call(PetscOptionsHasName(PETSC_NULLPTR, PETSC_NULLPTR, "-nonlinear", &flag)); // check if the dimensions match if (feenox.pde.dim != 0 && feenox.pde.mesh != NULL && feenox.pde.mesh->dim != 0 && feenox.pde.dim != feenox.pde.mesh->dim) { feenox_push_error_message("dimension mismatch, in PROBLEM %d != in READ_MESH %d", feenox.pde.dim, feenox.pde.mesh->dim); return FEENOX_ERROR; } // conversely, if we got them there, put it on the mesh if (feenox.pde.mesh != NULL && feenox.pde.mesh->dim == 0 && feenox.pde.dim != 0) { feenox.pde.mesh->dim = feenox.pde.dim; } if (feenox.pde.dim == 0) { feenox_push_error_message("could not determine the dimension of the problem, give them using DIMENSIONS in either READ_MESH or PROBLEM"); return FEENOX_ERROR; } // link the solution functions with the mesh // and check if we have to compute gradients for (unsigned int g = 0; g < feenox.pde.dofs; g++) { for (unsigned int m = 0; m < feenox.pde.dim; m++) { feenox.pde.solution[g]->var_argument[m] = feenox.mesh.vars.arr_x[m]; if (feenox.pde.gradient != NULL && feenox.pde.gradient[g] != NULL && feenox.pde.gradient[g][m] != NULL) { feenox.pde.compute_gradients |= feenox.pde.gradient[g][m]->used; } } feenox.pde.solution[g]->mesh = (feenox.pde.rough==0) ? feenox.pde.mesh : feenox.pde.mesh_rough; feenox_check_alloc(feenox.pde.solution[g]->var_argument = calloc(feenox.pde.dim, sizeof(var_t *))); feenox.pde.solution[g]->var_argument[0] = feenox.mesh.vars.x; if (feenox.pde.dim > 1) { feenox.pde.solution[g]->var_argument[1] = feenox.mesh.vars.y; if (feenox.pde.dim > 2) { feenox.pde.solution[g]->var_argument[2] = feenox.mesh.vars.z; } } feenox.pde.solution[g]->var_argument_allocated = 1; feenox.pde.solution[g]->type = function_type_pointwise_mesh_node; } if (feenox.pde.mesh != NULL && feenox.pde.unresolved_bcs == unresolved_bcs_detect) { // this is a loop over a hash, not over a linked list for (physical_group_t *physical_group = feenox.pde.mesh->physical_groups; physical_group != NULL; physical_group = physical_group->hh.next) { if (physical_group->n_bcs != 0 && physical_group->n_elements == 0) { feenox_push_error_message("physical entity '%s' has a BC but no associated elements. Set ALLOW_UNRESOLVED_BCS if you want to skip this check.", physical_group->name); return FEENOX_ERROR; } if (physical_group->material != NULL && physical_group->n_elements == 0) { feenox_push_error_message("physical group '%s' has a material but no associated elements. Set ALLOW_UNRESOLVED_BCS if you want to skip this check.", physical_group->name); return FEENOX_ERROR; } } } // allocate global petsc objects if (feenox.pde.size_global == 0) { if (feenox.pde.spatial_unknowns == 0) { feenox_push_error_message("internal error, problem init did not set global spatial unknowns"); return FEENOX_ERROR; } feenox.pde.size_global = feenox.pde.spatial_unknowns * feenox.pde.dofs; } // set the size of the eigenvectors (we did not know their size in init_parser() above for (int i = 0; i < feenox.pde.nev; i++) { feenox_call(feenox_vector_set_size(feenox.pde.vectors.phi[i], feenox.pde.size_global)); } feenox_var_value(feenox.pde.vars.total_dofs) = (double)(feenox.pde.size_global); // TODO: choose width from input //#if PETSC_VERSION_LT(3,19,0) feenox.pde.width = GSL_MAX(feenox.pde.mesh->max_nodes_per_element, feenox.pde.mesh->max_first_neighbor_nodes) * feenox.pde.dofs; //#endif // ask how many local nodes we own feenox.pde.nodes_local = PETSC_DECIDE; PetscInt n_nodes = feenox.pde.mesh->n_nodes; petsc_call(PetscSplitOwnership(PETSC_COMM_WORLD, &feenox.pde.nodes_local, &n_nodes)); feenox.pde.size_local = feenox.pde.dofs * feenox.pde.nodes_local; // the global stiffnes matrix feenox_check_alloc(feenox.pde.K = feenox_problem_create_matrix("K")); // the solution (unknown) vector feenox.pde.phi = feenox_problem_create_vector("phi"); // explicit initial value petsc_call(VecSet(feenox.pde.phi, 0)); // the right-hand-side vector if (feenox.pde.has_rhs) { feenox.pde.b = feenox_problem_create_vector("b"); } // the mass matrix for modal or heat transient if (feenox.pde.has_mass) { feenox_check_alloc(feenox.pde.M = feenox_problem_create_matrix("M")); } if (feenox.pde.has_jacobian_K) { feenox_check_alloc(feenox.pde.JK = feenox_problem_create_matrix("JK")); } if (feenox.pde.has_jacobian_b) { feenox_check_alloc(feenox.pde.Jb = feenox_problem_create_matrix("Jb")); } // ask for the local ownership range petsc_call(MatGetOwnershipRange(feenox.pde.K, &feenox.pde.first_row, &feenox.pde.last_row)); feenox.pde.first_node = feenox.pde.first_row / feenox.pde.dofs; feenox.pde.last_node = feenox.pde.last_row / feenox.pde.dofs; // TODO: honor mesh partitions // https://lists.mcs.anl.gov/pipermail/petsc-users/2014-April/021433.html if (feenox.pde.mesh->mpi_matches_partitions == mpi_matches_partitions_no) { feenox_call(feenox_compute_first_last_element(feenox.pde.mesh)); } // fill in the holders of the continuous functions that will hold the solution if (feenox.pde.rough == 0) { if (feenox.pde.solution == NULL) { feenox_push_error_message("inconsistent internal state, solution functions not allocated"); return FEENOX_ERROR; } for (unsigned int g = 0; g < feenox.pde.dofs; g++) { feenox.pde.solution[g]->mesh = feenox.pde.mesh; feenox.pde.solution[g]->data_size = feenox.pde.spatial_unknowns; feenox_create_pointwise_function_vectors(feenox.pde.solution[g]); for (unsigned int d = 0; d < feenox.pde.solution[g]->n_arguments; d++) { feenox_realloc_vector_ptr(feenox.pde.solution[g]->vector_argument[d], gsl_vector_ptr(feenox.pde.solution[g]->mesh->nodes_argument[d], 0), 0); } // in some cases (e.g. neutron) we do not know if we have to solve // a KSP or an EPS until we read the material data, which is far too late // in that case, we usually do not care about all the modes so feenox.pde.mode is null if (feenox.pde.nev > 0 && feenox.pde.mode != NULL) { unsigned int i = 0; for (i = 0; i < feenox.pde.nev; i++) { feenox.pde.mode[g][i]->mesh = feenox.pde.mesh; feenox.pde.mode[g][i]->data_size = feenox.pde.mesh->n_nodes; feenox_create_pointwise_function_vectors(feenox.pde.mode[g][i]); for (unsigned int d = 0; d < feenox.pde.mode[g][i]->n_arguments; d++) { feenox_realloc_vector_ptr(feenox.pde.mode[g][i]->vector_argument[d], gsl_vector_ptr(feenox.pde.mode[g][i]->mesh->nodes_argument[d], 0), 0); } } } } } else { /* mesh_post_t *post; feenox_call(feenox_init_rough_mesh()); // maybe the macros fill_* can be used for (g = 0; g < feenox.pde.degrees; g++) { feenox.pde.solution[g]->mesh = feenox.pde.mesh_rough; feenox.pde.solution[g]->data_size = feenox.pde.mesh_rough->n_nodes; feenox.pde.solution[g]->data_argument = feenox.pde.mesh_rough->nodes_argument; feenox.pde.solution[g]->data_value = calloc(feenox.pde.mesh_rough->n_nodes, sizeof(double)); } // si estamos en rough tenemos que cambiar la malla de salida de los MESH_POSTs LL_FOREACH(feenox.mesh.posts, post) { if (post->mesh == feenox.pde.mesh) { post->mesh = feenox.pde.mesh_rough; } } */ } feenox_call(feenox_mesh_init_nodal_indexes(feenox.pde.mesh, feenox.pde.dofs)); #endif return FEENOX_OK; } #ifdef HAVE_PETSC Mat feenox_problem_create_matrix(const char *name) { Mat A = NULL; petsc_call_null(MatCreate(PETSC_COMM_WORLD, &A)); petsc_call_null(MatSetSizes(A, feenox.pde.size_local, feenox.pde.size_local, feenox.pde.size_global, feenox.pde.size_global)); petsc_call_null(MatSetFromOptions(A)); if (feenox.pde.pre_allocate == PETSC_TRUE || PETSC_VERSION_LT(3,19,0)) { petsc_call_null(MatMPIAIJSetPreallocation(A, feenox.pde.width, PETSC_NULLPTR, feenox.pde.width, PETSC_NULLPTR)); petsc_call_null(MatSeqAIJSetPreallocation(A, feenox.pde.width, PETSC_NULLPTR)); } // this flag needs the matrix type to be set, and we had just set it with setfromoptions petsc_call_null(MatSetOption(A, MAT_KEEP_NONZERO_PATTERN, PETSC_TRUE)); if (name != NULL) { petsc_call_null(PetscObjectSetName((PetscObject)(A), name)); } if (feenox.pde.allow_new_nonzeros == PETSC_TRUE) { petsc_call_null(MatSetOption(A, MAT_NEW_NONZERO_ALLOCATION_ERR, PETSC_FALSE)); } if (feenox.pde.dofs > 1) { petsc_call_null(MatSetBlockSize(A, feenox.pde.dofs)); } return A; } Vec feenox_problem_create_vector(const char *name) { if (feenox.pde.K == NULL) { feenox_push_error_message("stiffness matrix is not created yet"); return NULL; } Vec v; petsc_call_null(MatCreateVecs(feenox.pde.K, &v, NULL)); petsc_call_null(VecSetFromOptions(v)); if (name != NULL) { petsc_call_null(PetscObjectSetName((PetscObject)(v), name)); } return v; } #endif // TODO: see if PetscSplitOwnership(MPI_Comm comm, PetscInt *n, PetscInt *N) give the same results int feenox_compute_first_last_element(mesh_t *mesh) { mesh->first_element = (mesh->n_elements / feenox.mpi_size) * feenox.mpi_rank; if (mesh->n_elements % feenox.mpi_size > feenox.mpi_rank) { mesh->first_element += feenox.mpi_rank; mesh->last_element = mesh->first_element + (mesh->n_elements / feenox.mpi_size) + 1; } else { mesh->first_element += mesh->n_elements % feenox.mpi_size; mesh->last_element = mesh->first_element + (mesh->n_elements / feenox.mpi_size); } return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/0000755000175000017500000000000014773607300013455 500000000000000feenox-1.1/src/pdes/mechanical/linearize.c0000644000175000017500000003110314773607165015532 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox method for stress linearization over SCLs according to ASME * * Copyright (C) 2017-2022 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" struct linearize_params_t { double x1, y1, z1; double x2, y2, z2; double length; function_t *function; }; double feenox_linearization_integrand_membrane(double t_prime, void *params); double feenox_linearization_integrand_bending(double t_prime, void *params); double feenox_linearization_integrate(gsl_function *F, function_t *function); int feenox_linearization_compute_and_store(function_t *total_function, const double x1[], const double x2[], double M, double MBplus, double MBminus, var_t *var_M, var_t *var_MB, var_t *var_P); int feenox_instruction_linearize(void *arg) { feenox_linearize_t *linearize = (feenox_linearize_t *)arg; // http://www.eng-tips.com/faqs.cfm?fid=982 // the actual equations are in ASME VIII-div 2 sec 5 // also see the mecway manual struct linearize_params_t params; params.x1 = feenox_expression_eval(&linearize->x1); params.y1 = feenox_expression_eval(&linearize->y1); params.z1 = feenox_expression_eval(&linearize->z1); params.x2 = feenox_expression_eval(&linearize->x2); params.y2 = feenox_expression_eval(&linearize->y2); params.z2 = feenox_expression_eval(&linearize->z2); params.length = gsl_hypot3(params.x2-params.x1, params.y2-params.y1, params.z2-params.z1); gsl_function F = {NULL, ¶ms}; // membrane stress F.function = &feenox_linearization_integrand_membrane; double sigmax_m = feenox_linearization_integrate(&F, mechanical.sigmax) / params.length; double sigmay_m = feenox_linearization_integrate(&F, mechanical.sigmay) / params.length; double sigmaz_m = feenox_linearization_integrate(&F, mechanical.sigmaz) / params.length; double tauxy_m = feenox_linearization_integrate(&F, mechanical.tauxy) / params.length; double tauyz_m = feenox_linearization_integrate(&F, mechanical.tauyz) / params.length; double tauzx_m = feenox_linearization_integrate(&F, mechanical.tauzx) / params.length; // bending stress F.function = &feenox_linearization_integrand_bending; double den = gsl_pow_2(params.length)/6.0; double sigmax_b = feenox_linearization_integrate(&F, mechanical.sigmax) / den; double sigmay_b = feenox_linearization_integrate(&F, mechanical.sigmay) / den; double sigmaz_b = feenox_linearization_integrate(&F, mechanical.sigmaz) / den; double tauxy_b = feenox_linearization_integrate(&F, mechanical.tauxy) / den; double tauyz_b = feenox_linearization_integrate(&F, mechanical.tauyz) / den; double tauzx_b = feenox_linearization_integrate(&F, mechanical.tauzx) / den; // now we have to compose these guys double x1[3] = {params.x1, params.y1, params.z1}; double x2[3] = {params.x2, params.y2, params.z2}; if (linearize->M != NULL || linearize->MB != NULL || linearize->P != NULL) { double M = feenox_vonmises_from_stress_tensor(sigmax_m, sigmay_m, sigmaz_m, tauxy_m, tauyz_m, tauzx_m); double MBplus = feenox_vonmises_from_stress_tensor(sigmax_m+sigmax_b, sigmay_m+sigmay_b, sigmaz_m+sigmaz_b, tauxy_m+tauxy_b, tauyz_m+tauyz_b, tauzx_m+tauzx_b); double MBminus = feenox_vonmises_from_stress_tensor(sigmax_m-sigmax_b, sigmay_m-sigmay_b, sigmaz_m-sigmaz_b, tauxy_m-tauxy_b, tauyz_m-tauyz_b, tauzx_m-tauzx_b); feenox_call(feenox_linearization_compute_and_store(mechanical.sigma, x1, x2, M, MBplus, MBminus, linearize->M, linearize->MB, linearize->P)); } if (linearize->Mt != NULL || linearize->MBt != NULL || linearize->Pt != NULL) { double M = feenox_tresca_from_stress_tensor(sigmax_m, sigmay_m, sigmaz_m, tauxy_m, tauyz_m, tauzx_m); double MBplus = feenox_tresca_from_stress_tensor(sigmax_m+sigmax_b, sigmay_m+sigmay_b, sigmaz_m+sigmaz_b, tauxy_m+tauxy_b, tauyz_m+tauyz_b, tauzx_m+tauzx_b); double MBminus = feenox_tresca_from_stress_tensor(sigmax_m-sigmax_b, sigmay_m-sigmay_b, sigmaz_m-sigmaz_b, tauxy_m-tauxy_b, tauyz_m-tauyz_b, tauzx_m-tauzx_b); feenox_call(feenox_linearization_compute_and_store(mechanical.tresca, x1, x2, M, MBplus, MBminus, linearize->Mt, linearize->MBt, linearize->Pt)); } if (linearize->M1 != NULL || linearize->MB1 != NULL || linearize->P1 != NULL || linearize->M2 != NULL || linearize->MB2 != NULL || linearize->P2 != NULL || linearize->M3 != NULL || linearize->MB3 != NULL || linearize->P3 != NULL) { double M1, M2, M3; double MBplus1, MBplus2, MBplus3; double MBminus1, MBminus2, MBminus3; feenox_principal_stress_from_cauchy(sigmax_m, sigmay_m, sigmaz_m, tauxy_m, tauyz_m, tauzx_m, &M1, &M2, &M3); feenox_principal_stress_from_cauchy(sigmax_m+sigmax_b, sigmay_m+sigmay_b, sigmaz_m+sigmaz_b, tauxy_m+tauxy_b, tauyz_m+tauyz_b, tauzx_m+tauzx_b, &MBplus1, &MBplus2, &MBplus3); feenox_principal_stress_from_cauchy(sigmax_m-sigmax_b, sigmay_m-sigmay_b, sigmaz_m-sigmaz_b, tauxy_m-tauxy_b, tauyz_m-tauyz_b, tauzx_m-tauzx_b, &MBminus1, &MBminus2, &MBminus3); if (linearize->M1 != NULL || linearize->MB1 != NULL || linearize->P1 != NULL) { feenox_call(feenox_linearization_compute_and_store(mechanical.sigma1, x1, x2, M1, MBplus1, MBminus1, linearize->M1, linearize->MB1, linearize->P1)); } if (linearize->M2 != NULL || linearize->MB2 != NULL || linearize->P2 != NULL) { feenox_call(feenox_linearization_compute_and_store(mechanical.sigma2, x1, x2, M2, MBplus2, MBminus2, linearize->M2, linearize->MB2, linearize->P2)); } if (linearize->M3 != NULL || linearize->MB3 != NULL || linearize->P3 != NULL) { feenox_call(feenox_linearization_compute_and_store(mechanical.sigma3, x1, x2, M3, MBplus3, MBminus3, linearize->M3, linearize->MB3, linearize->P3)); } } /* if (linearize->file != NULL) { if (linearize->file->pointer == NULL) { feenox_call(feenox_instruction_file_open(linearize->file)); } fprintf(linearize->file->pointer, "# # Stress linearization\n"); fprintf(linearize->file->pointer, "#\n"); fprintf(linearize->file->pointer, "# Start point: (%g, %g, %g)\n", params.x1, params.y1, params.z1); fprintf(linearize->file->pointer, "# End point: (%g, %g, %g)\n", params.x2, params.y2, params.z2); fprintf(linearize->file->pointer, "# Total: %s\n", total_name); fprintf(linearize->file->pointer, "#\n"); fprintf(linearize->file->pointer, "# ## Membrane stress tensor\n"); fprintf(linearize->file->pointer, "#\n"); fprintf(linearize->file->pointer, "# $\\sigma_{x}$ = %g\n", sigmax_m); fprintf(linearize->file->pointer, "# $\\sigma_{y}$ = %g\n", sigmay_m); fprintf(linearize->file->pointer, "# $\\sigma_{z}$ = %g\n", sigmaz_m); fprintf(linearize->file->pointer, "# $\\tau_{xy}$ = %g\n", tauxy_m); fprintf(linearize->file->pointer, "# $\\tau_{yz}$ = %g\n", tauyz_m); fprintf(linearize->file->pointer, "# $\\tau_{zx}$ = %g\n", tauzx_m); fprintf(linearize->file->pointer, "#\n"); fprintf(linearize->file->pointer, "# ## Bending stress tensor\n"); fprintf(linearize->file->pointer, "#\n"); fprintf(linearize->file->pointer, "# $\\sigma_{x}$ = %g\n", sigmax_b); fprintf(linearize->file->pointer, "# $\\sigma_{y}$ = %g\n", sigmay_b); fprintf(linearize->file->pointer, "# $\\sigma_{z}$ = %g\n", sigmaz_b); fprintf(linearize->file->pointer, "# $\\tau_{xy}$ = %g\n", tauxy_b); fprintf(linearize->file->pointer, "# $\\tau_{yz}$ = %g\n", tauyz_b); fprintf(linearize->file->pointer, "# $\\tau_{zx}$ = %g\n", tauzx_b); fprintf(linearize->file->pointer, "#\n"); fprintf(linearize->file->pointer, "# ## Membrane plus bending stress tensor\n"); fprintf(linearize->file->pointer, "#\n"); fprintf(linearize->file->pointer, "# $\\sigma_{x}$ = %g\n", sigmax_m+sigmax_b); fprintf(linearize->file->pointer, "# $\\sigma_{y}$ = %g\n", sigmay_m+sigmay_b); fprintf(linearize->file->pointer, "# $\\sigma_{z}$ = %g\n", sigmaz_m+sigmaz_b); fprintf(linearize->file->pointer, "# $\\tau_{xy}$ = %g\n", tauxy_m+tauxy_b); fprintf(linearize->file->pointer, "# $\\tau_{yz}$ = %g\n", tauyz_m+tauyz_b); fprintf(linearize->file->pointer, "# $\\tau_{zx}$ = %g\n", tauzx_m+tauzx_b); fprintf(linearize->file->pointer, "#\n"); fprintf(linearize->file->pointer, "# ## Linearization results\n"); fprintf(linearize->file->pointer, "#\n"); fprintf(linearize->file->pointer, "# Membrane stress $M$ = %g\n", feenox_var_value(linearize->M)); fprintf(linearize->file->pointer, "# Membrane plus bending stress $MB$ = %g\n", feenox_var_value(linearize->MB)); fprintf(linearize->file->pointer, "# Peak stress $P$ = %g\n", feenox_var_value(linearize->P)); fprintf(linearize->file->pointer, "#\n"); fprintf(linearize->file->pointer, "# t_prime\tM\tMB\tT\n"); // TODO: define 50 as a constant // TODO: choose 50 double t_prime = 0; for (unsigned int i = 0; i <= 50; i++) { t_prime = i/50.0; x1[0] = params.x1 + t_prime * (params.x2 - params.x1); x1[1] = params.y1 + t_prime * (params.y2 - params.y1); x1[2] = params.z1 + t_prime * (params.z2 - params.z1); if (t_prime < 0.5) { fprintf(linearize->file->pointer, "%.2f\t%e\t%e\t%e\n", t_prime, M, M+((T1>M)?(+1):(-1))*B*(1-2*t_prime), feenox_function_eval(total_function, x1)); } else { fprintf(linearize->file->pointer, "%.2f\t%e\t%e\t%e\n", t_prime, M, M+((T2>M)?(-1):(+1))*B*(1-2*t_prime), feenox_function_eval(total_function, x1)); } } } feenox_free(total_name); */ return FEENOX_OK; } double feenox_linearization_integrand_membrane(double t, void *params) { struct linearize_params_t *p = (struct linearize_params_t *)params; double t_prime = t/p->length; double x[3]; x[0] = p->x1 + t_prime * (p->x2 - p->x1); x[1] = p->y1 + t_prime * (p->y2 - p->y1); x[2] = p->z1 + t_prime * (p->z2 - p->z1); return feenox_function_eval(p->function, x); } double feenox_linearization_integrand_bending(double t, void *params) { struct linearize_params_t *p = (struct linearize_params_t *)params; double t_prime = t/p->length; double x[3]; x[0] = p->x1 + t_prime * (p->x2 - p->x1); x[1] = p->y1 + t_prime * (p->y2 - p->y1); x[2] = p->z1 + t_prime * (p->z2 - p->z1); return feenox_function_eval(p->function, x) * (0.5*p->length - t); } double feenox_linearization_integrate(gsl_function *F, function_t *function) { struct linearize_params_t *p = (struct linearize_params_t *)F->params; p->function = function; double result = 0; double epsabs = 0; // TODO: choose the epsresl in the input file double epsrel = 5e-3; size_t limit = DEFAULT_INTEGRATION_INTERVALS; int key = GSL_INTEG_GAUSS31; double abserr = 0; gsl_integration_workspace *w = gsl_integration_workspace_alloc(limit); if (w == NULL) { feenox_runtime_error(); } gsl_integration_qag(F, 0, p->length, epsabs, epsrel, limit, key, w, &result, &abserr); gsl_integration_workspace_free(w); return result; } int feenox_linearization_compute_and_store(function_t *total_function, const double x1[], const double x2[], double M, double MBplus, double MBminus, var_t *var_M, var_t *var_MB, var_t *var_P) { // OJO! esto no es asi, hay que hacer un tensor que sea la diferencia double T1 = feenox_function_eval(total_function, x1); double T2 = feenox_function_eval(total_function, x2); double MB = 0; double T = 0; // double B = 0; if (total_function != mechanical.sigma3) { MB = (MBplus > MBminus) ? MBplus : MBminus; T = (T1 > T2) ? T1 : T2; // B = MB - M; } else { MB = (MBplus < MBminus) ? MBplus : MBminus; T = (T1 < T2) ? T1 : T2; // B = M - MB; } double P = T - MB; // store results if (var_M != NULL) { feenox_var_value(var_M) = M; } if (var_MB != NULL) { feenox_var_value(var_MB) = MB; } if (var_P != NULL) { feenox_var_value(var_P) = P; } return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/expansion-isotropic.c0000644000175000017500000000507214773607165017573 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox thermal isotropic expansion mechanical material * * Copyright (C) 2022 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" int feenox_problem_build_compute_mechanical_strain_isotropic (const double *x, material_t *material) { double delta_T = mechanical.T.eval(&mechanical.T, x, material) - mechanical.T0; double alpha = mechanical.alpha.eval(&mechanical.alpha, x, material); double alpha_delta_T = alpha * delta_T; gsl_vector_set(mechanical.et, 0, alpha_delta_T); gsl_vector_set(mechanical.et, 1, alpha_delta_T); if (feenox.pde.dim > 2) { gsl_vector_set(mechanical.et, 2, alpha_delta_T); } return FEENOX_OK; } int feenox_problem_build_compute_mechanical_stress_isotropic (const double *x, material_t *material, double *sigmat_x, double *sigmat_y, double *sigmat_z) { double delta_T = mechanical.T.eval(&mechanical.T, x, material) - mechanical.T0; double alpha = mechanical.alpha.eval(&mechanical.alpha, x, material); double alpha_delta_T = alpha * delta_T; // if the material is isotropic but non uniform, we do not have the proper C matrix if (mechanical.uniform_C == 0 && mechanical.material_model == material_model_elastic_isotropic) { mechanical.compute_C(x, material); } *sigmat_x = alpha_delta_T * (gsl_matrix_get(mechanical.C, 0, 0) + gsl_matrix_get(mechanical.C, 0, 1) + gsl_matrix_get(mechanical.C, 0, 2)); *sigmat_y = alpha_delta_T * (gsl_matrix_get(mechanical.C, 1, 0) + gsl_matrix_get(mechanical.C, 1, 1) + gsl_matrix_get(mechanical.C, 1, 2)); if (feenox.pde.dofs > 2) { *sigmat_z = alpha_delta_T * (gsl_matrix_get(mechanical.C, 2, 0) + gsl_matrix_get(mechanical.C, 2, 1) + gsl_matrix_get(mechanical.C, 2, 2)); } return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/elastic-isotropic.c0000644000175000017500000000666614773607165017225 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox elastic isotropic mechanical material * * Copyright (C) 2021-2022 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" int feenox_problem_build_compute_mechanical_C_elastic_isotropic(const double *x, material_t *material) { double E = mechanical.E.eval(&mechanical.E, x, material); double nu = mechanical.nu.eval(&mechanical.nu, x, material); double lambda = E*nu/((1+nu)*(1-2*nu)); double mu = 0.5*E/(1+nu); double lambda2mu = lambda + 2*mu; gsl_matrix_set(mechanical.C, 0, 0, lambda2mu); gsl_matrix_set(mechanical.C, 0, 1, lambda); gsl_matrix_set(mechanical.C, 0, 2, lambda); gsl_matrix_set(mechanical.C, 1, 0, lambda); gsl_matrix_set(mechanical.C, 1, 1, lambda2mu); gsl_matrix_set(mechanical.C, 1, 2, lambda); gsl_matrix_set(mechanical.C, 2, 0, lambda); gsl_matrix_set(mechanical.C, 2, 1, lambda); gsl_matrix_set(mechanical.C, 2, 2, lambda2mu); gsl_matrix_set(mechanical.C, 3, 3, mu); gsl_matrix_set(mechanical.C, 4, 4, mu); gsl_matrix_set(mechanical.C, 5, 5, mu); return FEENOX_OK; } int feenox_stress_from_strain_elastic_isotropic(node_t *node, element_t *element, unsigned int j, double epsilonx, double epsilony, double epsilonz, double gammaxy, double gammayz, double gammazx, double *sigmax, double *sigmay, double *sigmaz, double *tauxy, double *tauyz, double *tauzx) { // TODO: cache properties // TODO: check what has to be computed and what not double E = mechanical.E.eval(&mechanical.E, node->x, element->physical_group->material); double nu = mechanical.nu.eval(&mechanical.nu, node->x, element->physical_group->material); double lambda = E*nu/((1+nu)*(1-2*nu)); double mu = 0.5*E/(1+nu); double lambda_div = lambda*(epsilonx + epsilony + epsilonz); double two_mu = two_mu = 2*mu; // TODO: separate if (mechanical.variant == variant_full || mechanical.variant == variant_plane_strain) { // normal stresses *sigmax = lambda_div + two_mu * epsilonx; *sigmay = lambda_div + two_mu * epsilony; *sigmaz = lambda_div + two_mu * epsilonz; // shear stresses *tauxy = mu * gammaxy; if (feenox.pde.dofs == 3) { *tauyz = mu * gammayz; *tauzx = mu * gammazx; } } else if (mechanical.variant == variant_plane_stress) { double E = mu*(3*lambda + 2*mu)/(lambda+mu); double nu = lambda / (2*(lambda+mu)); double c1 = E/(1-nu*nu); double c2 = nu * c1; *sigmax = c1 * epsilonx + c2 * epsilony; *sigmay = c2 * epsilonx + c1 * epsilony; *sigmaz = 0; *tauxy = c1*0.5*(1-nu) * gammaxy; } return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/parser.c0000644000175000017500000002574214773607165015060 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX parser for mechanical-specific keywords * * Copyright (C) 2022--2023 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms "of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "../../parser/parser.h" #include "mechanical.h" int feenox_problem_parse_problem_mechanical(const char *token) { ///kw_pde+PROBLEM+detail * `mechanical` solves the elastic problem using a displacement-based FEM formulation. ///kw_pde+PROBLEM+detail If the mesh is two-dimensional and not `AXISYMMETRIC`, either ///kw_pde+PROBLEM+detail `plane_stress` or `plane_strain` has to be given instead of `mechanical`. if (token != NULL) { if (strcasecmp(token, "plane_stress") == 0) { mechanical.variant = variant_plane_stress; } else if (strcasecmp(token, "plane_strain") == 0) { mechanical.variant = variant_plane_strain; } else { feenox_push_error_message("undefined keyword '%s'", token); return FEENOX_ERROR; } } else { // if token is NULL we have to do the parse-time initialization feenox_call(feenox_problem_parse_time_init_mechanical()); } return FEENOX_OK; } int feenox_problem_parse_write_post_mechanical(mesh_write_t *mesh_write, const char *token) { if (strcmp(token, "all") == 0) { feenox_call(feenox_problem_parse_write_post_mechanical(mesh_write, "displacements")); feenox_call(feenox_problem_parse_write_post_mechanical(mesh_write, "strains")); feenox_call(feenox_problem_parse_write_post_mechanical(mesh_write, "stresses")); feenox_call(feenox_problem_parse_write_post_mechanical(mesh_write, "principal")); feenox_call(feenox_problem_parse_write_post_mechanical(mesh_write, "vonmises")); feenox_call(feenox_problem_parse_write_post_mechanical(mesh_write, "tresca")); } else if (strcmp(token, "displacements") == 0 || strcmp(token, "displ") == 0) { char *tokens[3] = {NULL, NULL, NULL}; for (unsigned int g = 0; g < 3; g++) { tokens[g] = strdup((g < feenox.pde.dofs) ? feenox.pde.unknown_name[g] : "0"); } feenox_call(feenox_add_post_field(mesh_write, 3, tokens, "displacements", field_location_nodes)); for (unsigned int g = 0; g < 3; g++) { feenox_free(tokens[g]); } } else if (strcmp(token, "strains") == 0 || strcmp(token, "strain") == 0) { for (unsigned int g = 0; g < feenox.pde.dofs; g++) { for (unsigned int m = 0; m < feenox.pde.dim; m++) { feenox_call(feenox_add_post_field(mesh_write, 1, &feenox.pde.gradient[g][m]->name, NULL, field_location_nodes)); } } } else if (strcmp(token, "stresses") == 0 || strcmp(token, "stress") == 0) { feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.sigmax->name, NULL, field_location_nodes)); feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.sigmay->name, NULL, field_location_nodes)); if (feenox.pde.dim == 3) { feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.sigmaz->name, NULL, field_location_nodes)); } feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.tauxy->name, NULL, field_location_nodes)); if (feenox.pde.dim == 3) { feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.tauyz->name, NULL, field_location_nodes)); feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.tauzx->name, NULL, field_location_nodes)); } } else if (strcmp(token, "principal") == 0) { feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.sigma1->name, NULL, field_location_nodes)); feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.sigma2->name, NULL, field_location_nodes)); feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.sigma3->name, NULL, field_location_nodes)); } else if (strcmp(token, "vonmises") == 0) { feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.sigma->name, NULL, field_location_nodes)); } else if (strcmp(token, "tresca") == 0) { feenox_call(feenox_add_post_field(mesh_write, 1, &mechanical.tresca->name, NULL, field_location_nodes)); } else { feenox_push_error_message("undefined keyword '%s' for mechanical WRITE_RESULTS", token); return FEENOX_ERROR; } return FEENOX_OK; } int feenox_parse_linearize_stress(void) { feenox_linearize_t *linearize = NULL; feenox_check_alloc(linearize = calloc(1, sizeof(feenox_linearize_t))); ///kw_mechanical+LINEARIZE_STRESS+desc Compute linearized membrane and/or bending stresses according to ASME\ VIII Div\ 2 Sec\ 5. ///kw_mechanical+LINEARIZE_STRESS+usage LINEARIZE_STRESS char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_mechanical+LINEARIZE_STRESS+usage FROM ///kw_mechanical+LINEARIZE_STRESS+detail The stress classification line (SCL) defined by the coordinates of ///kw_mechanical+LINEARIZE_STRESS+detail the points\ $[x_1, y_1, z_1]$ and $[x_2, y_2, z_2]$. ///kw_mechanical+LINEARIZE_STRESS+detail For two-dimensional problems, the $z$ coordinate has to be given as well. if (strcasecmp(token, "FROM") == 0) { feenox_call(feenox_parser_expression(&linearize->x1)); feenox_call(feenox_parser_expression(&linearize->y1)); feenox_call(feenox_parser_expression(&linearize->z1)); ///kw_mechanical+LINEARIZE_STRESS+usage TO @ } else if (strcasecmp(token, "TO") == 0) { feenox_call(feenox_parser_expression(&linearize->x2)); feenox_call(feenox_parser_expression(&linearize->y2)); feenox_call(feenox_parser_expression(&linearize->z2)); ///kw_mechanical+LINEARIZE_STRESS+detail The linearized membrane, membrane plus bending and peak total stresses are ///kw_mechanical+LINEARIZE_STRESS+detail stored in the variables given by the keywords `M`, `MB` and `P`, respectively. ///kw_mechanical+LINEARIZE_STRESS+detail These three variables use the von\ Mises stress intensity. ///kw_mechanical+LINEARIZE_STRESS+usage [ M ] } else if (strcasecmp(token, "M") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->M)); mechanical.sigma->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ MB ] } else if (strcasecmp(token, "MB") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->MB)); mechanical.sigma->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ P ] @ } else if (strcasecmp(token, "P") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->P)); mechanical.sigma->used = 1; ///kw_mechanical+LINEARIZE_STRESS+detail Variables `Mt`, `MBt` and `Pt` use the Tresca stress intensity. ///kw_mechanical+LINEARIZE_STRESS+usage [ Mt ] } else if (strcasecmp(token, "Mt") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->Mt)); mechanical.tresca->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ MBt ] } else if (strcasecmp(token, "MBt") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->MBt)); mechanical.tresca->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ Pt ] @ } else if (strcasecmp(token, "Pt") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->Pt)); mechanical.tresca->used = 1; ///kw_mechanical+LINEARIZE_STRESS+detail Variables `M1` (or 2 or 3), `MB1` (or 2 or 3) and `P1` (or 2 or 3) ///kw_mechanical+LINEARIZE_STRESS+detail use the principal stress 1 (or 2 or 3). ///kw_mechanical+LINEARIZE_STRESS+usage [ M1 ] } else if (strcasecmp(token, "M1") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->M1)); mechanical.sigma1->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ MB1 ] } else if (strcasecmp(token, "MB1") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->MB1)); mechanical.sigma1->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ P1 ] @ } else if (strcasecmp(token, "P1") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->P1)); mechanical.sigma1->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ M2 ] } else if (strcasecmp(token, "M2") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->M2)); mechanical.sigma2->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ MB2 ] } else if (strcasecmp(token, "MB2") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->MB2)); mechanical.sigma2->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ P2 ] @ } else if (strcasecmp(token, "P2") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->P2)); mechanical.sigma2->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ M3 ] } else if (strcasecmp(token, "M3") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->M3)); mechanical.sigma3->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ MB3 ] } else if (strcasecmp(token, "MB3") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->MB3)); mechanical.sigma3->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ P3 ] @ } else if (strcasecmp(token, "P3") == 0) { feenox_call(feenox_parser_get_or_define_variable(&linearize->P3)); mechanical.sigma3->used = 1; ///kw_mechanical+LINEARIZE_STRESS+usage [ FILE ] ///kw_mechanical+LINEARIZE_STRESS+detail If the `FILE` keyword is given, the total, membrane and membrane plus bending ///kw_mechanical+LINEARIZE_STRESS++detail stresses are written as a function of a scalar $t \in [0,1]$. ///kw_mechanical+LINEARIZE_STRESS++detail Moreover, the individual elements of the membrane and bending stress tensors are written ///kw_mechanical+LINEARIZE_STRESS++detail within comments (i.e. lines starting with the hash symbol `#`). //TODO: decir como se plotea y como se hace un PDF } else if (strcasecmp(token, "FILE") == 0) { feenox_call(feenox_parser_file(&linearize->file)); } else { feenox_push_error_message("unknown keyword '%s'", token); return FEENOX_ERROR; } } feenox_call(feenox_add_instruction(feenox_instruction_linearize, linearize)); LL_APPEND(mechanical.linearizes, linearize); return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/elastic-orthotropic.c0000644000175000017500000001106714773607165017555 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox elastic orthotropic mechanical material * * Copyright (C) 2022 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" int feenox_problem_build_compute_mechanical_C_elastic_orthotropic(const double *x, material_t *material) { // TODO: check ranges of validity // E > 0 // G > 0 // | nu_ij | < sqrt(E_i/E_j) // 1 - nu12*nu21 - nu23*nu32 - nu31*nu13 - 2*nu21*nu32*nu13 > 0 double E_x = mechanical.E_x.eval(&mechanical.E_x, x, material); double E_y = mechanical.E_y.eval(&mechanical.E_y, x, material); double E_z = mechanical.E_z.eval(&mechanical.E_z, x, material); // TODO: handle engineering nu12,nu23 and nu13 (instead of nu31) double nu_xy = mechanical.nu_xy.eval(&mechanical.nu_xy, x, material); double nu_yz = mechanical.nu_yz.eval(&mechanical.nu_yz, x, material); double nu_zx = mechanical.nu_zx.eval(&mechanical.nu_zx, x, material); double G_xy = mechanical.G_xy.eval(&mechanical.G_xy, x, material); double G_yz = mechanical.G_yz.eval(&mechanical.G_yz, x, material); double G_zx = mechanical.G_zx.eval(&mechanical.G_zx, x, material); gsl_matrix *S = NULL; // reduced compliance matrix (only the normal-stress stuff) feenox_check_alloc(S = gsl_matrix_calloc(3, 3)); gsl_matrix *C = NULL; // reduced stiffness matrix feenox_check_alloc(C = gsl_matrix_calloc(3, 3)); // > if you noticed that C is called the stiffness tensor and S is called the compliance // > tensor and wondered about it, this is not a mistake and there is no intention to confuse // > you. It is a long-time convention that cannot be reverted anymore // source: https://www.weizmann.ac.il/chembiophys/bouchbinder/sites/chemphys.bouchbinder/files/uploads/Courses/2016/ta5-linear_elasticity-i.pdf // fill the 3x3 reduced compliance matrix first // [ 1/E1 -nu21/E2 -nu31/E3 ] // [ -nu12/E1 1/E2 -nu32/E3 ] // [ -nu13/E1 -nu23/E2 1/E3 ] gsl_matrix_set(S, 0, 0, 1.0/E_x); gsl_matrix_set(S, 1, 1, 1.0/E_y); gsl_matrix_set(S, 2, 2, 1.0/E_z); // since S is symmetric, // nu21/E2 = nu12/E1 // nu31/E3 = nu13/E1 // nu32/E3 = nu23/E2 // but we ask for nu12, nu23 and nu31 (not nu21, nu32 nor nu13) so we use double minus_nu_xy_over_E_x = -nu_xy/E_x; double minus_nu_zx_over_E_z = -nu_zx/E_z; double minus_nu_yz_over_E_y = -nu_yz/E_y; // to set the off-diagonal (symmetric) entries gsl_matrix_set(S, 0, 1, minus_nu_xy_over_E_x); gsl_matrix_set(S, 1, 0, minus_nu_xy_over_E_x); gsl_matrix_set(S, 0, 2, minus_nu_zx_over_E_z); gsl_matrix_set(S, 2, 0, minus_nu_zx_over_E_z); gsl_matrix_set(S, 1, 2, minus_nu_yz_over_E_y); gsl_matrix_set(S, 2, 1, minus_nu_yz_over_E_y); // compute the stiffness by inverting the 3x3 compliance C = feenox_fem_matrix_invert(S, C); // now fill the full 6x6 C gsl_matrix_set(mechanical.C, 0, 0, gsl_matrix_get(C, 0, 0)); gsl_matrix_set(mechanical.C, 0, 1, gsl_matrix_get(C, 0, 1)); gsl_matrix_set(mechanical.C, 0, 2, gsl_matrix_get(C, 0, 2)); gsl_matrix_set(mechanical.C, 1, 0, gsl_matrix_get(C, 1, 0)); gsl_matrix_set(mechanical.C, 1, 1, gsl_matrix_get(C, 1, 1)); gsl_matrix_set(mechanical.C, 1, 2, gsl_matrix_get(C, 1, 2)); gsl_matrix_set(mechanical.C, 2, 0, gsl_matrix_get(C, 2, 0)); gsl_matrix_set(mechanical.C, 2, 1, gsl_matrix_get(C, 2, 1)); gsl_matrix_set(mechanical.C, 2, 2, gsl_matrix_get(C, 2, 2)); // the following subscripts have to match rows 3-5 of mechanical.B // note that this is not voigt notation! that would be // xx,yy,zz,yz,xz,xy and we use xx,yy,zz,xy,yz,zx gsl_matrix_set(mechanical.C, 3, 3, G_xy); gsl_matrix_set(mechanical.C, 4, 4, G_yz); gsl_matrix_set(mechanical.C, 5, 5, G_zx); gsl_matrix_free(C); gsl_matrix_free(S); return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/stress.c0000644000175000017500000002640714773607165015106 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox routines to compute stresses * * Copyright (C) 2021-2023 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" // this works for both 2d and 3d #define FLUX_SIGMAX 0 #define FLUX_SIGMAY 1 #define FLUX_TAUXY 2 #define FLUX_SIGMAZ 3 #define FLUX_TAUYZ 4 #define FLUX_TAUZX 5 int feenox_problem_gradient_fill_mechanical(void) { feenox_problem_fill_aux_solution(mechanical.sigmax); feenox_problem_fill_aux_solution(mechanical.sigmay); feenox_problem_fill_aux_solution(mechanical.tauxy); if (feenox.pde.dofs == 3) { feenox_problem_fill_aux_solution(mechanical.sigmaz); feenox_problem_fill_aux_solution(mechanical.tauyz); feenox_problem_fill_aux_solution(mechanical.tauzx); } // if one is used, all of them are if (mechanical.sigma1->used || mechanical.sigma2->used || mechanical.sigma3->used) { feenox_problem_fill_aux_solution(mechanical.sigma1); feenox_problem_fill_aux_solution(mechanical.sigma2); feenox_problem_fill_aux_solution(mechanical.sigma3); } if (mechanical.sigma->used) { feenox_problem_fill_aux_solution(mechanical.sigma); } if (mechanical.tresca->used) { feenox_problem_fill_aux_solution(mechanical.tresca); } return FEENOX_OK; } // used only in rough int feenox_problem_gradient_properties_at_element_nodes_mechanical(element_t *element, mesh_t *mesh) { return FEENOX_OK; } int feenox_problem_gradient_fluxes_at_node_alloc_mechanical(node_t *node) { size_t flux_size = (feenox.pde.dim == 3) ? 6 : 3; if (node->flux == NULL) { feenox_check_alloc(node->flux = calloc(flux_size, sizeof(double))); } else { unsigned int m = 0; for (m = 0; m < flux_size; m++) { node->flux[m] = 0; } } return FEENOX_OK; } // TODO: why both node and j? int feenox_problem_gradient_add_elemental_contribution_to_node_mechanical(node_t *node, element_t *element, unsigned int j, double rel_weight) { // read strains from gradient double epsilonx = gsl_matrix_get(element->dphidx_node[j], 0, 0); double epsilony = gsl_matrix_get(element->dphidx_node[j], 1, 1); double epsilonz = (feenox.pde.dofs == 3) ? gsl_matrix_get(element->dphidx_node[j], 2, 2) : 0; double gammaxy = gsl_matrix_get(element->dphidx_node[j], 0, 1) + gsl_matrix_get(element->dphidx_node[j], 1, 0); double gammayz = 0; double gammazx = 0; if (feenox.pde.dofs == 3) { gammayz = gsl_matrix_get(element->dphidx_node[j], 1, 2) + gsl_matrix_get(element->dphidx_node[j], 2, 1); gammazx = gsl_matrix_get(element->dphidx_node[j], 2, 0) + gsl_matrix_get(element->dphidx_node[j], 0, 2); } double sigmax = 0; double sigmay = 0; double sigmaz = 0; double tauxy = 0; double tauyz = 0; double tauzx = 0; // compute stresses feenox_call(mechanical.compute_stress_from_strain(node, element, j, epsilonx, epsilony, epsilonz, gammaxy, gammayz, gammazx, &sigmax, &sigmay, &sigmaz, &tauxy, &tauyz, &tauzx)); if (mechanical.thermal_expansion_model != thermal_expansion_model_none) { // subtract the thermal contribution to the normal stresses (see IFEM.Ch30) double sigmat_x = 0; double sigmat_y = 0; double sigmat_z = 0; feenox_call(mechanical.compute_thermal_stress(node->x, element->physical_group->material, &sigmat_x, &sigmat_y, &sigmat_z)); sigmax -= sigmat_x; sigmay -= sigmat_y; sigmaz -= sigmat_z; } node->flux[FLUX_SIGMAX] += rel_weight * (sigmax - node->flux[FLUX_SIGMAX]); node->flux[FLUX_SIGMAY] += rel_weight * (sigmay - node->flux[FLUX_SIGMAY]); node->flux[FLUX_TAUXY] += rel_weight * (tauxy - node->flux[FLUX_TAUXY]); if (feenox.pde.dofs == 3) { node->flux[FLUX_SIGMAZ] += rel_weight * (sigmaz - node->flux[FLUX_SIGMAZ]); node->flux[FLUX_TAUYZ] += rel_weight * (tauyz - node->flux[FLUX_TAUYZ]); node->flux[FLUX_TAUZX] += rel_weight * (tauzx - node->flux[FLUX_TAUZX]); } return FEENOX_OK; } int feenox_problem_gradient_fill_fluxes_mechanical(mesh_t *mesh, size_t j) { feenox_vector_set(mechanical.sigmax->vector_value, j, mesh->node[j].flux[FLUX_SIGMAX]); feenox_vector_set(mechanical.sigmay->vector_value, j, mesh->node[j].flux[FLUX_SIGMAY]); feenox_vector_set(mechanical.tauxy->vector_value, j, mesh->node[j].flux[FLUX_TAUXY]); if (feenox.pde.dofs == 3) { feenox_vector_set(mechanical.sigmaz->vector_value, j, mesh->node[j].flux[FLUX_SIGMAZ]); feenox_vector_set(mechanical.tauyz->vector_value, j, mesh->node[j].flux[FLUX_TAUYZ]); feenox_vector_set(mechanical.tauzx->vector_value, j, mesh->node[j].flux[FLUX_TAUZX]); } if ((mechanical.sigma1 != NULL && mechanical.sigma1->used) || (mechanical.sigma2 != NULL && mechanical.sigma2->used) || (mechanical.sigma3 != NULL && mechanical.sigma3->used) || (mechanical.tresca != NULL && mechanical.tresca->used)) { double sigma1 = 0; double sigma2 = 0; double sigma3 = 0; feenox_principal_stress_from_cauchy(mesh->node[j].flux[FLUX_SIGMAX], mesh->node[j].flux[FLUX_SIGMAY], mesh->node[j].flux[FLUX_SIGMAZ], mesh->node[j].flux[FLUX_TAUXY], mesh->node[j].flux[FLUX_TAUYZ], mesh->node[j].flux[FLUX_TAUZX], &sigma1, &sigma2, &sigma3); feenox_vector_set(mechanical.sigma1->vector_value, j, sigma1); feenox_vector_set(mechanical.sigma2->vector_value, j, sigma2); feenox_vector_set(mechanical.sigma3->vector_value, j, sigma3); if (mechanical.sigma->used) { feenox_vector_set(mechanical.sigma->vector_value, j, feenox_vonmises_from_principal(sigma1, sigma2, sigma3)); } if (mechanical.tresca->used) { feenox_vector_set(mechanical.tresca->vector_value, j, sigma1 - sigma3); } } else if (mechanical.sigma->used) { feenox_vector_set(mechanical.sigma->vector_value, j, feenox_vonmises_from_stress_tensor(mesh->node[j].flux[FLUX_SIGMAX], mesh->node[j].flux[FLUX_SIGMAY], mesh->node[j].flux[FLUX_SIGMAZ], mesh->node[j].flux[FLUX_TAUXY], mesh->node[j].flux[FLUX_TAUYZ], mesh->node[j].flux[FLUX_TAUZX])); } // TODO: uncertainties return FEENOX_OK; } int feenox_principal_stress_from_cauchy(double sigmax, double sigmay, double sigmaz, double tauxy, double tauyz, double tauzx, double *sigma1, double *sigma2, double *sigma3) { // stress invariants // https://en.wikiversity.org/wiki/Principal_stresses double I1 = sigmax + sigmay + sigmaz; double I2 = sigmax*sigmay + sigmay*sigmaz + sigmaz*sigmax - gsl_pow_2(tauxy) - gsl_pow_2(tauyz) - gsl_pow_2(tauzx); double I3 = sigmax*sigmay*sigmaz - sigmax*gsl_pow_2(tauyz) - sigmay*gsl_pow_2(tauzx) - sigmaz*gsl_pow_2(tauxy) + 2*tauxy*tauyz*tauzx; // principal stresses double c1 = sqrt(fabs(gsl_pow_2(I1) - 3*I2)); double phi = 1.0/3.0 * acos((2.0*gsl_pow_3(I1) - 9.0*I1*I2 + 27.0*I3)/(2.0*gsl_pow_3(c1))); if (isnan(phi)) { phi = 0; } double c2 = I1/3.0; double c3 = 2.0/3.0 * c1; if (sigma1 != NULL) { *sigma1 = c2 + c3 * cos(phi); } if (sigma2 != NULL) { *sigma2 = c2 + c3 * cos(phi - 2.0*M_PI/3.0); } if (sigma3 != NULL) { *sigma3 = c2 + c3 * cos(phi - 4.0*M_PI/3.0); } return FEENOX_OK; } int feenox_stress_from_strain(node_t *node, element_t *element, unsigned int j, double epsilonx, double epsilony, double epsilonz, double gammaxy, double gammayz, double gammazx, double *sigmax, double *sigmay, double *sigmaz, double *tauxy, double *tauyz, double *tauzx) { if (mechanical.uniform_C == 0) { mechanical.compute_C(node->x, (element->physical_group != NULL) ? element->physical_group->material : NULL); } *sigmax = gsl_matrix_get(mechanical.C, 0, 0) * epsilonx + gsl_matrix_get(mechanical.C, 0, 1) * epsilony + gsl_matrix_get(mechanical.C, 0, 2) * epsilonz; *sigmay = gsl_matrix_get(mechanical.C, 1, 0) * epsilonx + gsl_matrix_get(mechanical.C, 1, 1) * epsilony + gsl_matrix_get(mechanical.C, 1, 2) * epsilonz; *sigmaz = gsl_matrix_get(mechanical.C, 2, 0) * epsilonx + gsl_matrix_get(mechanical.C, 2, 1) * epsilony + gsl_matrix_get(mechanical.C, 2, 2) * epsilonz; *tauxy = gsl_matrix_get(mechanical.C, 3, 3) * gammaxy; *tauyz = gsl_matrix_get(mechanical.C, 4, 4) * gammayz; *tauzx = gsl_matrix_get(mechanical.C, 5, 5) * gammazx; return FEENOX_OK; } double feenox_vonmises_from_principal(double sigma1, double sigma2, double sigma3) { return sqrt(0.5*(gsl_pow_2(sigma1-sigma2) + gsl_pow_2(sigma2-sigma3) + gsl_pow_2(sigma3-sigma1))); } double feenox_vonmises_from_stress_tensor(double sigmax, double sigmay, double sigmaz, double tauxy, double tauyz, double tauzx) { return sqrt(0.5*(gsl_pow_2(sigmax-sigmay) + gsl_pow_2(sigmay-sigmaz) + gsl_pow_2(sigmaz-sigmax) + 6.0 * (gsl_pow_2(tauxy) + gsl_pow_2(tauyz) + gsl_pow_2(tauzx)))); } double feenox_tresca_from_stress_tensor(double sigmax, double sigmay, double sigmaz, double tauxy, double tauyz, double tauzx) { double sigma1 = 0; double sigma3 = 0; feenox_call(feenox_principal_stress_from_cauchy(sigmax, sigmay, sigmaz, tauxy, tauyz, tauzx, &sigma1, NULL, &sigma3)); return fabs(sigma1 - sigma3); } int feenox_strain_energy(void) { #ifdef HAVE_PETSC Vec Kphi = NULL; petsc_call(VecDuplicate(feenox.pde.phi, &Kphi)); petsc_call(MatMult(feenox.pde.K, feenox.pde.phi, Kphi)); PetscScalar e = 0; petsc_call(VecDot(feenox.pde.phi, Kphi, &e)); petsc_call(VecDestroy(&Kphi)); feenox_var_value(mechanical.strain_energy) = 0.5*e; /* if (fino.problem_kind == problem_kind_axisymmetric) { wasora_var(fino.vars.strain_energy) *= 2*M_PI; } */ if (feenox_var_value(feenox_special_var(in_static))) { if ((int)(feenox_var_value(feenox_special_var(step_static))) == 1) { *mechanical.strain_energy->initial_static = *mechanical.strain_energy->value; } *mechanical.strain_energy->initial_transient = *mechanical.strain_energy->value; } #endif return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/post.c0000644000175000017500000001033214773607165014536 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox mechanical post-processing routines * * Copyright (C) 2021-2022 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" int feenox_problem_solve_post_mechanical(void) { if (mechanical.strain_energy->used) { feenox_call(feenox_strain_energy()); } int uses_displ_max = (mechanical.displ_max->used || mechanical.displ_max_x->used || mechanical.displ_max_y->used || mechanical.displ_max_z->used || mechanical.u_at_displ_max->used || mechanical.v_at_displ_max->used || mechanical.w_at_displ_max->used); int uses_sigma_max = (mechanical.sigma_max->used || mechanical.sigma_max_x->used || mechanical.sigma_max_y->used || mechanical.sigma_max_z->used || mechanical.u_at_sigma_max->used || mechanical.v_at_sigma_max->used || mechanical.w_at_sigma_max->used); if (uses_displ_max == 0 && uses_sigma_max == 0) { return FEENOX_OK; } double displ2 = 0; double max_displ2 = 0; double sigma_max = 0; for (size_t j = 0; j < feenox.pde.mesh->n_nodes; j++) { if (uses_displ_max) { displ2 = 0; for (unsigned int g = 0; g < feenox.pde.dofs; g++) { displ2 += gsl_pow_2(feenox_vector_get(feenox.pde.solution[g]->vector_value, j)); } if (displ2 >= max_displ2) { max_displ2 = displ2; feenox_var_value(mechanical.displ_max) = sqrt(displ2); feenox_var_value(mechanical.displ_max_x) = feenox_vector_get(feenox.pde.solution[0]->vector_argument[0], j); feenox_var_value(mechanical.displ_max_y) = feenox_vector_get(feenox.pde.solution[0]->vector_argument[1], j); if (feenox.pde.dim == 3) { feenox_var_value(mechanical.displ_max_z) = feenox_vector_get(feenox.pde.solution[0]->vector_argument[2], j); } feenox_var_value(mechanical.u_at_displ_max) = feenox_vector_get(feenox.pde.solution[0]->vector_value, j); feenox_var_value(mechanical.v_at_displ_max) = feenox_vector_get(feenox.pde.solution[1]->vector_value, j); if (feenox.pde.dim == 3) { feenox_var_value(mechanical.w_at_displ_max) = feenox_vector_get(feenox.pde.solution[2]->vector_value, j); } } } if (uses_sigma_max) { if (feenox_vector_get(mechanical.sigma->vector_value, j) > sigma_max) { feenox_var_value(mechanical.sigma_max) = feenox_vector_get(mechanical.sigma->vector_value, j); // TODO: not cache friendly! feenox_var_value(mechanical.sigma_max_x) = feenox_vector_get(feenox.pde.solution[0]->vector_argument[0], j); feenox_var_value(mechanical.sigma_max_y) = feenox_vector_get(feenox.pde.solution[0]->vector_argument[1], j); if (feenox.pde.dim == 3) { feenox_var_value(mechanical.sigma_max_z) = feenox_vector_get(feenox.pde.solution[0]->vector_argument[2], j); } feenox_var_value(mechanical.u_at_sigma_max) = feenox_vector_get(feenox.pde.solution[0]->vector_value, j); feenox_var_value(mechanical.v_at_sigma_max) = feenox_vector_get(feenox.pde.solution[1]->vector_value, j); if (feenox.pde.dim == 3) { feenox_var_value(mechanical.w_at_sigma_max) = feenox_vector_get(feenox.pde.solution[2]->vector_value, j); } } } } return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/init.c0000644000175000017500000005565114773607165014531 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox elastic mechanical initialization routines * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" mechanical_t mechanical; int feenox_problem_parse_time_init_mechanical(void) { #ifdef HAVE_PETSC // virtual methods feenox.pde.parse_bc = feenox_problem_bc_parse_mechanical; feenox.pde.parse_write_results = feenox_problem_parse_write_post_mechanical; feenox.pde.init_before_run = feenox_problem_init_runtime_mechanical; feenox.pde.setup_ksp = feenox_problem_setup_ksp_mechanical; feenox.pde.setup_pc = feenox_problem_setup_pc_mechanical; feenox.pde.element_build_allocate_aux = feenox_problem_build_allocate_aux_mechanical; feenox.pde.element_build_volumetric_at_gauss = feenox_problem_build_volumetric_gauss_point_mechanical; feenox.pde.solve_post = feenox_problem_solve_post_mechanical; feenox.pde.gradient_fill = feenox_problem_gradient_fill_mechanical; feenox.pde.gradient_nodal_properties = feenox_problem_gradient_properties_at_element_nodes_mechanical; feenox.pde.gradient_alloc_nodal_fluxes = feenox_problem_gradient_fluxes_at_node_alloc_mechanical; feenox.pde.gradient_add_elemental_contribution_to_node = feenox_problem_gradient_add_elemental_contribution_to_node_mechanical; feenox.pde.gradient_fill_fluxes = feenox_problem_gradient_fill_fluxes_mechanical; // we are FEM feenox.mesh.default_field_location = field_location_nodes; // move symmetry_axis which is a general PDE setting to // the mechanically-particular axisymmetric variant if (feenox.pde.symmetry_axis != symmetry_axis_none) { mechanical.variant = variant_axisymmetric; } // check consistency of problem type and dimensions if (mechanical.variant == variant_axisymmetric || mechanical.variant == variant_plane_stress || mechanical.variant == variant_plane_strain) { if (feenox.pde.dim != 0) { if (feenox.pde.dim != 2) { feenox_push_error_message("dimension inconsistency, expected 2 dimensions not %d", feenox.pde.dim); return FEENOX_ERROR; } } else { feenox.pde.dim = 2; } if (feenox.pde.dofs != 0) { if (feenox.pde.dofs != 2) { feenox_push_error_message("DOF inconsistency, expected DOFs per node = 2"); return FEENOX_ERROR; } } else { feenox.pde.dofs = 2; } } else { if (feenox.pde.dim == 0) { // default is 3d feenox.pde.dim = 3; } else if (feenox.pde.dim == 1) { feenox_push_error_message("cannot solve 1D mechanical problems"); return FEENOX_ERROR; } else if (feenox.pde.dim == 2) { feenox_push_error_message("to solve 2D problems give either plane_stress, plane_strain or axisymmetric"); return FEENOX_ERROR; } else if (feenox.pde.dim != 3) { feenox_push_error_message("dimension inconsistency, expected DIM 2 or 3 instead of %d", feenox.pde.dim); return FEENOX_ERROR; } feenox.pde.dofs = feenox.pde.dim; } // TODO: custom names // TODO: document feenox_check_alloc(feenox.pde.unknown_name = calloc(feenox.pde.dofs, sizeof(char *))); feenox_check_alloc(feenox.pde.unknown_name[0] = strdup("u")); if (feenox.pde.dofs > 1) { feenox_check_alloc(feenox.pde.unknown_name[1] = strdup("v")); if (feenox.pde.dofs > 2) { feenox_check_alloc(feenox.pde.unknown_name[2] = strdup("w")); } } // ------- elasticity-related outputs ----------------------------------- // TODO: document feenox_call(feenox_problem_define_solution_function("sigmax", &mechanical.sigmax, FEENOX_SOLUTION_GRADIENT)); feenox_call(feenox_problem_define_solution_function("sigmay", &mechanical.sigmay, FEENOX_SOLUTION_GRADIENT)); feenox_call(feenox_problem_define_solution_function("tauxy", &mechanical.tauxy, FEENOX_SOLUTION_GRADIENT)); if (feenox.pde.dofs == 3) { feenox_call(feenox_problem_define_solution_function("sigmaz", &mechanical.sigmaz, FEENOX_SOLUTION_GRADIENT)); feenox_call(feenox_problem_define_solution_function("tauyz", &mechanical.tauyz, FEENOX_SOLUTION_GRADIENT)); feenox_call(feenox_problem_define_solution_function("tauzx", &mechanical.tauzx, FEENOX_SOLUTION_GRADIENT)); } feenox_call(feenox_problem_define_solution_function("sigma1", &mechanical.sigma1, FEENOX_SOLUTION_GRADIENT)); feenox_call(feenox_problem_define_solution_function("sigma2", &mechanical.sigma2, FEENOX_SOLUTION_GRADIENT)); feenox_call(feenox_problem_define_solution_function("sigma3", &mechanical.sigma3, FEENOX_SOLUTION_GRADIENT)); feenox_call(feenox_problem_define_solution_function("sigma", &mechanical.sigma, FEENOX_SOLUTION_GRADIENT)); // feenox_call(feenox_problem_define_solution_function("delta_sigma", &mechanical.delta_sigma, FEENOX_SOLUTION_GRADIENT)); feenox_call(feenox_problem_define_solution_function("tresca", &mechanical.tresca, FEENOX_SOLUTION_GRADIENT)); // these are for the algebraic expressions in the implicitly-defined BCs // i.e. 0=u*nx+v*ny or 0=u*y-v*x // here they are defined as uppercase because there already exist functions named u, v and w // but the parser changes their case when an implicit BC is read mechanical.displ_for_bc[0]= feenox_define_variable_get_ptr("U"); mechanical.displ_for_bc[1]= feenox_define_variable_get_ptr("V"); mechanical.displ_for_bc[2]= feenox_define_variable_get_ptr("W"); ///va+strain_energy+detail The strain energy stored in the solid, computed as ///va+strain_energy+detail $1/2 \cdot \vec{u}^T K \vec{u}$ ///va+strain_energy+detail where $\vec{u}$ is the displacements vector and $K$ is the stiffness matrix. feenox_check_alloc(mechanical.strain_energy = feenox_define_variable_get_ptr("strain_energy")); ///va+displ_max+detail The module of the maximum displacement of the elastic problem. feenox_check_alloc(mechanical.displ_max = feenox_define_variable_get_ptr("displ_max")); ///va+displ_max_x+detail The\ $x$ coordinate of the maximum displacement of the elastic problem. feenox_check_alloc(mechanical.displ_max_x = feenox_define_variable_get_ptr("displ_max_x")); ///va+displ_max_y+detail The\ $y$ coordinate of the maximum displacement of the elastic problem. feenox_check_alloc(mechanical.displ_max_y = feenox_define_variable_get_ptr("displ_max_y")); ///va+displ_max_z+detail The\ $z$ coordinate of the maximum displacement of the elastic problem. feenox_check_alloc(mechanical.displ_max_z = feenox_define_variable_get_ptr("displ_max_z")); ///va+u_at_displ_max+detail The\ $x$ component\ $u$ of the maximum displacement of the elastic problem. feenox_check_alloc(mechanical.u_at_displ_max = feenox_define_variable_get_ptr("u_at_displ_max")); ///va+v_at_displ_max+detail The\ $y$ component\ $v$ of the maximum displacement of the elastic problem. feenox_check_alloc(mechanical.v_at_displ_max = feenox_define_variable_get_ptr("v_at_displ_max")); ///va+w_at_displ_max+detail The\ $z$ component\ $w$ of the maximum displacement of the elastic problem. feenox_check_alloc(mechanical.w_at_displ_max = feenox_define_variable_get_ptr("w_at_displ_max")); ///va+sigma_max+detail The maximum von Mises stress\ $\sigma$ of the elastic problem. feenox_check_alloc(mechanical.sigma_max = feenox_define_variable_get_ptr("sigma_max")); ///va+delta_sigma_max+detail The uncertainty of the maximum Von Mises stress\ $\sigma$ of the elastic problem. ///va+delta_sigma_max+detail Not to be confused with the maximum uncertainty of the Von Mises stress. feenox_check_alloc(mechanical.delta_sigma_max = feenox_define_variable_get_ptr("delta_sigma_max")); ///va+sigma_max_x+detail The\ $x$ coordinate of the maximum von Mises stress\ $\sigma$ of the elastic problem. feenox_check_alloc(mechanical.sigma_max_x = feenox_define_variable_get_ptr("sigma_max_x")); ///va+sigma_max_y+detail The\ $x$ coordinate of the maximum von Mises stress\ $\sigma$ of the elastic problem. feenox_check_alloc(mechanical.sigma_max_y = feenox_define_variable_get_ptr("sigma_max_y")); ///va+sigma_max_z+detail The\ $x$ coordinate of the maximum von Mises stress\ $\sigma$ of the elastic problem. feenox_check_alloc(mechanical.sigma_max_z = feenox_define_variable_get_ptr("sigma_max_z")); ///va+u_at_sigma_max+detail The\ $x$ component\ $u$ of the displacement where the maximum von Mises stress\ $\sigma$ of the elastic problem is located. feenox_check_alloc(mechanical.u_at_sigma_max = feenox_define_variable_get_ptr("u_at_sigma_max")); ///va+v_at_sigma_max+detail The\ $y$ component\ $v$ of the displacement where the maximum von Mises stress\ $\sigma$ of the elastic problem is located. feenox_check_alloc(mechanical.v_at_sigma_max = feenox_define_variable_get_ptr("v_at_sigma_max")); ///va+w_at_sigma_max+detail The\ $z$ component\ $w$ of the displacement where the maximum von Mises stress\ $\sigma$ of the elastic problem is located. feenox_check_alloc(mechanical.w_at_sigma_max = feenox_define_variable_get_ptr("w_at_sigma_max")); #endif return FEENOX_OK; } int feenox_problem_init_runtime_mechanical(void) { #ifdef HAVE_PETSC feenox.pde.mesh->data_type = data_type_node; feenox.pde.spatial_unknowns = feenox.pde.mesh->n_nodes; // initialize distributions // first see if we have linear elastic feenox_call(feenox_distribution_init(&mechanical.E, "E")); feenox_call(feenox_distribution_init(&mechanical.nu, "nu")); // TODO: allow different volumes to have different material models if (mechanical.E.defined && mechanical.nu.defined) { if (mechanical.E.full == 0) { feenox_push_error_message("Young modulus 'E' is not defined over all volumes"); return FEENOX_ERROR; } if (mechanical.nu.full == 0) { feenox_push_error_message("Poisson’s ratio 'nu' is not defined over all volumes"); return FEENOX_ERROR; } mechanical.material_model = material_model_elastic_isotropic; } else if (mechanical.E.defined) { feenox_push_error_message("Young modulus 'E' defined but Poisson’s ratio 'nu' not defined"); return FEENOX_ERROR; } else if (mechanical.nu.defined) { feenox_push_error_message("Poisson’s ratio 'nu' defined but Young modulus 'E' not defined"); return FEENOX_ERROR; } // see if there are orthotropic properties feenox_call(feenox_distribution_init(&mechanical.E_x, "Ex")); if (mechanical.E_x.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.E_x, "E_x")); } feenox_call(feenox_distribution_init(&mechanical.E_y, "Ey")); if (mechanical.E_y.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.E_y, "E_y")); } feenox_call(feenox_distribution_init(&mechanical.E_z, "Ez")); if (mechanical.E_z.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.E_z, "E_z")); } feenox_call(feenox_distribution_init(&mechanical.nu_xy, "nuxy")); if (mechanical.nu_xy.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.nu_xy, "nu_xy")); } feenox_call(feenox_distribution_init(&mechanical.nu_yz, "nuyz")); if (mechanical.nu_yz.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.nu_yz, "nu_yz")); } feenox_call(feenox_distribution_init(&mechanical.nu_zx, "nuzx")); if (mechanical.nu_zx.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.nu_zx, "nu_zx")); } feenox_call(feenox_distribution_init(&mechanical.G_xy, "Gxy")); if (mechanical.G_xy.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.G_xy, "G_xy")); } feenox_call(feenox_distribution_init(&mechanical.G_yz, "Gyz")); if (mechanical.G_yz.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.G_yz, "G_yz")); } feenox_call(feenox_distribution_init(&mechanical.G_zx, "Gzx")); if (mechanical.G_zx.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.G_zx, "G_zx")); } // check for consistency int n_ortho = mechanical.E_x.defined + mechanical.E_y.defined + mechanical.E_z.defined + mechanical.nu_xy.defined + mechanical.nu_yz.defined + mechanical.nu_zx.defined + mechanical.G_xy.defined + mechanical.G_yz.defined + mechanical.G_zx.defined; if (n_ortho > 0) { if (mechanical.material_model == material_model_elastic_isotropic) { feenox_push_error_message("both isotropic and orthotropic properties given, choose one"); return FEENOX_ERROR; } else if (n_ortho < 9) { feenox_push_error_message("%d orthotropic properties missing", 9-n_ortho); return FEENOX_ERROR; } else if (mechanical.material_model == material_model_unknown) { mechanical.material_model = material_model_elastic_orthotropic; } } // thermal expansion model // first try isotropic feenox_call(feenox_distribution_init(&mechanical.alpha, "alpha")); if (mechanical.alpha.defined) { mechanical.thermal_expansion_model = thermal_expansion_model_isotropic; } // see if there are orthotropic properties feenox_call(feenox_distribution_init(&mechanical.alpha_x, "alphax")); if (mechanical.alpha_x.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.alpha_x, "alpha_x")); } feenox_call(feenox_distribution_init(&mechanical.alpha_y, "alphay")); if (mechanical.alpha_y.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.alpha_y, "alpha_y")); } feenox_call(feenox_distribution_init(&mechanical.alpha_z, "alphaz")); if (mechanical.alpha_z.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.alpha_z, "alpha_z")); } // check for consistency n_ortho = mechanical.alpha_x.defined + mechanical.alpha_y.defined + mechanical.alpha_z.defined; if (n_ortho > 0) { if (mechanical.thermal_expansion_model == thermal_expansion_model_isotropic) { feenox_push_error_message("both isotropic and orthotropic thermal expansion coefficients given, choose one"); return FEENOX_ERROR; } else if (n_ortho < 3) { feenox_push_error_message("%d orthotropic thermal expansion coefficients missing", 3-n_ortho); return FEENOX_ERROR; } else if (mechanical.thermal_expansion_model == thermal_expansion_model_none) { mechanical.thermal_expansion_model = thermal_expansion_model_orthotropic; } } // temperature used for the thermal expansion feenox_call(feenox_distribution_init(&mechanical.T, "T")); // reference temperature: it has to be a variable feenox_call(feenox_distribution_init(&mechanical.T_ref, "T0")); if (mechanical.T_ref.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.T_ref, "T_0")); } if (mechanical.T_ref.defined) { if (mechanical.T_ref.non_uniform) { feenox_push_error_message("reference temperature T0 has to be uniform"); return FEENOX_ERROR; } // TODO: it is hard to know if a variable will be constant in time... /* if (mechanical.T_ref.constant == 0) { feenox_push_error_message("reference temperature T0 has to be constant"); return FEENOX_ERROR; } */ // evaluate reference temperature and store it in T0 mechanical.T0 = mechanical.T_ref.eval(&mechanical.T_ref, NULL, NULL); } // volumetric force densities feenox_call(feenox_distribution_init(&mechanical.f_x, "fx")); if (mechanical.f_x.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.f_x, "f_x")); } feenox_call(feenox_distribution_init(&mechanical.f_y, "fy")); if (mechanical.f_y.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.f_y, "f_y")); } feenox_call(feenox_distribution_init(&mechanical.f_z, "fz")); if (mechanical.f_z.defined == 0) { feenox_call(feenox_distribution_init(&mechanical.f_z, "f_z")); } // set material model virtual methods switch (mechanical.material_model) { case material_model_elastic_isotropic: mechanical.uniform_C = (mechanical.E.non_uniform == 0 && mechanical.nu.non_uniform == 0); if (mechanical.variant == variant_full) { mechanical.compute_C = feenox_problem_build_compute_mechanical_C_elastic_isotropic; mechanical.compute_stress_from_strain = mechanical.uniform_C ? feenox_stress_from_strain : feenox_stress_from_strain_elastic_isotropic; } else if (mechanical.variant == variant_plane_stress) { mechanical.compute_C = feenox_problem_build_compute_mechanical_C_elastic_plane_stress; mechanical.compute_stress_from_strain = feenox_stress_from_strain_elastic_isotropic; } else if (mechanical.variant == variant_plane_strain) { mechanical.compute_C = feenox_problem_build_compute_mechanical_C_elastic_plane_strain; mechanical.compute_stress_from_strain = feenox_stress_from_strain_elastic_isotropic; } break; case material_model_elastic_orthotropic: if (mechanical.variant != variant_full) { feenox_push_error_message("elastic orthotropic materials cannot be used in plane stress/strain"); return FEENOX_ERROR; } mechanical.compute_C = feenox_problem_build_compute_mechanical_C_elastic_orthotropic; mechanical.compute_stress_from_strain = feenox_stress_from_strain; break; default: feenox_push_error_message("unknown material model, usual way to go is to define E and nu"); return FEENOX_ERROR; break; } // size of stress-strain matrix if (mechanical.variant == variant_full) { mechanical.stress_strain_size = 6; } else if (mechanical.variant == variant_axisymmetric) { mechanical.stress_strain_size = 4; } else if (mechanical.variant == variant_plane_stress || mechanical.variant == variant_plane_strain) { mechanical.stress_strain_size = 3; } else { feenox_push_error_message("internal mismatch, unknown variant"); return FEENOX_ERROR; } // allocate stress-strain objects feenox_check_alloc(mechanical.C = gsl_matrix_calloc(mechanical.stress_strain_size, mechanical.stress_strain_size)); if (mechanical.uniform_C) { // cache properties feenox_call(mechanical.compute_C(NULL, NULL)); } switch (mechanical.thermal_expansion_model) { case thermal_expansion_model_isotropic: mechanical.compute_thermal_strain = feenox_problem_build_compute_mechanical_strain_isotropic; mechanical.compute_thermal_stress = feenox_problem_build_compute_mechanical_stress_isotropic; break; case thermal_expansion_model_orthotropic: mechanical.compute_thermal_strain = feenox_problem_build_compute_mechanical_strain_orthotropic; mechanical.compute_thermal_stress = feenox_problem_build_compute_mechanical_stress_orthotropic; break; default: break; } if (mechanical.thermal_expansion_model != thermal_expansion_model_none) { feenox_check_alloc(mechanical.et = gsl_vector_calloc(mechanical.stress_strain_size)); feenox_check_alloc(mechanical.Cet = gsl_vector_calloc(mechanical.stress_strain_size)); } // TODO: check nonlinearity! if (feenox.pde.math_type == math_type_automatic) { feenox.pde.math_type = math_type_linear; } feenox.pde.solve = feenox_problem_solve_petsc_linear; feenox.pde.has_stiffness = 1; // TODO: transient feenox.pde.has_mass = 0; feenox.pde.has_rhs = 1; feenox.pde.has_jacobian_K = 0; feenox.pde.has_jacobian_M = 0; feenox.pde.has_jacobian_b = 0; feenox.pde.has_jacobian = feenox.pde.has_jacobian_K || feenox.pde.has_jacobian_M || feenox.pde.has_jacobian_b; feenox.pde.symmetric_K = 1; feenox.pde.symmetric_M = 1; // see if we have to compute gradients feenox.pde.compute_gradients |= (mechanical.sigmax != NULL && mechanical.sigmax->used) || (mechanical.sigmay != NULL && mechanical.sigmay->used) || (mechanical.sigmaz != NULL && mechanical.sigmaz->used) || (mechanical.tauxy != NULL && mechanical.tauxy->used) || (mechanical.tauyz != NULL && mechanical.tauyz->used) || (mechanical.tauzx != NULL && mechanical.tauzx->used) || (mechanical.sigma1 != NULL && mechanical.sigma1->used) || (mechanical.sigma2 != NULL && mechanical.sigma2->used) || (mechanical.sigma3 != NULL && mechanical.sigma3->used) || (mechanical.sigma != NULL && mechanical.sigma->used) || (mechanical.tresca != NULL && mechanical.tresca->used); #endif return FEENOX_OK; } #ifdef HAVE_PETSC int feenox_problem_compute_rigid_nullspace(MatNullSpace *nullspace) { Vec vec_coords = NULL; if (feenox.pde.K != NULL) { petsc_call(MatCreateVecs(feenox.pde.K, NULL, &vec_coords)); } else { feenox_check_alloc(vec_coords = feenox_problem_create_vector("coordinates")); } petsc_call(VecSetBlockSize(vec_coords, feenox.pde.dim)); petsc_call(VecSetUp(vec_coords)); PetscScalar *coords = NULL; petsc_call(VecGetArray(vec_coords, &coords)); for (size_t j = feenox.pde.first_node; j < feenox.pde.last_node; j++) { for (unsigned int d = 0; d < feenox.pde.dim; d++) { coords[feenox.pde.mesh->node[j].index_dof[d] - feenox.pde.first_row] = feenox.pde.mesh->node[j].x[d]; } } petsc_call(VecRestoreArray(vec_coords, &coords)); petsc_call(MatNullSpaceCreateRigidBody(vec_coords, nullspace)); petsc_call(VecDestroy(&vec_coords)); return FEENOX_OK; } int feenox_problem_setup_pc_mechanical(PC pc) { PCType pc_type = NULL; petsc_call(PCGetType(pc, &pc_type)); if (pc_type == NULL) { petsc_call(PCSetType(pc, PCGAMG)); } petsc_call(PCGetType(pc, &pc_type)); if (strcmp(pc_type, PCGAMG) == 0) { if (mechanical.rigid_body_base == NULL) { feenox_problem_compute_rigid_nullspace(&mechanical.rigid_body_base); } if (feenox.pde.has_stiffness) { petsc_call(MatSetNearNullSpace(feenox.pde.K, mechanical.rigid_body_base)); } if (feenox.pde.has_mass) { petsc_call(MatSetNearNullSpace(feenox.pde.M, mechanical.rigid_body_base)); } } return FEENOX_OK; } int feenox_problem_setup_ksp_mechanical(KSP ksp) { KSPType ksp_type = NULL; petsc_call(KSPGetType(ksp, &ksp_type)); if (ksp_type == NULL) { // if the user did not choose anything, we default to CG or GMRES petsc_call(KSPSetType(ksp, (feenox.pde.symmetric_K && feenox.pde.symmetric_M) ? KSPCG : KSPGMRES)); } return FEENOX_OK; } #endif feenox-1.1/src/pdes/mechanical/mechanical.h0000644000175000017500000001271714773607165015653 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox mechanical header * * Copyright (C) 2021-2022 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef MECHANICAL_H #define MECHANICAL_H #define BC_TYPE_MECHANICAL_UNDEFINED 0 #define BC_TYPE_MECHANICAL_DISPLACEMENT 1 #define BC_TYPE_MECHANICAL_TANGENTIAL_SYMMETRY 2 #define BC_TYPE_MECHANICAL_RADIAL_SYMMETRY 3 #define BC_TYPE_MECHANICAL_MULTIDOF_EXPRESSION 4 #define BC_TYPE_MECHANICAL_PRESSURE_TENSION 16 #define BC_TYPE_MECHANICAL_PRESSURE_COMPRESSION 17 #define BC_TYPE_MECHANICAL_TRACTION 18 #define BC_TYPE_MECHANICAL_FORCE 19 typedef struct mechanical_t mechanical_t; typedef struct feenox_linearize_t feenox_linearize_t; struct mechanical_t { enum { variant_full, variant_plane_stress, variant_plane_strain, variant_axisymmetric, } variant; // TODO: have a "mixed" material model where each volume has its own model enum { material_model_unknown, material_model_elastic_isotropic, material_model_elastic_orthotropic, } material_model; enum { thermal_expansion_model_none, thermal_expansion_model_isotropic, thermal_expansion_model_orthotropic, } thermal_expansion_model; // isotropic properties distribution_t E; // Young's modulus distribution_t nu; // Poisson's ratio distribution_t alpha; // (mean) thermal expansion coefficient // orthotropic properties distribution_t E_x, E_y, E_z; // Young's moduli distribution_t nu_xy, nu_yz, nu_zx; // Poisson's ratios distribution_t G_xy, G_yz, G_zx; // Shear moduli distribution_t alpha_x, alpha_y, alpha_z; // (mean) thermal expansion coefficient // temperature field distribution_t T; // temperature distribution distribution_t T_ref; // reference temperature (has to be a constant) double T0; // evaluated T_ref // volumetric force densityies distribution_t f_x; distribution_t f_y; distribution_t f_z; // flags to speed up things int uniform_C; int constant_C; int uniform_expansion; int constant_expansion; unsigned int n_nodes; unsigned int stress_strain_size; // holder for the rigid-body displacements #ifdef HAVE_PETSC MatNullSpace rigid_body_base; #endif // C-like virtual methods (i.e. function pointers) int (*compute_C)(const double *x, material_t *material); int (*compute_stress_from_strain)(node_t *node, element_t *element, unsigned int j, double epsilonx, double epsilony, double epsilonz, double gammaxy, double gammayz, double gammazx, double *sigmax, double *sigmay, double *sigmaz, double *tauxy, double *tauyz, double *tauzx); int (*compute_thermal_strain)(const double *x, material_t *material); int (*compute_thermal_stress)(const double *x, material_t *material, double *sigmat_x, double *sigmat_y, double *sigmat_z); // auxiliary intermediate matrices gsl_matrix *C; // stress-strain matrix, 6x6 for 3d gsl_matrix *B; // strain-displacement matrix, 6x(3*n_nodes) for 3d gsl_matrix *CB; // product of C times B, 6x(3*n_nodes) for 3d gsl_vector *et; // thermal strain vector, size 6 for 3d gsl_vector *Cet; // product of C times et, size 6 for 3d // double hourglass_epsilon; // for implicit multi-dof BCs var_t *displ_for_bc[3]; var_t *strain_energy; var_t *displ_max; var_t *displ_max_x; var_t *displ_max_y; var_t *displ_max_z; var_t *u_at_displ_max; var_t *v_at_displ_max; var_t *w_at_displ_max; var_t *sigma_max; var_t *sigma_max_x; var_t *sigma_max_y; var_t *sigma_max_z; var_t *delta_sigma_max; var_t *u_at_sigma_max; var_t *v_at_sigma_max; var_t *w_at_sigma_max; // cauchy stresses function_t *sigmax; function_t *sigmay; function_t *sigmaz; function_t *tauxy; function_t *tauyz; function_t *tauzx; function_t *sigma1; // principal stresses function_t *sigma2; function_t *sigma3; function_t *sigma; // von mises function_t *delta_sigma; // uncertainty function_t *tresca; feenox_linearize_t *linearizes; }; struct feenox_linearize_t { expr_t x1; expr_t y1; expr_t z1; expr_t x2; expr_t y2; expr_t z2; // TODO: ignore through thickness // int ignore_through_thickness; file_t *file; // von mises var_t *M; // membrane var_t *MB; // membrane plus bending var_t *P; // peak // tresca var_t *Mt; var_t *MBt; var_t *Pt; // principal1 var_t *M1; var_t *MB1; var_t *P1; // principal2 var_t *M2; var_t *MB2; var_t *P2; // principal3 var_t *M3; var_t *MB3; var_t *P3; feenox_linearize_t *next; }; extern mechanical_t mechanical; #endif /* MECHANICAL_H */ feenox-1.1/src/pdes/mechanical/elastic-plane-stress.c0000644000175000017500000000304414773607165017615 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox elastic isotropic plane-stress mechanical material * * Copyright (C) 2021-2022 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" int feenox_problem_build_compute_mechanical_C_elastic_plane_stress(const double *x, material_t *material) { double E = mechanical.E.eval(&mechanical.E, x, material); double nu = mechanical.nu.eval(&mechanical.nu, x, material); double c1 = E/(1-nu*nu); double c2 = nu * c1; gsl_matrix_set(mechanical.C, 0, 0, c1); gsl_matrix_set(mechanical.C, 0, 1, c2); gsl_matrix_set(mechanical.C, 1, 0, c2); gsl_matrix_set(mechanical.C, 1, 1, c1); gsl_matrix_set(mechanical.C, 2, 2, c1*0.5*(1-nu)); return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/bulk.c0000644000175000017500000001257014773607165014514 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox routines to build elemental mechanical objects * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" int feenox_problem_build_allocate_aux_mechanical(unsigned int n_nodes) { mechanical.n_nodes = n_nodes; if (mechanical.B != NULL) { gsl_matrix_free(mechanical.B); } feenox_check_alloc(mechanical.B = gsl_matrix_calloc(mechanical.stress_strain_size, feenox.pde.dofs * mechanical.n_nodes)); if (mechanical.CB != NULL) { gsl_matrix_free(mechanical.CB); } feenox_check_alloc(mechanical.CB = gsl_matrix_calloc(mechanical.stress_strain_size, feenox.pde.dofs * mechanical.n_nodes)); return FEENOX_OK; } int feenox_problem_build_volumetric_gauss_point_mechanical(element_t *e, unsigned int q) { #ifdef HAVE_PETSC double *x = NULL; if (mechanical.uniform_C == 0) { // material stress-strain relationship double *x = feenox_fem_compute_x_at_gauss(e, q, feenox.pde.mesh->integration); mechanical.compute_C(x, feenox_fem_get_material(e)); } gsl_matrix *dhdx = feenox_fem_compute_B_at_gauss_integration(e, q, feenox.pde.mesh->integration); for (unsigned int j = 0; j < mechanical.n_nodes; j++) { // TODO: virtual methods? they cannot be inlined... if (mechanical.variant == variant_full) { gsl_matrix_set(mechanical.B, 0, 3*j+0, gsl_matrix_get(dhdx, 0, j)); gsl_matrix_set(mechanical.B, 1, 3*j+1, gsl_matrix_get(dhdx, 1, j)); gsl_matrix_set(mechanical.B, 2, 3*j+2, gsl_matrix_get(dhdx, 2, j)); gsl_matrix_set(mechanical.B, 3, 3*j+0, gsl_matrix_get(dhdx, 1, j)); gsl_matrix_set(mechanical.B, 3, 3*j+1, gsl_matrix_get(dhdx, 0, j)); gsl_matrix_set(mechanical.B, 4, 3*j+1, gsl_matrix_get(dhdx, 2, j)); gsl_matrix_set(mechanical.B, 4, 3*j+2, gsl_matrix_get(dhdx, 1, j)); gsl_matrix_set(mechanical.B, 5, 3*j+0, gsl_matrix_get(dhdx, 2, j)); gsl_matrix_set(mechanical.B, 5, 3*j+2, gsl_matrix_get(dhdx, 0, j)); } else if (mechanical.variant == variant_axisymmetric) { feenox_push_error_message("axisymmetric still not implemented"); return FEENOX_ERROR; } else if (mechanical.variant == variant_plane_stress || mechanical.variant == variant_plane_strain) { // plane stress and plane strain are the same // see equation 14.18 IFEM CH.14 sec 14.4.1 pag 14-11 gsl_matrix_set(mechanical.B, 0, 2*j+0, gsl_matrix_get(dhdx, 0, j)); gsl_matrix_set(mechanical.B, 1, 2*j+1, gsl_matrix_get(dhdx, 1, j)); gsl_matrix_set(mechanical.B, 2, 2*j+0, gsl_matrix_get(dhdx, 1, j)); gsl_matrix_set(mechanical.B, 2, 2*j+1, gsl_matrix_get(dhdx, 0, j)); } else { return FEENOX_ERROR; } } // wdet double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, feenox.pde.mesh->integration); // volumetric force densities if (mechanical.f_x.defined || mechanical.f_y.defined || mechanical.f_z.defined) { if (x == NULL) { x = feenox_fem_compute_x_at_gauss(e, q, feenox.pde.mesh->integration); } material_t *material = feenox_fem_get_material(e); gsl_matrix *H = feenox_fem_compute_H_c_at_gauss(e, q, feenox.pde.mesh->integration); double f_x = mechanical.f_x.eval(&mechanical.f_x, x, material); double f_y = mechanical.f_y.eval(&mechanical.f_y, x, material); double f_z = mechanical.f_z.eval(&mechanical.f_z, x, material); for (int j = 0; j < e->type->nodes; j++) { int offset = feenox.pde.dofs*j; // TODO: matrix-vector product double wh = wdet * gsl_matrix_get(H, 0, j); if (mechanical.f_x.defined) { gsl_vector_add_to_element(feenox.fem.bi, offset+0, wh * f_x); } if (mechanical.f_y.defined) { gsl_vector_add_to_element(feenox.fem.bi, offset+1, wh * f_y); } if (mechanical.f_z.defined) { gsl_vector_add_to_element(feenox.fem.bi, offset+2, wh * f_z); } } } // elemental stiffness B'*C*B feenox_call(feenox_blas_BtCB_accum(mechanical.B, mechanical.C, mechanical.CB, wdet, feenox.fem.Ki)); // thermal expansion strain vector if (mechanical.thermal_expansion_model != thermal_expansion_model_none) { if (x == NULL) { x = feenox_fem_compute_x_at_gauss(e, q, feenox.pde.mesh->integration); } mechanical.compute_thermal_strain(x, feenox_fem_get_material(e)); feenox_call(feenox_blas_Atb(mechanical.C, mechanical.et, 1.0, mechanical.Cet)); feenox_call(feenox_blas_Atb_accum(mechanical.B, mechanical.Cet, wdet, feenox.fem.bi)); } #endif return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/expansion-orthotropic.c0000644000175000017500000000541114773607165020131 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox thermal orthotropic expansion mechanical material * * Copyright (C) 2022 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" int feenox_problem_build_compute_mechanical_strain_orthotropic (const double *x, material_t *material) { double delta_T = mechanical.T.eval(&mechanical.T, x, material) - mechanical.T0; gsl_vector_set(mechanical.et, 0, mechanical.alpha_x.eval(&mechanical.alpha_x, x, material) * delta_T); gsl_vector_set(mechanical.et, 1, mechanical.alpha_y.eval(&mechanical.alpha_y, x, material) * delta_T); if (feenox.pde.dim > 2) { gsl_vector_set(mechanical.et, 2, mechanical.alpha_z.eval(&mechanical.alpha_z, x, material) * delta_T); } return FEENOX_OK; } int feenox_problem_build_compute_mechanical_stress_orthotropic (const double *x, material_t *material, double *sigmat_x, double *sigmat_y, double *sigmat_z) { double delta_T = mechanical.T.eval(&mechanical.T, x, material) - mechanical.T0; double alpha_x = mechanical.alpha_x.eval(&mechanical.alpha_x, x, material); double alpha_y = mechanical.alpha_y.eval(&mechanical.alpha_y, x, material); double alpha_z = mechanical.alpha_z.eval(&mechanical.alpha_z, x, material); // if the material is isotropic but non uniform, we do not have the proper C matrix if (mechanical.uniform_C == 0 && mechanical.material_model == material_model_elastic_isotropic) { mechanical.compute_C(x, material); } *sigmat_x = delta_T * (alpha_x * gsl_matrix_get(mechanical.C, 0, 0) + alpha_y * gsl_matrix_get(mechanical.C, 0, 1) + alpha_z * gsl_matrix_get(mechanical.C, 0, 2)); *sigmat_y = delta_T * (alpha_x * gsl_matrix_get(mechanical.C, 1, 0) + alpha_y * gsl_matrix_get(mechanical.C, 1, 1) + alpha_z * gsl_matrix_get(mechanical.C, 1, 2)); *sigmat_z = delta_T * (alpha_x * gsl_matrix_get(mechanical.C, 2, 0) + alpha_y * gsl_matrix_get(mechanical.C, 2, 1) + alpha_z * gsl_matrix_get(mechanical.C, 2, 2)); return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/methods.h0000644000175000017500000001336014773607165015225 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox mechanical methods * * Copyright (C) 2021-2023 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef MECHANICAL_METHODS_H #define MECHANICAL_METHODS_H // mechanical/parse.c extern int feenox_problem_parse_problem_mechanical(const char *); extern int feenox_problem_parse_write_post_mechanical(mesh_write_t *mesh_write, const char *); extern int feenox_parse_linearize_stress(); // mechanical/init.c extern int feenox_problem_parse_time_init_mechanical(void); extern int feenox_problem_init_runtime_mechanical(void); #ifdef HAVE_PETSC extern int feenox_problem_setup_pc_mechanical(PC pc); extern int feenox_problem_setup_ksp_mechanical(KSP ksp); extern int feenox_problem_setup_snes_mechanical(SNES snes); extern int feenox_problem_compute_rigid_nullspace(MatNullSpace *nullspace); #endif // mechanical/bc.c extern int feenox_problem_bc_parse_mechanical(bc_data_t *bc_data, const char *lhs, char *rhs); extern int feenox_problem_bc_set_mechanical_displacement(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_mechanical_symmetry(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_mechanical_radial(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_mechanical_multifreedom(bc_data_t *bc_data, element_t *e, size_t j_global); extern double feenox_mechanical_gsl_function_of_uvw(double x, void *params); extern int feenox_problem_bc_set_mechanical_compression(bc_data_t *bc_data, element_t *e, unsigned int q); extern int feenox_problem_bc_set_mechanical_tension(bc_data_t *bc_data, element_t *e, unsigned int q); extern int feenox_problem_bc_set_mechanical_normal_stress(bc_data_t *bc_data, element_t *e, unsigned int q, signed int sign); extern int feenox_problem_bc_set_mechanical_traction(bc_data_t *bc_data, element_t *e, unsigned int q); extern int feenox_problem_bc_set_mechanical_force(bc_data_t *bc_data, element_t *e, unsigned int q); // mechanical/bulk.c extern int feenox_problem_build_allocate_aux_mechanical(unsigned int n_nodes); extern int feenox_problem_build_volumetric_gauss_point_mechanical(element_t *, unsigned int q); // material models extern int feenox_problem_build_compute_mechanical_C_elastic_isotropic(const double *x, material_t *material); extern int feenox_problem_build_compute_mechanical_C_elastic_plane_stress(const double *x, material_t *material); extern int feenox_problem_build_compute_mechanical_C_elastic_plane_strain(const double *x, material_t *material); extern int feenox_problem_build_compute_mechanical_C_elastic_orthotropic(const double *x, material_t *material); extern int feenox_problem_build_compute_mechanical_strain_isotropic (const double *x, material_t *material); extern int feenox_problem_build_compute_mechanical_strain_orthotropic (const double *x, material_t *material); extern int feenox_stress_from_strain_elastic_isotropic(node_t *node, element_t *element, unsigned int j, double epsilonx, double epsilony, double epsilonz, double gammaxy, double gammayz, double gammazx, double *sigmax, double *sigmay, double *sigmaz, double *tauxy, double *tauyx, double *tauzx); extern int feenox_problem_build_compute_mechanical_stress_isotropic (const double *x, material_t *material, double *sigmat_x, double *sigmat_y, double *sigmat_z); extern int feenox_problem_build_compute_mechanical_stress_orthotropic (const double *x, material_t *material, double *sigmat_x, double *sigmat_y, double *sigmat_z); // mechanical/post.c extern int feenox_problem_solve_post_mechanical(void); // mechanical/stress.c extern int feenox_problem_gradient_fill_mechanical(void); extern int feenox_problem_gradient_properties_at_element_nodes_mechanical(element_t *element, mesh_t *mesh); extern int feenox_problem_gradient_fluxes_at_node_alloc_mechanical(node_t *node); extern int feenox_problem_gradient_add_elemental_contribution_to_node_mechanical(node_t *node, element_t *element, unsigned int j, double rel_weight); extern int feenox_problem_gradient_fill_fluxes_mechanical(mesh_t *mesh, size_t j); extern int feenox_stress_from_strain(node_t *node, element_t *element, unsigned int j, double epsilonx, double epsilony, double epsilonz, double gammaxy, double gammayz, double gammazx, double *sigmax, double *sigmay, double *sigmaz, double *tauxy, double *tauyx, double *tauzx); extern int feenox_principal_stress_from_cauchy(double sigmax, double sigmay, double sigmaz, double tauxy, double tauyz, double tauzx, double *sigma1, double *sigma2, double *sigma3); extern double feenox_vonmises_from_principal(double sigma1, double sigma2, double sigma3); extern double feenox_vonmises_from_stress_tensor(double sigmax, double sigmay, double sigmaz, double tauxy, double tauyz, double tauzx); extern double feenox_tresca_from_stress_tensor(double sigmax, double sigmay, double sigmaz, double tauxy, double tauyz, double tauzx); extern int feenox_strain_energy(void); // mechanical/linearize.c extern int feenox_instruction_linearize(void *arg); #endif feenox-1.1/src/pdes/mechanical/elastic-plane-strain.c0000644000175000017500000000315014773607165017570 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox elastic isotropic plane-strain mechanical material * * Copyright (C) 2021-2022 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" int feenox_problem_build_compute_mechanical_C_elastic_plane_strain(const double *x, material_t *material) { double E = mechanical.E.eval(&mechanical.E, x, material); double nu = mechanical.nu.eval(&mechanical.nu, x, material); double lambda = E*nu/((1+nu)*(1-2*nu)); double mu = 0.5*E/(1+nu); double lambda2mu = lambda + 2*mu; gsl_matrix_set(mechanical.C, 0, 0, lambda2mu); gsl_matrix_set(mechanical.C, 0, 1, lambda); gsl_matrix_set(mechanical.C, 1, 0, lambda); gsl_matrix_set(mechanical.C, 1, 1, lambda2mu); gsl_matrix_set(mechanical.C, 2, 2, mu); return FEENOX_OK; } feenox-1.1/src/pdes/mechanical/bc.c0000644000175000017500000003352114773607165014142 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines to handle mechanical BCs * * Copyright (C) 2021-2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "mechanical.h" int feenox_problem_bc_parse_mechanical(bc_data_t *bc_data, const char *lhs, char *rhs) { // TODO: document BCs with triple comments if (strcmp(lhs, "fixed") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_DISPLACEMENT; bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_mechanical_displacement; bc_data->dof = -1; } else if (strcmp(lhs, "u") == 0 || strcmp(lhs, "u_x") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_DISPLACEMENT; bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_mechanical_displacement; bc_data->dof = 0; } else if (strcmp(lhs, "v") == 0 || strcmp(lhs, "u_y") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_DISPLACEMENT; bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_mechanical_displacement; bc_data->dof = 1; if (feenox.pde.dofs < 1) { feenox_push_error_message("cannot set u (displacement in y) with DOFs < 2"); return FEENOX_ERROR; } } else if (strcmp(lhs, "w") == 0 || strcmp(lhs, "u_z") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_DISPLACEMENT; bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_mechanical_displacement; bc_data->dof = 2; if (feenox.pde.dofs < 2) { feenox_push_error_message("cannot set w (displacement in z) with DOFs < 3"); return FEENOX_ERROR; } } else if (strcmp(lhs, "p") == 0 || strcmp(lhs, "compression") == 0 || strcmp(lhs, "pressure") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_PRESSURE_COMPRESSION; bc_data->type_math = bc_type_math_neumann; bc_data->set_natural = feenox_problem_bc_set_mechanical_compression; } else if (strcmp(lhs, "t") == 0 || strcmp(lhs, "tension") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_PRESSURE_TENSION; bc_data->type_math = bc_type_math_neumann; bc_data->set_natural = feenox_problem_bc_set_mechanical_tension; } else if (strcmp(lhs, "tx") == 0 || strcmp(lhs, "ty") == 0 || strcmp(lhs, "tz") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_TRACTION; bc_data->type_math = bc_type_math_neumann; bc_data->set_natural = feenox_problem_bc_set_mechanical_traction; if (strcmp(lhs, "tx") == 0) { bc_data->dof = 0; } else if (strcmp(lhs, "ty") == 0) { bc_data->dof = 1; } else if (strcmp(lhs, "tz") == 0) { bc_data->dof = 2; } } else if (strcmp(lhs, "Fx") == 0 || strcmp(lhs, "Fy") == 0 || strcmp(lhs, "Fz") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_FORCE; bc_data->type_math = bc_type_math_neumann; bc_data->set_natural = feenox_problem_bc_set_mechanical_force; if (strcmp(lhs, "Fx") == 0) { bc_data->dof = 0; } else if (strcmp(lhs, "Fy") == 0) { bc_data->dof = 1; } else if (strcmp(lhs, "Fz") == 0) { bc_data->dof = 2; } } else if (strcmp(lhs, "symmetry") == 0 || strcmp(lhs, "tangential") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_TANGENTIAL_SYMMETRY; bc_data->type_math = bc_type_math_multifreedom; bc_data->set_essential = feenox_problem_bc_set_mechanical_symmetry; } else if (strcmp(lhs, "radial") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_RADIAL_SYMMETRY; bc_data->type_math = bc_type_math_multifreedom; bc_data->set_essential = feenox_problem_bc_set_mechanical_radial; // TODO: x0, y0 and z0 } else if (strcmp(lhs, "0") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_MULTIDOF_EXPRESSION; bc_data->type_math = bc_type_math_multifreedom; bc_data->set_essential = feenox_problem_bc_set_mechanical_multifreedom; // trick: the idea is that the user might write an expression of space // x,y,z but also maybe of u,v y w. However, u,v,w are functinos and not variables! // what we do is to define variables named U,V,W and string-replace u,v,w -> U,V,W // in the entered expression // TODO: there should be a separator (i.e. operator) before and after char *s = rhs; while (*s != '\0') { if (*s == 'u') { *s = 'U'; } else if (*s == 'v') { *s = 'V'; } else if (*s == 'w') { *s = 'W'; } s++; } } else { feenox_push_error_message("unknown mechanical boundary condition '%s'", lhs); return FEENOX_ERROR; } if (rhs != NULL && strcmp(rhs, "0") != 0) { feenox_call(feenox_expression_parse(&bc_data->expr, rhs)); } bc_data->space_dependent = feenox_depends_on_space(bc_data->expr.variables); bc_data->nonlinear = feenox_depends_on_function(bc_data->expr.functions, feenox.pde.solution[0]); if (feenox.pde.dofs > 1) { bc_data->nonlinear |= feenox_depends_on_function(bc_data->expr.functions, feenox.pde.solution[1]); if (feenox.pde.dofs > 2) { bc_data->nonlinear |= feenox_depends_on_function(bc_data->expr.functions, feenox.pde.solution[2]); } } if (bc_data->nonlinear && bc_data->type_math == bc_type_math_dirichlet) { feenox_push_error_message("essential boundary condition '%s' cannot depend on the unknown", rhs); return FEENOX_ERROR; } return FEENOX_OK; } int feenox_problem_bc_set_mechanical_displacement(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC if (this->dof != -1) { // only one dof feenox_call(feenox_problem_dirichlet_add(j_global, this->dof, feenox_expression_eval(&this->expr))); } else { // -1 means all dofs (and the only possibility is to have all them equal to zero) feenox_call(feenox_problem_dirichlet_add(j_global, 0, 0)); if (feenox.pde.dofs > 1) { feenox_call(feenox_problem_dirichlet_add(j_global, 1, 0)); if (feenox.pde.dofs > 2) { feenox_call(feenox_problem_dirichlet_add(j_global, 2, 0)); } } } #endif return FEENOX_OK; } int feenox_problem_bc_set_mechanical_symmetry(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC // outward normal (smoothed over all elements on the physical group of the BC) // TODO: choose to smooth or to use the local one PetscScalar normal[3] = {0, 0, 0}; PetscScalar n_element[3] = {0, 0, 0}; element_ll_t *element_item = NULL; LL_FOREACH(feenox.pde.mesh->node[j_global].element_list, element_item) { element_t *e_prime = element_item->element; if (e_prime != NULL && e_prime->type->dim == (feenox.pde.dim-1) && e_prime->physical_group == e->physical_group) { feenox_call(feenox_mesh_compute_outward_normal(element_item->element, n_element)); normal[0] += n_element[0]; normal[1] += n_element[1]; normal[2] += n_element[2]; } } int coordinate_direction = -1; double norm = gsl_hypot3(normal[0], normal[1], normal[2]); if (feenox_likely(norm != 0)) { // if the outward normal coincides with one of the three axes, we can get away with a regular dirichlet BC for (int g = 0; g < 3; g++) { normal[g] /= norm; if (fabs(normal[g]) > (1-1e-4)) { coordinate_direction = g; } } } else { feenox_push_error_message("outward normal has zero norm"); return FEENOX_ERROR; } // if the condition results in a direction normal to one of the three coordinate planes // then we set a traditional dirichlet bc (i.e. u=0 or v=0 or w=0) // otherwise we need a generic multifreedom if (coordinate_direction != -1) { feenox_call(feenox_problem_dirichlet_add(j_global, coordinate_direction, 0)); } else { feenox_call(feenox_problem_multifreedom_add(j_global, normal)); } #endif return FEENOX_OK; } int feenox_problem_bc_set_mechanical_radial(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC double x[3] = {0,0,0}; double eps = 1e-2; if (e->physical_group->volume == 0) { feenox_call(feenox_physical_group_compute_volume(e->physical_group, feenox.pde.mesh)); } // TODO! read center of the radial condition for (int g = 0; g < 3; g++) { // x[g] = feenox.pde.mesh->node[node_global_index].x[g] - ((bc_data->expr[g].items == NULL) ? element->physical_entity->cog[d] : feenox_expression_eval(bc_data->expr[g])); x[g] = feenox.pde.mesh->node[j_global].x[g] - e->physical_group->cog[g]; } double coefficients[3] = {0,0,0}; // x-y if (fabs(x[0]) > eps && fabs(x[1]) > eps) { coefficients[0] = +x[1]; coefficients[1] = -x[0]; coefficients[2] = 0; feenox_call(feenox_problem_multifreedom_add(j_global, coefficients)); } // x-z if (fabs(x[0]) > eps && fabs(x[2]) > eps) { coefficients[0] = +x[2]; coefficients[1] = 0; coefficients[2] = -x[0]; feenox_call(feenox_problem_multifreedom_add(j_global, coefficients)); } // y-z if (fabs(x[1]) > eps && fabs(x[2]) > eps) { coefficients[0] = 0; coefficients[1] = +x[2]; coefficients[2] = -x[1]; feenox_call(feenox_problem_multifreedom_add(j_global, coefficients)); } #endif return FEENOX_OK; } typedef struct { expr_t *expr; int dof; } feenox_gsl_function_of_uvw_params_t; int feenox_problem_bc_set_mechanical_multifreedom(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC feenox_gsl_function_of_uvw_params_t params = { &this->expr, -1 }; gsl_function F = {feenox_mechanical_gsl_function_of_uvw, ¶ms}; double coefficients[3] = {0, 0, 0}; // TODO: choose double h = 1e-5; double result = 0; double abserr = 0; for (int g = 0; g < 3; g++) { params.dof = g; gsl_deriv_central(&F, 0, h, &result, &abserr); coefficients[g] = -result; } // TODO: non-homogeneous RHS feenox_call(feenox_problem_multifreedom_add(j_global, coefficients)); #endif return FEENOX_OK; } int feenox_problem_bc_set_mechanical_tension(bc_data_t *this, element_t *e, unsigned int q) { feenox_call(feenox_problem_bc_set_mechanical_normal_stress(this, e, q, +1)); return FEENOX_OK; } int feenox_problem_bc_set_mechanical_compression(bc_data_t *this, element_t *e, unsigned int q) { feenox_call(feenox_problem_bc_set_mechanical_normal_stress(this, e, q, -1)); return FEENOX_OK; } // this virtual method builds the surface elemental matrix int feenox_problem_bc_set_mechanical_normal_stress(bc_data_t *this, element_t *e, unsigned int q, signed int sign) { // maybe this check can be made on the dimension of the physical entity at parse time if ((feenox.pde.dim - e->type->dim) != 1) { feenox_push_error_message("pressure BCs can only be applied to surfaces"); return FEENOX_ERROR; } #ifdef HAVE_PETSC // outward normal double n[3]; feenox_call(feenox_mesh_compute_outward_normal(e, n)); // TODO: cache if not space dependent feenox_fem_compute_x_at_gauss_if_needed_and_update_var(e, q, feenox.pde.mesh->integration, this->space_dependent); double p = feenox_expression_eval(&this->expr); // remember that here p > 0 means compression double t[3]; for (unsigned int g = 0; g < feenox.pde.dim; g++) { t[g] = sign * p * n[g]; } //feenox_call(feenox_problem_bc_natural_set(e, v, t)); feenox_call(feenox_problem_rhs_add(e, q, t)); #endif return FEENOX_OK; } int feenox_problem_bc_set_mechanical_traction(bc_data_t *this, element_t *e, unsigned int q) { #ifdef HAVE_PETSC // TODO: cache if not space dependent // TODO: have different functions, one for space and one for constant? feenox_fem_compute_x_at_gauss_if_needed_and_update_var(e, q, feenox.pde.mesh->integration, this->space_dependent); // TODO: set all the DOFs at the same time double t[3] = {0,0,0}; // TODO: wrap feenox_expression_eval() with virtual methods according to the dependence of the bc t[this->dof] = feenox_expression_eval(&this->expr); // printf("%g\n", t[bc_data->dof]); // feenox_call(feenox_problem_bc_natural_set(e, v, t)); feenox_call(feenox_problem_rhs_add(e, q, t)); #endif return FEENOX_OK; } int feenox_problem_bc_set_mechanical_force(bc_data_t *this, element_t *e, unsigned int q) { #ifdef HAVE_PETSC // TODO: cache if not space dependent feenox_fem_compute_x_at_gauss_if_needed_and_update_var(e, q, feenox.pde.mesh->integration, this->space_dependent); // TODO: set all the DOFs at the same time double t[3] = {0,0,0}; if (e->physical_group->volume == 0) { feenox_call(feenox_physical_group_compute_volume(e->physical_group, feenox.pde.mesh)); } t[this->dof] = feenox_expression_eval(&this->expr) / e->physical_group->volume; feenox_call(feenox_problem_rhs_add(e, q, t)); #endif return FEENOX_OK; } // wrapper to compute derivatives with GSL double feenox_mechanical_gsl_function_of_uvw(double x, void *params) { feenox_gsl_function_of_uvw_params_t *p = (feenox_gsl_function_of_uvw_params_t *)params; feenox_var_value(mechanical.displ_for_bc[0]) = 0; feenox_var_value(mechanical.displ_for_bc[1]) = 0; feenox_var_value(mechanical.displ_for_bc[2]) = 0; feenox_var_value(mechanical.displ_for_bc[p->dof]) = x; double y = feenox_expression_eval(p->expr); if (gsl_isnan(y) || gsl_isinf(y)) { feenox_nan_error(); } return y; } feenox-1.1/src/pdes/available.h0000644000175000017500000000013514773607166013413 00000000000000#define AVAILABLE_PDES "laplace\nmechanical\nmodal\nneutron_diffusion\nneutron_sn\nthermal\n"feenox-1.1/src/pdes/neutron_diffusion/0000755000175000017500000000000014773607300015131 500000000000000feenox-1.1/src/pdes/neutron_diffusion/neutron_diffusion.h0000644000175000017500000000411514773607165020774 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron diffusion FEM: global header * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef NEUTRON_DIFFUSION_H #define NEUTRON_DIFFUSION_H typedef struct neutron_diffusion_t neutron_diffusion_t; struct neutron_diffusion_t { unsigned int groups; distribution_t *D; distribution_t *Sigma_t; distribution_t *Sigma_a; distribution_t *nu_Sigma_f; distribution_t **Sigma_s; distribution_t *S; // diffusion coefficients, (groups * dim) x (groups * dim) gsl_matrix *D_G; // removal XSs: groups x groups gsl_matrix *R; // fission XSs: groups x groups gsl_matrix *X; // independent sources: groups gsl_vector *s; unsigned int n_nodes; // elemental matrices (size J*G x J*G) gsl_matrix *Li; // leakage gsl_matrix *Ai; // absorption gsl_matrix *Fi; // fission // intermediate matrices gsl_matrix *DB; gsl_matrix *RH; gsl_matrix *XH; int has_sources; int has_fission; int space_XS; // fission spectrum vector_t *chi; // effective multiplication factor var_t *keff; // neutron currents function_t **Jx; function_t **Jy; function_t **Jz; }; extern neutron_diffusion_t neutron_diffusion; #endif /* NEUTRON_DIFFUSION_FEM_H */ feenox-1.1/src/pdes/neutron_diffusion/currents.c0000644000175000017500000000624114773607165017076 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron diffusion FEM: computation of neutron currents * * Copyright (C) 2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_diffusion.h" int feenox_problem_gradient_fill_neutron_diffusion(void) { for (unsigned int g = 0; g < neutron_diffusion.groups; g++) { feenox_call(feenox_problem_fill_aux_solution(neutron_diffusion.Jx[g])); if (feenox.pde.dim > 1) { feenox_call(feenox_problem_fill_aux_solution(neutron_diffusion.Jy[g])); if (feenox.pde.dim > 2) { feenox_call(feenox_problem_fill_aux_solution(neutron_diffusion.Jz[g])); } } } return FEENOX_OK; } // used only in rough int feenox_problem_gradient_properties_at_element_nodes_neutron_diffusion(element_t *element, mesh_t *mesh) { return FEENOX_OK; } int feenox_problem_gradient_fluxes_at_node_alloc_neutron_diffusion(node_t *node) { unsigned int DG = feenox.pde.dim*neutron_diffusion.groups; if (node->flux == NULL) { feenox_check_alloc(node->flux = calloc(DG, sizeof(double))); } else { for (unsigned i = 0; i < DG; i++) { node->flux[i] = 0; } } return FEENOX_OK; } int feenox_problem_gradient_add_elemental_contribution_to_node_neutron_diffusion(node_t *node, element_t *element, unsigned int j, double rel_weight) { double current = 0; double D = 0; for (unsigned int g = 0; g < neutron_diffusion.groups; g++) { D = neutron_diffusion.D[g].eval(&neutron_diffusion.D[g], node->x, element->physical_group->material); for (unsigned int d = 0; d < feenox.pde.dim; d++) { current = -D * gsl_matrix_get(element->dphidx_node[j], 0, d); node->flux[g*feenox.pde.dim + d] += rel_weight * (current - node->flux[g*feenox.pde.dim + d]); } } return FEENOX_OK; } int feenox_problem_gradient_fill_fluxes_neutron_diffusion(mesh_t *mesh, size_t j) { for (unsigned int g = 0; g < neutron_diffusion.groups; g++) { feenox_vector_set(neutron_diffusion.Jx[g]->vector_value, j, mesh->node[j].flux[g*feenox.pde.dim + 0]); if (feenox.pde.dim > 1) { feenox_vector_set(neutron_diffusion.Jy[g]->vector_value, j, mesh->node[j].flux[g*feenox.pde.dim + 1]); if (feenox.pde.dim > 2) { feenox_vector_set(neutron_diffusion.Jz[g]->vector_value, j, mesh->node[j].flux[g*feenox.pde.dim + 2]); } } } return FEENOX_OK; } feenox-1.1/src/pdes/neutron_diffusion/parser.c0000644000175000017500000000435714773607165016533 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron diffusion FEM: input parsing * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_diffusion.h" #include "../../parser/parser.h" int feenox_problem_parse_problem_neutron_diffusion(const char *token) { if (token != NULL) { if (strcasecmp(token, "GROUPS") == 0) { double xi = 0; feenox_call(feenox_parser_expression_in_string(&xi)); neutron_diffusion.groups = (unsigned int)(xi); } else { feenox_push_error_message("undefined keyword '%s'", token); return FEENOX_ERROR; } } else { // if token is NULL we have to do the parse-time initialization feenox_call(feenox_problem_parse_time_init_neutron_diffusion()); } return FEENOX_OK; } int feenox_problem_parse_write_post_neutron_diffusion(mesh_write_t *mesh_write, const char *token) { if (strcmp(token, "all") == 0) { feenox_call(feenox_problem_parse_write_post_neutron_diffusion(mesh_write, "fluxes")); } else if (strcmp(token, "flux") == 0 || strcmp(token, "fluxes") == 0) { for (int g = 0; g < neutron_diffusion.groups; g++) { feenox_call(feenox_add_post_field(mesh_write, 1, &feenox.pde.unknown_name[g], NULL, field_location_nodes)); } } else { feenox_push_error_message("undefined keyword '%s' for neutron_diffusion WRITE_RESULTS", token); return FEENOX_ERROR; } return FEENOX_OK; } feenox-1.1/src/pdes/neutron_diffusion/post.c0000644000175000017500000000442114773607165016214 00000000000000 /*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron diffusion FEM: post * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_diffusion.h" int feenox_problem_solve_post_neutron_diffusion(void) { #ifdef HAVE_PETSC if (neutron_diffusion.has_sources == 0) { #ifdef HAVE_SLEPC if (feenox.pde.eigen_formulation == eigen_formulation_omega) { feenox_var_value(neutron_diffusion.keff) = 1.0/feenox.pde.eigenvalue[0]; } else { feenox_var_value(neutron_diffusion.keff) = feenox.pde.eigenvalue[0]; } // normalization without power double num = 0; double den = 0; for (size_t i = 0; i < feenox.pde.mesh->n_elements; i++) { element_t *element = &feenox.pde.mesh->element[i]; if (element->type != NULL && element->type->dim == feenox.pde.dim) { num += element->type->volume(element); for (unsigned int g = 0; g < feenox.pde.dofs; g++) { den += feenox_mesh_integral_over_element(element, feenox.pde.mesh, feenox.pde.solution[g]); } } } double factor = num/den; // normalize the fluxes for (size_t j = 0; j < feenox.pde.mesh->n_nodes; j++) { for (unsigned int g = 0; g < feenox.pde.dofs; g++) { double xi = feenox_vector_get(feenox.pde.solution[g]->vector_value, j); feenox_vector_set(feenox.pde.solution[g]->vector_value, j, factor*xi); } } #endif } #endif return FEENOX_OK; } feenox-1.1/src/pdes/neutron_diffusion/init.c0000644000175000017500000003423714773607165016202 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron diffusion FEM: initialization * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_diffusion.h" neutron_diffusion_t neutron_diffusion; int feenox_problem_parse_time_init_neutron_diffusion(void) { ///kw_pde+PROBLEM+detail * `neutron_diffusion` multi-group core-level neutron diffusion with a FEM formulation #ifdef HAVE_PETSC // virtual methods feenox.pde.parse_bc = feenox_problem_bc_parse_neutron_diffusion; feenox.pde.parse_write_results = feenox_problem_parse_write_post_neutron_diffusion; feenox.pde.init_before_run = feenox_problem_init_runtime_neutron_diffusion; #ifdef HAVE_SLEPC feenox.pde.setup_eps = feenox_problem_setup_eps_neutron_diffusion; #endif feenox.pde.setup_ksp = feenox_problem_setup_ksp_neutron_diffusion; feenox.pde.setup_pc = feenox_problem_setup_pc_neutron_diffusion; feenox.pde.element_build_allocate_aux = feenox_problem_build_allocate_aux_neutron_diffusion; feenox.pde.element_build_volumetric = feenox_problem_build_volumetric_neutron_diffusion; feenox.pde.element_build_volumetric_at_gauss = feenox_problem_build_volumetric_gauss_point_neutron_diffusion; feenox.pde.solve_post = feenox_problem_solve_post_neutron_diffusion; feenox.pde.gradient_fill = feenox_problem_gradient_fill_neutron_diffusion; feenox.pde.gradient_nodal_properties = feenox_problem_gradient_properties_at_element_nodes_neutron_diffusion; feenox.pde.gradient_alloc_nodal_fluxes = feenox_problem_gradient_fluxes_at_node_alloc_neutron_diffusion; feenox.pde.gradient_add_elemental_contribution_to_node = feenox_problem_gradient_add_elemental_contribution_to_node_neutron_diffusion; feenox.pde.gradient_fill_fluxes = feenox_problem_gradient_fill_fluxes_neutron_diffusion; // we are FEM feenox.mesh.default_field_location = field_location_nodes; // default is 1 group if (neutron_diffusion.groups == 0) { neutron_diffusion.groups = 1; } // dofs = number of groups feenox.pde.dofs = neutron_diffusion.groups; // scalar fluxes and currents feenox_check_alloc(feenox.pde.unknown_name = calloc(neutron_diffusion.groups, sizeof(char *))); for (unsigned int g = 0; g < neutron_diffusion.groups; g++) { ///re_neutron_diffusion+phi+description The scalar flux for the group $g$ is `phig`, i.e. `phi1`, `phi2`, etc. This is the primary unknown of the problem. feenox_check_minusone(asprintf(&feenox.pde.unknown_name[g], "phi%u", g+1)); } // currents (we need a different loop from the one used for fluxes) feenox_check_alloc(neutron_diffusion.Jx = calloc(neutron_diffusion.groups, sizeof(function_t *))); if (feenox.pde.dim > 1) { feenox_check_alloc(neutron_diffusion.Jy = calloc(neutron_diffusion.groups, sizeof(function_t *))); if (feenox.pde.dim > 2) { feenox_check_alloc(neutron_diffusion.Jz = calloc(neutron_diffusion.groups, sizeof(function_t *))); } } ///re_neutron_diffusion+Jx+description The\ $x$ component of the neutron current for group\ $g$ is `Jxg`, i.e. `Jx1`, `Jx2`. etc. This is a secondary unknown of the problem. ///re_neutron_diffusion+Jx+description The\ $y$ component of the neutron current for group\ $g$ is `Jzg`, i.e. `Jz1`, `Jz2`. etc. This is a secondary unknown of the problem. ///re_neutron_diffusion+Jy+description Only available for two and three-dimensional problems. ///re_neutron_diffusion+Jx+description The\ $z$ component of the neutron current for group\ $g$ is `Jzg`, i.e. `Jz1`, `Jz2`. etc. This is a secondary unknown of the problem. ///re_neutron_diffusion+Jz+description Only available for three-dimensional problems. for (unsigned int g = 0; g < neutron_diffusion.groups; g++) { char *name = NULL; feenox_check_minusone(asprintf(&name, "Jx%u", g+1)); feenox_call(feenox_problem_define_solution_function(name, &neutron_diffusion.Jx[g], FEENOX_SOLUTION_GRADIENT)); feenox_free(name); if (feenox.pde.dim > 1) { feenox_check_minusone(asprintf(&name, "Jy%u", g+1)); feenox_call(feenox_problem_define_solution_function(name, &neutron_diffusion.Jy[g], FEENOX_SOLUTION_GRADIENT)); feenox_free(name); if (feenox.pde.dim > 2) { feenox_check_minusone(asprintf(&name, "Jz%u", g+1)); feenox_call(feenox_problem_define_solution_function(name, &neutron_diffusion.Jz[g], FEENOX_SOLUTION_GRADIENT)); feenox_free(name); } } } // TODO: for one group make an alias between phi1 and phi ///va_neutron_diffusion+chi+desc A vector of size groups with the fission spectrum. ///va_neutron_diffusion+chi+desc Default is one in the first group and zero in the rest. neutron_diffusion.chi = feenox_define_vector_get_ptr("chi", neutron_diffusion.groups); feenox_vector_set(neutron_diffusion.chi, 0, 1.0); ///va_neutron_diffusion+keff+desc The effective multiplication factor\ $k_\text{eff}$. neutron_diffusion.keff = feenox_define_variable_get_ptr("keff"); #endif return FEENOX_OK; } int feenox_problem_init_runtime_neutron_diffusion(void) { #ifdef HAVE_PETSC // we are FEM feenox.mesh.default_field_location = field_location_nodes; feenox.pde.mesh->data_type = data_type_node; feenox.pde.spatial_unknowns = feenox.pde.mesh->n_nodes; // initialize XSs int G = neutron_diffusion.groups; double fission_spectrum_integral = 0; feenox_check_alloc(neutron_diffusion.D = calloc(G, sizeof(distribution_t))); feenox_check_alloc(neutron_diffusion.Sigma_t = calloc(G, sizeof(distribution_t))); feenox_check_alloc(neutron_diffusion.Sigma_a = calloc(G, sizeof(distribution_t))); feenox_check_alloc(neutron_diffusion.nu_Sigma_f = calloc(G, sizeof(distribution_t))); feenox_check_alloc(neutron_diffusion.S = calloc(G, sizeof(distribution_t))); feenox_check_alloc(neutron_diffusion.Sigma_s = calloc(G, sizeof(distribution_t *))); for (unsigned int g = 0; g < G; g++) { char *name = NULL; feenox_check_minusone(asprintf(&name, "D%u", g+1)); feenox_distribution_init(&neutron_diffusion.D[g], name); if (neutron_diffusion.D[g].defined) { neutron_diffusion.D[g].non_uniform = feenox_depends_on_space(neutron_diffusion.D[g].dependency_variables); neutron_diffusion.space_XS |= neutron_diffusion.D[g].non_uniform; } feenox_free(name); feenox_check_minusone(asprintf(&name, "Sigma_t%u", g+1)); feenox_distribution_init(&neutron_diffusion.Sigma_t[g], name); if (neutron_diffusion.Sigma_t[g].defined) { neutron_diffusion.Sigma_t[g].non_uniform = feenox_depends_on_space(neutron_diffusion.Sigma_t[g].dependency_variables); neutron_diffusion.space_XS |= neutron_diffusion.Sigma_t[g].non_uniform; } feenox_free(name); feenox_check_minusone(asprintf(&name, "Sigma_a%u", g+1)); feenox_distribution_init(&neutron_diffusion.Sigma_a[g], name); if (neutron_diffusion.Sigma_a[g].defined) { neutron_diffusion.Sigma_a[g].non_uniform = feenox_depends_on_space(neutron_diffusion.Sigma_a[g].dependency_variables); neutron_diffusion.space_XS |= neutron_diffusion.Sigma_a[g].non_uniform; } feenox_free(name); feenox_check_minusone(asprintf(&name, "nuSigma_f%u", g+1)); feenox_distribution_init(&neutron_diffusion.nu_Sigma_f[g], name); if (neutron_diffusion.nu_Sigma_f[g].defined) { neutron_diffusion.has_fission = 1; neutron_diffusion.nu_Sigma_f[g].non_uniform = feenox_depends_on_space(neutron_diffusion.nu_Sigma_f[g].dependency_variables); neutron_diffusion.space_XS |= neutron_diffusion.nu_Sigma_f[g].non_uniform; } feenox_free(name); feenox_check_minusone(asprintf(&name, "S%u", g+1)); feenox_distribution_init(&neutron_diffusion.S[g], name); if (neutron_diffusion.S[g].defined) { neutron_diffusion.has_sources = 1; neutron_diffusion.S[g].non_uniform = feenox_depends_on_space(neutron_diffusion.S[g].dependency_variables); neutron_diffusion.space_XS |= neutron_diffusion.S[g].non_uniform; } feenox_free(name); feenox_check_alloc(neutron_diffusion.Sigma_s[g] = calloc(feenox.pde.dofs, sizeof(distribution_t))); unsigned int g_prime = 0; for (g_prime = 0; g_prime < feenox.pde.dofs; g_prime++) { feenox_check_minusone(asprintf(&name, "Sigma_s%u.%u", g+1, g_prime+1)); feenox_distribution_init(&neutron_diffusion.Sigma_s[g][g_prime], name); if (neutron_diffusion.Sigma_s[g][g_prime].defined) { neutron_diffusion.Sigma_s[g][g_prime].non_uniform = feenox_depends_on_space(neutron_diffusion.Sigma_s[g][g_prime].dependency_variables); } feenox_free(name); // try again with another underscore if (neutron_diffusion.Sigma_s[g][g_prime].defined == 0) { feenox_check_minusone(asprintf(&name, "Sigma_s%u_%u", g+1, g_prime+1)); feenox_distribution_init(&neutron_diffusion.Sigma_s[g][g_prime], name); if (neutron_diffusion.Sigma_s[g][g_prime].defined) { neutron_diffusion.Sigma_s[g][g_prime].non_uniform = feenox_depends_on_space(neutron_diffusion.Sigma_s[g][g_prime].dependency_variables); } feenox_free(name); } } fission_spectrum_integral += feenox_vector_get(neutron_diffusion.chi, g); } if (neutron_diffusion.has_sources == 0 && neutron_diffusion.has_fission == 0) { feenox_push_error_message("neither fission nor sources found"); return FEENOX_ERROR; } if (fabs(fission_spectrum_integral-1) > 1e-6) { feenox_push_error_message("fission spectrum is not normalized, its integral is %g", fission_spectrum_integral); return FEENOX_ERROR; } if (neutron_diffusion.has_sources == 0) { #ifdef HAVE_SLEPC // TODO: higher harmonics? feenox.pde.nev = 1; // define eigenvectors (we don't know its size yet) feenox_check_alloc(feenox.pde.vectors.phi = calloc(feenox.pde.nev, sizeof(vector_t *))); for (unsigned int g = 0; g < feenox.pde.nev; g++) { char *modename = NULL; feenox_check_minusone(asprintf(&modename, "eig%u", g+1)); feenox_check_alloc(feenox.pde.vectors.phi[g] = feenox_define_vector_get_ptr(modename, 0)); feenox_free(modename); } #else feenox_push_error_message("criticality problems cannot be solved without SLEPc"); return FEENOX_ERROR; #endif } // allocate elemental XS matrices feenox_check_alloc(neutron_diffusion.D_G = gsl_matrix_calloc(G * feenox.pde.dim, G * feenox.pde.dim)); feenox_check_alloc(neutron_diffusion.R = gsl_matrix_calloc(G, G)); feenox_check_alloc(neutron_diffusion.X = gsl_matrix_calloc(G, G)); feenox_check_alloc(neutron_diffusion.s = gsl_vector_calloc(G)); feenox.pde.math_type = neutron_diffusion.has_sources ? math_type_linear : math_type_eigen; feenox.pde.solve = neutron_diffusion.has_sources ? feenox_problem_solve_petsc_linear : feenox_problem_solve_slepc_eigen; feenox.pde.has_stiffness = 1; feenox.pde.has_mass = !neutron_diffusion.has_sources; feenox.pde.has_rhs = neutron_diffusion.has_sources; feenox.pde.has_jacobian_K = 0; feenox.pde.has_jacobian_M = 0; feenox.pde.has_jacobian_b = 0; feenox.pde.has_jacobian = feenox.pde.has_jacobian_K || feenox.pde.has_jacobian_M || feenox.pde.has_jacobian_b; feenox.pde.symmetric_K = 0; feenox.pde.symmetric_M = 0; // see if we have to compute gradients for (unsigned int g = 0; g < neutron_diffusion.groups; g++) { feenox.pde.compute_gradients |= (neutron_diffusion.Jx != NULL && neutron_diffusion.Jx[g]->used) || (neutron_diffusion.Jy != NULL && neutron_diffusion.Jy[g]->used) || (neutron_diffusion.Jz != NULL && neutron_diffusion.Jz[g]->used); } #endif return FEENOX_OK; } #ifdef HAVE_PETSC int feenox_problem_setup_pc_neutron_diffusion(PC pc) { PCType pc_type = NULL; petsc_call(PCGetType(pc, &pc_type)); if (pc_type == NULL) { if (neutron_diffusion.has_sources == 0) { // PC for EPS #ifdef PETSC_HAVE_MUMPS // if we don't set the pc type here then we PCFactorSetMatSolverType does not work petsc_call(PCSetType(pc, feenox.pde.symmetric_K ? PCCHOLESKY : PCLU)); petsc_call(PCFactorSetMatSolverType(pc, MATSOLVERMUMPS)); #else // TODO: this will complain in parallel // petsc_call(PCSetType(pc, PCLU)); #endif } else { // plain PC // defaults } } return FEENOX_OK; } int feenox_problem_setup_ksp_neutron_diffusion(KSP ksp ) { KSPType ksp_type = NULL; petsc_call(KSPGetType(ksp, &ksp_type)); if (ksp_type == NULL) { if (neutron_diffusion.has_sources == 0) { // KSP for EPS // defaults } else { // plain KSP // defaults } } return FEENOX_OK; } #endif #ifdef HAVE_SLEPC int feenox_problem_setup_eps_neutron_diffusion(EPS eps) { petsc_call(EPSSetProblemType(eps, (neutron_diffusion.groups == 1) ? EPS_PGNHEP : EPS_GNHEP)); // we expect the eigenvalue to be near one and an absolute test is faster petsc_call(EPSSetConvergenceTest(feenox.pde.eps, EPS_CONV_ABS)); // offsets around one if (feenox_var_value(feenox.pde.vars.eps_st_sigma) == 0) { feenox_var_value(feenox.pde.vars.eps_st_sigma) = 1.0; } if (feenox_var_value(feenox.pde.vars.eps_st_nu) == 0) { feenox_var_value(feenox.pde.vars.eps_st_nu) = 1.0; } if (feenox.pde.eigen_formulation == eigen_formulation_omega) { petsc_call(EPSSetWhichEigenpairs(eps, EPS_SMALLEST_MAGNITUDE)); } else { petsc_call(EPSSetWhichEigenpairs(eps, EPS_LARGEST_MAGNITUDE)); } return FEENOX_OK; } #endif feenox-1.1/src/pdes/neutron_diffusion/bulk.c0000644000175000017500000001452114773607165016166 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron diffusion FEM: bulk elements * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_diffusion.h" int feenox_problem_build_allocate_aux_neutron_diffusion(unsigned int J) { neutron_diffusion.n_nodes = J; int G = neutron_diffusion.groups; int D = feenox.pde.dim; int GJ = G*J; if (neutron_diffusion.Li != NULL) { gsl_matrix_free(neutron_diffusion.Li); gsl_matrix_free(neutron_diffusion.Ai); gsl_matrix_free(neutron_diffusion.DB); gsl_matrix_free(neutron_diffusion.RH); if (neutron_diffusion.has_fission) { gsl_matrix_free(neutron_diffusion.Fi); gsl_matrix_free(neutron_diffusion.XH); } } feenox_check_alloc(neutron_diffusion.Li = gsl_matrix_calloc(GJ, GJ)); feenox_check_alloc(neutron_diffusion.Ai = gsl_matrix_calloc(GJ, GJ)); feenox_check_alloc(neutron_diffusion.DB = gsl_matrix_calloc(G*D, G*J)); feenox_check_alloc(neutron_diffusion.RH = gsl_matrix_calloc(G, GJ)); if (neutron_diffusion.has_fission) { feenox_check_alloc(neutron_diffusion.Fi = gsl_matrix_calloc(GJ, GJ)); feenox_check_alloc(neutron_diffusion.XH = gsl_matrix_calloc(G, GJ)); } return FEENOX_OK; } int feenox_problem_build_volumetric_neutron_diffusion(element_t *e) { if (neutron_diffusion.space_XS == 0) { feenox_call(feenox_problem_neutron_diffusion_eval_XS(feenox_fem_get_material(e), NULL)); } return FEENOX_OK; } int feenox_problem_neutron_diffusion_eval_XS(material_t *material, double *x) { gsl_matrix_set_zero(neutron_diffusion.D_G); gsl_matrix_set_zero(neutron_diffusion.R); if (neutron_diffusion.has_fission) { gsl_matrix_set_zero(neutron_diffusion.X); } for (int g = 0; g < neutron_diffusion.groups; g++) { // independent sources if (neutron_diffusion.has_sources) { // TODO: macro to make it nicer gsl_vector_set(neutron_diffusion.s, g, neutron_diffusion.S[g].eval(&neutron_diffusion.S[g], x, material)); } // scattering and fission for (int g_prime = 0; g_prime < neutron_diffusion.groups; g_prime++) { gsl_matrix_set(neutron_diffusion.R, g, g_prime, -neutron_diffusion.Sigma_s[g_prime][g].eval(&neutron_diffusion.Sigma_s[g_prime][g], x, material)); if (neutron_diffusion.has_fission) { gsl_matrix_set(neutron_diffusion.X, g, g_prime, feenox_vector_get(neutron_diffusion.chi, g)*neutron_diffusion.nu_Sigma_f[g_prime].eval(&neutron_diffusion.nu_Sigma_f[g_prime], x, material)); } } // absorption double val = gsl_matrix_get(neutron_diffusion.R, g, g); if (neutron_diffusion.Sigma_t[g].defined) { val += neutron_diffusion.Sigma_t[g].eval(&neutron_diffusion.Sigma_t[g], x, material); } else { val += neutron_diffusion.Sigma_a[g].eval(&neutron_diffusion.Sigma_a[g], x, material); for (int g_prime = 0; g_prime < neutron_diffusion.groups; g_prime++) { val += neutron_diffusion.Sigma_s[g][g_prime].eval(&neutron_diffusion.Sigma_s[g][g_prime], x, material); } } gsl_matrix_set(neutron_diffusion.R, g, g, val); // leaks for (int m = 0; m < feenox.pde.dim; m++) { if (neutron_diffusion.D[g].defined) { val = neutron_diffusion.D[g].eval(&neutron_diffusion.D[g], x, material); } else if (neutron_diffusion.Sigma_t[g].defined) { val = 1.0/(3.0*neutron_diffusion.Sigma_t[g].eval(&neutron_diffusion.Sigma_t[g], x, material)); } else { feenox_push_error_message("neither D nor Sigma_t given for group %d", g); return FEENOX_ERROR; } unsigned int index = m*neutron_diffusion.groups + g; gsl_matrix_set(neutron_diffusion.D_G, index, index, val); } } return FEENOX_OK; } int feenox_problem_build_volumetric_gauss_point_neutron_diffusion(element_t *e, unsigned int q) { #ifdef HAVE_PETSC if (neutron_diffusion.space_XS != 0) { double *x = feenox_fem_compute_x_at_gauss(e, q, feenox.pde.mesh->integration); feenox_call(feenox_problem_neutron_diffusion_eval_XS(feenox_fem_get_material(e), x)); } // elemental stiffness for the diffusion term B'*D*B double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, feenox.pde.mesh->integration); gsl_matrix *B = feenox_fem_compute_B_G_at_gauss(e, q, feenox.pde.mesh->integration); feenox_call(feenox_blas_BtCB(B, neutron_diffusion.D_G, neutron_diffusion.DB, wdet, neutron_diffusion.Li)); // elemental scattering H'*A*H gsl_matrix *H = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); feenox_call(feenox_blas_BtCB(H, neutron_diffusion.R, neutron_diffusion.RH, wdet, neutron_diffusion.Ai)); // elemental fission matrix if (neutron_diffusion.has_fission) { feenox_call(feenox_blas_BtCB(H, neutron_diffusion.X, neutron_diffusion.XH, wdet, neutron_diffusion.Fi)); } if (neutron_diffusion.has_sources) { feenox_call(feenox_blas_Atb_accum(H, neutron_diffusion.s, wdet, feenox.fem.bi)); } // for source-driven problems // Ki = Li + Ai - Xi // for criticallity problems // Ki = Li + Ai // Mi = Xi feenox_call(gsl_matrix_add(neutron_diffusion.Li, neutron_diffusion.Ai)); if (neutron_diffusion.has_fission) { if (neutron_diffusion.has_sources) { feenox_call(gsl_matrix_scale(neutron_diffusion.Fi, -1.0)); feenox_call(gsl_matrix_add(neutron_diffusion.Li, neutron_diffusion.Fi)); } else { feenox_call(gsl_matrix_add(feenox.fem.Mi, neutron_diffusion.Fi)); } } feenox_call(gsl_matrix_add(feenox.fem.Ki, neutron_diffusion.Li)); #endif return FEENOX_OK; } feenox-1.1/src/pdes/neutron_diffusion/methods.h0000644000175000017500000000634214773607165016703 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron diffusion FEM: virtual methods * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef NEUTRON_DIFFUSION_FEM_METHODS_H #define NEUTRON_DIFFUSION_FEM_METHODS_H // neutron_diffusion/parser.c extern int feenox_problem_parse_problem_neutron_diffusion(const char *token); extern int feenox_problem_parse_write_post_neutron_diffusion(mesh_write_t *mesh_write, const char *token); // neutron_diffusion/init.c extern int feenox_problem_parse_time_init_neutron_diffusion(void); extern int feenox_problem_init_runtime_neutron_diffusion(void); #ifdef HAVE_PETSC extern int feenox_problem_setup_pc_neutron_diffusion(PC pc); extern int feenox_problem_setup_ksp_neutron_diffusion(KSP ksp); #endif #ifdef HAVE_SLEPC extern int feenox_problem_setup_eps_neutron_diffusion(EPS eps); #endif // neutron_diffusion/bulk.c extern int feenox_problem_build_allocate_aux_neutron_diffusion(unsigned int n_nodes); extern int feenox_problem_neutron_diffusion_eval_XS(material_t *material, double *x); extern int feenox_problem_build_volumetric_neutron_diffusion(element_t *e); extern int feenox_problem_build_volumetric_gauss_point_neutron_diffusion(element_t *element, unsigned int q); // neutron_diffusion/bc.c extern int feenox_problem_bc_parse_neutron_diffusion(bc_data_t *bc_data, const char *lhs, char *rhs); extern int feenox_problem_bc_set_neutron_diffusion_null(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_neutron_diffusion_flux(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_neutron_diffusion_vacuum(bc_data_t *bc_data, element_t *e, unsigned int q); extern int feenox_problem_bc_set_neutron_diffusion_current(bc_data_t *bc_data, element_t *e, unsigned int q); // thermal/currents.c extern int feenox_problem_gradient_fill_neutron_diffusion(void); extern int feenox_problem_gradient_properties_at_element_nodes_neutron_diffusion(element_t *element, mesh_t *mesh); extern int feenox_problem_gradient_fluxes_at_node_alloc_neutron_diffusion(node_t *node); extern int feenox_problem_gradient_add_elemental_contribution_to_node_neutron_diffusion(node_t *node, element_t *element, unsigned int j, double rel_weight); extern int feenox_problem_gradient_fill_fluxes_neutron_diffusion(mesh_t *mesh, size_t j); // neutron_diffusion/post.c extern int feenox_problem_solve_post_neutron_diffusion(void); #endif // NEUTRON_DIFFUSION_FEM feenox-1.1/src/pdes/neutron_diffusion/bc.c0000644000175000017500000001324414773607165015616 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron diffusion FEM: boundary conditions * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_diffusion.h" #include "pdes/neutron_sn/neutron_sn.h" int feenox_problem_bc_parse_neutron_diffusion(bc_data_t *bc_data, const char *lhs, char *rhs) { if (strcmp(lhs, "null") == 0) { bc_data->type_math = bc_type_math_dirichlet; bc_data->dof = -1; bc_data->set_essential = feenox_problem_bc_set_neutron_diffusion_null; } else if (strcmp(lhs, "symmetry") == 0 || strcmp(lhs, "mirror") == 0) { bc_data->type_math = bc_type_math_neumann; bc_data->dof = -1; } else if (strcmp(lhs, "vacuum") == 0) { bc_data->type_math = bc_type_math_robin; bc_data->set_natural = feenox_problem_bc_set_neutron_diffusion_vacuum; bc_data->fills_matrix = 1; bc_data->dof = -1; } else if (strncmp(lhs, "phi", 3) == 0) { bc_data->type_math = bc_type_math_dirichlet; int dof = 0; if (sscanf(lhs+3, "%d", &dof) != 1) { feenox_push_error_message("could not read group number in neutron_diffusion boundary condition '%s'", lhs); return FEENOX_ERROR; } if (dof < 0 || dof > neutron_diffusion.groups) { feenox_push_error_message("invalid group number in neutron_diffusion boundary condition '%s'", lhs); return FEENOX_ERROR; } bc_data->dof = dof-1; bc_data->set_essential = feenox_problem_bc_set_neutron_diffusion_flux; } else if (strncmp(lhs, "J", 1) == 0) { bc_data->type_math = bc_type_math_neumann; int dof = 0; if (sscanf(lhs+1, "%d", &dof) != 1) { feenox_push_error_message("could not read group number in neutron_diffusion boundary condition '%s'", lhs); return FEENOX_ERROR; } if (dof < 0 || dof > neutron_diffusion.groups) { feenox_push_error_message("invalid group number in neutron_diffusion boundary condition '%s'", lhs); return FEENOX_ERROR; } bc_data->dof = dof-1; bc_data->set_natural = feenox_problem_bc_set_neutron_diffusion_current; neutron_diffusion.has_sources = 1; } else { feenox_push_error_message("unknown neutron_diffusion boundary condition '%s'", lhs); return FEENOX_ERROR; } feenox_call(feenox_expression_parse(&bc_data->expr, rhs)); // TODO: initial guesses // if (bc_data->type_phys == BC_TYPE_THERMAL_TEMPERATURE || bc_data->type_phys == BC_TYPE_THERMAL_CONVECTION_TEMPERATURE ) { // thermal.guessed_initial_guess += feenox_expression_eval(&bc_data->expr); // thermal.n_bc_temperatures++; // } bc_data->space_dependent = feenox_depends_on_space(bc_data->expr.variables); bc_data->nonlinear = feenox_depends_on_function(bc_data->expr.functions, feenox.pde.solution[0]); if (bc_data->nonlinear && bc_data->type_math == bc_type_math_dirichlet) { feenox_push_error_message("essential boundary condition '%s' cannot depend on flux", rhs); return FEENOX_ERROR; } // TODO: check consistency, non-linearities, etc. return FEENOX_OK; } // this virtual method fills in the dirichlet indexes and values with bc_data int feenox_problem_bc_set_neutron_diffusion_null(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC for (unsigned int g = 0; g < feenox.pde.dofs; g++) { feenox_call(feenox_problem_dirichlet_add(j_global, g, 0)); } #endif return FEENOX_OK; } // this virtual method fills in the dirichlet indexes and values with bc_data int feenox_problem_bc_set_neutron_diffusion_flux(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC feenox_call(feenox_problem_dirichlet_add(j_global, this->dof, feenox_expression_eval(&this->expr))); #endif return FEENOX_OK; } // this virtual method builds the surface elemental matrix int feenox_problem_bc_set_neutron_diffusion_vacuum(bc_data_t *this, element_t *e, unsigned int q) { #ifdef HAVE_PETSC feenox_fem_compute_x_at_gauss_if_needed_and_update_var(e, q, feenox.pde.mesh->integration, this->space_dependent); double coeff = (this->expr.items != NULL) ? feenox_expression_eval(&this->expr) : 0.5; // TODO: convenience call like feenox_problem_rhs_set()? double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, feenox.pde.mesh->integration); gsl_matrix *H = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); feenox_call(feenox_blas_BtB_accum(H, wdet*coeff, feenox.fem.Ki)); #endif return FEENOX_OK; } int feenox_problem_bc_set_neutron_diffusion_current(bc_data_t *this, element_t *e, unsigned int q) { #ifdef HAVE_PETSC feenox_fem_compute_x_at_gauss_if_needed_and_update_var(e, q, feenox.pde.mesh->integration, this->space_dependent); double *current = calloc(neutron_sn.groups, sizeof(double)); current[this->dof] = feenox_expression_eval(&this->expr); feenox_call(feenox_problem_rhs_add(e, q, current)); feenox_free(current); #endif return FEENOX_OK; } feenox-1.1/src/pdes/neutron_sn/0000755000175000017500000000000014773607300013563 500000000000000feenox-1.1/src/pdes/neutron_sn/neutron_sn.h0000644000175000017500000000507714773607165016070 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron transport FEM: global header * * Copyright (C) 2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef NEUTRON_SN_H #define NEUTRON_SN_H #define sn_dof_index(m,g) ((g)*neutron_sn.directions + (m)) typedef struct neutron_sn_t neutron_sn_t; struct neutron_sn_t { unsigned int N; unsigned int directions; unsigned int groups; // directions and weights double **Omega; int **SN_triangle; double *w; // total XS distribution_t *Sigma_t; // absorption XS distribution_t *Sigma_a; // scattering XS distribution_t **Sigma_s0; distribution_t **Sigma_s1; // product of nu and fission XS distribution_t *nu_Sigma_f; // product of energy per fission and fission XS // distribution_t *e_Sigma_f; // independent neutron source distribution_t *S; // removal XSs: groups x groups gsl_matrix *R; // fission XSs: groups x groups gsl_matrix *X; // independent sources: groups gsl_vector *s; // elemental matrices unsigned int n_nodes; // Petrov-stabilized H_Gc gsl_matrix *P; // Direction matrix gsl_matrix *D; // intermediate gsl_matrix *DB; gsl_matrix *AH; gsl_matrix *XH; // elemental matrices (size J*M*G x J*M*G) gsl_matrix *Li; // leakage gsl_matrix *Ai; // absorption gsl_matrix *Fi; // fission gsl_vector *Si; // sources (vector) int has_sources; int has_fission; int space_XS; // fission spectrum vector_t *chi; // supg stabilization factor var_t *sn_alpha; // --- results ---------------------- // effective multiplication factor var_t *keff; // scalar fluxes (array of G functions) function_t **phi; }; extern neutron_sn_t neutron_sn; #endif /* NEUTRON_SN_H */ feenox-1.1/src/pdes/neutron_sn/parser.c0000644000175000017500000000605514773607165015162 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron transport FEM: input parsing * * Copyright (C) 2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_sn.h" #include "../../parser/parser.h" int feenox_problem_parse_problem_neutron_sn(const char *token) { if (token != NULL) { if (strcasecmp(token, "GROUPS") == 0) { double xi = 0; feenox_call(feenox_parser_expression_in_string(&xi)); neutron_sn.groups = (unsigned int)(xi); } else if (strcasecmp(token, "SN") == 0 || strcasecmp(token, "N") == 0) { double xi = 0; feenox_call(feenox_parser_expression_in_string(&xi)); neutron_sn.N = (unsigned int)(xi); if (neutron_sn.N % 2 == 1) { feenox_push_error_message("The N in SN should be even and %d is not (as far as I know)", neutron_sn.N); return FEENOX_ERROR; } } else { feenox_push_error_message("undefined keyword '%s'", token); return FEENOX_ERROR; } } else { // if token is NULL we have to do the parse-time initialization feenox_call(feenox_problem_parse_time_init_neutron_sn()); } return FEENOX_OK; } int feenox_problem_parse_write_post_neutron_sn(mesh_write_t *mesh_write, const char *token) { if (strcmp(token, "all") == 0) { feenox_call(feenox_problem_parse_write_post_neutron_sn(mesh_write, "scalar_fluxes")); feenox_call(feenox_problem_parse_write_post_neutron_sn(mesh_write, "angular_fluxes")); } else if (strcmp(token, "scalar_flux") == 0 || strcmp(token, "scalar_fluxes") == 0) { for (unsigned int g = 0; g < neutron_sn.groups; g++) { feenox_call(feenox_add_post_field(mesh_write, 1, &neutron_sn.phi[g]->name, NULL, field_location_nodes)); } } else if (strcmp(token, "angular_flux") == 0 || strcmp(token, "angular_fluxes") == 0) { for (unsigned int g = 0; g < neutron_sn.groups; g++) { for (unsigned int m = 0; m < neutron_sn.directions; m++) { feenox_call(feenox_add_post_field(mesh_write, 1, &feenox.pde.unknown_name[sn_dof_index(m,g)], NULL, field_location_nodes)); } } } else { feenox_push_error_message("undefined keyword '%s' for neutron_sn WRITE_RESULTS", token); return FEENOX_ERROR; } return FEENOX_OK; } feenox-1.1/src/pdes/neutron_sn/post.c0000644000175000017500000000676314773607165014661 00000000000000 /*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron transport FEM: post * * Copyright (C) 2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_sn.h" int feenox_problem_solve_post_neutron_sn(void) { #ifdef HAVE_PETSC if (neutron_sn.has_sources == 0) { #ifdef HAVE_SLEPC if (feenox.pde.eigen_formulation == eigen_formulation_omega) { feenox_var_value(neutron_sn.keff) = 1.0/feenox.pde.eigenvalue[0]; } else { feenox_var_value(neutron_sn.keff) = feenox.pde.eigenvalue[0]; } // TODO: this is wrong // normalization without power double num = 0; double den = 0; int integration = feenox.pde.mesh->integration; for (size_t i = 0; i < feenox.pde.mesh->n_elements; i++) { element_t *element = &feenox.pde.mesh->element[i]; if (element->type != NULL && element->type->dim == feenox.pde.dim) { num += element->type->volume(element); // for now I'd rather perform the computation myself instead of // calling feenox_mesh_integral_over_element() because that wastes a lot of fem calls for (unsigned int q = 0; q < element->type->gauss[integration].Q; q++) { double wdet = feenox_fem_compute_w_det_at_gauss_integration(element, q, integration); for (unsigned int j = 0; j < element->type->nodes; j++) { double h = gsl_matrix_get(element->type->gauss[integration].H_c[q], 0, j); for (unsigned int g = 0; g < feenox.pde.dofs; g++) { den += wdet * h * feenox_vector_get(feenox.pde.solution[g]->vector_value, element->node[j]->index_mesh); } } } } } double factor = num/den; // normalize the fluxes for (size_t j = 0; j < feenox.pde.mesh->n_nodes; j++) { for (unsigned int g = 0; g < feenox.pde.dofs; g++) { double xi = feenox_vector_get(feenox.pde.solution[g]->vector_value, j); feenox_vector_set(feenox.pde.solution[g]->vector_value, j, factor*xi); } } #endif } // compute the scalar fluxes out of the directional fluxes for (unsigned int g = 0; g < neutron_sn.groups; g++) { feenox_problem_fill_aux_solution(neutron_sn.phi[g]); } for (size_t j = 0; j < feenox.pde.mesh->n_nodes; j++) { for (unsigned int g = 0; g < neutron_sn.groups; g++) { double xi = 0; for (unsigned int m = 0; m < neutron_sn.directions; m++) { xi += neutron_sn.w[m] * feenox_vector_get(feenox.pde.solution[sn_dof_index(m,g)]->vector_value, j); } // TODO: wrapper, the pde has to set the function value not the vector feenox_vector_set(neutron_sn.phi[g]->vector_value, j, xi); } } #endif return FEENOX_OK; } feenox-1.1/src/pdes/neutron_sn/init.c0000644000175000017500000005577114773607165014642 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron transport FEM: initialization * * Copyright (C) 2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_sn.h" neutron_sn_t neutron_sn; int feenox_problem_parse_time_init_neutron_sn(void) { ///kw_pde+PROBLEM+detail * `neutron_sn` multi-group core-level neutron transport using ///kw_pde+PROBLEM+detail - discrete ordinates $S_N$ for angular discretization, and ///kw_pde+PROBLEM+detail - isoparametric finite elements for spatial discretization. // virtual methods #ifdef HAVE_PETSC feenox.pde.parse_bc = feenox_problem_bc_parse_neutron_sn; feenox.pde.parse_write_results = feenox_problem_parse_write_post_neutron_sn; feenox.pde.init_before_run = feenox_problem_init_runtime_neutron_sn; #ifdef HAVE_SLEPC feenox.pde.setup_eps = feenox_problem_setup_eps_neutron_sn; #endif feenox.pde.setup_ksp = feenox_problem_setup_ksp_neutron_sn; feenox.pde.setup_pc = feenox_problem_setup_pc_neutron_sn; feenox.pde.element_build_allocate_aux = feenox_problem_build_allocate_aux_neutron_sn; feenox.pde.element_build_volumetric = feenox_problem_build_volumetric_neutron_sn; feenox.pde.element_build_volumetric_at_gauss = feenox_problem_build_volumetric_gauss_point_neutron_sn; feenox.pde.solve_post = feenox_problem_solve_post_neutron_sn; // we are FEM feenox.mesh.default_field_location = field_location_nodes; // default is 1 group if (neutron_sn.groups == 0) { neutron_sn.groups = 1; } // default is N=2 if (neutron_sn.N == 0) { neutron_sn.N = 2; } if (neutron_sn.N % 2 != 0) { feenox_push_error_message("number of ordinates N = %d has to be even", neutron_sn.N); return FEENOX_ERROR; } // stammler's eq 6.19 switch(feenox.pde.dim) { case 1: neutron_sn.directions = neutron_sn.N; break; case 2: neutron_sn.directions = 0.5*neutron_sn.N*(neutron_sn.N+2); break; case 3: neutron_sn.directions = neutron_sn.N*(neutron_sn.N+2); break; } // dofs = number of directions * number of groups feenox.pde.dofs = neutron_sn.directions * neutron_sn.groups; // ------- neutron transport outputs ----------------------------------- // the angular fluxes psi feenox_check_alloc(feenox.pde.unknown_name = calloc(feenox.pde.dofs, sizeof(char *))); // TODO: document from comments // NOTE: it is more natural to put first the group and then the direction // while in the doc we use $\psi_{mg}$ for (unsigned int g = 0; g < neutron_sn.groups; g++) { for (unsigned int m = 0; m < neutron_sn.directions; m++) { feenox_check_minusone(asprintf(&feenox.pde.unknown_name[sn_dof_index(m,g)], "psi%u.%u", g+1, m+1)); } } // the scalar fluxes phi // TODO: document // TODO: for one group make an alias between phi1 and phi feenox_check_alloc(neutron_sn.phi = calloc(neutron_sn.groups, sizeof(function_t *))); for (unsigned int g = 0; g < neutron_sn.groups; g++) { char *name = NULL; feenox_check_minusone(asprintf(&name, "phi%u", g+1)); feenox_call(feenox_problem_define_solution_function(name, &neutron_sn.phi[g], FEENOX_SOLUTION_NOT_GRADIENT)); feenox_free(name); } ///va_neutron_sn+keff+desc The effective multiplication factor\ $k_\text{eff}$. neutron_sn.keff = feenox_define_variable_get_ptr("keff"); ///va_neutron_sn+sn_alpha+desc The stabilization parameter\ $\alpha$ for $S_N$. neutron_sn.sn_alpha = feenox_define_variable_get_ptr("sn_alpha"); feenox_var_value(neutron_sn.sn_alpha) = 0.5; ///va_neutron_sn+chi+desc A vector of size groups with the fission spectrum. ///va_neutron_sn+chi+desc Default is one in the first group and zero in the rest. neutron_sn.chi = feenox_define_vector_get_ptr("chi", neutron_sn.groups); feenox_vector_set(neutron_sn.chi, 0, 1.0); // decrease the penalty weight feenox_var_value(feenox.pde.vars.penalty_weight) = 100; // ------------ initialize the SN weights ------------------------------------ // TODO: when adding FVM, these are the same so we should move it into a single location feenox_check_alloc(neutron_sn.w = calloc(neutron_sn.directions, sizeof(double))); feenox_check_alloc(neutron_sn.Omega = calloc(neutron_sn.directions, sizeof(double *))); for (unsigned int m = 0; m < neutron_sn.directions; m++) { feenox_check_alloc(neutron_sn.Omega[m] = calloc(3, sizeof(double))); } if (feenox.pde.dim == 1) { // table 3-1 page 121 lewiss // in 1D the directions are the zeros of the legendre polymonials // and the weights are such the gauss quadrature is exact switch (neutron_sn.N) { case 2: neutron_sn.Omega[0][0] = +1.0/M_SQRT3; neutron_sn.w[0] = 1.0/2.0; neutron_sn.Omega[1][0] = -neutron_sn.Omega[0][0]; neutron_sn.w[1] = neutron_sn.w[0]; break; case 4: neutron_sn.Omega[0][0] = sqrt(3.0/7.0 - 2.0/7.0 * sqrt(6.0/5.0)); neutron_sn.w[0] = 0.6521451549/2.0; neutron_sn.Omega[1][0] = sqrt(3.0/7.0 + 2.0/7.0 * sqrt(6.0/5.0)); neutron_sn.w[1] = 0.3478548451/2.0; neutron_sn.Omega[2][0] = -neutron_sn.Omega[0][0]; neutron_sn.w[2] = neutron_sn.w[0]; neutron_sn.Omega[3][0] = -neutron_sn.Omega[1][0]; neutron_sn.w[3] = neutron_sn.w[1]; break; case 6: neutron_sn.Omega[0][0] = 0.2386191860; neutron_sn.w[0] = 0.4679139346/2.0; neutron_sn.Omega[1][0] = 0.6612093864; neutron_sn.w[1] = 0.3607615730/2.0; neutron_sn.Omega[2][0] = 0.9324695142; neutron_sn.w[2] = 0.1713244924/2.0; neutron_sn.Omega[3][0] = -neutron_sn.Omega[0][0]; neutron_sn.w[3] = neutron_sn.w[0]; neutron_sn.Omega[4][0] = -neutron_sn.Omega[1][0]; neutron_sn.w[4] = neutron_sn.w[1]; neutron_sn.Omega[5][0] = -neutron_sn.Omega[2][0]; neutron_sn.w[5] = neutron_sn.w[2]; break; case 8: neutron_sn.Omega[0][0] = 0.1834346424; neutron_sn.w[0] = 0.3626837834/2.0; neutron_sn.Omega[1][0] = 0.5255324099; neutron_sn.w[1] = 0.3137066459/2.0; neutron_sn.Omega[2][0] = 0.7966664774; neutron_sn.w[2] = 0.2223810344/2.0; neutron_sn.Omega[3][0] = 0.9602898564; neutron_sn.w[3] = 0.1012285363/2.0; neutron_sn.Omega[4][0] = -neutron_sn.Omega[0][0]; neutron_sn.w[4] = neutron_sn.w[0]; neutron_sn.Omega[5][0] = -neutron_sn.Omega[1][0]; neutron_sn.w[5] = neutron_sn.w[1]; neutron_sn.Omega[6][0] = -neutron_sn.Omega[2][0]; neutron_sn.w[6] = neutron_sn.w[2]; neutron_sn.Omega[7][0] = -neutron_sn.Omega[3][0]; neutron_sn.w[7] = neutron_sn.w[3]; break; default: feenox_push_error_message("unsupported N = %d in 1D", neutron_sn.N); return FEENOX_ERROR; break; } } else { // table 4-1 page 162 from lewiss // we could have used file sndir2.dat from fentraco, but the values are different // first set the weights as all the possible permutations in the first octant // and then we fill in the others // the initial cosine directions passed to feenox_problem_neutron_sn_init_cosines() // are taken from table 4-1 from lewiss (p 162) // which coincide with table 1 p 208 from stammler-abbate // TODO: allow user provided first cosine and weights double *weights_array = NULL; switch (neutron_sn.N) { case 2: { feenox_call(feenox_problem_neutron_sn_init_cosines(1.0/M_SQRT3)); feenox_check_alloc(weights_array = calloc(1, sizeof(double))); weights_array[0] = 1; } break; case 4: { feenox_call(feenox_problem_neutron_sn_init_cosines(0.3500212)); feenox_check_alloc(weights_array = calloc(1, sizeof(double))); weights_array[0] = 1.0/3.0; } break; case 6: { feenox_call(feenox_problem_neutron_sn_init_cosines(0.2666355)); feenox_check_alloc(weights_array = calloc(2, sizeof(double))); weights_array[0] = 0.1761263; weights_array[1] = 0.1572071; } break; case 8: { feenox_call(feenox_problem_neutron_sn_init_cosines(0.2182179)); feenox_check_alloc(weights_array = calloc(3, sizeof(double))); weights_array[0] = 0.1209877; weights_array[1] = 0.0907407; weights_array[2] = 0.0925926; } break; case 10: { feenox_call(feenox_problem_neutron_sn_init_cosines(0.1893213)); feenox_check_alloc(weights_array = calloc(4, sizeof(double))); weights_array[0] = 0.1402771*2/M_PI; weights_array[1] = 0.1139285*2/M_PI; weights_array[2] = 0.0707546*2/M_PI; weights_array[3] = 0.0847101*2/M_PI; } break; case 12: { feenox_call(feenox_problem_neutron_sn_init_cosines(0.1672126)); feenox_check_alloc(weights_array = calloc(5, sizeof(double))); weights_array[0] = 0.0707626; weights_array[1] = 0.0558811; weights_array[2] = 0.0373377; weights_array[3] = 0.0502819; weights_array[4] = 0.0258513; } break; case 16: { feenox_call(feenox_problem_neutron_sn_init_cosines(0.1389568)); feenox_check_alloc(weights_array = calloc(8, sizeof(double))); weights_array[0] = 0.0489872; weights_array[1] = 0.0413296; weights_array[2] = 0.0212326; weights_array[3] = 0.0256207; weights_array[4] = 0.0360486; weights_array[5] = 0.0144589; weights_array[6] = 0.0344958; weights_array[7] = 0.0085179; } break; default: feenox_push_error_message("unsupported N = %d in %dD", neutron_sn.N, feenox.pde.dim); return FEENOX_ERROR; break; } // from the weights array now assign one weight to each direction feenox_call(feenox_problem_neutron_sn_init_triangles(weights_array)); feenox_free(weights_array); // print the nice SN triangle /* int N_over_2 = neutron_sn.N/2; for (int i = 0; i < N_over_2; i++) { for (int j = 0; j < N_over_2-1-i; j++) { printf(" "); } for (int j = 0; j < i+1; j++) { printf("%d ", 1+neutron_sn.SN_triangle[i][j]); } printf("\n"); } */ // we have filled the first octant, now fill in the other ones // this is for 2 and 3 dimensions only int N_octs = (feenox.pde.dim == 2) ? 4 : 8; int J_octs = neutron_sn.directions / N_octs; for (int n = 1; n < N_octs; n++) { for (int j = 0; j < J_octs; j++) { neutron_sn.Omega[n*J_octs + j][0] = ((n & 1) ? (-1) : (+1)) * neutron_sn.Omega[j][0]; neutron_sn.Omega[n*J_octs + j][1] = ((n & 2) ? (-1) : (+1)) * neutron_sn.Omega[j][1]; neutron_sn.Omega[n*J_octs + j][2] = ((n & 4) ? (-1) : (+1)) * neutron_sn.Omega[j][2]; neutron_sn.w[n*J_octs + j] = neutron_sn.w[j]; } } } // checks double s = 0; for (unsigned int m = 0; m < neutron_sn.directions; m++) { s += neutron_sn.w[m]; } if (fabs(s-1) > 1e-6) { feenox_push_error_message("S%d weights do not sum up to one but to %g", neutron_sn.N, s); return FEENOX_ERROR; } for (unsigned int d = 0; d < feenox.pde.dim; d++) { s = 0; for (unsigned int m = 0; m < neutron_sn.directions; m++) { s += neutron_sn.w[m] * neutron_sn.Omega[m][d]; } if (fabs(s) > 1e-6) { feenox_push_error_message("S%d weights are not symmetric (zero != %g)", neutron_sn.N, s); return FEENOX_ERROR; } s = 0; for (unsigned int m = 0; m < neutron_sn.directions; m++) { s += neutron_sn.w[m] * gsl_pow_2(neutron_sn.Omega[m][d]); } if (fabs(s-1.0/3.0) > 1e-6) { feenox_push_error_message("S%d weights are not symmetric (one third != %g)", neutron_sn.N, s); return FEENOX_ERROR; } } // --------------------------------------------------------------------------- #endif return FEENOX_OK; } int feenox_problem_init_runtime_neutron_sn(void) { #ifdef HAVE_PETSC feenox.pde.mesh->data_type = data_type_node; feenox.pde.spatial_unknowns = feenox.pde.mesh->n_nodes; // initialize XSs // TODO: allow not to give the group number in one-group problems unsigned int G = neutron_sn.groups; double fission_spectrum_integral = 0; feenox_check_alloc(neutron_sn.Sigma_t = calloc(G, sizeof(distribution_t))); feenox_check_alloc(neutron_sn.Sigma_a = calloc(G, sizeof(distribution_t))); feenox_check_alloc(neutron_sn.nu_Sigma_f = calloc(G, sizeof(distribution_t))); feenox_check_alloc(neutron_sn.S = calloc(G, sizeof(distribution_t))); feenox_check_alloc(neutron_sn.Sigma_s0 = calloc(G, sizeof(distribution_t *))); feenox_check_alloc(neutron_sn.Sigma_s1 = calloc(G, sizeof(distribution_t *))); for (unsigned int g = 0; g < G; g++) { char *name = NULL; feenox_check_minusone(asprintf(&name, "Sigma_t%d", g+1)); feenox_distribution_init(&neutron_sn.Sigma_t[g], name); if (neutron_sn.Sigma_t[g].defined) { neutron_sn.Sigma_t[g].non_uniform = feenox_depends_on_space(neutron_sn.Sigma_t[g].dependency_variables); } feenox_free(name); feenox_check_minusone(asprintf(&name, "Sigma_a%d", g+1)); feenox_distribution_init(&neutron_sn.Sigma_a[g], name); if (neutron_sn.Sigma_a[g].defined) { neutron_sn.Sigma_a[g].non_uniform = feenox_depends_on_space(neutron_sn.Sigma_a[g].dependency_variables); } feenox_free(name); feenox_check_minusone(asprintf(&name, "nuSigma_f%d", g+1)); feenox_distribution_init(&neutron_sn.nu_Sigma_f[g], name); if (neutron_sn.nu_Sigma_f[g].defined) { neutron_sn.has_fission = 1; neutron_sn.nu_Sigma_f[g].non_uniform = feenox_depends_on_space(neutron_sn.nu_Sigma_f[g].dependency_variables); } feenox_free(name); feenox_check_minusone(asprintf(&name, "S%d", g+1)); feenox_distribution_init(&neutron_sn.S[g], name); if (neutron_sn.S[g].defined) { neutron_sn.has_sources = 1; neutron_sn.S[g].non_uniform = feenox_depends_on_space(neutron_sn.S[g].dependency_variables); } feenox_free(name); feenox_check_alloc(neutron_sn.Sigma_s0[g] = calloc(G, sizeof(distribution_t))); feenox_check_alloc(neutron_sn.Sigma_s1[g] = calloc(G, sizeof(distribution_t))); for (int g_prime = 0; g_prime < G; g_prime++) { feenox_check_minusone(asprintf(&name, "Sigma_s%d.%d", g+1, g_prime+1)); feenox_distribution_init(&neutron_sn.Sigma_s0[g][g_prime], name); if (neutron_sn.Sigma_s0[g][g_prime].defined) { neutron_sn.Sigma_s0[g][g_prime].non_uniform = feenox_depends_on_space(neutron_sn.Sigma_s0[g][g_prime].dependency_variables); } feenox_free(name); feenox_check_minusone(asprintf(&name, "Sigma_s_one%d.%d", g+1, g_prime+1)); feenox_distribution_init(&neutron_sn.Sigma_s1[g][g_prime], name); if (neutron_sn.Sigma_s1[g][g_prime].defined) { neutron_sn.Sigma_s1[g][g_prime].non_uniform = feenox_depends_on_space(neutron_sn.Sigma_s1[g][g_prime].dependency_variables); } feenox_free(name); } fission_spectrum_integral += feenox_vector_get(neutron_sn.chi, g); } if (neutron_sn.has_sources == 0 && neutron_sn.has_fission == 0) { feenox_push_error_message("neither fission nor sources found"); return FEENOX_ERROR; } if (fabs(fission_spectrum_integral-1) > 1e-6) { feenox_push_error_message("fission spectrum is not normalized, its integral is %g", fission_spectrum_integral); return FEENOX_ERROR; } if (neutron_sn.has_sources == 0) { #ifdef HAVE_SLEPC feenox.pde.math_type = math_type_eigen; feenox.pde.solve = feenox_problem_solve_slepc_eigen; feenox.pde.has_mass = 1; feenox.pde.has_rhs = 0; // TODO: higher harmonics? feenox.pde.nev = 1; // define eigenvectors (we don't know its size yet) feenox_check_alloc(feenox.pde.vectors.phi = calloc(feenox.pde.nev, sizeof(vector_t *))); for (int g = 0; g < feenox.pde.nev; g++) { char *modename = NULL; feenox_check_minusone(asprintf(&modename, "eig%d", g+1)); feenox_check_alloc(feenox.pde.vectors.phi[g] = feenox_define_vector_get_ptr(modename, 0)); feenox_free(modename); } #else feenox_push_error_message("criticality problems cannot be solved without SLEPc"); return FEENOX_ERROR; #endif } else { // TODO: non-linear? feenox.pde.math_type = math_type_linear; feenox.pde.solve = feenox_problem_solve_petsc_linear; feenox.pde.has_mass = 0; feenox.pde.has_rhs = 1; } // allocate elemental XS matrices unsigned int M = neutron_sn.directions; unsigned int MG = M*G; feenox_check_alloc(neutron_sn.R = gsl_matrix_calloc(MG, MG)); feenox_check_alloc(neutron_sn.X = gsl_matrix_calloc(MG, MG)); feenox_check_alloc(neutron_sn.s = gsl_vector_calloc(MG)); // direction matrix feenox_check_alloc(neutron_sn.D = gsl_matrix_calloc(MG, MG * feenox.pde.dim)); for (unsigned int m = 0; m < M; m++) { for (unsigned int g = 0; g < G; g++) { for (unsigned int d = 0; d < feenox.pde.dim; d++) { gsl_matrix_set(neutron_sn.D, sn_dof_index(m,g), d*MG + sn_dof_index(m,g), neutron_sn.Omega[m][d]); } } } feenox.pde.has_stiffness = 1; feenox.pde.has_jacobian_K = 0; feenox.pde.has_jacobian_M = 0; feenox.pde.has_jacobian_b = 0; feenox.pde.has_jacobian = feenox.pde.has_jacobian_K || feenox.pde.has_jacobian_M || feenox.pde.has_jacobian_b; feenox.pde.symmetric_K = 0; feenox.pde.symmetric_M = 0; #endif return FEENOX_OK; } #ifdef HAVE_PETSC int feenox_problem_setup_pc_neutron_sn(PC pc) { PCType pc_type = NULL; petsc_call(PCGetType(pc, &pc_type)); if (pc_type == NULL) { // if we don't set the pc type here then we PCFactorSetMatSolverType does not work petsc_call(PCSetType(pc, feenox.pde.symmetric_K ? PCCHOLESKY : PCLU)); #ifdef PETSC_HAVE_MUMPS petsc_call(PCFactorSetMatSolverType(pc, MATSOLVERMUMPS)); #else // defaults so in serial it should be petsc's lu and in parallel ilu (I think) // petsc_call(PCSetType(pc, PCLU)); #endif } return FEENOX_OK; } int feenox_problem_setup_ksp_neutron_sn(KSP ksp ) { KSPType ksp_type = NULL; petsc_call(KSPGetType(ksp, &ksp_type)); if (ksp_type == NULL) { petsc_call(KSPSetType(ksp, KSPPREONLY)) } return FEENOX_OK; } #endif #ifdef HAVE_SLEPC int feenox_problem_setup_eps_neutron_sn(EPS eps) { // generalized non-hermitian problem petsc_call(EPSSetProblemType(eps, EPS_GNHEP)); // we expect the eigenvalue to be near one and an absolute test is faster petsc_call(EPSSetConvergenceTest(feenox.pde.eps, EPS_CONV_ABS)); // offsets around one if (feenox_var_value(feenox.pde.vars.eps_st_sigma) == 0) { feenox_var_value(feenox.pde.vars.eps_st_sigma) = 1.0; } if (feenox_var_value(feenox.pde.vars.eps_st_nu) == 0) { feenox_var_value(feenox.pde.vars.eps_st_nu) = 1.0; } return FEENOX_OK; } #endif int feenox_problem_neutron_sn_init_cosines(double mu1) { int N_over_2 = neutron_sn.N/2; double *mu = NULL; feenox_check_alloc(mu = calloc(N_over_2, sizeof(double))); // equation 21 in stammler // equation 4-8 in lewis mu[0] = mu1; double C = 2*(1-3*gsl_pow_2(mu1))/(neutron_sn.N-2); for (int i = 1; i < N_over_2; i++) { mu[i] = sqrt(gsl_pow_2(mu1) + C*i); } // now we have to assign the cosines to each of the m directions int m = 0; for (int row = 0; row < N_over_2; row++) { for (int col = 0; col <= row; col++) { int i = N_over_2 - row - 1; int j = col; int k = N_over_2 + 2 - 3 - i - j; neutron_sn.Omega[m][0] = mu[i]; neutron_sn.Omega[m][1] = mu[j]; neutron_sn.Omega[m][2] = (feenox.pde.dim == 3) ? mu[k] : 0; m++; } } feenox_free(mu); return FEENOX_OK; } int feenox_problem_neutron_sn_init_triangles(double *weights_array) { int N_over_2 = neutron_sn.N/2; // allocate stuff int ***tmp = NULL; feenox_check_alloc(tmp = calloc(6, sizeof(int **))); for (int p = 0; p < 6; p++) { feenox_check_alloc(tmp[p] = calloc(N_over_2, sizeof(int *))); for (int j = 0; j < N_over_2; j++) { feenox_check_alloc(tmp[p][j] = calloc(N_over_2, sizeof(int))); } } feenox_check_alloc(neutron_sn.SN_triangle = calloc(N_over_2, sizeof(int *))); for (int j = 0; j < N_over_2; j++) { feenox_check_alloc(neutron_sn.SN_triangle[j] = calloc(N_over_2, sizeof(int *))); } int *weight_map = NULL; feenox_check_alloc(weight_map = calloc(neutron_sn.N*(neutron_sn.N+1)/2, sizeof(int))); // fill in the 6 temporary triangles int m = 1; for (int i = N_over_2-1; i >= 0; i--) { for (int j = 0; j < i+1; j++) { tmp[0][i][j] = m; m++; } } for (int i = 0; i < N_over_2; i++) { for (int j = 0; j < i+1; j++) { tmp[1][i][i-j] = tmp[0][i][j]; } } for (int i = 0; i < N_over_2; i++) { for (int j = 0; j < i+1; j++) { tmp[2][i][j] = tmp[1][N_over_2-i-1 + j][j]; } } for (int i = 0; i < N_over_2; i++) { for (int j = 0; j < i+1; j++) { tmp[3][i][j] = tmp[0][N_over_2-j-1][N_over_2-i-1]; } } for (int i = 0; i < N_over_2; i++) { for (int j = 0; j < i+1; j++) { tmp[4][i][j] = tmp[3][N_over_2-i-1 + j][j]; } } for (int i = 0; i < N_over_2; i++) { for (int j = 0; j < i+1; j++) { tmp[5][i][j] = tmp[0][N_over_2-i-1 + j][j]; } } // compute the min and create a map for (int i = 0; i < N_over_2; i++) { for (int j = 0; j < i+1; j++) { int min = neutron_sn.N; for (int p = 0; p < 6; p++) { if (tmp[p][i][j] < min) { min = tmp[p][i][j]; } } neutron_sn.SN_triangle[i][j] = min; weight_map[min] = 1; } } // assign the weight and create the SN triangle double N_octs = (feenox.pde.dim == 2) ? 4 : 8; m = 0; for (int i = 0; i < N_over_2; i++) { for (int j = 0; j < i+1; j++) { int w = 0; for (int k = 0; k < neutron_sn.SN_triangle[i][j]; k++) { w += weight_map[k] != 0; } neutron_sn.w[m] = weights_array[w]/N_octs; neutron_sn.SN_triangle[i][j] = w; m++; } } for (int p = 0; p < 6; p++) { for (int i = 0; i < N_over_2; i++) { feenox_free(tmp[p][i]); } feenox_free(tmp[p]); } feenox_free(tmp); feenox_free(weight_map); return FEENOX_OK; } feenox-1.1/src/pdes/neutron_sn/bulk.c0000644000175000017500000002013214773607165014613 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron transport FEM: bulk elements * * Copyright (C) 2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_sn.h" int feenox_problem_build_allocate_aux_neutron_sn(unsigned int J) { neutron_sn.n_nodes = J; int G = neutron_sn.groups; int M = neutron_sn.directions; int MG = M*G; int JMG = J * MG; if (neutron_sn.Li != NULL) { gsl_matrix_free(neutron_sn.Li); gsl_matrix_free(neutron_sn.Ai); if (neutron_sn.has_fission) { gsl_matrix_free(neutron_sn.Fi); } if (neutron_sn.has_sources) { gsl_vector_free(neutron_sn.Si); } gsl_matrix_free(neutron_sn.P); gsl_matrix_free(neutron_sn.DB); gsl_matrix_free(neutron_sn.AH); if (neutron_sn.has_fission) { gsl_matrix_free(neutron_sn.Fi); gsl_matrix_free(neutron_sn.XH); } } feenox_check_alloc(neutron_sn.Li = gsl_matrix_calloc(JMG, JMG)); feenox_check_alloc(neutron_sn.Ai = gsl_matrix_calloc(JMG, JMG)); if (neutron_sn.has_fission) { feenox_check_alloc(neutron_sn.Fi = gsl_matrix_calloc(JMG, JMG)); } if (neutron_sn.has_sources) { feenox_check_alloc(neutron_sn.Si = gsl_vector_calloc(JMG)); } feenox_check_alloc(neutron_sn.P = gsl_matrix_calloc(MG, JMG)); feenox_check_alloc(neutron_sn.DB = gsl_matrix_calloc(MG, JMG)); feenox_check_alloc(neutron_sn.AH = gsl_matrix_calloc(MG, JMG)); if (neutron_sn.has_fission) { feenox_check_alloc(neutron_sn.XH = gsl_matrix_calloc(MG, JMG)); } return FEENOX_OK; } int feenox_problem_build_volumetric_neutron_sn(element_t *e) { if (neutron_sn.space_XS == 0) { feenox_call(feenox_problem_neutron_sn_eval_XS(feenox_fem_get_material(e), NULL)); } return FEENOX_OK; } int feenox_problem_neutron_sn_eval_XS(material_t *material, double *x) { // initialize to zero gsl_matrix_set_zero(neutron_sn.R); if (neutron_sn.has_fission) { gsl_matrix_set_zero(neutron_sn.X); } if (neutron_sn.has_sources) { gsl_vector_set_zero(neutron_sn.s); } for (int g = 0; g < neutron_sn.groups; g++) { // independent sources if (neutron_sn.S[g].defined) { neutron_sn.S[g].eval(&neutron_sn.S[g], x, material); } // fission if (neutron_sn.nu_Sigma_f[g].defined) { neutron_sn.nu_Sigma_f[g].eval(&neutron_sn.nu_Sigma_f[g], x, material); } // scattering for (unsigned int g_prime = 0; g_prime < neutron_sn.groups; g_prime++) { if (neutron_sn.Sigma_s0[g_prime][g].defined) { neutron_sn.Sigma_s0[g_prime][g].eval(&neutron_sn.Sigma_s0[g_prime][g], x, material); } if (neutron_sn.Sigma_s1[g_prime][g].defined) { neutron_sn.Sigma_s1[g_prime][g].eval(&neutron_sn.Sigma_s1[g_prime][g], x, material); } } // absorption if (neutron_sn.Sigma_t[g].defined) { neutron_sn.Sigma_t[g].eval(&neutron_sn.Sigma_t[g], x, material); } if (neutron_sn.Sigma_a[g].defined) { neutron_sn.Sigma_a[g].eval(&neutron_sn.Sigma_a[g], x, material); } } for (unsigned int m = 0; m < neutron_sn.directions; m++) { for (unsigned int g = 0; g < neutron_sn.groups; g++) { // independent sources int diag = sn_dof_index(m,g); gsl_vector_set(neutron_sn.s, diag, neutron_sn.S[g].value); // scattering and fission for (unsigned int g_prime = 0; g_prime < neutron_sn.groups; g_prime++) { for (unsigned int m_prime = 0; m_prime < neutron_sn.directions; m_prime++) { // scattering double accum = -neutron_sn.w[m_prime] * neutron_sn.Sigma_s0[g_prime][g].value; // anisotropic scattering l = 1 if (neutron_sn.Sigma_s1[g_prime][g].defined) { accum -= neutron_sn.w[m_prime] * neutron_sn.Sigma_s1[g_prime][g].value * 3.0 * feenox_mesh_dot(neutron_sn.Omega[m], neutron_sn.Omega[m_prime]); } gsl_matrix_set(neutron_sn.R, diag, sn_dof_index(m_prime,g_prime), accum); // fision if (neutron_sn.has_fission) { gsl_matrix_set(neutron_sn.X, diag, sn_dof_index(m_prime,g_prime), +neutron_sn.w[m_prime] * feenox_vector_get(neutron_sn.chi, g) * neutron_sn.nu_Sigma_f[g_prime].value); } } } // absorption double accum = gsl_matrix_get(neutron_sn.R, diag, diag); if (neutron_sn.Sigma_t[g].defined) { accum += neutron_sn.Sigma_t[g].value; } else { accum += neutron_sn.Sigma_a[g].value; for (unsigned int g_prime = 0; g_prime < neutron_sn.groups; g_prime++) { accum += neutron_sn.Sigma_s0[g][g_prime].value; } } gsl_matrix_set(neutron_sn.R, diag, diag, accum); } } return FEENOX_OK; } int feenox_problem_build_volumetric_gauss_point_neutron_sn(element_t *e, unsigned int q) { #ifdef HAVE_PETSC if (neutron_sn.space_XS != 0) { double *x = feenox_fem_compute_x_at_gauss(e, q, feenox.pde.mesh->integration); feenox_call(feenox_problem_neutron_sn_eval_XS(feenox_fem_get_material(e), x)); } // printf("build %ld %d\n", e->tag, q); // petrov stabilization matrix int MG = neutron_sn.directions * neutron_sn.groups; double tau = feenox_var_value(neutron_sn.sn_alpha) * e->type->size(e); gsl_matrix *H_G = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); gsl_matrix *B = feenox_fem_compute_B_at_gauss_integration(e, q, feenox.pde.mesh->integration); feenox_call(gsl_matrix_memcpy(neutron_sn.P, H_G)); for (unsigned int j = 0; j < neutron_sn.n_nodes; j++) { int MGj = MG*j; for (unsigned int m = 0; m < neutron_sn.directions; m++) { for (unsigned int d = 0; d < feenox.pde.dim; d++) { double value = tau * neutron_sn.Omega[m][d] * gsl_matrix_get(B, d, j); for (unsigned int g = 0; g < neutron_sn.groups; g++) { int diag = sn_dof_index(m,g); gsl_matrix_add_to_element(neutron_sn.P, diag, MGj + diag, value); } } } } // petrov-stabilized leakage term double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, feenox.pde.mesh->integration); gsl_matrix *B_G = feenox_fem_compute_B_G_at_gauss(e, q, feenox.pde.mesh->integration); feenox_call(feenox_blas_PtCB(neutron_sn.P, neutron_sn.D, B_G, neutron_sn.DB, wdet, neutron_sn.Li)); // petrov-stabilized removal term feenox_call(feenox_blas_PtCB(neutron_sn.P, neutron_sn.R, H_G, neutron_sn.AH, wdet, neutron_sn.Ai)); // petrov-stabilized fission term if (neutron_sn.has_fission) { feenox_call(feenox_blas_PtCB(neutron_sn.P, neutron_sn.X, H_G, neutron_sn.XH, wdet, neutron_sn.Fi)); } // petrov-stabilized source term if (neutron_sn.has_sources) { feenox_call(feenox_blas_Atb(neutron_sn.P, neutron_sn.s, wdet, neutron_sn.Si)); } // for source-driven problems // K = Ki + Ai - Xi // for criticallity problems // K = Ki + Ai // M = Xi feenox_call(gsl_matrix_add(neutron_sn.Li, neutron_sn.Ai)); if (neutron_sn.has_fission) { if (neutron_sn.has_sources) { feenox_call(gsl_matrix_scale(neutron_sn.Fi, -1.0)); feenox_call(gsl_matrix_add(neutron_sn.Li, neutron_sn.Fi)); } else { feenox_call(gsl_matrix_add(feenox.fem.Mi, neutron_sn.Fi)); } } if (neutron_sn.has_sources) { feenox_call(gsl_vector_add(feenox.fem.bi, neutron_sn.Si)); } feenox_call(gsl_matrix_add(feenox.fem.Ki, neutron_sn.Li)); #endif return FEENOX_OK; } feenox-1.1/src/pdes/neutron_sn/methods.h0000644000175000017500000000470414773607165015335 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron transport FEM: virtual methods * * Copyright (C) 2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef NEUTRON_SN_METHODS_H #define NEUTRON_SN_METHODS_H // neutron_sn/parser.c extern int feenox_problem_parse_problem_neutron_sn(const char *); extern int feenox_problem_parse_write_post_neutron_sn(mesh_write_t *mesh_write, const char *token); // neutron_sn/init.c extern int feenox_problem_neutron_sn_init_cosines(double mu1); extern int feenox_problem_neutron_sn_init_triangles(double *weights); extern int feenox_problem_parse_time_init_neutron_sn(void); extern int feenox_problem_init_runtime_neutron_sn(void); #ifdef HAVE_PETSC extern int feenox_problem_setup_pc_neutron_sn(PC pc); extern int feenox_problem_setup_ksp_neutron_sn(KSP ksp); #endif #ifdef HAVE_SLEPC extern int feenox_problem_setup_eps_neutron_sn(EPS eps); #endif // neutron_sn/bulk.c extern int feenox_problem_build_allocate_aux_neutron_sn(unsigned int n_nodes); extern int feenox_problem_neutron_sn_eval_XS(material_t *material, double *x); extern int feenox_problem_build_volumetric_neutron_sn(element_t *e); extern int feenox_problem_build_volumetric_gauss_point_neutron_sn(element_t *element, unsigned int q); // neutron_sn/bc.c extern int feenox_problem_bc_parse_neutron_sn(bc_data_t *bc_data, const char *lhs, char *rhs); extern int feenox_problem_bc_set_neutron_sn_vacuum(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_neutron_sn_mirror(bc_data_t *bc_data, element_t *e, size_t j_global); // neutron_sn/post.c extern int feenox_problem_solve_post_neutron_sn(void); #endif // NEUTRON_SN_METHODS_H feenox-1.1/src/pdes/neutron_sn/bc.c0000644000175000017500000001206414773607165014247 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for neutron transport FEM: boundary conditions * * Copyright (C) 2023--2024 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "neutron_sn.h" int feenox_problem_bc_parse_neutron_sn(bc_data_t *bc_data, const char *lhs, char *rhs) { // TODO: should this be the default BC? if (strcmp(lhs, "vacuum") == 0 || strcmp(lhs, "null") == 0) { // "null" is supported for compatibility with diffusion bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_neutron_sn_vacuum; bc_data->dof = -1; } else if (strcmp(lhs, "mirror") == 0 || strcmp(lhs, "symmetry") == 0) { bc_data->type_math = bc_type_math_dirichlet; bc_data->dof = -1; bc_data->set_essential = feenox_problem_bc_set_neutron_sn_mirror; // TODO: albedo // TODO: white current // TODO: individual scalar fluxes as a function of theta & phi } else { feenox_push_error_message("unknown neutron_sn boundary condition '%s'", lhs); return FEENOX_ERROR; } bc_data->space_dependent = feenox_depends_on_space(bc_data->expr.variables); bc_data->nonlinear = feenox_depends_on_function(bc_data->expr.functions, feenox.pde.solution[0]); if (bc_data->nonlinear && bc_data->type_math == bc_type_math_dirichlet) { feenox_push_error_message("essential boundary condition '%s' cannot depend on phi", rhs); return FEENOX_ERROR; } feenox_call(feenox_expression_parse(&bc_data->expr, rhs)); // TODO: check consistency, non-linearities, etc. return FEENOX_OK; } // these virtual method fill in the dirichlet indexes and values with bc_data int feenox_problem_bc_set_neutron_sn_vacuum(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC PetscScalar outward_normal[3] = {0,0,0}; feenox_call(feenox_mesh_compute_outward_normal(e, outward_normal)); for (unsigned m = 0; m < neutron_sn.directions; m++) { if (feenox_mesh_dot(neutron_sn.Omega[m], outward_normal) < 0) { // if the direction is inward set it to zero for (unsigned int g = 0; g < neutron_sn.groups; g++) { feenox_call(feenox_problem_dirichlet_add(j_global, sn_dof_index(m,g), 0)); } } } #endif return FEENOX_OK; } int feenox_problem_bc_set_neutron_sn_mirror(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC PetscScalar outward_normal[3] = {0,0,0}; PetscScalar reflected[3] = {0,0,0}; PetscScalar Omega_dot_outward = 0; PetscScalar eps = feenox_var_value(feenox.mesh.vars.eps); // TODO: mark the BC as dependent on the normal and compute it in the caller feenox_call(feenox_mesh_compute_outward_normal(e, outward_normal)); for (unsigned m = 0; m < neutron_sn.directions; m++) { if ((Omega_dot_outward = feenox_mesh_dot(neutron_sn.Omega[m], outward_normal)) < 0) { // if the direction is inward then we have to reflect it // if Omega is the incident direction with respect to the outward normal then // reflected = Omega - 2*(Omega dot outward_normal) * outward_normal for (int d = 0; d < 3; d++) { reflected[d] = neutron_sn.Omega[m][d] - 2*Omega_dot_outward * outward_normal[d]; } unsigned int m_prime = 0; // leave this out of the loop, it is used below for (m_prime = 0; m_prime < neutron_sn.directions; m_prime++) { if (fabs(reflected[0] - neutron_sn.Omega[m_prime][0]) < eps && fabs(reflected[1] - neutron_sn.Omega[m_prime][1]) < eps && fabs(reflected[2] - neutron_sn.Omega[m_prime][2]) < eps) { break; } } if (m_prime == neutron_sn.directions) { feenox_push_error_message("cannot find a reflected direction for m=%d (out of %d in S%d) for node %d", m, neutron_sn.directions, neutron_sn.N, feenox.pde.mesh->node[j_global].tag); return FEENOX_ERROR; } double *coefficients = NULL; feenox_check_alloc(coefficients = calloc(feenox.pde.dofs, sizeof(double))); for (unsigned int g = 0; g < neutron_sn.groups; g++) { coefficients[sn_dof_index(m,g)] = -1; coefficients[sn_dof_index(m_prime,g)] = +1; } feenox_call(feenox_problem_multifreedom_add(j_global, coefficients)); feenox_free(coefficients); } } #endif return FEENOX_OK; } feenox-1.1/src/pdes/dump.c0000644000175000017500000000672214773607165012442 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox function for dumping PETSc objects * * Copyright (C) 2009--2015,2021 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_instruction_dump(void *arg) { #ifdef HAVE_PETSC dump_t *dump = (dump_t *)arg; PetscViewer viewer = NULL; feenox.pde.missed_dump = arg; if (dump->K && feenox.pde.K != NULL) { feenox_call(feenox_dump_open_viewer(dump, "K", &viewer)); petsc_call(MatView(feenox.pde.K, viewer)); petsc_call(PetscViewerDestroy(&viewer)); feenox.pde.missed_dump = NULL; } if (dump->K_bc && feenox.pde.K_bc) { feenox_call(feenox_dump_open_viewer(dump, "K_bc", &viewer)); petsc_call(MatView(feenox.pde.K_bc, viewer)); petsc_call(PetscViewerDestroy(&viewer)); feenox.pde.missed_dump = NULL; } if (dump->b && feenox.pde.b) { feenox_call(feenox_dump_open_viewer(dump, "b", &viewer)); petsc_call(VecView(feenox.pde.b, viewer)); petsc_call(PetscViewerDestroy(&viewer)); feenox.pde.missed_dump = NULL; } if (dump->b_bc && feenox.pde.b_bc) { feenox_call(feenox_dump_open_viewer(dump, "b_bc", &viewer)); petsc_call(VecView(feenox.pde.b_bc, viewer)); petsc_call(PetscViewerDestroy(&viewer)); feenox.pde.missed_dump = NULL; } if (dump->M && feenox.pde.M) { feenox_call(feenox_dump_open_viewer(dump, "M", &viewer)); petsc_call(MatView(feenox.pde.M, viewer)); petsc_call(PetscViewerDestroy(&viewer)); feenox.pde.missed_dump = NULL; } if (dump->M_bc && feenox.pde.M_bc) { feenox_call(feenox_dump_open_viewer(dump, "M_bc", &viewer)); petsc_call(MatView(feenox.pde.M_bc, viewer)); petsc_call(PetscViewerDestroy(&viewer)); feenox.pde.missed_dump = NULL; } #endif return FEENOX_OK; } #ifdef HAVE_PETSC int feenox_dump_open_viewer(dump_t *this, const char *name, PetscViewer *viewer) { char *path = NULL; switch (this->format) { case dump_format_default: case dump_format_octave: feenox_check_minusone(asprintf(&path, "%s.m", name)); petsc_call(PetscViewerASCIIOpen(PETSC_COMM_WORLD, path, viewer)); petsc_call(PetscViewerPushFormat(*viewer, PETSC_VIEWER_ASCII_MATLAB )); feenox_free(path); break; case dump_format_binary: feenox_check_minusone(asprintf(&path, "%s.bin", name)); petsc_call(PetscViewerBinaryOpen(PETSC_COMM_WORLD, path, FILE_MODE_WRITE, viewer)); feenox_free(path); break; case dump_format_ascii: feenox_check_minusone(asprintf(&path, "%s.txt", name)); petsc_call(PetscViewerASCIIOpen(PETSC_COMM_WORLD, path, viewer)); petsc_call(PetscViewerPushFormat(*viewer, PETSC_VIEWER_DEFAULT)); feenox_free(path); break; } return FEENOX_OK; } #endif feenox-1.1/src/pdes/methods.h0000644000175000017500000000040714773607166013140 00000000000000// automatically generated by autogen.sh on Thu Apr 3 07:40:54 PM -03 2025 #include "laplace/methods.h" #include "mechanical/methods.h" #include "modal/methods.h" #include "neutron_diffusion/methods.h" #include "neutron_sn/methods.h" #include "thermal/methods.h" feenox-1.1/src/pdes/gradient.c0000644000175000017500000002636314773607165013275 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for computing the gradients of the PDE solutions * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_problem_gradient_compute(void) { #ifdef HAVE_PETSC /* // this is needed only for uncertainty in gradients if (feenox.pde.m2 == NULL) { feenox_check_alloc(feenox.pde.m2 = gsl_matrix_calloc(feenox.pde.dofs, feenox.pde.dim)); } */ // the mesh for "rough" mode is different mesh_t *mesh = (feenox.pde.rough == 0) ? feenox.pde.mesh : feenox.pde.mesh_rough; // number of steps we need to make for progress bar size_t step = ceil((double)(mesh->n_elements + mesh->n_nodes)*feenox.mpi_size/100.0); if (step < 1) { step = 1; } unsigned int g = 0; unsigned int m = 0; if (feenox.pde.gradient[0][0]->vector_value == NULL) { // gradient vector for (g = 0; g < feenox.pde.dofs; g++) { for (m = 0; m < feenox.pde.dim; m++) { // derivative of the degree of freedom g with respect to dimension m feenox_problem_fill_aux_solution(feenox.pde.gradient[g][m]); // feenox_gradient_fill(feenox.pde, delta_gradient[g][m]); } } if (feenox.pde.gradient_fill != NULL) { feenox_call(feenox.pde.gradient_fill()); } } // step 1. sweep elements and compute tensors at each node of each element size_t progress = 0; unsigned int ascii_progress_chars = 0; for (size_t i = 0; i < mesh->n_elements; i++) { if ((feenox.pde.progress_ascii == PETSC_TRUE) && (progress++ % step) == 0) { printf(CHAR_PROGRESS_GRADIENT); fflush(stdout); ascii_progress_chars++; } if (mesh->element[i].type->dim == feenox.pde.dim) { feenox_call(feenox_problem_gradient_compute_at_element(&mesh->element[i], mesh)); } } // step 2. sweep nodes of the output mesh (same as input in smooth, rough in rough) for (size_t j = 0; j < mesh->n_nodes; j++) { if ((feenox.pde.progress_ascii == PETSC_TRUE) && (progress++ % step) == 0) { printf(CHAR_PROGRESS_GRADIENT); fflush(stdout); ascii_progress_chars++; } if (feenox.pde.rough == 0) { feenox_call(feenox_problem_gradient_smooth_at_node(&mesh->node[j])); } // we now have the averages, now fill in the functions for (g = 0; g < feenox.pde.dofs; g++) { for (m = 0; m < feenox.pde.dim; m++) { feenox_vector_set(feenox.pde.gradient[g][m]->vector_value, j, gsl_matrix_get(mesh->node[j].dphidx, g, m)); // feenox.pde.delta_gradient[g][m]->data_value[j] = gsl_matrix_get(mesh->node[j].delta_dphidx, g, m); } } if (feenox.pde.gradient_fill_fluxes != NULL) { feenox_call(feenox.pde.gradient_fill_fluxes(mesh, j)); } } // TODO: put 100 as a define or as a variable if (feenox.pde.progress_ascii == PETSC_TRUE) { if (feenox.mpi_size == 1) { while (ascii_progress_chars++ < 100) { printf(CHAR_PROGRESS_GRADIENT); } } if (feenox.mpi_rank == 0) { printf("\n"); fflush(stdout); } } #endif return FEENOX_OK; } int feenox_problem_gradient_compute_at_element(element_t *e, mesh_t *mesh) { unsigned int Q = e->type->gauss[mesh->integration].Q; unsigned int J = e->type->nodes; // if already alloced, no need to realloc if (e->dphidx_node == NULL) { feenox_check_alloc(e->dphidx_node = calloc(J, sizeof(gsl_matrix *))); for (unsigned int j = 0; j < J; j++) { feenox_check_alloc(e->dphidx_node[j] = gsl_matrix_calloc(feenox.pde.dofs, feenox.pde.dim)); } } if (feenox.pde.rough == 0) { // TODO: virtual methods /* if (feenox.pde.gradient_element_weight == gradient_weight_volume) { this->type->element_volume(this); this->weight = this->volume; } else if (fino.gradient_element_weight == gradient_weight_quality) { mesh_compute_quality(mesh, this); this->weight = this->quality; } else if (fino.gradient_element_weight == gradient_weight_volume_times_quality) { this->type->element_volume(this); mesh_compute_quality(mesh, this); this->weight = this->volume*GSL_MAX(this->quality, 1); } else if (fino.gradient_element_weight == gradient_weight_flat) { element->weight = 1; } */ e->gradient_weight = 1; } // if we were asked to extrapolate from gauss, we compute all the nodal values // at once by left-multiplying the gauss values by the (possibly-rectangular) size_t j_global = 0; // feenox.pde.gradient_evaluation = gradient_at_nodes; if (feenox.pde.gradient_evaluation == gradient_gauss_extrapolated && e->type->gauss[mesh->integration].extrap != NULL) { // extrapolation matrix to get the nodal values // TODO: allocate each time or have a holder? gsl_vector *at_gauss = NULL; feenox_check_alloc(at_gauss = gsl_vector_alloc(Q)); gsl_vector *at_nodes = NULL; feenox_check_alloc(at_nodes = gsl_vector_alloc(J)); if (e->dphidx_gauss == NULL) { feenox_check_alloc(e->dphidx_gauss = calloc(Q, sizeof(gsl_matrix *))); } for (unsigned int q = 0; q < Q; q++) { if (e->dphidx_gauss[q] == NULL) { feenox_check_alloc(e->dphidx_gauss[q] = gsl_matrix_calloc(feenox.pde.dofs, feenox.pde.dim)); } else { gsl_matrix_set_zero(e->dphidx_gauss[q]); } gsl_matrix *B = feenox_fem_compute_B_at_gauss_integration(e, q, mesh->integration); // aca habria que hacer una matriz con los phi globales // (de j y g, que de paso no depende de q asi que se podria hacer afuera del for de q) // y ver como calcular la matriz dphidx como producto de B y esta matriz for (unsigned int g = 0; g < feenox.pde.dofs; g++) { for (unsigned int d = 0; d < feenox.pde.dim; d++) { for (unsigned int j = 0; j < e->type->nodes; j++) { j_global = e->node[j]->index_mesh; gsl_matrix_add_to_element(e->dphidx_gauss[q], g, d, gsl_matrix_get(B, d, j) * mesh->node[j_global].phi[g]); } } } } // take the product of the extrapolation matrix times the values at the gauss points for (unsigned int g = 0; g < feenox.pde.dofs; g++) { for (unsigned int d = 0; d < feenox.pde.dim; d++) { for (unsigned int q = 0; q < Q; q++) { gsl_vector_set(at_gauss, q, gsl_matrix_get(e->dphidx_gauss[q], g, d)); } gsl_blas_dgemv(CblasNoTrans, 1.0, e->type->gauss[mesh->integration].extrap, at_gauss, 0.0, at_nodes); for (unsigned int j = 0; j < J; j++) { gsl_matrix_set(e->dphidx_node[j], g, d, gsl_vector_get(at_nodes, j)); } } } gsl_vector_free(at_gauss); gsl_vector_free(at_nodes); } else { for (unsigned int j = 0; j < J; j++) { j_global = e->node[j]->index_mesh; if (e->type->node_parents != NULL && e->type->node_parents[j] != NULL && feenox.pde.gradient_highorder_nodes == gradient_average) { // average of parents node_relative_t *parent = NULL; double den = 0; LL_FOREACH(e->type->node_parents[j], parent) { den += 1.0; for (unsigned int g = 0; g < feenox.pde.dofs; g++) { for (unsigned int d = 0; d < feenox.pde.dim; d++) { gsl_matrix_add_to_element(e->dphidx_node[j], g, d, gsl_matrix_get(e->dphidx_node[parent->index], g, d)); } } } gsl_matrix_scale(e->dphidx_node[j], 1.0/den); } else { // direct evaluation at the nodes gsl_matrix *B = feenox_fem_compute_B(e, e->type->node_coords[j]); // the derivatives of each dof g with respect to the coordinate mas nueve derivadas (o menos) // TODO: como arriba, aunque hay que pelar ojo si hay menos DOFs size_t j_global_prime = 0; for (unsigned int g = 0; g < feenox.pde.dofs; g++) { for (unsigned int d = 0; d < feenox.pde.dim; d++) { for (unsigned int j_local_prime = 0; j_local_prime < J; j_local_prime++) { j_global_prime = e->node[j_local_prime]->index_mesh; gsl_matrix_add_to_element(e->dphidx_node[j], g, d, gsl_matrix_get(B, j_local_prime, d) * mesh->node[j_global_prime].phi[g]); } } } gsl_matrix_free(B); } } } return FEENOX_OK; } int feenox_problem_gradient_smooth_at_node(node_t *node) { double *mean = NULL; double *current = NULL; double delta = 0; double sum_weight = 0; double rel_weight = 0; int found = 0; if (node->dphidx == NULL) { feenox_check_alloc(node->dphidx = gsl_matrix_calloc(feenox.pde.dofs, feenox.pde.dim)); } else { gsl_matrix_set_zero(node->dphidx); } /* if (node->delta_dphidx == NULL) { node->delta_dphidx = gsl_matrix_calloc(feenox.pde.dofs, feenox.pde.dim); } else { gsl_matrix_set_zero(node->delta_dphidx); } */ if (feenox.pde.gradient_alloc_nodal_fluxes != NULL) { feenox_call(feenox.pde.gradient_alloc_nodal_fluxes(node)); } size_t j = 0; unsigned int g = 0; unsigned int m = 0; unsigned int n = 0; element_t *element = NULL; element_ll_t *associated_element = NULL; // gsl_matrix_set_zero(feenox.pde.m2); LL_FOREACH(node->element_list, associated_element) { element = associated_element->element; if (element->dphidx_node != NULL) { found = 0; for (j = 0; !found && j < element->type->nodes; j++) { if (element->node[j] == node) { n++; found = 1; sum_weight += element->gradient_weight; rel_weight = element->gradient_weight / sum_weight; // derivative and uncertainties according to weldford for (g = 0; g < feenox.pde.dofs; g++) { for (m = 0; m < feenox.pde.dim; m++) { mean = gsl_matrix_ptr(node->dphidx, g, m); current = gsl_matrix_ptr(element->dphidx_node[j], g, m); delta = *current - *mean; *mean += rel_weight * delta; // gsl_matrix_add_to_element(feenox.pde.m2, g, m, element->gradient_weight * delta * ((*current)-(*mean))); // gsl_matrix_set(node->delta_dphidx, g, m, sqrt(gsl_matrix_get(feenox.pde.m2, g, m)/sum_weight)); } } if (feenox.pde.gradient_add_elemental_contribution_to_node != NULL) { feenox_call(feenox.pde.gradient_add_elemental_contribution_to_node(node, element, j, rel_weight)); } } } } } return FEENOX_OK; } feenox-1.1/src/pdes/modal/0000755000175000017500000000000014773607300012465 500000000000000feenox-1.1/src/pdes/modal/elastic-isotropic.c0000644000175000017500000000346514773607165016227 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox elastic isotropic mechanical material * * Copyright (C) 2021-2023 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "modal.h" int feenox_problem_build_compute_modal_C_elastic_isotropic(const double *x, material_t *material) { double E = modal.E.eval(&modal.E, x, material); double nu = modal.nu.eval(&modal.nu, x, material); double lambda = E*nu/((1+nu)*(1-2*nu)); double mu = 0.5*E/(1+nu); double lambda2mu = lambda + 2*mu; gsl_matrix_set(modal.C, 0, 0, lambda2mu); gsl_matrix_set(modal.C, 0, 1, lambda); gsl_matrix_set(modal.C, 0, 2, lambda); gsl_matrix_set(modal.C, 1, 0, lambda); gsl_matrix_set(modal.C, 1, 1, lambda2mu); gsl_matrix_set(modal.C, 1, 2, lambda); gsl_matrix_set(modal.C, 2, 0, lambda); gsl_matrix_set(modal.C, 2, 1, lambda); gsl_matrix_set(modal.C, 2, 2, lambda2mu); gsl_matrix_set(modal.C, 3, 3, mu); gsl_matrix_set(modal.C, 4, 4, mu); gsl_matrix_set(modal.C, 5, 5, mu); return FEENOX_OK; } feenox-1.1/src/pdes/modal/parser.c0000644000175000017500000000544714773607165014070 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX parser for modal-specific keywords * * Copyright (C) 2023 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms "of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "../../parser/parser.h" #include "modal.h" int feenox_problem_parse_problem_modal(const char *token) { ///kw_pde+PROBLEM+detail * `modal` computes the natural mechanical frequencies and oscillation modes. #ifndef HAVE_SLEPC feenox_push_error_message("modal problems need a FeenoX binary linked against SLEPc."); return FEENOX_ERROR; #endif if (token != NULL) { if (strcasecmp(token, "plane_stress") == 0) { modal.variant = variant_plane_stress; } else if (strcasecmp(token, "plane_strain") == 0) { modal.variant = variant_plane_strain; } else { feenox_push_error_message("undefined keyword '%s'", token); return FEENOX_ERROR; } } else { // if token is NULL we have to do the parse-time initialization feenox_call(feenox_problem_parse_time_init_modal()); } return FEENOX_OK; } int feenox_problem_parse_write_post_modal(mesh_write_t *mesh_write, const char *token) { #ifdef HAVE_SLEPC if (strcmp(token, "all") == 0) { char *tokens[3] = {NULL, NULL, NULL}; for (unsigned int i = 0; i < feenox.pde.nev; i++) { for (unsigned int g = 0; g < 3; g++) { if (g < feenox.pde.dofs) { if (asprintf(&tokens[g], "%s%d", feenox.pde.unknown_name[g], i+1) <= 0) { return FEENOX_ERROR; } } else { tokens[g] = strdup("0"); } } char *mode_name = NULL; if (asprintf(&mode_name, "mode%d", i+1) <= 0) { return FEENOX_ERROR; } feenox_call(feenox_add_post_field(mesh_write, 3, tokens, mode_name, field_location_nodes)); feenox_free(mode_name); for (unsigned int g = 0; g < 3; g++) { feenox_free(tokens[g]); } } } else { feenox_push_error_message("undefined keyword '%s' for modal WRITE_RESULTS", token); return FEENOX_ERROR; } #endif return FEENOX_OK; } feenox-1.1/src/pdes/modal/elastic-orthotropic.c0000644000175000017500000001062214773607165016561 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox elastic orthotropic mechanical material * * Copyright (C) 2023 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "modal.h" int feenox_problem_build_compute_modal_C_elastic_orthotropic(const double *x, material_t *material) { // TODO: check ranges of validity // E > 0 // G > 0 // | nu_ij | < sqrt(E_i/E_j) // 1 - nu12*nu21 - nu23*nu32 - nu31*nu13 - 2*nu21*nu32*nu13 > 0 double E_x = modal.E_x.eval(&modal.E_x, x, material); double E_y = modal.E_y.eval(&modal.E_y, x, material); double E_z = modal.E_z.eval(&modal.E_z, x, material); // TODO: handle engineering nu12,nu23 and nu13 (instead of nu31) double nu_xy = modal.nu_xy.eval(&modal.nu_xy, x, material); double nu_yz = modal.nu_yz.eval(&modal.nu_yz, x, material); double nu_zx = modal.nu_zx.eval(&modal.nu_zx, x, material); double G_xy = modal.G_xy.eval(&modal.G_xy, x, material); double G_yz = modal.G_yz.eval(&modal.G_yz, x, material); double G_zx = modal.G_zx.eval(&modal.G_zx, x, material); gsl_matrix *S = NULL; // reduced compliance matrix (only the normal-stress stuff) feenox_check_alloc(S = gsl_matrix_calloc(3, 3)); gsl_matrix *C = NULL; // reduced stiffness matrix feenox_check_alloc(C = gsl_matrix_calloc(3, 3)); // > if you noticed that C is called the stiffness tensor and S is called the compliance // > tensor and wondered about it, this is not a mistake and there is no intention to confuse // > you. It is a long-time convention that cannot be reverted anymore // source: https://www.weizmann.ac.il/chembiophys/bouchbinder/sites/chemphys.bouchbinder/files/uploads/Courses/2016/ta5-linear_elasticity-i.pdf // fill the 3x3 reduced compliance matrix first // [ 1/E1 -nu21/E2 -nu31/E3 ] // [ -nu12/E1 1/E2 -nu32/E3 ] // [ -nu13/E1 -nu23/E2 1/E3 ] gsl_matrix_set(S, 0, 0, 1.0/E_x); gsl_matrix_set(S, 1, 1, 1.0/E_y); gsl_matrix_set(S, 2, 2, 1.0/E_z); // since S is symmetric, // nu21/E2 = nu12/E1 // nu31/E3 = nu13/E1 // nu32/E3 = nu23/E2 // but we ask for nu12, nu23 and nu31 (not nu21, nu32 nor nu13) so we use double minus_nu_xy_over_E_x = -nu_xy/E_x; double minus_nu_zx_over_E_z = -nu_zx/E_z; double minus_nu_yz_over_E_y = -nu_yz/E_y; // to set the off-diagonal (symmetric) entries gsl_matrix_set(S, 0, 1, minus_nu_xy_over_E_x); gsl_matrix_set(S, 1, 0, minus_nu_xy_over_E_x); gsl_matrix_set(S, 0, 2, minus_nu_zx_over_E_z); gsl_matrix_set(S, 2, 0, minus_nu_zx_over_E_z); gsl_matrix_set(S, 1, 2, minus_nu_yz_over_E_y); gsl_matrix_set(S, 2, 1, minus_nu_yz_over_E_y); // compute the stiffness by inverting the 3x3 compliance C = feenox_fem_matrix_invert(S, C); // now fill the full 6x6 C gsl_matrix_set(modal.C, 0, 0, gsl_matrix_get(C, 0, 0)); gsl_matrix_set(modal.C, 0, 1, gsl_matrix_get(C, 0, 1)); gsl_matrix_set(modal.C, 0, 2, gsl_matrix_get(C, 0, 2)); gsl_matrix_set(modal.C, 1, 0, gsl_matrix_get(C, 1, 0)); gsl_matrix_set(modal.C, 1, 1, gsl_matrix_get(C, 1, 1)); gsl_matrix_set(modal.C, 1, 2, gsl_matrix_get(C, 1, 2)); gsl_matrix_set(modal.C, 2, 0, gsl_matrix_get(C, 2, 0)); gsl_matrix_set(modal.C, 2, 1, gsl_matrix_get(C, 2, 1)); gsl_matrix_set(modal.C, 2, 2, gsl_matrix_get(C, 2, 2)); // the following subscripts have to match rows 3-5 of modal.B // note that this is not voigt notation! that would be // xx,yy,zz,yz,xz,xy and we use xx,yy,zz,xy,yz,zx gsl_matrix_set(modal.C, 3, 3, G_xy); gsl_matrix_set(modal.C, 4, 4, G_yz); gsl_matrix_set(modal.C, 5, 5, G_zx); gsl_matrix_free(C); gsl_matrix_free(S); return FEENOX_OK; } feenox-1.1/src/pdes/modal/post.c0000644000175000017500000001067514773607165013560 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for modal analysis: post * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "modal.h" int feenox_problem_solve_post_modal(void) { #ifdef HAVE_SLEPC if (modal.f->used || modal.omega->used) { double omega = 0; for (unsigned int i = 0; i < feenox.pde.nev; i++) { if (feenox.pde.eigen_formulation == eigen_formulation_omega) { omega = sqrt(feenox.pde.eigenvalue[i]); } else { omega = 1.0/sqrt(feenox.pde.eigenvalue[i]); } feenox_call(feenox_vector_set(modal.omega, i, omega)); // convert it to cycles per time feenox_call(feenox_vector_set(modal.f, i, omega/(2*M_PI))); } } if (modal.M_T->used || modal.m->used || modal.L->used || modal.Gamma->used || modal.mu->used || modal.Mu->used) { Vec one = NULL; petsc_call(VecDuplicate(feenox.pde.phi, &one)); petsc_call(VecSet(one, 1.0)); Vec Mone = NULL; petsc_call(VecDuplicate(feenox.pde.phi, &Mone)); petsc_call(MatMult(feenox.pde.M, one, Mone)); // phi depends on i, so here we allocate but fill it below Vec Mphi = NULL; petsc_call(VecDuplicate(feenox.pde.phi, &Mphi)); // total mass (scalar) PetscScalar oneMone = 0; petsc_call(VecDot(one, Mone, &oneMone)); feenox_var_value(modal.M_T) = oneMone/(PetscScalar)feenox.pde.dofs; // accumulator PetscScalar Mu = 0; // TODO: this is pretty inefficient PetscScalar norm = 0; PetscScalar mu = 0; PetscScalar phiMphi = 0; PetscScalar phiMone = 0; PetscScalar Gamma = 0; for (unsigned int i = 0; i < feenox.pde.nev; i++) { // normalization works like this: first we normalize to max = 1 // so we can compare the scalar products with the mass matrix // as a norm against 1'*M*1 petsc_call(VecNorm(feenox.pde.eigenvector[i], NORM_INFINITY, &norm)); petsc_call(VecScale(feenox.pde.eigenvector[i], 1.0/norm)); // now we compute the product M*phi which we are going to use // below in 1'*M*phi and in phi'*M*phi petsc_call(MatMult(feenox.pde.M, feenox.pde.eigenvector[i], Mphi)); // modal mass petsc_call(VecDot(feenox.pde.eigenvector[i], Mphi, &phiMphi)); feenox_call(feenox_vector_set(modal.m, i, phiMphi)); // excitation factor petsc_call(VecDot(feenox.pde.eigenvector[i], Mone, &phiMone)); feenox_call(feenox_vector_set(modal.L, i, phiMone)); // participacion factor Gamma = phiMone/(feenox.pde.dofs * phiMphi); feenox_call(feenox_vector_set(modal.Gamma, i, Gamma)); // effective mass mu = gsl_pow_2(phiMone)/(oneMone * phiMphi); feenox_call(feenox_vector_set(modal.mu, i, mu)); // accumulated effective mass Mu += mu; feenox_call(feenox_vector_set(modal.Mu, i, Mu)); // now we have to re-normalize the eigenvector such that the maximum displacement // sqrt(u^2+v^2+w^2) is equal to one and then we multiply by the excitation factor Gamma // TODO: parallel PetscScalar norm = -1; PetscScalar chi = 0; PetscScalar xi = 0; PetscInt index = 0; for (size_t j = 0; j < feenox.pde.spatial_unknowns; j++) { chi = 0; for (unsigned int g = 0; g < feenox.pde.dofs; g++) { index = feenox.pde.mesh->node[j].index_dof[g]; feenox_call(VecGetValues(feenox.pde.eigenvector[i], 1, &index, &xi)); chi += gsl_pow_2(xi); } if (chi > norm) { norm = chi; } } feenox_call(VecScale(feenox.pde.eigenvector[i], Gamma/sqrt(norm))); } } #endif return FEENOX_OK; } feenox-1.1/src/pdes/modal/init.c0000644000175000017500000004102214773607165013524 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for modal analysis: initialization * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "modal.h" modal_t modal; int feenox_problem_parse_time_init_modal(void) { #ifdef HAVE_SLEPC // virtual methods feenox.pde.parse_bc = feenox_problem_bc_parse_modal; feenox.pde.parse_write_results = feenox_problem_parse_write_post_modal; feenox.pde.init_before_run = feenox_problem_init_runtime_modal; feenox.pde.setup_eps = feenox_problem_setup_eps_modal; feenox.pde.setup_ksp = feenox_problem_setup_ksp_modal; feenox.pde.setup_pc = feenox_problem_setup_pc_modal; feenox.pde.element_build_allocate_aux = feenox_problem_build_allocate_aux_modal; feenox.pde.element_build_volumetric_at_gauss = feenox_problem_build_volumetric_gauss_point_modal; feenox.pde.solve_post = feenox_problem_solve_post_modal; // we are FEM feenox.mesh.default_field_location = field_location_nodes; // move symmetry_axis which is a general PDE setting to // the mechanically-particular axisymmetric variant if (feenox.pde.symmetry_axis != symmetry_axis_none) { modal.variant = variant_axisymmetric; } // check consistency of problem type and dimensions if (modal.variant == variant_axisymmetric || modal.variant == variant_plane_stress || modal.variant == variant_plane_strain) { if (feenox.pde.dim != 0) { if (feenox.pde.dim != 2) { feenox_push_error_message("dimension inconsistency, expected 2 dimensions not %d", feenox.pde.dim); return FEENOX_ERROR; } } else { feenox.pde.dim = 2; } if (feenox.pde.dofs != 0) { if (feenox.pde.dofs != 2) { feenox_push_error_message("DOF inconsistency, expected DOFs per node = 2"); return FEENOX_ERROR; } } else { feenox.pde.dofs = 2; } } else { if (feenox.pde.dim == 0) { // default is 3d feenox.pde.dim = 3; } else if (feenox.pde.dim == 1) { feenox_push_error_message("cannot solve 1D modal problems"); return FEENOX_ERROR; } else if (feenox.pde.dim == 2) { feenox_push_error_message("to solve 2D problems give either plane_stress, plane_strain or axisymmetric"); return FEENOX_ERROR; } else if (feenox.pde.dim != 3) { feenox_push_error_message("dimension inconsistency, expected DIM 3 instead of %d", feenox.pde.dim); return FEENOX_ERROR; } feenox.pde.dofs = feenox.pde.dim; } // TODO: custom names feenox_check_alloc(feenox.pde.unknown_name = calloc(feenox.pde.dofs, sizeof(char *))); feenox_check_alloc(feenox.pde.unknown_name[0] = strdup("u")); if (feenox.pde.dofs > 1) { feenox_check_alloc(feenox.pde.unknown_name[1] = strdup("v")); if (feenox.pde.dofs > 2) { feenox_check_alloc(feenox.pde.unknown_name[2] = strdup("w")); } } // if there are no explicit number of eigenvalues we set a non-zero value here if (feenox.pde.nev == 0) { feenox.pde.nev = DEFAULT_MODAL_MODES; } // ------- modal-related vectors & outputs ----------------------------------- ///va+M_T+desc A scalar with the total mass\ $m$ computed from the mass matrix\ $M$ as ///va+M_T+desc ///va+M_T+desc \[ M_T = \frac{1}{n_\text{DOFs}} \cdot \vec{1}^T \cdot M \cdot \vec{1} \] ///va+M_T+desc ///va+M_T+desc where $n_\text{DOFs}$ is the number of degrees of freedoms per node. ///va+M_T+desc Note that this is only approximately equal to the actual mass which is ///va+M_T+desc the integral of the density $\rho(x,y,z)$ over the problem domain. feenox_check_alloc(modal.M_T = feenox_define_variable_get_ptr("M_T")); ///ve+f+desc _Size:_ number of requested modes. ///ve+f+desc _Elements:_ The frequency $f_i$ of the $i$-th mode, in cycles per unit of time. feenox_check_alloc(modal.f = feenox_define_vector_get_ptr("f", feenox.pde.nev)); ///ve+omega+desc _Size:_ number of requested modes. ///ve+omega+desc _Elements:_ The angular frequency $\omega_i$ of the $i$-th mode, in radians per unit of time. feenox_check_alloc(modal.omega = feenox_define_vector_get_ptr("omega", feenox.pde.nev)); ///ve+m+desc _Size:_ number of requested modes. ///ve+m+desc _Elements:_ The generalized modal mass $m_i$ of the $i$-th mode computed as ///ve+m+desc ///ve+m+desc \[ \text{m}_i = \frac{1}{n_\text{DOFs}} \vec{\phi}_i^T \cdot M \cdot \vec{\phi}_i \] ///va+m+desc ///va+m+desc where $n_\text{DOFs}$ is the number of degrees of freedoms per node, $M$ is the mass matrix ///va+m+desc and $\vec{\phi}_i$ is the $i$-th eigenvector normalized such that the largest element is equal to one. feenox_check_alloc(modal.m = feenox_define_vector_get_ptr("m", feenox.pde.nev)); ///ve+L+desc _Size:_ number of requested modes. ///ve+L+desc _Elements:_ The excitation factor $L_i$ of the $i$-th mode computed as ///ve+L+desc ///ve+L+desc \[ L_i = \frac{1}{n_\text{DOFs}} \cdot \vec{\phi}_i^T \cdot M \cdot \vec{1} \] ///va+L+desc ///va+L+desc where $n_\text{DOFs}$ is the number of degrees of freedoms per node, $M$ is the mass matrix ///va+L+desc and $\vec{\phi}_i$ is the $i$-th eigenvector normalized such that the largest element is equal to one. feenox_check_alloc(modal.L = feenox_define_vector_get_ptr("L", feenox.pde.nev)); ///ve+Gamma+desc _Size:_ number of requested modes. ///ve+Gamma+desc _Elements:_ The participation factor $\Gamma_i$ of the $i$-th mode computed as ///ve+Gamma+desc ///ve+Gamma+desc \[ \Gamma_i = \frac{ \vec{\phi}_i^T \cdot M \cdot \vec{1} }{ \vec{\phi}_i^T \cdot M \cdot \vec{\phi}} \] feenox_check_alloc(modal.Gamma = feenox_define_vector_get_ptr("Gamma", feenox.pde.nev)); ///ve+mu+desc _Size:_ number of requested modes. ///ve+mu+desc _Elements:_ The relative effective modal mass $\mu_i$ of the $i$-th mode computed as ///ve+mu+desc ///ve+mu+desc \[ \mu_i = \frac{L_i^2}{M_t \cdot n_\text{DOFs} \cdot m_i} \] ///ve+mu+desc ///ve+mu+desc Note that $\sum_{i=1}^N m_i = 1$, where $N$ is total number of degrees of freedom ($n_\text{DOFs}$ times the number of nodes). feenox_check_alloc(modal.mu = feenox_define_vector_get_ptr("mu", feenox.pde.nev)); ///ve+Mu+desc _Size:_ number of requested modes. ///ve+Mu+desc _Elements:_ The accumulated relative effective modal mass $\Mu_i$ up to the $i$-th mode computed as ///ve+Mu+desc ///ve+Mu+desc \[ \Mu_i = \sum_{j=1}^i \mu_i \] ///ve+Mu+desc ///ve+Mu+desc Note that $\Mu_N = 1$, where $N$ is total number of degrees of freedom ($n_\text{DOFs}$ times the number of nodes). feenox_check_alloc(modal.Mu = feenox_define_vector_get_ptr("Mu", feenox.pde.nev)); // define eigenvectors (we don't know its size yet) feenox_check_alloc(feenox.pde.vectors.phi = calloc(feenox.pde.nev, sizeof(vector_t *)));; for (unsigned int i = 0; i < feenox.pde.nev; i++) { char *modename = NULL; feenox_check_minusone(asprintf(&modename, "phi%u", i+1)); feenox_check_alloc(feenox.pde.vectors.phi[i] = feenox_define_vector_get_ptr(modename, 0)); feenox_free(modename); } // these are for the algebraic expressions in the implicitly-defined BCs // i.e. 0=u*nx+v*ny or 0=u*y-v*x // here they are defined as uppercase because there already exist functions named u, v and w // but the parser changes their case when an implicit BC is read modal.displ_for_bc[0]= feenox_define_variable_get_ptr("U"); modal.displ_for_bc[1]= feenox_define_variable_get_ptr("V"); modal.displ_for_bc[2]= feenox_define_variable_get_ptr("W"); #else feenox_push_error_message("modal problems need a FeenoX binary linked against SLEPc."); return FEENOX_ERROR; #endif return FEENOX_OK; } int feenox_problem_init_runtime_modal(void) { #ifdef HAVE_PETSC feenox.pde.mesh->data_type = data_type_node; feenox.pde.spatial_unknowns = feenox.pde.mesh->n_nodes; // initialize distributions feenox_distribution_define_mandatory(modal, rho, "rho", "density"); // modal.rho.non_uniform = feenox_expression_depends_on_space(modal.rho.dependency_variables); // initialize distributions // first see if we have linear elastic feenox_call(feenox_distribution_init(&modal.E, "E")); // modal.E.non_uniform = feenox_expression_depends_on_space(modal.E.dependency_variables); feenox_call(feenox_distribution_init(&modal.nu, "nu")); // modal.nu.non_uniform = feenox_expression_depends_on_space(modal.nu.dependency_variables); // TODO: allow different volumes to have different material models if (modal.E.defined && modal.nu.defined) { if (modal.E.full == 0) { feenox_push_error_message("Young modulus 'E' is not defined over all volumes"); return FEENOX_ERROR; } if (modal.nu.full == 0) { feenox_push_error_message("Poisson’s ratio 'nu' is not defined over all volumes"); return FEENOX_ERROR; } modal.material_model = material_model_elastic_isotropic; } else if (modal.E.defined) { feenox_push_error_message("Young modulus 'E' defined but Poisson’s ratio 'nu' not defined"); return FEENOX_ERROR; } else if (modal.nu.defined) { feenox_push_error_message("Poisson’s ratio 'nu' defined but Young modulus 'E' not defined"); return FEENOX_ERROR; } // see if there are orthotropic properties feenox_call(feenox_distribution_init(&modal.E_x, "Ex")); if (modal.E_x.defined == 0) { feenox_call(feenox_distribution_init(&modal.E_x, "E_x")); } feenox_call(feenox_distribution_init(&modal.E_y, "Ey")); if (modal.E_y.defined == 0) { feenox_call(feenox_distribution_init(&modal.E_y, "E_y")); } feenox_call(feenox_distribution_init(&modal.E_z, "Ez")); if (modal.E_z.defined == 0) { feenox_call(feenox_distribution_init(&modal.E_z, "E_z")); } feenox_call(feenox_distribution_init(&modal.nu_xy, "nuxy")); if (modal.nu_xy.defined == 0) { feenox_call(feenox_distribution_init(&modal.nu_xy, "nu_xy")); } feenox_call(feenox_distribution_init(&modal.nu_yz, "nuyz")); if (modal.nu_yz.defined == 0) { feenox_call(feenox_distribution_init(&modal.nu_yz, "nu_yz")); } feenox_call(feenox_distribution_init(&modal.nu_zx, "nuzx")); if (modal.nu_zx.defined == 0) { feenox_call(feenox_distribution_init(&modal.nu_zx, "nu_zx")); } feenox_call(feenox_distribution_init(&modal.G_xy, "Gxy")); if (modal.G_xy.defined == 0) { feenox_call(feenox_distribution_init(&modal.G_xy, "G_xy")); } feenox_call(feenox_distribution_init(&modal.G_yz, "Gyz")); if (modal.G_yz.defined == 0) { feenox_call(feenox_distribution_init(&modal.G_yz, "G_yz")); } feenox_call(feenox_distribution_init(&modal.G_zx, "Gzx")); if (modal.G_zx.defined == 0) { feenox_call(feenox_distribution_init(&modal.G_zx, "G_zx")); } // check for consistency int n_ortho = modal.E_x.defined + modal.E_y.defined + modal.E_z.defined + modal.nu_xy.defined + modal.nu_yz.defined + modal.nu_zx.defined + modal.G_xy.defined + modal.G_yz.defined + modal.G_zx.defined; if (n_ortho > 0) { if (modal.material_model == material_model_elastic_isotropic) { feenox_push_error_message("both isotropic and orthotropic properties given, choose one"); return FEENOX_ERROR; } else if (n_ortho < 9) { feenox_push_error_message("%d orthotropic properties missing", 9-n_ortho); return FEENOX_ERROR; } else if (modal.material_model == material_model_unknown) { modal.material_model = material_model_elastic_orthotropic; } } // set material model virtual methods switch (modal.material_model) { case material_model_elastic_isotropic: modal.uniform_C = ((modal.E.non_uniform == 0) && (modal.nu.non_uniform == 0)); if (modal.variant == variant_full) { modal.compute_C = feenox_problem_build_compute_modal_C_elastic_isotropic; } else if (modal.variant == variant_plane_stress) { modal.compute_C = feenox_problem_build_compute_modal_C_elastic_plane_stress; } else if (modal.variant == variant_plane_strain) { modal.compute_C = feenox_problem_build_compute_modal_C_elastic_plane_strain; } break; case material_model_elastic_orthotropic: if (modal.variant != variant_full) { feenox_push_error_message("elastic orthotropic materials cannot be used in plane stress/strain"); return FEENOX_ERROR; } modal.compute_C = feenox_problem_build_compute_modal_C_elastic_orthotropic; break; default: feenox_push_error_message("unknown material model, usual way to go is to define E and nu"); return FEENOX_ERROR; break; } // size of stress-strain matrix if (modal.variant == variant_full) { modal.stress_strain_size = 6; } else if (modal.variant == variant_axisymmetric) { modal.stress_strain_size = 4; } else if (modal.variant == variant_plane_stress || modal.variant == variant_plane_strain) { modal.stress_strain_size = 3; } else { feenox_push_error_message("internal mismatch, unknown variant"); return FEENOX_ERROR; } // allocate stress-strain objects feenox_check_alloc(modal.C = gsl_matrix_calloc(modal.stress_strain_size, modal.stress_strain_size)); if (modal.uniform_C) { // cache properties feenox_call(modal.compute_C(NULL, NULL)); } feenox.pde.math_type = math_type_eigen; feenox.pde.solve = feenox_problem_solve_slepc_eigen; feenox.pde.has_stiffness = 1; feenox.pde.has_mass = 1; feenox.pde.has_rhs = 0; feenox.pde.has_jacobian_K = 0; feenox.pde.has_jacobian_M = 0; feenox.pde.has_jacobian_b = 0; feenox.pde.has_jacobian = feenox.pde.has_jacobian_K || feenox.pde.has_jacobian_M || feenox.pde.has_jacobian_b; feenox.pde.symmetric_K = 1; feenox.pde.symmetric_M = 1; #endif return FEENOX_OK; } #ifdef HAVE_PETSC int feenox_problem_setup_pc_modal(PC pc) { PCType pc_type = NULL; petsc_call(PCGetType(pc, &pc_type)); if (pc_type == NULL) { // if we don't set the pc type here then we PCFactorSetMatSolverType does not work // xxx LU? petsc_call(PCSetType(pc, feenox.pde.symmetric_K ? PCCHOLESKY : PCLU)); #ifdef PETSC_HAVE_MUMPS petsc_call(PCFactorSetMatSolverType(pc, MATSOLVERMUMPS)); #endif } petsc_call(PCGetType(pc, &pc_type)); if (strcmp(pc_type, PCGAMG) == 0) { if (modal.rigid_body_base == NULL) { feenox_problem_compute_rigid_nullspace(&modal.rigid_body_base); } petsc_call(MatSetNearNullSpace(feenox.pde.K, modal.rigid_body_base)); petsc_call(MatSetNearNullSpace(feenox.pde.M, modal.rigid_body_base)); } return FEENOX_OK; } int feenox_problem_setup_ksp_modal(KSP ksp ) { KSPType ksp_type = NULL; petsc_call(KSPGetType(ksp, &ksp_type)); if (ksp_type == NULL) { // if the user did not choose anything, we default to preonly + direct solver petsc_call(KSPSetType(ksp, KSPPREONLY)); } return FEENOX_OK; } #endif #ifdef HAVE_SLEPC // these two are not int feenox_problem_setup_eps_modal(EPS eps) { // to be able to solve free-body vibrations we have to set a deflation space if (modal.has_dirichlet_bcs == 0) { if (feenox.pde.eigen_formulation == eigen_formulation_undefined) { feenox.pde.eigen_formulation = eigen_formulation_omega; } else if (feenox.pde.eigen_formulation == eigen_formulation_lambda) { feenox_push_error_message("free-free modal problems do not work with the lambda formulation"); return FEENOX_ERROR; } if (modal.rigid_body_base == NULL) { feenox_problem_compute_rigid_nullspace(&modal.rigid_body_base); } // getvecs below needs a const vec pointer PetscBool has_const; PetscInt n; const Vec *vecs; Vec rigid[6]; petsc_call(MatNullSpaceGetVecs(modal.rigid_body_base, &has_const, &n, &vecs)); // but eps needs modifiable vectors so we copy them for (unsigned int k = 0; k < n; k++) { petsc_call(VecDuplicate(vecs[k], &rigid[k])); petsc_call(VecCopy(vecs[k], rigid[k])); } petsc_call(EPSSetDeflationSpace(eps, n, rigid)); } return FEENOX_OK; } #endif feenox-1.1/src/pdes/modal/elastic-plane-stress.c0000644000175000017500000000275514773607165016635 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox elastic isotropic plane-stress mechanical material * * Copyright (C) 2021-2022 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "modal.h" int feenox_problem_build_compute_modal_C_elastic_plane_stress(const double *x, material_t *material) { double E = modal.E.eval(&modal.E, x, material); double nu = modal.nu.eval(&modal.nu, x, material); double c1 = E/(1-nu*nu); double c2 = nu * c1; gsl_matrix_set(modal.C, 0, 0, c1); gsl_matrix_set(modal.C, 0, 1, c2); gsl_matrix_set(modal.C, 1, 0, c2); gsl_matrix_set(modal.C, 1, 1, c1); gsl_matrix_set(modal.C, 2, 2, c1*0.5*(1-nu)); return FEENOX_OK; } feenox-1.1/src/pdes/modal/bulk.c0000644000175000017500000000772414773607165013531 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for modal analysis: bulk elements * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "modal.h" int feenox_problem_build_allocate_aux_modal(unsigned int n_nodes) { modal.n_nodes = n_nodes; if (modal.B != NULL) { gsl_matrix_free(modal.B); } feenox_check_alloc(modal.B = gsl_matrix_calloc(modal.stress_strain_size, feenox.pde.dofs * modal.n_nodes)); if (modal.CB != NULL) { gsl_matrix_free(modal.CB); } feenox_check_alloc(modal.CB = gsl_matrix_calloc(modal.stress_strain_size, feenox.pde.dofs * modal.n_nodes)); return FEENOX_OK; } int feenox_problem_build_volumetric_gauss_point_modal(element_t *e, unsigned int q) { #ifdef HAVE_PETSC // material stress-strain relationship // TODO: see how to optimize uniform properties double *x = feenox_fem_compute_x_at_gauss(e, q, feenox.pde.mesh->integration); modal.compute_C(x, feenox_fem_get_material(e)); // TODO: unify with mechanical! gsl_matrix *dhdx = feenox_fem_compute_B_at_gauss_integration(e, q, feenox.pde.mesh->integration); for (unsigned int j = 0; j < modal.n_nodes; j++) { // TODO: virtual methods? they cannot be inlined... if (modal.variant == variant_full) { gsl_matrix_set(modal.B, 0, 3*j+0, gsl_matrix_get(dhdx, 0, j)); gsl_matrix_set(modal.B, 1, 3*j+1, gsl_matrix_get(dhdx, 1, j)); gsl_matrix_set(modal.B, 2, 3*j+2, gsl_matrix_get(dhdx, 2, j)); gsl_matrix_set(modal.B, 3, 3*j+0, gsl_matrix_get(dhdx, 1, j)); gsl_matrix_set(modal.B, 3, 3*j+1, gsl_matrix_get(dhdx, 0, j)); gsl_matrix_set(modal.B, 4, 3*j+1, gsl_matrix_get(dhdx, 2, j)); gsl_matrix_set(modal.B, 4, 3*j+2, gsl_matrix_get(dhdx, 1, j)); gsl_matrix_set(modal.B, 5, 3*j+0, gsl_matrix_get(dhdx, 2, j)); gsl_matrix_set(modal.B, 5, 3*j+2, gsl_matrix_get(dhdx, 0, j)); } else if (modal.variant == variant_axisymmetric) { feenox_push_error_message("axisymmetric still not implemented"); return FEENOX_ERROR; } else if (modal.variant == variant_plane_stress || modal.variant == variant_plane_strain) { // plane stress and plane strain are the same // see equation 14.18 IFEM CH.14 sec 14.4.1 pag 14-11 gsl_matrix_set(modal.B, 0, 2*j+0, gsl_matrix_get(dhdx, 0, j)); gsl_matrix_set(modal.B, 1, 2*j+1, gsl_matrix_get(dhdx, 1, j)); gsl_matrix_set(modal.B, 2, 2*j+0, gsl_matrix_get(dhdx, 1, j)); gsl_matrix_set(modal.B, 2, 2*j+1, gsl_matrix_get(dhdx, 0, j)); } else { return FEENOX_ERROR; } } // wdet double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, feenox.pde.mesh->integration); // elemental stiffness B'*C*B feenox_call(feenox_blas_BtCB_accum(modal.B, modal.C, modal.CB, wdet, feenox.fem.Ki)); // elemental mass H'*rho*H // TODO: see how to optimize uniform properties modal.rho.eval(&modal.rho, x, feenox_fem_get_material(e)); gsl_matrix *H_Gc = feenox_fem_compute_H_Gc_at_gauss(e, q, feenox.pde.mesh->integration); feenox_call(feenox_blas_BtB_accum(H_Gc, wdet * modal.rho.value, feenox.fem.Mi)); #endif return FEENOX_OK; } feenox-1.1/src/pdes/modal/methods.h0000644000175000017500000000541214773607165014234 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for modal analysis: virtual methods * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef MODAL_METHODS_H #define MODAL_METHODS_H // modal/parser.c extern int feenox_problem_parse_problem_modal(const char *token); extern int feenox_problem_parse_write_post_modal(mesh_write_t *mesh_write, const char *token); // modal/init.c extern int feenox_problem_parse_time_init_modal(void); extern int feenox_problem_init_runtime_modal(void); #ifdef HAVE_PETSC extern int feenox_problem_setup_pc_modal(PC pc); extern int feenox_problem_setup_ksp_modal(KSP ksp); #endif #ifdef HAVE_SLEPC extern int feenox_problem_setup_eps_modal(EPS eps); #endif // modal/bulk.c extern int feenox_problem_build_allocate_aux_modal(unsigned int J); extern int feenox_problem_build_volumetric_gauss_point_modal(element_t *element, unsigned int q); // modal/bc.c extern int feenox_problem_bc_parse_modal(bc_data_t *bc_data, const char *lhs, char *rhs); extern int feenox_problem_bc_set_modal_displacement(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_modal_symmetry(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_modal_radial(bc_data_t *bc_data, element_t *e, size_t j_global); extern int feenox_problem_bc_set_modal_multifreedom(bc_data_t *bc_data, element_t *e, size_t j_global); extern double feenox_modal_gsl_function_of_uvw(double x, void *params); // material models extern int feenox_problem_build_compute_modal_C_elastic_isotropic(const double *x, material_t *material); extern int feenox_problem_build_compute_modal_C_elastic_plane_stress(const double *x, material_t *material); extern int feenox_problem_build_compute_modal_C_elastic_plane_strain(const double *x, material_t *material); extern int feenox_problem_build_compute_modal_C_elastic_orthotropic(const double *x, material_t *material); // modal/post.c extern int feenox_problem_solve_post_modal(void); #endif feenox-1.1/src/pdes/modal/modal.h0000644000175000017500000000613314773607165013666 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for modal analysis: global header * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef MODAL_H #define MODAL_H #define DEFAULT_MODAL_MODES 10 #define BC_TYPE_MECHANICAL_UNDEFINED 0 #define BC_TYPE_MECHANICAL_DISPLACEMENT 1 #define BC_TYPE_MECHANICAL_TANGENTIAL_SYMMETRY 2 #define BC_TYPE_MECHANICAL_RADIAL_SYMMETRY 3 #define BC_TYPE_MECHANICAL_MULTIDOF_EXPRESSION 4 typedef struct modal_t modal_t; struct modal_t { enum { variant_full, variant_plane_stress, variant_plane_strain, variant_axisymmetric, } variant; // TODO: have a "mixed" material model where each volume has its own model enum { material_model_unknown, material_model_elastic_isotropic, material_model_elastic_orthotropic, } material_model; int has_dirichlet_bcs; distribution_t rho; // density // isotropic properties distribution_t E; // Young's modulus distribution_t nu; // Poisson's ratio // orthotropic properties distribution_t E_x, E_y, E_z; // Young's moduli distribution_t nu_xy, nu_yz, nu_zx; // Poisson's ratios distribution_t G_xy, G_yz, G_zx; // Shear moduli distribution_t alpha_x, alpha_y, alpha_z; // (mean) thermal expansion coefficient int space_E; int space_nu; int space_rho; // flags to speed up things int uniform_C; int constant_C; int uniform_expansion; int constant_expansion; unsigned int n_nodes; unsigned int stress_strain_size; // holder for the rigid-body displacements #ifdef HAVE_PETSC MatNullSpace rigid_body_base; #endif int (*compute_C)(const double *x, material_t *material); // auxiliary intermediate matrices gsl_matrix *C; // stress-strain matrix, 6x6 for 3d gsl_matrix *B; // strain-displacement matrix, 6x(3*n_nodes) for 3d gsl_matrix *CB; // product of C times B, 6x(3*n_nodes) for 3d gsl_vector *et; // thermal strain vector, size 6 for 3d gsl_vector *Cet; // product of C times et, size 6 for 3d var_t *M_T; vector_t *f; vector_t *omega; vector_t *m; vector_t *L; vector_t *Gamma; vector_t *mu; vector_t *Mu; // for implicit multi-dof BCs var_t *displ_for_bc[3]; }; extern modal_t modal; #endif /* MODAL_H */ feenox-1.1/src/pdes/modal/elastic-plane-strain.c0000644000175000017500000000306114773607165016601 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox elastic isotropic plane-strain mechanical material * * Copyright (C) 2021-2023 Jeremy Theler * * This file is part of Feenox . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "modal.h" int feenox_problem_build_compute_modal_C_elastic_plane_strain(const double *x, material_t *material) { double E = modal.E.eval(&modal.E, x, material); double nu = modal.nu.eval(&modal.nu, x, material); double lambda = E*nu/((1+nu)*(1-2*nu)); double mu = 0.5*E/(1+nu); double lambda2mu = lambda + 2*mu; gsl_matrix_set(modal.C, 0, 0, lambda2mu); gsl_matrix_set(modal.C, 0, 1, lambda); gsl_matrix_set(modal.C, 1, 0, lambda); gsl_matrix_set(modal.C, 1, 1, lambda2mu); gsl_matrix_set(modal.C, 2, 2, mu); return FEENOX_OK; } feenox-1.1/src/pdes/modal/bc.c0000644000175000017500000002252314773607165013152 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's routines for modal analysis: boundary conditions * * Copyright (C) 2021-2023 Jeremy Theler * * This file is part of FeenoX . * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "modal.h" int feenox_problem_bc_parse_modal(bc_data_t *bc_data, const char *lhs, char *rhs) { // TODO: document BCs with triple comments if (strcmp(lhs, "fixed") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_DISPLACEMENT; bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_modal_displacement; bc_data->dof = -1; modal.has_dirichlet_bcs = 1; } else if (strcmp(lhs, "u") == 0 || strcmp(lhs, "u_x") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_DISPLACEMENT; bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_modal_displacement; bc_data->dof = 0; modal.has_dirichlet_bcs = 1; } else if (strcmp(lhs, "v") == 0 || strcmp(lhs, "u_y") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_DISPLACEMENT; bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_modal_displacement; bc_data->dof = 1; modal.has_dirichlet_bcs = 1; if (feenox.pde.dofs < 1) { feenox_push_error_message("cannot set u (displacement in y) with DOFs < 2"); return FEENOX_ERROR; } } else if (strcmp(lhs, "w") == 0 || strcmp(lhs, "u_z") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_DISPLACEMENT; bc_data->type_math = bc_type_math_dirichlet; bc_data->set_essential = feenox_problem_bc_set_modal_displacement; bc_data->dof = 2; modal.has_dirichlet_bcs = 1; if (feenox.pde.dofs < 2) { feenox_push_error_message("cannot set w (displacement in z) with DOFs < 3"); return FEENOX_ERROR; } } else if (strcmp(lhs, "symmetry") == 0 || strcmp(lhs, "tangential") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_TANGENTIAL_SYMMETRY; bc_data->type_math = bc_type_math_multifreedom; bc_data->set_essential = feenox_problem_bc_set_modal_symmetry; } else if (strcmp(lhs, "radial") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_RADIAL_SYMMETRY; bc_data->type_math = bc_type_math_multifreedom; bc_data->set_essential = feenox_problem_bc_set_modal_radial; // TODO: x0, y0 and z0 } else if (strcmp(lhs, "0") == 0) { bc_data->type_phys = BC_TYPE_MECHANICAL_MULTIDOF_EXPRESSION; bc_data->type_math = bc_type_math_multifreedom; bc_data->set_essential = feenox_problem_bc_set_modal_multifreedom; // trick: the idea is that the user might write an expression of space // x,y,z but also maybe of u,v y w. However, u,v,w are functinos and not variables! // what we do is to define variables named U,V,W and string-replace u,v,w -> U,V,W // in the entered expression // TODO: there should be a separator (i.e. operator) before and after char *s = rhs; while (*s != '\0') { if (*s == 'u') { *s = 'U'; } else if (*s == 'v') { *s = 'V'; } else if (*s == 'w') { *s = 'W'; } s++; } } else { feenox_push_error_message("unknown modal boundary condition '%s'", lhs); return FEENOX_ERROR; } if (rhs != NULL && strcmp(rhs, "0") != 0) { feenox_push_error_message("boundary conditions in modal have to be homogeneous not '%s'", rhs); return FEENOX_ERROR; } return FEENOX_OK; } // this virtual method fills in the dirichlet indexes and values with bc_data int feenox_problem_bc_set_modal_displacement(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC if (this->dof != -1) { // only one dof feenox_call(feenox_problem_dirichlet_add(j_global, this->dof, feenox_expression_eval(&this->expr))); } else { // -1 means all dofs (and the only possibility is to have all them equal to zero) feenox_call(feenox_problem_dirichlet_add(j_global, 0, 0)); if (feenox.pde.dofs > 1) { feenox_call(feenox_problem_dirichlet_add(j_global, 1, 0)); if (feenox.pde.dofs > 2) { feenox_call(feenox_problem_dirichlet_add(j_global, 2, 0)); } } } #endif return FEENOX_OK; } int feenox_problem_bc_set_modal_symmetry(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC // outward normal (smoothed over all elements on the physical group of the BC) // TODO: choose to smooth or to use the local one PetscScalar normal[3] = {0, 0, 0}; PetscScalar n_element[3] = {0, 0, 0}; element_ll_t *element_item = NULL; LL_FOREACH(feenox.pde.mesh->node[j_global].element_list, element_item) { element_t *e_prime = element_item->element; if (e_prime != NULL && e_prime->type->dim == (feenox.pde.dim-1) && e_prime->physical_group == e->physical_group) { feenox_call(feenox_mesh_compute_outward_normal(element_item->element, n_element)); normal[0] += n_element[0]; normal[1] += n_element[1]; normal[2] += n_element[2]; } } // feenox_call(feenox_mesh_compute_outward_normal(element, normal)); int coordinate_direction = -1; double norm = gsl_hypot3(normal[0], normal[1], normal[2]); if (feenox_likely(norm != 0)) { // if the outward normal coincides with one of the three axes, we can get away with a regular dirichlet BC for (int g = 0; g < 3; g++) { normal[g] /= norm; if (fabs(normal[g]) > (1-1e-4)) { coordinate_direction = g; } } } else { feenox_push_error_message("outward normal has zero norm"); return FEENOX_ERROR; } // if the condition results in a direction normal to one of the three coordinate planes // then we set a traditional dirichlet bc (i.e. u=0 or v=0 or w=0) // otherwise we need a generic multifreedom if (coordinate_direction != -1) { feenox_call(feenox_problem_dirichlet_add(j_global, coordinate_direction, 0)); } else { feenox_call(feenox_problem_multifreedom_add(j_global, normal)); } #endif return FEENOX_OK; } int feenox_problem_bc_set_modal_radial(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC double x[3] = {0,0,0}; double eps = 1e-2; if (e->physical_group->volume == 0) { feenox_call(feenox_physical_group_compute_volume(e->physical_group, feenox.pde.mesh)); } // TODO! read center of the radial condition for (int g = 0; g < 3; g++) { // x[g] = feenox.pde.mesh->node[node_global_index].x[g] - ((bc_data->expr[g].items == NULL) ? element->physical_entity->cog[d] : feenox_expression_eval(bc_data->expr[g])); x[g] = feenox.pde.mesh->node[j_global].x[g] - e->physical_group->cog[g]; } double coefficients[3] = {0,0,0}; // x-y if (fabs(x[0]) > eps && fabs(x[1]) > eps) { coefficients[0] = +x[1]; coefficients[1] = -x[0]; coefficients[2] = 0; feenox_call(feenox_problem_multifreedom_add(j_global, coefficients)); } // x-z if (fabs(x[0]) > eps && fabs(x[2]) > eps) { coefficients[0] = +x[2]; coefficients[1] = 0; coefficients[2] = -x[0]; feenox_call(feenox_problem_multifreedom_add(j_global, coefficients)); } // y-z if (fabs(x[1]) > eps && fabs(x[2]) > eps) { coefficients[0] = 0; coefficients[1] = +x[2]; coefficients[2] = -x[1]; feenox_call(feenox_problem_multifreedom_add(j_global, coefficients)); } #endif return FEENOX_OK; } typedef struct { expr_t *expr; int dof; } feenox_gsl_function_of_uvw_params_t; // this virtual method fills in the dirichlet indexes and values with bc_data int feenox_problem_bc_set_modal_multifreedom(bc_data_t *this, element_t *e, size_t j_global) { #ifdef HAVE_PETSC feenox_gsl_function_of_uvw_params_t params = { &this->expr, -1 }; gsl_function F = {feenox_modal_gsl_function_of_uvw, ¶ms}; double coefficients[3] = {0, 0, 0}; // TODO: choose double h = 1e-5; double result = 0; double abserr = 0; for (int g = 0; g < 3; g++) { params.dof = g; gsl_deriv_central(&F, 0, h, &result, &abserr); coefficients[g] = -result; } // TODO: non-homogeneous RHS feenox_call(feenox_problem_multifreedom_add(j_global, coefficients)); #endif return FEENOX_OK; } // wrapper to compute derivatives with GSL double feenox_modal_gsl_function_of_uvw(double x, void *params) { feenox_gsl_function_of_uvw_params_t *p = (feenox_gsl_function_of_uvw_params_t *)params; feenox_var_value(modal.displ_for_bc[0]) = 0; feenox_var_value(modal.displ_for_bc[1]) = 0; feenox_var_value(modal.displ_for_bc[2]) = 0; feenox_var_value(modal.displ_for_bc[p->dof]) = x; double y = feenox_expression_eval(p->expr); if (gsl_isnan(y) || gsl_isinf(y)) { feenox_nan_error(); } return y; } feenox-1.1/src/feenox.h0000644000175000017500000022635314773607165012037 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX common framework header * * Copyright (C) 2009--2025 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef FEENOX_H #define FEENOX_H #ifdef HAVE_CONFIG_H #include #endif // for POSIX in C99 #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #if defined(HAVE___BUILTIN_EXPECT) # define feenox_unlikely(cond) __builtin_expect(!!(cond),0) # define feenox_likely(cond) __builtin_expect(!!(cond),1) #else # define feenox_unlikely(cond) (cond) # define feenox_likely(cond) (cond) #endif // for inlining as much as possible GSL #define HAVE_INLINE #define GSL_RANGE_CHECK_OFF // we need all the includes here so they all follow the inline directive above #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_SUNDIALS #include // #include #include #include #include #include #include #ifndef sunrealtype #define sunrealty realtype #endif #endif // petsc complains if its headers are included from c++ within extern C #ifdef HAVE_PETSC #ifdef __cplusplus extern "C++" { #endif // C++ #include #include #include #include #include #ifdef HAVE_SLEPC #include #endif // HAVE_SLEPC #ifdef __cplusplus } #endif // C++ // PETSC_NULL is deprecated but it was not defined before 3.16 #if PETSC_VERSION_LT(3,16,0) #define PETSC_NULLPTR PETSC_NULL #endif #endif // HAVE_PETSC #include "contrib/uthash.h" #include "contrib/utlist.h" #include "contrib/kdtree.h" #define FEENOX_OK 0 #define FEENOX_ERROR 1 #define FEENOX_UNHANDLED 2 #define FEENOX_VECTOR_INITIAL 0 #define FEENOX_VECTOR_NO_INITIAL 1 #define BUFFER_TOKEN_SIZE 256 #define BUFFER_LINE_SIZE 4096 // number of internal functions, functional and vector functions #define N_BUILTIN_FUNCTIONS 70 #define N_BUILTIN_FUNCTIONALS 8 #define N_BUILTIN_VECTOR_FUNCTIONS 8 // no son enums porque hacemos operaciones con las mascaras de abajo #define EXPR_UNDEFINED 0 #define EXPR_OPERATOR 1 #define EXPR_CONSTANT 2 #define EXPR_VARIABLE 3 #define EXPR_VECTOR 4 #define EXPR_MATRIX 5 #define EXPR_BUILTIN_FUNCTION 6 #define EXPR_BUILTIN_VECTORFUNCTION 7 #define EXPR_BUILTIN_FUNCTIONAL 8 #define EXPR_FUNCTION 9 #define EXPR_BASICTYPE_MASK 1023 #define EXPR_CURRENT 0 #define EXPR_INITIAL_TRANSIENT 2048 #define EXPR_INITIAL_STATIC 4096 // constants for custom error handling #define ON_ERROR_NO_QUIT 1 #define ON_ERROR_NO_REPORT 2 // type of phase space componentes (the values come from SUNDIALs, do not change!) #define DAE_ALGEBRAIC 0.0 #define DAE_DIFFERENTIAL 1.0 // reasonable defaults #define DEFAULT_DT 1.0/16.0 #define DEFAULT_DAE_RTOL 1e-6 #define DEFAULT_RANDOM_METHOD gsl_rng_mt19937 #define DEFAULT_PRINT_FORMAT "%g" #define DEFAULT_PRINT_SEPARATOR "\t" #define CHAR_PROGRESS_BUILD "." #define CHAR_PROGRESS_SOLVE "-" #define CHAR_PROGRESS_GRADIENT "=" #define DEFAULT_ROOT_MAX_TER 1024 #define DEFAULT_ROOT_TOLERANCE (9.765625e-4) // (1/2)^-10 #define DEFAULT_INTEGRATION_INTERVALS 1024 #define DEFAULT_INTEGRATION_TOLERANCE (9.765625e-4) // (1/2)^-10 #define DEFAULT_INTEGRATION_KEY GSL_INTEG_GAUSS31 #define DEFAULT_DERIVATIVE_STEP (9.765625e-4) // (1/2)^-10 #define DEFAULT_CONDITION_THRESHOLD (9.765625e-4) // (1/2)^-10 #define DEFAULT_FIT_MAX_ITER 100 #define DEFAULT_FIT_XTOL 1e-8 #define DEFAULT_FIT_GTOL 1e-8 #define DEFAULT_FIT_FTOL 0.0 #define DEFAULT_SOLVE_METHOD gsl_multiroot_fsolver_dnewton #define DEFAULT_SOLVE_EPSREL 0 // zero means do not look for deltas in derivatives #define DEFAULT_SOLVE_EPSABS 1e-6 #define DEFAULT_SOLVE_MAX_ITER 128 #define MINMAX_ARGS 10 // zero & infinite #define ZERO (8.881784197001252323389053344727e-16) // (1/2)^-50 #define INFTY (1125899906842624.0) // 2^50 #define MESH_INF 1e22 #define MESH_TOL 1e-6 #define MESH_FAILED_INTERPOLATION_FACTOR 1.5 #define DEFAULT_INTERPOLATION (*gsl_interp_linear) #define DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD 9.5367431640625e-07 // (1/2)^-20 #define DEFAULT_SHEPARD_RADIUS 1.0 #define DEFAULT_SHEPARD_EXPONENT 2 // these are Gmsh's nomenclature, we then convert to vtk/frd with "tables" #define ELEMENT_TYPE_UNDEFINED 0 #define ELEMENT_TYPE_LINE2 1 #define ELEMENT_TYPE_TRIANGLE3 2 #define ELEMENT_TYPE_QUADRANGLE4 3 #define ELEMENT_TYPE_TETRAHEDRON4 4 #define ELEMENT_TYPE_HEXAHEDRON8 5 #define ELEMENT_TYPE_PRISM6 6 #define ELEMENT_TYPE_PYRAMID5 7 #define ELEMENT_TYPE_LINE3 8 #define ELEMENT_TYPE_TRIANGLE6 9 #define ELEMENT_TYPE_QUADRANGLE9 10 #define ELEMENT_TYPE_TETRAHEDRON10 11 #define ELEMENT_TYPE_HEXAHEDRON27 12 #define ELEMENT_TYPE_POINT1 15 #define ELEMENT_TYPE_QUADRANGLE8 16 #define ELEMENT_TYPE_HEXAHEDRON20 17 #define ELEMENT_TYPE_PRISM15 18 #define NUMBER_ELEMENT_TYPE 19 #define M_SQRT5 2.23606797749978969640917366873127623544061835961152572427089 #define FEENOX_SOLUTION_NOT_GRADIENT 0 #define FEENOX_SOLUTION_GRADIENT 1 #define feenox_distribution_define_mandatory(type, name, quoted_name, description) {\ feenox_call(feenox_distribution_init(&(type.name), quoted_name)); \ if (type.name.defined == 0) { feenox_push_error_message("undefined %s '%s'", description, quoted_name); return FEENOX_ERROR; } \ if (type.name.full == 0) { feenox_push_error_message("%s '%s' is not defined over all volumes", description, quoted_name); return FEENOX_ERROR; } } enum version_type { version_compact, version_copyright, version_info, version_available_pdes, version_elements_info, }; // macro to check error returns in function calls #define feenox_call(function) if (__builtin_expect((function), FEENOX_OK) != FEENOX_OK) return FEENOX_ERROR #define feenox_call_null(function) if (__builtin_expect((function), FEENOX_OK) != FEENOX_OK) return NULL #define feenox_check_null(function) if ((function) == NULL) return FEENOX_ERROR #ifdef HAVE_SUNDIALS #define ida_call(function) if ((err = __builtin_expect(!!(function), FEENOX_OK)) < 0) { feenox_push_error_message("IDA returned error %d", err); return FEENOX_ERROR; } #endif #ifdef HAVE_PETSC #define petsc_call(function) if (__builtin_expect((function), 0)) { feenox_push_error_message("PETSc error"); CHKERRQ(1); } #define petsc_call_null(function) if (__builtin_expect((function), 0)) { feenox_push_error_message("PETSc error"); return NULL; } #endif #define feenox_free(p) free(p); p = NULL; // macro to check malloc() for NULL (ass means assignement, you ass!) #define feenox_check_alloc(ass) if ((ass) == NULL) { feenox_push_error_message("cannot allocate memory"); return FEENOX_ERROR; } #define feenox_check_alloc_null(ass) if ((ass) == NULL) { feenox_push_error_message("cannot allocate memory"); return NULL; } #define feenox_check_minusone(ass) if ((ass) == -1) { feenox_push_error_message("cannot allocate memory"); return FEENOX_ERROR; } #define feenox_check_minusone_null(ass) if ((ass) == -1) { feenox_push_error_message("cannot allocate memory"); return NULL; } // macro to access internal special variables #define feenox_special_var(var) (feenox.special_vars.var) // value of a variable #define feenox_var_value(var) (*(var->value)) // value of a special variable #define feenox_special_var_value(var) feenox_var_value(feenox_special_var(var)) // pointer to the content of an object #define feenox_value_ptr(obj) (obj->value) // GSL's equivalent to PETSc's ADD_VALUES #define gsl_vector_add_to_element(vector,i,x) gsl_vector_set((vector),(i),gsl_vector_get((vector),(i))+(x)) #define gsl_matrix_add_to_element(matrix,i,j,x) gsl_matrix_set((matrix),(i),(j),gsl_matrix_get((matrix),(i),(j))+(x)) #define is_element_local(msh, elm) \ ((msh->mpi_matches_partitions == mpi_matches_partitions_serial) || \ (msh->mpi_matches_partitions == mpi_matches_partitions_one_to_one && \ (e->geometrical_entity != NULL && \ e->geometrical_entity->partition != NULL && \ (e->geometrical_entity->partition[0]-1) == feenox.mpi_rank)) || \ (msh->mpi_matches_partitions == mpi_matches_partitions_one_to_many && \ (e->geometrical_entity != NULL && \ e->geometrical_entity->partition != NULL && \ (((e->geometrical_entity->partition[0]-1)*feenox.mpi_size)/msh->n_partitions) == feenox.mpi_rank)) || \ (msh->mpi_matches_partitions == mpi_matches_partitions_no && \ (e->index >= msh->first_element && e->index < msh->last_element))) // forward declarations typedef struct feenox_t feenox_t; typedef struct builtin_function_t builtin_function_t; typedef struct builtin_functional_t builtin_functional_t; typedef struct builtin_vectorfunction_t builtin_vectorfunction_t; typedef struct expr_t expr_t; typedef struct expr_item_t expr_item_t; typedef struct var_t var_t; typedef struct var_ll_t var_ll_t; typedef struct vector_t vector_t; typedef struct matrix_t matrix_t; typedef struct function_t function_t; typedef struct function_ll_t function_ll_t; typedef struct alias_t alias_t; typedef struct instruction_t instruction_t; typedef struct conditional_block_t conditional_block_t; typedef struct assignment_t assignment_t; typedef struct file_t file_t; typedef struct print_t print_t; typedef struct print_token_t print_token_t; typedef struct printf_t printf_t; typedef struct print_function_t print_function_t; typedef struct multidim_range_t multidim_range_t; typedef struct print_vector_t print_vector_t; typedef struct sort_vector_t sort_vector_t; typedef struct phase_object_t phase_object_t; typedef struct dae_t dae_t; typedef struct mesh_t mesh_t; typedef struct mesh_write_t mesh_write_t; typedef struct mesh_write_dist_t mesh_write_dist_t; typedef struct mesh_integrate_t mesh_integrate_t; typedef struct mesh_find_extrema_t mesh_find_extrema_t; typedef struct fit_t fit_t; typedef struct solve_t solve_t; typedef struct dump_t dump_t; typedef struct reaction_t reaction_t; typedef struct physical_group_t physical_group_t; typedef struct geometrical_entity_t geometrical_entity_t; typedef struct physical_name_t physical_name_t; typedef struct property_t property_t; typedef struct property_data_t property_data_t; typedef struct material_t material_t; typedef struct material_ll_t material_ll_t; typedef struct distribution_t distribution_t; // nice but not needed // typedef struct name_item_t name_item_t; typedef struct bc_t bc_t; typedef struct bc_data_t bc_data_t; typedef struct node_t node_t; typedef struct node_relative_t node_relative_t; typedef struct element_t element_t; typedef struct element_ll_t element_ll_t; typedef struct element_type_t element_type_t; typedef struct cell_t cell_t; typedef struct neighbor_t neighbor_t; typedef struct gauss_t gauss_t; typedef struct elementary_entity_t elementary_entity_t; typedef struct node_data_t node_data_t; // individual item (factor) of an algebraic expression struct expr_item_t { size_t n_chars; int type; // defines #EXPR_ because we need to operate with masks size_t level; // hierarchical level size_t tmp_level; // for partial sums size_t oper; // number of the operator if applicable double constant; // value of the numerical constant if applicable double value; // current value // vector with (optional) auxiliary stuff (last value, integral accumulator, rng, etc) double *aux; builtin_function_t *builtin_function; builtin_vectorfunction_t *builtin_vectorfunction; builtin_functional_t *builtin_functional; var_t *variable; vector_t *vector; matrix_t *matrix; function_t *function; vector_t **vector_arg; var_t *functional_var_arg; // algebraic expression of the arguments of the function expr_t *arg; // lists of which variables and functions this item (and its daughters) var_ll_t *variables; function_ll_t *functions; expr_item_t *next; }; // algebraic expression struct expr_t { expr_item_t *items; double value; char *string; // just in case we keep the original string // lists of which variables and functions this expression depends on var_ll_t *variables; function_ll_t *functions; expr_t *next; }; // variable struct var_t { char *name; int initialized; int reallocated; int used; int assigned_init; int assigned_zero; // these are pointers so the actual holder can be anything, from another // variable (i.e. an alias), a vector element (another alias) or even // more weird stufff (a fortran common?) double *value; double *initial_static; double *initial_transient; UT_hash_handle hh; }; struct var_ll_t { var_t *var; var_ll_t *next; }; struct function_ll_t { function_t *function; function_ll_t *next; }; // vector struct vector_t { char *name; int initialized; int reallocated; int used; int assigned_init; int assigned_zero; expr_t size_expr; int size; gsl_vector *value; gsl_vector *initial_transient; gsl_vector *initial_static; // linked list with the expressions of the initial elements expr_t *datas; UT_hash_handle hh; }; // matrix struct matrix_t { char *name; int initialized; int reallocated; int used; int assigned_init; int assigned_zero; expr_t cols_expr; expr_t rows_expr; int cols; int rows; gsl_matrix *value; gsl_matrix *initial_transient; gsl_matrix *initial_static; // flag para saber si el apuntador de arriba lo alocamos nosotros o alguien mas int realloced; expr_t *datas; UT_hash_handle hh; }; // alias struct alias_t { int initialized; var_t *new_variable; expr_t row; expr_t col; var_t *variable; vector_t *vector; matrix_t *matrix; alias_t *next; }; // function struct function_t { char *name; char *name_in_mesh; int initialized; int used; // may be: // - algebraic, either globally or on a per-material (physical groups) basis // - pointwise-defined // + given in the input with DATA // + given in FeenoX vectors with VECTORS // + given in a file with FILE // + in a mesh // * data at nodes // * data at cells // - computed in a user-provided routine (used to be supported, not anymore) // enum { function_type_undefined, function_type_algebraic, function_type_pointwise_data, function_type_pointwise_file, function_type_pointwise_mesh_property, function_type_pointwise_mesh_node, function_type_pointwise_mesh_cell, // function_type_routine, // function_type_routine_internal, } type; // number of arguments the function takes int n_arguments; int n_arguments_given; // check to see if the API gave us all the arguments the function needs // array of pointers to already-existing variables for the arguments var_t **var_argument; int var_argument_allocated; // expression for algebraic functions expr_t algebraic_expression; // number of tuples (independent, dependent) data for pointwise functions size_t data_size; // vectors with the data vector_t **vector_argument; vector_t *vector_value; // this is in case there is a derivative of a mesh-based function and // we want to interpolate with the shape functions // warning! we need to put data on the original function and not on the derivatives function_t *spatial_derivative_of; int spatial_derivative_with_respect_to; // hints in case the grid is tensor-product regular int rectangular_mesh; expr_t expr_x_increases_first; int x_increases_first; expr_t *expr_rectangular_mesh_size; size_t *rectangular_mesh_size; double **rectangular_mesh_point; // helpers to interpolate 1D with GSL gsl_interp *interp; gsl_interp_accel *interp_accel; gsl_interp_type interp_type; // multidimensional interpolation type enum { interp_undefined, interp_nearest, interp_shepard, interp_shepard_kd, interp_bilinear } multidim_interp; expr_t expr_multidim_threshold; expr_t expr_shepard_radius; expr_t expr_shepard_exponent; double multidim_threshold; double shepard_radius; double shepard_exponent; // material property like E, nu, k, etc. property_t *property; // mesh over which the function is defined mesh_t *mesh; double mesh_time; // for time-dependent functions read from .msh // pointer to a k-dimensional tree to speed up stuff void *kd; // ----- ------- ----------- -- - - // funcion que hay que llamar para funciones tipo usercall // double (*routine)(const double *); // ----- ------- ----------- -- - - // funcion que hay que llamar para funciones internas // double (*routine_internal)(const double *, function_t *); // void *params; // if this is true and the parser sees this function, // then pde.compute_gradients is set to true int is_gradient; int dummy_for_derivatives; double dummy_for_derivatives_value; UT_hash_handle hh; }; struct feenox_expression_derivative_params { expr_t *expr; var_t *variable; function_t *function; }; // internal function (this is initialized directly into the data space from builtin_functions.h) struct builtin_function_t { char name[BUFFER_TOKEN_SIZE]; int min_arguments; int max_arguments; double (*routine)(struct expr_item_t *); }; // internal function over vectors struct builtin_vectorfunction_t { char name[BUFFER_TOKEN_SIZE]; int min_arguments; int max_arguments; double (*routine)(struct vector_t **); }; // internal functional // a functional is _like_ a regular function but its second argument is a variable // (not an expression) that is used to evaluate the first argument (which is an expression // of this variable) for different values and do something about it, for instance // compute a derivative or an integral. // There can also be more optional arguments (expressions) after this second special argument, // i.e. integral(1+x,x,0,1) or derivative(1+x,x,0.5) struct builtin_functional_t { char name[BUFFER_TOKEN_SIZE]; int min_arguments; // contando la variable del segundo argumento int max_arguments; double (*routine)(struct expr_item_t *, struct var_t *); }; // instruction struct instruction_t { int (*routine)(void *); void *argument; int argument_alloced; instruction_t *next; }; // conditional block struct conditional_block_t { conditional_block_t *father; conditional_block_t *else_of; expr_t condition; instruction_t *first_true_instruction; instruction_t *first_false_instruction; int evaluated_to_true; int evaluated_to_false; conditional_block_t *next; }; // igualacion algebraica struct assignment_t { int initialized; var_t *variable; vector_t *vector; matrix_t *matrix; // expresiones que indican el rango de indices para asignaciones vectoriales/matriciales expr_t i_min; expr_t i_max; expr_t j_min; expr_t j_max; // expresiones que indican la fila y la columna en funcion de i y de j expr_t row; expr_t col; // to sum up: // a(row, col)[t_min,tmax] // la expresion del miembro derecho expr_t rhs; // flag que indica si el assignment pide _init o _0 int initial_static; int initial_transient; // si este es true entonces la asignacion es una sola (aun cuando el miembro // izquierdo sea un vector o matriz), i.e. // A(127,43) es escalar // A(2*i+1,14) no es escalar int scalar; // si esto es true, entonces las asignaciones vector o matriz son plain, i.e. // A(i,j) int plain; // diferenciamos, en caso de las matrices, aquellas dependencias solo en i o en j // A(i,4) = 5 es un assignment que depende solo de i int expression_only_of_i; // A(8,j) = 1 es un assignment que depende solo de j int expression_only_of_j; assignment_t *next; }; // a file, either input or output struct file_t { char *name; int initialized; char *format; int n_format_args; int n_format_args_given; expr_t *arg; char *mode; char *path; FILE *pointer; UT_hash_handle hh; }; // print a single line struct print_t { // pointer to the output file (if null, print to stdout) file_t *file; // a linked list with the stuff to print print_token_t *tokens; // token separator, by default it is a tab "\t" char *separator; // flag to indicate if we need to send the newline char "\n" at the end // it's called nonewline so the default is zero and the "\n" is sent int nonewline; // stuff to help with the SKIP_* int last_static_step; int last_step; double last_time; expr_t skip_static_step; expr_t skip_step; expr_t skip_time; int header; expr_t skip_header_step; int last_header_step; int header_already_printed; print_t *next; }; // an individual token to be PRINTed struct print_token_t { char *format; char *text; expr_t expression; vector_t *vector; matrix_t *matrix; function_t *function; print_token_t *next; }; // printf-like instruction struct printf_t { // pointer to the output file (if null, print to stdout) int all_ranks; file_t *file; char *format_string; int n_args; expr_t *expressions; printf_t *next; }; struct multidim_range_t { int dimensions; expr_t *min; expr_t *max; expr_t *step; expr_t *nsteps; }; // print one or more functions struct print_function_t { file_t *file; // linked list with the stuff to be printed print_token_t *tokens; // pointer to the first function (the one that defines the number of arguments // note that this might not be the same as as token->function, that can be NULL function_t *first_function; // explicit range to print the function multidim_range_t range; // mesh and physical group that tells where to print a function mesh_t *mesh; physical_group_t *physical_group; // flag to add a header explaining what the columns are int header; // formato de los numeritos "%e" char *format; // separador de cosas "\t" char *separator; print_function_t *next; }; // instruccion imprimir uno o mas vectores struct print_vector_t { // apuntador al archivo de salida file_t *file; // una linked list con las cosas a imprimir print_token_t *tokens; // apuntador a la primera funcion que aparezca (la que tiene la cantidad posta // de argumentos), no es igual a first_token->function porque esa puede ser NULL vector_t *first_vector; // stuff separator (default is tab) char *separator; int horizontal; expr_t elems_per_line; print_vector_t *next; }; struct sort_vector_t { int descending; vector_t *v1; vector_t *v2; }; struct phase_object_t { unsigned int offset; unsigned int size; int differential; char *name; var_t *variable; var_t *variable_dot; vector_t *vector; vector_t *vector_dot; matrix_t *matrix; matrix_t *matrix_dot; phase_object_t *next; }; struct dae_t { expr_t residual; vector_t *vector; matrix_t *matrix; expr_t expr_i_min; expr_t expr_i_max; expr_t expr_j_min; expr_t expr_j_max; int i_min; int i_max; int j_min; int j_max; int equation_type; dae_t *next; }; // mesh-related structs ----------------------------- // node struct node_t { double x[3]; // spatial coordinates of the node size_t tag; // number assigned by Gmsh size_t index_mesh; // index within the node array size_t *index_dof; // index within the solution vector for each DOF double *phi; // values of the solution functions at the node gsl_matrix *dphidx; // derivative of the m-th DOF with respect to coordinate g // (this is a gsl_matrix to avoid having to do double mallocs and forgetting about row/col-major // gsl_matrix *delta_dphidx; // same as above but for the standard deviations of the derivatives double *flux; // holder of arbitrary functions evaluated at the node (e.g. sigmas and taus) element_ll_t *element_list; }; struct node_data_t { char *name_in_mesh; function_t *function; int found; node_data_t *next; }; struct node_relative_t { size_t index; node_relative_t *next; }; struct physical_group_t { char *name; // these are ints because that's what we read from a .msh int tag; int dimension; material_t *material; // pointer to single material size_t n_bcs; bc_t **bc; // array of pointers to bc_t // volume (or area or length depending on the dim, sometimes called mass) double volume; double cog[3]; var_t *var_volume; vector_t *vector_cog; // a linked list seems to be too expensive size_t n_elements; size_t i_element; size_t *element; UT_hash_handle hh; UT_hash_handle hh_tag[4]; }; struct geometrical_entity_t { int dim; int tag; int parent_dim; int parent_tag; double boxMinX, boxMinY, boxMinZ, boxMaxX, boxMaxY, boxMaxZ; size_t num_partitions; int *partition; size_t num_physicals; int *physical; size_t num_bounding; int *bounding; UT_hash_handle hh[4]; }; struct elementary_entity_t { size_t id; elementary_entity_t *next; }; struct gauss_t { unsigned int Q; // number of points (q=1,2,...,Q ) double *w; // weights (w[q] is the weight of the v-th point) double **xi; // coordinates (xi[q][d] is the coordinate of the q-th point in dimension d) // one matrix for each gauss point q gsl_matrix **H_c; // H(1,j) = h_j(xi_q) gsl_matrix **B_c; // B(d,j) = d(h_j)/d(xi_d) at xi_q gsl_matrix *extrap; // matrix to extrapolate the values from the gauss points to the nodes }; // constant structure with the types of elements // this includes the pointers to the shape functions // the numbering is Gmsh-based struct element_type_t { unsigned int id; // as of Gmsh unsigned int dim; unsigned int order; unsigned int nodes; // total, i.e. 10 for tet10 unsigned int vertices; // the corner nodes, i.e 4 for tet10 unsigned int faces; // faces == number of neighbors unsigned int nodes_per_face; // (max) number of nodes per face double *barycenter_coords; double **node_coords; node_relative_t **node_parents; // virtual (sic) methods! // shape functions and derivatives in the local coords double (*h)(int j, double *xi); double (*dhdxi)(int j, int d, double *xi); // G-aware canonical matrices gsl_matrix **H_Gc; gsl_matrix **B_Gc; // convenience methods int (*point_inside)(element_t *e, const double *x); double (*volume)(element_t *e); double (*area)(element_t *e); double (*size)(element_t *e); gauss_t gauss[2]; // sets of gauss points // 0 - full integration // 1 - reduced integration // for doc only // TODO: move somewhere else? char *name; char *desc; char *ascii_art; int doc_n_edges; int (*doc_edges)[2]; int doc_n_faces; int (*doc_faces)[8]; char *(*h_latex)(int j); }; struct element_t { size_t index; size_t tag; double quality; double volume; double area; double size; double gradient_weight; // this weight is used to average the contribution of this element to nodal gradients double *w; // weights of the gauss points time determinant of the jacobian double **x; // coordinates fo the gauss points double *normal; // outward normal direction (only for 2d elements) // matrix with the coordinates (to compute the jacobian) gsl_matrix *C; // these are pointers to arrays of matrices are evaluated at the gauss points gsl_matrix **B; gsl_matrix **B_G; gsl_matrix **J; // d(x)/d(xi) gsl_matrix **invJ; // d(xi)/d(x) gsl_matrix **dphidx_gauss; // spatial derivatives of the DOFs at the gauss points gsl_matrix **dphidx_node; // spatial derivatives of the DOFs at the nodes (extrapoladed or evaluated) double **property_at_node; // 2d array [j][N] of property N evaluated at node j element_type_t *type; // pointer to the element type physical_group_t *physical_group; // pointer to the physical group this element belongs to geometrical_entity_t *geometrical_entity; node_t **node; // pointer to the nodes, node[j] points to the j-th local node cell_t *cell; // pointer to the associated cell (only for FVM) }; struct element_ll_t { element_t *element; element_ll_t *next; }; struct cell_t { size_t id; element_t *element; unsigned int n_neighbors; size_t *ineighbor; // array with ids of neighboring elements size_t **ifaces; // array of arrays of ids making up the faces neighbor_t *neighbor; // array of neighbors double x[3]; // coordenadas espaciales del baricentro de la celda size_t *index; // indice del vector incognita para cada uno de los grados de libertad double volume; }; struct neighbor_t { cell_t *cell; element_t *element; double **face_coord; double x_ij[3]; double n_ij[3]; double S_ij; }; struct material_t { char *name; mesh_t *mesh; property_data_t *property_datums; UT_hash_handle hh; }; struct material_ll_t { material_t *material; material_ll_t *next; }; struct property_t { char *name; property_data_t *property_datums; UT_hash_handle hh; }; struct property_data_t { property_t *property; material_t *material; expr_t expr; UT_hash_handle hh; }; struct distribution_t { char *name; int defined; // true or false if is defined int full; // true if all the groups have the property property_t *property; function_t *function; var_t *variable; // caches material_t *last_material; property_data_t *last_property_data; expr_t *expr; double value; // dependencies var_ll_t *dependency_variables; function_ll_t *dependency_functions; // is this distribution uniform? (i.e. does not depend on space) int non_uniform; // is this distribution constant? (i.e. does not depend on time) int constant; // does this distribution depend on the solution itself? int non_linear; // virtual method to evaluate at a point double (*eval)(distribution_t *, const double *x, material_t *material); }; // nice but not needed /* struct name_item_t { char *name; name_item_t *next; }; */ struct bc_t { char *name; mesh_t *mesh; // name_item_t *groups; bc_data_t *bc_datums; UT_hash_handle hh; // for the hashed list mesh.bcs }; struct bc_data_t { char *string; enum { bc_type_math_undefined, bc_type_math_dirichlet, bc_type_math_neumann, bc_type_math_robin, bc_type_math_multifreedom } type_math; int type_phys; // problem-based flag that tells which type of BC this is // boolean flags int space_dependent; int nonlinear; int disabled; int fills_matrix; unsigned int dof; // -1 means "all" dofs expr_t expr; expr_t condition; // if it is not null the BC only applies if this evaluates to non-zero int (*set_essential)(bc_data_t *, element_t *, size_t j_global); int (*set_natural)(bc_data_t *, element_t *, unsigned int q); bc_data_t *prev, *next; // doubly-linked list in ech bc_t }; // unstructured mesh struct mesh_t { file_t *file; unsigned int dim; unsigned int dim_topo; size_t n_nodes; size_t n_elements; size_t n_elements_per_dim[4]; size_t n_cells; // a cell is an element with the topological dimension of the mesh int n_partitions; int degrees_of_freedom; // per unknown unsigned int order; physical_group_t *physical_groups; // global hash table physical_group_t *physical_groups_by_tag[4]; // 4 hash tables one per tag int physical_tag_max; // the higher tag of the entities // number of geometric entities of each dimension size_t points, curves, surfaces, volumes; geometrical_entity_t *geometrical_entities[4]; // 4 hash tables, one for each dimension // partition data size_t num_partitions; size_t num_ghost_entitites; size_t partitioned_points, partitioned_curves, partitioned_surfaces, partitioned_volumes; int sparse; // flag that indicates if the nodes are sparse size_t *tag2index; // array to map tags to indexes (we need a -1) // pointer to tag_min entries before so we can use the tag as an offset size_t *tag2index_from_tag_min; enum { data_type_element, data_type_node, } data_type; enum { integration_full, integration_reduced } integration; enum { mpi_matches_partitions_no, mpi_matches_partitions_serial, mpi_matches_partitions_one_to_one, mpi_matches_partitions_one_to_many, } mpi_matches_partitions; // this is for mpi_matches_partitions_no size_t first_element; size_t last_element; int update_each_step; expr_t scale_factor; // scale factor when reading the coordinates of the nodes expr_t offset_x; // offset en nodos expr_t offset_y; // offset en nodos expr_t offset_z; // offset en nodos gsl_vector **nodes_argument; gsl_vector **cells_argument; node_data_t *node_datas; int n_physical_names; node_t *node; element_t *element; cell_t *cell; node_t bounding_box_max; node_t bounding_box_min; unsigned int max_nodes_per_element; unsigned int max_faces_per_element; unsigned int max_first_neighbor_nodes; // to estimate matrix bandwidth // kd-trees to make efficient searches void *kd_nodes; void *kd_cells; element_t *last_chosen_element; // interpolation cache // virtual method for format-dependet reader int (*reader)(mesh_t *); int initialized; UT_hash_handle hh; }; typedef enum { field_location_default, field_location_nodes, field_location_cells, field_location_gauss } field_location_t; struct mesh_write_dist_t { char *name; unsigned int size; // TODO: rename to num_of_components function_t **field; field_location_t field_location; char *printf_format; mesh_write_dist_t *next; }; struct mesh_write_t { mesh_t *mesh; file_t *file; int no_mesh; enum { post_format_fromextension, post_format_gmsh, post_format_vtu, post_format_vtk, } post_format; int no_physical_names; field_location_t field_location; char *printf_format; int (*write_header)(mesh_t *mesh, FILE *file); int (*write_mesh)(mesh_t *mesh, FILE *file, int no_physical_names); int (*write_data)(mesh_write_t *this, mesh_write_dist_t *dist); int (*write_footer)(mesh_write_t *this); // these two are to know if we have to change the type in VTK int point_init; int cell_init; // this is to know if we already wrote LOOKUP_TABLE int lookup_table_init; mesh_write_dist_t *mesh_write_dists; mesh_write_t *next; }; struct mesh_integrate_t { mesh_t *mesh; function_t *function; expr_t expr; physical_group_t *physical_group; field_location_t field_location; unsigned int gauss_points; var_t *result; mesh_integrate_t *next; }; struct mesh_find_extrema_t { mesh_t *mesh; physical_group_t *physical_group; function_t *function; expr_t expr; field_location_t field_location; var_t *min; var_t *i_min; var_t *x_min; var_t *y_min; var_t *z_min; var_t *max; var_t *i_max; var_t *x_max; var_t *y_max; var_t *z_max; mesh_find_extrema_t *next; }; // fit an algebraic function to a pointwise-defined function struct fit_t { unsigned int max_iter; int verbose; // number of parameters to fit (i.e. a & b -> 2) unsigned int n_via; // number of experimental data to fit (order 1,000) size_t n_data; // algebraic function whose parameters we have to fit function_t *function; // point-wise function with the experimental data function_t *data; // pointers to the variables acting as parameters var_t **via; // and their statistical uncertainties var_t **sigma; // array of size n_params with the analytical derivatives of the function with respect to the params // if it is NULL we have to compute it numerically expr_t *gradient; // same thing for the initial guess expr_t *guess; // range where to fit multidim_range_t range; //expr_t tol_abs; //expr_t tol_rel; // working pointers double *x; double *range_min; double *range_max; double *y_plus; double *y_minus; fit_t *next; }; struct solve_t { size_t n_unknowns; var_t **unknown; expr_t *residual; expr_t *guess; expr_t epsabs; expr_t epsrel; int max_iter; int verbose; const gsl_multiroot_fsolver_type *type; solve_t *next; }; struct dump_t { enum { dump_format_default, dump_format_binary, dump_format_ascii, dump_format_octave, } format; int K; int K_bc; int b; int b_bc; int M; int M_bc; dump_t *next; }; struct reaction_t { physical_group_t *physical_group; var_t *scalar; vector_t *vector; int order; expr_t x0[3]; reaction_t *next; }; // global FeenoX singleton structure struct feenox_t { int argc; char **argv; char **argv_orig; int optind; char *main_input_filepath; char *main_input_dirname; #ifdef HAVE_CLOCK_GETTIME struct timespec tp0; #endif int check; // TODO // int debug; int mpi_rank; int mpi_size; char **error; int error_level; // if this is not null then a conditional is wanting us to branch instruction_t *next_instruction; expr_t *time_paths; expr_t *time_path_current; instruction_t *instructions; instruction_t *last_defined_instruction; // TODO: see if we can put this somewhere else conditional_block_t *conditional_blocks; conditional_block_t *active_conditional_block; var_t *vars; vector_t *vectors; matrix_t *matrices; alias_t *aliases; function_t *functions; assignment_t *assignments; file_t *files; print_t *prints; printf_t *printfs; print_function_t *print_functions; print_vector_t *print_vectors; fit_t *fits; solve_t *solves; struct { var_t *done; var_t *done_static; var_t *done_transient; var_t *step_static; var_t *step_transient; var_t *in_static; var_t *in_static_first; var_t *in_static_last; var_t *in_transient; var_t *in_transient_first; var_t *in_transient_last; var_t *in_time_path; var_t *static_steps; var_t *end_time; var_t *t; var_t *dt; var_t *dae_rtol; var_t *min_dt; var_t *max_dt; var_t *i; var_t *j; var_t *pi; var_t *zero; var_t *infinite; var_t *pid; var_t *mpi_size; var_t *mpi_rank; var_t *on_nan; var_t *on_gsl_error; var_t *on_ida_error; // var_t *realtime_scale; } special_vars; struct { vector_t *abs_error; } special_vectors; struct { file_t *_stdin; file_t *_stdout; file_t *_stderr; } special_files; struct { int need_cells; mesh_t *meshes; mesh_t *mesh_main; material_t *materials; property_t *properties; bc_t *bcs; mesh_write_t *mesh_writes; mesh_integrate_t *integrates; mesh_find_extrema_t *find_extremas; field_location_t default_field_location; element_type_t *element_types; // estas tres variables estan reallocadas para apuntar a vec_x struct { var_t *x; var_t *y; var_t *z; var_t *arr_x[3]; // x, y y z en un array de tamanio 3 vector_t *vec_x; var_t *nx; var_t *ny; var_t *nz; var_t *arr_n[3]; vector_t *vec_n; var_t *eps; var_t *nodes; var_t *cells; var_t *elements; vector_t *bbox_min; vector_t *bbox_max; var_t *mesh_failed_interpolation_factor; } vars; } mesh; struct { unsigned int dimension; int reading_daes; double **phase_value; double **phase_derivative; phase_object_t *phase_objects; enum { initial_conditions_as_provided, initial_conditions_from_variables, initial_conditions_from_derivatives, } initial_conditions_mode; #ifdef HAVE_SUNDIALS N_Vector x; N_Vector dxdt; N_Vector id; N_Vector abs_error; SUNMatrix A; SUNLinearSolver LS; #if SUNDIALS_VERSION_MAJOR >= 6 SUNContext ctx; #endif #endif dae_t *daes; void *system; instruction_t *instruction; } dae; struct { enum { symmetry_axis_none, symmetry_axis_x, symmetry_axis_y } symmetry_axis; enum { hanging_nodes_nothing, hanging_nodes_detect, hanging_nodes_handle } hanging_nodes; enum { unresolved_bcs_detect, unresolved_bcs_allow } unresolved_bcs; // these can be read from the input but also we can figure them out enum { transient_type_undefined, transient_type_transient, transient_type_quasistatic } transient_type; enum { math_type_automatic, math_type_linear, math_type_nonlinear, math_type_eigen, } math_type; enum { eigen_formulation_undefined, eigen_formulation_lambda, eigen_formulation_omega } eigen_formulation; enum { eigen_dirichlet_zero_M, eigen_dirichlet_zero_K } eigen_dirichlet_zero; unsigned int dim; // spatial dimension of the problem (currently, equal to the topological dimension) unsigned int dofs; // DoFs per node/cell size_t width; // number of expected non-zeros per row size_t spatial_unknowns; // number of spatial unknowns (nodes in fem, cells in fvm) size_t size_global; // total number of DoFs int do_not_solve; // flag to skip solves in particular cases (e.g. convert to other format) int compute_gradients; // do we need to compute gradients? void *missed_dump; // gsl_matrix *m2; int rough; // keep each element's contribution to the gradient? int roughish; // average only on the same physical group? mesh_t *mesh; mesh_t *mesh_rough; // in this mesh each elements has unique nodes (they are duplicated) // problem-specific virtual methods // parse int (*parse_problem)(const char *token); int (*parse_write_results)(mesh_write_t *mesh_write, const char *token); int (*parse_bc)(bc_data_t *bc_data, const char *lhs, char *rhs); // init int (*init_before_run)(void); #ifdef HAVE_PETSC int (*setup_pc)(PC pc); int (*setup_ksp)(KSP ksp); #ifdef HAVE_SLEPC int (*setup_eps)(EPS eps); #endif int (*setup_ts)(TS ksp); #endif // build int (*element_build_allocate_aux)(unsigned int J); int (*element_build_volumetric)(element_t *e); int (*element_build_volumetric_at_gauss)(element_t *e, unsigned int q); // solve int (*solve)(void); // post int (*solve_post)(void); int (*gradient_fill)(void); int (*gradient_nodal_properties)(element_t *e, mesh_t *mesh); int (*gradient_alloc_nodal_fluxes)(node_t *node); int (*gradient_add_elemental_contribution_to_node)(node_t *node, element_t *e, unsigned int j, double rel_weight); int (*gradient_fill_fluxes)(mesh_t *mesh, size_t j_global); // instruction pointer to know before/after transient PDE instruction_t *instruction; function_t *initial_guess; function_t *initial_condition; dump_t *dumps; reaction_t *reactions; struct { var_t *ksp_atol; var_t *ksp_rtol; var_t *ksp_divtol; var_t *ksp_max_it; var_t *snes_atol; var_t *snes_rtol; var_t *snes_stol; var_t *snes_max_it; var_t *ts_atol; var_t *ts_rtol; var_t *eps_tol; var_t *eps_max_it; var_t *eps_st_sigma; var_t *eps_st_nu; var_t *mumps_icntl_14; var_t *gamg_threshold; var_t *penalty_weight; var_t *nodes_rough; var_t *total_dofs; var_t *memory_available; } vars; // vectors struct { vector_t **phi; } vectors; char **unknown_name; // one for each DOF // the functions with the solutions (one for each DOF) function_t **solution; // derivatives of solutions with respect to space (DOFs x dims) function_t ***gradient; // uncertainty (i.e standard deviation of the contribution of each element) function_t ***delta_gradient; // solutions for eigenproblems function_t ***mode; enum { gradient_gauss_extrapolated, gradient_at_nodes, gradient_none } gradient_evaluation; enum { gradient_weight_volume, gradient_weight_quality, gradient_weight_volume_times_quality, gradient_weight_flat, } gradient_element_weight; enum { gradient_average, gradient_actual } gradient_highorder_nodes; int has_stiffness; int has_mass; int has_rhs; int has_jacobian; int has_jacobian_K; int has_jacobian_M; int has_jacobian_b; int symmetric_K; int symmetric_M; #ifdef HAVE_PETSC char *petsc_options; PetscBool pre_allocate; // preallocate? only works for petsc >= 3.19 PetscBool allow_new_nonzeros; // flag to set MAT_NEW_NONZERO_ALLOCATION_ERR to false, needed in some rare cases PetscBool petscinit_called; // flag // stuff for mpi parallelization PetscInt nodes_local, size_local; PetscInt first_row, last_row; PetscInt first_node, last_node; // dirichlet BC scaling factor PetscScalar dirichlet_scale; PetscScalar dirichlet_scale_fraction; // global objects Vec phi; // the unknown (solution) vector Vec phi_bc; // the unknown (solution) vector with dirichlet BCs Vec b; // the right-hand side vector without dirichlet BCs Vec b_bc; // idem with dirichlet BCs (for KSP) Vec r; // residual vector for SNES and TS Mat K; // stiffness matrix without dirichlet BCs Mat K_bc; // stiffness matrix with dirichlet BCs (for KSP) Mat M; // mass matrix (rho for elastic, rho*cp for heat) Mat M_bc; // mass matrix with dirichlet BCs (for EPS) Mat JK; // jacobian for stiffness matrix = K'*phi Mat JM; // jacobian for mass matrix = M'*phi_dot Mat Jb; // jacobian for rhs vector = dq/dT for both volumetric and BCs Mat J_snes; // jacobian for SNES Mat J_tran; // jacobian for TS PetscScalar *eigenvalue; // eigenvalue vector Vec *eigenvector; // eivenvectors vector // internal storage of evaluated dirichlet conditions size_t *dirichlet_nodes; unsigned int *dirichlet_dofs; PetscInt *dirichlet_indexes; PetscScalar *dirichlet_values; PetscScalar *dirichlet_derivatives; size_t dirichlet_k; // reusable number of dirichlet rows to know how much memory to allocate size_t dirichlet_rows; // internal storage of multi-freedom conditions PetscInt **multifreedom_indexes; gsl_matrix **multifreedom_coefficients; size_t multifreedom_k; size_t multifreedom_nodes; // PETSc's solvers TS ts; SNES snes; KSP ksp; // strings with types PCType pc_type; KSPType ksp_type; SNESType snes_type; TSType ts_type; TSAdaptType ts_adapt_type; PetscInt nev; // number of requested modes #ifdef HAVE_SLEPC EPSType eps_type; STType st_type; EPS eps; #endif PetscBool progress_ascii; PetscReal progress_r0; PetscReal progress_last; PetscLogStage stage_init; PetscLogStage stage_build; PetscLogStage stage_solve; PetscLogStage stage_post; expr_t eps_ncv; expr_t st_shift; expr_t st_anti_shift; #endif // HAVE_PETSC } pde; struct { // TODO: this is not thread safe! we stick to MPI anyway... size_t current_gauss_element_tag; element_type_t *current_gauss_type; unsigned int current_GJ; element_type_t *current_elemental_type; element_type_t *current_jacobian_type; size_t current_weight_element_tag; size_t current_jacobian_element_tag; unsigned int current_weight_gauss_point; unsigned int current_jacobian_gauss_point; double *w; double **x; gsl_matrix *C; gsl_matrix **Ji; gsl_matrix **invJi; gsl_matrix **Bi; gsl_matrix **B_Gi; // elemental (local) objects gsl_matrix *Ki; // elementary stiffness matrix gsl_matrix *Mi; // elementary mass matrix gsl_matrix *JKi; // elementary jacobian for stiffness matrix gsl_matrix *Jbi; // elementary jacobian for RHS vector gsl_vector *bi; // elementary right-hand side vector gsl_vector *vec_f; // temporary vector for rhs things like H'*f int cache_J; int cache_B; #ifdef HAVE_PETSC PetscInt *l; // node-major-ordered vector with the global indexes of the DOFs in the element #endif } fem; }; extern feenox_t feenox; // function declarations // run.c extern int feenox_run(void); extern void feenox_limit_time_step(void); // step.c extern int feenox_step(instruction_t *first, instruction_t *last); // init.c extern int feenox_initialize(int argc, char **argv); extern int feenox_init_special_objects(void); extern int feenox_init_after_parser(void); // mesh's init.c extern int feenox_mesh_init_special_objects(void); // version.c extern void feenox_show_help(const char *progname, int extra); extern void feenox_show_version(int version); extern void feenox_copyright(void); extern void feenox_shortversion(void); extern void feenox_longversion(void); // error.c void feenox_push_error_message(const char *fmt, ...); void feenox_pop_error_message(void); void feenox_pop_errors(void); void feenox_runtime_error(void); void feenox_nan_error(void); void feenox_gsl_handler (const char *reason, const char *file_ptr, int line, int gsl_errno); void feenox_signal_handler(int sig_num); // cleanup.c void feenox_polite_exit(int error); void feenox_finalize(void); // parser.c extern int feenox_parse_main_input_file(const char *filepath); extern char *feenox_ends_in_init(const char *name); extern char *feenox_ends_in_zero(const char *name); extern int feenox_count_arguments(char *string, size_t *); extern int feenox_read_arguments(char *string, int n_arguments, char ***arg, size_t *n_chars); // file.c char *feenox_evaluate_string(const char *restrict format, int n_args, expr_t *arg); extern int feenox_instruction_file(void *arg); FILE *feenox_fopen(const char *filepath, const char *mode); extern int feenox_instruction_file_open(void *arg); extern int feenox_instruction_file_close(void *arg); // abort.c extern int feenox_instruction_abort(void *arg); // expressions.c extern int feenox_expression_parse(expr_t *, const char *string); extern expr_item_t *feenox_expression_parse_item(const char *string); extern int feenox_parse_range(char *string, const char left_delim, const char middle_delim, const char right_delim, expr_t *a, expr_t *b); extern double feenox_expression_eval(expr_t *); extern double feenox_expression_evaluate_in_string(const char *string); extern int feenox_pull_dependencies_variables(var_ll_t **to, var_ll_t *from); extern int feenox_pull_dependencies_functions(function_ll_t **to, function_ll_t *from); double feenox_expression_derivative_wrt_function_gsl_function(double x, void *params); double feenox_expression_derivative_wrt_function(expr_t *expr, function_t *function, double x); double feenox_expression_derivative_wrt_variable_gsl_function(double x, void *params); double feenox_expression_derivative_wrt_variable(expr_t *expr, var_t *variable, double x); // dae.c extern int feenox_add_time_path(const char *token); extern int feenox_phase_space_add_object(const char *token, int differential); extern char *feenox_find_first_dot(const char *s); extern int feenox_add_dae(const char *lhs, const char *rhs); extern int feenox_dae_init(void); extern int feenox_dae_ic(void); #ifdef HAVE_SUNDIALS extern int feenox_ida_dae(sunrealtype t, N_Vector yy, N_Vector yp, N_Vector rr, void *params); #else extern int feenox_ida_dae(void); #endif extern int feenox_instruction_dae(void *arg); // instruction.c extern instruction_t *feenox_add_instruction_and_get_ptr(int (*routine)(void *), void *argument); extern int feenox_add_instruction(int (*routine)(void *), void *argument); // define.c extern int feenox_check_name(const char *name); extern int feenox_define_variable(const char *name); extern int feenox_define_alias(const char *new_name, const char *existing_object, const char *row, const char *col); extern int feenox_define_vector(const char *name, const char *size); //extern int feenox_vector_attach_function(const char *name, const char *function_data); extern int feenox_vector_attach_data(const char *name, expr_t *datas); extern int feenox_define_matrix(const char *name, const char *rows, const char *cols); extern int feenox_matrix_attach_data(const char *name, expr_t *datas); extern int feenox_define_function(const char *name, unsigned int n_arguments); extern function_t *feenox_define_function_get_ptr(const char *name, int n_arguments); extern int feenox_define_file(const char *name, const char *format, int n_args, const char *mode); extern int feenox_file_set_path_argument(const char *name, int i, const char *expression); extern file_t *feenox_get_or_define_file_get_ptr(const char *name); extern var_t *feenox_get_or_define_variable_get_ptr(const char *name); extern var_t *feenox_define_variable_get_ptr(const char *name); extern vector_t *feenox_define_vector_get_ptr(const char *name, size_t size); extern int feenox_realloc_variable_ptr(var_t *, double *newptr, int copy_contents); extern int feenox_realloc_vector_ptr(vector_t *, double *newptr, int copy_contents); // getptr.c extern var_t *feenox_get_variable_ptr(const char *name); extern vector_t *feenox_get_vector_ptr(const char *name); extern matrix_t *feenox_get_matrix_ptr(const char *name); extern function_t *feenox_get_function_ptr(const char *name); extern builtin_function_t *feenox_get_builtin_function_ptr(const char *name); extern builtin_vectorfunction_t *feenox_get_builtin_vectorfunction_ptr(const char *name); extern builtin_functional_t *feenox_get_builtin_functional_ptr(const char *name); extern vector_t *feenox_get_first_vector(const char *s); extern file_t *feenox_get_file_ptr(const char *name); extern mesh_t *feenox_get_mesh_ptr(const char *name); extern physical_group_t *feenox_get_physical_group_ptr(const char *name, mesh_t *mesh); // assignment.c extern int feenox_add_assignment(const char *left_hand, const char *right_hand); extern int feenox_assign_single(assignment_t *assignment, unsigned int row, unsigned int col); extern int feenox_instruction_assignment_scalar(void *arg); extern int feenox_instruction_assignment_vector(void *arg); extern int feenox_instruction_assignment_matrix(void *arg); extern int feenox_get_assignment_rowcol(assignment_t *assignment, size_t i, size_t j, size_t *row, size_t *col); // auxiliary.c extern int feenox_strip_blanks(char *string); extern int feenox_strip_comments(char *line); // alias.c extern int feenox_instruction_alias(void *arg); // fit.c extern int feenox_instruction_fit(void *arg); // solve.c extern int feenox_instruction_solve(void *arg); // dump.c extern int feenox_instruction_dump(void *arg); #ifdef HAVE_PETSC extern int feenox_dump_open_viewer(dump_t *, const char *name, PetscViewer *viewer); #endif // reaction.c extern int feenox_instruction_reaction(void *arg); // matrix.c extern int feenox_matrix_init(matrix_t *); // vector.c extern int feenox_create_pointwise_function_vectors(function_t *function); extern int feenox_vector_init(vector_t *, int no_initial); extern int feenox_instruction_sort_vector(void *arg); extern double feenox_vector_get(vector_t *, const size_t i); extern double feenox_vector_get_initial_static(vector_t *, const size_t i); extern double feenox_vector_get_initial_transient(vector_t *, const size_t i); extern int feenox_vector_set(vector_t *, const size_t i, double value); extern int feenox_vector_add(vector_t *, const size_t i, double value); extern int feenox_vector_set_size(vector_t *, const size_t size); extern size_t feenox_vector_get_size(vector_t *); // function.c extern int feenox_function_init(function_t *); extern int feenox_function_set_args(function_t *, double *x); extern int feenox_function_set_argument_variable(const char *name, unsigned int i, const char *variable_name); extern int feenox_function_set_expression(const char *name, const char *expression); extern int feenox_function_set_interpolation(const char *name, const char *type); extern int feenox_function_set_file(const char *name, file_t *file, unsigned int *columns); extern int function_set_buffered_data(function_t *function, double *buffer, size_t n_data, unsigned int n_columns, unsigned int *columns); size_t feenox_structured_scalar_index(unsigned int n_dims, size_t *size, size_t *index, int x_increases_first); extern double feenox_function_eval(function_t *, const double *x); extern double feenox_factor_function_eval(expr_item_t *); extern int feenox_function_is_structured_grid_2d(double *x, double *y, size_t n, size_t *nx, size_t *ny); extern int feenox_function_is_structured_grid_3d(double *x, double *y, double *z, size_t n, size_t *nx, size_t *ny, size_t *nz); // print.c extern int feenox_instruction_print(void *arg); extern int feenox_instruction_printf(void *arg); extern int feenox_instruction_print_function(void *arg); extern int feenox_instruction_print_vector(void *arg); extern char *feenox_print_vector_current_format_reset(print_vector_t *); extern int feenox_debug_print_gsl_vector(gsl_vector *b, FILE *file); extern int feenox_debug_print_gsl_matrix(gsl_matrix *A, FILE *file); // conditional.c extern int feenox_instruction_if(void *arg); extern int feenox_instruction_else(void *arg); extern int feenox_instruction_endif(void *arg); // functionals.c extern double feenox_gsl_function(double x, void *params); // mesh.c extern int feenox_instruction_mesh_read(void *arg); extern int feenox_mesh_create_nodes_argument(mesh_t *); extern int feenox_mesh_free(mesh_t *); extern int feenox_mesh_read_vtk(mesh_t *); extern int feenox_mesh_read_frd(mesh_t *); extern node_t *feenox_mesh_find_nearest_node(mesh_t *, const double *x); extern element_t *feenox_mesh_find_element(mesh_t *, node_t *nearest_node, const double *x); // interpolate.c extern double feenox_function_property_eval(struct function_t *function, const double *x); extern int feenox_mesh_interp_solve_for_r(element_t *, const double *x, double *r) ; extern int feenox_mesh_interp_residual(const gsl_vector *test, void *params, gsl_vector *residual); extern int feenox_mesh_interp_jacob(const gsl_vector *test, void *params, gsl_matrix *J); extern int feenox_mesh_interp_residual_jacob(const gsl_vector *test, void *params, gsl_vector *residual, gsl_matrix * J); extern double feenox_mesh_interpolate_function_node(struct function_t *function, const double *x); extern int feenox_mesh_compute_r_tetrahedron(element_t *, const double *x, double *r); // gmsh.c extern int feenox_mesh_read_gmsh(mesh_t *mesh); extern int feenox_mesh_tag2index_alloc(mesh_t *mesh, size_t, size_t ); extern int feenox_mesh_update_function_gmsh(function_t *function, double t, double dt); extern int feenox_mesh_write_header_gmsh(mesh_t *mesh, FILE *file); extern int feenox_mesh_write_mesh_gmsh(mesh_t *mesh, FILE *file, int no_physical_names); extern int feenox_mesh_write_data_gmsh(mesh_write_t *, mesh_write_dist_t *dist); extern int feenox_gmsh_read_data_int(mesh_t *, size_t n, int *data, int binary); extern int feenox_gmsh_read_data_size_t(mesh_t *, size_t n, size_t *data, int binary); extern int feenox_gmsh_read_data_double(mesh_t *, size_t n, double *data, int binary); // write.c extern int feenox_instruction_mesh_write(void *arg); // integrate.c extern int feenox_instruction_mesh_integrate(void *arg); extern double feenox_mesh_integral_over_element(element_t *, mesh_t *mesh, function_t *function); extern double feenox_mesh_integral_function_cell_cell(function_t *function, mesh_t *mesh, physical_group_t *physical_group); extern double feenox_mesh_integral_function_general_cell(function_t *function, mesh_t *mesh, physical_group_t *physical_group); extern double feenox_mesh_integral_function_node_gauss(function_t *function, mesh_t *mesh, physical_group_t *physical_group); extern double feenox_mesh_integral_function_general_gauss(function_t *function, mesh_t *mesh, physical_group_t *physical_group); extern double feenox_mesh_integral_expression_cell(expr_t *expr, mesh_t *mesh, physical_group_t *physical_group); extern double feenox_mesh_integral_expression_gauss(expr_t *expr, mesh_t *mesh, physical_group_t *physical_group); // extrema.c extern int feenox_instruction_mesh_find_extrema(void *arg); // physical_group.c extern int feenox_define_physical_group(const char *name, const char *mesh_name, int dimension, int tag); extern physical_group_t *feenox_define_physical_group_get_ptr(const char *name, mesh_t *mesh, int dimension, int tag); extern physical_group_t *feenox_get_or_define_physical_group_get_ptr(const char *name, mesh_t *mesh, int dimension, int tag); extern int feenox_physical_group_set_material(const char *group_name, const char *material_name, mesh_t *mesh); extern int feenox_physical_group_compute_volume(physical_group_t *, const mesh_t *mesh); // material.c extern material_t *feenox_get_material_ptr(const char *name); extern int feenox_define_material(const char *material_name, const char *mesh_name); extern material_t *feenox_define_material_get_ptr(const char *name, mesh_t *mesh); extern int feenox_define_property(const char *name, const char *mesh_name); extern property_t *feenox_define_property_get_ptr(const char *name, mesh_t *mesh); extern int feenox_define_property_data(const char *property_name, const char *material_name, const char *expr_string); extern property_data_t *feenox_define_property_data_get_ptr(property_t *property, material_t *material, const char *expr_string); // boundary_condition.c extern bc_t *feenox_get_bc_ptr(const char *name); extern int feenox_define_bc(const char *bc_name, const char *mesh_name); extern bc_t *feenox_define_bc_get_ptr(const char *name, mesh_t *mesh); extern int feenox_add_bc_data(const char *bc_name, const char *string); extern bc_data_t *feenox_add_bc_data_get_ptr(bc_t *bc, const char *string); // init.c extern int feenox_mesh_element_types_init(void); extern int feenox_mesh_elements_info(void); extern int feenox_mesh_elements_info_geo(element_type_t *element_type); // geom.c extern void feenox_mesh_subtract(const double *a, const double *b, double *c); extern void feenox_mesh_cross(const double *a, const double *b, double *c); extern void feenox_mesh_normalized_cross(const double *a, const double *b, double *c); extern double feenox_mesh_cross_dot(const double *a, const double *b, const double *c); extern double feenox_mesh_subtract_cross_2d(const double *a, const double *b, const double *c); extern double feenox_mesh_dot(const double *a, const double *b); extern double feenox_mesh_subtract_dot(const double *b, const double *a, const double *c); extern double feenox_mesh_subtract_module(const double *b, const double *a); #define feenox_mesh_distance(a,b) feenox_mesh_subtract_module((a),(b)) extern double feenox_mesh_subtract_squared_module(const double *b, const double *a); extern double feenox_mesh_subtract_squared_module2d(const double *b, const double *a); extern int feenox_mesh_compute_outward_normal(element_t *element, double n[3]) __attribute__((noinline)); // element.c extern int feenox_mesh_compute_normal_2d(element_t *e); extern int feenox_mesh_add_element_to_list(element_ll_t **list, element_t *e); extern int feenox_mesh_compute_element_barycenter(element_t *e, double barycenter[]); extern int feenox_mesh_init_nodal_indexes(mesh_t *, int dofs); // cell.c extern int feenox_mesh_element2cell(mesh_t *); // vtk.c extern int feenox_mesh_read_vtk_field_node(mesh_t *mesh, FILE *fp, const char *name, unsigned int size); extern int feenox_mesh_write_unstructured_mesh_vtk(mesh_t *mesh, FILE *file); extern int feenox_mesh_write_header_vtk(mesh_t *mesh, FILE *file); extern int feenox_mesh_write_vtk_cells(mesh_t *mesh, FILE * file, int with_size); extern int feenox_mesh_write_vtk_types(mesh_t *mesh, FILE * file); extern int feenox_mesh_write_mesh_vtk(mesh_t *mesh, FILE *file, int dummy); extern int feenox_mesh_write_data_vtk(mesh_write_t *this, mesh_write_dist_t *dist); // vtu.c extern int feenox_mesh_write_header_vtu(mesh_t *mesh, FILE *file); extern int feenox_mesh_write_mesh_vtu(mesh_t *, FILE *file, int dummy); extern int feenox_mesh_write_data_vtu(mesh_write_t *this, mesh_write_dist_t *dist); extern int feenox_mesh_write_footer_vtu(mesh_write_t *this); // neighbors.c extern element_t *feenox_mesh_find_element_volumetric_neighbor(element_t *e) __attribute__((noinline)); extern int feenox_mesh_count_element_volumetric_neighbors(element_t *e) __attribute__((noinline)); // init.c extern int feenox_problem_parse_time_init(void); extern int feenox_problem_init_runtime_general(void); extern int feenox_problem_define_solutions(void); extern int feenox_problem_define_solution_function(const char *name, function_t **function, int is_gradient); extern int feenox_problem_fill_aux_solution(function_t *function); #ifdef HAVE_PETSC extern Mat feenox_problem_create_matrix(const char *name); extern Vec feenox_problem_create_vector(const char *name); #endif extern int feenox_compute_first_last_element(mesh_t *mesh); // bulk.c extern int feenox_problem_build(void); // solve.c extern int feenox_instruction_solve_problem(void *arg); #ifdef HAVE_PETSC // solve.c extern int feenox_function_to_phi(function_t *function, Vec phi); extern int feenox_problem_phi_to_solution(Vec phi); // petsc_ksp.c extern int feenox_problem_solve_petsc_linear(void); extern PetscErrorCode feenox_problem_ksp_monitor(KSP ksp, PetscInt n, PetscReal rnorm, void *dummy); extern int feenox_problem_setup_ksp(KSP ksp); extern int feenox_problem_setup_pc(PC pc); // petsc_snes.c extern int feenox_problem_solve_petsc_nonlinear(void); extern int feenox_problem_setup_snes(SNES snes); extern PetscErrorCode feenox_snes_residual(SNES snes, Vec phi, Vec r, void *ctx); extern PetscErrorCode feenox_snes_jacobian(SNES snes,Vec phi, Mat J, Mat P, void *ctx); extern PetscErrorCode feenox_snes_monitor(SNES snes, PetscInt n, PetscReal rnorm, void *dummy); // petsc_ts.c extern int feenox_problem_solve_petsc_transient(void); extern int feenox_problem_setup_ts(TS ts); extern PetscErrorCode feenox_ts_residual(TS ts, PetscReal t, Vec phi, Vec phi_dot, Vec r, void *ctx); extern PetscErrorCode feenox_ts_jacobian(TS ts, PetscReal t, Vec T, Vec T_dot, PetscReal s, Mat J, Mat P,void *ctx); // slepc_eps.c extern int feenox_problem_solve_slepc_eigen(void); // dirichlet.c extern int feenox_problem_dirichlet_add(size_t j_global, unsigned int g, double value); extern int feenox_problem_multifreedom_add(size_t index, double *coefficients); extern int feenox_problem_mimicked_add(size_t index_guide, size_t index_follower, double coefficient_follower); extern int feenox_problem_dirichlet_eval(void); extern int feenox_problem_dirichlet_set_K(void); extern int feenox_problem_dirichlet_set_M(void); extern int feenox_problem_dirichlet_set_J(Mat J); extern int feenox_problem_dirichlet_set_r(Vec r, Vec phi); extern int feenox_problem_dirichlet_set_phi(Vec phi); extern int feenox_problem_dirichlet_set_phi_dot(Vec phi_dot); extern int feenox_problem_dirichlet_compute_scale(void); #endif // fem.c extern int feenox_fem_elemental_caches_reset(void); extern material_t *feenox_fem_get_material(element_t *e); extern double *feenox_fem_compute_x_at_gauss(element_t *e, unsigned int q, int integration); extern double *feenox_fem_compute_x_at_gauss_if_needed(element_t *e, unsigned int q, int integration, int condition); extern double *feenox_fem_compute_x_at_gauss_if_needed_and_update_var(element_t *e, unsigned int q, int integration, int condition); extern double *feenox_fem_compute_x_at_gauss_and_update_var(element_t *e, unsigned int q, int integration); extern double feenox_fem_determinant(gsl_matrix *); extern gsl_matrix *feenox_fem_matrix_invert(gsl_matrix *direct, gsl_matrix *inverse); extern double feenox_fem_compute_w_det_at_gauss_integration(element_t *e, unsigned int q, int integration); #define feenox_fem_compute_w_det_at_gauss(e, q) feenox_fem_compute_w_det_at_gauss_integration((e), (q), feenox.pde.mesh->integration) extern gsl_matrix *feenox_fem_compute_C(element_t *e); extern gsl_matrix *feenox_fem_compute_H_c_at_gauss(element_t *e, unsigned int q, int integration); extern gsl_matrix *feenox_fem_compute_H_Gc_at_gauss(element_t *e, unsigned int q, int integration); extern gsl_matrix *feenox_fem_compute_invJ_at_gauss(element_t *e, unsigned int q, int integration); extern gsl_matrix *feenox_fem_compute_J(element_t *e, double *xi); extern gsl_matrix *feenox_fem_compute_J_at_gauss(element_t *e, unsigned int q, int integration); extern gsl_matrix *feenox_fem_compute_J_at_gauss_1d(element_t *e, unsigned int q, int integration, gsl_matrix *J); extern gsl_matrix *feenox_fem_compute_J_at_gauss_2d(element_t *e, unsigned int q, int integration, gsl_matrix *J); extern gsl_matrix *feenox_fem_compute_J_square_at_gauss(element_t *e, unsigned int q, int integration, gsl_matrix *J); extern gsl_matrix *feenox_fem_compute_B_c(element_t *e, double *xi); extern gsl_matrix *feenox_fem_compute_B(element_t *e, double *xi); extern gsl_matrix *feenox_fem_compute_B_at_gauss_integration(element_t *e, unsigned int q, int integration); #define feenox_fem_compute_B_at_gauss(e, q) feenox_fem_compute_B_at_gauss_integration((e), (q), feenox.pde.mesh->integration) extern gsl_matrix *feenox_fem_compute_B_Gc_at_gauss(element_t *e, unsigned int q, int integration); extern gsl_matrix *feenox_fem_compute_B_G_at_gauss(element_t *e, unsigned int q, int integration); #ifdef HAVE_PETSC extern PetscInt *feenox_fem_compute_dof_indices(element_t *e, int G); #endif #define feenox_fem_update_coord_vars(val) {\ feenox_var_value(feenox.mesh.vars.x) = val[0];\ feenox_var_value(feenox.mesh.vars.y) = val[1];\ feenox_var_value(feenox.mesh.vars.z) = val[2];\ } // blas.c extern int feenox_blas_Ab(gsl_matrix *A, gsl_vector *b, double alpha, gsl_vector *c); extern int feenox_blas_Atb(gsl_matrix *A, gsl_vector *b, double alpha, gsl_vector *c); extern int feenox_blas_Ab_accum(gsl_matrix *A, gsl_vector *b, double alpha, gsl_vector *c); extern int feenox_blas_Atb_accum(gsl_matrix *A, gsl_vector *b, double alpha, gsl_vector *c); extern int feenox_blas_BtB_accum(gsl_matrix *B, double alpha, gsl_matrix *R); extern int feenox_blas_BtB(gsl_matrix *B, double alpha, gsl_matrix *R); extern int feenox_blas_BtCB_accum(gsl_matrix *B, gsl_matrix *C, gsl_matrix *CB, double alpha, gsl_matrix *R); extern int feenox_blas_BtCB(gsl_matrix *B, gsl_matrix *C, gsl_matrix *CB, double alpha, gsl_matrix *R); extern int feenox_blas_PtCB_accum(gsl_matrix *P, gsl_matrix *C, gsl_matrix *B, gsl_matrix *CB, double alpha, gsl_matrix *R); extern int feenox_blas_PtCB(gsl_matrix *P, gsl_matrix *C, gsl_matrix *B, gsl_matrix *CB, double alpha, gsl_matrix *R); // distribution.c extern int feenox_distribution_init(distribution_t *, const char *name); extern double feenox_distribution_eval(distribution_t *, const double *x, material_t *material); extern double feenox_distribution_eval_property(distribution_t *, const double *x, material_t *material); extern double feenox_distribution_eval_function_global(distribution_t *, const double *x, material_t *material); extern double feenox_distribution_eval_function_local(distribution_t *, const double *x, material_t *material); extern double feenox_distribution_eval_variable_global(distribution_t *, const double *x, material_t *material); extern double feenox_distribution_eval_variable_local(distribution_t *, const double *x, material_t *material); extern int feenox_pull_dependencies_variables_function(var_ll_t **to, function_t *function); extern int feenox_pull_dependencies_functions_function(function_ll_t **to, function_t *function); extern int feenox_depends_on_space(var_ll_t *variables); extern int feenox_depends_on_normal(var_ll_t *variables); extern int feenox_depends_on_time(var_ll_t *variables); extern int feenox_depends_on_function(function_ll_t *functions, function_t *function); extern int feenox_expression_depends_on_space(expr_t *expr); extern int feenox_expression_depends_on_normal(expr_t *expr); // build.c extern int feenox_problem_build(void); extern int feenox_problem_build_element_volumetric(element_t *); extern int feenox_problem_build_element_natural_bc(element_t *, bc_data_t *bc_data); extern int feenox_problem_build_allocate_elemental_objects(element_t *); extern int feenox_problem_build_element_volumetric_gauss_point(element_t *, unsigned int q); extern int feenox_problem_build_elemental_objects_allocate(element_t *); extern int feenox_problem_build_elemental_objects_free(void); extern int feenox_problem_build_assemble(void); extern int feenox_problem_rhs_add(element_t *e, unsigned int q, double *value); extern int feenox_problem_stiffness_add(element_t *e, unsigned int q, gsl_matrix *Kiq); // gradient.c extern int feenox_problem_gradient_compute(void); extern int feenox_problem_gradient_compute_at_element(element_t *, mesh_t *mesh); extern int feenox_problem_gradient_smooth_at_node(node_t *node); // pdes/parse.c extern int feenox_pde_parse_problem_type(const char *token); // cleanup.c extern void feenox_expression_destroy(expr_t *expr); // include problem-dependent virtual methods #include "pdes/methods.h" #endif /* FEENOX_H */ feenox-1.1/src/math/0000755000175000017500000000000014773607300011367 500000000000000feenox-1.1/src/math/expressions.c0000644000175000017500000010222714773607165014052 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX algebraic expressions evaluation routines * * Copyright (C) 2009--2022 Jeremy Theler * * This file is part of Feenox. It is based on ideas posted at * http://stackoverflow.com/questions/1384811/code-golf-mathematical-expression-evaluator-that-respects-pemdas * * Feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Feenox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include #include #include const char operators[] = "&|=!<>+-*/^,()[]"; const char factorseparators[] = "&|=!<>+-*/^,()[] \t\n"; //extern const char operators[]; //extern const char factorseparators[]; char *feenox_ends_in_zero(const char *name) { char *dummy = NULL; if (((dummy = strstr(name, "_0")) != NULL) && (isblank(dummy[2]) || dummy[2] == '\0')) { return dummy; } else { return NULL; } } char *feenox_ends_in_init(const char *name) { char *dummy = NULL; if (((dummy = strstr(name, "_init")) != NULL) && (isblank(dummy[5]) || dummy[5] == '\0' || dummy[5] == '[')) { return dummy; } else { return NULL; } } char *feenox_ends_in_dot(const char *name) { char *dummy; if (((dummy = strstr(name, "_dot")) != NULL) && (isblank(dummy[4]) || dummy[4] == '\0' || dummy[4] == '[')) { return dummy; } else { return NULL; } } int feenox_count_arguments(char *string, size_t *n_chars) { // arguments have to be inside parenthesis or brackets if (string[0] != '(' && string[0] != '[') { feenox_push_error_message("argument list needs to start with a parenthesis"); return -1; } // count how many arguments are there (take into account nested parenthesis) char *s = string+1; size_t n = 1; size_t level = 1; int n_arguments = 1; while (level != 0) { if (*s == '(' || *s == '[') { level++; } else if (*s == ')' || *s == ']') { level--; } else if (*s == '\0') { feenox_push_error_message("argument list needs to be closed with ')'"); return -1; } if (*s == ',' && level == 1) { n_arguments++; } s++; n++; } *s = '\0'; if (n_chars != NULL) { *n_chars = n; } return n_arguments; } int feenox_read_arguments(char *string, int n_arguments, char ***arg, size_t *n_chars) { if (string[0] != '(' && string[0] != '[') { feenox_push_error_message("arguments must start with a parenthesis for functions and with a bracket for vectors or matrices"); return FEENOX_ERROR; } feenox_check_alloc((*arg) = calloc(n_arguments, sizeof(char *))); int i; size_t n = 0; char *dummy = string; char char_backup; for (i = 0; i < n_arguments; i++) { size_t level = 1; dummy++; n++; char *argument = dummy; while (1) { // if level is 1 and next char is ',' or ')' and we are on the last argument, we are done if (level == 1 && ((i != n_arguments-1 && *dummy == ',') || (i == n_arguments-1 && (*dummy == ')' || *dummy == ']')))) { break; } if (*dummy == '(' || *dummy == '[') { level++; } else if (*dummy == ')' || *dummy == ']') { level--; } else if (*dummy == '\0') { feenox_push_error_message("when parsing arguments"); return FEENOX_ERROR; } dummy++; n++; } // put a '\0' after dummy but make a backup of what there was there char_backup = *dummy; *dummy = '\0'; // in argument we have the i-th argument feenox_check_alloc((*arg)[i] = strdup(argument)); *dummy = char_backup; } if (n_chars != NULL) { // the +1 is because of the final closing parenthesis *n_chars = n+1; } return FEENOX_OK; } // parse a string with an algebraic expression and fill in the struct expr int feenox_expression_parse(expr_t *this, const char *orig_string) { if (orig_string == NULL || strcmp(orig_string, "") == 0) { return FEENOX_OK; } // let's make a copy so the parser can break it up as it wants char *string_copy = NULL; feenox_check_alloc(string_copy = strdup(orig_string)); // the expr structure contains another copy of the original string for debugging purposes feenox_check_alloc(this->string = strdup(string_copy)); char *string = string_copy; char *oper = NULL; char last_op = '('; // initially it is like we start with an opening parenthesis size_t level = 1; expr_item_t *item; // TODO: maybe we can get away with half delta_level? size_t delta_level = strlen(operators); while (*string != '\0') { // a string like " - (x" where there's a blank after a minus is wrongly treated so we try to fix those now if ((string[0] == '-' || string[0] == '+') && isblank(string[1])) { char tmp = string[0]; string[0] = string[1]; string[1] = tmp; } if (isblank(*string)) { // blanks are ignored string++; } else if ((oper = strchr(operators, *string)) != NULL) { // handle one of the operators if (*string == '(') { level += delta_level; last_op = '('; string++; } else if (*string == ')') { level -= delta_level; last_op = ')'; string++; // TODO: to avoid problems with spaces a get_next_char() method is needed } else if (last_op == '(' && (string[0] == '-' || string[0] == '+') && (isalpha(string[1]) || string[1] == '(')) { // having "(-something..." is like having "(0-something..." feenox_check_alloc(item = calloc(1, sizeof(expr_item_t))); item->type = EXPR_CONSTANT; item->constant = 0; item->level = level; LL_APPEND(this->items, item); feenox_check_alloc(item = calloc(1, sizeof(expr_item_t))); item->type = EXPR_OPERATOR; item->oper = (string[0] == '+') ? 7 : 8; // hard-coded location of '+'/'-' within operators item->level = level+((item->oper-1)/2)*2; LL_APPEND(this->items, item); string++; } else if ((last_op != '\0' && last_op != ')') && (*oper == '+' || *oper == '-')) { if ((item = feenox_expression_parse_item(string)) == NULL) { feenox_free(string_copy); return FEENOX_ERROR; } item->level = level; LL_APPEND(this->items, item); string += item->n_chars; last_op = '\0'; oper = NULL; // reset the operator because it was not an actual operator feenox_pull_dependencies_variables(&this->variables, item->variables); feenox_pull_dependencies_functions(&this->functions, item->functions); } else if (last_op == '\0' || last_op == ')') { feenox_check_alloc(item = calloc(1, sizeof(expr_item_t))); item->type = EXPR_OPERATOR; // precedence two by two from left to right size_t delta = oper - operators; size_t incr = (delta - (delta % 2)); item->oper = delta + 1; item->level = level + incr; LL_APPEND(this->items, item); string++; last_op = *oper; } else { feenox_push_error_message("two adjacent operators '%c' and '%c'", last_op, *string); feenox_free(string_copy); return FEENOX_ERROR; } } else { // a constant, variable or function if ((item = feenox_expression_parse_item(string)) == NULL) { feenox_free(string_copy); return FEENOX_ERROR; } LL_APPEND(this->items, item); item->level = level; if (item->n_chars <= 0) { feenox_free(string_copy); return FEENOX_ERROR; } string += item->n_chars; last_op = '\0'; feenox_pull_dependencies_variables(&this->variables, item->variables); feenox_pull_dependencies_functions(&this->functions, item->functions); } } if (level != 1) { feenox_push_error_message("unmatched opening bracket in algebraic expression"); feenox_free(string_copy); return FEENOX_ERROR; } else if (oper != NULL && *oper != ')') { feenox_push_error_message("missing argument for operator '%c'", *oper); feenox_free(string_copy); return FEENOX_ERROR; } feenox_free(string_copy); return FEENOX_OK; } // parse a item within an expression (which means a constant, a variable or a function) expr_item_t *feenox_expression_parse_item(const char *string) { expr_item_t *item = NULL; feenox_check_alloc_null(item = calloc(1, sizeof(expr_item_t))); // either an explicit number or an explicit sign or a dot for gringos that write ".1" instead of "0.1" char *backup = NULL; feenox_check_alloc_null(backup = strdup(string)); size_t n = 0; if (isdigit((int)(*string)) || ((*string == '-' || *string == '+' || *string == '.') && isdigit((int)string[1]))) { // a number double constant = 0; int n_int = 0; // sscanf can only return ints, not size_t if (sscanf(string, "%lf%n", &constant, &n_int) == 0) { feenox_free(item); return NULL; } n += n_int; item->type = EXPR_CONSTANT; item->constant = constant; } else { // we got letters char *token = strtok(backup, factorseparators); if (token == NULL || strlen(token) == 0) { feenox_free(backup); feenox_free(item); return NULL; } char *dummy = NULL; int wants_initial_transient = 0; int wants_initial_static = 0; // if the name ends in _0 it means the user wants the initial value if (feenox_ends_in_zero(token) != NULL) { dummy = feenox_ends_in_zero(token); wants_initial_transient = 1; *dummy = '\0'; } // same for _init // if we put if (dummy = feenox_ends_in_init) and the guy returns null we break // the dummy the the feenox_ends_in_zero() got us if (feenox_ends_in_init(token) != NULL) { dummy = feenox_ends_in_init(token); wants_initial_static = 1; *dummy = '\0'; } // cannot ask for both if (wants_initial_transient && wants_initial_static) { feenox_push_error_message("cannot ask for both _0 and _init"); feenox_free(backup); feenox_free(item); return NULL; } // matrix, vector or variable item->type = EXPR_UNDEFINED; var_t *var = NULL; vector_t *vector = NULL; matrix_t *matrix = NULL; builtin_function_t *builtin_function = NULL; builtin_vectorfunction_t *builtin_vectorfunction = NULL; builtin_functional_t *builtin_functional = NULL; function_t *function = NULL; if ((matrix = feenox_get_matrix_ptr(token)) != NULL) { matrix->used = 1; item->type = EXPR_MATRIX; item->matrix = matrix; } else if ((vector = feenox_get_vector_ptr(token)) != NULL) { vector->used = 1; item->type = EXPR_VECTOR; item->vector = vector; } else if ((var = feenox_get_variable_ptr(token)) != NULL) { // check that variables don't need arguments if (string[strlen(token)] == '(' || string[strlen(token)] == '[') { feenox_push_error_message("variable '%s' does not take arguments (it is a variable)", token); feenox_free(backup); feenox_free(item); return NULL; } var->used = 1; item->type = EXPR_VARIABLE; item->variable = var; // mark that this item depends on var var_ll_t *var_item = NULL; feenox_check_alloc_null(var_item = calloc(1, sizeof(var_ll_t))); var_item->var = var; LL_APPEND(item->variables, var_item); } if (matrix != NULL || vector != NULL || var != NULL) { n += strlen(token); if (wants_initial_transient) { n += 2; item->type |= EXPR_INITIAL_TRANSIENT; } else if (wants_initial_static) { n += 5; item->type |= EXPR_INITIAL_STATIC; } // put the underscore back if (wants_initial_transient || wants_initial_static) { *dummy = '_'; } } if ( matrix != NULL || vector != NULL || (function = feenox_get_function_ptr(token)) != NULL || (builtin_function = feenox_get_builtin_function_ptr(token)) != NULL || (builtin_vectorfunction = feenox_get_builtin_vectorfunction_ptr(token)) != NULL || (builtin_functional = feenox_get_builtin_functional_ptr(token)) != NULL) { // copy into argument whatever is after the name char *argument = NULL; feenox_check_alloc_null(argument = strdup(string+strlen(token))); // TODO: differentiate between functions and vectors/matrices // arguments have to be in parenthesis if (*argument != '[' && *argument != '(') { feenox_push_error_message("expected parenthesis or bracket after '%s'", token); feenox_free(argument); feenox_free(backup); feenox_free(item); return NULL; } // read the arguments and keep them as an array of strings size_t n_chars_count; int n_arguments = feenox_count_arguments(argument, &n_chars_count); if (n_arguments <= 0) { feenox_free(backup); feenox_free(item); return NULL; } char **arg = NULL; size_t n_chars_parse; if (feenox_read_arguments(argument, n_arguments, &arg, &n_chars_parse) == FEENOX_ERROR) { feenox_free(backup); feenox_free(item); return NULL; } if (n_chars_count != n_chars_parse) { feenox_push_error_message("internal parser mismatch"); feenox_free(backup); feenox_free(item); return NULL; } // n is the number of characters to parse (it will get copied into the output item_t) // if it is a matrix, vector or variable we already summed the length n += ((matrix == NULL && vector == NULL && var == NULL) ? strlen(token) : 0) + n_chars_count; int n_arguments_max; if (vector != NULL) { if (n_arguments < 1 || n_arguments > 1) { feenox_push_error_message("vector '%s' takes exactly one subindex expression", vector->name); feenox_free(backup); feenox_free(item); return NULL; } n_arguments_max = 1; } else if (matrix != NULL) { if (n_arguments < 2 || n_arguments > 2) { feenox_push_error_message("matrix '%s' takes exactly two subindex expressions", matrix->name); feenox_free(backup); feenox_free(item); return NULL; } n_arguments_max = 2; } else if (builtin_function != NULL) { item->type = EXPR_BUILTIN_FUNCTION; item->builtin_function = builtin_function; if (n_arguments < item->builtin_function->min_arguments) { feenox_push_error_message("function '%s' takes at least %d argument%s instead of %d", token, item->builtin_function->min_arguments, (item->builtin_function->min_arguments==1)?"":"s", n_arguments); feenox_free(backup); feenox_free(item); return NULL; } if (n_arguments > item->builtin_function->max_arguments) { feenox_push_error_message("function '%s' takes at most %d argument%s instead of %d", token, item->builtin_function->max_arguments, (item->builtin_function->max_arguments==1)?"":"s", n_arguments); feenox_free(backup); feenox_free(item); return NULL; } n_arguments_max = item->builtin_function->max_arguments; } else if (builtin_vectorfunction != NULL) { // tenemos una funcion sobre vectores interna item->type = EXPR_BUILTIN_VECTORFUNCTION; item->builtin_vectorfunction = builtin_vectorfunction; if (n_arguments < item->builtin_vectorfunction->min_arguments) { feenox_push_error_message("function '%s' takes at least %d argument%s instead of %d", token, item->builtin_vectorfunction->min_arguments, (item->builtin_vectorfunction->min_arguments==1)?"":"s", n_arguments); feenox_free(backup); feenox_free(item); return NULL; } if (n_arguments > item->builtin_vectorfunction->max_arguments) { feenox_push_error_message("function '%s' takes at most %d argument%s instead of %d", token, item->builtin_vectorfunction->max_arguments, (item->builtin_vectorfunction->max_arguments==1)?"":"s", n_arguments); feenox_free(backup); feenox_free(item); return NULL; } n_arguments_max = item->builtin_vectorfunction->max_arguments; } else if (builtin_functional != NULL) { item->type = EXPR_BUILTIN_FUNCTIONAL; item->builtin_functional = builtin_functional; if (n_arguments < item->builtin_functional->min_arguments) { feenox_push_error_message("functional '%s' takes at least %d argument%s instead of %d", token, item->builtin_functional->min_arguments, (item->builtin_functional->min_arguments==1)?"":"s", n_arguments); feenox_free(backup); feenox_free(item); return NULL; } if (n_arguments > item->builtin_functional->max_arguments) { feenox_push_error_message("functional '%s' takes at most %d argument%s instead of %d", token, item->builtin_functional->max_arguments, (item->builtin_functional->max_arguments==1)?"":"s", n_arguments); feenox_free(backup); feenox_free(item); return NULL; } n_arguments_max = item->builtin_functional->max_arguments; } else if (function != NULL) { function->used = 1; item->type = EXPR_FUNCTION; item->function = function; if (n_arguments != item->function->n_arguments) { feenox_push_error_message("function '%s' takes exactly %d argument%s instead of %d", token, item->function->n_arguments, (item->function->n_arguments==1)?"":"s", n_arguments); feenox_free(backup); feenox_free(item); return NULL; } n_arguments_max = item->function->n_arguments; // mark that this item depends on function function_ll_t *function_item = NULL; feenox_check_alloc_null(function_item = calloc(1, sizeof(function_ll_t))); function_item->function = function; LL_APPEND(item->functions, function_item); if (function->algebraic_expression.items != NULL) { feenox_pull_dependencies_variables(&item->variables, function->algebraic_expression.variables); feenox_pull_dependencies_functions(&item->functions, function->algebraic_expression.functions); } } else { feenox_free(backup); feenox_free(item); return NULL; } if (item->type != EXPR_BUILTIN_VECTORFUNCTION) { feenox_check_alloc_null(item->arg = calloc(n_arguments_max, sizeof(expr_t))); } else { feenox_check_alloc_null(item->vector_arg = calloc(n_arguments_max, sizeof(vector_t *))); } for (int i = 0; i < n_arguments; i++) { if (item->type == EXPR_BUILTIN_VECTORFUNCTION) { feenox_call_null(feenox_strip_blanks(arg[i])); if ((item->vector_arg[i] = feenox_get_vector_ptr(arg[i])) == NULL) { feenox_push_error_message("undefined vector '%s'", arg[i]); feenox_free(backup); feenox_free(item); return NULL; } } else if (item->type == EXPR_BUILTIN_FUNCTIONAL && i == 1) { // if it is a functional the second argument is a variable feenox_call_null(feenox_strip_blanks(arg[i])); if ((item->functional_var_arg = feenox_get_variable_ptr(arg[i])) == NULL) { feenox_free(backup); feenox_free(item); return NULL; } } else { if (feenox_expression_parse(&item->arg[i], arg[i]) != FEENOX_OK) { feenox_free(backup); feenox_free(item); return NULL; } feenox_pull_dependencies_variables(&item->variables, item->arg[i].variables); feenox_pull_dependencies_functions(&item->functions, item->arg[i].functions); } } feenox_free(argument); } if (item->type == EXPR_UNDEFINED) { feenox_push_error_message("unknown symbol '%s'", token); feenox_free(backup); feenox_free(item); return NULL; } } feenox_free(backup); item->n_chars = n; return item; } double feenox_expression_eval(expr_t *this) { if (this == NULL || this->items == NULL) { return 0; } size_t i = 0; size_t j = 0; expr_item_t *item = NULL; //#define DEBUG #ifdef DEBUG printf("\n------ %s -----------\n", this->string); #endif LL_FOREACH(this->items, item) { #ifdef DEBUG printf("factor level %ld\n", item->level); #endif item->tmp_level = item->level; // TODO: replace the switch by pointer to functions (i.e. virtual methods in C++ slang)? switch(item->type & EXPR_BASICTYPE_MASK) { case EXPR_CONSTANT: item->value = item->constant; #ifdef DEBUG printf("constant = %g\n", item->value); #endif break; case EXPR_VARIABLE: switch (item->type) { case EXPR_VARIABLE | EXPR_CURRENT: item->value = feenox_var_value(item->variable); break; case EXPR_VARIABLE | EXPR_INITIAL_TRANSIENT: item->value = *(item->variable->initial_transient); break; case EXPR_VARIABLE | EXPR_INITIAL_STATIC: item->value = *(item->variable->initial_static); break; } #ifdef DEBUG printf("variable %s = %g\n", item->variable->name, item->value); #endif break; case EXPR_VECTOR: // we need to initialize here so we have the size for the check that follows if (item->vector->initialized == 0) { if (feenox_vector_init(item->vector, FEENOX_VECTOR_INITIAL) != FEENOX_OK) { feenox_push_error_message("initialization of vector '%s' failed", item->vector->name); feenox_runtime_error(); } } i = lrint(feenox_expression_eval(&(item->arg[0]))); if (i <= 0 || i > item->vector->size) { feenox_push_error_message("subindex %d out of range for vector %s", i, item->vector->name); feenox_runtime_error(); return 0; } switch (item->type) { case EXPR_VECTOR | EXPR_CURRENT: item->value = gsl_vector_get(item->vector->value, i-1); break; case EXPR_VECTOR | EXPR_INITIAL_TRANSIENT: item->value = gsl_vector_get(item->vector->initial_transient, i-1); break; case EXPR_VECTOR | EXPR_INITIAL_STATIC: item->value = gsl_vector_get(item->vector->initial_static, i-1); break; } break; case EXPR_MATRIX: if (item->matrix->initialized == 0) { if (feenox_matrix_init(item->matrix) != FEENOX_OK) { feenox_push_error_message("initialization of vector '%s' failed", item->vector->name); feenox_runtime_error(); } } i = lrint(feenox_expression_eval(&(item->arg[0]))); if (i <= 0 || i > item->matrix->rows) { feenox_push_error_message("row subindex %d out of range for matrix %s", i, item->matrix->name); feenox_runtime_error(); return 0; } j = lrint(feenox_expression_eval(&(item->arg[1]))); if (j <= 0 || j > item->matrix->cols) { feenox_push_error_message("column subindex %d out of range for matrix %s", j, item->matrix->name); feenox_runtime_error(); return 0; } switch (item->type) { case EXPR_MATRIX | EXPR_CURRENT: item->value = gsl_matrix_get(item->matrix->value, i-1, j-1); break; case EXPR_MATRIX | EXPR_INITIAL_TRANSIENT: item->value = gsl_matrix_get(item->matrix->initial_transient, i-1, j-1); break; case EXPR_MATRIX | EXPR_INITIAL_STATIC: item->value = gsl_matrix_get(item->matrix->initial_static, i-1, j-1); break; } break; case EXPR_BUILTIN_FUNCTION: item->value = item->builtin_function->routine(item); #ifdef DEBUG printf("builtin function %s = %g\n", item->builtin_function->name, item->value); #endif break; case EXPR_BUILTIN_VECTORFUNCTION: item->value = item->builtin_vectorfunction->routine(item->vector_arg); break; case EXPR_BUILTIN_FUNCTIONAL: item->value = item->builtin_functional->routine(item, item->functional_var_arg); break; case EXPR_FUNCTION: item->value = feenox_factor_function_eval(item); #ifdef DEBUG printf("user function %s = %g\n", item->function->name, item->value); #endif break; #ifdef DEBUG default: printf("operator %ld\n", item->oper); #endif } #ifdef DEBUG printf("\n"); #endif } // get the highest level size_t level = 0; LL_FOREACH(this->items, item) { if (item->level > level) { level = item->level; } } char tmp_operator = 0; expr_item_t *E = NULL; expr_item_t *P = NULL; while (level > 0) { for (E = P = this->items; E != NULL; E->tmp_level != 0 && !E->oper ? P=E : NULL, E = E->next) { if (E->tmp_level == level && E->oper != 0) { tmp_operator = operators[E->oper-1]; E = E->next; switch(tmp_operator) { case '&': P->value = (int)P->value & (int)E->value; break; case '|': P->value = (int)P->value | (int)E->value; break; case '=': if (fabs(P->value) < 1 || fabs(E->value) < 1) { P->value = (fabs(P->value - E->value) < feenox_special_var_value(zero))?1:0; } else { P->value = (gsl_fcmp(P->value, E->value, feenox_special_var_value(zero)) == 0)?1:0; } break; case '!': if (fabs(P->value) < 1 || fabs(E->value) < 1) { P->value = (fabs(P->value - E->value) < feenox_special_var_value(zero))?0:1; } else { P->value = (gsl_fcmp(P->value, E->value, feenox_special_var_value(zero)) == 0)?0:1; } break; case '<': P->value = P->value < E->value; break; case '>': P->value = P->value > E->value; break; case '+': P->value += E->value; break; case '-': P->value -= E->value; break; case '*': P->value *= E->value; break; case '/': if (E->value == 0) { feenox_nan_error(); } P->value /= E->value; break; case '^': if (P->value == 0 && E->value == 0) { feenox_nan_error(); } P->value = pow(P->value, E->value); break; } E->tmp_level = 0; } } level--; } if (gsl_isnan(this->items->value) || gsl_isinf(this->items->value)) { // feenox_push_error_message("in '%s'", this->string); feenox_nan_error(); } return this->items->value; } // evaluates the expression contained in the string double feenox_expression_evaluate_in_string(const char *string) { expr_t expr = {NULL, 0, NULL, NULL}; double val; if (feenox_expression_parse(&expr, string) != FEENOX_OK) { return 0; } val = feenox_expression_eval(&expr); // TODO // feenox_destroy_expression(&expr); feenox_free(expr.string); return val; } // this is a wrapper to compute the derivative of an expression with respect to a function double feenox_expression_derivative_wrt_function_gsl_function(double x, void *params) { struct feenox_expression_derivative_params *p = (struct feenox_expression_derivative_params *)params; p->function->dummy_for_derivatives = 1; p->function->dummy_for_derivatives_value = x; double y = feenox_expression_eval(p->expr); p->function->dummy_for_derivatives_value = 0; p->function->dummy_for_derivatives = 0; return y; } double feenox_expression_derivative_wrt_function(expr_t *expr, function_t *function, double x) { gsl_function F; struct feenox_expression_derivative_params p; F.function = &feenox_expression_derivative_wrt_function_gsl_function; p.expr = expr; p.function = function; F.params = &p; double result, abserr; gsl_deriv_central(&F, x, DEFAULT_DERIVATIVE_STEP, &result, &abserr); return result; } // this is a wrapper to compute the derivative of an expression with respect to a function double feenox_expression_derivative_wrt_variable_gsl_function(double x, void *params) { struct feenox_expression_derivative_params *p = (struct feenox_expression_derivative_params *)params; // we need to restore the previous value otherwise // if this is time we screw everything up double x_old = feenox_var_value(p->variable); feenox_var_value(p->variable) = x; double y = feenox_expression_eval(p->expr); feenox_var_value(p->variable) = x_old; return y; } double feenox_expression_derivative_wrt_variable(expr_t *expr, var_t *variable, double x) { gsl_function F; struct feenox_expression_derivative_params p; F.function = &feenox_expression_derivative_wrt_variable_gsl_function; p.expr = expr; p.variable = variable; F.params = &p; double result, abserr; gsl_deriv_central(&F, x, DEFAULT_DERIVATIVE_STEP, &result, &abserr); return result; } // parsea el rango de indices int feenox_parse_range(char *string, const char left_delim, const char middle_delim, const char right_delim, expr_t *a, expr_t *b) { char *first_bracket; char *second_bracket; char *colon; if ((first_bracket = strchr(string, left_delim)) == NULL) { feenox_push_error_message("range '%s' does not start with '%c'", string, left_delim); return FEENOX_ERROR; } if ((second_bracket = strrchr(string, right_delim)) == NULL) { feenox_push_error_message("unmatched '%c' for range in '%s'", left_delim, string); return FEENOX_ERROR; } *second_bracket = '\0'; if ((colon = strchr(string, middle_delim)) == NULL) { feenox_push_error_message("delimiter '%c' not found when giving range", middle_delim); return FEENOX_ERROR; } *colon = '\0'; if (feenox_expression_parse(a, first_bracket+1) != 0) { feenox_push_error_message("in min range expression"); return FEENOX_ERROR; } if (feenox_expression_parse(b, colon+1) != 0) { feenox_push_error_message("in max range expression"); return FEENOX_ERROR; } *second_bracket = right_delim;; *colon = middle_delim; return FEENOX_OK; } int feenox_pull_dependencies_variables(var_ll_t **to, var_ll_t *from) { // pull down all the dependencies of the arguments var_ll_t *var_item_old = NULL; var_ll_t *var_item_new = NULL; LL_FOREACH(from, var_item_old) { feenox_check_alloc(var_item_new = calloc(1, sizeof(var_ll_t))); var_item_new->var = var_item_old->var; LL_APPEND((*to), var_item_new); } return FEENOX_OK; } int feenox_pull_dependencies_functions(function_ll_t **to, function_ll_t *from) { // pull down all the dependencies of the arguments function_ll_t *function_item_old = NULL; function_ll_t *function_item_new = NULL; LL_FOREACH(from, function_item_old) { feenox_check_alloc(function_item_new = calloc(1, sizeof(function_ll_t))); function_item_new->function = function_item_old->function; LL_APPEND((*to), function_item_new); } return FEENOX_OK; } int feenox_depends_on_space(var_ll_t *variables) { var_ll_t *item = NULL; LL_FOREACH(variables, item) { if (item->var != NULL && ((item->var == feenox.mesh.vars.x) || (item->var == feenox.mesh.vars.y) || (item->var == feenox.mesh.vars.z))) { return 1; } } return 0; } int feenox_expression_depends_on_space(expr_t *expr) { return feenox_depends_on_space(expr->variables); } int feenox_depends_on_normal(var_ll_t *variables) { var_ll_t *item = NULL; LL_FOREACH(variables, item) { if (item->var != NULL && ((item->var == feenox.mesh.vars.nx) || (item->var == feenox.mesh.vars.ny) || (item->var == feenox.mesh.vars.nz))) { return 1; } } return 0; } int feenox_expression_depends_on_normal(expr_t *expr) { return feenox_depends_on_normal(expr->variables); } int feenox_depends_on_time(var_ll_t *variables) { var_ll_t *item = NULL; LL_FOREACH(variables, item) { if (item->var != NULL && item->var == feenox.special_vars.t) { return 1; } } return 0; } int feenox_depends_on_function(function_ll_t *functions, function_t *function) { int depends = 0; function_ll_t *item = NULL; LL_FOREACH(functions, item) { if (item->function != NULL) { depends |= (item->function == function); } } return depends; } feenox-1.1/src/math/vector.c0000644000175000017500000001400414773607165012765 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX vector routines * * Copyright (C) 2015--2017 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" // TODO: put the realloc thing inside this one int feenox_create_pointwise_function_vectors(function_t *function) { // the independent values char *name = NULL; feenox_check_minusone(asprintf(&name, "vec_%s", function->name)); feenox_check_alloc(function->vector_value = feenox_define_vector_get_ptr(name, function->data_size)); if (function->data_size != 0) { feenox_call(feenox_vector_init(function->vector_value, FEENOX_VECTOR_NO_INITIAL)); } feenox_free(name); // the arguments feenox_check_alloc(function->vector_argument = calloc(function->n_arguments, sizeof(vector_t *))); if (function->var_argument == NULL) { feenox_check_alloc(function->var_argument = calloc(function->n_arguments, sizeof(double *))); } for (int i = 0; i < function->n_arguments; i++) { if (function->var_argument[i] == NULL) { function->var_argument[i] = feenox.mesh.vars.arr_x[i]; } feenox_check_minusone(asprintf(&name, "vec_%s_%s", function->name, function->var_argument[i]->name)); feenox_check_alloc(function->vector_argument[i] = feenox_define_vector_get_ptr(name, function->data_size)); if (function->data_size != 0) { feenox_call(feenox_vector_init(function->vector_argument[i], FEENOX_VECTOR_NO_INITIAL)); } feenox_free(name); } return FEENOX_OK; } double feenox_vector_get(vector_t *this, const size_t i) { if (this->initialized == 0) { if (feenox_vector_init(this, FEENOX_VECTOR_INITIAL) != FEENOX_OK) { feenox_push_error_message("initialization of vector '%s' failed", this->name); feenox_runtime_error(); } } return gsl_vector_get(feenox_value_ptr(this), i); } double feenox_vector_get_initial_static(vector_t *this, const size_t i) { if (this->initialized == 0) { if (feenox_vector_init(this, FEENOX_VECTOR_INITIAL) != FEENOX_OK) { feenox_push_error_message("initialization of vector '%s' failed", this->name); feenox_runtime_error(); } } return gsl_vector_get(this->initial_static, i); } double feenox_vector_get_initial_transient(vector_t *this, const size_t i) { if (this->initialized == 0) { if (feenox_vector_init(this, FEENOX_VECTOR_INITIAL) != FEENOX_OK) { feenox_push_error_message("initialization of vector '%s' failed", this->name); feenox_runtime_error(); } } return gsl_vector_get(this->initial_transient, i); } int feenox_vector_set(vector_t *this, const size_t i, double value) { if (this->initialized == 0) { if (feenox_vector_init(this, FEENOX_VECTOR_INITIAL) != FEENOX_OK) { feenox_push_error_message("initialization of vector '%s' failed", this->name); return FEENOX_ERROR; } } gsl_vector_set(feenox_value_ptr(this), i, value); return FEENOX_OK; } int feenox_vector_add(vector_t *this, const size_t i, double value) { if (this->initialized == 0) { if (feenox_vector_init(this, FEENOX_VECTOR_INITIAL) != FEENOX_OK) { feenox_push_error_message("initialization of vector '%s' failed", this->name); return FEENOX_ERROR; } } gsl_vector_set(feenox_value_ptr(this), i, gsl_vector_get(feenox_value_ptr(this), i) + value); return FEENOX_OK; } int feenox_vector_set_size(vector_t *this, size_t size) { if (this->initialized) { feenox_push_error_message("cannot set vector '%s' size, it is already initialized", this->name); return FEENOX_ERROR; } this->size = size; return FEENOX_OK; } size_t feenox_vector_get_size(vector_t *this) { return this->size; } // no_initial = 0 means allocate and initialize initial static and initial transient // no_initial = 1 means do not allocate initial int feenox_vector_init(vector_t *this, int no_initial) { int size; int i; expr_t *data; if (this->initialized) { return FEENOX_OK; } if ((size = this->size) == 0 && (size = (int)(round(feenox_expression_eval(&this->size_expr)))) == 0) { feenox_push_error_message("vector '%s' has zero size at initialization", this->name); return FEENOX_ERROR; } else if (size < 0) { feenox_push_error_message("vector '%s' has negative size %d at initialization", this->name, size); return FEENOX_ERROR; } this->size = size; feenox_value_ptr(this) = gsl_vector_calloc(size); if (no_initial == 0) { this->initial_static = gsl_vector_calloc(size); this->initial_transient = gsl_vector_calloc(size); } if (this->datas != NULL) { i = 0; LL_FOREACH(this->datas, data) { gsl_vector_set(feenox_value_ptr(this), i++, feenox_expression_eval(data)); } } /* if (this->function != NULL) { feenox_realloc_vector_ptr(this, this->function->data_value, 0); } */ this->initialized = 1; return FEENOX_OK; } int feenox_instruction_sort_vector(void *arg) { sort_vector_t *sort_vector = (sort_vector_t *)arg; if (sort_vector->v2 == NULL) gsl_sort_vector(sort_vector->v1->value); else gsl_sort_vector2(sort_vector->v1->value, sort_vector->v2->value); if (sort_vector->descending) { gsl_vector_reverse(sort_vector->v1->value); if (sort_vector->v2 != NULL) gsl_vector_reverse(sort_vector->v2->value); } return FEENOX_OK; } feenox-1.1/src/math/builtin_functionals.c0000644000175000017500000006065414773607165015552 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox builtin functionals * * Copyright (C) 2009--2024 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" // from gsl/roots/root.h #define SAFE_FUNC_CALL(f, x, yp) \ do { \ *yp = GSL_FN_EVAL(f,x); \ if (!gsl_finite(*yp)) \ GSL_ERROR("function value is not finite", GSL_EBADFUNC); \ } while (0) double feenox_builtin_derivative(expr_item_t *, var_t *); double feenox_builtin_integral(expr_item_t *, var_t *); double feenox_builtin_simpson(expr_item_t *, var_t *); double feenox_builtin_gauss_kronrod(expr_item_t *, var_t *); double feenox_builtin_gauss_legendre(expr_item_t *, var_t *); double feenox_builtin_prod(expr_item_t *, var_t *); double feenox_builtin_sum(expr_item_t *, var_t *); double feenox_builtin_root(expr_item_t *, var_t *); double feenox_builtin_func_min(expr_item_t *, var_t *); struct builtin_functional_t builtin_functional[N_BUILTIN_FUNCTIONALS] = { {"derivative", 3, 5, &feenox_builtin_derivative}, {"integral", 4, 7, &feenox_builtin_integral}, {"gauss_kronrod", 4, 5, &feenox_builtin_gauss_kronrod}, {"gauss_legendre", 4, 5, &feenox_builtin_gauss_legendre}, {"prod", 4, 4, &feenox_builtin_prod}, {"sum", 4, 4, &feenox_builtin_sum}, {"root", 4, 7, &feenox_builtin_root}, {"func_min", 4, 6, &feenox_builtin_func_min}, }; typedef struct { expr_t *expression; var_t *variable; } gsl_function_arguments_t; ///fu+derivative+usage derivative(f(x), x, a, [h], [p]) ///fu+derivative+desc Computes the derivative of the expression $f(x)$ ///fu+derivative+desc given in the first argument with respect to the variable $x$ ///fu+derivative+desc given in the second argument at the point $x=a$ given in ///fu+derivative+desc the third argument using an adaptive scheme. ///fu+derivative+desc The fourth optional argument $h$ is the initial width ///fu+derivative+desc of the range the adaptive derivation method starts with. ///fu+derivative+desc The fifth optional argument $p$ is a flag that indicates ///fu+derivative+desc whether a backward ($p < 0$), centered ($p = 0$) or forward ($p > 0$) ///fu+derivative+desc stencil is to be used. ///fu+derivative+desc This functional calls the GSL functions ///fu+derivative+desc `gsl_deriv_backward`, `gsl_deriv_central` or `gsl_deriv_forward` ///fu+derivative+desc according to the indicated flag $p$. ///fu+derivative+desc Defaults are $h = (1/2)^{-10} \approx 9.8 \times 10^{-4}$ and $p = 0$. ///fu+derivative+math \left. \frac{d}{dx} \Big[ f(x) \Big] \right|_{x = a} double feenox_builtin_derivative(expr_item_t *a, var_t *var_x) { double error; double x, x_old; double h; double result; gsl_function function_to_derive; gsl_function_arguments_t function_arguments; // nos acordamos cuanto vale x para despues volver a dejarle ese valor x_old = feenox_var_value(var_x); x = feenox_expression_eval(&a->arg[2]); if ((h = feenox_expression_eval(&a->arg[3])) == 0) { h = DEFAULT_DERIVATIVE_STEP; } function_arguments.expression = &a->arg[0]; function_arguments.variable = var_x; function_to_derive.function = feenox_gsl_function; function_to_derive.params = (void *)(&function_arguments); if (feenox_expression_eval(&a->arg[4]) == 0) { gsl_deriv_central(&function_to_derive, x, h, &result, &error); } else if (feenox_expression_eval(&a->arg[4]) > 0) { gsl_deriv_forward(&function_to_derive, x, h, &result, &error); } else { gsl_deriv_backward(&function_to_derive, x, h, &result, &error); } // le volvemos a poner el valor de x que tenia antes feenox_var_value(var_x) = x_old; return result; } ///fu+integral+usage integral(f(x), x, a, b, [eps], [k], [max_subdivisions]) ///fu+integral+desc Computes the integral of the expression $f(x)$ ///fu+integral+desc given in the first argument with respect to variable $x$ ///fu+integral+desc given in the second argument over the interval $[a,b]$ given ///fu+integral+desc in the third and fourth arguments respectively using an adaptive ///fu+integral+desc scheme, in which the domain is divided into a number of maximum number ///fu+integral+desc of subintervals ///fu+integral+desc and a fixed-point Gauss-Kronrod-Patterson scheme is applied to each ///fu+integral+desc quadrature subinterval. Based on an estimation of the error committed, ///fu+integral+desc one or more of these subintervals may be split to repeat ///fu+integral+desc the numerical integration algorithm with a refined division. ///fu+integral+desc The fifth optional argument $\epsilon$ is is a relative tolerance ///fu+integral+desc used to check for convergence. It corresponds to GSL's `epsrel` ///fu+integral+desc parameter (`epsabs` is set to zero). ///fu+integral+desc The sixth optional argument $1\leq k \le 6$ is an integer key that ///fu+integral+desc indicates the integration rule to apply in each interval. ///fu+integral+desc It corresponds to GSL's parameter `key`. ///fu+integral+desc The seventh optional argument gives the maximum number of subdivisions, ///fu+integral+desc which defaults to 1024. ///fu+integral+desc If the integration interval $[a,b]$ if finite, this functional calls ///fu+integral+desc the GSL function `gsl_integration_qag`. If $a$ is less that minus the ///fu+integral+desc internal variable `infinite`, $b$ is greater that `infinite` or both ///fu+integral+desc conditions hold, GSL functions `gsl_integration_qagil`, ///fu+integral+desc `gsl_integration_qagiu` or `gsl_integration_qagi` are called. ///fu+integral+desc The condition of finiteness of a fixed range $[a,b]$ can thus be ///fu+integral+desc changed by modifying the internal variable `infinite`. ///fu+integral+desc Defaults are $\epsilon = (1/2)^{-10} \approx 10^{-3}$ and $k=3$. ///fu+integral+desc The maximum numbers of subintervals is limited to 1024. ///fu+integral+desc Due to the adaptivity nature of the integration method, this function ///fu+integral+desc gives good results with arbitrary integrands, even for ///fu+integral+desc infinite and semi-infinite integration ranges. However, for certain ///fu+integral+desc integrands, the adaptive algorithm may be too expensive or even fail ///fu+integral+desc to converge. In these cases, non-adaptive quadrature functionals ought to ///fu+integral+desc be used instead. ///fu+integral+desc See GSL reference for further information. ///fu+integral+math \int_a^b f(x) \, dx double feenox_builtin_integral(expr_item_t *a, var_t *var_x) { double x_old; double x_lower; double x_upper; double epsrel; double result; // TODO: ver como informar al usuario estos valores double error; int intervals; int pointskey; gsl_integration_workspace *w; gsl_function function_to_integrate; gsl_function_arguments_t function_arguments; // nos acordamos cuanto vale x para despues volver a dejarle ese valor x_old = feenox_var_value(var_x); x_lower = feenox_expression_eval(&a->arg[2]); x_upper = feenox_expression_eval(&a->arg[3]); if ((epsrel = feenox_expression_eval(&a->arg[4])) == 0) { epsrel = DEFAULT_INTEGRATION_TOLERANCE; } if ((pointskey = (int)feenox_expression_eval(&a->arg[5])) == 0) { pointskey = DEFAULT_INTEGRATION_KEY; } if ((intervals = (int)feenox_expression_eval(&a->arg[6])) == 0) { intervals = DEFAULT_INTEGRATION_INTERVALS; } function_arguments.expression = &a->arg[0]; function_arguments.variable = var_x; function_to_integrate.function = feenox_gsl_function; function_to_integrate.params = (void *)(&function_arguments); // TODO: poner en aux para no tener que hacer alloc cada vez w = gsl_integration_workspace_alloc(intervals); if (x_lower < -0.9*feenox_special_var_value(infinite) && x_upper > +0.9*feenox_special_var_value(infinite)) { gsl_integration_qagi(&function_to_integrate, 1e-8, epsrel, intervals, w, &result, &error); } else if (x_lower < -0.9*feenox_special_var_value(infinite)) { gsl_integration_qagil(&function_to_integrate, x_upper, 1e-8, epsrel, intervals, w, &result, &error); } else if (x_upper > +0.9*feenox_special_var_value(infinite)) { gsl_integration_qagiu(&function_to_integrate, x_lower, 1e-8, epsrel, intervals, w, &result, &error); } else { gsl_integration_qag(&function_to_integrate, x_lower, x_upper, 1e-8, epsrel, intervals, pointskey, w, &result, &error); } // le volvemos a poner el valor de x que tenia antes feenox_var_value(var_x) = x_old; gsl_integration_workspace_free(w); return result; } ///fu+gauss_kronrod+usage gauss_kronrod(f(x), x, a, b, [eps]) ///fu+gauss_kronrod+desc Computes the integral of the expression $f(x)$ ///fu+gauss_kronrod+desc given in the first argument with respect to variable $x$ ///fu+gauss_kronrod+desc given in the second argument over the interval $[a,b]$ given ///fu+gauss_kronrod+desc in the third and fourth arguments respectively using a ///fu+gauss_kronrod+desc non-adaptive procedure which uses fixed Gauss-Kronrod-Patterson ///fu+gauss_kronrod+desc abscissae to sample the integrand at a maximum of 87 points. ///fu+gauss_kronrod+desc It is provided for fast integration of smooth functions. ///fu+gauss_kronrod+desc The algorithm applies the Gauss-Kronrod 10-point, 21-point, ///fu+gauss_kronrod+desc 43-point and 87-point integration rules in succession until an ///fu+gauss_kronrod+desc estimate of the integral is achieved within the relative tolerance ///fu+gauss_kronrod+desc given in the fifth optional argument $\epsilon$ ///fu+gauss_kronrod+desc It corresponds to GSL's `epsrel` parameter (`epsabs` is set to zero). ///fu+gauss_kronrod+desc The rules are designed in such a way that each rule uses all ///fu+gauss_kronrod+desc the results of its predecessors, in order to minimize the total ///fu+gauss_kronrod+desc number of function evaluations. ///fu+gauss_kronrod+desc Defaults are $\epsilon = (1/2)^{-10} \approx 10^{-3}$. ///fu+gauss_kronrod+desc See GSL reference for further information. ///fu+gauss_kronrod+math \int_a^b f(x) \, dx double feenox_builtin_gauss_kronrod(expr_item_t *a, var_t *var_x) { double error; double x_old; double x_lower; double x_upper; double epsrel; double result; size_t neval; gsl_function function_to_integrate; gsl_function_arguments_t function_arguments; // nos acordamos cuanto vale x para despues volver a dejarle ese valor x_old = feenox_var_value(var_x); x_lower = feenox_expression_eval(&a->arg[2]); x_upper = feenox_expression_eval(&a->arg[3]); if ((epsrel = feenox_expression_eval(&a->arg[4])) == 0) { epsrel = DEFAULT_INTEGRATION_TOLERANCE; } function_arguments.expression = &a->arg[0]; function_arguments.variable = var_x; function_to_integrate.function = feenox_gsl_function; function_to_integrate.params = (void *)(&function_arguments); gsl_integration_qng(&function_to_integrate, x_lower, x_upper, 0, epsrel, &result, &error, &neval); // le volvemos a poner el valor de x que tenia antes feenox_var_value(var_x) = x_old; return result; } ///fu+gauss_legendre+usage gauss_legendre(f(x), x, a, b, [n]) ///fu+gauss_legendre+desc Computes the integral of the expression $f(x)$ ///fu+gauss_legendre+desc given in the first argument with respect to variable $x$ ///fu+gauss_legendre+desc given in the second argument over the interval $[a,b]$ given ///fu+gauss_legendre+desc in the third and fourth arguments respectively using the ///fu+gauss_legendre+desc $n$-point Gauss-Legendre rule, where $n$ is given in the ///fu+gauss_legendre+desc optional fourth argument. ///fu+gauss_legendre+desc It is provided for fast integration of smooth functions with ///fu+gauss_legendre+desc known polynomic order (it is exact for polynomials of order ///fu+gauss_legendre+desc $2n-1$). ///fu+gauss_legendre+desc This functional calls GSL function `gsl_integration_glfixedp`. ///fu+gauss_legendre+desc Default is $n = 12$. ///fu+gauss_legendre+desc See GSL reference for further information. ///fu+gauss_legendre+math \int_a^b f(x) \, dx double feenox_builtin_gauss_legendre(expr_item_t *a, var_t *var_x) { double x_old; double x_lower; double x_upper; double result; size_t n; gsl_function function_to_integrate; gsl_function_arguments_t function_arguments; gsl_integration_glfixed_table *points; // nos acordamos cuanto vale x para despues volver a dejarle ese valor x_old = feenox_var_value(var_x); x_lower = feenox_expression_eval(&a->arg[2]); x_upper = feenox_expression_eval(&a->arg[3]); if ((n = (int)feenox_expression_eval(&a->arg[4])) == 0) { n = 12; } function_arguments.expression = &a->arg[0]; function_arguments.variable = var_x; function_to_integrate.function = feenox_gsl_function; function_to_integrate.params = (void *)(&function_arguments); // TODO: poner en aux para no tener que hacer alloc cada vez points = gsl_integration_glfixed_table_alloc(n); result = gsl_integration_glfixed(&function_to_integrate, x_lower, x_upper, points); gsl_integration_glfixed_table_free(points); // le volvemos a poner el valor de x que tenia antes feenox_var_value(var_x) = x_old; return result; } // TODO: doble adaptivo ///fu+prod+usage prod(f(i), i, a, b) ///fu+prod+desc Computes product of the $N=b-a$ expressions $f(i)$ ///fu+prod+desc given in the first argument by varying the variable~$i$ ///fu+prod+desc given in the second argument between~$a$ ///fu+prod+desc given in the third argument and~$b$ ///fu+prod+desc given in the fourth argument,~$i = a, a+1, \dots ,b-1,b$. ///fu+prod+math \prod_{i=a}^b f_i double feenox_builtin_prod(expr_item_t *a, var_t *var_x) { int i; int i_lower, i_upper; double x_old; double S; // nos acordamos cuanto vale x para despues volver a dejarle ese valor x_old = feenox_var_value(var_x); i_lower = (int)(round(feenox_expression_eval(&a->arg[2]))); i_upper = (int)(round(feenox_expression_eval(&a->arg[3]))); S = 1; for (i = i_lower; i <= i_upper; i++) { feenox_var_value(var_x) = (double)i; S *= feenox_expression_eval(&a->arg[0]); } feenox_var_value(var_x) = x_old; return S; } ///fu+sum+usage sum(f_i, i, a, b) ///fu+sum+desc Computes sum of the $N=b-a$ expressions $f_i$ ///fu+sum+desc given in the first argument by varying the variable $i$ ///fu+sum+desc given in the second argument between $a$ ///fu+sum+desc given in the third argument and $b$ ///fu+sum+desc given in the fourth argument, $i=a,a+1,\dots,b-1,b$. ///fu+sum+math \sum_{i=a}^b f_i double feenox_builtin_sum(expr_item_t *a, var_t *var_x) { int i; int i_lower, i_upper; double x_old; double S; // nos acordamos cuanto vale x para despues volver a dejarle ese valor x_old = feenox_var_value(var_x); i_lower = (int)(round(feenox_expression_eval(&a->arg[2]))); i_upper = (int)(round(feenox_expression_eval(&a->arg[3]))); S = 0; for (i = i_lower; i <= i_upper; i++) { feenox_var_value(var_x) = (double)i; S += feenox_expression_eval(&a->arg[0]); } feenox_var_value(var_x) = x_old; return S; } ///fu+root+function_name root ///fu+root+usage root(f(x), x, a, b, [eps], [alg], [p]) ///fu+root+math \left\{ x \in [a,b] / f(x) = 0 \right \} ///fu+root+desc Computes the value of the variable $x$ given in the second argument ///fu+root+desc which makes the expression $f(x)$ given in the first argument to ///fu+root+desc be equal to zero by using a root bracketing algorithm. ///fu+root+desc The root should be in the range $[a,b]$ given by the third and fourth arguments. ///fu+root+desc The optional fifth argument $\epsilon$ gives a relative tolerance ///fu+root+desc for testing convergence, corresponding to GSL `epsrel` (note that ///fu+root+desc `epsabs` is set also to $\epsilon)$. ///fu+root+desc The sixth optional argument is an integer which indicates the ///fu+root+desc algorithm to use: ///fu+root+desc 0 (default) is `brent`, ///fu+root+desc 1 is `falsepos` and ///fu+root+desc 2 is `bisection`. ///fu+root+desc See the GSL documentation for further information on the algorithms. ///fu+root+desc The seventh optional argument $p$ is a flag that indicates how to proceed ///fu+root+desc if the sign of $f(a)$ is equal to the sign of $f(b)$. ///fu+root+desc If $p=0$ (default) an error is raised, otherwise it is not. ///fu+root+desc If more than one root is contained in the specified range, the first ///fu+root+desc one to be found is returned. The initial guess is $x_0 = (a+b)/2$. ///fu+root+desc If no roots are contained in the range and ///fu+root+desc $p \neq 0$, the returned value can be any value. ///fu+root+desc Default is $\epsilon = (1/2)^{-10} \approx 10^{3}$. double feenox_builtin_root(expr_item_t *a, var_t *var_x) { int iter; int gsl_status; double x, x_old; double x_lower, x_upper; double f_lower, f_upper; double tmp; double epsrel; gsl_root_fsolver *s = NULL; gsl_function function_to_solve; gsl_function_arguments_t function_arguments; int nocomplain; int max_iter = DEFAULT_ROOT_MAX_TER; // evaluamos el intervalo donde sospechamos esta la solucion // nos acordamos cuanto vale x para despues volver a dejarle ese valor x_old = feenox_var_value(var_x); x_lower = feenox_expression_eval(&a->arg[2]); x_upper = feenox_expression_eval(&a->arg[3]); // si estan al reves los damos vuelta para evitar GSL_EINVAL if (x_lower > x_upper) { // manual de la CZ1000 de 1981 tmp = x_lower; x_lower = x_upper; x_upper = tmp; } // arrancamos desde la mitad x = 0.5*(x_lower + x_upper); // evaluamos la precision buscada (no necesariamente es una constante) if ((epsrel = feenox_expression_eval(&a->arg[4])) == 0) { epsrel = DEFAULT_ROOT_TOLERANCE; } // el algoritmo // TODO: poner en aux para no tener que hacer alloc cada vez switch((int)feenox_expression_eval(&a->arg[5])) { case 0: s = gsl_root_fsolver_alloc(gsl_root_fsolver_brent); break; case 1: s = gsl_root_fsolver_alloc(gsl_root_fsolver_falsepos); break; case 2: s = gsl_root_fsolver_alloc(gsl_root_fsolver_bisection); break; } // un flag que nos indica si tenemos que ser quejosos o no nocomplain = feenox_expression_eval(&a->arg[6]); function_arguments.expression = &a->arg[0]; function_arguments.variable = var_x; function_to_solve.function = feenox_gsl_function; function_to_solve.params = (void *)(&function_arguments); // apagamos el handler para mirar el do not straddle y=0 nosotros gsl_set_error_handler_off(); // miramos nosotros si el rango atrapa una raiz o no SAFE_FUNC_CALL (&function_to_solve, x_lower, &f_lower); SAFE_FUNC_CALL (&function_to_solve, x_upper, &f_upper); if ((f_lower < 0.0 && f_upper < 0.0) || (f_lower > 0.0 && f_upper > 0.0)) { feenox_var_value(var_x) = x_old; if (nocomplain) { return 0; } else { int on_gsl_error = (int)(feenox_var_value(feenox_special_var(on_gsl_error))); if (!(on_gsl_error & ON_ERROR_NO_REPORT)) { feenox_push_error_message("range does not contain a root, f(%g) = %g and f(%g) = %g", x_lower, f_lower, x_upper, f_upper); feenox_pop_errors(); } if (!(on_gsl_error & ON_ERROR_NO_QUIT)) { feenox_polite_exit(FEENOX_ERROR); } } } gsl_root_fsolver_set(s, &function_to_solve, x_lower, x_upper); // volvemos al poner el handler para lo que sigue gsl_set_error_handler(feenox_gsl_handler); // si no tenemos que ser quejosos entonces sacamos temporalmente // el handler de errores de la GSL if (nocomplain) { } else { gsl_root_fsolver_set(s, &function_to_solve, x_lower, x_upper); } iter = 0; do { iter++; gsl_root_fsolver_iterate(s); x = gsl_root_fsolver_root(s); x_lower = gsl_root_fsolver_x_lower(s); x_upper = gsl_root_fsolver_x_upper(s); gsl_status= gsl_root_test_interval(x_lower, x_upper, epsrel, epsrel); } while (gsl_status == GSL_CONTINUE && iter < max_iter); feenox_var_value(var_x) = x_old; gsl_root_fsolver_free(s); return x; } ///fu+func_min+function_name func_min ///fu+func_min+escaped_name func\_min ///fu+func_min+desc Finds the value of the variable $x$ given in the second argument ///fu+func_min+desc which makes the expression $f(x)$ given in the first argument to ///fu+func_min+desc be local a minimum in the in the range $[a,b]$ given by ///fu+func_min+desc the third and fourth arguments. If there are many local minima, ///fu+func_min+desc which one is returned cannot be known beforehand. ///fu+func_min+desc The optional fifth argument $\epsilon$ gives a relative tolerance ///fu+func_min+desc for testing convergence, corresponding to GSL `epsrel` (note that ///fu+func_min+desc `epsabs` is set also to $\epsilon)$. ///fu+func_min+desc The sixth optional argument is an integer which indicates the ///fu+func_min+desc algorithm to use: ///fu+func_min+desc 0 (default) is `quad_golden`, ///fu+func_min+desc 1 is `brent` and ///fu+func_min+desc 2 is `goldensection`. ///fu+func_min+desc See the GSL documentation for further information on the algorithms: ///fu+func_min+desc ///fu+func_min+desc Default is $\epsilon = (1/2)^{-20} \approx 9.6\times 10^{-7}$. ///fu+func_min+usage y = func_min(f(x), x, a, b, [eps], [alg]) ///fu+func_min+math y = \left\{ x \in [a,b] / f(x) = \min_{[a,b]} f(x) \right \} double feenox_builtin_func_min(expr_item_t *a, var_t *var_x) { // keep the old value from x to restore it after we are done double x_old = feenox_var_value(var_x); double x_lower = feenox_expression_eval(&a->arg[2]); double x_upper = feenox_expression_eval(&a->arg[3]); double epsrel = feenox_expression_eval(&a->arg[4]); if (epsrel == 0) { epsrel = DEFAULT_ROOT_TOLERANCE; } const gsl_min_fminimizer_type *T; switch((int)feenox_expression_eval(&a->arg[5])) { case 0: T = gsl_min_fminimizer_quad_golden; break; case 1: T = gsl_min_fminimizer_brent; break; case 2: T = gsl_min_fminimizer_goldensection; break; default: T = gsl_min_fminimizer_quad_golden; break; } // these guys are needed for GSL gsl_function_arguments_t function_arguments; function_arguments.expression = &a->arg[0]; function_arguments.variable = var_x; gsl_function function_to_solve; function_to_solve.function = feenox_gsl_function; function_to_solve.params = (void *)(&function_arguments); // TODO: store in aux to avoid having to allocate each time gsl_min_fminimizer *s = gsl_min_fminimizer_alloc(T); // try to find a good initial guess double initial_factors[] = {0.5, 0.25, 0.75, 0.125, 1-0.125, 0.0625, 1-0.0625, 0.025, 1-0.025, 0.01, 0.99}; gsl_set_error_handler_off(); double x = 0; int gsl_status = GSL_SUCCESS; for (int i = 0; i < sizeof(initial_factors)/sizeof(initial_factors[0]); i++) { x = initial_factors[i] * x_lower+ (1-initial_factors[i]) * x_upper; gsl_status = gsl_min_fminimizer_set(s, &function_to_solve, x, x_lower, x_upper); if (gsl_status == GSL_SUCCESS) { break; } } gsl_set_error_handler(feenox_gsl_handler); if (gsl_status != GSL_SUCCESS) { feenox_var_value(var_x) = x_old; return (feenox_gsl_function(x_lower, function_to_solve.params) < feenox_gsl_function(x_upper, function_to_solve.params)) ? x_lower : x_upper; } int iter = 0; do { iter++; gsl_min_fminimizer_iterate(s); x = gsl_min_fminimizer_x_minimum(s); x_lower = gsl_min_fminimizer_x_lower(s); x_upper = gsl_min_fminimizer_x_upper(s); gsl_status = gsl_min_test_interval(x_lower, x_upper, epsrel, epsrel); } while (gsl_status == GSL_CONTINUE && iter < DEFAULT_ROOT_MAX_TER); feenox_var_value(var_x) = x_old; gsl_min_fminimizer_free(s); return x; } double feenox_gsl_function(double x, void *params) { double y; gsl_function_arguments_t *arguments = (gsl_function_arguments_t *)params; feenox_var_value(arguments->variable) = x; y = feenox_expression_eval(arguments->expression); if (gsl_isnan(y) || gsl_isinf(y)) { feenox_nan_error(); } return y; } feenox-1.1/src/math/dae.c0000644000175000017500000004341614773607165012225 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * DAE evaluation routines * * Copyright (C) 2009--2023 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #ifdef HAVE_SUNDIALS #include #endif extern const char factorseparators[]; // API int feenox_add_time_path(const char *string) { expr_t *expr = NULL; feenox_check_alloc(expr = calloc(1, sizeof(expr_t))); feenox_call(feenox_expression_parse(expr, string)); LL_APPEND(feenox.time_paths, expr); return FEENOX_OK; } // API int feenox_phase_space_add_object(const char *string, int differential) { var_t *variable = NULL; vector_t *vector = NULL; matrix_t *matrix = NULL; char *buffer = NULL; phase_object_t *phase_object = NULL; feenox_check_alloc(phase_object = calloc(1, sizeof(phase_object_t))); if ((vector = feenox_get_vector_ptr(string)) != NULL) { phase_object->vector = vector; phase_object->name = vector->name; feenox_check_minusone(asprintf(&buffer, "%s_dot", vector->name)); feenox_check_null(phase_object->vector_dot = feenox_define_vector_get_ptr(buffer, 0)); feenox_free(buffer); } else if ((matrix = feenox_get_matrix_ptr(string)) != NULL) { feenox_push_error_message("matrix in phase space to be done"); feenox_free(phase_object); return FEENOX_ERROR; /* phase_object->matrix = matrix; phase_object->name = matrix->name; unsigned int cols = feenox_expression_eval(&matrix->cols_expr); if (cols == 0) { feenox_push_error_message("matrix '%s' cols evaluates to zero", string); return FEENOX_ERROR; } unsigned int rows = feenox_expression_eval(&matrix->rows_expr); if (rows == 0) { feenox_push_error_message("matrix '%s' rows evaluates to zero", string); return FEENOX_ERROR; } feenox_check_minusone(asprintf(&buffer, "%s_dot", matrix->name)); feenox_check_null(phase_object->matrix_dot = feenox_define_matrix_get_ptr(buffer, rows, cols)); feenox_free(buffer); */ } else { if ((variable = feenox_get_or_define_variable_get_ptr(string)) == NULL) { return FEENOX_ERROR; } phase_object->variable = variable; phase_object->name = variable->name; feenox_check_minusone(asprintf(&buffer, "%s_dot", variable->name)); if ((phase_object->variable_dot = feenox_get_or_define_variable_get_ptr(buffer)) == NULL) { return FEENOX_ERROR; } feenox_free(buffer); } if (differential) { phase_object->differential = 1; } LL_APPEND(feenox.dae.phase_objects, phase_object); return FEENOX_OK; } int feenox_add_dae(const char *lhs, const char *rhs) { char *dummy; phase_object_t *phase_object; dae_t *dae = NULL; feenox_check_alloc(dae = calloc(1, sizeof(dae_t))); if (feenox.dae.daes == NULL) { // if this is the first DAE we define a instruction if ((feenox.dae.instruction = feenox_add_instruction_and_get_ptr(&feenox_instruction_dae, NULL)) == NULL) { return FEENOX_ERROR; } // and we need to put a "finite-state machine" in mode "reading daes" // to prevent other instructions to be defined before finishing the DAEs // this flag cannot be in the parser structure feenox.dae.reading_daes = 1; } // TODO: parse ranges dae->vector = feenox_get_first_vector(lhs); // TODO: asprintf size_t n = strlen(rhs)+strlen(lhs)+8; char *residual = NULL; feenox_check_alloc(residual = malloc(n)); snprintf(residual, n, "(%s)-(%s)", rhs, lhs); // check if the equation is differential or algebraic if ((dummy = feenox_find_first_dot(residual)) != NULL) { int found = 0; LL_FOREACH(feenox.dae.phase_objects, phase_object) { if (strcmp(dummy, phase_object->name) == 0) { phase_object->differential = 1; found = 1; } } feenox_free(dummy); if (found == 0) { feenox_push_error_message("requested derivative of object '%s' but it is not in the phase space", dummy); return FEENOX_ERROR; } } feenox_call(feenox_expression_parse(&dae->residual, residual)); size_t n_daes; dae_t *tmp; LL_COUNT(feenox.dae.daes, tmp, n_daes); if (n_daes == feenox.dae.dimension) { // if this is the last equation, check if there were any other instructions if (feenox.last_defined_instruction != feenox.dae.instruction) { feenox_push_error_message("cannot have instructions within DAEs\n"); return FEENOX_ERROR; } // turn off the "finite-state machine" feenox.dae.reading_daes = 0; } feenox_free(residual); LL_APPEND(feenox.dae.daes, dae); return FEENOX_OK; } char *feenox_find_first_dot(const char *s) { char *line; feenox_check_alloc_null(line = strdup(s)); char *token = NULL; char *dummy = NULL; char *wanted = NULL; token = strtok(line, factorseparators); while (token != NULL) { if ((dummy = strstr(token, "_dot")) != NULL) { *dummy = '\0'; wanted = strdup(token); feenox_free(line); return wanted; } token = strtok(NULL, factorseparators); } feenox_free(line); return NULL; } int feenox_dae_init(void) { #ifdef HAVE_SUNDIALS if (sizeof(sunrealtype) != sizeof(double)) { feenox_push_error_message("SUNDIALS's realtype is not double"); return FEENOX_ERROR; } // first we compute the size of the phase space feenox.dae.dimension = 0; phase_object_t *phase_object = NULL; LL_FOREACH(feenox.dae.phase_objects, phase_object) { if (phase_object->variable != NULL) { phase_object->size = 1; } else if (phase_object->vector != NULL) { if (!phase_object->vector->initialized) { feenox_call(feenox_vector_init(phase_object->vector, FEENOX_VECTOR_INITIAL)); } if (!phase_object->vector_dot->initialized) { phase_object->vector_dot->size = phase_object->vector->size; feenox_call(feenox_vector_init(phase_object->vector_dot, FEENOX_VECTOR_INITIAL)); } phase_object->size = phase_object->vector->size; } else if (phase_object->matrix != NULL) { if (!phase_object->matrix->initialized) { feenox_call(feenox_matrix_init(phase_object->matrix)); } if (!phase_object->matrix_dot->initialized) { feenox_call(feenox_matrix_init(phase_object->matrix_dot)); } phase_object->size = phase_object->matrix->rows * phase_object->matrix->cols; } feenox.dae.dimension += phase_object->size; } if (feenox.dae.dimension == 0) { feenox_push_error_message("empty phase space in PHASE_SPACE keyword"); return FEENOX_ERROR; } feenox_check_alloc(feenox.dae.phase_value = calloc(feenox.dae.dimension, sizeof(double *))); feenox_check_alloc(feenox.dae.phase_derivative = calloc(feenox.dae.dimension, sizeof(double *))); sunindextype i = 0; LL_FOREACH(feenox.dae.phase_objects, phase_object) { if (phase_object->variable != NULL) { phase_object->offset = i; feenox.dae.phase_value[i] = feenox_value_ptr(phase_object->variable); feenox.dae.phase_derivative[i] = feenox_value_ptr(phase_object->variable_dot); i++; } else if (phase_object->vector != NULL) { phase_object->offset = i; sunindextype k = 0; for (k = 0; k < phase_object->vector->size; k++) { feenox.dae.phase_value[i] = gsl_vector_ptr(feenox_value_ptr(phase_object->vector), k); feenox.dae.phase_derivative[i] = gsl_vector_ptr(feenox_value_ptr(phase_object->vector_dot), k); i++; } } else if (phase_object->matrix != NULL) { phase_object->offset = i; int k = 0; int l = 0; for (k = 0; k < phase_object->matrix->rows; k++) { for (l = 0; l < phase_object->matrix->cols; l++) { feenox.dae.phase_value[i] = gsl_matrix_ptr(feenox_value_ptr(phase_object->matrix), k, l); feenox.dae.phase_derivative[i] = gsl_matrix_ptr(feenox_value_ptr(phase_object->matrix_dot), k, l); i++; } } } } if (i != feenox.dae.dimension) { feenox_push_error_message("internal mismatch of phase space entities, %d vs %d", feenox.dae.dimension, i); return FEENOX_ERROR; } // process the DAEs i = 0; dae_t *dae = NULL; LL_FOREACH(feenox.dae.daes, dae) { if (dae->matrix != NULL) { if (!dae->matrix->initialized) { feenox_call(feenox_matrix_init(dae->matrix)); } dae->i_min = (dae->expr_i_min.items != NULL) ? feenox_expression_eval(&dae->expr_i_min)-1 : 0; dae->i_max = (dae->expr_i_max.items != NULL) ? feenox_expression_eval(&dae->expr_i_max) : dae->matrix->rows; if (dae->i_max <= dae->i_min) { feenox_push_error_message("i_max %d is smaller or equal than i_min %d", dae->i_max, dae->i_min+1); } dae->j_min = (dae->expr_j_min.items != NULL) ? feenox_expression_eval(&dae->expr_j_min)-1 : 0; dae->j_max = (dae->expr_j_max.items != NULL) ? feenox_expression_eval(&dae->expr_j_max) : dae->matrix->cols; if (dae->j_max <= dae->j_min) { feenox_push_error_message("j_max %d is smaller or equal than j_min %d", dae->j_max, dae->j_min+1); } i += (dae->i_max - dae->i_min) * (dae->j_max - dae->j_min); } else if (dae->vector != NULL) { if (!dae->vector->initialized) { feenox_call(feenox_vector_init(dae->vector, FEENOX_VECTOR_INITIAL)); } dae->i_min = (dae->expr_i_min.items != NULL) ? feenox_expression_eval(&dae->expr_i_min)-1 : 0; dae->i_max = (dae->expr_i_max.items != NULL) ? feenox_expression_eval(&dae->expr_i_max) : dae->vector->size; if (dae->i_max <= dae->i_min) { feenox_push_error_message("i_max %d is smaller or equal than i_max %d", dae->i_max, dae->i_min+1); } i += (dae->i_max - dae->i_min); } else { // scalar i++; } } if (i > feenox.dae.dimension) { feenox_push_error_message("more DAE equations %d than phase space dimension %d", i, feenox.dae.dimension); return FEENOX_ERROR; } else if (i < feenox.dae.dimension) { feenox_push_error_message("less DAE equations %d than phase space dimension %d", i, feenox.dae.dimension); return FEENOX_ERROR; } int err = 0; // this is used inside the ida_call() macro #if SUNDIALS_VERSION_MAJOR >= 6 #if defined(SUNDIALS_MPI_ENABLED) && defined(PETSC_HAVE_MPI_COUNT) MPI_Init(NULL, NULL); ida_call(SUNContext_Create(MPI_COMM_WORLD, &feenox.dae.ctx)); #else ida_call(SUNContext_Create(NULL, &feenox.dae.ctx)); #endif feenox_check_alloc(feenox.dae.x = N_VNew_Serial(feenox.dae.dimension, feenox.dae.ctx)); feenox_check_alloc(feenox.dae.dxdt = N_VNew_Serial(feenox.dae.dimension, feenox.dae.ctx)); feenox_check_alloc(feenox.dae.id = N_VNew_Serial(feenox.dae.dimension, feenox.dae.ctx)); if ((feenox.dae.system = IDACreate(feenox.dae.ctx)) == NULL) { #else feenox_check_alloc(feenox.dae.x = N_VNew_Serial(feenox.dae.dimension)); feenox_check_alloc(feenox.dae.dxdt = N_VNew_Serial(feenox.dae.dimension)); feenox_check_alloc(feenox.dae.id = N_VNew_Serial(feenox.dae.dimension)); if ((feenox.dae.system = IDACreate()) == NULL) { #endif feenox_push_error_message("failed to create IDA object"); return FEENOX_ERROR; } // fill in the IDA vector with the user variables for (i = 0; i < feenox.dae.dimension; i++) { NV_DATA_S(feenox.dae.x)[i] = *(feenox.dae.phase_value[i]); NV_DATA_S(feenox.dae.dxdt)[i] = *(feenox.dae.phase_derivative[i]); // assume they are algebraic, then we'll mark the differentials // but we need to initialize the vector id // TODO: user IDA's header NV_DATA_S(feenox.dae.id)[i] = DAE_ALGEBRAIC; } // initialize IDA ida_call(IDAInit(feenox.dae.system, feenox_ida_dae, feenox_special_var_value(t), feenox.dae.x, feenox.dae.dxdt)); // seteo de tolerancias if ((feenox.special_vectors.abs_error = feenox_get_vector_ptr("abs_error")) != NULL) { // si hay un vector de absolutas, lo usamos if (feenox.special_vectors.abs_error->size != feenox.dae.dimension) { feenox_push_error_message("dimension of system is %d and dimension of abs_error is %d", feenox.dae.dimension, feenox.special_vectors.abs_error->size); return FEENOX_ERROR; } #if SUNDIALS_VERSION_MAJOR >= 6 feenox.dae.abs_error = N_VNew_Serial(feenox.dae.dimension, feenox.dae.ctx); #else feenox.dae.abs_error = N_VNew_Serial(feenox.dae.dimension); #endif for (i = 0; i < feenox.dae.dimension; i++) { if (gsl_vector_get(feenox_value_ptr(feenox.special_vectors.abs_error), i) > 0) { NV_DATA_S(feenox.dae.abs_error)[i] = gsl_vector_get(feenox_value_ptr(feenox.special_vectors.abs_error), i); } else { NV_DATA_S(feenox.dae.abs_error)[i] = feenox_special_var_value(dae_rtol); } } ida_call(IDASVtolerances(feenox.dae.system, feenox_special_var_value(dae_rtol), feenox.dae.abs_error)); } else { // si no nos dieron vector de absolutas, ponemos absolutas igual a relativas ida_call(IDASStolerances(feenox.dae.system, feenox_special_var_value(dae_rtol), feenox_special_var_value(dae_rtol))); } // estas tienen que venir despues de IDAInit // marcamos como differential aquellos elementos del phase space que lo sean LL_FOREACH(feenox.dae.phase_objects, phase_object) { if (phase_object->differential) { for (i = phase_object->offset; i < phase_object->offset+phase_object->size; i++) { NV_DATA_S(feenox.dae.id)[i] = DAE_DIFFERENTIAL; } } } ida_call(IDASetId(feenox.dae.system, feenox.dae.id)); #if SUNDIALS_VERSION_MAJOR >= 6 if ((feenox.dae.A = SUNDenseMatrix(feenox.dae.dimension, feenox.dae.dimension, feenox.dae.ctx)) == NULL) { #else if ((feenox.dae.A = SUNDenseMatrix(feenox.dae.dimension, feenox.dae.dimension)) == NULL) { #endif return FEENOX_ERROR; } #if SUNDIALS_VERSION_MAJOR >= 6 if ((feenox.dae.LS = SUNLinSol_Dense(feenox.dae.x, feenox.dae.A, feenox.dae.ctx)) == NULL) { #else if ((feenox.dae.LS = SUNDenseLinearSolver(feenox.dae.x, feenox.dae.A)) == NULL) { #endif return FEENOX_ERROR; } #if SUNDIALS_VERSION_MAJOR >= 4 ida_call(IDASetLinearSolver(feenox.dae.system, feenox.dae.LS, feenox.dae.A)); #else ida_call(IDADlsSetLinearSolver(feenox.dae.system, feenox.dae.LS, feenox.dae.A)); #endif ida_call(IDASetInitStep(feenox.dae.system, feenox_special_var_value(dt))); if (feenox_special_var_value(max_dt) != 0) { ida_call(IDASetMaxStep(feenox.dae.system, feenox_special_var_value(max_dt))); } // set a stop time equal to end_time to prevent overshooting // this only works if end_time is constant! ida_call(IDASetStopTime(feenox.dae.system, feenox_special_var_value(end_time))); return FEENOX_OK; #else feenox_push_error_message("feenox cannot solve DAE systems as it was not linked against SUNDIALS IDA library."); return FEENOX_ERROR; #endif } int feenox_dae_ic(void) { #ifdef HAVE_SUNDIALS int err = 0; if (feenox.dae.initial_conditions_mode == initial_conditions_from_variables) { if ((err = IDACalcIC(feenox.dae.system, IDA_YA_YDP_INIT, feenox_special_var_value(dt))) != IDA_SUCCESS) { feenox_push_error_message("error computing initial conditions from variable values, error = %d", err); return FEENOX_ERROR; } } else if (feenox.dae.initial_conditions_mode == initial_conditions_from_derivatives) { if ((err = IDACalcIC(feenox.dae.system, IDA_Y_INIT, feenox_special_var_value(dt))) != IDA_SUCCESS) { feenox_push_error_message("error computing initial conditions from derivative values, error = %d", err); return FEENOX_ERROR; } } #endif return FEENOX_OK; } #ifdef HAVE_SUNDIALS int feenox_ida_dae(sunrealtype t, N_Vector yy, N_Vector yp, N_Vector rr, void *params) { // this function is called many times in a single FeenoX time step for intermediate // times which are internal to IDA, nevertheless there might be some residuals // that explicitly depend on time so we update FeenoX's time with IDA's time feenox_special_var_value(t) = t; // copy the phase space from IDA to FeenoX for (int k = 0; k < feenox.dae.dimension; k++) { *(feenox.dae.phase_value[k]) = NV_DATA_S(yy)[k]; *(feenox.dae.phase_derivative[k]) = NV_DATA_S(yp)[k]; } // evaluate the residuals in FeenoX and leave them for IDA int k = 0; dae_t *dae = NULL; LL_FOREACH(feenox.dae.daes, dae) { if (dae->i_max == 0) { // ecuacion escalar NV_DATA_S(rr)[k++] = feenox_expression_eval(&dae->residual); } else { for (int i = dae->i_min; i < dae->i_max; i++) { feenox_special_var_value(i) = (double)i+1; if (dae->j_max == 0) { // ecuacion vectorial NV_DATA_S(rr)[k++] = feenox_expression_eval(&dae->residual); } else { for (int j = dae->j_min; j < dae->j_max; j++) { feenox_special_var_value(j) = (double)j+1; // ecuacion matricial NV_DATA_S(rr)[k++] = feenox_expression_eval(&dae->residual); } } } } } #else int feenox_ida_dae(void) { #endif return FEENOX_OK; } // dummy instruction int feenox_instruction_dae(void *arg) { return FEENOX_OK; } feenox-1.1/src/math/builtin_vectorfunctions.c0000644000175000017500000001331514773607165016450 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX builtin vector functions * * Copyright (C) 2009--2021 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" double feenox_builtin_vecdot(vector_t **); double feenox_builtin_vecnorm(vector_t **); double feenox_builtin_vecmin(vector_t **); double feenox_builtin_vecmax(vector_t **); double feenox_builtin_vecminindex(vector_t **); double feenox_builtin_vecmaxindex(vector_t **); double feenox_builtin_vecsum(vector_t **); double feenox_builtin_vecsize(vector_t **); struct builtin_vectorfunction_t builtin_vectorfunction[N_BUILTIN_VECTOR_FUNCTIONS] = { {"vecdot", 2, 2, &feenox_builtin_vecdot}, {"vecnorm", 1, 1, &feenox_builtin_vecnorm}, {"vecsize", 1, 1, &feenox_builtin_vecsize}, {"vecmin", 1, 1, &feenox_builtin_vecmin}, {"vecmax", 1, 1, &feenox_builtin_vecmax}, {"vecminindex", 1, 1, &feenox_builtin_vecminindex}, {"vecmaxindex", 1, 1, &feenox_builtin_vecmaxindex}, {"vecsum", 1, 1, &feenox_builtin_vecsum}, }; ///fv+vecsize+usage vecsize(b) ///fv+vecsize+desc Returns the size of vector $\vec{b}$. double feenox_builtin_vecsize(vector_t **arg) { if (!arg[0]->initialized) { feenox_vector_init(arg[0], FEENOX_VECTOR_INITIAL); } return (double)arg[0]->size; } ///fv+vecsum+usage vecsum(b) ///fv+vecsum+math \sum_{i=1}^{\text{vecsize}(\vec{b})} b_i ///fv+vecsum+desc Computes the sum of all the components of vector $\vec{b}$. double feenox_builtin_vecsum(vector_t **arg) { int i; double s; if (!arg[0]->initialized) { feenox_vector_init(arg[0], FEENOX_VECTOR_INITIAL); } s = 0; for (i = 0; i < arg[0]->size; i++) { s += gsl_vector_get(feenox_value_ptr(arg[0]), i); } return s; } ///fv+vecnorm+usage vecnorm(b) ///fv+vecnorm+math \sqrt{\sum_{i=1}^{\text{vecsize}(\vec{b})} b^2_i} ///fv+vecnorm+desc Computes euclidean norm of vector $\vec{b}$. Other norms can be computed explicitly ///fv+vecnorm+desc using the `sum` functional. double feenox_builtin_vecnorm(vector_t **arg) { int i; double s; if (!arg[0]->initialized) { feenox_vector_init(arg[0], FEENOX_VECTOR_INITIAL); } s = 0; for (i = 0; i < arg[0]->size; i++) { s += gsl_pow_2(gsl_vector_get(feenox_value_ptr(arg[0]), i)); } return sqrt(s); } ///fv+vecmin+usage vecmin(b) ///fv+vecmin+math \min_i b_i ///fv+vecmin+desc Returns the smallest element of vector $\vec{b}$, taking into account its sign ///fv+vecmin+desc (i.e. $-2 < 1$). double feenox_builtin_vecmin(vector_t **arg) { double y; if (!arg[0]->initialized) { feenox_vector_init(arg[0], FEENOX_VECTOR_INITIAL); } y = gsl_vector_min(feenox_value_ptr(arg[0])); return y; } ///fv+vecmax+usage vecmax(b) ///fv+vecmax+math \max_i b_i ///fv+vecmax+desc Returns the biggest element of vector $\vec{b}$, taking into account its sign ///fv+vecmax+desc (i.e. $1 > -2$). double feenox_builtin_vecmax(vector_t **arg) { double y; if (!arg[0]->initialized) { feenox_vector_init(arg[0], FEENOX_VECTOR_INITIAL); } y = gsl_vector_max(feenox_value_ptr(arg[0])); return y; } ///fv+vecminindex+usage vecminindex(b) ///fv+vecminindex+math i / b_i = \min_i b_i ///fv+vecminindex+desc Returns the index of the smallest element of vector $\vec{b}$, taking into account its sign ///fv+vecminindex+desc (i.e. $-2 < 1$). double feenox_builtin_vecminindex(vector_t **arg) { double y; if (!arg[0]->initialized) { feenox_vector_init(arg[0], FEENOX_VECTOR_INITIAL); } y = (double)(gsl_vector_min_index(feenox_value_ptr(arg[0]))+1); return y; } ///fv+vecmaxindex+usage vecmaxindex(b) ///fv+vecmaxindex+math i / b_i = \max_i b_i ///fv+vecmaxindex+desc Returns the index of the biggest element of vector $\vec{b}$, taking into account its sign ///fv+vecmaxindex+desc (i.e. $2 > -1$). double feenox_builtin_vecmaxindex(vector_t **arg) { double y; if (!arg[0]->initialized) { feenox_vector_init(arg[0], FEENOX_VECTOR_INITIAL); } y = (double)(gsl_vector_max_index(feenox_value_ptr(arg[0]))+1); return y; } ///fv+vecdot+usage vecdot(a,b) ///fv+vecdot+math \vec{a} \cdot \vec{b} = \sum_{i=1}^{\text{vecsize}(\vec{a})} a_i \cdot b_i ///fv+vecdot+desc Computes the dot product between vectors $\vec{a}$ and $\vec{b}$, which should ///fv+vecdot+desc have the same size. double feenox_builtin_vecdot(vector_t **arg) { int i; double s; if (!arg[0]->initialized) { feenox_vector_init(arg[0], FEENOX_VECTOR_INITIAL); } if (!arg[1]->initialized) { feenox_vector_init(arg[1], FEENOX_VECTOR_INITIAL); } if (arg[0]->size != arg[1]->size) { feenox_push_error_message("when attempting to compute dot product, vector '%s' has size %d and '%s' has size %d", arg[0]->name, arg[0]->size, arg[1]->name, arg[1]->size); feenox_runtime_error(); } s = 0; for (i = 0; i < arg[0]->size; i++) { s += gsl_vector_get(feenox_value_ptr(arg[0]), i)*gsl_vector_get(feenox_value_ptr(arg[1]), i); } return s; } feenox-1.1/src/math/fit.c0000644000175000017500000001660114773607165012252 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox function fitting functions * * Copyright (C) 2009--2015,2021 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_fit_f(const gsl_vector *via, void *arg, gsl_vector *f); int feenox_fit_df(const gsl_vector *via, void *arg, gsl_matrix *J); int feenox_fit_in_range(fit_t *this); void feenox_fit_update_x(fit_t *this, size_t j); void feenox_fit_update_vias(fit_t *this, const gsl_vector *via); void feenox_fit_print_state(const size_t iter, void *arg, const gsl_multifit_nlinear_workspace *w); int feenox_instruction_fit(void *arg) { fit_t *fit = (fit_t *)arg; if (fit->n_data == 0) { feenox_call(feenox_function_init(fit->data)); fit->n_data = fit->data->data_size; } if (fit->n_data < fit->n_via) { feenox_push_error_message("less data points than free parameters for the fit"); return FEENOX_ERROR; } gsl_multifit_nlinear_fdf fdf; fdf.f = feenox_fit_f; fdf.df = feenox_fit_df; fdf.fvv = NULL; // not using geodesic acceleration fdf.n = fit->n_data; fdf.p = fit->n_via; fdf.params = fit; // initial guess gsl_vector *via = NULL; feenox_check_alloc(via = gsl_vector_calloc(fit->n_via)); unsigned int i = 0; for (i = 0; i < fit->n_via; i++) { gsl_vector_set(via, i, feenox_var_value(fit->via[i])); } feenox_check_alloc(fit->x = calloc(fit->data->n_arguments, sizeof(double))); if (fit->range.min != NULL && fit->range.max != NULL) { feenox_check_alloc(fit->range_min = calloc(fit->data->n_arguments, sizeof(double))); feenox_check_alloc(fit->range_max = calloc(fit->data->n_arguments, sizeof(double))); for (i = 0; i < fit->data->n_arguments; i++) { fit->range_min[i] = feenox_expression_eval(&fit->range.min[i]); fit->range_max[i] = feenox_expression_eval(&fit->range.max[i]); } } // initialization const gsl_multifit_nlinear_type *T = gsl_multifit_nlinear_trust; gsl_multifit_nlinear_parameters fdf_params = gsl_multifit_nlinear_default_parameters(); gsl_multifit_nlinear_workspace *w = NULL; feenox_check_alloc(w = gsl_multifit_nlinear_alloc(T, &fdf_params, fit->n_data, fit->n_via)); gsl_multifit_nlinear_winit(via, NULL, &fdf, w); // compute initial cost function gsl_vector *f = gsl_multifit_nlinear_residual(w); double chisq0 = 0; gsl_blas_ddot(f, f, &chisq0); // solve the system int info = 0; int gsl_status = GSL_SUCCESS; gsl_status = gsl_multifit_nlinear_driver(fit->max_iter, DEFAULT_FIT_XTOL, DEFAULT_FIT_GTOL, DEFAULT_FIT_FTOL, feenox_fit_print_state, fit, &info, w); // compute covariance of best fit parameters gsl_matrix *J = gsl_multifit_nlinear_jac(w); gsl_matrix *covar = gsl_matrix_alloc(fit->n_via, fit->n_via); gsl_multifit_nlinear_covar(J, 0.0, covar); // compute final cost double chisq = 0; gsl_blas_ddot(f, f, &chisq); double dof = fit->n_data - fit->n_via; // double c = GSL_MAX_DBL(1, sqrt(chisq / dof)); double c = (dof > 0) ? sqrt(chisq / dof) : 0; // got it, fill the variables with the results for (i = 0; i < fit->n_via; i++) { feenox_var_value(fit->via[i]) = gsl_vector_get(w->x, i); feenox_var_value(fit->sigma[i]) = c*sqrt(gsl_matrix_get(covar, i, i)); } if (fit->verbose && feenox.mpi_rank == 0) { double dof = fit->n_data - fit->n_via; printf("# status = %s\n", gsl_strerror (gsl_status)); printf("# summary from method '%s/%s'\n", gsl_multifit_nlinear_name(w), gsl_multifit_nlinear_trs_name(w)); printf("# number of iterations: %zu\n", gsl_multifit_nlinear_niter(w)); printf("# reason for stopping: %s\n", (info == 1) ? "small step size" : "small gradient"); printf("# variance of residuals chisq/dof = %g\n", chisq / dof); printf("# initial |f(x)| = %f\n", sqrt(chisq0)); printf("# final |f(x)| = %f\n", sqrt(chisq)); for (i = 0; i < fit->n_via; i++) { printf ("# %s\t= %.5g # +/- %.5g\n", fit->via[i]->name, feenox_var_value(fit->via[i]), feenox_var_value(fit->sigma[i])); } } gsl_matrix_free(covar); gsl_multifit_nlinear_free(w); if (fit->range_max == NULL) { feenox_free(fit->range_max) } if (fit->range_min == NULL) { feenox_free(fit->range_min) } feenox_free(fit->x) gsl_vector_free(via); return FEENOX_OK; } void feenox_fit_update_x(fit_t *this, size_t j) { unsigned int i = 0; for (i = 0; i < this->data->n_arguments; i++) { this->x[i] = feenox_vector_get(this->data->vector_argument[i], j); feenox_var_value(this->function->var_argument[i]) = this->x[i]; } return; } void feenox_fit_update_vias(fit_t *this, const gsl_vector *via) { unsigned int i = 0; for (i = 0; i < this->n_via; i++) { feenox_var_value(this->via[i]) = gsl_vector_get(via, i); } return; } int feenox_fit_in_range(fit_t *this) { if (this->range_min == NULL || this->range_max == NULL) { return 1; } unsigned int i = 0; for (i = 0; i < this->data->n_arguments; i++) { if (this->x[i] < this->range_min[i] || this->x[i] > this->range_max[i]) { return 0; } } return 1; } int feenox_fit_f(const gsl_vector *via, void *arg, gsl_vector *f) { fit_t *this = (fit_t *)arg; feenox_fit_update_vias(this, via); size_t j = 0; for (j = 0; j < this->n_data; j++) { feenox_fit_update_x(this, j); gsl_vector_set(f, j, feenox_fit_in_range(this) ? (feenox_function_eval(this->function, this->x) - feenox_vector_get(this->data->vector_value, j)) : 0); } // feenox_debug_print_gsl_vector(f, stdout); return GSL_SUCCESS; } int feenox_fit_df(const gsl_vector *via, void *arg, gsl_matrix *J) { fit_t *this = (fit_t *)arg; feenox_fit_update_vias(this, via); unsigned int i = 0; size_t j = 0; int in_range = 0; for (j = 0; j < this->n_data; j++) { feenox_fit_update_x(this, j); in_range = feenox_fit_in_range(this); for (i = 0; i < this->n_via; i++) { gsl_matrix_set (J, j, i, (in_range) ? ((this->gradient != NULL) ? feenox_expression_eval(&this->gradient[i]) : feenox_expression_derivative_wrt_variable(&this->function->algebraic_expression, this->via[i], feenox_var_value(this->via[i]))) : 0); } } // feenox_debug_print_gsl_matrix(J, stdout); return GSL_SUCCESS; } void feenox_fit_print_state(const size_t iter, void *arg, const gsl_multifit_nlinear_workspace *w) { fit_t *this = (fit_t *)arg; if (this->verbose) { gsl_vector *via = gsl_multifit_nlinear_position(w); gsl_vector *f = gsl_multifit_nlinear_residual(w); printf ("# iter %2zu\t", iter); unsigned int i = 0; for (i = 0; i < this->n_via; i++) { printf("%+e ", gsl_vector_get(via, i)); } printf("\tres = %.4g\n", gsl_blas_dnrm2(f)); } return; } feenox-1.1/src/math/matrix.c0000644000175000017500000000553714773607165013002 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX matrix routines * * Copyright (C) 2015 Jeremy Theler * * This file is part of feenox. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" double feenox_matrix_get(matrix_t *this, const size_t i, const size_t j) { if (!this->initialized) { feenox_call(feenox_matrix_init(this)); } return gsl_matrix_get(feenox_value_ptr(this), i, j); } double feenox_matrix_get_initial_static(matrix_t *this, const size_t i, const size_t j) { if (!this->initialized) { feenox_call(feenox_matrix_init(this)); } return gsl_matrix_get(this->initial_static, i, j); } double feenox_matrix_get_initial_transient(matrix_t *this, const size_t i, const size_t j) { if (!this->initialized) { feenox_call(feenox_matrix_init(this)); } return gsl_matrix_get(this->initial_transient, i, j); } int feenox_matrix_init(matrix_t *this) { int rows, cols; int i, j; expr_t *data; if ((rows = (int)(round(feenox_expression_eval(&this->rows_expr)))) == 0 && (rows = this->rows) == 0) { feenox_push_error_message("matrix '%s' has zero rows", this->name); return FEENOX_ERROR; } else if (rows < 0) { feenox_push_error_message("matrix '%s' has negative rows %d", this->name, rows); return FEENOX_ERROR; } if ((cols = (int)(round(feenox_expression_eval(&this->cols_expr)))) == 0 && (cols = this->cols) == 0) { feenox_push_error_message("matrix '%s' has zero cols", this->name); return FEENOX_ERROR; } else if (cols < 0) { feenox_push_error_message("matrix '%s' has negative cols %d", this->name, cols); return FEENOX_ERROR; } this->rows = rows; this->cols = cols; feenox_value_ptr(this) = gsl_matrix_calloc(rows, cols); this->initial_static = gsl_matrix_calloc(rows, cols); this->initial_transient = gsl_matrix_calloc(rows, cols); if (this->datas != NULL) { i = 0; j = 0; LL_FOREACH(this->datas, data) { gsl_matrix_set(feenox_value_ptr(this), i, j++, feenox_expression_eval(data)); if (j == this->cols) { j = 0; i++; } } } this->initialized = 1; return FEENOX_OK; } feenox-1.1/src/math/alias.c0000644000175000017500000000666314773607165012570 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX alias routines * * Copyright (C) 2015 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_instruction_alias(void *arg) { alias_t *alias = (alias_t *)arg; size_t row, col; if (!alias->initialized) { alias->initialized = 1; row = (size_t)(feenox_expression_eval(&alias->row)) - 1; col = (size_t)(feenox_expression_eval(&alias->col)) - 1; if (alias->matrix != NULL) { if (!alias->matrix->initialized) { feenox_call(feenox_matrix_init(alias->matrix)); } if (row >= alias->matrix->rows) { feenox_push_error_message("row %d greater than matrix size %dx%d in alias '%s'", row, alias->matrix->rows, alias->matrix->cols, alias->new_variable->name); } if (col >= alias->matrix->cols) { feenox_push_error_message("col %d greater than matrix size %dx%d in alias '%s'", col, alias->matrix->rows, alias->matrix->cols, alias->new_variable->name); } feenox_realloc_variable_ptr(alias->new_variable, gsl_matrix_ptr(feenox_value_ptr(alias->matrix), row, col), 0); feenox_free(alias->new_variable->initial_static); alias->new_variable->initial_static = gsl_matrix_ptr(alias->matrix->initial_static, row, col); feenox_free(alias->new_variable->initial_transient); alias->new_variable->initial_transient = gsl_matrix_ptr(alias->matrix->initial_transient, row, col); } else if (alias->vector != NULL) { if (!alias->vector->initialized) { feenox_call(feenox_vector_init(alias->vector, FEENOX_VECTOR_INITIAL)); } if (row >= alias->vector->size) { feenox_push_error_message("subscript %d greater than vector size %d in alias '%s'", row, alias->vector->size, alias->new_variable->name); } feenox_realloc_variable_ptr(alias->new_variable, gsl_vector_ptr(feenox_value_ptr(alias->vector), row), 0); feenox_free(alias->new_variable->initial_static); alias->new_variable->initial_static = gsl_vector_ptr(alias->vector->initial_static, row); feenox_free(alias->new_variable->initial_transient); alias->new_variable->initial_transient = gsl_vector_ptr(alias->vector->initial_transient, row); } else if (alias->variable != NULL) { feenox_realloc_variable_ptr(alias->new_variable, feenox_value_ptr(alias->variable), 0); feenox_free(alias->new_variable->initial_static); alias->new_variable->initial_static = alias->variable->initial_static; feenox_free(alias->new_variable->initial_transient); alias->new_variable->initial_transient = alias->variable->initial_transient; } } return FEENOX_OK; } feenox-1.1/src/math/solve.c0000644000175000017500000000772714773607165012631 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox multidimensional root finding instruction * * Copyright (C) 2022 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_solve_f(const gsl_vector *x, void *params, gsl_vector *f); int feenox_solve_print_state (solve_t *solve, const size_t iter, gsl_multiroot_fsolver *s); int feenox_instruction_solve(void *arg) { solve_t *solve = (solve_t *)arg; gsl_multiroot_function f = {&feenox_solve_f, solve->n_unknowns, solve}; double epsabs = (solve->epsabs.items != NULL) ? feenox_expression_eval(&solve->epsabs) : DEFAULT_SOLVE_EPSABS; double epsrel = (solve->epsrel.items != NULL) ? feenox_expression_eval(&solve->epsrel) : DEFAULT_SOLVE_EPSREL; int maxiter = (solve->max_iter != 0) ? solve->max_iter : DEFAULT_SOLVE_MAX_ITER; // solution vector gsl_vector *x = NULL; feenox_check_alloc(x = gsl_vector_alloc(solve->n_unknowns)); // initial guess size_t i = 0; for (i = 0; i < solve->n_unknowns; i++) { gsl_vector_set(x, i, feenox_var_value(solve->unknown[i])); } gsl_multiroot_fsolver *s = NULL; feenox_check_alloc(s = gsl_multiroot_fsolver_alloc(solve->type, solve->n_unknowns)); feenox_call(gsl_multiroot_fsolver_set(s, &f, x)); // loop int status = 0; int iter = 0; if (solve->verbose) { feenox_solve_print_state(solve, iter, s); } do { iter++; status = gsl_multiroot_fsolver_iterate(s); if (solve->verbose) { feenox_solve_print_state(solve, iter, s); } if (status) { break; } status = (epsrel == 0) ? gsl_multiroot_test_residual(gsl_multiroot_fsolver_f(s), epsabs) : gsl_multiroot_test_delta(gsl_multiroot_fsolver_dx(s), gsl_multiroot_fsolver_root(s), epsabs, epsrel); } while (status == GSL_CONTINUE && iter < maxiter); if (solve->verbose) { printf ("status = %s\n", gsl_strerror (status)); } // bring the solution back to the variables gsl_vector *solution = gsl_multiroot_fsolver_root(s); for (i = 0; i < solve->n_unknowns; i++) { feenox_var_value(solve->unknown[i]) = gsl_vector_get(solution, i); } // cleanup gsl_multiroot_fsolver_free(s); gsl_vector_free(x); return FEENOX_OK; } int feenox_solve_f(const gsl_vector *x, void *params, gsl_vector *f) { solve_t *solve = (solve_t *)params; // pass vector x to unknown variables double xi = 0; size_t i = 0; for (i = 0; i < solve->n_unknowns; i++) { xi = gsl_vector_get(x, i); if (!isnan(xi)) { feenox_var_value(solve->unknown[i]) = xi; } else { return GSL_EDOM; } } // evaluate the residuals and set f for (i = 0; i < solve->n_unknowns; i++) { xi = feenox_expression_eval(&solve->residual[i]); if (!isnan(xi)) { gsl_vector_set(f, i, xi); } else { return GSL_ERANGE; } } return GSL_SUCCESS; } int feenox_solve_print_state(solve_t *solve, const size_t iter, gsl_multiroot_fsolver *s) { printf ("iter = %3lu x = ", iter); for (size_t i = 0; i < solve->n_unknowns; i++) { printf("% .3e ", gsl_vector_get(s->x, i)); } printf(" f(x) = "); for (size_t i = 0; i < solve->n_unknowns; i++) { printf("% .3e ", gsl_vector_get(s->f, i)); } printf("\n"); return FEENOX_OK; } feenox-1.1/src/math/function.c0000644000175000017500000011435414773607165013321 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX mathematical functions evaluation * * Copyright (C) 2009--2023 Jeremy Theler * * This file is part of feenox. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" const double zero[3] = {0, 0, 0}; int feenox_define_function(const char *name, unsigned int n_arguments) { return (feenox_define_function_get_ptr(name, n_arguments) != NULL) ? FEENOX_OK : FEENOX_ERROR; } function_t *feenox_define_function_get_ptr(const char *name, int n_arguments) { if (feenox_check_name(name) != FEENOX_OK) { return NULL; } function_t *function = NULL; feenox_check_alloc_null(function = calloc(1, sizeof(function_t))); feenox_check_alloc_null(function->name = strdup(name)); function->n_arguments = n_arguments; feenox_check_alloc_null(function->var_argument = calloc(n_arguments, sizeof(var_t *))); function->var_argument_allocated = 1; HASH_ADD_KEYPTR(hh, feenox.functions, function->name, strlen(function->name), function); return function; } int feenox_function_set_argument_variable(const char *name, unsigned int i, const char *variable_name) { function_t *function; if ((function = feenox_get_function_ptr(name)) == NULL) { feenox_push_error_message("unknown function '%s'", name); return FEENOX_ERROR; } if (i < 0) { feenox_push_error_message("negative argument number '%d'", i); return FEENOX_ERROR; } if (i >= function->n_arguments) { feenox_push_error_message("argument number '%d' greater or equal than the number of arguments '%d' (they start from zero)", i, function->n_arguments); return FEENOX_ERROR; } if ((function->var_argument[i] = feenox_get_or_define_variable_get_ptr(variable_name)) == NULL) { return FEENOX_ERROR; } // mark that we received an argument to see if we got them all when initializing function->n_arguments_given++; return FEENOX_OK; } int feenox_function_set_expression(const char *name, const char *expression) { function_t *function = NULL; if ((function = feenox_get_function_ptr(name)) == NULL) { feenox_push_error_message("unknown function '%s'", name); return FEENOX_ERROR; } function->type = function_type_algebraic; feenox_call(feenox_expression_parse(&function->algebraic_expression, expression)); return FEENOX_OK; } int feenox_function_set_file(const char *name, file_t *file, unsigned int *columns) { function_t *function = NULL; if ((function = feenox_get_function_ptr(name)) == NULL) { feenox_push_error_message("unknown function '%s'", name); return FEENOX_ERROR; } function->type = function_type_pointwise_data; size_t size0 = 4096/sizeof(double); size_t size = size0; double *buffer = NULL; feenox_check_alloc(buffer = malloc(size * sizeof(double))); unsigned int max_column = 0; if (columns != NULL) { unsigned int i = 0; for (i = 0; i < function->n_arguments+1; i++) { if (columns[i] > max_column) { max_column = columns[i]; } } } else { max_column = function->n_arguments+1; } feenox_call(feenox_instruction_file_open(file)); char line[BUFFER_LINE_SIZE]; size_t n = 0; int n_numbers = 0; int n_chars = 0; while (fgets(line, BUFFER_LINE_SIZE-1, file->pointer) != NULL) { feenox_call(feenox_strip_comments(line)); if (line[0] != '\0') { char *s = line; unsigned int i = 0; for (i = 0; i < max_column; i++) { if (n == size) { size += size0; feenox_check_alloc(buffer = realloc(buffer, size*sizeof(double))); } if ((n_numbers = sscanf(s, "%lf %n", &buffer[n++], &n_chars)) != 1) { feenox_push_error_message("not enough columns in file '%s'", file->path); return FEENOX_ERROR; } s += n_chars; } } } feenox_call(feenox_instruction_file_close(file)); feenox_call(function_set_buffered_data(function, buffer, n, max_column, columns)); free(buffer); return FEENOX_OK; } int function_set_buffered_data(function_t *function, double *buffer, size_t n_data, unsigned int n_columns, unsigned int *columns) { if ((n_data % n_columns) != 0) { feenox_push_error_message("data size %d is not multiple of %d", n_data, n_columns); return FEENOX_ERROR; } function->data_size = n_data / n_columns; feenox_call(feenox_create_pointwise_function_vectors(function)); for (size_t j = 0; j < function->data_size; j++) { unsigned int i = 0; // this is needed after the loop! for (i = 0; i < function->n_arguments; i++) { feenox_vector_set(function->vector_argument[i], j, buffer[j*n_columns + ((columns != NULL) ? (columns[i]-1) : i)]); } // remember than since 1971 now i has n_arguments+1 feenox_vector_set(function->vector_value, j, buffer[j*n_columns + ((columns != NULL) ? (columns[i]-1) : i)]); // TODO: check for monotonicity in 1D // to allow for steps if (function->n_arguments == 1 && j > 1 && (feenox_vector_get(function->vector_argument[0], j) == feenox_vector_get(function->vector_argument[0], j-1))) { feenox_vector_add(function->vector_argument[i], j, 1e-6*(feenox_vector_get(function->vector_argument[0], j-1) - feenox_vector_get(function->vector_argument[0], j-2))); } } return FEENOX_OK; } int feenox_function_set_interpolation(const char *name, const char *type) { function_t *function = NULL; if ((function = feenox_get_function_ptr(name)) == NULL) { feenox_push_error_message("unknown function '%s'", name); return FEENOX_ERROR; } if (strcasecmp(type, "linear") == 0) { function->interp_type = *gsl_interp_linear; } else if (strcasecmp(type, "polynomial") == 0) { function->interp_type = *gsl_interp_polynomial; } else if (strcasecmp(type, "spline") == 0 || strcasecmp(type, "cspline") == 0 || strcasecmp(type, "splines") == 0) { function->interp_type = *gsl_interp_cspline; } else if (strcasecmp(type, "spline_periodic") == 0 || strcasecmp(type, "cspline_periodic") == 0 || strcasecmp(type, "splines_periodic") == 0) { function->interp_type = *gsl_interp_cspline_periodic; } else if (strcasecmp(type, "akima") == 0) { function->interp_type = *gsl_interp_akima; } else if (strcasecmp(type, "akima_periodic") == 0) { function->interp_type = *gsl_interp_akima_periodic; } else if (strcasecmp(type, "steffen") == 0) { function->interp_type = *gsl_interp_steffen; } else if (strcasecmp(type, "nearest") == 0) { function->multidim_interp = interp_nearest; } else if (strcasecmp(type, "shepard") == 0) { function->multidim_interp = interp_shepard; } else if (strcasecmp(type, "shepard_kd") == 0 || strcasecmp(type, "modified_shepard") == 0) { function->multidim_interp = interp_shepard_kd; } else if (strcasecmp(type, "bilinear") == 0 || strcasecmp(type, "rectangle") == 0 || strcasecmp(type, "rectangular") == 0) { function->multidim_interp = interp_bilinear; } else { feenox_push_error_message("undefined interpolation method '%s'", type); return FEENOX_ERROR; } return FEENOX_OK; } // set the variables that are a function's argument equal to the vector x int feenox_function_set_args(function_t *this, double *x) { int i; if (this->var_argument != NULL) { for (i = 0; i < this->n_arguments; i++) { if (this->var_argument[i] != NULL) { feenox_var_value(this->var_argument[i]) = x[i]; } } } return FEENOX_OK; } // evaluates a function inside a factor // the arguments are inside the structure double feenox_factor_function_eval(expr_item_t *this) { double y = 0; // in order to avoid having to allocate and free too much, // one-dimensional functions are treated differently if (this->function->n_arguments == 1) { double x0 = feenox_expression_eval(&this->arg[0]); y = feenox_function_eval(this->function, &x0); } else { double *x = NULL; feenox_check_alloc(x = calloc(this->function->n_arguments, sizeof(double))); unsigned int i; for (i = 0; i < this->function->n_arguments; i++) { x[i] = feenox_expression_eval(&this->arg[i]); } y = feenox_function_eval(this->function, x); feenox_free(x); } if (gsl_isnan(y) || gsl_isinf(y)) { feenox_nan_error(); } return y; } int feenox_function_init(function_t *this) { if (this->initialized) { return FEENOX_OK; } // TODO: arrange into smaller functions // TODO: initialize mesh-based functions if (this->type == function_type_algebraic && this->n_arguments_given != this->n_arguments) { feenox_push_error_message("algebraic function '%s' needs %d arguments and %d were given", this->name, this->n_arguments, this->n_arguments_given); return FEENOX_ERROR; } if (this->algebraic_expression.items == NULL) { this->multidim_threshold = (this->expr_multidim_threshold.items != NULL) ? feenox_expression_eval(&this->expr_multidim_threshold) : DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD; if (this->vector_argument != NULL) { for (unsigned int i = 0; i < this->n_arguments; i++) { if (this->vector_argument[i]->initialized == 0) { feenox_call(feenox_vector_init(this->vector_argument[i], FEENOX_VECTOR_NO_INITIAL)); } if (this->data_size == 0) { this->data_size = this->vector_argument[i]->size; } else { if (this->vector_argument[i]->size != this->data_size) { feenox_push_error_message("vector sizes do not match (%d and %d) in function '%s'", this->data_size, this->vector_argument[i]->size, this->name); return FEENOX_ERROR; } } if (this->vector_value->initialized == 0) { feenox_call(feenox_vector_init(this->vector_argument[i], FEENOX_VECTOR_NO_INITIAL)); } } if (this->vector_value->size != this->data_size) { feenox_push_error_message("vector sizes do not match (%d and %d) in function '%s'", this->data_size, this->vector_value->size, this->name); return FEENOX_ERROR; } } if (this->mesh == NULL) { if (this->vector_argument == NULL) { feenox_push_error_message("function '%s' is not ready to be used, mind the location of SOLVE_PROBLEM", this->name); return FEENOX_ERROR; } double **data_argument = NULL; feenox_check_alloc(data_argument = calloc(this->n_arguments, sizeof(double *))); for (int i = 0; i < this->n_arguments; i++) { data_argument[i] = gsl_vector_ptr(feenox_value_ptr(this->vector_argument[i]), 0); } double *data_value = gsl_vector_ptr(this->vector_value->value, 0); if (this->n_arguments == 1) { if (this->interp_type.name == NULL) { // interpolacion 1D por default this->interp_type = DEFAULT_INTERPOLATION; } if ((this->interp = gsl_interp_alloc(&this->interp_type, this->data_size)) == NULL) { feenox_push_error_message("interpolation method for function '%s' needs more points", this->name); return FEENOX_ERROR; } this->interp_accel = gsl_interp_accel_alloc(); feenox_push_error_message("in function %s", this->name); gsl_interp_init(this->interp, data_argument[0], data_value, this->data_size); feenox_pop_error_message(); } else { if (this->n_arguments == 2) { if (data_argument[0] != NULL) { // does it have a regular mesh in 2d? size_t nx = 0; size_t ny = 0; if (feenox_function_is_structured_grid_2d(data_argument[0], data_argument[1], this->data_size, &nx, &ny)) { this->rectangular_mesh = 1; this->x_increases_first = 1; } else if (feenox_function_is_structured_grid_2d(data_argument[1], data_argument[0], this->data_size, &ny, &nx)) { this->rectangular_mesh = 1; this->x_increases_first = 0; } else { this->rectangular_mesh = 0; } if (this->rectangular_mesh) { feenox_check_alloc(this->rectangular_mesh_size = calloc(2, sizeof(size_t))); this->rectangular_mesh_size[0] = nx; this->rectangular_mesh_size[1] = ny; } } } else if (this->n_arguments == 3) { if (data_argument[0] != NULL) { // miramos si tiene una malla regular en 3d size_t nx = 0; size_t ny = 0; size_t nz = 0; if (feenox_function_is_structured_grid_3d(data_argument[0], data_argument[1], data_argument[2], this->data_size, &nx, &ny, &nz)) { this->rectangular_mesh = 1; this->x_increases_first = 1; } else if (feenox_function_is_structured_grid_3d(data_argument[2], data_argument[1], data_argument[0], this->data_size, &nz, &ny, &nx)) { this->rectangular_mesh = 1; this->x_increases_first = 0; } else { this->rectangular_mesh = 0; } if (this->rectangular_mesh) { feenox_check_alloc(this->rectangular_mesh_size = calloc(3, sizeof(size_t))); this->rectangular_mesh_size[0] = nx; this->rectangular_mesh_size[1] = ny; this->rectangular_mesh_size[2] = nz; } } } else { // estamos en el caso de mayor dimension que 3 // confiamos de una que es rectangular this->rectangular_mesh = 1; if (this->expr_x_increases_first.items != NULL) { this->x_increases_first = feenox_expression_eval(&this->expr_x_increases_first); } else { feenox_push_error_message("missing expression for X_INCREASES_FIRST keyword"); feenox_free(data_argument); return FEENOX_ERROR; } feenox_check_alloc(this->rectangular_mesh_size = calloc(this->n_arguments, sizeof(size_t))); if (this->expr_rectangular_mesh_size != NULL) { unsigned int i = 0; for (i = 0; i < this->n_arguments; i++) { if (this->expr_rectangular_mesh_size[i].items != NULL) { this->rectangular_mesh_size[i] = round(feenox_expression_eval(&this->expr_rectangular_mesh_size[i])); if (this->rectangular_mesh_size[i] < 2) { feenox_push_error_message("size %d for argument number %d in function '%s' cannot be less than two", this->rectangular_mesh_size[i], i+1, this->name); return FEENOX_ERROR; } } } } else { feenox_push_error_message("missing expressions for SIZES keyword"); return FEENOX_ERROR; } } if (this->rectangular_mesh) { // checkeamos solo el size (porq el usuario pudo meter fruta para dimension mayor a 3) size_t i = 0; size_t j = 1; for (i = 0; i < this->n_arguments; i++) { j *= this->rectangular_mesh_size[i]; } if (this->data_size != j) { feenox_push_error_message("data size of function %s do not match with the amount of given values", this->name); return FEENOX_ERROR; } feenox_check_alloc(this->rectangular_mesh_point = calloc(this->n_arguments, sizeof(double *))); for (i = 0; i < this->n_arguments; i++) { feenox_check_alloc(this->rectangular_mesh_point[i] = calloc(this->rectangular_mesh_size[i], sizeof(double))); } int step = 0; if (this->x_increases_first) { step = 1; for (i = 0; i < this->n_arguments; i++) { for (j = 0; j < this->rectangular_mesh_size[i]; j++) { this->rectangular_mesh_point[i][j] = data_argument[i][step*j]; } step *= this->rectangular_mesh_size[i]; } } else { step = this->data_size; for (i = 0; i < this->n_arguments; i++) { step /= this->rectangular_mesh_size[i]; for (j = 0; j < this->rectangular_mesh_size[i]; j++) { this->rectangular_mesh_point[i][j] = data_argument[i][step*j]; } } } } } if (this->rectangular_mesh == 0 && this->multidim_interp == interp_bilinear) { feenox_push_error_message("rectangular interpolation of this '%s' needs a rectangular mesh", this->name); return FEENOX_ERROR; } if (this->multidim_interp == interp_undefined) { this->multidim_interp = this->rectangular_mesh ? interp_bilinear : interp_shepard_kd; } if (this->multidim_interp == interp_shepard || this->multidim_interp == interp_shepard_kd) { this->shepard_radius = (this->expr_shepard_radius.items != NULL) ? feenox_expression_eval(&this->expr_shepard_radius) : DEFAULT_SHEPARD_RADIUS; this->shepard_exponent = (this->expr_shepard_exponent.items != NULL) ? feenox_expression_eval(&this->expr_shepard_exponent) : DEFAULT_SHEPARD_EXPONENT; } if (this->multidim_interp == interp_nearest || this->multidim_interp == interp_shepard_kd) { double *point = NULL; feenox_check_alloc(point = calloc(this->n_arguments, sizeof(double))); this->kd = kd_create(this->n_arguments); for (size_t j = 0; j < this->data_size; j++) { for (int k = 0; k < this->n_arguments; k++) { point[k] = data_argument[k][j]; } kd_insert(this->kd, point, gsl_vector_ptr(feenox_value_ptr(this->vector_value), j)); } feenox_free(point); } } } this->initialized = 1; return FEENOX_OK; } // evaluate a function double feenox_function_eval(function_t *this, const double *const_x) { // y is the returned value double y = 0; // if x is null we assume it is a 3d-vector with zeroes const double *x = (const_x != NULL) ? const_x : zero; // check if we need to initialize if (this->initialized == 0) { if (feenox_function_init(this) != FEENOX_OK) { feenox_runtime_error(); } } // check if the function is a dummy to take derivatives against if (this->dummy_for_derivatives) { return this->dummy_for_derivatives_value; } // if the function is mesh, check if the time is the correct one if (this->mesh != NULL && this->name_in_mesh != NULL && this->mesh->reader == feenox_mesh_read_gmsh && this->mesh_time < feenox_special_var_value(t)-0.001*feenox_special_var_value(dt)) { feenox_call(feenox_mesh_update_function_gmsh(this, feenox_special_var_value(t), feenox_special_var_value(dt))); this->mesh_time = feenox_special_var_value(t); } // TODO: virtual methods if (this->type == function_type_pointwise_mesh_node) { return feenox_mesh_interpolate_function_node(this, x); } else if (this->type == function_type_pointwise_mesh_cell) { // return mesh_interpolate_function_cell(this, x); y = 0; } else if (this->type == function_type_pointwise_mesh_property) { y = feenox_function_property_eval(this, x); // TODO /* } else if (this->type == function_type_routine) { y = this->routine(x); } else if (this->type == function_type_routine_internal) { y = this->routine_internal(x, this); */ } else if (this->algebraic_expression.items != NULL) { if (this->n_arguments == 1) { // we need to keep the old value of the argument otherwise // for example if the argument is an expression of time // everything gets screwed up double x_old = feenox_var_value(this->var_argument[0]); feenox_var_value(this->var_argument[0]) = x[0]; y = feenox_expression_eval(&this->algebraic_expression); feenox_var_value(this->var_argument[0]) = x_old; } else { double *vecx_old = NULL; feenox_check_alloc(vecx_old = calloc(this->n_arguments, sizeof(double))); unsigned int i = 0; for (i = 0; i < this->n_arguments; i++) { // keep old values vecx_old[i] = feenox_var_value(this->var_argument[i]); feenox_var_value(this->var_argument[i]) = x[i]; } y = feenox_expression_eval(&this->algebraic_expression); for (i = 0; i < this->n_arguments; i++) { // put old values back feenox_var_value(this->var_argument[i]) = vecx_old[i]; } feenox_free(vecx_old); } } else if (this->data_size != 0) { if (this->n_arguments == 1) { if (x[0] < feenox_vector_get(this->vector_argument[0], 0)) { y = feenox_vector_get(this->vector_value, 0); } else if (x[0] > feenox_vector_get(this->vector_argument[0], this->data_size-1)) { y = feenox_vector_get(this->vector_value, this->data_size-1); } else if (this->interp != NULL) { y = gsl_interp_eval(this->interp, gsl_vector_ptr(this->vector_argument[0]->value, 0), gsl_vector_ptr(this->vector_value->value, 0), x[0], this->interp_accel); } } else { // multi-dimensional pointwise-defined function are not handled by GSL // we need to do the interpolation size_t j = 0; if (this->multidim_interp == interp_nearest) { // nearest neighbor in the k-dimensional tree if (this->kd != NULL) { y = *((double *)kd_res_item_data(kd_nearest(this->kd, x))); } } else if (this->multidim_interp == interp_shepard) { int flag = 0; // suponemos que NO nos pidieron un punto del problema double num = 0; double den = 0; double w_i, y_i, dist2, diff; for (size_t i = 0; i < this->data_size; i++) { y_i = feenox_vector_get(this->vector_value, i); dist2 = 0; for (j = 0; j < this->n_arguments; j++) { diff = (x[j] - feenox_vector_get(this->vector_argument[j], i)); dist2 += diff*diff; } if (dist2 < this->multidim_threshold) { y = y_i; flag = 1; // nos pidieron un punto de la definicion break; } else { w_i = (this->shepard_exponent == 2)? 1.0/dist2 : 1.0/pow(dist2, 0.5*this->shepard_exponent); num += w_i * y_i; den += w_i; } } if (flag == 0) { if (den == 0) { feenox_push_error_message("denominator equal to zero"); feenox_runtime_error(); } y = num/den; } } else if (this->multidim_interp == interp_shepard_kd) { struct kdres *presults; int flag = 0; // suponemos que NO nos pidieron un punto del problema int n = 0; double num = 0; double den = 0; double w_i, y_i, dist2, diff; double dist; double *x_i = malloc(this->n_arguments*sizeof(double)); do { presults = kd_nearest_range(this->kd, x, this->shepard_radius); while (kd_res_end(presults) == 0) { n++; y_i = *((double *)kd_res_item(presults, x_i)); dist2 = 0; for (j = 0; j < this->n_arguments; j++) { diff = (x[j]-x_i[j]); dist2 += diff*diff; } if (dist2 < this->multidim_threshold) { y = y_i; flag = 1; // nos pidieron un punto de la definicion break; } else { // w_i = (this->shepard_exponent == 2)? 1.0/dist2 : 1.0/pow(dist2, 0.5*this->shepard_exponent); dist = sqrt(dist2); w_i = pow((this->shepard_radius-dist)/(this->shepard_radius*dist), this->shepard_exponent); num += w_i * y_i; den += w_i; } kd_res_next(presults); } kd_res_free(presults); // si no encontramos ningun punto, duplicamos el radio if (n == 0) { this->shepard_radius *= 2; } } while (n == 0); if (flag == 0) { if (den == 0) { if (this->n_arguments == 3) { feenox_push_error_message("no definition point found in a range %g around point (%g,%g,%g), try a larger SHEPARD_RADIUS", this->shepard_radius, x[0], x[1], x[2]); } else { feenox_push_error_message("no definition point found in a range %g around point, try a larger SHEPARD_RADIUS", this->shepard_radius); } } y = num/den; } feenox_free(x_i); } else if (this->multidim_interp == interp_bilinear && this->rectangular_mesh_size != NULL) { // flag que indica si nos pidieron un punto de la definicion // int flag = 0; // double shape = 0; // indices for bisection size_t *a = NULL; feenox_check_alloc(a = calloc(this->n_arguments, sizeof(size_t))); size_t *b = NULL; feenox_check_alloc(b = calloc(this->n_arguments, sizeof(size_t))); size_t *c = NULL; feenox_check_alloc(c = calloc(this->n_arguments, sizeof(size_t))); size_t *ctilde = NULL; feenox_check_alloc(ctilde = calloc(this->n_arguments, sizeof(size_t))); // normalized coordinates [-1:1] double *r = NULL; feenox_check_alloc(r = calloc(this->n_arguments, sizeof(double))); int flag = 1; // assume we've been asked a point of the grid unsigned int i = 0; for (i = 0; i < this->n_arguments; i++) { a[i] = 0; b[i] = this->rectangular_mesh_size[i]; while ((b[i]-a[i]) > 1) { c[i] = floor(0.5*(a[i]+b[i])); if (this->rectangular_mesh_point[i][c[i]] > x[i]) { b[i] = c[i]; } else { a[i] = c[i]; } } c[i] = floor(0.5*(a[i]+b[i])); if (gsl_fcmp(this->rectangular_mesh_point[i][c[i]], x[i], this->multidim_threshold) != 0) { flag = 0; } } if (flag) { // we've been asked a point of the definition y = feenox_vector_get(this->vector_value, feenox_structured_scalar_index(this->n_arguments, this->rectangular_mesh_size, c, this->x_increases_first)); } else { // we need to interpolate for (i = 0; i < this->n_arguments; i++) { // compute coorindates in [-1:1] maybe we need to extrapolate! if (x[i] < this->rectangular_mesh_point[i][0]) { r[i] = -1; } else if (c[i] == this->rectangular_mesh_size[i]-1) { c[i]--; r[i] = 1; } else { r[i] = -1 + 2*(x[i] - this->rectangular_mesh_point[i][c[i]])/(this->rectangular_mesh_point[i][c[i]+1] - this->rectangular_mesh_point[i][c[i]]); } } y = 0; double shape = 0; for (i = 0; i < (1<n_arguments); i++) { shape = 1; for (j = 0; j < this->n_arguments; j++) { // el desarrollo binario de i nos dice si hay que sumar uno o no al indice ctilde[j] = c[j] + ((i & (1<vector_value, feenox_structured_scalar_index(this->n_arguments, this->rectangular_mesh_size, ctilde, this->x_increases_first)); } y *= 1.0/(1<n_arguments); } feenox_free(ctilde); feenox_free(r); feenox_free(c); feenox_free(b); feenox_free(a); /* } else if (this->multidim_interp == interp_triangle) { y = 0; double *dist; int *index; int far_away; double leg; size_t *closest; gsl_matrix *A; gsl_vector *coeff; gsl_vector *value; gsl_permutation *p; int s; int err; // calculamos las distancias de todos los puntos dato al punto pedido // el calloc las inicializa en cero n = 0; dist = calloc(this->data_size, sizeof(double)); index = calloc(this->data_size, sizeof(int)); for (i = 0; i < this->data_size; i++) { far_away = 0; for (j = 0; j < this->n_arguments; j++) { // leg es cateto en ingles segun google leg = fabs(data_argument[j][i]-x[j]); // si nos dieron una distancia caracteristica, entonces no hace falta // calcular todas las distancias, aquellos puntos que tengan al menos // una coordenada que este a mas tres o cuatro distancias del punto // pedido le ponemos dist = infinito if (this->multidim_characteristic_length != 0 && leg > this->multidim_characteristic_length) { far_away = 1; break; } // TODO: hay que dar una metrica para calcular la distancia // cuando los ejes tienen unidades diferentes!!! dist[n] += leg*leg; } if (!far_away) { // si dist[n] es muy chiquito, nos pidieron justo un punto de los // de la tabla asi que devolvemos ese y a comerla if (dist[n] < this->multidim_threshold) { feenox_free(dist); feenox_free(index); return this->data_value[i]; } // si no esta lejos nos acordamos de i e incrementamos n index[n] = i; n++; } } // aca vamos a guardar los indices de los puntos dato mas cercanos, pero // como eventualmente los mas cercanos caen en un plano capaz que tenemos // que buscar bastantes mas que el minimo indispensable closest = calloc(n, sizeof(size_t)); // para calcular los coeficientes del plano tenemos que resolver un problema // de algebra lineal A = gsl_matrix_alloc(this->n_arguments+1, this->n_arguments+1); coeff = gsl_vector_alloc(this->n_arguments+1); value = gsl_vector_alloc(this->n_arguments+1); p = gsl_permutation_alloc(this->n_arguments+1); // elegimos los tres mas cercanos gsl_sort_smallest_index(closest, this->n_arguments+1, dist, 1, n); for (i = 0; i < this->n_arguments+1; i++) { // nos fabricamos una matriz para calcular los coeficientes del plano definido // por estos tres (o n) puntos for (j = 0; j < this->n_arguments; j++) { gsl_matrix_set(A, i, j, data_argument[j][index[closest[i]]]); } gsl_matrix_set(A, i, this->n_arguments, 1); // // A x = b // // [ x1 y1 1 ] [ z1 ] [ a ] // A = [ x2 y2 1 ] b = [ z2 ] x = [ b ] // [ x3 y4 1 ] [ z3 ] [ c ] // // donde *1, *2 y *3 son los puntos mas cercanos al pedido // el plano es ax + by + c - z = 0 / entonces z = ax + by + c // y el vector de terminos independientes para resolver el problema gsl_vector_set(value, i, this->data_value[index[closest[i]]]); } // solve! for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("%lf ", gsl_matrix_get(A, i, j)); } printf("\n"); } printf("\n"); err = gsl_linalg_LU_decomp(A, p, &s); if ((err = gsl_linalg_LU_solve(A, p, value, coeff)) != GSL_SUCCESS) { int k; // si no se pudo resolver el sistema, los tres puntos estan alineados (o los n puntos forman un hiperplano de dimension n-1 en lugar de n) // devolvemos el mas cercano //y = this->data_value[closest[0]]; // o... tiramos el tercer punto y buscamos otro que de un plano valido // en general, la que no sirve es la fila this->n_arguments (empezando // a contar de cero) de la matriz A // para eso podemos // a. ordenar TODOS los puntos y vamos buscando alguno que de un plano valido // b. vamos seleccionando los k mas cercanos y tomamos los dos primeros y el ultimo // hasta que encontremos un plano valido // // opcion a: te la debo // opcion b k = this->n_arguments; do { k++; // elegimos los k+1 mas cercanos gsl_sort_smallest_index(closest, k+1, dist, 1, n); // tenemos que volver a escribir la matriz completa porque el LU la rompe for (i = 0; i < this->n_arguments; i++) { // arriba que quiere decir esta mantriz for (j = 0; j < this->n_arguments; j++) { gsl_matrix_set(A, i, j, data_argument[j][index[closest[i]]]); } gsl_matrix_set(A, i, this->n_arguments, 1); // y el vector de terminos independientes para resolver el problema gsl_vector_set(value, i, this->data_value[index[closest[i]]]); } // escribimos la ultima fila de la matriz con los nuevos valores for (j = 0; j < this->n_arguments; j++) { gsl_matrix_set(A, this->n_arguments, j, data_argument[j][index[closest[k]]]); } gsl_matrix_set(A, this->n_arguments, this->n_arguments, 1); // y el vector de terminos independientes para resolver el problema gsl_vector_set(value, this->n_arguments, this->data_value[index[closest[k]]]); // solve! for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("%lf ", gsl_matrix_get(A, i, j)); } printf("\n"); } gsl_linalg_LU_decomp(A, p, &s); err = gsl_linalg_LU_solve(A, p, value, coeff); } while (err != GSL_SUCCESS); } // calculamos el punto a partir de la ecuacion del plano y = 0; for (i = 0; i < this->n_arguments; i++) { y += gsl_vector_get(coeff, i)*x[i]; } y += gsl_vector_get(coeff, this->n_arguments); gsl_permutation_free(p); gsl_vector_free(value); gsl_vector_free(coeff); gsl_matrix_free(A); feenox_free(closest); feenox_free(dist); feenox_free(index); */ } } } if (gsl_isnan(y) || gsl_isinf(y)) { feenox_nan_error(); } return y; } size_t feenox_structured_scalar_index(unsigned int n, size_t *size, size_t *index, int x_increases_first) { size_t scalar_index = 0; size_t k = 0; // can't be unsigned because they can be negative int m = 0; int j = 0; if (x_increases_first) { for (m = 0; m < n; m++) { k = 1; for (j = m-1; j >= 0; j--) { k *= size[j]; } scalar_index += k*index[m]; } } else { for (m = n-1; m >= 0; m--) { k = 1; for (j = m+1; j < n; j++) { k *= size[j]; } scalar_index += k*index[m]; } } return scalar_index; } // mira si los n puntos en x[] y en y[] forman una grilla estruturada int feenox_function_is_structured_grid_2d(double *x, double *y, size_t n, size_t *nx, size_t *ny) { // hacemos una primera pasada sobre x hasta encontrar de nuevo el primer valor size_t i = 0; size_t j = 0; do { if (++i == n) { // si recorrimos todo el set y nunca aparecio otra vez el x[0] a comerla return 0; } } while (gsl_fcmp(x[i], x[0], DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD) != 0); // si i es uno entonces a comerla if (i == 1) { return 0; } // asumimos que la cantidad de datos en x es i *nx = i; // y entonces ny tiene que ser la cantidad de datos totales dividido data_size if (n % (*nx) != 0) { // si esto no es entero, no puede ser rectangular return 0; } *ny = n/(*nx); // si x[j] != x[j-nx] entonces no es una grilla estructurada for (i = *nx; i < n; i++) { if (gsl_fcmp(x[i], x[i-(*nx)], DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD*fabs(x[(*nx)-1]-x[0])) != 0) { return 0; } } // ahora miramos el conjunto y, tienen que ser nx valores igualitos consecutivos for (i = 0; i < *ny; i++) { for (j = 0; j < (*nx)-1; j++) { if (gsl_fcmp(y[i*(*nx) + j], y[i*(*nx) + j + 1], DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD*fabs(y[n-1]-y[0])) != 0) { return 0; } } } // si llegamos hasta aca, es una grilla bidimensional estructurada! return 1; } // mira si los n puntos en x[], y[] y z[] forman una grilla estruturada int feenox_function_is_structured_grid_3d(double *x, double *y, double *z, size_t n, size_t *nx, size_t *ny, size_t *nz) { size_t i = 0; // hacemos una pasada sobre x hasta encontrar de nuevo el primer valor i = 0; do { i += 1; if (i == n) { // si recorrimos todo el set y nunca aparecio otra vez el x[0] a comerla return 0; } } while (gsl_fcmp(x[i], x[0], DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD) != 0); // si i es uno entonces a comerla if (i == 1) { return 0; } // asumimos que la cantidad de datos en x es i *nx = i; // hacemos una pasada sobre y hasta encontrar de nuevo el primer valor // pero con step nx i = 0; do { i += *nx; if (i >= n) { // si recorrimos todo el set y nunca aparecio otra vez el y[0] a comerla return 0; } } while (gsl_fcmp(y[i], y[0], DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD) != 0); // si i es uno entonces a comerla if (i == *nx || i % ((*nx)) != 0) { return 0; } // asumimos que la cantidad de datos en x es i *ny = i/(*nx); // y entonces nz tiene que ser la cantidad de datos totales dividido data_size if (n % ((*ny)*(*nx)) != 0) { // si esto no es entero, no puede ser rectangular return 0; } *nz = n/((*ny)*(*nx)); for (i = *nx; i < n; i++) { if (gsl_fcmp(x[i], x[i-(*nx)], DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD*fabs(x[(*nx)-1]-x[0])) != 0) { return 0; } } for (i = (*nx)*(*ny); i < n; i++) { if (gsl_fcmp(y[i], y[i-(*nx)*(*ny)], DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD*fabs(x[(*nx)-1]-x[0])) != 0) { return 0; } } return 1; } feenox-1.1/src/math/builtin_functions.c0000644000175000017500000016136214773607165015233 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX builtin functions * * Copyright (C) 2009--2023 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include #include #ifdef HAVE_CLOCK_GETTIME #include #else #include #include #endif #ifdef HAVE_GETRUSAGE #include #endif // plotx reference // 1. min // 2. max // 3. step // 4. minxtics // 5. maxxtics // 6. stepxtics // 7. minytics // 8. maxytics // 9. stepytics double feenox_builtin_abs(expr_item_t *); double feenox_builtin_acos(expr_item_t *); double feenox_builtin_asin(expr_item_t *); double feenox_builtin_atan(expr_item_t *); double feenox_builtin_atan2(expr_item_t *); double feenox_builtin_ceil(expr_item_t *); double feenox_builtin_clock(expr_item_t *); double feenox_builtin_cos(expr_item_t *); double feenox_builtin_cosh(expr_item_t *); double feenox_builtin_cpu_time(expr_item_t *); double feenox_builtin_d_dt(expr_item_t *); double feenox_builtin_deadband(expr_item_t *); double feenox_builtin_equal(expr_item_t *); double feenox_builtin_exp(expr_item_t *); double feenox_builtin_expint1(expr_item_t *); double feenox_builtin_expint2(expr_item_t *); double feenox_builtin_expint3(expr_item_t *); double feenox_builtin_expintn(expr_item_t *); double feenox_builtin_floor(expr_item_t *); double feenox_builtin_gammaf(expr_item_t *); double feenox_builtin_heaviside(expr_item_t *); double feenox_builtin_if(expr_item_t *); double feenox_builtin_is_in_interval(expr_item_t *); double feenox_builtin_integral_dt(expr_item_t *); double feenox_builtin_integral_euler_dt(expr_item_t *); double feenox_builtin_lag(expr_item_t *); double feenox_builtin_lag_bilinear(expr_item_t *); double feenox_builtin_lag_euler(expr_item_t *); double feenox_builtin_last(expr_item_t *); double feenox_builtin_limit(expr_item_t *); double feenox_builtin_limit_dt(expr_item_t *); double feenox_builtin_log(expr_item_t *); double feenox_builtin_mark_max(expr_item_t *); double feenox_builtin_mark_min(expr_item_t *); double feenox_builtin_max(expr_item_t *); double feenox_builtin_memory(expr_item_t *); double feenox_builtin_mpi_memory_local(expr_item_t *); double feenox_builtin_mpi_memory_global(expr_item_t *); double feenox_builtin_min(expr_item_t *); double feenox_builtin_mod(expr_item_t *); double feenox_builtin_not(expr_item_t *); double feenox_builtin_quasi_random(expr_item_t *); double feenox_builtin_quasi_random_helper1d(expr_item_t *f, const gsl_qrng_type *T); double feenox_builtin_quasi_random_helper2d(expr_item_t *f, const gsl_qrng_type *T); double feenox_builtin_qrng_sobol(expr_item_t *f); double feenox_builtin_qrng_niederreiter(expr_item_t *f); double feenox_builtin_qrng_halton(expr_item_t *f); double feenox_builtin_qrng_reversehalton(expr_item_t *f); double feenox_builtin_qrng2d_sobol(expr_item_t *f); double feenox_builtin_qrng2d_niederreiter(expr_item_t *f); double feenox_builtin_qrng2d_halton(expr_item_t *f); double feenox_builtin_qrng2d_reversehalton(expr_item_t *f); double feenox_builtin_random(expr_item_t *); double feenox_builtin_random_gauss(expr_item_t *); double feenox_builtin_round(expr_item_t *); double feenox_builtin_sawtooth_wave(expr_item_t *); double feenox_builtin_sgn(expr_item_t *); double feenox_builtin_is_even(expr_item_t *); double feenox_builtin_is_odd(expr_item_t *); double feenox_builtin_sin(expr_item_t *); double feenox_builtin_j0(expr_item_t *); double feenox_builtin_sech(expr_item_t *); double feenox_builtin_sinh(expr_item_t *); double feenox_builtin_sqrt(expr_item_t *); double feenox_builtin_square_wave(expr_item_t *); double feenox_builtin_tan(expr_item_t *); double feenox_builtin_tanh(expr_item_t *); double feenox_builtin_threshold_max(expr_item_t *); double feenox_builtin_threshold_min(expr_item_t *); double feenox_builtin_triangular_wave(expr_item_t *); double feenox_builtin_wall_time(expr_item_t *); struct builtin_function_t builtin_function[N_BUILTIN_FUNCTIONS] = { {"abs", 1, 1, &feenox_builtin_abs}, {"asin", 1, 1, &feenox_builtin_asin}, {"acos", 1, 1, &feenox_builtin_acos}, {"atan", 1, 1, &feenox_builtin_atan}, {"atan2", 2, 2, &feenox_builtin_atan2}, {"ceil", 1, 1, &feenox_builtin_ceil}, {"clock", 0, 1, &feenox_builtin_clock}, {"cos", 1, 1, &feenox_builtin_cos}, {"cosh", 1, 1, &feenox_builtin_cosh}, {"cpu_time", 0, 1, &feenox_builtin_cpu_time}, {"d_dt", 1, 1, &feenox_builtin_d_dt}, {"deadband", 2, 2, &feenox_builtin_deadband}, {"equal", 2, 3, &feenox_builtin_equal}, {"exp", 1, 1, &feenox_builtin_exp}, {"expint1", 1, 1, &feenox_builtin_expint1}, {"expint2", 1, 1, &feenox_builtin_expint2}, {"expint3", 1, 1, &feenox_builtin_expint3}, {"expintn", 2, 2, &feenox_builtin_expintn}, {"floor", 1, 1, &feenox_builtin_floor}, {"gammaf", 1, 1, &feenox_builtin_gammaf}, {"heaviside", 1, 2, &feenox_builtin_heaviside}, {"if", 1, 4, &feenox_builtin_if}, {"integral_dt", 1, 1, &feenox_builtin_integral_dt}, {"integral_euler_dt", 1, 1, &feenox_builtin_integral_euler_dt}, {"is_even", 1, 1, &feenox_builtin_is_even}, {"is_in_interval", 3, 3, &feenox_builtin_is_in_interval}, {"is_odd", 1, 1, &feenox_builtin_is_odd}, {"lag", 2, 2, &feenox_builtin_lag}, {"lag_bilinear", 2, 2, &feenox_builtin_lag_bilinear}, {"lag_euler", 2, 2, &feenox_builtin_lag_euler}, {"last", 1, 2, &feenox_builtin_last}, {"limit", 3, 3, &feenox_builtin_limit}, {"limit_dt", 3, 3, &feenox_builtin_limit_dt}, {"log", 1, 1, &feenox_builtin_log}, {"j0", 1, 1, &feenox_builtin_j0}, {"mark_max", 2, MINMAX_ARGS, &feenox_builtin_mark_max}, {"mark_min", 2, MINMAX_ARGS, &feenox_builtin_mark_min}, {"max", 2, MINMAX_ARGS, &feenox_builtin_max}, {"memory", 0, 1, &feenox_builtin_memory}, {"min", 2, MINMAX_ARGS, &feenox_builtin_min}, {"mpi_memory_global", 0, 1, &feenox_builtin_mpi_memory_global}, {"mpi_memory_local", 0, 1, &feenox_builtin_mpi_memory_local}, {"mod", 2, 2, &feenox_builtin_mod}, {"not", 1, 2, &feenox_builtin_not}, {"quasi_random", 2, 2, &feenox_builtin_quasi_random}, {"qrng_sobol", 2, 2, &feenox_builtin_qrng_sobol}, {"qrng_niederreiter", 2, 2, &feenox_builtin_qrng_niederreiter}, {"qrng_halton", 2, 2, &feenox_builtin_qrng_halton}, {"qrng_reversehalton", 2, 2, &feenox_builtin_qrng_reversehalton}, {"qrng2d_sobol", 1, 2, &feenox_builtin_qrng2d_sobol}, {"qrng2d_niederreiter", 1, 2, &feenox_builtin_qrng2d_niederreiter}, {"qrng2d_halton", 1, 2, &feenox_builtin_qrng2d_halton}, {"qrng2d_reversehalton", 1, 2, &feenox_builtin_qrng2d_reversehalton}, {"random", 2, 3, &feenox_builtin_random}, {"random_gauss", 2, 3, &feenox_builtin_random_gauss}, {"round", 1, 1, &feenox_builtin_round}, {"sawtooth_wave", 1, 1, &feenox_builtin_sawtooth_wave}, {"sgn", 1, 2, &feenox_builtin_sgn}, {"sech", 1, 1, &feenox_builtin_sech}, {"sin", 1, 1, &feenox_builtin_sin}, {"sinh", 1, 1, &feenox_builtin_sinh}, {"sqrt", 1, 1, &feenox_builtin_sqrt}, {"square_wave", 1, 1, &feenox_builtin_square_wave}, {"tan", 1, 1, &feenox_builtin_tan}, {"tanh", 1, 1, &feenox_builtin_tanh}, {"threshold_max", 2, 3, &feenox_builtin_threshold_max}, {"threshold_min", 2, 3, &feenox_builtin_threshold_min}, {"triangular_wave", 1, 1, &feenox_builtin_triangular_wave}, {"wall_time", 0, 1, &feenox_builtin_wall_time}, }; ///fn+clock+usage clock([f]) ///fn+clock+desc Returns the value of a certain clock in seconds measured from a certain (but specific) milestone. ///fn+clock+desc The kind of clock and the initial milestone depend on the optional integer argument\ $f$. ///fn+clock+desc It defaults to one, meaning `CLOCK_MONOTONIC`. ///fn+clock+desc The list and the meanings of the other available values for\ $f$ can be checked ///fn+clock+desc in the `clock_gettime (2)` system call manual page. double feenox_builtin_clock(expr_item_t *f) { #ifdef HAVE_CLOCK_GETTIME struct timespec tp; clockid_t clk_id = (f->arg[0].items != NULL) ? (clockid_t)feenox_expression_eval(&f->arg[0]) : CLOCK_MONOTONIC; if (clock_gettime(clk_id, &tp) < 0) { feenox_runtime_error(); } return (double)tp.tv_sec + 1e-9 * (double)tp.tv_nsec; #else return 0; #endif // HAVE_CLOCK_GETTIME } ///fn+wall_time+usage wall_time() ///fn+wall_time+desc Returns the time elapsed since the invocation of FeenoX, in seconds. double feenox_builtin_wall_time(expr_item_t *f) { #ifdef HAVE_CLOCK_GETTIME struct timespec tp; if (clock_gettime(CLOCK_MONOTONIC, &tp) < 0) { feenox_runtime_error(); } return (double)(tp.tv_sec - feenox.tp0.tv_sec) + 1e-9 * (double)(tp.tv_nsec - feenox.tp0.tv_sec); #else return 0; #endif // HAVE_CLOCK_GETTIME } ///fn+memory+usage memory() ///fn+memory+desc Returns the maximum memory (resident set size) used by FeenoX, in Gigabytes. double feenox_builtin_memory(expr_item_t *f) { double memory_gb = 0; #ifdef HAVE_GETRUSAGE struct rusage usage; getrusage(RUSAGE_SELF, &usage); memory_gb = (double)(usage.ru_maxrss/(1024.0*1024.0)); #endif // HAVE_GETRUSAGE return memory_gb; } ///fn+mpi_memory_local+usage mpi_memory_local([rank]) ///fn+mpi_memory_local+desc Returns the memory usage as reported by PETSc in the give rank, in Gigabytes. ///fn+mpi_memory_local+desc If no rank is given, each rank returns a local value which should be printed with `PRINTF_ALL`. double feenox_builtin_mpi_memory_local(expr_item_t *f) { double memory_local = 0; #ifdef HAVE_PETSC if (f->arg[0].functions == NULL || feenox.mpi_size == 0) { PetscMemoryGetCurrentUsage(&memory_local); } else { PetscInt rank = (PetscInt)feenox_expression_eval(&f->arg[0]); double memory_rank = 0; if (feenox.mpi_rank == rank) { PetscMemoryGetCurrentUsage(&memory_rank); #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-value" MPI_Allreduce(&memory_rank, &memory_local, 1, MPIU_SCALAR, MPIU_SUM, (feenox.pde.petscinit_called) ? PETSC_COMM_WORLD : MPI_COMM_WORLD); #pragma GCC diagnostic pop } } #endif return memory_local/(1024.0*1024.0*1024.0); } ///fn+mpi_memory_local+usage mpi_memory_global() ///fn+mpi_memory_local+desc Returns the memory global usage as reported by PETSc summing over all ranks, in Gigabytes. double feenox_builtin_mpi_memory_global(expr_item_t *f) { double memory_local = 0; double memory_global = 0; #ifdef HAVE_PETSC if (feenox.mpi_size != 0) { PetscMemoryGetCurrentUsage(&memory_local); #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-value" MPI_Allreduce(&memory_local, &memory_global, 1, MPIU_SCALAR, MPIU_SUM, (feenox.pde.petscinit_called) ? PETSC_COMM_WORLD : MPI_COMM_WORLD); #pragma GCC diagnostic pop } else { PetscMemoryGetCurrentUsage(&memory_global); } #endif return memory_global/(1024.0*1024.0*1024.0); } ///fn+cpu_time+usage cpu_time([f]) ///fn+cpu_time+desc Returns the CPU time used by the local FeenoX rank, in seconds. ///fn+cpu_time+desc If the optional argument `f` is not provided or it is zero (default), ///fn+cpu_time+desc the sum of times for both user-space and kernel-space usage is returned. ///fn+cpu_time+desc For `f=1` only user time is returned. ///fn+cpu_time+desc For `f=2` only system time is returned. double feenox_builtin_cpu_time(expr_item_t *f) { double cpu_time_seconds = 0; #ifdef HAVE_GETRUSAGE struct rusage usage; getrusage(RUSAGE_SELF, &usage); double user = (double)usage.ru_utime.tv_sec + 1e-6 * (double)usage.ru_utime.tv_usec; double kernel = (double)usage.ru_stime.tv_sec + 1e-6 * (double)usage.ru_stime.tv_usec; switch ((f->arg[0].items != NULL) ? (int)feenox_expression_eval(&f->arg[0]) : 0) { case 0: cpu_time_seconds = user + kernel; break; case 1: cpu_time_seconds = user; break; case 2: cpu_time_seconds = kernel; break; } #endif // HAVE_GETRUSAGE return cpu_time_seconds; } ///fn+last+usage last(x,[p]) ///fn+last+math z^{-1}\left[ x \right] = x(t-\Delta t) ///fn+last+desc Returns the value the variable\ $x$ had in the previous time step. ///fn+last+desc This function is equivalent to the\ $Z$-transform operator "delay" denoted by\ $z^{-1}\left[ x\right]$. ///fn+last+desc For\ $t=0$ the function returns the actual value of\ $x$. ///fn+last+desc The optional flag\ $p$ should be set to one if the reference to `last` ///fn+last+desc is done in an assignment over a variable that already appears inside ///fn+last+desc expression\ $x$ such as `x = last(x)`. See example number 2. double feenox_builtin_last(expr_item_t *f) { double y = 0; double x = feenox_expression_eval(&f->arg[0]); double p = feenox_expression_eval(&f->arg[1]); if (f->aux == NULL) { f->aux = malloc(3*sizeof(double)); f->aux[0] = x; f->aux[1] = x; f->aux[2] = 0; } else { if ((int)feenox_special_var_value(in_static)) { if ((int)round(f->aux[2]) != (int)(feenox_special_var_value(step_static))) { f->aux[0] = f->aux[1]; f->aux[1] = x; f->aux[2] = (int)(feenox_special_var_value(step_static)); } } else { if ((int)round(f->aux[2]) != (int)(feenox_special_var_value(step_transient))) { f->aux[0] = f->aux[1]; f->aux[1] = x; f->aux[2] = (int)(feenox_special_var_value(step_transient)); } } } // this is to be able to do x = last(x) // TODO: see if there's a better way if (p == 0) { y = f->aux[0]; } else { y = x; } if (feenox_special_var_value(done)) { feenox_free(f->aux); } return y; } ///fn+d_dt+usage d_dt(x) ///fn+d_dt+math \frac{x(t) - x(t-\Delta t)}{\Delta t} \approx \frac{d}{dt} \Big( x (t) \Big) ///fn+d_dt+desc Computes the time derivative of the expression given in the argument\ $x$ ///fn+d_dt+desc during a transient problem ///fn+d_dt+desc using the difference between the value of the signal in the previous time step ///fn+d_dt+desc and the actual value divided by the time step\ $\delta t$ stored in `dt`. ///fn+d_dt+desc The argument\ $x$ does not need to be a variable, it can be an expression ///fn+d_dt+desc involving one or more variables that change in time. ///fn+d_dt+desc For $t=0$, the return value is zero. ///fn+d_dt+desc Unlike the functional `derivative`, the full dependence of these variables with time ///fn+d_dt+desc does not need to be known beforehand, i.e. the expression `x` might involve variables ///fn+d_dt+desc read from a shared-memory object at each time step. double feenox_builtin_d_dt(expr_item_t *f) { double y = 0; double x = feenox_expression_eval(&f->arg[0]); if (feenox_special_var_value(dt) == 0) { feenox_nan_error(); return 0; } if (f->aux == NULL) { f->aux = malloc(3*sizeof(double)); f->aux[0] = x; f->aux[1] = x; f->aux[2] = 0; } else if ((int)(feenox_special_var_value(in_static))) { f->aux[0] = x; f->aux[1] = x; f->aux[2] = 0; } else if ((int)round(f->aux[2]) != (int)(feenox_special_var_value(step_transient))) { f->aux[0] = f->aux[1]; f->aux[1] = x; f->aux[2] = (int)(feenox_special_var_value(step_transient)); } y = (x - f->aux[0])/feenox_special_var_value(dt); if (feenox_special_var_value(done)) { feenox_free(f->aux); } return y; } ///fn+integral_dt+usage integral_dt(x) ///fn+integral_dt+math z^{-1}\left[ \int_0^{t-\Delta t} x(t') \, dt' \right] + \frac{x(t) + x(t-\Delta t)}{2} \, \Delta t \approx \int_0^{t} x(t') \, dt' ///fn+integral_dt+desc Computes the time integral of the expression given in the argument\ $x$ ///fn+integral_dt+desc during a transient problem with the trapezoidal rule ///fn+integral_dt+desc using the value of the signal in the previous time step and the current value. ///fn+integral_dt+desc At $t = 0$ the integral is initialized to zero. ///fn+integral_dt+desc Unlike the functional `integral`, the full dependence of these variables with time ///fn+integral_dt+desc does not need to be known beforehand, i.e. the expression `x` might involve variables ///fn+integral_dt+desc read from a shared-memory object at each time step. double feenox_builtin_integral_dt(expr_item_t *f) { double y; double x = feenox_expression_eval(&f->arg[0]); if (f->aux == NULL) { f->aux = malloc(4*sizeof(double)); f->aux[0] = x; f->aux[1] = x; f->aux[2] = 0; f->aux[3] = 0; } else if ((int)(feenox_special_var_value(in_static))) { f->aux[0] = x; f->aux[1] = x; f->aux[2] = 0; f->aux[3] = 0; } else if ((int)round(f->aux[3]) != (int)(feenox_special_var_value(step_transient))) { f->aux[0] = f->aux[1]; f->aux[1] = x; f->aux[2] += 0.5*(f->aux[0]+x)*feenox_special_var_value(dt); f->aux[3] = (int)(feenox_special_var_value(step_transient)); } y = f->aux[2]; if (feenox_special_var_value(done)) { feenox_free(f->aux); } return y; } ///fn+integral_euler_dt+math z^{-1}\left[ \int_0^{t-\Delta t} x(t') \, dt' \right] + x(t) \, \Delta t \approx \int_0^{t} x(t') \, dt' ///fn+integral_euler_dt+usage integral_euler_dt(x) ///fn+integral_euler_dt+desc Idem as `integral_dt` but uses the backward Euler rule to update the instantaenous integral value. ///fn+integral_euler_dt+desc This function is provided in case this particular way ///fn+integral_euler_dt+desc of approximating time integrals is needed, ///fn+integral_euler_dt+desc for instance to compare FeenoX solutions with other computer codes. ///fn+integral_euler_dt+desc In general, it is recommended to use `integral_dt`. double feenox_builtin_integral_euler_dt(expr_item_t *f) { double y; double x = feenox_expression_eval(&f->arg[0]); if (f->aux == NULL) { f->aux = malloc(2*sizeof(double)); f->aux[0] = 0; f->aux[1] = 0; } else if ((int)(feenox_special_var_value(in_static))) { f->aux[0] = 0; f->aux[1] = 0; } else if ((int)round(f->aux[1]) != (int)(feenox_special_var_value(step_transient))) { f->aux[0] += x*feenox_special_var_value(dt); f->aux[1] = (int)(feenox_special_var_value(step_transient)); } y = f->aux[0]; if (feenox_special_var_value(done)) { feenox_free(f->aux); } return y; } ///fn+square_wave+usage square_wave(x) ///fn+square_wave+desc Computes a square function between zero and one with a period equal to one. ///fn+square_wave+desc The output is one for $0 < x < 1/2$ and zero for $1/2 \leq x < 1$. ///fn+square_wave+desc As with the sine wave, a square wave can be generated by passing as the argument\ $x$ ///fn+square_wave+desc a linear function of time such as\ $\omega t+\phi$, where\ $\omega$ ///fn+square_wave+desc controls the frequency of the wave and\ $\phi$ controls its phase. ///fn+square_wave+math \begin{cases} 1 & \text{if $x - \lfloor x \rfloor < 0.5$} \\ 0 & \text{otherwise} \end{cases} ///fn+square_wave+plotx 0 2.75 1e-3 0 3 1 0 1 0.5 0.25 0.25 double feenox_builtin_square_wave(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); return ((x - floor(x)) < 0.5); } ///fn+triangular_wave+usage triangular_wave(x) ///fn+triangular_wave+math \begin{cases} 2 (x - \lfloor x \rfloor) & \text{if $x - \lfloor x \rfloor < 0.5$} \\ 2 [1-(x - \lfloor x \rfloor)] & \text{otherwise} \end{cases} ///fn+triangular_wave+desc Computes a triangular wave between zero and one with a period equal to one. ///fn+triangular_wave+desc As with the sine wave, a triangular wave can be generated by passing as the argument\ $x$ ///fn+triangular_wave+desc a linear function of time such as\ $\omega t+\phi$, where\ $\omega$ ///fn+triangular_wave+desc controls the frequency of the wave and\ $\phi$ controls its phase. ///fn+triangular_wave+plotx 0 2.75 1e-2 0 3 1 0 1 0.5 0.25 0.25 double feenox_builtin_triangular_wave(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); if ((x - floor(x)) < 0.5) { return 2*(x - floor(x)); } else { return 2*(1 - (x - floor(x))); } } ///fn+sawtooth_wave+usage sawtooth_wave(x) ///fn+sawtooth_wave+math x - \lfloor x \rfloor ///fn+sawtooth_wave+desc Computes a sawtooth wave between zero and one with a period equal to one. ///fn+sawtooth_wave+desc As with the sine wave, a sawtooh wave can be generated by passing as the argument\ $x$ ///fn+sawtooth_wave+desc a linear function of time such as\ $\omega t+\phi$, where\ $\omega$ controls ///fn+sawtooth_wave+desc the frequency of the wave and $\phi$ controls its phase. ///fn+sawtooth_wave+plotx 0 2.75 1e-3 0 3 1 0 1 0.5 0.25 0.25 double feenox_builtin_sawtooth_wave(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); return x - floor(x); } ///fn+sin+usage sin(x) ///fn+sin+math \sin(x) ///fn+sin+desc Computes the sine of the argument\ $x$, where\ $x$ is in radians. ///fn+sin+desc A sine wave can be generated by passing as the argument\ $x$ ///fn+sin+desc a linear function of time such as\ $\omega t+\phi$, where\ $\omega$ controls the frequency of the wave ///fn+sin+desc and\ $\phi$ controls its phase. ///fn+sin+plotx -2*pi 2*pi pi/100 -6 +6 2 -1 +1 0.5 1 0.25 double feenox_builtin_sin(expr_item_t *f) { return sin(feenox_expression_eval(&f->arg[0])); } ///fn+asin+usage asin(x) ///fn+asin+math \arcsin(x) ///fn+asin+desc Computes the arc in radians whose sine is equal to the argument\ $x$. ///fn+asin+desc A NaN error is raised if\ $|x|>1$. ///fn+asin+plotx -1 1 1/100 -1 1 0.5 -1.5 1.5 1 0.25 0.5 double feenox_builtin_asin(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); if (fabs(x) > 1.0) { feenox_push_error_message("argument greater than one to function asin"); feenox_nan_error(); return 0; } return asin(x); } ///fn+acos+usage acos(x) ///fn+acos+math \arccos(x) ///fn+acos+desc Computes the arc in radians whose cosine is equal to the argument\ $x$. ///fn+acos+desc A NaN error is raised if\ $|x|>1$. ///fn+acos+plotx -1 1 1/100 -1 1 0.5 0 3.5 1 0.25 0.5 double feenox_builtin_acos(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); if (fabs(x) > 1.0) { feenox_push_error_message("argument greater than one to function acos"); feenox_nan_error(); return 0; } return acos(x); } ///fn+j0+usage j0(x) ///fn+j0+math J_0(x) ///fn+j0+desc Computes the regular cylindrical Bessel function of zeroth order evaluated at the argument\ $x$. ///fn+j0+plotx 0 10 0.05 double feenox_builtin_j0(expr_item_t *f) { return gsl_sf_bessel_J0(feenox_expression_eval(&f->arg[0])); } ///fn+cos+usage cos(x) ///fn+cos+math \cos(x) ///fn+cos+desc Computes the cosine of the argument\ $x$, where\ $x$ is in radians. ///fn+cos+desc A cosine wave can be generated by passing as the argument\ $x$ ///fn+cos+desc a linear function of time such as\ $\omega t+\phi$, where $\omega$ controls ///fn+cos+desc the frequency of the wave and $\phi$ controls its phase. ///fn+cos+plotx -2*pi 2*pi pi/100 -6 +6 2 -1 +1 0.5 1 0.25 double feenox_builtin_cos(expr_item_t *f) { return cos(feenox_expression_eval(&f->arg[0])); } ///fn+tan+usage tan(x) ///fn+tan+math \tan(x) ///fn+tan+desc Computes the tangent of the argument\ $x$, where\ $x$ is in radians. ///fn+tan+plotx -1.3 +1.3 1e-2 -1 +1 0.5 -4 +4 2 0.25 0.5 double feenox_builtin_tan(expr_item_t *f) { return tan(feenox_expression_eval(&f->arg[0])); } ///fn+sech+usage sech(x) ///fn+sech+math \text{sech}(x) ///fn+sech+desc Computes the hyperbolic secant of the argument\ $x$, where\ $x$ is in radians. ///fn+sech+plotx -2.5 2.5 1e-2 -3 +3 1 -6 +6 2 0.25 1 double feenox_builtin_sech(expr_item_t *f) { return 1.0/cosh(feenox_expression_eval(&f->arg[0])); } ///fn+sinh+usage sinh(x) ///fn+sinh+math \sinh(x) ///fn+sinh+desc Computes the hyperbolic sine of the argument\ $x$, where\ $x$ is in radians. ///fn+sinh+plotx -2.5 2.5 1e-2 -3 +3 1 -6 +6 2 0.25 1 double feenox_builtin_sinh(expr_item_t *f) { return sinh(feenox_expression_eval(&f->arg[0])); } ///fn+cosh+usage cosh(x) ///fn+cosh+math \cosh(x) ///fn+cosh+desc Computes the hyperbolic cosine of the argument\ $x$, where\ $x$ is in radians. ///fn+cosh+plotx -1.5 1.5 1e-2 -1.5 +1.5 0.5 1 3 0.5 0.25 0.25 double feenox_builtin_cosh(expr_item_t *f) { return cosh(feenox_expression_eval(&f->arg[0])); } ///fn+tanh+usage tanh(x) ///fn+tanh+math \tanh(x) ///fn+tanh+desc Computes the hyperbolic tangent of the argument\ $x$, where\ $x$ is in radians. ///fn+tanh+plotx -2.5 +2.5 1e-2 -3 +3 1 -1 +1 0.5 0.5 0.25 double feenox_builtin_tanh(expr_item_t *f) { return tanh(feenox_expression_eval(&f->arg[0])); } ///fn+atan+usage atan(x) ///fn+atan+math \arctan(x) ///fn+atan+desc Computes, in radians, the arc tangent of the argument\ $x$. ///fn+atan+plotx -6 6 pi/100 -6 6 2 -1 1 1 1 0.5 double feenox_builtin_atan(expr_item_t *f) { return atan(feenox_expression_eval(&f->arg[0])); } ///fn+atan2+usage atan2(y,x) ///fn+atan2+math \arctan(y/x) ///fn+atan2+desc Computes, in radians, the arc tangent of quotient\ $y/x$, using the signs of the two arguments ///fn+atan2+desc to determine the quadrant of the result, which is in the range $[-\pi,\pi]$. double feenox_builtin_atan2(expr_item_t *f) { return atan2(feenox_expression_eval(&f->arg[0]), feenox_expression_eval(&f->arg[1])); } ///fn+exp+desc Computes the exponential function the argument\ $x$, i.e. the base of the ///fn+exp+desc natural logarithm\ $e$ raised to the\ $x$-th power. ///fn+exp+usage exp(x) ///fn+exp+math e^x ///fn+exp+plotx -2 2 1e-2 -2 +2 1 0 8 2 0.25 1 double feenox_builtin_exp(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); return (x < GSL_LOG_DBL_MIN) ? 0 : gsl_sf_exp(x); } ///fn+expint1+desc Computes the first exponential integral function of the argument\ $x$. ///fn+expint1+desc If\ $x$ is zero, a NaN error is issued. ///fn+expint1+usage expint1(x) ///fn+expint1+math \text{Re} \left[ \int_1^{\infty}\! \frac{\exp(-xt)}{t} \, dt \right] ///fn+expint1+plotx 1e-2 2.0 1e-2 double feenox_builtin_expint1(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); if (x == 0) { feenox_nan_error(); return 0; } return gsl_sf_expint_E1(x); } ///fn+expint2+desc Computes the second exponential integral function of the argument\ $x$. ///fn+expint2+usage expint2(x) ///fn+expint2+math \text{Re} \left[ \int_1^{\infty}\! \frac{\exp(-xt)}{t^2} \, dt \right] ///fn+expint2+plotx 0.0 2.0 1e-2 double feenox_builtin_expint2(expr_item_t *f) { return gsl_sf_expint_E2(feenox_expression_eval(&f->arg[0])); } ///fn+expint3+desc Computes the third exponential integral function of the argument\ $x$. ///fn+expint3+usage expint3(x) ///fn+expint3+math \text{Re} \left[ \int_1^{\infty}\! \frac{\exp(-xt)}{t^3} \, dt \right] ///fn+expint3+plotx 0.0 2.0 1e-2 double feenox_builtin_expint3(expr_item_t *f) { return gsl_sf_expint_En(3, feenox_expression_eval(&f->arg[0])); } ///fn+expintn+desc Computes the $n$-th exponential integral function of the argument\ $x$. ///fn+expintn+desc If\ $n$ is zero or one and\ $x$ is zero, a NaN error is issued. ///fn+expintn+usage expintn(n,x) ///fn+expintn+math \text{Re} \left[ \int_1^{\infty}\! \frac{\exp(-xt)}{t^n} \, dt \right] double feenox_builtin_expintn(expr_item_t *f) { int n; n = ((int)(round(feenox_expression_eval(&f->arg[0])))); double x = feenox_expression_eval(&f->arg[1]); if ((n == 1 || n == 0) && x == 0) { feenox_nan_error(); return 0; } return gsl_sf_expint_En(n, x); } ///fn+log+desc Computes the natural logarithm of the argument\ $x$. If\ $x$ is zero or negative, ///fn+log+desc a NaN error is issued. ///fn+log+usage log(x) ///fn+log+math \ln(x) ///fn+log+plotx 0.1 3.75 1e-2 0 4 0.5 -2 1 1 0.25 0.25 double feenox_builtin_log(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); if (x <= 0) { feenox_nan_error(); return 0; } return gsl_sf_log(x); } ///fn+abs+desc Returns the absolute value of the argument\ $x$. ///fn+abs+usage abs(x) ///fn+abs+math |x| ///fn+abs+plotx -2.5 +2.5 1e-2 -2 2 1 0 2 1 0.5 0.5 double feenox_builtin_abs(expr_item_t *f) { return fabs(feenox_expression_eval(&f->arg[0])); } ///fn+sqrt+desc Computes the positive square root of the argument\ $x$. ///fn+sqrt+desc If\ $x$ is negative, a NaN error is issued. ///fn+sqrt+usage sqrt(x) ///fn+sqrt+math +\sqrt{x} ///fn+sqrt+plotx 0 5 1e-2 0 6 1 0 2.5 0.5 0.5 0.25 double feenox_builtin_sqrt(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); if (x < 0) { feenox_nan_error(); return 0; } return sqrt(x); } ///fn+is_even+desc Returns one if the argument\ $x$ rounded to the nearest integer is even. ///fn+is_even+usage is_even(x) ///fn+is_even+math \begin{cases}1 &\text{if $x$ is even} \\ 0 &\text{if $x$ is odd} \end{cases} double feenox_builtin_is_even(expr_item_t *f) { return GSL_IS_EVEN((int)(round(feenox_expression_eval(&f->arg[0])))); } ///fn+is_odd+desc Returns one if the argument\ $x$ rounded to the nearest integer is odd. ///fn+is_odd+usage is_odd(x) ///fn+is_odd+math \begin{cases}1 &\text{if $x$ is odd} \\ 0 &\text{if $x$ is even} \end{cases} double feenox_builtin_is_odd(expr_item_t *f) { return GSL_IS_ODD((int)(round(feenox_expression_eval(&f->arg[0])))); } ///fn+heaviside+desc Computes the zero-centered Heaviside step function of the argument\ $x$. ///fn+heaviside+desc If the optional second argument $\delta$ is provided, the discontinuous ///fn+heaviside+desc step at\ $x=0$ is replaced by a ramp starting at\ $x=0$ and finishing at\ $x=\delta$. ///fn+heaviside+usage heaviside(x, [delta]) ///fn+heaviside+math \begin{cases} 0 & \text{if $x < 0$} \\ x / \delta & \text{if $0 < x < \delta$} \\ 1 & \text{if $x > \delta$} \end{cases} ///fn+heaviside+plotx -2.5 2.5 5e-3 -2 +2 1 0 1 0.5 0.5 0.25 double feenox_builtin_heaviside(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); double delta = feenox_expression_eval(&f->arg[1]); if (x <= 0) { return 0; } else if (x < delta) { return x/delta; } return 1; } ///fn+sgn+desc Returns minus one, zero or plus one depending on the sign of the first argument\ $x$. ///fn+sgn+desc The second optional argument $\epsilon$ gives the precision of the "zero" ///fn+sgn+desc evaluation. If not given, default is $\epsilon = 10^{-9}$. ///fn+sgn+usage sgn(x, [eps]) ///fn+sgn+math \begin{cases}-1 &\text{if $x \le -\epsilon$} \\ 0 &\text{if $|x| < \epsilon$} \\ +1 &\text{if $x \ge +\epsilon$} \end{cases} ///fn+sgn+plotx -2.5 2.5 1e-3 -2 +2 1 -1 +1 1 0.5 0.5 double feenox_builtin_sgn(expr_item_t *f) { double eps = 1e-9; double x = feenox_expression_eval(&f->arg[0]); if (f->arg[1].items != NULL) { eps = feenox_expression_eval(&f->arg[1]); } if (fabs(x) < eps) { return 0; } return (x > 0) ? (+1) : (-1); } ///fn+not+desc Returns one if the first argument\ $x$ is zero and zero otherwise. ///fn+not+desc The second optional argument $\epsilon$ gives the precision of the ///fn+not+desc "zero" evaluation. If not given, default is $\epsilon = 10^{-9}$. ///fn+not+usage not(x, [eps]) ///fn+not+math \begin{cases}1 &\text{if $|x| < \epsilon$} \\ 0 &\text{otherwise} \end{cases} double feenox_builtin_not(expr_item_t *f) { double eps = 1e-9; double x = feenox_expression_eval(&f->arg[0]); if (f->arg[1].items != NULL) { eps = feenox_expression_eval(&f->arg[1]); } return (fabs(x) < eps); } ///fn+mod+desc Returns the remainder of the division between the first argument\ $a$ and the ///fn+mod+desc second one\ $b$. Both arguments may be non-integral. ///fn+mod+usage mod(a, b) ///fn+mod+math a - \left\lfloor \frac{a}{b} \right\rfloor \cdot b double feenox_builtin_mod(expr_item_t *f) { double a = feenox_expression_eval(&f->arg[0]); double b = feenox_expression_eval(&f->arg[1]); if (a == 0) { return 0; } return a - floor(a/b)*b; } ///fn+floor+desc Returns the largest integral value not greater than the argument\ $x$. ///fn+floor+usage floor(x) ///fn+floor+math \lfloor x \rfloor ///fn+floor+plotx -2.5 2.5 5e-3 -2 2 1 -3 2 1 0.5 0.5 double feenox_builtin_floor(expr_item_t *f) { return floor(feenox_expression_eval(&f->arg[0])); } ///fn+gammaf+desc Computes the Gamma function $\Gamma(x)$. ///fn+gammaf+usage gammaf(x) ///fn+gammaf+math \int_0^\infty t^{x-1} \cdot e^{-t} \, dt ///fn+gammaf+plotx 1 5 1e-1 1 5 1 0 25 5 0.5 2.5 double feenox_builtin_gammaf(expr_item_t *f) { double x = feenox_expression_eval(&f->arg[0]); return (x <= 0) ? 1 : gsl_sf_gamma(x); } ///fn+ceil+desc Returns the smallest integral value not less than the argument\ $x$. ///fn+ceil+usage ceil(x) ///fn+ceil+math \lceil x \rceil ///fn+ceil+plotx -2.5 2.5 5e-3 -2 2 1 -2 3 1 0.5 0.5 double feenox_builtin_ceil(expr_item_t *f) { return ceil(feenox_expression_eval(&f->arg[0])); } ///fn+round+desc Rounds the argument\ $x$ to the nearest integer. Halfway cases are rounded away from zero. ///fn+round+usage round(x) ///fn+round+math \begin{cases} \lceil x \rceil & \text{if $\lceil x \rceil - x < 0.5$} \\ \lceil x \rceil & \text{if $\lceil x \rceil - x = 0.5 \wedge x > 0$} \\ \lfloor x \rfloor & \text{if $x-\lfloor x \rfloor < 0.5$} \\ \lfloor x \rfloor & \text{if $x-\lfloor x \rfloor = 0.5 \wedge x < 0$} \end{cases} ///fn+round+plotx -2.7 2.7 1e-3 -2 +2 1 -3 +3 1 0.5 0.5 double feenox_builtin_round(expr_item_t *f) { return round(feenox_expression_eval(&f->arg[0])); } ///fn+deadband+desc Filters the first argument\ $x$ with a deadband centered at zero with an amplitude ///fn+deadband+desc given by the second argument $a$. ///fn+deadband+usage deadband(x, a) ///fn+deadband+math \begin{cases} 0 & \text{if $| x | \leq a$} \\ x + a & \text{if $x < a$} \\ x - a & \text{if $x > a$} \end{cases} double feenox_builtin_deadband(expr_item_t *f) { double x[2]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); return (fabs(x[0])0)?(-1):1)*x[1]); } ///fn+lag+desc Filters the first argument\ $x(t)$ with a first-order lag of characteristic time $\tau$, ///fn+lag+desc i.e. this function applies the transfer function\ $G(s) = \frac{1}{1 + s\tau}$ ///fn+lag+desc to the time-dependent signal\ $x(t)$ to obtain a filtered signal\ $y(t)$, ///fn+lag+desc by assuming that it is constant during the time ///fn+lag+desc interval\ $[t-\Delta t,t]$ and using the analytical solution of the differential equation ///fn+lag+desc for that case at\ $t = \Delta t$ with the initial condition\ $y(0) = y(t-\Delta t)$. ///fn+lag+usage lag(x, tau) ///fn+lag+math x(t) - \Big[ x(t) - y(t-\Delta t) \Big] \cdot \exp\left(-\frac{\Delta t}{\tau}\right) double feenox_builtin_lag(expr_item_t *f) { double y; double x[2]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); if (f->aux == NULL) { // si es la primera vez que se llama a este lag, allocamos // el apuntador interno e inicializamos al valor de entrada f->aux = malloc(3*sizeof(double)); f->aux[0] = x[0]; f->aux[1] = x[0]; f->aux[2] = 0; } else if ((int)(feenox_special_var_value(in_static)) || x[1] < ZERO) { // si no es la primera vez que se llama a este lag pero estamos // en el paso estatico o el tau es muy chiquito, pasa de largo // el valor del primer argumento f->aux[0] = x[0]; f->aux[1] = x[0]; f->aux[2] = 0; } else if ((int)round(f->aux[2]) != (int)(feenox_special_var_value(step_transient))) { // si nos llamaron, nos aseguramos de que solamente hagamos el lag // cuando corresponda para evitar problemas en cosas que se llaman // iterativa o implicitamente f->aux[0] = f->aux[1]; f->aux[1] = x[0] - (x[0] - f->aux[0])*exp(-feenox_special_var_value(dt)/x[1]); f->aux[2] = (int)(feenox_special_var_value(step_transient)); } // si termino la corrida rompemos todo para que si tenemos que volver // a arrcancar, empiece todo como si nada if (feenox_special_var_value(done)) { double dummy = f->aux[1]; feenox_free(f->aux); return dummy; } y = f->aux[1]; if (feenox_special_var_value(done)) { feenox_free(f->aux); } return y; } ///fn+lag_euler+desc Filters the first argument\ $x(t)$ with a first-order lag of characteristic time $\tau$ ///fn+lag_euler+desc to the time-dependent signal\ $x(t)$ by using the Euler forward rule. ///fn+lag_euler+usage lag_euler(x, tau) ///fn+lag_euler+math x(t-\Delta t) + \Big[ x(t) - x(t - \Delta t) \Big] \cdot \frac{\Delta t}{\tau} double feenox_builtin_lag_euler(expr_item_t *f) { double y; double x[2]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); if (f->aux == NULL) { f->aux = malloc(5*sizeof(double)); f->aux[0] = x[0]; f->aux[1] = x[0]; f->aux[2] = x[0]; f->aux[3] = x[0]; f->aux[4] = 0; } else if ((int)(feenox_special_var_value(in_static))) { f->aux[0] = x[0]; f->aux[1] = x[0]; f->aux[2] = x[0]; f->aux[3] = x[0]; f->aux[4] = 0; } else if ((int)round(f->aux[4]) != (int)(feenox_special_var_value(step_transient))) { f->aux[0] = f->aux[1]; f->aux[1] = x[0]; f->aux[2] = f->aux[3]; f->aux[3] = f->aux[2] + feenox_special_var_value(dt)/x[1]*(x[0]-f->aux[2]); f->aux[4] = (int)(feenox_special_var_value(step_transient)); } y = f->aux[3]; if (feenox_special_var_value(done)) { feenox_free(f->aux); } return y; } ///fn+lag_bilinear+desc Filters the first argument\ $x(t)$ with a first-order lag of characteristic time $\tau$ ///fn+lag_bilinear+desc to the time-dependent signal\ $x(t)$ by using the bilinear transformation formula. ///fn+lag_bilinear+usage lag_bilinear(x, tau) ///fn+lag_bilinear+math x(t-\Delta t) \cdot \left[ 1 - \frac{\Delta t}{2\tau} \right] + \left[ \frac{x(t) + x(t - \Delta t)}{1 + \frac{\Delta t}{2\tau}}\right] \cdot \frac{\Delta t}{2\tau} double feenox_builtin_lag_bilinear(expr_item_t *f) { double y; double x[2]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); if (f->aux == NULL) { f->aux = malloc(5*sizeof(double)); f->aux[0] = x[0]; f->aux[1] = x[0]; f->aux[2] = x[0]; f->aux[3] = x[0]; f->aux[4] = 0; } else if ((int)(feenox_special_var_value(in_static))) { f->aux[0] = x[0]; f->aux[1] = x[0]; f->aux[2] = x[0]; f->aux[3] = x[0]; f->aux[4] = 0; } else if ((int)round(f->aux[4]) != (int)(feenox_special_var_value(step_transient))) { f->aux[0] = f->aux[1]; f->aux[1] = x[0]; f->aux[2] = f->aux[3]; f->aux[3] = (f->aux[2] * (1 - 0.5*feenox_special_var_value(dt)/x[1]) + 0.5*feenox_special_var_value(dt)/x[1]*(x[0] + f->aux[0]))/(1 + 0.5*feenox_special_var_value(dt)/x[1]); f->aux[4] = (int)(feenox_special_var_value(step_transient)); } y = f->aux[3]; if (feenox_special_var_value(done)) { feenox_free(f->aux); } return y; } // lead(x, tau) implementa la fucion de transferencia s.tau/(1+s.tau) /* double feenox_builtin_lead(expr_factor_t *expr) { double y; double x[2]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); if (f->aux == NULL) { f->aux = malloc(3*sizeof(double)); f->aux[0] = x[0]; f->aux[1] = x[0]; f->aux[2] = 0; } else if ((int)(feenox_special_var_value(in_static)))) { f->aux[0] = x[0]; f->aux[1] = x[0]; f->aux[2] = 0; } else if ((int)round(f->aux[2]) != (int)(feenox_special_var_value(step_transient)))) { f->aux[0] = f->aux[1]; f->aux[1] = (x[0] - f->aux[0])/(0.5*feenox_special_var_value(dt))/x[1] + 1) - (0.5*feenox_special_var_value(dt))/x[1] - 1)/(0.5*feenox_special_var_value(dt))/x[1] + 1) * (f->aux[0]); f->aux[2] = (int)(feenox_special_var_value(step_transient))); } y = f->aux[1]; if (feenox_special_var_value(done))) { feenox_free(f->aux); } return y; } */ // deriv_lag(x, tau) implementa la fucion de transferencia s.tau/(1+s.tau) /* double feenox_builtin_lead_euler(algebraic_token_t *expr) { if (expr->nofirst_time) { return (f->arg_value[0] - f->arg_last_value[0])/(0.5*feenox_special_var_value(dt))/f->arg_value[1] + 1) - (0.5*feenox_special_var_value(dt))/f->arg_value[1] - 1)/(0.5*feenox_special_var_value(dt))/f->arg_value[1] + 1) * (expr->last_value); } else { expr->nofirst_time = 1; return 0; } } // deriv_lag(x, tau) implementa la fucion de transferencia s.tau/(1+s.tau) double feenox_builtin_lead_bilinear(algebraic_token_t *expr) { if (expr->nofirst_time) { return (f->arg_value[0] - f->arg_last_value[0])/(0.5*feenox_special_var_value(dt))/f->arg_value[1] + 1) - (0.5*feenox_special_var_value(dt))/f->arg_value[1] - 1)/(0.5*feenox_special_var_value(dt))/f->arg_value[1] + 1) * (expr->last_value); } else { expr->nofirst_time = 1; return 0; } } */ ///fn+equal+desc Checks if the two first expressions $a$ and $b$ are equal, up to the tolerance ///fn+equal+desc given by the third optional argument $\epsilon$. If either $|a|>1$ or $|b|>1$, ///fn+equal+desc the arguments are compared using GSL's `gsl_fcmp`, otherwise the ///fn+equal+desc absolute value of their difference is compared against $\epsilon$. This function ///fn+equal+desc returns zero if the arguments are not equal and one otherwise. ///fn+equal+desc Default value for $\epsilon = 10^{-9}$. ///fn+equal+usage equal(a, b, [eps]) ///fn+equal+math \begin{cases} 1 & \text{if $a = b$} \\ 0 & \text{if $a \neq b$} \end{cases} double feenox_builtin_equal(expr_item_t *f) { double eps = 1e-9; double a = feenox_expression_eval(&f->arg[0]); double b = feenox_expression_eval(&f->arg[1]); if (f->arg[2].items != NULL) { eps = feenox_expression_eval(&f->arg[2]); } if (fabs(a) < 1 || fabs(b) < 1) { return (fabs(a-b) < eps)?1:0; } else { return (gsl_fcmp(a, b, eps) == 0) ? 1 : 0; } } double feenox_builtin_quasi_random_helper1d(expr_item_t *f, const gsl_qrng_type *T) { double y = 0; double r = 0; double x1 = feenox_expression_eval(&f->arg[0]); double x2 = feenox_expression_eval(&f->arg[1]); // si es la primera llamada inicializamos el generador if (f->aux == NULL) { feenox_check_alloc(f->aux = (double *)gsl_qrng_alloc(T, 1)); } gsl_qrng_get((const gsl_qrng *)f->aux, &r); y = x1 + r*(x2-x1); return y; } double feenox_builtin_quasi_random(expr_item_t *f) { return feenox_builtin_quasi_random_helper1d(f, gsl_qrng_sobol); } double feenox_builtin_qrng_sobol(expr_item_t *f) { return feenox_builtin_quasi_random_helper1d(f, gsl_qrng_sobol); } double feenox_builtin_qrng_niederreiter(expr_item_t *f) { return feenox_builtin_quasi_random_helper1d(f, gsl_qrng_niederreiter_2); } double feenox_builtin_qrng_halton(expr_item_t *f) { return feenox_builtin_quasi_random_helper1d(f, gsl_qrng_halton); } double feenox_builtin_qrng_reversehalton(expr_item_t *f) { return feenox_builtin_quasi_random_helper1d(f, gsl_qrng_reversehalton); } struct { gsl_qrng *q; double *v; } feenox_qrng_helper; double feenox_builtin_quasi_random_helper2d(expr_item_t *f, const gsl_qrng_type *T) { if (feenox_qrng_helper.q == NULL) { feenox_qrng_helper.q = gsl_qrng_alloc(T, 2); feenox_qrng_helper.v = calloc(2, sizeof(double)); if (f->arg[1].items != NULL) { unsigned int offset = (unsigned int)feenox_expression_eval(&f->arg[1]); for (unsigned int i = 0; i < offset; i++) { gsl_qrng_get(feenox_qrng_helper.q, feenox_qrng_helper.v); } } } int d = (f->arg[0].items != NULL) ? (int)feenox_expression_eval(&f->arg[0])-1 : 0; if (d == 0) { gsl_qrng_get(feenox_qrng_helper.q, feenox_qrng_helper.v); } else if (d < 0) { feenox_push_error_message("offset starts in 1, not in 0 for qrng"); feenox_runtime_error(); } return feenox_qrng_helper.v[d]; } double feenox_builtin_qrng2d_sobol(expr_item_t *f) { return feenox_builtin_quasi_random_helper2d(f, gsl_qrng_sobol); } double feenox_builtin_qrng2d_niederreiter(expr_item_t *f) { return feenox_builtin_quasi_random_helper2d(f, gsl_qrng_niederreiter_2); } double feenox_builtin_qrng2d_halton(expr_item_t *f) { return feenox_builtin_quasi_random_helper2d(f, gsl_qrng_halton); } double feenox_builtin_qrng2d_reversehalton(expr_item_t *f) { return feenox_builtin_quasi_random_helper2d(f, gsl_qrng_reversehalton); } ///fn+random+desc Returns a random real number uniformly distributed between the first ///fn+random+desc real argument\ $x_1$ and the second one\ $x_2$. ///fn+random+desc If the third integer argument $s$ is given, it is used as the seed and thus ///fn+random+desc repetitive sequences can be obtained. If no seed is provided, the current time ///fn+random+desc (in seconds) plus the internal address of the expression is used. Therefore, ///fn+random+desc two successive calls to the function without seed (hopefully) do not give the same result. ///fn+random+desc This function uses a second-order multiple recursive generator described by ///fn+random+desc Knuth in Seminumerical Algorithms, 3rd Ed., Section 3.6. ///fn+random+usage random(x1, x2, [s]) ///fn+random+math x_1 + r \cdot (x_2-x_1) \quad \quad 0 \leq r < 1 double feenox_builtin_random(expr_item_t *f) { double y = 0; double x1 = feenox_expression_eval(&f->arg[0]); double x2 = feenox_expression_eval(&f->arg[1]); // si es la primera llamada inicializamos el generador if (f->aux == NULL) { f->aux = (double *)gsl_rng_alloc(DEFAULT_RANDOM_METHOD); // si nos dieron tercer argumento, lo usamos como semilla, sino usamos time() if (f->arg[2].items == NULL) { gsl_rng_set((gsl_rng *)f->aux, (unsigned long int)(time(NULL)) + (unsigned long int)(&f->aux)); } else { gsl_rng_set((gsl_rng *)f->aux, (unsigned long int)(feenox_expression_eval(&f->arg[2]))); } } // TODO: memory leaks en fiteo, minimizacion, etc y = x1 + gsl_rng_uniform((const gsl_rng *)f->aux)*(x2-x1); if (feenox_special_var_value(done)) { gsl_rng_free((gsl_rng *)f->aux); f->aux = NULL; } return y; } ///fn+random_gauss+desc Returns a random real number with a Gaussian distribution with a mean ///fn+random_gauss+desc equal to the first argument\ $x_1$ and a standard deviation equatl to the second one\ $x_2$. ///fn+random_gauss+desc If the third integer argument $s$ is given, it is used as the seed and thus ///fn+random_gauss+desc repetitive sequences can be obtained. If no seed is provided, the current time ///fn+random_gauss+desc (in seconds) plus the internal address of the expression is used. Therefore, ///fn+random_gauss+desc two successive calls to the function without seed (hopefully) do not give the same result. ///fn+random_gauss+desc This function uses a second-order multiple recursive generator described by ///fn+random_gauss+desc Knuth in Seminumerical Algorithms, 3rd Ed., Section 3.6. ///fn+random_gauss+usage random_gauss(x1, x2, [s]) double feenox_builtin_random_gauss(expr_item_t *f) { double x[3]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); x[2] = feenox_expression_eval(&f->arg[2]); // si es la primera llamada inicializamos el generador if (f->aux == NULL) { f->aux = (double *)gsl_rng_alloc(DEFAULT_RANDOM_METHOD); // si nos dieron tercer argumento, lo usamos como semilla, sino usamos time() if (f->arg[2].items == NULL) { gsl_rng_set((const gsl_rng *)f->aux, (unsigned long int)(time(NULL)) + (unsigned long int)(&f->aux)); // gsl_rng_set((const gsl_rng *)f->aux, (unsigned long int)(time(NULL))); } else { gsl_rng_set((const gsl_rng *)f->aux, (unsigned long int)(x[2])); } } return x[0] + gsl_ran_gaussian((const gsl_rng *)f->aux, x[1]); // TODO: no camina con seed y fit al mismo tiempo } ///fn+limit+desc Limits the first argument\ $x$ to the interval $[a,b]$. The second argument $a$ should ///fn+limit+desc be less than the third argument $b$. ///fn+limit+usage limit(x, a, b) ///fn+limit+math \begin{cases} a & \text{if $x < a$} \\ x & \text{if $a \leq x \leq b$} \\ b & \text{if $x > b$} \end{cases} double feenox_builtin_limit(expr_item_t *f) { double x[3]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); x[2] = feenox_expression_eval(&f->arg[2]); if (x[0] < x[1]) { return x[1]; } else if (x[0] > x[2]) { return x[2]; } return x[0]; } ///fn+limit_dt+desc Limits the value of the first argument\ $x(t)$ so to that its time derivative ///fn+limit_dt+desc is bounded to the interval $[a,b]$. The second argument $a$ should ///fn+limit_dt+desc be less than the third argument $b$. ///fn+limit_dt+usage limit_dt(x, a, b) ///fn+limit_dt+math \begin{cases} x(t) & \text{if $a \leq dx/dt \leq b$} \\ x(t-\Delta t) + a \cdot \Delta t & \text{if $dx/dt < a$} \\ x(t-\Delta t) + b \cdot \Delta t & \text{if $dx/dt > b$} \end{cases} double feenox_builtin_limit_dt(expr_item_t *f) { double y; double derivative; double x[3]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); x[2] = feenox_expression_eval(&f->arg[2]); if (feenox_special_var_value(dt) == 0) { feenox_nan_error(); return 0; } if (f->aux == NULL) { f->aux = malloc(3*sizeof(double)); f->aux[0] = x[0]; f->aux[1] = x[0]; f->aux[2] = 0; } else if ((int)(feenox_special_var_value(in_static))) { f->aux[0] = x[0]; f->aux[1] = x[0]; f->aux[2] = 0; } else if ((int)round(f->aux[2]) != (int)(feenox_special_var_value(step_transient))) { f->aux[0] = f->aux[1]; f->aux[1] = x[0]; f->aux[2] = (int)(feenox_special_var_value(step_transient)); } derivative = (x[0] - f->aux[0])/feenox_special_var_value(dt); // if (!expr->nofirst_time) { // return x[0]; // } if (derivative < x[1]) { y = f->aux[0] + x[1]*feenox_special_var_value(dt); } else if (derivative > x[2]) { y = f->aux[0] + x[2]*feenox_special_var_value(dt); } else { y = x[0]; } if (feenox_special_var_value(done)) { feenox_free(f->aux); } return y; } ///fn+if+desc Performs a conditional testing of the first argument $a$, and returns either the ///fn+if+desc second optional argument $b$ if $a$ is different from zero or the third optional argument $c$ ///fn+if+desc if $a$ evaluates to zero. The comparison of the condition $a$ with zero is performed ///fn+if+desc within the precision given by the optional fourth argument $\epsilon$. ///fn+if+desc If the second argument $c$ is not given and $a$ is not zero, the function returns one. ///fn+if+desc If the third argument $c$ is not given and $a$ is zero, the function returns zero. ///fn+if+desc The default precision is $\epsilon = 10^{-9}$. ///fn+if+desc Even though `if` is a logical operation, all the arguments and the returned value ///fn+if+desc are double-precision floating point numbers. ///fn+if+usage if(a, [b], [c], [eps]) ///fn+if+math \begin{cases} b & \text{if $|a|<\epsilon$} \\ c & \text{otherwise} \end{cases} double feenox_builtin_if(expr_item_t *f) { double eps = 1e-9; double a = feenox_expression_eval(&f->arg[0]); if (f->arg[3].items != NULL) { eps = fabs(feenox_expression_eval(&f->arg[3])); } if (fabs(a) > eps) { return (f->arg[1].items != NULL) ? feenox_expression_eval(&f->arg[1]) : 1.0; } else { return (f->arg[2].items != NULL) ? feenox_expression_eval(&f->arg[2]) : 0.0; } } ///fn+is_in_interval+desc Returns true if the argument\ $x$ is in the interval\ $[a,b)$, ///fn+is_in_interval+desc i.e. including\ $a$ but excluding\ $b$. ///fn+is_in_interval+usage is_in_interval(x, a, b) ///fn+is_in_interval+math \begin{cases} 1 & \text{if $a \leq x < b$} \\ 0 & \text{otherwise} \end{cases} double feenox_builtin_is_in_interval(expr_item_t *f) { double y; double x[3]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); x[2] = feenox_expression_eval(&f->arg[2]); y = (x[0] >= x[1] && x[0] < x[2]); return y; } ///fn+threshold_max+desc Returns one if the first argument\ $x$ is greater than the threshold given by ///fn+threshold_max+desc the second argument $a$, and \textit{exactly} zero otherwise. If the optional ///fn+threshold_max+desc third argument $b$ is provided, an hysteresis of width $b$ is needed in order ///fn+threshold_max+desc to reset the function value. Default is no hysteresis, i.e. $b=0$. ///fn+threshold_max+usage threshold_max(x, a, [b]) ///fn+threshold_max+math \begin{cases} 1 & \text{if $x > a$} \\ 0 & \text{if $x < a-b$} \\ \text{last value of $y$} & \text{otherwise} \end{cases} double feenox_builtin_threshold_max(expr_item_t *f) { double y; double x[3]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); x[2] = feenox_expression_eval(&f->arg[2]); if (f->aux == NULL) { f->aux = malloc(1*sizeof(double)); f->aux[0] = x[0] > x[1]; } if (x[0] > x[1]) { f->aux[0] = 1; } else if (x[0] < (x[1]-x[2])) { f->aux[0] = 0; } y = f->aux[0]; if (feenox_special_var_value(done)) { feenox_free(f->aux); } return y; } ///fn+threshold_min+desc Returns one if the first argument\ $x$ is less than the threshold given by ///fn+threshold_min+desc the second argument $a$, and \textit{exactly} zero otherwise. If the optional ///fn+threshold_min+desc third argument $b$ is provided, an hysteresis of width $b$ is needed in order ///fn+threshold_min+desc to reset the function value. Default is no hysteresis, i.e. $b=0$. ///fn+threshold_min+usage threshold_min(x, a, [b]) ///fn+threshold_min+math \begin{cases} 1 & \text{if $x < a$} \\ 0 & \text{if $x > a+b$} \\ \text{last value of $y$} & \text{otherwise} \end{cases} double feenox_builtin_threshold_min(expr_item_t *f) { double y; double x[3]; x[0] = feenox_expression_eval(&f->arg[0]); x[1] = feenox_expression_eval(&f->arg[1]); x[2] = feenox_expression_eval(&f->arg[2]); if (f->aux == NULL) { f->aux = malloc(1*sizeof(double)); f->aux[0] = x[0] > x[1]; } if (x[0] < x[1]) { f->aux[0] = 1; } else if (x[0] > (x[1]+x[2])) { f->aux[0] = 0; } y = f->aux[0]; if (feenox_special_var_value(done)) { feenox_free(f->aux); } return y; } ///fn+min+desc Returns the minimum of the arguments\ $x_i$ provided. Currently only maximum of ten arguments can be given. ///fn+min+usage min(x1, x2, [...], [x10]) ///fn+min+math \min \Big (x_1, x_2, \dots, x_{10} \Big) double feenox_builtin_min(expr_item_t *f) { int i; double min = feenox_expression_eval(&f->arg[0]); for (i = 1; i < MINMAX_ARGS; i++) { if (f->arg[i].items != NULL && feenox_expression_eval(&f->arg[i]) < min) { min = feenox_expression_eval(&f->arg[i]); } } return min; } ///fn+max+desc Returns the maximum of the arguments\ $x_i$ provided. Currently only maximum of ten arguments can be given. ///fn+max+usage max(x1, x2, [...], [x10]) ///fn+max+math \max \Big (x_1, x_2, \dots, x_{10} \Big) double feenox_builtin_max(expr_item_t *f) { int i; double max = feenox_expression_eval(&f->arg[0]); double tmp; for (i = 1; i < MINMAX_ARGS; i++) { if (f->arg[i].items != NULL && (tmp = feenox_expression_eval(&f->arg[i])) > max) { max = tmp; } } return max; } ///fn+mark_min+desc Returns the integer index $i$ of the minimum of the arguments\ $x_i$ provided. Currently only maximum of ten arguments can be provided. ///fn+mark_min+usage mark_max(x1, x2, [...], [x10]) ///fn+mark_min+math i / \min \Big (x_1, x_2, \dots, x_{10} \Big) = x_i double feenox_builtin_mark_min(expr_item_t *f) { int i; int i_min = 0; double min = feenox_expression_eval(&f->arg[0]); for (i = 1; i < MINMAX_ARGS; i++) { if (f->arg[i].items != NULL && feenox_expression_eval(&f->arg[i]) < min) { min = feenox_expression_eval(&f->arg[i]); i_min = i; } } return i_min+1; } ///fn+mark_max+desc Returns the integer index $i$ of the maximum of the arguments\ $x_i$ provided. Currently only maximum of ten arguments can be provided. ///fn+mark_max+usage mark_max(x1, x2, [...], [x10]) ///fn+mark_max+math i / \max \Big (x_1, x_2, \dots, x_{10} \Big) = x_i double feenox_builtin_mark_max(expr_item_t *f) { int i; int i_max = 0; double max = feenox_expression_eval(&f->arg[0]); for (i = 1; i < MINMAX_ARGS; i++) { if (f->arg[i].items != NULL && feenox_expression_eval(&f->arg[i]) > max) { max = feenox_expression_eval(&f->arg[i]); i_max = i; } } return i_max+1; } feenox-1.1/src/math/assignment.c0000644000175000017500000004003114773607165013632 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX assignment of variables/vectors/matrices * * Copyright (C) 2009--2021 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" // API int feenox_add_assignment(const char *left_hand, const char *right_hand) { assignment_t *assignment = NULL; feenox_check_alloc(assignment = calloc(1, sizeof(assignment_t))); // let us start assuming the assignment is "plain" assignment->plain = 1; // first from right to left // range of indices char *index_range = NULL; if ((index_range = strchr(left_hand, '<')) != NULL) { *index_range = '\0'; } // subindexes between brackets if it is a vector or matrix char *bracket = NULL; if ((bracket = strchr(left_hand, '[')) != NULL) { *bracket = '\0'; } // initial values, either _init o _0 char *init = NULL; if ((init = feenox_ends_in_init(left_hand)) != NULL) { *init = '\0'; assignment->initial_static = 1; } char *zero = NULL; if ((zero = feenox_ends_in_zero(left_hand)) != NULL) { *zero = '\0'; assignment->initial_transient = 1; } char *sanitized_lhs = NULL; feenox_check_alloc(sanitized_lhs = strdup(left_hand)); feenox_call(feenox_strip_blanks(sanitized_lhs)); if ((assignment->matrix = feenox_get_matrix_ptr(sanitized_lhs)) == NULL && (assignment->vector = feenox_get_vector_ptr(sanitized_lhs)) == NULL) { // TODO: honor IMPLICIT if ((assignment->variable = feenox_get_or_define_variable_get_ptr(sanitized_lhs)) == NULL) { return FEENOX_ERROR; } assignment->plain = 0; assignment->scalar = 1; } feenox_free(sanitized_lhs); // now from lef to right // re-build the string if (zero != NULL) { *zero = '_'; if (assignment->variable != NULL) { assignment->variable->assigned_zero = 1; } else if (assignment->vector != NULL) { assignment->vector->assigned_zero = 1; } else if (assignment->matrix != NULL) { assignment->matrix->assigned_zero = 1; } } if (init != NULL) { *init = '_'; if (assignment->variable != NULL) { assignment->variable->assigned_init = 1; } else if (assignment->vector != NULL) { assignment->vector->assigned_init = 1; } else if (assignment->matrix != NULL) { assignment->matrix->assigned_init = 1; } } // if there are brackets, then there are subindexes if (bracket != NULL) { if (assignment->matrix == NULL && assignment->vector == NULL) { feenox_push_error_message("'%s' is neither a vector nor a matrix, functions are defined using ':=' instead of '='", left_hand); return FEENOX_ERROR; } *bracket = '['; // TODO: check for dependence on i and j by looking at the list of items if (assignment->matrix != NULL) { // if either "i" or "j" appear then it is not a scalar assignment->scalar = (strchr(bracket, 'i') == NULL) && (strchr(bracket, 'j') == NULL); // if "i" appears but not "j" then only sweep over rows only assignment->expression_only_of_i = (strchr(bracket, 'j') == NULL) && (strchr(bracket, 'i') != NULL); // if "i" does not appear but "j" does the sweep over cols only assignment->expression_only_of_j = (strchr(bracket, 'i') == NULL) && (strchr(bracket, 'j') != NULL); // if it is not "i,j" then it is plain if (strcmp("(i,j)", bracket) != 0) { assignment->plain = 0; } feenox_call(feenox_parse_range(bracket, '[', ',', ']', &assignment->row, &assignment->col)); } else if (assignment->vector != NULL) { char *dummy = NULL; if ((dummy = strrchr(bracket, ']')) == NULL) { feenox_push_error_message("unmatched bracket for '%s'", left_hand); return FEENOX_ERROR; } *dummy = '\0'; // si aparece la letra "i" entonces no es escalar assignment->scalar = (strchr(bracket+1, 'i') == NULL); // si no es "i" entonces no es plain if (strcmp("i", bracket+1) != 0) { assignment->plain = 0; } feenox_call(feenox_expression_parse(&assignment->row, bracket+1)); *dummy = ')'; } } // if there is an index range if (index_range != NULL) { if (assignment->matrix == NULL && assignment->vector == NULL) { feenox_push_error_message("'%s' is neither a vector nor a matrix", left_hand); return FEENOX_ERROR; } *index_range = '<'; if (assignment->matrix != NULL) { feenox_call(feenox_parse_range(index_range, '<', ':', ';', &assignment->i_min, &assignment->i_max)); feenox_call(feenox_parse_range(strchr(index_range, ';'), ';', ':', '>', &assignment->j_min, &assignment->j_max)); } else if (assignment->vector != NULL) { feenox_call(feenox_parse_range(index_range, '<', ':', '>', &assignment->i_min, &assignment->i_max)); } } if (assignment->vector == NULL || bracket != NULL || index_range != NULL) { // the right-hand side is easy ( feenox_call(feenox_expression_parse(&assignment->rhs, right_hand)); LL_APPEND(feenox.assignments, assignment); if (assignment->variable != NULL) { feenox_call(feenox_add_instruction(feenox_instruction_assignment_scalar, assignment)); } else if (assignment->vector != NULL) { feenox_call(feenox_add_instruction(feenox_instruction_assignment_vector, assignment)); } else if (assignment->matrix != NULL) { feenox_call(feenox_add_instruction(feenox_instruction_assignment_matrix, assignment)); } else { feenox_push_error_message("invalid assignment"); return FEENOX_ERROR; } } else { // this block handles the vector initialization vector_t *vector = assignment->vector; feenox_free(assignment); char *non_const_rhs = strdup(right_hand); char *rhs_starting_with_bracket = non_const_rhs; while (*rhs_starting_with_bracket != '(') { if (*rhs_starting_with_bracket == '\0') { feenox_push_error_message("right hand side for vector initialization has to be inside brackets '(' and ')'"); return FEENOX_ERROR; } rhs_starting_with_bracket++; } size_t n_chars_count = 0; int n_expressions = 0; if ((n_expressions = feenox_count_arguments(rhs_starting_with_bracket, &n_chars_count)) <= 0) { feenox_push_error_message("invalid initialization expression"); return FEENOX_ERROR; } if (vector->size != 0 && n_expressions > vector->size) { feenox_push_error_message("more expressions (%d) than vector size (%d)", n_expressions, vector->size); return FEENOX_ERROR; } char **expr = NULL; feenox_call(feenox_read_arguments(rhs_starting_with_bracket, n_expressions, &expr, &n_chars_count)); for (int i = 0; i < n_expressions; i++) { feenox_check_alloc(assignment = calloc(1, sizeof(assignment_t))); assignment->vector = vector; assignment->scalar = 1; char *i_str = NULL; feenox_check_minusone(asprintf(&i_str, "%d", i+1)); feenox_call(feenox_expression_parse(&assignment->row, i_str)); feenox_call(feenox_expression_parse(&assignment->rhs, expr[i])); feenox_call(feenox_add_instruction(feenox_instruction_assignment_vector, assignment)); LL_APPEND(feenox.assignments, assignment); feenox_free(i_str); feenox_free(expr[i]); } feenox_free(expr); feenox_free(non_const_rhs); } return FEENOX_OK; } int feenox_instruction_assignment_scalar(void *arg) { assignment_t *assignment = (assignment_t *)arg; feenox_call(feenox_assign_single(assignment, 0, 0)); return FEENOX_OK; } int feenox_instruction_assignment_vector(void *arg) { assignment_t *assignment = (assignment_t *)arg; if (assignment->scalar) { unsigned int row = (unsigned int)(feenox_expression_eval(&assignment->row) - 1); feenox_call(feenox_assign_single(assignment, row, 0)); } else { size_t i_min = 0; size_t i_max = 0; if (assignment->i_min.items != NULL) { // esto es C amigos! i_min = (size_t)(round(feenox_expression_eval(&assignment->i_min))) - 1; i_max = (size_t)(round(feenox_expression_eval(&assignment->i_max))); } else { if (!assignment->vector->initialized) { feenox_call(feenox_vector_init(assignment->vector, FEENOX_VECTOR_INITIAL)); } i_max = assignment->vector->size; } size_t row = 0; size_t i = 0; for (i = i_min; i < i_max; i++) { feenox_call(feenox_get_assignment_rowcol(assignment, i, 0, &row, NULL)); feenox_call(feenox_assign_single(assignment, row, 0)); } } return FEENOX_OK; } int feenox_instruction_assignment_matrix(void *arg) { // assignment_t *assignment = (assignment_t *)arg; return FEENOX_OK; } /* int feenox_instruction_assignment(void *arg) { assignment_t *assignment = (assignment_t *)arg; int row, col; int i, j; int i_min, i_max, j_min, j_max; if (assignment->i_min.items == NULL) { feenox_call(feenox_assign_scalar(assignment, 0, 0)); } feenox_call(feenox_get_assignment_array_boundaries(assignment, &i_min, &i_max, &j_min, &j_max)); for (i = i_min; i < i_max; i++) { for (j = j_min; j < j_max; j++) { feenox_call(feenox_get_assignment_rowcol(assignment, i, j, &row, &col)); feenox_call(feenox_assign_scalar(assignment, row, col)); } } return FEENOX_OK; } */ int feenox_get_assignment_array_boundaries(assignment_t *assignment, int *i_min, int *i_max, int *j_min, int *j_max) { *i_min = 0; *i_max = 1; *j_min = 0; *j_max = 1; if (!assignment->scalar) { if (assignment->i_min.items != NULL) { // esto es C amigos! *i_min = (int)(round(feenox_expression_eval(&assignment->i_min))) - 1; *i_max = (int)(round(feenox_expression_eval(&assignment->i_max))); } else { if (assignment->vector != NULL) { if (!assignment->vector->initialized) { feenox_call(feenox_vector_init(assignment->vector, FEENOX_VECTOR_INITIAL)); } *i_max = assignment->vector->size; } else if (assignment->matrix != NULL) { if (!assignment->matrix->initialized) { feenox_call(feenox_matrix_init(assignment->matrix)); } if (assignment->expression_only_of_j == 0) { *i_max = assignment->matrix->rows; } else { *i_min = (int)(round(feenox_expression_eval(&assignment->row))) - 1; *i_max = *i_min + 1; } } } if (assignment->j_min.items != NULL) { // esto es C amigos! *j_min = (int)(round(feenox_expression_eval(&assignment->j_min))) - 1; *j_max = (int)(round(feenox_expression_eval(&assignment->j_max))); } else { if (assignment->matrix != NULL) { if (!assignment->matrix->initialized) { feenox_call(feenox_matrix_init(assignment->matrix)); } if (assignment->expression_only_of_i == 0) { *j_max = assignment->matrix->cols; } else { *j_min = (int)(round(feenox_expression_eval(&assignment->col))) - 1; *j_max = *j_min + 1; } } } } return FEENOX_OK; } int feenox_get_assignment_rowcol(assignment_t *assignment, size_t i, size_t j, size_t *row, size_t *col) { feenox_special_var_value(i) = (double)(i+1); feenox_special_var_value(j) = (double)(j+1); if (row != NULL) { if (assignment->plain) { *row = i; } else if (assignment->row.items != NULL) { *row = (int)(feenox_expression_eval(&assignment->row))-1; } else { *row = 0; } } if (col != NULL) { if (assignment->plain) { *col = j; } else if (assignment->col.items != NULL) { *col = (int)(feenox_expression_eval(&assignment->col))-1; } else { *col = 0; } } return FEENOX_OK; } int feenox_assign_single(assignment_t *assignment, unsigned int row, unsigned int col) { double *current = NULL; double *initial_static = NULL; double *initial_transient = NULL; int assigned_zero = 0; int assigned_init = 0; double value = feenox_expression_eval(&assignment->rhs); if (assignment->variable != NULL) { current = feenox_value_ptr(assignment->variable); initial_static = assignment->variable->initial_static; initial_transient = assignment->variable->initial_transient; assigned_zero = assignment->variable->assigned_zero; assigned_init = assignment->variable->assigned_init; } else if (assignment->vector != NULL) { if (!assignment->vector->initialized) { feenox_vector_init(assignment->vector, FEENOX_VECTOR_INITIAL); } if (row >= assignment->vector->size) { feenox_push_error_message("out-of-bound assignment, vector '%s' has size %d but element %d was requested", assignment->vector->name, assignment->vector->size, row+1); return FEENOX_ERROR; } current = gsl_vector_ptr(feenox_value_ptr(assignment->vector), row); if (assignment->vector->initial_static != NULL) { initial_static = gsl_vector_ptr(assignment->vector->initial_static, row); } if (assignment->vector->initial_transient != NULL) { initial_transient = gsl_vector_ptr(assignment->vector->initial_transient, row); } assigned_zero = assignment->vector->assigned_zero; assigned_init = assignment->vector->assigned_init; } else if (assignment->matrix != NULL) { if (!assignment->matrix->initialized) { feenox_matrix_init(assignment->matrix); } if (col >= assignment->matrix->cols) { feenox_push_error_message("out-of-bound assignment, matrix '%s' has %d cols but column %d was requested", assignment->matrix->name, assignment->matrix->cols, col+1); return FEENOX_ERROR; } if (row >= assignment->matrix->rows) { feenox_push_error_message("out-of-bound assignment, matrix '%s' has %d rows but row %d was requested", assignment->matrix->name, assignment->matrix->rows, row+1); return FEENOX_ERROR; } current = gsl_matrix_ptr(feenox_value_ptr(assignment->matrix), row, col); if (assignment->matrix->initial_static != NULL) { initial_static = gsl_matrix_ptr(assignment->matrix->initial_static, row, col); } if (assignment->matrix->initial_transient != NULL) { initial_transient = gsl_matrix_ptr(assignment->matrix->initial_transient, row, col); } assigned_zero = assignment->matrix->assigned_zero; assigned_init = assignment->matrix->assigned_init; } else { feenox_push_error_message("internal mismatch, neither variable nor vector nor matrix found for assignment"); return FEENOX_OK; } int in_static = (int)(feenox_special_var_value(in_static)); int in_static_initial = in_static && (int)(feenox_special_var_value(step_static)) == 1; if (assignment->initial_static) { if (in_static_initial) { *current = value; if (initial_static != NULL) { *initial_static = value; } if (initial_transient != NULL) { *initial_transient = value; } } return FEENOX_OK; } else if (assignment->initial_transient) { if (in_static) { *current = value; if (initial_transient != NULL) { *initial_transient = value; } } return FEENOX_OK; } // general assignment if (current != NULL && (assigned_init == 0 || in_static_initial == 0) && (assigned_zero == 0 || in_static == 0)) { *current = value; } return FEENOX_OK; } feenox-1.1/src/parser/0000755000175000017500000000000014773607300011732 500000000000000feenox-1.1/src/parser/auxiliary.c0000644000175000017500000005257114773607165014050 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX auxiliary parsing routines * * Copyright (C) 2009--2021 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "parser.h" #include #include #include #include // reads a line from the input file and returns it "nicely-formatted" int feenox_read_line(FILE *file_ptr) { // ignore trailing whitespace int c = 0; do { c = fgetc(file_ptr); // if we find a newline, then there's nothing for us if (c == '\n') { feenox_parser.line[0] = '\0'; return 1; } } while (isspace(c)); int i = 0; int in_comment = 0; int in_brackets = 0; int lines = 0; while ( !((c == EOF) || (in_brackets == 0 && c == '\n')) ) { if (in_comment == 0) { if (feenox_parser.inside_yaml == 0 && (c == '#' || c == ';')) { in_comment = 1; } else if (feenox_parser.inside_yaml == 0 && c == '{') { in_brackets = 1; } else if (feenox_parser.inside_yaml == 0 && c == '}') { in_brackets = 0; } else if (feenox_parser.inside_yaml == 0 && c == '$') { // handle commandline arguments // check if there's an opening bracket or parenthesis c = fgetc(file_ptr); if (c == EOF) { feenox_push_error_message("unexpected end of file"); return FEENOX_ERROR; } int argument_in_brackets = (c == '{' || c == '('); if (argument_in_brackets == 0) { if (ungetc(c, file_ptr) == EOF) { return FEENOX_ERROR; } } int n = 0; if (fscanf(file_ptr, "%d", &n) != 1) { feenox_push_error_message("failed to match $%sn%s", argument_in_brackets?"{":"", argument_in_brackets?"}":""); return (lines==0 && i !=0 )? -1 : -lines; } if (argument_in_brackets == 1) { c = fgetc(file_ptr); if (c == EOF) { feenox_push_error_message("unexpected end of file"); return FEENOX_ERROR; } if (c != '}' && c != ')') { feenox_push_error_message("expected closing bracket for argument"); return FEENOX_ERROR; } } if (feenox.optind+n >= feenox.argc) { // call recursively so we finish reading the line feenox_read_line(file_ptr); // make sure that line[0] is not '\0' if (feenox_parser.line[0] == '\0') { feenox_parser.line[0] = ' '; feenox_parser.line[1] = '\0'; } return (lines==0 && i !=0 )? -1: -lines; } if (feenox.argv[feenox.optind+n] == NULL) { // we need to return a negative number return -1; } int j = 0; while (feenox.argv[feenox.optind+n][j] != 0) { // watch out! // this cannot be put in a single line because the '\0' might come // in line[] before evaluating the condition to get out of the while feenox_parser.line[i++] = feenox.argv[feenox.optind+n][j++]; } } else if (feenox_parser.inside_yaml == 0 && c == '\\') { switch (c = fgetc(file_ptr)) { case '"': // if there's an escaped quote, we take away the escape char and put // a magic marker 0x1e, afterwards in get_next_token() we change back // the 0x1e with the unescaped quote feenox_parser.line[i++] = 0x1e; break; // escape sequences case 'a': feenox_parser.line[i++] = '\a'; break; case 'b': feenox_parser.line[i++] = '\b'; break; case 'n': feenox_parser.line[i++] = '\n'; break; case 'r': feenox_parser.line[i++] = '\r'; break; case 't': feenox_parser.line[i++] = '\t'; break; case 'v': feenox_parser.line[i++] = '\v'; break; case '\n': // escaped newlines are taken as continuation lines lines++; break; case '\\': // this is taken into account int he default, but just in case feenox_parser.line[i++] = '\\'; break; // TODO: hex representation default: feenox_parser.line[i++] = c; break; } } else if (!in_comment && c != '\n' && c != '\r' && c != EOF) { feenox_parser.line[i++] = c; } else if (in_brackets && c == '\n') { feenox_parser.line[i++] = ' '; } } // escape from the "in comment" state if there's a newline if (c == '\n') { in_comment = 0; } // check if we need to reallocate the input buffer if (i >= feenox_parser.actual_buffer_size-16) { feenox_parser.actual_buffer_size += feenox_parser.page_size; feenox_check_alloc(feenox_parser.line = realloc(feenox_parser.line, feenox_parser.actual_buffer_size)); } // ask what's next in futbol de primera // count the lines here because if we get \n we go back without eating nor drinking if ((c = fgetc(file_ptr)) == '\n') { lines++; } } feenox_parser.line[i] = '\0'; // finite-state machine for yaml: // --- can begin/end a yaml block // ... can only end it if (strcmp(feenox_parser.line, "...") == 0) { if (feenox_parser.inside_yaml == 1) { feenox_parser.inside_yaml = 0; feenox_parser.line[0] = '\0'; } else { feenox_push_error_message("yaml end block '...' without opening block '---'"); return FEENOX_OK; } } else if (strcmp(feenox_parser.line, "---") == 0) { feenox_parser.inside_yaml = !feenox_parser.inside_yaml; feenox_parser.line[0] = '\0'; } // if lines is zero but we did read something, we need to return one // otherwise the final lines of input files not ending in \n are ignored return (lines == 0 && i != 0) ? 1 : lines; } int feenox_parser_expression(expr_t *expr) { char *token; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected expression"); return FEENOX_ERROR; } if (feenox_expression_parse(expr, token) != FEENOX_OK) { return FEENOX_ERROR; } return FEENOX_OK; } int feenox_parser_expressions(expr_t *expr[], size_t n) { char *token; int i; *expr = calloc(n, sizeof(expr_t)); for (i = 0; i < n; i++) { if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected expression"); return FEENOX_ERROR; } feenox_call(feenox_expression_parse(&((*expr)[i]), token)); } return FEENOX_OK; } int feenox_parser_match_keyword_expression(char *token, char *keyword[], expr_t *expr[], size_t n) { int i; int found = 0; for (i = 0; i < n; i++) { if (strcasecmp(token, keyword[i]) == 0) { found = 1; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected expression"); return FEENOX_ERROR; } feenox_call(feenox_expression_parse(expr[i], token)); } } if (found == 0) { return FEENOX_UNHANDLED; } return FEENOX_OK; } int feenox_parser_expression_in_string(double *result) { char *token = NULL; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected expression"); return FEENOX_ERROR; } *result = feenox_expression_evaluate_in_string(token); return FEENOX_OK; } int feenox_parser_expression_in_string_integer(int *result) { char *token = NULL; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected expression"); return FEENOX_ERROR; } *result = (int)feenox_expression_evaluate_in_string(token); return FEENOX_OK; } int feenox_parser_expression_in_string_unsigned_integer(unsigned int *result) { char *token = NULL; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected expression"); return FEENOX_ERROR; } *result = (unsigned int)feenox_expression_evaluate_in_string(token); return FEENOX_OK; } int feenox_parser_expression_in_string_sizet(size_t *result) { char *token = NULL; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected expression"); return FEENOX_ERROR; } *result = (size_t)feenox_expression_evaluate_in_string(token); return FEENOX_OK; } int feenox_parser_string(char **string) { char *token; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected string"); return FEENOX_ERROR; } feenox_check_alloc(*string = strdup(token)); return FEENOX_OK; } int feenox_parser_string_format(char **string, int *n_args) { char *token; char *dummy; *n_args = 0; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected a string with optional printf format data"); return FEENOX_ERROR; } feenox_check_alloc(*string = strdup(token)); dummy = *string; while (*dummy != '\0') { if (*dummy == '\\') { dummy++; } else if (*dummy == '%' && *(dummy+1) == '%') { dummy++; } else if (*dummy == '%') { if (dummy[1] == 'd') { dummy[1] = 'g'; } (*n_args)++; } dummy++; } return FEENOX_OK; } int feenox_parser_file(file_t **file) { char *token = NULL; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected file identifier"); return FEENOX_ERROR; } // "-" means stdin if (strcmp(token, "-") == 0 || strcmp(token, "stdin") == 0) { *file = feenox.special_files._stdin; } else if ((*file = feenox_get_file_ptr(token)) == NULL) { feenox_call(feenox_define_file(token, token, 0, NULL)); if ((*file = feenox_get_file_ptr(token)) == NULL) { return FEENOX_ERROR; } } return FEENOX_OK; } int feenox_parser_vector(vector_t **vector) { char *token; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected vector name"); return FEENOX_ERROR; } if ((*vector = feenox_get_vector_ptr(token)) == NULL) { feenox_push_error_message("undefined vector identifier '%s'", token); return FEENOX_ERROR; } return FEENOX_OK; } int feenox_parser_variable(var_t **var) { char *token; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected variable name"); return FEENOX_ERROR; } if ((*var = feenox_get_variable_ptr(token)) == NULL) { feenox_push_error_message("undefined variable identifier '%s'", token); return FEENOX_ERROR; } return FEENOX_OK; } int feenox_parser_get_or_define_variable(var_t **var) { char *token; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected variable name"); return FEENOX_ERROR; } if ((*var = feenox_get_or_define_variable_get_ptr(token)) == NULL) { feenox_push_error_message("undefined variable identifier '%s'", token); return FEENOX_ERROR; } return FEENOX_OK; } int feenox_parser_keywords_ints(char *keyword[], int *value, int *option) { char *token; int i = 0; if ((token = feenox_get_next_token(NULL)) == NULL) { while (keyword[i][0] != '\0') { feenox_push_error_message("%s", keyword[i++]); } feenox_push_error_message("expected one of"); return FEENOX_ERROR; } while (keyword[i][0] != '\0') { if (strcasecmp(token, keyword[i]) == 0) { *option = value[i]; return FEENOX_OK; } i++; } i = 0; while (keyword[i][0] != '\0') { feenox_push_error_message("%s", keyword[i++]); } feenox_push_error_message("unknown keyword '%s', expected one of", token); return FEENOX_ERROR; } /* int feenox_parser_read_keywords_voids(char *keyword[], void *value[], void **option) { char *token; int i = 0; if ((token = feenox_get_next_token(NULL)) == NULL) { while (keyword[i][0] != '\0') { feenox_push_error_message("%s", keyword[i++]); } feenox_push_error_message("expected one of"); return FEENOX_ERROR; } while (keyword[i][0] != '\0') { if (strcasecmp(token, keyword[i]) == 0) { *option = value[i]; return FEENOX_OK; } i++; } i = 0; while (keyword[i][0] != '\0') { feenox_push_error_message("%s", keyword[i++]); } feenox_push_error_message("unknown keyword '%s', expected one of", token); return FEENOX_ERROR; } */ // slightly-modified strtok() that can take into account if the next token // starts with a quote (or not) and can read stuff between them char *feenox_get_next_token(char *line) { int i; int n; char *token; // MAMA! lo que renegue para sacar la lectura invalida de este rutina que // acusaba el valgrind! el chiste es asi: cuando se termina de parsear una // linea vieja, el internal apunta a cualquier fruta (diferente de NULL) // entonces no vale mirar que tiene. La solucion que se me ocurrio es que si // line es diferente de NULL estamos empezando una linea nueva, eso quiere // decir que internal apunta a fruta entonces lo hacemos igual a NULL y usamos // los delimitadores sin comillas, porque total es una keyword if (line != NULL) { feenox_parser.strtok_internal = NULL; } if (feenox_parser.strtok_internal == NULL) { token = strtok_r(line, UNQUOTED_DELIM, &(feenox_parser.strtok_internal)); } else { if (*feenox_parser.strtok_internal == '"') { token = strtok_r(line, QUOTED_DELIM, &(feenox_parser.strtok_internal)); // si es quoted, barremos token y reemplazamos el caracter 0x1E por un quote n = strlen(token); for (i = 0; i < n; i++) { if (token[i] == -1 || token[i] == 0x1e) { token[i] = '"'; } } } else { token = strtok_r(line, UNQUOTED_DELIM, &(feenox_parser.strtok_internal)); } } // avanzamos el apuntador strtok_internal hasta el siguiente caracter no-blanco // asi si la cadena q sigue empieza con comillas, la ve bien el if de arriba // sino si hay muchos espacios en blanco el tipo piensa que el token esta unquoted // el if de que no sea null saltaba solamente en windoze, ye ne se pa if (feenox_parser.strtok_internal != NULL) { while (*feenox_parser.strtok_internal == ' ' || *feenox_parser.strtok_internal == '\t') { feenox_parser.strtok_internal++; } } // esto casi nunca pasa, pero si nos quedamos sin tokens entonces otra vez // internal apunta a cualquier lado // OJO! a partir de algun update de la libc si dejamos esto tenemos segfault cuando // algun primary keyword consume todas las keywords de la linea como PHYSICAL_ENTITY BC strings // if (token == NULL) { // feenox_parser.strtok_internal = NULL; // } return token; } /* // parsea el rango de indices int feenox_parse_range(char *string, const char left_delim, const char middle_delim, const char right_delim, expr_t *a, expr_t *b) { char *first_bracket; char *second_bracket; char *colon; if ((first_bracket = strchr(string, left_delim)) == NULL) { feenox_push_error_message("range '%s' does not start with '%c'", string, left_delim); return FEENOX_ERROR; } if ((second_bracket = strrchr(string, right_delim)) == NULL) { feenox_push_error_message("unmatched '%c' for range in '%s'", left_delim, string); return FEENOX_ERROR; } *second_bracket = '\0'; if ((colon = strchr(string, middle_delim)) == NULL) { feenox_push_error_message("delimiter '%c' not found when giving range", middle_delim); return FEENOX_ERROR; } *colon = '\0'; if (feenox_parse_expression(first_bracket+1, a) != 0) { feenox_push_error_message("in min range expression"); return FEENOX_ERROR; } if (feenox_parse_expression(colon+1, b) != 0) { feenox_push_error_message("in max range expression"); return FEENOX_ERROR; } *second_bracket = right_delim;; *colon = middle_delim; return FEENOX_OK; } */ // saca los comentarios y los espacios en blanco iniciales de una linea int feenox_strip_comments(char *line) { int i = 0; int j = 0; char *buff = strdup(line); while (isspace((int)buff[i])) { i++; } while ((buff[i] != '#' && buff[i] != '\0') || (i > 0 && buff[i] == '#' && buff[i-1] == '\\')) { if (i > 0 && buff[i] == '#' && buff[i-1] == '\\') { j--; } line[j++] = buff[i++]; } line[j] = '\0'; feenox_free(buff); return FEENOX_OK; } /* // lee una linea y eventualmente procesa los {} int feenox_read_data_line(FILE *file_ptr, char *buffer) { int l; int lines = 1; if (fgets(buffer, BUFFER_SIZE*BUFFER_SIZE, file_ptr) == NULL) { return 0; } feenox_strip_comments(buffer); // limpiamos la linea // TODO: explicar esto! // si no tiene "{" entonces se curte if (strchr(buffer, '{') == NULL) { return 1; } do { l = strlen(buffer); if (fgets(buffer + l + 1, (BUFFER_SIZE*BUFFER_SIZE)-1, file_ptr) == 0) { return FEENOX_ERROR; } buffer[l] = ' '; feenox_strip_comments(buffer); // limpiamos la linea lines++; } while (strchr(buffer, '}') == NULL); // feenox_strip_brackets(buffer); return lines; } */ // strips the blanks of a string (it modifies the argument string) int feenox_strip_blanks(char *string) { int i = 0; int j = 0; char *buff; feenox_check_alloc(buff = strdup(string)); for (i = 0; i < strlen(string); i++) { if (!isspace((int)buff[i])) { string[j++] = buff[i]; } } string[j] = '\0'; feenox_free(buff); return FEENOX_OK; } // this function parses a string like "f(x,y,z)" // it creates the function and sets the arguments // it returns the name of the function in name which should be freed int feenox_add_function_from_string(const char *string, char **name) { char *dummy_openpar = strchr(string, '('); if (dummy_openpar == NULL) { feenox_push_error_message("expecting open parenthesis in '%s'", string); return FEENOX_ERROR; } *dummy_openpar = '\0'; feenox_check_alloc(*name = strdup(string)); *dummy_openpar = '('; feenox_call(feenox_strip_blanks(*name)); char *arguments; feenox_check_alloc(arguments = strdup(dummy_openpar)); feenox_call(feenox_strip_blanks(arguments)); size_t n_arguments; if ((n_arguments = feenox_count_arguments(arguments, NULL)) <= 0) { return FEENOX_ERROR; } char **arg_name = NULL; feenox_call(feenox_read_arguments(arguments, n_arguments, &arg_name, NULL)); feenox_free(arguments); *dummy_openpar = '\0'; feenox_call(feenox_define_function(*name, n_arguments)); int i; for (i = 0; i < n_arguments; i++) { feenox_call(feenox_function_set_argument_variable(*name, i, arg_name[i])); } // clean up this (partial) mess if (arg_name != NULL) { for (i = 0; i < n_arguments; i++) { feenox_free(arg_name[i]); } feenox_free(arg_name); } return FEENOX_OK; } int feenox_add_post_field(mesh_write_t *mesh_write, unsigned int size, char **token, const char *name, field_location_t location) { mesh_write_dist_t *mesh_write_dist = NULL; feenox_check_alloc(mesh_write_dist = calloc(1, sizeof(mesh_write_dist_t))); mesh_write_dist->field_location = location; mesh_write_dist->size = size; feenox_check_alloc(mesh_write_dist->field = calloc(mesh_write_dist->size, sizeof(function_t *))); for (unsigned int i = 0; i < mesh_write_dist->size; i++) { if ((mesh_write_dist->field[i] = feenox_get_function_ptr(token[i])) == NULL) { // if there's no function with the provided name we define one feenox_check_alloc(mesh_write_dist->field[i] = calloc(1, sizeof(function_t))); feenox_check_alloc(mesh_write_dist->field[i]->name = strdup(token[i])); mesh_write_dist->field[i]->type = function_type_algebraic; mesh_write_dist->field[i]->n_arguments = 3; mesh_write_dist->field[i]->n_arguments_given = 3; mesh_write_dist->field[i]->var_argument = feenox.mesh.vars.arr_x; feenox_call(feenox_expression_parse(&mesh_write_dist->field[i]->algebraic_expression, token[i])); } else { // mark the function as used so secondary fields such as stresses are computed mesh_write_dist->field[i]->used = 1; } } if (name != NULL) { mesh_write_dist->name = strdup(name); } else { mesh_write_dist->name = strdup(mesh_write_dist->field[0]->name); for (unsigned int i = 1; i < mesh_write_dist->size; i++) { feenox_check_minusone(asprintf(&mesh_write_dist->name, "%s_%s", mesh_write_dist->name, mesh_write_dist->field[i]->name)); } } if (mesh_write->printf_format != NULL) { feenox_check_alloc(mesh_write_dist->printf_format = strdup(mesh_write->printf_format)); } LL_APPEND(mesh_write->mesh_write_dists, mesh_write_dist); return FEENOX_OK; } feenox-1.1/src/parser/parser.c0000644000175000017500000051443014773607165013332 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX parser * * Copyright (C) 2009--2025 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms "of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "parser.h" feenox_parser_t feenox_parser; #include #include #include #if HAVE_SYSCONF #include #endif int feenox_parse_main_input_file(const char *filepath) { // check the page size to use a reasonable buffer size // we can ask for more if we need #if HAVE_SYSCONF feenox_parser.page_size = (size_t)sysconf(_SC_PAGESIZE); #else feenox_parser.page_size = 4096; #endif feenox_parser.actual_buffer_size = feenox_parser.page_size-64; feenox_check_alloc(feenox_parser.line = malloc(feenox_parser.actual_buffer_size)); feenox_call(feenox_parse_input_file(filepath, 0, 0)); feenox_free(feenox_parser.line); if (feenox_parser.active_conditional_block != NULL) { feenox_push_error_message("conditional block not closed"); return FEENOX_ERROR; } return FEENOX_OK; } // parse an input file (it can be called recursively to handle INCLUDEs) int feenox_parse_input_file(const char *filepath, int from, int to) { FILE *input_file_stream; int line_num, delta_line_num; if (filepath == NULL) { return FEENOX_OK; } else if (strcmp(filepath, "-") == 0) { input_file_stream = stdin; } else { if ((input_file_stream = feenox_fopen(filepath, "r")) == NULL) { feenox_push_error_message("input file '%s' could not be opened: %s", filepath, strerror(errno)); return FEENOX_ERROR; } } // line-by-line parser line_num = 0; while ((delta_line_num = feenox_read_line(input_file_stream)) != 0) { // a negative delta_line_num indicates that the line asks for an argument $n // which was not provided but this can occur on a line which is ignored // by a from/to INCLUDE directive so it is not a catastrophic error line_num += abs(delta_line_num); if (feenox_parser.line[0] != '\0' && feenox_parser.inside_yaml == 0 && ((from == 0 || line_num >= from) && ((to == 0) || line_num <= to))) { // we do have to process the line so if delta_line_num is negative, we complain now if (delta_line_num < 0) { feenox_push_error_message("input file needs at least one more argument in commandline"); return FEENOX_ERROR; } // the line is broken by strtok inside parse_line() and we need // the original for assignments and equations feenox_check_alloc(feenox_parser.full_line = strdup(feenox_parser.line)); if (feenox_parse_line() != FEENOX_OK) { feenox_free(feenox_parser.full_line); feenox_push_error_message("%s: %d:", filepath, line_num); return FEENOX_ERROR; } feenox_free(feenox_parser.full_line); } } if (strcmp(filepath, "-") != 0) { fclose(input_file_stream); } return (feenox.error_level == 0) ? FEENOX_OK : FEENOX_ERROR; } // feenox line parser int feenox_parse_line(void) { char *equal_sign = NULL; char *token = NULL; if ((token = feenox_get_next_token(feenox_parser.line)) != NULL) { ///kw+INCLUDE+usage INCLUDE ///kw+INCLUDE+desc Include another FeenoX input file. if (strcasecmp(token, "INCLUDE") == 0) { feenox_call(feenox_parse_include()); return FEENOX_OK; ///kw+ABORT+usage ABORT ///kw+ABORT+desc Catastrophically abort the execution and quit FeenoX. } else if (strcasecmp(token, "ABORT") == 0) { feenox_call(feenox_parse_abort()); return FEENOX_OK; ///kw+DEFAULT_ARGUMENT_VALUE+usage DEFAULT_ARGUMENT_VALUE ///kw+DEFAULT_ARGUMENT_VALUE+desc Give a default value for an optional commandline argument. } else if (strcasecmp(token, "DEFAULT_ARGUMENT_VALUE") == 0) { feenox_call(feenox_parse_default_argument_value()); return FEENOX_OK; ///kw+IMPLICIT+usage IMPLICIT ///kw+IMPLICIT+desc Define whether implicit definition of variables is allowed or not. } else if (strcasecmp(token, "IMPLICIT") == 0) { feenox_call(feenox_parse_implicit()); return FEENOX_OK; ///kw_dae+TIME_PATH+usage TIME_PATH ///kw_dae+TIME_PATH+desc Force time-dependent problems to pass through specific instants of time. } else if (strcasecmp(token, "TIME_PATH") == 0) { feenox_call(feenox_parse_time_path()); return FEENOX_OK; ///kw_dae+INITIAL_CONDITIONS+usage INITIAL_CONDITIONS ///kw_dae+INITIAL_CONDITIONS+desc Define how initial conditions of DAE problems are computed. } else if (strcasecmp(token, "INITIAL_CONDITIONS") == 0 || strcasecmp(token, "INITIAL_CONDITIONS_MODE") == 0) { feenox_call(feenox_parse_initial_conditions()); return FEENOX_OK; ///kw+VAR+usage VAR ///kw+VAR+desc Explicitly define one or more scalar variables. } else if (strcasecmp(token, "VAR") == 0 || strcasecmp(token, "VARIABLE") == 0 || strcasecmp(token, "VARS") == 0 || strcasecmp(token, "VARIABLES") == 0) { feenox_call(feenox_parse_variables()); return FEENOX_OK; ///kw+ALIAS+usage ALIAS ///kw+ALIAS+desc Define a scalar alias of an already-defined identifier. } else if (strcasecmp(token, "ALIAS") == 0) { feenox_call(feenox_parse_alias()); return FEENOX_OK; ///kw+VECTOR+usage VECTOR ///kw+VECTOR+desc Define a vector. } else if (strcasecmp(token, "VECTOR") == 0) { feenox_call(feenox_parse_vector()); return FEENOX_OK; ///kw+SORT_VECTOR+usage SORT_VECTOR ///kw+SORT_VECTOR+desc Sort the elements of a vector, optionally making the same rearrangement in another vector. } else if (strcasecmp(token, "SORT_VECTOR") == 0 || strcasecmp(token, "VECTOR_SORT") == 0) { feenox_call(feenox_parse_sort_vector()); return FEENOX_OK; ///kw+MATRIX+usage MATRIX ///kw+MATRIX+desc Define a matrix. } else if (strcasecmp(token, "MATRIX") == 0) { feenox_call(feenox_parse_matrix()); return FEENOX_OK; ///kw+FUNCTION+usage FUNCTION ///kw+FUNCTION+desc Define a scalar function of one or more variables. } else if (strcasecmp(token, "FUNCTION") == 0) { feenox_call(feenox_parse_function()); return FEENOX_OK; ///kw+PRINT+desc Write plain-text and/or formatted data to the standard output or into an output file. ///kw+PRINT+usage PRINT } else if (strcasecmp(token, "PRINT") == 0) { feenox_call(feenox_parse_print()); return FEENOX_OK; ///kw+PRINTF+desc Instruction akin to C's `printf`. ///kw+PRINTF+usage PRINTF } else if (strcasecmp(token, "PRINTF") == 0) { feenox_call(feenox_parse_printf(0)); return FEENOX_OK; ///kw+PRINTF+desc Instruction akin to C's `printf` executed locally from all MPI ranks. ///kw+PRINTF+usage PRINTF_ALL } else if (strcasecmp(token, "PRINTF_ALL") == 0) { feenox_call(feenox_parse_printf(1)); return FEENOX_OK; ///kw+PRINT_FUNCTION+desc Print one or more functions as a table of values of dependent and independent variables. ///kw+PRINT_FUNCTION+usage PRINT_FUNCTION } else if (strcasecmp(token, "PRINT_FUNCTION") == 0) { feenox_call(feenox_parse_print_function()); return FEENOX_OK; ///kw+PRINT_VECTOR+desc Print the elements of one or more vectors, one element per line. ///kw+PRINT_VECTOR+usage PRINT_VECTOR } else if (strcasecmp(token, "PRINT_VECTOR") == 0) { feenox_call(feenox_parse_print_vector()); return FEENOX_OK; ///kw+FILE+desc Define a file with a particularly formatted name to be used either as input or as output. ///kw+FILE+usage < FILE | OUTPUT_FILE | INPUT_FILE > } else if (strcasecmp(token, "FILE") == 0) { feenox_call(feenox_parse_file(NULL)); return FEENOX_OK; } else if (strcasecmp(token, "OUTPUT_FILE") == 0) { feenox_call(feenox_parse_file("w")); return FEENOX_OK; } else if (strcasecmp(token, "INPUT_FILE") == 0) { feenox_call(feenox_parse_file("r")); return FEENOX_OK; ///kw+OPEN+desc Explicitly open a file for input/output. ///kw+OPEN+usage OPEN } else if (strcasecmp(token, "OPEN") == 0) { feenox_call(feenox_parse_open_close("OPEN")); return FEENOX_OK; ///kw+CLOSE+desc Explicitly close a file after input/output. ///kw+CLOSE+usage CLOSE } else if (strcasecmp(token, "CLOSE") == 0) { feenox_call(feenox_parse_open_close("CLOSE")); return FEENOX_OK; ///kw+IF+desc Execute a set of instructions if a condition is met. ///kw+IF+usage IF expr @ ///kw+IF+usage @ } else if (strcasecmp(token, "IF") == 0) { feenox_call(feenox_parse_if()); return FEENOX_OK; ///kw+IF+usage [ ELSE @ ///kw+IF+usage ] @ } else if (strcasecmp(token, "ELSE") == 0) { feenox_call(feenox_parse_else()); return FEENOX_OK; ///kw+IF+usage ENDIF } else if (strcasecmp(token, "ENDIF") == 0) { feenox_call(feenox_parse_endif()); return FEENOX_OK; ///kw_dae+PHASE_SPACE+desc Ask FeenoX to solve a set of algebraic-differntial equations and define the variables, vectors and/or matrices that span the phase space. ///kw_dae+PHASE_SPACE+usage PHASE_SPACE // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "PHASE_SPACE") == 0) { feenox_call(feenox_parse_phase_space()); return FEENOX_OK; ///kw_pde+READ_MESH+desc Read an unstructured mesh and (optionally) functions of space-time from a file. ///kw_pde+READ_MESH+usage READ_MESH // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "READ_MESH") == 0) { feenox_call(feenox_parse_read_mesh()); return FEENOX_OK; ///kw_pde+WRITE_MESH+desc Write a mesh and/or generic functions of space-time to a post-processing file. ///kw_pde+WRITE_MESH+usage WRITE_MESH // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "WRITE_MESH") == 0) { feenox_call(feenox_parse_write_mesh()); return FEENOX_OK; ///kw_pde+WRITE_RESULTS+desc Write the problem mesh and problem results to a file for post-processing. ///kw_pde+WRITE_RESULTS+usage WRITE_RESULTS // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "WRITE_RESULTS") == 0) { feenox_call(feenox_parse_write_results()); return FEENOX_OK; // description is in pdes/parse.c } else if (strcasecmp(token, "PROBLEM") == 0) { #ifdef HAVE_PETSC feenox_call(feenox_parse_problem()); return FEENOX_OK; #else feenox_push_error_message("FeenoX is not compiled with PETSc so it cannot solve PROBLEMs"); return FEENOX_ERROR; #endif ///kw_pde+PETSC_OPTIONS+desc Pass verbatim options to PETSc. ///kw_pde+PETSC_OPTIONS+usage PETSC_OPTIONS // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "PETSC_OPTIONS") == 0) { feenox_call(feenox_parse_petsc_options()); return FEENOX_OK; ///kw_pde+PHYSICAL_GROUP+desc Explicitly defines a physical group of elements on a mesh. ///kw_pde+PHYSICAL_GROUP+usage PHYSICAL_GROUP // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "PHYSICAL_GROUP") == 0) { feenox_call(feenox_parse_physical_group()); return FEENOX_OK; ///kw_pde+MATERIAL+desc Define a material its and properties to be used in volumes. ///kw_pde+MATERIAL+usage MATERIAL // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "MATERIAL") == 0) { feenox_call(feenox_parse_material()); return FEENOX_OK; ///kw_pde+BC+desc Define a boundary condition to be applied to faces, edges and/or vertices. ///kw_pde+BC+usage BC // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "BC") == 0 || strcasecmp(token, "BOUNDARY_CONDITION") == 0) { feenox_call(feenox_parse_bc()); return FEENOX_OK; ///kw_pde+COMPUTE_REACTION+desc Compute the reaction (force, moment, power, etc.) at selected face, edge or vertex. ///kw_pde+COMPUTE_REACTION+usage COMPUTE_REACTION // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "COMPUTE_REACTION") == 0 || strcasecmp(token, "REACTION") == 0) { feenox_call(feenox_parse_reaction()); return FEENOX_OK; ///kw_pde+SOLVE_PROBLEM+desc Explicitly solve the PDE problem. ///kw_pde+SOLVE_PROBLEM+usage SOLVE_PROBLEM } else if (strcasecmp(token, "SOLVE_PROBLEM") == 0) { #ifdef HAVE_PETSC feenox_call(feenox_parse_solve_problem()); return FEENOX_OK; #else feenox_push_error_message("FeenoX is not compiled with PETSc so it cannot solve PROBLEMs"); return FEENOX_ERROR; #endif ///kw_pde+INTEGRATE+desc Spatially integrate a function or expression over a mesh (or a subset of it). ///kw_pde+INTEGRATE+usage INTEGRATE // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "INTEGRATE") == 0) { feenox_call(feenox_parse_integrate()); return FEENOX_OK; ///kw_pde+FIND_EXTREMA+desc Find and/or compute the absolute extrema of a function or expression over a mesh (or a subset of it). ///kw_pde+FIND_EXTREMA+usage FIND_EXTREMA // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "FIND_EXTREMA") == 0) { feenox_call(feenox_parse_find_extrema()); return FEENOX_OK; ///kw+FIT+desc Find parameters to fit an analytical function to a pointwise-defined function. ///kw+FIT+usage FIT // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "FIT") == 0) { feenox_call(feenox_parse_fit()); return FEENOX_OK; ///kw_pde+DUMP+desc Dump raw PETSc objects used to solve PDEs into files. ///kw_pde+DUMP+usage DUMP // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "DUMP") == 0) { feenox_call(feenox_parse_dump()); return FEENOX_OK; ///kw+SOLVE+desc Solve a (small) system of non-linear equations. ///kw+SOLVE+usage SOLVE // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "SOLVE") == 0) { feenox_call(feenox_parse_solve()); return FEENOX_OK; // TODO: move this to a per-physics parser // ----- ----------------------------------------------------------- } else if (strcasecmp(token, "LINEARIZE_STRESS") == 0) { feenox_call(feenox_parse_linearize_stress()); return FEENOX_OK; // this should come last because there is no actual keyword apart from the equal sign // so if we came down here, then that means that any line containing a '=' that has // not been already processed must be one of these // i. an algebraic function // ii. an equation for the DAE // iii. an assignment // TODO: explain syntax for reference } else if ((equal_sign = strstr(feenox_parser.full_line, ":=")) != NULL || (equal_sign = strstr(feenox_parser.full_line, ".=")) != NULL || (equal_sign = strchr(feenox_parser.full_line, '=')) != NULL) { enum { parser_assignment, parser_dae, parser_function } type; // first see if there is an explicit sign switch (*equal_sign) { case '=': type = parser_assignment; break; case ':': type = parser_function; break; case '.': type = parser_dae; break; default: feenox_push_error_message("unexpected character '%c'", *equal_sign); return FEENOX_ERROR; break; } *equal_sign = '\0'; char *lhs = feenox_parser.full_line; char *rhs = equal_sign + 1 + (equal_sign[1] == '='); // try to figure out if it is a DAE or a function automatically if (type == parser_assignment) { char *lhs_tmp = NULL; feenox_check_alloc(lhs_tmp = strdup(lhs)); char *lhs_object = NULL; lhs_object = strtok(lhs_tmp, factorseparators); // check if it is a function int length_full = strlen(lhs); int length_object = strlen(lhs_object); if (length_full > length_object && lhs[length_object] == '(') { type = parser_function; } else { // check if the object belongs to the phase space phase_object_t *phase_object = NULL; LL_FOREACH(feenox.dae.phase_objects, phase_object) { if ((phase_object->variable != NULL && strcmp(lhs_object, phase_object->variable->name) == 0) || (phase_object->variable_dot != NULL && strcmp(lhs_object, phase_object->variable_dot->name) == 0) || (phase_object->vector != NULL && strcmp(lhs_object, phase_object->vector->name) == 0) || (phase_object->vector_dot != NULL && strcmp(lhs_object, phase_object->vector_dot->name) == 0) || (phase_object->matrix != NULL && strcmp(lhs_object, phase_object->matrix->name) == 0) || (phase_object->matrix_dot != NULL && strcmp(lhs_object, phase_object->matrix_dot->name) == 0)) { type = parser_dae; } } } feenox_free(lhs_tmp); } switch (type) { case parser_assignment: feenox_call(feenox_add_assignment(lhs, rhs)); break; case parser_function: { char *name; feenox_call(feenox_add_function_from_string(lhs, &name)); feenox_call(feenox_function_set_expression(name, rhs)); feenox_free(name); } break; case parser_dae: // TODO: handle vector/matrix DAEs feenox_call(feenox_add_dae(lhs, rhs)); break; } return FEENOX_OK; } } /* // ---- SEMAPHORE ---------------------------------------------------- //kw+SEMAPHORE+desc Perform either a wait or a post operation on a named shared semaphore. //kw+SEMAPHORE+usage [ SEMAPHORE | SEM ] } else if ((strcasecmp(token, "SEMAPHORE") == 0) || (strcasecmp(token, "SEM") == 0)) { struct semaphore_t *semaphore; semaphore = calloc(1, sizeof(struct semaphore_t)); LL_APPEND(feenox.semaphores, semaphore); //kw+SEMAPHORE+usage if (feenox_parser_string(&semaphore->name) != FEENOX_OK) { return FEENOX_ERROR; } //kw+SEMAPHORE+usage { WAIT | POST } char *keywords[] = {"WAIT", "POST", ""}; int values[] = {feenox_sem_wait, feenox_sem_post, 0}; feenox_call(feenox_parser_keywords_ints(keywords, values, (int *)&semaphore->operation)); if (feenox_define_instruction(feenox_instruction_sem, semaphore) == NULL) { return FEENOX_ERROR; } return FEENOX_OK; // ---- READ / WRITE ---------------------------------------------------- //kw+READ+desc Read data (variables, vectors o matrices) from files or shared-memory segments. //kw+WRITE+desc Write data (variables, vectors o matrices) to files or shared-memory segments. //kw+WRITE+desc See the `READ` keyword for usage details. //kw+READ+usage [ READ | WRITE ] } else if ((strcasecmp(token, "READ") == 0) || (strcasecmp(token, "WRITE") == 0)) { io_t *io = calloc(1, sizeof(io_t)); LL_APPEND(feenox.ios, io); if (strcasecmp(token, "READ") == 0) { io->direction = io_read; } else if (strcasecmp(token, "WRITE") == 0) { io->direction = io_write; } while ((token = feenox_get_next_token(NULL)) != NULL) { // ---- SHM_OBJECT --------------------------------------------------------- //kw+READ+usage [ SHM ] if (strcasecmp(token, "SHM") == 0 || strcasecmp(token, "SHM_OBJECT") == 0) { io->type = io_shm; if (feenox_parser_string(&io->shm_name) != FEENOX_OK) { return FEENOX_ERROR; } // ---- FILE_PATH ---------------------------------------------------- //kw+READ+usage [ { ASCII_FILE_PATH | BINARY_FILE_PATH } ] } else if (strcasecmp(token, "ASCII_FILE_PATH") == 0 || strcasecmp(token, "BINARY_FILE_PATH") == 0) { char mode[2]; if (io->direction == io_read) { sprintf(mode, "r"); } else if (io->direction == io_write) { sprintf(mode, "w"); } if (strcasecmp(token, "ASCII_FILE_PATH") == 0) { io->type = io_file_ascii; } else if (strcasecmp(token, "BINARY_FILE_PATH") == 0) { io->type = io_file_binary; } feenox_call(feenox_parser_file_path(&io->file, mode)); // ---- FILE ---------------------------------------------------- //kw+READ+usage [ { ASCII_FILE | BINARY_FILE } ] } else if (strcasecmp(token, "ASCII_FILE") == 0 || strcasecmp(token, "BINARY_FILE") == 0) { if (strcasecmp(token, "ASCII_FILE") == 0) { io->type = io_file_ascii; } else if (strcasecmp(token, "BINARY_FILE") == 0) { io->type = io_file_binary; } if (feenox_parser_file(&io->file) != FEENOX_OK) { return FEENOX_ERROR; } // ---- FILE ---------------------------------------------------- //kw+READ+usage [ IGNORE_NULL ] } else if (strcasecmp(token, "IGNORE_NULL") == 0) { io->ignorenull = 1; } else { //kw+READ+usage [ object_1 object_2 ... object_n ] // cosas io->n_things++; io_thing_t *thing = calloc(1, sizeof(io_thing_t)); LL_APPEND(io->things, thing); // si pusieron un corchete quieren un pedazo solamente if ((dummy = strchr(token, '<')) != NULL) { *dummy = '\0'; } if ((thing->variable = feenox_get_variable_ptr(token)) != NULL) { // manzana, despues sumamos uno al tamanio en feenox_io_init() ; } else if ((thing->vector = feenox_get_vector_ptr(token)) != NULL) { if (dummy != NULL) { *dummy = '<'; feenox_call(feenox_parse_range(dummy, '<', ':', '>', &thing->expr_row_min, &thing->expr_row_max)); } } else if ((thing->matrix = feenox_get_matrix_ptr(token)) != NULL) { if (dummy != NULL) { *dummy = '<'; feenox_call(feenox_parse_range(dummy, '<', ':', ';', &thing->expr_row_min, &thing->expr_row_max)); feenox_call(feenox_parse_range(strchr(dummy, ';'), ';', ':', '>', &thing->expr_col_min, &thing->expr_col_max)); } } else { if (feenox_parse_expression(token, &thing->expr) != FEENOX_OK) { feenox_push_error_message("undefined keyword, variable, vector, matrix, alias or invalid expression '%s'", token); return FEENOX_ERROR; } if (io->direction == io_read) { feenox_push_error_message("expressions cannot be used in a READ instruction", token); return FEENOX_ERROR; } } } } if (io->type == io_undefined) { feenox_push_error_message("undefined I/O resource type"); return FEENOX_ERROR; } if (feenox_define_instruction(feenox_instruction_io, io) == NULL) { return FEENOX_ERROR; } return FEENOX_OK; // ----- HISTORY ----------------------------------------------------------------- //kw+HISTORY+desc Record the time history of a variable as a function of time. //kw+HISTORY+usage HISTORY } else if ((strcasecmp(token, "HISTORY") == 0)) { history_t *history; history = calloc(1, sizeof(history_t)); LL_APPEND(feenox.histories, history); //kw+HISTORY+usage // el nombre de la variable if (feenox_parser_variable(&history->variable)) { return FEENOX_ERROR; } //kw+HISTORY+usage // el nombre de la funcion if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected function name"); return FEENOX_ERROR; } if ((history->function = feenox_define_function(token, 1)) == NULL) { return FEENOX_ERROR; } // proposed by rvignolo // feenox_check_alloc(history->function->arg_name = malloc(1 * sizeof(char *))); // feenox_check_alloc(history->function->arg_name[0] = strdup(feenox.special_vars.t->name)); if (feenox_define_instruction(feenox_instruction_history, history) == NULL) { return FEENOX_ERROR; } return FEENOX_OK; } */ feenox_push_error_message("unknown keyword '%s'", feenox_parser.line); return FEENOX_ERROR; } char *feenox_get_nth_token(char *string, int n) { char *backup; char *token; char *desired_token; int i; feenox_check_alloc_null(backup = strdup(string)); if ((token = strtok(backup, UNQUOTED_DELIM)) == NULL) { feenox_free(backup); return NULL; } i = 1; while (i < n) { if ((token = strtok(NULL, UNQUOTED_DELIM)) == NULL) { feenox_free(backup); return NULL; } i++; } feenox_check_alloc_null(desired_token = strdup(token)); feenox_free(backup); return desired_token; } int feenox_parse_include(void) { ///kw+INCLUDE+detail Includes the input file located in the string `file_path` at the current location. ///kw+INCLUDE+detail The effect is the same as copying and pasting the contents of the included file ///kw+INCLUDE+detail at the location of the `INCLUDE` keyword. The path can be relative or absolute. ///kw+INCLUDE+detail Note, however, that when including files inside `IF` blocks that instructions are ///kw+INCLUDE+detail conditionally-executed but all definitions (such as function definitions) are processed at ///kw+INCLUDE+detail parse-time independently from the evaluation of the conditional. ///kw+INCLUDE+detail The included file has to be an actual file path (i.e. it cannot be a FeenoX `FILE`) ///kw+INCLUDE+detail because it needs to be resolved at parse time. Yet, the name can contain a ///kw+INCLUDE+detail commandline replacement argument such as `$1` so `INCLUDE $1.fee` will include the ///kw+INCLUDE+detail file specified after the main input file in the command line. char *token = NULL; char *filepath = NULL; double xi = 0; unsigned int from = 0; unsigned int to = 0; ///kw+INCLUDE+usage feenox_call(feenox_parser_string(&filepath)); while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+INCLUDE+usage [ FROM ] ///kw+INCLUDE+detail The optional `FROM` and `TO` keywords can be used to include only portions of a file. if (strcasecmp(token, "FROM") == 0) { feenox_call(feenox_parser_expression_in_string(&xi)); if ((from = (int)(xi)) <= 0) { feenox_push_error_message("expected a positive line number for FROM instead of '%s'", token); return FEENOX_ERROR; } ///kw+INCLUDE+usage [ TO ] } else if (strcasecmp(token, "TO") == 0) { feenox_call(feenox_parser_expression_in_string(&xi)); if ((to = (int)(xi)) <= 0) { feenox_push_error_message("expected a positive line number for TO instead of '%s'", token); return FEENOX_ERROR; } } } feenox_call(feenox_parse_input_file(filepath, from, to)); feenox_free(filepath); return FEENOX_OK; } int feenox_parse_default_argument_value(void) { ///kw+DEFAULT_ARGUMENT_VALUE+detail If a `$n` construction is found in the input file but the ///kw+DEFAULT_ARGUMENT_VALUE+detail commandline argument was not given, the default behavior is to ///kw+DEFAULT_ARGUMENT_VALUE+detail fail complaining that an extra argument has to be given in the ///kw+DEFAULT_ARGUMENT_VALUE+detail commandline. With this keyword, a default value can be assigned if ///kw+DEFAULT_ARGUMENT_VALUE+detail no argument is given, thus avoiding the failure and making the argument ///kw+DEFAULT_ARGUMENT_VALUE+detail optional. ///kw+DEFAULT_ARGUMENT_VALUE+detail The `` should be 1, 2, 3, etc. and `` will be expanded ///kw+DEFAULT_ARGUMENT_VALUE+detail character-by-character where the `$n` construction is. ///kw+DEFAULT_ARGUMENT_VALUE+detail Whether the resulting expression is to be interpreted as a string or as a ///kw+DEFAULT_ARGUMENT_VALUE+detail numerical expression will depend on the context. char *token; int n; ///kw+DEFAULT_ARGUMENT_VALUE+usage if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected argument number for DEFAULT_ARGUMENT_VALUE"); return FEENOX_ERROR; } if ((n = (int)feenox_expression_evaluate_in_string(token)) <= 0) { feenox_push_error_message("expected a positive value instead of 'token", token); return FEENOX_ERROR; } ///kw+DEFAULT_ARGUMENT_VALUE+usage if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected value for DEFAULT_ARUGMENT_VALUE number %d", n); return FEENOX_ERROR; } if ((feenox.optind+n) >= feenox.argc) { feenox.argc = feenox.optind+n + 1; feenox_check_alloc(feenox.argv = realloc(feenox.argv, sizeof(char *)*(feenox.argc + 1))); feenox_check_alloc(feenox.argv[feenox.optind+n] = strdup(token)); feenox_check_alloc(feenox.argv_orig = realloc(feenox.argv_orig, sizeof(char *)*(feenox.argc + 1))); feenox_check_alloc(feenox.argv_orig[feenox.optind+n] = strdup(token)); } return FEENOX_OK; } int feenox_parse_abort(void) { ///kw+ABORT+detail Whenever the instruction `ABORT` is executed, FeenoX quits with a non-zero error leve. ///kw+ABORT+detail It does not close files nor unlock shared memory objects. ///kw+ABORT+detail The objective of this instruction is to either debug complex input files ///kw+ABORT+detail by using only parts of them or to conditionally abort the execution using `IF` clauses. feenox_call(feenox_add_instruction(feenox_instruction_abort, NULL)); return FEENOX_OK; } int feenox_parse_implicit(void) { ///kw+IMPLICIT+detail By default, FeenoX allows variables (but not vectors nor matrices) to be ///kw+IMPLICIT+detail implicitly declared. To avoid introducing errors due to typos, explicit ///kw+IMPLICIT+detail declaration of variables can be forced by giving `IMPLICIT NONE`. ///kw+IMPLICIT+detail Whether implicit declaration is allowed or explicit declaration is required ///kw+IMPLICIT+detail depends on the last `IMPLICIT` keyword given, which by default is `ALLOWED`. ///kw+IMPLICIT+usage { NONE | ALLOWED } char *keywords[] = {"NONE", "ALLOWED", ""}; int values[] = {1, 0, 0}; feenox_call(feenox_parser_keywords_ints(keywords, values, &feenox_parser.implicit_none)); return FEENOX_OK; } int feenox_parse_time_path(void) { ///kw_dae+TIME_PATH+detail The time step `dt` will be reduced whenever the distance between ///kw_dae+TIME_PATH+detail the current time `t` and the next expression in the list is greater ///kw_dae+TIME_PATH+detail than `dt` so as to force `t` to coincide with the expressions given. ///kw_dae+TIME_PATH+detail The list of expressions should evaluate to a sorted list of values for all times. char *token; ///kw_dae+TIME_PATH+usage [ [ ... ] ] while ((token = feenox_get_next_token(NULL)) != NULL) { feenox_call(feenox_add_time_path(token)); } // y apuntamos el current al primero feenox.time_path_current = feenox.time_paths; return FEENOX_OK; } int feenox_parse_initial_conditions(void) { ///kw_dae+INITIAL_CONDITIONS+detail In DAE problems, initial conditions may be either: ///kw_dae+INITIAL_CONDITIONS+detail @ ///kw_dae+INITIAL_CONDITIONS+detail * equal to the provided expressions (`AS_PROVIDED`)@ ///kw_dae+INITIAL_CONDITIONS+detail * the derivatives computed from the provided phase-space variables (`FROM_VARIABLES`)@ ///kw_dae+INITIAL_CONDITIONS+detail * the phase-space variables computed from the provided derivatives (`FROM_DERIVATIVES`)@ ///kw_dae+INITIAL_CONDITIONS+detail @ ///kw_dae+INITIAL_CONDITIONS+detail In the first case, it is up to the user to fulfill the DAE system at\ $t = 0$. ///kw_dae+INITIAL_CONDITIONS+detail If the residuals are not small enough, a convergence error will occur. ///kw_dae+INITIAL_CONDITIONS+detail The `FROM_VARIABLES` option means calling IDA’s `IDACalcIC` routine with the parameter `IDA_YA_YDP_INIT`. ///kw_dae+INITIAL_CONDITIONS+detail The `FROM_DERIVATIVES` option means calling IDA’s `IDACalcIC` routine with the parameter IDA_Y_INIT. ///kw_dae+INITIAL_CONDITIONS+detail Wasora should be able to automatically detect which variables in phase-space are differential and ///kw_dae+INITIAL_CONDITIONS+detail which are purely algebraic. However, the `DIFFERENTIAL` keyword may be used to explicitly define them. ///kw_dae+INITIAL_CONDITIONS+detail See the [SUNDIALS documentation](https://computation.llnl.gov/casc/sundials/documentation/ida_guide.pdf) for further information. ///kw_dae+INITIAL_CONDITIONS+usage { AS_PROVIDED | FROM_VARIABLES | FROM_DERIVATIVES } char *keywords[] = {"AS_PROVIDED", "FROM_VARIABLES", "FROM_DERIVATIVES", ""}; int values[] = {initial_conditions_as_provided, initial_conditions_from_variables, initial_conditions_from_derivatives, 0}; feenox_call(feenox_parser_keywords_ints(keywords, values, (int *)(&feenox.dae.initial_conditions_mode))); return FEENOX_OK; } int feenox_parse_variables(void) { char *token; ///kw+VAR+detail When implicit definition is allowed (see [`IMPLICIT`]), scalar variables ///kw+VAR+detail need not to be defined before being used if from the context FeenoX can tell ///kw+VAR+detail that an scalar variable is needed. For instance, when defining a function like ///kw+VAR+detail `f(x) = x^2` it is not needed to declare `x` explicitly as a scalar variable. ///kw+VAR+detail But if one wants to define a function like `g(x) = integral(f(x'), x', 0, x)` then ///kw+VAR+detail the variable `x'` needs to be explicitly defined as `VAR x'` before the integral. ///kw+VAR+usage [ ] ... [ ] while ((token = feenox_get_next_token(NULL)) != NULL) { feenox_call(feenox_define_variable(token)); } return FEENOX_OK; } int feenox_parse_alias(void) { ///kw+ALIAS+detail The existing object can be a variable, a vector element or a matrix element. ///kw+ALIAS+detail In the first case, the name of the variable should be given as the existing object. ///kw+ALIAS+detail In the second case, to alias the second element of vector `v` to the new name `new`, `v(2)` should be given as the existing object. ///kw+ALIAS+detail In the third case, to alias second element (2,3) of matrix `M` to the new name `new`, `M(2,3)` should be given as the existing object. char *left; char *keyword; char *right; char *existing_object; char *new_name; char *dummy_openpar = NULL; char *dummy_comma = NULL; char *dummy_closepar = NULL; char *row = NULL; char *col = NULL; ///kw+ALIAS+usage { IS | AS } feenox_call(feenox_parser_string(&left)); feenox_call(feenox_parser_string(&keyword)); feenox_call(feenox_parser_string(&right)); if (strcasecmp(keyword, "IS") == 0) { new_name = left; existing_object = right; } else if (strcasecmp(keyword, "AS") == 0) { new_name = right; existing_object = left; } else { feenox_push_error_message("either IS or AS expected instead of '%s'", keyword); return FEENOX_ERROR; } // if there are brackets they are sub-indexes if ((dummy_openpar = strchr(existing_object, '[')) != NULL) { dummy_comma = strchr(existing_object, ','); if ((dummy_closepar = strrchr(existing_object, ']')) == NULL) { feenox_push_error_message("expecting closing bracket in expression '%s'", existing_object); } *dummy_openpar = '\0'; *dummy_closepar = '\0'; row = dummy_openpar + 1; if (dummy_comma != NULL) { *dummy_comma = '\0'; col = dummy_comma + 1; } } feenox_call(feenox_define_alias(new_name, existing_object, row, col)); feenox_free(left); feenox_free(keyword); feenox_free(right); return FEENOX_OK; } int feenox_parse_vector(void) { char *token = NULL; char *name = NULL; char *size = NULL; char *function_data = NULL; char *dummy_openpar = NULL; char *dummy_closepar = NULL; expr_t *datas = NULL; ///kw+VECTOR+detail A new vector of the prescribed size is defined. The size can be an expression which will be ///kw+VECTOR+detail evaluated the very first time the vector is used and then kept at that constant value. ///kw+VECTOR+usage feenox_call(feenox_parser_string(&name)); // if there are brackets or parenthesis, the size is between them if ((dummy_openpar = strchr(name, '[')) != NULL || (dummy_openpar = strchr(name, '(')) != NULL) { if ((dummy_closepar = strrchr(name, ']')) == NULL && (dummy_closepar = strrchr(name, ')')) == NULL) { feenox_push_error_message("expecting closing parenthesis in expression '%s'", name); return FEENOX_ERROR; } *dummy_openpar = '\0'; *dummy_closepar = '\0'; size = dummy_openpar+1; } while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+VECTOR+usage SIZE if (strcasecmp(token, "SIZE") == 0) { feenox_call(feenox_parser_string(&size)); ///kw+VECTOR+detail If the keyword `FUNCTION_DATA` is given, the elements of the vector will be synchronized ///kw+VECTOR+detail with the inpedendent values of the function, which should be point-wise defined. ///kw+VECTOR+detail The sizes of both the function and the vector should match. ///kw+VECTOR+usage [ FUNCTION_DATA ] } else if (strcasecmp(token, "FUNCTION_DATA") == 0) { feenox_call(feenox_parser_string(&function_data)); ///kw+VECTOR+detail All elements will be initialized to zero unless `DATA` is given (which should be the last keyword of the line), ///kw+VECTOR+detail in which case the expressions will be evaluated the very first time the vector is used ///kw+VECTOR+detail and assigned to each of the elements. ///kw+VECTOR+detail If there are less elements than the vector size, the remaining values will be zero. ///kw+VECTOR+detail If there are more elements than the vector size, the values will be ignored. ///kw+VECTOR+usage [ DATA ... | } else if (strcasecmp(token, "DATA") == 0) { while ((token = feenox_get_next_token(NULL)) != NULL) { expr_t *data = calloc(1, sizeof(expr_t)); feenox_call(feenox_expression_parse(data, token)); LL_APPEND(datas, data); } } } if (size == NULL) { feenox_push_error_message("vector '%s' does not have a size", name); return FEENOX_ERROR; } feenox_call(feenox_define_vector(name, size)); /* if (function_data != NULL) { feenox_call(feenox_vector_attach_function(name, function_data)); } */ if (datas != NULL) { feenox_call(feenox_vector_attach_data(name, datas)); } feenox_free(name); if (dummy_openpar == NULL) { feenox_free(size); } feenox_free(function_data); return FEENOX_OK; } int feenox_parse_matrix(void) { char *token = NULL; char *name = NULL; char *rows = NULL; char *cols = NULL; char *dummy_openpar = NULL; char *dummy_comma = NULL; char *dummy_closepar = NULL; expr_t *datas = NULL; ///kw+MATRIX+detail A new matrix of the prescribed size is defined. The number of rows and columns can be an expression which will be ///kw+MATRIX+detail evaluated the very first time the matrix is used and then kept at those constant values. ///kw+MATRIX+usage feenox_call(feenox_parser_string(&name)); // if there are parenthesis, the size is between them if ((dummy_openpar = strchr(name, '(')) != NULL) { if ((dummy_comma = strchr(name, ',')) == NULL) { feenox_push_error_message("expecting comma in expression '%s'", name); } if ((dummy_closepar = strrchr(name, ')')) == NULL) { feenox_push_error_message("expecting closing parenthesis in expression '%s'", name); } *dummy_openpar = '\0'; *dummy_comma = '\0'; *dummy_closepar = '\0'; rows = dummy_openpar+1; cols = dummy_comma+1; } while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+MATRIX+usage ROWS if (strcasecmp(token, "ROWS") == 0) { feenox_call(feenox_parser_string(&rows)); ///kw+MATRIX+usage COLS } else if (strcasecmp(token, "COLS") == 0) { feenox_call(feenox_parser_string(&cols)); ///kw+MATRIX+detail All elements will be initialized to zero unless `DATA` is given (which should be the last keyword of the line), ///kw+MATRIX+detail in which case the expressions will be evaluated the very first time the matrix is used ///kw+MATRIX+detail and row-major-assigned to each of the elements. ///kw+MATRIX+detail If there are less elements than the matrix size, the remaining values will be zero. ///kw+MATRIX+detail If there are more elements than the matrix size, the values will be ignored. ///kw+MATRIX+usage [ DATA ... | } else if (strcasecmp(token, "DATA") == 0) { while ((token = feenox_get_next_token(NULL)) != NULL) { expr_t *data = calloc(1, sizeof(expr_t)); feenox_call(feenox_expression_parse(data, token)); LL_APPEND(datas, data); } } } if (rows == NULL) { feenox_push_error_message("matrix '%s' does not have a row size", name); return FEENOX_ERROR; } if (cols == NULL) { feenox_push_error_message("matrix '%s' does not have a column size", name); return FEENOX_ERROR; } feenox_call(feenox_define_matrix(name, rows, cols)); if (datas != NULL) { feenox_call(feenox_matrix_attach_data(name, datas)); } feenox_free(name); if (dummy_openpar == NULL) { feenox_free(rows); feenox_free(cols); } return FEENOX_OK; } int feenox_parse_function(void) { ///kw+FUNCTION+usage ([,var2,...,var_n]) { ///kw+FUNCTION+usage @ ///kw+FUNCTION+detail The number of variables $n$ is given by the number of arguments given between parenthesis after the function name. ///kw+FUNCTION+detail The arguments are defined as new variables if they had not been already defined explicitly as scalar variables. char *token = NULL; feenox_call(feenox_parser_string(&token)); char *dummy_openpar = NULL; if ((dummy_openpar = strchr(token, '(')) == NULL) { feenox_push_error_message("expected opening parenthesis '(' after function name '%s' (no spaces allowed)", token); return FEENOX_ERROR; } char *name = NULL; feenox_call(feenox_add_function_from_string(token, &name)); function_t *function = NULL; if ((function = feenox_get_function_ptr(name)) == NULL) { feenox_push_error_message("unknown function '%s'", name); return FEENOX_ERROR; } unsigned int *columns = NULL; file_t *file = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+FUNCTION+usage = | ///kw+FUNCTION+usage @ ///kw+FUNCTION+detail If the function is given as an algebraic expression, the short-hand operator `=` ///kw+FUNCTION+detail (or `:=` for compatibility with Maxima) can be used. ///kw+FUNCTION+detail That is to say, `FUNCTION f(x) = x^2` is equivalent to `f(x) = x^2` (or `f(x) := x^2`). if (strcasecmp(token, "=") == 0 || strcasecmp(token, ":=") == 0) { feenox_call(feenox_function_set_expression(name, token + ((token[0] == ':')? 3 : 2))); break; // we are done with the while() over the line ///kw+FUNCTION+usage FILE { } | ///kw+FUNCTION+usage @ } else if (strcasecmp(token, "FILE") == 0) { ///kw+FUNCTION+detail If a `FILE` is given, an ASCII file containing at least $n+1$ columns is expected. ///kw+FUNCTION+detail By default, the first $n$ columns are the values of the arguments and the last column ///kw+FUNCTION+detail is the value of the function at those points. ///kw+FUNCTION+detail The order of the columns can be changed with the keyword `COLUMNS`, ///kw+FUNCTION+detail which expects $n+1$ expressions corresponding to the column numbers. feenox_call(feenox_parser_file(&file)); file->mode = "r"; ///kw+FUNCTION+usage VECTORS ... | ///kw+FUNCTION+usage @ ///kw+FUNCTION+detail If `VECTORS` is given, a set of $n+1$ vectors of the same size is expected. ///kw+FUNCTION+detail The first $n$ correspond to the arguments and the last one to the function values. } else if (strcasecmp(token, "VECTORS") == 0) { feenox_call(feenox_parse_function_vectors(function)); ///kw+FUNCTION+usage MESH | ///kw+FUNCTION+usage @ ///kw+FUNCTION+detail If `MESH` is given, the function is point-wise defined over the mesh topology. ///kw+FUNCTION+detail That is to say, the independent variables (i.e. the spatial coordinates) coincide with the mesh nodes. ///kw+FUNCTION+detail The dependent variable (i.e. the function value) is set by "filling" a vector ///kw+FUNCTION+detail named `vec_f` (where `f` has to be replaced with the function name) of size equal to the number of nodes. } else if (strcasecmp(token, "MESH") == 0) { feenox_call(feenox_parse_function_mesh(function)); ///kw+FUNCTION+usage DATA ... ///kw+FUNCTION+usage @ ///kw+FUNCTION+usage } ///kw+FUNCTION+usage @ ///kw+FUNCTION+detail The function can be pointwise-defined inline in the input using `DATA`. ///kw+FUNCTION+detail This should be the last keyword of the line, followed by $N=k \cdot (n+1)$ expressions ///kw+FUNCTION+detail giving\ $k$ definition points: $n$ arguments and the value of the function. ///kw+FUNCTION+detail Multiline continuation using brackets `{` and `}` can be used for a clean data organization. } else if (strcasecmp(token, "DATA") == 0) { feenox_call(feenox_parse_function_data(function)); ///kw+FUNCTION+usage [ COLUMNS ... ] ///kw+FUNCTION+usage @ } else if (strcasecmp(token, "COLUMNS") == 0) { if (function->n_arguments == 0) { feenox_push_error_message("number of arguments is equal to zero"); return FEENOX_ERROR; } feenox_check_alloc(columns = calloc(function->n_arguments+1, sizeof(int))); unsigned int i = 0; double xi = 0; for (i = 0; i < function->n_arguments+1; i++) { feenox_call(feenox_parser_expression_in_string(&xi)); columns[i] = (unsigned int)(xi); } ///kw+FUNCTION+detail Interpolation schemes can be given for either one or multi-dimensional functions with `INTERPOLATION`. ///kw+FUNCTION+detail Available schemes for $n=1$ are: ///kw+FUNCTION+detail @ ///kw+FUNCTION+usage [ INTERPOLATION ///kw+FUNCTION+usage { ///kw+FUNCTION+usage linear | ///kw+FUNCTION+detail * linear ///kw+FUNCTION+usage polynomial | ///kw+FUNCTION+detail * polynomial, the grade is equal to the number of data minus one ///kw+FUNCTION+usage spline | ///kw+FUNCTION+detail * spline, cubic (needs at least 3 points) ///kw+FUNCTION+usage spline_periodic | ///kw+FUNCTION+detail * spline_periodic ///kw+FUNCTION+usage akima | ///kw+FUNCTION+detail * akima (needs at least 5 points) ///kw+FUNCTION+usage akima_periodic | ///kw+FUNCTION+detail * akima_periodic (needs at least 5 points) ///kw+FUNCTION+usage steffen | ///kw+FUNCTION+usage @ ///kw+FUNCTION+detail * steffen, always-monotonic splines-like interpolator ///kw+FUNCTION+detail @ ///kw+FUNCTION+detail Default interpolation scheme for one-dimensional functions is `DEFAULT_INTERPOLATION`. ///kw+FUNCTION+detail @ ///kw+FUNCTION+detail Available schemes for $n>1$ are: ///kw+FUNCTION+detail @ ///kw+FUNCTION+usage nearest | ///kw+FUNCTION+detail * nearest, $f(\vec{x})$ is equal to the value of the closest definition point ///kw+FUNCTION+usage shepard | ///kw+FUNCTION+detail * shepard, [inverse distance weighted average definition points](https://en.wikipedia.org/wiki/Inverse_distance_weighting) (might lead to inefficient evaluation) ///kw+FUNCTION+usage shepard_kd | ///kw+FUNCTION+detail * shepard_kd, [average of definition points within a kd-tree](https://en.wikipedia.org/wiki/Inverse_distance_weighting#Modified_Shepard's_method) (more efficient evaluation provided `SHEPARD_RADIUS` is set to a proper value) ///kw+FUNCTION+usage bilinear ///kw+FUNCTION+detail * bilinear, only available if the definition points configure an structured hypercube-like grid. If $n>3$, `SIZES` should be given. ///kw+FUNCTION+usage } ] ///kw+FUNCTION+usage @ } else if (strcasecmp(token, "INTERPOLATION") == 0) { token = feenox_get_next_token(NULL); feenox_call(feenox_function_set_interpolation(name, token)); ///kw+FUNCTION+detail @ ///kw+FUNCTION+usage [ INTERPOLATION_THRESHOLD ] ///kw+FUNCTION+detail For $n>1$, if the euclidean distance between the arguments and the definition points is smaller than `INTERPOLATION_THRESHOLD`, the definition point is returned and no interpolation is performed. ///kw+FUNCTION+detail Default value is square root of `DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD`. } else if (strcasecmp(token, "INTERPOLATION_THRESHOLD") == 0) { feenox_parser_expression(&function->expr_multidim_threshold); ///kw+FUNCTION+detail @ ///kw+FUNCTION+usage [ SHEPARD_RADIUS ] ///kw+FUNCTION+detail The initial radius of points to take into account in `shepard_kd` is given by `SHEPARD_RADIUS`. If no points are found, the radius is double until at least one definition point is found. ///kw+FUNCTION+detail The radius is doubled until at least one point is found. ///kw+FUNCTION+detail Default is `DEFAULT_SHEPARD_RADIUS`. } else if (strcasecmp(token, "SHEPARD_RADIUS") == 0) { feenox_parser_expression(&function->expr_shepard_radius); ///kw+FUNCTION+usage [ SHEPARD_EXPONENT ] ///kw+FUNCTION+detail The exponent of the `shepard` method is given by `SHEPARD_EXPONENT`. ///kw+FUNCTION+detail Default is `DEFAULT_SHEPARD_EXPONENT`. } else if (strcasecmp(token, "SHEPARD_EXPONENT") == 0) { feenox_parser_expression(&function->expr_shepard_exponent); } else { feenox_push_error_message("unknown keyword '%s'", token); return FEENOX_ERROR; } } /* //kw+FUNCTION+usage [ SIZES ... ] //kw+FUNCTION+detail When requesting `bilinear` interpolation for $n>3$, the number of definition points for each argument variable has to be given with `SIZES`, } else if (strcasecmp(token, "SIZES") == 0) { function->expr_rectangular_mesh_size = calloc(function->n_arguments, sizeof(expr_t)); for (i = 0; i < function->n_arguments; i++) { feenox_call(feenox_parser_expression(&function->expr_rectangular_mesh_size[i])); } //kw+FUNCTION+usage [ X_INCREASES_FIRST ] //kw+FUNCTION+detail and whether the definition data is sorted with the first argument changing first (`X_INCREASES_FIRST` evaluating to non-zero) or with the last argument changing first (zero). } else if (strcasecmp(token,"X_INCREASES_FIRST") == 0) { feenox_call(feenox_parser_expression(&function->expr_x_increases_first)); } else { feenox_push_error_message("unknown keyword '%s'", token); return FEENOX_ERROR; } } */ if (file != NULL) { feenox_call(feenox_function_set_file(name, file, columns)); } feenox_free(columns); feenox_free(name); return FEENOX_OK; } int feenox_parse_function_data(function_t *function) { function->type = function_type_pointwise_data; size_t size0 = 4096/sizeof(double); size_t size = size0; double *buffer = NULL; feenox_check_alloc(buffer = malloc(size * sizeof(double))); char *token = NULL; size_t n = 0; while ((token = feenox_get_next_token(NULL)) != NULL) { if (n == size) { size += size0; feenox_check_alloc(buffer = realloc(buffer, size*sizeof(double))); } expr_t *expr = NULL; feenox_check_alloc(expr = calloc(1, sizeof(expr_t))); feenox_call(feenox_expression_parse(expr, token)); if (expr->variables != NULL) { feenox_push_error_message("FUNCTION DATA cannot reference variables"); return FEENOX_ERROR; } if (expr->variables != NULL) { feenox_push_error_message("FUNCTION DATA cannot reference functions"); return FEENOX_ERROR; } buffer[n++] = feenox_expression_eval(expr); feenox_free(expr); } feenox_call(function_set_buffered_data(function, buffer, n, function->n_arguments+1, NULL)); feenox_free(buffer); return FEENOX_OK; } int feenox_parse_function_vectors(function_t *function) { function->type = function_type_pointwise_data; feenox_check_alloc(function->vector_argument = calloc(function->n_arguments, sizeof(vector_t *))); // feenox_check_alloc(function->data_argument = calloc(function->n_arguments, sizeof(double *))); unsigned int i = 0; for (i = 0; i < function->n_arguments; i++) { feenox_call(feenox_parser_vector(&function->vector_argument[i])); } feenox_call(feenox_parser_vector(&function->vector_value)); return FEENOX_OK; } int feenox_parse_function_mesh(function_t *function) { // TODO: cells function->type = function_type_pointwise_mesh_node; if ((function->mesh = feenox_parser_mesh()) == NULL) { return FEENOX_ERROR; } if (function->n_arguments != function->mesh->dim) { feenox_push_error_message("function '%s' has %d arguments and mesh '%s' has %d dimensions", function->name, function->n_arguments, function->mesh->file->name, function->mesh->dim); return FEENOX_ERROR; } feenox_call(feenox_create_pointwise_function_vectors(function)); return FEENOX_OK; } int feenox_parse_sort_vector(void) { char *token; sort_vector_t *sort_vector = calloc(1, sizeof(sort_vector_t)); ///kw+SORT_VECTOR+usage feenox_call(feenox_parser_vector(&sort_vector->v1)); while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+SORT_VECTOR+detail This instruction sorts the elements of `` into either ascending or descending numerical order. ///kw+SORT_VECTOR+detail If `` is given, the same rearrangement is made on it. ///kw+SORT_VECTOR+detail Default is ascending order. ///kw+SORT_VECTOR+usage [ ASCENDING | DESCENDING ] if (strcasecmp(token, "ASCENDING") == 0 || strcasecmp(token, "ASCENDING_ORDER") == 0) { sort_vector->descending = 0; } else if (strcasecmp(token, "DESCENDING") == 0 || strcasecmp(token, "DESCENDING_ORDER") == 0) { sort_vector->descending = 1; ///kw+SORT_VECTOR+usage [ ] } else if ((sort_vector->v2 = feenox_get_vector_ptr(token)) != NULL) { continue; } else { feenox_push_error_message("unknown keyword or vector identifier '%s'", token); return FEENOX_ERROR; } } feenox_call(feenox_add_instruction(feenox_instruction_sort_vector, sort_vector)); return FEENOX_OK; } int feenox_parse_file(char *default_mode) { char *token = NULL; char *name = NULL; char *format = NULL; char *mode = NULL; char **arg = NULL; int n_args = 0; ///kw+FILE+usage if (feenox_parser_string(&name) != FEENOX_OK) { return FEENOX_ERROR; } ///kw+FILE+detail For reading or writing into files with a fixed path, this instruction is usually not needed as ///kw+FILE+detail the `FILE` keyword of other instructions (such as `PRINT` or `MESH`) can take a fixed-string path as an argument. ///kw+FILE+detail However, if the file name changes as the execution progresses (say because one file for each step is needed), ///kw+FILE+detail then an explicit `FILE` needs to be defined with this keyword and later referenced by the given name. while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+FILE+usage PATH ///kw+FILE+usage expr_1 expr_2 ... expr_n ///kw+FILE+detail The path should be given as a `printf`-like format string followed by the expressions which should be ///kw+FILE+detail evaluated in order to obtain the actual file path. The expressions will always be floating-point expressions, ///kw+FILE+detail but the particular integer specifier `%d` is allowed and internally transformed to `%.0f`. if (strcasecmp(token, "PATH") == 0) { feenox_call(feenox_parser_string_format(&format, &n_args)); if (n_args != 0) { arg = calloc(n_args, sizeof(char *)); int i; for (i = 0; i < n_args; i++) { feenox_call(feenox_parser_string(&arg[i])); } } ///kw+FILE+detail The file can be explicitly defined and `INPUT`, `OUTPUT` or a certain `fopen()` mode can be given (i.e. "a"). ///kw+FILE+detail If not explicitly given, the nature of the file will be taken from context, i.e. `FILE`s in `PRINT` ///kw+FILE+detail will be `OUTPUT` and `FILE`s in `FUNCTION` will be `INPUT`. ///kw+FILE+usage [ INPUT | OUTPUT | APPEND | MODE ] } else if (strcasecmp(token, "MODE") == 0) { feenox_call(feenox_parser_string(&mode)); } else if (strcasecmp(token, "INPUT") == 0) { feenox_check_alloc(mode = strdup("r")); } else if (strcasecmp(token, "OUTPUT") == 0) { feenox_check_alloc(mode = strdup("w")); } else if (strcasecmp(token, "APPEND") == 0) { feenox_check_alloc(mode = strdup("a")); ///kw+FILE+detail This keyword just defines the `FILE`, it does not open it. ///kw+FILE+detail The file will be actually opened (and eventually closed) automatically. ///kw+FILE+detail In the rare case where the automated opening and closing does not fit the expected workflow, ///kw+FILE+detail the file can be explicitly opened or closed with the instructions `FILE_OPEN` and `FILE_CLOSE`. } else { feenox_push_error_message("unknown keyword '%s'", token); return FEENOX_ERROR; } } // the custom mode takes precedence over the argument's mode if (mode == NULL) { mode = default_mode; } feenox_call(feenox_define_file(name, format, n_args, mode)); for (int i = 0; i < n_args; i++) { feenox_call(feenox_file_set_path_argument(name, i, arg[i])); } feenox_free(format); if (mode != default_mode) { feenox_free(mode); } feenox_free(name); return FEENOX_OK; } int feenox_parse_open_close(const char *what) { char *token = NULL; char *name = NULL; char *mode = NULL; ///kw+OPEN+usage ///kw+CLOSE+usage if (feenox_parser_string(&name) != FEENOX_OK) { return FEENOX_ERROR; } ///kw+OPEN+detail The given `` can be either a fixed-string path or an already-defined `FILE`. ///kw+CLOSE+detail The given `` can be either a fixed-string path or an already-defined `FILE`. if (strcmp(what, "OPEN") == 0) { while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+OPEN+detail The mode is only taken into account if the file is not already defined. ///kw+OPEN+detail Default is write `w`. ///kw+OPEN+usage [ MODE ] if (strcasecmp(token, "MODE") == 0) { feenox_call(feenox_parser_string(&mode)); } } } file_t *file; if ((file = feenox_get_file_ptr(name)) == NULL) { feenox_call(feenox_define_file(name, name, 0, mode)); if ((file = feenox_get_file_ptr(name)) == NULL) { return FEENOX_ERROR; } } // to add an instruction from the API one needs to pass a string and not a file_t if (strcmp(what, "OPEN") == 0) { feenox_call(feenox_add_instruction(feenox_instruction_file_open, file)); } else if (strcmp(what, "CLOSE") == 0) { feenox_call(feenox_add_instruction(feenox_instruction_file_close, file)); } return FEENOX_OK; } int feenox_parse_print(void) { // I don't expect anybody to want to use this PRINT instruction through the API // so we just parse and define everything here print_t *print = NULL; feenox_check_alloc(print = calloc(1, sizeof(print_t))); char *keywords[] = {"SKIP_STEP", "SKIP_STATIC_STEP", "SKIP_TIME", "SKIP_HEADER_STEP", ""}; expr_t *expressions[] = { &print->skip_step, &print->skip_static_step, &print->skip_time, &print->skip_header_step, NULL }; ///kw+PRINT+detail Each argument `object` which is not a keyword of the `PRINT` instruction will be part of the output. ///kw+PRINT+detail Objects can be either a matrix, a vector or any valid scalar algebraic expression. ///kw+PRINT+detail If the given object cannot be solved into a valid matrix, vector or expression, it is treated as a string literal ///kw+PRINT+detail if `IMPLICIT` is `ALLOWED`, otherwise a parser error is raised. ///kw+PRINT+detail To explicitly interpret an object as a literal string even if it resolves to a valid numerical expression, ///kw+PRINT+detail it should be prefixed with the `TEXT` keyword such as `PRINT TEXT 1+1` that would print `1+1` instead of `2`. ///kw+PRINT+detail Objects and string literals can be mixed and given in any order. ///kw+PRINT+detail Hashes `#` appearing literal in text strings have to be quoted to prevent the parser to treat them as comments ///kw+PRINT+detail within the FeenoX input file and thus ignoring the rest of the line, like `PRINT "\# this is a printed comment"`. ///kw+PRINT+detail Whenever an argument starts with a porcentage sign `%`, it is treated as a C `printf`-compatible format ///kw+PRINT+detail specifier and all the objects that follow it are printed using the given format until a new format definition is found. ///kw+PRINT+detail The objects are treated as double-precision floating point numbers, so only floating point formats should be given. ///kw+PRINT+detail See the `printf(3)` man page for further details. The default format is `DEFAULT_PRINT_FORMAT`. ///kw+PRINT+detail Matrices, vectors, scalar expressions, format modifiers and string literals can be given in any desired order, ///kw+PRINT+detail and are processed from left to right. ///kw+PRINT+detail Vectors are printed element-by-element in a single row. ///kw+PRINT+detail See `PRINT_VECTOR` to print one or more vectors with one element per line (i.e. vertically). ///kw+PRINT+detail Matrices are printed element-by-element in a single line using row-major ordering if mixed ///kw+PRINT+detail with other objects but in the natural row and column fashion ///kw+PRINT+detail if it is the only given object in the `PRINT` instruction. ///kw+PRINT+usage [ ... ] ///kw+PRINT+usage [ TEXT ... TEXT ] ///kw+PRINT+usage @ int n = 0; char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+PRINT+usage [ FILE { | } ] ///kw+PRINT+detail If the `FILE` keyword is not provided, default is to write to `stdout`. if (strcasecmp(token, "FILE") == 0 || strcasecmp(token, "FILE_PATH") == 0) { feenox_call(feenox_parser_file(&print->file)); // we don't have the file name because it was already consumed by the above call // and we do not expect the PRINT instruction to be used from the API // so we directly access the internals of the structure if (print->file->mode == NULL) { feenox_check_alloc(print->file->mode = strdup("w")); } ///kw+PRINT+usage [ HEADER ] } else if (strcasecmp(token, "HEADER") == 0) { print->header = 1; ///kw+PRINT+detail If the `HEADER` keyword is given, a single line containing the literal text ///kw+PRINT+detail given for each object is printed at the very first time the `PRINT` instruction is ///kw+PRINT+detail processed, starting with a hash `#` character. ///kw+PRINT+usage [ NONEWLINE ] } else if (strcasecmp(token, "NONEWLINE") == 0) { ///kw+PRINT+detail If the `NONEWLINE` keyword is not provided, default is to write a newline `\n` character after ///kw+PRINT+detail all the objects are processed. ///kw+PRINT+detail Otherwise, if the last token to be printed is a numerical value, a separator string will be printed but not the newline `\n` character. ///kw+PRINT+detail If the last token is a string, neither the separator nor the newline will be printed. print->nonewline = 1; ///kw+PRINT+usage [ SEP ] ///kw+PRINT+detail The `SEP` keyword expects a string used to separate printed objects. ///kw+PRINT+detail To print objects without any separation in between give an empty string like `SEP ""`. ///kw+PRINT+detail The default is a tabulator character 'DEFAULT_PRINT_SEPARATOR' character. } else if (strcasecmp(token, "SEP") == 0 || strcasecmp(token, "SEPARATOR") == 0) { feenox_call(feenox_parser_string(&print->separator)); ///kw+PRINT+detail To print an empty line write `PRINT` without arguments. ///kw+PRINT+usage @ ///kw+PRINT+usage [ SKIP_STEP ] ///kw+PRINT+detail By default the `PRINT` instruction is evaluated every step. ///kw+PRINT+detail If the `SKIP_STEP` (`SKIP_STATIC_STEP`) keyword is given, the instruction is processed ///kw+PRINT+detail only every the number of transient (static) steps that results in evaluating the expression, ///kw+PRINT+detail which may not be constant. ///kw+PRINT+detail The `SKIP_HEADER_STEP` keyword works similarly for the optional `HEADER` but ///kw+PRINT+detail by default it is only printed once. The `SKIP_TIME` keyword use time advancements ///kw+PRINT+detail to choose how to skip printing and may be useful for non-constant time-step problems. ///kw+PRINT+usage [ SKIP_STATIC_STEP ] ///kw+PRINT+usage [ SKIP_TIME ] ///kw+PRINT+usage [ SKIP_HEADER_STEP ] } else if ((n = feenox_parser_match_keyword_expression(token, keywords, expressions, sizeof(expressions)/sizeof(expr_t *))) != FEENOX_UNHANDLED) { if (n == FEENOX_ERROR) { return FEENOX_ERROR; } } else { ///kw+PRINT+usage @ // see the objects above print_token_t *print_token = NULL; feenox_check_alloc(print_token = calloc(1, sizeof(print_token_t))); matrix_t *matrix = NULL; vector_t *vector = NULL; if (token[0] == '%') { feenox_check_alloc(print_token->format = strdup(token)); } else if (strcasecmp(token, "STRING") == 0 || strcasecmp(token, "TEXT") == 0) { if (feenox_parser_string(&print_token->text) != FEENOX_OK) { return FEENOX_ERROR; } } else if ((matrix = feenox_get_matrix_ptr(token)) != NULL) { feenox_check_alloc(print_token->text = strdup(token)); // nos quedamos con el texto para el header print_token->matrix = matrix; matrix->used = 1; } else if ((vector = feenox_get_vector_ptr(token)) != NULL) { print_token->text = strdup(token); // nos quedamos con el texto para el header print_token->vector = vector; vector->used = 1; } else { if (feenox_expression_parse(&print_token->expression, token) != FEENOX_OK) { // let the not-resolved expressions to be casted as string literals // only if implicit is allowed if (feenox_parser.implicit_none) { feenox_push_error_message("implicit definition is not allowed and expression '%s' is invalid", token); return FEENOX_ERROR; } else { print_token->expression.items = NULL; feenox_check_alloc(print_token->text = strdup(token)); feenox_pop_error_message(); } } else { feenox_check_alloc(print_token->text = strdup(token)); // text for the header } } LL_APPEND(print->tokens, print_token); } } // default separator if (print->separator == NULL) { feenox_check_alloc(print->separator = strdup(DEFAULT_PRINT_SEPARATOR)); } // default file is stdout if (print->file == NULL) { print->file = feenox.special_files._stdout; } LL_APPEND(feenox.prints, print); feenox_call(feenox_add_instruction(feenox_instruction_print, print)); return FEENOX_OK; } int feenox_parse_printf(int all_ranks) { // I don't expect anybody to want to use this PRINT instruction through the API // so we just parse and define everything here printf_t *printf = NULL; feenox_check_alloc(printf = calloc(1, sizeof(printf_t))); printf->all_ranks = all_ranks; ///kw+PRINTF+detail The `format_string` should be a `printf`-like string containing double-precision ///kw+PRINTF+detail format specifiers. A matching number of expressions should be given. ///kw+PRINTF+detail No newline is written if not explicitly asked for in the format string with `\n`. ///kw+PRINTF+detail Do not ask for string literals `%s`. ///kw+PRINTF+detail As always, to get a literal `%` use `%%` in the format string. ///kw+PRINTF+usage format_string [ expr_1 [ expr_2 [ ... ] ] ] char *token = NULL; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected format string for PRINTF"); return FEENOX_ERROR; } feenox_check_alloc(printf->format_string = strdup(token)); // count the number of needed expressions int i = 0; while (printf->format_string[i] != '\0') { if (printf->format_string[i] == '%') { if (printf->format_string[i+1] != '%') { if (printf->format_string[i+1] == 's') { feenox_push_error_message("string format '%s' not supported in PRINTF"); return FEENOX_ERROR; } else if (printf->format_string[i+1] == 'd') { // everything is a double but just in case printf->format_string[i+1] = 'g'; } printf->n_args++; } else { i++; } } i++; } feenox_check_alloc(printf->expressions = calloc(printf->n_args, sizeof(expr_t))); for (int n = 0; n < printf->n_args; n++) { if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected %d expressions in PRINTF", printf->n_args); return FEENOX_ERROR; } feenox_call(feenox_expression_parse(&printf->expressions[n], token)); } // default file is stdout if (printf->file == NULL) { printf->file = feenox.special_files._stdout; } LL_APPEND(feenox.printfs, printf); feenox_call(feenox_add_instruction(feenox_instruction_printf, printf)); return FEENOX_OK; } int feenox_parse_print_function(void) { char *token; print_function_t *print_function = NULL; feenox_check_alloc(print_function = calloc(1, sizeof(print_function_t))); while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+PRINT_FUNCTION+detail Each argument should be either a function or an expression. ///kw+PRINT_FUNCTION+detail The output of this instruction consists of\ $n+k$ columns, ///kw+PRINT_FUNCTION+detail where\ $n$ is the number of arguments of the first function of the list ///kw+PRINT_FUNCTION+detail and\ $k$ is the number of functions and expressions given. ///kw+PRINT_FUNCTION+detail The first\ $n$ columns are the arguments (independent variables) and ///kw+PRINT_FUNCTION+detail the last\ $k$ one has the evaluated functions and expressions. ///kw+PRINT_FUNCTION+detail The columns are separated by a tabulator, which is the format that most ///kw+PRINT_FUNCTION+detail plotting tools understand. ///kw+PRINT_FUNCTION+detail Only function names without arguments are expected. ///kw+PRINT_FUNCTION+detail All functions should have the same number of arguments. ///kw+PRINT_FUNCTION+detail Expressions can involve the arguments of the first function. ///kw+PRINT_FUNCTION+usage [ { function | expr } ... { function | expr } ] ///kw+PRINT_FUNCTION+usage @ ///kw+PRINT_FUNCTION+usage [ FILE { | } ] ///kw+PRINT_FUNCTION+detail If the `FILE` keyword is not provided, default is to write to `stdout`. if (strcasecmp(token, "FILE") == 0 || strcasecmp(token, "FILE_PATH") == 0) { feenox_call(feenox_parser_file(&print_function->file)); if (print_function->file->mode == NULL) { feenox_check_alloc(print_function->file->mode = strdup("w")); } ///kw+PRINT_FUNCTION+usage [ HEADER ] ///kw+PRINT_FUNCTION+detail If `HEADER` is given, the output is prepended with a single line containing the ///kw+PRINT_FUNCTION+detail names of the arguments and the names of the functions, separated by tabs. ///kw+PRINT_FUNCTION+detail The header starts with a hash\ `#` that usually acts as a comment and is ignored ///kw+PRINT_FUNCTION+detail by most plotting tools. } else if (strcasecmp(token, "HEADER") == 0) { print_function->header = 1; ///kw+PRINT_FUNCTION+usage @ ///kw+PRINT_FUNCTION+usage [ MIN ... ] ///kw+PRINT_FUNCTION+detail If there is no explicit range where to evaluate the functions and the first function ///kw+PRINT_FUNCTION+detail is point-wise defined, they are evalauted at the points of definition of the first one. ///kw+PRINT_FUNCTION+detail The range can be explicitly given as a product of\ $n$ ranges\ $[x_{i,\min},x_{i,\max}]$ ///kw+PRINT_FUNCTION+detail for $i=1,\dots,n$. ///kw+PRINT_FUNCTION+detail The values $x_{i,\min}$ and $x_{i,\max}$ are given with the `MIN` _and_ `MAX` keywords. } else if (strcasecmp(token, "MIN") == 0) { if (print_function->first_function == NULL) { feenox_push_error_message("MIN before actual function, cannot determine number of arguments"); return FEENOX_ERROR; } if (feenox_parser_expressions(&print_function->range.min, print_function->first_function->n_arguments) != FEENOX_OK) { return FEENOX_ERROR; } ///kw+PRINT_FUNCTION+usage [ MAX ... ] } else if (strcasecmp(token, "MAX") == 0) { if (print_function->first_function == NULL) { feenox_push_error_message("MAX before actual function, cannot determine number of arguments"); return FEENOX_ERROR; } if (feenox_parser_expressions(&print_function->range.max, print_function->first_function->n_arguments) != FEENOX_OK) { return FEENOX_ERROR; } ///kw+PRINT_FUNCTION+detail The discretization steps of the ranges are given by either `STEP` that gives\ $\delta x$ _or_ ///kw+PRINT_FUNCTION+detail `NSTEPS` that gives the number of steps. ///kw+PRINT_FUNCTION+usage @ ///kw+PRINT_FUNCTION+usage [ STEP ... ] } else if (strcasecmp(token, "STEP") == 0) { if (print_function->first_function == NULL) { feenox_push_error_message("STEP before actual function, cannot determine number of arguments"); return FEENOX_ERROR; } if (feenox_parser_expressions(&print_function->range.step, print_function->first_function->n_arguments) != FEENOX_OK) { return FEENOX_ERROR; } ///kw+PRINT_FUNCTION+usage [ NSTEPs ... ] } else if (strcasecmp(token, "NSTEPS") == 0) { if (print_function->first_function == NULL) { feenox_push_error_message("NSTEPS before actual function, cannot determine number of arguments"); return FEENOX_ERROR; } if (feenox_parser_expressions(&print_function->range.nsteps, print_function->first_function->n_arguments) != FEENOX_OK) { return FEENOX_ERROR; } ///kw+PRINT_FUNCTION+detail If the first function is not point-wise defined, the ranges are mandatory. ///kw+PRINT_FUNCTION+usage @ ///kw+PRINT_FUNCTION+usage [ FORMAT ] } else if (strcasecmp(token, "FORMAT") == 0) { // TODO: like in PRINT if (feenox_parser_string(&print_function->format) != FEENOX_OK) { return FEENOX_ERROR; } // TODO: mesh & physical group //kw+PRINT_FUNCTION+usage [ PHYSICAL_ENTITY ] /* } else if (strcasecmp(token, "PHYSICAL_ENTITY") == 0) { char *name; feenox_call(feenox_parser_string(&name)); if ((print_function->physical_entity = feenox_get_physical_entity_ptr(name, NULL)) == NULL) { feenox_push_error_message("unknown physical entity '%s'", name); feenox_free(name); return FEENOX_ERROR; } */ } else { // add an item to the list of tokens print_token_t *print_token = NULL; feenox_check_alloc(print_token = calloc(1, sizeof(print_token_t))); LL_APPEND(print_function->tokens, print_token); feenox_check_alloc(print_token->text = strdup(token)); // text for the header function_t *function = NULL; if ((function = feenox_get_function_ptr(token)) != NULL) { function->used = 1; print_token->function = function; if (print_function->first_function == NULL) { // the first function print_function->first_function = function; } else if (function->n_arguments != print_function->first_function->n_arguments) { feenox_push_error_message("functions do not have the same number of arguments"); return FEENOX_ERROR; } } else { feenox_call(feenox_expression_parse(&print_token->expression, token)); } } } if (print_function->first_function == NULL) { feenox_push_error_message("at least one function expected"); return FEENOX_ERROR; } if (print_function->first_function->type == function_type_algebraic) { // || print_function->first_function->type == function_type_routine) { if (print_function->range.min == NULL) { feenox_push_error_message("need MIN keyword (function %s is not point-wise defined)", print_function->first_function->name); return FEENOX_ERROR; } if (print_function->range.max == NULL) { feenox_push_error_message("need MAX keyword (function %s is not point-wise defined)", print_function->first_function->name); return FEENOX_ERROR; } if (print_function->range.step == NULL && print_function->range.nsteps == NULL) { feenox_push_error_message("need either STEP or NSTEPS keyword (function %s is not point-wise defined)", print_function->first_function->name); return FEENOX_ERROR; } } if (print_function->separator == NULL) { feenox_check_alloc(print_function->separator = strdup(DEFAULT_PRINT_SEPARATOR)); } if (print_function->format == NULL) { feenox_check_alloc(print_function->format = strdup(DEFAULT_PRINT_FORMAT)); } if (print_function->file == NULL) { print_function->file = feenox.special_files._stdout; } LL_APPEND(feenox.print_functions, print_function); feenox_call(feenox_add_instruction(feenox_instruction_print_function, print_function)); return FEENOX_OK; } int feenox_parse_print_vector(void) { print_vector_t *print_vector = NULL; feenox_check_alloc(print_vector = calloc(1, sizeof(print_vector_t))); char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+PRINT_FUNCTION+usage [ { vector | expr } ... { vector | expr } ] ///kw+PRINT_VECTOR+detail Each argument should be either a vector or an expression of the integer\ `i`. ///kw+PRINT_VECTOR+usage @ ///kw+PRINT_VECTOR+usage [ FILE { | } ] ///kw+PRINT_VECTOR+detail If the `FILE` keyword is not provided, default is to write to `stdout`. if (strcasecmp(token, "FILE") == 0 || strcasecmp(token, "FILE_PATH") == 0) { feenox_call(feenox_parser_file(&print_vector->file)); if (print_vector->file->mode == NULL) { feenox_check_alloc(print_vector->file->mode = strdup("w")); } ///kw+PRINT_VECTOR+usage [ HEADER ] ///kw+PRINT_VECTOR+detail If `HEADER` is given, the output is prepended with a single line containing the ///kw+PRINT_VECTOR+detail names of the arguments and the names of the functions, separated by tabs. ///kw+PRINT_VECTOR+detail The header starts with a hash\ `#` that usually acts as a comment and is ignored ///kw+PRINT_VECTOR+detail by most plotting tools. // } else if (strcasecmp(token, "HEADER") == 0) { // print_vector->header = 1; ///kw+PRINT_VECTOR+usage @ ///kw+PRINT_VECTOR+usage [ SEP ] ///kw+PRINT_VECTOR+detail The `SEP` keyword expects a string used to separate printed objects. ///kw+PRINT_VECTOR+detail To print objects without any separation in between give an empty string like `SEP ""`. ///kw+PRINT_VECTOR+detail The default is a tabulator character 'DEFAULT_PRINT_SEPARATOR' character. } else if (strcasecmp(token, "SEP") == 0) { if (feenox_parser_string(&print_vector->separator) != FEENOX_OK) { return FEENOX_ERROR; } } else { print_token_t *print_token; feenox_check_alloc(print_token = calloc(1, sizeof(print_token_t))); if (token[0] == '%') { feenox_check_alloc(print_token->format = strdup(token)); } else if ((print_token->vector = feenox_get_vector_ptr(token)) != NULL) { if (print_vector->first_vector == NULL) { print_vector->first_vector = print_token->vector; } print_token->vector->used = 1; } else { feenox_call(feenox_expression_parse(&print_token->expression, token)); } LL_APPEND(print_vector->tokens, print_token); } } // fill in the defaults if (print_vector->separator == NULL) { print_vector->separator = strdup(DEFAULT_PRINT_SEPARATOR); } if (print_vector->file == NULL) { print_vector->file = feenox.special_files._stdout; } LL_APPEND(feenox.print_vectors, print_vector); feenox_call(feenox_add_instruction(feenox_instruction_print_vector, print_vector)); return FEENOX_OK; } int feenox_parse_if(void) { conditional_block_t *conditional_block = calloc(1, sizeof(conditional_block_t)); feenox_call(feenox_parser_expression(&conditional_block->condition)); if (feenox_get_next_token(NULL) != NULL) { feenox_push_error_message("conditional blocks should start in a separate line"); return FEENOX_ERROR; } conditional_block->father = feenox.active_conditional_block; feenox_call(feenox_add_instruction(feenox_instruction_if, conditional_block)); LL_APPEND(feenox.conditional_blocks, conditional_block); feenox.active_conditional_block = conditional_block; return FEENOX_OK; } int feenox_parse_else(void) { conditional_block_t *conditional_block = calloc(1, sizeof(conditional_block_t)); if (feenox.active_conditional_block->else_of != NULL) { feenox_push_error_message("more than one ELSE clause for a single IF clause"); return FEENOX_ERROR; } if (feenox_get_next_token(NULL) != NULL) { feenox_push_error_message("conditional blocks should start in a separate line"); return FEENOX_ERROR; } instruction_t *instruction = feenox_add_instruction_and_get_ptr(feenox_instruction_else, conditional_block); if (instruction == NULL) { return FEENOX_ERROR; } feenox.active_conditional_block->first_false_instruction = instruction; conditional_block->else_of = feenox.active_conditional_block; conditional_block->father = feenox.active_conditional_block->father; LL_APPEND(feenox.conditional_blocks, conditional_block); feenox.active_conditional_block = conditional_block; return FEENOX_OK; } int feenox_parse_endif(void) { instruction_t *instruction = feenox_add_instruction_and_get_ptr(feenox_instruction_endif, feenox.active_conditional_block); if (instruction == NULL) { return FEENOX_ERROR; } if (feenox.active_conditional_block->else_of == NULL) { feenox.active_conditional_block->first_false_instruction = instruction; } else { feenox.active_conditional_block->first_true_instruction = instruction; } feenox.active_conditional_block = feenox.active_conditional_block->father; return FEENOX_OK; } int feenox_parse_phase_space(void) { ///kw_dae+PHASE_SPACE+usage PHASE_SPACE ... ... ... if (feenox.dae.dimension != 0) { feenox_push_error_message("PHASE_SPACE keyword already given"); return FEENOX_ERROR; } #ifdef HAVE_SUNDIALS if (sizeof(sunrealtype) != sizeof(double)) { feenox_push_error_message("\nSUNDIALS was compiled using a different word size than FeenoX, please recompile with double precision floating point arithmetic."); return FEENOX_ERROR; } #endif int differential = 0; char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { if (strcmp(token, "DIFFERENTIAL") == 0) { differential = 1; } else if (strcmp(token, "ALGEBRAIC") == 0) { differential = 0; } else { feenox_call(feenox_phase_space_add_object(token, differential)); } } return FEENOX_OK; } int feenox_parse_read_mesh(void) { // we have at least one mesh so we need to define the whole set of special vars feenox_call(feenox_mesh_init_special_objects()); // TODO: api? yes mesh_t *mesh = NULL; feenox_check_alloc(mesh = calloc(1, sizeof(mesh_t))); // default to three dimensions // mesh->dim = 3; ///kw_pde+READ_MESH+usage { | } ///kw_pde+READ_MESH+detail Either a file identifier (defined previously with a `FILE` keyword) or a file path should be given. ///kw_pde+READ_MESH+detail The format is read from the extension, which should be either ///kw_pde+READ_MESH+detail @ ///kw_pde+READ_MESH+detail * `.msh`, `.msh2` or `.msh4` [Gmsh ASCII format](http://gmsh.info/doc/texinfo/gmsh.html#MSH-file-format), versions 2.2, 4.0 or 4.1 ///kw_pde+READ_MESH+detail * `.vtk` [ASCII legacy VTK](https://lorensen.github.io/VTKExamples/site/VTKFileFormats/) ///kw_pde+READ_MESH+detail * `.frd` [CalculiX’s FRD ASCII output](https://web.mit.edu/calculix_v2.7/CalculiX/cgx_2.7/doc/cgx/node4.html) ///kw_pde+READ_MESH+detail @ ///kw_pde+READ_MESH+detail Note than only MSH is suitable for defining PDE domains, as it is the only one that provides ///kw_pde+READ_MESH+detail physical groups (a.k.a labels) which are needed in order to define materials and boundary conditions. ///kw_pde+READ_MESH+detail The other formats are primarily supported to read function data contained in the file ///kw_pde+READ_MESH+detail and eventually, to operate over these functions (i.e. take differences with other functions contained ///kw_pde+READ_MESH+detail in other files to compare results). ///kw_pde+READ_MESH+detail The file path or file id can be used to refer to a particular mesh when reading more than one, ///kw_pde+READ_MESH+detail for instance in a `WRITE_MESH` or `INTEGRATE` keyword. ///kw_pde+READ_MESH+detail If a file path is given such as `cool_mesh.msh`, it can be later referred to as either ///kw_pde+READ_MESH+detail `cool_mesh.msh` or just `cool_mesh`. feenox_call(feenox_parser_file(&mesh->file)); if (mesh->file->mode == NULL) { feenox_check_alloc(mesh->file->mode = strdup("r")); } char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+READ_MESH+detail The spatial dimensions can be given with `DIM`. ///kw_pde+READ_MESH+detail If material properties are uniform and given with variables, ///kw_pde+READ_MESH+detail the number of dimensions are not needed and will be read from the file at runtime. ///kw_pde+READ_MESH+detail But if either properties are given by spatial functions or if functions ///kw_pde+READ_MESH+detail are to be read from the mesh with `READ_DATA` or `READ_FUNCTION`, then ///kw_pde+READ_MESH+detail the number of dimensions ought to be given explicitly because FeenoX needs to know ///kw_pde+READ_MESH+detail how many arguments these functions take. ///kw_pde+READ_MESH+usage [ DIM ]@ if (strcasecmp(token, "DIM") == 0 || strcasecmp(token, "DIMENSIONS") == 0) { feenox_call(feenox_parser_expression_in_string_unsigned_integer(&mesh->dim)); if (mesh->dim < 1 || mesh->dim > 3) { feenox_push_error_message("mesh dimensions have to be either 1, 2 or 3"); return FEENOX_ERROR; } ///kw_pde+READ_MESH+detail If either `OFFSET` and/or `SCALE` are given, the node locations are first shifted and then scaled by the provided values. ///kw_pde+READ_MESH+usage [ SCALE ] } else if (strcasecmp(token, "SCALE") == 0) { feenox_call(feenox_parser_expression(&mesh->scale_factor)); ///kw_pde+READ_MESH+usage [ OFFSET ]@ } else if (strcasecmp(token, "OFFSET") == 0) { feenox_call(feenox_parser_expression(&mesh->offset_x)); feenox_call(feenox_parser_expression(&mesh->offset_y)); feenox_call(feenox_parser_expression(&mesh->offset_z)); ///kw_pde+READ_MESH+usage [ INTEGRATION { full | reduced } ]@ } else if (strcasecmp(token, "INTEGRATION") == 0) { char *keywords[] = {"full", "reduced", ""}; int values[] = {integration_full, integration_reduced, 0}; feenox_call(feenox_parser_keywords_ints(keywords, values, (int *)(&mesh->integration))); ///kw_pde+READ_MESH+detail When defining several meshes and solving a PDE problem, the mesh used ///kw_pde+READ_MESH+detail as the PDE domain is the one marked with `MAIN`. ///kw_pde+READ_MESH+detail If none of the meshes is explicitly marked as main, the first one is used. ///kw_pde+READ_MESH+usage [ MAIN ] } else if (strcasecmp(token, "MAIN") == 0) { feenox.mesh.mesh_main = mesh; ///kw_pde+READ_MESH+detail If `UPDATE_EACH_STEP` is given, then the mesh data is re-read from the file at ///kw_pde+READ_MESH+detail each time step. Default is to read the mesh once, except if the file path changes with time. ///kw_pde+READ_MESH+usage [ UPDATE_EACH_STEP ]@ } else if (strcasecmp(token, "UPDATE_EACH_STEP") == 0 || strcasecmp(token, "RE_READ") == 0) { mesh->update_each_step = 1; ///kw_pde+READ_MESH+detail For each `READ_FIELD` keyword, a point-wise defined scalar function of space named `` ///kw_pde+READ_MESH+detail is defined and filled with the scalar data named `` contained in the mesh file. ///kw_pde+READ_MESH+usage [ READ_FIELD AS ] [ READ_FIELD ... ] @ ///kw_pde+READ_MESH+detail The `READ_FUNCTION` keyword is a shortcut when the scalar name and the to-be-defined function are the same. ///kw_pde+READ_MESH+usage [ READ_FUNCTION ] [READ_FUNCTION ...] @ } else if (strcasecmp(token, "READ_FIELD") == 0 || strcasecmp(token, "READ_FUNCTION") == 0 || strcasecmp(token, "READ_VECTOR") == 0 || strcasecmp(token, "READ_SYMMETRIC_TENSOR") == 0) { if (mesh->dim == 0) { feenox_push_error_message("need an explicit dimension when reading a function from a mesh"); return FEENOX_ERROR; } int custom_name = (strcasecmp(token, "READ_FIELD") == 0); int vector = (strcasecmp(token, "READ_VECTOR") == 0); int symmetric_tensor = (strcasecmp(token, "READ_SYMMETRIC_TENSOR") == 0); char *name_in_mesh = NULL; feenox_call(feenox_parser_string(&name_in_mesh)); char *function_name = NULL; if (custom_name) { // the "AS" char *as = NULL; feenox_call(feenox_parser_string(&as)); if (strcasecmp(as, "AS") != 0) { feenox_push_error_message("expected AS instead of '%s'", as); return FEENOX_ERROR; } feenox_free(as); feenox_call(feenox_parser_string(&function_name)); } else { feenox_check_alloc(function_name = strdup(name_in_mesh)); } node_data_t *node_data = NULL; feenox_check_alloc(node_data = calloc(1, sizeof(node_data_t))); feenox_check_alloc(node_data->name_in_mesh = strdup(name_in_mesh)); feenox_check_null(node_data->function = feenox_define_function_get_ptr(function_name, mesh->dim)); node_data->function->mesh = mesh; feenox_call(feenox_create_pointwise_function_vectors(node_data->function)); LL_APPEND(mesh->node_datas, node_data); // if they asked for a vector we have to define the three functions // here so they are available for further usage if (vector || symmetric_tensor) { char *components[6] = {"x", "y", "z", "xy", "yz", "zx"}; for (unsigned g = 0; g < (symmetric_tensor ? 6 : 3); g++) { char *actual_function_name = NULL; feenox_check_minusone(asprintf(&actual_function_name, "%s_%s", function_name, components[g])); feenox_call(feenox_define_function(actual_function_name, mesh->dim)); feenox_free(actual_function_name); } } feenox_free(name_in_mesh); feenox_free(function_name); } else { feenox_push_error_message("unknown keyword '%s'", token); return FEENOX_ERROR; } } ///kw_pde+READ_MESH+detail If no mesh is marked as `MAIN`, the first one is the main one. if (feenox.mesh.meshes == NULL) { feenox.mesh.mesh_main = mesh; } if (mesh->file == NULL) { feenox_push_error_message("no FILE given for READ_MESH"); return FEENOX_ERROR; } char *ext = strrchr(mesh->file->format, '.'); if (ext == NULL) { feenox_push_error_message("no file extension given"); return FEENOX_ERROR; } // TODO: pointer to reader function if (strncasecmp(ext, ".msh", 4) == 0 || strncasecmp(ext, ".msh2", 5) == 0 || strncasecmp(ext, ".msh4", 5) == 0) { mesh->reader = feenox_mesh_read_gmsh; } else if (strcasecmp(ext, ".vtk") == 0) { mesh->reader = feenox_mesh_read_vtk; } else if (strcasecmp(ext, ".frd") == 0) { mesh->reader = feenox_mesh_read_frd; } else { feenox_push_error_message("unknown extension '%s', valid formats are '.msh', '.vtk' and '.frd'", ext); return FEENOX_ERROR; } // if nobody told us the dimension, check if there is one in the PROBLEM keyword if (feenox.pde.dim != 0) { mesh->dim = feenox.pde.dim; } if (feenox_get_vector_ptr("mesh_x") == NULL) { feenox_call(feenox_define_vector("mesh_x", 0)); feenox_call(feenox_define_vector("mesh_y", 0)); feenox_call(feenox_define_vector("mesh_z", 0)); } // TODO: API? if (feenox_get_mesh_ptr(mesh->file->name) != NULL) { feenox_push_error_message("there already exists a mesh named '%s'", mesh->file->name); return FEENOX_ERROR; } HASH_ADD_KEYPTR(hh, feenox.mesh.meshes, mesh->file->name, strlen(mesh->file->name), mesh); feenox_call(feenox_add_instruction(feenox_instruction_mesh_read, mesh)); return FEENOX_OK; } int feenox_parse_write_mesh(void) { mesh_write_t *mesh_write = NULL; feenox_check_alloc(mesh_write = calloc(1, sizeof(mesh_write_t))); ///kw_pde+WRITE_MESH+usage ///kw_pde+WRITE_MESH+detail The format is automatically detected from the extension, which should be ///kw_pde+WRITE_MESH+detail either `msh` (version 2.2 ASCII) or `vtk` (legacy ASCII). ///kw_pde+WRITE_MESH+detail Otherwise, the keyword `FILE_FORMAT` has to be given to set the format explicitly. feenox_call(feenox_parser_file(&mesh_write->file)); if (mesh_write->file->mode == NULL) { feenox_check_alloc(mesh_write->file->mode = strdup("w")); } char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+WRITE_MESH+usage [ MESH ] ///kw_pde+WRITE_MESH+detail If there are several meshes defined by `READ_MESH`, the mesh used to write the ///kw_pde+WRITE_MESH+detail data has be given explicitly with `MESH`. if (strcasecmp(token, "MESH") == 0) { char *mesh_name = NULL; feenox_call(feenox_parser_string(&mesh_name)); if ((mesh_write->mesh = feenox_get_mesh_ptr(mesh_name)) == NULL) { feenox_push_error_message("unknown mesh '%s'", mesh_name); feenox_free(mesh_name); return FEENOX_ERROR; } feenox_free(mesh_name); ///kw_pde+WRITE_MESH+usage [ FILE_FORMAT { gmsh | vtk } ] } else if (strcasecmp(token, "FILE_FORMAT") == 0) { char *keywords[] = {"gmsh", "vtk", ""}; int values[] = {post_format_gmsh, post_format_vtk, 0}; feenox_call(feenox_parser_keywords_ints(keywords, values, (int *)&mesh_write->post_format)); ///kw_pde+WRITE_MESH+usage [ NO_MESH ] ///kw_pde+WRITE_MESH+detail If the `NO_MESH` keyword is given, only the results are written into the ///kw_pde+WRITE_MESH+detail output file without any mesh data. ///kw_pde+WRITE_MESH+detail Depending on the output format, this can be used to avoid repeating data and/or ///kw_pde+WRITE_MESH+detail creating partial output files which can the be latter assembled by post-processing scripts. } else if (strcasecmp(token, "NOMESH") == 0 || strcasecmp(token, "NO_MESH") == 0) { mesh_write->no_mesh = 1; ///kw_pde+WRITE_MESH+usage [ NO_PHYSICAL_NAMES ]@ ///kw_pde+WRITE_MESH+detail When targeting the `.msh` output format, if `NO_PHYSICAL_NAMES` is given then the ///kw_pde+WRITE_MESH+detail section that sets the actual names of the physical entities is not written. ///kw_pde+WRITE_MESH+detail This might be needed in some cases to avoid name clashes when dealing with multiple `.msh` files. } else if (strcasecmp(token, "NO_PHYSICAL_NAMES") == 0) { mesh_write->no_physical_names = 1; ///kw_pde+WRITE_MESH+usage [ NODE | ///kw_pde+WRITE_MESH+detail The output is node-based by default. This can be controlled with both the ///kw_pde+WRITE_MESH+detail `NODE` and `CELL` keywords. All fields that come after a `NODE` (`CELL`) keyword ///kw_pde+WRITE_MESH+detail will be written at the node (cells). These keywords can be used several times ///kw_pde+WRITE_MESH+detail and mixed with fields. For example `CELL k(x,y,z) NODE T sqrt(x^2+y^2) CELL 1+z` will ///kw_pde+WRITE_MESH+detail write the conductivity and the expression $1+z$ as cell-based and the temperature ///kw_pde+WRITE_MESH+detail $T(x,y,z)$ and the expression $\sqrt{x^2+y^2}$ as a node-based fields. } else if (strcasecmp(token, "NODE") == 0 || strcasecmp(token, "NODES") == 0) { mesh_write->field_location = field_location_nodes; ///kw_pde+WRITE_MESH+usage CELL ] } else if (strcasecmp(token, "CELL") == 0 || strcasecmp(token, "CELLS") == 0) { mesh_write->field_location = field_location_cells; feenox.mesh.need_cells = 1; ///kw_pde+WRITE_MESH+detail If a printf-like format specifier starting with `%` is given, ///kw_pde+WRITE_MESH+detail that format is used for the fields that follow. ///kw_pde+WRITE_MESH+detail Make sure the format reads floating-point data, i.e. do not use `%d`. Default is `%g`. ///kw_pde+WRITE_MESH+usage [ ]@ } else if (token[0] == '%') { mesh_write->printf_format = strdup(token); ///kw_pde+WRITE_MESH+detail The data to be written has to be given as a list of fields, ///kw_pde+WRITE_MESH+detail i.e. distributions (such as `k` or `E`), functions of space (such as `T`) ///kw_pde+WRITE_MESH+detail and/or expressions (such as `T(x,y,z)*sqrt(x^2+y^2+z^2)`). ///kw_pde+WRITE_MESH+detail Each field is written as a scalar, unless either the keywords `VECTOR` ///kw_pde+WRITE_MESH+detail or `SYMMETRIC_TENSOR` are given. ///kw_pde+WRITE_MESH+usage [ ] [ ] [...] @ ///kw_pde+WRITE_MESH+detail In the first case, the next three fields following the `VECTOR` keyword ///kw_pde+WRITE_MESH+detail are taken as the vector elements. ///kw_pde+WRITE_MESH+usage [ VECTOR [ NAME ] ] [...] @ ///kw_pde+WRITE_MESH+detail In the latter, the next six fields following the `SYMMETRIC_TENSOR` keyword ///kw_pde+WRITE_MESH+detail are taken as the tensor elements. ///kw_pde+WRITE_MESH+usage [ SYMMETRIC_TENSOR [ NAME ] ] [...] @ } else { unsigned int size = 1; if (strcasecmp(token, "VECTOR") == 0) { size = 3; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected function name"); return FEENOX_ERROR; } } else if (strcasecmp(token, "SYMMETRIC_TENSOR") == 0 || strcasecmp(token, "SYMM_TENSOR") == 0) { size = 6; if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected function name"); return FEENOX_ERROR; } } char *name = NULL; if (strcasecmp(token, "NAME") == 0) { feenox_call(feenox_parser_string(&name)); if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected function name"); return FEENOX_ERROR; } } char **tokens = NULL; feenox_check_alloc(tokens = calloc(size, sizeof(char *))); feenox_check_alloc(tokens[0] = strdup(token)); for (unsigned int i = 1; i < size; i++) { if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected function name"); return FEENOX_ERROR; } feenox_check_alloc(tokens[i] = strdup(token)); } feenox_call(feenox_add_post_field(mesh_write, size, tokens, name, mesh_write->field_location)); for (unsigned int i = 1; i < size; i++) { feenox_free(tokens[i]); } } } // if there's only one mesh, use that one, otherwise ask which one if (mesh_write->mesh == NULL) { if (feenox.mesh.mesh_main == feenox.mesh.meshes) { mesh_write->mesh = feenox.mesh.mesh_main; } else { feenox_push_error_message("do not know what mesh should the post-processing be applied to"); return FEENOX_ERROR; } } if (mesh_write->post_format == post_format_fromextension) { char *ext = mesh_write->file->format + strlen(mesh_write->file->format) - 4; if (strcasecmp(ext, ".msh") == 0) { mesh_write->post_format = post_format_gmsh; } else if (strcasecmp(ext, ".vtu") == 0) { mesh_write->post_format = post_format_vtu; } else if (strcasecmp(ext, ".vtk") == 0) { mesh_write->post_format = post_format_vtk; } else { feenox_push_error_message("unknown extension '%s' and no FORMAT given", ext); return FEENOX_ERROR; } } // TODO: unify writers switch (mesh_write->post_format) { case post_format_gmsh: mesh_write->write_header = feenox_mesh_write_header_gmsh; mesh_write->write_mesh = feenox_mesh_write_mesh_gmsh; mesh_write->write_data = feenox_mesh_write_data_gmsh; break; case post_format_vtu: mesh_write->write_header = feenox_mesh_write_header_vtu; mesh_write->write_mesh = feenox_mesh_write_mesh_vtu; mesh_write->write_data = feenox_mesh_write_data_vtu; mesh_write->write_footer = feenox_mesh_write_footer_vtu; break; case post_format_vtk: mesh_write->write_header = feenox_mesh_write_header_vtk; mesh_write->write_mesh = feenox_mesh_write_mesh_vtk; mesh_write->write_data = feenox_mesh_write_data_vtk; break; default: return FEENOX_ERROR; break; } LL_APPEND(feenox.mesh.mesh_writes, mesh_write); feenox_call(feenox_add_instruction(feenox_instruction_mesh_write, mesh_write)); return FEENOX_OK; } int feenox_parse_write_results(void) { mesh_write_t *mesh_write = NULL; feenox_check_alloc(mesh_write = calloc(1, sizeof(mesh_write_t))); if (feenox.pde.parse_write_results == NULL) { feenox_push_error_message("WRITE_RESULTS not implemented (probably no PROBLEM defined)"); return FEENOX_ERROR; } char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+WRITE_RESULTS+usage [ FORMAT { gmsh | vtu | vtk } ] ///kw_pde+WRITE_RESULTS+detail Default format is `gmsh`. if (strcasecmp(token, "FORMAT") == 0) { char *keywords[] = {"gmsh", "vtu", "vtk", ""}; int values[] = {post_format_gmsh, post_format_vtu, post_format_vtk, 0}; feenox_call(feenox_parser_keywords_ints(keywords, values, (int *)&mesh_write->post_format)); } else if (strcasecmp(token, "FILE") == 0) { ///kw_pde+WRITE_RESULTS+usage [ FILE ]@ ///kw_pde+WRITE_RESULTS+detail If no `FILE` is provided, the output file is the same as the input file replacing the ///kw_pde+WRITE_RESULTS+detail `.fee` extension with the format extension, i.e. `$0.msh`. ///kw_pde+WRITE_RESULTS+detail If there are further optional command line arguments, they are added prepending a dash, ///kw_pde+WRITE_RESULTS+detail i.e. `$0-[$1-[$2...]].msh` ///kw_pde+WRITE_RESULTS+detail Otherwise the given `FILE` is used. ///kw_pde+WRITE_RESULTS+detail If no explicit `FORMAT` is given, the format is read from the `FILE` extension. feenox_call(feenox_parser_file(&mesh_write->file)); if (mesh_write->file->mode == NULL) { feenox_check_alloc(mesh_write->file->mode = strdup("w")); } ///kw_pde+WRITE_RESULTS+usage [ NO_PHYSICAL_NAMES ] ///kw_pde+WRITE_RESULTS+detail When targeting the `.msh` output format, if `NO_PHYSICAL_NAMES` is given then the ///kw_pde+WRITE_RESULTS+detail section that sets the actual names of the physical entities is not written. ///kw_pde+WRITE_RESULTS+detail This might be needed in some cases to avoid name clashes when dealing with multiple `.msh` files. } else if (strcasecmp(token, "NO_PHYSICAL_NAMES") == 0) { mesh_write->no_physical_names = 1; ///kw_pde+WRITE_RESULTS+detail If a printf-like format specifier starting with `%` is given, ///kw_pde+WRITE_RESULTS+detail that format is used for the fields that follow. ///kw_pde+WRITE_RESULTS+detail Make sure the format reads floating-point data, i.e. do not use `%d`. Default is `%g`. ///kw_pde+WRITE_RESULTS+usage [ ]@ } else if (token[0] == '%') { mesh_write->printf_format = strdup(token); } else { feenox.pde.parse_write_results(mesh_write, token); } } // if there's no file, use $0[-$1-[$2-...]] if (mesh_write->file == NULL) { size_t size = 5; // the dot, the extension and 0 for (int i = feenox.optind; i < feenox.argc; i++) { size += strlen(feenox.argv[i])+1; } char *file_path = NULL; feenox_check_alloc(file_path = calloc(size, sizeof(char))); feenox_check_alloc(strcpy(file_path, feenox.argv[feenox.optind])); for (int i = feenox.optind+1; i < feenox.argc; i++) { feenox_check_alloc(strcat(file_path, "-")); feenox_check_alloc(strcat(file_path, feenox.argv[i])); } feenox_check_alloc(strcat(file_path, ".")); feenox_check_alloc(strcat(file_path, (mesh_write->post_format == post_format_vtu) ? "vtu" : ((mesh_write->post_format == post_format_vtk) ? "vtk" : "msh"))); feenox_call(feenox_define_file(file_path, file_path, 0, "w")); if ((mesh_write->file = feenox_get_file_ptr(file_path)) == NULL) { return FEENOX_ERROR; } } // if there's no particular keyword, pass "all" if (mesh_write->mesh_write_dists == NULL) { feenox.pde.parse_write_results(mesh_write, "all"); } // if there's only one mesh, use that one, otherwise ask which one if (mesh_write->mesh == NULL) { if (feenox.mesh.mesh_main == feenox.mesh.meshes) { mesh_write->mesh = feenox.mesh.mesh_main; } else { feenox_push_error_message("do not know what mesh should the post-processing be applied to"); return FEENOX_ERROR; } } if (mesh_write->post_format == post_format_fromextension) { char *ext = mesh_write->file->format + strlen(mesh_write->file->format) - 4; if (strcasecmp(ext, ".msh") == 0) { mesh_write->post_format = post_format_gmsh; } else if (strcasecmp(ext, ".vtu") == 0) { mesh_write->post_format = post_format_vtu; } else if (strcasecmp(ext, ".vtk") == 0) { mesh_write->post_format = post_format_vtk; } else { feenox_push_error_message("unknown extension '%s' and no FORMAT given", ext); return FEENOX_ERROR; } } // TODO: unify writers switch (mesh_write->post_format) { case post_format_gmsh: mesh_write->write_header = feenox_mesh_write_header_gmsh; mesh_write->write_mesh = feenox_mesh_write_mesh_gmsh; mesh_write->write_data = feenox_mesh_write_data_gmsh; break; case post_format_vtu: mesh_write->write_header = feenox_mesh_write_header_vtu; mesh_write->write_mesh = feenox_mesh_write_mesh_vtu; mesh_write->write_data = feenox_mesh_write_data_vtu; mesh_write->write_footer = feenox_mesh_write_footer_vtu; break; case post_format_vtk: mesh_write->write_header = feenox_mesh_write_header_vtk; mesh_write->write_mesh = feenox_mesh_write_mesh_vtk; mesh_write->write_data = feenox_mesh_write_data_vtk; break; default: feenox_push_error_message("unknown post format %d", mesh_write->post_format); return FEENOX_ERROR; break; } LL_APPEND(feenox.mesh.mesh_writes, mesh_write); feenox_call(feenox_add_instruction(feenox_instruction_mesh_write, mesh_write)); return FEENOX_OK; } int feenox_parse_physical_group(void) { ///kw_pde+PHYSICAL_GROUP+detail This keyword should seldom be needed. Most of the times, ///kw_pde+PHYSICAL_GROUP+detail a combination of `MATERIAL` and `BC` ought to be enough for most purposes. ///kw_pde+PHYSICAL_GROUP+usage ///kw_pde+PHYSICAL_GROUP+detail The name of the `PHYSICAL_GROUP` keyword should match the name of the physical group defined within the input file. ///kw_pde+PHYSICAL_GROUP+detail If there is no physical group with the provided name in the mesh, this instruction has no effect. char *name = NULL; feenox_call(feenox_parser_string(&name)); char *token = NULL; char *mesh_name = NULL; char *material_name = NULL; char *bc_name = NULL; unsigned int dimension = -1; unsigned int id = 0; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+PHYSICAL_GROUP+usage [ MESH ] ///kw_pde+PHYSICAL_GROUP+detail If there are many meshes, an explicit mesh can be given with `MESH`. ///kw_pde+PHYSICAL_GROUP+detail Otherwise, the physical group is defined on the main mesh. if (strcasecmp(token, "MESH") == 0) { feenox_call(feenox_parser_string(&mesh_name)); ///kw_pde+PHYSICAL_GROUP+usage [ DIMENSION ] ///kw_pde+PHYSICAL_GROUP+detail An explicit dimension of the physical group can be provided with `DIMENSION`. } else if (strcasecmp(token, "DIMENSION") == 0 || strcasecmp(token, "DIM") == 0) { feenox_call(feenox_parser_expression_in_string_unsigned_integer(&dimension)); ///kw_pde+PHYSICAL_GROUP+usage [ ID ]@ ///kw_pde+PHYSICAL_GROUP+detail An explicit id can be given with `ID`. ///kw_pde+PHYSICAL_GROUP+detail Both dimension and id should match the values in the mesh. } else if (strcasecmp(token, "ID") == 0 || strcasecmp(token, "DIM") == 0) { feenox_call(feenox_parser_expression_in_string_unsigned_integer(&id)); ///kw_pde+PHYSICAL_GROUP+usage [ MATERIAL | ///kw_pde+PHYSICAL_GROUP+detail For volumetric elements, physical groups can be linked to materials using `MATERIAL`. ///kw_pde+PHYSICAL_GROUP+detail Note that if a material is created with the same name as a physical group in the mesh, ///kw_pde+PHYSICAL_GROUP+detail they will be linked automatically, so there is no need to use `PHYSCAL_GROUP` for this. ///kw_pde+PHYSICAL_GROUP+detail The `MATERIAL` keyword in `PHYSICAL_GROUP` is used to link a physical group ///kw_pde+PHYSICAL_GROUP+detail in a mesh file and a material in the feenox input file with different names. ///kw_pde+PHYSICAL_GROUP+detail } else if (strcasecmp(token, "MATERIAL") == 0) { feenox_call(feenox_parser_string(&material_name)); ///kw_pde+PHYSICAL_GROUP+usage | BC [ BC ... ] ]@ } else if (strcasecmp(token, "BC") == 0 || strcasecmp(token, "BOUNDARY_CONDITION") == 0) { ///kw_pde+PHYSICAL_GROUP+detail Likewise, for non-volumetric elements, physical groups can be linked to boundary using `BC`. ///kw_pde+PHYSICAL_GROUP+detail As in the preceding case, if a boundary condition is created with the same name as a physical group in the mesh, ///kw_pde+PHYSICAL_GROUP+detail they will be linked automatically, so there is no need to use `PHYSCAL_GROUP` for this. ///kw_pde+PHYSICAL_GROUP+detail The `BC` keyword in `PHYSICAL_GROUP` is used to link a physical group ///kw_pde+PHYSICAL_GROUP+detail in a mesh file and a boundary condition in the feenox input file with different names. ///kw_pde+PHYSICAL_GROUP+detail Note that while there can be only one `MATERIAL` associated to a physical group, ///kw_pde+PHYSICAL_GROUP+detail there can be many `BC`s associated to a physical group. feenox_call(feenox_parser_string(&bc_name)); } else { feenox_push_error_message("undefined keyword '%s'", token); return FEENOX_ERROR; } } feenox_call(feenox_define_physical_group(name, mesh_name, dimension, id)); if (material_name != NULL) { feenox_call(feenox_physical_group_set_material(name, material_name, NULL)); } // feenox_physical_group_add_bc() feenox_free(bc_name); feenox_free(material_name); feenox_free(mesh_name); feenox_free(name); return FEENOX_OK; } int feenox_parse_material(void) { ///kw_pde+MATERIAL+usage ///kw_pde+MATERIAL+detail If the name of the material matches a physical group in the mesh, it is automatically linked to that physical group. char *material_name = NULL; feenox_call(feenox_parser_string(&material_name)); // we first create the material with a null pointer for the mesh // and then add it if MESH is given, in the api the mesh should be given at creation time material_t *material = feenox_define_material_get_ptr(material_name, NULL); char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+MATERIAL+usage [ MESH ] ///kw_pde+MATERIAL+detail If there are many meshes, the mesh this keyword refers to has to be given with `MESH`. if (strcasecmp(token, "MESH") == 0) { char *mesh_name; feenox_call(feenox_parser_string(&mesh_name)); // we can directly change the mesh here, in the API the mesh would be passed when creating the material if ((material->mesh = feenox_get_mesh_ptr(mesh_name)) == NULL) { feenox_push_error_message("undefined mesh '%s'" , mesh_name); return FEENOX_ERROR; } feenox_free(mesh_name); ///kw_pde+MATERIAL+usage [ LABEL [ LABEL [ ... ] ] ] @ ///kw_pde+MATERIAL+detail If the material applies to more than one physical group in the mesh, they can be ///kw_pde+MATERIAL+detail added using as many `LABEL` keywords as needed. } else if (strcasecmp(token, "LABEL") == 0 ||strcasecmp(token, "PHYSICAL_GROUP") == 0) { char *physical_group_name; feenox_call(feenox_parser_string(&physical_group_name)); physical_group_t *physical_group = NULL; if ((physical_group = feenox_get_or_define_physical_group_get_ptr(physical_group_name, material->mesh, material->mesh->dim_topo, 0)) == NULL) { return FEENOX_ERROR; } // TODO: api physical_group->material = material; feenox_free(physical_group_name); } else { ///kw_pde+MATERIAL+usage [ = [ = [ ... ] ] ] ///kw_pde+MATERIAL+detail The names of the properties in principle can be arbitrary, but each problem type ///kw_pde+MATERIAL+detail needs a minimum set of properties defined with particular names. ///kw_pde+MATERIAL+detail For example, steady-state thermal problems need at least the conductivity which ///kw_pde+MATERIAL+detail should be named\ `k`. If the problem is transient, it will also need ///kw_pde+MATERIAL+detail heat capacity\ `rhocp` or diffusivity\ `alpha`. ///kw_pde+MATERIAL+detail Mechanical problems need Young modulus\ `E` and Poisson’s ratio\ `nu`. ///kw_pde+MATERIAL+detail Modal also needs density\ `rho`. Check the particular documentation for each problem type. ///kw_pde+MATERIAL+detail Besides these mandatory properties, any other one can be defined. ///kw_pde+MATERIAL+detail For instance, if one mandatory property depended on the concentration of boron in the material, ///kw_pde+MATERIAL+detail a new per-material property can be added named `boron` and then the function `boron(x,y,z)` can ///kw_pde+MATERIAL+detail be used in the expression that defines the mandatory property. char *property_name = NULL; char *expr_string = NULL; // now token has something like E=2.1e3 or nu=1/3 char *equal_sign = strchr(token, '='); if (equal_sign == NULL) { feenox_push_error_message("expecting an equal sign in material data '%s' such as 'E=2.1e11'", token); return FEENOX_ERROR; } *equal_sign = '\0'; feenox_check_alloc(property_name = strdup(token)); feenox_check_alloc(expr_string = strdup(equal_sign+1)); feenox_call(feenox_define_property_data(property_name, material_name, expr_string)); feenox_free(expr_string); feenox_free(property_name); } } feenox_free(material_name); return FEENOX_OK; } int feenox_parse_bc_add_group(bc_t *bc, const char *physical_group_name) { physical_group_t *physical_group = NULL; if ((physical_group = feenox_get_or_define_physical_group_get_ptr(physical_group_name, bc->mesh, 0, 0)) == NULL) { return FEENOX_ERROR; } // TODO: api physical_group->n_bcs++; feenox_check_alloc(physical_group->bc = realloc(physical_group->bc, physical_group->n_bcs * sizeof(bc_t *))); physical_group->bc[physical_group->n_bcs-1] = bc; // nice but not needed /* name_item_t *name_item = NULL; feenox_check_alloc(name_item = calloc(1, sizeof(name_item_t))); name_item->name = strdup(physical_group_name); LLq_APPEND(bc->groups, name_item); */ return FEENOX_OK; } int feenox_parse_bc(void) { ///kw_pde+BC+usage ///kw_pde+BC+detail If the name of the boundary condition matches a physical group in the mesh, ///kw_pde+BC+detail and neither `GROUP` nor `GROUPS` are given, it is automatically linked to that physical group. if (feenox.mesh.mesh_main == NULL) { feenox_push_error_message("BC before giving a MESH"); return FEENOX_ERROR; } if (feenox.pde.parse_bc == NULL) { feenox_push_error_message("BC before setting the PROBLEM type"); return FEENOX_ERROR; } char *bc_name = NULL; feenox_call(feenox_parser_string(&bc_name)); // as in material above, we first create the bc with a null pointer for the mesh // and then add it if MESH is given, in the api the mesh should be given at creation time bc_t *bc = feenox_define_bc_get_ptr(bc_name, NULL); char *token = NULL; int has_explicit_groups = 0; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+BC+usage [ MESH ] ///kw_pde+BC+detail If there are many meshes, the mesh this keyword refers to has to be given with `MESH`. if (strcasecmp(token, "MESH") == 0) { char *mesh_name; feenox_call(feenox_parser_string(&mesh_name)); // we can directly change the mesh here, in the API the mesh would be passed when creating the material if ((bc->mesh = feenox_get_mesh_ptr(mesh_name)) == NULL) { feenox_push_error_message("undefined mesh '%s'" , mesh_name); return FEENOX_ERROR; } feenox_free(mesh_name); ///kw_pde+BC+usage [ GROUP GROUP ... ] ///kw_pde+BC+detail If the boundary condition applies to more than one physical group in the mesh, ///kw_pde+BC+detail they can be added using as many `GROUP` keywords as needed. } else if (strcasecmp(token, "GROUP") == 0 || strcasecmp(token, "LABEL") == 0) { has_explicit_groups = 1; char *physical_group_name = NULL; feenox_call(feenox_parser_string(&physical_group_name)); feenox_call(feenox_parse_bc_add_group(bc, physical_group_name)); feenox_free(physical_group_name); } else if (strcasecmp(token, "GROUPS") == 0 || strcasecmp(token, "LABELS") == 0) { has_explicit_groups = 1; while ((token = feenox_get_next_token(NULL)) != NULL) { feenox_call(feenox_parse_bc_add_group(bc, token)); } break; } else { ///kw_pde+BC+usage [ ... ] ///kw_pde+BC+detail Each `` argument is a single string whose meaning depends on the type ///kw_pde+BC+detail of problem being solved. For instance `T=150*sin(x/pi)` prescribes the ///kw_pde+BC+detail temperature to depend on space as the provided expression in a ///kw_pde+BC+detail thermal problem and `fixed` fixes the displacements in all the directions ///kw_pde+BC+detail in a mechanical or modal problem. ///kw_pde+BC+detail See the particular section on boundary conditions for further details. if (feenox_add_bc_data_get_ptr(bc, token) == NULL) { return FEENOX_ERROR; } } ///kw_pde+BC+usage [ GROUPS ... ] ///kw_pde+BC+detail If the keyword `GROUPS` is given, then the rest of the tokens are parsed ///kw_pde+BC+detail as group names where the boundary condition is applied. ///kw_pde+BC+detail If either `GROUP` or `GROUPS` are given explicitly, then the `BC` name ///kw_pde+BC+detail is not used to try to implicitly link it to a physical group in the mesh. } if (has_explicit_groups == 0) { feenox_call(feenox_parse_bc_add_group(bc, bc_name)); } feenox_free(bc_name); return FEENOX_OK; } int feenox_parse_reaction(void) { ///kw_pde+COMPUTE_REACTION+usage if (feenox.mesh.mesh_main == NULL) { feenox_push_error_message("REACTION before giving a MESH"); return FEENOX_ERROR; } if (feenox.pde.parse_bc == NULL) { feenox_push_error_message("REACTION before setting the PROBLEM type"); return FEENOX_ERROR; } reaction_t *reaction = NULL; feenox_check_alloc(reaction = calloc(1, sizeof(reaction_t))); char *group_name = NULL; feenox_call(feenox_parser_string(&group_name)); if ((reaction->physical_group = feenox_get_or_define_physical_group_get_ptr(group_name, feenox.mesh.mesh_main, 0, 0)) == NULL) { return FEENOX_ERROR; } char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+COMPUTE_REACTION+usage [ MOMENT ///kw_pde+COMPUTE_REACTION+detail If the `MOMENT` keyword is not given, the zero-th order reaction is computed, ///kw_pde+COMPUTE_REACTION+detail i.e. force in elasticity and power in thermal. if (strcasecmp(token, "MOMENT") == 0) { reaction->order = 1; ///kw_pde+COMPUTE_REACTION+usage [ X0 ] [ Y0 ] [ Z0 ] ] ///kw_pde+COMPUTE_REACTION+detail If the `MOMENT` keyword is given, then the coordinates of the center ///kw_pde+COMPUTE_REACTION+detail can be given with `X0`, `Y0` and `Z0`. If they are not, the moment is ///kw_pde+COMPUTE_REACTION+detail computed about the barycenter of the physical group. } else if (strcasecmp(token, "X0") == 0 || strcasecmp(token, "Y0") == 0 || strcasecmp(token, "Z0") == 0) { char *expr_string; int dof = token[0]-'X'; feenox_call(feenox_parser_string(&expr_string)); feenox_call(feenox_expression_parse(&reaction->x0[dof], expr_string)); feenox_free(expr_string); ///kw_pde+COMPUTE_REACTION+usage RESULT { | } ///kw_pde+COMPUTE_REACTION+detail The resulting reaction will be stored in the variable (thermal) or vector (elasticity) provided. ///kw_pde+COMPUTE_REACTION+detail If the variable or vector does not exist, it will be created. } else if (strcasecmp(token, "RESULT") == 0) { char *result_name = NULL; feenox_call(feenox_parser_string(&result_name)); // at least one of these will be null reaction->scalar = feenox_get_variable_ptr(result_name); reaction->vector = feenox_get_vector_ptr(result_name); if (reaction->scalar == NULL && reaction->vector == NULL) { // none of them exist, create the appropriate thing if (feenox.pde.dofs == 1) { if ((reaction->scalar = feenox_define_variable_get_ptr(result_name)) == NULL) { return FEENOX_ERROR; } } else { if ((reaction->vector = feenox_define_vector_get_ptr(result_name, feenox.pde.dofs)) == NULL) { return FEENOX_ERROR; } } } else if (reaction->scalar != NULL && feenox.pde.dofs != 1) { feenox_push_error_message("RESULT should pass a vector of size %d not a variable", feenox.pde.dofs); return FEENOX_ERROR; } else if (reaction->vector != NULL && feenox.pde.dofs == 1) { feenox_push_error_message("RESULT should pass a variable not a vector"); return FEENOX_ERROR; } else if (reaction->vector != NULL && feenox.pde.dofs != reaction->vector->size) { feenox_push_error_message("RESULT should pass a vector of size %d not of size %d", feenox.pde.dofs, reaction->vector->size); return FEENOX_ERROR; } free(result_name); } else { feenox_push_error_message("undefined keyword '%s'", token); return FEENOX_ERROR; } } if (reaction->scalar == NULL && reaction->vector == NULL) { feenox_push_error_message("no RESULT given for COMPUTE_REACTION"); return FEENOX_ERROR; } LL_APPEND(feenox.pde.reactions, reaction); feenox_call(feenox_add_instruction(feenox_instruction_reaction, reaction)); return FEENOX_OK; } int feenox_parse_problem(void) { #ifdef HAVE_PETSC if (feenox.pde.petscinit_called == PETSC_TRUE) { feenox_push_error_message("only one PROBLEM keyword allowed"); return FEENOX_ERROR; } char *token = feenox_get_next_token(NULL); feenox_call(feenox_pde_parse_problem_type(token)); if (feenox.pde.parse_problem == NULL) { feenox_push_error_message("unknown PROBLEM type '%s', run with --pdes to see the list", token); return FEENOX_ERROR; } while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+PROBLEM+detail The number of spatial dimensions of the problem needs to be given either ///kw_pde+PROBLEM+detail as `1d`, `2d`, `3d` or after the keyword `DIM`. ///kw_pde+PROBLEM+detail Alternatively, one can define a `MESH` with an explicit `DIMENSIONS` keyword before `PROBLEM`. ///kw_pde+PROBLEM+detail Default is 3D. ///kw_pde+PROBLEM+usage [ 1D | if (strcasecmp(token, "1d") == 0) { feenox.pde.dim = 1; ///kw_pde+PROBLEM+usage 2D | } else if (strcasecmp(token, "2d") == 0) { feenox.pde.dim = 2; ///kw_pde+PROBLEM+usage 3D | } else if (strcasecmp(token, "3d") == 0) { feenox.pde.dim = 3; ///kw_pde+PROBLEM+usage DIM ] } else if (strcasecmp(token, "DIM") == 0 || strcasecmp(token, "DIMENSIONS") == 0) { feenox_call(feenox_parser_expression_in_string_unsigned_integer(&feenox.pde.dim)); if (feenox.pde.dim < 1 || feenox.pde.dim > 3) { feenox_push_error_message("either one, two or three dimensions should be selected instead of '%d'", feenox.pde.dim); return FEENOX_ERROR; } ///kw_pde+PROBLEM+usage [ AXISYMMETRIC { x | y } ] ///kw_pde+PROBLEM+usage @ ///kw_pde+PROBLEM+detail If the `AXISYMMETRIC` keyword is given, the mesh is expected ///kw_pde+PROBLEM+detail to be two-dimensional in the $x$-$y$ plane and the problem ///kw_pde+PROBLEM+detail is assumed to be axi-symmetric around the given axis. } else if (strcasecmp(token, "AXISYMMETRIC") == 0) { char *keywords[] = { "x", "y" }; int values[] = {symmetry_axis_x, symmetry_axis_y, 0}; feenox_call(feenox_parser_keywords_ints(keywords, values, (int *)&feenox.pde.symmetry_axis)); ///kw_pde+PROBLEM+usage [ MESH ] ///kw_pde+PROBLEM+detail If there are more than one `MESH`es defined, the one over which the problem is to be solved ///kw_pde+PROBLEM+detail can be defined by giving the explicit mesh name with `MESH`. By default, the first mesh to be ///kw_pde+PROBLEM+detail defined in the input file with `READ_MESH` (which can be defined after the `PROBLEM` keyword) is the one over which the problem is solved. } else if (strcasecmp(token, "MESH") == 0) { if ((feenox.pde.mesh = feenox_parser_mesh()) == NULL) { return FEENOX_ERROR; } ///kw_pde+PROBLEM+usage [ PROGRESS ] ///kw_pde+PROBLEM+detail If the keyword `PROGRESS` is given, three ASCII lines will show in the terminal the ///kw_pde+PROBLEM+detail progress of the ensamble of the stiffness matrix (or matrices), ///kw_pde+PROBLEM+detail the solution of the system of equations ///kw_pde+PROBLEM+detail and the computation of gradients (stresses, heat fluxes, etc.), if applicable. } else if (strcasecmp(token, "PROGRESS") == 0 || strcasecmp(token, "PROGRESS_ASCII") == 0) { feenox.pde.progress_ascii = PETSC_TRUE; ///kw_pde+PROBLEM+usage [ DO_NOT_DETECT_HANGING_NODES } else if (strcasecmp(token, "DETECT_HANGING_NODES") == 0) { feenox.pde.hanging_nodes = hanging_nodes_nothing; ///kw_pde+PROBLEM+usage | DETECT_HANGING_NODES ///kw_pde+PROBLEM+detail If either `DETECT_HANGING_NODES` or `HANDLE_HANGING_NODES` are given, ///kw_pde+PROBLEM+detail an intermediate check for nodes without any associated elements will be performed. ///kw_pde+PROBLEM+detail For well-behaved meshes this check is redundant so by default it is not done (`DO_NOT_DETEC_HANGING_NODES`). ///kw_pde+PROBLEM+detail With `DETECT_HANGING_NODES`, FeenoX will report the tag of the hanging nodes and stop. } else if (strcasecmp(token, "DETECT_HANGING_NODES") == 0) { feenox.pde.hanging_nodes = hanging_nodes_detect; ///kw_pde+PROBLEM+detail With `HANDLE_HANGING_NODES`, FeenoX will fix those nodes and try to solve the problem anyway. ///kw_pde+PROBLEM+usage | HANDLE_HANGING_NODES ]@ } else if (strcasecmp(token, "HANDLE_HANGING_NODES") == 0) { feenox.pde.hanging_nodes = hanging_nodes_handle; ///kw_pde+PROBLEM+usage [ DETECT_UNRESOLVED_BCS ///kw_pde+PROBLEM+detail By default, FeenoX checks that all physical groups referred to in the `BC` keywords exists (`DETECT_UNRESOLVED_BCS`). } else if (strcasecmp(token, "DETECT_UNRESOLVED_BCS") == 0) { feenox.pde.unresolved_bcs = unresolved_bcs_detect; ///kw_pde+PROBLEM+usage | ALLOW_UNRESOLVED_BCS ]@ ///kw_pde+PROBLEM+detail If `ALLOW_UNRESOLVED_BCS` is given, FeenoX will ignore unresolved boundary conditions instead of complaining. ///kw_pde+PROBLEM+detail This is handy when using the same input for different meshes which might have different groups, for example ///kw_pde+PROBLEM+detail solving the same problem using a full geometry or a symmetric geometry. ///kw_pde+PROBLEM+detail The latter should have at least one symmetry BC whilst the former does not. } else if (strcasecmp(token, "ALLOW_UNRESOLVED_BCS") == 0) { feenox.pde.unresolved_bcs = unresolved_bcs_allow; ///kw_pde+PROBLEM+usage [ PREALLOCATE ] } else if (strcasecmp(token, "PREALLOCATE") == 0) { feenox.pde.pre_allocate = PETSC_TRUE; ///kw_pde+PROBLEM+usage [ ALLOW_NEW_NONZEROS ] } else if (strcasecmp(token, "ALLOW_NEW_NONZEROS") == 0) { feenox.pde.allow_new_nonzeros = PETSC_TRUE; ///kw_pde+PROBLEM+usage [ CACHE_J ] } else if (strcasecmp(token, "CACHE_J") == 0) { feenox.fem.cache_J = 1; ///kw_pde+PROBLEM+usage [ CACHE_B ] } else if (strcasecmp(token, "CACHE_B") == 0) { feenox.fem.cache_J = 1; feenox.fem.cache_B = 1; ///kw_pde+PROBLEM+usage @ ///kw_pde+PROBLEM+detail If the special variable `end_time` is zero, FeenoX solves a static ///kw_pde+PROBLEM+detail problem---although the variable `static_steps` is still honored. ///kw_pde+PROBLEM+detail If `end_time` is non-zero, FeenoX solves a transient or quasi-static problem. ///kw_pde+PROBLEM+detail This can be controlled by `TRANSIENT` or `QUASISTATIC`. ///kw_pde+PROBLEM+usage [ TRANSIENT | } else if (strcasecmp(token, "TRANSIENT") == 0) { feenox.pde.transient_type = transient_type_transient; ///kw_pde+PROBLEM+usage QUASISTATIC ] } else if (strcasecmp(token, "QUASISTATIC") == 0) { feenox.pde.transient_type = transient_type_quasistatic; ///kw_pde+PROBLEM+detail By default FeenoX tries to detect whether the computation should be linear or non-linear. ///kw_pde+PROBLEM+detail An explicit mode can be set with either `LINEAR` on `NON_LINEAR`. ///kw_pde+PROBLEM+usage [ LINEAR } else if (strcasecmp(token, "LINEAR") == 0) { feenox.pde.math_type = math_type_linear; ///kw_pde+PROBLEM+usage | NON_LINEAR ] ///kw_pde+PROBLEM+usage @ } else if (strcasecmp(token, "NON_LINEAR") == 0) { feenox.pde.math_type = math_type_nonlinear; ///kw_pde+PROBLEM+usage [ MODES ] ///kw_pde+PROBLEM+usage @ ///kw_pde+PROBLEM+detail The number of modes to be computed when solving eigenvalue problems is given by `MODES`. ///kw_pde+PROBLEM+detail The default value is problem dependent. } else if (strcasecmp(token, "MODES") == 0) { feenox_call(feenox_parser_expression_in_string_integer(&feenox.pde.nev)); if (feenox.pde.nev < 1) { feenox_push_error_message("a positive number of modes should be given instead of '%d'", feenox.pde.nev); return FEENOX_ERROR; } ///kw_pde+PROBLEM+usage [ PRECONDITIONER { gamg | mumps | lu | hypre | sor | bjacobi | cholesky | ... } ]@ ///kw_pde+PROBLEM+detail The preconditioner (`PC`), linear (`KSP`), non-linear (`SNES`) and time-stepper (`TS`) ///kw_pde+PROBLEM+detail solver types be any of those available in PETSc (first option is the default): ///kw_pde+PROBLEM+detail @ ///kw_pde+PROBLEM+detail * List of `PRECONDITIONER`s . } else if (strcasecmp(token, "PRECONDITIONER") == 0 || strcasecmp(token, "PC") == 0 || strcasecmp(token, "PC_TYPE") == 0) { feenox_call(feenox_parser_string((char **)&feenox.pde.pc_type)); ///kw_pde+PROBLEM+usage [ LINEAR_SOLVER { gmres | mumps | bcgs | bicg | richardson | chebyshev | ... } ]@ ///kw_pde+PROBLEM+detail * List of `LINEAR_SOLVER`s . } else if (strcasecmp(token, "LINEAR_SOLVER") == 0 || strcasecmp(token, "KSP") == 0 || strcasecmp(token, "KSP_TYPE") == 0) { feenox_call(feenox_parser_string((char **)&feenox.pde.ksp_type)); ///kw_pde+PROBLEM+usage [ NONLINEAR_SOLVER { newtonls | newtontr | nrichardson | ngmres | qn | ngs | ... } ]@ ///kw_pde+PROBLEM+detail * List of `NONLINEAR_SOLVER`s . } else if (strcasecmp(token, "NONLINEAR_SOLVER") == 0 || strcasecmp(token, "NON_LINEAR_SOLVER") == 0 || strcasecmp(token, "SNES") == 0 || strcasecmp(token, "SNES_TYPE") == 0) { feenox_call(feenox_parser_string((char **)&feenox.pde.snes_type)); ///kw_pde+PROBLEM+usage [ TRANSIENT_SOLVER { bdf | beuler | arkimex | rosw | glee | ... } ]@ ///kw_pde+PROBLEM+detail * List of `TRANSIENT_SOLVER`s . } else if (strcasecmp(token, "TRANSIENT_SOLVER") == 0 || strcasecmp(token, "TS") == 0 || strcasecmp(token, "TS_TYPE") == 0) { feenox_call(feenox_parser_string((char **)&feenox.pde.ts_type)); ///kw_pde+PROBLEM+usage [ TIME_ADAPTATION { basic | none | dsp | cfl | glee | ... } ]@ ///kw_pde+PROBLEM+detail * List of `TIME_ADAPTATION`s . } else if (strcasecmp(token, "TIME_ADAPTATION") == 0 || strcasecmp(token, "TS_ADAPT") == 0 || strcasecmp(token, "TS_ADAPT_TYPE") == 0) { feenox_call(feenox_parser_string((char **)&feenox.pde.ts_adapt_type)); ///kw_pde+PROBLEM+usage [ EIGEN_SOLVER { krylovschur | lanczos | arnoldi | power | gd | ... } ]@ ///kw_pde+PROBLEM+detail * List of `EIGEN_SOLVER`s . } else if (strcasecmp(token, "EIGEN_SOLVER") == 0 || strcasecmp(token, "EPS") == 0 || strcasecmp(token, "EPS_TYPE") == 0) { #ifdef HAVE_SLEPC feenox_call(feenox_parser_string((char **)&feenox.pde.eps_type)); #else feenox_push_error_message("EIGEN_SOLVER needs SLEPc"); return FEENOX_ERROR; #endif ///kw_pde+PROBLEM+usage [ SPECTRAL_TRANSFORMATION { shift | sinvert | cayley | ... } ]@ ///kw_pde+PROBLEM+detail * List of `SPECTRAL_TRANSFORMATION`s . } else if (strcasecmp(token, "SPECTRAL_TRANSFORMATION") == 0 || strcasecmp(token, "ST") == 0 || strcasecmp(token, "ST_TYPE") == 0) { #ifdef HAVE_SLEPC feenox_call(feenox_parser_string((char **)&feenox.pde.st_type)); #else feenox_push_error_message("SPECTRAL_TRANSFORMATION needs SLEPc"); return FEENOX_ERROR; #endif ///kw_pde+PROBLEM+usage [ EIGEN_FORMULATION { omega | lambda } ]@ ///kw_pde+PROBLEM+detail @ ///kw_pde+PROBLEM+detail If the `EIGEN_FORMULATION` is `omega` then $K \phi = \omega^2 M \phi$ is solved, ///kw_pde+PROBLEM+detail and $M \phi = \lambda K \phi$ if it is `lambda`. ///kw_pde+PROBLEM+detail Default is `lambda`, although some particular PDEs might change it (for example free-free modal switches to `omega`). } else if (strcasecmp(token, "EIGEN_FORMULATION") == 0) { char *keywords[] = {"lambda", "omega", ""}; int values[] = {eigen_formulation_lambda, eigen_formulation_omega, 0}; feenox_call(feenox_parser_keywords_ints(keywords, values, (int *)&feenox.pde.eigen_formulation)); ///kw_pde+PROBLEM+detail The `EIGEN_DIRICHLET_ZERO` keyword controls which of the matrices has a zero and which one ///kw_pde+PROBLEM+detail has a non-zero in the diagonal when setting Dirichlet boundary conditions. ///kw_pde+PROBLEM+detail Default is `M`, i.e. matrix $K$ has a non-zero and matrix $M$ has a zero. ///kw_pde+PROBLEM+detail This setting, along with `EIGEN_FORMULATION` determines which spectral transforms can ///kw_pde+PROBLEM+detail a cannot be used: you cannot invert the matrix with the zero in the diagonal. } else if (strcasecmp(token, "EIGEN_DIRICHLET_ZERO") == 0) { char *keywords[] = {"M", "K", ""}; int values[] = {eigen_dirichlet_zero_M, eigen_dirichlet_zero_K, 0}; feenox_call(feenox_parser_keywords_ints(keywords, values, (int *)&feenox.pde.eigen_dirichlet_zero)); ///kw_pde+PROBLEM+usage [ DIRICHLET_SCALING { absolute | relative } ]@ ///kw_pde+PROBLEM+detail The `DIRICHLET_SCALING` keyword controls the way Dirichlet boundary conditions ///kw_pde+PROBLEM+detail are scaled when computing the residual. Roughly, it defines how to compute ///kw_pde+PROBLEM+detail the parameter\ $\alpha$.^[] ///kw_pde+PROBLEM+detail If `absolute`, then $\alpha$ is equal to the given expression. ///kw_pde+PROBLEM+detail If `relative`, then $\alpha$ is equal to the given fraction of the average diagonal entries in the stiffness matrix. ///kw_pde+PROBLEM+detail Default is\ $\alpha = 1$. } else if (strcasecmp(token, "DIRICHLET_SCALING") == 0) { char *scaling_type = NULL; feenox_call(feenox_parser_string(&scaling_type)); if (strcasecmp(scaling_type, "absolute") == 0) { feenox_call(feenox_parser_expression_in_string(&feenox.pde.dirichlet_scale)); } else if (strcasecmp(scaling_type, "relative") == 0) { feenox_call(feenox_parser_expression_in_string(&feenox.pde.dirichlet_scale_fraction)); } else { feenox_push_error_message("expected either 'absolute' or 'relative' instead '%s'", scaling_type); return FEENOX_ERROR; } } else if (feenox.pde.parse_problem != NULL) { feenox_call(feenox.pde.parse_problem(token)); } else { feenox_push_error_message("undefined keyword '%s'", token); return FEENOX_ERROR; } } // if there is already a mesh, use it if (feenox.pde.mesh == NULL && feenox.mesh.mesh_main != NULL) { feenox.pde.mesh = feenox.mesh.mesh_main; } if (feenox.pde.dim == 0 && feenox.pde.mesh != 0) { feenox.pde.dim = feenox.pde.mesh->dim; } // if we still do not have a dimension, use 3d if (feenox.pde.dim == 0) { feenox.pde.dim = 3; } feenox_call(feenox_problem_parse_time_init()); feenox_call(feenox.pde.parse_problem(NULL)); if (feenox.pde.solution == NULL) { feenox_call(feenox_problem_define_solutions()); } #endif return FEENOX_OK; } int feenox_parse_petsc_options(void) { #ifdef HAVE_PETSC size_t size_current = (feenox.pde.petsc_options == NULL) ? 0 : strlen(feenox.pde.petsc_options); char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+PETSC_OPTIONS+usage "command-line options for PETSc" ///kw_pde+PETSC_OPTIONS+detail Options for PETSc can be passed either in at run time in the command line ///kw_pde+PETSC_OPTIONS+detail (run with `-h` to see how) or they can be set in the input file with `PETSC_OPTIONS`. ///kw_pde+PETSC_OPTIONS+detail This is handy when a particular problem is best suited to be solved using a particular ///kw_pde+PETSC_OPTIONS+detail set of options which can the be embedded into the problem definition. ///kw_pde+PETSC_OPTIONS+detail @ ///kw_pde+PETSC_OPTIONS+detail The string is passed verbatim to PETSc as if the options were set in the command line. ///kw_pde+PETSC_OPTIONS+detail Note that in this case, the string is passed verbatim to PETSc. ///kw_pde+PETSC_OPTIONS+detail This means that they are non-POSIX options but they have to be in the native PETSc format. ///kw_pde+PETSC_OPTIONS+detail That is to say, while in the command line one would give `--ksp_view`, here one has to give `-ksp_view`. ///kw_pde+PETSC_OPTIONS+detail Conversely, instead of `--mg_levels_pc_type=sor` one has to give `-mg_levels_pc_type sor`. size_t size_new = size_current + strlen(token) + 4; feenox_check_alloc(feenox.pde.petsc_options = realloc(feenox.pde.petsc_options, size_new)); feenox.pde.petsc_options[size_current] = '\0'; strcat(feenox.pde.petsc_options, " "); strcat(feenox.pde.petsc_options, token); size_current = size_new; } return FEENOX_OK; #else feenox_push_error_message("FeenoX is not compiled with PETSc so PETSC_OPTIONS cannot be set"); return FEENOX_ERROR; #endif } int feenox_parse_solve_problem(void) { ///kw_pde+SOLVE_PROBLEM+detail Whenever the instruction `SOLVE_PROBLEM` is executed, ///kw_pde+SOLVE_PROBLEM+detail FeenoX solves the PDE problem. ///kw_pde+SOLVE_PROBLEM+detail For static problems, that means solving the equations ///kw_pde+SOLVE_PROBLEM+detail and filling in the result functions. ///kw_pde+SOLVE_PROBLEM+detail For transient or quasisstatic problems, that means ///kw_pde+SOLVE_PROBLEM+detail advancing one time step. if (feenox.pde.instruction != NULL) { feenox_push_error_message("there was already one SOLVE_PROBLEM instruction"); return FEENOX_ERROR; } feenox_check_null(feenox.pde.instruction = feenox_add_instruction_and_get_ptr(&feenox_instruction_solve_problem, NULL)); return FEENOX_OK; } int feenox_parse_integrate(void) { mesh_integrate_t *mesh_integrate = NULL; feenox_check_alloc(mesh_integrate = calloc(1, sizeof(mesh_integrate_t))); ///kw_pde+INTEGRATE+usage { | } ///kw_pde+INTEGRATE+detail Either an expression or a function of space $x$, $y$ and/or $z$ should be given. ///kw_pde+INTEGRATE+detail If the integrand is a function, do not include the arguments, i.e. instead of `f(x,y,z)` just write `f`. ///kw_pde+INTEGRATE+detail The results should be the same but efficiency will be different (faster for pure functions). char *token = feenox_get_next_token(NULL); if ((mesh_integrate->function = feenox_get_function_ptr(token)) == NULL) { feenox_call(feenox_expression_parse(&mesh_integrate->expr, token)); } char *name_mesh = NULL; char *name_physical_group = NULL; char *name_result = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+INTEGRATE+usage [ OVER ] ///kw_pde+INTEGRATE+detail By default the integration is performed over the highest-dimensional elements of the mesh, ///kw_pde+INTEGRATE+detail i.e. over the whole volume, area or length for three, two and one-dimensional meshes, respectively. ///kw_pde+INTEGRATE+detail If the integration is to be carried out over just a physical group, it has to be given in `OVER`. if (strcasecmp(token, "OVER") == 0) { feenox_call(feenox_parser_string(&name_physical_group)); ///kw_pde+INTEGRATE+usage [ MESH ] ///kw_pde+INTEGRATE+detail If there are more than one mesh defined, an explicit one has to be given with `MESH`. } else if (strcasecmp(token, "MESH") == 0) { feenox_call(feenox_parser_string(&name_mesh)); ///kw_pde+INTEGRATE+detail Either `GAUSS` or `CELLS` define how the integration is to be performed. ///kw_pde+INTEGRATE+usage [ GAUSS ///kw_pde+INTEGRATE+detail With `GAUSS` the integration is performed using the Gauss points ///kw_pde+INTEGRATE+detail and weights associated to each element type. } else if (strcasecmp(token, "GAUSS") == 0 || strcasecmp(token, "NODES") == 0) { mesh_integrate->field_location = field_location_gauss; ///kw_pde+INTEGRATE+usage | CELLS ]@ ///kw_pde+INTEGRATE+detail With `CELLS` the integral is computed as the sum of the product of the ///kw_pde+INTEGRATE+detail integrand at the center of each cell (element) and the cell’s volume. ///kw_pde+INTEGRATE+detail Do expect differences in the results and efficiency between these two approaches ///kw_pde+INTEGRATE+detail depending on the nature of the integrand. } else if (strcasecmp(token, "CELLS") == 0) { mesh_integrate->field_location = field_location_cells; feenox.mesh.need_cells = 1; ///kw_pde+INTEGRATE+usage RESULT @ ///kw_pde+INTEGRATE+detail The scalar result of the integration is stored in the variable given by ///kw_pde+INTEGRATE+detail the mandatory keyword `RESULT`. ///kw_pde+INTEGRATE+detail If the variable does not exist, it is created. } else if (strcasecmp(token, "RESULT") == 0) { feenox_call(feenox_parser_string(&name_result)); } else { feenox_push_error_message("unknown keyword '%s'", token); return FEENOX_ERROR; } } if (name_mesh != NULL) { if ((mesh_integrate->mesh = feenox_get_mesh_ptr(name_mesh)) == NULL) { feenox_push_error_message("undefined mesh '%s'" , name_mesh); return FEENOX_ERROR; } feenox_free(name_mesh); } else if ((mesh_integrate->mesh = feenox.mesh.mesh_main) == NULL) { feenox_push_error_message("no mesh defined for INTEGRATE"); return FEENOX_ERROR; } if (name_physical_group != NULL) { if ((mesh_integrate->physical_group = feenox_get_physical_group_ptr(name_physical_group, mesh_integrate->mesh)) == NULL) { if ((mesh_integrate->physical_group = feenox_define_physical_group_get_ptr(name_physical_group, mesh_integrate->mesh, -1, 0)) == NULL) { return FEENOX_ERROR; } } feenox_free(name_physical_group); } if (name_result != NULL) { feenox_check_null(mesh_integrate->result = feenox_get_or_define_variable_get_ptr(name_result)); } else { feenox_push_error_message("RESULT is mandatory for INTEGRATE"); return FEENOX_ERROR; } LL_APPEND(feenox.mesh.integrates, mesh_integrate); feenox_call(feenox_add_instruction(feenox_instruction_mesh_integrate, mesh_integrate)); return FEENOX_OK; } int feenox_parse_find_extrema(void) { mesh_find_extrema_t *mesh_find_extrema = NULL; feenox_check_alloc(mesh_find_extrema = calloc(1, sizeof(mesh_find_extrema_t))); ///kw_pde+FIND_EXTREMA+usage { | } ///kw_pde+FIND_EXTREMA+detail Either an expression or a function of space $x$, $y$ and/or $z$ should be given. char *token = feenox_get_next_token(NULL); if ((mesh_find_extrema->function = feenox_get_function_ptr(token)) == NULL) { feenox_call(feenox_expression_parse(&mesh_find_extrema->expr, token)); } else { mesh_find_extrema->function->used = 1; } char *name_mesh = NULL; char *name_physical_group = NULL; char *name_min = NULL; char *name_max = NULL; char *name_x_min = NULL; char *name_x_max = NULL; char *name_y_min = NULL; char *name_y_max = NULL; char *name_z_min = NULL; char *name_z_max = NULL; char *name_i_min = NULL; char *name_i_max = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+FIND_EXTREMA+usage [ OVER ] ///kw_pde+FIND_EXTREMA+detail By default the search is performed over the highest-dimensional elements of the mesh, ///kw_pde+FIND_EXTREMA+detail i.e. over the whole volume, area or length for three, two and one-dimensional meshes, respectively. ///kw_pde+FIND_EXTREMA+detail If the search is to be carried out over just a physical group, it has to be given in `OVER`. if (strcasecmp(token, "OVER") == 0) { feenox_call(feenox_parser_string(&name_physical_group)); ///kw_pde+FIND_EXTREMA+usage [ MESH ] ///kw_pde+FIND_EXTREMA+detail If there are more than one mesh defined, an explicit one has to be given with `MESH`. } else if (strcasecmp(token, "MESH") == 0) { feenox_call(feenox_parser_string(&name_mesh)); ///kw_pde+FIND_EXTREMA+detail If neither `NODES`, `CELLS` or `GAUSS` is given then the search is ///kw_pde+FIND_EXTREMA+detail performed over the three of them. ///kw_pde+FIND_EXTREMA+usage [ NODES ///kw_pde+FIND_EXTREMA+detail With `NODES` only the function or expression is evalauted at the mesh nodes. } else if (strcasecmp(token, "NODES") == 0) { mesh_find_extrema->field_location = field_location_nodes; ///kw_pde+FIND_EXTREMA+usage | CELLS ///kw_pde+FIND_EXTREMA+detail With `CELLS` only the function or expression is evalauted at the element centers. } else if (strcasecmp(token, "CELLS") == 0) { mesh_find_extrema->field_location = field_location_cells; // feenox.mesh.need_cells = 1; ///kw_pde+FIND_EXTREMA+usage | GAUSS ]@ ///kw_pde+FIND_EXTREMA+detail With `GAUSS` only the function or expression is evalauted at the Gauss points. } else if (strcasecmp(token, "GAUSS") == 0) { mesh_find_extrema->field_location = field_location_gauss; ///kw_pde+FIND_EXTREMA+usage [ MIN ] ///kw_pde+FIND_EXTREMA+detail The value of the absolute minimum (maximum) is stored in the variable indicated by `MIN` (`MAX`). ///kw_pde+FIND_EXTREMA+detail If the variable does not exist, it is created. } else if (strcasecmp(token, "MIN") == 0) { feenox_call(feenox_parser_string(&name_min)); ///kw_pde+FIND_EXTREMA+usage [ MAX ] } else if (strcasecmp(token, "MAX") == 0) { feenox_call(feenox_parser_string(&name_max)); ///kw_pde+FIND_EXTREMA+usage [ X_MIN ] ///kw_pde+FIND_EXTREMA+detail The value of the $x$-$y$-$z$\ coordinate of the absolute minimum (maximum) ///kw_pde+FIND_EXTREMA+detail is stored in the variable indicated by `X_MIN`-`Y_MIN`-`Z_MIN` (`X_MAX`-`Y_MAX`-`Z_MAX`). ///kw_pde+FIND_EXTREMA+detail If the variable does not exist, it is created. } else if (strcasecmp(token, "X_MIN") == 0) { feenox_call(feenox_parser_string(&name_x_min)); ///kw_pde+FIND_EXTREMA+usage [ X_MAX ] } else if (strcasecmp(token, "X_MAX") == 0) { feenox_call(feenox_parser_string(&name_x_max)); ///kw_pde+FIND_EXTREMA+usage [ Y_MIN ] } else if (strcasecmp(token, "Y_MIN") == 0) { feenox_call(feenox_parser_string(&name_y_min)); ///kw_pde+FIND_EXTREMA+usage [ Y_MAX ] } else if (strcasecmp(token, "Y_MAX") == 0) { feenox_call(feenox_parser_string(&name_y_max)); ///kw_pde+FIND_EXTREMA+usage [ Z_MIN ] } else if (strcasecmp(token, "Z_MIN") == 0) { feenox_call(feenox_parser_string(&name_z_min)); ///kw_pde+FIND_EXTREMA+usage [ Z_MAX ] } else if (strcasecmp(token, "Z_MAX") == 0) { feenox_call(feenox_parser_string(&name_z_max)); ///kw_pde+FIND_EXTREMA+usage [ I_MIN ] ///kw_pde+FIND_EXTREMA+detail The index (either node or cell) where the absolute minimum (maximum) is found ///kw_pde+FIND_EXTREMA+detail is stored in the variable indicated by `I_MIN` (`I_MAX`). } else if (strcasecmp(token, "I_MIN") == 0) { feenox_call(feenox_parser_string(&name_i_min)); ///kw_pde+FIND_EXTREMA+usage [ I_MAX ] } else if (strcasecmp(token, "I_MAX") == 0) { feenox_call(feenox_parser_string(&name_i_max)); } else { feenox_push_error_message("unknown keyword '%s'", token); return FEENOX_ERROR; } } if (name_mesh != NULL) { if ((mesh_find_extrema->mesh = feenox_get_mesh_ptr(name_mesh)) == NULL) { feenox_push_error_message("undefined mesh '%s'" , name_mesh); return FEENOX_ERROR; } feenox_free(name_mesh); } else if ((mesh_find_extrema->mesh = feenox.mesh.mesh_main) == NULL) { feenox_push_error_message("no mesh defined for FIND_EXTREMA"); return FEENOX_ERROR; } if (name_physical_group != NULL) { if ((mesh_find_extrema->physical_group = feenox_get_physical_group_ptr(name_physical_group, mesh_find_extrema->mesh)) == NULL) { if ((mesh_find_extrema->physical_group = feenox_define_physical_group_get_ptr(name_physical_group, mesh_find_extrema->mesh, -1, 0)) == NULL) { return FEENOX_ERROR; } } feenox_free(name_physical_group); } if (name_min != NULL) { mesh_find_extrema->min = feenox_get_or_define_variable_get_ptr(name_min); } if (name_max != NULL) { mesh_find_extrema->max = feenox_get_or_define_variable_get_ptr(name_max); } if (name_x_min != NULL) { mesh_find_extrema->x_min = feenox_get_or_define_variable_get_ptr(name_x_min); } if (name_x_max != NULL) { mesh_find_extrema->x_max = feenox_get_or_define_variable_get_ptr(name_x_max); } if (name_y_min != NULL) { mesh_find_extrema->y_min = feenox_get_or_define_variable_get_ptr(name_y_min); } if (name_y_max != NULL) { mesh_find_extrema->y_max = feenox_get_or_define_variable_get_ptr(name_y_max); } if (name_z_min != NULL) { mesh_find_extrema->z_min = feenox_get_or_define_variable_get_ptr(name_z_min); } if (name_z_max != NULL) { mesh_find_extrema->z_max = feenox_get_or_define_variable_get_ptr(name_z_max); } if (name_i_min != NULL) { mesh_find_extrema->i_min = feenox_get_or_define_variable_get_ptr(name_i_min); } if (name_i_max != NULL) { mesh_find_extrema->i_max = feenox_get_or_define_variable_get_ptr(name_i_max); } LL_APPEND(feenox.mesh.find_extremas, mesh_find_extrema); feenox_call(feenox_add_instruction(feenox_instruction_mesh_find_extrema, mesh_find_extrema)); return FEENOX_OK; } int feenox_parse_fit(void) { ///kw+FIT+detail The function with the data has to be point-wise defined ///kw+FIT+detail (i.e. a `FUNCTION` read from a file, with inline `DATA` or defined over a mesh). ///kw+FIT+detail The function to be fitted has to be parametrized with at least one of ///kw+FIT+detail the variables provided after the `USING` keyword. ///kw+FIT+detail For example to fit\ $f(x,y)=a x^2 + b sqrt(y)$ to a pointwise-defined ///kw+FIT+detail function\ $g(x,y)$ one gives `FIT f TO g VIA a b`. ///kw+FIT+detail Only the names of the functions have to be given, not the arguments. ///kw+FIT+detail Both functions have to have the same number of arguments. fit_t *fit = NULL; feenox_check_alloc(fit = calloc(1, sizeof(fit_t))); ///kw+FIT+usage // the function whose parameters we are going to fit, i.e. f(x,y) above char *name_function = NULL; feenox_call(feenox_parser_string(&name_function)); ///kw+FIT+usage TO char *dummy = NULL; feenox_call(feenox_parser_string(&dummy)); if (strcasecmp(dummy, "TO") != 0) { feenox_push_error_message("expected keyword 'TO' instead of '%s'", dummy); } feenox_free(dummy); ///kw+FIT+usage char *name_data = NULL; feenox_call(feenox_parser_string(&name_data)); if ((fit->function = feenox_get_function_ptr(name_function)) == NULL) { if (strchr(name_function, '(') != NULL) { feenox_push_error_message("function '%s' undefined (only the function name is to be provided, do not include its arguments)", name_function); } else { feenox_push_error_message("function '%s' undefined", name_function); } return FEENOX_ERROR; } if (fit->function->algebraic_expression.items == NULL) { feenox_push_error_message("function '%s' has to be algebraically defined", fit->function->name); return FEENOX_ERROR; } if ((fit->data = feenox_get_function_ptr(name_data)) == NULL) { if (strchr(name_data, '(') != NULL) { feenox_push_error_message("function '%s' undefined (only the function name is to be provided, do not include its arguments)", name_data); } else { feenox_push_error_message("function '%s' undefined", name_data); } return FEENOX_ERROR; } if (fit->function->n_arguments != fit->data->n_arguments) { feenox_push_error_message("function '%s' has %d arguments and '%s' has %d", fit->function->name, fit->function->n_arguments, fit->data->name, fit->data->n_arguments); return FEENOX_ERROR; } if ((fit->n_data = fit->data->data_size) == 0) { if (fit->data->algebraic_expression.items != NULL) { feenox_push_error_message("function '%s' has to be point-wise defined", fit->data->name); return FEENOX_ERROR; } } ///kw+FIT+usage VIA ///kw+FIT+detail The initial guess of the solution is given by the initial value of the variables after the `VIA` keyword. var_ll_t *var_list = NULL; feenox_call(feenox_parser_string(&dummy)); if (strcasecmp(dummy, "VIA") != 0) { feenox_push_error_message("expected keyword 'VIA' instead of '%s'", dummy); } feenox_free(dummy); ///kw+FIT+usage ... @ char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { // TODO: convergencia por gradiente, incertezas, covarianza, incrementos para gradiente automatico ///kw+FIT+usage [ GRADIENT ... ]@ ///kw+FIT+detail Analytical expressions for the gradient of the function to be fitted with respect ///kw+FIT+detail to the parameters to be fitted can be optionally given with the `GRADIENT` keyword. ///kw+FIT+detail If none is provided, the gradient will be computed numerically using finite differences. if (strcasecmp(token, "GRADIENT") == 0) { if (fit->n_via == 0) { feenox_push_error_message("GRADIENT keyword before parameters"); return FEENOX_ERROR; } feenox_check_alloc(fit->gradient = calloc(fit->n_via, sizeof(expr_t))); unsigned int i = 0; for (i = 0; i < fit->n_via; i++) { if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected an expression"); return FEENOX_ERROR; } feenox_call(feenox_expression_parse(&fit->gradient[i], token)); } ///kw+FIT+usage [ RANGE_MIN ... ]@ ///kw+FIT+detail A range over which the residuals are to be minimized can be given with `RANGE_MIN` and `RANGE_MAX`. ///kw+FIT+detail The expressions give the range of the arguments of the functions, not of the parameters. ///kw+FIT+detail For multidimensional fits, the range is an hypercube. ///kw+FIT+detail If no range is given, all the definition points of the function with the data are used for the fit. } else if (strcasecmp(token, "RANGE_MIN") == 0) { feenox_call(feenox_parser_expressions(&fit->range.min, fit->data->n_arguments)); ///kw+FIT+usage [ RANGE_MAX ... ]@ } else if (strcasecmp(token, "RANGE_MAX") == 0) { feenox_call(feenox_parser_expressions(&fit->range.max, fit->data->n_arguments)); ///kw+FIT+usage [ TOL_REL ] ///kw+FIT+detail Convergence can be controlled by giving the relative and absolute tolreances with ///kw+FIT+detail `TOL_REL` (default `DEFAULT_NLIN_FIT_EPSREL`) and `TOL_ABS` (default `DEFAULT_NLIN_FIT_EPSABS`), ///kw+FIT+detail and with the maximum number of iterations `MAX_ITER` (default DEFAULT_NLIN_FIT_MAX_ITER). /* } else if (strcasecmp(token, "TOL_REL") == 0) { feenox_call(feenox_parser_expression(&fit->tol_rel)); */ ///kw+FIT+usage [ TOL_ABS ] /* } else if (strcasecmp(token, "TOL_ABS") == 0) { feenox_call(feenox_parser_expression(&fit->tol_abs)); */ ///kw+FIT+usage [ MAX_ITER ]@ } else if (strcasecmp(token, "MAX_ITER") == 0) { feenox_call(feenox_parser_expression_in_string_unsigned_integer(&fit->max_iter)); if (fit->max_iter < 0) { feenox_push_error_message("expected a positive integer for MAX_ITER"); return FEENOX_ERROR; } ///kw+FIT+usage [ VERBOSE ] } else if (strcasecmp(token, "VERBOSE") == 0) { ///kw+FIT+detail If the optional keyword `VERBOSE` is given, some data of the intermediate steps is written in the standard output. fit->verbose = 1; } else { var_ll_t *var_item = NULL; feenox_check_alloc(var_item = calloc(1, sizeof(var_ll_t))); if ((var_item->var = feenox_get_variable_ptr(token)) == NULL) { feenox_push_error_message("unknown variable '%s'", token); return FEENOX_ERROR; } LL_APPEND(var_list, var_item); fit->n_via++; } } if (fit->n_via == 0) { feenox_push_error_message("no fit parameters given"); return FEENOX_ERROR; } feenox_check_alloc(fit->via = calloc(fit->n_via, sizeof(var_t *))); feenox_check_alloc(fit->sigma = calloc(fit->n_via, sizeof(var_t *))); var_ll_t *var_item = var_list; unsigned int i = 0; for (i = 0; i < fit->n_via; i++) { fit->via[i] = var_item->var; char *name = NULL; feenox_check_minusone(asprintf(&name, "sigma_%s", var_item->var->name)); feenox_check_alloc(fit->sigma[i] = feenox_define_variable_get_ptr(name)); if ((var_item = var_item->next) == NULL && i != (fit->n_via-1)) { feenox_push_error_message("internal mismatch in number of fit parameter %d", i); return FEENOX_ERROR; } } // TODO: choose if (fit->max_iter == 0) { fit->max_iter = DEFAULT_FIT_MAX_ITER; } // TODO: cleanup var_list // TODO: add instruction LL_APPEND(feenox.fits, fit); feenox_call(feenox_add_instruction(feenox_instruction_fit, fit)); return FEENOX_OK; } int feenox_parse_dump(void) { dump_t *dump = NULL; feenox_check_alloc(dump = calloc(1, sizeof(dump_t))); char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw_pde+DUMP+usage [ FORMAT { binary | ascii | octave } ] if (strcasecmp(token, "FORMAT") == 0) { char *keywords[] = { "default", "binary", "ascii", "octave", ""}; int values[] = {dump_format_default, dump_format_binary, dump_format_ascii, dump_format_octave, 0}; feenox_call(feenox_parser_keywords_ints(keywords, values, (int *)(&dump->format))); ///kw_pde+DUMP+usage [ K | } if (strcasecmp(token, "K") == 0) { dump->K = 1; ///kw_pde+DUMP+usage K_bc | } else if (strcasecmp(token, "K_bc") == 0) { dump->K_bc = 1; ///kw_pde+DUMP+usage b | } else if (strcasecmp(token, "b") == 0) { dump->b = 1; ///kw_pde+DUMP+usage b_bc | } else if (strcasecmp(token, "b_bc") == 0) { dump->b_bc = 1; ///kw_pde+DUMP+usage M | } else if (strcasecmp(token, "M") == 0) { dump->M = 1; ///kw_pde+DUMP+usage M_bc | } else if (strcasecmp(token, "M_bc") == 0) { dump->M_bc = 1; } } LL_APPEND(feenox.pde.dumps, dump); feenox_call(feenox_add_instruction(feenox_instruction_dump, dump)); return FEENOX_OK; } int feenox_parse_solve(void) { solve_t *solve = NULL; feenox_check_alloc(solve = calloc(1, sizeof(solve_t))); size_t n_equations = 0; char *token = NULL; while ((token = feenox_get_next_token(NULL)) != NULL) { ///kw+SOLVE+usage FOR if (strcasecmp(token, "FOR") == 0) { feenox_call(feenox_parser_expression_in_string_sizet(&solve->n_unknowns)); if (solve->n_unknowns <= 0) { feenox_push_error_message("expected a positive number of unknowns instead of %d", solve->n_unknowns); return FEENOX_ERROR; } feenox_check_alloc(solve->unknown = calloc(solve->n_unknowns, sizeof(var_t *))); feenox_check_alloc(solve->residual = calloc(solve->n_unknowns, sizeof(expr_t))); ///kw+SOLVE+usage UNKNOWNS ... } else if (strcasecmp(token, "UNKNOWNS") == 0) { if (solve->n_unknowns == 0) { feenox_push_error_message("FOR should become before UNKNOWNS"); return FEENOX_ERROR; } for (unsigned int i = 0; i < solve->n_unknowns; i++) { if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected %d variables and found only %d", solve->n_unknowns, i); } if ((solve->unknown[i] = feenox_get_or_define_variable_get_ptr(token)) == NULL) { return FEENOX_ERROR; } } ///kw+SOLVE+usage [ METHOD } else if (strcasecmp(token, "METHOD") == 0) { if ((token = feenox_get_next_token(NULL)) == NULL) { feenox_push_error_message("expected method name"); return FEENOX_ERROR; } ///kw+SOLVE+usage { ///kw+SOLVE+usage dnewton | if (strcasecmp(token, "dnewton") == 0) { solve->type = gsl_multiroot_fsolver_dnewton; ///kw+SOLVE+usage hybrid | } else if (strcasecmp(token, "hybrid") == 0) { solve->type = gsl_multiroot_fsolver_hybrid; ///kw+SOLVE+usage hybrids | } else if (strcasecmp(token, "hybrids") == 0) { solve->type = gsl_multiroot_fsolver_hybrids; ///kw+SOLVE+usage broyden } } else if (strcasecmp(token, "broyden") == 0) { solve->type = gsl_multiroot_fsolver_hybrid; ///kw+SOLVE+usage ]@ } ///kw+SOLVE+usage [ EPSABS ] } else if (strcasecmp(token, "EPSABS") == 0) { feenox_call(feenox_parser_expression(&solve->epsabs)); ///kw+SOLVE+usage [ EPSREL ] } else if (strcasecmp(token, "EPSREL") == 0) { feenox_call(feenox_parser_expression(&solve->epsrel)); ///kw+SOLVE+usage [ MAX_ITER ] } else if (strcasecmp(token, "MAX_ITER") == 0) { feenox_call(feenox_parser_expression_in_string_integer(&solve->max_iter)); if (solve->max_iter < 0) { feenox_push_error_message("expected a positive integer for MAX_ITER"); return FEENOX_ERROR; } //kw+SOLVE+usage [ VERBOSE ]@ } else if (strcasecmp(token, "VERBOSE") == 0) { solve->verbose = 1; } else { //kw+SOLVE+usage ... if (solve->n_unknowns == 0) { feenox_push_error_message("FOR should become before the equations"); return FEENOX_ERROR; } if (n_equations == solve->n_unknowns) { feenox_push_error_message("more equations than unknowns"); return FEENOX_ERROR; } char *equal_sign = strchr(token, '='); if (equal_sign == NULL) { // no equal sign means residual (equal to zero) feenox_call(feenox_expression_parse(&solve->residual[n_equations++], token)); } else { *equal_sign = '\0'; char *residual = NULL; feenox_check_minusone(asprintf(&residual, "(%s)-(%s)", token, equal_sign+1)); feenox_call(feenox_expression_parse(&solve->residual[n_equations++], residual)); feenox_free(residual); } } } if (solve->n_unknowns == 0) { feenox_push_error_message("do not know the number of unknowns"); return FEENOX_ERROR; } if (n_equations == 0) { feenox_push_error_message("no equations to solve"); return FEENOX_ERROR; } if (n_equations < solve->n_unknowns) { feenox_push_error_message("less equations (%ld) than unknowns (%ld)", n_equations, solve->n_unknowns); return FEENOX_ERROR; } if (solve->type == NULL) { solve->type = DEFAULT_SOLVE_METHOD; } feenox_call(feenox_add_instruction(feenox_instruction_solve, solve)); LL_APPEND(feenox.solves, solve); return FEENOX_OK; } mesh_t *feenox_parser_mesh(void) { char *mesh_name = NULL; feenox_call_null(feenox_parser_string(&mesh_name)); mesh_t *mesh = NULL; if ((mesh = feenox_get_mesh_ptr(mesh_name)) == NULL) { feenox_push_error_message("unknown mesh '%s'", mesh_name); feenox_free(mesh_name); return NULL; } feenox_free(mesh_name); return mesh; } feenox-1.1/src/parser/parser.h0000644000175000017500000001142114773607165013327 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX parser header * * Copyright (C) 2009--2021 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #ifndef FEENOX_PARSER_H #define FEENOX_PARSER_H // token delimiters #define UNQUOTED_DELIM " \t\n" #define QUOTED_DELIM "\"" extern const char operators[]; extern const char factorseparators[]; typedef struct feenox_parser_t feenox_parser_t; struct feenox_parser_t { size_t page_size; size_t actual_buffer_size; int implicit_none; int reading_daes; int inside_yaml; char *line; char *full_line; // strtok breaks line so we keep a copy with the full one // this is a pointer to an internal buffer to have "memory" for strtoken // so we can parse stuff between quotation marks as a single token char *strtok_internal; conditional_block_t *active_conditional_block; }; extern feenox_parser_t feenox_parser; // parser.c extern int feenox_parse_input_file(const char *filepath, int from, int to); extern int feenox_parse_line(void); extern mesh_t *feenox_parser_mesh(void); // auxiliary.c extern int feenox_read_line(FILE *file_ptr); extern char *feenox_get_next_token(char *line); extern int feenox_parser_string(char **string); extern int feenox_parser_expression(expr_t *expr); extern int feenox_parser_expressions(expr_t *expr[], size_t n); extern int feenox_parser_expression_in_string(double *result); extern int feenox_parser_expression_in_string_integer(int *result); extern int feenox_parser_expression_in_string_unsigned_integer(unsigned int *result); extern int feenox_parser_expression_in_string_sizet(size_t *result); extern int feenox_parser_string_format(char **string, int *n_args); extern int feenox_add_function_from_string(const char *string, char **name); extern int feenox_add_post_field(mesh_write_t *mesh_write, unsigned int size, char **token, const char *name, field_location_t location); extern int feenox_parser_file(file_t **file); extern int feenox_parser_vector(vector_t **vector); extern int feenox_parser_variable(var_t **var); extern int feenox_parser_get_or_define_variable(var_t **var); extern int feenox_parser_keywords_ints(char *keyword[], int *value, int *option); extern int feenox_parser_match_keyword_expression(char *token, char *keyword[], expr_t *expr[], size_t n); extern int feenox_parse_include(void); extern int feenox_parse_default_argument_value(void); extern int feenox_parse_abort(void); extern int feenox_parse_implicit(void); extern int feenox_parse_time_path(void); extern int feenox_parse_initial_conditions(void); extern int feenox_parse_variables(void); extern int feenox_parse_alias(void); extern int feenox_parse_vector(void); extern int feenox_parse_matrix(void); extern int feenox_parse_function(void); extern int feenox_parse_function_data(function_t *function); extern int feenox_parse_function_vectors(function_t *function); extern int feenox_parse_function_mesh(function_t *function); extern int feenox_parse_sort_vector(void); extern int feenox_parse_file(char *mode); extern int feenox_parse_open_close(const char *what); extern int feenox_parse_print(void); extern int feenox_parse_printf(int all_ranks); extern int feenox_parse_print_function(void); extern int feenox_parse_print_vector(void); extern int feenox_parse_if(void); extern int feenox_parse_else(void); extern int feenox_parse_endif(void); extern int feenox_parse_phase_space(void); extern int feenox_parse_read_mesh(void); extern int feenox_parse_write_mesh(void); extern int feenox_parse_write_results(void); extern int feenox_parse_physical_group(void); extern int feenox_parse_material(void); extern int feenox_parse_bc_add_group(bc_t *bc, const char *physical_group_name); extern int feenox_parse_bc(void); extern int feenox_parse_reaction(void); extern int feenox_parse_problem(void); extern int feenox_parse_petsc_options(void); extern int feenox_parse_solve_problem(void); extern int feenox_parse_integrate(void); extern int feenox_parse_find_extrema(void); extern int feenox_parse_fit(void); extern int feenox_parse_dump(void); extern int feenox_parse_solve(void); #endif feenox-1.1/src/mesh/0000755000175000017500000000000014773607300011372 500000000000000feenox-1.1/src/mesh/vtu.c0000644000175000017500000001322614773607165012311 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related vtu routines * * Copyright (C) 2025 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" int feenox_mesh_write_header_vtu(mesh_t *mesh, FILE *fp) { fprintf(fp, "\n"); fprintf(fp, "\n"); fprintf(fp, " \n"); if (mesh->n_cells == 0) { feenox_call(feenox_mesh_element2cell(mesh)); } fprintf(fp, " \n", mesh->n_nodes, mesh->n_cells); return FEENOX_OK; } int feenox_mesh_write_footer_vtu(mesh_write_t *this) { if (this->point_init == 1) { fprintf(this->file->pointer, " \n"); } else { fprintf(this->file->pointer, " \n"); } fprintf(this->file->pointer, " \n"); fprintf(this->file->pointer, " \n"); fprintf(this->file->pointer, "\n"); return FEENOX_OK; } // Write mesh geometry and topology int feenox_mesh_write_mesh_vtu(mesh_t *mesh, FILE *file, int dummy) { // Points fprintf(file, " \n"); fprintf(file, " \n"); for (size_t j = 0; j < mesh->n_nodes; j++) { for (int d = 0; d < 3; d++) { fprintf(file, " %.6g", mesh->node[j].x[d]); } fprintf(file, "\n"); } fprintf(file, " \n"); fprintf(file, " \n"); // Cells fprintf(file, " \n"); fprintf(file, " \n"); feenox_mesh_write_vtk_cells(mesh, file, 0); fprintf(file, " \n"); fprintf(file, " \n"); size_t current_offset = 0; for (size_t i = 0; i < mesh->n_elements; i++) { if (mesh->element[i].type->dim == mesh->dim_topo) { current_offset += mesh->element[i].type->nodes; fprintf(file, "%ld\n", current_offset); } } fprintf(file, " \n"); fprintf(file, " \n"); feenox_mesh_write_vtk_types(mesh, file); fprintf(file, " \n"); // write_data_array_ascii(fp, "types", "UInt8", types, mesh->n_elements, 1); fprintf(file, " \n"); return FEENOX_OK; } int feenox_mesh_write_data_vtu(mesh_write_t *this, mesh_write_dist_t *dist) { if (dist->field_location == field_location_cells) { if (this->cell_init == 0) { if (this->point_init == 1) { fprintf(this->file->pointer, " \n"); } fprintf(this->file->pointer, " \n"); this->cell_init = 1; this->point_init = 0; } } else { if (this->point_init == 0) { if (this->cell_init == 1) { fprintf(this->file->pointer, " \n"); } fprintf(this->file->pointer, " \n"); this->point_init = 1; this->cell_init = 0; } } // custom printf format char *format = NULL; if (dist->printf_format == NULL) { feenox_check_alloc(format = strdup(" %g")); } else { if (dist->printf_format[0] == '%') { feenox_check_minusone(asprintf(&format, " %s", dist->printf_format)); } else { feenox_check_minusone(asprintf(&format, " %%%s", dist->printf_format)); } } fprintf(this->file->pointer, " \n", dist->name, dist->size); // TODO: virtual methods if (dist->field_location == field_location_cells) { for (size_t i = 0; i < this->mesh->n_cells; i++) { for (int g = 0; g < dist->size; g++) { // TODO: remove the conditional from the loop double value = (dist->field[g]->type == function_type_pointwise_mesh_cell && dist->field[g]->mesh == this->mesh) ? feenox_vector_get(dist->field[g]->vector_value, i) : feenox_function_eval(dist->field[g], this->mesh->cell[i].x); fprintf(this->file->pointer, format, value); } fprintf(this->file->pointer, "\n"); } } else { for (size_t j = 0; j < this->mesh->n_nodes; j++) { for (int g = 0; g < dist->size; g++) { // TODO: remove the conditional from the loop double value = (dist->field[g]->type == function_type_pointwise_mesh_node && dist->field[g]->mesh == this->mesh) ? feenox_vector_get(dist->field[g]->vector_value, j) : feenox_function_eval(dist->field[g], this->mesh->node[j].x); fprintf(this->file->pointer, format, value); } fprintf(this->file->pointer, "\n"); } } fprintf(this->file->pointer, " \n"); fflush(this->file->pointer); feenox_free(format); return FEENOX_OK; } feenox-1.1/src/mesh/element.c0000644000175000017500000005122514773607165013125 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX's mesh-related element routines * * Copyright (C) 2015--2021 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" #include "element.h" /* Line: Line3: Line4: 0----------1 --> u 0-----2----1 0----2----3----1 Triangle: Triangle6: Triangle9/10: Triangle12/15: v ^ 2 | | \ 2 2 2 9 8 |`\ |`\ | \ | \ | `\ | `\ 7 6 10 (14) 7 | `\ 5 `4 | \ | \ | `\ | `\ 8 (9) 5 11 (12) (13) 6 | `\ | `\ | \ | \ 0----------1 --> u 0-----3----1 0---3---4---1 0---3---4---5---1 Quadrangle: Quadrangle8: Quadrangle9: v ^ | 3-----------2 3-----6-----2 3-----6-----2 | | | | | | | | | | | | | | | +---- | --> u 7 5 7 8 5 | | | | | | | | | | | | 0-----------1 0-----4-----1 0-----4-----1 Tetrahedron: Tetrahedron10: v . ,/ / 2 2 ,/|`\ ,/|`\ ,/ | `\ ,/ | `\ ,/ '. `\ ,6 '. `5 ,/ | `\ ,/ 8 `\ ,/ | `\ ,/ | `\ 0-----------'.--------1 --> u 0--------4--'.--------1 `\. | ,/ `\. | ,/ `\. | ,/ `\. | ,9 `\. '. ,/ `7. '. ,/ `\. |/ `\. |/ `3 `3 `\. ` w Hexahedron: Hexahedron20: Hexahedron27: v 3----------2 3----13----2 3----13----2 |\ ^ |\ |\ |\ |\ |\ | \ | | \ | 15 | 14 |15 24 | 14 | \ | | \ 9 \ 11 \ 9 \ 20 11 \ | 7------+---6 | 7----19+---6 | 7----19+---6 | | +-- |-- | -> u | | | | |22 | 26 | 23| 0---+---\--1 | 0---+-8----1 | 0---+-8----1 | \ | \ \ | \ 17 \ 18 \ 17 25 \ 18 \ | \ \ | 10 | 12| 10 | 21 12| \| w \| \| \| \| \| 4----------5 4----16----5 4----16----5 Prism: Prism15: Prism18: w ^ | 3 3 3 ,/|`\ ,/|`\ ,/|`\ ,/ | `\ 12 | 13 12 | 13 ,/ | `\ ,/ | `\ ,/ | `\ 4------+------5 4------14-----5 4------14-----5 | | | | 8 | | 8 | | ,/|`\ | | | | | ,/|`\ | | ,/ | `\ | | | | | 15 | 16 | |,/ | `\| | | | |,/ | `\| ,| | |\ 10 | 11 10-----17-----11 ,/ | 0 | `\ | 0 | | 0 | u | ,/ `\ | v | ,/ `\ | | ,/ `\ | | ,/ `\ | | ,6 `7 | | ,6 `7 | |,/ `\| |,/ `\| |,/ `\| 1-------------2 1------9------2 1------9------2 Pyramid: Pyramid13: Pyramid14: 4 4 4 ,/|\ ,/|\ ,/|\ ,/ .'|\ ,/ .'|\ ,/ .'|\ ,/ | | \ ,/ | | \ ,/ | | \ ,/ .' | `. ,/ .' | `. ,/ .' | `. ,/ | '. \ ,7 | 12 \ ,7 | 12 \ ,/ .' w | \ ,/ .' | \ ,/ .' | \ ,/ | ^ | \ ,/ 9 | 11 ,/ 9 | 11 0----------.'--|-3 `. 0--------6-.'----3 `. 0--------6-.'----3 `. `\ | | `\ \ `\ | `\ \ `\ | `\ \ `\ .' +----`\ - \ -> v `5 .' 10 \ `5 .' 13 10 \ `\ | `\ `\ \ `\ | `\ \ `\ | `\ \ `\.' `\ `\` `\.' `\` `\.' `\` 1----------------2 1--------8-------2 1--------8-------2 `\ u */ int feenox_mesh_element_types_init(void) { if (feenox.mesh.element_types != NULL) { return FEENOX_OK; } feenox_check_alloc(feenox.mesh.element_types = calloc(NUMBER_ELEMENT_TYPE, sizeof(element_type_t))); element_type_t *element_type = NULL; // undefined ---------------------------------------------------------------- element_type = &feenox.mesh.element_types[ELEMENT_TYPE_UNDEFINED]; feenox_check_alloc((element_type->name = strdup("undefined"))); element_type->id = ELEMENT_TYPE_UNDEFINED; element_type->dim = 0; element_type->nodes = 0; element_type->faces = 0; element_type->nodes_per_face = 0; element_type->h = NULL; element_type->dhdxi = NULL; element_type->point_inside = NULL; element_type->volume = NULL; // line ---------------------------------------------------------------------- feenox_call(feenox_mesh_line2_init()); feenox_call(feenox_mesh_line3_init()); // triangles ----------------------------------------------------------------- feenox_call(feenox_mesh_triang3_init()); feenox_call(feenox_mesh_triang6_init()); // quadrangles ---------------------------------------------------------------- feenox_call(feenox_mesh_quad4_init()); feenox_call(feenox_mesh_quad8_init()); feenox_call(feenox_mesh_quad9_init()); // tetrahedra --------------------------------------------------------------- feenox_call(feenox_mesh_tet4_init()); feenox_call(feenox_mesh_tet10_init()); // hexahedra ---------------------------------------------------------------- feenox_call(feenox_mesh_hexa8_init()); feenox_call(feenox_mesh_hexa20_init()); feenox_call(feenox_mesh_hexa27_init()); // prism --------------------------------------------------------------------- feenox_call(feenox_mesh_prism6_init()); feenox_call(feenox_mesh_prism15_init()); // not supported element_type = &feenox.mesh.element_types[ELEMENT_TYPE_PYRAMID5]; element_type->dim = 3; feenox_check_alloc(element_type->name = strdup("pyramid5")); element_type->id = ELEMENT_TYPE_PYRAMID5; element_type->nodes = 0; feenox_check_alloc(feenox.mesh.element_types[13].name = strdup("prism18")); feenox_check_alloc(feenox.mesh.element_types[14].name = strdup("pyramid14")); // point feenox_call(feenox_mesh_one_node_point_init()); // compute the barycenter of each element type in the r-space for (unsigned int i = 0; i < NUMBER_ELEMENT_TYPE; i++) { if (feenox.mesh.element_types[i].node_coords != NULL) { feenox_check_alloc(feenox.mesh.element_types[i].barycenter_coords = calloc(feenox.mesh.element_types[i].dim, sizeof(double))); for (unsigned int j = 0; j < feenox.mesh.element_types[i].nodes; j++) { for (unsigned int d = 0; d < feenox.mesh.element_types[i].dim; d++) { feenox.mesh.element_types[i].barycenter_coords[d] += feenox.mesh.element_types[i].node_coords[j][d]; } } for (unsigned int d = 0; d < feenox.mesh.element_types[i].dim; d++) { feenox.mesh.element_types[i].barycenter_coords[d] /= feenox.mesh.element_types[i].nodes; } } } return FEENOX_OK; }; int feenox_mesh_alloc_gauss(gauss_t *gauss, element_type_t *element_type, int Q) { gauss->Q = Q; feenox_check_alloc(gauss->w = calloc(gauss->Q, sizeof(double))); feenox_check_alloc(gauss->xi = calloc(gauss->Q, sizeof(double *))); feenox_check_alloc(gauss->H_c = calloc(gauss->Q, sizeof(gsl_matrix *))); feenox_check_alloc(gauss->B_c = calloc(gauss->Q, sizeof(gsl_matrix *))); unsigned int dim = (element_type->dim != 0) ? element_type->dim : 1; for (unsigned int q = 0; q < gauss->Q; q++) { feenox_check_alloc(gauss->xi[q] = calloc(dim, sizeof(double))); feenox_check_alloc(gauss->H_c[q] = gsl_matrix_calloc(1, element_type->nodes)); feenox_check_alloc(gauss->B_c[q] = gsl_matrix_calloc(dim, element_type->nodes)); } return FEENOX_OK; } int feenox_mesh_init_shape_at_gauss(gauss_t *gauss, element_type_t *element_type) { for (unsigned int q = 0; q < gauss->Q; q++) { for (unsigned int j = 0; j < element_type->nodes; j++) { gsl_matrix_set(gauss->H_c[q], 0, j, element_type->h(j, gauss->xi[q])); for (unsigned int d = 0; d < element_type->dim; d++) { gsl_matrix_set(gauss->B_c[q], d, j, element_type->dhdxi(j, d, gauss->xi[q])); } } } return FEENOX_OK; } // note this one does not fill in the nodes int feenox_mesh_create_element(element_t *e, size_t index, size_t tag, unsigned int type, physical_group_t *physical_group) { e->index = index; e->tag = tag; e->type = &(feenox.mesh.element_types[type]); feenox_check_alloc(e->node = calloc(e->type->nodes, sizeof(node_t *))); e->physical_group = physical_group; return FEENOX_OK; } int feenox_mesh_add_element_to_list(element_ll_t **list, element_t *e) { element_ll_t *item = NULL; feenox_check_alloc(item = calloc(1, sizeof(element_ll_t))); item->element = e; // it is way faster to prepend than to append // LL_APPEND(*list, item); LL_PREPEND(*list, item); return FEENOX_OK; } int feenox_mesh_compute_element_barycenter(element_t *this, double barycenter[]) { int J = this->type->nodes; barycenter[0] = barycenter[1] = barycenter[2] = 0; for (unsigned int j = 0; j < J; j++) { barycenter[0] += this->node[j]->x[0]; barycenter[1] += this->node[j]->x[1]; barycenter[2] += this->node[j]->x[2]; } barycenter[0] /= J; barycenter[1] /= J; barycenter[2] /= J; return FEENOX_OK; } int feenox_mesh_init_nodal_indexes(mesh_t *this, int dofs) { this->degrees_of_freedom = dofs; for (size_t j = 0; j < this->n_nodes; j++) { feenox_check_alloc(this->node[j].index_dof = malloc(this->degrees_of_freedom*sizeof(size_t))); for (unsigned int g = 0; g < this->degrees_of_freedom; g++) { this->node[j].index_dof[g] = this->degrees_of_freedom*j + g; } } return FEENOX_OK; } int feenox_mesh_compute_normal_2d(element_t *e) { if (e->normal == NULL) { feenox_check_alloc(e->normal = calloc(3, sizeof(double))); double a[3], b[3]; feenox_mesh_subtract(e->node[0]->x, e->node[1]->x, a); feenox_mesh_subtract(e->node[0]->x, e->node[2]->x, b); feenox_mesh_normalized_cross(a, b, e->normal); } return FEENOX_OK; } unsigned int feenox_mesh_compute_local_node_index(element_t *element, size_t global_index) { unsigned int local_index = -1; for (unsigned int j = 0; j < element->type->nodes; j++) { if (element->node[j]->tag == global_index+1) { local_index = j; break; } } return local_index; } void feenox_mesh_add_node_parent(node_relative_t **parents, int index) { node_relative_t *parent = calloc(1, sizeof(node_relative_t)); parent->index = index; // LL_APPEND(*parents, parent); LL_PREPEND(*parents, parent); return; } void feenox_mesh_compute_coords_from_parent(element_type_t *element_type, int j) { node_relative_t *parent; int den = 0; LL_FOREACH(element_type->node_parents[j], parent) { den++; for (unsigned int d = 0; d < element_type->dim; d++) { element_type->node_coords[j][d] += element_type->node_coords[parent->index][d]; } } for (unsigned int d = 0; d < element_type->dim; d++) { if (den == 0) { fprintf(stderr, "le tomaron la leche al gato\n"); } element_type->node_coords[j][d] /= den; } return; } int feenox_mesh_elements_info(void) { printf("# Elements supported by FeenoX\n\n"); printf(" Gmsh type | Internal name | Dimension | Order | Nodes | Details\n"); printf(":---------:|:-------------:|:---------:|:-----:|:-----:|:----------\n"); for (unsigned int i = 0; i < NUMBER_ELEMENT_TYPE; i++) { element_type_t *element_type = &feenox.mesh.element_types[i]; if (element_type->id != 0 && element_type->nodes != 0) { printf(" % 2d | `%s` | %d | %d | % 2d | @sec-%s\n", element_type->id, element_type->name, element_type->dim, element_type->order,element_type->nodes, element_type->name); } } printf("\n"); for (unsigned int i = 0; i < NUMBER_ELEMENT_TYPE; i++) { element_type_t *element_type = &feenox.mesh.element_types[i]; if (element_type->id != 0 && element_type->nodes != 0) { printf("## %s {#sec-%s} \n\n", element_type->name, element_type->name); printf("### Nodes and shape functions\n\n"); if (feenox_mesh_elements_info_geo(&feenox.mesh.element_types[i])) { printf("![%s](%s){#fig-%s}\n\n", element_type->name, element_type->name, element_type->name); } if (element_type->ascii_art != NULL) { printf("```\n%s\n```\n\n", element_type->ascii_art); } /* ξ η ζ */ printf(" $j$%s%s%s%s\n", (element_type->dim > 0) ? " | $\\xi$ " : "", (element_type->dim > 1) ? " | $\\eta$ " : "", (element_type->dim > 2) ? " | $\\zeta$ " : "", (element_type->h_latex != NULL) ? " | $h_j(\\symbf{\\xi})$ " : ""); printf(":-------:%s%s%s%s\n", (element_type->dim > 0) ? "|:------:" : "", (element_type->dim > 1) ? "|:------:" : "", (element_type->dim > 2) ? "|:------:" : "", (element_type->h_latex != NULL) ? "|:----------------------------------" : ""); for (unsigned int j = 0; j < element_type->nodes; j++) { printf(" % 2d ", j); if (element_type->dim > 0) { if (fabs(element_type->node_coords[j][0]) > 1e-4) { printf("| %+g ", (element_type->node_coords[j][0])); } else { printf("| 0 "); } if (element_type->dim > 1) { if (fabs(element_type->node_coords[j][1]) > 1e-4) { printf("| %+g ", (element_type->node_coords[j][1])); } else { printf("| 0 "); } if (element_type->dim > 2) { if (fabs(element_type->node_coords[j][2]) > 1e-4) { printf("| %+g ", (element_type->node_coords[j][2])); } else { printf("| 0 "); } } } } if (element_type->h_latex != NULL) { printf("| $%s$", element_type->h_latex(j)); } printf("\n"); } printf("\n"); printf("### Quadrature points\n\n"); printf(" $q$ | $\\omega_q$%s%s%s\n", (element_type->dim > 0) ? " | $\\xi_q$ " : "", (element_type->dim > 1) ? " | $\\eta_q$ " : "", (element_type->dim > 2) ? " | $\\zeta_q$ " : ""); printf(":-------:|:-------:%s%s%s\n", (element_type->dim > 0) ? "|:------:" : "", (element_type->dim > 1) ? "|:------:" : "", (element_type->dim > 2) ? "|:------:" : ""); for (unsigned int q = 0; q < element_type->gauss[0].Q; q++) { printf(" % 2d | %g ", q, element_type->gauss[0].w[q]); if (element_type->dim > 0) { if (fabs(element_type->gauss[0].xi[q][0]) > 1e-4) { printf("| %+g ", (element_type->gauss[0].xi[q][0])); } else { printf("| 0 "); } if (element_type->dim > 1) { if (fabs(element_type->gauss[0].xi[q][1]) > 1e-4) { printf("| %+g ", (element_type->gauss[0].xi[q][1])); } else { printf("| 0 "); } if (element_type->dim > 2) { if (fabs(element_type->gauss[0].xi[q][2]) > 1e-4) { printf("| %+g ", (element_type->gauss[0].xi[q][2])); } else { printf("| 0 "); } } } } printf("\n"); } printf("\n"); } printf("\n"); } return FEENOX_OK; } int feenox_mesh_elements_info_geo(element_type_t *element_type) { if (element_type->doc_edges == NULL) { return 0; } char *geo_name = NULL; feenox_check_minusone(asprintf(&geo_name, "%s.geo", element_type->name)); FILE *geo = fopen(geo_name, "w"); if (geo == NULL) { return 0; } for (int j = 0; j < element_type->nodes; j++) { fprintf(geo, "Point (%d) = {%g, %g, %g};\n", j, (element_type->dim > 0) ? element_type->node_coords[j][0] : 0, (element_type->dim > 1) ? element_type->node_coords[j][1] : 0, (element_type->dim > 2) ? element_type->node_coords[j][2] : 0); } fprintf(geo, "\n"); if (element_type->dim > 0) { for (int l = 0; l < element_type->doc_n_edges; l++) { fprintf(geo, "Line (%d) = {%d, %d};\n", 1+l, element_type->doc_edges[l][0], element_type->doc_edges[l][1]); } fprintf(geo, "\n"); if (element_type->dim > 1) { for (int f = 0; f < element_type->doc_n_faces; f++) { fprintf(geo, "Curve loop (%d) = {%d", 1+f, element_type->doc_faces[f][0]); for (int l = 1; l < 8; l++) { if (element_type->doc_faces[f][l] != 0) { fprintf(geo, ", %d", element_type->doc_faces[f][l]); } } fprintf(geo, "};\n"); fprintf(geo, "Plane Surface(%d) = {%d};\n", 1+f, 1+f); } fprintf(geo, "\n"); /* if (element_type->dim > 2) { fprintf(geo, "xxx\n"); } */ } } fprintf(geo, "Geometry.PointLabels = 1;\n"); // fprintf(geo, "Geometry.PointType = 1;\n"); fprintf(geo, "Geometry.LabelType = 1;\n"); fprintf(geo, "Geometry.PointSize = 20;\n"); fprintf(geo, "Geometry.CurveWidth = 5;\n"); fprintf(geo, "Geometry.Points = 1;\n"); fprintf(geo, "Geometry.Surfaces = 0;\n"); fprintf(geo, "Geometry.Volumes = 0;\n"); fprintf(geo, "Geometry.Color.Points = {0,0,0};\n"); fprintf(geo, "Geometry.Color.Curves = {0,0,0};\n"); // Geometry.SurfaceType = 2; fclose(geo); return 1; } feenox-1.1/src/mesh/gmsh.c0000644000175000017500000014550414773607165012436 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related gmsh routines * * Copyright (C) 2014--2024 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" #define feenox_mesh_gmsh_readnewline() \ if (fgets(buffer, BUFFER_LINE_SIZE-1, fp) == NULL) { \ feenox_push_error_message("corrupted mesh '%s'", this->file->path); \ return FEENOX_ERROR; \ } int feenox_mesh_read_gmsh(mesh_t *this) { if (this->file->pointer == NULL) { feenox_call(feenox_instruction_file_open(this->file)); } FILE *fp = this->file->pointer; char *dummy = NULL; char *name = NULL; size_t node = 0; size_t node_index = 0; unsigned int version_maj = 0; unsigned int version_min = 0; int binary = 0; char buffer[BUFFER_LINE_SIZE]; while (fgets(buffer, BUFFER_LINE_SIZE-1, fp) != NULL) { if (strncmp("\n", buffer, 1) == 0) { ; // ------------------------------------------------------ } else if (strncmp("$MeshFormat", buffer, 11) == 0) { // version if (fscanf(fp, "%s", buffer) == 0) { return FEENOX_ERROR; } if (strcmp("2.2", buffer) == 0) { version_maj = 2; version_min = 2; } else if (strcmp("4", buffer) == 0) { version_maj = 4; version_min = 0; } else if (strcmp("4.1", buffer) == 0) { version_maj = 4; version_min = 1; } else { feenox_push_error_message("mesh '%s' has an incompatible version '%s', only versions 2.2, 4.0 and 4.1 are supported", this->file->path, buffer); return FEENOX_ERROR; } // file-type (ASCII int; 0 for ASCII mode, 1 for binary mode) if (fscanf(fp, "%d", &binary) == 0) { return FEENOX_ERROR; } if (binary && (version_maj == 2 || version_min == 0)) { feenox_push_error_message("binary gmsh reader works only for version 4.1"); return FEENOX_ERROR; } // data-size (ASCII int; the size of size_t) size_t size_of_size_t = 0; feenox_call(feenox_gmsh_read_data_size_t(this, 1, &size_of_size_t, 0)); if (size_of_size_t != sizeof(size_t)) { feenox_push_error_message("size of size_t in mesh '%s' is %d and in the system is %d", this->file->name, size_of_size_t, sizeof(size_t)); return FEENOX_ERROR; } feenox_mesh_gmsh_readnewline(); // for binary, we have to read one to check endianness if (binary) { int one = 0; feenox_call(feenox_gmsh_read_data_int(this, 1, &one, 1)); if (one != 1) { feenox_push_error_message("incompatible binary endianness in mesh '%s'", this->file->name); return FEENOX_ERROR; } feenox_mesh_gmsh_readnewline(); } // line $EndMeshFormat feenox_mesh_gmsh_readnewline(); if (strncmp("$EndMeshFormat", buffer, 14) != 0) { feenox_push_error_message("$EndMeshFormat not found in mesh '%s'", this->file->path); return FEENOX_ERROR; } // ------------------------------------------------------ } else if (strncmp("$PhysicalNames", buffer, 14) == 0) { // if there are physical names then we define implicitly each group // if they already exist we check the ids // number of names if (fscanf(fp, "%d", &this->n_physical_names) == 0) { return FEENOX_ERROR; } for (unsigned int i = 0; i < this->n_physical_names; i++) { int dimension = 0; int tag = 0; if (fscanf(fp, "%d %d", &dimension, &tag) < 2) { return FEENOX_ERROR; } if (dimension < 0 || dimension > 4) { feenox_push_error_message("invalid dimension %d for physical group %d in mesh file '%s'", dimension, tag, this->file->path); return FEENOX_ERROR; } feenox_mesh_gmsh_readnewline(); if ((dummy = strrchr(buffer, '\"')) != NULL) { *dummy = '\0'; } if ((dummy = strchr(buffer, '\"')) != NULL) { feenox_check_alloc(name = strdup(dummy+1)); } else { feenox_check_alloc(name = strdup(buffer)); } physical_group_t *physical_group = NULL; if ((physical_group = feenox_get_physical_group_ptr(name, this)) == NULL) { // create new physical group if ((physical_group = feenox_define_physical_group_get_ptr(name, this, dimension, tag)) == NULL) { return FEENOX_ERROR; } } else { // there already exists a physical group created with PHYSICAL_GROUP // check that either it does not have a tag or the tags coincide if (physical_group->tag == 0) { physical_group->tag = tag; } else if (physical_group->tag != tag) { feenox_push_error_message("physical group '%s' has tag %d in input and %d in mesh '%s'", name, physical_group->tag, tag, this->file->name); return FEENOX_ERROR; } // same for the dimension if (physical_group->dimension <= 0) { physical_group->dimension = dimension; } else if (physical_group->dimension != dimension) { feenox_push_error_message("physical group '%s' has dimension %d in input and %d in mesh '%s'", name, physical_group->dimension, dimension, this->file->name); return FEENOX_ERROR; } } // add the group to a local hash so we can solve the pointer // "more or less" easy HASH_ADD(hh_tag[dimension], this->physical_groups_by_tag[dimension], tag, sizeof(int), physical_group); // try to automatically link materials and BCs // actually it should be either one (material) or the other (bc) or none // if the physical group does not already have a material, look for one with the same name if (physical_group->material == NULL) { // this returns NULL if not found, which is ok HASH_FIND_STR(feenox.mesh.materials, name, physical_group->material); } feenox_free(name); } // the line $EndPhysicalNames feenox_mesh_gmsh_readnewline(); if (strncmp("$EndPhysicalNames", buffer, 17) != 0) { feenox_push_error_message("$EndPhysicalNames not found in mesh file '%s'", this->file->path); return -2; } // ------------------------------------------------------ } else if (strncmp("$Entities", buffer, 9) == 0) { // number of entities per dimension size_t num_entities[4] = {0, 0, 0, 0}; feenox_call(feenox_gmsh_read_data_size_t(this, 4, num_entities, binary)); this->points = num_entities[0]; this->curves = num_entities[1]; this->surfaces = num_entities[2]; this->volumes = num_entities[3]; for (size_t i = 0; i < this->points+this->curves+this->surfaces+this->volumes; i++) { unsigned int dimension = 0; if (i < this->points) { dimension = 0; } else if (i < this->points+this->curves) { dimension = 1; } else if (i < this->points+this->curves+this->surfaces) { dimension = 2; } else { dimension = 3; } geometrical_entity_t *geometrical_entity = NULL; feenox_check_alloc(geometrical_entity = calloc(1, sizeof(geometrical_entity_t))); geometrical_entity->dim = dimension; feenox_call(feenox_gmsh_read_data_int(this, 1, &geometrical_entity->tag, binary)); double bbox[6] = {0,0,0,0,0,0}; // since version 4.1 points have only 3 numbers, not 6 for bounding box if (dimension == 0 && version_maj == 4 && version_min >= 1) { feenox_call(feenox_gmsh_read_data_double(this, 3, bbox, binary)); } else { feenox_call(feenox_gmsh_read_data_double(this, 6, bbox, binary)); } geometrical_entity->boxMinX = bbox[0]; geometrical_entity->boxMinY = bbox[1]; geometrical_entity->boxMinZ = bbox[2]; geometrical_entity->boxMaxX = bbox[3]; geometrical_entity->boxMaxY = bbox[4]; geometrical_entity->boxMaxZ = bbox[5]; feenox_call(feenox_gmsh_read_data_size_t(this, 1, &geometrical_entity->num_physicals, binary)); if (geometrical_entity->num_physicals != 0) { feenox_check_alloc(geometrical_entity->physical = calloc(geometrical_entity->num_physicals, sizeof(int))); feenox_call(feenox_gmsh_read_data_int(this, geometrical_entity->num_physicals, geometrical_entity->physical, binary)); // gmsh can give a negative tag for the physical entity, depending on the orientation of the geometrical entity // we do not care about that (should we?) so we take the absolute value for (int k = 0; k < geometrical_entity->num_physicals; k++) { geometrical_entity->physical[k] = abs(geometrical_entity->physical[k]); } } // points do not have bounding groups if (dimension != 0) { feenox_call(feenox_gmsh_read_data_size_t(this, 1, &geometrical_entity->num_bounding, binary)); if (geometrical_entity->num_bounding != 0) { feenox_check_alloc(geometrical_entity->bounding = calloc(geometrical_entity->num_bounding, sizeof(int))); feenox_call(feenox_gmsh_read_data_int(this, geometrical_entity->num_bounding, geometrical_entity->bounding, binary)); } } // add the entity to the hashed map of its dimensions HASH_ADD(hh[dimension], this->geometrical_entities[dimension], tag, sizeof(int), geometrical_entity); } feenox_mesh_gmsh_readnewline(); // the line $EndEntities feenox_mesh_gmsh_readnewline(); if (strncmp("$EndEntities", buffer, 12) != 0) { feenox_push_error_message("$EndEntities not found in mesh file '%s'", this->file->path); return -2; } // ------------------------------------------------------ } else if (strncmp("$PartitionedEntities", buffer, 20) == 0) { // number of partitions and ghost entities size_t numbers[2] = {0,0}; feenox_call(feenox_gmsh_read_data_size_t(this, 2, numbers, binary)); this->num_partitions = numbers[0]; this->num_ghost_entitites = numbers[1]; if (this->num_ghost_entitites != 0) { feenox_push_error_message("ghost entities not yet handled"); return FEENOX_ERROR; } // number of entities per dimension size_t num_entities[4] = {0, 0, 0, 0}; feenox_call(feenox_gmsh_read_data_size_t(this, 4, num_entities, binary)); this->partitioned_points = num_entities[0]; this->partitioned_curves = num_entities[1]; this->partitioned_surfaces = num_entities[2]; this->partitioned_volumes = num_entities[3]; for (size_t i = 0; i < this->partitioned_points+this->partitioned_curves+this->partitioned_surfaces+this->partitioned_volumes; i++) { unsigned int dimension = 0; if (i < this->partitioned_points) { dimension = 0; } else if (i < this->partitioned_points+this->partitioned_curves) { dimension = 1; } else if (i < this->partitioned_points+this->partitioned_curves+this->partitioned_surfaces) { dimension = 2; } else { dimension = 3; } geometrical_entity_t *geometrical_entity = NULL; feenox_check_alloc(geometrical_entity = calloc(1, sizeof(geometrical_entity_t))); int tag_dim_tag[3] = {0,0,0}; feenox_call(feenox_gmsh_read_data_int(this, 3, tag_dim_tag, binary)); geometrical_entity->dim = dimension; geometrical_entity->tag = tag_dim_tag[0]; geometrical_entity->parent_dim = tag_dim_tag[1]; geometrical_entity->parent_tag = tag_dim_tag[2]; feenox_call(feenox_gmsh_read_data_size_t(this, 1, &geometrical_entity->num_partitions, binary)); if (geometrical_entity->num_partitions != 0) { feenox_check_alloc(geometrical_entity->partition = calloc(geometrical_entity->num_partitions, sizeof(int))); feenox_call(feenox_gmsh_read_data_int(this, geometrical_entity->num_partitions, geometrical_entity->partition, binary)); // loop over partitions and get the largest number for (unsigned int p = 0; p < geometrical_entity->num_partitions; p++) { if (geometrical_entity->partition[p] > this->n_partitions) { this->n_partitions = geometrical_entity->partition[p]; } } } double bbox[6] = {0,0,0,0,0,0}; // since version 4.1 points have only 3 numbers, not 6 for bounding box if (dimension == 0 && version_maj == 4 && version_min >= 1) { feenox_call(feenox_gmsh_read_data_double(this, 3, bbox, binary)); } else { feenox_call(feenox_gmsh_read_data_double(this, 6, bbox, binary)); } geometrical_entity->boxMinX = bbox[0]; geometrical_entity->boxMinY = bbox[1]; geometrical_entity->boxMinZ = bbox[2]; geometrical_entity->boxMaxX = bbox[3]; geometrical_entity->boxMaxY = bbox[4]; geometrical_entity->boxMaxZ = bbox[5]; feenox_call(feenox_gmsh_read_data_size_t(this, 1, &geometrical_entity->num_physicals, binary)); if (geometrical_entity->num_physicals != 0) { feenox_check_alloc(geometrical_entity->physical = calloc(geometrical_entity->num_physicals, sizeof(int))); feenox_call(feenox_gmsh_read_data_int(this, geometrical_entity->num_physicals, geometrical_entity->physical, binary)); } // points do not have bounding groups if (dimension != 0) { feenox_call(feenox_gmsh_read_data_size_t(this, 1, &geometrical_entity->num_bounding, binary)); if (geometrical_entity->num_bounding != 0) { feenox_check_alloc(geometrical_entity->bounding = calloc(geometrical_entity->num_bounding, sizeof(int))); feenox_call(feenox_gmsh_read_data_int(this, geometrical_entity->num_bounding, geometrical_entity->bounding, binary)); } } // add the entity to the hashed map of its dimensions HASH_ADD(hh[dimension], this->geometrical_entities[dimension], tag, sizeof(int), geometrical_entity); } feenox_mesh_gmsh_readnewline(); // the line $EndPartitionedEntities feenox_mesh_gmsh_readnewline(); if (strncmp("$EndPartitionedEntities", buffer, 23) != 0) { feenox_push_error_message("$EndPartitionedEntities not found in mesh file '%s'", this->file->path); return -2; } // ------------------------------------------------------ } else if (strncmp("$Nodes", buffer, 6) == 0) { size_t tag_min = SIZE_MAX; size_t tag_max = 0; if (version_maj == 2) { // number of nodes if (fscanf(fp, "%lu", &(this->n_nodes)) == 0) { return FEENOX_ERROR; } if (this->n_nodes == 0) { feenox_push_error_message("no nodes found in mesh '%s'", this->file->path); return FEENOX_ERROR; } feenox_check_alloc(this->node = calloc(this->n_nodes, sizeof(node_t))); for (size_t j = 0; j < this->n_nodes; j++) { size_t tag; if (fscanf(fp, "%lu %lf %lf %lf", &tag, &this->node[j].x[0], &this->node[j].x[1], &this->node[j].x[2]) < 4) { return FEENOX_ERROR; } // en msh2 si no es sparse, los tags son indices pero si es sparse es otro cantar if (j+1 != tag) { this->sparse = 1; } this->node[j].tag = tag; if (tag < tag_min) { tag_min = tag; } if (tag > tag_max) { tag_max = tag; } this->node[j].index_mesh = j; } // finished reading the node data, check if they are sparse // if they are, build tag2index if (this->sparse) { if (tag_max < this->n_nodes) { feenox_push_error_message("maximum node tag %d is less that number of nodes %d", tag_max, this->n_nodes); } feenox_call(feenox_mesh_tag2index_alloc(this, tag_min, tag_max)); for (size_t j = 0; j < this->n_nodes; j++) { if (feenox_unlikely(this->tag2index_from_tag_min[this->node[j].tag] != SIZE_MAX)) { feenox_push_error_message("duplicate node tag %ld in mesh '%s'", this->node[j].tag, this->file->name); return FEENOX_ERROR; } this->tag2index_from_tag_min[this->node[j].tag] = j; } } } else if (version_maj == 4) { // number of blocks and nodes size_t num_blocks; if (version_min == 0) { // in 4.0 there is no min/ max size_t data[2] = {0,0}; feenox_call(feenox_gmsh_read_data_size_t(this, 2, data, binary)); num_blocks = data[0]; this->n_nodes = data[1]; } else { size_t data[4] = {0,0,0,0}; feenox_call(feenox_gmsh_read_data_size_t(this, 4, data, binary)); num_blocks = data[0]; this->n_nodes = data[1]; tag_min = data[2]; tag_max = data[3]; } if (this->n_nodes == 0) { feenox_push_error_message("no nodes found in mesh '%s'", this->file->path); return FEENOX_ERROR; } feenox_check_alloc(this->node = calloc(this->n_nodes, sizeof(node_t))); if (tag_max != 0) { // we can do this as a one single pass because we have tag_max (I asked for this in v4.1) if (tag_max < this->n_nodes) { feenox_push_error_message("maximum node tag %d is less that number of nodes %d", tag_max, this->n_nodes); } feenox_call(feenox_mesh_tag2index_alloc(this, tag_min, tag_max)); } size_t node_index = 0; for (size_t l = 0; l < num_blocks; l++) { size_t num_nodes = 0; int data[3] = {0,0,0}; feenox_call(feenox_gmsh_read_data_int(this, 3, data, binary)); // v4.0 and v4.1 have geometrical and dimension switched // the way we read nodes, we do not need them // int dimension = (version_min == 0) ? data[1] : data[0]; // int geometrical = (version_min == 0) ? data[0] : data[1]; int parametric = data[2]; if (parametric) { feenox_push_error_message("mesh '%s' contains parametric data, which is unsupported yet", this->file->path); return FEENOX_ERROR; } feenox_call(feenox_gmsh_read_data_size_t(this, 1, &num_nodes, binary)); if (version_min == 0) { // here we have tag and coordinate in the same line for (size_t k = 0; k < num_nodes; k++) { if (fscanf(fp, "%lu %lf %lf %lf", &this->node[node_index].tag, &this->node[node_index].x[0], &this->node[node_index].x[1], &this->node[node_index].x[2]) < 4) { feenox_push_error_message("reading node data"); return FEENOX_ERROR; } if (this->node[node_index].tag > tag_max) { tag_max = this->node[node_index].tag; } // in msh4 the tags are the indices of the global mesh this->node[node_index].index_mesh = node_index; node_index++; } } else { // here we have first all the tags and then all the coordinates size_t *node_tags = NULL; feenox_check_alloc(node_tags = calloc(num_nodes, sizeof(size_t))); feenox_call(feenox_gmsh_read_data_size_t(this, num_nodes, node_tags, binary)); // node_index has the last fully-read node index for (size_t k = 0; k < num_nodes; k++) { this->node[node_index+k].tag = node_tags[k]; } feenox_free(node_tags); double *node_coords = NULL; feenox_check_alloc(node_coords = calloc(3*num_nodes, sizeof(size_t))); feenox_call(feenox_gmsh_read_data_double(this, 3*num_nodes, node_coords, binary)); for (size_t k = 0; k < num_nodes; k++) { this->node[node_index].x[0] = node_coords[3*k+0]; this->node[node_index].x[1] = node_coords[3*k+1]; this->node[node_index].x[2] = node_coords[3*k+2]; this->node[node_index].index_mesh = node_index; if (feenox_unlikely(this->tag2index_from_tag_min[this->node[node_index].tag] != SIZE_MAX)) { feenox_push_error_message("duplicate node tag %ld in mesh '%s'", this->node[node_index].tag, this->file->name); return FEENOX_ERROR; } this->tag2index_from_tag_min[this->node[node_index].tag] = node_index; node_index++; } feenox_free(node_coords); } } if (version_min == 0) { // for v4.0 we need an extra loop because we did not have the actual tag_max feenox_mesh_tag2index_alloc(this, tag_min, tag_max); for (size_t j = 0; j < this->n_nodes; j++) { if (feenox_unlikely(this->tag2index_from_tag_min[this->node[j].tag] != SIZE_MAX)) { feenox_push_error_message("duplicate node tag %ld in mesh '%s'", this->node[j].tag, this->file->name); return FEENOX_ERROR; } this->tag2index_from_tag_min[this->node[j].tag] = j; } } } feenox_mesh_gmsh_readnewline(); // the line $EndNodes feenox_mesh_gmsh_readnewline(); if (strncmp("$EndNodes", buffer, 9) != 0) { feenox_push_error_message("$EndNodes not found in mesh file '%s'", this->file->path); return -2; } // ------------------------------------------------------ } else if (strncmp("$Elements", buffer, 9) == 0) { size_t tag_min = SIZE_MAX; size_t tag_max = 0; if (version_maj == 2) { // number of elements if (fscanf(fp, "%lu", &(this->n_elements)) == 0) { return FEENOX_ERROR; } if (this->n_elements == 0) { feenox_push_error_message("no elements found in mesh file '%s'", this->file->path); return -2; } feenox_check_alloc(this->element = calloc(this->n_elements, sizeof(element_t))); size_t i = 0; for (i = 0; i < this->n_elements; i++) { size_t tag = 0; int ntags22 = 0; int type = 0; if (fscanf(fp, "%lu %d %d", &tag, &type, &ntags22) < 3) { return FEENOX_ERROR; } // in msh2 the tags are the indices if (i+1 != tag) { feenox_push_error_message("nodes in file '%s' are non-contiguous, which should not happen in v2.2", this->file->path); return FEENOX_ERROR; } this->element[i].index = i; this->element[i].tag = tag; if (tag < tag_min) { tag_min = tag; } if (tag > tag_max) { tag_max = tag; } if (type >= NUMBER_ELEMENT_TYPE) { feenox_push_error_message("elements of type '%d' are not supported in FeenoX", type); return FEENOX_ERROR; } if (feenox.mesh.element_types[type].nodes == 0) { feenox_push_error_message("elements of type '%s' are not supported in FeenoX", this->element[i].type->name); return FEENOX_ERROR; } this->element[i].type = &(feenox.mesh.element_types[type]); this->n_elements_per_dim[this->element[i].type->dim]++; // format v2.2 // each element has a tag which is an array of ints // first one is the ide of the physical entity // second one is the id of the geometrical entity (interesting only because it has the partitioning info) // then other optional stuff like partitions, domains, etc int *tags22 = NULL; if (ntags22 > 0) { feenox_check_alloc(tags22 = calloc(ntags22, sizeof(int))); for (size_t k = 0; k < ntags22; k++) { if (fscanf(fp, "%d", &tags22[k]) == 0) { return FEENOX_ERROR; } } if (ntags22 > 1) { physical_group_t *physical_group = NULL; unsigned int dimension = this->element[i].type->dim; HASH_FIND(hh_tag[dimension], this->physical_groups_by_tag[dimension], &tags22[0], sizeof(int), physical_group); if ((this->element[i].physical_group = physical_group) == NULL) { // if we did not find anything, create one snprintf(buffer, BUFFER_LINE_SIZE-1, "%s_%d_%d", this->file->name, dimension, tags22[0]); if ((this->element[i].physical_group = feenox_define_physical_group_get_ptr(buffer, this, this->element[i].type->dim, tags22[0])) == NULL) { return FEENOX_ERROR; } HASH_ADD(hh_tag[dimension], this->physical_groups_by_tag[dimension], tag, sizeof(int), this->element[i].physical_group); } this->element[i].physical_group->n_elements++; } feenox_free(tags22); } feenox_check_alloc(this->element[i].node = calloc(this->element[i].type->nodes, sizeof(node_t *))); size_t j = 0; for (j = 0; j < this->element[i].type->nodes; j++) { if (fscanf(fp, "%lu", &node) < 1) { return FEENOX_ERROR; } if (this->sparse == 0 && (node < 1 || node > this->n_nodes)) { feenox_push_error_message("node %d in element %d does not exist", node, tag); return FEENOX_ERROR; } if ((node_index = (this->sparse==0) ? (node-1) : (this->tag2index[node - tag_min])) == SIZE_MAX) { feenox_push_error_message("node %d in element %d does not exist", node, tag); return FEENOX_ERROR; } this->element[i].node[j] = &this->node[node_index]; feenox_mesh_add_element_to_list(&this->element[i].node[j]->element_list, &this->element[i]); } } } else if (version_maj == 4) { size_t num_blocks; if (version_min == 0) { // in 4.0 there's no min/max (I asked for this) tag_min = 0; tag_max = 0; if (fscanf(fp, "%lu %lu", &num_blocks, &this->n_elements) < 2) { feenox_push_error_message("error reading element blocks"); return FEENOX_ERROR; } } else { size_t data[4] = {0,0,0,0}; feenox_call(feenox_gmsh_read_data_size_t(this, 4, data, binary)); num_blocks = data[0]; this->n_elements = data[1]; tag_min = data[2]; tag_max = data[3]; } if (this->n_elements == 0) { feenox_push_error_message("no elements found in mesh file '%s'", this->file->path); return FEENOX_ERROR; } feenox_check_alloc(this->element = calloc(this->n_elements, sizeof(element_t))); size_t index = 0; for (size_t l = 0; l < num_blocks; l++) { geometrical_entity_t *geometrical_entity = NULL; int geometrical = 0; int dimension = 0; int type = 0; size_t num_elements = 0; if (version_min == 0) { if (fscanf(fp, "%d %d %d %lu", &geometrical, &dimension, &type, &num_elements) < 4) { return FEENOX_ERROR; } } else { int data[3] = {0,0,0}; if (feenox_gmsh_read_data_int(this, 3, data, binary) != FEENOX_OK) { feenox_push_error_message("reading element block %ld out of %ld,", l+1, num_blocks); return FEENOX_ERROR; } dimension = data[0]; geometrical = data[1]; type = data[2]; feenox_call(feenox_gmsh_read_data_size_t(this, 1, &num_elements, binary)); } if (type >= NUMBER_ELEMENT_TYPE) { feenox_push_error_message("elements of type '%d' are not supported in this version", type); return FEENOX_ERROR; } if (feenox.mesh.element_types[type].nodes == 0) { feenox_push_error_message("elements of type '%s' are not supported in this version", feenox.mesh.element_types[type].name); return FEENOX_ERROR; } physical_group_t *physical_group = NULL; if (geometrical != 0) { // the whole block has the same physical group, find it once and that's it HASH_FIND(hh[dimension], this->geometrical_entities[dimension], &geometrical, sizeof(int), geometrical_entity); if (geometrical_entity == NULL) { feenox_push_error_message("geometrical entity '%d' of dimension '%d' does not exist", geometrical, dimension); return FEENOX_ERROR; } if (geometrical_entity->num_physicals > 0) { // what to do if there is more than one? the first? the last one? // TODO: all of them! make a linked list int physical = geometrical_entity->physical[0]; HASH_FIND(hh_tag[dimension], this->physical_groups_by_tag[dimension], &physical, sizeof(int), physical_group); if ((this->element[index].physical_group = physical_group) == NULL) { snprintf(buffer, BUFFER_LINE_SIZE-1, "%s_%d_%d", this->file->name, dimension, physical); if ((this->element[index].physical_group = feenox_define_physical_group_get_ptr(buffer, this, feenox.mesh.element_types[type].dim, physical)) == NULL) { return FEENOX_ERROR; } this->element[index].physical_group->tag = physical; HASH_ADD(hh_tag[dimension], this->physical_groups_by_tag[dimension], tag, sizeof(int), this->element[index].physical_group); } } } size_t *element_data = NULL; size_t size_block = 1+feenox.mesh.element_types[type].nodes; feenox_check_alloc(element_data = calloc(num_elements*size_block, sizeof(size_t))); feenox_call(feenox_gmsh_read_data_size_t(this, num_elements*size_block, element_data, binary)); // index has the last fully-read element index for (size_t k = 0; k < num_elements; k++) { this->element[index].tag = element_data[size_block * k + 0]; this->element[index].index = index; this->element[index].type = &(feenox.mesh.element_types[type]); this->n_elements_per_dim[this->element[index].type->dim]++; if ((this->element[index].physical_group = physical_group) != NULL) { this->element[index].physical_group->n_elements++; } this->element[index].geometrical_entity = geometrical_entity; feenox_check_alloc(this->element[index].node = calloc(this->element[index].type->nodes, sizeof(node_t *))); for (size_t j = 0; j < this->element[index].type->nodes; j++) { // for msh4 we need to use tag2index node_index = this->tag2index_from_tag_min[element_data[size_block * k + 1 + j]]; if (feenox_unlikely(node_index) == SIZE_MAX) { feenox_push_error_message("node %d in element %d does not exist", node, this->element[index].tag); return FEENOX_ERROR; } this->element[index].node[j] = &this->node[node_index]; feenox_mesh_add_element_to_list(&this->element[index].node[j]->element_list, &this->element[index]); } index++; } feenox_free(element_data); } } feenox_mesh_gmsh_readnewline(); // the line $EndElements feenox_mesh_gmsh_readnewline(); if (strncmp("$EndElements", buffer, 12) != 0) { feenox_push_error_message("$EndElements not found in mesh file '%s'", this->file->path); return -2; } // ------------------------------------------------------ } else if (strncmp("$ElementData", buffer, 12) == 0) { // TODO! // ------------------------------------------------------ } else if (strncmp("$ElementNodeData", buffer, 16) == 0) { // TODO! // ------------------------------------------------------ } else if (strncmp("$NodeData", buffer, 9) == 0) { // number of string tags (ASCII int) int n_string_tags = 0; feenox_call(feenox_gmsh_read_data_int(this, 1, &n_string_tags, 0)); if (n_string_tags > 2) { feenox_push_error_message("number of string tags cannot be larger than two"); return FEENOX_ERROR; } feenox_mesh_gmsh_readnewline(); // the first actual string tag (string) is the post-processing view name feenox_mesh_gmsh_readnewline(); char *string_tag = NULL; if ((dummy = strrchr(buffer, '\"')) != NULL) { *dummy = '\0'; } if ((dummy = strchr(buffer, '\"')) != NULL) { feenox_check_alloc(string_tag = strdup(dummy+1)); } else { feenox_check_alloc(string_tag = strdup(buffer)); } function_t *function = NULL; node_data_t *node_data = NULL; LL_FOREACH(this->node_datas, node_data) { if (strcmp(string_tag, node_data->name_in_mesh) == 0) { function = node_data->function; node_data->found = 1; feenox_check_alloc(function->name_in_mesh = strdup(node_data->name_in_mesh)); } } // if this function was not requested then we can ignore the block if (function == NULL) { continue; } // the second (optional) string tag is the interpolation scheme which we ignore for now if (n_string_tags > 1) { feenox_mesh_gmsh_readnewline(); } // real-tags (all ASCII stuff) int n_real_tags = 0; feenox_call(feenox_gmsh_read_data_int(this, 1, &n_real_tags, 0)); if (n_real_tags != 1) { feenox_push_error_message("expected only one real tag for '%s'", string_tag); return FEENOX_ERROR; } double time = 0; feenox_call(feenox_gmsh_read_data_double(this, 1, &time, 0)); // TODO: what to do here? // we read only data for t = 0 if (time != 0) { continue; } // integer-tags int n_integer_tags = 0; feenox_call(feenox_gmsh_read_data_int(this, 1, &n_integer_tags, 0)); if (n_integer_tags > 4) { feenox_push_error_message("number of integer tags cannot be larger than four for '%s'", string_tag); return FEENOX_ERROR; } int data[4] = {0,0,0,0}; feenox_call(feenox_gmsh_read_data_int(this, n_integer_tags, data, 0)); // int timestep = data[0]; int dofs = data[1]; int num_nodes = data[2]; // int partition_index = data[3]; if (num_nodes != this->n_nodes) { feenox_push_error_message("field '%s' has %d nodes and the mesh has %ld nodes", string_tag, num_nodes, this->n_nodes); return FEENOX_ERROR; } // to handle vector/tensor functions we need more function_t **functions = NULL; feenox_check_alloc(functions = calloc(dofs, sizeof(function_t *))); unsigned int g = 0; if (dofs == 1) { functions[0] = function; } else if (dofs == 3 || dofs == 6) { char *components[6] = {"x", "y", "z", "xy", "yz", "zx"}; for (g = 0; g < dofs; g++) { char *function_name = NULL; feenox_check_minusone(asprintf(&function_name, "%s_%s", function->name, components[g])); // these functions have already been defined in the parser if ((functions[g] = feenox_get_function_ptr(function_name)) == NULL) { feenox_push_error_message("internal mismatch, cannot find function '%s'", function_name); return FEENOX_ERROR; } feenox_free(function_name); } } else { feenox_push_error_message("cannot handle field '%s' with %d components", string_tag, dofs); return FEENOX_ERROR; } if (this->nodes_argument == NULL) { feenox_call(feenox_mesh_create_nodes_argument(this)); } for (unsigned int g = 0; g < dofs; g++) { functions[g]->type = function_type_pointwise_mesh_node; functions[g]->data_size = num_nodes; functions[g]->mesh = this; functions[g]->vector_value->size = num_nodes; feenox_call(feenox_vector_init(functions[g]->vector_value, 1)); } feenox_mesh_gmsh_readnewline(); int node = 0; double value = 0; for (size_t j = 0; j < num_nodes; j++) { feenox_call(feenox_gmsh_read_data_int(this, 1, &node, binary)); for (unsigned int g = 0; g < dofs; g++) { feenox_call(feenox_gmsh_read_data_double(this, 1, &value, binary)); if ((node_index = (this->sparse==0) ? node-1 : this->tag2index_from_tag_min[node]) == SIZE_MAX) { feenox_push_error_message("node %d does not exist", node); return FEENOX_ERROR; } feenox_vector_set(functions[g]->vector_value, node_index, value); } } // the newline feenox_mesh_gmsh_readnewline(); // the line $ElementNodeData feenox_mesh_gmsh_readnewline(); if (strncmp("$EndNodeData", buffer, 12) != 0 && strncmp("$EndElementData", buffer, 15) != 0) { feenox_push_error_message("$EndNodeData not found in mesh file '%s'", this->file->path); return -2; } // ------------------------------------------------------ } else { do { if (fgets(buffer, BUFFER_LINE_SIZE-1, fp) == NULL) { feenox_push_error_message("corrupted mesh file '%s'", this->file->path); return -3; } } while(strncmp("$End", buffer, 4) != 0); } } // close the mesh file fclose(fp); this->file->pointer = NULL; return FEENOX_OK; } int feenox_mesh_tag2index_alloc(mesh_t *this, size_t tag_min, size_t tag_max) { size_t tag2index_size = tag_max - tag_min + 1; feenox_check_alloc(this->tag2index = malloc(tag2index_size * sizeof(size_t))); for (size_t k = 0; k < tag2index_size; k++) { this->tag2index[k] = SIZE_MAX; } this->tag2index_from_tag_min = this->tag2index - tag_min; return FEENOX_OK; } int feenox_mesh_write_header_gmsh(mesh_t *this, FILE *file) { fprintf(file, "$MeshFormat\n"); fprintf(file, "2.2 0 8\n"); fprintf(file, "$EndMeshFormat\n"); return FEENOX_OK; } int feenox_mesh_write_mesh_gmsh(mesh_t *this, FILE *file, int no_physical_names) { physical_group_t *physical_group; if (no_physical_names == 0) { unsigned int n = HASH_COUNT(this->physical_groups); if (n != 0) { fprintf(file, "$PhysicalNames\n"); fprintf(file, "%d\n", n); for (physical_group = this->physical_groups; physical_group != NULL; physical_group = physical_group->hh.next) { fprintf(file, "%d %d \"%s\"\n", physical_group->dimension, physical_group->tag, physical_group->name); } fprintf(file, "$EndPhysicalNames\n"); } } fprintf(file, "$Nodes\n"); fprintf(file, "%ld\n", this->n_nodes); for (size_t j = 0; j < this->n_nodes; j++) { fprintf(file, "%ld %g %g %g\n", this->node[j].tag, this->node[j].x[0], this->node[j].x[1], this->node[j].x[2]); } fprintf(file, "$EndNodes\n"); fprintf(file, "$Elements\n"); fprintf(file, "%ld\n", this->n_elements); for (size_t i = 0; i < this->n_elements; i++) { fprintf(file, "%ld ", this->element[i].tag); fprintf(file, "%d ", this->element[i].type->id); // in principle we should write the detailed information about groups and partitions // fprintf(file, "%d ", this->element[i].ntags); // but for now only two tags are enough: // the first one is the physical group and the second one ought to be the geometrical group // if there is no such information, then we just duplicate the physical group tag if (this->element[i].physical_group != NULL) { fprintf(file, "2 %d %d", this->element[i].physical_group->tag, this->element[i].physical_group->tag); } else { fprintf(file, "2 0 0"); } // the nodes for (unsigned int j = 0; j < this->element[i].type->nodes; j++) { fprintf(file, " %ld", this->element[i].node[j]->tag); } fprintf(file, "\n"); } fprintf(file, "$EndElements\n"); return FEENOX_OK; } int feenox_mesh_write_data_gmsh(mesh_write_t *this, mesh_write_dist_t *dist) { // TODO: split as virtual methods if (dist->field_location == field_location_cells) { fprintf(this->file->pointer, "$ElementData\n"); if (this->mesh->n_cells == 0) { feenox_call(feenox_mesh_element2cell(this->mesh)); } } else { fprintf(this->file->pointer, "$NodeData\n"); } // one string tag fprintf(this->file->pointer, "1\n"); // the name of the view fprintf(this->file->pointer, "\"%s\"\n", dist->name); // the other one (optional) is the interpolation scheme // one real tag (only one) fprintf(this->file->pointer, "1\n"); // time fprintf(this->file->pointer, "%g\n", feenox_special_var_value(t)); // three integer tags fprintf(this->file->pointer, "3\n"); // timestep fprintf(this->file->pointer, "%d\n", (feenox_special_var_value(end_time) > 0) ? (unsigned int)(feenox_special_var_value(step_transient)) : (unsigned int)(feenox_special_var_value(step_static))); // number of data per node fprintf(this->file->pointer, "%d\n", dist->size); // custom printf format char *format = NULL; if (dist->printf_format == NULL) { feenox_check_alloc(format = strdup(" %g")); } else { if (dist->printf_format[0] == '%') { feenox_check_minusone(asprintf(&format, " %s", dist->printf_format)); } else { feenox_check_minusone(asprintf(&format, " %%%s", dist->printf_format)); } } if (dist->field_location == field_location_cells) { // number of point data fprintf(this->file->pointer, "%ld\n", this->mesh->n_cells); // cell tag - data size_t i = 0; unsigned int g = 0; double value = 0; for (i = 0; i < this->mesh->n_cells; i++) { fprintf(this->file->pointer, "%ld", this->mesh->cell[i].element->tag); for (g = 0; g < dist->size; g++) { value = (dist->field[g]->type == function_type_pointwise_mesh_cell && dist->field[g]->mesh == this->mesh) ? feenox_vector_get(dist->field[g]->vector_value, i) : feenox_function_eval(dist->field[g], this->mesh->cell[i].x); fprintf(this->file->pointer, format, value); } fprintf(this->file->pointer, "\n"); } fprintf(this->file->pointer, "$EndElementData\n"); } else { // number of point data fprintf(this->file->pointer, "%ld\n", this->mesh->n_nodes); // point tag - data double value = 0; for (size_t j = 0; j < this->mesh->n_nodes; j++) { fprintf(this->file->pointer, "%ld", this->mesh->node[j].tag); for (unsigned int g = 0; g < dist->size; g++) { value = (dist->field[g]->type == function_type_pointwise_mesh_node && dist->field[g]->mesh == this->mesh) ? feenox_vector_get(dist->field[g]->vector_value, j) : feenox_function_eval(dist->field[g], this->mesh->node[j].x); fprintf(this->file->pointer, format, value); } fprintf(this->file->pointer, "\n"); } fprintf(this->file->pointer, "$EndNodeData\n"); } fflush(this->file->pointer); feenox_free(format); return FEENOX_OK; } // read the next available time step and interpolate int feenox_mesh_update_function_gmsh(function_t *function, double t, double dt) { mesh_t *mesh = function->mesh; double *new_data = NULL; int done = 0; if (mesh->file->pointer == NULL) { feenox_call(feenox_instruction_file_open(mesh->file)); } double time = 0; char buffer[BUFFER_LINE_SIZE]; while (done == 0 && fgets(buffer, BUFFER_LINE_SIZE-1, mesh->file->pointer) != NULL) { if (strncmp("\n", buffer, 1) == 0) { ; // ------------------------------------------------------ } else if (strncmp("$NodeData", buffer, 9) == 0) { // string-tags int n_string_tags = 0; if (fscanf(mesh->file->pointer, "%d", &n_string_tags) == 0) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } if (n_string_tags != 1) { continue; } // el \n if (fgets(buffer, BUFFER_LINE_SIZE-1, mesh->file->pointer) == NULL) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } if (fgets(buffer, BUFFER_LINE_SIZE-1, mesh->file->pointer) == NULL) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } char *string_tag = strtok(buffer, "\""); if (strcmp(string_tag, function->name_in_mesh) != 0) { continue; } // real-tags int n_real_tags = 0; if (fscanf(mesh->file->pointer, "%d", &n_real_tags) == 0) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } if (n_real_tags != 1) { continue; } if (fscanf(mesh->file->pointer, "%lf", &time) == 0) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } // read only data for the next time if (time < t-1e-5) { continue; } // integer-tags int n_integer_tags = 0; if (fscanf(mesh->file->pointer, "%d", &n_integer_tags) == 0) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } if (n_integer_tags != 3) { continue; } int timestep = 0; if (fscanf(mesh->file->pointer, "%d", ×tep) == 0) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } int dofs = 0; if (fscanf(mesh->file->pointer, "%d", &dofs) == 0) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } int nodes = 0; if (fscanf(mesh->file->pointer, "%d", &nodes) == 0) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } if (dofs != 1) { feenox_push_error_message("expected only one DOF"); return FEENOX_ERROR; } if (nodes != mesh->n_nodes) { feenox_push_error_message("expected %d nodes, not %d", mesh->n_nodes, nodes); return FEENOX_ERROR; } feenox_check_alloc(new_data = calloc(nodes, sizeof(double))); // the format says the node tag is now an int double value = 0; int node = 0; int node_index = 0; for (int j = 0; j < nodes; j++) { if (fscanf(mesh->file->pointer, "%d %lf", &node, &value) == 0) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } if ((node_index = (mesh->sparse==0) ? node-1 : mesh->tag2index_from_tag_min[node]) == SIZE_MAX) { feenox_push_error_message("node %d does not exist", node); return FEENOX_ERROR; } new_data[node_index] = value; } // done! done = 1; // the newline if (fgets(buffer, BUFFER_LINE_SIZE-1, mesh->file->pointer) == NULL) { feenox_push_error_message("corrupted mesh file '%s'", mesh->file->path); return -3; } // the line $ElementNodeData if (fgets(buffer, BUFFER_LINE_SIZE-1, mesh->file->pointer) == NULL) { feenox_push_error_message("corrupted mesh file '%s'", mesh->file->path); return -3; } if (strncmp("$EndNodeData", buffer, 12) != 0) { feenox_push_error_message("$EndElementNodeData not found in mesh file '%s'", mesh->file->path); return -2; } } } if (new_data != NULL) { double alpha = (t-function->mesh_time)/(time-function->mesh_time); for (size_t j = 0; j < function->data_size; j++) { feenox_vector_add(function->vector_value, j, alpha * (new_data[j] - feenox_vector_get(function->vector_value, j))); } feenox_free(new_data); } return FEENOX_OK; } int feenox_gmsh_read_data_int(mesh_t *this, size_t n, int *data, int binary) { FILE *fp = this->file->pointer; if (binary) { if (fread(data, sizeof(int), n, fp) != n) { feenox_push_error_message("not enough data in mesh '%s'", this->file->name); return FEENOX_ERROR; } } else { size_t i = 0; for (i = 0; i < n; i++) { if (fscanf(fp, "%d", &data[i]) != 1) { feenox_push_error_message("not enough data in mesh '%s'", this->file->name); return FEENOX_ERROR; } } } return FEENOX_OK; } int feenox_gmsh_read_data_size_t(mesh_t *this, size_t n, size_t *data, int binary) { FILE *fp = this->file->pointer; if (binary) { if (fread(data, sizeof(size_t), n, fp) != n) { feenox_push_error_message("not enough data in mesh '%s'", this->file->name); return FEENOX_ERROR; } } else { size_t i = 0; for (i = 0; i < n; i++) { if (fscanf(fp, "%lu", &data[i]) != 1) { feenox_push_error_message("not enough data in mesh '%s'", this->file->name); return FEENOX_ERROR; } } } return FEENOX_OK; } int feenox_gmsh_read_data_double(mesh_t *this, size_t n, double *data, int binary) { FILE *fp = this->file->pointer; if (binary) { if (fread(data, sizeof(double), n, fp) != n) { feenox_push_error_message("not enough data in mesh '%s'", this->file->name); return FEENOX_ERROR; } } else { size_t i = 0; for (i = 0; i < n; i++) { if (fscanf(fp, "%lf", &data[i]) != 1) { feenox_push_error_message("not enough data in mesh '%s'", this->file->name); return FEENOX_ERROR; } } } return FEENOX_OK; } feenox-1.1/src/mesh/calculix.c0000644000175000017500000006646314773607165013312 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related routines to read frd files from calculix * * Copyright (C) 2018--2025 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" // main reference // https://web.mit.edu/calculix_v2.7/CalculiX/cgx_2.7/doc/cgx/node168.html /* https://github.com/calculix/ccx2paraview _________________________________________________________________ | | | | №№ CalculiX type | №№ VTK type | |_______________________________|_________________________________| | | | | | | | 1 | C3D8 | 8 node brick | = 12 | VTK_HEXAHEDRON | | | F3D8 | | | | | | C3D8R | | | | | | C3D8I | | | | |____|__________|_______________|______|__________________________| | | | | | | | 2 | C3D6 | 6 node wedge | = 13 | VTK_WEDGE | | | F3D6 | | | | |____|__________|_______________|______|__________________________| | | | | | | | 3 | C3D4 | 4 node tet | = 10 | VTK_TETRA | | | F3D4 | | | | |____|__________|_______________|______|__________________________| | | | | | | | 4 | C3D20 | 20 node brick | = 25 | VTK_QUADRATIC_HEXAHEDRON | | | C3D20R | | | | |____|__________|_______________|______|__________________________| | | | | | | | 5 | C3D15 | 15 node wedge | ~ 13 | VTK_WEDGE | |____|__________|_______________|______|__________________________| | | | | | | | 6 | C3D10 | 10 node tet | = 24 | VTK_QUADRATIC_TETRA | | | C3D10T | | | | |____|__________|_______________|______|__________________________| | | | | | | | 7 | S3 | 3 node shell | = 5 | VTK_TRIANGLE | | | M3D3 | | | | | | CPS3 | | | | | | CPE3 | | | | | | CAX3 | | | | |____|__________|_______________|______|__________________________| | | | | | | | 8 | S6 | 6 node shell | = 22 | VTK_QUADRATIC_TRIANGLE | | | M3D6 | | | | | | CPS6 | | | | | | CPE6 | | | | | | CAX6 | | | | |____|__________|_______________|______|__________________________| | | | | | | | 9 | S4 | 4 node shell | = 9 | VTK_QUAD | | | S4R | | | | | | M3D4 | | | | | | M3D4R | | | | | | CPS4 | | | | | | CPS4R | | | | | | CPE4 | | | | | | CPE4R | | | | | | CAX4 | | | | | | CAX4R | | | | |____|__________|_______________|______|__________________________| | | | | | | | 10 | S8 | 8 node shell | = 23 | VTK_QUADRATIC_QUAD | | | S8R | | | | | | M3D8 | | | | | | M3D8R | | | | | | CPS8 | | | | | | CPS8R | | | | | | CPE8 | | | | | | CPE8R | | | | | | CAX8 | | | | | | CAX8R | | | | |____|__________|_______________|______|__________________________| | | | | | | | 11 | B21 | 2 node beam | = 3 | VTK_LINE | | | B31 | | | | | | B31R | | | | | | T2D2 | | | | | | T3D2 | | | | | | GAPUNI | | | | | | DASHPOTA | | | | | | SPRING2 | | | | | | SPRINGA | | | | |____|__________|_______________|______|__________________________| | | | | | | | 12 | B32 | 3 node beam | = 21 | VTK_QUADRATIC_EDGE | | | B32R | | | | | | T3D3 | | | | | | D | | | | |____|__________|_______________|______|__________________________| | | | | | | | ?? | SPRING1 | 1 node | = 1 | VTK_VERTEX | | | DCOUP3D | | | | | | MASS | | | | |____|__________|_______________|______|__________________________| © Ihor Mirzov, August 2019 Distributed under GNU General Public License v3.0 Convert Calculix element type to VTK. Keep in mind that CalculiX expands shell elements. In vtk elements nodes are numbered starting from 0, not from 1. For frd see http://www.dhondt.de/cgx_2.15.pdf pages 117-123 (chapter 10) For vtk see https://vtk.org/wp-content/uploads/2015/04/file-formats.pdf pages 9-10 */ char *ccx_names[] = { "", "C3D8", "C3D6", "C3D4", "C3D20", "C3D15", "C3D10", "CPS3", "CPS6", "CPS4", "CPS8", "T3D2", "T3D3", "MASS" }; int ccx2gmsh_types[] = { ELEMENT_TYPE_UNDEFINED, // 0 ELEMENT_TYPE_HEXAHEDRON8, // 1 ELEMENT_TYPE_PRISM6, // 2 ELEMENT_TYPE_TETRAHEDRON4, // 3 ELEMENT_TYPE_HEXAHEDRON20, // 4 ELEMENT_TYPE_PRISM15, // 6 ELEMENT_TYPE_TETRAHEDRON10, // 6 ELEMENT_TYPE_TRIANGLE3, // 7 ELEMENT_TYPE_TRIANGLE6, // 8 ELEMENT_TYPE_QUADRANGLE4, // 9 ELEMENT_TYPE_QUADRANGLE8, // 10 ELEMENT_TYPE_LINE2, // 11 ELEMENT_TYPE_LINE3, // 12 ELEMENT_TYPE_POINT1 // 13 }; int gmsh2ccx_types[] = { 0, // ELEMENT_TYPE_UNDEFINED 0 11, // ELEMENT_TYPE_LINE2 1 7, // ELEMENT_TYPE_TRIANGLE3 2 9, // ELEMENT_TYPE_QUADRANGLE4 3 3, // ELEMENT_TYPE_TETRAHEDRON4 4 1, // ELEMENT_TYPE_HEXAHEDRON8 5 2, // ELEMENT_TYPE_PRISM6 6 0, // ELEMENT_TYPE_PYRAMID5 7 12, // ELEMENT_TYPE_LINE3 8 8, // ELEMENT_TYPE_TRIANGLE6 9 0, // ELEMENT_TYPE_QUADRANGLE9 10 6, // ELEMENT_TYPE_TETRAHEDRON10 11 0, // ELEMENT_TYPE_HEXAHEDRON27 12 13, // ELEMENT_TYPE_POINT1 15 10, // ELEMENT_TYPE_QUADRANGLE8 16 4, // ELEMENT_TYPE_HEXAHEDRON20 17 5 // ELEMENT_TYPE_PRISM15 18 }; #define BUFFER_SIZE 512 int feenox_mesh_read_frd(mesh_t *this) { char buffer[BUFFER_SIZE]; char tmp[BUFFER_SIZE]; int *tag2index = NULL; if (this->file->pointer == NULL) { feenox_call(feenox_instruction_file_open(this->file)); } int sparse = 0; // start assuming all these are zero int bulk_dimensions = 0; int spatial_dimensions = 0; int order = 0; while (fgets(buffer, BUFFER_SIZE-1, this->file->pointer) != NULL) { if (strncmp("\n", buffer, 1) == 0) { ; // ------------------------------------------------------ } else if (strncmp(" 1C", buffer, 6) == 0) { // Format:(1X,' 1','C',A6) // Values: KEY, CODE, NAME // > 1Ctest !''1C'' defines a new calc of name ''test'' // // case name at buffer+6 // ; // ------------------------------------------------------ } else if (strncmp(" 1U", buffer, 6) == 0) { // Format:(1X,' 1','U',A66) // Values: KEY, CODE, STRING // > 1UDATE 26.01.2000 !''1U'' stores user job-informations // // user-provided field at buffer+6 and user-provided data afterwards ; // ------------------------------------------------------ } else if (strncmp(" 2C", buffer, 6) == 0) { // Format:(1X,' 2','C',18X,I12,37X,I1) // Values: KEY, CODE,NUMNOD, FORMAT // Where: KEY = 2 // CODE = C // NUMNOD = Number of nodes in this block // FORMAT = Format indicator // 0 short format // 1 long format // 2 binary format // number of nodes and "format" int format; if (sscanf(buffer, "%s %ld %d", tmp, &this->n_nodes, &format) != 3) { feenox_push_error_message("error parsing number of nodes '%s'", buffer); return FEENOX_ERROR; } if (this->n_nodes == 0) { feenox_push_error_message("no nodes found in mesh '%s'", this->file->path); return FEENOX_ERROR; } if (format > 1) { feenox_push_error_message("node format %d not supported'", format); return FEENOX_ERROR; } feenox_check_alloc(this->node = calloc(this->n_nodes, sizeof(node_t))); int tag_max = this->n_nodes; for (size_t j = 0; j < this->n_nodes; j++) { int minusone; if (fscanf(this->file->pointer, "%d", &minusone) != 1) { feenox_push_error_message("error parsing nodes", buffer); return FEENOX_ERROR; } if (minusone != -1) { feenox_push_error_message("expected minus one as line starter", buffer); return FEENOX_ERROR; } int tag = 0; if (fscanf(this->file->pointer, "%d", &tag) == 0) { return FEENOX_ERROR; } if (j+1 != tag) { sparse = 1; } if ((this->node[j].tag = tag) > tag_max) { tag_max = this->node[j].tag; } this->node[j].index_mesh = j; for (unsigned int d = 0; d < 3; d++) { if (fscanf(this->file->pointer, "%lf", &this->node[j].x[d]) == 0) { return FEENOX_ERROR; } } if (spatial_dimensions < 1 && fabs(this->node[j].x[0]) > 1e-6) { spatial_dimensions = 1; } if (spatial_dimensions < 2 && fabs(this->node[j].x[1]) > 1e-6) { spatial_dimensions = 2; } if (spatial_dimensions < 3 && fabs(this->node[j].x[2]) > 1e-6) { spatial_dimensions = 3; } } // -3 int minusthree; if (fscanf(this->file->pointer, "%d", &minusthree) != 1) { feenox_push_error_message("error parsing nodes", buffer); return FEENOX_ERROR; } if (minusthree != -3) { feenox_push_error_message("expected minus three as line starter", buffer); return FEENOX_ERROR; } // finished reading the nodes, handle sparse node tags if (sparse) { feenox_check_alloc(tag2index = malloc((tag_max+1) * sizeof(int))); for (size_t k = 0; k <= tag_max; k++) { tag2index[k] = -1; } for (size_t j = 0; j < this->n_nodes; j++) { tag2index[this->node[j].tag] = j; } } // ------------------------------------------------------ } else if (strncmp(" 3C", buffer, 6) == 0) { // Format:(1X,' 3','C',18X,I12,37X,I1) // Values: KEY, CODE,NUMELEM, FORMAT // Where: KEY = 3 // CODE = C // NUMELEM= Number of elements in this block // FORMAT = Format indicator // 0 short format // 1 long format // 2 binary format // TODO: mind the fact that tere might be different "element blocks" for different materials // number of elements and "format" int format; if (sscanf(buffer, "%s %ld %d", tmp, &this->n_elements, &format) != 3) { feenox_push_error_message("error parsing number of elements '%s'", buffer); return FEENOX_ERROR; } if (this->n_elements == 0) { feenox_push_error_message("no elements found in mesh '%s'", this->file->path); return FEENOX_ERROR; } if (format > 1) { feenox_push_error_message("element format %d not supported'", format); return FEENOX_ERROR; } feenox_check_alloc(this->element = calloc(this->n_elements, sizeof(element_t))); for (size_t i = 0; i < this->n_elements; i++) { // The following block of records must be repeated for each element: // The first record initializes an element definition: // Short Format:(1X,'-1',I5,3I5) // Long Format:(1X,'-1',I10,3I5) // Values: KEY, ELEMENT, TYPE, GROUP, MATERIAL // Where: KEY = -1 // NODE = element number // TYPE = element type, see section ''Element Types'' // GROUP = element group number, see command ''grps'' // MATERIAL= element material number, see command ''mats''. int minusone; if (fscanf(this->file->pointer, "%d", &minusone) != 1) { feenox_push_error_message("error parsing nodes", buffer); return FEENOX_ERROR; } if (minusone != -1) { feenox_push_error_message("expected minus one as line starter", buffer); return FEENOX_ERROR; } int tag = 0; if (fscanf(this->file->pointer, "%d", &tag) == 0) { return FEENOX_ERROR; } this->element[i].index = i; this->element[i].tag = tag; int ccx_element_type; if (fscanf(this->file->pointer, "%d", &ccx_element_type) == 0) { return FEENOX_ERROR; } if (ccx_element_type > 13) { feenox_push_error_message("element type '%d' should be less than 14", ccx_element_type); return FEENOX_ERROR; } this->element[i].type = &(feenox.mesh.element_types[ccx2gmsh_types[ccx_element_type]]); if (this->element[i].type->nodes == 0) { feenox_push_error_message("elements of type '%s' are not supported in this version :-(", this->element[i].type->name); return FEENOX_ERROR; } // rec[0] = element group // rec[1] = material int rec[2]; if (fscanf(this->file->pointer, "%d %d", &rec[0], &rec[1]) < 2) { return FEENOX_ERROR; } if (this->element[i].type->dim > bulk_dimensions) { bulk_dimensions = this->element[i].type->dim; } if (this->element[i].type->order > order) { order = this->element[i].type->order; } // highest node count if (this->element[i].type->nodes > this->max_nodes_per_element) { this->max_nodes_per_element = this->element[i].type->nodes; } // highest neighbors count if (this->element[i].type->faces > this->max_faces_per_element) { this->max_faces_per_element = this->element[i].type->faces; } // -2 int minustwo; if (fscanf(this->file->pointer, "%d", &minustwo) != 1) { feenox_push_error_message("error parsing elements", buffer); return FEENOX_ERROR; } if (minustwo != -2) { feenox_push_error_message("expected minus two as line starter", buffer); return FEENOX_ERROR; } feenox_check_alloc(this->element[i].node = calloc(this->element[i].type->nodes, sizeof(node_t *))); for (size_t j = 0; j < this->element[i].type->nodes; j++) { int node = 0; do { if (fscanf(this->file->pointer, "%d", &node) == 0) { return FEENOX_ERROR; } if (sparse == 0 && node > this->n_nodes) { feenox_push_error_message("node %d in element %d does not exist", node, tag); return FEENOX_ERROR; } } while (node == -2); // tet10 has a single swap // TODO: hexa20 and wedge 2nd order int j_gmsh = j; if (this->element[i].type->id == ELEMENT_TYPE_TETRAHEDRON10) { if (j == 8) { j_gmsh = 9; } else if (j == 9) { j_gmsh = 8; } else { j_gmsh = j; } } int node_index = (sparse==0) ? node-1 : tag2index[node]; if (node_index < 0) { feenox_push_error_message("node %d in element %d does not exist", node, tag); return FEENOX_ERROR; } this->element[i].node[j_gmsh] = &this->node[node_index]; feenox_mesh_add_element_to_list(&this->element[i].node[j_gmsh]->element_list, &this->element[i]); } } // -3 int minusthree; if (fscanf(this->file->pointer, "%d", &minusthree) != 1) { feenox_push_error_message("error parsing nodes", buffer); return FEENOX_ERROR; } if (minusthree != -3) { feenox_push_error_message("expected minus three as line starter", buffer); return FEENOX_ERROR; } // ------------------------------------------------------ } else if (strncmp(" 100C", buffer, 6) == 0) { // Format:(1X,' 100','C',6A1,E12.5,I12,20A1,I2,I5,10A1,I2) // Values: KEY,CODE,SETNAME,VALUE,NUMNOD,TEXT,ICTYPE,NUMSTP,ANALYS, // FORMAT // Where: KEY = 100 // CODE = C // SETNAME= Name (not used) // VALUE = Could be frequency, time or any numerical value // NUMNOD = Number of nodes in this nodal results block // TEXT = Any text // ICTYPE = Analysis type // 0 static // 1 time step // 2 frequency // 3 load step // 4 user named // NUMSTP = Step number // ANALYS = Type of analysis (description) // FORMAT = Format indicator // 0 short format // 1 long format // 2 binary format node_data_t *node_data; function_t **function; int number_of_nodes; if (sscanf(buffer+25, "%d", &number_of_nodes) != 1) { feenox_push_error_message("error parsing 100CL '%s'", buffer); return FEENOX_ERROR; } int ictype; int numstp; if (sscanf(buffer+38, "%d %d", &ictype, &numstp) != 2) { feenox_push_error_message("error parsing 100CL '%s'", buffer); return FEENOX_ERROR; } int format; if (sscanf(buffer+74, "%d", &format) != 1) { feenox_push_error_message("error parsing 100CL '%s'", buffer); return FEENOX_ERROR; } if (number_of_nodes != this->n_nodes || ictype != 0 || numstp != 1 || format > 1) { continue; } if (fgets(buffer, BUFFER_SIZE-1, this->file->pointer) == NULL) { feenox_push_error_message("error parsing -4"); return FEENOX_ERROR; } // Format:(1X,I2,2X,8A1,2I5) // Values: KEY, NAME, NCOMPS, IRTYPE // Where: KEY = -4 // NAME = Dataset name to be used in the menu // NCOMPS = Number of entities // IRTYPE = 1 Nodal data, material independent // 2 Nodal data, material dependant // 3 Element data at nodes (not used) int minusfour; int ncomps; int irtype; if (sscanf(buffer, "%d %s %d %d", &minusfour, tmp, &ncomps, &irtype) != 4) { feenox_push_error_message("error parsing -4 '%s'", buffer); return FEENOX_ERROR; } if (minusfour != -4) { feenox_push_error_message("error parsing -4 '%s'", buffer); return FEENOX_ERROR; } if (irtype > 2) { continue; } // esto es un array de apuntadores, arrancamos en null y si // el nombre en el frd coincide con alguna de las funciones // que nos pidieron, entonces lo hacemos apuntar ahi feenox_check_alloc(function = calloc(ncomps, sizeof(function_t *))); for (unsigned int g = 0; g < ncomps; g++) { // Format:(1X,I2,2X,8A1,5I5,8A1) // Values: KEY, NAME, MENU, ICTYPE, ICIND1, ICIND2, IEXIST, ICNAME // Where: KEY = -5 // NAME = Entity name to be used in the menu for this comp. // MENU = 1 // ICTYPE = Type of entity // 1 scalar // 2 vector with 3 components // 4 matrix // 12 vector with 3 amplitudes and 3 phase-angles in // degree // ICIND1 = sub-component index or row number // ICIND2 = column number for ICTYPE=4 // IEXIST = 0 data are provided // 1 data are to be calculated by predefined // functions (not used) // 2 as 0 but earmarked // ICNAME = Name of the predefined calculation (not used) // ALL calculate the total displacement if ICTYPE=2 if (fgets(buffer, BUFFER_SIZE-1, this->file->pointer) == NULL) { feenox_push_error_message("error parsing -5"); return FEENOX_ERROR; } int minusfive; int menu; if (sscanf(buffer, "%d %s %d", &minusfive, tmp, &menu) != 3) { feenox_push_error_message("error parsing -5 '%s'", buffer); return FEENOX_ERROR; } if (minusfive != -5) { feenox_push_error_message("error parsing -5 '%s'", buffer); return FEENOX_ERROR; } if (menu != 1) { feenox_push_error_message("menu should be 1 '%s'", buffer); return FEENOX_ERROR; } LL_FOREACH(this->node_datas, node_data) { if (strcmp(tmp, node_data->name_in_mesh) == 0) { function[g] = node_data->function; function[g]->type = function_type_pointwise_mesh_node; function[g]->data_size = this->n_nodes; function[g]->mesh = this; function[g]->vector_value->size = this->n_nodes; feenox_call(feenox_vector_init(function[g]->vector_value, 1)); node_data->found = 1; } } // esto es algo inventado por el viejo de calculix, donde son indices que aparecen // a veces si y a veces no, el cuento es que si la funcion se llama ALL no hay // datos sino que viene de calcular el modulo del vector desplazamiento if (strcmp(tmp, "ALL") == 0) { ncomps--; // esto funciona solo si ALL es la ultima funcion } } for (size_t j = 0; j < number_of_nodes; j++) { int minusone; int node; if (fscanf(this->file->pointer, "%d %d", &minusone, &node) != 2) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } if (minusone != -1) { feenox_push_error_message("expected -1 '%s'", buffer); return FEENOX_ERROR; } if (sparse == 0 && (node < 1 || node > this->n_nodes)) { feenox_push_error_message("invalid node number '%d'", node); return FEENOX_ERROR; } for (unsigned int g = 0; g < ncomps; g++) { // TODO: mind that if there are more than 6 we'd need to read a -2 double scalar; if (fscanf(this->file->pointer, "%lf", &scalar) == 0) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } if (function[g] != NULL) { int node_index = (sparse==0) ? node-1 : tag2index[node]; if (node_index < 0) { feenox_push_error_message("node %d does not exist", node); return FEENOX_ERROR; } feenox_vector_set(function[g]->vector_value, node_index, scalar); } } } // -3 int minusthree; if (fscanf(this->file->pointer, "%d", &minusthree) != 1) { feenox_push_error_message("error parsing -3"); return FEENOX_ERROR; } if (minusthree != -3) { feenox_push_error_message("expected minus three as line starter", buffer); return FEENOX_ERROR; } // ------------------------------------------------------ } } fclose(this->file->pointer); this->file->pointer = NULL; if (tag2index != NULL) { feenox_free(tag2index); } // verificamos que la malla tenga la dimension esperada if (this->dim_topo == 0) { this->dim = bulk_dimensions; } else if (this->dim != bulk_dimensions) { feenox_push_error_message("mesh '%s' is expected to have %d dimensions but it has %d", this->file->path, this->dim, bulk_dimensions); return FEENOX_ERROR; } this->dim = spatial_dimensions; this->order = order; return FEENOX_OK; } feenox-1.1/src/mesh/geometry.c0000644000175000017500000001255514773607165013332 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related geometry routines * * Copyright (C) 2014--2024 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" // c = b - a void feenox_mesh_subtract(const double *a, const double *b, double *c) { c[0] = b[0] - a[0]; c[1] = b[1] - a[1]; c[2] = b[2] - a[2]; return; } // c = a \times b void feenox_mesh_cross(const double *a, const double *b, double *c) { c[0] = a[1]*b[2] - a[2]*b[1]; c[1] = a[2]*b[0] - a[0]*b[2]; c[2] = a[0]*b[1] - a[1]*b[0]; return; } // c = a \times b / | a \times b | void feenox_mesh_normalized_cross(const double *a, const double *b, double *c) { double norm; c[0] = a[1]*b[2] - a[2]*b[1]; c[1] = a[2]*b[0] - a[0]*b[2]; c[2] = a[0]*b[1] - a[1]*b[0]; norm = gsl_hypot3(c[0], c[1], c[2]); if (norm != 0) { c[0] /= norm; c[1] /= norm; c[2] /= norm; } return; } // ( (a \times b) \cdot c ) in 3D double feenox_mesh_cross_dot(const double *a, const double *b, const double *c) { return c[0]*(a[1]*b[2] - a[2]*b[1]) + c[1]*(a[2]*b[0] - a[0]*b[2]) + c[2]*(a[0]*b[1] - a[1]*b[0]); } // ( (b-a) \times (c-a)) ) in 2d double feenox_mesh_subtract_cross_2d(const double *a, const double *b, const double *c) { return a[0]*(b[1]-c[1]) + b[0]*(c[1]-a[1]) + c[0]*(a[1]-b[1]); } // scalar product between a and b double feenox_mesh_dot(const double *a, const double *b) { return a[0]*b[0] + a[1]*b[1] + a[2]*b[2]; } // scalar product between (b-a) y c double feenox_mesh_subtract_dot(const double *b, const double *a, const double *c) { return (b[0]-a[0])*c[0] + (b[1]-a[1])*c[1] + (b[2]-a[2])*c[2]; } // module of (b-a) double feenox_mesh_subtract_module(const double *b, const double *a) { return gsl_hypot3(b[0]-a[0], b[1]-a[1], b[2]-a[2]); } // squared module of (b-a) double feenox_mesh_subtract_squared_module(const double *b, const double *a) { double dx = (b[0]-a[0]); double dy = (b[1]-a[1]); double dz = (b[2]-a[2]); return dx*dx + dy*dy + dz*dz; } // squared module of (b-a) in 2d double feenox_mesh_subtract_squared_module2d(const double *b, const double *a) { return (b[0]-a[0])*(b[0]-a[0]) + (b[1]-a[1])*(b[1]-a[1]); } // TODO: make a faster one assuming the elements are already oriented int feenox_mesh_compute_outward_normal(element_t *element, double n[3]) { // double local_n[3] = {n[0], n[1], n[2]}; // element_t *local_element = calloc(1, sizeof(element_t)); // memcpy(local_element, element, sizeof(element_t)); // TODO: a method linked to the element type if (element->type->dim == 0) { n[0] = 1; n[1] = 0; n[2] = 0; } else if (element->type->dim == 1) { // WATCH out! this does not work with lines which do not lie on the xy plane! double module = feenox_mesh_subtract_module(element->node[1]->x, element->node[0]->x); n[0] = -(element->node[1]->x[1] - element->node[0]->x[1])/module; n[1] = +(element->node[1]->x[0] - element->node[0]->x[0])/module; n[2] = 0; } else if (element->type->dim == 2) { double a[3] = {0,0,0}; double b[3] = {0,0,0}; feenox_mesh_subtract(element->node[0]->x, element->node[1]->x, a); feenox_mesh_subtract(element->node[0]->x, element->node[2]->x, b); feenox_mesh_normalized_cross(a, b, n); } else if (element->type->dim == 3) { feenox_push_error_message("trying to compute the outward normal of a volume (element %d)", element->tag); return FEENOX_ERROR; } // if there's only one volumetric element, we check if n is the outward normal // if there's none (or more than one) then we rely on the element orientation if (feenox_mesh_count_element_volumetric_neighbors(element) == 1) { // first compute the center of the surface element double surface_center[3] = {0,0,0}; feenox_call(feenox_mesh_compute_element_barycenter(element, surface_center)); // then the center of the volume element element_t *volumetric_neighbor = NULL; volumetric_neighbor = feenox_mesh_find_element_volumetric_neighbor(element); double volumetric_neighbor_center[3] = {0,0,0}; feenox_call(feenox_mesh_compute_element_barycenter(volumetric_neighbor, volumetric_neighbor_center)); // compute the product between the proposed normal and the difference between these two // if the product is positive, invert the normal if (feenox_mesh_subtract_dot(volumetric_neighbor_center, surface_center, n) > 0) { n[0] = -n[0]; n[1] = -n[1]; n[2] = -n[2]; } } // update nx ny and nz feenox_var_value(feenox.mesh.vars.arr_n[0]) = n[0]; feenox_var_value(feenox.mesh.vars.arr_n[1]) = n[1]; feenox_var_value(feenox.mesh.vars.arr_n[2]) = n[2]; return FEENOX_OK; } feenox-1.1/src/mesh/interpolate.c0000644000175000017500000003004314773607165014015 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related function interpolation routines * * Copyright (C) 2014--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" struct mesh_interp_params { element_t *element; const double *x; }; double feenox_mesh_interpolate_function_node(struct function_t *this, const double *x) { if (this->vector_value == NULL) { return 0; } // find the nearest node node_t *nearest_node = feenox_mesh_find_nearest_node(this->mesh, x); // check is it is close enough to a node switch (this->mesh->dim) { case 1: if (gsl_pow_2(fabs(x[0]-nearest_node->x[0])) < gsl_pow_2(this->multidim_threshold)) { return feenox_vector_get(this->vector_value, nearest_node->index_mesh); } break; case 2: if (feenox_mesh_subtract_squared_module2d(x, nearest_node->x) < gsl_pow_2(this->multidim_threshold)) { return feenox_vector_get(this->vector_value, nearest_node->index_mesh); } break; case 3: if (feenox_mesh_subtract_squared_module(x, nearest_node->x) < gsl_pow_2(this->multidim_threshold)) { return feenox_vector_get(this->vector_value, nearest_node->index_mesh); } break; } element_t *element = NULL; double xi[3] = {0, 0, 0}; // vector with the local coordinates within the element if ((element = feenox_mesh_find_element(this->mesh, nearest_node, x)) != NULL) { if (feenox_mesh_interp_solve_for_r(element, x, xi) != FEENOX_OK) { return 0; } } else { // should we return the nearest node value? return feenox_vector_get(this->vector_value, nearest_node->index_mesh); } // compute the interpolation double y = 0; if (this->spatial_derivative_of == NULL) { for (int j = 0; j < element->type->nodes; j++) { y += element->type->h(j, xi) * feenox_vector_get(this->vector_value, element->node[j]->index_mesh); } } else { gsl_matrix *B = feenox_fem_compute_B(element, xi); for (int j = 0; j < element->type->nodes; j++) { y += gsl_matrix_get(B, this->spatial_derivative_with_respect_to, j) * feenox_vector_get(this->spatial_derivative_of->vector_value, element->node[j]->index_mesh); } gsl_matrix_free(B); } return y; } int feenox_mesh_interp_solve_for_r(element_t *this, const double *x, double *r) { int gsl_status; int m; size_t iter = 0; struct mesh_interp_params p; gsl_vector *test; gsl_multiroot_fdfsolver *s; const gsl_multiroot_fdfsolver_type *T; gsl_multiroot_function_fdf fun = {&feenox_mesh_interp_residual, &feenox_mesh_interp_jacob, &feenox_mesh_interp_residual_jacob, this->type->dim, &p}; if (this->type->id == ELEMENT_TYPE_TETRAHEDRON4 || this->type->id == ELEMENT_TYPE_TETRAHEDRON10) { // the tetrahedron is an easy one (it's linear) // usually using this for tet10 is good enough // TODO: check error feenox_mesh_compute_r_tetrahedron(this, x, r); } else { p.element = this; p.x = x; test = gsl_vector_calloc(this->type->dim); // guess initial cero // T = gsl_multiroot_fsolver_hybrids; // T = gsl_multiroot_fsolver_hybrid; // T = gsl_multiroot_fsolver_dnewton; // T = gsl_multiroot_fsolver_broyden; T = gsl_multiroot_fdfsolver_gnewton; s = gsl_multiroot_fdfsolver_alloc (T, this->type->dim); gsl_multiroot_fdfsolver_set (s, &fun, test); do { iter++; if ((gsl_status = gsl_multiroot_fdfsolver_iterate(s)) != GSL_SUCCESS) { return FEENOX_ERROR; } gsl_status = gsl_multiroot_test_residual(s->f, feenox_var_value(feenox.mesh.vars.eps)); } while (gsl_status == GSL_CONTINUE && iter < 10); for (m = 0; m < this->type->dim; m++) { r[m] = gsl_vector_get(gsl_multiroot_fdfsolver_root(s), m); } gsl_vector_free(test); gsl_multiroot_fdfsolver_free(s); } return FEENOX_OK; } // vemos que r hace que las x se interpolen exactamente (isoparametricos) int feenox_mesh_interp_residual(const gsl_vector *test, void *params, gsl_vector *residual) { int i, j; double xi; element_t *element = ((struct mesh_interp_params *)params)->element; const double *x = ((struct mesh_interp_params *)params)->x; for (i = 0; i < element->type->dim; i++) { xi = x[i]; for (j = 0; j< element->type->nodes; j++) { xi -= element->type->h(j, (double *)gsl_vector_const_ptr(test, 0)) * element->node[j]->x[i]; } gsl_vector_set(residual, i, xi); } return GSL_SUCCESS; } int feenox_mesh_interp_jacob(const gsl_vector *test, void *params, gsl_matrix *J) { int i, j, k; double xi; element_t *element = ((struct mesh_interp_params *)params)->element; for (i = 0; i < element->type->dim; i++) { for (j = 0; j < element->type->dim; j++) { xi = 0; for (k = 0; k < element->type->nodes; k++) { // es negativo por como definimos el residuo // el cast explicito es para sacarnos de encima el const xi -= element->type->dhdxi(k, j, (double *)gsl_vector_const_ptr(test, 0)) * element->node[k]->x[i]; } gsl_matrix_set(J, i, j, xi); } } return GSL_SUCCESS; } int feenox_mesh_interp_residual_jacob(const gsl_vector *test, void *params, gsl_vector *residual, gsl_matrix * J) { // can this be improved? feenox_mesh_interp_residual(test, params, residual); feenox_mesh_interp_jacob(test, params, J); return GSL_SUCCESS; } int feenox_mesh_compute_r_tetrahedron(element_t *this, const double *x, double *r) { if (this->type->id == ELEMENT_TYPE_TETRAHEDRON4 || this->type->id == ELEMENT_TYPE_TETRAHEDRON10) { // reference: eq (9.11) from AFEM.Ch09 // these are of size one because we have the equations with indices starting from one double dx[5][5]; double dy[5][5]; double dz[5][5]; for (int j = 0; j < 4; j++) { for (int j_prime = 0; j_prime < 4; j_prime++) { dx[j+1][j_prime+1] = this->node[j]->x[0] - this->node[j_prime]->x[0]; dy[j+1][j_prime+1] = this->node[j]->x[1] - this->node[j_prime]->x[1]; dz[j+1][j_prime+1] = this->node[j]->x[2] - this->node[j_prime]->x[2]; } } // these d* indices start from one double sixV = dx[2][1] * (dy[2][3] * dz[3][4] - dy[3][4] * dz[2][3] ) + dx[3][2] * (dy[3][4] * dz[1][2] - dy[1][2] * dz[3][4] ) + dx[4][3] * (dy[1][2] * dz[2][3] - dy[2][3] * dz[1][2]); // but the nodes and coordinates start from zero // sixV01 = this->node[1]->x[0] * (this->node[2]->x[1]*this->node[3]->x[2] - this->node[3]->x[1]*this->node[2]->x[2]) + this->node[2]->x[0] * (this->node[3]->x[1]*this->node[1]->x[2] - this->node[1]->x[1]*this->node[3]->x[2]) + this->node[3]->x[0] * (this->node[1]->x[1]*this->node[2]->x[2] - this->node[2]->x[1]*this->node[1]->x[2]); double sixV02 = this->node[0]->x[0] * (this->node[3]->x[1]*this->node[2]->x[2] - this->node[2]->x[1]*this->node[3]->x[2]) + this->node[2]->x[0] * (this->node[0]->x[1]*this->node[3]->x[2] - this->node[3]->x[1]*this->node[0]->x[2]) + this->node[3]->x[0] * (this->node[2]->x[1]*this->node[0]->x[2] - this->node[0]->x[1]*this->node[2]->x[2]); double sixV03 = this->node[0]->x[0] * (this->node[1]->x[1]*this->node[3]->x[2] - this->node[3]->x[1]*this->node[1]->x[2]) + this->node[1]->x[0] * (this->node[3]->x[1]*this->node[0]->x[2] - this->node[0]->x[1]*this->node[3]->x[2]) + this->node[3]->x[0] * (this->node[0]->x[1]*this->node[1]->x[2] - this->node[1]->x[1]*this->node[0]->x[2]); double sixV04 = this->node[0]->x[0] * (this->node[2]->x[1]*this->node[1]->x[2] - this->node[1]->x[1]*this->node[2]->x[2]) + this->node[1]->x[0] * (this->node[0]->x[1]*this->node[2]->x[2] - this->node[2]->x[1]*this->node[0]->x[2]) + this->node[2]->x[0] * (this->node[1]->x[1]*this->node[0]->x[2] - this->node[0]->x[1]*this->node[1]->x[2]); // back again from one // xi0 = 1.0/sixV * (sixV01 * 1 + (dy[4][2]*dz[3][2] - dy[3][2]*dz[4][2])*gsl_vector_get(x, 0) + (dx[3][2]*dz[4][2] - dx[4][2]*dz[3][2])*gsl_vector_get(x, 1) + (dx[4][2]*dy[3][2] - dx[3][2]*dy[4][2])*gsl_vector_get(x, 2)); r[0] = 1.0/sixV * (sixV02 * 1 + (dy[3][1]*dz[4][3] - dy[3][4]*dz[1][3])*x[0] + (dx[4][3]*dz[3][1] - dx[1][3]*dz[3][4])*x[1] + (dx[3][1]*dy[4][3] - dx[3][4]*dy[1][3])*x[2]); r[1] = 1.0/sixV * (sixV03 * 1 + (dy[2][4]*dz[1][4] - dy[1][4]*dz[2][4])*x[0] + (dx[1][4]*dz[2][4] - dx[2][4]*dz[1][4])*x[1] + (dx[2][4]*dy[1][4] - dx[1][4]*dy[2][4])*x[2]); r[2] = 1.0/sixV * (sixV04 * 1 + (dy[1][3]*dz[2][1] - dy[1][2]*dz[3][1])*x[0] + (dx[2][1]*dz[1][3] - dx[3][1]*dz[1][2])*x[1] + (dx[1][3]*dy[2][1] - dx[1][2]*dy[3][1])*x[2]); /* one = xi0 + gsl_vector_get(r,0) + gsl_vector_get(r,1) + gsl_vector_get(r,2); if (gsl_fcmp(one, 1.0, 1e-3) != 0) { printf("internal mismatch when computing canonical coordinates in element %d\n", this->id); return FEENOX_ERROR; } */ } else { feenox_push_error_message("not for element type %d", this->type->id) ; return FEENOX_ERROR; } return FEENOX_OK; } /* double mesh_interpolate_function_cell(struct function_t *function, const double *x) { int i; static cell_t *chosen_cell; node_t *nearest_node; element_list_item_t *associated_element; mesh_t *mesh = function->mesh; if (mesh->kd_nodes != NULL) { nearest_node = (node_t *)(kd_res_item_data(kd_nearest(mesh->kd_nodes, x))); chosen_cell = NULL; LL_FOREACH(nearest_node->associated_elements, associated_element) { if (associated_element->element->type->dim == mesh->bulk_dimensions && associated_element->element->type->point_in_element(associated_element->element, x)) { chosen_cell = associated_element->element->cell; break; } } } // primero probamos la ultima celda; if (chosen_cell == NULL || chosen_cell->element->type->point_in_element(chosen_cell->element, x) == 0) { chosen_cell = NULL; // y si no barremos hasta que lo encontramos for (i = 0; i < mesh->n_cells; i++) { if (mesh->cell[i].element->type->point_in_element(mesh->cell[i].element, x)) { chosen_cell = &mesh->cell[i]; break; } } } if (chosen_cell == NULL) { return 0; } return function->data_value[chosen_cell->id - 1]; } */ double feenox_function_property_eval(struct function_t *function, const double *x) { double y = 0; property_data_t *property_data = NULL; property_t *property = function->property; mesh_t *mesh = function->mesh; // if there is no mesh it could be that it has not been read // this is not necessarily an error if (mesh == NULL || mesh->n_nodes == 0) { return 1.0; } element_t *element = feenox_mesh_find_element(function->mesh, NULL, x); if (element != NULL && element->physical_group != NULL && element->physical_group->material != NULL) { HASH_FIND_STR(element->physical_group->material->property_datums, property->name, property_data); if (property_data != NULL) { feenox_var_value(feenox.mesh.vars.x) = x[0]; if (function->n_arguments > 1) { feenox_var_value(feenox.mesh.vars.y) = x[1]; if (function->n_arguments > 2) { feenox_var_value(feenox.mesh.vars.z) = x[2]; } } // finally evalaute the expression of the material found y = feenox_expression_eval(&property_data->expr); } } return y; } feenox-1.1/src/mesh/mesh.c0000644000175000017500000006047414773607165012436 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related routines * * Copyright (C) 2014--2024 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" int feenox_instruction_mesh_read(void *arg) { mesh_t *this = (mesh_t *)arg; if (this->initialized) { if (this->update_each_step == 0) { // we are not supposed to read the mesh all over again return FEENOX_OK; } else { // we have to re-read the mesh, but we already have one // so we get need to get rid of the current one feenox_mesh_free(this); } } #ifdef HAVE_PETSC if (feenox.pde.petscinit_called == PETSC_FALSE) { feenox_problem_parse_time_init(); } #endif // read the actual mesh with a format-dependent reader (who needs C++?) feenox_call(this->reader(this)); // check that the number of partitions and ranks match if (feenox.mpi_size < 2) { this->mpi_matches_partitions = mpi_matches_partitions_serial; } else if (this->n_partitions > 0 && this->n_partitions == feenox.mpi_size) { this->mpi_matches_partitions = mpi_matches_partitions_one_to_one; } else if (this->n_partitions > 0 && (this->n_partitions % feenox.mpi_size) == 0) { this->mpi_matches_partitions = mpi_matches_partitions_one_to_many; } else { this->mpi_matches_partitions = mpi_matches_partitions_no; } // check if we found everything node_data_t *node_data = NULL; LL_FOREACH(this->node_datas, node_data) { if (node_data->found == 0) { feenox_push_error_message("requested function '%s' was not found in the mesh '%s'", node_data->name_in_mesh, this->file->name); return FEENOX_ERROR; } } // sweep nodes and define the bounding box // TODO: see if this can go inside one of the kd loops this->bounding_box_min.index_mesh = SIZE_MAX; this->bounding_box_max.index_mesh = SIZE_MAX; this->bounding_box_min.index_dof = NULL; this->bounding_box_max.index_dof = NULL; this->bounding_box_min.element_list = NULL; this->bounding_box_max.element_list = NULL; double scale_factor = feenox_expression_eval(&this->scale_factor); double offset[3]; offset[0] = feenox_expression_eval(&this->offset_x); offset[1] = feenox_expression_eval(&this->offset_y); offset[2] = feenox_expression_eval(&this->offset_z); double x_max[3] = {-MESH_INF, -MESH_INF, -MESH_INF}; double x_min[3] = {+MESH_INF, +MESH_INF, +MESH_INF}; unsigned int dim = 0; for (size_t j = 0; j < this->n_nodes; j++) { for (unsigned int m = 0; m < 3; m++) { if (scale_factor != 0 || offset[m] != 0) { this->node[j].x[m] -= offset[m]; this->node[j].x[m] *= scale_factor; } if (dim < 1 && fabs(this->node[j].x[0]) > MESH_TOL) { dim = 1; } if (dim < 2 && fabs(this->node[j].x[1]) > MESH_TOL) { dim = 2; } if (dim < 3 && fabs(this->node[j].x[2]) > MESH_TOL) { dim = 3; } if (this->node[j].x[m] < x_min[m]) { x_min[m] = this->bounding_box_min.x[m] = this->node[j].x[m]; } if (this->node[j].x[m] > x_max[m]) { x_max[m] = this->bounding_box_max.x[m] = this->node[j].x[m]; } } } feenox_call(feenox_vector_init(feenox.mesh.vars.bbox_min, FEENOX_VECTOR_NO_INITIAL)); gsl_vector_set(feenox.mesh.vars.bbox_min->value, 0, x_min[0]); gsl_vector_set(feenox.mesh.vars.bbox_min->value, 1, x_min[1]); gsl_vector_set(feenox.mesh.vars.bbox_min->value, 2, x_min[2]); feenox_call(feenox_vector_init(feenox.mesh.vars.bbox_max, FEENOX_VECTOR_NO_INITIAL)); gsl_vector_set(feenox.mesh.vars.bbox_max->value, 0, x_max[0]); gsl_vector_set(feenox.mesh.vars.bbox_max->value, 1, x_max[1]); gsl_vector_set(feenox.mesh.vars.bbox_max->value, 2, x_max[2]); // allocate arrays for the elements that belong to a physical group // (arrays are more efficient than a linked list) physical_group_t *physical_group = NULL; for (physical_group = this->physical_groups; physical_group != NULL; physical_group = physical_group->hh.next) { if (physical_group->n_elements != 0) { feenox_check_alloc(physical_group->element = calloc(physical_group->n_elements, sizeof(size_t))); } // check out what the highest tag is to allocate temporary arrays if (physical_group->tag > this->physical_tag_max) { this->physical_tag_max = physical_group->tag; } } for (size_t i = 0; i < this->n_elements; i++) { // check the dimension of the element, the higher is the topological dim of the mes if (this->element[i].type->dim > this->dim_topo) { this->dim_topo = this->element[i].type->dim; } // same for order if (this->element[i].type->order > this->order) { this->order = this->element[i].type->order; } // remember the element with the largest number of nodes if (this->element[i].type->nodes > this->max_nodes_per_element) { this->max_nodes_per_element = this->element[i].type->nodes; } // and the one with most neighbors if (this->element[i].type->faces > this->max_faces_per_element) { this->max_faces_per_element = this->element[i].type->faces; } // create the list of element for the entity physical_group = this->element[i].physical_group; if (physical_group != NULL && physical_group->i_element < physical_group->n_elements) { physical_group->element[physical_group->i_element++] = i; } } // check the dimensions match if (this->dim == 0) { this->dim = dim; } else if (this->dim != dim) { feenox_push_error_message("mesh '%s' has DIMENSION %d but the highest-dimensional element has %d", this->file->name, this->dim, dim); return FEENOX_ERROR; } // fill an array of nodes that can be used as arguments of functions if (this->nodes_argument == NULL) { feenox_call(feenox_mesh_create_nodes_argument(this)); } // see if we need to create cells and allocate space for arguments feenox.mesh.need_cells |= feenox.mesh.vars.cells->used; if (feenox.mesh.need_cells) { feenox_call(feenox_mesh_element2cell(this)); feenox_check_alloc(this->cells_argument = calloc(this->dim, sizeof(double *))); for (unsigned int m = 0; m < this->dim; m++) { feenox_check_alloc(this->cells_argument[m] = gsl_vector_alloc(this->n_cells)); for (size_t i = 0; i < this->n_cells; i++) { gsl_vector_set(this->cells_argument[m], i, this->cell[i].x[m]); } } } if (this->n_cells == 0) { this->n_cells = this->n_elements_per_dim[this->dim]; } if (this == feenox.mesh.mesh_main) { feenox_var_value(feenox.mesh.vars.cells) = (double)this->n_cells; feenox_var_value(feenox.mesh.vars.nodes) = (double)this->n_nodes; feenox_var_value(feenox.mesh.vars.elements) = (double)this->n_elements; } // see if there was any un-read scalar function // TODO: check for vectors /* node_data_t *node_data = NULL; LL_FOREACH(this->node_datas, node_data) { if (node_data->function->mesh == NULL) { feenox_push_error_message("cannot find data for function '%s' in mesh '%s'", node_data->name_in_mesh, this->file->name); return FEENOX_ERROR; } } */ // compute the volume (or area or length) and center of gravity of the groups // but only if the variable groupname_vol or the vector groupname_cog // are used in one of the expressions for (physical_group = this->physical_groups; physical_group != NULL; physical_group = physical_group->hh.next) { if ((physical_group->var_volume != NULL && physical_group->var_volume->used) || (physical_group->vector_cog != NULL && physical_group->vector_cog->used)) { // TODO: why dont we use feenox_physical_group_compute_volume()? physical_group->volume = 0; physical_group->cog[0] = 0; physical_group->cog[1] = 0; physical_group->cog[2] = 0; for (size_t i = 0; i < physical_group->n_elements; i++) { element_t *element = &this->element[physical_group->element[i]]; for (unsigned int q = 0; q < element->type->gauss[this->integration].Q; q++) { double wdet = feenox_fem_compute_w_det_at_gauss_integration(element, q, this->integration); gsl_matrix *H_c = feenox_fem_compute_H_c_at_gauss(element, q, this->integration); for (unsigned int j = 0; j < element->type->nodes; j++) { double wdeth = wdet * gsl_matrix_get(H_c, 0, j); physical_group->volume += wdeth ; for (unsigned int d = 0; d < 3; d++) { physical_group->cog[d] += wdeth * element->node[j]->x[d]; } } } } feenox_var_value(physical_group->var_volume) = physical_group->volume; for (size_t m = 0; m < 3; m++) { physical_group->cog[m] /= physical_group->volume; } if (physical_group->vector_cog->initialized == 0) { feenox_call(feenox_vector_init(physical_group->vector_cog, FEENOX_VECTOR_NO_INITIAL)); } gsl_vector_set(physical_group->vector_cog->value, 0, physical_group->cog[0]); gsl_vector_set(physical_group->vector_cog->value, 1, physical_group->cog[1]); gsl_vector_set(physical_group->vector_cog->value, 2, physical_group->cog[2]); } } // create a k-dimensional tree and try to figure out what the maximum number of neighbours each node has if (this->kd_nodes == NULL) { this->kd_nodes = kd_create(this->dim); for (size_t j = 0; j < this->n_nodes; j++) { kd_insert(this->kd_nodes, this->node[j].x, &this->node[j]); size_t first_neighbor_nodes = 1; // el nodo mismo element_ll_t *element_item; LL_FOREACH(this->node[j].element_list, element_item) { if (element_item->element->type->dim == this->dim) { if (element_item->element->type->id == ELEMENT_TYPE_TETRAHEDRON4 || element_item->element->type->id == ELEMENT_TYPE_TETRAHEDRON10) { // los tetrahedros son "buenos" y con esta cuenta nos ahorramos memoria first_neighbor_nodes += (element_item->element->type->nodes) - (element_item->element->type->nodes_per_face); } else { // si tenemos elementos generales, hay que allocar mas memoria first_neighbor_nodes += (element_item->element->type->nodes) - 1; } } } if (first_neighbor_nodes > this->max_first_neighbor_nodes) { this->max_first_neighbor_nodes = first_neighbor_nodes; } } } // expose the coordinates of the nodes on vectors mesh_x mesh_y mesh_z // TODO: mesh_name_x etc. // TODO: make an alias from mesh_x to mesh_name_x (and cells nodes etc) for (unsigned int d = 0; d < 3; d++) { char *name = NULL; feenox_check_minusone(asprintf(&name, "mesh_%c", 'x'+d)); vector_t *vec_coords = feenox_get_vector_ptr(name); if (vec_coords != NULL && feenox_vector_get_size(vec_coords) == 0) { feenox_call(feenox_vector_set_size(vec_coords, this->n_nodes)); feenox_call(feenox_vector_init(vec_coords, FEENOX_VECTOR_NO_INITIAL)); feenox_realloc_vector_ptr(vec_coords, gsl_vector_ptr(this->nodes_argument[0], 0), 0); } feenox_free(name); } // loop over all functions and see if some of them needs us function_t *function = NULL; for (function = feenox.functions; function != NULL; function = function->hh.next) { if (function->mesh == this && function->vector_argument != NULL) { // TODO: cells if (function->data_size == 0) { function->data_size = this->n_nodes; } else if (function->data_size != this->n_nodes) { feenox_push_error_message("internal mismatch, data size = %ld != n_ndoes = %ld", function->data_size, this->n_nodes); } for (unsigned int d = 0; d < this->dim; d++) { feenox_call(feenox_vector_set_size(function->vector_argument[d], function->data_size)); feenox_call(feenox_vector_init(function->vector_argument[d], FEENOX_VECTOR_NO_INITIAL)); feenox_realloc_vector_ptr(function->vector_argument[d], gsl_vector_ptr(this->nodes_argument[d], 0), 0); } function->vector_value->size = function->data_size; feenox_call(feenox_vector_init(function->vector_value, FEENOX_VECTOR_NO_INITIAL)); } } this->initialized = 1; return FEENOX_OK; } node_t *feenox_mesh_find_nearest_node(mesh_t *this, const double *x) { // TODO: if kd_nodes is null, initialize it here void *res_item = kd_nearest(this->kd_nodes, x); node_t *node = (node_t *)(kd_res_item(res_item, NULL)); kd_res_free(res_item); return node; } element_t *feenox_mesh_find_element(mesh_t *mesh, node_t *nearest_node, const double *x) { // try the last chosen element element_t *element = mesh->last_chosen_element; // test if the last (cached) chosen_element is the one if (element == NULL || element->type->point_inside(element, x) == 0) { if (nearest_node == NULL) { nearest_node = feenox_mesh_find_nearest_node(mesh, x); } element = NULL; element_ll_t *element_item = NULL; LL_FOREACH(nearest_node->element_list, element_item) { if (element_item->element->type->dim == mesh->dim && element_item->element->type->point_inside(element_item->element, x)) { return element_item->element; } } } if (nearest_node == NULL) { nearest_node = feenox_mesh_find_nearest_node(mesh, x); } if (element == NULL && feenox_var_value(feenox.mesh.vars.mesh_failed_interpolation_factor) > 0) { // in some cases (a small percentage of a reasonable mesh) none of the elements associated // to the nearest node contains the point se we have to increase the radius of search // the new radius is either mesh_failed_interpolation_factor or 2 double dist2 = 0; switch (mesh->dim) { case 1: dist2 = gsl_pow_2(fabs(x[0] - nearest_node->x[0])); break; case 2: dist2 = feenox_mesh_subtract_squared_module2d(x, nearest_node->x); break; case 3: dist2 = feenox_mesh_subtract_squared_module(x, nearest_node->x); break; } //#define CACHED #ifdef CACHED // this is a hash of elements we already saw so we do not need to check for them many times struct cached_element { int id; UT_hash_handle hh; }; struct cached_element *cache = NULL; struct cached_element *tmp = NULL; struct cached_element *cached_element = NULL; #endif // we ask for the nodes which are within the "failed" factor times the last one struct kdres *presults = kd_nearest_range(mesh->kd_nodes, x, feenox_var_value(feenox.mesh.vars.mesh_failed_interpolation_factor)*sqrt(dist2)); while(element == NULL && kd_res_end(presults) == 0) { node_t *second_nearest_node = (node_t *)(kd_res_item(presults, NULL)); element_ll_t *element_item = NULL; LL_FOREACH(second_nearest_node->element_list, element_item) { #ifdef CACHED // this "cached" scheme seems to be slower cached_element = NULL; HASH_FIND_INT(cache, &element_item->element->tag, cached_element); if (cached_element == NULL) { struct cached_element *cached_element = NULL; feenox_check_alloc_null(cached_element = malloc(sizeof(struct cached_element))); cached_element->id = element_item->element->tag; HASH_ADD_INT(cache, id, cached_element); if (element_item->element->type->dim == mesh->dim && element_item->element->type->point_inside(element_item->element, x)) { element = element_item->element; break; } } #else if (element_item->element->type->dim == mesh->dim && element_item->element->type->point_inside(element_item->element, x)) { element = element_item->element; break; } #endif } kd_res_next(presults); } kd_res_free(presults); #ifdef CACHED HASH_ITER(hh, cache, cached_element, tmp) { HASH_DEL(cache, cached_element); feenox_free(cached_element); } #endif } /* if (element == NULL) { // if still we did not find anything, switch (mesh->dim) { case 1: dist2 = gsl_pow_2(fabs(x[0] - x_nearest[0])); break; case 2: dist2 = feenox_mesh_subtract_squared_module2d(x, x_nearest); break; case 3: dist2 = feenox_mesh_subtract_squared_module(x, x_nearest); break; } // just what is close if (dist2 < DEFAULT_MULTIDIM_INTERPOLATION_THRESHOLD) { element_ll_t *element_item = NULL; LL_FOREACH(nearest_node->element_list, element_item) { if (element_item->element->type->dim == mesh->dim) { element = element_item->element; break; } } } } */ // update cache mesh->last_chosen_element = element; return element; } // free all resources allocated when reading a mesh but not the rest // of the things that are in the input files (physical groups, etc) int feenox_mesh_free(mesh_t *mesh) { physical_group_t *physical_group; element_ll_t *element_item, *element_tmp; int i, j, d; /* if (mesh->cell != NULL) { for (i = 0; i < mesh->n_cells; i++) { if (mesh->cell[i].index != NULL) { feenox_free(mesh->cell[i].index); } if (mesh->cell[i].neighbor != NULL) { for(int k = 0; kcell[i].n_neighbors; k++) { if(mesh->cell[i].neighbor[k].face_coord != NULL) { feenox_free(mesh->cell[i].neighbor[k].face_coord); } } feenox_free(mesh->cell[i].neighbor); } if (mesh->cell[i].ifaces != NULL) { for (j = 0; j < mesh->cell[i].element->type->faces; j++) { feenox_free(mesh->cell[i].ifaces[j]); } feenox_free(mesh->cell[i].ifaces); } if (mesh->cell[i].ineighbor != NULL) { feenox_free(mesh->cell[i].ineighbor); } } for (d = 0; d < mesh->spatial_dimensions; d++) { feenox_free(mesh->cells_argument[d]); } feenox_free(mesh->cells_argument); feenox_free(mesh->cell); } mesh->cell = NULL; mesh->n_cells = 0; */ mesh->max_faces_per_element = 0; // elements if (mesh->element != NULL) { for (i = 0; i < mesh->n_elements; i++) { if (mesh->element[i].node != NULL) { for (j = 0; j < mesh->element[i].type->nodes; j++) { LL_FOREACH_SAFE(mesh->element[i].node[j]->element_list, element_item, element_tmp) { LL_DELETE(mesh->element[i].node[j]->element_list, element_item); feenox_free(element_item); } if (mesh->element[i].dphidx_node != NULL && mesh->element[i].dphidx_node[j] != NULL) { gsl_matrix_free(mesh->element[i].dphidx_node[j]); } if (mesh->element[i].property_at_node != NULL && mesh->element[i].property_at_node[j] != NULL) { feenox_free(mesh->element[i].property_at_node[j]); } } feenox_free(mesh->element[i].node); if (mesh->element[i].dphidx_node != NULL) { feenox_free(mesh->element[i].dphidx_node); } if (mesh->element[i].property_at_node != NULL) { feenox_free(mesh->element[i].property_at_node); } } /* if (mesh->element[i].type != NULL) { for (v = 0; v < mesh->element[i].type->gauss[mesh->integration].Q; v++) { if (mesh->element[i].x != NULL && mesh->element[i].x[v] != NULL) { feenox_free(mesh->element[i].x[v]); } if (mesh->element[i].H_c != NULL && mesh->element[i].H_c[v] != NULL) { gsl_matrix_free(mesh->element[i].H_c[v]); } if (mesh->element[i].B_c != NULL && mesh->element[i].B_c[v] != NULL) { gsl_matrix_free(mesh->element[i].B_c[v]); } if (mesh->element[i].J != NULL && mesh->element[i].J[v] != NULL) { gsl_matrix_free(mesh->element[i].J[v]); } if (mesh->element[i].invJ != NULL && mesh->element[i].invJ[v] != NULL) { gsl_matrix_free(mesh->element[i].invJ[v]); } if (mesh->element[i].B != NULL && mesh->element[i].B[v] != NULL) { gsl_matrix_free(mesh->element[i].B[v]); } if (mesh->element[i].dphidx_gauss != NULL && mesh->element[i].dphidx_gauss[v] != NULL) { gsl_matrix_free(mesh->element[i].dphidx_gauss[v]); } } } */ /* if (mesh->element[i].w != NULL) { feenox_free(mesh->element[i].w); } if (mesh->element[i].x != NULL) { feenox_free(mesh->element[i].x); } if (mesh->element[i].H_c != NULL) { feenox_free(mesh->element[i].H_c); } if (mesh->element[i].B_c != NULL) { feenox_free(mesh->element[i].B_c); } if (mesh->element[i].J != NULL) { feenox_free(mesh->element[i].J); } if (mesh->element[i].invJ != NULL) { feenox_free(mesh->element[i].invJ); } if (mesh->element[i].B != NULL) { feenox_free(mesh->element[i].B); } if (mesh->element[i].dphidx_gauss != NULL) { feenox_free(mesh->element[i].dphidx_gauss); } #ifdef HAVE_PETSC if (mesh->element[i].l != NULL) { feenox_free(mesh->element[i].l); } #endif */ } feenox_free(mesh->element); } mesh->element = NULL; mesh->n_elements = 0; mesh->max_nodes_per_element = 0; if (mesh->kd_nodes != NULL) { kd_free(mesh->kd_nodes); } mesh->kd_nodes = NULL; // nodes if (mesh->nodes_argument != NULL) { for (d = 0; d < mesh->dim; d++) { feenox_free(mesh->nodes_argument[d]); } feenox_free(mesh->nodes_argument); } if (mesh->tag2index != NULL) { free(mesh->tag2index); } if (mesh->node != NULL) { for (j = 0; j < mesh->n_nodes; j++) { if (mesh->node[j].index_dof != NULL) { free (mesh->node[j].index_dof); } if (mesh->node[j].phi != NULL) { feenox_free(mesh->node[j].phi); } if (mesh->node[j].dphidx != NULL) { gsl_matrix_free(mesh->node[j].dphidx); } /* if (mesh->node[j].delta_dphidx != NULL) { gsl_matrix_free(mesh->node[j].delta_dphidx); } */ if (mesh->node[j].flux != NULL) { feenox_free(mesh->node[j].flux); } } feenox_free(mesh->node); } mesh->node = NULL; mesh->n_nodes = 0; mesh->max_first_neighbor_nodes = 1; mesh->last_chosen_element = NULL; for (physical_group = mesh->physical_groups; physical_group != NULL; physical_group = physical_group->hh.next) { physical_group->n_elements = 0; physical_group->i_element = 0; feenox_free(physical_group->element); } /* for (d = 0; d < 4; d++) { HASH_ITER(hh_tag[d], mesh->physical_groups_by_tag[d], physical_group, physical_group_tmp) { HASH_DELETE(hh_tag[d], mesh->physical_groups_by_tag[d], physical_group); } } HASH_ITER(hh, mesh->physical_groups, physical_group, physical_group_tmp) { HASH_DEL(mesh->physical_groups, physical_group); // si hacemos free de la entidad en si entonces perdemos la informacion sobre BCs // TODO: pensar! // feenox_free(physical_group->name); // feenox_free(physical_group->element); // feenox_free(physical_group); } */ mesh->initialized = 0; return FEENOX_OK; } mesh_t *feenox_get_mesh_ptr(const char *name) { mesh_t *mesh = NULL; if (name != NULL) { HASH_FIND_STR(feenox.mesh.meshes, name, mesh); } return mesh; } int feenox_mesh_create_nodes_argument(mesh_t *this) { feenox_check_alloc(this->nodes_argument = calloc(this->dim, sizeof(double *))); for (unsigned int d = 0; d < this->dim; d++) { feenox_check_alloc(this->nodes_argument[d] = gsl_vector_alloc(this->n_nodes)); for (size_t j = 0; j < this->n_nodes; j++) { gsl_vector_set(this->nodes_argument[d], j, this->node[j].x[d]); } } return FEENOX_OK; } feenox-1.1/src/mesh/extrema.c0000644000175000017500000002630214773607165013137 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related routines for finding extrema * * Copyright (C) 2016--2021 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include #define FEENOX_EXTREMA_MIN 0 #define FEENOX_EXTREMA_MAX 1 #define feenox_store_extrema_function(minmax, ind, val) \ value[minmax] = val; \ index[minmax] = ind; \ x[minmax] = feenox_vector_get(function->vector_argument[0], ind); \ y[minmax] = (function->n_arguments > 1)?feenox_vector_get(function->vector_argument[1], ind) : 0; \ z[minmax] = (function->n_arguments > 2)?feenox_vector_get(function->vector_argument[2], ind) : 0; #define feenox_store_extrema_mesh(minmax, ind, val, where) \ value[minmax] = val; \ index[minmax] = ind; \ x[minmax] = where[0]; \ y[minmax] = where[1]; \ z[minmax] = where[2]; int feenox_instruction_mesh_find_extrema(void *arg) { double value[2] = {+INFTY, -INFTY}; double x[2] = {0, 0}; double y[2] = {0, 0}; double z[2] = {0, 0}; size_t index[2] = {0, 0}; mesh_find_extrema_t *mesh_find_extrema = (mesh_find_extrema_t *)arg; mesh_t *mesh = mesh_find_extrema->mesh; physical_group_t *physical_group = mesh_find_extrema->physical_group; function_t *function = mesh_find_extrema->function; expr_t *expr = &mesh_find_extrema->expr; double val = 0; if (physical_group == NULL) { if (function != NULL) { if (function->mesh == mesh && ((mesh_find_extrema->field_location == field_location_cells && function->type == function_type_pointwise_mesh_cell) || (mesh_find_extrema->field_location == field_location_nodes && function->type == function_type_pointwise_mesh_node))) { for (size_t i = 0; i < function->data_size; i++) { val = feenox_vector_get(function->vector_value, i); if (val > value[FEENOX_EXTREMA_MAX]) { feenox_store_extrema_function(FEENOX_EXTREMA_MAX, i, val); } if (val < value[FEENOX_EXTREMA_MIN]) { feenox_store_extrema_function(FEENOX_EXTREMA_MIN, i, val); } } } else { // unless explicitly asked, check for all nodes, cells and gauss if (mesh_find_extrema->field_location == field_location_default || mesh_find_extrema->field_location == field_location_cells) { if (mesh->cell == NULL) { feenox_call(feenox_mesh_element2cell(mesh)); } for (size_t i = 0; i < mesh->n_cells; i++) { val = feenox_function_eval(function, mesh->cell[i].x); if (val > value[FEENOX_EXTREMA_MAX]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MAX, i, val, mesh->cell[i].x); } if (val < value[FEENOX_EXTREMA_MIN]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MIN, i, val, mesh->cell[i].x); } } } if (mesh_find_extrema->field_location == field_location_default || mesh_find_extrema->field_location == field_location_nodes) { for (size_t i = 0; i < mesh->n_nodes; i++) { val = feenox_function_eval(function, mesh->node[i].x); if (val > value[FEENOX_EXTREMA_MAX]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MAX, i, val, mesh->node[i].x); } if (val < value[FEENOX_EXTREMA_MIN]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MIN, i, val, mesh->node[i].x); } } } if (mesh_find_extrema->field_location == field_location_default || mesh_find_extrema->field_location == field_location_gauss) { for (size_t i = 0; i < mesh->n_elements; i++) { element_t *element = &mesh->element[i]; if (element->type->dim == mesh->dim) { for (unsigned int q = 0; q < element->type->gauss[mesh->integration].Q; q++) { double *x = feenox_fem_compute_x_at_gauss(element, q, mesh->integration); val = feenox_function_eval(function, x); if (val > value[FEENOX_EXTREMA_MAX]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MAX, i, val, x); } if (val < value[FEENOX_EXTREMA_MIN]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MIN, i, val, x); } } } } } } } else { // if we are here we are trying to find the extrema of an expression // we cannot know whether they are going to be if (mesh_find_extrema->field_location == field_location_default || mesh_find_extrema->field_location == field_location_cells) { if (mesh->cell == NULL) { feenox_call(feenox_mesh_element2cell(mesh)); } for (size_t i = 0; i < mesh->n_cells; i++) { feenox_fem_update_coord_vars(mesh->cell[i].x); val = feenox_expression_eval(expr); if (val > value[FEENOX_EXTREMA_MAX]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MAX, i, val, mesh->cell[i].x); } if (val < value[FEENOX_EXTREMA_MIN]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MIN, i, val, mesh->cell[i].x); } } } if (mesh_find_extrema->field_location == field_location_default || mesh_find_extrema->field_location == field_location_nodes) { for (size_t i = 0; i < mesh->n_nodes; i++) { feenox_fem_update_coord_vars(mesh->node[i].x); val = feenox_expression_eval(expr); if (val > value[FEENOX_EXTREMA_MAX]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MAX, i, val, mesh->node[i].x); } if (val < value[FEENOX_EXTREMA_MIN]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MIN, i, val, mesh->node[i].x); } } } if (mesh_find_extrema->field_location == field_location_default || mesh_find_extrema->field_location == field_location_gauss) { for (size_t i = 0; i < mesh->n_elements; i++) { element_t *element = &mesh->element[i]; if (element->type->dim == mesh->dim) { for (unsigned int q = 0; q < element->type->gauss[mesh->integration].Q; q++) { double *x = feenox_fem_compute_x_at_gauss_and_update_var(element, q, mesh->integration); val = feenox_expression_eval(expr); if (val > value[FEENOX_EXTREMA_MAX]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MAX, i, val, x); } if (val < value[FEENOX_EXTREMA_MIN]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MIN, i, val, x); } } } } } } } else { if (function != NULL) { // TODO: these if (mesh_find_extrema->field_location == field_location_cells) { if (function->type == function_type_pointwise_mesh_cell && function->mesh == mesh) { feenox_push_error_message("FIND_EXTREMA with OVER on a cell-centered function not implemented yet."); return FEENOX_ERROR; } else { feenox_push_error_message("FIND_EXTREMA with OVER on a cell-centered generic function not implemented yet."); return FEENOX_ERROR; } } else { if (function->type == function_type_pointwise_mesh_node && function->mesh == mesh) { size_t i = 0; unsigned int j = 0; for (i = 0; i < physical_group->n_elements; i++) { element_t *element = &mesh->element[physical_group->element[i]]; for (j = 0; j < element->type->nodes; j++) { val = feenox_vector_get(function->vector_value, element->node[j]->index_mesh); if (val > value[FEENOX_EXTREMA_MAX]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MAX, element->node[j]->index_mesh, val, element->node[j]->x); } if (val < value[FEENOX_EXTREMA_MIN]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MIN, element->node[j]->index_mesh, val, element->node[j]->x); } } } } else { feenox_push_error_message("FIND_EXTREMA with OVER on a node-centered generic function not implemented yet."); return FEENOX_ERROR; } } } else { if (mesh_find_extrema->field_location == field_location_cells) { feenox_push_error_message("FIND_EXTREMA with OVER on a cell-centered expression not implemented yet."); return FEENOX_ERROR; } else { size_t i = 0; unsigned int j = 0; for (i = 0; i < physical_group->n_elements; i++) { element_t *element = &mesh->element[physical_group->element[i]]; for (j = 0; j < element->type->nodes; j++) { feenox_fem_update_coord_vars(element->node[j]->x); val = feenox_expression_eval(expr); if (val > value[FEENOX_EXTREMA_MAX]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MAX, element->node[j]->index_mesh, val, element->node[j]->x); } if (val < value[FEENOX_EXTREMA_MIN]) { feenox_store_extrema_mesh(FEENOX_EXTREMA_MIN, element->node[j]->index_mesh, val, element->node[j]->x); } } } } } } if (mesh_find_extrema->min != NULL) { feenox_var_value(mesh_find_extrema->min) = value[FEENOX_EXTREMA_MIN]; } if (mesh_find_extrema->i_min != NULL) { feenox_var_value(mesh_find_extrema->i_min) = (double)index[FEENOX_EXTREMA_MIN]; } if (mesh_find_extrema->x_min != NULL) { feenox_var_value(mesh_find_extrema->x_min) = x[FEENOX_EXTREMA_MIN]; } if (mesh_find_extrema->y_min != NULL) { feenox_var_value(mesh_find_extrema->y_min) = y[FEENOX_EXTREMA_MIN]; } if (mesh_find_extrema->z_min != NULL) { feenox_var_value(mesh_find_extrema->z_min) = z[FEENOX_EXTREMA_MIN]; } if (mesh_find_extrema->max != NULL) { feenox_var_value(mesh_find_extrema->max) = value[FEENOX_EXTREMA_MAX]; } if (mesh_find_extrema->i_max != NULL) { feenox_var_value(mesh_find_extrema->i_max) = (double)index[FEENOX_EXTREMA_MAX]; } if (mesh_find_extrema->x_max != NULL) { feenox_var_value(mesh_find_extrema->x_max) = x[FEENOX_EXTREMA_MAX]; } if (mesh_find_extrema->y_max != NULL) { feenox_var_value(mesh_find_extrema->y_max) = y[FEENOX_EXTREMA_MAX]; } if (mesh_find_extrema->z_max != NULL) { feenox_var_value(mesh_find_extrema->z_max) = z[FEENOX_EXTREMA_MAX]; } return FEENOX_OK; } feenox-1.1/src/mesh/physical_group.c0000644000175000017500000001454314773607165014526 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's physical groups * * Copyright (C) 2021 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" // get a pointer to a physical group physical_group_t *feenox_get_physical_group_ptr(const char *name, mesh_t *mesh) { physical_group_t *physical_group = NULL; if (mesh != NULL) { HASH_FIND_STR(mesh->physical_groups, name, physical_group); } else { // barremos todas las mallas mesh_t *dummy = NULL; mesh_t *tmp = NULL; HASH_ITER(hh, feenox.mesh.meshes, dummy, tmp) { HASH_FIND_STR(dummy->physical_groups, name, physical_group); if (physical_group != NULL) { return physical_group; } } } return physical_group; } int feenox_define_physical_group(const char *name, const char *mesh_name, int dimension, int tag) { return (feenox_define_physical_group_get_ptr(name, feenox_get_mesh_ptr(mesh_name), dimension, tag) != NULL) ? FEENOX_OK : FEENOX_ERROR; } physical_group_t *feenox_define_physical_group_get_ptr(const char *name, mesh_t *mesh, int dimension, int tag) { if (name == NULL || strcmp(name, "") == 0) { feenox_push_error_message("mandatory name needed for physical group"); return NULL; } mesh_t *actual_mesh = NULL; if ((actual_mesh = mesh) == NULL) { if ((actual_mesh = feenox.mesh.mesh_main) == NULL) { feenox_push_error_message("no mesh for defining physical group '%s'", name); return NULL; } } int already_exists = 0; physical_group_t *physical_group = NULL; if ((physical_group = feenox_get_physical_group_ptr(name, actual_mesh)) == NULL) { // this is used to define special variables below feenox_check_alloc_null(physical_group = calloc(1, sizeof(physical_group_t))); feenox_check_alloc_null(physical_group->name = strdup(name)); physical_group->dimension = -1; HASH_ADD_KEYPTR(hh, actual_mesh->physical_groups, physical_group->name, strlen(name), physical_group); } else { already_exists = 1; } if (tag != 0) { if (physical_group->tag != 0) { if (physical_group->tag != tag) { feenox_push_error_message("physical group '%s' had been previously defined using id '%d' and now id '%d' is required", name, physical_group->tag, tag); return NULL; } } physical_group->tag = tag; } if (dimension != -1) { if (physical_group->dimension != -1) { if (physical_group->dimension != dimension) { feenox_push_error_message("physical group '%s' had been previously defined as dimension '%d' and now dimension '%d' is required", name, physical_group->dimension, dimension); return NULL; } } physical_group->dimension = dimension; } // ----------------------------- if (already_exists == 0 && physical_group->dimension >= 0) { // volume (or area or length) char *name_measure = NULL; char *measure[4] = {"size", "length", "area", "volume"}; feenox_check_minusone_null(asprintf(&name_measure, "%s_%s", physical_group->name, measure[physical_group->dimension])); if (feenox_check_name(name_measure) == FEENOX_OK) { if ((physical_group->var_volume = feenox_define_variable_get_ptr(name_measure)) == NULL) { return NULL; } } else { feenox_pop_error_message(); } feenox_free(name_measure); // center of gravity char *name_cog = NULL; feenox_check_minusone_null(asprintf(&name_cog, "%s_cog", physical_group->name)); if (feenox_check_name(name_cog) == FEENOX_OK) { if ((physical_group->vector_cog = feenox_define_vector_get_ptr(name_cog, 3)) == NULL) { return NULL; } } else { feenox_pop_error_message(); } feenox_free(name_cog); } return physical_group; } physical_group_t *feenox_get_or_define_physical_group_get_ptr(const char *name, mesh_t *mesh, int dimension, int tag) { physical_group_t *physical_group = NULL; if ((physical_group = feenox_get_physical_group_ptr(name, mesh)) == NULL) { if ((physical_group = feenox_define_physical_group_get_ptr(name, mesh, dimension, tag)) == NULL) { return NULL; } } return physical_group; } int feenox_physical_group_set_material(const char *group_name, const char *material_name, mesh_t *mesh) { physical_group_t *physical_group = feenox_get_physical_group_ptr(group_name, mesh); if (physical_group == NULL) { feenox_push_error_message("undefined physical group '%s'", group_name); return FEENOX_ERROR; } material_t *material = feenox_get_material_ptr(material_name); if (material == NULL) { feenox_push_error_message("undefined material '%s'", material_name); return FEENOX_ERROR; } physical_group->material = material; return FEENOX_OK; } int feenox_physical_group_compute_volume(physical_group_t *this, const mesh_t *mesh) { this->volume = 0; for (size_t i = 0; i < this->n_elements; i++) { element_t *element = &mesh->element[this->element[i]]; for (unsigned int q = 0; q < element->type->gauss[mesh->integration].Q; q++) { double wdet = feenox_fem_compute_w_det_at_gauss_integration(element, q, mesh->integration); for (size_t j = 0; j < element->type->nodes; j++) { double wh = wdet * gsl_matrix_get(element->type->gauss[mesh->integration].H_c[q], 0, j); this->volume += wh ; for (size_t d = 0; d < 3; d++) { this->cog[d] += wh * element->node[j]->x[d]; } } } } this->cog[0] /= this->volume; this->cog[1] /= this->volume; this->cog[2] /= this->volume; if (this->var_volume != NULL) { feenox_var_value(this->var_volume) = this->volume; } return FEENOX_OK; } feenox-1.1/src/mesh/integrate.c0000644000175000017500000002204714773607165013456 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related integration routines * * Copyright (C) 2016,2018,2022--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include #define is_physical_group_right(elm, p_grp) \ (((p_grp) == NULL && (elm)->type->dim == mesh->dim) || \ ((p_grp) != NULL && (elm)->physical_group == p_grp)) int feenox_instruction_mesh_integrate(void *arg) { mesh_integrate_t *mesh_integrate = (mesh_integrate_t *)arg; mesh_t *mesh = mesh_integrate->mesh; function_t *function = mesh_integrate->function; expr_t *expr = &mesh_integrate->expr; physical_group_t *physical_group = mesh_integrate->physical_group; var_t *result = mesh_integrate->result; double integral_local = 0; double integral_global = 0; #ifdef HAVE_PETSC if (feenox.pde.petscinit_called == PETSC_FALSE) { feenox_problem_parse_time_init(); } #endif if (mesh->mpi_matches_partitions == mpi_matches_partitions_no) { feenox_call(feenox_compute_first_last_element(mesh)); } // TODO: virtuals! // TODO: take into account expressions of x and nx // TODO: choose dimension? if (function != NULL) { if (mesh_integrate->field_location == field_location_cells) { // cell-based integration of functions if (function->type == function_type_pointwise_mesh_cell && function->mesh == mesh) { integral_local = feenox_mesh_integral_function_cell_cell(function, mesh, physical_group); } else { integral_local = feenox_mesh_integral_function_general_cell(function, mesh, physical_group); } } else { // gauss-based integration of functions if (function->type == function_type_pointwise_mesh_node && function->mesh == mesh) { // check if the time is the correct one /* if (function->name_in_mesh != NULL && function->mesh->format == mesh_format_gmsh && function->mesh_time < feenox_var_value(feenox_special_var(t))-0.001*feenox_var_value(feenox_special_var(dt))) { feenox_call(mesh_gmsh_update_function(function, feenox_var_value(feenox_special_var(t)), feenox_var_value(feenox_special_var(dt)))); function->mesh_time = feenox_var_value(feenox_special_var(t)); } */ integral_local = feenox_mesh_integral_function_node_gauss(function, mesh, physical_group); } else { integral_local = feenox_mesh_integral_function_general_gauss(function, mesh, physical_group);; } } } else { if (mesh_integrate->field_location == field_location_cells) { integral_local = feenox_mesh_integral_expression_cell(expr, mesh, physical_group); } else { integral_local = feenox_mesh_integral_expression_gauss(expr, mesh, physical_group); } } #ifdef HAVE_PETSC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-value" MPI_Allreduce(&integral_local, &integral_global, 1, MPIU_SCALAR, MPIU_SUM, PETSC_COMM_WORLD); #pragma GCC diagnostic pop #else integral_global = integral_local; #endif if (result != NULL) { feenox_var_value(result) = integral_global; } return FEENOX_OK; } double feenox_mesh_integral_over_element(element_t *this, mesh_t *mesh, function_t *function) { double integral = 0; for (unsigned int q = 0; q < this->type->gauss[mesh->integration].Q; q++) { double wdet = feenox_fem_compute_w_det_at_gauss_integration(this, q, mesh->integration); double val = 0; for (unsigned int j = 0; j < this->type->nodes; j++) { val += gsl_matrix_get(this->type->gauss[mesh->integration].H_c[q], 0, j) * feenox_vector_get(function->vector_value, this->node[j]->index_mesh); } integral += wdet * val; } return integral; } double feenox_mesh_integral_function_cell_cell(function_t *function, mesh_t *mesh, physical_group_t *physical_group) { // function defined over a cell integrated over a cell, cool! double integral = 0; for (size_t i = 0; i < mesh->n_cells; i++) { element_t *e = mesh->cell[i].element; if (is_element_local(mesh, e) && is_physical_group_right(e, physical_group)) { integral += feenox_vector_get(function->vector_value, i) * mesh->cell[i].element->type->volume(mesh->cell[i].element); } } return integral; } double feenox_mesh_integral_function_general_cell(function_t *function, mesh_t *mesh, physical_group_t *physical_group) { // location is cell but function is not cell double integral = 0; double n[3] = {0, 0, 0}; int depends_on_normal = feenox_expression_depends_on_normal(&function->algebraic_expression); for (size_t i = 0; i < mesh->n_cells; i++) { element_t *e = mesh->cell[i].element; if (is_element_local(mesh, e) && is_physical_group_right(e, physical_group)) { if (depends_on_normal) { feenox_call(feenox_mesh_compute_outward_normal(e, n)); } integral += feenox_function_eval(function, mesh->cell[i].x) * mesh->cell[i].element->type->volume(mesh->cell[i].element); } } return integral; } double feenox_mesh_integral_function_node_gauss(function_t *function, mesh_t *mesh, physical_group_t *physical_group) { // funcion mesh node, pretty cool double integral = 0; for (size_t i = 0; i < mesh->n_elements; i++) { element_t *e = &mesh->element[i]; if (is_element_local(mesh, e) && is_physical_group_right(e, physical_group)) { for (unsigned int q = 0; q < e->type->gauss[mesh->integration].Q; q++) { double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, mesh->integration); double xi = 0; for (unsigned int j = 0; j < e->type->nodes; j++) { xi += gsl_matrix_get(e->type->gauss[mesh->integration].H_c[q], 0, j) * feenox_vector_get(function->vector_value, e->node[j]->index_mesh); } integral += wdet * xi; } } } return integral; } double feenox_mesh_integral_function_general_gauss(function_t *function, mesh_t *mesh, physical_group_t *physical_group) { // general function double n[3] = {0, 0, 0}; double integral = 0; int depends_on_normal = feenox_expression_depends_on_normal(&function->algebraic_expression); for (size_t i = 0; i < mesh->n_elements; i++) { element_t *e = &mesh->element[i]; if (is_element_local(mesh, e) && is_physical_group_right(e, physical_group)) { for (unsigned int q = 0; q < e->type->gauss[mesh->integration].Q; q++) { double *x = feenox_fem_compute_x_at_gauss(e, q, mesh->integration); if (depends_on_normal) { feenox_call(feenox_mesh_compute_outward_normal(e, n)); } double wdet = feenox_fem_compute_w_det_at_gauss_integration(e, q, mesh->integration); integral += wdet * feenox_function_eval(function, x); } } } return integral; } double feenox_mesh_integral_expression_cell(expr_t *expr, mesh_t *mesh, physical_group_t *physical_group) { double integral = 0; // an expression integrated over cells for (size_t i = 0; i < mesh->n_cells; i++) { element_t *e = mesh->cell[i].element; if (is_element_local(mesh, e) && is_physical_group_right(e, physical_group)) { feenox_fem_update_coord_vars(mesh->cell[i].x); integral += feenox_expression_eval(expr) * mesh->cell[i].element->type->volume(mesh->cell[i].element); } } return integral; } double feenox_mesh_integral_expression_gauss(expr_t *expr, mesh_t *mesh, physical_group_t *physical_group) { double integral = 0; double n[3] = {0,0,0}; int depends_on_normal = feenox_expression_depends_on_normal(expr); // an expression evaluated at the gauss points for (size_t i = 0; i < mesh->n_elements; i++) { element_t *e = &mesh->element[i]; if (is_element_local(mesh, e) && is_physical_group_right(e, physical_group)) { for (unsigned int q = 0; q < e->type->gauss[mesh->integration].Q; q++) { feenox_fem_compute_x_at_gauss_and_update_var(e, q, mesh->integration); if (depends_on_normal) { feenox_call(feenox_mesh_compute_outward_normal(e, n)); } integral += feenox_fem_compute_w_det_at_gauss_integration(e, q, mesh->integration) * feenox_expression_eval(expr); } } } // small debug-session for my phd thesis // petsc_call(PetscSynchronizedPrintf(PETSC_COMM_WORLD, "[proceso %d] mi integral parcial es %g\n", feenox.mpi_rank, integral)); // petsc_call(PetscSynchronizedFlush(PETSC_COMM_WORLD, PETSC_STDOUT)); return integral; } feenox-1.1/src/mesh/neighbors.c0000644000175000017500000002546114773607165013457 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related neighbor routines * * Copyright (C) 2014--2024 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" int mesh_count_common_nodes(element_t *e1, element_t *e2, int *nodes) { int i, j; int k = 0; for (i = 0; i < e1->type->nodes; i++) { for (j = 0; j < e2->type->nodes; j++) { if (e1->node[i] == e2->node[j]) { if (nodes != NULL) { nodes[k] = e1->node[i]->index_mesh; } k++; } } } return k; } element_t *feenox_mesh_find_element_volumetric_neighbor(element_t *this) { // en mallas de primer orden esto sirve para mezclar elementos raros // en segundo hay que hacerlo completo int target = (this->type->order == 1) ? this->type->dim : this->type->nodes; element_ll_t *element_item = NULL; for (unsigned int j = 0; j < this->type->nodes; j++) { LL_FOREACH(this->node[j]->element_list, element_item) { if (this->type->dim == (element_item->element->type->dim-1)) { // los vecinos volumetricos if (mesh_count_common_nodes(this, element_item->element, NULL) >= target) { return element_item->element; } } } } return NULL; } int feenox_mesh_count_element_volumetric_neighbors(element_t *this) { size_t tags[this->type->faces]; for (int k = 0; k < this->type->faces; k++) { tags[k] = 0; } element_ll_t *element_item = NULL; int index = 0; int n = 0; for (int j = 0; j < this->type->nodes; j++) { LL_FOREACH(this->node[j]->element_list, element_item) { if (this->type->dim == (element_item->element->type->dim-1)) { // los vecinos volumetricos if (mesh_count_common_nodes(this, element_item->element, NULL) >= this->type->nodes) { int exists = 0; for (int k = 0; exists == 0 && k < index; k++) { exists |= (element_item->element->tag == tags[k]); } if (exists == 0) { tags[index++] = element_item->element->tag; n++; } } } } } return n; } element_t *mesh_find_node_neighbor_of_dim(node_t *node, int dim) { int j; element_ll_t *element_item; LL_FOREACH(node->element_list, element_item) { if (dim == element_item->element->type->dim) { for (j = 0; j < element_item->element->type->nodes; j++) { if (node->tag == element_item->element->node[j]->tag) { return element_item->element; } } } } return NULL; } int mesh_find_neighbors(mesh_t *this) { int i, j, l, m, n; int flag; int nodes[32]; // habra algun elemento que tenga mas de 32 nodos? element_ll_t *element_item; for (i = 0; i < this->n_cells; i++) { n = 0; this->cell[i].ifaces = calloc(this->cell[i].element->type->faces, sizeof(int *)); for (j = 0; j < this->cell[i].element->type->nodes; j++) { LL_FOREACH(this->cell[i].element->node[j]->element_list, element_item) { memset(nodes, 0, sizeof(nodes)); if ((l = element_item->element->index) != this->cell[i].element->index) { if (mesh_count_common_nodes(this->cell[i].element, &this->element[l], nodes) >= this->cell[i].element->type->dim) { flag = 1; for (m = 0; m < n; m++) { if (this->cell[i].ineighbor[m] == l) { flag = 0; } } if (flag) { if (n == this->cell[i].element->type->faces) { feenox_push_error_message("mesh inconsistency, element %d has at least one more neighbor than faces (%d)", this->cell[i].element->type, n); return FEENOX_ERROR; } this->cell[i].ifaces[n] = calloc(this->cell[i].element->type->nodes_per_face, sizeof(int)); memcpy(this->cell[i].ifaces[n], nodes, sizeof(int)*this->cell[i].element->type->nodes_per_face); this->cell[i].ineighbor[n] = l; n++; } } } } } if ((this->cell[i].n_neighbors = n) != this->cell[i].element->type->faces) { feenox_push_error_message("mesh inconsistency, element %d has less neighbors (%d) than faces (%d)", this->cell[i].element->tag, n, this->cell[i].element->type->faces); return FEENOX_ERROR; } } return FEENOX_OK; } /* int feenox_mesh_fill_neighbors(mesh_t *mesh) { int i, j, k; double a[3], b[3], xi[3]; double module; for (i = 0; i < mesh->n_cells; i++) { // holder para vecinos mesh->cell[i].neighbor = calloc(mesh->cell[i].n_neighbors, sizeof(struct neighbor_t)); for (j = 0; j < mesh->cell[i].n_neighbors; j++) { // apuntador al elemento a partir del numero mesh->cell[i].neighbor[j].element = &mesh->element[mesh->cell[i].ineighbor[j]]; // apuntador a la celda mesh->cell[i].neighbor[j].cell = mesh->cell[i].neighbor[j].element->cell; // calculamos las coordenadas de los nodos que definen la cara y del centro de la cara mesh->cell[i].neighbor[j].face_coord = calloc(mesh->cell[i].element->type->nodes_per_face, sizeof(double *)); mesh->cell[i].neighbor[j].x_ij[0] = mesh->cell[i].neighbor[j].x_ij[1] = mesh->cell[i].neighbor[j].x_ij[2] = 0; for (k = 0; k < mesh->cell[i].element->type->nodes_per_face; k++) { mesh->cell[i].neighbor[j].face_coord[k] = mesh->node[mesh->cell[i].ifaces[j][k]].x; mesh->cell[i].neighbor[j].x_ij[0] += mesh->cell[i].neighbor[j].face_coord[k][0]; mesh->cell[i].neighbor[j].x_ij[1] += mesh->cell[i].neighbor[j].face_coord[k][1]; mesh->cell[i].neighbor[j].x_ij[2] += mesh->cell[i].neighbor[j].face_coord[k][2]; } mesh->cell[i].neighbor[j].x_ij[0] /= (double)mesh->cell[i].element->type->nodes_per_face; mesh->cell[i].neighbor[j].x_ij[1] /= (double)mesh->cell[i].element->type->nodes_per_face; mesh->cell[i].neighbor[j].x_ij[2] /= (double)mesh->cell[i].element->type->nodes_per_face; switch (mesh->dim_topo) { case 1: if (mesh->cell[i].neighbor[j].face_coord[0][0] > mesh->cell[i].x[0]) { mesh->cell[i].neighbor[j].n_ij[0] = 1; } else { mesh->cell[i].neighbor[j].n_ij[0] = -1; } // area de la cara = en 1D es 1 mesh->cell[i].neighbor[j].S_ij = 1; break; case 2: // OJO! esto funciona solo en el plano x-y // esta es la longitud de la cara module = feenox_mesh_subtract_module(mesh->cell[i].neighbor[j].face_coord[1], mesh->cell[i].neighbor[j].face_coord[0]); // proponemos uno de los dos vectores normales mesh->cell[i].neighbor[j].n_ij[0] = -(mesh->cell[i].neighbor[j].face_coord[1][1]-mesh->cell[i].neighbor[j].face_coord[0][1])/module; mesh->cell[i].neighbor[j].n_ij[1] = (mesh->cell[i].neighbor[j].face_coord[1][0]-mesh->cell[i].neighbor[j].face_coord[0][0])/module; mesh->cell[i].neighbor[j].n_ij[2] = 0; // y vemos si el producto interno con el centro de la celda es positivo // si lo es, elegimos mal el vector normal y lo damos vuelta if (feenox_mesh_subtract_dot(mesh->cell[i].x, mesh->cell[i].neighbor[j].x_ij, mesh->cell[i].neighbor[j].n_ij) > 0) { mesh->cell[i].neighbor[j].n_ij[0] = -mesh->cell[i].neighbor[j].n_ij[0]; mesh->cell[i].neighbor[j].n_ij[1] = -mesh->cell[i].neighbor[j].n_ij[1]; } // area de la cara = longitud del segmento definido por dos puntos mesh->cell[i].neighbor[j].S_ij = gsl_hypot3(mesh->cell[i].neighbor[j].face_coord[0][0]-mesh->cell[i].neighbor[j].face_coord[1][0], mesh->cell[i].neighbor[j].face_coord[0][1]-mesh->cell[i].neighbor[j].face_coord[1][1], mesh->cell[i].neighbor[j].face_coord[0][2]-mesh->cell[i].neighbor[j].face_coord[1][2]); break; case 3: a[0] = mesh->cell[i].neighbor[j].face_coord[1][0] - mesh->cell[i].neighbor[j].face_coord[0][0]; a[1] = mesh->cell[i].neighbor[j].face_coord[1][1] - mesh->cell[i].neighbor[j].face_coord[0][1]; a[2] = mesh->cell[i].neighbor[j].face_coord[1][2] - mesh->cell[i].neighbor[j].face_coord[0][2]; b[0] = mesh->cell[i].neighbor[j].face_coord[2][0] - mesh->cell[i].neighbor[j].face_coord[0][0]; b[1] = mesh->cell[i].neighbor[j].face_coord[2][1] - mesh->cell[i].neighbor[j].face_coord[0][1]; b[2] = mesh->cell[i].neighbor[j].face_coord[2][2] - mesh->cell[i].neighbor[j].face_coord[0][2]; feenox_mesh_normalized_cross(a, b, mesh->cell[i].neighbor[j].n_ij); // y vemos si el producto interno con el centro de la celda es positivo // si lo es, elegimos mal el vector normal y lo damos vuelta if (feenox_mesh_subtract_dot(mesh->cell[i].x, mesh->cell[i].neighbor[j].x_ij, mesh->cell[i].neighbor[j].n_ij) > 0) { mesh->cell[i].neighbor[j].n_ij[0] = -mesh->cell[i].neighbor[j].n_ij[0]; mesh->cell[i].neighbor[j].n_ij[1] = -mesh->cell[i].neighbor[j].n_ij[1]; mesh->cell[i].neighbor[j].n_ij[2] = -mesh->cell[i].neighbor[j].n_ij[2]; } // el area de la cara // los vectores a y b ya los tenemos feenox_mesh_cross(a, b, xi); mesh->cell[i].neighbor[j].S_ij = 0.5 * gsl_hypot3(xi[0], xi[1], xi[2]); if (mesh->cell[i].element->type->nodes_per_face == 4) { // si la cara es un cuadrangulo, entonces sumamos el otro triangulito a[0] = mesh->cell[i].neighbor[j].face_coord[3][0] - mesh->cell[i].neighbor[j].face_coord[0][0]; a[1] = mesh->cell[i].neighbor[j].face_coord[3][1] - mesh->cell[i].neighbor[j].face_coord[0][1]; a[2] = mesh->cell[i].neighbor[j].face_coord[3][2] - mesh->cell[i].neighbor[j].face_coord[0][2]; feenox_mesh_cross(a, b, xi); mesh->cell[i].neighbor[j].S_ij += 0.5 * gsl_hypot3(xi[0], xi[1], xi[2]); } break; } } } return FEENOX_OK; } */ feenox-1.1/src/mesh/init.c0000644000175000017500000001341414773607165012435 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related initialization routines * * Copyright (C) 2014--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" int feenox_mesh_init_special_objects(void) { if (feenox.mesh.vars.x != NULL) { return FEENOX_OK; } // vector con las coordenadas globales feenox_check_alloc(feenox.mesh.vars.vec_x = feenox_define_vector_get_ptr("x_global", 3)); // como ahora hacemos alias de a los elementos del vector x_global lo inicializamos feenox_call(feenox_vector_init(feenox.mesh.vars.vec_x, FEENOX_VECTOR_INITIAL)); //va+x+desc Holder variable for spatial dependence of functions, such spatial distribution //va+x+desc of physical properties or results of partial differential equations. feenox_check_null(feenox.mesh.vars.x = feenox_get_or_define_variable_get_ptr("x")); feenox_realloc_variable_ptr(feenox.mesh.vars.x, gsl_vector_ptr(feenox_value_ptr(feenox.mesh.vars.vec_x), 0), 0); //va+y+desc Idem as `x`. feenox_check_null(feenox.mesh.vars.y = feenox_get_or_define_variable_get_ptr("y")); feenox_realloc_variable_ptr(feenox.mesh.vars.y, gsl_vector_ptr(feenox_value_ptr(feenox.mesh.vars.vec_x), 1), 0); //va+z+desc Idem as `x`. feenox_check_null(feenox.mesh.vars.z = feenox_get_or_define_variable_get_ptr("z")); feenox_realloc_variable_ptr(feenox.mesh.vars.z, gsl_vector_ptr(feenox_value_ptr(feenox.mesh.vars.vec_x), 2), 0); // y ya que estamos las ponemos en un array numerico feenox.mesh.vars.arr_x[0] = feenox.mesh.vars.x; feenox.mesh.vars.arr_x[1] = feenox.mesh.vars.y; feenox.mesh.vars.arr_x[2] = feenox.mesh.vars.z; // idem para la normal feenox_check_null(feenox.mesh.vars.vec_n = feenox_define_vector_get_ptr("n_global", 3)); // como ahora hacemos alias de a los elementos del vector n_global lo inicializamos feenox_call(feenox_vector_init(feenox.mesh.vars.vec_n, FEENOX_VECTOR_INITIAL)); //va+x+desc Holder variable for the local outward normal in surfaces. feenox_check_null(feenox.mesh.vars.nx = feenox_get_or_define_variable_get_ptr("nx")); feenox_realloc_variable_ptr(feenox.mesh.vars.nx, gsl_vector_ptr(feenox_value_ptr(feenox.mesh.vars.vec_n), 0), 0); //va+y+desc Idem as `nx`. feenox_check_null(feenox.mesh.vars.ny = feenox_get_or_define_variable_get_ptr("ny")); feenox_realloc_variable_ptr(feenox.mesh.vars.ny, gsl_vector_ptr(feenox_value_ptr(feenox.mesh.vars.vec_n), 1), 0); //va+z+desc Idem as `x`. feenox_check_null(feenox.mesh.vars.nz = feenox_get_or_define_variable_get_ptr("nz")); feenox_realloc_variable_ptr(feenox.mesh.vars.nz, gsl_vector_ptr(feenox_value_ptr(feenox.mesh.vars.vec_n), 2), 0); feenox.mesh.vars.arr_n[0] = feenox.mesh.vars.nx; feenox.mesh.vars.arr_n[1] = feenox.mesh.vars.ny; feenox.mesh.vars.arr_n[2] = feenox.mesh.vars.nz; ///va+nodes+desc Number of nodes of the unstructured grid. feenox_check_null(feenox.mesh.vars.nodes = feenox_get_or_define_variable_get_ptr("nodes")); ///va+elements+desc Number of total elements of the unstructured grid. This number ///va+elements+desc include those surface elements that belong to boundary physical groups. feenox_check_null(feenox.mesh.vars.elements = feenox_get_or_define_variable_get_ptr("elements")); ///va+cells+desc Number of cells of the unstructured grid. This number is the actual ///va+cells+desc quantity of volumetric elements in which the domain was discretized. feenox_check_null(feenox.mesh.vars.cells = feenox_get_or_define_variable_get_ptr("cells")); ///va+bbox_min+desc Minimum values of the mesh’s bounding box (vector of size 3) feenox.mesh.vars.bbox_min = feenox_define_vector_get_ptr("bbox_min", 3); ///va+bbox_min+desc Maximum values of the mesh’s bounding box (vector of size 3) feenox.mesh.vars.bbox_max = feenox_define_vector_get_ptr("bbox_max", 3); //va+eps+desc Small value. Default is $10^{-6}$. feenox_check_null(feenox.mesh.vars.eps = feenox_get_or_define_variable_get_ptr("eps")); feenox_var_value(feenox.mesh.vars.eps) = MESH_TOL; //va+mesh_failed_interpolation_factor+desc When interpolating a mesh-defined function, the interpolation point\ $\vec{x}$ seems to fall outside //va+mesh_failed_interpolation_factor+desc an element using the $k$-dimensional tree (most efficient), and more robust brute-force approach is taken //va+mesh_failed_interpolation_factor+desc less efficient using a radius of size `mesh_failed_interpolation_factor` times the distance between $\vec{x}$ //va+mesh_failed_interpolation_factor+desc and the nearest node to \vec{x$} is performed. //va+mesh_failed_interpolation_factor+desc If this factor is zero, then the value at the nearest node to $x$ is returned. Default is DEFAULT_MESH_FAILED_INTERPOLATION_FACTOR. feenox_check_null(feenox.mesh.vars.mesh_failed_interpolation_factor = feenox_get_or_define_variable_get_ptr("mesh_failed_interpolation_factor")); feenox_var_value(feenox.mesh.vars.mesh_failed_interpolation_factor) = MESH_FAILED_INTERPOLATION_FACTOR; // initialize the static data of the elements feenox_call(feenox_mesh_element_types_init()); return FEENOX_OK; } feenox-1.1/src/mesh/element.h0000644000175000017500000001472014773607165013131 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX's mesh-related element header * * Copyright (C) 2021--2023 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ extern int feenox_mesh_alloc_gauss(gauss_t *gauss, element_type_t *element_type, int Q); extern int feenox_mesh_init_shape_at_gauss(gauss_t *gauss, element_type_t *element_type); extern void feenox_mesh_add_node_parent(node_relative_t **parents, int index); extern void feenox_mesh_compute_coords_from_parent(element_type_t *element_type, int j); extern int feenox_mesh_line2_init(void); extern int feenox_mesh_line3_init(void); extern int feenox_mesh_triang3_init(void); extern int feenox_mesh_triang6_init(void); extern int feenox_mesh_quad4_init(void); extern int feenox_mesh_quad8_init(void); extern int feenox_mesh_quad9_init(void); extern int feenox_mesh_tet4_init(void); extern int feenox_mesh_tet10_init(void); extern int feenox_mesh_hexa8_init(void); extern int feenox_mesh_hexa20_init(void); extern int feenox_mesh_hexa27_init(void); extern int feenox_mesh_prism6_init(void); extern int feenox_mesh_prism15_init(void); extern int feenox_mesh_one_node_point_init(void); extern int feenox_mesh_gauss_init_line2(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_line1(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_line3(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_triang1(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_triang3(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_quad1(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_quad4(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_quad9(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_tet1(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_tet4(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_hexa1(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_hexa8(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_gauss_init_hexa27(element_type_t *element_type, gauss_t *gauss); extern int feenox_mesh_prism_gauss6_init(element_type_t *element_type); // TODO: either tet or tetrahedron in both extern int feenox_mesh_point_in_line(element_t *this, const double *x); extern int feenox_mesh_point_in_triangle(element_t *this, const double *x); extern int feenox_mesh_point_in_quadrangle(element_t *this, const double *x); extern int feenox_mesh_point_in_tetrahedron(element_t *this, const double *x); extern int feenox_mesh_point_in_hexahedron(element_t *this, const double *x); extern int feenox_mesh_point_in_prism(element_t *element, const double *x); extern double feenox_mesh_point_volume(element_t *this); extern double feenox_mesh_line_volume(element_t *this); extern double feenox_mesh_triang_volume(element_t *this); extern double feenox_mesh_quad_volume(element_t *this); extern double feenox_mesh_tet_volume(element_t *this); extern double feenox_mesh_hex_volume(element_t *this); extern double feenox_mesh_prism_volume(element_t *this); extern double feenox_mesh_line_area(element_t *this); extern double feenox_mesh_triang_area(element_t *this); extern double feenox_mesh_quad_area(element_t *this); extern double feenox_mesh_tet_area(element_t *this); extern double feenox_mesh_line_size(element_t *this); extern double feenox_mesh_triang_size(element_t *this); extern double feenox_mesh_quad_size(element_t *this); extern double feenox_mesh_tet_size(element_t *this); extern double feenox_mesh_hex_size(element_t *this); extern double feenox_mesh_line2_h(int j, double *vec_xi); extern double feenox_mesh_line2_dhdr(int j, int d, double *arg); extern double feenox_mesh_line3_h(int j, double *vec_xi); extern double feenox_mesh_line3_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_triang3_h(int j, double *vec_xi); extern char *feenox_mesh_triang3_h_latex(int j); extern double feenox_mesh_triang3_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_triang6_h(int j, double *vec_xi); extern char *feenox_mesh_triang6_h_latex(int j); extern double feenox_mesh_triang6_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_quad4_h(int j, double *vec_xi); extern double feenox_mesh_quad4_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_quad8_h(int j, double *vec_xi); extern double feenox_mesh_quad8_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_quad9_h(int j, double *vec_xi); extern double feenox_mesh_quad9_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_tet4_h(int j, double *vec_xi); extern char *feenox_mesh_tet4_h_latex(int j); extern double feenox_mesh_tet4_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_tet10_h(int j, double *vec_xi); extern double feenox_mesh_tet10_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_hexa8_h(int j, double *vec_xi); extern double feenox_mesh_hexa8_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_hexa20_h(int j, double *vec_xi); extern double feenox_mesh_hexa20_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_hexa27_h(int j, double *vec_xi); extern double feenox_mesh_hexa27_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_prism6_h(int j, double *vec_xi); extern double feenox_mesh_prism6_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_prism15_h(int j, double *vec_xi); extern double feenox_mesh_prism15_dhdr(int j, int d, double *vec_xi); extern double feenox_mesh_one_node_point_h(int j, double *vec_xi); extern double feenox_mesh_one_node_point_dhdr(int j, int d, double *vec_xi); feenox-1.1/src/mesh/write.c0000644000175000017500000000526714773607165012633 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related post-processing generation routines * * Copyright (C) 2014--2021 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" int feenox_instruction_mesh_write(void *arg) { if (feenox.pde.do_not_solve) { return FEENOX_OK; } mesh_write_t *mesh_write = (mesh_write_t *)arg; mesh_write_dist_t *mesh_write_dist; // TODO: in parallel runs only print from first processor if (feenox.mpi_rank != 0) { return FEENOX_OK; } if (feenox_special_var(end_time) == 0) { // close the file and open it again if (mesh_write->file->pointer != NULL) { feenox_call(feenox_instruction_file_close(mesh_write->file)); } feenox_call(feenox_instruction_file_open(mesh_write->file)); } else { if (mesh_write->file->pointer == NULL) { feenox_call(feenox_instruction_file_open(mesh_write->file)); } } if (ftell(mesh_write->file->pointer) == 0) { feenox_call(mesh_write->write_header(mesh_write->mesh, mesh_write->file->pointer)); if (mesh_write->no_mesh == 0) { feenox_call(mesh_write->write_mesh(mesh_write->mesh, mesh_write->file->pointer, mesh_write->no_physical_names)); } mesh_write->point_init = 0; } LL_FOREACH(mesh_write->mesh_write_dists, mesh_write_dist) { if (mesh_write_dist->field_location == field_location_cells && mesh_write->mesh->n_cells == 0) { feenox_call(feenox_mesh_element2cell(mesh_write->mesh)); } if (mesh_write->write_data) { feenox_call(mesh_write->write_data(mesh_write, mesh_write_dist)); } } if (mesh_write->write_footer) { feenox_call(mesh_write->write_footer(mesh_write)); } if (mesh_write->post_format == post_format_vtu || mesh_write->post_format == post_format_vtk) { feenox_call(feenox_instruction_file_close(mesh_write->file)); } // for .msh we leave that to the user, to use CLOSE or whatever explicitly return FEENOX_OK; } feenox-1.1/src/mesh/vtk.c0000644000175000017500000005740514773607165012306 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related vtk routines * * Copyright (C) 2014--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" #include "element.h" #include #define BUFFER_SIZE 256 // conversion from gmsh to vtk element types // source: https://github.com/Kitware/VTK/blob/master/Common/DataModel/vtkCellType.h int vtkfromgmsh_types[NUMBER_ELEMENT_TYPE] = { 0, // ELEMENT_TYPE_UNDEFINED 3, // ELEMENT_TYPE_LINE 5, // ELEMENT_TYPE_TRIANGLE 9, // ELEMENT_TYPE_QUADRANGLE 10, // ELEMENT_TYPE_TETRAHEDRON 12, // ELEMENT_TYPE_HEXAHEDRON 13, // ELEMENT_TYPE_PRISM 14, // ELEMENT_TYPE_PYRAMID 0, 22, // ELEMENT_TYPE_TRIANGLE6 28, // ELEMENT_TYPE_QUADRANGLE9 24, // ELEMENT_TYPE_TETRAHEDRON10 29, // ELEMENT_TYPE_HEXAHEDRON27 0, 0, 1, // ELEMENT_TYPE_POINT 23, // ELEMENT_TYPE_QUADRANGLE8 25, // ELEMENT_TYPE_HEXAHEDRON20 }; // conversion from gmsh to vtk node ordering in hexes // (by reading files because by following the docs it did not work). // index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // vtk 0 1 3 2 4 6 7 5 8 10 11 9 18 17 19 14 12 15 16 13 // gmsh 0 1 3 2 4 6 7 5 8 9 12 10 15 11 16 13 18 14 17 19 int hexa20fromgmsh[20] = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 11 , 13 , 9 , 16 , 18 , 19 , 17 , 10 , 12 , 14 , 15 } ; int hexa27fromgmsh[27] = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 11 , 13 , 9 , 16 , 18 , 19 , 17 , 10 , 12 , 14 , 15 , 22 , 23 , 21 , 24 , 20 , 25 , 26} ; int feenox_mesh_write_header_vtk(mesh_t *mesh, FILE *file) { fprintf(file, "# vtk DataFile Version 2.0\n"); // TODO: $0 and time fprintf(file, "FeenoX VTK output\n"); fprintf(file, "ASCII\n"); return FEENOX_OK; } int feenox_mesh_write_vtk_cells(mesh_t *mesh, FILE *file, int with_size) { for (size_t i = 0; i < mesh->n_elements; i++) { if (mesh->element[i].type->dim == mesh->dim_topo) { if (with_size) { fprintf(file, "%d ", mesh->element[i].type->nodes); } switch(mesh->element[i].type->id) { case ELEMENT_TYPE_HEXAHEDRON27: for (int j = 0; j < 27 ; ++j) { fprintf(file, " %ld", (mesh->element[i].node[hexa27fromgmsh[j]]->tag)-1); } fprintf(file, "\n"); break; case ELEMENT_TYPE_HEXAHEDRON20: for (int j = 0; j < 20 ; ++j) { fprintf(file, " %ld", (mesh->element[i].node[hexa20fromgmsh[j]]->tag)-1); } fprintf(file, "\n"); break; default: for (unsigned int j = 0; j < mesh->element[i].type->nodes; j++) { // el tet10 es diferente! if (vtkfromgmsh_types[mesh->element[i].type->id] == 24 && (j == 8 || j == 9)) { if (j == 8) { fprintf(file, " %ld", (mesh->element[i].node[9]->tag)-1); } else if (j == 9) { fprintf(file, " %ld", (mesh->element[i].node[8]->tag)-1); } } else { fprintf(file, " %ld", (mesh->element[i].node[j]->tag)-1); } } fprintf(file, "\n"); break; } } } return FEENOX_OK; } int feenox_mesh_write_vtk_types(mesh_t *mesh, FILE *file) { for (size_t i = 0; i < mesh->n_elements; i++) { if (mesh->element[i].type->dim == mesh->dim_topo) { fprintf(file, "%d\n", vtkfromgmsh_types[mesh->element[i].type->id]); } } return FEENOX_OK; } // this dummy is for other formats int feenox_mesh_write_mesh_vtk(mesh_t *this, FILE *file, int dummy) { fprintf(file, "DATASET UNSTRUCTURED_GRID\n"); fprintf(file, "POINTS %ld double\n", this->n_nodes); for (size_t j = 0; j < this->n_nodes; j++) { if (this->node[j].tag != j+1) { feenox_push_error_message("VTK output needs sorted nodes"); return FEENOX_ERROR; } fprintf(file, "%g %g %g\n", this->node[j].x[0], this->node[j].x[1], this->node[j].x[2]); } fprintf(file, "\n"); size_t size = 0; size_t volumelements = 0; for (size_t i = 0; i < this->n_elements; i++) { if (this->element[i].type->dim == this->dim_topo) { size += 1 + this->element[i].type->nodes; volumelements++; } } fprintf(file, "CELLS %ld %ld\n", volumelements, size); feenox_mesh_write_vtk_cells(this, file, 1); fprintf(file, "\n"); fprintf(file, "CELL_TYPES %ld\n", volumelements); feenox_mesh_write_vtk_types(this, file); return FEENOX_OK; } int feenox_mesh_write_data_vtk(mesh_write_t *this, mesh_write_dist_t *dist) { if (dist->field_location == field_location_cells) { if (this->mesh->n_cells == 0) { feenox_call(feenox_mesh_element2cell(this->mesh)); } if (this->cell_init == 0) { fprintf(this->file->pointer, "CELL_DATA %ld\n", this->mesh->n_cells); this->cell_init = 1; } } else { if (this->point_init == 0) { fprintf(this->file->pointer, "POINT_DATA %ld\n", this->mesh->n_nodes); this->point_init = 1; } } switch (dist->size) { case 1: fprintf(this->file->pointer, "SCALARS"); break; case 3: fprintf(this->file->pointer, "VECTORS"); break; case 6: fprintf(this->file->pointer, "TENSORS"); break; default: feenox_push_error_message("size %d not supported in VTK output"); return FEENOX_ERROR; } fprintf(this->file->pointer, " %s double\n", dist->name); if (dist->size == 1) { fprintf(this->file->pointer, "LOOKUP_TABLE default\n"); this->lookup_table_init = 1; } // custom printf format char *format = NULL; if (dist->printf_format == NULL) { feenox_check_alloc(format = strdup(" %g")); } else { if (dist->printf_format[0] == '%') { feenox_check_minusone(asprintf(&format, " %s", dist->printf_format)); } else { feenox_check_minusone(asprintf(&format, " %%%s", dist->printf_format)); } } // TODO: virtual methods if (dist->field_location == field_location_cells) { for (size_t i = 0; i < this->mesh->n_cells; i++) { for (int g = 0; g < dist->size; g++) { // TODO: remove the conditional from the loop double value = (dist->field[g]->type == function_type_pointwise_mesh_cell && dist->field[g]->mesh == this->mesh) ? feenox_vector_get(dist->field[g]->vector_value, i) : feenox_function_eval(dist->field[g], this->mesh->cell[i].x); fprintf(this->file->pointer, format, value); } fprintf(this->file->pointer, "\n"); } } else { for (size_t j = 0; j < this->mesh->n_nodes; j++) { for (int g = 0; g < dist->size; g++) { // TODO: remove the conditional from the loop double value = (dist->field[g]->type == function_type_pointwise_mesh_node && dist->field[g]->mesh == this->mesh) ? feenox_vector_get(dist->field[g]->vector_value, j) : feenox_function_eval(dist->field[g], this->mesh->node[j].x); fprintf(this->file->pointer, format, value); } fprintf(this->file->pointer, "\n"); } } fflush(this->file->pointer); feenox_free(format); return FEENOX_OK; } int feenox_mesh_read_vtk(mesh_t *this) { if (this->file->pointer == NULL) { feenox_call(feenox_instruction_file_open(this->file)); } FILE *fp = this->file->pointer; // header int version_maj = 0; int version_min = 0; if (fscanf(fp, "# vtk DataFile Version %d.%d", &version_maj, &version_min) != 2) { feenox_push_error_message("wrong VTK header"); return FEENOX_ERROR; } // the \n char buffer[BUFFER_SIZE]; feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); // the case name, we can discard it feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); // format has to be ASCII feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); if (strncmp(buffer, "ASCII", 5) != 0) { buffer[strlen(buffer)-1] = '\0'; feenox_push_error_message("only ASCII VTK files are supported, not '%s'", buffer); return FEENOX_ERROR; } // dataset unstructured grid do { if (!feof(fp)) { feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); } else { feenox_push_error_message("expecting DATASET"); return FEENOX_ERROR; } } while (strncmp(buffer, "DATASET", 7) != 0); if (strncmp(buffer, "DATASET UNSTRUCTURED_GRID", 25) != 0) { feenox_push_error_message("only UNSTRUCTURED_GRID data is supported in VTK"); return FEENOX_ERROR; } // POINTS n_nodes double do { if (!feof(fp)) { feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); } else { feenox_push_error_message("expecting POINTS"); return FEENOX_ERROR; } } while (strncmp(buffer, "POINTS", 6) != 0); char tmp[BUFFER_SIZE]; if (sscanf(buffer, "POINTS %lu %s", &this->n_nodes, tmp) != 2) { feenox_push_error_message("expected POINTS"); return FEENOX_ERROR; } if (strncmp(tmp, "double", 6) != 0 && strncmp(tmp, "float", 5) != 0) { feenox_push_error_message("either float or double data expected instead of '%s'", tmp); return FEENOX_ERROR; } feenox_check_alloc(this->node = calloc(this->n_nodes, sizeof(node_t))); for (size_t j = 0; j < this->n_nodes; j++) { if (fscanf(fp, "%lf %lf %lf", &this->node[j].x[0], &this->node[j].x[1], &this->node[j].x[2]) == 0) { feenox_push_error_message("error reading file"); return FEENOX_ERROR; } this->node[j].index_mesh = j; this->node[j].tag = j+1; } // CELLS n_cells numdata do { if (!feof(fp)) { feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); } else { feenox_push_error_message("expecting CELLS"); return FEENOX_ERROR; } } while (strncmp(buffer, "CELLS", 5) != 0); size_t num_cells = 0; size_t num_data = 0; size_t num_indexes = 0; if (sscanf(buffer, "CELLS %lu %lu", &num_cells, &num_data) != 2) { feenox_push_error_message("expected CELLS"); return FEENOX_ERROR; } // in vtk version 5.1 the cells are stored as offset + connectivy size_t *celldata = NULL; size_t *connectivity = NULL; int offset_connectivity = 0; int c = fgetc(fp); if (isdigit(c)) { // old-fashion 4.x format offset_connectivity = 0; num_indexes = num_data; if (ungetc(c, fp) == EOF) { return FEENOX_ERROR; } } else if (c == 'O') { // new 5.1 format OFFSET offset_connectivity = 1; num_indexes = num_cells; num_cells--; if (fscanf(fp, "FFSETS %s", tmp) != 1) { feenox_push_error_message("expected OFFSETS"); return FEENOX_ERROR; } } feenox_check_alloc(celldata = calloc(num_data, sizeof(size_t))); for (size_t i = 0; i < num_indexes; i++) { if (fscanf(fp, "%lu", &celldata[i]) != 1) { feenox_push_error_message("ran out of CELLS data"); return FEENOX_ERROR; } } if (offset_connectivity) { // CONNECTIVITY vtktypeint64 do { if (!feof(fp)) { feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); } else { feenox_push_error_message("expecting CONNECTIVITY"); return FEENOX_ERROR; } } while (strncmp(buffer, "CONNECTIVITY", 12) != 0); if (sscanf(buffer, "CONNECTIVITY %s", tmp) != 1) { feenox_push_error_message("expected CONNECTIVITY"); return FEENOX_ERROR; } feenox_check_alloc(connectivity = calloc(num_data, sizeof(size_t))); for (size_t i = 0; i < num_data; i++) { if (fscanf(fp, "%lu", &connectivity[i]) != 1) { feenox_push_error_message("ran out of CONNECTIVITY data"); return FEENOX_ERROR; } } } // CELL_TYPES n_cells do { if (!feof(fp)) { feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); } else { feenox_push_error_message("expecting CELL_TYPES"); return FEENOX_ERROR; } } while (strncmp(buffer, "CELL_TYPES", 10) != 0); if (sscanf(buffer, "CELL_TYPES %lu", &this->n_elements) != 1) { feenox_push_error_message("expected CELL_TYPES"); return FEENOX_ERROR; } size_t l = 0; feenox_check_alloc(this->element = calloc(this->n_elements, sizeof(element_t))); for (size_t i = 0; i < this->n_elements; i++) { int celltype = 0; if (fscanf(fp, "%d", &celltype) != 1) { feenox_push_error_message("ran out of CELL_TYPES data"); return FEENOX_ERROR; } // TODO: make a map for (int k = 0; k < NUMBER_ELEMENT_TYPE && this->element[i].type == NULL; k++) { if (vtkfromgmsh_types[k] == celltype) { this->element[i].type = &(feenox.mesh.element_types[k]); } } size_t n_nodes = (offset_connectivity == 0) ? celldata[l++] : celldata[i+1] - celldata[i]; if (this->element[i].type == NULL) { // puede ser alguno de los high-order if (celltype == 60 || celltype == 68) { // line if (n_nodes == 2) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_LINE2]; } else if (n_nodes == 3) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_LINE3]; } else { feenox_push_error_message("high-order lines are supported up to order two"); return FEENOX_ERROR; } } else if (celltype == 61 || celltype == 69) { // triangle if (n_nodes == 3) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_TRIANGLE3]; } else if (n_nodes == 6) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_TRIANGLE6]; } else { feenox_push_error_message("high-order triangles are supported up to order two"); return FEENOX_ERROR; } } else if (celltype == 62 || celltype == 70) { // quad if (n_nodes == 4) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_QUADRANGLE4]; } else if (n_nodes == 8) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_QUADRANGLE8]; } else if (n_nodes == 9) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_QUADRANGLE9]; } else { feenox_push_error_message("high-order quadrangles are supported up to order two"); return FEENOX_ERROR; } } else if (celltype == 64 || celltype == 71) { // tetrahedron if (n_nodes == 4) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_TETRAHEDRON4]; } else if (n_nodes == 10) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_TETRAHEDRON10]; } else { feenox_push_error_message("high-order tetrahedra are supported up to order two"); return FEENOX_ERROR; } } else if (celltype == 67 || celltype == 72) { // hexahedron if (n_nodes == 8) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_HEXAHEDRON8]; } else if (n_nodes == 20) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_HEXAHEDRON20]; } else if (n_nodes == 27) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_HEXAHEDRON27]; } else { feenox_push_error_message("high-order hexahedra are supported up to order two"); return FEENOX_ERROR; } } else if (celltype == 65 || celltype == 73) { // prism/wedge if (n_nodes == 6) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_PRISM6]; } else { feenox_push_error_message("high-order wedges are supported up to order one"); return FEENOX_ERROR; } } else if (celltype == 66 || celltype == 74) { // prism/wedge if (n_nodes == 5) { this->element[i].type = &feenox.mesh.element_types[ELEMENT_TYPE_PYRAMID5]; } else { feenox_push_error_message("high-order pyramids are supported up to order one"); return FEENOX_ERROR; } } } // element type if (this->element[i].type == NULL) { feenox_push_error_message("vtk elements of type '%d' are not supported in this version :-(", celltype); return FEENOX_ERROR; } if (this->element[i].type->nodes == 0) { feenox_push_error_message("elements of type '%s' are not supported in this version :-(", this->element[i].type->name); return FEENOX_ERROR; } // nodes, we have the data in celldata if (this->element[i].type->nodes != n_nodes) { feenox_push_error_message("CELL %d gives %d nodes but type '%s' has %d nodes", i, n_nodes, this->element[i].type->name, this->element[i].type->nodes); return FEENOX_ERROR; } this->element[i].index = i; this->element[i].tag = i+1; feenox_check_alloc(this->element[i].node = calloc(this->element[i].type->nodes, sizeof(node_t *))); for (size_t j = 0; j < this->element[i].type->nodes; j++) { // mind the order! // tet10 has a single flip // hex20 and hex27 have other flips as well int j_gmsh = 0; if (this->element[i].type->id == ELEMENT_TYPE_TETRAHEDRON10) { if (j == 8) { j_gmsh = 9; } else if (j == 9) { j_gmsh = 8; } else { j_gmsh = j; } } else { j_gmsh = j; } size_t node_index = (offset_connectivity == 0) ? celldata[l++] : connectivity[celldata[i]+j]; this->element[i].node[j_gmsh] = &this->node[node_index]; feenox_mesh_add_element_to_list(&this->element[i].node[j_gmsh]->element_list, &this->element[i]); } } // we have the mesh already, now we peek what else the file has // TODO: CELL_DATA int n_fields = 0; int field_data = 0; int point_data = 1; while (fgets(buffer, BUFFER_SIZE-1, fp) != NULL) { if (strncmp("POINT_DATA", buffer, 10) == 0) { point_data = 1; size_t check = 0; if (sscanf(buffer, "POINT_DATA %lu", &check) != 1) { feenox_push_error_message("expecting POINT_DATA"); return FEENOX_ERROR; } if (this->n_nodes != check) { feenox_push_error_message("expecting %ld POINT_DATA instead of %ld", this->n_nodes, check); return FEENOX_ERROR; } } else if (strncmp("CELL_DATA", buffer, 9) == 0) { // TODO: cell data point_data = 0; } else if (strncmp("METADATA", buffer, 8) == 0) { int size = 0; feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); if (sscanf(buffer, "INFORMATION %d", &size) != 1) { feenox_push_error_message("expecting INFORMATION"); return FEENOX_ERROR; } for (int i = 0; i < size; i++) { feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); } } else if (strncmp("FIELD", buffer, 5) == 0) { if (sscanf(buffer, "FIELD %s %d", tmp, &n_fields) != 2) { feenox_push_error_message("expecting FIELD"); return FEENOX_ERROR; } field_data = 1; } else if (strncmp(buffer, "SCALARS", 7) == 0 && point_data != 0) { char name[BUFFER_SIZE]; if (sscanf(buffer, "SCALARS %s %s", name, tmp) != 2) { feenox_push_error_message("expected SCALARS"); return FEENOX_ERROR; } if (strncmp(tmp, "double", 6) != 0 && strncmp(tmp, "float", 5) != 0 && strncmp(tmp, "int", 3) != 0) { feenox_push_error_message("either int, float or double data expected instead of '%s'", tmp); return FEENOX_ERROR; } feenox_call(feenox_mesh_read_vtk_field_node(this, fp, name, 1)); } else if (strncmp(buffer, "VECTORS", 7) == 0 && point_data != 0) { char name[BUFFER_SIZE]; if (sscanf(buffer, "VECTORS %s %s", name, tmp) != 2) { feenox_push_error_message("expected VECTORS"); return FEENOX_ERROR; } if (strncmp(tmp, "double", 6) != 0 && strncmp(tmp, "float", 5) != 0 && strncmp(tmp, "int", 3) != 0) { feenox_push_error_message("either int, float or double data expected instead of '%s'", tmp); return FEENOX_ERROR; } feenox_call(feenox_mesh_read_vtk_field_node(this, fp, name, 3)); } else if (field_data != 0 && point_data != 0) { char name[BUFFER_SIZE]; int size = 0; size_t check = 0; if ((sscanf(buffer, "%s %d %lu %s", name, &size, &check, tmp) == 4) && (strcmp(tmp, "double") == 0 || strcmp(tmp, "float") == 0)) { if (check != this->n_nodes) { feenox_push_error_message("expected %ld data values but there are %ld", this->n_nodes, check); return FEENOX_ERROR; } feenox_call(feenox_mesh_read_vtk_field_node(this, fp, name, size)); } } } // close the mesh file fclose(fp); this->file->pointer = NULL; return FEENOX_OK; } int feenox_mesh_read_vtk_field_node(mesh_t *this, FILE *fp, const char *name, unsigned int size) { char buffer[BUFFER_SIZE]; // check if we have to read this scalar or vector field function_t **functions = NULL; feenox_check_alloc(functions = calloc(size, sizeof(function_t *))); int found_something = 0; node_data_t *node_data = NULL; LL_FOREACH(this->node_datas, node_data) { if (size == 1) { if (strcmp(name, node_data->name_in_mesh) == 0) { node_data->found = 1; found_something = 1; functions[0] = node_data->function; } } else { for (unsigned int i = 0; i < size; i++) { // try name1 name2 name3 char *tried_name = NULL; feenox_check_minusone(asprintf(&tried_name, "%s%d", name, i+1)); if (strcmp(tried_name, node_data->name_in_mesh) == 0) { node_data->found = 1; found_something = 1; functions[i] = node_data->function; } feenox_free(tried_name); if (functions[i] == NULL && i < 3) { // try namex namey namez feenox_check_minusone(asprintf(&tried_name, "%s%c", name, 'x'+i)); if (strcmp(tried_name, node_data->name_in_mesh) == 0) { node_data->found = 1; found_something = 1; functions[i] = node_data->function; } feenox_free(tried_name); } } } } // if we don't have to read anything, keep on if (found_something == 0) { return FEENOX_OK; } // dummy lookup_table int c = fgetc(fp); if (ungetc(c, fp) == EOF) { return FEENOX_ERROR; } if (c == 'L') { feenox_check_alloc(fgets(buffer, BUFFER_SIZE-1, fp)); } for (unsigned int i = 0; i < size; i++) { if (functions[i] != NULL) { functions[i]->type = function_type_pointwise_mesh_node; functions[i]->mesh = this; functions[i]->data_size = this->n_nodes; functions[i]->vector_value->size = this->n_nodes; feenox_call(feenox_vector_init(functions[i]->vector_value, FEENOX_VECTOR_NO_INITIAL)); } } for (size_t j = 0; j < this->n_nodes; j++) { double xi = 0; for (unsigned int i = 0; i < size; i++) { if (fscanf(fp, "%lf", &xi) != 1) { feenox_push_error_message("ran out of field data"); return FEENOX_ERROR; } if (functions[i] != NULL) { feenox_vector_set(functions[i]->vector_value, j, xi); } } } feenox_free(functions); return FEENOX_OK; } feenox-1.1/src/mesh/elements/0000755000175000017500000000000014773607300013206 500000000000000feenox-1.1/src/mesh/elements/point.c0000644000175000017500000000467114773607165014444 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related point element routines * * Copyright (C) 2014--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------------------------------------------------- // one-node point // -------------------------------------------------------------- int feenox_mesh_one_node_point_init(void) { element_type_t *element_type = &feenox.mesh.element_types[ELEMENT_TYPE_POINT1]; element_type->name = "point"; element_type->id = ELEMENT_TYPE_POINT1; element_type->dim = 0; element_type->order = 0; element_type->nodes = 1; element_type->faces = 0; element_type->nodes_per_face = 0; element_type->h = feenox_mesh_one_node_point_h; element_type->dhdxi = feenox_mesh_one_node_point_dhdr; element_type->volume = feenox_mesh_point_volume; element_type->point_inside = NULL; // ------------ // gauss points and extrapolation matrices // el primero es el default feenox_mesh_alloc_gauss(&element_type->gauss[integration_full], element_type, 1); element_type->gauss[integration_full].w[0] = 1.0; feenox_mesh_init_shape_at_gauss(&element_type->gauss[integration_full], element_type); feenox_mesh_alloc_gauss(&element_type->gauss[integration_reduced], element_type, 1); element_type->gauss[integration_reduced].w[0] = 1.0; feenox_mesh_init_shape_at_gauss(&element_type->gauss[integration_reduced], element_type); return FEENOX_OK; } double feenox_mesh_one_node_point_h(int i, double *vec_r) { return 1; } double feenox_mesh_one_node_point_dhdr(int i, int j, double *vec_r) { return 0; } double feenox_mesh_point_volume(element_t *this) { return 0; } feenox-1.1/src/mesh/elements/quad4.c0000644000175000017500000002317614773607165014332 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related quadrangle element routines * * Copyright (C) 2014--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------- // four-node quadrangle // -------------------- int feenox_mesh_quad4_init(void) { double r[2]; element_type_t *element_type; int j, v; element_type = &feenox.mesh.element_types[ELEMENT_TYPE_QUADRANGLE4]; feenox_check_alloc(element_type->name = strdup("quad4")); element_type->id = ELEMENT_TYPE_QUADRANGLE4; element_type->dim = 2; element_type->order = 1; element_type->nodes = 4; element_type->faces = 4; element_type->nodes_per_face = 2; element_type->h = feenox_mesh_quad4_h; element_type->dhdxi = feenox_mesh_quad4_dhdr; element_type->point_inside = feenox_mesh_point_in_quadrangle; element_type->volume = feenox_mesh_quad_volume; element_type->area = feenox_mesh_quad_area; element_type->size = feenox_mesh_quad_size; // from Gmsh’ doc /* v ^ | 3-----------2 | | | | | | | +---- | --> u | | | | 0-----------1 */ element_type->node_coords = calloc(element_type->nodes, sizeof(double *)); element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *)); for (j = 0; j < element_type->nodes; j++) { element_type->node_coords[j] = calloc(element_type->dim, sizeof(double)); } element_type->vertices++; element_type->node_coords[0][0] = -1; element_type->node_coords[0][1] = -1; element_type->vertices++; element_type->node_coords[1][0] = +1; element_type->node_coords[1][1] = -1; element_type->vertices++; element_type->node_coords[2][0] = +1; element_type->node_coords[2][1] = +1; element_type->vertices++; element_type->node_coords[3][0] = -1; element_type->node_coords[3][1] = +1; // ------------ // gauss points and extrapolation matrices // full integration: 2x2 feenox_mesh_gauss_init_quad4(element_type, &element_type->gauss[integration_full]); element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 4); for (j = 0; j < element_type->nodes; j++) { r[0] = M_SQRT3 * element_type->node_coords[j][0]; r[1] = M_SQRT3 * element_type->node_coords[j][1]; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, j, v, feenox_mesh_quad4_h(v, r)); } } // reduced integration: 1x1 feenox_mesh_gauss_init_quad1(element_type, &element_type->gauss[integration_reduced]); element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 1); for (j = 0; j < element_type->nodes; j++) { gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, 0, 1.0); } return FEENOX_OK; } int feenox_mesh_gauss_init_quad1(element_type_t *element_type, gauss_t *gauss) { // ---- one Gauss point ---- feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 1)); gauss->w[0] = 4 * 1.0; gauss->xi[0][0] = 0.0; gauss->xi[0][1] = 0.0; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } int feenox_mesh_gauss_init_quad4(element_type_t *element_type, gauss_t *gauss) { // ---- four Gauss points ---- feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 4)); gauss->w[0] = 4 * 0.25; gauss->xi[0][0] = -1.0/M_SQRT3; gauss->xi[0][1] = -1.0/M_SQRT3; gauss->w[1] = 4 * 0.25; gauss->xi[1][0] = +1.0/M_SQRT3; gauss->xi[1][1] = -1.0/M_SQRT3; gauss->w[2] = 4 * 0.25; gauss->xi[2][0] = +1.0/M_SQRT3; gauss->xi[2][1] = +1.0/M_SQRT3; gauss->w[3] = 4 * 0.25; gauss->xi[3][0] = -1.0/M_SQRT3; gauss->xi[3][1] = +1.0/M_SQRT3; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } int feenox_mesh_gauss_init_quad9(element_type_t *element_type, gauss_t *gauss) { double w1 = 25.0/81.0; double w2 = 40.0/81.0; double w3 = 64.0/81.0; // ---- nine Gauss points feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 9)); gauss->w[0] = w1; gauss->xi[0][0] = -M_SQRT3/M_SQRT5; gauss->xi[0][1] = -M_SQRT3/M_SQRT5; gauss->w[1] = w1; gauss->xi[1][0] = +M_SQRT3/M_SQRT5; gauss->xi[1][1] = -M_SQRT3/M_SQRT5; gauss->w[2] = w1; gauss->xi[2][0] = +M_SQRT3/M_SQRT5; gauss->xi[2][1] = +M_SQRT3/M_SQRT5; gauss->w[3] = w1; gauss->xi[3][0] = -M_SQRT3/M_SQRT5; gauss->xi[3][1] = +M_SQRT3/M_SQRT5; gauss->w[4] = w2; gauss->xi[4][0] = 0.0; gauss->xi[4][1] = -M_SQRT3/M_SQRT5; gauss->w[5] = w2; gauss->xi[5][0] = +M_SQRT3/M_SQRT5; gauss->xi[5][1] = 0.0; gauss->w[6] = w2; gauss->xi[6][0] = 0.0; gauss->xi[6][1] = +M_SQRT3/M_SQRT5; gauss->w[7] = w2; gauss->xi[7][0] = -M_SQRT3/M_SQRT5; gauss->xi[7][1] = 0.0; gauss->w[8] = w3; gauss->xi[8][0] = 0.0; gauss->xi[8][1] = 0.0; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } double feenox_mesh_quad4_h(int j, double *vec_r) { double r = vec_r[0]; double s = vec_r[1]; switch (j) { case 0: return 0.25*(1-r)*(1-s); break; case 1: return 0.25*(1+r)*(1-s); break; case 2: return 0.25*(1+r)*(1+s); break; case 3: return 0.25*(1-r)*(1+s); break; } return 0; } double feenox_mesh_quad4_dhdr(int j, int m, double *vec_r) { double r = vec_r[0]; double s = vec_r[1]; switch(j) { case 0: if (m == 0) { return -0.25*(1-s); } else { return -0.25*(1-r); } break; case 1: if (m == 0) { return 0.25*(1-s); } else { return -0.25*(1+r); } break; case 2: if (m == 0) { return 0.25*(1+s); } else { return 0.25*(1+r); } break; case 3: if (m == 0) { return -0.25*(1+s); } else { return 0.25*(1-r); } break; } return 0; } int feenox_mesh_point_in_quadrangle(element_t *element, const double *x) { /* double z1, z2, z3; z1 = feenox_mesh_subtract_cross_2d(element->node[0]->x, element->node[1]->x, x); z2 = feenox_mesh_subtract_cross_2d(element->node[1]->x, element->node[2]->x, x); z3 = feenox_mesh_subtract_cross_2d(element->node[2]->x, element->node[0]->x, x); if ((GSL_SIGN(z1) == GSL_SIGN(z2) && GSL_SIGN(z2) == GSL_SIGN(z3)) || (fabs(z1) < 1e-4 && GSL_SIGN(z2) == GSL_SIGN(z3)) || (fabs(z2) < 1e-4 && GSL_SIGN(z1) == GSL_SIGN(z3)) || (fabs(z3) < 1e-4 && GSL_SIGN(z1) == GSL_SIGN(z2)) ) { return 1; } z1 = feenox_mesh_subtract_cross_2d(element->node[0]->x, element->node[2]->x, x); z2 = feenox_mesh_subtract_cross_2d(element->node[2]->x, element->node[3]->x, x); z3 = feenox_mesh_subtract_cross_2d(element->node[3]->x, element->node[0]->x, x); if ((GSL_SIGN(z1) == GSL_SIGN(z2) && GSL_SIGN(z2) == GSL_SIGN(z3)) || (fabs(z1) < 1e-4 && GSL_SIGN(z2) == GSL_SIGN(z3)) || (fabs(z2) < 1e-4 && GSL_SIGN(z1) == GSL_SIGN(z3)) || (fabs(z3) < 1e-4 && GSL_SIGN(z1) == GSL_SIGN(z2)) ) { return 1; } return 0; */ int i, j; element_t triang; triang.type = &feenox.mesh.element_types[ELEMENT_TYPE_TRIANGLE3]; triang.node = calloc(triang.type->nodes, sizeof(node_t *)); for (i = 0; i < element->type->faces; i++) { for (j = 0; j < triang.type->faces; j++) { triang.node[j] = element->node[(i+j) % element->type->faces]; } if (feenox_mesh_point_in_triangle(&triang, x)) { feenox_free(triang.node); return 1; } } feenox_free(triang.node); return 0; } double feenox_mesh_quad_volume(element_t *this) { if (this->volume == 0) { this->volume = fabs(0.5* ((this->node[2]->x[0]-this->node[0]->x[0])*(this->node[3]->x[1]-this->node[1]->x[1]) +(this->node[1]->x[0]-this->node[3]->x[0])*(this->node[2]->x[1]-this->node[0]->x[1])) ); } return this->volume; } double feenox_mesh_quad_area(element_t *this) { if (this->area == 0) { this->area += sqrt(gsl_pow_2(this->node[0]->x[0] - this->node[1]->x[0]) + gsl_pow_2(this->node[0]->x[1] - this->node[1]->x[1])); this->area += sqrt(gsl_pow_2(this->node[1]->x[0] - this->node[2]->x[0]) + gsl_pow_2(this->node[1]->x[1] - this->node[2]->x[1])); this->area += sqrt(gsl_pow_2(this->node[2]->x[0] - this->node[3]->x[0]) + gsl_pow_2(this->node[2]->x[1] - this->node[3]->x[1])); this->area += sqrt(gsl_pow_2(this->node[3]->x[0] - this->node[0]->x[0]) + gsl_pow_2(this->node[3]->x[1] - this->node[0]->x[1])); } return this->area; } double feenox_mesh_quad_size(element_t *this) { if (this->size == 0) { this->size = 1.0/2.0 * (feenox_mesh_subtract_module(this->node[0]->x, this->node[2]->x) + feenox_mesh_subtract_module(this->node[1]->x, this->node[3]->x)); } return this->size; }feenox-1.1/src/mesh/elements/prism6.c0000644000175000017500000003200214773607165014520 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related prism element routines * * Copyright (C) 2015 Ezequiel Manavela Chiapero * Copyright (C) 2015,2017--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------------------------------------------------- // six-node prism // -------------------------------------------------------------- int feenox_mesh_prism6_init(void) { int j; element_type_t *element_type = &feenox.mesh.element_types[ELEMENT_TYPE_PRISM6]; element_type->name = "prism6"; element_type->id = ELEMENT_TYPE_PRISM6; element_type->dim = 3; element_type->order = 1; element_type->nodes = 6; element_type->faces = 5; element_type->nodes_per_face = 4; // Ojo aca que en nodos por cara pusimos el maximo valor (4) ya que depende de la cara element_type->h = feenox_mesh_prism6_h; element_type->dhdxi = feenox_mesh_prism6_dhdr; element_type->point_inside = feenox_mesh_point_in_prism; element_type->volume = feenox_mesh_prism_volume; // coordenadas de los nodos /* Prism: w ^ | 3 ,/|`\ ,/ | `\ ,/ | `\ 4------+------5 | | | | ,/|`\ | | ,/ | `\ | |,/ | `\| ,| | |\ ,/ | 0 | `\ u | ,/ `\ | v | ,/ `\ | |,/ `\| 1-------------2 */ element_type->node_coords = calloc(element_type->nodes, sizeof(double *)); element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *)); for (j = 0; j < element_type->nodes; j++) { element_type->node_coords[j] = calloc(element_type->dim, sizeof(double)); } element_type->vertices++; element_type->node_coords[0][0] = 0; element_type->node_coords[0][1] = 0; element_type->node_coords[0][2] = -1; element_type->vertices++; element_type->node_coords[1][0] = 1; element_type->node_coords[1][1] = 0; element_type->node_coords[1][2] = -1; element_type->vertices++; element_type->node_coords[2][0] = 0; element_type->node_coords[2][1] = 1; element_type->node_coords[2][2] = -1; element_type->vertices++; element_type->node_coords[3][0] = 0; element_type->node_coords[3][1] = 0; element_type->node_coords[3][2] = 1; element_type->vertices++; element_type->node_coords[4][0] = 1; element_type->node_coords[4][1] = 0; element_type->node_coords[4][2] = 1; element_type->vertices++; element_type->node_coords[5][0] = 0; element_type->node_coords[5][1] = 1; element_type->node_coords[5][2] = 1; feenox_mesh_prism_gauss6_init(element_type); return FEENOX_OK; } int feenox_mesh_prism_gauss6_init(element_type_t *element_type) { // dos juegos de puntos de gauss // el primero es el default // ---- seis puntos de Gauss sobre el elemento unitario ---- gauss_t *gauss = &element_type->gauss[integration_full]; gauss->Q = 6; feenox_mesh_alloc_gauss(gauss, element_type, gauss->Q = 6); gauss->w[0] = 1.0/6.0; gauss->xi[0][0] = 1.0/6.0; gauss->xi[0][1] = 1.0/6.0; gauss->xi[0][2] = -1/M_SQRT3; gauss->w[1] = 1.0/6.0; gauss->xi[1][0] = 2.0/3.0; gauss->xi[1][1] = 1.0/6.0; gauss->xi[1][2] = -1/M_SQRT3; gauss->w[2] = 1.0/6.0; gauss->xi[2][0] = 1.0/6.0; gauss->xi[2][1] = 2.0/3.0; gauss->xi[2][2] = -1/M_SQRT3; gauss->w[3] = 1.0/6.0; gauss->xi[3][0] = 1.0/6.0; gauss->xi[3][1] = 1.0/6.0; gauss->xi[3][2] = +1/M_SQRT3; gauss->w[4] = 1.0/6.0; gauss->xi[4][0] = 2.0/3.0; gauss->xi[4][1] = 1.0/6.0; gauss->xi[4][2] = +1/M_SQRT3; gauss->w[5] = 1.0/6.0; gauss->xi[5][0] = 1.0/6.0; gauss->xi[5][1] = 2.0/3.0; gauss->xi[5][2] = +1/M_SQRT3; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); // ---- un punto de Gauss sobre el elemento unitario ---- gauss = &element_type->gauss[integration_reduced]; gauss->Q = 1; feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, gauss->Q)); gauss->w[0] = 0.5 * 1.0; gauss->xi[0][0] = 0; gauss->xi[0][1] = 0; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } double feenox_mesh_prism6_h(int j, double *vec_xi) { double xi = vec_xi[0]; double eta = vec_xi[1]; double zeta = vec_xi[2]; switch (j) { case 0: return 1.0/2.0*((1-xi-eta)*(1-zeta)); break; case 1: return 1.0/2.0*(xi*(1-zeta)); break; case 2: return 1.0/2.0*(eta*(1-zeta)); break; case 3: return 1.0/2.0*((1-xi-eta)*(1+zeta)); break; case 4: return 1.0/2.0*(xi*(1+zeta)); break; case 5: return 1.0/2.0*(eta*(1+zeta)); break; } return 0; } double feenox_mesh_prism6_dhdr(int j, int d, double *vec_xi) { double xi = vec_xi[0]; double eta = vec_xi[1]; double zeta = vec_xi[2]; switch (j) { case 0: switch(d) { case 0: return -1.0/2.0*(1-zeta); break; case 1: return -1.0/2.0*(1-zeta); break; case 2: return -1.0/2.0*(1-xi-eta); break; } break; case 1: switch(d) { case 0: return 1.0/2.0*(1-zeta); break; case 1: return 0; break; case 2: return -1.0/2.0*xi; break; } break; case 2: switch(d) { case 0: return 0; break; case 1: return 1.0/2.0*(1-zeta); break; case 2: return -1.0/2.0*eta; break; } break; case 3: switch(d) { case 0: return -1.0/2.0*(1+zeta); break; case 1: return -1.0/2.0*(1+zeta); break; case 2: return +1.0/2.0*(1-xi-eta); break; } break; case 4: switch(d) { case 0: return 1.0/2.0*(1+zeta); break; case 1: return 0; break; case 2: return +1.0/2.0*xi; break; } break; case 5: switch(d) { case 0: return 0; break; case 1: return 1.0/2.0*(1+zeta); break; case 2: return +1.0/2.0*eta; break; } break; } return 0; } // TODO: generalizar a prismas no paralelos int feenox_mesh_point_in_prism(element_t *element, const double *x) { // // metodo de coordenadas baricentricas //// http://en.wikipedia.org/wiki/Barycentric_coordinate_system // double lambda1, lambda2, lambda3; // double x1 = element->node[0]->x[0]; // double x2 = element->node[1]->x[0]; // double x3 = element->node[2]->x[0]; // double y1 = element->node[0]->x[1]; // double y2 = element->node[1]->x[1]; // double y3 = element->node[2]->x[1]; // double z1 = element->node[0]->x[2]; // double z4 = element->node[3]->x[2]; // double zero, one; // // lambda1 = ((y2-y3)*(x[0]-x3) + (x3-x2)*(x[1]-y3))/((y2-y3)*(x1-x3) + (x3-x2)*(y1-y3)); // lambda2 = ((y3-y1)*(x[0]-x3) + (x1-x3)*(x[1]-y3))/((y2-y3)*(x1-x3) + (x3-x2)*(y1-y3)); // lambda3 = 1 - lambda1 - lambda2; // // zero = -feenox_var(feenox_mesh.vars.eps); // one = 1+feenox_var(feenox_mesh.vars.eps); // // return (lambda1 > zero && lambda1 < one && // lambda2 > zero && lambda2 < one && // lambda3 > zero && lambda3 < one && // (x[2]+1e-4) > z1 && (x[2]-1e-4) < z4); // //} //here we define 3 tetrahedrons which compose the original prism //These tetrahedrons are (0,1,2,3), (4,3,5,1), (2,3,5,1) double zero, one, lambda1, lambda2, lambda3, lambda4; gsl_vector *tetra_aux_index = gsl_vector_alloc(4); gsl_matrix *T = gsl_matrix_alloc(3, 3); gsl_vector *xx4 = gsl_vector_alloc(3); gsl_vector *lambda = gsl_vector_alloc(3); gsl_permutation *p = gsl_permutation_alloc(3); int s, flag; int i, j, jj, jj_end; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { gsl_matrix_set(T, i, j, element->node[j]->x[i] - element->node[3]->x[i]); } gsl_vector_set(xx4, i, x[i] - element->node[3]->x[i]); } gsl_linalg_LU_decomp (T, p, &s); gsl_linalg_LU_solve (T, p, xx4, lambda); zero = -feenox_var_value(feenox.mesh.vars.eps); one = 1+feenox_var_value(feenox.mesh.vars.eps); lambda1 = gsl_vector_get(lambda, 0); lambda2 = gsl_vector_get(lambda, 1); lambda3 = gsl_vector_get(lambda, 2); lambda4 = 1 - gsl_vector_get(lambda, 0) - gsl_vector_get(lambda, 1) - gsl_vector_get(lambda, 2); flag = (lambda1 > zero && lambda1 < one && lambda2 > zero && lambda2 < one && lambda3 > zero && lambda3 < one && lambda4 > zero && lambda4 < one); if (flag == 0){ gsl_vector_set(tetra_aux_index, 0, 4); gsl_vector_set(tetra_aux_index, 1, 3); gsl_vector_set(tetra_aux_index, 2, 5); gsl_vector_set(tetra_aux_index, 3, 1); jj_end = gsl_vector_get(tetra_aux_index, 3); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { jj = gsl_vector_get(tetra_aux_index, j); gsl_matrix_set(T, i, j, element->node[jj]->x[i] - element->node[jj_end]->x[i]); } gsl_vector_set(xx4, i, x[i] - element->node[jj_end]->x[i]); } gsl_linalg_LU_decomp (T, p, &s); gsl_linalg_LU_solve (T, p, xx4, lambda); zero = -feenox_var_value(feenox.mesh.vars.eps); one = 1+feenox_var_value(feenox.mesh.vars.eps); lambda1 = gsl_vector_get(lambda, 0); lambda2 = gsl_vector_get(lambda, 1); lambda3 = gsl_vector_get(lambda, 2); lambda4 = 1 - gsl_vector_get(lambda, 0) - gsl_vector_get(lambda, 1) - gsl_vector_get(lambda, 2); flag = (lambda1 > zero && lambda1 < one && lambda2 > zero && lambda2 < one && lambda3 > zero && lambda3 < one && lambda4 > zero && lambda4 < one); } if (flag == 0){ gsl_vector_set(tetra_aux_index, 0, 2); gsl_vector_set(tetra_aux_index, 1, 3); gsl_vector_set(tetra_aux_index, 2, 5); gsl_vector_set(tetra_aux_index, 3, 1); jj_end = gsl_vector_get(tetra_aux_index, 3); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { jj = gsl_vector_get(tetra_aux_index, j); gsl_matrix_set(T, i, j, element->node[jj]->x[i] - element->node[jj_end]->x[i]); } gsl_vector_set(xx4, i, x[i] - element->node[jj_end]->x[i]); } gsl_linalg_LU_decomp (T, p, &s); gsl_linalg_LU_solve (T, p, xx4, lambda); zero = -feenox_var_value(feenox.mesh.vars.eps); one = 1+feenox_var_value(feenox.mesh.vars.eps); lambda1 = gsl_vector_get(lambda, 0); lambda2 = gsl_vector_get(lambda, 1); lambda3 = gsl_vector_get(lambda, 2); lambda4 = 1 - gsl_vector_get(lambda, 0) - gsl_vector_get(lambda, 1) - gsl_vector_get(lambda, 2); flag = (lambda1 > zero && lambda1 < one && lambda2 > zero && lambda2 < one && lambda3 > zero && lambda3 < one && lambda4 > zero && lambda4 < one); } gsl_matrix_free(T); gsl_vector_free(xx4); gsl_vector_free(lambda); gsl_permutation_free(p); return flag; } // TODO: generalizar a prismas no paralelos double feenox_mesh_prism_volume(element_t *this) { // return 0.5 * fabs(element->node[0]->x[2]-element->node[3]->x[2])* fabs(feenox_mesh_subtract_cross_2d(element->node[0]->x, element->node[1]->x, element->node[2]->x)); if (this->volume == 0) { double a[3], b[3], c[3]; double v1, v2, v3; feenox_mesh_subtract(this->node[0]->x, this->node[1]->x, a); feenox_mesh_subtract(this->node[0]->x, this->node[2]->x, b); feenox_mesh_subtract(this->node[0]->x, this->node[3]->x, c); v1 = fabs(feenox_mesh_cross_dot(a, b, c)); feenox_mesh_subtract(this->node[4]->x, this->node[3]->x, a); feenox_mesh_subtract(this->node[4]->x, this->node[5]->x, b); feenox_mesh_subtract(this->node[4]->x, this->node[1]->x, c); v2 = fabs(feenox_mesh_cross_dot(a, b, c)); feenox_mesh_subtract(this->node[2]->x, this->node[3]->x, a); feenox_mesh_subtract(this->node[2]->x, this->node[5]->x, b); feenox_mesh_subtract(this->node[2]->x, this->node[1]->x, c); v3 = fabs(feenox_mesh_cross_dot(a, b, c)); this->volume = 1.0/(1.0*2.0*3.0) * (v1+v2+v3); } return this->volume; } feenox-1.1/src/mesh/elements/hexa8.c0000644000175000017500000004246714773607165014335 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related hexahedron element routines * * Copyright (C) 2014--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------------------------------------------------- // eight-node hexahedron // -------------------------------------------------------------- int feenox_mesh_hexa8_init(void) { double xi[3]; unsigned int j, q; element_type_t * element_type = &feenox.mesh.element_types[ELEMENT_TYPE_HEXAHEDRON8]; element_type->name = "hexa8"; element_type->id = ELEMENT_TYPE_HEXAHEDRON8; element_type->dim = 3; element_type->order = 1; element_type->nodes = 8; element_type->faces = 6; element_type->nodes_per_face = 4; element_type->h = feenox_mesh_hexa8_h; element_type->dhdxi = feenox_mesh_hexa8_dhdr; element_type->point_inside = feenox_mesh_point_in_hexahedron; element_type->volume = feenox_mesh_hex_volume; element_type->size = feenox_mesh_hex_size; // from Gmsh’ doc /* Hexahedron: v 3----------2 |\ ^ |\ | \ | | \ | \ | | \ | 7------+---6 | | +-- |-- | -> u 0---+---\--1 | \ | \ \ | \ | \ \ | \| w \| 4----------5 */ element_type->node_coords = calloc(element_type->nodes, sizeof(double *)); element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *)); for (j = 0; j < element_type->nodes; j++) { element_type->node_coords[j] = calloc(element_type->dim, sizeof(double)); } element_type->vertices++; element_type->node_coords[0][0] = -1; element_type->node_coords[0][1] = -1; element_type->node_coords[0][2] = -1; element_type->vertices++; element_type->node_coords[1][0] = +1; element_type->node_coords[1][1] = -1; element_type->node_coords[1][2] = -1; element_type->vertices++; element_type->node_coords[2][0] = +1; element_type->node_coords[2][1] = +1; element_type->node_coords[2][2] = -1; element_type->vertices++; element_type->node_coords[3][0] = -1; element_type->node_coords[3][1] = +1; element_type->node_coords[3][2] = -1; element_type->vertices++; element_type->node_coords[4][0] = -1; element_type->node_coords[4][1] = -1; element_type->node_coords[4][2] = +1; element_type->vertices++; element_type->node_coords[5][0] = +1; element_type->node_coords[5][1] = -1; element_type->node_coords[5][2] = +1; element_type->vertices++; element_type->node_coords[6][0] = +1; element_type->node_coords[6][1] = +1; element_type->node_coords[6][2] = +1; element_type->vertices++; element_type->node_coords[7][0] = -1; element_type->node_coords[7][1] = +1; element_type->node_coords[7][2] = +1; // ------------ // gauss points and extrapolation matrices // full integration: 2x2x2 feenox_mesh_gauss_init_hexa8(element_type, &element_type->gauss[integration_full]); element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 8); for (j = 0; j < element_type->nodes; j++) { xi[0] = M_SQRT3 * element_type->node_coords[j][0]; xi[1] = M_SQRT3 * element_type->node_coords[j][1]; xi[2] = M_SQRT3 * element_type->node_coords[j][2]; for (q = 0; q < 8; q++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, j, q, feenox_mesh_hexa8_h(q, xi)); } } // reduced integration: 1 feenox_mesh_gauss_init_hexa1(element_type, &element_type->gauss[integration_reduced]); element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 1); for (j = 0; j < element_type->nodes; j++) { gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, 0, 1.0); } return FEENOX_OK; } int feenox_mesh_gauss_init_hexa1(element_type_t *element_type, gauss_t *gauss) { // ---- one Gauss point ---- feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 1)); gauss->w[0] = 8 * 1.0; gauss->xi[0][0] = 0.0; gauss->xi[0][1] = 0.0; gauss->xi[0][2] = 0.0; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } int feenox_mesh_gauss_init_hexa8(element_type_t *element_type, gauss_t *gauss) { // ---- eight Gauss points ---- feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 8)); gauss->w[0] = 8 * 1.0/8.0; gauss->xi[0][0] = -1.0/M_SQRT3; gauss->xi[0][1] = -1.0/M_SQRT3; gauss->xi[0][2] = -1.0/M_SQRT3; gauss->w[1] = 8 * 1.0/8.0; gauss->xi[1][0] = +1.0/M_SQRT3; gauss->xi[1][1] = -1.0/M_SQRT3; gauss->xi[1][2] = -1.0/M_SQRT3; gauss->w[2] = 8 * 1.0/8.0; gauss->xi[2][0] = +1.0/M_SQRT3; gauss->xi[2][1] = +1.0/M_SQRT3; gauss->xi[2][2] = -1.0/M_SQRT3; gauss->w[3] = 8 * 1.0/8.0; gauss->xi[3][0] = -1.0/M_SQRT3; gauss->xi[3][1] = +1.0/M_SQRT3; gauss->xi[3][2] = -1.0/M_SQRT3; gauss->w[4] = 8 * 1.0/8.0; gauss->xi[4][0] = -1.0/M_SQRT3; gauss->xi[4][1] = -1.0/M_SQRT3; gauss->xi[4][2] = +1.0/M_SQRT3; gauss->w[5] = 8 * 1.0/8.0; gauss->xi[5][0] = +1.0/M_SQRT3; gauss->xi[5][1] = -1.0/M_SQRT3; gauss->xi[5][2] = +1.0/M_SQRT3; gauss->w[6] = 8 * 1.0/8.0; gauss->xi[6][0] = +1.0/M_SQRT3; gauss->xi[6][1] = +1.0/M_SQRT3; gauss->xi[6][2] = +1.0/M_SQRT3; gauss->w[7] = 8 * 1.0/8.0; gauss->xi[7][0] = -1.0/M_SQRT3; gauss->xi[7][1] = +1.0/M_SQRT3; gauss->xi[7][2] = +1.0/M_SQRT3; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } int feenox_mesh_gauss_init_hexa27(element_type_t *element_type, gauss_t *gauss) { double const w1 = 5.0/9.0; double const w2 = 8.0/9.0; // ---- one Gauss point ---- feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 27)); //Reference https://www.code-aster.org/V2/doc/v11/en/man_r/r3/r3.01.01.pdf // https://www.code-aster.org/V2/doc/default/en/man_r/r3/r3.01.01.pdf gauss->w[0] = w1 * w1 * w1; gauss->xi[0][0] = -M_SQRT3/M_SQRT5; gauss->xi[0][1] = -M_SQRT3/M_SQRT5; gauss->xi[0][2] = -M_SQRT3/M_SQRT5; gauss->w[1] = w1 * w1 * w1; gauss->xi[1][0] = +M_SQRT3/M_SQRT5; gauss->xi[1][1] = -M_SQRT3/M_SQRT5; gauss->xi[1][2] = -M_SQRT3/M_SQRT5; gauss->w[2] = w1 * w1 * w1; gauss->xi[2][0] = +M_SQRT3/M_SQRT5; gauss->xi[2][1] = +M_SQRT3/M_SQRT5; gauss->xi[2][2] = -M_SQRT3/M_SQRT5; gauss->w[3] = w1 * w1 * w1; gauss->xi[3][0] = -M_SQRT3/M_SQRT5; gauss->xi[3][1] = +M_SQRT3/M_SQRT5; gauss->xi[3][2] = -M_SQRT3/M_SQRT5; gauss->w[4] = w1 * w1 * w1; gauss->xi[4][0] = -M_SQRT3/M_SQRT5; gauss->xi[4][1] = -M_SQRT3/M_SQRT5; gauss->xi[4][2] = +M_SQRT3/M_SQRT5; gauss->w[5] = w1 * w1 * w1; gauss->xi[5][0] = +M_SQRT3/M_SQRT5; gauss->xi[5][1] = -M_SQRT3/M_SQRT5; gauss->xi[5][2] = +M_SQRT3/M_SQRT5; gauss->w[6] = w1 * w1 * w1; gauss->xi[6][0] = +M_SQRT3/M_SQRT5; gauss->xi[6][1] = +M_SQRT3/M_SQRT5; gauss->xi[6][2] = +M_SQRT3/M_SQRT5; gauss->w[7] = w1 * w1 * w1; gauss->xi[7][0] = -M_SQRT3/M_SQRT5; gauss->xi[7][1] = +M_SQRT3/M_SQRT5; gauss->xi[7][2] = +M_SQRT3/M_SQRT5; gauss->w[8] = w1 * w1 * w2; gauss->xi[8][0] = 0.0; gauss->xi[8][1] = -M_SQRT3/M_SQRT5; gauss->xi[8][2] = -M_SQRT3/M_SQRT5; gauss->w[9] = w1 * w1 * w2; gauss->xi[9][0] = -M_SQRT3/M_SQRT5; gauss->xi[9][1] = 0.0; gauss->xi[9][2] = -M_SQRT3/M_SQRT5; gauss->w[10] = w1 * w1 * w2; gauss->xi[10][0] = -M_SQRT3/M_SQRT5; gauss->xi[10][1] = -M_SQRT3/M_SQRT5; gauss->xi[10][2] = 0.0; gauss->w[11] = w1 * w1 * w2; gauss->xi[11][0] = +M_SQRT3/M_SQRT5; gauss->xi[11][1] = 0.0; gauss->xi[11][2] = -M_SQRT3/M_SQRT5; gauss->w[12] = w1 * w1 * w2; gauss->xi[12][0] = +M_SQRT3/M_SQRT5; gauss->xi[12][1] = -M_SQRT3/M_SQRT5; gauss->xi[12][2] = 0.0; gauss->w[13] = w1 * w1 * w2; gauss->xi[13][0] = 0.0; gauss->xi[13][1] = +M_SQRT3/M_SQRT5; gauss->xi[13][2] = -M_SQRT3/M_SQRT5; gauss->w[14] = w1 * w1 * w2; gauss->xi[14][0] = +M_SQRT3/M_SQRT5; gauss->xi[14][1] = +M_SQRT3/M_SQRT5; gauss->xi[14][2] = 0.0; gauss->w[15] = w1 * w1 * w2; gauss->xi[15][0] = -M_SQRT3/M_SQRT5; gauss->xi[15][1] = +M_SQRT3/M_SQRT5; gauss->xi[15][2] = 0.0; gauss->w[16] = w1 * w1 * w2; gauss->xi[16][0] = 0.0; gauss->xi[16][1] = -M_SQRT3/M_SQRT5; gauss->xi[16][2] = +M_SQRT3/M_SQRT5; gauss->w[17] = w1 * w1 * w2; gauss->xi[17][0] = -M_SQRT3/M_SQRT5; gauss->xi[17][1] = 0.0; gauss->xi[17][2] = +M_SQRT3/M_SQRT5; gauss->w[18] = w1 * w1 * w2; gauss->xi[18][0] = +M_SQRT3/M_SQRT5; gauss->xi[18][1] = 0.0; gauss->xi[18][2] = +M_SQRT3/M_SQRT5; gauss->w[19] = w1 * w1 * w2; gauss->xi[19][0] = 0.0; gauss->xi[19][1] = +M_SQRT3/M_SQRT5; gauss->xi[19][2] = +M_SQRT3/M_SQRT5; gauss->w[20] = w1 * w2 * w2; gauss->xi[20][0] = 0.0; gauss->xi[20][1] = 0.0; gauss->xi[20][2] = -M_SQRT3/M_SQRT5; gauss->w[21] = w1 * w2 * w2; gauss->xi[21][0] = 0.0; gauss->xi[21][1] = -M_SQRT3/M_SQRT5; gauss->xi[21][2] = 0.0; gauss->w[22] = w1 * w2 * w2; gauss->xi[22][0] = -M_SQRT3/M_SQRT5; gauss->xi[22][1] = 0.0; gauss->xi[22][2] = 0.0; gauss->w[23] = w1 * w2 * w2; gauss->xi[23][0] = +M_SQRT3/M_SQRT5; gauss->xi[23][1] = 0.0; gauss->xi[23][2] = 0.0; gauss->w[24] = w1 * w2 * w2; gauss->xi[24][0] = 0.0; gauss->xi[24][1] = +M_SQRT3/M_SQRT5; gauss->xi[24][2] = 0.0; gauss->w[25] = w1 * w2 * w2; gauss->xi[25][0] = 0.0; gauss->xi[25][1] = 0.0; gauss->xi[25][2] = +M_SQRT3/M_SQRT5; gauss->w[26] = w2 * w2 * w2; gauss->xi[26][0] = 0.0; gauss->xi[26][1] = 0.0; gauss->xi[26][2] = 0.0; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } double feenox_mesh_hexa8_h(int j, double *vec_xi) { double xi = vec_xi[0]; double eta = vec_xi[1]; double zeta = vec_xi[2]; switch (j) { case 0: return 1.0/8.0*(1-xi)*(1-eta)*(1-zeta); break; case 1: return 1.0/8.0*(1+xi)*(1-eta)*(1-zeta); break; case 2: return 1.0/8.0*(1+xi)*(1+eta)*(1-zeta); break; case 3: return 1.0/8.0*(1-xi)*(1+eta)*(1-zeta); break; case 4: return 1.0/8.0*(1-xi)*(1-eta)*(1+zeta); break; case 5: return 1.0/8.0*(1+xi)*(1-eta)*(1+zeta); break; case 6: return 1.0/8.0*(1+xi)*(1+eta)*(1+zeta); break; case 7: return 1.0/8.0*(1-xi)*(1+eta)*(1+zeta); break; } return 0; } double feenox_mesh_hexa8_dhdr(int j, int d, double *vec_xi) { double xi = vec_xi[0]; double eta = vec_xi[1]; double zeta = vec_xi[2]; switch (j) { case 0: switch(d) { case 0: return -1.0/8.0*(1-eta)*(1-zeta); break; case 1: return -1.0/8.0*(1-xi)*(1-zeta); break; case 2: return -1.0/8.0*(1-xi)*(1-eta); break; } break; case 1: switch(d) { case 0: return +1.0/8.0*(1-eta)*(1-zeta); break; case 1: return -1.0/8.0*(1+xi)*(1-zeta); break; case 2: return -1.0/8.0*(1+xi)*(1-eta); break; } break; case 2: switch(d) { case 0: return +1.0/8.0*(1+eta)*(1-zeta); break; case 1: return +1.0/8.0*(1+xi)*(1-zeta); break; case 2: return -1.0/8.0*(1+xi)*(1+eta); break; } break; case 3: switch(d) { case 0: return -1.0/8.0*(1+eta)*(1-zeta); break; case 1: return +1.0/8.0*(1-xi)*(1-zeta); break; case 2: return -1.0/8.0*(1-xi)*(1+eta); break; } break; case 4: switch(d) { case 0: return -1.0/8.0*(1-eta)*(1+zeta); break; case 1: return -1.0/8.0*(1-xi)*(1+zeta); break; case 2: return +1.0/8.0*(1-xi)*(1-eta); break; } break; case 5: switch(d) { case 0: return +1.0/8.0*(1-eta)*(1+zeta); break; case 1: return -1.0/8.0*(1+xi)*(1+zeta); break; case 2: return +1.0/8.0*(1+xi)*(1-eta); break; } break; case 6: switch(d) { case 0: return +1.0/8.0*(1+eta)*(1+zeta); break; case 1: return +1.0/8.0*(1+xi)*(1+zeta); break; case 2: return +1.0/8.0*(1+xi)*(1+eta); break; } break; case 7: switch(d) { case 0: return -1.0/8.0*(1+eta)*(1+zeta); break; case 1: return +1.0/8.0*(1-xi)*(1+zeta); break; case 2: return +1.0/8.0*(1-xi)*(1+eta); break; } break; } return 0; } int feenox_mesh_point_in_hexahedron(element_t *element, const double *x) { // divide the hex8 into six tet4 and check if the point is inside any of them element_t tet; tet.type = &feenox.mesh.element_types[ELEMENT_TYPE_TETRAHEDRON4]; feenox_check_alloc(tet.node = calloc(tet.type->nodes, sizeof(node_t *))); // first tet: 0 1 3 4 tet.node[0] = element->node[0]; tet.node[1] = element->node[1]; tet.node[2] = element->node[3]; tet.node[3] = element->node[4]; if (tet.type->point_inside(&tet, x)) { feenox_free(tet.node); return 1; } // second tet: 5 4 7 1 tet.node[0] = element->node[5]; tet.node[1] = element->node[4]; tet.node[2] = element->node[7]; tet.node[3] = element->node[1]; if (tet.type->point_inside(&tet, x)) { feenox_free(tet.node); return 1; } // third tet: 3 4 7 1 tet.node[0] = element->node[3]; tet.node[1] = element->node[4]; tet.node[2] = element->node[7]; tet.node[3] = element->node[1]; if (tet.type->point_inside(&tet, x)) { feenox_free(tet.node); return 1; } // forth tet: 3 1 2 7 tet.node[0] = element->node[3]; tet.node[1] = element->node[1]; tet.node[2] = element->node[2]; tet.node[3] = element->node[7]; if (tet.type->point_inside(&tet, x)) { feenox_free(tet.node); return 1; } // fifth tet: 5 7 6 1 tet.node[0] = element->node[5]; tet.node[1] = element->node[7]; tet.node[2] = element->node[6]; tet.node[3] = element->node[1]; if (tet.type->point_inside(&tet, x)) { feenox_free(tet.node); return 1; } // sixth tet: 2 7 6 1 tet.node[0] = element->node[2]; tet.node[1] = element->node[7]; tet.node[2] = element->node[6]; tet.node[3] = element->node[1]; if (tet.type->point_inside(&tet, x)) { feenox_free(tet.node); return 1; } feenox_free(tet.node); return 0; } double feenox_mesh_hex_volume(element_t *element) { if (element->volume == 0) { double a[3], b[3], c[3]; double v1, v2, v3, v4, v5, v6; feenox_mesh_subtract(element->node[0]->x, element->node[1]->x, a); feenox_mesh_subtract(element->node[0]->x, element->node[3]->x, b); feenox_mesh_subtract(element->node[0]->x, element->node[4]->x, c); v1 = fabs(feenox_mesh_cross_dot(a, b, c)); feenox_mesh_subtract(element->node[5]->x, element->node[4]->x, a); feenox_mesh_subtract(element->node[5]->x, element->node[7]->x, b); feenox_mesh_subtract(element->node[5]->x, element->node[1]->x, c); v2 = fabs(feenox_mesh_cross_dot(a, b, c)); feenox_mesh_subtract(element->node[3]->x, element->node[4]->x, a); feenox_mesh_subtract(element->node[3]->x, element->node[7]->x, b); feenox_mesh_subtract(element->node[3]->x, element->node[1]->x, c); v3 = fabs(feenox_mesh_cross_dot(a, b, c)); feenox_mesh_subtract(element->node[3]->x, element->node[1]->x, a); feenox_mesh_subtract(element->node[3]->x, element->node[2]->x, b); feenox_mesh_subtract(element->node[3]->x, element->node[7]->x, c); v4 = fabs(feenox_mesh_cross_dot(a, b, c)); feenox_mesh_subtract(element->node[5]->x, element->node[7]->x, a); feenox_mesh_subtract(element->node[5]->x, element->node[6]->x, b); feenox_mesh_subtract(element->node[5]->x, element->node[1]->x, c); v5 = fabs(feenox_mesh_cross_dot(a, b, c)); feenox_mesh_subtract(element->node[2]->x, element->node[7]->x, a); feenox_mesh_subtract(element->node[2]->x, element->node[6]->x, b); feenox_mesh_subtract(element->node[2]->x, element->node[1]->x, c); v6 = fabs(feenox_mesh_cross_dot(a, b, c)); element->volume = 1.0/(1.0*2.0*3.0) * (v1+v2+v3+v4+v5+v6); } return element->volume; } double feenox_mesh_hex_size(element_t *this) { if (this->size == 0) { this->size = 1.0/4.0 * (feenox_mesh_subtract_module(this->node[0]->x, this->node[5]->x) + feenox_mesh_subtract_module(this->node[1]->x, this->node[6]->x) + feenox_mesh_subtract_module(this->node[2]->x, this->node[7]->x) + feenox_mesh_subtract_module(this->node[3]->x, this->node[8]->x)); } return this->size; }feenox-1.1/src/mesh/elements/line3.c0000644000175000017500000001027614773607165014323 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related line3 element routines * * Copyright (C) 2017--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------------------------------------------------- // three-node line // -------------------------------------------------------------- int feenox_mesh_line3_init(void) { element_type_t *element_type = &feenox.mesh.element_types[ELEMENT_TYPE_LINE3]; element_type->name = "line3"; element_type->id = ELEMENT_TYPE_LINE3; element_type->dim = 1; element_type->order = 2; element_type->nodes = 3; element_type->faces = 2; element_type->nodes_per_face = 1; element_type->h = feenox_mesh_line3_h; element_type->dhdxi = feenox_mesh_line3_dhdr; element_type->point_inside = feenox_mesh_point_in_line; element_type->volume = feenox_mesh_line_volume; element_type->area = feenox_mesh_line_area; element_type->size = feenox_mesh_line_size; // from Gmsh’ doc /* Line3: 0-----2----1 */ feenox_check_alloc(element_type->node_coords = calloc(element_type->nodes, sizeof(double *))); feenox_check_alloc(element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *))); for (unsigned int j = 0; j < element_type->nodes; j++) { feenox_check_alloc(element_type->node_coords[j] = calloc(element_type->dim, sizeof(double))); } element_type->vertices++; element_type->node_coords[0][0] = -1; element_type->vertices++; element_type->node_coords[1][0] = 1; feenox_mesh_add_node_parent(&element_type->node_parents[2], 0); feenox_mesh_add_node_parent(&element_type->node_parents[2], 1); feenox_mesh_compute_coords_from_parent(element_type, 2); // ------------ // gauss points and extrapolation matrices // full integration: three points feenox_mesh_gauss_init_line3(element_type, &element_type->gauss[integration_full]); feenox_check_alloc(element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 3)); for (unsigned int j = 0; j < element_type->nodes; j++) { double xi[] = { M_SQRT5/M_SQRT3 * element_type->node_coords[j][0] }; for (unsigned int q = 0; q < 3; q++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, j, q, feenox_mesh_line3_h(q, xi)); } } // reduced integration: two points feenox_mesh_gauss_init_line2(element_type, &element_type->gauss[integration_reduced]); element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 2); for (unsigned int j = 0; j < element_type->nodes; j++) { double xi[] = { M_SQRT3 * element_type->node_coords[j][0] }; for (unsigned q = 0; q < 2; q++) { gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, q, feenox_mesh_line2_h(q, xi)); } } return FEENOX_OK; } double feenox_mesh_line3_h(int j, double *vec_xi) { double r = vec_xi[0]; switch (j) { case 0: return 0.5*r*(r-1); break; case 1: return 0.5*r*(r+1); break; case 2: return (1+r)*(1-r); break; } return 0; } double feenox_mesh_line3_dhdr(int j, int d, double *vec_xi) { double xi = vec_xi[0]; switch(j) { case 0: if (d == 0) { return xi-0.5; } break; case 1: if (d == 0) { return xi+0.5; } break; case 2: if (d == 0) { return -2*xi; } break; } return 0; } feenox-1.1/src/mesh/elements/prism15.c0000644000175000017500000002162314773607165014607 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related prism15 element routines * * Copyright (C) 2015 Ezequiel Manavela Chiapero * Copyright (C) 2015,2017--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------------------------------------------------- // fifteen-node prism // -------------------------------------------------------------- int feenox_mesh_prism15_init(void) { int q; element_type_t *element_type = &feenox.mesh.element_types[ELEMENT_TYPE_PRISM15]; feenox_check_alloc(element_type->name = strdup("prism15")); element_type->id = ELEMENT_TYPE_PRISM15; element_type->dim = 3; element_type->order = 2; element_type->nodes = 15; element_type->faces = 5; element_type->nodes_per_face = 8; // Ojo aca que en nodos por cara pusimos el maximo valor (8) ya que depende de la cara element_type->h = feenox_mesh_prism15_h; element_type->dhdxi = feenox_mesh_prism15_dhdr; element_type->point_inside = feenox_mesh_point_in_prism; element_type->volume = feenox_mesh_prism_volume; // coordenadas de los nodos /* Prism: w ^ | 3 3 ,/|`\ ,/|`\ ,/ | `\ 12 | 13 ,/ | `\ ,/ | `\ 4------+------5 4------14-----5 | | | | 8 | | ,/|`\ | | | | | ,/ | `\ | | | | |,/ | `\| | | | ,| | |\ 10 | 11 ,/ | 0 | `\ | 0 | u | ,/ `\ | v | ,/ `\ | | ,/ `\ | | ,6 `7 | |,/ `\| |,/ `\| 1-------------2 1------9------2 */ element_type->node_coords = calloc(element_type->nodes, sizeof(double *)); element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *)); for (q = 0; q < element_type->nodes; q++) { element_type->node_coords[q] = calloc(element_type->dim, sizeof(double)); } element_type->vertices++; element_type->node_coords[0][0] = 0; element_type->node_coords[0][1] = 0; element_type->node_coords[0][2] = -1; element_type->vertices++; element_type->node_coords[1][0] = 1; element_type->node_coords[1][1] = 0; element_type->node_coords[1][2] = -1; element_type->vertices++; element_type->node_coords[2][0] = 0; element_type->node_coords[2][1] = 1; element_type->node_coords[2][2] = -1; element_type->vertices++; element_type->node_coords[3][0] = 0; element_type->node_coords[3][1] = 0; element_type->node_coords[3][2] = 1; element_type->vertices++; element_type->node_coords[4][0] = 1; element_type->node_coords[4][1] = 0; element_type->node_coords[4][2] = 1; element_type->vertices++; element_type->node_coords[5][0] = 0; element_type->node_coords[5][1] = 1; element_type->node_coords[5][2] = 1; feenox_mesh_prism_gauss6_init(element_type); return FEENOX_OK; } double feenox_mesh_prism15_h(int j, double *vec_xi) { double xi = vec_xi[0]; double eta = vec_xi[1]; double zeta = vec_xi[2]; switch (j) { case 0: return ((zeta-1)*(1-eta-xi)*(zeta+2*eta+2*xi))/2; break; case 1: return (xi*(1-zeta)*(2*xi-2-zeta))/2; break; case 2: return (eta*(1-zeta)*(2*eta-2-zeta))/2; break; case 3: return (((-zeta)-1)*(1-eta-xi)*((-zeta)+2*eta+2*xi))/2; break; case 4: return (xi*(1+zeta)*(2*xi-2+zeta))/2; break; case 5: return (eta*(1+zeta)*(2*eta-2+zeta))/2; break; case 6: return 2*xi*(1-eta-xi)*(1-zeta); break; case 7: return 2*eta*(1-eta-xi)*(1-zeta); break; case 8: return (1-eta-xi)*(1-zeta*zeta); break; case 9: return 2*eta*xi*(1-zeta); break; case 10: return xi*(1-zeta*zeta); break; case 11: return eta*(1-zeta*zeta); break; case 12: return 2*xi*(1-eta-xi)*(1+zeta); break; case 13: return 2*eta*(1-eta-xi)*(1+zeta); break; case 14: return 2*eta*xi*(1+zeta); break; } return 0; } double feenox_mesh_prism15_dhdr(int j, int m, double *vec_r) { double r = vec_r[0]; double s = vec_r[1]; double t = vec_r[2]; switch (j) { case 0: switch(m) { case 0: return ((-s)-r+1)*(t-1)-((t-1)*(t+2*s+2*r))/2; break; case 1: return ((-s)-r+1)*(t-1)-((t-1)*(t+2*s+2*r))/2; break; case 2: return (((-s)-r+1)*(t+2*s+2*r))/2+(((-s)-r+1)*(t-1))/2; break; } break; case 1: switch(m) { case 0: return ((1-t)*((-t)+2*r-2))/2+r*(1-t); break; case 1: return 0; break; case 2: return (-(r*((-t)+2*r-2))/2)-(r*(1-t))/2; break; } break; case 2: switch(m) { case 0: return 0; break; case 1: return ((1-t)*((-t)+2*s-2))/2+s*(1-t); break; case 2: return (-(s*((-t)+2*s-2))/2)-(s*(1-t))/2; break; } break; case 3: switch(m) { case 0: return ((-s)-r+1)*((-t)-1)-(((-t)-1)*((-t)+2*s+2*r))/2; break; case 1: return ((-s)-r+1)*((-t)-1)-(((-t)-1)*((-t)+2*s+2*r))/2; break; case 2: return (-(((-s)-r+1)*((-t)+2*s+2*r))/2)-(((-s)-r+1)*((-t)-1))/2; break; } break; case 4: switch(m) { case 0: return ((t+1)*(t+2*r-2))/2+r*(t+1); break; case 1: return 0; break; case 2: return (r*(t+2*r-2))/2+(r*(t+1))/2; break; } break; case 5: switch(m) { case 0: return 0; break; case 1: return ((t+1)*(t+2*s-2))/2+s*(t+1); break; case 2: return (s*(t+2*s-2))/2+(s*(t+1))/2; break; } break; case 6: switch(m) { case 0: return 2*((-s)-r+1)*(1-t)-2*r*(1-t); break; case 1: return -2*r*(1-t); break; case 2: return -2*r*((-s)-r+1); break; } break; case 7: switch(m) { case 0: return -2*s*(1-t); break; case 1: return 2*((-s)-r+1)*(1-t)-2*s*(1-t); break; case 2: return -2*((-s)-r+1)*s; break; } break; case 8: switch(m) { case 0: return t*t-1; break; case 1: return t*t-1; break; case 2: return -2*((-s)-r+1)*t; break; } break; case 9: switch(m) { case 0: return 2*s*(1-t); break; case 1: return 2*r*(1-t); break; case 2: return -2*r*s; break; } break; case 10: switch(m) { case 0: return 1-t*t; break; case 1: return 0; break; case 2: return -2*r*t; break; } break; case 11: switch(m) { case 0: return 0; break; case 1: return 1-t*t; break; case 2: return -2*s*t; break; } break; case 12: switch(m) { case 0: return 2*((-s)-r+1)*(t+1)-2*r*(t+1); break; case 1: return -2*r*(t+1); break; case 2: return 2*r*((-s)-r+1); break; } break; case 13: switch(m) { case 0: return -2*s*(t+1); break; case 1: return 2*((-s)-r+1)*(t+1)-2*s*(t+1); break; case 2: return 2*((-s)-r+1)*s; break; } break; case 14: switch(m) { case 0: return 2*s*(t+1); break; case 1: return 2*r*(t+1); break; case 2: return 2*r*s; break; } break; } return 0; } feenox-1.1/src/mesh/elements/line2.c0000644000175000017500000001306614773607165014322 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related line element routines * * Copyright (C) 2014--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------------------------------------------------- // two-node line // -------------------------------------------------------------- int feenox_mesh_line2_init(void) { element_type_t *element_type = &feenox.mesh.element_types[ELEMENT_TYPE_LINE2]; element_type->name = "line2"; element_type->id = ELEMENT_TYPE_LINE2; element_type->dim = 1; element_type->order = 1; element_type->nodes = 2; element_type->faces = 2; element_type->nodes_per_face = 1; element_type->h = feenox_mesh_line2_h; element_type->dhdxi = feenox_mesh_line2_dhdr; element_type->point_inside = feenox_mesh_point_in_line; element_type->volume = feenox_mesh_line_volume; element_type->area = feenox_mesh_line_area; element_type->size = feenox_mesh_line_size; // from Gmsh’ doc /* Line: 0----------1 --> u */ feenox_check_alloc(element_type->node_coords = calloc(element_type->nodes, sizeof(double *))); feenox_check_alloc(element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *))); for (unsigned int j = 0; j < element_type->nodes; j++) { feenox_check_alloc(element_type->node_coords[j] = calloc(element_type->dim, sizeof(double))); } element_type->vertices++; element_type->node_coords[0][0] = -1; element_type->vertices++; element_type->node_coords[1][0] = 1; // ------------ // gauss points and extrapolation matrices // full integration: two points feenox_mesh_gauss_init_line2(element_type, &element_type->gauss[integration_full]); feenox_check_alloc(element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 2)); for (unsigned int j = 0; j < element_type->nodes; j++) { double xi[] = { M_SQRT3 * element_type->node_coords[j][0] }; for (unsigned int q = 0; q < 2; q++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, j, q, feenox_mesh_line2_h(q, xi)); } } // reduced integration: one point feenox_mesh_gauss_init_line1(element_type, &element_type->gauss[integration_reduced]); element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 1); for (unsigned int j = 0; j < element_type->nodes; j++) { gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, 0, 1.0); } return FEENOX_OK; } int feenox_mesh_gauss_init_line1(element_type_t *element_type, gauss_t *gauss) { // ---- one Gauss point ---- feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 1)); gauss->w[0] = 2.0; gauss->xi[0][0] = 0.0; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } int feenox_mesh_gauss_init_line2(element_type_t *element_type, gauss_t *gauss) { // ---- two Gauss points ---- feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 2)); gauss->w[0] = 1.0; gauss->xi[0][0] = -1.0/M_SQRT3; gauss->w[1] = 1.0; gauss->xi[1][0] = +1.0/M_SQRT3; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } int feenox_mesh_gauss_init_line3(element_type_t *element_type, gauss_t *gauss) { // ---- three Gauss points ---- feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 3)); gauss->w[0] = 5.0/9.0; gauss->xi[0][0] = -M_SQRT3/M_SQRT5; gauss->w[1] = 5.0/9.0; gauss->xi[1][0] = +M_SQRT3/M_SQRT5; gauss->w[2] = 8.0/9.0; gauss->xi[2][0] = 0.0; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } double feenox_mesh_line2_h(int j, double *vec_xi) { double xi = vec_xi[0]; // numeracion gmsh switch (j) { case 0: return 0.5*(1-xi); break; case 1: return 0.5*(1+xi); break; } return 0; } double feenox_mesh_line2_dhdr(int j, int d, double *vec_xi) { switch(j) { case 0: if (d == 0) { return -0.5; } break; case 1: if (d == 0) { return 0.5; } break; } return 0; } int feenox_mesh_point_in_line(element_t *this, const double *x) { return ((x[0] >= this->node[0]->x[0] && x[0] <= this->node[1]->x[0]) || (x[0] >= this->node[1]->x[0] && x[0] <= this->node[0]->x[0])); } double feenox_mesh_line_volume(element_t *this) { if (this->volume == 0) { this->volume = fabs(this->node[1]->x[0] - this->node[0]->x[0]); } return this->volume; } double feenox_mesh_line_area(element_t *this) { if (this->area == 0) { this->area = 1; } return this->area; } double feenox_mesh_line_size(element_t *this) { if (this->size == 0) { this->size = feenox_mesh_line_volume(this); } return this->size; } feenox-1.1/src/mesh/elements/tet10.c0000644000175000017500000002314614773607165014246 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related second-order tetrahedron element routines * * Copyright (C) 2017--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // ----------------------------------- // ten-node tetrahedron // ----------------------------------- int feenox_mesh_tet10_init(void) { element_type_t *element_type; double r[3]; double a, b, c, d; int j, v; element_type = &feenox.mesh.element_types[ELEMENT_TYPE_TETRAHEDRON10]; feenox_check_alloc(element_type->name = strdup("tet10")); element_type->id = ELEMENT_TYPE_TETRAHEDRON10; element_type->dim = 3; element_type->order = 2; element_type->nodes = 10; element_type->faces = 4; element_type->nodes_per_face = 6; element_type->h = feenox_mesh_tet10_h; element_type->dhdxi = feenox_mesh_tet10_dhdr; element_type->point_inside = feenox_mesh_point_in_tetrahedron; element_type->volume = feenox_mesh_tet_volume; element_type->size = feenox_mesh_tet_size; /* Tetrahedron10 (from Gmsh’ doc): 2 ,/|`\ ,/ | `\ ,6 '. `5 ,/ 8 `\ ,/ | `\ 0--------4--'.--------1 `\. | ,/ `\. | ,9 `7. '. ,/ `\. |/ `3 */ feenox_check_alloc(element_type->node_coords = calloc(element_type->nodes, sizeof(double *))); feenox_check_alloc(element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *))); for (j = 0; j < element_type->nodes; j++) { feenox_check_alloc(element_type->node_coords[j] = calloc(element_type->dim, sizeof(double))); } element_type->vertices++; element_type->node_coords[0][0] = 0; element_type->node_coords[0][1] = 0; element_type->node_coords[0][2] = 0; element_type->vertices++; element_type->node_coords[1][0] = 1; element_type->node_coords[1][1] = 0; element_type->node_coords[1][2] = 0; element_type->vertices++; element_type->node_coords[2][0] = 0; element_type->node_coords[2][1] = 1; element_type->node_coords[2][2] = 0; element_type->vertices++; element_type->node_coords[3][0] = 0; element_type->node_coords[3][1] = 0; element_type->node_coords[3][2] = 1; feenox_mesh_add_node_parent(&element_type->node_parents[4], 0); feenox_mesh_add_node_parent(&element_type->node_parents[4], 1); feenox_mesh_compute_coords_from_parent(element_type, 4); feenox_mesh_add_node_parent(&element_type->node_parents[5], 1); feenox_mesh_add_node_parent(&element_type->node_parents[5], 2); feenox_mesh_compute_coords_from_parent(element_type, 5); feenox_mesh_add_node_parent(&element_type->node_parents[6], 2); feenox_mesh_add_node_parent(&element_type->node_parents[6], 0); feenox_mesh_compute_coords_from_parent(element_type, 6); feenox_mesh_add_node_parent(&element_type->node_parents[7], 3); feenox_mesh_add_node_parent(&element_type->node_parents[7], 0); feenox_mesh_compute_coords_from_parent(element_type, 7); feenox_mesh_add_node_parent(&element_type->node_parents[8], 2); feenox_mesh_add_node_parent(&element_type->node_parents[8], 3); feenox_mesh_compute_coords_from_parent(element_type, 8); feenox_mesh_add_node_parent(&element_type->node_parents[9], 3); feenox_mesh_add_node_parent(&element_type->node_parents[9], 1); feenox_mesh_compute_coords_from_parent(element_type, 9); // ------------ // gauss points and extrapolation matrices // full integration: 4 points feenox_mesh_gauss_init_tet4(element_type, &element_type->gauss[integration_full]); feenox_check_alloc(element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 4)); // reduced integration: 1 point feenox_mesh_gauss_init_tet1(element_type, &element_type->gauss[integration_reduced]); feenox_check_alloc(element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 1)); // the two extrapolation matrices a = (5.0-M_SQRT5)/20.0; b = (5.0+3.0*M_SQRT5)/20.0; c = -a/(b-a); d = 1+(1-b)/(b-a); r[0] = c; r[1] = c; r[2] = c; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 0, v, feenox_mesh_tet4_h(v, r)); } r[0] = d; r[1] = c; r[2] = c; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 1, v, feenox_mesh_tet4_h(v, r)); } r[0] = c; r[1] = d; r[2] = c; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 2, v, feenox_mesh_tet4_h(v, r)); } r[0] = c; r[1] = c; r[2] = d; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 3, v, feenox_mesh_tet4_h(v, r)); } r[0] = 0.5*(c+d); r[1] = 0.5*(c+c); r[2] = 0.5*(c+c); for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 4, v, feenox_mesh_tet4_h(v, r)); } r[0] = 0.5*(d+c); r[1] = 0.5*(c+d); r[2] = 0.5*(c+c); for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 5, v, feenox_mesh_tet4_h(v, r)); } r[0] = 0.5*(c+c); r[1] = 0.5*(c+d); r[2] = 0.5*(c+c); for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 6, v, feenox_mesh_tet4_h(v, r)); } r[0] = 0.5*(c+c); r[1] = 0.5*(c+c); r[2] = 0.5*(c+d); for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 7, v, feenox_mesh_tet4_h(v, r)); } r[0] = 0.5*(c+c); r[1] = 0.5*(d+c); r[2] = 0.5*(c+d); for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 8, v, feenox_mesh_tet4_h(v, r)); } r[0] = 0.5*(d+c); r[1] = 0.5*(c+c); r[2] = 0.5*(c+d); for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 9, v, feenox_mesh_tet4_h(v, r)); } // reduced for (j = 0; j < element_type->nodes; j++) { gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, 0, 1.0); } return FEENOX_OK; } double feenox_mesh_tet10_h(int j, double *vec_r) { double r = vec_r[0]; double s = vec_r[1]; double t = vec_r[2]; switch (j) { case 0: return (1-r-s-t)*(2*(1-r-s-t)-1); break; case 1: return r*(2*r-1); break; case 2: return s*(2*s-1); break; case 3: return t*(2*t-1); break; case 4: return 4*(1-r-s-t)*r; break; case 5: return 4*r*s; break; case 6: return 4*s*(1-r-s-t); break; case 7: return 4*(1-r-s-t)*t; break; case 8: return 4*s*t; break; case 9: return 4*r*t; break; } return 0; } double feenox_mesh_tet10_dhdr(int j, int m, double *vec_r) { double r = vec_r[0]; double s = vec_r[1]; double t = vec_r[2]; switch (j) { case 0: switch(m) { case 0: return 1-4*(1-r-s-t); break; case 1: return 1-4*(1-r-s-t); break; case 2: return 1-4*(1-r-s-t); break; } break; case 1: switch(m) { case 0: return 4*r-1; break; case 1: return 0; break; case 2: return 0; break; } break; case 2: switch(m) { case 0: return 0; break; case 1: return 4*s-1; break; case 2: return 0; break; } break; case 3: switch(m) { case 0: return 0; break; case 1: return 0; break; case 2: return 4*t-1; break; } case 4: switch(m) { case 0: return -4*r+4*(1-r-s-t); break; case 1: return -4*r; break; case 2: return -4*r; break; } case 5: switch(m) { case 0: return 4*s; break; case 1: return 4*r; break; case 2: return 0; break; } case 6: switch(m) { case 0: return -4*s; break; case 1: return -4*s+4*(1-r-s-t); break; case 2: return -4*s; break; } case 7: switch(m) { case 0: return -4*t; break; case 1: return -4*t; break; case 2: return -4*t+4*(1-r-s-t); break; } case 8: switch(m) { case 0: return 0; break; case 1: return 4*t; break; case 2: return 4*s; break; } case 9: switch(m) { case 0: return 4*t; break; case 1: return 0; break; case 2: return 4*r; break; } break; } return 0; } feenox-1.1/src/mesh/elements/triang3.c0000644000175000017500000002240414773607165014654 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related triangle element routines * * Copyright (C) 2014--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // ------------------------------------- // three-node triangle // ------------------------------------- // from Gmsh’ doc /* Triangle: v ^ | 2 |`\ | `\ | `\ | `\ | `\ 0----------1 --> u */ int feenox_mesh_triang3_init(void) { element_type_t *element_type = NULL; element_type = &feenox.mesh.element_types[ELEMENT_TYPE_TRIANGLE3]; element_type->id = ELEMENT_TYPE_TRIANGLE3; element_type->dim = 2; element_type->order = 1; element_type->nodes = 3; element_type->faces = 3; element_type->nodes_per_face = 2; element_type->h = feenox_mesh_triang3_h; element_type->dhdxi = feenox_mesh_triang3_dhdr; element_type->point_inside = feenox_mesh_point_in_triangle; element_type->volume = feenox_mesh_triang_volume; element_type->area = feenox_mesh_triang_area; element_type->size = feenox_mesh_triang_size; element_type->node_coords = calloc(element_type->nodes, sizeof(double *)); element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *)); int j = 0; for (j = 0; j < element_type->nodes; j++) { element_type->node_coords[j] = calloc(element_type->dim, sizeof(double)); } element_type->vertices++; element_type->node_coords[0][0] = 0; element_type->node_coords[0][1] = 0; element_type->vertices++; element_type->node_coords[1][0] = 1; element_type->node_coords[1][1] = 0; element_type->vertices++; element_type->node_coords[2][0] = 0; element_type->node_coords[2][1] = 1; // for doc element_type->name = "triang3"; element_type->desc = "Three-node triangle"; element_type->ascii_art = "\ η \n\ ^ \n\ | \n\ 2 \n\ |`\\ \n\ | `\\ \n\ | `\\ \n\ | `\\ \n\ | `\\ \n\ 0----------1 --> ξ"; element_type->h_latex = feenox_mesh_triang3_h_latex; element_type->doc_n_edges = 3; feenox_check_alloc(element_type->doc_edges = calloc(element_type->doc_n_edges, sizeof(int[2]))); element_type->doc_edges = malloc(element_type->doc_n_edges * sizeof(int[2])); element_type->doc_edges[0][0] = 0; element_type->doc_edges[0][1] = 1; element_type->doc_edges[1][0] = 1; element_type->doc_edges[1][1] = 2; element_type->doc_edges[2][0] = 2; element_type->doc_edges[2][1] = 0; element_type->doc_n_faces = 1; feenox_check_alloc(element_type->doc_faces = calloc(element_type->doc_n_faces, sizeof(int[8]))); element_type->doc_faces[0][0] = 1; element_type->doc_faces[0][1] = 2; element_type->doc_faces[0][2] = 3; // ------------ // gauss points and extrapolation matrices // full integration: 3 points feenox_mesh_gauss_init_triang3(element_type, &element_type->gauss[integration_full]); element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 3); // reduced integration: 1 point feenox_mesh_gauss_init_triang1(element_type, &element_type->gauss[integration_reduced]); element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 1); double r[2]; // the two extrapolation matrices // first the full one r[0] = -1.0/3.0; r[1] = -1.0/3.0; for (j = 0; j < 3; j++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 0, j, feenox_mesh_triang3_h(j, r)); } r[0] = +5.0/3.0; r[1] = -1.0/3.0; for (j = 0; j < 3; j++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 1, j, feenox_mesh_triang3_h(j, r)); } r[0] = -1.0/3.0; r[1] = +5.0/3.0; for (j = 0; j < 3; j++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 2, j, feenox_mesh_triang3_h(j, r)); } // the reduced one is a vector of ones for (j = 0; j < element_type->nodes; j++) { // reduced gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, 0, 1.0); } return FEENOX_OK; } int feenox_mesh_gauss_init_triang3(element_type_t *element_type, gauss_t *gauss) { // ---- three Gauss points feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 3)); gauss->w[0] = 1.0/2.0 * 1.0/3.0; gauss->xi[0][0] = 1.0/6.0; gauss->xi[0][1] = 1.0/6.0; gauss->w[1] = 1.0/2.0 * 1.0/3.0; gauss->xi[1][0] = 2.0/3.0; gauss->xi[1][1] = 1.0/6.0; gauss->w[2] = 1.0/2.0 * 1.0/3.0; gauss->xi[2][0] = 1.0/6.0; gauss->xi[2][1] = 2.0/3.0; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } int feenox_mesh_gauss_init_triang1(element_type_t *element_type, gauss_t *gauss) { // ---- one Gauss point feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 1)); gauss->w[0] = 0.5 * 1.0; gauss->xi[0][0] = 1.0/3.0; gauss->xi[0][1] = 1.0/3.0; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } double feenox_mesh_triang3_h(int j, double *vec_xi) { double xi = vec_xi[0]; double eta = vec_xi[1]; switch (j) { case 0: return 1-xi-eta; break; case 1: return xi; break; case 2: return eta; break; } return 0; } char *feenox_mesh_triang3_h_latex(int j) { switch (j) { case 0: return "1-\\xi-\\eta"; break; case 1: return "\\xi"; break; case 2: return "\\eta"; break; } return ""; } double feenox_mesh_triang3_dhdr(int j, int m, double *vec_r) { switch(j) { case 0: if (m == 0) { return -1; } else { return -1; } break; case 1: if (m == 0) { return 1; } else { return 0; } break; case 2: if (m == 0) { return 0; } else { return 1; } break; } return 0; } int feenox_mesh_point_in_triangle(element_t *element, const double *x) { /* double z1, z2, z3; z1 = feenox_mesh_subtract_cross_2d(element->node[0]->x, element->node[1]->x, x); z2 = feenox_mesh_subtract_cross_2d(element->node[1]->x, element->node[2]->x, x); z3 = feenox_mesh_subtract_cross_2d(element->node[2]->x, element->node[0]->x, x); if ((GSL_SIGN(z1) == GSL_SIGN(z2) && GSL_SIGN(z2) == GSL_SIGN(z3)) || (fabs(z1) < 1e-4 && GSL_SIGN(z2) == GSL_SIGN(z3)) || (fabs(z2) < 1e-4 && GSL_SIGN(z1) == GSL_SIGN(z3)) || (fabs(z3) < 1e-4 && GSL_SIGN(z1) == GSL_SIGN(z2)) ) { return 1; } return 0; */ // metodo de coordenadas baricentricas // http://en.wikipedia.org/wiki/Barycentric_coordinate_system double lambda1, lambda2, lambda3; double x1 = element->node[0]->x[0]; double x2 = element->node[1]->x[0]; double x3 = element->node[2]->x[0]; double y1 = element->node[0]->x[1]; double y2 = element->node[1]->x[1]; double y3 = element->node[2]->x[1]; double zero, one; lambda1 = ((y2-y3)*(x[0]-x3) + (x3-x2)*(x[1]-y3))/((y2-y3)*(x1-x3) + (x3-x2)*(y1-y3)); lambda2 = ((y3-y1)*(x[0]-x3) + (x1-x3)*(x[1]-y3))/((y2-y3)*(x1-x3) + (x3-x2)*(y1-y3)); lambda3 = 1 - lambda1 - lambda2; zero = -feenox_var_value(feenox.mesh.vars.eps); one = 1+feenox_var_value(feenox.mesh.vars.eps); return (lambda1 > zero && lambda1 < one && lambda2 > zero && lambda2 < one && lambda3 > zero && lambda3 < one); } double feenox_mesh_triang_volume(element_t *this) { if (this->volume == 0) { this->volume = 0.5 * fabs(feenox_mesh_subtract_cross_2d(this->node[0]->x, this->node[1]->x, this->node[2]->x)); } return this->volume; } double feenox_mesh_triang_area(element_t *this) { if (this->area == 0) { this->area += sqrt(gsl_pow_2(this->node[0]->x[0] - this->node[1]->x[0]) + gsl_pow_2(this->node[0]->x[1] - this->node[1]->x[1])); this->area += sqrt(gsl_pow_2(this->node[1]->x[0] - this->node[2]->x[0]) + gsl_pow_2(this->node[1]->x[1] - this->node[2]->x[1])); this->area += sqrt(gsl_pow_2(this->node[2]->x[0] - this->node[0]->x[0]) + gsl_pow_2(this->node[2]->x[1] - this->node[0]->x[1])); } return this->area; } double feenox_mesh_triang_size(element_t *this) { if (this->size == 0) { this->size = 1.0/3.0 * (feenox_mesh_subtract_module(this->node[0]->x, this->node[1]->x) + feenox_mesh_subtract_module(this->node[1]->x, this->node[2]->x) + feenox_mesh_subtract_module(this->node[2]->x, this->node[0]->x)); } return this->size; } feenox-1.1/src/mesh/elements/quad9.c0000644000175000017500000001577514773607165014345 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related quadrangle element routines * * Copyright (C) 2014--2017 C.P. Camusso. * Copyright (C) 2017--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------------------------------------------------- // nine-node quadrangle // -------------------------------------------------------------- int feenox_mesh_quad9_init(void) { double r[2]; element_type_t *element_type; int j, v; element_type = &feenox.mesh.element_types[ELEMENT_TYPE_QUADRANGLE9]; feenox_check_alloc(element_type->name = strdup("quad9")); element_type->id = ELEMENT_TYPE_QUADRANGLE9; element_type->dim = 2; element_type->order = 2; element_type->nodes = 9; element_type->faces = 4; element_type->nodes_per_face = 3; element_type->h = feenox_mesh_quad9_h; element_type->dhdxi = feenox_mesh_quad9_dhdr; element_type->point_inside = feenox_mesh_point_in_quadrangle; element_type->volume = feenox_mesh_quad_volume; element_type->area = feenox_mesh_quad_area; element_type->size = feenox_mesh_quad_size; // from Gmsh’ doc /* Quadrangle9: 3-----6-----2 | | | | 7 8 5 | | | | 0-----4-----1 */ element_type->node_coords = calloc(element_type->nodes, sizeof(double *)); element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *)); for (j = 0; j < element_type->nodes; j++) { element_type->node_coords[j] = calloc(element_type->dim, sizeof(double)); } element_type->vertices++; element_type->node_coords[0][0] = -1; element_type->node_coords[0][1] = -1; element_type->vertices++; element_type->node_coords[1][0] = +1; element_type->node_coords[1][1] = -1; element_type->vertices++; element_type->node_coords[2][0] = +1; element_type->node_coords[2][1] = +1; element_type->vertices++; element_type->node_coords[3][0] = -1; element_type->node_coords[3][1] = +1; feenox_mesh_add_node_parent(&element_type->node_parents[4], 0); feenox_mesh_add_node_parent(&element_type->node_parents[4], 1); feenox_mesh_compute_coords_from_parent(element_type, 4); feenox_mesh_add_node_parent(&element_type->node_parents[5], 1); feenox_mesh_add_node_parent(&element_type->node_parents[5], 2); feenox_mesh_compute_coords_from_parent(element_type, 5); feenox_mesh_add_node_parent(&element_type->node_parents[6], 2); feenox_mesh_add_node_parent(&element_type->node_parents[6], 3); feenox_mesh_compute_coords_from_parent(element_type, 6); feenox_mesh_add_node_parent(&element_type->node_parents[7], 3); feenox_mesh_add_node_parent(&element_type->node_parents[7], 0); feenox_mesh_compute_coords_from_parent(element_type, 7); feenox_mesh_add_node_parent(&element_type->node_parents[8], 0); feenox_mesh_add_node_parent(&element_type->node_parents[8], 1); feenox_mesh_add_node_parent(&element_type->node_parents[8], 2); feenox_mesh_add_node_parent(&element_type->node_parents[8], 3); feenox_mesh_compute_coords_from_parent(element_type, 8); // ------------ // gauss points and extrapolation matrices // full integration: 3x3 feenox_mesh_gauss_init_quad9(element_type, &element_type->gauss[integration_full]); element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 9); for (j = 0; j < element_type->nodes; j++) { r[0] = M_SQRT5/M_SQRT3 * element_type->node_coords[j][0]; r[1] = M_SQRT5/M_SQRT3 * element_type->node_coords[j][1]; for (v = 0; v < 9; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, j, v, feenox_mesh_quad9_h(v, r)); } } // reduced integration: 2x2 feenox_mesh_gauss_init_quad4(element_type, &element_type->gauss[integration_reduced]); element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 4); for (j = 0; j < element_type->nodes; j++) { r[0] = M_SQRT3 * element_type->node_coords[j][0]; r[1] = M_SQRT3 * element_type->node_coords[j][1]; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, v, feenox_mesh_quad4_h(v, r)); } } return FEENOX_OK; } //Taken from https://www.code-aster.org/V2/doc/default/fr/man_r/r3/r3.01.01.pdf //The node ordering of aster and gmsh are equal (yei!). double feenox_mesh_quad9_h(int j, double *vec_r) { double r = vec_r[0]; double s = vec_r[1]; switch (j) { case 0: return r*s*(r-1)*(s-1)/4; break; case 1: return r*s*(r+1)*(s-1)/4; break; case 2: return r*s*(r+1)*(s+1)/4; break; case 3: return r*s*(r-1)*(s+1)/4; break; case 4: return (1-r*r)*s*(s-1)/2; break; case 5: return r*(r+1)*(1-s*s)/2; break; case 6: return (1-r*r)*s*(s+1)/2; break; case 7: return r*(r-1)*(1-s*s)/2; break; case 8: return (1-r*r)*(1-s*s); break; } return 0; } double feenox_mesh_quad9_dhdr(int j, int m, double *vec_r) { double r = vec_r[0]; double s = vec_r[1]; switch(j) { case 0: if (m == 0) { return (2*r-1)*s*(s-1)/4; } else { return r*(r-1)*(2*s-1)/4; } break; case 1: if (m == 0) { return (2*r+1)*s*(s-1)/4; } else { return r*(r+1)*(2*s-1)/4; } break; case 2: if (m == 0) { return (2*r+1)*s*(s+1)/4; } else { return r*(r+1)*(2*s+1)/4; } break; case 3: if (m == 0) { return (2*r-1)*s*(s+1)/4; } else { return r*(r-1)*(2*s+1)/4; } break; case 4: if (m == 0) { return -r*s*(s-1); } else { return (1-r*r)*(2*s-1)/2; } break; case 5: if (m == 0) { return (2*r+1)*(1-s*s)/2; } else { return -r*s*(r+1); } break; case 6: if (m == 0) { return -r*s*(s+1); } else { return (1-r*r)*(2*s+1)/2; } break; case 7: if (m == 0) { return (2*r-1)*(1-s*s)/2; } else { return -r*s*(r-1); } break; case 8: if (m == 0) { return -2*r*(1-s*s); } else { return -2*s*(1-r*r); } break; } return 0; } feenox-1.1/src/mesh/elements/tet4.c0000644000175000017500000003276614773607165014201 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related tetrahedron element routines * * Copyright (C) 2015--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // ------------------------------------- // four-node tetrahedron // ------------------------------------- int feenox_mesh_tet4_init(void) { element_type_t *element_type; double r[3]; double a, b, c, d; int j, v; element_type = &feenox.mesh.element_types[ELEMENT_TYPE_TETRAHEDRON4]; element_type->id = ELEMENT_TYPE_TETRAHEDRON4; element_type->dim = 3; element_type->order = 1; element_type->nodes = 4; element_type->faces = 4; element_type->nodes_per_face = 3; element_type->h = feenox_mesh_tet4_h; element_type->dhdxi = feenox_mesh_tet4_dhdr; element_type->point_inside = feenox_mesh_point_in_tetrahedron; element_type->volume = feenox_mesh_tet_volume; element_type->area = feenox_mesh_tet_area; element_type->size = feenox_mesh_tet_size; // from Gmsh’ doc /* Tetrahedron: v . ,/ / 2 ,/|`\ ,/ | `\ ,/ '. `\ ,/ | `\ ,/ | `\ 0-----------'.--------1 --> u `\. | ,/ `\. | ,/ `\. '. ,/ `\. |/ `3 `\. ` w */ feenox_check_alloc(element_type->node_coords = calloc(element_type->nodes, sizeof(double *))); feenox_check_alloc(element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *))); for (j = 0; j < element_type->nodes; j++) { feenox_check_alloc(element_type->node_coords[j] = calloc(element_type->dim, sizeof(double))); } element_type->vertices++; element_type->node_coords[0][0] = 0; element_type->node_coords[0][1] = 0; element_type->node_coords[0][2] = 0; element_type->vertices++; element_type->node_coords[1][0] = 1; element_type->node_coords[1][1] = 0; element_type->node_coords[1][2] = 0; element_type->vertices++; element_type->node_coords[2][0] = 0; element_type->node_coords[2][1] = 1; element_type->node_coords[2][2] = 0; element_type->vertices++; element_type->node_coords[3][0] = 0; element_type->node_coords[3][1] = 0; element_type->node_coords[3][2] = 1; // for doc element_type->name = "tet4"; element_type->desc = "Four-node tetrahedron"; element_type->ascii_art = "\ η \n\ . \n\ ,/ \n\ / \n\ 2 \n\ ,/|`\\ \n\ ,/ | `\\ \n\ ,/ '. `\\ \n\ ,/ | `\\ \n\ ,/ | `\\ \n\ 0-----------'.--------1 --> ξ \n\ `\\. | ,/ \n\ `\\. | ,/ \n\ `\\. '. ,/ \n\ `\\. |/ \n\ `3 \n\ `\\. \n\ ` ζ \n"; element_type->h_latex = feenox_mesh_tet4_h_latex; element_type->doc_n_edges = 6; feenox_check_alloc(element_type->doc_edges = calloc(element_type->doc_n_edges, sizeof(int[2]))); element_type->doc_edges = malloc(element_type->doc_n_edges * sizeof(int[2])); element_type->doc_edges[0][0] = 0; element_type->doc_edges[0][1] = 1; element_type->doc_edges[1][0] = 1; element_type->doc_edges[1][1] = 2; element_type->doc_edges[2][0] = 2; element_type->doc_edges[2][1] = 0; element_type->doc_edges[3][0] = 0; element_type->doc_edges[3][1] = 3; element_type->doc_edges[4][0] = 1; element_type->doc_edges[4][1] = 3; element_type->doc_edges[5][0] = 3; element_type->doc_edges[5][1] = 2; element_type->doc_n_faces = 4; feenox_check_alloc(element_type->doc_faces = calloc(element_type->doc_n_faces, sizeof(int[8]))); element_type->doc_faces[0][0] = 1; element_type->doc_faces[0][1] = 2; element_type->doc_faces[0][2] = 3; element_type->doc_faces[1][0] = 6; element_type->doc_faces[1][1] = 3; element_type->doc_faces[1][2] = 4; element_type->doc_faces[2][0] = 2; element_type->doc_faces[2][1] = -6; element_type->doc_faces[2][2] = -5; element_type->doc_faces[3][0] = 1; element_type->doc_faces[3][1] = 5; element_type->doc_faces[3][2] = -4; // ------------ // gauss points and extrapolation matrices // full integration: 4 points feenox_mesh_gauss_init_tet4(element_type, &element_type->gauss[integration_full]); feenox_check_alloc(element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 4)); // reduced integration: 1 point feenox_mesh_gauss_init_tet1(element_type, &element_type->gauss[integration_reduced]); feenox_check_alloc(element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 1)); // the two extrapolation matrices a = (5.0-M_SQRT5)/20.0; b = (5.0+3.0*M_SQRT5)/20.0; c = -a/(b-a); d = 1+(1-b)/(b-a); r[0] = c; r[1] = c; r[2] = c; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 0, v, feenox_mesh_tet4_h(v, r)); } r[0] = d; r[1] = c; r[2] = c; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 1, v, feenox_mesh_tet4_h(v, r)); } r[0] = c; r[1] = d; r[2] = c; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 2, v, feenox_mesh_tet4_h(v, r)); } r[0] = c; r[1] = c; r[2] = d; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 3, v, feenox_mesh_tet4_h(v, r)); } // reduced for (j = 0; j < element_type->nodes; j++) { gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, 0, 1.0); } return FEENOX_OK; } int feenox_mesh_gauss_init_tet1(element_type_t *element_type, gauss_t *gauss) { // ---- one Gauss point ---- feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 1)); gauss->w[0] = 1.0/6.0 * 1.0; gauss->xi[0][0] = 1.0/4.0; gauss->xi[0][1] = 1.0/4.0; gauss->xi[0][2] = 1.0/4.0; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } int feenox_mesh_gauss_init_tet4(element_type_t *element_type, gauss_t *gauss) { double a = (5.0-M_SQRT5)/20.0; double b = (5.0+3.0*M_SQRT5)/20.0; // ---- two Gauss points ---- feenox_call(feenox_mesh_alloc_gauss(gauss, element_type, 4)); gauss->w[0] = 1.0/6.0 * 1.0/4.0; gauss->xi[0][0] = a; gauss->xi[0][1] = a; gauss->xi[0][2] = a; gauss->w[1] = 1.0/6.0 * 1.0/4.0; gauss->xi[1][0] = b; gauss->xi[1][1] = a; gauss->xi[1][2] = a; gauss->w[2] = 1.0/6.0 * 1.0/4.0; gauss->xi[2][0] = a; gauss->xi[2][1] = b; gauss->xi[2][2] = a; gauss->w[3] = 1.0/6.0 * 1.0/4.0; gauss->xi[3][0] = a; gauss->xi[3][1] = a; gauss->xi[3][2] = b; feenox_call(feenox_mesh_init_shape_at_gauss(gauss, element_type)); return FEENOX_OK; } double feenox_mesh_tet4_h(int j, double *vec_xi) { double xi = vec_xi[0]; double eta= vec_xi[1]; double zeta = vec_xi[2]; switch (j) { case 0: return 1-xi-eta-zeta; break; case 1: return xi; break; case 2: return eta; break; case 3: return zeta; break; } return 0; } char *feenox_mesh_tet4_h_latex(int j) { switch (j) { case 0: return "1-\\xi-\\eta-\\zeta"; break; case 1: return "\\xi"; break; case 2: return "\\eta"; break; case 3: return "\\zeta"; break; } return ""; } double feenox_mesh_tet4_dhdr(int j, int m, double *vec_r) { switch (j) { case 0: switch(m) { case 0: return -1; break; case 1: return -1; break; case 2: return -1; break; } break; case 1: switch(m) { case 0: return +1; break; case 1: return 0; break; case 2: return 0; break; } break; case 2: switch(m) { case 0: return 0; break; case 1: return +1; break; case 2: return 0; break; } break; case 3: switch(m) { case 0: return 0; break; case 1: return 0; break; case 2: return +1; break; } break; } return 0; } int feenox_mesh_point_in_tetrahedron(element_t *element, const double *x) { // http://en.wikipedia.org/wiki/Barycentric_coordinate_system double T[3][3]; for (int j = 1; j < 4; j++) { for (int g = 0; g < 3; g++) { T[g][j-1] = element->node[j]->x[g] - element->node[0]->x[g]; } } double xx0[3]; for (int g = 0; g < 3; g++) { xx0[g] = x[g] - element->node[0]->x[g]; } double t4 = T[2][0] * T[0][1]; double t6 = T[2][0] * T[0][2]; double t8 = T[1][0] * T[0][1]; double t10 = T[1][0] * T[0][2]; double t12 = T[0][0] * T[1][1]; double t14 = T[0][0] * T[1][2]; double det = t4 * T[1][2] - t6 * T[1][1] - t8 * T[2][2] + t10 * T[2][1] + t12 * T[2][2] - t14 * T[2][1]; if (fabs(det) < 1e-12) { // if the element is degenerate it cannot contain any point return 0; } double t17 = 1.0 / det; double inv[3][3]; inv[0][0] = +(T[1][1] * T[2][2] - T[1][2] * T[2][1]) * t17; inv[0][1] = -(T[0][1] * T[2][2] - T[0][2] * T[2][1]) * t17; inv[0][2] = +(T[0][1] * T[1][2] - T[0][2] * T[1][1]) * t17; inv[1][0] = -(-T[2][0] * T[1][2] + T[1][0] * T[2][2]) * t17; inv[1][1] = (-t6 + T[0][0] * T[2][2]) * t17; inv[1][2] = -(-t10 + t14) * t17; inv[2][0] = (-T[2][0] * T[1][1] + T[1][0] * T[2][1]) * t17; inv[2][1] = -(-t4 + T[0][0] * T[2][1]) * t17; inv[2][2] = (-t8 + t12) * t17; double lambda[3]; for (int i = 0; i < 3; i++) { lambda[i] = 0; for (int k = 0; k < 3; k++) { lambda[i] += inv[i][k] * xx0[k]; } } double zero = -feenox_var_value(feenox.mesh.vars.eps); double one = 1+feenox_var_value(feenox.mesh.vars.eps); double lambda4 = 1 - lambda[0] - lambda[1] - lambda[2]; return (lambda[0] > zero && lambda[0] < one && lambda[1] > zero && lambda[1] < one && lambda[2] > zero && lambda[2] < one && lambda4 > zero && lambda4 < one); } double feenox_mesh_tet_volume(element_t *this) { if (this->volume == 0) { double a[3], b[3], c[3]; feenox_mesh_subtract(this->node[0]->x, this->node[1]->x, a); feenox_mesh_subtract(this->node[0]->x, this->node[2]->x, b); feenox_mesh_subtract(this->node[0]->x, this->node[3]->x, c); this->volume = 1.0/(1.0*2.0*3.0) * fabs(feenox_mesh_cross_dot(c, a, b)); } return this->volume; // AFEM.Ch09.pdf // 6V = J = x 21 (y 23 z 34 − y34 z 23 ) + x32 (y34 z 12 − y12 z34 ) + x 43 (y12 z23 − y23 z 12), } double feenox_mesh_tet_area(element_t *this) { if (this->area == 0) { element_t triangle; triangle.type = &feenox.mesh.element_types[ELEMENT_TYPE_TRIANGLE3]; triangle.node = NULL; feenox_check_alloc(triangle.node = calloc(3, sizeof(node_t *))); // first triangle: 0 1 2 triangle.node[0] = this->node[0]; triangle.node[1] = this->node[1]; triangle.node[2] = this->node[2]; triangle.volume = 0; this->area += triangle.type->volume(&triangle); // first triangle: 0 1 3 triangle.node[0] = this->node[0]; triangle.node[1] = this->node[1]; triangle.node[2] = this->node[3]; triangle.volume = 0; this->area += triangle.type->volume(&triangle); // first triangle: 0 2 3 triangle.node[0] = this->node[0]; triangle.node[1] = this->node[2]; triangle.node[2] = this->node[3]; triangle.volume = 0; this->area += triangle.type->volume(&triangle); // first triangle: 1 2 3 triangle.node[0] = this->node[1]; triangle.node[1] = this->node[2]; triangle.node[2] = this->node[3]; triangle.volume = 0; this->area += triangle.type->volume(&triangle); feenox_free(triangle.node); } return this->area; } double feenox_mesh_tet_size(element_t *this) { if (this->size == 0) { this->size = 1.0/4.0 * (feenox_mesh_subtract_module(this->node[0]->x, this->node[1]->x) + feenox_mesh_subtract_module(this->node[1]->x, this->node[2]->x) + feenox_mesh_subtract_module(this->node[2]->x, this->node[3]->x) + feenox_mesh_subtract_module(this->node[3]->x, this->node[0]->x)); } return this->size; } feenox-1.1/src/mesh/elements/hexa27.c0000644000175000017500000005365114773607165014413 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related hexahedron element routines * * Copyright (C) 2014--2017 C.P. Camusso. * Copyright (C) 2017--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------------------------------------------------- // twenty-seven-node hexahedron // -------------------------------------------------------------- int feenox_mesh_hexa27_init(void) { double xi[3]; unsigned int j, q; element_type_t *element_type = &feenox.mesh.element_types[ELEMENT_TYPE_HEXAHEDRON27]; element_type->name = "hexa27"; element_type->id = ELEMENT_TYPE_HEXAHEDRON27; element_type->dim = 3; element_type->order = 2; element_type->nodes = 27; element_type->faces = 6; element_type->nodes_per_face = 9; element_type->h = feenox_mesh_hexa27_h; element_type->dhdxi = feenox_mesh_hexa27_dhdr; element_type->point_inside = feenox_mesh_point_in_hexahedron; element_type->volume = feenox_mesh_hex_volume; element_type->size = feenox_mesh_hex_size; // from Gmsh’ doc /* Hexahedron27: 3----13----2 |\ |\ |15 24 | 14 9 \ 20 11 \ | 7----19+---6 |22 | 26 | 23| 0---+-8----1 | \ 17 25 \ 18 10 | 21 12| \| \| 4----16----5 */ element_type->node_coords = calloc(element_type->nodes, sizeof(double *)); element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *)); for (j = 0; j < element_type->nodes; j++) { element_type->node_coords[j] = calloc(element_type->dim, sizeof(double)); } element_type->vertices++; element_type->node_coords[0][0] = -1; element_type->node_coords[0][1] = -1; element_type->node_coords[0][2] = -1; element_type->vertices++; element_type->node_coords[1][0] = +1; element_type->node_coords[1][1] = -1; element_type->node_coords[1][2] = -1; element_type->vertices++; element_type->node_coords[2][0] = +1; element_type->node_coords[2][1] = +1; element_type->node_coords[2][2] = -1; element_type->vertices++; element_type->node_coords[3][0] = -1; element_type->node_coords[3][1] = +1; element_type->node_coords[3][2] = -1; element_type->vertices++; element_type->node_coords[4][0] = -1; element_type->node_coords[4][1] = -1; element_type->node_coords[4][2] = +1; element_type->vertices++; element_type->node_coords[5][0] = +1; element_type->node_coords[5][1] = -1; element_type->node_coords[5][2] = +1; element_type->vertices++; element_type->node_coords[6][0] = +1; element_type->node_coords[6][1] = +1; element_type->node_coords[6][2] = +1; element_type->vertices++; element_type->node_coords[7][0] = -1; element_type->node_coords[7][1] = +1; element_type->node_coords[7][2] = +1; feenox_mesh_add_node_parent(&element_type->node_parents[8], 0); feenox_mesh_add_node_parent(&element_type->node_parents[8], 1); feenox_mesh_compute_coords_from_parent(element_type, 8); feenox_mesh_add_node_parent(&element_type->node_parents[9], 0); feenox_mesh_add_node_parent(&element_type->node_parents[9], 3); feenox_mesh_compute_coords_from_parent(element_type, 9); feenox_mesh_add_node_parent(&element_type->node_parents[10], 0); feenox_mesh_add_node_parent(&element_type->node_parents[10], 4); feenox_mesh_compute_coords_from_parent(element_type, 10); feenox_mesh_add_node_parent(&element_type->node_parents[11], 1); feenox_mesh_add_node_parent(&element_type->node_parents[11], 2); feenox_mesh_compute_coords_from_parent(element_type, 11); feenox_mesh_add_node_parent(&element_type->node_parents[12], 1); feenox_mesh_add_node_parent(&element_type->node_parents[12], 5); feenox_mesh_compute_coords_from_parent(element_type, 12); feenox_mesh_add_node_parent(&element_type->node_parents[13], 2); feenox_mesh_add_node_parent(&element_type->node_parents[13], 3); feenox_mesh_compute_coords_from_parent(element_type, 13); feenox_mesh_add_node_parent(&element_type->node_parents[14], 2); feenox_mesh_add_node_parent(&element_type->node_parents[14], 6); feenox_mesh_compute_coords_from_parent(element_type, 14); feenox_mesh_add_node_parent(&element_type->node_parents[15], 3); feenox_mesh_add_node_parent(&element_type->node_parents[15], 7); feenox_mesh_compute_coords_from_parent(element_type, 15); feenox_mesh_add_node_parent(&element_type->node_parents[16], 4); feenox_mesh_add_node_parent(&element_type->node_parents[16], 5); feenox_mesh_compute_coords_from_parent(element_type, 16); feenox_mesh_add_node_parent(&element_type->node_parents[17], 4); feenox_mesh_add_node_parent(&element_type->node_parents[17], 7); feenox_mesh_compute_coords_from_parent(element_type, 17); feenox_mesh_add_node_parent(&element_type->node_parents[18], 5); feenox_mesh_add_node_parent(&element_type->node_parents[18], 6); feenox_mesh_compute_coords_from_parent(element_type, 18); feenox_mesh_add_node_parent(&element_type->node_parents[19], 6); feenox_mesh_add_node_parent(&element_type->node_parents[19], 7); feenox_mesh_compute_coords_from_parent(element_type, 19); feenox_mesh_add_node_parent(&element_type->node_parents[20], 0); feenox_mesh_add_node_parent(&element_type->node_parents[20], 1); feenox_mesh_add_node_parent(&element_type->node_parents[20], 2); feenox_mesh_add_node_parent(&element_type->node_parents[20], 3); feenox_mesh_compute_coords_from_parent(element_type, 20); feenox_mesh_add_node_parent(&element_type->node_parents[21], 0); feenox_mesh_add_node_parent(&element_type->node_parents[21], 1); feenox_mesh_add_node_parent(&element_type->node_parents[21], 5); feenox_mesh_add_node_parent(&element_type->node_parents[21], 4); feenox_mesh_compute_coords_from_parent(element_type, 21); feenox_mesh_add_node_parent(&element_type->node_parents[22], 0); feenox_mesh_add_node_parent(&element_type->node_parents[22], 3); feenox_mesh_add_node_parent(&element_type->node_parents[22], 7); feenox_mesh_add_node_parent(&element_type->node_parents[22], 4); feenox_mesh_compute_coords_from_parent(element_type, 22); feenox_mesh_add_node_parent(&element_type->node_parents[23], 1); feenox_mesh_add_node_parent(&element_type->node_parents[23], 2); feenox_mesh_add_node_parent(&element_type->node_parents[23], 6); feenox_mesh_add_node_parent(&element_type->node_parents[23], 5); feenox_mesh_compute_coords_from_parent(element_type, 23); feenox_mesh_add_node_parent(&element_type->node_parents[24], 2); feenox_mesh_add_node_parent(&element_type->node_parents[24], 3); feenox_mesh_add_node_parent(&element_type->node_parents[24], 7); feenox_mesh_add_node_parent(&element_type->node_parents[24], 6); feenox_mesh_compute_coords_from_parent(element_type, 24); feenox_mesh_add_node_parent(&element_type->node_parents[25], 4); feenox_mesh_add_node_parent(&element_type->node_parents[25], 5); feenox_mesh_add_node_parent(&element_type->node_parents[25], 6); feenox_mesh_add_node_parent(&element_type->node_parents[25], 7); feenox_mesh_compute_coords_from_parent(element_type, 25); feenox_mesh_add_node_parent(&element_type->node_parents[26], 0); feenox_mesh_add_node_parent(&element_type->node_parents[26], 1); feenox_mesh_add_node_parent(&element_type->node_parents[26], 2); feenox_mesh_add_node_parent(&element_type->node_parents[26], 3); feenox_mesh_add_node_parent(&element_type->node_parents[26], 4); feenox_mesh_add_node_parent(&element_type->node_parents[26], 5); feenox_mesh_add_node_parent(&element_type->node_parents[26], 6); feenox_mesh_add_node_parent(&element_type->node_parents[26], 7); feenox_mesh_compute_coords_from_parent(element_type, 26); // full integration: 3x3x3 feenox_mesh_gauss_init_hexa27(element_type, &element_type->gauss[integration_full]); element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 27); for (j = 0; j < element_type->nodes; j++) { xi[0] = M_SQRT5/M_SQRT3 * element_type->node_coords[j][0]; xi[1] = M_SQRT5/M_SQRT3 * element_type->node_coords[j][1]; xi[2] = M_SQRT5/M_SQRT3 * element_type->node_coords[j][2]; for (q = 0; q < 27; q++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, j, q, feenox_mesh_hexa27_h(q, xi)); } } // reduced integration: 2x2x2 feenox_mesh_gauss_init_hexa8(element_type, &element_type->gauss[integration_reduced]); element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 8); // the two extrapolation matrices for (j = 0; j < element_type->nodes; j++) { xi[0] = M_SQRT3 * element_type->node_coords[j][0]; xi[1] = M_SQRT3 * element_type->node_coords[j][1]; xi[2] = M_SQRT3 * element_type->node_coords[j][2]; for (q = 0; q < 8; q++) { gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, q, feenox_mesh_hexa8_h(q, xi)); } } return FEENOX_OK; } /* Reference https://www.code-aster.org/V2/doc/v11/en/man_r/r3/r3.01.01.pdf Coordinates Node here(gmsh) Node reference r s t 0 1 -1 -1 -1 1 2 1 -1 -1 2 3 1 1 -1 3 4 -1 1 -1 4 5 -1 -1 1 5 6 1 -1 1 6 7 1 1 1 7 8 -1 1 1 8 9 0 -1 -1 11 10 1 0 -1 13 11 0 1 -1 9 12 -1 0 -1 10 13 -1 -1 0 12 14 1 -1 0 14 15 1 1 0 15 16 -1 1 0 16 17 0 -1 1 18 18 1 0 1 19 19 0 1 1 17 20 -1 0 1 20 21 0 0 -1 21 22 0 -1 0 23 23 1 0 0 24 24 0 1 0 22 25 -1 0 0 25 26 0 0 1 26 27 0 0 0 */ double feenox_mesh_hexa27_h(int j, double *vec_xi) { double xi = vec_xi[0]; double eta = vec_xi[1]; double zeta = vec_xi[2]; switch (j) { case 0: return xi*(xi-1)*eta*(eta-1)*zeta*(zeta-1)/8.0; break; case 1: return xi*(xi+1)*eta*(eta-1)*zeta*(zeta-1)/8.0; break; case 2: return xi*(xi+1)*eta*(eta+1)*zeta*(zeta-1)/8.0; break; case 3: return xi*(xi-1)*eta*(eta+1)*zeta*(zeta-1)/8.0; break; case 4: return xi*(xi-1)*eta*(eta-1)*zeta*(zeta+1)/8.0; break; case 5: return xi*(xi+1)*eta*(eta-1)*zeta*(zeta+1)/8.0; break; case 6: return xi*(xi+1)*eta*(eta+1)*zeta*(zeta+1)/8.0; break; case 7: return xi*(xi-1)*eta*(eta+1)*zeta*(zeta+1)/8.0; break; case 8: return (1-xi*xi)*eta*(eta-1)*zeta*(zeta-1)/4.0; break; case 9: return xi*(xi-1)*(1-eta*eta)*zeta*(zeta-1)/4.0; break; case 10: return xi*(xi-1)*eta*(eta-1)*(1-zeta*zeta)/4.0; break; case 11: return xi*(xi+1)*(1-eta*eta)*zeta*(zeta-1)/4.0; break; case 12: return xi*(xi+1)*eta*(eta-1)*(1-zeta*zeta)/4.0; break; case 13: return (1-xi*xi)*eta*(eta+1)*zeta*(zeta-1)/4.0; break; case 14: return xi*(xi+1)*eta*(eta+1)*(1-zeta*zeta)/4.0; break; case 15: return xi*(xi-1)*eta*(eta+1)*(1-zeta*zeta)/4.0; break; case 16: return (1-xi*xi)*eta*(eta-1)*zeta*(zeta+1)/4.0; break; case 17: return xi*(xi-1)*(1-eta*eta)*zeta*(zeta+1)/4.0; break; case 18: return xi*(xi+1)*(1-eta*eta)*zeta*(zeta+1)/4.0; break; case 19: return (1-xi*xi)*eta*(eta+1)*zeta*(zeta+1)/4.0; break; case 20: return (1-xi*xi)*(1-eta*eta)*zeta*(zeta-1)/2.0; break; case 21: return (1-xi*xi)*eta*(eta-1)*(1-zeta*zeta)/2.0; break; case 22: return xi*(xi-1)*(1-eta*eta)*(1-zeta*zeta)/2.0; break; case 23: return xi*(xi+1)*(1-eta*eta)*(1-zeta*zeta)/2.0; break; case 24: return (1-xi*xi)*eta*(eta+1)*(1-zeta*zeta)/2.0; break; case 25: return (1-xi*xi)*(1-eta*eta)*zeta*(zeta+1)/2.0; break; case 26: return (1-xi*xi)*(1-eta*eta)*(1-zeta*zeta); break; } return 0; } double feenox_mesh_hexa27_dhdr(int j, int d, double *vec_xi ){ double xi = vec_xi[0]; double eta = vec_xi[1]; double zeta = vec_xi[2]; switch (j) { case 0: switch(d) { case 0: return (2*xi-1)*eta*(eta-1)*zeta*(zeta-1)/8.0; break; case 1: return xi*(xi-1)*(2*eta-1)*zeta*(zeta-1)/8.0; break; case 2: return xi*(xi-1)*eta*(eta-1)*(2*zeta-1)/8.0; break; } break; case 1: switch(d) { case 0: return (2*xi+1)*eta*(eta-1)*zeta*(zeta-1)/8.0; break; case 1: return xi*(xi+1)*(2*eta-1)*zeta*(zeta-1)/8.0; break; case 2: return xi*(xi+1)*eta*(eta-1)*(2*zeta-1)/8.0; break; } break; case 2: switch(d) { case 0: return (2*xi+1)*eta*(eta+1)*zeta*(zeta-1)/8.0; break; case 1: return xi*(xi+1)*(2*eta+1)*zeta*(zeta-1)/8.0; break; case 2: return xi*(xi+1)*eta*(eta+1)*(2*zeta-1)/8.0; break; } break; case 3: switch(d) { case 0: return (2*xi-1)*eta*(eta+1)*zeta*(zeta-1)/8.0; break; case 1: return xi*(xi-1)*(2*eta+1)*zeta*(zeta-1)/8.0; break; case 2: return xi*(xi-1)*eta*(eta+1)*(2*zeta-1)/8.0; break; } break; case 4: switch(d) { case 0: return (2*xi-1)*eta*(eta-1)*zeta*(zeta+1)/8.0; break; case 1: return xi*(xi-1)*(2*eta-1)*zeta*(zeta+1)/8.0; break; case 2: return xi*(xi-1)*eta*(eta-1)*(2*zeta+1)/8.0; break; } break; case 5: switch(d) { case 0: return (2*xi+1)*eta*(eta-1)*zeta*(zeta+1)/8.0; break; case 1: return xi*(xi+1)*(2*eta-1)*zeta*(zeta+1)/8.0; break; case 2: return xi*(xi+1)*eta*(eta-1)*(2*zeta+1)/8.0; break; } break; case 6: switch(d) { case 0: return (2*xi+1)*eta*(eta+1)*zeta*(zeta+1)/8.0; break; case 1: return xi*(xi+1)*(2*eta+1)*zeta*(zeta+1)/8.0; break; case 2: return xi*(xi+1)*eta*(eta+1)*(2*zeta+1)/8.0; break; } break; case 7: switch(d) { case 0: return (2*xi-1)*eta*(eta+1)*zeta*(zeta+1)/8.0; break; case 1: return xi*(xi-1)*(2*eta+1)*zeta*(zeta+1)/8.0; break; case 2: return xi*(xi-1)*eta*(eta+1)*(2*zeta+1)/8.0; break; } break; case 8: switch(d) { case 0: return -xi*eta*(eta-1)*zeta*(zeta-1)/2.0; break; case 1: return (1-xi*xi)*(2*eta-1)*zeta*(zeta-1)/4.0; break; case 2: return (1-xi*xi)*eta*(eta-1)*(2*zeta-1)/4.0; break; } break; case 9: switch(d) { case 0: return (2*xi-1)*(1-eta*eta)*zeta*(zeta-1)/4.0; break; case 1: return -xi*(xi-1)*eta*zeta*(zeta-1)/2.0; break; case 2: return xi*(xi-1)*(1-eta*eta)*(2*zeta-1)/4.0; break; } break; case 10: switch(d) { case 0: return (2*xi-1)*eta*(eta-1)*(1-zeta*zeta)/4.0; break; case 1: return xi*(xi-1)*(2*eta-1)*(1-zeta*zeta)/4.0; break; case 2: return -xi*(xi-1)*eta*(eta-1)*zeta/2.0; break; } break; case 11: switch(d) { case 0: return (2*xi+1)*(1-eta*eta)*zeta*(zeta-1)/4.0; break; case 1: return -xi*(xi+1)*eta*zeta*(zeta-1)/2.0; break; case 2: return xi*(xi+1)*(1-eta*eta)*(2*zeta-1)/4.0; break; } break; case 12: switch(d) { case 0: return (2*xi+1)*eta*(eta-1)*(1-zeta*zeta)/4.0; break; case 1: return xi*(xi+1)*(2*eta-1)*(1-zeta*zeta)/4.0; break; case 2: return -xi*(xi+1)*eta*(eta-1)*zeta/2.0; break; } break; case 13: switch(d) { case 0: return -xi*eta*(eta+1)*zeta*(zeta-1)/2.0; break; case 1: return (1-xi*xi)*(2*eta+1)*zeta*(zeta-1)/4.0; break; case 2: return (1-xi*xi)*eta*(eta+1)*(2*zeta-1)/4.0; break; } break; case 14: switch(d) { case 0: return (2*xi+1)*eta*(eta+1)*(1-zeta*zeta)/4.0; break; case 1: return xi*(xi+1)*(2*eta+1)*(1-zeta*zeta)/4.0; break; case 2: return -xi*(xi+1)*eta*(eta+1)*zeta/2.0; break; } break; case 15: switch(d) { case 0: return (2*xi-1)*eta*(eta+1)*(1-zeta*zeta)/4.0; break; case 1: return xi*(xi-1)*(2*eta+1)*(1-zeta*zeta)/4.0; break; case 2: return -xi*(xi-1)*eta*(eta+1)*zeta/2.0; break; } break; case 16: switch(d) { case 0: return -xi*eta*(eta-1)*zeta*(zeta+1)/2.0; break; case 1: return (1-xi*xi)*(2*eta-1)*zeta*(zeta+1)/4.0; break; case 2: return (1-xi*xi)*eta*(eta-1)*(2*zeta+1)/4.0; break; } break; case 17: switch(d) { case 0: return (2*xi-1)*(1-eta*eta)*zeta*(zeta+1)/4.0; break; case 1: return -xi*(xi-1)*eta*zeta*(zeta+1)/2.0; break; case 2: return xi*(xi-1)*(1-eta*eta)*(2*zeta+1)/4.0; break; } break; case 18: switch(d) { case 0: return (2*xi+1)*(1-eta*eta)*zeta*(zeta+1)/4.0; break; case 1: return -xi*(xi+1)*eta*zeta*(zeta+1)/2.0; break; case 2: return xi*(xi+1)*(1-eta*eta)*(2*zeta+1)/4.0; break; } break; case 19: switch(d) { case 0: return -xi*eta*(eta+1)*zeta*(zeta+1)/2.0; break; case 1: return (1-xi*xi)*(2*eta+1)*zeta*(zeta+1)/4.0; break; case 2: return (1-xi*xi)*eta*(eta+1)*(2*zeta+1)/4.0; break; } break; case 20: switch(d) { case 0: return -xi*(1-eta*eta)*zeta*(zeta-1); break; case 1: return -(1-xi*xi)*eta*zeta*(zeta-1); break; case 2: return (1-xi*xi)*(1-eta*eta)*(2*zeta-1)/2.0; break; } break; case 21: switch(d) { case 0: return -xi*eta*(eta-1)*(1-zeta*zeta); break; case 1: return (1-xi*xi)*(2*eta-1)*(1-zeta*zeta)/2.0; break; case 2: return -(1-xi*xi)*eta*(eta-1)*zeta; break; } break; case 22: switch(d) { case 0: return (2*xi-1)*(1-eta*eta)*(1-zeta*zeta)/2.0; break; case 1: return -xi*(xi-1)*eta*(1-zeta*zeta); break; case 2: return -xi*(xi-1)*(1-eta*eta)*zeta; break; } break; case 23: switch(d) { case 0: return (2*xi+1)*(1-eta*eta)*(1-zeta*zeta)/2.0; break; case 1: return -xi*(xi+1)*eta*(1-zeta*zeta); break; case 2: return -xi*(xi+1)*(1-eta*eta)*zeta; break; } break; case 24: switch(d) { case 0: return -xi*eta*(eta+1)*(1-zeta*zeta); break; case 1: return (1-xi*xi)*(2*eta+1)*(1-zeta*zeta)/2.0; break; case 2: return -(1-xi*xi)*eta*(eta+1)*zeta; break; } break; case 25: switch(d) { case 0: return -xi*(1-eta*eta)*zeta*(zeta+1); break; case 1: return -(1-xi*xi)*eta*zeta*(zeta+1); break; case 2: return (1-xi*xi)*(1-eta*eta)*(2*zeta+1)/2.0; break; } break; case 26: switch(d) { case 0: return -2*xi*(1-eta*eta)*(1-zeta*zeta); break; case 1: return -2*(1-xi*xi)*eta*(1-zeta*zeta); break; case 2: return -2*(1-xi*xi)*(1-eta*eta)*zeta; break; } break; } return 0; } feenox-1.1/src/mesh/elements/triang6.c0000644000175000017500000001776414773607165014674 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related second-order triangle element routines * * Copyright (C) 2017--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // ------------------------------------- // six-node triangle // ------------------------------------- int feenox_mesh_triang6_init(void) { double r[2]; element_type_t *element_type; int j; element_type = &feenox.mesh.element_types[ELEMENT_TYPE_TRIANGLE6]; element_type->id = ELEMENT_TYPE_TRIANGLE6; element_type->dim = 2; element_type->order = 2; element_type->nodes = 6; element_type->faces = 3; element_type->nodes_per_face = 3; element_type->h = feenox_mesh_triang6_h; element_type->dhdxi = feenox_mesh_triang6_dhdr; element_type->point_inside = feenox_mesh_point_in_triangle; element_type->volume = feenox_mesh_triang_volume; element_type->area = feenox_mesh_triang_area; element_type->size = feenox_mesh_triang_size; // from Gmsh’ doc /* Triangle6: 2 |`\ | `\ 5 `4 | `\ | `\ 0-----3----1 */ element_type->node_coords = calloc(element_type->nodes, sizeof(double *)); element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *)); for (j = 0; j < element_type->nodes; j++) { element_type->node_coords[j] = calloc(element_type->dim, sizeof(double)); } element_type->vertices++; element_type->node_coords[0][0] = 0; element_type->node_coords[0][1] = 0; element_type->vertices++; element_type->node_coords[1][0] = 1; element_type->node_coords[1][1] = 0; element_type->vertices++; element_type->node_coords[2][0] = 0; element_type->node_coords[2][1] = 1; feenox_mesh_add_node_parent(&element_type->node_parents[3], 0); feenox_mesh_add_node_parent(&element_type->node_parents[3], 1); feenox_mesh_compute_coords_from_parent(element_type, 3); feenox_mesh_add_node_parent(&element_type->node_parents[4], 1); feenox_mesh_add_node_parent(&element_type->node_parents[4], 2); feenox_mesh_compute_coords_from_parent(element_type, 4); feenox_mesh_add_node_parent(&element_type->node_parents[5], 2); feenox_mesh_add_node_parent(&element_type->node_parents[5], 0); feenox_mesh_compute_coords_from_parent(element_type, 5); // for doc element_type->name = "triang6"; element_type->desc = "Six-node triangle"; element_type->ascii_art = "\ η \n\ 2 \n\ |`\\ \n\ | `\\ \n\ 5 `4 \n\ | `\\ \n\ | `\\ \n\ 0-----3----1-> ξ"; element_type->h_latex = feenox_mesh_triang6_h_latex; element_type->doc_n_edges = 6; feenox_check_alloc(element_type->doc_edges = calloc(element_type->doc_n_edges, sizeof(int[2]))); element_type->doc_edges = malloc(element_type->doc_n_edges * sizeof(int[2])); element_type->doc_edges[0][0] = 0; element_type->doc_edges[0][1] = 3; element_type->doc_edges[1][0] = 3; element_type->doc_edges[1][1] = 1; element_type->doc_edges[2][0] = 1; element_type->doc_edges[2][1] = 4; element_type->doc_edges[3][0] = 4; element_type->doc_edges[3][1] = 2; element_type->doc_edges[4][0] = 2; element_type->doc_edges[4][1] = 5; element_type->doc_edges[5][0] = 5; element_type->doc_edges[5][1] = 0; element_type->doc_n_faces = 1; feenox_check_alloc(element_type->doc_faces = calloc(element_type->doc_n_faces, sizeof(int[8]))); element_type->doc_faces[0][0] = 1; element_type->doc_faces[0][1] = 2; element_type->doc_faces[0][2] = 3; element_type->doc_faces[0][3] = 4; element_type->doc_faces[0][4] = 5; element_type->doc_faces[0][5] = 6; // ------------ // gauss points and extrapolation matrices // full integration: 3 points feenox_mesh_gauss_init_triang3(element_type, &element_type->gauss[integration_full]); element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 3); // reduced integration: 1 point feenox_mesh_gauss_init_triang1(element_type, &element_type->gauss[integration_reduced]); element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 1); // the two extrapolation matrices // first the full one r[0] = -1.0/3.0; r[1] = -1.0/3.0; for (j = 0; j < 3; j++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 0, j, feenox_mesh_triang3_h(j, r)); } r[0] = +5.0/3.0; r[1] = -1.0/3.0; for (j = 0; j < 3; j++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 1, j, feenox_mesh_triang3_h(j, r)); } r[0] = -1.0/3.0; r[1] = +5.0/3.0; for (j = 0; j < 3; j++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 2, j, feenox_mesh_triang3_h(j, r)); } r[0] = +2.0/3.0; r[1] = -1.0/3.0; for (j = 0; j < 3; j++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 3, j, feenox_mesh_triang3_h(j, r)); } r[0] = +2.0/3.0; r[1] = +2.0/3.0; for (j = 0; j < 3; j++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 4, j, feenox_mesh_triang3_h(j, r)); } r[0] = -1.0/3.0; r[1] = +2.0/3.0; for (j = 0; j < 3; j++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, 5, j, feenox_mesh_triang3_h(j, r)); } // the reduced one is a vector of ones for (j = 0; j < element_type->nodes; j++) { // reduced gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, 0, 1.0); } return FEENOX_OK; } double feenox_mesh_triang6_h(int j, double *vec_xi) { double xi = vec_xi[0]; double eta = vec_xi[1]; switch (j) { case 0: return (1-xi-eta)*(2*(1-xi-eta)-1); break; case 1: return xi*(2*xi-1); break; case 2: return eta*(2*eta-1); break; case 3: return 4*(1-xi-eta)*xi; break; case 4: return 4*xi*eta; break; case 5: return 4*eta*(1-xi-eta); break; } return 0; } char *feenox_mesh_triang6_h_latex(int j) { switch (j) { case 0: return "(1-\\xi-\\eta)\\cdot \\left[ 2 \\cdot (1-\\xi-\\eta) - 1 \\right]"; break; case 1: return "\\xi\\cdot(2\\xi-1)"; break; case 2: return "\\eta\\cdot(2\\eta-1)"; break; case 3: return "4\\cdot(1-\\xi-\\eta)\\cdot\\xi"; break; case 4: return "4\\cdot\\xi\\cdot\\eta"; break; case 5: return "4\\cdot\\eta\\cdot(1-\\xi-\\eta)"; break; } return 0; } double feenox_mesh_triang6_dhdr(int j, int m, double *vec_r) { double r = vec_r[0]; double s = vec_r[1]; switch(j) { case 0: if (m == 0) { return 1-4*(1-r-s); } else { return 1-4*(1-r-s); } break; case 1: if (m == 0) { return 4*r-1; } else { return 0; } break; case 2: if (m == 0) { return 0; } else { return 4*s-1; } break; case 3: if (m == 0) { return 4*(1-r-s)-4*r; } else { return -4*r; } break; case 4: if (m == 0) { return 4*s; } else { return 4*r; } break; case 5: if (m == 0) { return -4*s; } else { return 4*(1-r-s)-4*s; } break; } return 0; } feenox-1.1/src/mesh/elements/hexa20.c0000644000175000017500000004124214773607165014375 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related hexahedron element routines * * Copyright (C) 2014--2017 C.P. Camusso. * Copyright (C) 2017--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------------------------------------------------- // twenty-node hexahedron // -------------------------------------------------------------- int feenox_mesh_hexa20_init(void) { double xi[3]; unsigned int j, q; element_type_t *element_type = &feenox.mesh.element_types[ELEMENT_TYPE_HEXAHEDRON20]; element_type->name = "hexa20"; element_type->id = ELEMENT_TYPE_HEXAHEDRON20; element_type->dim = 3; element_type->order = 2; element_type->nodes = 20; element_type->faces = 6; element_type->nodes_per_face = 8; element_type->h = feenox_mesh_hexa20_h; element_type->dhdxi = feenox_mesh_hexa20_dhdr; element_type->point_inside = feenox_mesh_point_in_hexahedron; element_type->volume = feenox_mesh_hex_volume; element_type->size = feenox_mesh_hex_size; // from Gmsh’ doc /* Hexahedron20: 3----13----2 |\ |\ | 15 | 14 9 \ 11 \ | 7----19+---6 | | | | 0---+-8----1 | \ 17 \ 18 10 | 12| \| \| 4----16----5 */ element_type->node_coords = calloc(element_type->nodes, sizeof(double *)); element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *)); for (j = 0; j < element_type->nodes; j++) { element_type->node_coords[j] = calloc(element_type->dim, sizeof(double)); } element_type->vertices++; element_type->node_coords[0][0] = -1; element_type->node_coords[0][1] = -1; element_type->node_coords[0][2] = -1; element_type->vertices++; element_type->node_coords[1][0] = +1; element_type->node_coords[1][1] = -1; element_type->node_coords[1][2] = -1; element_type->vertices++; element_type->node_coords[2][0] = +1; element_type->node_coords[2][1] = +1; element_type->node_coords[2][2] = -1; element_type->vertices++; element_type->node_coords[3][0] = -1; element_type->node_coords[3][1] = +1; element_type->node_coords[3][2] = -1; element_type->vertices++; element_type->node_coords[4][0] = -1; element_type->node_coords[4][1] = -1; element_type->node_coords[4][2] = +1; element_type->vertices++; element_type->node_coords[5][0] = +1; element_type->node_coords[5][1] = -1; element_type->node_coords[5][2] = +1; element_type->vertices++; element_type->node_coords[6][0] = +1; element_type->node_coords[6][1] = +1; element_type->node_coords[6][2] = +1; element_type->vertices++; element_type->node_coords[7][0] = -1; element_type->node_coords[7][1] = +1; element_type->node_coords[7][2] = +1; feenox_mesh_add_node_parent(&element_type->node_parents[8], 0); feenox_mesh_add_node_parent(&element_type->node_parents[8], 1); feenox_mesh_compute_coords_from_parent(element_type, 8); feenox_mesh_add_node_parent(&element_type->node_parents[9], 0); feenox_mesh_add_node_parent(&element_type->node_parents[9], 3); feenox_mesh_compute_coords_from_parent(element_type, 9); feenox_mesh_add_node_parent(&element_type->node_parents[10], 0); feenox_mesh_add_node_parent(&element_type->node_parents[10], 4); feenox_mesh_compute_coords_from_parent(element_type, 10); feenox_mesh_add_node_parent(&element_type->node_parents[11], 1); feenox_mesh_add_node_parent(&element_type->node_parents[11], 2); feenox_mesh_compute_coords_from_parent(element_type, 11); feenox_mesh_add_node_parent(&element_type->node_parents[12], 1); feenox_mesh_add_node_parent(&element_type->node_parents[12], 5); feenox_mesh_compute_coords_from_parent(element_type, 12); feenox_mesh_add_node_parent(&element_type->node_parents[13], 2); feenox_mesh_add_node_parent(&element_type->node_parents[13], 3); feenox_mesh_compute_coords_from_parent(element_type, 13); feenox_mesh_add_node_parent(&element_type->node_parents[14], 2); feenox_mesh_add_node_parent(&element_type->node_parents[14], 6); feenox_mesh_compute_coords_from_parent(element_type, 14); feenox_mesh_add_node_parent(&element_type->node_parents[15], 3); feenox_mesh_add_node_parent(&element_type->node_parents[15], 7); feenox_mesh_compute_coords_from_parent(element_type, 15); feenox_mesh_add_node_parent(&element_type->node_parents[16], 4); feenox_mesh_add_node_parent(&element_type->node_parents[16], 5); feenox_mesh_compute_coords_from_parent(element_type, 16); feenox_mesh_add_node_parent(&element_type->node_parents[17], 4); feenox_mesh_add_node_parent(&element_type->node_parents[17], 7); feenox_mesh_compute_coords_from_parent(element_type, 17); feenox_mesh_add_node_parent(&element_type->node_parents[18], 5); feenox_mesh_add_node_parent(&element_type->node_parents[18], 6); feenox_mesh_compute_coords_from_parent(element_type, 18); feenox_mesh_add_node_parent(&element_type->node_parents[19], 6); feenox_mesh_add_node_parent(&element_type->node_parents[19], 7); feenox_mesh_compute_coords_from_parent(element_type, 19); // full integration: 3x3x3 feenox_mesh_gauss_init_hexa27(element_type, &element_type->gauss[integration_full]); element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 27); for (j = 0; j < element_type->nodes; j++) { xi[0] = M_SQRT5/M_SQRT3 * element_type->node_coords[j][0]; xi[1] = M_SQRT5/M_SQRT3 * element_type->node_coords[j][1]; xi[2] = M_SQRT5/M_SQRT3 * element_type->node_coords[j][2]; for (q = 0; q < 27; q++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, j, q, feenox_mesh_hexa27_h(q, xi)); } } // reduced integration: 2x2x2 feenox_mesh_gauss_init_hexa8(element_type, &element_type->gauss[integration_reduced]); element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 8); // the two extrapolation matrices for (j = 0; j < element_type->nodes; j++) { xi[0] = M_SQRT3 * element_type->node_coords[j][0]; xi[1] = M_SQRT3 * element_type->node_coords[j][1]; xi[2] = M_SQRT3 * element_type->node_coords[j][2]; for (q = 0; q < 8; q++) { gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, q, feenox_mesh_hexa8_h(q, xi)); } } return FEENOX_OK; } /* Reference https://www.code-aster.org/V2/doc/v11/en/man_r/r3/r3.01.01.pdf Coordinates Node here(gmsh) Node reference r s t 0 1 -1 -1 -1 1 2 1 -1 -1 2 3 1 1 -1 3 4 -1 1 -1 4 5 -1 -1 1 5 6 1 -1 1 6 7 1 1 1 7 8 -1 1 1 8 9 0 -1 -1 11 10 1 0 -1 13 11 0 1 -1 9 12 -1 0 -1 10 13 -1 -1 0 12 14 1 -1 0 14 15 1 1 0 15 16 -1 1 0 16 17 0 -1 1 18 18 1 0 1 19 19 0 1 1 17 20 -1 0 1 */ double feenox_mesh_hexa20_h(int j, double *vec_xi) { double xi = vec_xi[0]; double eta = vec_xi[1]; double zeta = vec_xi[2]; switch (j) { case 0: return (1-xi)*(1-eta)*(1-zeta)*(-2-xi-eta-zeta)/8.0; break; case 1: return (xi+1)*(1-eta)*(1-zeta)*(-2+xi-eta-zeta)/8.0; break; case 2: return (xi+1)*(eta+1)*(1-zeta)*(-2+xi+eta-zeta)/8.0; break; case 3: return (1-xi)*(eta+1)*(1-zeta)*(-2-xi+eta-zeta)/8.0; break; case 4: return (1-xi)*(1-eta)*(1+zeta)*(-2-xi-eta+zeta)/8.0; break; case 5: return (xi+1)*(1-eta)*(zeta+1)*(-2+xi-eta+zeta)/8.0; break; case 6: return (xi+1)*(1+eta)*(zeta+1)*(-2+xi+eta+zeta)/8.0; break; case 7: return (1-xi)*(eta+1)*(zeta+1)*(-2-xi+eta+zeta)/8.0; break; case 8: return (1-xi*xi)*(1-eta)*(1-zeta)/4.0; break; case 9: return (1-xi)*(1-eta*eta)*(1-zeta)/4.0; break; case 10: return (1-xi)*(1-eta)*(1-zeta*zeta)/4.0; break; case 11: return (xi+1)*(1-eta*eta)*(1-zeta)/4.0; break; case 12: return (xi+1)*(1-eta)*(1-zeta*zeta)/4.0; break; case 13: return (1-xi*xi)*(eta+1)*(1-zeta)/4.0; break; case 14: return (xi+1)*(eta+1)*(1-zeta*zeta)/4.0; break; case 15: return (1-xi)*(eta+1)*(1-zeta*zeta)/4.0; break; case 16: return (1-xi*xi)*(1-eta)*(zeta+1)/4.0; break; case 17: return (1-xi)*(1-eta*eta)*(zeta+1)/4.0; break; case 18: return (xi+1)*(1-eta*eta)*(zeta+1)/4.0; break; case 19: return (1-xi*xi)*(eta+1)*(zeta+1)/4.0; break; } return 0; } double feenox_mesh_hexa20_dhdr(int j, int d, double *vec_xi) { double xi = vec_xi[0]; double eta = vec_xi[1]; double zeta = vec_xi[2]; switch (j) { case 0: switch(d) { case 0: return -0.125*(1-eta)*(1-zeta)*(-zeta-eta-xi-2)-0.125*(1-xi)*(1-eta)*(1-zeta); break; case 1: return -0.125*(1-xi)*(1-zeta)*(-zeta-eta-xi-2)-0.125*(1-xi)*(1-eta)*(1-zeta); break; case 2: return -0.125*(1-xi)*(1-eta)*(-zeta-eta-xi-2)-0.125*(1-xi)*(1-eta)*(1-zeta); break; } break; case 1: switch(d) { case 0: return 0.125*(1-eta)*(1-zeta)*(-zeta-eta+xi-2)+0.125*(xi+1)*(1-eta)*(1-zeta); break; case 1: return -0.125*(xi+1)*(1-zeta)*(-zeta-eta+xi-2)-0.125*(xi+1)*(1-eta)*(1-zeta); break; case 2: return -0.125*(xi+1)*(1-eta)*(-zeta-eta+xi-2)-0.125*(xi+1)*(1-eta)*(1-zeta); break; } break; case 2: switch(d) { case 0: return 0.125*(eta+1)*(1-zeta)*(-zeta+eta+xi-2)+0.125*(xi+1)*(eta+1)*(1-zeta); break; case 1: return 0.125*(xi+1)*(1-zeta)*(-zeta+eta+xi-2)+0.125*(xi+1)*(eta+1)*(1-zeta); break; case 2: return -0.125*(xi+1)*(1+eta)*(-zeta+eta+xi-2)-0.125*(xi+1)*(eta+1)*(1-zeta); break; } break; case 3: switch(d) { case 0: return -0.125*(eta+1)*(1-zeta)*(-zeta+eta-xi-2)-0.125*(1-xi)*(eta+1)*(1-zeta); break; case 1: return 0.125*(1-xi)*(1-zeta)*(-zeta+eta-xi-2)+0.125*(1-xi)*(eta+1)*(1-zeta); break; case 2: return -0.125*(1-xi)*(eta+1)*(-zeta+eta-xi-2)-0.125*(1-xi)*(eta+1)*(1-zeta); break; } break; case 4: switch(d) { case 0: return -0.125*(1-eta)*(zeta+1)*(zeta-eta-xi-2)-0.125*(1-xi)*(1-eta)*(zeta+1); break; case 1: return -0.125*(1-xi)*(zeta+1)*(zeta-eta-xi-2)-0.125*(1-xi)*(1-eta)*(zeta+1); break; case 2: return 0.125*(1-xi)*(1-eta)*(zeta-eta-xi-2)+0.125*(1-xi)*(1-eta)*(zeta+1); break; } break; case 5: switch(d) { case 0: return 0.125*(1-eta)*(zeta+1)*(zeta-eta+xi-2)+0.125*(xi+1)*(1-eta)*(zeta+1); break; case 1: return -0.125*(xi+1)*(zeta+1)*(zeta-eta+xi-2)-0.125*(xi+1)*(1-eta)*(zeta+1); break; case 2: return 0.125*(xi+1)*(1-eta)*(zeta-eta+xi-2)+0.125*(xi+1)*(1-eta)*(zeta+1); break; } break; case 6: switch(d) { case 0: return 0.125*(eta+1)*(zeta+1)*(zeta+eta+xi-2)+0.125*(xi+1)*(eta+1)*(zeta+1); break; case 1: return 0.125*(xi+1)*(zeta+1)*(zeta+eta+xi-2)+0.125*(xi+1)*(eta+1)*(zeta+1); break; case 2: return 0.125*(xi+1)*(eta+1)*(zeta+eta+xi-2)+0.125*(xi+1)*(eta+1)*(zeta+1); break; } break; case 7: switch(d) { case 0: return -0.125*(eta+1)*(zeta+1)*(zeta+eta-xi-2)-0.125*(1-xi)*(eta+1)*(zeta+1); break; case 1: return 0.125*(1-xi)*(zeta+1)*(zeta+eta-xi-2)+0.125*(1-xi)*(eta+1)*(zeta+1); break; case 2: return 0.125*(1-xi)*(eta+1)*(zeta+eta-xi-2)+0.125*(1-xi)*(eta+1)*(zeta+1); break; } break; case 8: switch(d) { case 0: return -0.5*xi*(1-eta)*(1-zeta); break; case 1: return -(1-xi*xi)*(1-zeta)/4.0; break; case 2: return -(1-xi*xi)*(1-eta)/4.0; break; } break; case 9: switch(d) { case 0: return -(1-eta*eta)*(1-zeta)/4.0; break; case 1: return -(1-xi)*eta*(1-zeta)/2.0; break; case 2: return -(1-xi)*(1-eta*eta)/4.0; break; } break; case 10: switch(d) { case 0: return -(1-eta)*(1-zeta*zeta)/4.0; break; case 1: return -(1-xi)*(1-zeta*zeta)/4.0; break; case 2: return -(1-xi)*(1-eta)*zeta/2.0; break; } break; case 11: switch(d) { case 0: return (1-eta*eta)*(1-zeta)/4.0; break; case 1: return -(xi+1)*eta*(1-zeta)/2.0; break; case 2: return -(xi+1)*(1-eta*eta)/4.0; break; } break; case 12: switch(d) { case 0: return (1-eta)*(1-zeta*zeta)/4.0; break; case 1: return -(xi+1)*(1-zeta*zeta)/4.0; break; case 2: return -(xi+1)*(1-eta)*zeta/2.0; break; } break; case 13: switch(d) { case 0: return -xi*(eta+1)*(1-zeta)/2.0; break; case 1: return (1-xi*xi)*(1-zeta)/4.0; break; case 2: return -(1-xi*xi)*(eta+1)/4.0; break; } break; case 14: switch(d) { case 0: return (eta+1)*(1-zeta*zeta)/4.0; break; case 1: return (xi+1)*(1-zeta*zeta)/4.0; break; case 2: return -(xi+1)*(eta+1)*zeta/2.0; break; } break; case 15: switch(d) { case 0: return -(eta+1)*(1-zeta*zeta)/4.0; break; case 1: return (1-xi)*(1-zeta*zeta)/4.0; break; case 2: return -(1-xi)*(eta+1)*zeta/2.0; break; } break; case 16: switch(d) { case 0: return -xi*(1-eta)*(zeta+1)/2.0; break; case 1: return -(1-xi*xi)*(zeta+1)/4.0; break; case 2: return (1-xi*xi)*(1-eta)/4.0; break; } break; case 17: switch(d) { case 0: return -(1-eta*eta)*(zeta+1)/4.0; break; case 1: return -(1-xi)*eta*(zeta+1)/2.0; break; case 2: return (1-xi)*(1-eta*eta)/4.0; break; } break; case 18: switch(d) { case 0: return (1-eta*eta)*(zeta+1)/4.0; break; case 1: return -(xi+1)*eta*(zeta+1)/2.0; break; case 2: return (xi+1)*(1-eta*eta)/4.0; break; } break; case 19: switch(d) { case 0: return -xi*(eta+1)*(zeta+1)/2.0; break; case 1: return (1-xi*xi)*(zeta+1)/4.0; break; case 2: return (1-xi*xi)*(eta+1)/4.0; break; } break; } return 0; } feenox-1.1/src/mesh/elements/quad8.c0000644000175000017500000001503014773607165014324 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related second-order quadrangle element routines * * Copyright (C) 2017 C.P. Camusso. * Copyright (C) 2018--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../../feenox.h" #include "../element.h" // -------------------------------------------------------------- // eight-node quadrangle // -------------------------------------------------------------- int feenox_mesh_quad8_init(void) { double r[2]; element_type_t *element_type; int j, v; element_type = &feenox.mesh.element_types[ELEMENT_TYPE_QUADRANGLE8]; feenox_check_alloc(element_type->name = strdup("quad8")); element_type->id = ELEMENT_TYPE_QUADRANGLE8; element_type->dim = 2; element_type->order = 2; element_type->nodes = 8; element_type->faces = 4; element_type->nodes_per_face = 3; element_type->h = feenox_mesh_quad8_h; element_type->dhdxi = feenox_mesh_quad8_dhdr; element_type->point_inside = feenox_mesh_point_in_quadrangle; element_type->volume = feenox_mesh_quad_volume; element_type->area = feenox_mesh_quad_area; element_type->size = feenox_mesh_quad_size; // from Gmsh’ doc /* Quadrangle8: 3-----6-----2 | | | | 7 5 | | | | 0-----4-----1 */ element_type->node_coords = calloc(element_type->nodes, sizeof(double *)); element_type->node_parents = calloc(element_type->nodes, sizeof(node_relative_t *)); for (j = 0; j < element_type->nodes; j++) { element_type->node_coords[j] = calloc(element_type->dim, sizeof(double)); } element_type->vertices++; element_type->node_coords[0][0] = -1; element_type->node_coords[0][1] = -1; element_type->vertices++; element_type->node_coords[1][0] = +1; element_type->node_coords[1][1] = -1; element_type->vertices++; element_type->node_coords[2][0] = +1; element_type->node_coords[2][1] = +1; element_type->vertices++; element_type->node_coords[3][0] = -1; element_type->node_coords[3][1] = +1; feenox_mesh_add_node_parent(&element_type->node_parents[4], 0); feenox_mesh_add_node_parent(&element_type->node_parents[4], 1); feenox_mesh_compute_coords_from_parent(element_type, 4); feenox_mesh_add_node_parent(&element_type->node_parents[5], 1); feenox_mesh_add_node_parent(&element_type->node_parents[5], 2); feenox_mesh_compute_coords_from_parent(element_type, 5); feenox_mesh_add_node_parent(&element_type->node_parents[6], 2); feenox_mesh_add_node_parent(&element_type->node_parents[6], 3); feenox_mesh_compute_coords_from_parent(element_type, 6); feenox_mesh_add_node_parent(&element_type->node_parents[7], 3); feenox_mesh_add_node_parent(&element_type->node_parents[7], 0); feenox_mesh_compute_coords_from_parent(element_type, 7); // ------------ // gauss points and extrapolation matrices // full integration: 3x3 feenox_mesh_gauss_init_quad9(element_type, &element_type->gauss[integration_full]); element_type->gauss[integration_full].extrap = gsl_matrix_calloc(element_type->nodes, 9); for (j = 0; j < element_type->nodes; j++) { r[0] = M_SQRT5/M_SQRT3 * element_type->node_coords[j][0]; r[1] = M_SQRT5/M_SQRT3 * element_type->node_coords[j][1]; for (v = 0; v < 9; v++) { gsl_matrix_set(element_type->gauss[integration_full].extrap, j, v, feenox_mesh_quad9_h(v, r)); } } // reduced integration: 2x2 feenox_mesh_gauss_init_quad4(element_type, &element_type->gauss[integration_reduced]); element_type->gauss[integration_reduced].extrap = gsl_matrix_calloc(element_type->nodes, 4); for (j = 0; j < element_type->nodes; j++) { r[0] = M_SQRT3 * element_type->node_coords[j][0]; r[1] = M_SQRT3 * element_type->node_coords[j][1]; for (v = 0; v < 4; v++) { gsl_matrix_set(element_type->gauss[integration_reduced].extrap, j, v, feenox_mesh_quad4_h(v, r)); } } return FEENOX_OK; } //Taken from https://www.code-aster.org/V2/doc/default/fr/man_r/r3/r3.01.01.pdf //The aster node ordering of aster and gmsh are equal. double feenox_mesh_quad8_h(int j, double *vec_r) { double r = vec_r[0]; double s = vec_r[1]; switch (j) { case 0: return (1-r)*(1-s)*(-1-r-s)/4.0; break; case 1: return (1+r)*(1-s)*(-1+r-s)/4.0; break; case 2: return (1+r)*(1+s)*(-1+r+s)/4.0; break; case 3: return (1-r)*(1+s)*(-1-r+s)/4.0; break; case 4: return (1-r*r)*(1-s)/2.0; break; case 5: return (r+1)*(1-s*s)/2.0; break; case 6: return (1-r*r)*(s+1)/2.0; break; case 7: return (1-r)*(1-s*s)/2.0; break; } return 0; } double feenox_mesh_quad8_dhdr(int j, int m, double *vec_r) { double r = vec_r[0]; double s = vec_r[1]; switch(j) { case 0: if (m == 0) { return (1-s)*(2*r+s)/4.0; } else { return (1-r)*(r+2*s)/4.0; } break; case 1: if (m == 0) { return (1-s)*(2*r-s)/4.0; } else { return -(1+r)*(r-2*s)/4.0; } break; case 2: if (m == 0) { return (1+s)*(2*r+s)/4.0; } else { return (1+r)*(r+2*s)/4.0; } break; case 3: if (m == 0) { return -(1+s)*(-2*r+s)/4.0; } else { return (1-r)*(-r+2*s)/4.0; } break; case 4: if (m == 0) { return -r*(1-s); } else { return -(1-r*r)/2.0; } break; case 5: if (m == 0) { return (1-s*s)/2.0; } else { return -s*(1+r); } break; case 6: if (m == 0) { return -r*(1+s); } else { return (1-r*r)/2.0; } break; case 7: if (m == 0) { return -(1-s*s)/2.0; } else { return -s*(1-r); } break; } return 0; } feenox-1.1/src/mesh/boundary_condition.c0000644000175000017500000001063014773607165015360 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's boundary conditions * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" // get a pointer to a bc bc_t *feenox_get_bc_ptr(const char *name) { bc_t *bc = NULL; HASH_FIND_STR(feenox.mesh.bcs, name, bc); return bc; } int feenox_define_bc(const char *bc_name, const char *mesh_name) { mesh_t *mesh = NULL; if (mesh_name == NULL || strcmp(mesh_name, "") == 0) { if ((mesh = feenox.mesh.mesh_main) == NULL) { feenox_push_error_message("define at least one mesh before a BC"); return FEENOX_ERROR; } } else { if ((mesh = feenox_get_mesh_ptr(mesh_name)) == NULL) { feenox_push_error_message("cannot find mesh '%s'"); return FEENOX_ERROR; } } return (feenox_define_bc_get_ptr(bc_name, mesh) != NULL) ? FEENOX_OK : FEENOX_ERROR; } bc_t *feenox_define_bc_get_ptr(const char *name, mesh_t *mesh) { bc_t *bc = NULL; if ((bc = feenox_get_bc_ptr(name)) == NULL) { // create a new bc feenox_check_alloc_null(bc = calloc(1, sizeof(bc_t))); feenox_check_alloc_null(bc->name = strdup(name)); if ((bc->mesh = mesh) == NULL) { if ((bc->mesh = feenox.mesh.mesh_main) == NULL) { feenox_push_error_message("boundary conditions can be given only after at least giving one mesh"); return NULL; } } // create a new physical group so name_area etc. are available for the parser // TODO: we don't know the dimension! /* physical_group_t *physical_group = NULL; if ((physical_group = feenox_get_physical_group_ptr(name, NULL)) == NULL) { if ((physical_group = feenox_define_physical_group_get_ptr(name, NULL, dimension, tag)) == NULL) { return FEENOX_ERROR; } } */ HASH_ADD_STR(feenox.mesh.bcs, name, bc); } else { if (mesh != NULL && bc->mesh != mesh) { feenox_push_error_message("BC '%s' already defined over mesh '%s' and re-defined over '%s'", bc->name, bc->mesh->file->name, mesh->file->name); return NULL; } } return bc; } int feenox_add_bc_data(const char *bc_name, const char *string) { bc_t *bc = NULL; if ((bc = feenox_get_bc_ptr(bc_name)) == NULL) { if ((bc = feenox_define_bc_get_ptr(bc_name, NULL)) == NULL) { return FEENOX_ERROR; } } return (feenox_add_bc_data_get_ptr(bc, string) != NULL) ? FEENOX_OK : FEENOX_ERROR; } bc_data_t *feenox_add_bc_data_get_ptr(bc_t *bc, const char *string) { bc_data_t *bc_data; feenox_check_alloc_null(bc_data = calloc(1, sizeof(bc_data_t))); feenox_check_alloc_null(bc_data->string = strdup(string)); // see if there is a "=>" that implies that the BC has a condition char *lhs = NULL; if ((lhs = strstr(bc_data->string, "=>")) != NULL) { *lhs = '\0'; lhs += 2; feenox_call_null(feenox_expression_parse(&bc_data->condition, bc_data->string)); } else { lhs = bc_data->string; } // if there is an equal sign there is an expression, otherwise not char *rhs = NULL; char *equal_sign = NULL; if ((equal_sign = strchr(lhs, '=')) != NULL) { *equal_sign = '\0'; rhs = equal_sign+1; } // we now call the problem-specific function that understands // what the string means and fill in the other bc_data fields feenox_call_null(feenox.pde.parse_bc(bc_data, lhs, rhs)); // restore the equal sign so we can keep the original string just in case if (equal_sign != NULL) { *equal_sign = '='; } // bc_datums is a doubly-linked list because the data can be related to // each other, like h and Tref in a convection BC DL_APPEND(bc->bc_datums, bc_data); return bc_data; } feenox-1.1/src/mesh/material.c0000644000175000017500000001571614773607165013277 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's materials * * Copyright (C) 2021 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" // get a pointer to a material material_t *feenox_get_material_ptr(const char *name) { material_t *material = NULL; HASH_FIND_STR(feenox.mesh.materials, name, material); return material; } int feenox_define_material(const char *material_name, const char *mesh_name) { mesh_t *mesh = NULL; if (mesh_name == NULL || strcmp(mesh_name, "") == 0) { if ((mesh = feenox_get_mesh_ptr(mesh_name)) == NULL) { return FEENOX_ERROR; } } else { if (feenox.mesh.mesh_main == NULL) { feenox_push_error_message("define at least one mesh before a material"); return FEENOX_ERROR; } } return (feenox_define_material_get_ptr(material_name, mesh) != NULL) ? FEENOX_OK : FEENOX_ERROR; } material_t *feenox_define_material_get_ptr(const char *name, mesh_t *mesh) { material_t *material = NULL; if ((material = feenox_get_material_ptr(name)) == NULL) { // create a new material feenox_check_alloc_null(material = calloc(1, sizeof(material_t))); feenox_check_alloc_null(material->name = strdup(name)); if ((material->mesh = mesh) == NULL) { if ((material->mesh = feenox.mesh.mesh_main) == NULL) { feenox_push_error_message("physical properties can be given only after at least giving one mesh"); return NULL; } } HASH_ADD_STR(feenox.mesh.materials, name, material); } else { if (mesh != NULL && material->mesh != mesh) { feenox_push_error_message("material '%s' already defined over mesh '%s' and re-defined over '%s'", material->name, material->mesh->file->name, mesh->file->name); return NULL; } } return material; } int feenox_define_property(const char *name, const char *mesh_name) { return (feenox_define_property_get_ptr(name, feenox_get_mesh_ptr(mesh_name)) != NULL) ? FEENOX_OK : FEENOX_ERROR; } property_t *feenox_define_property_get_ptr(const char *name, mesh_t *mesh) { mesh_t *actual_mesh; if ((actual_mesh = mesh) == NULL) { if ((actual_mesh = feenox.mesh.mesh_main) == NULL) { feenox_push_error_message("physical properties can be given only after at least giving one mesh"); return NULL; } } property_t *property = NULL; HASH_FIND_STR(feenox.mesh.properties, name, property); if (property == NULL) { feenox_check_alloc_null(property = calloc(1, sizeof(property_t))); feenox_check_alloc_null(property->name = strdup(name)); HASH_ADD_KEYPTR(hh, feenox.mesh.properties, property->name, strlen(property->name), property); } // besides the property, we define a function with the property's name // that depends on x,y,z (or the dimension of the mesh) function_t *function = feenox_get_function_ptr(name); if (function != NULL) { if (function->n_arguments != actual_mesh->dim) { feenox_push_error_message("there already exists a function named '%s' and it has %d arguments instead of %d", name, function->n_arguments, actual_mesh->dim); return NULL; } if (function->type != function_type_pointwise_mesh_property) { feenox_push_error_message("there already exists a function named '%s' and it is not related to a property"); return NULL; } if (function->mesh != actual_mesh) { feenox_push_error_message("there already exists a function named '%s' and it is not over the mesh '%s'", actual_mesh->file->name); return NULL; } } else { if ((function = feenox_define_function_get_ptr(name, actual_mesh->dim)) == NULL) { return NULL; } // here the mesh is that of the first property... is that right? function->mesh = actual_mesh; function->type = function_type_pointwise_mesh_property; function->property = property; } return property; } int feenox_define_property_data(const char *property_name, const char *material_name, const char *expr_string) { material_t *material = NULL; // sometimes it is no ok to re-define and re-use materials (here it is) if ((material = feenox_get_material_ptr(material_name)) == NULL) { if ((material = feenox_define_material_get_ptr(material_name, NULL)) == NULL) { return FEENOX_ERROR; } } // it is ok to re-define and re-use properties property_t *property = NULL; if ((property = feenox_define_property_get_ptr(property_name, material->mesh)) == NULL) { return FEENOX_ERROR; } return (feenox_define_property_data_get_ptr(property, material, expr_string) != NULL) ? FEENOX_OK : FEENOX_ERROR; } property_data_t *feenox_define_property_data_get_ptr(property_t *property, material_t *material, const char *expr_string) { // there's a function called material_property with the algebraic // expression that depends on x,y,z // if we need to fail, fail before allocating if (property == NULL || material == NULL || material->mesh == NULL) { feenox_push_error_message("something is null when calling feenox_define_property_data_get_ptr()"); return NULL; } if (material->mesh->dim == 0) { feenox_push_error_message("mesh '%s' has zero dimensions when defining property '%s', keyword DIMENSIONS is needed for MESH definition", material->mesh->file->format, property->name); return NULL; } property_data_t *property_data = NULL; feenox_check_alloc_null(property_data = calloc(1, sizeof(property_data_t))); property_data->material = material; property_data->property = property; if (feenox_expression_parse(&property_data->expr, expr_string) != FEENOX_OK) { return NULL; } char *name = NULL; if (asprintf(&name, "%s_%s", material->name, property->name) == -1) { return NULL; } function_t *function; if ((function = feenox_define_function_get_ptr(name, material->mesh->dim)) == NULL) { return NULL; } function->type = function_type_algebraic; function->var_argument = feenox.mesh.vars.arr_x; function->algebraic_expression = property_data->expr; feenox_free(name); HASH_ADD_KEYPTR(hh, material->property_datums, property->name, strlen(property->name), property_data); // HASH_ADD_KEYPTR(hh, property->property_datums, material->name, strlen(material->name), property_data); return property_data; } feenox-1.1/src/mesh/cell.c0000644000175000017500000000701014773607165012404 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox's mesh-related cell routines * * Copyright (C) 2014--2016 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "../feenox.h" int feenox_mesh_element2cell(mesh_t *this) { int i_element, i_cell; if (this->cell != NULL) { return FEENOX_OK; } feenox.mesh.need_cells = 1; // contamos cuantas celdas hay // una celda = un elemento de la dimension del problema this->n_cells = 0; for (i_element = 0; i_element < this->n_elements; i_element++) { if (this->element[i_element].type != NULL && this->element[i_element].type->dim == this->dim) { this->n_cells++; } } // alocamos las celdas feenox_check_alloc(this->cell = calloc(this->n_cells, sizeof(cell_t))); i_cell = 0; for (i_element = 0; i_element < this->n_elements; i_element++) { if (this->element[i_element].type != NULL && this->element[i_element].type->dim == this->dim) { // las id las empezamos en uno this->cell[i_cell].id = i_cell+1; // elemento (ida y vuelta) this->cell[i_cell].element = &this->element[i_element]; this->element[i_element].cell = &this->cell[i_cell]; // holder para vecinos feenox_check_alloc(this->cell[i_cell].ineighbor = calloc(this->element[i_element].type->faces, sizeof(int))); // coordenadas del centro /* for (i_dim = 0; i_dim < this->spatial_dimensions; i_dim++) { this->cell[i_cell].x[i_dim] = 0; for (i_node = 0; i_node < this->cell[i_cell].element->type->nodes; i_node++) { this->cell[i_cell].x[i_dim] += this->cell[i_cell].element->node[i_node]->x[i_dim]; } this->cell[i_cell].x[i_dim] /= (double)(this->cell[i_cell].element->type->nodes); } */ feenox_call(feenox_mesh_compute_element_barycenter(this->cell[i_cell].element, this->cell[i_cell].x)); this->cell[i_cell].volume = this->cell[i_cell].element->type->volume(this->cell[i_cell].element); i_cell++; } } return FEENOX_OK; } int mesh_compute_coords(mesh_t *this) { size_t i = 0; for (i = 0; i < this->n_cells; i++) { feenox_call(feenox_mesh_compute_element_barycenter(this->cell[i].element, this->cell[i].x)); this->cell[i].volume = this->cell[i].element->type->volume(this->cell[i].element); } return FEENOX_OK; } int mesh_cell_indexes(mesh_t *this, int dofs) { this->degrees_of_freedom = dofs; size_t i = 0; unsigned int g = 0; size_t index = 0; for (i = 0; i < this->n_cells; i++) { // holder para indices y resultados feenox_check_alloc(this->cell[i].index = calloc(this->degrees_of_freedom, sizeof(int))); for (g = 0; g < this->degrees_of_freedom; g++) { this->cell[i].index[g] = index++; } } return FEENOX_OK; } feenox-1.1/src/version.c0000644000175000017500000001327314773607165012226 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX version and description routines * * Copyright (C) 2009--2025 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include "help.h" #include "pdes/available.h" #include #include #ifdef HAVE_READLINE #include #endif #ifdef HAVE_SUNDIALS #include #endif #ifdef HAVE_PETSC #include #include #endif #ifdef HAVE_SLEPC #include #endif void feenox_show_help(const char *progname, int extra) { // in parallel runs only print from first processor if (feenox.mpi_rank != 0) { return; } // TODO: use a defined string with %s printf("usage: %s %s\n\n", progname, FEENOX_HELP_USAGE); printf("%s\n", FEENOX_HELP_OPTIONS_BASE); if (extra) { printf("%s\n", FEENOX_HELP_OPTIONS_PDE); printf("%s\n", FEENOX_HELP_EXTRA); } else { printf("Run with --help for further explanations.\n"); } if (extra) { printf("Report bugs at https://github.com/seamplex/feenox/issues\n"); printf("Ask questions at https://github.com/seamplex/feenox/discussions\n"); printf("Feenox home page: https://www.seamplex.com/feenox/\n"); } return; } void feenox_show_version(int version) { // in parallel runs only print from first processor if (feenox.mpi_rank != 0) { return; } if (version == version_available_pdes) { #ifdef HAVE_PETSC printf(AVAILABLE_PDES); #else printf("FeenoX was not linked against PETSc. No PDEs are available.\n"); #endif return; } else if (version == version_elements_info) { feenox_mesh_element_types_init(); feenox_mesh_elements_info(); return; } feenox_shortversion(); if (version) { printf("\n"); } switch (version) { case version_copyright: feenox_copyright(); break; case version_info: feenox_longversion(); break; } fflush(stdout); return; } void feenox_shortversion(void) { // in parallel runs only print from first processor if (feenox.mpi_rank != 0) { return; } printf("FeenoX "); #ifdef FEENOX_GIT_BRANCH printf("%s %s\n", FEENOX_GIT_VERSION, strcmp(FEENOX_GIT_BRANCH, "main") ? FEENOX_GIT_BRANCH : ""); #else printf("%s\n", PACKAGE_VERSION); #endif printf("%s\n", FEENOX_HELP_ONE_LINER); return; } void feenox_copyright(void) { // in parallel runs only print from first processor if (feenox.mpi_rank != 0) { return; } /* It is important to separate the year from the rest of the message, as done here, to avoid having to retranslate the message when a new year comes around. */ printf("Copyright © %d--%d Jeremy Theler, https://seamplex.com/feenox\n\ GNU General Public License v3+, https://www.gnu.org/licenses/gpl.html. \n\ FeenoX is free software: you are free to change and redistribute it.\n\ There is NO WARRANTY, to the extent permitted by law.\n", 2009, 2025); } void feenox_longversion(void) { // in parallel runs only print from first processor if (feenox.mpi_rank != 0) { return; } #ifdef FEENOX_GIT_DATE printf("Last commit date : %s\n", FEENOX_GIT_DATE); #endif // these guys here prevent reproducible builds in debian /* #ifdef FEENOX_COMPILATION_DATE printf("Build date : %s\n", FEENOX_COMPILATION_DATE); #endif #ifdef FEENOX_COMPILATION_USERNAME printf("Builder : %s@%s\n", FEENOX_COMPILATION_USERNAME, FEENOX_COMPILATION_HOSTNAME); #endif */ #ifdef FEENOX_COMPILER_ARCH printf("Build architecture : %s\n", FEENOX_COMPILER_ARCH); #endif #ifdef FEENOX_COMPILER_VERSION printf("Compiler version : %s\n", FEENOX_COMPILER_VERSION); #endif #ifdef FEENOX_COMPILER_SHOW printf("Compiler expansion : %s\n", FEENOX_COMPILER_SHOW); #endif #ifdef FEENOX_COMPILER_CFLAGS printf("Compiler flags : %s\n", FEENOX_COMPILER_CFLAGS); #endif printf("GSL version : %s\n", gsl_version); #ifdef HAVE_SUNDIALS char sundials_version[BUFFER_TOKEN_SIZE]; SUNDIALSGetVersion(sundials_version, BUFFER_TOKEN_SIZE-1); #else char *sundials_version = "N/A"; #endif printf("SUNDIALS version : %s\n", sundials_version); // printf("Readline version : %s\n", // #if HAVE_READLINE // rl_library_version // #else // "N/A" // #endif // ); #ifdef HAVE_PETSC char petscversion[BUFFER_TOKEN_SIZE]; char petscarch[BUFFER_TOKEN_SIZE]; PetscGetVersion(petscversion, BUFFER_TOKEN_SIZE); printf("PETSc version : %s\n", petscversion); PetscGetArchType(petscarch, BUFFER_TOKEN_SIZE); if (strlen(petscarch) > 0) { printf("PETSc arch : %s\n", petscarch); } printf("PETSc options : %s\n", petscconfigureoptions); #else printf("PETSc version : N/A\n"); #endif #ifdef HAVE_SLEPC char slepcversion[BUFFER_TOKEN_SIZE]; SlepcGetVersion(slepcversion, BUFFER_TOKEN_SIZE); #else char *slepcversion = "N/A"; #endif printf("SLEPc version : %s\n", slepcversion); return; } feenox-1.1/src/contrib/0000755000175000017500000000000014773607300012076 500000000000000feenox-1.1/src/contrib/kdtree.c0000644000175000017500000004353114773607165013457 00000000000000/* This file is part of ``kdtree'', a library for working with kd-trees. Copyright (C) 2007-2011 John Tsiombikas Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. 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. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. */ /* single nearest neighbor search written by Tamas Nepusz */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "kdtree.h" #if defined(WIN32) || defined(__WIN32__) #include #endif #ifdef USE_LIST_NODE_ALLOCATOR #ifndef NO_PTHREADS #include #else #ifndef I_WANT_THREAD_BUGS #error "You are compiling with the fast list node allocator, with pthreads disabled! This WILL break if used from multiple threads." #endif /* I want thread bugs */ #endif /* pthread support */ #endif /* use list node allocator */ struct kdhyperrect { int dim; double *min, *max; /* minimum/maximum coords */ }; struct kdnode { double *pos; int dir; void *data; struct kdnode *left, *right; /* negative/positive side */ }; struct res_node { struct kdnode *item; double dist_sq; struct res_node *next; }; struct kdtree { int dim; struct kdnode *root; struct kdhyperrect *rect; void (*destr)(void*); }; struct kdres { struct kdtree *tree; struct res_node *rlist, *riter; int size; }; #define SQ(x) ((x) * (x)) static void clear_rec(struct kdnode *node, void (*destr)(void*)); static int insert_rec(struct kdnode **node, const double *pos, void *data, int dir, int dim); static int rlist_insert(struct res_node *list, struct kdnode *item, double dist_sq); static void clear_results(struct kdres *set); static struct kdhyperrect* hyperrect_create(int dim, const double *min, const double *max); static void hyperrect_free(struct kdhyperrect *rect); static struct kdhyperrect* hyperrect_duplicate(const struct kdhyperrect *rect); static void hyperrect_extend(struct kdhyperrect *rect, const double *pos); static double hyperrect_dist_sq(struct kdhyperrect *rect, const double *pos); #ifdef USE_LIST_NODE_ALLOCATOR static struct res_node *alloc_resnode(void); static void free_resnode(struct res_node*); #else #define alloc_resnode() malloc(sizeof(struct res_node)) #define free_resnode(n) free(n) #endif struct kdtree *kd_create(int k) { struct kdtree *tree; if(!(tree = malloc(sizeof *tree))) { return 0; } tree->dim = k; tree->root = 0; tree->destr = 0; tree->rect = 0; return tree; } void kd_free(struct kdtree *tree) { if(tree) { kd_clear(tree); free(tree); } } static void clear_rec(struct kdnode *node, void (*destr)(void*)) { if(!node) return; clear_rec(node->left, destr); clear_rec(node->right, destr); if(destr) { destr(node->data); } free(node->pos); free(node); } void kd_clear(struct kdtree *tree) { clear_rec(tree->root, tree->destr); tree->root = 0; if (tree->rect) { hyperrect_free(tree->rect); tree->rect = 0; } } void kd_data_destructor(struct kdtree *tree, void (*destr)(void*)) { tree->destr = destr; } static int insert_rec(struct kdnode **nptr, const double *pos, void *data, int dir, int dim) { int new_dir; struct kdnode *node; if(!*nptr) { if(!(node = malloc(sizeof *node))) { return -1; } if(!(node->pos = malloc(dim * sizeof *node->pos))) { free(node); return -1; } memcpy(node->pos, pos, dim * sizeof *node->pos); node->data = data; node->dir = dir; node->left = node->right = 0; *nptr = node; return 0; } node = *nptr; new_dir = (node->dir + 1) % dim; if(pos[node->dir] < node->pos[node->dir]) { return insert_rec(&(*nptr)->left, pos, data, new_dir, dim); } return insert_rec(&(*nptr)->right, pos, data, new_dir, dim); } int kd_insert(struct kdtree *tree, const double *pos, void *data) { if (insert_rec(&tree->root, pos, data, 0, tree->dim)) { return -1; } if (tree->rect == 0) { tree->rect = hyperrect_create(tree->dim, pos, pos); } else { hyperrect_extend(tree->rect, pos); } return 0; } int kd_insertf(struct kdtree *tree, const float *pos, void *data) { static double sbuf[16]; double *bptr, *buf = 0; int res, dim = tree->dim; if(dim > 16) { #ifndef NO_ALLOCA if(dim <= 256) bptr = buf = alloca(dim * sizeof *bptr); else #endif if(!(bptr = buf = malloc(dim * sizeof *bptr))) { return -1; } } else { bptr = buf = sbuf; } while(dim-- > 0) { *bptr++ = *pos++; } res = kd_insert(tree, buf, data); #ifndef NO_ALLOCA if(tree->dim > 256) #else if(tree->dim > 16) #endif free(buf); return res; } int kd_insert3(struct kdtree *tree, double x, double y, double z, void *data) { double buf[3]; buf[0] = x; buf[1] = y; buf[2] = z; return kd_insert(tree, buf, data); } int kd_insert3f(struct kdtree *tree, float x, float y, float z, void *data) { double buf[3]; buf[0] = x; buf[1] = y; buf[2] = z; return kd_insert(tree, buf, data); } static int find_nearest(struct kdnode *node, const double *pos, double range, struct res_node *list, int ordered, int dim) { double dist_sq, dx; int i, ret, added_res = 0; if(!node) return 0; dist_sq = 0; for(i=0; ipos[i] - pos[i]); } if(dist_sq <= SQ(range)) { if(rlist_insert(list, node, ordered ? dist_sq : -1.0) == -1) { return -1; } added_res = 1; } dx = pos[node->dir] - node->pos[node->dir]; ret = find_nearest(dx <= 0.0 ? node->left : node->right, pos, range, list, ordered, dim); if(ret >= 0 && fabs(dx) < range) { added_res += ret; ret = find_nearest(dx <= 0.0 ? node->right : node->left, pos, range, list, ordered, dim); } if(ret == -1) { return -1; } added_res += ret; return added_res; } #if 0 static int find_nearest_n(struct kdnode *node, const double *pos, double range, int num, struct rheap *heap, int dim) { double dist_sq, dx; int i, ret, added_res = 0; if(!node) return 0; /* if the photon is close enough, add it to the result heap */ dist_sq = 0; for(i=0; ipos[i] - pos[i]); } if(dist_sq <= range_sq) { if(heap->size >= num) { /* get furthest element */ struct res_node *maxelem = rheap_get_max(heap); /* and check if the new one is closer than that */ if(maxelem->dist_sq > dist_sq) { rheap_remove_max(heap); if(rheap_insert(heap, node, dist_sq) == -1) { return -1; } added_res = 1; range_sq = dist_sq; } } else { if(rheap_insert(heap, node, dist_sq) == -1) { return =1; } added_res = 1; } } /* find signed distance from the splitting plane */ dx = pos[node->dir] - node->pos[node->dir]; ret = find_nearest_n(dx <= 0.0 ? node->left : node->right, pos, range, num, heap, dim); if(ret >= 0 && fabs(dx) < range) { added_res += ret; ret = find_nearest_n(dx <= 0.0 ? node->right : node->left, pos, range, num, heap, dim); } } #endif static void kd_nearest_i(struct kdnode *node, const double *pos, struct kdnode **result, double *result_dist_sq, struct kdhyperrect* rect) { int dir = node->dir; int i; double dummy, dist_sq; struct kdnode *nearer_subtree, *farther_subtree; double *nearer_hyperrect_coord, *farther_hyperrect_coord; /* Decide whether to go left or right in the tree */ dummy = pos[dir] - node->pos[dir]; if (dummy <= 0) { nearer_subtree = node->left; farther_subtree = node->right; nearer_hyperrect_coord = rect->max + dir; farther_hyperrect_coord = rect->min + dir; } else { nearer_subtree = node->right; farther_subtree = node->left; nearer_hyperrect_coord = rect->min + dir; farther_hyperrect_coord = rect->max + dir; } if (nearer_subtree) { /* Slice the hyperrect to get the hyperrect of the nearer subtree */ dummy = *nearer_hyperrect_coord; *nearer_hyperrect_coord = node->pos[dir]; /* Recurse down into nearer subtree */ kd_nearest_i(nearer_subtree, pos, result, result_dist_sq, rect); /* Undo the slice */ *nearer_hyperrect_coord = dummy; } /* Check the distance of the point at the current node, compare it * with our best so far */ dist_sq = 0; for(i=0; i < rect->dim; i++) { dist_sq += SQ(node->pos[i] - pos[i]); } if (dist_sq < *result_dist_sq) { *result = node; *result_dist_sq = dist_sq; } if (farther_subtree) { /* Get the hyperrect of the farther subtree */ dummy = *farther_hyperrect_coord; *farther_hyperrect_coord = node->pos[dir]; /* Check if we have to recurse down by calculating the closest * point of the hyperrect and see if it's closer than our * minimum distance in result_dist_sq. */ if (hyperrect_dist_sq(rect, pos) < *result_dist_sq) { /* Recurse down into farther subtree */ kd_nearest_i(farther_subtree, pos, result, result_dist_sq, rect); } /* Undo the slice on the hyperrect */ *farther_hyperrect_coord = dummy; } } struct kdres *kd_nearest(struct kdtree *kd, const double *pos) { struct kdhyperrect *rect; struct kdnode *result; struct kdres *rset; double dist_sq; int i; if (!kd) return 0; if (!kd->rect) return 0; /* Allocate result set */ if(!(rset = malloc(sizeof *rset))) { return 0; } if(!(rset->rlist = alloc_resnode())) { free(rset); return 0; } rset->rlist->next = 0; rset->tree = kd; /* Duplicate the bounding hyperrectangle, we will work on the copy */ if (!(rect = hyperrect_duplicate(kd->rect))) { kd_res_free(rset); return 0; } /* Our first guesstimate is the root node */ result = kd->root; dist_sq = 0; for (i = 0; i < kd->dim; i++) dist_sq += SQ(result->pos[i] - pos[i]); /* Search for the nearest neighbour recursively */ kd_nearest_i(kd->root, pos, &result, &dist_sq, rect); /* Free the copy of the hyperrect */ hyperrect_free(rect); /* Store the result */ if (result) { if (rlist_insert(rset->rlist, result, -1.0) == -1) { kd_res_free(rset); return 0; } rset->size = 1; kd_res_rewind(rset); return rset; } else { kd_res_free(rset); return 0; } } struct kdres *kd_nearestf(struct kdtree *tree, const float *pos) { static double sbuf[16]; double *bptr, *buf = 0; int dim = tree->dim; struct kdres *res; if(dim > 16) { #ifndef NO_ALLOCA if(dim <= 256) bptr = buf = alloca(dim * sizeof *bptr); else #endif if(!(bptr = buf = malloc(dim * sizeof *bptr))) { return 0; } } else { bptr = buf = sbuf; } while(dim-- > 0) { *bptr++ = *pos++; } res = kd_nearest(tree, buf); #ifndef NO_ALLOCA if(tree->dim > 256) #else if(tree->dim > 16) #endif free(buf); return res; } struct kdres *kd_nearest3(struct kdtree *tree, double x, double y, double z) { double pos[3]; pos[0] = x; pos[1] = y; pos[2] = z; return kd_nearest(tree, pos); } struct kdres *kd_nearest3f(struct kdtree *tree, float x, float y, float z) { double pos[3]; pos[0] = x; pos[1] = y; pos[2] = z; return kd_nearest(tree, pos); } /* ---- nearest N search ---- */ /* static kdres *kd_nearest_n(struct kdtree *kd, const double *pos, int num) { int ret; struct kdres *rset; if(!(rset = malloc(sizeof *rset))) { return 0; } if(!(rset->rlist = alloc_resnode())) { free(rset); return 0; } rset->rlist->next = 0; rset->tree = kd; if((ret = find_nearest_n(kd->root, pos, range, num, rset->rlist, kd->dim)) == -1) { kd_res_free(rset); return 0; } rset->size = ret; kd_res_rewind(rset); return rset; }*/ struct kdres *kd_nearest_range(struct kdtree *kd, const double *pos, double range) { int ret; struct kdres *rset; if(!(rset = malloc(sizeof *rset))) { return 0; } if(!(rset->rlist = alloc_resnode())) { free(rset); return 0; } rset->rlist->next = 0; rset->tree = kd; if((ret = find_nearest(kd->root, pos, range, rset->rlist, 0, kd->dim)) == -1) { kd_res_free(rset); return 0; } rset->size = ret; kd_res_rewind(rset); return rset; } struct kdres *kd_nearest_rangef(struct kdtree *kd, const float *pos, float range) { static double sbuf[16]; double *bptr, *buf = 0; int dim = kd->dim; struct kdres *res; if(dim > 16) { #ifndef NO_ALLOCA if(dim <= 256) bptr = buf = alloca(dim * sizeof *bptr); else #endif if(!(bptr = buf = malloc(dim * sizeof *bptr))) { return 0; } } else { bptr = buf = sbuf; } while(dim-- > 0) { *bptr++ = *pos++; } res = kd_nearest_range(kd, buf, range); #ifndef NO_ALLOCA if(kd->dim > 256) #else if(kd->dim > 16) #endif free(buf); return res; } struct kdres *kd_nearest_range3(struct kdtree *tree, double x, double y, double z, double range) { double buf[3]; buf[0] = x; buf[1] = y; buf[2] = z; return kd_nearest_range(tree, buf, range); } struct kdres *kd_nearest_range3f(struct kdtree *tree, float x, float y, float z, float range) { double buf[3]; buf[0] = x; buf[1] = y; buf[2] = z; return kd_nearest_range(tree, buf, range); } void kd_res_free(struct kdres *rset) { clear_results(rset); free_resnode(rset->rlist); free(rset); } int kd_res_size(struct kdres *set) { return (set->size); } void kd_res_rewind(struct kdres *rset) { rset->riter = rset->rlist->next; } int kd_res_end(struct kdres *rset) { return rset->riter == 0; } int kd_res_next(struct kdres *rset) { rset->riter = rset->riter->next; return rset->riter != 0; } void *kd_res_item(struct kdres *rset, double *pos) { if(rset->riter) { if(pos) { memcpy(pos, rset->riter->item->pos, rset->tree->dim * sizeof *pos); } return rset->riter->item->data; } return 0; } void *kd_res_itemf(struct kdres *rset, float *pos) { if(rset->riter) { if(pos) { int i; for(i=0; itree->dim; i++) { pos[i] = rset->riter->item->pos[i]; } } return rset->riter->item->data; } return 0; } void *kd_res_item3(struct kdres *rset, double *x, double *y, double *z) { if(rset->riter) { if(x) *x = rset->riter->item->pos[0]; if(y) *y = rset->riter->item->pos[1]; if(z) *z = rset->riter->item->pos[2]; return rset->riter->item->data; } return 0; } void *kd_res_item3f(struct kdres *rset, float *x, float *y, float *z) { if(rset->riter) { if(x) *x = rset->riter->item->pos[0]; if(y) *y = rset->riter->item->pos[1]; if(z) *z = rset->riter->item->pos[2]; return rset->riter->item->data; } return 0; } void *kd_res_item_data(struct kdres *set) { return kd_res_item(set, 0); } /* ---- hyperrectangle helpers ---- */ static struct kdhyperrect* hyperrect_create(int dim, const double *min, const double *max) { size_t size = dim * sizeof(double); struct kdhyperrect* rect = 0; if (!(rect = malloc(sizeof(struct kdhyperrect)))) { return 0; } rect->dim = dim; if (!(rect->min = malloc(size))) { free(rect); return 0; } if (!(rect->max = malloc(size))) { free(rect->min); free(rect); return 0; } memcpy(rect->min, min, size); memcpy(rect->max, max, size); return rect; } static void hyperrect_free(struct kdhyperrect *rect) { free(rect->min); free(rect->max); free(rect); } static struct kdhyperrect* hyperrect_duplicate(const struct kdhyperrect *rect) { return hyperrect_create(rect->dim, rect->min, rect->max); } static void hyperrect_extend(struct kdhyperrect *rect, const double *pos) { int i; for (i=0; i < rect->dim; i++) { if (pos[i] < rect->min[i]) { rect->min[i] = pos[i]; } if (pos[i] > rect->max[i]) { rect->max[i] = pos[i]; } } } static double hyperrect_dist_sq(struct kdhyperrect *rect, const double *pos) { int i; double result = 0; for (i=0; i < rect->dim; i++) { if (pos[i] < rect->min[i]) { result += SQ(rect->min[i] - pos[i]); } else if (pos[i] > rect->max[i]) { result += SQ(rect->max[i] - pos[i]); } } return result; } /* ---- static helpers ---- */ #ifdef USE_LIST_NODE_ALLOCATOR /* special list node allocators. */ static struct res_node *free_nodes; #ifndef NO_PTHREADS static pthread_mutex_t alloc_mutex = PTHREAD_MUTEX_INITIALIZER; #endif static struct res_node *alloc_resnode(void) { struct res_node *node; #ifndef NO_PTHREADS pthread_mutex_lock(&alloc_mutex); #endif if(!free_nodes) { node = malloc(sizeof *node); } else { node = free_nodes; free_nodes = free_nodes->next; node->next = 0; } #ifndef NO_PTHREADS pthread_mutex_unlock(&alloc_mutex); #endif return node; } static void free_resnode(struct res_node *node) { #ifndef NO_PTHREADS pthread_mutex_lock(&alloc_mutex); #endif node->next = free_nodes; free_nodes = node; #ifndef NO_PTHREADS pthread_mutex_unlock(&alloc_mutex); #endif } #endif /* list node allocator or not */ /* inserts the item. if dist_sq is >= 0, then do an ordered insert */ /* TODO make the ordering code use heapsort */ static int rlist_insert(struct res_node *list, struct kdnode *item, double dist_sq) { struct res_node *rnode; if(!(rnode = alloc_resnode())) { return -1; } rnode->item = item; rnode->dist_sq = dist_sq; if(dist_sq >= 0.0) { while(list->next && list->next->dist_sq < dist_sq) { list = list->next; } } rnode->next = list->next; list->next = rnode; return 0; } static void clear_results(struct kdres *rset) { struct res_node *tmp, *node = rset->rlist->next; while(node) { tmp = node; node = node->next; free_resnode(tmp); } rset->rlist->next = 0; } feenox-1.1/src/contrib/utlist.h0000644000175000017500000023742214773607165013536 00000000000000/* Copyright (c) 2007-2022, Troy D. Hanson https://troydhanson.github.io/uthash/ 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. 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. */ #ifndef UTLIST_H #define UTLIST_H #define UTLIST_VERSION 2.3.0 #include /* * This file contains macros to manipulate singly and doubly-linked lists. * * 1. LL_ macros: singly-linked lists. * 2. DL_ macros: doubly-linked lists. * 3. CDL_ macros: circular doubly-linked lists. * * To use singly-linked lists, your structure must have a "next" pointer. * To use doubly-linked lists, your structure must "prev" and "next" pointers. * Either way, the pointer to the head of the list must be initialized to NULL. * * ----------------.EXAMPLE ------------------------- * struct item { * int id; * struct item *prev, *next; * } * * struct item *list = NULL: * * int main() { * struct item *item; * ... allocate and populate item ... * DL_APPEND(list, item); * } * -------------------------------------------------- * * For doubly-linked lists, the append and delete macros are O(1) * For singly-linked lists, append and delete are O(n) but prepend is O(1) * The sort macro is O(n log(n)) for all types of single/double/circular lists. */ /* These macros use decltype or the earlier __typeof GNU extension. As decltype is only available in newer compilers (VS2010 or gcc 4.3+ when compiling c++ source) this code uses whatever method is needed or, for VS2008 where neither is available, uses casting workarounds. */ #if !defined(LDECLTYPE) && !defined(NO_DECLTYPE) #if defined(_MSC_VER) /* MS compiler */ #if _MSC_VER >= 1600 && defined(__cplusplus) /* VS2010 or newer in C++ mode */ #define LDECLTYPE(x) decltype(x) #else /* VS2008 or older (or VS2010 in C mode) */ #define NO_DECLTYPE #endif #elif defined(__MCST__) /* Elbrus C Compiler */ #define LDECLTYPE(x) __typeof(x) #elif defined(__BORLANDC__) || defined(__ICCARM__) || defined(__LCC__) || defined(__WATCOMC__) #define NO_DECLTYPE #else /* GNU, Sun and other compilers */ #define LDECLTYPE(x) __typeof(x) #endif #endif /* for VS2008 we use some workarounds to get around the lack of decltype, * namely, we always reassign our tmp variable to the list head if we need * to dereference its prev/next pointers, and save/restore the real head.*/ #ifdef NO_DECLTYPE #define IF_NO_DECLTYPE(x) x #define LDECLTYPE(x) char* #define UTLIST_SV(elt,list) _tmp = (char*)(list); {char **_alias = (char**)&(list); *_alias = (elt); } #define UTLIST_NEXT(elt,list,next) ((char*)((list)->next)) #define UTLIST_NEXTASGN(elt,list,to,next) { char **_alias = (char**)&((list)->next); *_alias=(char*)(to); } /* #define UTLIST_PREV(elt,list,prev) ((char*)((list)->prev)) */ #define UTLIST_PREVASGN(elt,list,to,prev) { char **_alias = (char**)&((list)->prev); *_alias=(char*)(to); } #define UTLIST_RS(list) { char **_alias = (char**)&(list); *_alias=_tmp; } #define UTLIST_CASTASGN(a,b) { char **_alias = (char**)&(a); *_alias=(char*)(b); } #else #define IF_NO_DECLTYPE(x) #define UTLIST_SV(elt,list) #define UTLIST_NEXT(elt,list,next) ((elt)->next) #define UTLIST_NEXTASGN(elt,list,to,next) ((elt)->next)=(to) /* #define UTLIST_PREV(elt,list,prev) ((elt)->prev) */ #define UTLIST_PREVASGN(elt,list,to,prev) ((elt)->prev)=(to) #define UTLIST_RS(list) #define UTLIST_CASTASGN(a,b) (a)=(b) #endif /****************************************************************************** * The sort macro is an adaptation of Simon Tatham's O(n log(n)) mergesort * * Unwieldy variable names used here to avoid shadowing passed-in variables. * *****************************************************************************/ #define LL_SORT(list, cmp) \ LL_SORT2(list, cmp, next) #define LL_SORT2(list, cmp, next) \ do { \ LDECLTYPE(list) _ls_p; \ LDECLTYPE(list) _ls_q; \ LDECLTYPE(list) _ls_e; \ LDECLTYPE(list) _ls_tail; \ IF_NO_DECLTYPE(LDECLTYPE(list) _tmp;) \ int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \ if (list) { \ _ls_insize = 1; \ _ls_looping = 1; \ while (_ls_looping) { \ UTLIST_CASTASGN(_ls_p,list); \ (list) = NULL; \ _ls_tail = NULL; \ _ls_nmerges = 0; \ while (_ls_p) { \ _ls_nmerges++; \ _ls_q = _ls_p; \ _ls_psize = 0; \ for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \ _ls_psize++; \ UTLIST_SV(_ls_q,list); _ls_q = UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); \ if (!_ls_q) break; \ } \ _ls_qsize = _ls_insize; \ while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \ if (_ls_psize == 0) { \ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \ } else if (_ls_qsize == 0 || !_ls_q) { \ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \ } else if (cmp(_ls_p,_ls_q) <= 0) { \ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \ } else { \ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \ } \ if (_ls_tail) { \ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,_ls_e,next); UTLIST_RS(list); \ } else { \ UTLIST_CASTASGN(list,_ls_e); \ } \ _ls_tail = _ls_e; \ } \ _ls_p = _ls_q; \ } \ if (_ls_tail) { \ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,NULL,next); UTLIST_RS(list); \ } \ if (_ls_nmerges <= 1) { \ _ls_looping=0; \ } \ _ls_insize *= 2; \ } \ } \ } while (0) #define DL_SORT(list, cmp) \ DL_SORT2(list, cmp, prev, next) #define DL_SORT2(list, cmp, prev, next) \ do { \ LDECLTYPE(list) _ls_p; \ LDECLTYPE(list) _ls_q; \ LDECLTYPE(list) _ls_e; \ LDECLTYPE(list) _ls_tail; \ IF_NO_DECLTYPE(LDECLTYPE(list) _tmp;) \ int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \ if (list) { \ _ls_insize = 1; \ _ls_looping = 1; \ while (_ls_looping) { \ UTLIST_CASTASGN(_ls_p,list); \ (list) = NULL; \ _ls_tail = NULL; \ _ls_nmerges = 0; \ while (_ls_p) { \ _ls_nmerges++; \ _ls_q = _ls_p; \ _ls_psize = 0; \ for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \ _ls_psize++; \ UTLIST_SV(_ls_q,list); _ls_q = UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); \ if (!_ls_q) break; \ } \ _ls_qsize = _ls_insize; \ while ((_ls_psize > 0) || ((_ls_qsize > 0) && _ls_q)) { \ if (_ls_psize == 0) { \ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \ } else if ((_ls_qsize == 0) || (!_ls_q)) { \ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \ } else if (cmp(_ls_p,_ls_q) <= 0) { \ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \ } else { \ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \ } \ if (_ls_tail) { \ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,_ls_e,next); UTLIST_RS(list); \ } else { \ UTLIST_CASTASGN(list,_ls_e); \ } \ UTLIST_SV(_ls_e,list); UTLIST_PREVASGN(_ls_e,list,_ls_tail,prev); UTLIST_RS(list); \ _ls_tail = _ls_e; \ } \ _ls_p = _ls_q; \ } \ UTLIST_CASTASGN((list)->prev, _ls_tail); \ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,NULL,next); UTLIST_RS(list); \ if (_ls_nmerges <= 1) { \ _ls_looping=0; \ } \ _ls_insize *= 2; \ } \ } \ } while (0) #define CDL_SORT(list, cmp) \ CDL_SORT2(list, cmp, prev, next) #define CDL_SORT2(list, cmp, prev, next) \ do { \ LDECLTYPE(list) _ls_p; \ LDECLTYPE(list) _ls_q; \ LDECLTYPE(list) _ls_e; \ LDECLTYPE(list) _ls_tail; \ LDECLTYPE(list) _ls_oldhead; \ LDECLTYPE(list) _tmp; \ int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \ if (list) { \ _ls_insize = 1; \ _ls_looping = 1; \ while (_ls_looping) { \ UTLIST_CASTASGN(_ls_p,list); \ UTLIST_CASTASGN(_ls_oldhead,list); \ (list) = NULL; \ _ls_tail = NULL; \ _ls_nmerges = 0; \ while (_ls_p) { \ _ls_nmerges++; \ _ls_q = _ls_p; \ _ls_psize = 0; \ for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \ _ls_psize++; \ UTLIST_SV(_ls_q,list); \ if (UTLIST_NEXT(_ls_q,list,next) == _ls_oldhead) { \ _ls_q = NULL; \ } else { \ _ls_q = UTLIST_NEXT(_ls_q,list,next); \ } \ UTLIST_RS(list); \ if (!_ls_q) break; \ } \ _ls_qsize = _ls_insize; \ while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \ if (_ls_psize == 0) { \ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \ if (_ls_q == _ls_oldhead) { _ls_q = NULL; } \ } else if (_ls_qsize == 0 || !_ls_q) { \ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \ if (_ls_p == _ls_oldhead) { _ls_p = NULL; } \ } else if (cmp(_ls_p,_ls_q) <= 0) { \ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \ if (_ls_p == _ls_oldhead) { _ls_p = NULL; } \ } else { \ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \ if (_ls_q == _ls_oldhead) { _ls_q = NULL; } \ } \ if (_ls_tail) { \ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,_ls_e,next); UTLIST_RS(list); \ } else { \ UTLIST_CASTASGN(list,_ls_e); \ } \ UTLIST_SV(_ls_e,list); UTLIST_PREVASGN(_ls_e,list,_ls_tail,prev); UTLIST_RS(list); \ _ls_tail = _ls_e; \ } \ _ls_p = _ls_q; \ } \ UTLIST_CASTASGN((list)->prev,_ls_tail); \ UTLIST_CASTASGN(_tmp,list); \ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,_tmp,next); UTLIST_RS(list); \ if (_ls_nmerges <= 1) { \ _ls_looping=0; \ } \ _ls_insize *= 2; \ } \ } \ } while (0) /****************************************************************************** * singly linked list macros (non-circular) * *****************************************************************************/ #define LL_PREPEND(head,add) \ LL_PREPEND2(head,add,next) #define LL_PREPEND2(head,add,next) \ do { \ (add)->next = (head); \ (head) = (add); \ } while (0) #define LL_CONCAT(head1,head2) \ LL_CONCAT2(head1,head2,next) #define LL_CONCAT2(head1,head2,next) \ do { \ LDECLTYPE(head1) _tmp; \ if (head1) { \ _tmp = (head1); \ while (_tmp->next) { _tmp = _tmp->next; } \ _tmp->next=(head2); \ } else { \ (head1)=(head2); \ } \ } while (0) #define LL_APPEND(head,add) \ LL_APPEND2(head,add,next) #define LL_APPEND2(head,add,next) \ do { \ LDECLTYPE(head) _tmp; \ (add)->next=NULL; \ if (head) { \ _tmp = (head); \ while (_tmp->next) { _tmp = _tmp->next; } \ _tmp->next=(add); \ } else { \ (head)=(add); \ } \ } while (0) #define LL_INSERT_INORDER(head,add,cmp) \ LL_INSERT_INORDER2(head,add,cmp,next) #define LL_INSERT_INORDER2(head,add,cmp,next) \ do { \ LDECLTYPE(head) _tmp; \ if (head) { \ LL_LOWER_BOUND2(head, _tmp, add, cmp, next); \ LL_APPEND_ELEM2(head, _tmp, add, next); \ } else { \ (head) = (add); \ (head)->next = NULL; \ } \ } while (0) #define LL_LOWER_BOUND(head,elt,like,cmp) \ LL_LOWER_BOUND2(head,elt,like,cmp,next) #define LL_LOWER_BOUND2(head,elt,like,cmp,next) \ do { \ if ((head) == NULL || (cmp(head, like)) >= 0) { \ (elt) = NULL; \ } else { \ for ((elt) = (head); (elt)->next != NULL; (elt) = (elt)->next) { \ if (cmp((elt)->next, like) >= 0) { \ break; \ } \ } \ } \ } while (0) #define LL_DELETE(head,del) \ LL_DELETE2(head,del,next) #define LL_DELETE2(head,del,next) \ do { \ LDECLTYPE(head) _tmp; \ if ((head) == (del)) { \ (head)=(head)->next; \ } else { \ _tmp = (head); \ while (_tmp->next && (_tmp->next != (del))) { \ _tmp = _tmp->next; \ } \ if (_tmp->next) { \ _tmp->next = (del)->next; \ } \ } \ } while (0) #define LL_COUNT(head,el,counter) \ LL_COUNT2(head,el,counter,next) \ #define LL_COUNT2(head,el,counter,next) \ do { \ (counter) = 0; \ LL_FOREACH2(head,el,next) { ++(counter); } \ } while (0) #define LL_FOREACH(head,el) \ LL_FOREACH2(head,el,next) #define LL_FOREACH2(head,el,next) \ for ((el) = (head); el; (el) = (el)->next) #define LL_FOREACH_SAFE(head,el,tmp) \ LL_FOREACH_SAFE2(head,el,tmp,next) #define LL_FOREACH_SAFE2(head,el,tmp,next) \ for ((el) = (head); (el) && ((tmp) = (el)->next, 1); (el) = (tmp)) #define LL_SEARCH_SCALAR(head,out,field,val) \ LL_SEARCH_SCALAR2(head,out,field,val,next) #define LL_SEARCH_SCALAR2(head,out,field,val,next) \ do { \ LL_FOREACH2(head,out,next) { \ if ((out)->field == (val)) break; \ } \ } while (0) #define LL_SEARCH(head,out,elt,cmp) \ LL_SEARCH2(head,out,elt,cmp,next) #define LL_SEARCH2(head,out,elt,cmp,next) \ do { \ LL_FOREACH2(head,out,next) { \ if ((cmp(out,elt))==0) break; \ } \ } while (0) #define LL_REPLACE_ELEM2(head, el, add, next) \ do { \ LDECLTYPE(head) _tmp; \ assert((head) != NULL); \ assert((el) != NULL); \ assert((add) != NULL); \ (add)->next = (el)->next; \ if ((head) == (el)) { \ (head) = (add); \ } else { \ _tmp = (head); \ while (_tmp->next && (_tmp->next != (el))) { \ _tmp = _tmp->next; \ } \ if (_tmp->next) { \ _tmp->next = (add); \ } \ } \ } while (0) #define LL_REPLACE_ELEM(head, el, add) \ LL_REPLACE_ELEM2(head, el, add, next) #define LL_PREPEND_ELEM2(head, el, add, next) \ do { \ if (el) { \ LDECLTYPE(head) _tmp; \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el); \ if ((head) == (el)) { \ (head) = (add); \ } else { \ _tmp = (head); \ while (_tmp->next && (_tmp->next != (el))) { \ _tmp = _tmp->next; \ } \ if (_tmp->next) { \ _tmp->next = (add); \ } \ } \ } else { \ LL_APPEND2(head, add, next); \ } \ } while (0) \ #define LL_PREPEND_ELEM(head, el, add) \ LL_PREPEND_ELEM2(head, el, add, next) #define LL_APPEND_ELEM2(head, el, add, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el)->next; \ (el)->next = (add); \ } else { \ LL_PREPEND2(head, add, next); \ } \ } while (0) \ #define LL_APPEND_ELEM(head, el, add) \ LL_APPEND_ELEM2(head, el, add, next) #ifdef NO_DECLTYPE /* Here are VS2008 / NO_DECLTYPE replacements for a few functions */ #undef LL_CONCAT2 #define LL_CONCAT2(head1,head2,next) \ do { \ char *_tmp; \ if (head1) { \ _tmp = (char*)(head1); \ while ((head1)->next) { (head1) = (head1)->next; } \ (head1)->next = (head2); \ UTLIST_RS(head1); \ } else { \ (head1)=(head2); \ } \ } while (0) #undef LL_APPEND2 #define LL_APPEND2(head,add,next) \ do { \ if (head) { \ (add)->next = head; /* use add->next as a temp variable */ \ while ((add)->next->next) { (add)->next = (add)->next->next; } \ (add)->next->next=(add); \ } else { \ (head)=(add); \ } \ (add)->next=NULL; \ } while (0) #undef LL_INSERT_INORDER2 #define LL_INSERT_INORDER2(head,add,cmp,next) \ do { \ if ((head) == NULL || (cmp(head, add)) >= 0) { \ (add)->next = (head); \ (head) = (add); \ } else { \ char *_tmp = (char*)(head); \ while ((head)->next != NULL && (cmp((head)->next, add)) < 0) { \ (head) = (head)->next; \ } \ (add)->next = (head)->next; \ (head)->next = (add); \ UTLIST_RS(head); \ } \ } while (0) #undef LL_DELETE2 #define LL_DELETE2(head,del,next) \ do { \ if ((head) == (del)) { \ (head)=(head)->next; \ } else { \ char *_tmp = (char*)(head); \ while ((head)->next && ((head)->next != (del))) { \ (head) = (head)->next; \ } \ if ((head)->next) { \ (head)->next = ((del)->next); \ } \ UTLIST_RS(head); \ } \ } while (0) #undef LL_REPLACE_ELEM2 #define LL_REPLACE_ELEM2(head, el, add, next) \ do { \ assert((head) != NULL); \ assert((el) != NULL); \ assert((add) != NULL); \ if ((head) == (el)) { \ (head) = (add); \ } else { \ (add)->next = head; \ while ((add)->next->next && ((add)->next->next != (el))) { \ (add)->next = (add)->next->next; \ } \ if ((add)->next->next) { \ (add)->next->next = (add); \ } \ } \ (add)->next = (el)->next; \ } while (0) #undef LL_PREPEND_ELEM2 #define LL_PREPEND_ELEM2(head, el, add, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ if ((head) == (el)) { \ (head) = (add); \ } else { \ (add)->next = (head); \ while ((add)->next->next && ((add)->next->next != (el))) { \ (add)->next = (add)->next->next; \ } \ if ((add)->next->next) { \ (add)->next->next = (add); \ } \ } \ (add)->next = (el); \ } else { \ LL_APPEND2(head, add, next); \ } \ } while (0) \ #endif /* NO_DECLTYPE */ /****************************************************************************** * doubly linked list macros (non-circular) * *****************************************************************************/ #define DL_PREPEND(head,add) \ DL_PREPEND2(head,add,prev,next) #define DL_PREPEND2(head,add,prev,next) \ do { \ (add)->next = (head); \ if (head) { \ (add)->prev = (head)->prev; \ (head)->prev = (add); \ } else { \ (add)->prev = (add); \ } \ (head) = (add); \ } while (0) #define DL_APPEND(head,add) \ DL_APPEND2(head,add,prev,next) #define DL_APPEND2(head,add,prev,next) \ do { \ if (head) { \ (add)->prev = (head)->prev; \ (head)->prev->next = (add); \ (head)->prev = (add); \ (add)->next = NULL; \ } else { \ (head)=(add); \ (head)->prev = (head); \ (head)->next = NULL; \ } \ } while (0) #define DL_INSERT_INORDER(head,add,cmp) \ DL_INSERT_INORDER2(head,add,cmp,prev,next) #define DL_INSERT_INORDER2(head,add,cmp,prev,next) \ do { \ LDECLTYPE(head) _tmp; \ if (head) { \ DL_LOWER_BOUND2(head, _tmp, add, cmp, next); \ DL_APPEND_ELEM2(head, _tmp, add, prev, next); \ } else { \ (head) = (add); \ (head)->prev = (head); \ (head)->next = NULL; \ } \ } while (0) #define DL_LOWER_BOUND(head,elt,like,cmp) \ DL_LOWER_BOUND2(head,elt,like,cmp,next) #define DL_LOWER_BOUND2(head,elt,like,cmp,next) \ do { \ if ((head) == NULL || (cmp(head, like)) >= 0) { \ (elt) = NULL; \ } else { \ for ((elt) = (head); (elt)->next != NULL; (elt) = (elt)->next) { \ if ((cmp((elt)->next, like)) >= 0) { \ break; \ } \ } \ } \ } while (0) #define DL_CONCAT(head1,head2) \ DL_CONCAT2(head1,head2,prev,next) #define DL_CONCAT2(head1,head2,prev,next) \ do { \ LDECLTYPE(head1) _tmp; \ if (head2) { \ if (head1) { \ UTLIST_CASTASGN(_tmp, (head2)->prev); \ (head2)->prev = (head1)->prev; \ (head1)->prev->next = (head2); \ UTLIST_CASTASGN((head1)->prev, _tmp); \ } else { \ (head1)=(head2); \ } \ } \ } while (0) #define DL_DELETE(head,del) \ DL_DELETE2(head,del,prev,next) #define DL_DELETE2(head,del,prev,next) \ do { \ assert((head) != NULL); \ assert((del)->prev != NULL); \ if ((del)->prev == (del)) { \ (head)=NULL; \ } else if ((del) == (head)) { \ assert((del)->next != NULL); \ (del)->next->prev = (del)->prev; \ (head) = (del)->next; \ } else { \ (del)->prev->next = (del)->next; \ if ((del)->next) { \ (del)->next->prev = (del)->prev; \ } else { \ (head)->prev = (del)->prev; \ } \ } \ } while (0) #define DL_COUNT(head,el,counter) \ DL_COUNT2(head,el,counter,next) \ #define DL_COUNT2(head,el,counter,next) \ do { \ (counter) = 0; \ DL_FOREACH2(head,el,next) { ++(counter); } \ } while (0) #define DL_FOREACH(head,el) \ DL_FOREACH2(head,el,next) #define DL_FOREACH2(head,el,next) \ for ((el) = (head); el; (el) = (el)->next) /* this version is safe for deleting the elements during iteration */ #define DL_FOREACH_SAFE(head,el,tmp) \ DL_FOREACH_SAFE2(head,el,tmp,next) #define DL_FOREACH_SAFE2(head,el,tmp,next) \ for ((el) = (head); (el) && ((tmp) = (el)->next, 1); (el) = (tmp)) /* these are identical to their singly-linked list counterparts */ #define DL_SEARCH_SCALAR LL_SEARCH_SCALAR #define DL_SEARCH LL_SEARCH #define DL_SEARCH_SCALAR2 LL_SEARCH_SCALAR2 #define DL_SEARCH2 LL_SEARCH2 #define DL_REPLACE_ELEM2(head, el, add, prev, next) \ do { \ assert((head) != NULL); \ assert((el) != NULL); \ assert((add) != NULL); \ if ((head) == (el)) { \ (head) = (add); \ (add)->next = (el)->next; \ if ((el)->next == NULL) { \ (add)->prev = (add); \ } else { \ (add)->prev = (el)->prev; \ (add)->next->prev = (add); \ } \ } else { \ (add)->next = (el)->next; \ (add)->prev = (el)->prev; \ (add)->prev->next = (add); \ if ((el)->next == NULL) { \ (head)->prev = (add); \ } else { \ (add)->next->prev = (add); \ } \ } \ } while (0) #define DL_REPLACE_ELEM(head, el, add) \ DL_REPLACE_ELEM2(head, el, add, prev, next) #define DL_PREPEND_ELEM2(head, el, add, prev, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el); \ (add)->prev = (el)->prev; \ (el)->prev = (add); \ if ((head) == (el)) { \ (head) = (add); \ } else { \ (add)->prev->next = (add); \ } \ } else { \ DL_APPEND2(head, add, prev, next); \ } \ } while (0) \ #define DL_PREPEND_ELEM(head, el, add) \ DL_PREPEND_ELEM2(head, el, add, prev, next) #define DL_APPEND_ELEM2(head, el, add, prev, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el)->next; \ (add)->prev = (el); \ (el)->next = (add); \ if ((add)->next) { \ (add)->next->prev = (add); \ } else { \ (head)->prev = (add); \ } \ } else { \ DL_PREPEND2(head, add, prev, next); \ } \ } while (0) \ #define DL_APPEND_ELEM(head, el, add) \ DL_APPEND_ELEM2(head, el, add, prev, next) #ifdef NO_DECLTYPE /* Here are VS2008 / NO_DECLTYPE replacements for a few functions */ #undef DL_INSERT_INORDER2 #define DL_INSERT_INORDER2(head,add,cmp,prev,next) \ do { \ if ((head) == NULL) { \ (add)->prev = (add); \ (add)->next = NULL; \ (head) = (add); \ } else if ((cmp(head, add)) >= 0) { \ (add)->prev = (head)->prev; \ (add)->next = (head); \ (head)->prev = (add); \ (head) = (add); \ } else { \ char *_tmp = (char*)(head); \ while ((head)->next && (cmp((head)->next, add)) < 0) { \ (head) = (head)->next; \ } \ (add)->prev = (head); \ (add)->next = (head)->next; \ (head)->next = (add); \ UTLIST_RS(head); \ if ((add)->next) { \ (add)->next->prev = (add); \ } else { \ (head)->prev = (add); \ } \ } \ } while (0) #endif /* NO_DECLTYPE */ /****************************************************************************** * circular doubly linked list macros * *****************************************************************************/ #define CDL_APPEND(head,add) \ CDL_APPEND2(head,add,prev,next) #define CDL_APPEND2(head,add,prev,next) \ do { \ if (head) { \ (add)->prev = (head)->prev; \ (add)->next = (head); \ (head)->prev = (add); \ (add)->prev->next = (add); \ } else { \ (add)->prev = (add); \ (add)->next = (add); \ (head) = (add); \ } \ } while (0) #define CDL_PREPEND(head,add) \ CDL_PREPEND2(head,add,prev,next) #define CDL_PREPEND2(head,add,prev,next) \ do { \ if (head) { \ (add)->prev = (head)->prev; \ (add)->next = (head); \ (head)->prev = (add); \ (add)->prev->next = (add); \ } else { \ (add)->prev = (add); \ (add)->next = (add); \ } \ (head) = (add); \ } while (0) #define CDL_INSERT_INORDER(head,add,cmp) \ CDL_INSERT_INORDER2(head,add,cmp,prev,next) #define CDL_INSERT_INORDER2(head,add,cmp,prev,next) \ do { \ LDECLTYPE(head) _tmp; \ if (head) { \ CDL_LOWER_BOUND2(head, _tmp, add, cmp, next); \ CDL_APPEND_ELEM2(head, _tmp, add, prev, next); \ } else { \ (head) = (add); \ (head)->next = (head); \ (head)->prev = (head); \ } \ } while (0) #define CDL_LOWER_BOUND(head,elt,like,cmp) \ CDL_LOWER_BOUND2(head,elt,like,cmp,next) #define CDL_LOWER_BOUND2(head,elt,like,cmp,next) \ do { \ if ((head) == NULL || (cmp(head, like)) >= 0) { \ (elt) = NULL; \ } else { \ for ((elt) = (head); (elt)->next != (head); (elt) = (elt)->next) { \ if ((cmp((elt)->next, like)) >= 0) { \ break; \ } \ } \ } \ } while (0) #define CDL_DELETE(head,del) \ CDL_DELETE2(head,del,prev,next) #define CDL_DELETE2(head,del,prev,next) \ do { \ if (((head)==(del)) && ((head)->next == (head))) { \ (head) = NULL; \ } else { \ (del)->next->prev = (del)->prev; \ (del)->prev->next = (del)->next; \ if ((del) == (head)) (head)=(del)->next; \ } \ } while (0) #define CDL_COUNT(head,el,counter) \ CDL_COUNT2(head,el,counter,next) \ #define CDL_COUNT2(head, el, counter,next) \ do { \ (counter) = 0; \ CDL_FOREACH2(head,el,next) { ++(counter); } \ } while (0) #define CDL_FOREACH(head,el) \ CDL_FOREACH2(head,el,next) #define CDL_FOREACH2(head,el,next) \ for ((el)=(head);el;(el)=(((el)->next==(head)) ? NULL : (el)->next)) #define CDL_FOREACH_SAFE(head,el,tmp1,tmp2) \ CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next) #define CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next) \ for ((el) = (head), (tmp1) = (head) ? (head)->prev : NULL; \ (el) && ((tmp2) = (el)->next, 1); \ (el) = ((el) == (tmp1) ? NULL : (tmp2))) #define CDL_SEARCH_SCALAR(head,out,field,val) \ CDL_SEARCH_SCALAR2(head,out,field,val,next) #define CDL_SEARCH_SCALAR2(head,out,field,val,next) \ do { \ CDL_FOREACH2(head,out,next) { \ if ((out)->field == (val)) break; \ } \ } while (0) #define CDL_SEARCH(head,out,elt,cmp) \ CDL_SEARCH2(head,out,elt,cmp,next) #define CDL_SEARCH2(head,out,elt,cmp,next) \ do { \ CDL_FOREACH2(head,out,next) { \ if ((cmp(out,elt))==0) break; \ } \ } while (0) #define CDL_REPLACE_ELEM2(head, el, add, prev, next) \ do { \ assert((head) != NULL); \ assert((el) != NULL); \ assert((add) != NULL); \ if ((el)->next == (el)) { \ (add)->next = (add); \ (add)->prev = (add); \ (head) = (add); \ } else { \ (add)->next = (el)->next; \ (add)->prev = (el)->prev; \ (add)->next->prev = (add); \ (add)->prev->next = (add); \ if ((head) == (el)) { \ (head) = (add); \ } \ } \ } while (0) #define CDL_REPLACE_ELEM(head, el, add) \ CDL_REPLACE_ELEM2(head, el, add, prev, next) #define CDL_PREPEND_ELEM2(head, el, add, prev, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el); \ (add)->prev = (el)->prev; \ (el)->prev = (add); \ (add)->prev->next = (add); \ if ((head) == (el)) { \ (head) = (add); \ } \ } else { \ CDL_APPEND2(head, add, prev, next); \ } \ } while (0) #define CDL_PREPEND_ELEM(head, el, add) \ CDL_PREPEND_ELEM2(head, el, add, prev, next) #define CDL_APPEND_ELEM2(head, el, add, prev, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el)->next; \ (add)->prev = (el); \ (el)->next = (add); \ (add)->next->prev = (add); \ } else { \ CDL_PREPEND2(head, add, prev, next); \ } \ } while (0) #define CDL_APPEND_ELEM(head, el, add) \ CDL_APPEND_ELEM2(head, el, add, prev, next) #ifdef NO_DECLTYPE /* Here are VS2008 / NO_DECLTYPE replacements for a few functions */ #undef CDL_INSERT_INORDER2 #define CDL_INSERT_INORDER2(head,add,cmp,prev,next) \ do { \ if ((head) == NULL) { \ (add)->prev = (add); \ (add)->next = (add); \ (head) = (add); \ } else if ((cmp(head, add)) >= 0) { \ (add)->prev = (head)->prev; \ (add)->next = (head); \ (add)->prev->next = (add); \ (head)->prev = (add); \ (head) = (add); \ } else { \ char *_tmp = (char*)(head); \ while ((char*)(head)->next != _tmp && (cmp((head)->next, add)) < 0) { \ (head) = (head)->next; \ } \ (add)->prev = (head); \ (add)->next = (head)->next; \ (add)->next->prev = (add); \ (head)->next = (add); \ UTLIST_RS(head); \ } \ } while (0) #endif /* NO_DECLTYPE */ #endif /* UTLIST_H */ feenox-1.1/src/contrib/kdtree.h0000644000175000017500000001306314773607165013461 00000000000000/* This file is part of ``kdtree'', a library for working with kd-trees. Copyright (C) 2007-2011 John Tsiombikas Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. 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. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. */ #ifndef _KDTREE_H_ #define _KDTREE_H_ // This header is needed to comply with C99. From alloca(3) // > Normally, gcc(1) translates calls to alloca() with inlined code. // > This is not done when either the -ansi, -std=c89, -std=c99 or the // > -std=c11 option is given and the header is not included. #include #ifdef __cplusplus extern "C" { #endif struct kdtree; struct kdres; /* create a kd-tree for "k"-dimensional data */ struct kdtree *kd_create(int k); /* free the struct kdtree */ void kd_free(struct kdtree *tree); /* remove all the elements from the tree */ void kd_clear(struct kdtree *tree); /* if called with non-null 2nd argument, the function provided * will be called on data pointers (see kd_insert) when nodes * are to be removed from the tree. */ void kd_data_destructor(struct kdtree *tree, void (*destr)(void*)); /* insert a node, specifying its position, and optional data */ int kd_insert(struct kdtree *tree, const double *pos, void *data); int kd_insertf(struct kdtree *tree, const float *pos, void *data); int kd_insert3(struct kdtree *tree, double x, double y, double z, void *data); int kd_insert3f(struct kdtree *tree, float x, float y, float z, void *data); /* Find the nearest node from a given point. * * This function returns a pointer to a result set with at most one element. */ struct kdres *kd_nearest(struct kdtree *tree, const double *pos); struct kdres *kd_nearestf(struct kdtree *tree, const float *pos); struct kdres *kd_nearest3(struct kdtree *tree, double x, double y, double z); struct kdres *kd_nearest3f(struct kdtree *tree, float x, float y, float z); /* Find the N nearest nodes from a given point. * * This function returns a pointer to a result set, with at most N elements, * which can be manipulated with the kd_res_* functions. * The returned pointer can be null as an indication of an error. Otherwise * a valid result set is always returned which may contain 0 or more elements. * The result set must be deallocated with kd_res_free after use. */ /* struct kdres *kd_nearest_n(struct kdtree *tree, const double *pos, int num); struct kdres *kd_nearest_nf(struct kdtree *tree, const float *pos, int num); struct kdres *kd_nearest_n3(struct kdtree *tree, double x, double y, double z); struct kdres *kd_nearest_n3f(struct kdtree *tree, float x, float y, float z); */ /* Find any nearest nodes from a given point within a range. * * This function returns a pointer to a result set, which can be manipulated * by the kd_res_* functions. * The returned pointer can be null as an indication of an error. Otherwise * a valid result set is always returned which may contain 0 or more elements. * The result set must be deallocated with kd_res_free after use. */ struct kdres *kd_nearest_range(struct kdtree *tree, const double *pos, double range); struct kdres *kd_nearest_rangef(struct kdtree *tree, const float *pos, float range); struct kdres *kd_nearest_range3(struct kdtree *tree, double x, double y, double z, double range); struct kdres *kd_nearest_range3f(struct kdtree *tree, float x, float y, float z, float range); /* frees a result set returned by kd_nearest_range() */ void kd_res_free(struct kdres *set); /* returns the size of the result set (in elements) */ int kd_res_size(struct kdres *set); /* rewinds the result set iterator */ void kd_res_rewind(struct kdres *set); /* returns non-zero if the set iterator reached the end after the last element */ int kd_res_end(struct kdres *set); /* advances the result set iterator, returns non-zero on success, zero if * there are no more elements in the result set. */ int kd_res_next(struct kdres *set); /* returns the data pointer (can be null) of the current result set item * and optionally sets its position to the pointers(s) if not null. */ void *kd_res_item(struct kdres *set, double *pos); void *kd_res_itemf(struct kdres *set, float *pos); void *kd_res_item3(struct kdres *set, double *x, double *y, double *z); void *kd_res_item3f(struct kdres *set, float *x, float *y, float *z); /* equivalent to kd_res_item(set, 0) */ void *kd_res_item_data(struct kdres *set); #ifdef __cplusplus } #endif #endif /* _KDTREE_H_ */ feenox-1.1/src/contrib/uthash.h0000644000175000017500000022027014773607165013477 00000000000000/* Copyright (c) 2003-2022, Troy D. Hanson https://troydhanson.github.io/uthash/ 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. 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. */ #ifndef UTHASH_H #define UTHASH_H #define UTHASH_VERSION 2.3.0 #include /* memcmp, memset, strlen */ #include /* ptrdiff_t */ #include /* exit */ #if defined(HASH_DEFINE_OWN_STDINT) && HASH_DEFINE_OWN_STDINT /* This codepath is provided for backward compatibility, but I plan to remove it. */ #warning "HASH_DEFINE_OWN_STDINT is deprecated; please use HASH_NO_STDINT instead" typedef unsigned int uint32_t; typedef unsigned char uint8_t; #elif defined(HASH_NO_STDINT) && HASH_NO_STDINT #else #include /* uint8_t, uint32_t */ #endif /* These macros use decltype or the earlier __typeof GNU extension. As decltype is only available in newer compilers (VS2010 or gcc 4.3+ when compiling c++ source) this code uses whatever method is needed or, for VS2008 where neither is available, uses casting workarounds. */ #if !defined(DECLTYPE) && !defined(NO_DECLTYPE) #if defined(_MSC_VER) /* MS compiler */ #if _MSC_VER >= 1600 && defined(__cplusplus) /* VS2010 or newer in C++ mode */ #define DECLTYPE(x) (decltype(x)) #else /* VS2008 or older (or VS2010 in C mode) */ #define NO_DECLTYPE #endif #elif defined(__MCST__) /* Elbrus C Compiler */ #define DECLTYPE(x) (__typeof(x)) #elif defined(__BORLANDC__) || defined(__ICCARM__) || defined(__LCC__) || defined(__WATCOMC__) #define NO_DECLTYPE #else /* GNU, Sun and other compilers */ #define DECLTYPE(x) (__typeof(x)) #endif #endif #ifdef NO_DECLTYPE #define DECLTYPE(x) #define DECLTYPE_ASSIGN(dst,src) \ do { \ char **_da_dst = (char**)(&(dst)); \ *_da_dst = (char*)(src); \ } while (0) #else #define DECLTYPE_ASSIGN(dst,src) \ do { \ (dst) = DECLTYPE(dst)(src); \ } while (0) #endif #ifndef uthash_malloc #define uthash_malloc(sz) malloc(sz) /* malloc fcn */ #endif #ifndef uthash_free #define uthash_free(ptr,sz) free(ptr) /* free fcn */ #endif #ifndef uthash_bzero #define uthash_bzero(a,n) memset(a,'\0',n) #endif #ifndef uthash_strlen #define uthash_strlen(s) strlen(s) #endif #ifndef HASH_FUNCTION #define HASH_FUNCTION(keyptr,keylen,hashv) HASH_JEN(keyptr, keylen, hashv) #endif #ifndef HASH_KEYCMP #define HASH_KEYCMP(a,b,n) memcmp(a,b,n) #endif #ifndef uthash_noexpand_fyi #define uthash_noexpand_fyi(tbl) /* can be defined to log noexpand */ #endif #ifndef uthash_expand_fyi #define uthash_expand_fyi(tbl) /* can be defined to log expands */ #endif #ifndef HASH_NONFATAL_OOM #define HASH_NONFATAL_OOM 0 #endif #if HASH_NONFATAL_OOM /* malloc failures can be recovered from */ #ifndef uthash_nonfatal_oom #define uthash_nonfatal_oom(obj) do {} while (0) /* non-fatal OOM error */ #endif #define HASH_RECORD_OOM(oomed) do { (oomed) = 1; } while (0) #define IF_HASH_NONFATAL_OOM(x) x #else /* malloc failures result in lost memory, hash tables are unusable */ #ifndef uthash_fatal #define uthash_fatal(msg) exit(-1) /* fatal OOM error */ #endif #define HASH_RECORD_OOM(oomed) uthash_fatal("out of memory") #define IF_HASH_NONFATAL_OOM(x) #endif /* initial number of buckets */ #define HASH_INITIAL_NUM_BUCKETS 32U /* initial number of buckets */ #define HASH_INITIAL_NUM_BUCKETS_LOG2 5U /* lg2 of initial number of buckets */ #define HASH_BKT_CAPACITY_THRESH 10U /* expand when bucket count reaches */ /* calculate the element whose hash handle address is hhp */ #define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho))) /* calculate the hash handle from element address elp */ #define HH_FROM_ELMT(tbl,elp) ((UT_hash_handle*)(void*)(((char*)(elp)) + ((tbl)->hho))) #define HASH_ROLLBACK_BKT(hh, head, itemptrhh) \ do { \ struct UT_hash_handle *_hd_hh_item = (itemptrhh); \ unsigned _hd_bkt; \ HASH_TO_BKT(_hd_hh_item->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \ (head)->hh.tbl->buckets[_hd_bkt].count++; \ _hd_hh_item->hh_next = NULL; \ _hd_hh_item->hh_prev = NULL; \ } while (0) #define HASH_VALUE(keyptr,keylen,hashv) \ do { \ HASH_FUNCTION(keyptr, keylen, hashv); \ } while (0) #define HASH_FIND_BYHASHVALUE(hh,head,keyptr,keylen,hashval,out) \ do { \ (out) = NULL; \ if (head) { \ unsigned _hf_bkt; \ HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _hf_bkt); \ if (HASH_BLOOM_TEST((head)->hh.tbl, hashval) != 0) { \ HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ], keyptr, keylen, hashval, out); \ } \ } \ } while (0) #define HASH_FIND(hh,head,keyptr,keylen,out) \ do { \ (out) = NULL; \ if (head) { \ unsigned _hf_hashv; \ HASH_VALUE(keyptr, keylen, _hf_hashv); \ HASH_FIND_BYHASHVALUE(hh, head, keyptr, keylen, _hf_hashv, out); \ } \ } while (0) #ifdef HASH_BLOOM #define HASH_BLOOM_BITLEN (1UL << HASH_BLOOM) #define HASH_BLOOM_BYTELEN (HASH_BLOOM_BITLEN/8UL) + (((HASH_BLOOM_BITLEN%8UL)!=0UL) ? 1UL : 0UL) #define HASH_BLOOM_MAKE(tbl,oomed) \ do { \ (tbl)->bloom_nbits = HASH_BLOOM; \ (tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN); \ if (!(tbl)->bloom_bv) { \ HASH_RECORD_OOM(oomed); \ } else { \ uthash_bzero((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \ (tbl)->bloom_sig = HASH_BLOOM_SIGNATURE; \ } \ } while (0) #define HASH_BLOOM_FREE(tbl) \ do { \ uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \ } while (0) #define HASH_BLOOM_BITSET(bv,idx) (bv[(idx)/8U] |= (1U << ((idx)%8U))) #define HASH_BLOOM_BITTEST(bv,idx) (bv[(idx)/8U] & (1U << ((idx)%8U))) #define HASH_BLOOM_ADD(tbl,hashv) \ HASH_BLOOM_BITSET((tbl)->bloom_bv, ((hashv) & (uint32_t)((1UL << (tbl)->bloom_nbits) - 1U))) #define HASH_BLOOM_TEST(tbl,hashv) \ HASH_BLOOM_BITTEST((tbl)->bloom_bv, ((hashv) & (uint32_t)((1UL << (tbl)->bloom_nbits) - 1U))) #else #define HASH_BLOOM_MAKE(tbl,oomed) #define HASH_BLOOM_FREE(tbl) #define HASH_BLOOM_ADD(tbl,hashv) #define HASH_BLOOM_TEST(tbl,hashv) (1) #define HASH_BLOOM_BYTELEN 0U #endif #define HASH_MAKE_TABLE(hh,head,oomed) \ do { \ (head)->hh.tbl = (UT_hash_table*)uthash_malloc(sizeof(UT_hash_table)); \ if (!(head)->hh.tbl) { \ HASH_RECORD_OOM(oomed); \ } else { \ uthash_bzero((head)->hh.tbl, sizeof(UT_hash_table)); \ (head)->hh.tbl->tail = &((head)->hh); \ (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS; \ (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2; \ (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head); \ (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc( \ HASH_INITIAL_NUM_BUCKETS * sizeof(struct UT_hash_bucket)); \ (head)->hh.tbl->signature = HASH_SIGNATURE; \ if (!(head)->hh.tbl->buckets) { \ HASH_RECORD_OOM(oomed); \ uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ } else { \ uthash_bzero((head)->hh.tbl->buckets, \ HASH_INITIAL_NUM_BUCKETS * sizeof(struct UT_hash_bucket)); \ HASH_BLOOM_MAKE((head)->hh.tbl, oomed); \ IF_HASH_NONFATAL_OOM( \ if (oomed) { \ uthash_free((head)->hh.tbl->buckets, \ HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \ uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ } \ ) \ } \ } \ } while (0) #define HASH_REPLACE_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,replaced,cmpfcn) \ do { \ (replaced) = NULL; \ HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \ if (replaced) { \ HASH_DELETE(hh, head, replaced); \ } \ HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn); \ } while (0) #define HASH_REPLACE_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add,replaced) \ do { \ (replaced) = NULL; \ HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \ if (replaced) { \ HASH_DELETE(hh, head, replaced); \ } \ HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add); \ } while (0) #define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced) \ do { \ unsigned _hr_hashv; \ HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \ HASH_REPLACE_BYHASHVALUE(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced); \ } while (0) #define HASH_REPLACE_INORDER(hh,head,fieldname,keylen_in,add,replaced,cmpfcn) \ do { \ unsigned _hr_hashv; \ HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \ HASH_REPLACE_BYHASHVALUE_INORDER(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced, cmpfcn); \ } while (0) #define HASH_APPEND_LIST(hh, head, add) \ do { \ (add)->hh.next = NULL; \ (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \ (head)->hh.tbl->tail->next = (add); \ (head)->hh.tbl->tail = &((add)->hh); \ } while (0) #define HASH_AKBI_INNER_LOOP(hh,head,add,cmpfcn) \ do { \ do { \ if (cmpfcn(DECLTYPE(head)(_hs_iter), add) > 0) { \ break; \ } \ } while ((_hs_iter = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->next)); \ } while (0) #ifdef NO_DECLTYPE #undef HASH_AKBI_INNER_LOOP #define HASH_AKBI_INNER_LOOP(hh,head,add,cmpfcn) \ do { \ char *_hs_saved_head = (char*)(head); \ do { \ DECLTYPE_ASSIGN(head, _hs_iter); \ if (cmpfcn(head, add) > 0) { \ DECLTYPE_ASSIGN(head, _hs_saved_head); \ break; \ } \ DECLTYPE_ASSIGN(head, _hs_saved_head); \ } while ((_hs_iter = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->next)); \ } while (0) #endif #if HASH_NONFATAL_OOM #define HASH_ADD_TO_TABLE(hh,head,keyptr,keylen_in,hashval,add,oomed) \ do { \ if (!(oomed)) { \ unsigned _ha_bkt; \ (head)->hh.tbl->num_items++; \ HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _ha_bkt); \ HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], hh, &(add)->hh, oomed); \ if (oomed) { \ HASH_ROLLBACK_BKT(hh, head, &(add)->hh); \ HASH_DELETE_HH(hh, head, &(add)->hh); \ (add)->hh.tbl = NULL; \ uthash_nonfatal_oom(add); \ } else { \ HASH_BLOOM_ADD((head)->hh.tbl, hashval); \ HASH_EMIT_KEY(hh, head, keyptr, keylen_in); \ } \ } else { \ (add)->hh.tbl = NULL; \ uthash_nonfatal_oom(add); \ } \ } while (0) #else #define HASH_ADD_TO_TABLE(hh,head,keyptr,keylen_in,hashval,add,oomed) \ do { \ unsigned _ha_bkt; \ (head)->hh.tbl->num_items++; \ HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _ha_bkt); \ HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], hh, &(add)->hh, oomed); \ HASH_BLOOM_ADD((head)->hh.tbl, hashval); \ HASH_EMIT_KEY(hh, head, keyptr, keylen_in); \ } while (0) #endif #define HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh,head,keyptr,keylen_in,hashval,add,cmpfcn) \ do { \ IF_HASH_NONFATAL_OOM( int _ha_oomed = 0; ) \ (add)->hh.hashv = (hashval); \ (add)->hh.key = (char*) (keyptr); \ (add)->hh.keylen = (unsigned) (keylen_in); \ if (!(head)) { \ (add)->hh.next = NULL; \ (add)->hh.prev = NULL; \ HASH_MAKE_TABLE(hh, add, _ha_oomed); \ IF_HASH_NONFATAL_OOM( if (!_ha_oomed) { ) \ (head) = (add); \ IF_HASH_NONFATAL_OOM( } ) \ } else { \ void *_hs_iter = (head); \ (add)->hh.tbl = (head)->hh.tbl; \ HASH_AKBI_INNER_LOOP(hh, head, add, cmpfcn); \ if (_hs_iter) { \ (add)->hh.next = _hs_iter; \ if (((add)->hh.prev = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->prev)) { \ HH_FROM_ELMT((head)->hh.tbl, (add)->hh.prev)->next = (add); \ } else { \ (head) = (add); \ } \ HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->prev = (add); \ } else { \ HASH_APPEND_LIST(hh, head, add); \ } \ } \ HASH_ADD_TO_TABLE(hh, head, keyptr, keylen_in, hashval, add, _ha_oomed); \ HASH_FSCK(hh, head, "HASH_ADD_KEYPTR_BYHASHVALUE_INORDER"); \ } while (0) #define HASH_ADD_KEYPTR_INORDER(hh,head,keyptr,keylen_in,add,cmpfcn) \ do { \ unsigned _hs_hashv; \ HASH_VALUE(keyptr, keylen_in, _hs_hashv); \ HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, keyptr, keylen_in, _hs_hashv, add, cmpfcn); \ } while (0) #define HASH_ADD_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,cmpfcn) \ HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn) #define HASH_ADD_INORDER(hh,head,fieldname,keylen_in,add,cmpfcn) \ HASH_ADD_KEYPTR_INORDER(hh, head, &((add)->fieldname), keylen_in, add, cmpfcn) #define HASH_ADD_KEYPTR_BYHASHVALUE(hh,head,keyptr,keylen_in,hashval,add) \ do { \ IF_HASH_NONFATAL_OOM( int _ha_oomed = 0; ) \ (add)->hh.hashv = (hashval); \ (add)->hh.key = (const void*) (keyptr); \ (add)->hh.keylen = (unsigned) (keylen_in); \ if (!(head)) { \ (add)->hh.next = NULL; \ (add)->hh.prev = NULL; \ HASH_MAKE_TABLE(hh, add, _ha_oomed); \ IF_HASH_NONFATAL_OOM( if (!_ha_oomed) { ) \ (head) = (add); \ IF_HASH_NONFATAL_OOM( } ) \ } else { \ (add)->hh.tbl = (head)->hh.tbl; \ HASH_APPEND_LIST(hh, head, add); \ } \ HASH_ADD_TO_TABLE(hh, head, keyptr, keylen_in, hashval, add, _ha_oomed); \ HASH_FSCK(hh, head, "HASH_ADD_KEYPTR_BYHASHVALUE"); \ } while (0) #define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \ do { \ unsigned _ha_hashv; \ HASH_VALUE(keyptr, keylen_in, _ha_hashv); \ HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, keyptr, keylen_in, _ha_hashv, add); \ } while (0) #define HASH_ADD_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add) \ HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add) #define HASH_ADD(hh,head,fieldname,keylen_in,add) \ HASH_ADD_KEYPTR(hh, head, &((add)->fieldname), keylen_in, add) #define HASH_TO_BKT(hashv,num_bkts,bkt) \ do { \ bkt = ((hashv) & ((num_bkts) - 1U)); \ } while (0) /* delete "delptr" from the hash table. * "the usual" patch-up process for the app-order doubly-linked-list. * The use of _hd_hh_del below deserves special explanation. * These used to be expressed using (delptr) but that led to a bug * if someone used the same symbol for the head and deletee, like * HASH_DELETE(hh,users,users); * We want that to work, but by changing the head (users) below * we were forfeiting our ability to further refer to the deletee (users) * in the patch-up process. Solution: use scratch space to * copy the deletee pointer, then the latter references are via that * scratch pointer rather than through the repointed (users) symbol. */ #define HASH_DELETE(hh,head,delptr) \ HASH_DELETE_HH(hh, head, &(delptr)->hh) #define HASH_DELETE_HH(hh,head,delptrhh) \ do { \ const struct UT_hash_handle *_hd_hh_del = (delptrhh); \ if ((_hd_hh_del->prev == NULL) && (_hd_hh_del->next == NULL)) { \ HASH_BLOOM_FREE((head)->hh.tbl); \ uthash_free((head)->hh.tbl->buckets, \ (head)->hh.tbl->num_buckets * sizeof(struct UT_hash_bucket)); \ uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ (head) = NULL; \ } else { \ unsigned _hd_bkt; \ if (_hd_hh_del == (head)->hh.tbl->tail) { \ (head)->hh.tbl->tail = HH_FROM_ELMT((head)->hh.tbl, _hd_hh_del->prev); \ } \ if (_hd_hh_del->prev != NULL) { \ HH_FROM_ELMT((head)->hh.tbl, _hd_hh_del->prev)->next = _hd_hh_del->next; \ } else { \ DECLTYPE_ASSIGN(head, _hd_hh_del->next); \ } \ if (_hd_hh_del->next != NULL) { \ HH_FROM_ELMT((head)->hh.tbl, _hd_hh_del->next)->prev = _hd_hh_del->prev; \ } \ HASH_TO_BKT(_hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \ HASH_DEL_IN_BKT((head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del); \ (head)->hh.tbl->num_items--; \ } \ HASH_FSCK(hh, head, "HASH_DELETE_HH"); \ } while (0) /* convenience forms of HASH_FIND/HASH_ADD/HASH_DEL */ #define HASH_FIND_STR(head,findstr,out) \ do { \ unsigned _uthash_hfstr_keylen = (unsigned)uthash_strlen(findstr); \ HASH_FIND(hh, head, findstr, _uthash_hfstr_keylen, out); \ } while (0) #define HASH_ADD_STR(head,strfield,add) \ do { \ unsigned _uthash_hastr_keylen = (unsigned)uthash_strlen((add)->strfield); \ HASH_ADD(hh, head, strfield[0], _uthash_hastr_keylen, add); \ } while (0) #define HASH_REPLACE_STR(head,strfield,add,replaced) \ do { \ unsigned _uthash_hrstr_keylen = (unsigned)uthash_strlen((add)->strfield); \ HASH_REPLACE(hh, head, strfield[0], _uthash_hrstr_keylen, add, replaced); \ } while (0) #define HASH_FIND_INT(head,findint,out) \ HASH_FIND(hh,head,findint,sizeof(int),out) #define HASH_ADD_INT(head,intfield,add) \ HASH_ADD(hh,head,intfield,sizeof(int),add) #define HASH_REPLACE_INT(head,intfield,add,replaced) \ HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced) #define HASH_FIND_PTR(head,findptr,out) \ HASH_FIND(hh,head,findptr,sizeof(void *),out) #define HASH_ADD_PTR(head,ptrfield,add) \ HASH_ADD(hh,head,ptrfield,sizeof(void *),add) #define HASH_REPLACE_PTR(head,ptrfield,add,replaced) \ HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced) #define HASH_DEL(head,delptr) \ HASH_DELETE(hh,head,delptr) /* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined. * This is for uthash developer only; it compiles away if HASH_DEBUG isn't defined. */ #ifdef HASH_DEBUG #include /* fprintf, stderr */ #define HASH_OOPS(...) do { fprintf(stderr, __VA_ARGS__); exit(-1); } while (0) #define HASH_FSCK(hh,head,where) \ do { \ struct UT_hash_handle *_thh; \ if (head) { \ unsigned _bkt_i; \ unsigned _count = 0; \ char *_prev; \ for (_bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; ++_bkt_i) { \ unsigned _bkt_count = 0; \ _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head; \ _prev = NULL; \ while (_thh) { \ if (_prev != (char*)(_thh->hh_prev)) { \ HASH_OOPS("%s: invalid hh_prev %p, actual %p\n", \ (where), (void*)_thh->hh_prev, (void*)_prev); \ } \ _bkt_count++; \ _prev = (char*)(_thh); \ _thh = _thh->hh_next; \ } \ _count += _bkt_count; \ if ((head)->hh.tbl->buckets[_bkt_i].count != _bkt_count) { \ HASH_OOPS("%s: invalid bucket count %u, actual %u\n", \ (where), (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count); \ } \ } \ if (_count != (head)->hh.tbl->num_items) { \ HASH_OOPS("%s: invalid hh item count %u, actual %u\n", \ (where), (head)->hh.tbl->num_items, _count); \ } \ _count = 0; \ _prev = NULL; \ _thh = &(head)->hh; \ while (_thh) { \ _count++; \ if (_prev != (char*)_thh->prev) { \ HASH_OOPS("%s: invalid prev %p, actual %p\n", \ (where), (void*)_thh->prev, (void*)_prev); \ } \ _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh); \ _thh = (_thh->next ? HH_FROM_ELMT((head)->hh.tbl, _thh->next) : NULL); \ } \ if (_count != (head)->hh.tbl->num_items) { \ HASH_OOPS("%s: invalid app item count %u, actual %u\n", \ (where), (head)->hh.tbl->num_items, _count); \ } \ } \ } while (0) #else #define HASH_FSCK(hh,head,where) #endif /* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to * the descriptor to which this macro is defined for tuning the hash function. * The app can #include to get the prototype for write(2). */ #ifdef HASH_EMIT_KEYS #define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) \ do { \ unsigned _klen = fieldlen; \ write(HASH_EMIT_KEYS, &_klen, sizeof(_klen)); \ write(HASH_EMIT_KEYS, keyptr, (unsigned long)fieldlen); \ } while (0) #else #define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) #endif /* The Bernstein hash function, used in Perl prior to v5.6. Note (x<<5+x)=x*33. */ #define HASH_BER(key,keylen,hashv) \ do { \ unsigned _hb_keylen = (unsigned)keylen; \ const unsigned char *_hb_key = (const unsigned char*)(key); \ (hashv) = 0; \ while (_hb_keylen-- != 0U) { \ (hashv) = (((hashv) << 5) + (hashv)) + *_hb_key++; \ } \ } while (0) /* SAX/FNV/OAT/JEN hash functions are macro variants of those listed at * http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx * (archive link: https://archive.is/Ivcan ) */ #define HASH_SAX(key,keylen,hashv) \ do { \ unsigned _sx_i; \ const unsigned char *_hs_key = (const unsigned char*)(key); \ hashv = 0; \ for (_sx_i=0; _sx_i < keylen; _sx_i++) { \ hashv ^= (hashv << 5) + (hashv >> 2) + _hs_key[_sx_i]; \ } \ } while (0) /* FNV-1a variation */ #define HASH_FNV(key,keylen,hashv) \ do { \ unsigned _fn_i; \ const unsigned char *_hf_key = (const unsigned char*)(key); \ (hashv) = 2166136261U; \ for (_fn_i=0; _fn_i < keylen; _fn_i++) { \ hashv = hashv ^ _hf_key[_fn_i]; \ hashv = hashv * 16777619U; \ } \ } while (0) #define HASH_OAT(key,keylen,hashv) \ do { \ unsigned _ho_i; \ const unsigned char *_ho_key=(const unsigned char*)(key); \ hashv = 0; \ for(_ho_i=0; _ho_i < keylen; _ho_i++) { \ hashv += _ho_key[_ho_i]; \ hashv += (hashv << 10); \ hashv ^= (hashv >> 6); \ } \ hashv += (hashv << 3); \ hashv ^= (hashv >> 11); \ hashv += (hashv << 15); \ } while (0) #define HASH_JEN_MIX(a,b,c) \ do { \ a -= b; a -= c; a ^= ( c >> 13 ); \ b -= c; b -= a; b ^= ( a << 8 ); \ c -= a; c -= b; c ^= ( b >> 13 ); \ a -= b; a -= c; a ^= ( c >> 12 ); \ b -= c; b -= a; b ^= ( a << 16 ); \ c -= a; c -= b; c ^= ( b >> 5 ); \ a -= b; a -= c; a ^= ( c >> 3 ); \ b -= c; b -= a; b ^= ( a << 10 ); \ c -= a; c -= b; c ^= ( b >> 15 ); \ } while (0) #define HASH_JEN(key,keylen,hashv) \ do { \ unsigned _hj_i,_hj_j,_hj_k; \ unsigned const char *_hj_key=(unsigned const char*)(key); \ hashv = 0xfeedbeefu; \ _hj_i = _hj_j = 0x9e3779b9u; \ _hj_k = (unsigned)(keylen); \ while (_hj_k >= 12U) { \ _hj_i += (_hj_key[0] + ( (unsigned)_hj_key[1] << 8 ) \ + ( (unsigned)_hj_key[2] << 16 ) \ + ( (unsigned)_hj_key[3] << 24 ) ); \ _hj_j += (_hj_key[4] + ( (unsigned)_hj_key[5] << 8 ) \ + ( (unsigned)_hj_key[6] << 16 ) \ + ( (unsigned)_hj_key[7] << 24 ) ); \ hashv += (_hj_key[8] + ( (unsigned)_hj_key[9] << 8 ) \ + ( (unsigned)_hj_key[10] << 16 ) \ + ( (unsigned)_hj_key[11] << 24 ) ); \ \ HASH_JEN_MIX(_hj_i, _hj_j, hashv); \ \ _hj_key += 12; \ _hj_k -= 12U; \ } \ hashv += (unsigned)(keylen); \ switch ( _hj_k ) { \ case 11: hashv += ( (unsigned)_hj_key[10] << 24 ); /* FALLTHROUGH */ \ case 10: hashv += ( (unsigned)_hj_key[9] << 16 ); /* FALLTHROUGH */ \ case 9: hashv += ( (unsigned)_hj_key[8] << 8 ); /* FALLTHROUGH */ \ case 8: _hj_j += ( (unsigned)_hj_key[7] << 24 ); /* FALLTHROUGH */ \ case 7: _hj_j += ( (unsigned)_hj_key[6] << 16 ); /* FALLTHROUGH */ \ case 6: _hj_j += ( (unsigned)_hj_key[5] << 8 ); /* FALLTHROUGH */ \ case 5: _hj_j += _hj_key[4]; /* FALLTHROUGH */ \ case 4: _hj_i += ( (unsigned)_hj_key[3] << 24 ); /* FALLTHROUGH */ \ case 3: _hj_i += ( (unsigned)_hj_key[2] << 16 ); /* FALLTHROUGH */ \ case 2: _hj_i += ( (unsigned)_hj_key[1] << 8 ); /* FALLTHROUGH */ \ case 1: _hj_i += _hj_key[0]; /* FALLTHROUGH */ \ default: ; \ } \ HASH_JEN_MIX(_hj_i, _hj_j, hashv); \ } while (0) /* The Paul Hsieh hash function */ #undef get16bits #if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \ || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__) #define get16bits(d) (*((const uint16_t *) (d))) #endif #if !defined (get16bits) #define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8) \ +(uint32_t)(((const uint8_t *)(d))[0]) ) #endif #define HASH_SFH(key,keylen,hashv) \ do { \ unsigned const char *_sfh_key=(unsigned const char*)(key); \ uint32_t _sfh_tmp, _sfh_len = (uint32_t)keylen; \ \ unsigned _sfh_rem = _sfh_len & 3U; \ _sfh_len >>= 2; \ hashv = 0xcafebabeu; \ \ /* Main loop */ \ for (;_sfh_len > 0U; _sfh_len--) { \ hashv += get16bits (_sfh_key); \ _sfh_tmp = ((uint32_t)(get16bits (_sfh_key+2)) << 11) ^ hashv; \ hashv = (hashv << 16) ^ _sfh_tmp; \ _sfh_key += 2U*sizeof (uint16_t); \ hashv += hashv >> 11; \ } \ \ /* Handle end cases */ \ switch (_sfh_rem) { \ case 3: hashv += get16bits (_sfh_key); \ hashv ^= hashv << 16; \ hashv ^= (uint32_t)(_sfh_key[sizeof (uint16_t)]) << 18; \ hashv += hashv >> 11; \ break; \ case 2: hashv += get16bits (_sfh_key); \ hashv ^= hashv << 11; \ hashv += hashv >> 17; \ break; \ case 1: hashv += *_sfh_key; \ hashv ^= hashv << 10; \ hashv += hashv >> 1; \ break; \ default: ; \ } \ \ /* Force "avalanching" of final 127 bits */ \ hashv ^= hashv << 3; \ hashv += hashv >> 5; \ hashv ^= hashv << 4; \ hashv += hashv >> 17; \ hashv ^= hashv << 25; \ hashv += hashv >> 6; \ } while (0) /* iterate over items in a known bucket to find desired item */ #define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,hashval,out) \ do { \ if ((head).hh_head != NULL) { \ DECLTYPE_ASSIGN(out, ELMT_FROM_HH(tbl, (head).hh_head)); \ } else { \ (out) = NULL; \ } \ while ((out) != NULL) { \ if ((out)->hh.hashv == (hashval) && (out)->hh.keylen == (keylen_in)) { \ if (HASH_KEYCMP((out)->hh.key, keyptr, keylen_in) == 0) { \ break; \ } \ } \ if ((out)->hh.hh_next != NULL) { \ DECLTYPE_ASSIGN(out, ELMT_FROM_HH(tbl, (out)->hh.hh_next)); \ } else { \ (out) = NULL; \ } \ } \ } while (0) /* add an item to a bucket */ #define HASH_ADD_TO_BKT(head,hh,addhh,oomed) \ do { \ UT_hash_bucket *_ha_head = &(head); \ _ha_head->count++; \ (addhh)->hh_next = _ha_head->hh_head; \ (addhh)->hh_prev = NULL; \ if (_ha_head->hh_head != NULL) { \ _ha_head->hh_head->hh_prev = (addhh); \ } \ _ha_head->hh_head = (addhh); \ if ((_ha_head->count >= ((_ha_head->expand_mult + 1U) * HASH_BKT_CAPACITY_THRESH)) \ && !(addhh)->tbl->noexpand) { \ HASH_EXPAND_BUCKETS(addhh,(addhh)->tbl, oomed); \ IF_HASH_NONFATAL_OOM( \ if (oomed) { \ HASH_DEL_IN_BKT(head,addhh); \ } \ ) \ } \ } while (0) /* remove an item from a given bucket */ #define HASH_DEL_IN_BKT(head,delhh) \ do { \ UT_hash_bucket *_hd_head = &(head); \ _hd_head->count--; \ if (_hd_head->hh_head == (delhh)) { \ _hd_head->hh_head = (delhh)->hh_next; \ } \ if ((delhh)->hh_prev) { \ (delhh)->hh_prev->hh_next = (delhh)->hh_next; \ } \ if ((delhh)->hh_next) { \ (delhh)->hh_next->hh_prev = (delhh)->hh_prev; \ } \ } while (0) /* Bucket expansion has the effect of doubling the number of buckets * and redistributing the items into the new buckets. Ideally the * items will distribute more or less evenly into the new buckets * (the extent to which this is true is a measure of the quality of * the hash function as it applies to the key domain). * * With the items distributed into more buckets, the chain length * (item count) in each bucket is reduced. Thus by expanding buckets * the hash keeps a bound on the chain length. This bounded chain * length is the essence of how a hash provides constant time lookup. * * The calculation of tbl->ideal_chain_maxlen below deserves some * explanation. First, keep in mind that we're calculating the ideal * maximum chain length based on the *new* (doubled) bucket count. * In fractions this is just n/b (n=number of items,b=new num buckets). * Since the ideal chain length is an integer, we want to calculate * ceil(n/b). We don't depend on floating point arithmetic in this * hash, so to calculate ceil(n/b) with integers we could write * * ceil(n/b) = (n/b) + ((n%b)?1:0) * * and in fact a previous version of this hash did just that. * But now we have improved things a bit by recognizing that b is * always a power of two. We keep its base 2 log handy (call it lb), * so now we can write this with a bit shift and logical AND: * * ceil(n/b) = (n>>lb) + ( (n & (b-1)) ? 1:0) * */ #define HASH_EXPAND_BUCKETS(hh,tbl,oomed) \ do { \ unsigned _he_bkt; \ unsigned _he_bkt_i; \ struct UT_hash_handle *_he_thh, *_he_hh_nxt; \ UT_hash_bucket *_he_new_buckets, *_he_newbkt; \ _he_new_buckets = (UT_hash_bucket*)uthash_malloc( \ sizeof(struct UT_hash_bucket) * (tbl)->num_buckets * 2U); \ if (!_he_new_buckets) { \ HASH_RECORD_OOM(oomed); \ } else { \ uthash_bzero(_he_new_buckets, \ sizeof(struct UT_hash_bucket) * (tbl)->num_buckets * 2U); \ (tbl)->ideal_chain_maxlen = \ ((tbl)->num_items >> ((tbl)->log2_num_buckets+1U)) + \ ((((tbl)->num_items & (((tbl)->num_buckets*2U)-1U)) != 0U) ? 1U : 0U); \ (tbl)->nonideal_items = 0; \ for (_he_bkt_i = 0; _he_bkt_i < (tbl)->num_buckets; _he_bkt_i++) { \ _he_thh = (tbl)->buckets[ _he_bkt_i ].hh_head; \ while (_he_thh != NULL) { \ _he_hh_nxt = _he_thh->hh_next; \ HASH_TO_BKT(_he_thh->hashv, (tbl)->num_buckets * 2U, _he_bkt); \ _he_newbkt = &(_he_new_buckets[_he_bkt]); \ if (++(_he_newbkt->count) > (tbl)->ideal_chain_maxlen) { \ (tbl)->nonideal_items++; \ if (_he_newbkt->count > _he_newbkt->expand_mult * (tbl)->ideal_chain_maxlen) { \ _he_newbkt->expand_mult++; \ } \ } \ _he_thh->hh_prev = NULL; \ _he_thh->hh_next = _he_newbkt->hh_head; \ if (_he_newbkt->hh_head != NULL) { \ _he_newbkt->hh_head->hh_prev = _he_thh; \ } \ _he_newbkt->hh_head = _he_thh; \ _he_thh = _he_hh_nxt; \ } \ } \ uthash_free((tbl)->buckets, (tbl)->num_buckets * sizeof(struct UT_hash_bucket)); \ (tbl)->num_buckets *= 2U; \ (tbl)->log2_num_buckets++; \ (tbl)->buckets = _he_new_buckets; \ (tbl)->ineff_expands = ((tbl)->nonideal_items > ((tbl)->num_items >> 1)) ? \ ((tbl)->ineff_expands+1U) : 0U; \ if ((tbl)->ineff_expands > 1U) { \ (tbl)->noexpand = 1; \ uthash_noexpand_fyi(tbl); \ } \ uthash_expand_fyi(tbl); \ } \ } while (0) /* This is an adaptation of Simon Tatham's O(n log(n)) mergesort */ /* Note that HASH_SORT assumes the hash handle name to be hh. * HASH_SRT was added to allow the hash handle name to be passed in. */ #define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn) #define HASH_SRT(hh,head,cmpfcn) \ do { \ unsigned _hs_i; \ unsigned _hs_looping,_hs_nmerges,_hs_insize,_hs_psize,_hs_qsize; \ struct UT_hash_handle *_hs_p, *_hs_q, *_hs_e, *_hs_list, *_hs_tail; \ if (head != NULL) { \ _hs_insize = 1; \ _hs_looping = 1; \ _hs_list = &((head)->hh); \ while (_hs_looping != 0U) { \ _hs_p = _hs_list; \ _hs_list = NULL; \ _hs_tail = NULL; \ _hs_nmerges = 0; \ while (_hs_p != NULL) { \ _hs_nmerges++; \ _hs_q = _hs_p; \ _hs_psize = 0; \ for (_hs_i = 0; _hs_i < _hs_insize; ++_hs_i) { \ _hs_psize++; \ _hs_q = ((_hs_q->next != NULL) ? \ HH_FROM_ELMT((head)->hh.tbl, _hs_q->next) : NULL); \ if (_hs_q == NULL) { \ break; \ } \ } \ _hs_qsize = _hs_insize; \ while ((_hs_psize != 0U) || ((_hs_qsize != 0U) && (_hs_q != NULL))) { \ if (_hs_psize == 0U) { \ _hs_e = _hs_q; \ _hs_q = ((_hs_q->next != NULL) ? \ HH_FROM_ELMT((head)->hh.tbl, _hs_q->next) : NULL); \ _hs_qsize--; \ } else if ((_hs_qsize == 0U) || (_hs_q == NULL)) { \ _hs_e = _hs_p; \ if (_hs_p != NULL) { \ _hs_p = ((_hs_p->next != NULL) ? \ HH_FROM_ELMT((head)->hh.tbl, _hs_p->next) : NULL); \ } \ _hs_psize--; \ } else if ((cmpfcn( \ DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl, _hs_p)), \ DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl, _hs_q)) \ )) <= 0) { \ _hs_e = _hs_p; \ if (_hs_p != NULL) { \ _hs_p = ((_hs_p->next != NULL) ? \ HH_FROM_ELMT((head)->hh.tbl, _hs_p->next) : NULL); \ } \ _hs_psize--; \ } else { \ _hs_e = _hs_q; \ _hs_q = ((_hs_q->next != NULL) ? \ HH_FROM_ELMT((head)->hh.tbl, _hs_q->next) : NULL); \ _hs_qsize--; \ } \ if ( _hs_tail != NULL ) { \ _hs_tail->next = ((_hs_e != NULL) ? \ ELMT_FROM_HH((head)->hh.tbl, _hs_e) : NULL); \ } else { \ _hs_list = _hs_e; \ } \ if (_hs_e != NULL) { \ _hs_e->prev = ((_hs_tail != NULL) ? \ ELMT_FROM_HH((head)->hh.tbl, _hs_tail) : NULL); \ } \ _hs_tail = _hs_e; \ } \ _hs_p = _hs_q; \ } \ if (_hs_tail != NULL) { \ _hs_tail->next = NULL; \ } \ if (_hs_nmerges <= 1U) { \ _hs_looping = 0; \ (head)->hh.tbl->tail = _hs_tail; \ DECLTYPE_ASSIGN(head, ELMT_FROM_HH((head)->hh.tbl, _hs_list)); \ } \ _hs_insize *= 2U; \ } \ HASH_FSCK(hh, head, "HASH_SRT"); \ } \ } while (0) /* This function selects items from one hash into another hash. * The end result is that the selected items have dual presence * in both hashes. There is no copy of the items made; rather * they are added into the new hash through a secondary hash * hash handle that must be present in the structure. */ #define HASH_SELECT(hh_dst, dst, hh_src, src, cond) \ do { \ unsigned _src_bkt, _dst_bkt; \ void *_last_elt = NULL, *_elt; \ UT_hash_handle *_src_hh, *_dst_hh, *_last_elt_hh=NULL; \ ptrdiff_t _dst_hho = ((char*)(&(dst)->hh_dst) - (char*)(dst)); \ if ((src) != NULL) { \ for (_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) { \ for (_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head; \ _src_hh != NULL; \ _src_hh = _src_hh->hh_next) { \ _elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh); \ if (cond(_elt)) { \ IF_HASH_NONFATAL_OOM( int _hs_oomed = 0; ) \ _dst_hh = (UT_hash_handle*)(void*)(((char*)_elt) + _dst_hho); \ _dst_hh->key = _src_hh->key; \ _dst_hh->keylen = _src_hh->keylen; \ _dst_hh->hashv = _src_hh->hashv; \ _dst_hh->prev = _last_elt; \ _dst_hh->next = NULL; \ if (_last_elt_hh != NULL) { \ _last_elt_hh->next = _elt; \ } \ if ((dst) == NULL) { \ DECLTYPE_ASSIGN(dst, _elt); \ HASH_MAKE_TABLE(hh_dst, dst, _hs_oomed); \ IF_HASH_NONFATAL_OOM( \ if (_hs_oomed) { \ uthash_nonfatal_oom(_elt); \ (dst) = NULL; \ continue; \ } \ ) \ } else { \ _dst_hh->tbl = (dst)->hh_dst.tbl; \ } \ HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt); \ HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt], hh_dst, _dst_hh, _hs_oomed); \ (dst)->hh_dst.tbl->num_items++; \ IF_HASH_NONFATAL_OOM( \ if (_hs_oomed) { \ HASH_ROLLBACK_BKT(hh_dst, dst, _dst_hh); \ HASH_DELETE_HH(hh_dst, dst, _dst_hh); \ _dst_hh->tbl = NULL; \ uthash_nonfatal_oom(_elt); \ continue; \ } \ ) \ HASH_BLOOM_ADD(_dst_hh->tbl, _dst_hh->hashv); \ _last_elt = _elt; \ _last_elt_hh = _dst_hh; \ } \ } \ } \ } \ HASH_FSCK(hh_dst, dst, "HASH_SELECT"); \ } while (0) #define HASH_CLEAR(hh,head) \ do { \ if ((head) != NULL) { \ HASH_BLOOM_FREE((head)->hh.tbl); \ uthash_free((head)->hh.tbl->buckets, \ (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \ uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ (head) = NULL; \ } \ } while (0) #define HASH_OVERHEAD(hh,head) \ (((head) != NULL) ? ( \ (size_t)(((head)->hh.tbl->num_items * sizeof(UT_hash_handle)) + \ ((head)->hh.tbl->num_buckets * sizeof(UT_hash_bucket)) + \ sizeof(UT_hash_table) + \ (HASH_BLOOM_BYTELEN))) : 0U) #ifdef NO_DECLTYPE #define HASH_ITER(hh,head,el,tmp) \ for(((el)=(head)), ((*(char**)(&(tmp)))=(char*)((head!=NULL)?(head)->hh.next:NULL)); \ (el) != NULL; ((el)=(tmp)), ((*(char**)(&(tmp)))=(char*)((tmp!=NULL)?(tmp)->hh.next:NULL))) #else #define HASH_ITER(hh,head,el,tmp) \ for(((el)=(head)), ((tmp)=DECLTYPE(el)((head!=NULL)?(head)->hh.next:NULL)); \ (el) != NULL; ((el)=(tmp)), ((tmp)=DECLTYPE(el)((tmp!=NULL)?(tmp)->hh.next:NULL))) #endif /* obtain a count of items in the hash */ #define HASH_COUNT(head) HASH_CNT(hh,head) #define HASH_CNT(hh,head) ((head != NULL)?((head)->hh.tbl->num_items):0U) typedef struct UT_hash_bucket { struct UT_hash_handle *hh_head; unsigned count; /* expand_mult is normally set to 0. In this situation, the max chain length * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If * the bucket's chain exceeds this length, bucket expansion is triggered). * However, setting expand_mult to a non-zero value delays bucket expansion * (that would be triggered by additions to this particular bucket) * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH. * (The multiplier is simply expand_mult+1). The whole idea of this * multiplier is to reduce bucket expansions, since they are expensive, in * situations where we know that a particular bucket tends to be overused. * It is better to let its chain length grow to a longer yet-still-bounded * value, than to do an O(n) bucket expansion too often. */ unsigned expand_mult; } UT_hash_bucket; /* random signature used only to find hash tables in external analysis */ #define HASH_SIGNATURE 0xa0111fe1u #define HASH_BLOOM_SIGNATURE 0xb12220f2u typedef struct UT_hash_table { UT_hash_bucket *buckets; unsigned num_buckets, log2_num_buckets; unsigned num_items; struct UT_hash_handle *tail; /* tail hh in app order, for fast append */ ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */ /* in an ideal situation (all buckets used equally), no bucket would have * more than ceil(#items/#buckets) items. that's the ideal chain length. */ unsigned ideal_chain_maxlen; /* nonideal_items is the number of items in the hash whose chain position * exceeds the ideal chain maxlen. these items pay the penalty for an uneven * hash distribution; reaching them in a chain traversal takes >ideal steps */ unsigned nonideal_items; /* ineffective expands occur when a bucket doubling was performed, but * afterward, more than half the items in the hash had nonideal chain * positions. If this happens on two consecutive expansions we inhibit any * further expansion, as it's not helping; this happens when the hash * function isn't a good fit for the key domain. When expansion is inhibited * the hash will still work, albeit no longer in constant time. */ unsigned ineff_expands, noexpand; uint32_t signature; /* used only to find hash tables in external analysis */ #ifdef HASH_BLOOM uint32_t bloom_sig; /* used only to test bloom exists in external analysis */ uint8_t *bloom_bv; uint8_t bloom_nbits; #endif } UT_hash_table; typedef struct UT_hash_handle { struct UT_hash_table *tbl; void *prev; /* prev element in app order */ void *next; /* next element in app order */ struct UT_hash_handle *hh_prev; /* previous hh in bucket order */ struct UT_hash_handle *hh_next; /* next hh in bucket order */ const void *key; /* ptr to enclosing struct's key */ unsigned keylen; /* enclosing struct's key len */ unsigned hashv; /* result of hash-fcn(key) */ } UT_hash_handle; #endif /* UTHASH_H */ feenox-1.1/src/io/0000755000175000017500000000000014773607300011045 500000000000000feenox-1.1/src/io/print.c0000644000175000017500000005022414773607165012301 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX text output routines * * Copyright (C) 2009--2023 Jeremy Theler * * This file is part of feenox. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include #include int feenox_instruction_print(void *arg) { if (feenox.pde.do_not_solve) { return FEENOX_OK; } print_t *print = (print_t *)arg; print_token_t *print_token; char *current_format = (print->tokens != NULL) ? print->tokens->format : NULL; char default_print_format[] = DEFAULT_PRINT_FORMAT; int have_to_print = 1; int have_to_header = 0; int i, j; int flag = 1; // flag to know if we already printed something or not (for matrices) if ((int)feenox_special_var_value(in_static) != 0) { if (print->skip_static_step.items != NULL && print->last_static_step != 0 && ((int)(feenox_special_var_value(step_static)) == 1 || ((int)(feenox_special_var_value(step_static)) - print->last_static_step) < feenox_expression_eval(&print->skip_static_step))) { have_to_print = 0; } } else { if (print->skip_step.items != NULL && ((int)(feenox_special_var_value(step_transient)) - print->last_step) < feenox_expression_eval(&print->skip_step)) { have_to_print = 0; } if (print->skip_time.items != NULL && (feenox_special_var_value(t) == 0 || (feenox_special_var_value(t) - print->last_time) < feenox_expression_eval(&print->skip_time))) { have_to_print = 0; } } // in parallel runs only print from first processor unless explicitly asked have_to_print &= (feenox.mpi_rank == 0); if (have_to_print == 0) { return FEENOX_OK; } if (print->file->pointer == NULL) { feenox_call(feenox_instruction_file_open(print->file)); } if (print->tokens == NULL || print->tokens->format == NULL) { current_format = default_print_format; } print->last_step = (int)(feenox_special_var_value(step_transient)); print->last_time = feenox_special_var_value(t); print->last_static_step = (int)(feenox_special_var_value(step_static)); if (print->header) { if (print->skip_header_step.items != NULL && print->header_already_printed == 0) { have_to_header = 1; } else if ((int)(feenox_special_var_value(step_static)) == 1 || ((int)(feenox_special_var_value(step_transient)) - print->last_header_step) < feenox_expression_eval(&print->skip_header_step)) { have_to_header = 1; } } // write the header if we have to if (have_to_header) { fprintf(print->file->pointer, "# "); LL_FOREACH(print->tokens, print_token) { if (print_token->text != NULL) { fprintf(print->file->pointer, "%s", print_token->text); if (print_token->next != NULL) { fprintf(print->file->pointer, "%s", print->separator); } } } fprintf(print->file->pointer, "\n"); print->header_already_printed = 1; print->last_header_step = (int)(feenox_special_var_value(step_transient)); } // now print the tokens! LL_FOREACH(print->tokens, print_token) { if (print_token->expression.items != NULL) { fprintf(print->file->pointer, current_format, feenox_expression_eval(&print_token->expression)); // if there's not the last token or there's no newline print the separator if ((print_token->next != NULL) || (print->nonewline)) { fprintf(print->file->pointer, "%s", print->separator); } flag = 0; } else if (print_token->vector != NULL) { if (!print_token->vector->initialized) { feenox_call(feenox_vector_init(print_token->vector, FEENOX_VECTOR_INITIAL)); } for (i = 0; i < print_token->vector->size; i++) { fprintf(print->file->pointer, current_format, gsl_vector_get(feenox_value_ptr(print_token->vector), i)); if (i != print_token->vector->size-1) { fprintf(print->file->pointer, "%s", print->separator); } } if ((print_token->next != NULL) || (print->nonewline)) { fprintf(print->file->pointer, "%s", print->separator); } flag = 0; } else if (print_token->matrix != NULL) { if (!print_token->matrix->initialized) { feenox_call(feenox_matrix_init(print_token->matrix)); } for (i = 0; i < print_token->matrix->rows; i++) { for (j = 0; j < print_token->matrix->cols; j++) { fprintf(print->file->pointer, current_format, gsl_matrix_get(feenox_value_ptr(print_token->matrix), i, j)); if (j != print_token->matrix->cols-1) { fprintf(print->file->pointer, "%s", print->separator); } } if (flag == 1 && i != print_token->matrix->rows-1) { fprintf(print->file->pointer, "\n"); } else { fprintf(print->file->pointer, "%s", print->separator); } } flag = 0; } else if (print_token->text != NULL) { fprintf(print->file->pointer, "%s", print_token->text); if (print_token->next != NULL) { fprintf(print->file->pointer, "%s", print->separator); } flag = 0; } else if (print_token->format != NULL) { current_format = print_token->format; } } if (!print->nonewline) { fprintf(print->file->pointer, "\n"); } // siempre flusheamos fflush(print->file->pointer); return FEENOX_OK; } int feenox_instruction_print_function(void *arg) { print_function_t *print_function = (print_function_t *)arg; print_token_t *print_token; // in parallel runs only print from first processor if (feenox.mpi_rank != 0) { return FEENOX_OK; } if (print_function->file->pointer == NULL) { feenox_call(feenox_instruction_file_open(print_function->file)); } if (!print_function->first_function->initialized) { feenox_call(feenox_function_init(print_function->first_function)); } // check if we have to write a header if (print_function->header) { fprintf(print_function->file->pointer, "# "); // primero los argumentos de la primera funcion for (int k = 0; k < print_function->first_function->n_arguments; k++) { fprintf(print_function->file->pointer, "%s", print_function->first_function->var_argument[k]->name); fprintf(print_function->file->pointer, "%s", print_function->separator); } LL_FOREACH(print_function->tokens, print_token) { if (print_token->text != NULL) { fprintf(print_function->file->pointer, "%s", print_token->text); if (print_token->next != NULL) { fprintf(print_function->file->pointer, "%s", print_function->separator); } } } fprintf(print_function->file->pointer, "\n"); } if (print_function->range.min != NULL && print_function->range.max != NULL && (print_function->range.step != NULL || print_function->range.nsteps != NULL)) { // nos dieron los puntos donde se quiere dibujar las funciones double *x = NULL; feenox_check_alloc(x = calloc(print_function->first_function->n_arguments, sizeof(double))); double *x_min = NULL; feenox_check_alloc(x_min = calloc(print_function->first_function->n_arguments, sizeof(double))); double *x_max = NULL; feenox_check_alloc(x_max = calloc(print_function->first_function->n_arguments, sizeof(double))); double *x_step = NULL; feenox_check_alloc(x_step = calloc(print_function->first_function->n_arguments, sizeof(double))); for (int j = 0; j < print_function->first_function->n_arguments; j++) { x_min[j] = feenox_expression_eval(&print_function->range.min[j]); if (print_function->range.nsteps != NULL && feenox_expression_eval(&print_function->range.nsteps[j]) != 1) { x_max[j] = feenox_expression_eval(&print_function->range.max[j]); x_step[j] = (print_function->range.step != NULL) ? feenox_expression_eval(&print_function->range.step[j]) : (x_max[j]-x_min[j])/feenox_expression_eval(&print_function->range.nsteps[j]); } else if (print_function->range.step != NULL) { x_max[j] = feenox_expression_eval(&print_function->range.max[j]); x_step[j] = feenox_expression_eval(&print_function->range.step[j]); } else { x_max[j] = x_min[j] + 0.1; x_step[j] = 1; } x[j] = x_min[j]; } // hasta que el primer argumento llegue al maximo y se pase un // poquito para evitar que por el redondeo se nos escape el ultimo punto while (x[0] < x_max[0] * (1 + feenox_special_var_value(zero))) { // imprimimos los argumentos for (int j = 0; j < print_function->first_function->n_arguments; j++) { fprintf(print_function->file->pointer, print_function->format, x[j]); fprintf(print_function->file->pointer, "%s", print_function->separator); } LL_FOREACH (print_function->tokens, print_token) { // imprimimos lo que nos pidieron if (print_token->function != NULL) { fprintf(print_function->file->pointer, print_function->format, feenox_function_eval(print_token->function, x)); } else if (print_token->expression.items != NULL) { feenox_call(feenox_function_set_args(print_function->first_function, x)); fprintf(print_function->file->pointer, print_function->format, feenox_expression_eval(&print_token->expression)); } if (print_token->next != NULL) { fprintf(print_function->file->pointer, "%s", print_function->separator); } else { fprintf(print_function->file->pointer, "\n"); // siempre flusheamos fflush(print_function->file->pointer); } } // incrementamos el ultimo argumento x[print_function->first_function->n_arguments-1] += x_step[print_function->first_function->n_arguments-1]; // y vamos mirando si hay que reiniciarlos for (int j = print_function->first_function->n_arguments-2; j >= 0; j--) { if (x[j+1] > (x_max[j+1] + 0.1*x_step[j+1])) { x[j+1] = x_min[j+1]; x[j] += x_step[j]; // si estamos en 2d y reiniciamos el primer argumento imprimimos una linea // en blanco para que plotear con gnuplot with lines salga lindo if (print_function->first_function->n_arguments == 2 && j == 0) { fprintf(print_function->file->pointer, "\n"); } } } } feenox_free(x); feenox_free(x_min); feenox_free(x_max); feenox_free(x_step); } else if (print_function->first_function != NULL && print_function->first_function->data_size > 0) { // imprimimos en los puntos de definicion de la primera double *x = NULL; feenox_check_alloc(x = calloc(print_function->first_function->n_arguments, sizeof(double))); for (size_t j = 0; j < print_function->first_function->data_size; j++) { // TODO /* if (print_function->physical_entity != NULL) { element_list_item_t *element_list_item; flag = 0; LL_FOREACH(feenox_mesh.main_mesh->node[j].associated_elements, element_list_item) { if (element_list_item->element->physical_entity == print_function->physical_entity) { flag = 1; } } } */ // if (print_function->physical_entity == NULL || flag) { // los argumentos de la primera funcion for (unsigned int k = 0; k < print_function->first_function->n_arguments; k++) { // nos acordamos los argumentos para las otras funciones que vienen despues x[k] = feenox_vector_get(print_function->first_function->vector_argument[k], j); fprintf(print_function->file->pointer, print_function->format, x[k]); fprintf(print_function->file->pointer, "%s", print_function->separator); } // las cosas que nos pidieron LL_FOREACH(print_function->tokens, print_token) { // imprimimos lo que nos pidieron if (print_token->function != NULL) { // momento! hay que incializar, puede darse el caso de que no se haya inicializado todavia if (!print_token->function->initialized) { feenox_call(feenox_function_init(print_token->function)); } if (print_token->function == print_function->first_function || print_token->function->data_size == print_function->first_function->data_size) { // la primera funcion tiene los puntos posta asi que no hay que interpolar if (print_token->function->vector_value != NULL) { fprintf(print_function->file->pointer, print_function->format, feenox_vector_get(print_token->function->vector_value, j)); } else { fprintf(print_function->file->pointer, print_function->format, 0.0); } } else { fprintf(print_function->file->pointer, print_function->format, feenox_function_eval(print_token->function, x)); } } else if (print_token->expression.items != NULL) { feenox_call(feenox_function_set_args(print_function->first_function, x)); fprintf(print_function->file->pointer, print_function->format, feenox_expression_eval(&print_token->expression)); } if (print_token->next != NULL) { fprintf(print_function->file->pointer, "%s", print_function->separator); } else { fprintf(print_function->file->pointer, "\n"); // siempre flusheamos fflush(print_function->file->pointer); } // si estamos en 2d y cambiamos los dos primeros argumentos imprimimos una linea // en blanco para que plotear con gnuplot with lines salga lindo if (print_token->next == NULL && print_function->first_function->n_arguments == 2 && print_function->first_function->rectangular_mesh && j != print_function->first_function->data_size && gsl_fcmp(feenox_vector_get(print_function->first_function->vector_argument[0], j), feenox_vector_get(print_function->first_function->vector_argument[0], j+1), print_function->first_function->multidim_threshold) != 0 && gsl_fcmp(feenox_vector_get(print_function->first_function->vector_argument[1], j), feenox_vector_get(print_function->first_function->vector_argument[1], j+1), print_function->first_function->multidim_threshold) != 0) { fprintf(print_function->file->pointer, "\n"); } } // } // fprintf(print_function->file->pointer, "\n"); } feenox_free(x); } else { feenox_push_error_message("mandatory range needed for PRINT_FUNCTION instruction (function %s is not point-wise defined)", print_function->first_function->name); return FEENOX_ERROR; } fflush(print_function->file->pointer); return 0; } int feenox_instruction_print_vector(void *arg) { print_vector_t *print_vector = (print_vector_t *)arg; print_token_t *print_token; int j, k; int n_elems_per_line; // in parallel runs only print from first processor if (feenox.mpi_rank != 0) { return FEENOX_OK; } if (print_vector->file->pointer == NULL) { feenox_call(feenox_instruction_file_open(print_vector->file)); } if (print_vector->first_vector == NULL) { return FEENOX_OK; } if (!print_vector->first_vector->initialized) { feenox_call(feenox_vector_init(print_vector->first_vector, FEENOX_VECTOR_INITIAL)); } char *current_format = feenox_print_vector_current_format_reset(print_vector); if ((n_elems_per_line = (int)feenox_expression_eval(&print_vector->elems_per_line)) || print_vector->horizontal) { LL_FOREACH(print_vector->tokens, print_token) { if (!print_token->vector->initialized) { feenox_call(feenox_vector_init(print_token->vector, FEENOX_VECTOR_INITIAL)); } if (print_token->vector->size != print_vector->first_vector->size) { feenox_push_error_message("vectors %s and %s do not have the same size", print_token->vector->name, print_vector->first_vector->name); return FEENOX_ERROR; } j = 0; for (k = 0; k < print_vector->first_vector->size; k++) { if (print_token->vector != NULL) { fprintf(print_vector->file->pointer, current_format, gsl_vector_get(feenox_value_ptr(print_token->vector), k)); } else if (print_token->expression.items != NULL) { feenox_var_value(feenox.special_vars.i) = k+1; fprintf(print_vector->file->pointer, current_format, feenox_expression_eval(&print_token->expression)); } else if (print_token->format != NULL) { current_format = print_token->format; } if (print_token->format == NULL) { if (++j == n_elems_per_line) { j = 0; fprintf(print_vector->file->pointer, "\n"); } else { fprintf(print_vector->file->pointer, "%s", print_vector->separator); } } } fprintf(print_vector->file->pointer, "\n"); current_format = feenox_print_vector_current_format_reset(print_vector); } } else { for (k = 0; k < print_vector->first_vector->size; k++) { LL_FOREACH(print_vector->tokens, print_token) { if (print_token->vector != NULL) { if (print_token->vector->initialized == 0) { feenox_call(feenox_vector_init(print_token->vector, FEENOX_VECTOR_INITIAL)); } if (print_token->vector->size != print_vector->first_vector->size) { feenox_push_error_message("vectors %s and %s do not have the same size", print_token->vector->name, print_vector->first_vector->name); return FEENOX_ERROR; } fprintf(print_vector->file->pointer, current_format, gsl_vector_get(feenox_value_ptr(print_token->vector), k)); } else if (print_token->expression.items != NULL) { feenox_var_value(feenox.special_vars.i) = k+1; fprintf(print_vector->file->pointer, current_format, feenox_expression_eval(&print_token->expression)); } else if (print_token->format != NULL) { current_format = print_token->format; } if (print_token->format == NULL) { if (print_token->next != NULL) { fprintf(print_vector->file->pointer, "%s", print_vector->separator); } else { fprintf(print_vector->file->pointer, "\n"); current_format = feenox_print_vector_current_format_reset(print_vector); } } } } } fflush(print_vector->file->pointer); return 0; } char *feenox_print_vector_current_format_reset(print_vector_t *this) { char *current_format = (this->tokens != NULL) ? this->tokens->format : NULL; if (this->tokens == NULL || this->tokens->format == NULL) { current_format = DEFAULT_PRINT_FORMAT; } return current_format; } int feenox_debug_print_gsl_vector(gsl_vector *b, FILE *file) { double xi; int i; for (i = 0; i < b->size; i++) { xi = gsl_vector_get(b, i); if (xi != 0) { fprintf(file, "% .1e ", xi); } else { fprintf(file, " 0 "); } fprintf(file, "\n"); } return FEENOX_OK; } int feenox_debug_print_gsl_matrix(gsl_matrix *A, FILE *file) { double xi; int i, j; for (i = 0; i < A->size1; i++) { for (j = 0; j < A->size2; j++) { xi = gsl_matrix_get(A, i, j); /* if (xi != 0) { fprintf(file, "% .1e ", xi); } else { fprintf(file, " 0 "); } */ fprintf(file, "% .1e ", (fabs(xi) > 1e-12)?xi:0.0); } fprintf(file, "\n"); } return FEENOX_OK; } feenox-1.1/src/io/printf.c0000644000175000017500000000413114773607165012443 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX printf instruction * * Copyright (C) 2023 Jeremy Theler * * This file is part of feenox. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include #include #include int feenox_instruction_printf(void *arg) { if (feenox.pde.do_not_solve) { return FEENOX_OK; } printf_t *printf = (printf_t *)arg; if (printf->all_ranks == 0 && feenox.mpi_rank != 0) { return FEENOX_OK; } char *string = NULL; feenox_check_null(string = feenox_evaluate_string(printf->format_string, printf->n_args, printf->expressions)); if (printf->all_ranks == 0) { // plain old printf fprintf(printf->file->pointer, "%s\n", string); fflush(printf->file->pointer); #ifdef HAVE_PETSC } else { // rank-synchronized printf // first, get the host name char host[256]; if (gethostname(host, 255) != 0) { feenox_push_error_message("cannot get hostname\n"); return FEENOX_ERROR; } if (feenox.pde.petscinit_called == PETSC_FALSE) { feenox_problem_parse_time_init(); } petsc_call(PetscSynchronizedPrintf(PETSC_COMM_WORLD, "[%d/%d %s] %s\n", feenox.mpi_rank, feenox.mpi_size, host, string)); petsc_call(PetscSynchronizedFlush(PETSC_COMM_WORLD, PETSC_STDOUT)); #endif } feenox_free(string); return FEENOX_OK; } feenox-1.1/src/io/file.c0000644000175000017500000001277014773607165012070 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox file access routines * * Copyright (C) 2013-2021 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with feenox. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" FILE *feenox_fopen(const char *filepath, const char *mode) { FILE *handle; if ((handle = fopen(filepath, mode)) == NULL) { // try harder! if the name does not start with a slash, prepend // the input file's directory to find files in the same directory if (filepath[0] != '/') { char *last_attempt; // TODO: check return feenox_check_minusone_null(asprintf(&last_attempt, "%s/%s", feenox.main_input_dirname, filepath)); handle = fopen(last_attempt, mode); feenox_free(last_attempt); } } return handle; } char *feenox_evaluate_string(const char *restrict format, int n_args, expr_t *arg) { char *string = NULL; switch (n_args) { case 0: feenox_check_minusone_null(asprintf(&string, "%s", format)); break; case 1: feenox_check_minusone_null(asprintf(&string, format, feenox_expression_eval(&arg[0]))); break; case 2: feenox_check_minusone_null(asprintf(&string, format, feenox_expression_eval(&arg[0]), feenox_expression_eval(&arg[1]))); break; case 3: feenox_check_minusone_null(asprintf(&string, format, feenox_expression_eval(&arg[0]), feenox_expression_eval(&arg[1]), feenox_expression_eval(&arg[2]))); break; case 4: feenox_check_minusone_null(asprintf(&string, format, feenox_expression_eval(&arg[0]), feenox_expression_eval(&arg[1]), feenox_expression_eval(&arg[2]), feenox_expression_eval(&arg[3]))); break; case 5: feenox_check_minusone_null(asprintf(&string, format, feenox_expression_eval(&arg[0]), feenox_expression_eval(&arg[1]), feenox_expression_eval(&arg[2]), feenox_expression_eval(&arg[3]), feenox_expression_eval(&arg[4]))); break; case 6: feenox_check_minusone_null(asprintf(&string, format, feenox_expression_eval(&arg[0]), feenox_expression_eval(&arg[1]), feenox_expression_eval(&arg[2]), feenox_expression_eval(&arg[3]), feenox_expression_eval(&arg[4]), feenox_expression_eval(&arg[5]))); break; case 7: feenox_check_minusone_null(asprintf(&string, format, feenox_expression_eval(&arg[0]), feenox_expression_eval(&arg[1]), feenox_expression_eval(&arg[2]), feenox_expression_eval(&arg[3]), feenox_expression_eval(&arg[4]), feenox_expression_eval(&arg[5]), feenox_expression_eval(&arg[6]))); break; case 8: feenox_check_minusone_null(asprintf(&string, format, feenox_expression_eval(&arg[0]), feenox_expression_eval(&arg[1]), feenox_expression_eval(&arg[2]), feenox_expression_eval(&arg[3]), feenox_expression_eval(&arg[4]), feenox_expression_eval(&arg[5]), feenox_expression_eval(&arg[6]), feenox_expression_eval(&arg[7]))); break; default: feenox_push_error_message("more than eight arguments for printf-like format"); feenox_free(string); return NULL; break; } return string; } int feenox_instruction_file_open(void *arg) { file_t *file = (file_t *)arg; // stdin is already opened if (file == feenox.special_files._stdin) { return FEENOX_OK; } char *newfilepath = NULL; if ((newfilepath = feenox_evaluate_string(file->format, file->n_format_args, file->arg)) == NULL) { return FEENOX_ERROR; } if (file->pointer == NULL || file->path == NULL || strcmp(newfilepath, file->path) != 0) { file->path = realloc(file->path, strlen(newfilepath)+1); strcpy(file->path, newfilepath); if (file->pointer != NULL) { fclose(file->pointer); file->pointer = NULL; } if (file->mode == NULL || strcmp(file->mode, "") == 0) { feenox_push_error_message("unknown open mode for file '%s' ('%s')", file->name, file->path); feenox_free(newfilepath); return FEENOX_ERROR; } if ((file->pointer = feenox_fopen(file->path, file->mode)) == NULL) { feenox_push_error_message("'%s' when opening file '%s' with mode '%s'", strerror(errno), file->path, file->mode); return FEENOX_ERROR; } } feenox_free(newfilepath); return FEENOX_OK; } int feenox_instruction_file_close(void *arg) { file_t *file = (file_t *)arg; if (file->pointer != NULL) { fclose(file->pointer); file->pointer = NULL; } return FEENOX_OK; } feenox-1.1/src/feenox.c0000644000175000017500000000235514773607165012024 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX main function * * Copyright (C) 2009--2021 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" feenox_t feenox; #include int main(int argc, char **argv) { if (feenox_initialize(argc, argv) != FEENOX_OK) { feenox_pop_errors(); exit(EXIT_FAILURE); } if (feenox.check == 0 && feenox_run() != FEENOX_OK) { feenox_runtime_error(); exit(EXIT_FAILURE); } feenox_finalize(); return 0; } feenox-1.1/src/Makefile.am0000644000175000017500000001001214773607166012416 00000000000000if INCLUDE_SLEPC include $(SLEPC_DIR)/lib/slepc/conf/slepc_variables endif if INCLUDE_PETSC include $(PETSC_DIR)/lib/petsc/conf/variables endif undefine DESTDIR # this variable is set by petsc somewhere and we need it empty to make install # include $(top_srcdir)/aminclude_static.am AUTOMAKE_OPTIONS = subdir-objects ACLOCAL_AMFLAGS = $(ACLOCAL_FLAGS) # noinst_LIBRARIES = libfeenox.a # libfeenox_a_CFLAGS = $(SLEPC_CC_INCLUDES) $(PETSC_CC_INCLUDES) $(CC_INCLUDES) $(DOWNLOADED_GSL_INCLUDES) $(all_includes) bin_PROGRAMS = feenox feenox_CFLAGS = $(SLEPC_CC_INCLUDES) $(PETSC_CC_INCLUDES) $(CC_INCLUDES) $(DOWNLOADED_GSL_INCLUDES) $(all_includes) feenox_LDADD = $(SLEPC_LIB) $(PETSC_LIB) $(DOWNLOADED_GSL_LIBS) $(all_libraries) #feenox_LIBS = $(CODE_COVERAGE_LIBS) #feenox_LDFLAGS = -rdynamic #feenox_sources = feenox.c feenox.h #feenox_LDADD = libfeenox.a $(SLEPC_LIB) $(PETSC_LIB) $(DOWNLOADED_GSL_LIBS) $(all_libraries) #libfeenox_a_SOURCES = feenox_SOURCES = \ ./feenox.c \ ./feenox.h \ ./version.c \ ./help.h \ ./contrib/kdtree.c \ ./contrib/kdtree.h \ ./contrib/utlist.h \ ./contrib/uthash.h \ ./flow/init.c \ ./flow/abort.c \ ./flow/conditional.c \ ./flow/error.c \ ./flow/define.c \ ./flow/getptr.c \ ./flow/cleanup.c \ ./flow/instruction.c \ ./flow/step.c \ ./flow/run.c \ ./parser/parser.c \ ./parser/parser.h \ ./parser/auxiliary.c \ ./io/file.c \ ./io/print.c \ ./io/printf.c \ ./math/alias.c \ ./math/assignment.c \ ./math/builtin_functions.c \ ./math/builtin_functionals.c \ ./math/builtin_vectorfunctions.c \ ./math/dae.c \ ./math/expressions.c \ ./math/fit.c \ ./math/function.c \ ./math/matrix.c \ ./math/solve.c \ ./math/vector.c \ ./mesh/init.c \ ./mesh/geometry.c \ ./mesh/neighbors.c \ ./mesh/boundary_condition.c \ ./mesh/physical_group.c \ ./mesh/interpolate.c \ ./mesh/material.c \ ./mesh/element.c \ ./mesh/element.h \ ./mesh/cell.c \ ./mesh/write.c \ ./mesh/integrate.c \ ./mesh/extrema.c \ ./mesh/mesh.c \ ./mesh/gmsh.c \ ./mesh/calculix.c \ ./mesh/vtk.c \ ./mesh/vtu.c \ ./mesh/elements/line2.c \ ./mesh/elements/line3.c \ ./mesh/elements/triang3.c \ ./mesh/elements/triang6.c \ ./mesh/elements/quad4.c \ ./mesh/elements/quad8.c \ ./mesh/elements/quad9.c \ ./mesh/elements/tet4.c \ ./mesh/elements/tet10.c \ ./mesh/elements/hexa8.c \ ./mesh/elements/hexa20.c \ ./mesh/elements/hexa27.c \ ./mesh/elements/prism6.c \ ./mesh/elements/prism15.c \ ./mesh/elements/point.c \ pdes/petsc_snes.c pdes/petsc_ksp.c pdes/parse.c pdes/thermal/heatflux.c pdes/thermal/parser.c pdes/thermal/post.c pdes/thermal/thermal.h pdes/thermal/init.c pdes/thermal/bulk.c pdes/thermal/methods.h pdes/thermal/bc.c pdes/laplace/parser.c pdes/laplace/laplace.h pdes/laplace/init.c pdes/laplace/bulk.c pdes/laplace/methods.h pdes/laplace/bc.c pdes/fem.c pdes/petsc_ts.c pdes/reaction.c pdes/blas.c pdes/slepc_eps.c pdes/distribution.c pdes/dirichlet.c pdes/solve.c pdes/build.c pdes/init.c pdes/mechanical/linearize.c pdes/mechanical/expansion-isotropic.c pdes/mechanical/elastic-isotropic.c pdes/mechanical/parser.c pdes/mechanical/elastic-orthotropic.c pdes/mechanical/stress.c pdes/mechanical/post.c pdes/mechanical/init.c pdes/mechanical/mechanical.h pdes/mechanical/elastic-plane-stress.c pdes/mechanical/bulk.c pdes/mechanical/expansion-orthotropic.c pdes/mechanical/methods.h pdes/mechanical/elastic-plane-strain.c pdes/mechanical/bc.c pdes/available.h pdes/neutron_diffusion/neutron_diffusion.h pdes/neutron_diffusion/currents.c pdes/neutron_diffusion/parser.c pdes/neutron_diffusion/post.c pdes/neutron_diffusion/init.c pdes/neutron_diffusion/bulk.c pdes/neutron_diffusion/methods.h pdes/neutron_diffusion/bc.c pdes/neutron_sn/neutron_sn.h pdes/neutron_sn/parser.c pdes/neutron_sn/post.c pdes/neutron_sn/init.c pdes/neutron_sn/bulk.c pdes/neutron_sn/methods.h pdes/neutron_sn/bc.c pdes/dump.c pdes/methods.h pdes/gradient.c pdes/modal/elastic-isotropic.c pdes/modal/parser.c pdes/modal/elastic-orthotropic.c pdes/modal/post.c pdes/modal/init.c pdes/modal/elastic-plane-stress.c pdes/modal/bulk.c pdes/modal/methods.h pdes/modal/modal.h pdes/modal/elastic-plane-strain.c pdes/modal/bc.cfeenox-1.1/src/flow/0000755000175000017500000000000014773607300011405 500000000000000feenox-1.1/src/flow/define.c0000644000175000017500000003302214773607165012734 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox definition functions * * Copyright (C) 2009--2022 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" extern builtin_function_t builtin_function[N_BUILTIN_FUNCTIONS]; extern builtin_vectorfunction_t builtin_vectorfunction[N_BUILTIN_VECTOR_FUNCTIONS]; extern builtin_functional_t builtin_functional[N_BUILTIN_FUNCTIONALS]; #include #include extern const char factorseparators[]; int feenox_realloc_variable_ptr(var_t *this, double *newptr, int copy_contents) { // si copy_contents es true copiamos el contenido del vector de feenox // antes de tirar el apuntador a la basura if (copy_contents) { *newptr = feenox_var_value(this); } // si el puntero es de feenox, lo liberamos if (this->reallocated == 0) { feenox_free(feenox_value_ptr(this)); } this->reallocated = 1; feenox_value_ptr(this) = newptr; return FEENOX_OK; } int feenox_realloc_vector_ptr(vector_t *this, double *newptr, int copy_contents) { if (newptr == NULL) { feenox_push_error_message("newptr is null"); return FEENOX_ERROR; } double *oldptr = NULL; if (feenox_value_ptr(this) != NULL) { oldptr = gsl_vector_ptr(feenox_value_ptr(this), 0); // if copy_contents is true we copy the contents before throwing the pointer away if (copy_contents) { memcpy(newptr, oldptr, this->size * sizeof(double)); } } if (oldptr == NULL) { feenox_check_alloc(feenox_value_ptr(this) = gsl_vector_alloc(this->size)); } if (this->reallocated == 0) { if (feenox_value_ptr(this)->stride != 1) { feenox_push_error_message("vector '%s' cannot be realloced: stride not equal to 1", this->name); return FEENOX_ERROR; } if (feenox_value_ptr(this)->owner == 0) { feenox_push_error_message("vector '%s' cannot be realloced: not the data owner", this->name); return FEENOX_ERROR; } if (feenox_value_ptr(this)->block->data != feenox_value_ptr(this)->data) { feenox_push_error_message("vector '%s' cannot be realloced: data not pointing to block", this->name); return FEENOX_ERROR; } feenox_free(oldptr); } this->reallocated = 1; feenox_value_ptr(this)->data = newptr; return FEENOX_OK; } void feenox_realloc_matrix_ptr(matrix_t *matrix, double *newptr, int copy_contents) { double *oldptr = gsl_matrix_ptr(feenox_value_ptr(matrix), 0, 0); // si copy_contents es true copiamos el contenido del vector de feenox // antes de tirar el apuntador a la basura if (copy_contents) { memcpy(newptr, oldptr, matrix->rows*matrix->cols * sizeof(double)); } // si el puntero es de feenox, lo liberamos if (matrix->realloced == 0) { feenox_free(oldptr); } matrix->realloced = 1; feenox_value_ptr(matrix)->data = newptr; return; } // visible through the API int feenox_define_variable(const char *name) { var_t *var; if (feenox_check_name(name) != FEENOX_OK) { if ((var = feenox_get_variable_ptr(name)) != NULL) { // the variable already exists, check_name() should have complained // so we remove the error and return the existing variable feenox_pop_error_message(); return FEENOX_OK; } else { // invalid name return FEENOX_ERROR; } } feenox_check_alloc(var = calloc(1, sizeof(var_t))); feenox_check_alloc(var->name = strdup(name)); var->value = calloc(1, sizeof(double)); var->initial_transient = calloc(1, sizeof(double)); var->initial_static = calloc(1, sizeof(double)); HASH_ADD_KEYPTR(hh, feenox.vars, var->name, strlen(var->name), var); return FEENOX_OK; } // visible through the API int feenox_define_alias(const char *new_name, const char *existing_object, const char *row, const char *col) { feenox_call((feenox_check_name(new_name))); alias_t *alias = calloc(1, sizeof(alias_t)); feenox_call(feenox_define_variable(new_name)); if ((alias->new_variable = feenox_get_variable_ptr(new_name)) == NULL) { return FEENOX_ERROR; } if ((alias->matrix = feenox_get_matrix_ptr(existing_object)) == NULL) { if ((alias->vector = feenox_get_vector_ptr(existing_object)) == NULL) { if ((alias->variable = feenox_get_variable_ptr(existing_object)) == NULL) { feenox_push_error_message("unknown allegedly existing object '%s'", existing_object); return FEENOX_ERROR; } } } if (row != NULL) { feenox_call(feenox_expression_parse(&alias->row, row)); } if (col != NULL) { feenox_call(feenox_expression_parse(&alias->col, col)); } LL_APPEND(feenox.aliases, alias); feenox_call(feenox_add_instruction(feenox_instruction_alias, alias)); return FEENOX_OK; } // API int feenox_define_vector(const char *name, const char *size) { vector_t *vector; char *dummy; // since there are names which can come from physical names or some other weird places // we replace spaces with underscores while ((dummy = strchr(name, ' ')) != NULL) { *dummy = '_'; } feenox_call(feenox_check_name(name)); feenox_check_alloc(vector = calloc(1, sizeof(vector_t))); feenox_check_alloc(vector->name = strdup(name)); feenox_call(feenox_expression_parse(&vector->size_expr, size)); HASH_ADD_KEYPTR(hh, feenox.vectors, vector->name, strlen(vector->name), vector); return FEENOX_OK; } vector_t *feenox_define_vector_get_ptr(const char *name, size_t size) { // this function is called from the code, that already knows what the vector size is // the function below is called from the API that allows a string // this is ugly but we don't need too much performance char *size_string = NULL; feenox_check_minusone_null(asprintf(&size_string, "%ld", size)); if (feenox_define_vector(name, size_string) != FEENOX_OK) { return NULL; } feenox_free(size_string); return feenox_get_vector_ptr(name); } // API /* int feenox_vector_attach_function(const char *name, const char *function_data) { vector_t *vector; function_t *function; if ((vector = feenox_get_vector_ptr(name)) == NULL) { feenox_push_error_message("unknown vector '%s'", name); return FEENOX_ERROR; } if ((function = feenox_get_function_ptr(function_data)) == NULL) { feenox_push_error_message("unknown function '%s'", function_data); return FEENOX_ERROR; } vector->function = function; return FEENOX_OK; } */ int feenox_vector_attach_data(const char *name, expr_t *datas) { vector_t *vector; if ((vector = feenox_get_vector_ptr(name)) == NULL) { feenox_push_error_message("unknown vector '%s'", name); return FEENOX_ERROR; } vector->datas = datas; return FEENOX_OK; } // API int feenox_define_matrix(const char *name, const char *rows, const char *cols) { feenox_call(feenox_check_name(name)); matrix_t *matrix; feenox_check_alloc(matrix = calloc(1, sizeof(matrix_t))); feenox_check_alloc(matrix->name = strdup(name)); feenox_call(feenox_expression_parse(&matrix->rows_expr, rows)); feenox_call(feenox_expression_parse(&matrix->cols_expr, cols)); HASH_ADD_KEYPTR(hh, feenox.matrices, matrix->name, strlen(matrix->name), matrix); return FEENOX_OK; } int feenox_matrix_attach_data(const char *name, expr_t *datas) { matrix_t *matrix; if ((matrix = feenox_get_matrix_ptr(name)) == NULL) { feenox_push_error_message("unknown matrix '%s'", name); return FEENOX_ERROR; } matrix->datas = datas; return FEENOX_OK; } int feenox_define_file(const char *name, const char *format, int n_format_args, const char *mode) { file_t *file = NULL; HASH_FIND_STR(feenox.files, name, file); if (file != NULL) { feenox_push_error_message("there already exists a file named '%s'", name); return FEENOX_ERROR; } feenox_check_alloc(file = calloc(1, sizeof(file_t))); feenox_check_alloc(file->name = strdup(name)); feenox_check_alloc(file->format = strdup(format)); if ((file->n_format_args = n_format_args) > 0) { feenox_check_alloc(file->arg = calloc(file->n_format_args, sizeof(expr_t))); } if (mode != NULL && strcmp(mode, "") != 0) { feenox_check_alloc(file->mode = strdup(mode)); } HASH_ADD_KEYPTR(hh, feenox.files, file->name, strlen(file->name), file); return FEENOX_OK; } file_t *feenox_get_or_define_file_get_ptr(const char *name) { file_t *file; if ((file = feenox_get_file_ptr(name)) == NULL) { if (feenox_define_file(name, name, 0, "") != FEENOX_OK) { return NULL; } if ((file = feenox_get_file_ptr(name)) == NULL) { return NULL; } } return file; } int feenox_file_set_path_argument(const char *name, int i, const char *expression) { file_t *file = NULL; if ((file = feenox_get_file_ptr(name)) == NULL) { feenox_push_error_message("unknown file '%s'", name); return FEENOX_ERROR; } if (i < 0) { feenox_push_error_message("negative argument number '%d'", i); return FEENOX_ERROR; } if (i >= file->n_format_args) { feenox_push_error_message("argument number '%d' greater or equal than the number of arguments '%d' (they start from zero)", i, file->n_format_args); return FEENOX_ERROR; } feenox_call(feenox_expression_parse(&file->arg[i], expression)); // mark that we received an argument to see if we got them all when initializing file->n_format_args_given++; return FEENOX_OK; } /* loadable_routine_t *feenox_define_loadable_routine(char *name, void *library) { loadable_routine_t *loadable_routine; char *error; HASH_FIND_STR(feenox.loadable_routines, name, loadable_routine); if (loadable_routine != NULL) { feenox_push_error_message("there already exists a loadable routine named '%s'", name); return NULL; } loadable_routine = calloc(1, sizeof(loadable_routine_t)); loadable_routine->name = strdup(name); // reseteamos errores como dice el manual dlerror(); // cargamos la rutina loadable_routine->routine = dlsym(library, loadable_routine->name); // y vemos si se prendio algun error if ((error = dlerror()) != NULL) { feenox_push_error_message("'%s' when loading routine '%s'", error, loadable_routine->name); dlclose(library); return NULL; } HASH_ADD_KEYPTR(hh, feenox.loadable_routines, loadable_routine->name, strlen(loadable_routine->name), loadable_routine); return loadable_routine; } */ var_t *feenox_define_variable_get_ptr(const char *name) { if (feenox_define_variable(name) != FEENOX_OK) { return NULL; } return feenox_get_variable_ptr(name); } var_t *feenox_get_or_define_variable_get_ptr(const char *name) { var_t *var; if ((var = feenox_get_variable_ptr(name)) == NULL) { if (feenox_define_variable(name) != FEENOX_OK) { return NULL; } var = feenox_get_variable_ptr(name); } return var; } // check if an object name is valid and is available for further usage int feenox_check_name(const char *name) { char *s; var_t *var; vector_t *vector; matrix_t *matrix; function_t *function; if (name == NULL) { feenox_push_error_message("(name is null)"); return FEENOX_ERROR; } if (isdigit(name[0])) { feenox_push_error_message("invalid object name '%s' (it starts with a digit)", name); return FEENOX_ERROR; } if ((s = strpbrk(name, factorseparators)) != NULL) { feenox_push_error_message("invalid object name '%s' (it contains a '%c')", name, s[0]); return FEENOX_ERROR; } HASH_FIND_STR(feenox.vars, name, var); if (var != NULL) { feenox_push_error_message("there already exists a variable named '%s'", name); return FEENOX_ERROR; } HASH_FIND_STR(feenox.vectors, name, vector); if (vector != NULL) { feenox_push_error_message("there already exists a vector named '%s'", name); return FEENOX_ERROR; } HASH_FIND_STR(feenox.matrices, name, matrix); if (matrix != NULL) { feenox_push_error_message("there already exists a matrix named '%s'", name); return FEENOX_ERROR; } HASH_FIND_STR(feenox.functions, name, function); if (function != NULL) { feenox_push_error_message("there already exists a function named '%s'", name); return FEENOX_ERROR; } int i; for (i = 0; i < N_BUILTIN_FUNCTIONS; i++) { if (strcmp(name, builtin_function[i].name) == 0) { feenox_push_error_message("there already exists a built-in function named '%s'", name); return FEENOX_ERROR; } } // TODO /* for (i = 0; i < N_BUILTIN_VECTOR_FUNCTIONS; i++) { if (builtin_vectorfunction[i].name != NULL && strcmp(name, builtin_vectorfunction[i].name) == 0) { feenox_push_error_message("there already exists a built-in vector function named '%s'", name); return FEENOX_ERROR; } } for (i = 0; i < N_BUILTIN_FUNCTIONALS; i++) { if (builtin_functional[i].name != NULL && strcmp(name, builtin_functional[i].name) == 0) { feenox_push_error_message("there already exists a built-in functional named '%s'", name); return FEENOX_ERROR; } } */ return FEENOX_OK; } feenox-1.1/src/flow/abort.c0000644000175000017500000000174714773607165012622 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox abort routine * * Copyright (C) 2009--2023 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_instruction_abort(void *arg) { exit(EXIT_FAILURE); } feenox-1.1/src/flow/step.c0000644000175000017500000000501514773607165012456 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX step * * Copyright (C) 2009--2021 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_step(instruction_t *first, instruction_t *last) { // set the special variable done to true if we are done so it's available during the step if ((int)(feenox_special_var_value(in_static))) { if ((int)(feenox_special_var_value(step_static)) != 1 && (int)(feenox_special_var_value(step_static)) >= (int)(feenox_special_var_value(static_steps))) { feenox_special_var_value(done_static) = 1; } } if (feenox_special_var_value(end_time) == 0) { feenox_special_var_value(done) = feenox_special_var_value(done_static); } else if (feenox_special_var_value(t) >= (feenox_special_var_value(end_time) - 1e-1*feenox_special_var_value(dt))) { feenox_special_var_value(done) = 1; } // sweep the first & last range but minding the conditional blocks instruction_t *ip = first; while (ip != last) { feenox_call(ip->routine(ip->argument)); if (feenox.next_instruction != NULL) { ip = feenox.next_instruction; feenox.next_instruction = NULL; } else { ip = ip->next; } } // put done back in true if anyone set it to zero for whatever reason if ((int)(feenox_special_var_value(in_static))) { if ((int)(feenox_special_var_value(step_static)) >= (int)(feenox_special_var_value(static_steps))) { feenox_special_var_value(done_static) = 1; } } if (feenox_special_var_value(end_time) == 0) { feenox_special_var_value(done) = feenox_special_var_value(done_static); } else if (feenox_special_var_value(t) >= (feenox_special_var_value(end_time) - 1e-1*feenox_special_var_value(dt))) { feenox_special_var_value(done) = 1; } return FEENOX_OK; } feenox-1.1/src/flow/getptr.c0000644000175000017500000001053414773607165013012 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox pointer lookup functions * * Copyright (C) 2009--2013 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" extern builtin_function_t builtin_function[N_BUILTIN_FUNCTIONS]; extern builtin_functional_t builtin_functional[N_BUILTIN_FUNCTIONALS]; extern builtin_vectorfunction_t builtin_vectorfunction[N_BUILTIN_VECTOR_FUNCTIONS]; #include extern const char factorseparators[]; var_t *feenox_get_variable_ptr(const char *name) { var_t *var; HASH_FIND_STR(feenox.vars, name, var); return var; } vector_t *feenox_get_vector_ptr(const char *name) { vector_t *vector; HASH_FIND_STR(feenox.vectors, name, vector); return vector; } matrix_t *feenox_get_matrix_ptr(const char *name) { matrix_t *matrix; HASH_FIND_STR(feenox.matrices, name, matrix); return matrix; } function_t *feenox_get_function_ptr(const char *name) { function_t *function; HASH_FIND_STR(feenox.functions, name, function); return function; } file_t *feenox_get_file_ptr(const char *name) { file_t *file; HASH_FIND_STR(feenox.files, name, file); return file; } /* double (*feenox_get_routine_ptr(const char *name))(const double *) { loadable_routine_t *loadable_routine; HASH_FIND_STR(feenox.loadable_routines, name, loadable_routine); if (loadable_routine == NULL) { return NULL; } return loadable_routine->routine; } loadable_routine_t *feenox_get_loadable_routine(const char *name) { loadable_routine_t *loadable_routine; HASH_FIND_STR(feenox.loadable_routines, name, loadable_routine); return loadable_routine; } */ builtin_function_t *feenox_get_builtin_function_ptr(const char *name) { int i; for (i = 0; i < N_BUILTIN_FUNCTIONS; i++) { if (strcmp(name, builtin_function[i].name) == 0) { return &builtin_function[i]; } } return NULL; } builtin_vectorfunction_t *feenox_get_builtin_vectorfunction_ptr(const char *name) { int i; for (i = 0; i < N_BUILTIN_VECTOR_FUNCTIONS; i++) { if (strcmp(name, builtin_vectorfunction[i].name) == 0) { return &builtin_vectorfunction[i]; } } return NULL; } builtin_functional_t *feenox_get_builtin_functional_ptr(const char *name) { int i; for (i = 0; i < N_BUILTIN_FUNCTIONALS; i++) { if (strcmp(name, builtin_functional[i].name) == 0) { return &builtin_functional[i]; } } return NULL; } vector_t *feenox_get_first_vector(const char *s) { char *line = NULL; feenox_check_alloc_null(line = strdup(s)); vector_t *wanted = NULL; char *factor = strtok(line, factorseparators); while (factor != NULL) { if ((wanted = feenox_get_vector_ptr(factor)) != NULL) { feenox_free(line); return wanted; } factor = strtok(NULL, factorseparators); } feenox_free(line); return NULL; } /* matrix_t *feenox_get_first_matrix(const char *s) { char *line = strdup(s); char *factor; matrix_t *wanted; factor = strtok(line, factorseparators); while (factor != NULL) { if ((wanted = feenox_get_matrix_ptr(factor)) != NULL) { feenox_free(line); return wanted; } factor = strtok(NULL, factorseparators); } feenox_free(line); return NULL; } char *feenox_get_first_dot(const char *s) { char *line = strdup(s); char *token; char *dummy; char *wanted; token = strtok(line, factorseparators); while (token != NULL) { if ((dummy = strstr(token, "_dot")) != NULL) { *dummy = '\0'; wanted = strdup(token); feenox_free(line); return wanted; } token = strtok(NULL, factorseparators); } feenox_free(line); return NULL; } */ feenox-1.1/src/flow/init.c0000644000175000017500000005136714773607165012461 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX initialization routines * * Copyright (C) 2009--2024 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include #include #include #include #include #ifdef HAVE_CLOCK_GETTIME #include #endif #ifdef HAVE_READLINE #include #endif int feenox_initialize(int argc, char **argv) { int optc = 0; int option_index = 0; int show_help = 0; int show_version = 0; ///help+usage+desc [options] inputfile [replacement arguments] [petsc options] const struct option longopts[] = { ///op+help+option `-h`, `--help` ///op+help+desc display options and detailed explanations of command-line usage { "help", no_argument, NULL, 'h'}, ///op+version+option `-v`, `--version` ///op+version+desc display brief version information and exit { "version", no_argument, NULL, 'v'}, ///op+versions+option `-V`, `--versions` ///op+versions+desc display detailed version information { "versions", no_argument, NULL, 'V'}, { "long-version", no_argument, NULL, 'V'}, { "version-long", no_argument, NULL, 'V'}, ///op+check+option `-c`, `--check` ///op+check+desc validates if the input file is sane or not { "check", no_argument, NULL, 'c'}, ///op+pdes+option `--pdes` ///op+pdes+desc list the types of `PROBLEM`s that FeenoX can solve, one per line { "pdes", no_argument, NULL, 'p'}, ///op+elements_info+option `--elements_info` ///op+elements_info+desc output a document with information about the supported element types { "elements_info", no_argument, NULL, 'e'}, ///op+ast+option `--ast` ///op+ast+desc dump an abstract syntax tree of the input { "ast", no_argument, NULL, 'a'}, ///op+linear+option `--linear` ///op+linear+desc force FeenoX to solve the PDE problem as linear { "linear", no_argument, NULL, 'l'}, ///op+non-linear+option `--non-linear` ///op+non-linear+desc force FeenoX to solve the PDE problem as non-linear { "nonlinear", no_argument, NULL, 'n'}, { "non-linear", no_argument, NULL, 'n'}, //op+debug+option `-d`, `--debug`. //op+debug+desc start in debug mode // { "debug", no_argument, NULL, 'd'}, //op+summarize+option `-s`, `--sumarize` //op+summarize+desc list all symbols in the input file and exit // { "summarize", no_argument, NULL, 's'}, { NULL, 0, NULL, 0 } }; ///help+extra+desc Instructions will be read from standard input if "-" is passed as `inputfile`, i.e. ///help+extra+desc @ ///help+extra+desc ```terminal ///help+extra+desc $ echo 'PRINT 2+2' | feenox - ///help+extra+desc 4 ///help+extra+desc ``` ///help+extra+desc @ ///help+extra+desc The optional `[replacement arguments]` part of the command line mean that each ///help+extra+desc argument after the input file that does not start with an hyphen will be expanded ///help+extra+desc verbatim in the input file in each occurrence of `$1`, `$2`, etc. For example ///help+extra+desc @ ///help+extra+desc ```terminal ///help+extra+desc $ echo 'PRINT $1+$2' | feenox - 3 4 ///help+extra+desc 7 ///help+extra+desc ``` ///help+extra+desc @ ///help+extra+desc PETSc and SLEPc options can be passed in `[petsc options]` (or `[options]`) as well, with the ///help+extra+desc difference that two hyphens have to be used instead of only once. For example, ///help+extra+desc to pass the PETSc option `-ksp_view` the actual FeenoX invocation should be ///help+extra+desc @ ///help+extra+desc ```terminal ///help+extra+desc $ feenox input.fee --ksp_view ///help+extra+desc ``` ///help+extra+desc @ ///help+extra+desc For PETSc options that take values, en equal sign has to be used: ///help+extra+desc @ ///help+extra+desc ```terminal ///help+extra+desc $ feenox input.fee --mg_levels_pc_type=sor ///help+extra+desc ``` ///help+extra+desc @ ///help+extra+desc See for annotated examples. // make a copy before calling getopt so we can re-use argv & argc for PETSc feenox_check_alloc(feenox.argv_orig = malloc((argc+1) * sizeof(char *))); int i = 0; for (i = 0; i < argc; i++) { feenox_check_alloc(feenox.argv_orig[i] = strdup(argv[i])); } feenox.argv_orig[i] = NULL; int dump_ast = 0; opterr = 0; // don't complain about unknown options, they can be for PETSc/SLEPc while ((optc = getopt_long_only(argc, argv, "hvVc", longopts, &option_index)) != -1) { switch (optc) { case 'h': show_help = 1; break; case 'v': show_version = version_copyright; break; case 'V': show_version = version_info; break; case 'c': feenox.check = 1; break; case 'a': feenox.check = 1; dump_ast = 1; break; case 'p': show_version = version_available_pdes; break; case 'e': show_version = version_elements_info; break; case 'l': feenox.pde.math_type = math_type_linear; break; case 'n': feenox.pde.math_type = math_type_nonlinear; break; // case 'd': // feenox.debug = 1; // break; // case 's': // feenox.mode = mode_list_vars; // break; case '?': break; default: break; } } // we need to know this so we can handle expansion arguments feenox.optind = optind; if (show_help) { feenox_show_help(argv[0], 1); exit(EXIT_SUCCESS); } else if (show_version) { feenox_show_version(show_version); exit(EXIT_SUCCESS); } else if (feenox.optind == argc) { feenox_show_version(version_compact); printf("\n"); feenox_show_help(argv[0], 0); exit(EXIT_SUCCESS); } // after getopt() the arguments are re-ordered as needed to further // process the input file and the replacement arguments feenox.argc = argc; feenox_check_alloc(feenox.argv = calloc(argc+1, sizeof(char *))); for (i = 0; i < argc; i++) { feenox_check_alloc(feenox.argv[i] = strdup(argv[i])); } feenox.argv[i] = NULL; // get a pointer to the main input file feenox.main_input_filepath = strdup(feenox.argv[feenox.optind]); // remember the base directory of the input file so we can try harder to find files feenox_check_alloc(feenox.main_input_dirname = strdup(dirname(argv[feenox.optind]))); // remove the directory and trailing .fee extension so ${0} has the case name // first we have to make a copy of the current argv to pass it to basename // because basename might break the argument char *argv0 = NULL; feenox_check_alloc(argv0 = strdup(feenox.argv[feenox.optind])); // we should now free the original argv; feenox_free(feenox.argv[feenox.optind]); // get the basename (it is a pointer to statically allocated memory) char *argv0_basename = basename(argv0); char *fee = strstr(argv0_basename, ".fee"); if (fee != NULL) { *fee = '\0'; } // put the resulting argv0 in the actual argv0 feenox_check_alloc(feenox.argv[feenox.optind] = strdup(argv0_basename)); // free argv0 feenox_free(argv0); // turn of GSL error handler // gsl_set_error_handler_off(); // TODO: use our own // gsl_set_error_handler(feenox_gsl_handler); signal(SIGINT, feenox_signal_handler); signal(SIGTERM, feenox_signal_handler); feenox_call(feenox_init_special_objects()); feenox_call(feenox_parse_main_input_file(feenox.main_input_filepath)); if (dump_ast) { printf("{\n"); printf(" \"bcs\": [\n"); // this is a loop over a hash, not over a linked list for (bc_t *bc = feenox.mesh.bcs; bc != NULL; bc = bc->hh.next) { printf(" { \"name\": \"%s\",\n", bc->name); printf(" \"groups\": [\n"); int first = 1; physical_group_t *physical_group = NULL; for (physical_group = bc->mesh->physical_groups; physical_group != NULL; physical_group = physical_group->hh.next) { for (int i = 0; i < physical_group->n_bcs; i++) { if (physical_group->bc[i] == bc) { if (first == 0) { printf(",\n"); } else { first = 0; } printf(" \"%s\"", physical_group->name); } } } printf("\n"); printf(" ] }"); if (bc->hh.next != NULL) { printf(","); } printf("\n"); } printf(" ]\n"); printf("}\n"); } return FEENOX_OK; } int feenox_init_special_objects(void) { #ifdef HAVE_CLOCK_GETTIME if (clock_gettime(CLOCK_MONOTONIC, &feenox.tp0) < 0) { feenox_runtime_error(); } #endif // HAVE_CLOCK_GETTIME var_t *dummy = NULL; ///va+done_static+desc Flag that indicates whether the static calculation is over or not. ///va+done_static+detail It is set to true (i.e. $\neq 0$) by feenox if `step_static` $\ge$ `static_steps`. ///va+done_static+detail If the user sets it to true, the current step is marked as the last static step and ///va+done_static+detail the static calculation ends after finishing the step. ///va+done_static+detail It can be used in `IF` blocks to check if the static step is finished or not. feenox_special_var(done_static) = feenox_get_or_define_variable_get_ptr("done_static"); ///va+done_transient+desc Flag that indicates whether the transient calculation is over or not. ///va+done_transient+detail It is set to true (i.e. $\neq 0$) by feenox if `t` $\ge$ `end_time`. ///va+done_transient+detail If the user sets it to true, the current step is marked as the last transient step and ///va+done_transient+detail the transient calculation ends after finishing the step. ///va+done_transient+detail It can be used in `IF` blocks to check if the transient steps are finished or not. feenox_special_var(done_transient) = feenox_get_or_define_variable_get_ptr("done_transient"); ///va+done+desc Flag that indicates whether the overall calculation is over. ///va+done+detail This variable is set to true by FeenoX when the computation finished so it can ///va+done+detail be checked in an `IF` block to do something only in the last step. ///va+done+detail But this variable can also be set to true from the input file, indicating that ///va+done+detail the current step should also be the last one. For example, one can set `end_time = infinite` ///va+done+detail and then finish the computation at $t=10$ by setting `done = t > 10`. ///va+done+detail This `done` variable can also come from (and sent to) other sources, like ///va+done+detail a shared memory object for coupled calculations. feenox_special_var(done) = feenox_get_or_define_variable_get_ptr("done"); ///va+step_static+desc Indicates the current step number of the iterative static calculation. ///va+step_static+detail This is a read-only variable that contains the current step of the static calculation. feenox_special_var(step_static) = feenox_get_or_define_variable_get_ptr("step_static"); feenox_special_var_value(step_static) = 0; ///va+step_transient+desc Indicates the current step number of the transient static calculation. ///va+step_transient+detail This is a read-only variable that contains the current step of the transient calculation. feenox_special_var(step_transient) = feenox_get_or_define_variable_get_ptr("step_transient"); feenox_special_var_value(step_transient) = 0; ///va+in_static+desc Flag that indicates if FeenoX is solving the iterative static calculation. ///va+in_static+detail This is a read-only variable that is non zero if the static calculation. feenox_special_var(in_static) = feenox_get_or_define_variable_get_ptr("in_static"); ///va+in_static_first+desc Flag that indicates if feenox is in the first step of the iterative static calculation. feenox_special_var(in_static_first) = feenox_get_or_define_variable_get_ptr("in_static_first"); ///va+in_static_last+desc Flag that indicates if feenox is in the last step of the iterative static calculation. feenox_special_var(in_static_last) = feenox_get_or_define_variable_get_ptr("in_static_last"); ///va+in_transient+desc Flag that indicates if feenox is solving transient calculation. feenox_special_var(in_transient) = feenox_get_or_define_variable_get_ptr("in_transient"); ///va+in_transient_first+desc Flag that indicates if feenox is in the first step of the transient calculation. feenox_special_var(in_transient_first) = feenox_get_or_define_variable_get_ptr("in_transient_first"); ///va+in_transient_last+desc Flag that indicates if feenox is in the last step of the transient calculation. feenox_special_var(in_transient_last) = feenox_get_or_define_variable_get_ptr("in_transient_last"); ///va+in_time_path+desc Flag that indicates if feenox is in a time belonging to a `TIME_PATH` keyword. feenox_special_var(in_time_path) = feenox_get_or_define_variable_get_ptr("in_time_path"); ///va+static_steps+desc Number of steps that ought to be taken during the static calculation, to be set by the user. ///va+static_steps+detail The default value is one, meaning only one static step. feenox_special_var(static_steps) = feenox_get_or_define_variable_get_ptr("static_steps"); feenox_special_var_value(static_steps) = 1; ///va+end_time+desc Final time of the transient calculation, to be set by the user. ///va+end_time+detail The default value is zero, meaning no transient calculation. feenox_special_var(end_time) = feenox_get_or_define_variable_get_ptr("end_time"); ///va+t+desc Actual value of the time for transient calculations. ///va+t+detail This variable is set by FeenoX, but can be written by ///va+t+detail the user for example by importing it from another ///va+t+detail transient code by means of shared-memory objects. ///va+t+detail Care should be taken when solving DAE systems and overwriting `t`. feenox_special_var(t) = feenox_get_or_define_variable_get_ptr("t"); feenox_special_var_value(t) = 0; ///va+dt+desc Actual value of the time step for transient calculations. ///va+dt+detail When solving DAE systems, ///va+dt+detail this variable is set by feenox. It can be written by the user for example by importing it from another ///va+dt+detail transient code by means of shared-memory objects. Care should be taken when ///va+dt+detail solving DAE systems and overwriting `t`. Default value is DEFAULT_DT, which is ///va+dt+detail a power of two and roundoff errors are thus reduced. feenox_special_var(dt) = feenox_get_or_define_variable_get_ptr("dt"); feenox_special_var_value(dt) = DEFAULT_DT; ///va_dae+dae_rtol+desc Maximum allowed relative error for the solution of DAE systems. ///va_dae+dae_rtol+detail Default value is ///va_dae+dae_rtol+detail is $1 \times 10^{-6}$. If a fine per-variable error control is needed, special vector ///va_dae+dae_rtol+detail `abs_error` should be used. feenox_special_var(dae_rtol) = feenox_get_or_define_variable_get_ptr("dae_rtol"); feenox_special_var_value(dae_rtol) = DEFAULT_DAE_RTOL; ///va+min_dt+desc Minimum bound for the time step that feenox should take when solving DAE systems. feenox_special_var(min_dt) = feenox_get_or_define_variable_get_ptr("min_dt"); ///va+max_dt+desc Maximum bound for the time step that feenox should take when solving DAE systems. feenox_special_var(max_dt) = feenox_get_or_define_variable_get_ptr("max_dt"); ///va+i+desc Dummy index, used mainly in vector and matrix row subindex expressions. feenox_special_var(i) = feenox_get_or_define_variable_get_ptr("i"); ///va+j+desc Dummy index, used mainly in matrix column subindex expressions. feenox_special_var(j) = feenox_get_or_define_variable_get_ptr("j"); ///va+pi+desc A double-precision floating point representation of the number $\pi$ ///va+pi+detail It is equal to the `M_PI` constant in `math.h` . feenox_special_var(pi) = feenox_get_or_define_variable_get_ptr("pi"); feenox_special_var_value(pi) = M_PI; ///va+zero+desc A very small positive number. ///va+zero+detail It is taken to avoid roundoff ///va+zero+detail errors when comparing floating point numbers such as replacing $a \leq a_\text{max}$ ///va+zero+detail with $a < a_\text{max} +$ `zero`. ///va+zero+detail Default is $(1/2)^{-50} \approx 9\times 10^{-16}$ . feenox_special_var(zero) = feenox_get_or_define_variable_get_ptr("zero"); feenox_special_var_value(zero) = ZERO; ///va+infinite+desc A very big positive number. ///va+infinite+detail It can be used as `end_time = infinite` or ///va+infinite+detail to define improper integrals with infinite limits. ///va+infinite+detail Default is $2^{50} \approx 1 \times 10^{15}$. feenox_special_var(infinite) = feenox_get_or_define_variable_get_ptr("infinite"); feenox_special_var_value(infinite) = INFTY; ///va+pid+desc The Unix process id of the FeenoX instance. feenox_special_var(pid) = feenox_get_or_define_variable_get_ptr("pid"); feenox_special_var_value(pid) = (double)getpid(); ///va+mpi_size+desc The number of total ranks in an MPI execution. feenox_special_var(mpi_size) = feenox_get_or_define_variable_get_ptr("mpi_size"); feenox_special_var_value(mpi_size) = 0; ///va+mpi_rank+desc The current rank in an MPI execution. Mind the `PRINTF_ALL` instruction. feenox_special_var(mpi_rank) = feenox_get_or_define_variable_get_ptr("mpi_rank"); feenox_special_var_value(mpi_rank) = 0; ///va+on_nan+desc This should be set to a mask that indicates how to proceed if Not-A-Number signal (such as a division by zero) ///va+on_nan+desc is generated when evaluating any expression within feenox. feenox_special_var(on_nan) = feenox_get_or_define_variable_get_ptr("on_nan"); ///va+on_gsl_error+desc This should be set to a mask that indicates how to proceed if an error ir raised in any ///va+on_gsl_error+desc routine of the GNU Scientific Library. feenox_special_var(on_gsl_error) = feenox_get_or_define_variable_get_ptr("on_gsl_error"); ///va+on_ida_error+desc This should be set to a mask that indicates how to proceed if an error ir raised in any ///va+on_ida_error+desc routine of the SUNDIALS Library. feenox_special_var(on_ida_error) = feenox_get_or_define_variable_get_ptr("on_sundials_error"); dummy = feenox_get_or_define_variable_get_ptr("quit"); feenox_var_value(dummy) = 0; dummy = feenox_get_or_define_variable_get_ptr("report"); feenox_var_value(dummy) = 0; dummy = feenox_get_or_define_variable_get_ptr("dont_quit"); feenox_var_value(dummy) = ON_ERROR_NO_QUIT; dummy = feenox_get_or_define_variable_get_ptr("dont_report"); feenox_var_value(dummy) = ON_ERROR_NO_REPORT; //va+realtime_scale+desc If this variable is not zero, then the transient problem is run trying to synchronize the //va+realtime_scale+desc problem time with realtime, up to a scale given. //va+realtime_scale+detail For example, if the scale is set to one, then //va+realtime_scale+detail FeenoX will advance the problem time at the same pace that the real wall time advances. If set to //va+realtime_scale+detail two, FeenoX time will advance twice as fast as real time, and so on. If the calculation time is //va+realtime_scale+detail slower than real time modified by the scale, this variable has no effect on the overall behavior //va+realtime_scale+detail and execution will proceed as quick as possible with no delays. // feenox_special_var(realtime_scale) = feenox_get_or_define_variable_get_ptr("realtime_scale"); // standard unix files feenox_call(feenox_define_file("stdin", "stdin", 0, "r")); feenox.special_files._stdin = feenox_get_file_ptr("stdin"); feenox.special_files._stdin->pointer = stdin; feenox_call(feenox_define_file("stdout", "stdout", 0, "w")); feenox.special_files._stdout = feenox_get_file_ptr("stdout"); feenox.special_files._stdout->pointer = stdout; feenox_call(feenox_define_file("stderr", "stderr", 0, "w")); feenox.special_files._stderr = feenox_get_file_ptr("stderr"); feenox.special_files._stderr->pointer = stderr; return FEENOX_OK; } // esta se llama despues del parser, hay que verificar que everything este manzana // y pedir shared memory objecst y esas cosas /* int feenox_init_after_parser(void) { int i; #ifdef HAVE_READLINE // autocompletion rl_attempted_completion_function = feenox_rl_completion; #endif return WASORA_RUNTIME_OK; } */ feenox-1.1/src/flow/cleanup.c0000644000175000017500000003513114773607165013134 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox cleanup routines * * Copyright (C) 2009--2018,2020 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include #include void feenox_polite_exit(int error) { feenox_special_var_value(done) = 1; feenox_finalize(); exit(error); return; } /* void feenox_free_shm(void) { io_t *io; struct semaphore_t *semaphore; LL_FOREACH(feenox.ios, io) { if (io->shm_pointer_double != NULL) { feenox_free_shared_pointer(io->shm_pointer_double, io->shm_name, io->size*sizeof(double)); } if (io->shm_pointer_float != NULL) { feenox_free_shared_pointer(io->shm_pointer_float, io->shm_name, io->size*sizeof(float)); } if (io->shm_pointer_char != NULL) { feenox_free_shared_pointer(io->shm_pointer_char, io->shm_name, io->size*sizeof(char)); } if (io->shm_name != NULL) { feenox_free(io->shm_name); } } LL_FOREACH(feenox.semaphores, semaphore) { feenox_free_semaphore(semaphore->pointer, semaphore->name); } return; } void feenox_free_files(void) { file_t *file, *tmp; int i; HASH_ITER(hh, feenox.files, file, tmp) { if (file->pointer != stdin && file->pointer != stdout) { feenox_instruction_close_file(file); } feenox_free(file->name); feenox_free(file->format); feenox_free(file->path); feenox_free(file->mode); for (i = 0; i < file->n_args; i++) { feenox_destroy_expression(&file->arg[i]); } feenox_free(file->arg); HASH_DEL(feenox.files, file); feenox_free(file); } return; } void feenox_free_functions(void) { function_t *function = NULL; function_t *tmp = NULL; // no vale ir hacia adelante porque las funciones siguientes // pueden tener referencias a funciones anteriores, hay que // ir al vesre de atras para adelante if ((function = feenox.functions) != NULL) { while (function->hh.next != NULL) { function = function->hh.next; } for (; function != NULL; function = tmp) { tmp = function->hh.prev; feenox_free_function(function); } } return; } void feenox_free_function(function_t *function) { int i; if (function->algebraic_expression.n_tokens != 0) { feenox_destroy_expression(&function->algebraic_expression); } if (function->data_argument_alloced) { for (i = 0; i < function->n_arguments; i++) { feenox_free(function->data_argument[i]); function->data_argument[i] = NULL; } feenox_free(function->data_argument); function->data_argument = NULL; } if (function->data_value != NULL) { feenox_free(function->data_value); function->data_value = NULL; } feenox_free(function->name_in_mesh); feenox_free(function->data_file); feenox_free(function->column); // este free es problematico if (function->var_argument_alloced) { feenox_free(function->var_argument); } if (function->interp != NULL) { gsl_interp_feenox_free(function->interp); } if (function->interp_accel != NULL) { gsl_interp_accel_feenox_free(function->interp_accel); } feenox_free(function->name); HASH_DEL(feenox.functions, function); feenox_free(function); return; } void feenox_free_var(var_t *var) { alias_t *alias; int is_alias = 0; // si somos un alias no tenemos que desalocar nada LL_FOREACH(feenox.aliases, alias) { if (alias->new_variable == var) { is_alias = 1; } } if (is_alias == 0) { if (var->realloced == 0) { feenox_free(feenox_value_ptr(var)); } feenox_free(var->initial_transient); feenox_free(var->initial_static); feenox_free(var->name); } HASH_DEL(feenox.vars, var); feenox_free(var); return; } void feenox_free_vars(void) { var_t *var, *tmp; HASH_ITER(hh, feenox.vars, var, tmp) { feenox_free_var(var); } return; } void feenox_free_vector(vector_t *vector) { if (vector->realloced == 0 && vector->initialized) { if (feenox_value_ptr(vector) != NULL) gsl_vector_feenox_free(feenox_value_ptr(vector)); if (vector->initial_static != NULL) gsl_vector_feenox_free(vector->initial_static); if (vector->initial_transient != NULL) gsl_vector_feenox_free(vector->initial_transient); } if (vector->size_expr != NULL) { feenox_destroy_expression(vector->size_expr); } feenox_free(vector->size_expr); vector->size_expr = NULL; feenox_free(vector->name); HASH_DEL(feenox.vectors, vector); feenox_free(vector); return; } void feenox_free_matrices(void) { matrix_t *matrix, *tmp; HASH_ITER(hh, feenox.matrices, matrix, tmp) { feenox_free_matrix(matrix); } return; } void feenox_free_matrix(matrix_t *matrix) { feenox_free(matrix->name); if (matrix->realloced == 0) { gsl_matrix_feenox_free(feenox_value_ptr(matrix)); gsl_matrix_feenox_free(matrix->initial_static); gsl_matrix_feenox_free(matrix->initial_transient); } HASH_DEL(feenox.matrices, matrix); feenox_free(matrix); return; } void feenox_free_vectors(void) { vector_t *vector, *tmp; HASH_ITER(hh, feenox.vectors, vector, tmp) { feenox_free_vector(vector); } return; } void feenox_free_print_vectors(void) { print_vector_t *print_vector, *tmp; print_token_t *print_token, *tmp2; LL_FOREACH_SAFE(feenox.print_vectors, print_vector, tmp) { feenox_free(print_vector->format); feenox_free(print_vector->separator); LL_FOREACH_SAFE(print_vector->tokens, print_token, tmp2) { feenox_destroy_expression(&print_vector->tokens->expression); LL_DELETE(print_vector->tokens, print_token); feenox_free(print_token); } LL_DELETE(feenox.print_vectors, print_vector); feenox_free(print_vector); } return; } void feenox_free_print_functions(void) { print_function_t *print_function, *tmp; print_token_t *print_token, *tmp2; int i; LL_FOREACH_SAFE(feenox.print_functions, print_function, tmp) { feenox_free(print_function->format); feenox_free(print_function->separator); if (print_function->first_function != NULL) { for (i = 0; i < print_function->first_function->n_arguments; i++) { if (print_function->range.min != NULL) { feenox_destroy_expression(&print_function->range.min[i]); } if (print_function->range.max != NULL) { feenox_destroy_expression(&print_function->range.max[i]); } if (print_function->range.step != NULL) { feenox_destroy_expression(&print_function->range.step[i]); } if (print_function->range.nsteps != NULL) { feenox_destroy_expression(&print_function->range.nsteps[i]); } } } LL_FOREACH_SAFE(print_function->tokens, print_token, tmp2) { feenox_destroy_expression(&print_token->expression); feenox_free(print_token->text); LL_DELETE(print_function->tokens, print_token); feenox_free(print_token); } LL_DELETE(feenox.print_functions, print_function); feenox_free(print_function); } return; } void feenox_free_prints(void) { print_t *print, *tmp; print_token_t *print_token, *tmp2; LL_FOREACH_SAFE(feenox.prints, print, tmp) { feenox_free(print->separator); LL_FOREACH_SAFE(print->tokens, print_token, tmp2) { feenox_destroy_expression(&print_token->expression); feenox_free(print_token->text); feenox_free(print_token->format); LL_DELETE(print->tokens, print_token); feenox_free(print_token); } LL_DELETE(feenox.prints, print); feenox_free(print); } return; } void feenox_free_solves(void) { solve_t *solve, *tmp; int i; LL_FOREACH_SAFE(feenox.solves, solve, tmp) { feenox_free(solve->unknown); if (solve->residual != NULL) { for (i = 0; i < solve->n; i++) { feenox_destroy_expression(&solve->residual[i]); } feenox_free(solve->residual); } if (solve->guess != NULL) { for (i = 0; i < solve->n; i++) { feenox_destroy_expression(&solve->guess[i]); } feenox_free(solve->guess); } feenox_destroy_expression(&solve->epsabs); feenox_destroy_expression(&solve->epsrel); LL_DELETE(feenox.solves, solve); feenox_free(solve); } return; } void feenox_free_m4(void) { m4_t *m4, *tmp; m4_macro_t *m4_macro, *tmp2; LL_FOREACH_SAFE(feenox.m4s, m4, tmp) { LL_FOREACH_SAFE(m4->macros, m4_macro, tmp2) { feenox_free(m4_macro->name); feenox_free(m4_macro->print_token.format); feenox_destroy_expression(&m4_macro->print_token.expression); LL_DELETE(m4->macros, m4_macro); feenox_free(m4_macro); } LL_DELETE(feenox.m4s, m4); feenox_free(m4); } return; } */ void feenox_free_dae(void) { #ifdef HAVE_SUNDIALS dae_t *dae = NULL; dae_t *tmp = NULL; LL_FOREACH_SAFE(feenox.dae.daes, dae, tmp) { feenox_expression_destroy(&dae->residual); feenox_expression_destroy(&dae->expr_i_min); feenox_expression_destroy(&dae->expr_i_max); feenox_expression_destroy(&dae->expr_j_min); feenox_expression_destroy(&dae->expr_j_max); LL_DELETE(feenox.dae.daes, dae); feenox_free(dae); } if (feenox.dae.system != NULL) { IDAFree(&feenox.dae.system); feenox.dae.system = NULL; } if (feenox.dae.x != NULL) { N_VDestroy_Serial(feenox.dae.x); feenox.dae.x = NULL; } if (feenox.dae.dxdt != NULL) { N_VDestroy_Serial(feenox.dae.dxdt); feenox.dae.dxdt = NULL; } if (feenox.dae.id != NULL) { N_VDestroy_Serial(feenox.dae.id); feenox.dae.id = NULL; } #if SUNDIALS_VERSION_MAJOR >= 6 SUNContext_Free(&feenox.dae.ctx); #endif #endif return; } /* void feenox_free_assignments(void) { assignment_t *assignment, *tmp; LL_FOREACH_SAFE(feenox.assignments, assignment, tmp) { feenox_destroy_expression(&assignment->rhs); feenox_destroy_expression(&assignment->t_min); feenox_destroy_expression(&assignment->t_max); feenox_destroy_expression(&assignment->i_min); feenox_destroy_expression(&assignment->i_max); feenox_destroy_expression(&assignment->j_min); feenox_destroy_expression(&assignment->j_max); feenox_destroy_expression(&assignment->col); feenox_destroy_expression(&assignment->row); LL_DELETE(feenox.assignments, assignment); feenox_free(assignment); } return; } void feenox_free_instructions(void) { instruction_t *instruction, *tmp; LL_FOREACH_SAFE(feenox.instructions, instruction, tmp) { LL_DELETE(feenox.instructions, instruction); if (instruction->argument_alloced) { feenox_free(instruction->argument); } feenox_free(instruction); } return; } */ void feenox_expression_destroy(expr_t *expr) { if (expr == NULL) { return; } int nallocs = 0; expr_item_t *item = NULL; expr_item_t *tmp = NULL; LL_FOREACH_SAFE(expr->items, item, tmp) { if (item->arg != NULL) { switch (item->type) { case EXPR_VECTOR: nallocs = 1; break; case EXPR_MATRIX: nallocs = 2; break; case EXPR_BUILTIN_FUNCTION: nallocs = item->builtin_function->max_arguments; break; case EXPR_BUILTIN_FUNCTIONAL: nallocs = item->builtin_functional->max_arguments; break; case EXPR_FUNCTION: nallocs = item->function->n_arguments; break; case EXPR_BUILTIN_VECTORFUNCTION: nallocs = item->builtin_vectorfunction->max_arguments; break; default: nallocs = 0; break; } for (int j = nallocs-1; j >= 0; j--) { feenox_expression_destroy(&item->arg[j]); } feenox_free(item->arg); } if (item->vector != NULL || item->builtin_vectorfunction != NULL) { feenox_free(item->vector_arg); } if (item->aux != NULL) { feenox_free(item->aux); } feenox_free(item); } if (expr->string != NULL) { feenox_free(expr->string); expr->string = NULL; } expr = NULL; return; } void feenox_finalize(void) { // int i; /* if (feenox.min.n != 0) { if (feenox.min.guess != NULL) { for (j = feenox.min.n-1; j >= 0; j--) { feenox_destroy_expression(&feenox.min.guess[j]); } feenox_free(feenox.min.guess); } if (feenox.min.gradient != NULL) { for (j = feenox.min.n-1; j >= 0; j--) { feenox_destroy_expression(&feenox.min.gradient[j]); } feenox_free(feenox.min.gradient); } feenox_destroy_expression(&feenox.min.gradtol); feenox_destroy_expression(&feenox.min.tol); feenox_free(feenox.min.x); } if (feenox.fit.p != 0) { if (feenox.fit.guess != NULL) { for (j = feenox.fit.p-1; j >= 0; j--) { feenox_destroy_expression(&feenox.fit.guess[j]); } feenox_free(feenox.fit.guess); } feenox_destroy_expression(&feenox.fit.deltaepsabs); feenox_destroy_expression(&feenox.fit.deltaepsrel); feenox_free(feenox.fit.param); feenox_free(feenox.fit.sigma); } feenox_free_assignments(); */ feenox_free_dae(); /* feenox_free_prints(); feenox_free_print_vectors(); feenox_free_print_functions(); feenox_free_solves(); feenox_free_shm(); feenox_free_instructions(); feenox_free_functions(); feenox_free_files(); feenox_free_vars(); feenox_free_vectors(); feenox_free_matrices(); feenox_free_m4(); feenox_free(feenox.error); feenox_free(feenox.line); */ /* for (i = 0; i < feenox.argc_orig; i++) { feenox_free(feenox.argv_orig[i]); } feenox_free(feenox.argv_orig); */ // feenox_free(feenox.main_input_filepath); #ifdef HAVE_SLEPC EPSDestroy(&feenox.pde.eps); #endif #ifdef HAVE_PETSC MatDestroy(&feenox.pde.M); MatDestroy(&feenox.pde.M_bc); MatDestroy(&feenox.pde.K); MatDestroy(&feenox.pde.K_bc); VecDestroy(&feenox.pde.phi); if (feenox.pde.petscinit_called == PETSC_TRUE) { #ifdef HAVE_SLEPC SlepcFinalize(); #else PetscFinalize(); #endif } #endif return; } feenox-1.1/src/flow/instruction.c0000644000175000017500000000223414773607165014064 00000000000000#include "feenox.h" int feenox_add_instruction(int (*routine)(void *), void *argument) { return (feenox_add_instruction_and_get_ptr(routine, argument) == NULL); } instruction_t *feenox_add_instruction_and_get_ptr(int (*routine)(void *), void *argument) { instruction_t *instruction; if (feenox.dae.reading_daes == 1) { feenox_push_error_message("cannot have instructions within DAEs"); return NULL; } feenox_check_alloc_null(instruction = calloc(1, sizeof(instruction_t))); instruction->routine = routine; instruction->argument = argument; if (feenox.active_conditional_block != NULL) { if (feenox.active_conditional_block->else_of == NULL && feenox.active_conditional_block->first_true_instruction == NULL) { feenox.active_conditional_block->first_true_instruction = instruction; } else if (feenox.active_conditional_block->else_of != NULL && feenox.active_conditional_block->first_false_instruction == NULL) { feenox.active_conditional_block->first_false_instruction = instruction; } } feenox.last_defined_instruction = instruction; LL_APPEND(feenox.instructions, instruction); return instruction; } feenox-1.1/src/flow/run.c0000644000175000017500000002337714773607165012322 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * FeenoX standard run * * Copyright (C) 2009--2021 Jeremy Theler * * This file is part of FeenoX. * * FeenoX is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -x------- -- - - - */ #include "feenox.h" int feenox_run(void) { // first the static step (or steps) feenox_special_var_value(in_static) = 1; feenox_special_var_value(in_static_first) = 1; while (!feenox_special_var_value(done) && !feenox_special_var_value(done_static) && (int)(feenox_special_var_value(step_static) < rint(feenox_special_var_value(static_steps)))) { // TODO // feenox_debug(); feenox_special_var_value(step_static) = feenox_special_var_value(step_static) + 1; if ((int)feenox_special_var_value(step_static) != 1 && (int)feenox_special_var_value(step_static) == (int)feenox_special_var_value(static_steps)) { feenox_special_var_value(in_static_last) = 1; } if (feenox.dae.daes == NULL) { feenox_call(feenox_step(feenox.instructions, NULL)); } else { feenox_call(feenox_step(feenox.instructions, feenox.dae.instruction)); if (feenox.dae.system == NULL) { feenox_call(feenox_dae_init()); } feenox_call(feenox_dae_ic()); feenox_call(feenox_step(feenox.dae.instruction->next, NULL)); } feenox_special_var_value(in_static_first) = 0; } feenox_special_var_value(in_static) = 0; feenox_special_var_value(in_static_last) = 0; feenox_special_var_value(step_static) = 0; #ifdef HAVE_SUNDIALS double ida_step_dt = INFTY; #endif // TODO: in quasistatic, should we increase the time with the initial dt? // transient/quasistatic loop (if needed) feenox_special_var_value(in_transient) = 1; feenox_special_var_value(in_transient_first) = 1; while (feenox_special_var_value(done) == 0) { // feenox_debug(); feenox_special_var_value(step_transient)++; #ifdef HAVE_PETSC if (feenox.dae.dimension == 0 && feenox.pde.ts == NULL) { #else if (feenox.dae.dimension == 0) { #endif feenox_limit_time_step(); feenox_special_var_value(in_time_path) = 0; double next_time = feenox_special_var_value(t) + feenox_special_var_value(dt); double next_time_path = 0; // see if we overshoot the next time path (or end_time) if (feenox.time_path_current != NULL) { next_time_path = (feenox.time_path_current->items != NULL) ? feenox_expression_eval(feenox.time_path_current) : feenox_special_var_value(end_time)+1e-9; // see if we overshoot the next time path (or end_time) if (next_time > next_time_path) { // go a little bit ahead of the next time so if there's a // discontinuity all the stuff gets updated next_time = next_time_path + 1e-9*(feenox_special_var_value(dt)); } else if (next_time > feenox_special_var_value(end_time)) { next_time = feenox_special_var_value(end_time)+1e-9; } } // time paths and min_dts do not get well along, but still... feenox_special_var_value(dt) = next_time - feenox_special_var_value(t); feenox_limit_time_step(); feenox_special_var_value(t) += feenox_special_var_value(dt); // if we did pass the next time, update the pointer if (feenox.time_path_current && feenox_special_var_value(t) > next_time_path) { feenox_special_var_value(in_time_path) = 1; feenox.time_path_current = feenox.time_path_current->next; } if (feenox_special_var_value(t) >= feenox_special_var_value(end_time)) { feenox_special_var_value(in_transient_last) = 1; feenox_special_var_value(done_transient) = 1; } // all the instructions feenox_call(feenox_step(feenox.instructions, NULL)); } else if (feenox.pde.solve != NULL) { feenox_limit_time_step(); feenox_special_var_value(in_time_path) = 0; double next_time = feenox_special_var_value(t) + feenox_special_var_value(dt); double next_time_path = 0; if (feenox.time_path_current != NULL) { next_time_path = (feenox.time_path_current->items != NULL) ? feenox_expression_eval(feenox.time_path_current) : feenox_special_var_value(end_time)+1e-9; // see if we overshoot the next time path (or end_time) if (next_time > next_time_path) { // go a little bit ahead of the next time so if there's a // discontinuity all the stuff gets updated next_time_path = feenox_expression_eval(feenox.time_path_current); next_time = next_time_path + 1e-9*(feenox_special_var_value(dt)); } else if (next_time > feenox_special_var_value(end_time)) { next_time = feenox_special_var_value(end_time)+1e-9; } } // time paths and min_dts do not get well along, but still... feenox_special_var_value(dt) = next_time - feenox_special_var_value(t); feenox_limit_time_step(); feenox_call(feenox_step(feenox.instructions, feenox.pde.instruction)); feenox_call(feenox_instruction_solve_problem(NULL)); // if we did pass the next time, update the pointer if (feenox.time_path_current && feenox_special_var_value(t) > next_time_path) { feenox_special_var_value(in_time_path) = 1; feenox.time_path_current = feenox.time_path_current->next; } if (feenox_special_var_value(t) >= feenox_special_var_value(end_time)) { feenox_special_var_value(in_transient_last) = 1; feenox_special_var_value(done_transient) = 1; } feenox_call(feenox_step(feenox.pde.instruction->next, NULL)); } else if (feenox.dae.dimension != 0) { #ifdef HAVE_SUNDIALS feenox_call(feenox_step(feenox.instructions, feenox.dae.instruction)); // integration step // remember what the time was so we can then compute dt feenox_special_var_value(in_time_path) = 0; double t_old = feenox_special_var_value(t); double ida_step_t_old = 0; double ida_step_t_new = 0; int err = 0; // is there a max dt? if (feenox_special_var_value(max_dt) != 0) { ida_call(IDASetMaxStep(feenox.dae.system, feenox_special_var_value(max_dt))); } // if the actual IDA's dt is smaller than FeenoX's min_dt if (ida_step_dt < feenox_special_var_value(min_dt) || (feenox_special_var_value(min_dt) != 0 && feenox_special_var_value(t) == 0)) { if (feenox.time_path_current != NULL && feenox.time_path_current->items != NULL) { feenox_push_error_message("both min_dt and TIME_PATH given"); return FEENOX_ERROR; } // set a stop time so we don't overshoot // TODO: is it better to call with IDA_NORMAL? ida_call(IDASetStopTime(feenox.dae.system, feenox_special_var_value(t)+feenox_special_var_value(min_dt))); do { ida_step_t_old = feenox_special_var_value(t); ida_step_t_new = feenox_special_var_value(t)+feenox_special_var_value(min_dt); ida_call(IDASolve(feenox.dae.system, feenox_special_var_value(dt), &ida_step_t_new, feenox.dae.x, feenox.dae.dxdt, IDA_ONE_STEP)); feenox_special_var_value(t) = ida_step_t_new; ida_step_dt = ida_step_t_new - ida_step_t_old; } while (err != IDA_TSTOP_RETURN); } else { // check for TIME_PATH if (feenox.time_path_current != NULL && feenox.time_path_current->items != NULL) { ida_call(IDASetStopTime(feenox.dae.system, feenox_expression_eval(feenox.time_path_current)+1e-9*feenox_special_var_value(dt))); } ida_step_t_old = feenox_special_var_value(t); err = IDASolve(feenox.dae.system, feenox_special_var_value(end_time), &feenox_special_var_value(t), feenox.dae.x, feenox.dae.dxdt, IDA_ONE_STEP); ida_step_dt = feenox_special_var_value(t) - ida_step_t_old; if (err == IDA_SUCCESS) { ; // ok! } else if (err == IDA_TSTOP_RETURN) { feenox_special_var_value(in_time_path) = 1; if (feenox.time_path_current != NULL) { feenox.time_path_current = feenox.time_path_current->next; } } else { feenox_push_error_message("ida returned error code %d", err); return FEENOX_ERROR; } } feenox_special_var_value(dt) = feenox_special_var_value(t) - t_old; if (feenox_special_var_value(t) >= feenox_special_var_value(end_time)) { feenox_special_var_value(in_transient_last) = 1; feenox_special_var_value(done_transient) = 1; } feenox_call(feenox_step(feenox.dae.instruction, NULL)); #endif } // done! (the following line fixes a subtle bug found by rvignolo) feenox_special_var_value(in_transient_first) = 0; } return FEENOX_OK; } void feenox_limit_time_step(void) { if (feenox_special_var_value(dt) < feenox_special_var_value(min_dt)) { feenox_special_var_value(dt) = feenox_special_var_value(min_dt); } if (feenox_special_var_value(max_dt) > 0 && feenox_special_var_value(dt) > feenox_special_var_value(max_dt)) { feenox_special_var_value(dt) = feenox_special_var_value(max_dt); } return; } feenox-1.1/src/flow/conditional.c0000644000175000017500000000433314773607165014010 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox conditional functions * * Copyright (C) 2009--2021 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" int feenox_instruction_if(void *arg) { conditional_block_t *conditional_block = (conditional_block_t *)arg; int condition; condition = (int)feenox_expression_eval(&conditional_block->condition); if (condition) { conditional_block->evaluated_to_true = 1; conditional_block->evaluated_to_false = 0; feenox.next_instruction = conditional_block->first_true_instruction; } else { conditional_block->evaluated_to_true = 0; conditional_block->evaluated_to_false = 1; feenox.next_instruction = conditional_block->first_false_instruction; } return FEENOX_OK; } int feenox_instruction_else(void *arg) { conditional_block_t *conditional_block = (conditional_block_t *)arg; if (conditional_block->else_of == NULL) { feenox_push_error_message("impossible error in conditional of type A"); return FEENOX_ERROR; } if (conditional_block->else_of->evaluated_to_true) { feenox.next_instruction = conditional_block->first_true_instruction; } else if (conditional_block->else_of->evaluated_to_false) { feenox.next_instruction = conditional_block->first_false_instruction; } else { feenox_push_error_message("impossible error in conditional of type B"); return FEENOX_ERROR; } return FEENOX_OK; } int feenox_instruction_endif(void *arg) { return FEENOX_OK; } feenox-1.1/src/flow/error.c0000644000175000017500000000723714773607165012644 00000000000000/*------------ -------------- -------- --- ----- --- -- - - * feenox error handling functions * * Copyright (C) 2009--2013,2020 Jeremy Theler * * This file is part of feenox. * * feenox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FeenoX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FeenoX. If not, see . *------------------- ------------ ---- -------- -- - - - */ #include "feenox.h" #include #include #include #include #include #include #include void feenox_push_error_message(const char *fmt, ...) { if (feenox.error_level > 100) { feenox_pop_errors(); fprintf(stderr, "error: too many errors\n"); exit(EXIT_FAILURE); } if ((feenox.error = realloc(feenox.error, (++feenox.error_level)*sizeof(char *))) == NULL) { fprintf(stderr, "cannot allocate memory to report error\n"); exit(EXIT_FAILURE); } if ((feenox.error[feenox.error_level-1] = malloc(BUFFER_LINE_SIZE)) == NULL) { fprintf(stderr, "cannot allocate memory to report error\n"); exit(EXIT_FAILURE); } va_list ap; va_start(ap, fmt); vsnprintf(feenox.error[feenox.error_level-1], BUFFER_LINE_SIZE, fmt, ap); va_end(ap); return; } void feenox_pop_error_message(void) { if (feenox.error_level > 0) { feenox_free(feenox.error[feenox.error_level-1]); feenox.error_level--; } return; } void feenox_pop_errors(void) { if (feenox.mpi_size < 2) { fprintf(stderr, "error: "); } else { fprintf(stderr, "[%d] error: ", feenox.mpi_rank); } // TODO: write into a string and then print the whole string at once if (feenox.error_level == 0) { fprintf(stderr, "unspecified error\n"); } else { while (feenox.error_level > 0) { fprintf(stderr, "%s%s", feenox.error[feenox.error_level-1], (feenox.error_level != 1)?" ":"\n"); feenox_pop_error_message(); } } return; } void feenox_runtime_error(void) { feenox_pop_errors(); feenox_polite_exit(EXIT_FAILURE); return; } void feenox_nan_error(void) { // TODO /* int on_nan = (int)(feenox_value(feenox_special_var(on_nan))); if (!(on_nan & ON_ERROR_NO_REPORT)) { fprintf(stderr, "error: NaN found\n"); } if (!(on_nan & ON_ERROR_NO_QUIT)) { feenox_runtime_error(); } */ return; } void feenox_gsl_handler(const char *reason, const char *file_ptr, int line, int gsl_errno) { /* int on_gsl_error = (int)(feenox_value(feenox_special_var(on_gsl_error))); if (!(on_gsl_error & ON_ERROR_NO_REPORT)) { feenox_push_error_message("gsl error #%d '%s' in %s", gsl_errno, reason, file_ptr); feenox_pop_errors(); } if (!(on_gsl_error & ON_ERROR_NO_QUIT)) { feenox_polite_exit(WASORA_RUNTIME_ERROR); } */ return; } void feenox_signal_handler(int sig_num) { if (feenox.mpi_size != 0) { fprintf(stderr, "pid %d: signal #%d caught, finishing...\n", getpid(), sig_num); } else { fprintf(stderr, "[%d] pid %d: signal #%d caught, finishing...\n", feenox.mpi_rank, getpid(), sig_num); } fflush(stderr); feenox_special_var_value(done) = (double)1.0; feenox_polite_exit(EXIT_SUCCESS); exit(1); } feenox-1.1/src/help.h0000644000175000017500000000407514773607166011477 00000000000000#define FEENOX_HELP_ONE_LINER "a cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool" #define FEENOX_HELP_USAGE "[options] inputfile [replacement arguments] [petsc options]" #define FEENOX_HELP_OPTIONS_BASE "\ -h, --help display options and detailed explanations of command-line usage\n\ -v, --version display brief version information and exit\n\ -V, --versions display detailed version information\n\ -c, --check validates if the input file is sane or not\n\ --pdes list the types of PROBLEMs that FeenoX can solve, one per line\n\ --elements_info output a document with information about the supported element types\n\ --ast dump an abstract syntax tree of the input\n\ --linear force FeenoX to solve the PDE problem as linear\n\ --non-linear force FeenoX to solve the PDE problem as non-linear\n\ " #define FEENOX_HELP_OPTIONS_PDE "\ --progress print ASCII progress bars when solving PDEs\n\ --mumps ask PETSc to use the direct linear solver MUMPS\n\ " #define FEENOX_HELP_EXTRA "\ Instructions will be read from standard input if “-” is passed as\n\ inputfile, i.e.\n\ \n\ $ echo 'PRINT 2+2' | feenox -\n\ 4\n\ \n\ The optional [replacement arguments] part of the command line mean that\n\ each argument after the input file that does not start with an hyphen\n\ will be expanded verbatim in the input file in each occurrence of $1,\n\ $2, etc. For example\n\ \n\ $ echo 'PRINT $1+$2' | feenox - 3 4\n\ 7\n\ \n\ PETSc and SLEPc options can be passed in [petsc options] (or [options])\n\ as well, with the difference that two hyphens have to be used instead of\n\ only once. For example, to pass the PETSc option -ksp_view the actual\n\ FeenoX invocation should be\n\ \n\ $ feenox input.fee --ksp_view\n\ \n\ For PETSc options that take values, en equal sign has to be used:\n\ \n\ $ feenox input.fee --mg_levels_pc_type=sor\n\ \n\ See https://www.seamplex.com/feenox/examples for annotated examples.\n\ " feenox-1.1/src/Makefile.in0000644000175000017500000116643214773607171012446 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = feenox$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/version.m4 \ $(top_srcdir)/ax_gcc_builtin.m4 $(top_srcdir)/versiongit.m4 \ $(top_srcdir)/auto_links.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__dirstamp = $(am__leading_dot)dirstamp am_feenox_OBJECTS = ./feenox-feenox.$(OBJEXT) \ ./feenox-version.$(OBJEXT) ./contrib/feenox-kdtree.$(OBJEXT) \ ./flow/feenox-init.$(OBJEXT) ./flow/feenox-abort.$(OBJEXT) \ ./flow/feenox-conditional.$(OBJEXT) \ ./flow/feenox-error.$(OBJEXT) ./flow/feenox-define.$(OBJEXT) \ ./flow/feenox-getptr.$(OBJEXT) ./flow/feenox-cleanup.$(OBJEXT) \ ./flow/feenox-instruction.$(OBJEXT) \ ./flow/feenox-step.$(OBJEXT) ./flow/feenox-run.$(OBJEXT) \ ./parser/feenox-parser.$(OBJEXT) \ ./parser/feenox-auxiliary.$(OBJEXT) ./io/feenox-file.$(OBJEXT) \ ./io/feenox-print.$(OBJEXT) ./io/feenox-printf.$(OBJEXT) \ ./math/feenox-alias.$(OBJEXT) \ ./math/feenox-assignment.$(OBJEXT) \ ./math/feenox-builtin_functions.$(OBJEXT) \ ./math/feenox-builtin_functionals.$(OBJEXT) \ ./math/feenox-builtin_vectorfunctions.$(OBJEXT) \ ./math/feenox-dae.$(OBJEXT) \ ./math/feenox-expressions.$(OBJEXT) \ ./math/feenox-fit.$(OBJEXT) ./math/feenox-function.$(OBJEXT) \ ./math/feenox-matrix.$(OBJEXT) ./math/feenox-solve.$(OBJEXT) \ ./math/feenox-vector.$(OBJEXT) ./mesh/feenox-init.$(OBJEXT) \ ./mesh/feenox-geometry.$(OBJEXT) \ ./mesh/feenox-neighbors.$(OBJEXT) \ ./mesh/feenox-boundary_condition.$(OBJEXT) \ ./mesh/feenox-physical_group.$(OBJEXT) \ ./mesh/feenox-interpolate.$(OBJEXT) \ ./mesh/feenox-material.$(OBJEXT) \ ./mesh/feenox-element.$(OBJEXT) ./mesh/feenox-cell.$(OBJEXT) \ ./mesh/feenox-write.$(OBJEXT) \ ./mesh/feenox-integrate.$(OBJEXT) \ ./mesh/feenox-extrema.$(OBJEXT) ./mesh/feenox-mesh.$(OBJEXT) \ ./mesh/feenox-gmsh.$(OBJEXT) ./mesh/feenox-calculix.$(OBJEXT) \ ./mesh/feenox-vtk.$(OBJEXT) ./mesh/feenox-vtu.$(OBJEXT) \ ./mesh/elements/feenox-line2.$(OBJEXT) \ ./mesh/elements/feenox-line3.$(OBJEXT) \ ./mesh/elements/feenox-triang3.$(OBJEXT) \ ./mesh/elements/feenox-triang6.$(OBJEXT) \ ./mesh/elements/feenox-quad4.$(OBJEXT) \ ./mesh/elements/feenox-quad8.$(OBJEXT) \ ./mesh/elements/feenox-quad9.$(OBJEXT) \ ./mesh/elements/feenox-tet4.$(OBJEXT) \ ./mesh/elements/feenox-tet10.$(OBJEXT) \ ./mesh/elements/feenox-hexa8.$(OBJEXT) \ ./mesh/elements/feenox-hexa20.$(OBJEXT) \ ./mesh/elements/feenox-hexa27.$(OBJEXT) \ ./mesh/elements/feenox-prism6.$(OBJEXT) \ ./mesh/elements/feenox-prism15.$(OBJEXT) \ ./mesh/elements/feenox-point.$(OBJEXT) \ pdes/feenox-petsc_snes.$(OBJEXT) \ pdes/feenox-petsc_ksp.$(OBJEXT) pdes/feenox-parse.$(OBJEXT) \ pdes/thermal/feenox-heatflux.$(OBJEXT) \ pdes/thermal/feenox-parser.$(OBJEXT) \ pdes/thermal/feenox-post.$(OBJEXT) \ pdes/thermal/feenox-init.$(OBJEXT) \ pdes/thermal/feenox-bulk.$(OBJEXT) \ pdes/thermal/feenox-bc.$(OBJEXT) \ pdes/laplace/feenox-parser.$(OBJEXT) \ pdes/laplace/feenox-init.$(OBJEXT) \ pdes/laplace/feenox-bulk.$(OBJEXT) \ pdes/laplace/feenox-bc.$(OBJEXT) pdes/feenox-fem.$(OBJEXT) \ pdes/feenox-petsc_ts.$(OBJEXT) pdes/feenox-reaction.$(OBJEXT) \ pdes/feenox-blas.$(OBJEXT) pdes/feenox-slepc_eps.$(OBJEXT) \ pdes/feenox-distribution.$(OBJEXT) \ pdes/feenox-dirichlet.$(OBJEXT) pdes/feenox-solve.$(OBJEXT) \ pdes/feenox-build.$(OBJEXT) pdes/feenox-init.$(OBJEXT) \ pdes/mechanical/feenox-linearize.$(OBJEXT) \ pdes/mechanical/feenox-expansion-isotropic.$(OBJEXT) \ pdes/mechanical/feenox-elastic-isotropic.$(OBJEXT) \ pdes/mechanical/feenox-parser.$(OBJEXT) \ pdes/mechanical/feenox-elastic-orthotropic.$(OBJEXT) \ pdes/mechanical/feenox-stress.$(OBJEXT) \ pdes/mechanical/feenox-post.$(OBJEXT) \ pdes/mechanical/feenox-init.$(OBJEXT) \ pdes/mechanical/feenox-elastic-plane-stress.$(OBJEXT) \ pdes/mechanical/feenox-bulk.$(OBJEXT) \ pdes/mechanical/feenox-expansion-orthotropic.$(OBJEXT) \ pdes/mechanical/feenox-elastic-plane-strain.$(OBJEXT) \ pdes/mechanical/feenox-bc.$(OBJEXT) \ pdes/neutron_diffusion/feenox-currents.$(OBJEXT) \ pdes/neutron_diffusion/feenox-parser.$(OBJEXT) \ pdes/neutron_diffusion/feenox-post.$(OBJEXT) \ pdes/neutron_diffusion/feenox-init.$(OBJEXT) \ pdes/neutron_diffusion/feenox-bulk.$(OBJEXT) \ pdes/neutron_diffusion/feenox-bc.$(OBJEXT) \ pdes/neutron_sn/feenox-parser.$(OBJEXT) \ pdes/neutron_sn/feenox-post.$(OBJEXT) \ pdes/neutron_sn/feenox-init.$(OBJEXT) \ pdes/neutron_sn/feenox-bulk.$(OBJEXT) \ pdes/neutron_sn/feenox-bc.$(OBJEXT) pdes/feenox-dump.$(OBJEXT) \ pdes/feenox-gradient.$(OBJEXT) \ pdes/modal/feenox-elastic-isotropic.$(OBJEXT) \ pdes/modal/feenox-parser.$(OBJEXT) \ pdes/modal/feenox-elastic-orthotropic.$(OBJEXT) \ pdes/modal/feenox-post.$(OBJEXT) \ pdes/modal/feenox-init.$(OBJEXT) \ pdes/modal/feenox-elastic-plane-stress.$(OBJEXT) \ pdes/modal/feenox-bulk.$(OBJEXT) \ pdes/modal/feenox-elastic-plane-strain.$(OBJEXT) \ pdes/modal/feenox-bc.$(OBJEXT) feenox_OBJECTS = $(am_feenox_OBJECTS) am__DEPENDENCIES_1 = feenox_DEPENDENCIES = $(am__DEPENDENCIES_1) feenox_LINK = $(CCLD) $(feenox_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/feenox-feenox.Po \ ./$(DEPDIR)/feenox-version.Po \ ./contrib/$(DEPDIR)/feenox-kdtree.Po \ ./flow/$(DEPDIR)/feenox-abort.Po \ ./flow/$(DEPDIR)/feenox-cleanup.Po \ ./flow/$(DEPDIR)/feenox-conditional.Po \ ./flow/$(DEPDIR)/feenox-define.Po \ ./flow/$(DEPDIR)/feenox-error.Po \ ./flow/$(DEPDIR)/feenox-getptr.Po \ ./flow/$(DEPDIR)/feenox-init.Po \ ./flow/$(DEPDIR)/feenox-instruction.Po \ ./flow/$(DEPDIR)/feenox-run.Po ./flow/$(DEPDIR)/feenox-step.Po \ ./io/$(DEPDIR)/feenox-file.Po ./io/$(DEPDIR)/feenox-print.Po \ ./io/$(DEPDIR)/feenox-printf.Po \ ./math/$(DEPDIR)/feenox-alias.Po \ ./math/$(DEPDIR)/feenox-assignment.Po \ ./math/$(DEPDIR)/feenox-builtin_functionals.Po \ ./math/$(DEPDIR)/feenox-builtin_functions.Po \ ./math/$(DEPDIR)/feenox-builtin_vectorfunctions.Po \ ./math/$(DEPDIR)/feenox-dae.Po \ ./math/$(DEPDIR)/feenox-expressions.Po \ ./math/$(DEPDIR)/feenox-fit.Po \ ./math/$(DEPDIR)/feenox-function.Po \ ./math/$(DEPDIR)/feenox-matrix.Po \ ./math/$(DEPDIR)/feenox-solve.Po \ ./math/$(DEPDIR)/feenox-vector.Po \ ./mesh/$(DEPDIR)/feenox-boundary_condition.Po \ ./mesh/$(DEPDIR)/feenox-calculix.Po \ ./mesh/$(DEPDIR)/feenox-cell.Po \ ./mesh/$(DEPDIR)/feenox-element.Po \ ./mesh/$(DEPDIR)/feenox-extrema.Po \ ./mesh/$(DEPDIR)/feenox-geometry.Po \ ./mesh/$(DEPDIR)/feenox-gmsh.Po \ ./mesh/$(DEPDIR)/feenox-init.Po \ ./mesh/$(DEPDIR)/feenox-integrate.Po \ ./mesh/$(DEPDIR)/feenox-interpolate.Po \ ./mesh/$(DEPDIR)/feenox-material.Po \ ./mesh/$(DEPDIR)/feenox-mesh.Po \ ./mesh/$(DEPDIR)/feenox-neighbors.Po \ ./mesh/$(DEPDIR)/feenox-physical_group.Po \ ./mesh/$(DEPDIR)/feenox-vtk.Po ./mesh/$(DEPDIR)/feenox-vtu.Po \ ./mesh/$(DEPDIR)/feenox-write.Po \ ./mesh/elements/$(DEPDIR)/feenox-hexa20.Po \ ./mesh/elements/$(DEPDIR)/feenox-hexa27.Po \ ./mesh/elements/$(DEPDIR)/feenox-hexa8.Po \ ./mesh/elements/$(DEPDIR)/feenox-line2.Po \ ./mesh/elements/$(DEPDIR)/feenox-line3.Po \ ./mesh/elements/$(DEPDIR)/feenox-point.Po \ ./mesh/elements/$(DEPDIR)/feenox-prism15.Po \ ./mesh/elements/$(DEPDIR)/feenox-prism6.Po \ ./mesh/elements/$(DEPDIR)/feenox-quad4.Po \ ./mesh/elements/$(DEPDIR)/feenox-quad8.Po \ ./mesh/elements/$(DEPDIR)/feenox-quad9.Po \ ./mesh/elements/$(DEPDIR)/feenox-tet10.Po \ ./mesh/elements/$(DEPDIR)/feenox-tet4.Po \ ./mesh/elements/$(DEPDIR)/feenox-triang3.Po \ ./mesh/elements/$(DEPDIR)/feenox-triang6.Po \ ./parser/$(DEPDIR)/feenox-auxiliary.Po \ ./parser/$(DEPDIR)/feenox-parser.Po \ pdes/$(DEPDIR)/feenox-blas.Po pdes/$(DEPDIR)/feenox-build.Po \ pdes/$(DEPDIR)/feenox-dirichlet.Po \ pdes/$(DEPDIR)/feenox-distribution.Po \ pdes/$(DEPDIR)/feenox-dump.Po pdes/$(DEPDIR)/feenox-fem.Po \ pdes/$(DEPDIR)/feenox-gradient.Po \ pdes/$(DEPDIR)/feenox-init.Po pdes/$(DEPDIR)/feenox-parse.Po \ pdes/$(DEPDIR)/feenox-petsc_ksp.Po \ pdes/$(DEPDIR)/feenox-petsc_snes.Po \ pdes/$(DEPDIR)/feenox-petsc_ts.Po \ pdes/$(DEPDIR)/feenox-reaction.Po \ pdes/$(DEPDIR)/feenox-slepc_eps.Po \ pdes/$(DEPDIR)/feenox-solve.Po \ pdes/laplace/$(DEPDIR)/feenox-bc.Po \ pdes/laplace/$(DEPDIR)/feenox-bulk.Po \ pdes/laplace/$(DEPDIR)/feenox-init.Po \ pdes/laplace/$(DEPDIR)/feenox-parser.Po \ pdes/mechanical/$(DEPDIR)/feenox-bc.Po \ pdes/mechanical/$(DEPDIR)/feenox-bulk.Po \ pdes/mechanical/$(DEPDIR)/feenox-elastic-isotropic.Po \ pdes/mechanical/$(DEPDIR)/feenox-elastic-orthotropic.Po \ pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-strain.Po \ pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-stress.Po \ pdes/mechanical/$(DEPDIR)/feenox-expansion-isotropic.Po \ pdes/mechanical/$(DEPDIR)/feenox-expansion-orthotropic.Po \ pdes/mechanical/$(DEPDIR)/feenox-init.Po \ pdes/mechanical/$(DEPDIR)/feenox-linearize.Po \ pdes/mechanical/$(DEPDIR)/feenox-parser.Po \ pdes/mechanical/$(DEPDIR)/feenox-post.Po \ pdes/mechanical/$(DEPDIR)/feenox-stress.Po \ pdes/modal/$(DEPDIR)/feenox-bc.Po \ pdes/modal/$(DEPDIR)/feenox-bulk.Po \ pdes/modal/$(DEPDIR)/feenox-elastic-isotropic.Po \ pdes/modal/$(DEPDIR)/feenox-elastic-orthotropic.Po \ pdes/modal/$(DEPDIR)/feenox-elastic-plane-strain.Po \ pdes/modal/$(DEPDIR)/feenox-elastic-plane-stress.Po \ pdes/modal/$(DEPDIR)/feenox-init.Po \ pdes/modal/$(DEPDIR)/feenox-parser.Po \ pdes/modal/$(DEPDIR)/feenox-post.Po \ pdes/neutron_diffusion/$(DEPDIR)/feenox-bc.Po \ pdes/neutron_diffusion/$(DEPDIR)/feenox-bulk.Po \ pdes/neutron_diffusion/$(DEPDIR)/feenox-currents.Po \ pdes/neutron_diffusion/$(DEPDIR)/feenox-init.Po \ pdes/neutron_diffusion/$(DEPDIR)/feenox-parser.Po \ pdes/neutron_diffusion/$(DEPDIR)/feenox-post.Po \ pdes/neutron_sn/$(DEPDIR)/feenox-bc.Po \ pdes/neutron_sn/$(DEPDIR)/feenox-bulk.Po \ pdes/neutron_sn/$(DEPDIR)/feenox-init.Po \ pdes/neutron_sn/$(DEPDIR)/feenox-parser.Po \ pdes/neutron_sn/$(DEPDIR)/feenox-post.Po \ pdes/thermal/$(DEPDIR)/feenox-bc.Po \ pdes/thermal/$(DEPDIR)/feenox-bulk.Po \ pdes/thermal/$(DEPDIR)/feenox-heatflux.Po \ pdes/thermal/$(DEPDIR)/feenox-init.Po \ pdes/thermal/$(DEPDIR)/feenox-parser.Po \ pdes/thermal/$(DEPDIR)/feenox-post.Po am__mv = mv -f AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(feenox_SOURCES) DIST_SOURCES = $(feenox_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DOWNLOADED_GSL_INCLUDES = @DOWNLOADED_GSL_INCLUDES@ DOWNLOADED_GSL_LIBS = @DOWNLOADED_GSL_LIBS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PETSC_ARCH = @PETSC_ARCH@ PETSC_DIR = @PETSC_DIR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SLEPC_DIR = @SLEPC_DIR@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # include $(top_srcdir)/aminclude_static.am AUTOMAKE_OPTIONS = subdir-objects ACLOCAL_AMFLAGS = $(ACLOCAL_FLAGS) feenox_CFLAGS = $(SLEPC_CC_INCLUDES) $(PETSC_CC_INCLUDES) $(CC_INCLUDES) $(DOWNLOADED_GSL_INCLUDES) $(all_includes) feenox_LDADD = $(SLEPC_LIB) $(PETSC_LIB) $(DOWNLOADED_GSL_LIBS) $(all_libraries) #feenox_LIBS = $(CODE_COVERAGE_LIBS) #feenox_LDFLAGS = -rdynamic #feenox_sources = feenox.c feenox.h #feenox_LDADD = libfeenox.a $(SLEPC_LIB) $(PETSC_LIB) $(DOWNLOADED_GSL_LIBS) $(all_libraries) #libfeenox_a_SOURCES = feenox_SOURCES = \ ./feenox.c \ ./feenox.h \ ./version.c \ ./help.h \ ./contrib/kdtree.c \ ./contrib/kdtree.h \ ./contrib/utlist.h \ ./contrib/uthash.h \ ./flow/init.c \ ./flow/abort.c \ ./flow/conditional.c \ ./flow/error.c \ ./flow/define.c \ ./flow/getptr.c \ ./flow/cleanup.c \ ./flow/instruction.c \ ./flow/step.c \ ./flow/run.c \ ./parser/parser.c \ ./parser/parser.h \ ./parser/auxiliary.c \ ./io/file.c \ ./io/print.c \ ./io/printf.c \ ./math/alias.c \ ./math/assignment.c \ ./math/builtin_functions.c \ ./math/builtin_functionals.c \ ./math/builtin_vectorfunctions.c \ ./math/dae.c \ ./math/expressions.c \ ./math/fit.c \ ./math/function.c \ ./math/matrix.c \ ./math/solve.c \ ./math/vector.c \ ./mesh/init.c \ ./mesh/geometry.c \ ./mesh/neighbors.c \ ./mesh/boundary_condition.c \ ./mesh/physical_group.c \ ./mesh/interpolate.c \ ./mesh/material.c \ ./mesh/element.c \ ./mesh/element.h \ ./mesh/cell.c \ ./mesh/write.c \ ./mesh/integrate.c \ ./mesh/extrema.c \ ./mesh/mesh.c \ ./mesh/gmsh.c \ ./mesh/calculix.c \ ./mesh/vtk.c \ ./mesh/vtu.c \ ./mesh/elements/line2.c \ ./mesh/elements/line3.c \ ./mesh/elements/triang3.c \ ./mesh/elements/triang6.c \ ./mesh/elements/quad4.c \ ./mesh/elements/quad8.c \ ./mesh/elements/quad9.c \ ./mesh/elements/tet4.c \ ./mesh/elements/tet10.c \ ./mesh/elements/hexa8.c \ ./mesh/elements/hexa20.c \ ./mesh/elements/hexa27.c \ ./mesh/elements/prism6.c \ ./mesh/elements/prism15.c \ ./mesh/elements/point.c \ pdes/petsc_snes.c pdes/petsc_ksp.c pdes/parse.c pdes/thermal/heatflux.c pdes/thermal/parser.c pdes/thermal/post.c pdes/thermal/thermal.h pdes/thermal/init.c pdes/thermal/bulk.c pdes/thermal/methods.h pdes/thermal/bc.c pdes/laplace/parser.c pdes/laplace/laplace.h pdes/laplace/init.c pdes/laplace/bulk.c pdes/laplace/methods.h pdes/laplace/bc.c pdes/fem.c pdes/petsc_ts.c pdes/reaction.c pdes/blas.c pdes/slepc_eps.c pdes/distribution.c pdes/dirichlet.c pdes/solve.c pdes/build.c pdes/init.c pdes/mechanical/linearize.c pdes/mechanical/expansion-isotropic.c pdes/mechanical/elastic-isotropic.c pdes/mechanical/parser.c pdes/mechanical/elastic-orthotropic.c pdes/mechanical/stress.c pdes/mechanical/post.c pdes/mechanical/init.c pdes/mechanical/mechanical.h pdes/mechanical/elastic-plane-stress.c pdes/mechanical/bulk.c pdes/mechanical/expansion-orthotropic.c pdes/mechanical/methods.h pdes/mechanical/elastic-plane-strain.c pdes/mechanical/bc.c pdes/available.h pdes/neutron_diffusion/neutron_diffusion.h pdes/neutron_diffusion/currents.c pdes/neutron_diffusion/parser.c pdes/neutron_diffusion/post.c pdes/neutron_diffusion/init.c pdes/neutron_diffusion/bulk.c pdes/neutron_diffusion/methods.h pdes/neutron_diffusion/bc.c pdes/neutron_sn/neutron_sn.h pdes/neutron_sn/parser.c pdes/neutron_sn/post.c pdes/neutron_sn/init.c pdes/neutron_sn/bulk.c pdes/neutron_sn/methods.h pdes/neutron_sn/bc.c pdes/dump.c pdes/methods.h pdes/gradient.c pdes/modal/elastic-isotropic.c pdes/modal/parser.c pdes/modal/elastic-orthotropic.c pdes/modal/post.c pdes/modal/init.c pdes/modal/elastic-plane-stress.c pdes/modal/bulk.c pdes/modal/methods.h pdes/modal/modal.h pdes/modal/elastic-plane-strain.c pdes/modal/bc.c all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) ./$(am__dirstamp): @$(MKDIR_P) . @: > ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./$(DEPDIR) @: > $(DEPDIR)/$(am__dirstamp) ./feenox-feenox.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./feenox-version.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) contrib/$(am__dirstamp): @$(MKDIR_P) ./contrib @: > contrib/$(am__dirstamp) contrib/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./contrib/$(DEPDIR) @: > contrib/$(DEPDIR)/$(am__dirstamp) ./contrib/feenox-kdtree.$(OBJEXT): contrib/$(am__dirstamp) \ contrib/$(DEPDIR)/$(am__dirstamp) flow/$(am__dirstamp): @$(MKDIR_P) ./flow @: > flow/$(am__dirstamp) flow/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./flow/$(DEPDIR) @: > flow/$(DEPDIR)/$(am__dirstamp) ./flow/feenox-init.$(OBJEXT): flow/$(am__dirstamp) \ flow/$(DEPDIR)/$(am__dirstamp) ./flow/feenox-abort.$(OBJEXT): flow/$(am__dirstamp) \ flow/$(DEPDIR)/$(am__dirstamp) ./flow/feenox-conditional.$(OBJEXT): flow/$(am__dirstamp) \ flow/$(DEPDIR)/$(am__dirstamp) ./flow/feenox-error.$(OBJEXT): flow/$(am__dirstamp) \ flow/$(DEPDIR)/$(am__dirstamp) ./flow/feenox-define.$(OBJEXT): flow/$(am__dirstamp) \ flow/$(DEPDIR)/$(am__dirstamp) ./flow/feenox-getptr.$(OBJEXT): flow/$(am__dirstamp) \ flow/$(DEPDIR)/$(am__dirstamp) ./flow/feenox-cleanup.$(OBJEXT): flow/$(am__dirstamp) \ flow/$(DEPDIR)/$(am__dirstamp) ./flow/feenox-instruction.$(OBJEXT): flow/$(am__dirstamp) \ flow/$(DEPDIR)/$(am__dirstamp) ./flow/feenox-step.$(OBJEXT): flow/$(am__dirstamp) \ flow/$(DEPDIR)/$(am__dirstamp) ./flow/feenox-run.$(OBJEXT): flow/$(am__dirstamp) \ flow/$(DEPDIR)/$(am__dirstamp) parser/$(am__dirstamp): @$(MKDIR_P) ./parser @: > parser/$(am__dirstamp) parser/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./parser/$(DEPDIR) @: > parser/$(DEPDIR)/$(am__dirstamp) ./parser/feenox-parser.$(OBJEXT): parser/$(am__dirstamp) \ parser/$(DEPDIR)/$(am__dirstamp) ./parser/feenox-auxiliary.$(OBJEXT): parser/$(am__dirstamp) \ parser/$(DEPDIR)/$(am__dirstamp) io/$(am__dirstamp): @$(MKDIR_P) ./io @: > io/$(am__dirstamp) io/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./io/$(DEPDIR) @: > io/$(DEPDIR)/$(am__dirstamp) ./io/feenox-file.$(OBJEXT): io/$(am__dirstamp) \ io/$(DEPDIR)/$(am__dirstamp) ./io/feenox-print.$(OBJEXT): io/$(am__dirstamp) \ io/$(DEPDIR)/$(am__dirstamp) ./io/feenox-printf.$(OBJEXT): io/$(am__dirstamp) \ io/$(DEPDIR)/$(am__dirstamp) math/$(am__dirstamp): @$(MKDIR_P) ./math @: > math/$(am__dirstamp) math/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./math/$(DEPDIR) @: > math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-alias.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-assignment.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-builtin_functions.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-builtin_functionals.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-builtin_vectorfunctions.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-dae.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-expressions.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-fit.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-function.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-matrix.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-solve.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) ./math/feenox-vector.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) mesh/$(am__dirstamp): @$(MKDIR_P) ./mesh @: > mesh/$(am__dirstamp) mesh/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./mesh/$(DEPDIR) @: > mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-init.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-geometry.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-neighbors.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-boundary_condition.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-physical_group.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-interpolate.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-material.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-element.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-cell.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-write.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-integrate.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-extrema.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-mesh.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-gmsh.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-calculix.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-vtk.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) ./mesh/feenox-vtu.$(OBJEXT): mesh/$(am__dirstamp) \ mesh/$(DEPDIR)/$(am__dirstamp) mesh/elements/$(am__dirstamp): @$(MKDIR_P) ./mesh/elements @: > mesh/elements/$(am__dirstamp) mesh/elements/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./mesh/elements/$(DEPDIR) @: > mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-line2.$(OBJEXT): mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-line3.$(OBJEXT): mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-triang3.$(OBJEXT): \ mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-triang6.$(OBJEXT): \ mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-quad4.$(OBJEXT): mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-quad8.$(OBJEXT): mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-quad9.$(OBJEXT): mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-tet4.$(OBJEXT): mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-tet10.$(OBJEXT): mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-hexa8.$(OBJEXT): mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-hexa20.$(OBJEXT): \ mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-hexa27.$(OBJEXT): \ mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-prism6.$(OBJEXT): \ mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-prism15.$(OBJEXT): \ mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) ./mesh/elements/feenox-point.$(OBJEXT): mesh/elements/$(am__dirstamp) \ mesh/elements/$(DEPDIR)/$(am__dirstamp) pdes/$(am__dirstamp): @$(MKDIR_P) pdes @: > pdes/$(am__dirstamp) pdes/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pdes/$(DEPDIR) @: > pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-petsc_snes.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-petsc_ksp.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-parse.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/thermal/$(am__dirstamp): @$(MKDIR_P) pdes/thermal @: > pdes/thermal/$(am__dirstamp) pdes/thermal/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pdes/thermal/$(DEPDIR) @: > pdes/thermal/$(DEPDIR)/$(am__dirstamp) pdes/thermal/feenox-heatflux.$(OBJEXT): pdes/thermal/$(am__dirstamp) \ pdes/thermal/$(DEPDIR)/$(am__dirstamp) pdes/thermal/feenox-parser.$(OBJEXT): pdes/thermal/$(am__dirstamp) \ pdes/thermal/$(DEPDIR)/$(am__dirstamp) pdes/thermal/feenox-post.$(OBJEXT): pdes/thermal/$(am__dirstamp) \ pdes/thermal/$(DEPDIR)/$(am__dirstamp) pdes/thermal/feenox-init.$(OBJEXT): pdes/thermal/$(am__dirstamp) \ pdes/thermal/$(DEPDIR)/$(am__dirstamp) pdes/thermal/feenox-bulk.$(OBJEXT): pdes/thermal/$(am__dirstamp) \ pdes/thermal/$(DEPDIR)/$(am__dirstamp) pdes/thermal/feenox-bc.$(OBJEXT): pdes/thermal/$(am__dirstamp) \ pdes/thermal/$(DEPDIR)/$(am__dirstamp) pdes/laplace/$(am__dirstamp): @$(MKDIR_P) pdes/laplace @: > pdes/laplace/$(am__dirstamp) pdes/laplace/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pdes/laplace/$(DEPDIR) @: > pdes/laplace/$(DEPDIR)/$(am__dirstamp) pdes/laplace/feenox-parser.$(OBJEXT): pdes/laplace/$(am__dirstamp) \ pdes/laplace/$(DEPDIR)/$(am__dirstamp) pdes/laplace/feenox-init.$(OBJEXT): pdes/laplace/$(am__dirstamp) \ pdes/laplace/$(DEPDIR)/$(am__dirstamp) pdes/laplace/feenox-bulk.$(OBJEXT): pdes/laplace/$(am__dirstamp) \ pdes/laplace/$(DEPDIR)/$(am__dirstamp) pdes/laplace/feenox-bc.$(OBJEXT): pdes/laplace/$(am__dirstamp) \ pdes/laplace/$(DEPDIR)/$(am__dirstamp) pdes/feenox-fem.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-petsc_ts.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-reaction.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-blas.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-slepc_eps.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-distribution.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-dirichlet.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-solve.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-build.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-init.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/$(am__dirstamp): @$(MKDIR_P) pdes/mechanical @: > pdes/mechanical/$(am__dirstamp) pdes/mechanical/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pdes/mechanical/$(DEPDIR) @: > pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-linearize.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-expansion-isotropic.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-elastic-isotropic.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-parser.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-elastic-orthotropic.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-stress.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-post.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-init.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-elastic-plane-stress.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-bulk.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-expansion-orthotropic.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-elastic-plane-strain.$(OBJEXT): \ pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/mechanical/feenox-bc.$(OBJEXT): pdes/mechanical/$(am__dirstamp) \ pdes/mechanical/$(DEPDIR)/$(am__dirstamp) pdes/neutron_diffusion/$(am__dirstamp): @$(MKDIR_P) pdes/neutron_diffusion @: > pdes/neutron_diffusion/$(am__dirstamp) pdes/neutron_diffusion/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pdes/neutron_diffusion/$(DEPDIR) @: > pdes/neutron_diffusion/$(DEPDIR)/$(am__dirstamp) pdes/neutron_diffusion/feenox-currents.$(OBJEXT): \ pdes/neutron_diffusion/$(am__dirstamp) \ pdes/neutron_diffusion/$(DEPDIR)/$(am__dirstamp) pdes/neutron_diffusion/feenox-parser.$(OBJEXT): \ pdes/neutron_diffusion/$(am__dirstamp) \ pdes/neutron_diffusion/$(DEPDIR)/$(am__dirstamp) pdes/neutron_diffusion/feenox-post.$(OBJEXT): \ pdes/neutron_diffusion/$(am__dirstamp) \ pdes/neutron_diffusion/$(DEPDIR)/$(am__dirstamp) pdes/neutron_diffusion/feenox-init.$(OBJEXT): \ pdes/neutron_diffusion/$(am__dirstamp) \ pdes/neutron_diffusion/$(DEPDIR)/$(am__dirstamp) pdes/neutron_diffusion/feenox-bulk.$(OBJEXT): \ pdes/neutron_diffusion/$(am__dirstamp) \ pdes/neutron_diffusion/$(DEPDIR)/$(am__dirstamp) pdes/neutron_diffusion/feenox-bc.$(OBJEXT): \ pdes/neutron_diffusion/$(am__dirstamp) \ pdes/neutron_diffusion/$(DEPDIR)/$(am__dirstamp) pdes/neutron_sn/$(am__dirstamp): @$(MKDIR_P) pdes/neutron_sn @: > pdes/neutron_sn/$(am__dirstamp) pdes/neutron_sn/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pdes/neutron_sn/$(DEPDIR) @: > pdes/neutron_sn/$(DEPDIR)/$(am__dirstamp) pdes/neutron_sn/feenox-parser.$(OBJEXT): \ pdes/neutron_sn/$(am__dirstamp) \ pdes/neutron_sn/$(DEPDIR)/$(am__dirstamp) pdes/neutron_sn/feenox-post.$(OBJEXT): \ pdes/neutron_sn/$(am__dirstamp) \ pdes/neutron_sn/$(DEPDIR)/$(am__dirstamp) pdes/neutron_sn/feenox-init.$(OBJEXT): \ pdes/neutron_sn/$(am__dirstamp) \ pdes/neutron_sn/$(DEPDIR)/$(am__dirstamp) pdes/neutron_sn/feenox-bulk.$(OBJEXT): \ pdes/neutron_sn/$(am__dirstamp) \ pdes/neutron_sn/$(DEPDIR)/$(am__dirstamp) pdes/neutron_sn/feenox-bc.$(OBJEXT): pdes/neutron_sn/$(am__dirstamp) \ pdes/neutron_sn/$(DEPDIR)/$(am__dirstamp) pdes/feenox-dump.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/feenox-gradient.$(OBJEXT): pdes/$(am__dirstamp) \ pdes/$(DEPDIR)/$(am__dirstamp) pdes/modal/$(am__dirstamp): @$(MKDIR_P) pdes/modal @: > pdes/modal/$(am__dirstamp) pdes/modal/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pdes/modal/$(DEPDIR) @: > pdes/modal/$(DEPDIR)/$(am__dirstamp) pdes/modal/feenox-elastic-isotropic.$(OBJEXT): \ pdes/modal/$(am__dirstamp) \ pdes/modal/$(DEPDIR)/$(am__dirstamp) pdes/modal/feenox-parser.$(OBJEXT): pdes/modal/$(am__dirstamp) \ pdes/modal/$(DEPDIR)/$(am__dirstamp) pdes/modal/feenox-elastic-orthotropic.$(OBJEXT): \ pdes/modal/$(am__dirstamp) \ pdes/modal/$(DEPDIR)/$(am__dirstamp) pdes/modal/feenox-post.$(OBJEXT): pdes/modal/$(am__dirstamp) \ pdes/modal/$(DEPDIR)/$(am__dirstamp) pdes/modal/feenox-init.$(OBJEXT): pdes/modal/$(am__dirstamp) \ pdes/modal/$(DEPDIR)/$(am__dirstamp) pdes/modal/feenox-elastic-plane-stress.$(OBJEXT): \ pdes/modal/$(am__dirstamp) \ pdes/modal/$(DEPDIR)/$(am__dirstamp) pdes/modal/feenox-bulk.$(OBJEXT): pdes/modal/$(am__dirstamp) \ pdes/modal/$(DEPDIR)/$(am__dirstamp) pdes/modal/feenox-elastic-plane-strain.$(OBJEXT): \ pdes/modal/$(am__dirstamp) \ pdes/modal/$(DEPDIR)/$(am__dirstamp) pdes/modal/feenox-bc.$(OBJEXT): pdes/modal/$(am__dirstamp) \ pdes/modal/$(DEPDIR)/$(am__dirstamp) feenox$(EXEEXT): $(feenox_OBJECTS) $(feenox_DEPENDENCIES) $(EXTRA_feenox_DEPENDENCIES) @rm -f feenox$(EXEEXT) $(AM_V_CCLD)$(feenox_LINK) $(feenox_OBJECTS) $(feenox_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f ./*.$(OBJEXT) -rm -f ./contrib/*.$(OBJEXT) -rm -f ./flow/*.$(OBJEXT) -rm -f ./io/*.$(OBJEXT) -rm -f ./math/*.$(OBJEXT) -rm -f ./mesh/*.$(OBJEXT) -rm -f ./mesh/elements/*.$(OBJEXT) -rm -f ./parser/*.$(OBJEXT) -rm -f pdes/*.$(OBJEXT) -rm -f pdes/laplace/*.$(OBJEXT) -rm -f pdes/mechanical/*.$(OBJEXT) -rm -f pdes/modal/*.$(OBJEXT) -rm -f pdes/neutron_diffusion/*.$(OBJEXT) -rm -f pdes/neutron_sn/*.$(OBJEXT) -rm -f pdes/thermal/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/feenox-feenox.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/feenox-version.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./contrib/$(DEPDIR)/feenox-kdtree.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./flow/$(DEPDIR)/feenox-abort.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./flow/$(DEPDIR)/feenox-cleanup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./flow/$(DEPDIR)/feenox-conditional.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./flow/$(DEPDIR)/feenox-define.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./flow/$(DEPDIR)/feenox-error.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./flow/$(DEPDIR)/feenox-getptr.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./flow/$(DEPDIR)/feenox-init.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./flow/$(DEPDIR)/feenox-instruction.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./flow/$(DEPDIR)/feenox-run.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./flow/$(DEPDIR)/feenox-step.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./io/$(DEPDIR)/feenox-file.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./io/$(DEPDIR)/feenox-print.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./io/$(DEPDIR)/feenox-printf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-alias.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-assignment.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-builtin_functionals.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-builtin_functions.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-builtin_vectorfunctions.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-dae.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-expressions.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-fit.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-function.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-matrix.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-solve.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./math/$(DEPDIR)/feenox-vector.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-boundary_condition.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-calculix.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-cell.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-element.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-extrema.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-geometry.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-gmsh.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-init.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-integrate.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-interpolate.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-material.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-mesh.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-neighbors.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-physical_group.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-vtk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-vtu.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/$(DEPDIR)/feenox-write.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-hexa20.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-hexa27.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-hexa8.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-line2.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-line3.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-point.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-prism15.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-prism6.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-quad4.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-quad8.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-quad9.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-tet10.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-tet4.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-triang3.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./mesh/elements/$(DEPDIR)/feenox-triang6.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./parser/$(DEPDIR)/feenox-auxiliary.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./parser/$(DEPDIR)/feenox-parser.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-blas.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-build.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-dirichlet.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-distribution.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-dump.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-fem.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-gradient.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-init.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-parse.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-petsc_ksp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-petsc_snes.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-petsc_ts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-reaction.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-slepc_eps.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/$(DEPDIR)/feenox-solve.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/laplace/$(DEPDIR)/feenox-bc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/laplace/$(DEPDIR)/feenox-bulk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/laplace/$(DEPDIR)/feenox-init.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/laplace/$(DEPDIR)/feenox-parser.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-bc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-bulk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-elastic-isotropic.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-elastic-orthotropic.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-strain.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-stress.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-expansion-isotropic.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-expansion-orthotropic.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-init.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-linearize.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-parser.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-post.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/mechanical/$(DEPDIR)/feenox-stress.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/modal/$(DEPDIR)/feenox-bc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/modal/$(DEPDIR)/feenox-bulk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/modal/$(DEPDIR)/feenox-elastic-isotropic.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/modal/$(DEPDIR)/feenox-elastic-orthotropic.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/modal/$(DEPDIR)/feenox-elastic-plane-strain.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/modal/$(DEPDIR)/feenox-elastic-plane-stress.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/modal/$(DEPDIR)/feenox-init.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/modal/$(DEPDIR)/feenox-parser.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/modal/$(DEPDIR)/feenox-post.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_diffusion/$(DEPDIR)/feenox-bc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_diffusion/$(DEPDIR)/feenox-bulk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_diffusion/$(DEPDIR)/feenox-currents.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_diffusion/$(DEPDIR)/feenox-init.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_diffusion/$(DEPDIR)/feenox-parser.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_diffusion/$(DEPDIR)/feenox-post.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_sn/$(DEPDIR)/feenox-bc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_sn/$(DEPDIR)/feenox-bulk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_sn/$(DEPDIR)/feenox-init.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_sn/$(DEPDIR)/feenox-parser.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/neutron_sn/$(DEPDIR)/feenox-post.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/thermal/$(DEPDIR)/feenox-bc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/thermal/$(DEPDIR)/feenox-bulk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/thermal/$(DEPDIR)/feenox-heatflux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/thermal/$(DEPDIR)/feenox-init.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/thermal/$(DEPDIR)/feenox-parser.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pdes/thermal/$(DEPDIR)/feenox-post.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ./feenox-feenox.o: ./feenox.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./feenox-feenox.o -MD -MP -MF $(DEPDIR)/feenox-feenox.Tpo -c -o ./feenox-feenox.o `test -f './feenox.c' || echo '$(srcdir)/'`./feenox.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/feenox-feenox.Tpo $(DEPDIR)/feenox-feenox.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./feenox.c' object='./feenox-feenox.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./feenox-feenox.o `test -f './feenox.c' || echo '$(srcdir)/'`./feenox.c ./feenox-feenox.obj: ./feenox.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./feenox-feenox.obj -MD -MP -MF $(DEPDIR)/feenox-feenox.Tpo -c -o ./feenox-feenox.obj `if test -f './feenox.c'; then $(CYGPATH_W) './feenox.c'; else $(CYGPATH_W) '$(srcdir)/./feenox.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/feenox-feenox.Tpo $(DEPDIR)/feenox-feenox.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./feenox.c' object='./feenox-feenox.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./feenox-feenox.obj `if test -f './feenox.c'; then $(CYGPATH_W) './feenox.c'; else $(CYGPATH_W) '$(srcdir)/./feenox.c'; fi` ./feenox-version.o: ./version.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./feenox-version.o -MD -MP -MF $(DEPDIR)/feenox-version.Tpo -c -o ./feenox-version.o `test -f './version.c' || echo '$(srcdir)/'`./version.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/feenox-version.Tpo $(DEPDIR)/feenox-version.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./version.c' object='./feenox-version.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./feenox-version.o `test -f './version.c' || echo '$(srcdir)/'`./version.c ./feenox-version.obj: ./version.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./feenox-version.obj -MD -MP -MF $(DEPDIR)/feenox-version.Tpo -c -o ./feenox-version.obj `if test -f './version.c'; then $(CYGPATH_W) './version.c'; else $(CYGPATH_W) '$(srcdir)/./version.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/feenox-version.Tpo $(DEPDIR)/feenox-version.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./version.c' object='./feenox-version.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./feenox-version.obj `if test -f './version.c'; then $(CYGPATH_W) './version.c'; else $(CYGPATH_W) '$(srcdir)/./version.c'; fi` ./contrib/feenox-kdtree.o: ./contrib/kdtree.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./contrib/feenox-kdtree.o -MD -MP -MF ./contrib/$(DEPDIR)/feenox-kdtree.Tpo -c -o ./contrib/feenox-kdtree.o `test -f './contrib/kdtree.c' || echo '$(srcdir)/'`./contrib/kdtree.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./contrib/$(DEPDIR)/feenox-kdtree.Tpo ./contrib/$(DEPDIR)/feenox-kdtree.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./contrib/kdtree.c' object='./contrib/feenox-kdtree.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./contrib/feenox-kdtree.o `test -f './contrib/kdtree.c' || echo '$(srcdir)/'`./contrib/kdtree.c ./contrib/feenox-kdtree.obj: ./contrib/kdtree.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./contrib/feenox-kdtree.obj -MD -MP -MF ./contrib/$(DEPDIR)/feenox-kdtree.Tpo -c -o ./contrib/feenox-kdtree.obj `if test -f './contrib/kdtree.c'; then $(CYGPATH_W) './contrib/kdtree.c'; else $(CYGPATH_W) '$(srcdir)/./contrib/kdtree.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./contrib/$(DEPDIR)/feenox-kdtree.Tpo ./contrib/$(DEPDIR)/feenox-kdtree.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./contrib/kdtree.c' object='./contrib/feenox-kdtree.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./contrib/feenox-kdtree.obj `if test -f './contrib/kdtree.c'; then $(CYGPATH_W) './contrib/kdtree.c'; else $(CYGPATH_W) '$(srcdir)/./contrib/kdtree.c'; fi` ./flow/feenox-init.o: ./flow/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-init.o -MD -MP -MF ./flow/$(DEPDIR)/feenox-init.Tpo -c -o ./flow/feenox-init.o `test -f './flow/init.c' || echo '$(srcdir)/'`./flow/init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-init.Tpo ./flow/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/init.c' object='./flow/feenox-init.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-init.o `test -f './flow/init.c' || echo '$(srcdir)/'`./flow/init.c ./flow/feenox-init.obj: ./flow/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-init.obj -MD -MP -MF ./flow/$(DEPDIR)/feenox-init.Tpo -c -o ./flow/feenox-init.obj `if test -f './flow/init.c'; then $(CYGPATH_W) './flow/init.c'; else $(CYGPATH_W) '$(srcdir)/./flow/init.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-init.Tpo ./flow/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/init.c' object='./flow/feenox-init.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-init.obj `if test -f './flow/init.c'; then $(CYGPATH_W) './flow/init.c'; else $(CYGPATH_W) '$(srcdir)/./flow/init.c'; fi` ./flow/feenox-abort.o: ./flow/abort.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-abort.o -MD -MP -MF ./flow/$(DEPDIR)/feenox-abort.Tpo -c -o ./flow/feenox-abort.o `test -f './flow/abort.c' || echo '$(srcdir)/'`./flow/abort.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-abort.Tpo ./flow/$(DEPDIR)/feenox-abort.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/abort.c' object='./flow/feenox-abort.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-abort.o `test -f './flow/abort.c' || echo '$(srcdir)/'`./flow/abort.c ./flow/feenox-abort.obj: ./flow/abort.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-abort.obj -MD -MP -MF ./flow/$(DEPDIR)/feenox-abort.Tpo -c -o ./flow/feenox-abort.obj `if test -f './flow/abort.c'; then $(CYGPATH_W) './flow/abort.c'; else $(CYGPATH_W) '$(srcdir)/./flow/abort.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-abort.Tpo ./flow/$(DEPDIR)/feenox-abort.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/abort.c' object='./flow/feenox-abort.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-abort.obj `if test -f './flow/abort.c'; then $(CYGPATH_W) './flow/abort.c'; else $(CYGPATH_W) '$(srcdir)/./flow/abort.c'; fi` ./flow/feenox-conditional.o: ./flow/conditional.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-conditional.o -MD -MP -MF ./flow/$(DEPDIR)/feenox-conditional.Tpo -c -o ./flow/feenox-conditional.o `test -f './flow/conditional.c' || echo '$(srcdir)/'`./flow/conditional.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-conditional.Tpo ./flow/$(DEPDIR)/feenox-conditional.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/conditional.c' object='./flow/feenox-conditional.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-conditional.o `test -f './flow/conditional.c' || echo '$(srcdir)/'`./flow/conditional.c ./flow/feenox-conditional.obj: ./flow/conditional.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-conditional.obj -MD -MP -MF ./flow/$(DEPDIR)/feenox-conditional.Tpo -c -o ./flow/feenox-conditional.obj `if test -f './flow/conditional.c'; then $(CYGPATH_W) './flow/conditional.c'; else $(CYGPATH_W) '$(srcdir)/./flow/conditional.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-conditional.Tpo ./flow/$(DEPDIR)/feenox-conditional.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/conditional.c' object='./flow/feenox-conditional.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-conditional.obj `if test -f './flow/conditional.c'; then $(CYGPATH_W) './flow/conditional.c'; else $(CYGPATH_W) '$(srcdir)/./flow/conditional.c'; fi` ./flow/feenox-error.o: ./flow/error.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-error.o -MD -MP -MF ./flow/$(DEPDIR)/feenox-error.Tpo -c -o ./flow/feenox-error.o `test -f './flow/error.c' || echo '$(srcdir)/'`./flow/error.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-error.Tpo ./flow/$(DEPDIR)/feenox-error.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/error.c' object='./flow/feenox-error.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-error.o `test -f './flow/error.c' || echo '$(srcdir)/'`./flow/error.c ./flow/feenox-error.obj: ./flow/error.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-error.obj -MD -MP -MF ./flow/$(DEPDIR)/feenox-error.Tpo -c -o ./flow/feenox-error.obj `if test -f './flow/error.c'; then $(CYGPATH_W) './flow/error.c'; else $(CYGPATH_W) '$(srcdir)/./flow/error.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-error.Tpo ./flow/$(DEPDIR)/feenox-error.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/error.c' object='./flow/feenox-error.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-error.obj `if test -f './flow/error.c'; then $(CYGPATH_W) './flow/error.c'; else $(CYGPATH_W) '$(srcdir)/./flow/error.c'; fi` ./flow/feenox-define.o: ./flow/define.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-define.o -MD -MP -MF ./flow/$(DEPDIR)/feenox-define.Tpo -c -o ./flow/feenox-define.o `test -f './flow/define.c' || echo '$(srcdir)/'`./flow/define.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-define.Tpo ./flow/$(DEPDIR)/feenox-define.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/define.c' object='./flow/feenox-define.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-define.o `test -f './flow/define.c' || echo '$(srcdir)/'`./flow/define.c ./flow/feenox-define.obj: ./flow/define.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-define.obj -MD -MP -MF ./flow/$(DEPDIR)/feenox-define.Tpo -c -o ./flow/feenox-define.obj `if test -f './flow/define.c'; then $(CYGPATH_W) './flow/define.c'; else $(CYGPATH_W) '$(srcdir)/./flow/define.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-define.Tpo ./flow/$(DEPDIR)/feenox-define.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/define.c' object='./flow/feenox-define.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-define.obj `if test -f './flow/define.c'; then $(CYGPATH_W) './flow/define.c'; else $(CYGPATH_W) '$(srcdir)/./flow/define.c'; fi` ./flow/feenox-getptr.o: ./flow/getptr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-getptr.o -MD -MP -MF ./flow/$(DEPDIR)/feenox-getptr.Tpo -c -o ./flow/feenox-getptr.o `test -f './flow/getptr.c' || echo '$(srcdir)/'`./flow/getptr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-getptr.Tpo ./flow/$(DEPDIR)/feenox-getptr.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/getptr.c' object='./flow/feenox-getptr.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-getptr.o `test -f './flow/getptr.c' || echo '$(srcdir)/'`./flow/getptr.c ./flow/feenox-getptr.obj: ./flow/getptr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-getptr.obj -MD -MP -MF ./flow/$(DEPDIR)/feenox-getptr.Tpo -c -o ./flow/feenox-getptr.obj `if test -f './flow/getptr.c'; then $(CYGPATH_W) './flow/getptr.c'; else $(CYGPATH_W) '$(srcdir)/./flow/getptr.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-getptr.Tpo ./flow/$(DEPDIR)/feenox-getptr.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/getptr.c' object='./flow/feenox-getptr.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-getptr.obj `if test -f './flow/getptr.c'; then $(CYGPATH_W) './flow/getptr.c'; else $(CYGPATH_W) '$(srcdir)/./flow/getptr.c'; fi` ./flow/feenox-cleanup.o: ./flow/cleanup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-cleanup.o -MD -MP -MF ./flow/$(DEPDIR)/feenox-cleanup.Tpo -c -o ./flow/feenox-cleanup.o `test -f './flow/cleanup.c' || echo '$(srcdir)/'`./flow/cleanup.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-cleanup.Tpo ./flow/$(DEPDIR)/feenox-cleanup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/cleanup.c' object='./flow/feenox-cleanup.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-cleanup.o `test -f './flow/cleanup.c' || echo '$(srcdir)/'`./flow/cleanup.c ./flow/feenox-cleanup.obj: ./flow/cleanup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-cleanup.obj -MD -MP -MF ./flow/$(DEPDIR)/feenox-cleanup.Tpo -c -o ./flow/feenox-cleanup.obj `if test -f './flow/cleanup.c'; then $(CYGPATH_W) './flow/cleanup.c'; else $(CYGPATH_W) '$(srcdir)/./flow/cleanup.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-cleanup.Tpo ./flow/$(DEPDIR)/feenox-cleanup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/cleanup.c' object='./flow/feenox-cleanup.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-cleanup.obj `if test -f './flow/cleanup.c'; then $(CYGPATH_W) './flow/cleanup.c'; else $(CYGPATH_W) '$(srcdir)/./flow/cleanup.c'; fi` ./flow/feenox-instruction.o: ./flow/instruction.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-instruction.o -MD -MP -MF ./flow/$(DEPDIR)/feenox-instruction.Tpo -c -o ./flow/feenox-instruction.o `test -f './flow/instruction.c' || echo '$(srcdir)/'`./flow/instruction.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-instruction.Tpo ./flow/$(DEPDIR)/feenox-instruction.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/instruction.c' object='./flow/feenox-instruction.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-instruction.o `test -f './flow/instruction.c' || echo '$(srcdir)/'`./flow/instruction.c ./flow/feenox-instruction.obj: ./flow/instruction.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-instruction.obj -MD -MP -MF ./flow/$(DEPDIR)/feenox-instruction.Tpo -c -o ./flow/feenox-instruction.obj `if test -f './flow/instruction.c'; then $(CYGPATH_W) './flow/instruction.c'; else $(CYGPATH_W) '$(srcdir)/./flow/instruction.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-instruction.Tpo ./flow/$(DEPDIR)/feenox-instruction.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/instruction.c' object='./flow/feenox-instruction.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-instruction.obj `if test -f './flow/instruction.c'; then $(CYGPATH_W) './flow/instruction.c'; else $(CYGPATH_W) '$(srcdir)/./flow/instruction.c'; fi` ./flow/feenox-step.o: ./flow/step.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-step.o -MD -MP -MF ./flow/$(DEPDIR)/feenox-step.Tpo -c -o ./flow/feenox-step.o `test -f './flow/step.c' || echo '$(srcdir)/'`./flow/step.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-step.Tpo ./flow/$(DEPDIR)/feenox-step.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/step.c' object='./flow/feenox-step.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-step.o `test -f './flow/step.c' || echo '$(srcdir)/'`./flow/step.c ./flow/feenox-step.obj: ./flow/step.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-step.obj -MD -MP -MF ./flow/$(DEPDIR)/feenox-step.Tpo -c -o ./flow/feenox-step.obj `if test -f './flow/step.c'; then $(CYGPATH_W) './flow/step.c'; else $(CYGPATH_W) '$(srcdir)/./flow/step.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-step.Tpo ./flow/$(DEPDIR)/feenox-step.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/step.c' object='./flow/feenox-step.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-step.obj `if test -f './flow/step.c'; then $(CYGPATH_W) './flow/step.c'; else $(CYGPATH_W) '$(srcdir)/./flow/step.c'; fi` ./flow/feenox-run.o: ./flow/run.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-run.o -MD -MP -MF ./flow/$(DEPDIR)/feenox-run.Tpo -c -o ./flow/feenox-run.o `test -f './flow/run.c' || echo '$(srcdir)/'`./flow/run.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-run.Tpo ./flow/$(DEPDIR)/feenox-run.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/run.c' object='./flow/feenox-run.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-run.o `test -f './flow/run.c' || echo '$(srcdir)/'`./flow/run.c ./flow/feenox-run.obj: ./flow/run.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./flow/feenox-run.obj -MD -MP -MF ./flow/$(DEPDIR)/feenox-run.Tpo -c -o ./flow/feenox-run.obj `if test -f './flow/run.c'; then $(CYGPATH_W) './flow/run.c'; else $(CYGPATH_W) '$(srcdir)/./flow/run.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./flow/$(DEPDIR)/feenox-run.Tpo ./flow/$(DEPDIR)/feenox-run.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./flow/run.c' object='./flow/feenox-run.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./flow/feenox-run.obj `if test -f './flow/run.c'; then $(CYGPATH_W) './flow/run.c'; else $(CYGPATH_W) '$(srcdir)/./flow/run.c'; fi` ./parser/feenox-parser.o: ./parser/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./parser/feenox-parser.o -MD -MP -MF ./parser/$(DEPDIR)/feenox-parser.Tpo -c -o ./parser/feenox-parser.o `test -f './parser/parser.c' || echo '$(srcdir)/'`./parser/parser.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./parser/$(DEPDIR)/feenox-parser.Tpo ./parser/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./parser/parser.c' object='./parser/feenox-parser.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./parser/feenox-parser.o `test -f './parser/parser.c' || echo '$(srcdir)/'`./parser/parser.c ./parser/feenox-parser.obj: ./parser/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./parser/feenox-parser.obj -MD -MP -MF ./parser/$(DEPDIR)/feenox-parser.Tpo -c -o ./parser/feenox-parser.obj `if test -f './parser/parser.c'; then $(CYGPATH_W) './parser/parser.c'; else $(CYGPATH_W) '$(srcdir)/./parser/parser.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./parser/$(DEPDIR)/feenox-parser.Tpo ./parser/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./parser/parser.c' object='./parser/feenox-parser.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./parser/feenox-parser.obj `if test -f './parser/parser.c'; then $(CYGPATH_W) './parser/parser.c'; else $(CYGPATH_W) '$(srcdir)/./parser/parser.c'; fi` ./parser/feenox-auxiliary.o: ./parser/auxiliary.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./parser/feenox-auxiliary.o -MD -MP -MF ./parser/$(DEPDIR)/feenox-auxiliary.Tpo -c -o ./parser/feenox-auxiliary.o `test -f './parser/auxiliary.c' || echo '$(srcdir)/'`./parser/auxiliary.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./parser/$(DEPDIR)/feenox-auxiliary.Tpo ./parser/$(DEPDIR)/feenox-auxiliary.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./parser/auxiliary.c' object='./parser/feenox-auxiliary.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./parser/feenox-auxiliary.o `test -f './parser/auxiliary.c' || echo '$(srcdir)/'`./parser/auxiliary.c ./parser/feenox-auxiliary.obj: ./parser/auxiliary.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./parser/feenox-auxiliary.obj -MD -MP -MF ./parser/$(DEPDIR)/feenox-auxiliary.Tpo -c -o ./parser/feenox-auxiliary.obj `if test -f './parser/auxiliary.c'; then $(CYGPATH_W) './parser/auxiliary.c'; else $(CYGPATH_W) '$(srcdir)/./parser/auxiliary.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./parser/$(DEPDIR)/feenox-auxiliary.Tpo ./parser/$(DEPDIR)/feenox-auxiliary.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./parser/auxiliary.c' object='./parser/feenox-auxiliary.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./parser/feenox-auxiliary.obj `if test -f './parser/auxiliary.c'; then $(CYGPATH_W) './parser/auxiliary.c'; else $(CYGPATH_W) '$(srcdir)/./parser/auxiliary.c'; fi` ./io/feenox-file.o: ./io/file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./io/feenox-file.o -MD -MP -MF ./io/$(DEPDIR)/feenox-file.Tpo -c -o ./io/feenox-file.o `test -f './io/file.c' || echo '$(srcdir)/'`./io/file.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./io/$(DEPDIR)/feenox-file.Tpo ./io/$(DEPDIR)/feenox-file.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./io/file.c' object='./io/feenox-file.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./io/feenox-file.o `test -f './io/file.c' || echo '$(srcdir)/'`./io/file.c ./io/feenox-file.obj: ./io/file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./io/feenox-file.obj -MD -MP -MF ./io/$(DEPDIR)/feenox-file.Tpo -c -o ./io/feenox-file.obj `if test -f './io/file.c'; then $(CYGPATH_W) './io/file.c'; else $(CYGPATH_W) '$(srcdir)/./io/file.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./io/$(DEPDIR)/feenox-file.Tpo ./io/$(DEPDIR)/feenox-file.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./io/file.c' object='./io/feenox-file.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./io/feenox-file.obj `if test -f './io/file.c'; then $(CYGPATH_W) './io/file.c'; else $(CYGPATH_W) '$(srcdir)/./io/file.c'; fi` ./io/feenox-print.o: ./io/print.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./io/feenox-print.o -MD -MP -MF ./io/$(DEPDIR)/feenox-print.Tpo -c -o ./io/feenox-print.o `test -f './io/print.c' || echo '$(srcdir)/'`./io/print.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./io/$(DEPDIR)/feenox-print.Tpo ./io/$(DEPDIR)/feenox-print.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./io/print.c' object='./io/feenox-print.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./io/feenox-print.o `test -f './io/print.c' || echo '$(srcdir)/'`./io/print.c ./io/feenox-print.obj: ./io/print.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./io/feenox-print.obj -MD -MP -MF ./io/$(DEPDIR)/feenox-print.Tpo -c -o ./io/feenox-print.obj `if test -f './io/print.c'; then $(CYGPATH_W) './io/print.c'; else $(CYGPATH_W) '$(srcdir)/./io/print.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./io/$(DEPDIR)/feenox-print.Tpo ./io/$(DEPDIR)/feenox-print.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./io/print.c' object='./io/feenox-print.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./io/feenox-print.obj `if test -f './io/print.c'; then $(CYGPATH_W) './io/print.c'; else $(CYGPATH_W) '$(srcdir)/./io/print.c'; fi` ./io/feenox-printf.o: ./io/printf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./io/feenox-printf.o -MD -MP -MF ./io/$(DEPDIR)/feenox-printf.Tpo -c -o ./io/feenox-printf.o `test -f './io/printf.c' || echo '$(srcdir)/'`./io/printf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./io/$(DEPDIR)/feenox-printf.Tpo ./io/$(DEPDIR)/feenox-printf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./io/printf.c' object='./io/feenox-printf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./io/feenox-printf.o `test -f './io/printf.c' || echo '$(srcdir)/'`./io/printf.c ./io/feenox-printf.obj: ./io/printf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./io/feenox-printf.obj -MD -MP -MF ./io/$(DEPDIR)/feenox-printf.Tpo -c -o ./io/feenox-printf.obj `if test -f './io/printf.c'; then $(CYGPATH_W) './io/printf.c'; else $(CYGPATH_W) '$(srcdir)/./io/printf.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./io/$(DEPDIR)/feenox-printf.Tpo ./io/$(DEPDIR)/feenox-printf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./io/printf.c' object='./io/feenox-printf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./io/feenox-printf.obj `if test -f './io/printf.c'; then $(CYGPATH_W) './io/printf.c'; else $(CYGPATH_W) '$(srcdir)/./io/printf.c'; fi` ./math/feenox-alias.o: ./math/alias.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-alias.o -MD -MP -MF ./math/$(DEPDIR)/feenox-alias.Tpo -c -o ./math/feenox-alias.o `test -f './math/alias.c' || echo '$(srcdir)/'`./math/alias.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-alias.Tpo ./math/$(DEPDIR)/feenox-alias.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/alias.c' object='./math/feenox-alias.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-alias.o `test -f './math/alias.c' || echo '$(srcdir)/'`./math/alias.c ./math/feenox-alias.obj: ./math/alias.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-alias.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-alias.Tpo -c -o ./math/feenox-alias.obj `if test -f './math/alias.c'; then $(CYGPATH_W) './math/alias.c'; else $(CYGPATH_W) '$(srcdir)/./math/alias.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-alias.Tpo ./math/$(DEPDIR)/feenox-alias.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/alias.c' object='./math/feenox-alias.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-alias.obj `if test -f './math/alias.c'; then $(CYGPATH_W) './math/alias.c'; else $(CYGPATH_W) '$(srcdir)/./math/alias.c'; fi` ./math/feenox-assignment.o: ./math/assignment.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-assignment.o -MD -MP -MF ./math/$(DEPDIR)/feenox-assignment.Tpo -c -o ./math/feenox-assignment.o `test -f './math/assignment.c' || echo '$(srcdir)/'`./math/assignment.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-assignment.Tpo ./math/$(DEPDIR)/feenox-assignment.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/assignment.c' object='./math/feenox-assignment.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-assignment.o `test -f './math/assignment.c' || echo '$(srcdir)/'`./math/assignment.c ./math/feenox-assignment.obj: ./math/assignment.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-assignment.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-assignment.Tpo -c -o ./math/feenox-assignment.obj `if test -f './math/assignment.c'; then $(CYGPATH_W) './math/assignment.c'; else $(CYGPATH_W) '$(srcdir)/./math/assignment.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-assignment.Tpo ./math/$(DEPDIR)/feenox-assignment.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/assignment.c' object='./math/feenox-assignment.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-assignment.obj `if test -f './math/assignment.c'; then $(CYGPATH_W) './math/assignment.c'; else $(CYGPATH_W) '$(srcdir)/./math/assignment.c'; fi` ./math/feenox-builtin_functions.o: ./math/builtin_functions.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-builtin_functions.o -MD -MP -MF ./math/$(DEPDIR)/feenox-builtin_functions.Tpo -c -o ./math/feenox-builtin_functions.o `test -f './math/builtin_functions.c' || echo '$(srcdir)/'`./math/builtin_functions.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-builtin_functions.Tpo ./math/$(DEPDIR)/feenox-builtin_functions.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/builtin_functions.c' object='./math/feenox-builtin_functions.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-builtin_functions.o `test -f './math/builtin_functions.c' || echo '$(srcdir)/'`./math/builtin_functions.c ./math/feenox-builtin_functions.obj: ./math/builtin_functions.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-builtin_functions.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-builtin_functions.Tpo -c -o ./math/feenox-builtin_functions.obj `if test -f './math/builtin_functions.c'; then $(CYGPATH_W) './math/builtin_functions.c'; else $(CYGPATH_W) '$(srcdir)/./math/builtin_functions.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-builtin_functions.Tpo ./math/$(DEPDIR)/feenox-builtin_functions.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/builtin_functions.c' object='./math/feenox-builtin_functions.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-builtin_functions.obj `if test -f './math/builtin_functions.c'; then $(CYGPATH_W) './math/builtin_functions.c'; else $(CYGPATH_W) '$(srcdir)/./math/builtin_functions.c'; fi` ./math/feenox-builtin_functionals.o: ./math/builtin_functionals.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-builtin_functionals.o -MD -MP -MF ./math/$(DEPDIR)/feenox-builtin_functionals.Tpo -c -o ./math/feenox-builtin_functionals.o `test -f './math/builtin_functionals.c' || echo '$(srcdir)/'`./math/builtin_functionals.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-builtin_functionals.Tpo ./math/$(DEPDIR)/feenox-builtin_functionals.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/builtin_functionals.c' object='./math/feenox-builtin_functionals.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-builtin_functionals.o `test -f './math/builtin_functionals.c' || echo '$(srcdir)/'`./math/builtin_functionals.c ./math/feenox-builtin_functionals.obj: ./math/builtin_functionals.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-builtin_functionals.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-builtin_functionals.Tpo -c -o ./math/feenox-builtin_functionals.obj `if test -f './math/builtin_functionals.c'; then $(CYGPATH_W) './math/builtin_functionals.c'; else $(CYGPATH_W) '$(srcdir)/./math/builtin_functionals.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-builtin_functionals.Tpo ./math/$(DEPDIR)/feenox-builtin_functionals.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/builtin_functionals.c' object='./math/feenox-builtin_functionals.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-builtin_functionals.obj `if test -f './math/builtin_functionals.c'; then $(CYGPATH_W) './math/builtin_functionals.c'; else $(CYGPATH_W) '$(srcdir)/./math/builtin_functionals.c'; fi` ./math/feenox-builtin_vectorfunctions.o: ./math/builtin_vectorfunctions.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-builtin_vectorfunctions.o -MD -MP -MF ./math/$(DEPDIR)/feenox-builtin_vectorfunctions.Tpo -c -o ./math/feenox-builtin_vectorfunctions.o `test -f './math/builtin_vectorfunctions.c' || echo '$(srcdir)/'`./math/builtin_vectorfunctions.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-builtin_vectorfunctions.Tpo ./math/$(DEPDIR)/feenox-builtin_vectorfunctions.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/builtin_vectorfunctions.c' object='./math/feenox-builtin_vectorfunctions.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-builtin_vectorfunctions.o `test -f './math/builtin_vectorfunctions.c' || echo '$(srcdir)/'`./math/builtin_vectorfunctions.c ./math/feenox-builtin_vectorfunctions.obj: ./math/builtin_vectorfunctions.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-builtin_vectorfunctions.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-builtin_vectorfunctions.Tpo -c -o ./math/feenox-builtin_vectorfunctions.obj `if test -f './math/builtin_vectorfunctions.c'; then $(CYGPATH_W) './math/builtin_vectorfunctions.c'; else $(CYGPATH_W) '$(srcdir)/./math/builtin_vectorfunctions.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-builtin_vectorfunctions.Tpo ./math/$(DEPDIR)/feenox-builtin_vectorfunctions.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/builtin_vectorfunctions.c' object='./math/feenox-builtin_vectorfunctions.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-builtin_vectorfunctions.obj `if test -f './math/builtin_vectorfunctions.c'; then $(CYGPATH_W) './math/builtin_vectorfunctions.c'; else $(CYGPATH_W) '$(srcdir)/./math/builtin_vectorfunctions.c'; fi` ./math/feenox-dae.o: ./math/dae.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-dae.o -MD -MP -MF ./math/$(DEPDIR)/feenox-dae.Tpo -c -o ./math/feenox-dae.o `test -f './math/dae.c' || echo '$(srcdir)/'`./math/dae.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-dae.Tpo ./math/$(DEPDIR)/feenox-dae.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/dae.c' object='./math/feenox-dae.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-dae.o `test -f './math/dae.c' || echo '$(srcdir)/'`./math/dae.c ./math/feenox-dae.obj: ./math/dae.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-dae.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-dae.Tpo -c -o ./math/feenox-dae.obj `if test -f './math/dae.c'; then $(CYGPATH_W) './math/dae.c'; else $(CYGPATH_W) '$(srcdir)/./math/dae.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-dae.Tpo ./math/$(DEPDIR)/feenox-dae.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/dae.c' object='./math/feenox-dae.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-dae.obj `if test -f './math/dae.c'; then $(CYGPATH_W) './math/dae.c'; else $(CYGPATH_W) '$(srcdir)/./math/dae.c'; fi` ./math/feenox-expressions.o: ./math/expressions.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-expressions.o -MD -MP -MF ./math/$(DEPDIR)/feenox-expressions.Tpo -c -o ./math/feenox-expressions.o `test -f './math/expressions.c' || echo '$(srcdir)/'`./math/expressions.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-expressions.Tpo ./math/$(DEPDIR)/feenox-expressions.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/expressions.c' object='./math/feenox-expressions.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-expressions.o `test -f './math/expressions.c' || echo '$(srcdir)/'`./math/expressions.c ./math/feenox-expressions.obj: ./math/expressions.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-expressions.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-expressions.Tpo -c -o ./math/feenox-expressions.obj `if test -f './math/expressions.c'; then $(CYGPATH_W) './math/expressions.c'; else $(CYGPATH_W) '$(srcdir)/./math/expressions.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-expressions.Tpo ./math/$(DEPDIR)/feenox-expressions.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/expressions.c' object='./math/feenox-expressions.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-expressions.obj `if test -f './math/expressions.c'; then $(CYGPATH_W) './math/expressions.c'; else $(CYGPATH_W) '$(srcdir)/./math/expressions.c'; fi` ./math/feenox-fit.o: ./math/fit.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-fit.o -MD -MP -MF ./math/$(DEPDIR)/feenox-fit.Tpo -c -o ./math/feenox-fit.o `test -f './math/fit.c' || echo '$(srcdir)/'`./math/fit.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-fit.Tpo ./math/$(DEPDIR)/feenox-fit.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/fit.c' object='./math/feenox-fit.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-fit.o `test -f './math/fit.c' || echo '$(srcdir)/'`./math/fit.c ./math/feenox-fit.obj: ./math/fit.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-fit.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-fit.Tpo -c -o ./math/feenox-fit.obj `if test -f './math/fit.c'; then $(CYGPATH_W) './math/fit.c'; else $(CYGPATH_W) '$(srcdir)/./math/fit.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-fit.Tpo ./math/$(DEPDIR)/feenox-fit.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/fit.c' object='./math/feenox-fit.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-fit.obj `if test -f './math/fit.c'; then $(CYGPATH_W) './math/fit.c'; else $(CYGPATH_W) '$(srcdir)/./math/fit.c'; fi` ./math/feenox-function.o: ./math/function.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-function.o -MD -MP -MF ./math/$(DEPDIR)/feenox-function.Tpo -c -o ./math/feenox-function.o `test -f './math/function.c' || echo '$(srcdir)/'`./math/function.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-function.Tpo ./math/$(DEPDIR)/feenox-function.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/function.c' object='./math/feenox-function.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-function.o `test -f './math/function.c' || echo '$(srcdir)/'`./math/function.c ./math/feenox-function.obj: ./math/function.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-function.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-function.Tpo -c -o ./math/feenox-function.obj `if test -f './math/function.c'; then $(CYGPATH_W) './math/function.c'; else $(CYGPATH_W) '$(srcdir)/./math/function.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-function.Tpo ./math/$(DEPDIR)/feenox-function.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/function.c' object='./math/feenox-function.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-function.obj `if test -f './math/function.c'; then $(CYGPATH_W) './math/function.c'; else $(CYGPATH_W) '$(srcdir)/./math/function.c'; fi` ./math/feenox-matrix.o: ./math/matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-matrix.o -MD -MP -MF ./math/$(DEPDIR)/feenox-matrix.Tpo -c -o ./math/feenox-matrix.o `test -f './math/matrix.c' || echo '$(srcdir)/'`./math/matrix.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-matrix.Tpo ./math/$(DEPDIR)/feenox-matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/matrix.c' object='./math/feenox-matrix.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-matrix.o `test -f './math/matrix.c' || echo '$(srcdir)/'`./math/matrix.c ./math/feenox-matrix.obj: ./math/matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-matrix.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-matrix.Tpo -c -o ./math/feenox-matrix.obj `if test -f './math/matrix.c'; then $(CYGPATH_W) './math/matrix.c'; else $(CYGPATH_W) '$(srcdir)/./math/matrix.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-matrix.Tpo ./math/$(DEPDIR)/feenox-matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/matrix.c' object='./math/feenox-matrix.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-matrix.obj `if test -f './math/matrix.c'; then $(CYGPATH_W) './math/matrix.c'; else $(CYGPATH_W) '$(srcdir)/./math/matrix.c'; fi` ./math/feenox-solve.o: ./math/solve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-solve.o -MD -MP -MF ./math/$(DEPDIR)/feenox-solve.Tpo -c -o ./math/feenox-solve.o `test -f './math/solve.c' || echo '$(srcdir)/'`./math/solve.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-solve.Tpo ./math/$(DEPDIR)/feenox-solve.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/solve.c' object='./math/feenox-solve.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-solve.o `test -f './math/solve.c' || echo '$(srcdir)/'`./math/solve.c ./math/feenox-solve.obj: ./math/solve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-solve.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-solve.Tpo -c -o ./math/feenox-solve.obj `if test -f './math/solve.c'; then $(CYGPATH_W) './math/solve.c'; else $(CYGPATH_W) '$(srcdir)/./math/solve.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-solve.Tpo ./math/$(DEPDIR)/feenox-solve.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/solve.c' object='./math/feenox-solve.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-solve.obj `if test -f './math/solve.c'; then $(CYGPATH_W) './math/solve.c'; else $(CYGPATH_W) '$(srcdir)/./math/solve.c'; fi` ./math/feenox-vector.o: ./math/vector.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-vector.o -MD -MP -MF ./math/$(DEPDIR)/feenox-vector.Tpo -c -o ./math/feenox-vector.o `test -f './math/vector.c' || echo '$(srcdir)/'`./math/vector.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-vector.Tpo ./math/$(DEPDIR)/feenox-vector.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/vector.c' object='./math/feenox-vector.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-vector.o `test -f './math/vector.c' || echo '$(srcdir)/'`./math/vector.c ./math/feenox-vector.obj: ./math/vector.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./math/feenox-vector.obj -MD -MP -MF ./math/$(DEPDIR)/feenox-vector.Tpo -c -o ./math/feenox-vector.obj `if test -f './math/vector.c'; then $(CYGPATH_W) './math/vector.c'; else $(CYGPATH_W) '$(srcdir)/./math/vector.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./math/$(DEPDIR)/feenox-vector.Tpo ./math/$(DEPDIR)/feenox-vector.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./math/vector.c' object='./math/feenox-vector.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./math/feenox-vector.obj `if test -f './math/vector.c'; then $(CYGPATH_W) './math/vector.c'; else $(CYGPATH_W) '$(srcdir)/./math/vector.c'; fi` ./mesh/feenox-init.o: ./mesh/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-init.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-init.Tpo -c -o ./mesh/feenox-init.o `test -f './mesh/init.c' || echo '$(srcdir)/'`./mesh/init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-init.Tpo ./mesh/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/init.c' object='./mesh/feenox-init.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-init.o `test -f './mesh/init.c' || echo '$(srcdir)/'`./mesh/init.c ./mesh/feenox-init.obj: ./mesh/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-init.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-init.Tpo -c -o ./mesh/feenox-init.obj `if test -f './mesh/init.c'; then $(CYGPATH_W) './mesh/init.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/init.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-init.Tpo ./mesh/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/init.c' object='./mesh/feenox-init.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-init.obj `if test -f './mesh/init.c'; then $(CYGPATH_W) './mesh/init.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/init.c'; fi` ./mesh/feenox-geometry.o: ./mesh/geometry.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-geometry.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-geometry.Tpo -c -o ./mesh/feenox-geometry.o `test -f './mesh/geometry.c' || echo '$(srcdir)/'`./mesh/geometry.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-geometry.Tpo ./mesh/$(DEPDIR)/feenox-geometry.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/geometry.c' object='./mesh/feenox-geometry.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-geometry.o `test -f './mesh/geometry.c' || echo '$(srcdir)/'`./mesh/geometry.c ./mesh/feenox-geometry.obj: ./mesh/geometry.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-geometry.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-geometry.Tpo -c -o ./mesh/feenox-geometry.obj `if test -f './mesh/geometry.c'; then $(CYGPATH_W) './mesh/geometry.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/geometry.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-geometry.Tpo ./mesh/$(DEPDIR)/feenox-geometry.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/geometry.c' object='./mesh/feenox-geometry.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-geometry.obj `if test -f './mesh/geometry.c'; then $(CYGPATH_W) './mesh/geometry.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/geometry.c'; fi` ./mesh/feenox-neighbors.o: ./mesh/neighbors.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-neighbors.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-neighbors.Tpo -c -o ./mesh/feenox-neighbors.o `test -f './mesh/neighbors.c' || echo '$(srcdir)/'`./mesh/neighbors.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-neighbors.Tpo ./mesh/$(DEPDIR)/feenox-neighbors.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/neighbors.c' object='./mesh/feenox-neighbors.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-neighbors.o `test -f './mesh/neighbors.c' || echo '$(srcdir)/'`./mesh/neighbors.c ./mesh/feenox-neighbors.obj: ./mesh/neighbors.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-neighbors.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-neighbors.Tpo -c -o ./mesh/feenox-neighbors.obj `if test -f './mesh/neighbors.c'; then $(CYGPATH_W) './mesh/neighbors.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/neighbors.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-neighbors.Tpo ./mesh/$(DEPDIR)/feenox-neighbors.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/neighbors.c' object='./mesh/feenox-neighbors.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-neighbors.obj `if test -f './mesh/neighbors.c'; then $(CYGPATH_W) './mesh/neighbors.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/neighbors.c'; fi` ./mesh/feenox-boundary_condition.o: ./mesh/boundary_condition.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-boundary_condition.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-boundary_condition.Tpo -c -o ./mesh/feenox-boundary_condition.o `test -f './mesh/boundary_condition.c' || echo '$(srcdir)/'`./mesh/boundary_condition.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-boundary_condition.Tpo ./mesh/$(DEPDIR)/feenox-boundary_condition.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/boundary_condition.c' object='./mesh/feenox-boundary_condition.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-boundary_condition.o `test -f './mesh/boundary_condition.c' || echo '$(srcdir)/'`./mesh/boundary_condition.c ./mesh/feenox-boundary_condition.obj: ./mesh/boundary_condition.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-boundary_condition.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-boundary_condition.Tpo -c -o ./mesh/feenox-boundary_condition.obj `if test -f './mesh/boundary_condition.c'; then $(CYGPATH_W) './mesh/boundary_condition.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/boundary_condition.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-boundary_condition.Tpo ./mesh/$(DEPDIR)/feenox-boundary_condition.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/boundary_condition.c' object='./mesh/feenox-boundary_condition.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-boundary_condition.obj `if test -f './mesh/boundary_condition.c'; then $(CYGPATH_W) './mesh/boundary_condition.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/boundary_condition.c'; fi` ./mesh/feenox-physical_group.o: ./mesh/physical_group.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-physical_group.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-physical_group.Tpo -c -o ./mesh/feenox-physical_group.o `test -f './mesh/physical_group.c' || echo '$(srcdir)/'`./mesh/physical_group.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-physical_group.Tpo ./mesh/$(DEPDIR)/feenox-physical_group.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/physical_group.c' object='./mesh/feenox-physical_group.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-physical_group.o `test -f './mesh/physical_group.c' || echo '$(srcdir)/'`./mesh/physical_group.c ./mesh/feenox-physical_group.obj: ./mesh/physical_group.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-physical_group.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-physical_group.Tpo -c -o ./mesh/feenox-physical_group.obj `if test -f './mesh/physical_group.c'; then $(CYGPATH_W) './mesh/physical_group.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/physical_group.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-physical_group.Tpo ./mesh/$(DEPDIR)/feenox-physical_group.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/physical_group.c' object='./mesh/feenox-physical_group.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-physical_group.obj `if test -f './mesh/physical_group.c'; then $(CYGPATH_W) './mesh/physical_group.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/physical_group.c'; fi` ./mesh/feenox-interpolate.o: ./mesh/interpolate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-interpolate.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-interpolate.Tpo -c -o ./mesh/feenox-interpolate.o `test -f './mesh/interpolate.c' || echo '$(srcdir)/'`./mesh/interpolate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-interpolate.Tpo ./mesh/$(DEPDIR)/feenox-interpolate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/interpolate.c' object='./mesh/feenox-interpolate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-interpolate.o `test -f './mesh/interpolate.c' || echo '$(srcdir)/'`./mesh/interpolate.c ./mesh/feenox-interpolate.obj: ./mesh/interpolate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-interpolate.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-interpolate.Tpo -c -o ./mesh/feenox-interpolate.obj `if test -f './mesh/interpolate.c'; then $(CYGPATH_W) './mesh/interpolate.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/interpolate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-interpolate.Tpo ./mesh/$(DEPDIR)/feenox-interpolate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/interpolate.c' object='./mesh/feenox-interpolate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-interpolate.obj `if test -f './mesh/interpolate.c'; then $(CYGPATH_W) './mesh/interpolate.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/interpolate.c'; fi` ./mesh/feenox-material.o: ./mesh/material.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-material.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-material.Tpo -c -o ./mesh/feenox-material.o `test -f './mesh/material.c' || echo '$(srcdir)/'`./mesh/material.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-material.Tpo ./mesh/$(DEPDIR)/feenox-material.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/material.c' object='./mesh/feenox-material.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-material.o `test -f './mesh/material.c' || echo '$(srcdir)/'`./mesh/material.c ./mesh/feenox-material.obj: ./mesh/material.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-material.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-material.Tpo -c -o ./mesh/feenox-material.obj `if test -f './mesh/material.c'; then $(CYGPATH_W) './mesh/material.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/material.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-material.Tpo ./mesh/$(DEPDIR)/feenox-material.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/material.c' object='./mesh/feenox-material.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-material.obj `if test -f './mesh/material.c'; then $(CYGPATH_W) './mesh/material.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/material.c'; fi` ./mesh/feenox-element.o: ./mesh/element.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-element.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-element.Tpo -c -o ./mesh/feenox-element.o `test -f './mesh/element.c' || echo '$(srcdir)/'`./mesh/element.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-element.Tpo ./mesh/$(DEPDIR)/feenox-element.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/element.c' object='./mesh/feenox-element.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-element.o `test -f './mesh/element.c' || echo '$(srcdir)/'`./mesh/element.c ./mesh/feenox-element.obj: ./mesh/element.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-element.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-element.Tpo -c -o ./mesh/feenox-element.obj `if test -f './mesh/element.c'; then $(CYGPATH_W) './mesh/element.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/element.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-element.Tpo ./mesh/$(DEPDIR)/feenox-element.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/element.c' object='./mesh/feenox-element.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-element.obj `if test -f './mesh/element.c'; then $(CYGPATH_W) './mesh/element.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/element.c'; fi` ./mesh/feenox-cell.o: ./mesh/cell.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-cell.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-cell.Tpo -c -o ./mesh/feenox-cell.o `test -f './mesh/cell.c' || echo '$(srcdir)/'`./mesh/cell.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-cell.Tpo ./mesh/$(DEPDIR)/feenox-cell.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/cell.c' object='./mesh/feenox-cell.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-cell.o `test -f './mesh/cell.c' || echo '$(srcdir)/'`./mesh/cell.c ./mesh/feenox-cell.obj: ./mesh/cell.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-cell.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-cell.Tpo -c -o ./mesh/feenox-cell.obj `if test -f './mesh/cell.c'; then $(CYGPATH_W) './mesh/cell.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/cell.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-cell.Tpo ./mesh/$(DEPDIR)/feenox-cell.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/cell.c' object='./mesh/feenox-cell.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-cell.obj `if test -f './mesh/cell.c'; then $(CYGPATH_W) './mesh/cell.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/cell.c'; fi` ./mesh/feenox-write.o: ./mesh/write.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-write.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-write.Tpo -c -o ./mesh/feenox-write.o `test -f './mesh/write.c' || echo '$(srcdir)/'`./mesh/write.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-write.Tpo ./mesh/$(DEPDIR)/feenox-write.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/write.c' object='./mesh/feenox-write.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-write.o `test -f './mesh/write.c' || echo '$(srcdir)/'`./mesh/write.c ./mesh/feenox-write.obj: ./mesh/write.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-write.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-write.Tpo -c -o ./mesh/feenox-write.obj `if test -f './mesh/write.c'; then $(CYGPATH_W) './mesh/write.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/write.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-write.Tpo ./mesh/$(DEPDIR)/feenox-write.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/write.c' object='./mesh/feenox-write.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-write.obj `if test -f './mesh/write.c'; then $(CYGPATH_W) './mesh/write.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/write.c'; fi` ./mesh/feenox-integrate.o: ./mesh/integrate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-integrate.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-integrate.Tpo -c -o ./mesh/feenox-integrate.o `test -f './mesh/integrate.c' || echo '$(srcdir)/'`./mesh/integrate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-integrate.Tpo ./mesh/$(DEPDIR)/feenox-integrate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/integrate.c' object='./mesh/feenox-integrate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-integrate.o `test -f './mesh/integrate.c' || echo '$(srcdir)/'`./mesh/integrate.c ./mesh/feenox-integrate.obj: ./mesh/integrate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-integrate.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-integrate.Tpo -c -o ./mesh/feenox-integrate.obj `if test -f './mesh/integrate.c'; then $(CYGPATH_W) './mesh/integrate.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/integrate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-integrate.Tpo ./mesh/$(DEPDIR)/feenox-integrate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/integrate.c' object='./mesh/feenox-integrate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-integrate.obj `if test -f './mesh/integrate.c'; then $(CYGPATH_W) './mesh/integrate.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/integrate.c'; fi` ./mesh/feenox-extrema.o: ./mesh/extrema.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-extrema.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-extrema.Tpo -c -o ./mesh/feenox-extrema.o `test -f './mesh/extrema.c' || echo '$(srcdir)/'`./mesh/extrema.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-extrema.Tpo ./mesh/$(DEPDIR)/feenox-extrema.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/extrema.c' object='./mesh/feenox-extrema.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-extrema.o `test -f './mesh/extrema.c' || echo '$(srcdir)/'`./mesh/extrema.c ./mesh/feenox-extrema.obj: ./mesh/extrema.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-extrema.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-extrema.Tpo -c -o ./mesh/feenox-extrema.obj `if test -f './mesh/extrema.c'; then $(CYGPATH_W) './mesh/extrema.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/extrema.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-extrema.Tpo ./mesh/$(DEPDIR)/feenox-extrema.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/extrema.c' object='./mesh/feenox-extrema.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-extrema.obj `if test -f './mesh/extrema.c'; then $(CYGPATH_W) './mesh/extrema.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/extrema.c'; fi` ./mesh/feenox-mesh.o: ./mesh/mesh.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-mesh.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-mesh.Tpo -c -o ./mesh/feenox-mesh.o `test -f './mesh/mesh.c' || echo '$(srcdir)/'`./mesh/mesh.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-mesh.Tpo ./mesh/$(DEPDIR)/feenox-mesh.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/mesh.c' object='./mesh/feenox-mesh.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-mesh.o `test -f './mesh/mesh.c' || echo '$(srcdir)/'`./mesh/mesh.c ./mesh/feenox-mesh.obj: ./mesh/mesh.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-mesh.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-mesh.Tpo -c -o ./mesh/feenox-mesh.obj `if test -f './mesh/mesh.c'; then $(CYGPATH_W) './mesh/mesh.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/mesh.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-mesh.Tpo ./mesh/$(DEPDIR)/feenox-mesh.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/mesh.c' object='./mesh/feenox-mesh.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-mesh.obj `if test -f './mesh/mesh.c'; then $(CYGPATH_W) './mesh/mesh.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/mesh.c'; fi` ./mesh/feenox-gmsh.o: ./mesh/gmsh.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-gmsh.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-gmsh.Tpo -c -o ./mesh/feenox-gmsh.o `test -f './mesh/gmsh.c' || echo '$(srcdir)/'`./mesh/gmsh.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-gmsh.Tpo ./mesh/$(DEPDIR)/feenox-gmsh.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/gmsh.c' object='./mesh/feenox-gmsh.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-gmsh.o `test -f './mesh/gmsh.c' || echo '$(srcdir)/'`./mesh/gmsh.c ./mesh/feenox-gmsh.obj: ./mesh/gmsh.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-gmsh.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-gmsh.Tpo -c -o ./mesh/feenox-gmsh.obj `if test -f './mesh/gmsh.c'; then $(CYGPATH_W) './mesh/gmsh.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/gmsh.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-gmsh.Tpo ./mesh/$(DEPDIR)/feenox-gmsh.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/gmsh.c' object='./mesh/feenox-gmsh.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-gmsh.obj `if test -f './mesh/gmsh.c'; then $(CYGPATH_W) './mesh/gmsh.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/gmsh.c'; fi` ./mesh/feenox-calculix.o: ./mesh/calculix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-calculix.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-calculix.Tpo -c -o ./mesh/feenox-calculix.o `test -f './mesh/calculix.c' || echo '$(srcdir)/'`./mesh/calculix.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-calculix.Tpo ./mesh/$(DEPDIR)/feenox-calculix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/calculix.c' object='./mesh/feenox-calculix.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-calculix.o `test -f './mesh/calculix.c' || echo '$(srcdir)/'`./mesh/calculix.c ./mesh/feenox-calculix.obj: ./mesh/calculix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-calculix.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-calculix.Tpo -c -o ./mesh/feenox-calculix.obj `if test -f './mesh/calculix.c'; then $(CYGPATH_W) './mesh/calculix.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/calculix.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-calculix.Tpo ./mesh/$(DEPDIR)/feenox-calculix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/calculix.c' object='./mesh/feenox-calculix.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-calculix.obj `if test -f './mesh/calculix.c'; then $(CYGPATH_W) './mesh/calculix.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/calculix.c'; fi` ./mesh/feenox-vtk.o: ./mesh/vtk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-vtk.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-vtk.Tpo -c -o ./mesh/feenox-vtk.o `test -f './mesh/vtk.c' || echo '$(srcdir)/'`./mesh/vtk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-vtk.Tpo ./mesh/$(DEPDIR)/feenox-vtk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/vtk.c' object='./mesh/feenox-vtk.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-vtk.o `test -f './mesh/vtk.c' || echo '$(srcdir)/'`./mesh/vtk.c ./mesh/feenox-vtk.obj: ./mesh/vtk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-vtk.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-vtk.Tpo -c -o ./mesh/feenox-vtk.obj `if test -f './mesh/vtk.c'; then $(CYGPATH_W) './mesh/vtk.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/vtk.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-vtk.Tpo ./mesh/$(DEPDIR)/feenox-vtk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/vtk.c' object='./mesh/feenox-vtk.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-vtk.obj `if test -f './mesh/vtk.c'; then $(CYGPATH_W) './mesh/vtk.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/vtk.c'; fi` ./mesh/feenox-vtu.o: ./mesh/vtu.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-vtu.o -MD -MP -MF ./mesh/$(DEPDIR)/feenox-vtu.Tpo -c -o ./mesh/feenox-vtu.o `test -f './mesh/vtu.c' || echo '$(srcdir)/'`./mesh/vtu.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-vtu.Tpo ./mesh/$(DEPDIR)/feenox-vtu.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/vtu.c' object='./mesh/feenox-vtu.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-vtu.o `test -f './mesh/vtu.c' || echo '$(srcdir)/'`./mesh/vtu.c ./mesh/feenox-vtu.obj: ./mesh/vtu.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/feenox-vtu.obj -MD -MP -MF ./mesh/$(DEPDIR)/feenox-vtu.Tpo -c -o ./mesh/feenox-vtu.obj `if test -f './mesh/vtu.c'; then $(CYGPATH_W) './mesh/vtu.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/vtu.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/$(DEPDIR)/feenox-vtu.Tpo ./mesh/$(DEPDIR)/feenox-vtu.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/vtu.c' object='./mesh/feenox-vtu.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/feenox-vtu.obj `if test -f './mesh/vtu.c'; then $(CYGPATH_W) './mesh/vtu.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/vtu.c'; fi` ./mesh/elements/feenox-line2.o: ./mesh/elements/line2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-line2.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-line2.Tpo -c -o ./mesh/elements/feenox-line2.o `test -f './mesh/elements/line2.c' || echo '$(srcdir)/'`./mesh/elements/line2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-line2.Tpo ./mesh/elements/$(DEPDIR)/feenox-line2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/line2.c' object='./mesh/elements/feenox-line2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-line2.o `test -f './mesh/elements/line2.c' || echo '$(srcdir)/'`./mesh/elements/line2.c ./mesh/elements/feenox-line2.obj: ./mesh/elements/line2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-line2.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-line2.Tpo -c -o ./mesh/elements/feenox-line2.obj `if test -f './mesh/elements/line2.c'; then $(CYGPATH_W) './mesh/elements/line2.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/line2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-line2.Tpo ./mesh/elements/$(DEPDIR)/feenox-line2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/line2.c' object='./mesh/elements/feenox-line2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-line2.obj `if test -f './mesh/elements/line2.c'; then $(CYGPATH_W) './mesh/elements/line2.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/line2.c'; fi` ./mesh/elements/feenox-line3.o: ./mesh/elements/line3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-line3.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-line3.Tpo -c -o ./mesh/elements/feenox-line3.o `test -f './mesh/elements/line3.c' || echo '$(srcdir)/'`./mesh/elements/line3.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-line3.Tpo ./mesh/elements/$(DEPDIR)/feenox-line3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/line3.c' object='./mesh/elements/feenox-line3.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-line3.o `test -f './mesh/elements/line3.c' || echo '$(srcdir)/'`./mesh/elements/line3.c ./mesh/elements/feenox-line3.obj: ./mesh/elements/line3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-line3.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-line3.Tpo -c -o ./mesh/elements/feenox-line3.obj `if test -f './mesh/elements/line3.c'; then $(CYGPATH_W) './mesh/elements/line3.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/line3.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-line3.Tpo ./mesh/elements/$(DEPDIR)/feenox-line3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/line3.c' object='./mesh/elements/feenox-line3.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-line3.obj `if test -f './mesh/elements/line3.c'; then $(CYGPATH_W) './mesh/elements/line3.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/line3.c'; fi` ./mesh/elements/feenox-triang3.o: ./mesh/elements/triang3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-triang3.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-triang3.Tpo -c -o ./mesh/elements/feenox-triang3.o `test -f './mesh/elements/triang3.c' || echo '$(srcdir)/'`./mesh/elements/triang3.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-triang3.Tpo ./mesh/elements/$(DEPDIR)/feenox-triang3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/triang3.c' object='./mesh/elements/feenox-triang3.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-triang3.o `test -f './mesh/elements/triang3.c' || echo '$(srcdir)/'`./mesh/elements/triang3.c ./mesh/elements/feenox-triang3.obj: ./mesh/elements/triang3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-triang3.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-triang3.Tpo -c -o ./mesh/elements/feenox-triang3.obj `if test -f './mesh/elements/triang3.c'; then $(CYGPATH_W) './mesh/elements/triang3.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/triang3.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-triang3.Tpo ./mesh/elements/$(DEPDIR)/feenox-triang3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/triang3.c' object='./mesh/elements/feenox-triang3.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-triang3.obj `if test -f './mesh/elements/triang3.c'; then $(CYGPATH_W) './mesh/elements/triang3.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/triang3.c'; fi` ./mesh/elements/feenox-triang6.o: ./mesh/elements/triang6.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-triang6.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-triang6.Tpo -c -o ./mesh/elements/feenox-triang6.o `test -f './mesh/elements/triang6.c' || echo '$(srcdir)/'`./mesh/elements/triang6.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-triang6.Tpo ./mesh/elements/$(DEPDIR)/feenox-triang6.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/triang6.c' object='./mesh/elements/feenox-triang6.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-triang6.o `test -f './mesh/elements/triang6.c' || echo '$(srcdir)/'`./mesh/elements/triang6.c ./mesh/elements/feenox-triang6.obj: ./mesh/elements/triang6.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-triang6.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-triang6.Tpo -c -o ./mesh/elements/feenox-triang6.obj `if test -f './mesh/elements/triang6.c'; then $(CYGPATH_W) './mesh/elements/triang6.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/triang6.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-triang6.Tpo ./mesh/elements/$(DEPDIR)/feenox-triang6.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/triang6.c' object='./mesh/elements/feenox-triang6.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-triang6.obj `if test -f './mesh/elements/triang6.c'; then $(CYGPATH_W) './mesh/elements/triang6.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/triang6.c'; fi` ./mesh/elements/feenox-quad4.o: ./mesh/elements/quad4.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-quad4.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-quad4.Tpo -c -o ./mesh/elements/feenox-quad4.o `test -f './mesh/elements/quad4.c' || echo '$(srcdir)/'`./mesh/elements/quad4.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-quad4.Tpo ./mesh/elements/$(DEPDIR)/feenox-quad4.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/quad4.c' object='./mesh/elements/feenox-quad4.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-quad4.o `test -f './mesh/elements/quad4.c' || echo '$(srcdir)/'`./mesh/elements/quad4.c ./mesh/elements/feenox-quad4.obj: ./mesh/elements/quad4.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-quad4.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-quad4.Tpo -c -o ./mesh/elements/feenox-quad4.obj `if test -f './mesh/elements/quad4.c'; then $(CYGPATH_W) './mesh/elements/quad4.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/quad4.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-quad4.Tpo ./mesh/elements/$(DEPDIR)/feenox-quad4.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/quad4.c' object='./mesh/elements/feenox-quad4.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-quad4.obj `if test -f './mesh/elements/quad4.c'; then $(CYGPATH_W) './mesh/elements/quad4.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/quad4.c'; fi` ./mesh/elements/feenox-quad8.o: ./mesh/elements/quad8.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-quad8.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-quad8.Tpo -c -o ./mesh/elements/feenox-quad8.o `test -f './mesh/elements/quad8.c' || echo '$(srcdir)/'`./mesh/elements/quad8.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-quad8.Tpo ./mesh/elements/$(DEPDIR)/feenox-quad8.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/quad8.c' object='./mesh/elements/feenox-quad8.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-quad8.o `test -f './mesh/elements/quad8.c' || echo '$(srcdir)/'`./mesh/elements/quad8.c ./mesh/elements/feenox-quad8.obj: ./mesh/elements/quad8.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-quad8.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-quad8.Tpo -c -o ./mesh/elements/feenox-quad8.obj `if test -f './mesh/elements/quad8.c'; then $(CYGPATH_W) './mesh/elements/quad8.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/quad8.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-quad8.Tpo ./mesh/elements/$(DEPDIR)/feenox-quad8.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/quad8.c' object='./mesh/elements/feenox-quad8.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-quad8.obj `if test -f './mesh/elements/quad8.c'; then $(CYGPATH_W) './mesh/elements/quad8.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/quad8.c'; fi` ./mesh/elements/feenox-quad9.o: ./mesh/elements/quad9.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-quad9.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-quad9.Tpo -c -o ./mesh/elements/feenox-quad9.o `test -f './mesh/elements/quad9.c' || echo '$(srcdir)/'`./mesh/elements/quad9.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-quad9.Tpo ./mesh/elements/$(DEPDIR)/feenox-quad9.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/quad9.c' object='./mesh/elements/feenox-quad9.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-quad9.o `test -f './mesh/elements/quad9.c' || echo '$(srcdir)/'`./mesh/elements/quad9.c ./mesh/elements/feenox-quad9.obj: ./mesh/elements/quad9.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-quad9.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-quad9.Tpo -c -o ./mesh/elements/feenox-quad9.obj `if test -f './mesh/elements/quad9.c'; then $(CYGPATH_W) './mesh/elements/quad9.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/quad9.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-quad9.Tpo ./mesh/elements/$(DEPDIR)/feenox-quad9.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/quad9.c' object='./mesh/elements/feenox-quad9.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-quad9.obj `if test -f './mesh/elements/quad9.c'; then $(CYGPATH_W) './mesh/elements/quad9.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/quad9.c'; fi` ./mesh/elements/feenox-tet4.o: ./mesh/elements/tet4.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-tet4.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-tet4.Tpo -c -o ./mesh/elements/feenox-tet4.o `test -f './mesh/elements/tet4.c' || echo '$(srcdir)/'`./mesh/elements/tet4.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-tet4.Tpo ./mesh/elements/$(DEPDIR)/feenox-tet4.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/tet4.c' object='./mesh/elements/feenox-tet4.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-tet4.o `test -f './mesh/elements/tet4.c' || echo '$(srcdir)/'`./mesh/elements/tet4.c ./mesh/elements/feenox-tet4.obj: ./mesh/elements/tet4.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-tet4.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-tet4.Tpo -c -o ./mesh/elements/feenox-tet4.obj `if test -f './mesh/elements/tet4.c'; then $(CYGPATH_W) './mesh/elements/tet4.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/tet4.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-tet4.Tpo ./mesh/elements/$(DEPDIR)/feenox-tet4.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/tet4.c' object='./mesh/elements/feenox-tet4.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-tet4.obj `if test -f './mesh/elements/tet4.c'; then $(CYGPATH_W) './mesh/elements/tet4.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/tet4.c'; fi` ./mesh/elements/feenox-tet10.o: ./mesh/elements/tet10.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-tet10.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-tet10.Tpo -c -o ./mesh/elements/feenox-tet10.o `test -f './mesh/elements/tet10.c' || echo '$(srcdir)/'`./mesh/elements/tet10.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-tet10.Tpo ./mesh/elements/$(DEPDIR)/feenox-tet10.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/tet10.c' object='./mesh/elements/feenox-tet10.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-tet10.o `test -f './mesh/elements/tet10.c' || echo '$(srcdir)/'`./mesh/elements/tet10.c ./mesh/elements/feenox-tet10.obj: ./mesh/elements/tet10.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-tet10.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-tet10.Tpo -c -o ./mesh/elements/feenox-tet10.obj `if test -f './mesh/elements/tet10.c'; then $(CYGPATH_W) './mesh/elements/tet10.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/tet10.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-tet10.Tpo ./mesh/elements/$(DEPDIR)/feenox-tet10.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/tet10.c' object='./mesh/elements/feenox-tet10.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-tet10.obj `if test -f './mesh/elements/tet10.c'; then $(CYGPATH_W) './mesh/elements/tet10.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/tet10.c'; fi` ./mesh/elements/feenox-hexa8.o: ./mesh/elements/hexa8.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-hexa8.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-hexa8.Tpo -c -o ./mesh/elements/feenox-hexa8.o `test -f './mesh/elements/hexa8.c' || echo '$(srcdir)/'`./mesh/elements/hexa8.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-hexa8.Tpo ./mesh/elements/$(DEPDIR)/feenox-hexa8.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/hexa8.c' object='./mesh/elements/feenox-hexa8.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-hexa8.o `test -f './mesh/elements/hexa8.c' || echo '$(srcdir)/'`./mesh/elements/hexa8.c ./mesh/elements/feenox-hexa8.obj: ./mesh/elements/hexa8.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-hexa8.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-hexa8.Tpo -c -o ./mesh/elements/feenox-hexa8.obj `if test -f './mesh/elements/hexa8.c'; then $(CYGPATH_W) './mesh/elements/hexa8.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/hexa8.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-hexa8.Tpo ./mesh/elements/$(DEPDIR)/feenox-hexa8.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/hexa8.c' object='./mesh/elements/feenox-hexa8.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-hexa8.obj `if test -f './mesh/elements/hexa8.c'; then $(CYGPATH_W) './mesh/elements/hexa8.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/hexa8.c'; fi` ./mesh/elements/feenox-hexa20.o: ./mesh/elements/hexa20.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-hexa20.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-hexa20.Tpo -c -o ./mesh/elements/feenox-hexa20.o `test -f './mesh/elements/hexa20.c' || echo '$(srcdir)/'`./mesh/elements/hexa20.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-hexa20.Tpo ./mesh/elements/$(DEPDIR)/feenox-hexa20.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/hexa20.c' object='./mesh/elements/feenox-hexa20.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-hexa20.o `test -f './mesh/elements/hexa20.c' || echo '$(srcdir)/'`./mesh/elements/hexa20.c ./mesh/elements/feenox-hexa20.obj: ./mesh/elements/hexa20.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-hexa20.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-hexa20.Tpo -c -o ./mesh/elements/feenox-hexa20.obj `if test -f './mesh/elements/hexa20.c'; then $(CYGPATH_W) './mesh/elements/hexa20.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/hexa20.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-hexa20.Tpo ./mesh/elements/$(DEPDIR)/feenox-hexa20.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/hexa20.c' object='./mesh/elements/feenox-hexa20.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-hexa20.obj `if test -f './mesh/elements/hexa20.c'; then $(CYGPATH_W) './mesh/elements/hexa20.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/hexa20.c'; fi` ./mesh/elements/feenox-hexa27.o: ./mesh/elements/hexa27.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-hexa27.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-hexa27.Tpo -c -o ./mesh/elements/feenox-hexa27.o `test -f './mesh/elements/hexa27.c' || echo '$(srcdir)/'`./mesh/elements/hexa27.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-hexa27.Tpo ./mesh/elements/$(DEPDIR)/feenox-hexa27.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/hexa27.c' object='./mesh/elements/feenox-hexa27.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-hexa27.o `test -f './mesh/elements/hexa27.c' || echo '$(srcdir)/'`./mesh/elements/hexa27.c ./mesh/elements/feenox-hexa27.obj: ./mesh/elements/hexa27.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-hexa27.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-hexa27.Tpo -c -o ./mesh/elements/feenox-hexa27.obj `if test -f './mesh/elements/hexa27.c'; then $(CYGPATH_W) './mesh/elements/hexa27.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/hexa27.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-hexa27.Tpo ./mesh/elements/$(DEPDIR)/feenox-hexa27.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/hexa27.c' object='./mesh/elements/feenox-hexa27.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-hexa27.obj `if test -f './mesh/elements/hexa27.c'; then $(CYGPATH_W) './mesh/elements/hexa27.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/hexa27.c'; fi` ./mesh/elements/feenox-prism6.o: ./mesh/elements/prism6.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-prism6.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-prism6.Tpo -c -o ./mesh/elements/feenox-prism6.o `test -f './mesh/elements/prism6.c' || echo '$(srcdir)/'`./mesh/elements/prism6.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-prism6.Tpo ./mesh/elements/$(DEPDIR)/feenox-prism6.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/prism6.c' object='./mesh/elements/feenox-prism6.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-prism6.o `test -f './mesh/elements/prism6.c' || echo '$(srcdir)/'`./mesh/elements/prism6.c ./mesh/elements/feenox-prism6.obj: ./mesh/elements/prism6.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-prism6.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-prism6.Tpo -c -o ./mesh/elements/feenox-prism6.obj `if test -f './mesh/elements/prism6.c'; then $(CYGPATH_W) './mesh/elements/prism6.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/prism6.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-prism6.Tpo ./mesh/elements/$(DEPDIR)/feenox-prism6.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/prism6.c' object='./mesh/elements/feenox-prism6.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-prism6.obj `if test -f './mesh/elements/prism6.c'; then $(CYGPATH_W) './mesh/elements/prism6.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/prism6.c'; fi` ./mesh/elements/feenox-prism15.o: ./mesh/elements/prism15.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-prism15.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-prism15.Tpo -c -o ./mesh/elements/feenox-prism15.o `test -f './mesh/elements/prism15.c' || echo '$(srcdir)/'`./mesh/elements/prism15.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-prism15.Tpo ./mesh/elements/$(DEPDIR)/feenox-prism15.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/prism15.c' object='./mesh/elements/feenox-prism15.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-prism15.o `test -f './mesh/elements/prism15.c' || echo '$(srcdir)/'`./mesh/elements/prism15.c ./mesh/elements/feenox-prism15.obj: ./mesh/elements/prism15.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-prism15.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-prism15.Tpo -c -o ./mesh/elements/feenox-prism15.obj `if test -f './mesh/elements/prism15.c'; then $(CYGPATH_W) './mesh/elements/prism15.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/prism15.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-prism15.Tpo ./mesh/elements/$(DEPDIR)/feenox-prism15.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/prism15.c' object='./mesh/elements/feenox-prism15.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-prism15.obj `if test -f './mesh/elements/prism15.c'; then $(CYGPATH_W) './mesh/elements/prism15.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/prism15.c'; fi` ./mesh/elements/feenox-point.o: ./mesh/elements/point.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-point.o -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-point.Tpo -c -o ./mesh/elements/feenox-point.o `test -f './mesh/elements/point.c' || echo '$(srcdir)/'`./mesh/elements/point.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-point.Tpo ./mesh/elements/$(DEPDIR)/feenox-point.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/point.c' object='./mesh/elements/feenox-point.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-point.o `test -f './mesh/elements/point.c' || echo '$(srcdir)/'`./mesh/elements/point.c ./mesh/elements/feenox-point.obj: ./mesh/elements/point.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT ./mesh/elements/feenox-point.obj -MD -MP -MF ./mesh/elements/$(DEPDIR)/feenox-point.Tpo -c -o ./mesh/elements/feenox-point.obj `if test -f './mesh/elements/point.c'; then $(CYGPATH_W) './mesh/elements/point.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/point.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ./mesh/elements/$(DEPDIR)/feenox-point.Tpo ./mesh/elements/$(DEPDIR)/feenox-point.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mesh/elements/point.c' object='./mesh/elements/feenox-point.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o ./mesh/elements/feenox-point.obj `if test -f './mesh/elements/point.c'; then $(CYGPATH_W) './mesh/elements/point.c'; else $(CYGPATH_W) '$(srcdir)/./mesh/elements/point.c'; fi` pdes/feenox-petsc_snes.o: pdes/petsc_snes.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-petsc_snes.o -MD -MP -MF pdes/$(DEPDIR)/feenox-petsc_snes.Tpo -c -o pdes/feenox-petsc_snes.o `test -f 'pdes/petsc_snes.c' || echo '$(srcdir)/'`pdes/petsc_snes.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-petsc_snes.Tpo pdes/$(DEPDIR)/feenox-petsc_snes.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/petsc_snes.c' object='pdes/feenox-petsc_snes.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-petsc_snes.o `test -f 'pdes/petsc_snes.c' || echo '$(srcdir)/'`pdes/petsc_snes.c pdes/feenox-petsc_snes.obj: pdes/petsc_snes.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-petsc_snes.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-petsc_snes.Tpo -c -o pdes/feenox-petsc_snes.obj `if test -f 'pdes/petsc_snes.c'; then $(CYGPATH_W) 'pdes/petsc_snes.c'; else $(CYGPATH_W) '$(srcdir)/pdes/petsc_snes.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-petsc_snes.Tpo pdes/$(DEPDIR)/feenox-petsc_snes.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/petsc_snes.c' object='pdes/feenox-petsc_snes.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-petsc_snes.obj `if test -f 'pdes/petsc_snes.c'; then $(CYGPATH_W) 'pdes/petsc_snes.c'; else $(CYGPATH_W) '$(srcdir)/pdes/petsc_snes.c'; fi` pdes/feenox-petsc_ksp.o: pdes/petsc_ksp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-petsc_ksp.o -MD -MP -MF pdes/$(DEPDIR)/feenox-petsc_ksp.Tpo -c -o pdes/feenox-petsc_ksp.o `test -f 'pdes/petsc_ksp.c' || echo '$(srcdir)/'`pdes/petsc_ksp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-petsc_ksp.Tpo pdes/$(DEPDIR)/feenox-petsc_ksp.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/petsc_ksp.c' object='pdes/feenox-petsc_ksp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-petsc_ksp.o `test -f 'pdes/petsc_ksp.c' || echo '$(srcdir)/'`pdes/petsc_ksp.c pdes/feenox-petsc_ksp.obj: pdes/petsc_ksp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-petsc_ksp.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-petsc_ksp.Tpo -c -o pdes/feenox-petsc_ksp.obj `if test -f 'pdes/petsc_ksp.c'; then $(CYGPATH_W) 'pdes/petsc_ksp.c'; else $(CYGPATH_W) '$(srcdir)/pdes/petsc_ksp.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-petsc_ksp.Tpo pdes/$(DEPDIR)/feenox-petsc_ksp.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/petsc_ksp.c' object='pdes/feenox-petsc_ksp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-petsc_ksp.obj `if test -f 'pdes/petsc_ksp.c'; then $(CYGPATH_W) 'pdes/petsc_ksp.c'; else $(CYGPATH_W) '$(srcdir)/pdes/petsc_ksp.c'; fi` pdes/feenox-parse.o: pdes/parse.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-parse.o -MD -MP -MF pdes/$(DEPDIR)/feenox-parse.Tpo -c -o pdes/feenox-parse.o `test -f 'pdes/parse.c' || echo '$(srcdir)/'`pdes/parse.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-parse.Tpo pdes/$(DEPDIR)/feenox-parse.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/parse.c' object='pdes/feenox-parse.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-parse.o `test -f 'pdes/parse.c' || echo '$(srcdir)/'`pdes/parse.c pdes/feenox-parse.obj: pdes/parse.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-parse.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-parse.Tpo -c -o pdes/feenox-parse.obj `if test -f 'pdes/parse.c'; then $(CYGPATH_W) 'pdes/parse.c'; else $(CYGPATH_W) '$(srcdir)/pdes/parse.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-parse.Tpo pdes/$(DEPDIR)/feenox-parse.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/parse.c' object='pdes/feenox-parse.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-parse.obj `if test -f 'pdes/parse.c'; then $(CYGPATH_W) 'pdes/parse.c'; else $(CYGPATH_W) '$(srcdir)/pdes/parse.c'; fi` pdes/thermal/feenox-heatflux.o: pdes/thermal/heatflux.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-heatflux.o -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-heatflux.Tpo -c -o pdes/thermal/feenox-heatflux.o `test -f 'pdes/thermal/heatflux.c' || echo '$(srcdir)/'`pdes/thermal/heatflux.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-heatflux.Tpo pdes/thermal/$(DEPDIR)/feenox-heatflux.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/heatflux.c' object='pdes/thermal/feenox-heatflux.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-heatflux.o `test -f 'pdes/thermal/heatflux.c' || echo '$(srcdir)/'`pdes/thermal/heatflux.c pdes/thermal/feenox-heatflux.obj: pdes/thermal/heatflux.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-heatflux.obj -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-heatflux.Tpo -c -o pdes/thermal/feenox-heatflux.obj `if test -f 'pdes/thermal/heatflux.c'; then $(CYGPATH_W) 'pdes/thermal/heatflux.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/heatflux.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-heatflux.Tpo pdes/thermal/$(DEPDIR)/feenox-heatflux.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/heatflux.c' object='pdes/thermal/feenox-heatflux.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-heatflux.obj `if test -f 'pdes/thermal/heatflux.c'; then $(CYGPATH_W) 'pdes/thermal/heatflux.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/heatflux.c'; fi` pdes/thermal/feenox-parser.o: pdes/thermal/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-parser.o -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/thermal/feenox-parser.o `test -f 'pdes/thermal/parser.c' || echo '$(srcdir)/'`pdes/thermal/parser.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-parser.Tpo pdes/thermal/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/parser.c' object='pdes/thermal/feenox-parser.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-parser.o `test -f 'pdes/thermal/parser.c' || echo '$(srcdir)/'`pdes/thermal/parser.c pdes/thermal/feenox-parser.obj: pdes/thermal/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-parser.obj -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/thermal/feenox-parser.obj `if test -f 'pdes/thermal/parser.c'; then $(CYGPATH_W) 'pdes/thermal/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/parser.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-parser.Tpo pdes/thermal/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/parser.c' object='pdes/thermal/feenox-parser.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-parser.obj `if test -f 'pdes/thermal/parser.c'; then $(CYGPATH_W) 'pdes/thermal/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/parser.c'; fi` pdes/thermal/feenox-post.o: pdes/thermal/post.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-post.o -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-post.Tpo -c -o pdes/thermal/feenox-post.o `test -f 'pdes/thermal/post.c' || echo '$(srcdir)/'`pdes/thermal/post.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-post.Tpo pdes/thermal/$(DEPDIR)/feenox-post.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/post.c' object='pdes/thermal/feenox-post.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-post.o `test -f 'pdes/thermal/post.c' || echo '$(srcdir)/'`pdes/thermal/post.c pdes/thermal/feenox-post.obj: pdes/thermal/post.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-post.obj -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-post.Tpo -c -o pdes/thermal/feenox-post.obj `if test -f 'pdes/thermal/post.c'; then $(CYGPATH_W) 'pdes/thermal/post.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/post.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-post.Tpo pdes/thermal/$(DEPDIR)/feenox-post.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/post.c' object='pdes/thermal/feenox-post.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-post.obj `if test -f 'pdes/thermal/post.c'; then $(CYGPATH_W) 'pdes/thermal/post.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/post.c'; fi` pdes/thermal/feenox-init.o: pdes/thermal/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-init.o -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-init.Tpo -c -o pdes/thermal/feenox-init.o `test -f 'pdes/thermal/init.c' || echo '$(srcdir)/'`pdes/thermal/init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-init.Tpo pdes/thermal/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/init.c' object='pdes/thermal/feenox-init.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-init.o `test -f 'pdes/thermal/init.c' || echo '$(srcdir)/'`pdes/thermal/init.c pdes/thermal/feenox-init.obj: pdes/thermal/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-init.obj -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-init.Tpo -c -o pdes/thermal/feenox-init.obj `if test -f 'pdes/thermal/init.c'; then $(CYGPATH_W) 'pdes/thermal/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/init.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-init.Tpo pdes/thermal/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/init.c' object='pdes/thermal/feenox-init.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-init.obj `if test -f 'pdes/thermal/init.c'; then $(CYGPATH_W) 'pdes/thermal/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/init.c'; fi` pdes/thermal/feenox-bulk.o: pdes/thermal/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-bulk.o -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/thermal/feenox-bulk.o `test -f 'pdes/thermal/bulk.c' || echo '$(srcdir)/'`pdes/thermal/bulk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-bulk.Tpo pdes/thermal/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/bulk.c' object='pdes/thermal/feenox-bulk.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-bulk.o `test -f 'pdes/thermal/bulk.c' || echo '$(srcdir)/'`pdes/thermal/bulk.c pdes/thermal/feenox-bulk.obj: pdes/thermal/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-bulk.obj -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/thermal/feenox-bulk.obj `if test -f 'pdes/thermal/bulk.c'; then $(CYGPATH_W) 'pdes/thermal/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/bulk.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-bulk.Tpo pdes/thermal/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/bulk.c' object='pdes/thermal/feenox-bulk.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-bulk.obj `if test -f 'pdes/thermal/bulk.c'; then $(CYGPATH_W) 'pdes/thermal/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/bulk.c'; fi` pdes/thermal/feenox-bc.o: pdes/thermal/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-bc.o -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/thermal/feenox-bc.o `test -f 'pdes/thermal/bc.c' || echo '$(srcdir)/'`pdes/thermal/bc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-bc.Tpo pdes/thermal/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/bc.c' object='pdes/thermal/feenox-bc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-bc.o `test -f 'pdes/thermal/bc.c' || echo '$(srcdir)/'`pdes/thermal/bc.c pdes/thermal/feenox-bc.obj: pdes/thermal/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/thermal/feenox-bc.obj -MD -MP -MF pdes/thermal/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/thermal/feenox-bc.obj `if test -f 'pdes/thermal/bc.c'; then $(CYGPATH_W) 'pdes/thermal/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/bc.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/thermal/$(DEPDIR)/feenox-bc.Tpo pdes/thermal/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/thermal/bc.c' object='pdes/thermal/feenox-bc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/thermal/feenox-bc.obj `if test -f 'pdes/thermal/bc.c'; then $(CYGPATH_W) 'pdes/thermal/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/thermal/bc.c'; fi` pdes/laplace/feenox-parser.o: pdes/laplace/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/laplace/feenox-parser.o -MD -MP -MF pdes/laplace/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/laplace/feenox-parser.o `test -f 'pdes/laplace/parser.c' || echo '$(srcdir)/'`pdes/laplace/parser.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/laplace/$(DEPDIR)/feenox-parser.Tpo pdes/laplace/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/laplace/parser.c' object='pdes/laplace/feenox-parser.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/laplace/feenox-parser.o `test -f 'pdes/laplace/parser.c' || echo '$(srcdir)/'`pdes/laplace/parser.c pdes/laplace/feenox-parser.obj: pdes/laplace/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/laplace/feenox-parser.obj -MD -MP -MF pdes/laplace/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/laplace/feenox-parser.obj `if test -f 'pdes/laplace/parser.c'; then $(CYGPATH_W) 'pdes/laplace/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/laplace/parser.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/laplace/$(DEPDIR)/feenox-parser.Tpo pdes/laplace/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/laplace/parser.c' object='pdes/laplace/feenox-parser.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/laplace/feenox-parser.obj `if test -f 'pdes/laplace/parser.c'; then $(CYGPATH_W) 'pdes/laplace/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/laplace/parser.c'; fi` pdes/laplace/feenox-init.o: pdes/laplace/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/laplace/feenox-init.o -MD -MP -MF pdes/laplace/$(DEPDIR)/feenox-init.Tpo -c -o pdes/laplace/feenox-init.o `test -f 'pdes/laplace/init.c' || echo '$(srcdir)/'`pdes/laplace/init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/laplace/$(DEPDIR)/feenox-init.Tpo pdes/laplace/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/laplace/init.c' object='pdes/laplace/feenox-init.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/laplace/feenox-init.o `test -f 'pdes/laplace/init.c' || echo '$(srcdir)/'`pdes/laplace/init.c pdes/laplace/feenox-init.obj: pdes/laplace/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/laplace/feenox-init.obj -MD -MP -MF pdes/laplace/$(DEPDIR)/feenox-init.Tpo -c -o pdes/laplace/feenox-init.obj `if test -f 'pdes/laplace/init.c'; then $(CYGPATH_W) 'pdes/laplace/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/laplace/init.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/laplace/$(DEPDIR)/feenox-init.Tpo pdes/laplace/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/laplace/init.c' object='pdes/laplace/feenox-init.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/laplace/feenox-init.obj `if test -f 'pdes/laplace/init.c'; then $(CYGPATH_W) 'pdes/laplace/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/laplace/init.c'; fi` pdes/laplace/feenox-bulk.o: pdes/laplace/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/laplace/feenox-bulk.o -MD -MP -MF pdes/laplace/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/laplace/feenox-bulk.o `test -f 'pdes/laplace/bulk.c' || echo '$(srcdir)/'`pdes/laplace/bulk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/laplace/$(DEPDIR)/feenox-bulk.Tpo pdes/laplace/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/laplace/bulk.c' object='pdes/laplace/feenox-bulk.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/laplace/feenox-bulk.o `test -f 'pdes/laplace/bulk.c' || echo '$(srcdir)/'`pdes/laplace/bulk.c pdes/laplace/feenox-bulk.obj: pdes/laplace/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/laplace/feenox-bulk.obj -MD -MP -MF pdes/laplace/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/laplace/feenox-bulk.obj `if test -f 'pdes/laplace/bulk.c'; then $(CYGPATH_W) 'pdes/laplace/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/laplace/bulk.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/laplace/$(DEPDIR)/feenox-bulk.Tpo pdes/laplace/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/laplace/bulk.c' object='pdes/laplace/feenox-bulk.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/laplace/feenox-bulk.obj `if test -f 'pdes/laplace/bulk.c'; then $(CYGPATH_W) 'pdes/laplace/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/laplace/bulk.c'; fi` pdes/laplace/feenox-bc.o: pdes/laplace/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/laplace/feenox-bc.o -MD -MP -MF pdes/laplace/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/laplace/feenox-bc.o `test -f 'pdes/laplace/bc.c' || echo '$(srcdir)/'`pdes/laplace/bc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/laplace/$(DEPDIR)/feenox-bc.Tpo pdes/laplace/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/laplace/bc.c' object='pdes/laplace/feenox-bc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/laplace/feenox-bc.o `test -f 'pdes/laplace/bc.c' || echo '$(srcdir)/'`pdes/laplace/bc.c pdes/laplace/feenox-bc.obj: pdes/laplace/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/laplace/feenox-bc.obj -MD -MP -MF pdes/laplace/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/laplace/feenox-bc.obj `if test -f 'pdes/laplace/bc.c'; then $(CYGPATH_W) 'pdes/laplace/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/laplace/bc.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/laplace/$(DEPDIR)/feenox-bc.Tpo pdes/laplace/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/laplace/bc.c' object='pdes/laplace/feenox-bc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/laplace/feenox-bc.obj `if test -f 'pdes/laplace/bc.c'; then $(CYGPATH_W) 'pdes/laplace/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/laplace/bc.c'; fi` pdes/feenox-fem.o: pdes/fem.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-fem.o -MD -MP -MF pdes/$(DEPDIR)/feenox-fem.Tpo -c -o pdes/feenox-fem.o `test -f 'pdes/fem.c' || echo '$(srcdir)/'`pdes/fem.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-fem.Tpo pdes/$(DEPDIR)/feenox-fem.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/fem.c' object='pdes/feenox-fem.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-fem.o `test -f 'pdes/fem.c' || echo '$(srcdir)/'`pdes/fem.c pdes/feenox-fem.obj: pdes/fem.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-fem.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-fem.Tpo -c -o pdes/feenox-fem.obj `if test -f 'pdes/fem.c'; then $(CYGPATH_W) 'pdes/fem.c'; else $(CYGPATH_W) '$(srcdir)/pdes/fem.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-fem.Tpo pdes/$(DEPDIR)/feenox-fem.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/fem.c' object='pdes/feenox-fem.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-fem.obj `if test -f 'pdes/fem.c'; then $(CYGPATH_W) 'pdes/fem.c'; else $(CYGPATH_W) '$(srcdir)/pdes/fem.c'; fi` pdes/feenox-petsc_ts.o: pdes/petsc_ts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-petsc_ts.o -MD -MP -MF pdes/$(DEPDIR)/feenox-petsc_ts.Tpo -c -o pdes/feenox-petsc_ts.o `test -f 'pdes/petsc_ts.c' || echo '$(srcdir)/'`pdes/petsc_ts.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-petsc_ts.Tpo pdes/$(DEPDIR)/feenox-petsc_ts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/petsc_ts.c' object='pdes/feenox-petsc_ts.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-petsc_ts.o `test -f 'pdes/petsc_ts.c' || echo '$(srcdir)/'`pdes/petsc_ts.c pdes/feenox-petsc_ts.obj: pdes/petsc_ts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-petsc_ts.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-petsc_ts.Tpo -c -o pdes/feenox-petsc_ts.obj `if test -f 'pdes/petsc_ts.c'; then $(CYGPATH_W) 'pdes/petsc_ts.c'; else $(CYGPATH_W) '$(srcdir)/pdes/petsc_ts.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-petsc_ts.Tpo pdes/$(DEPDIR)/feenox-petsc_ts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/petsc_ts.c' object='pdes/feenox-petsc_ts.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-petsc_ts.obj `if test -f 'pdes/petsc_ts.c'; then $(CYGPATH_W) 'pdes/petsc_ts.c'; else $(CYGPATH_W) '$(srcdir)/pdes/petsc_ts.c'; fi` pdes/feenox-reaction.o: pdes/reaction.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-reaction.o -MD -MP -MF pdes/$(DEPDIR)/feenox-reaction.Tpo -c -o pdes/feenox-reaction.o `test -f 'pdes/reaction.c' || echo '$(srcdir)/'`pdes/reaction.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-reaction.Tpo pdes/$(DEPDIR)/feenox-reaction.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/reaction.c' object='pdes/feenox-reaction.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-reaction.o `test -f 'pdes/reaction.c' || echo '$(srcdir)/'`pdes/reaction.c pdes/feenox-reaction.obj: pdes/reaction.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-reaction.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-reaction.Tpo -c -o pdes/feenox-reaction.obj `if test -f 'pdes/reaction.c'; then $(CYGPATH_W) 'pdes/reaction.c'; else $(CYGPATH_W) '$(srcdir)/pdes/reaction.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-reaction.Tpo pdes/$(DEPDIR)/feenox-reaction.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/reaction.c' object='pdes/feenox-reaction.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-reaction.obj `if test -f 'pdes/reaction.c'; then $(CYGPATH_W) 'pdes/reaction.c'; else $(CYGPATH_W) '$(srcdir)/pdes/reaction.c'; fi` pdes/feenox-blas.o: pdes/blas.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-blas.o -MD -MP -MF pdes/$(DEPDIR)/feenox-blas.Tpo -c -o pdes/feenox-blas.o `test -f 'pdes/blas.c' || echo '$(srcdir)/'`pdes/blas.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-blas.Tpo pdes/$(DEPDIR)/feenox-blas.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/blas.c' object='pdes/feenox-blas.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-blas.o `test -f 'pdes/blas.c' || echo '$(srcdir)/'`pdes/blas.c pdes/feenox-blas.obj: pdes/blas.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-blas.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-blas.Tpo -c -o pdes/feenox-blas.obj `if test -f 'pdes/blas.c'; then $(CYGPATH_W) 'pdes/blas.c'; else $(CYGPATH_W) '$(srcdir)/pdes/blas.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-blas.Tpo pdes/$(DEPDIR)/feenox-blas.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/blas.c' object='pdes/feenox-blas.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-blas.obj `if test -f 'pdes/blas.c'; then $(CYGPATH_W) 'pdes/blas.c'; else $(CYGPATH_W) '$(srcdir)/pdes/blas.c'; fi` pdes/feenox-slepc_eps.o: pdes/slepc_eps.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-slepc_eps.o -MD -MP -MF pdes/$(DEPDIR)/feenox-slepc_eps.Tpo -c -o pdes/feenox-slepc_eps.o `test -f 'pdes/slepc_eps.c' || echo '$(srcdir)/'`pdes/slepc_eps.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-slepc_eps.Tpo pdes/$(DEPDIR)/feenox-slepc_eps.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/slepc_eps.c' object='pdes/feenox-slepc_eps.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-slepc_eps.o `test -f 'pdes/slepc_eps.c' || echo '$(srcdir)/'`pdes/slepc_eps.c pdes/feenox-slepc_eps.obj: pdes/slepc_eps.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-slepc_eps.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-slepc_eps.Tpo -c -o pdes/feenox-slepc_eps.obj `if test -f 'pdes/slepc_eps.c'; then $(CYGPATH_W) 'pdes/slepc_eps.c'; else $(CYGPATH_W) '$(srcdir)/pdes/slepc_eps.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-slepc_eps.Tpo pdes/$(DEPDIR)/feenox-slepc_eps.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/slepc_eps.c' object='pdes/feenox-slepc_eps.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-slepc_eps.obj `if test -f 'pdes/slepc_eps.c'; then $(CYGPATH_W) 'pdes/slepc_eps.c'; else $(CYGPATH_W) '$(srcdir)/pdes/slepc_eps.c'; fi` pdes/feenox-distribution.o: pdes/distribution.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-distribution.o -MD -MP -MF pdes/$(DEPDIR)/feenox-distribution.Tpo -c -o pdes/feenox-distribution.o `test -f 'pdes/distribution.c' || echo '$(srcdir)/'`pdes/distribution.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-distribution.Tpo pdes/$(DEPDIR)/feenox-distribution.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/distribution.c' object='pdes/feenox-distribution.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-distribution.o `test -f 'pdes/distribution.c' || echo '$(srcdir)/'`pdes/distribution.c pdes/feenox-distribution.obj: pdes/distribution.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-distribution.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-distribution.Tpo -c -o pdes/feenox-distribution.obj `if test -f 'pdes/distribution.c'; then $(CYGPATH_W) 'pdes/distribution.c'; else $(CYGPATH_W) '$(srcdir)/pdes/distribution.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-distribution.Tpo pdes/$(DEPDIR)/feenox-distribution.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/distribution.c' object='pdes/feenox-distribution.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-distribution.obj `if test -f 'pdes/distribution.c'; then $(CYGPATH_W) 'pdes/distribution.c'; else $(CYGPATH_W) '$(srcdir)/pdes/distribution.c'; fi` pdes/feenox-dirichlet.o: pdes/dirichlet.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-dirichlet.o -MD -MP -MF pdes/$(DEPDIR)/feenox-dirichlet.Tpo -c -o pdes/feenox-dirichlet.o `test -f 'pdes/dirichlet.c' || echo '$(srcdir)/'`pdes/dirichlet.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-dirichlet.Tpo pdes/$(DEPDIR)/feenox-dirichlet.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/dirichlet.c' object='pdes/feenox-dirichlet.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-dirichlet.o `test -f 'pdes/dirichlet.c' || echo '$(srcdir)/'`pdes/dirichlet.c pdes/feenox-dirichlet.obj: pdes/dirichlet.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-dirichlet.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-dirichlet.Tpo -c -o pdes/feenox-dirichlet.obj `if test -f 'pdes/dirichlet.c'; then $(CYGPATH_W) 'pdes/dirichlet.c'; else $(CYGPATH_W) '$(srcdir)/pdes/dirichlet.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-dirichlet.Tpo pdes/$(DEPDIR)/feenox-dirichlet.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/dirichlet.c' object='pdes/feenox-dirichlet.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-dirichlet.obj `if test -f 'pdes/dirichlet.c'; then $(CYGPATH_W) 'pdes/dirichlet.c'; else $(CYGPATH_W) '$(srcdir)/pdes/dirichlet.c'; fi` pdes/feenox-solve.o: pdes/solve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-solve.o -MD -MP -MF pdes/$(DEPDIR)/feenox-solve.Tpo -c -o pdes/feenox-solve.o `test -f 'pdes/solve.c' || echo '$(srcdir)/'`pdes/solve.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-solve.Tpo pdes/$(DEPDIR)/feenox-solve.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/solve.c' object='pdes/feenox-solve.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-solve.o `test -f 'pdes/solve.c' || echo '$(srcdir)/'`pdes/solve.c pdes/feenox-solve.obj: pdes/solve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-solve.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-solve.Tpo -c -o pdes/feenox-solve.obj `if test -f 'pdes/solve.c'; then $(CYGPATH_W) 'pdes/solve.c'; else $(CYGPATH_W) '$(srcdir)/pdes/solve.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-solve.Tpo pdes/$(DEPDIR)/feenox-solve.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/solve.c' object='pdes/feenox-solve.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-solve.obj `if test -f 'pdes/solve.c'; then $(CYGPATH_W) 'pdes/solve.c'; else $(CYGPATH_W) '$(srcdir)/pdes/solve.c'; fi` pdes/feenox-build.o: pdes/build.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-build.o -MD -MP -MF pdes/$(DEPDIR)/feenox-build.Tpo -c -o pdes/feenox-build.o `test -f 'pdes/build.c' || echo '$(srcdir)/'`pdes/build.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-build.Tpo pdes/$(DEPDIR)/feenox-build.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/build.c' object='pdes/feenox-build.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-build.o `test -f 'pdes/build.c' || echo '$(srcdir)/'`pdes/build.c pdes/feenox-build.obj: pdes/build.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-build.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-build.Tpo -c -o pdes/feenox-build.obj `if test -f 'pdes/build.c'; then $(CYGPATH_W) 'pdes/build.c'; else $(CYGPATH_W) '$(srcdir)/pdes/build.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-build.Tpo pdes/$(DEPDIR)/feenox-build.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/build.c' object='pdes/feenox-build.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-build.obj `if test -f 'pdes/build.c'; then $(CYGPATH_W) 'pdes/build.c'; else $(CYGPATH_W) '$(srcdir)/pdes/build.c'; fi` pdes/feenox-init.o: pdes/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-init.o -MD -MP -MF pdes/$(DEPDIR)/feenox-init.Tpo -c -o pdes/feenox-init.o `test -f 'pdes/init.c' || echo '$(srcdir)/'`pdes/init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-init.Tpo pdes/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/init.c' object='pdes/feenox-init.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-init.o `test -f 'pdes/init.c' || echo '$(srcdir)/'`pdes/init.c pdes/feenox-init.obj: pdes/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-init.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-init.Tpo -c -o pdes/feenox-init.obj `if test -f 'pdes/init.c'; then $(CYGPATH_W) 'pdes/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/init.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-init.Tpo pdes/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/init.c' object='pdes/feenox-init.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-init.obj `if test -f 'pdes/init.c'; then $(CYGPATH_W) 'pdes/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/init.c'; fi` pdes/mechanical/feenox-linearize.o: pdes/mechanical/linearize.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-linearize.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-linearize.Tpo -c -o pdes/mechanical/feenox-linearize.o `test -f 'pdes/mechanical/linearize.c' || echo '$(srcdir)/'`pdes/mechanical/linearize.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-linearize.Tpo pdes/mechanical/$(DEPDIR)/feenox-linearize.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/linearize.c' object='pdes/mechanical/feenox-linearize.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-linearize.o `test -f 'pdes/mechanical/linearize.c' || echo '$(srcdir)/'`pdes/mechanical/linearize.c pdes/mechanical/feenox-linearize.obj: pdes/mechanical/linearize.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-linearize.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-linearize.Tpo -c -o pdes/mechanical/feenox-linearize.obj `if test -f 'pdes/mechanical/linearize.c'; then $(CYGPATH_W) 'pdes/mechanical/linearize.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/linearize.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-linearize.Tpo pdes/mechanical/$(DEPDIR)/feenox-linearize.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/linearize.c' object='pdes/mechanical/feenox-linearize.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-linearize.obj `if test -f 'pdes/mechanical/linearize.c'; then $(CYGPATH_W) 'pdes/mechanical/linearize.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/linearize.c'; fi` pdes/mechanical/feenox-expansion-isotropic.o: pdes/mechanical/expansion-isotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-expansion-isotropic.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-expansion-isotropic.Tpo -c -o pdes/mechanical/feenox-expansion-isotropic.o `test -f 'pdes/mechanical/expansion-isotropic.c' || echo '$(srcdir)/'`pdes/mechanical/expansion-isotropic.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-expansion-isotropic.Tpo pdes/mechanical/$(DEPDIR)/feenox-expansion-isotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/expansion-isotropic.c' object='pdes/mechanical/feenox-expansion-isotropic.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-expansion-isotropic.o `test -f 'pdes/mechanical/expansion-isotropic.c' || echo '$(srcdir)/'`pdes/mechanical/expansion-isotropic.c pdes/mechanical/feenox-expansion-isotropic.obj: pdes/mechanical/expansion-isotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-expansion-isotropic.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-expansion-isotropic.Tpo -c -o pdes/mechanical/feenox-expansion-isotropic.obj `if test -f 'pdes/mechanical/expansion-isotropic.c'; then $(CYGPATH_W) 'pdes/mechanical/expansion-isotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/expansion-isotropic.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-expansion-isotropic.Tpo pdes/mechanical/$(DEPDIR)/feenox-expansion-isotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/expansion-isotropic.c' object='pdes/mechanical/feenox-expansion-isotropic.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-expansion-isotropic.obj `if test -f 'pdes/mechanical/expansion-isotropic.c'; then $(CYGPATH_W) 'pdes/mechanical/expansion-isotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/expansion-isotropic.c'; fi` pdes/mechanical/feenox-elastic-isotropic.o: pdes/mechanical/elastic-isotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-elastic-isotropic.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-elastic-isotropic.Tpo -c -o pdes/mechanical/feenox-elastic-isotropic.o `test -f 'pdes/mechanical/elastic-isotropic.c' || echo '$(srcdir)/'`pdes/mechanical/elastic-isotropic.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-elastic-isotropic.Tpo pdes/mechanical/$(DEPDIR)/feenox-elastic-isotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/elastic-isotropic.c' object='pdes/mechanical/feenox-elastic-isotropic.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-elastic-isotropic.o `test -f 'pdes/mechanical/elastic-isotropic.c' || echo '$(srcdir)/'`pdes/mechanical/elastic-isotropic.c pdes/mechanical/feenox-elastic-isotropic.obj: pdes/mechanical/elastic-isotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-elastic-isotropic.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-elastic-isotropic.Tpo -c -o pdes/mechanical/feenox-elastic-isotropic.obj `if test -f 'pdes/mechanical/elastic-isotropic.c'; then $(CYGPATH_W) 'pdes/mechanical/elastic-isotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/elastic-isotropic.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-elastic-isotropic.Tpo pdes/mechanical/$(DEPDIR)/feenox-elastic-isotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/elastic-isotropic.c' object='pdes/mechanical/feenox-elastic-isotropic.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-elastic-isotropic.obj `if test -f 'pdes/mechanical/elastic-isotropic.c'; then $(CYGPATH_W) 'pdes/mechanical/elastic-isotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/elastic-isotropic.c'; fi` pdes/mechanical/feenox-parser.o: pdes/mechanical/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-parser.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/mechanical/feenox-parser.o `test -f 'pdes/mechanical/parser.c' || echo '$(srcdir)/'`pdes/mechanical/parser.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-parser.Tpo pdes/mechanical/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/parser.c' object='pdes/mechanical/feenox-parser.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-parser.o `test -f 'pdes/mechanical/parser.c' || echo '$(srcdir)/'`pdes/mechanical/parser.c pdes/mechanical/feenox-parser.obj: pdes/mechanical/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-parser.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/mechanical/feenox-parser.obj `if test -f 'pdes/mechanical/parser.c'; then $(CYGPATH_W) 'pdes/mechanical/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/parser.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-parser.Tpo pdes/mechanical/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/parser.c' object='pdes/mechanical/feenox-parser.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-parser.obj `if test -f 'pdes/mechanical/parser.c'; then $(CYGPATH_W) 'pdes/mechanical/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/parser.c'; fi` pdes/mechanical/feenox-elastic-orthotropic.o: pdes/mechanical/elastic-orthotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-elastic-orthotropic.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-elastic-orthotropic.Tpo -c -o pdes/mechanical/feenox-elastic-orthotropic.o `test -f 'pdes/mechanical/elastic-orthotropic.c' || echo '$(srcdir)/'`pdes/mechanical/elastic-orthotropic.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-elastic-orthotropic.Tpo pdes/mechanical/$(DEPDIR)/feenox-elastic-orthotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/elastic-orthotropic.c' object='pdes/mechanical/feenox-elastic-orthotropic.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-elastic-orthotropic.o `test -f 'pdes/mechanical/elastic-orthotropic.c' || echo '$(srcdir)/'`pdes/mechanical/elastic-orthotropic.c pdes/mechanical/feenox-elastic-orthotropic.obj: pdes/mechanical/elastic-orthotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-elastic-orthotropic.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-elastic-orthotropic.Tpo -c -o pdes/mechanical/feenox-elastic-orthotropic.obj `if test -f 'pdes/mechanical/elastic-orthotropic.c'; then $(CYGPATH_W) 'pdes/mechanical/elastic-orthotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/elastic-orthotropic.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-elastic-orthotropic.Tpo pdes/mechanical/$(DEPDIR)/feenox-elastic-orthotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/elastic-orthotropic.c' object='pdes/mechanical/feenox-elastic-orthotropic.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-elastic-orthotropic.obj `if test -f 'pdes/mechanical/elastic-orthotropic.c'; then $(CYGPATH_W) 'pdes/mechanical/elastic-orthotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/elastic-orthotropic.c'; fi` pdes/mechanical/feenox-stress.o: pdes/mechanical/stress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-stress.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-stress.Tpo -c -o pdes/mechanical/feenox-stress.o `test -f 'pdes/mechanical/stress.c' || echo '$(srcdir)/'`pdes/mechanical/stress.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-stress.Tpo pdes/mechanical/$(DEPDIR)/feenox-stress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/stress.c' object='pdes/mechanical/feenox-stress.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-stress.o `test -f 'pdes/mechanical/stress.c' || echo '$(srcdir)/'`pdes/mechanical/stress.c pdes/mechanical/feenox-stress.obj: pdes/mechanical/stress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-stress.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-stress.Tpo -c -o pdes/mechanical/feenox-stress.obj `if test -f 'pdes/mechanical/stress.c'; then $(CYGPATH_W) 'pdes/mechanical/stress.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/stress.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-stress.Tpo pdes/mechanical/$(DEPDIR)/feenox-stress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/stress.c' object='pdes/mechanical/feenox-stress.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-stress.obj `if test -f 'pdes/mechanical/stress.c'; then $(CYGPATH_W) 'pdes/mechanical/stress.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/stress.c'; fi` pdes/mechanical/feenox-post.o: pdes/mechanical/post.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-post.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-post.Tpo -c -o pdes/mechanical/feenox-post.o `test -f 'pdes/mechanical/post.c' || echo '$(srcdir)/'`pdes/mechanical/post.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-post.Tpo pdes/mechanical/$(DEPDIR)/feenox-post.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/post.c' object='pdes/mechanical/feenox-post.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-post.o `test -f 'pdes/mechanical/post.c' || echo '$(srcdir)/'`pdes/mechanical/post.c pdes/mechanical/feenox-post.obj: pdes/mechanical/post.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-post.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-post.Tpo -c -o pdes/mechanical/feenox-post.obj `if test -f 'pdes/mechanical/post.c'; then $(CYGPATH_W) 'pdes/mechanical/post.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/post.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-post.Tpo pdes/mechanical/$(DEPDIR)/feenox-post.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/post.c' object='pdes/mechanical/feenox-post.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-post.obj `if test -f 'pdes/mechanical/post.c'; then $(CYGPATH_W) 'pdes/mechanical/post.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/post.c'; fi` pdes/mechanical/feenox-init.o: pdes/mechanical/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-init.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-init.Tpo -c -o pdes/mechanical/feenox-init.o `test -f 'pdes/mechanical/init.c' || echo '$(srcdir)/'`pdes/mechanical/init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-init.Tpo pdes/mechanical/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/init.c' object='pdes/mechanical/feenox-init.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-init.o `test -f 'pdes/mechanical/init.c' || echo '$(srcdir)/'`pdes/mechanical/init.c pdes/mechanical/feenox-init.obj: pdes/mechanical/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-init.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-init.Tpo -c -o pdes/mechanical/feenox-init.obj `if test -f 'pdes/mechanical/init.c'; then $(CYGPATH_W) 'pdes/mechanical/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/init.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-init.Tpo pdes/mechanical/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/init.c' object='pdes/mechanical/feenox-init.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-init.obj `if test -f 'pdes/mechanical/init.c'; then $(CYGPATH_W) 'pdes/mechanical/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/init.c'; fi` pdes/mechanical/feenox-elastic-plane-stress.o: pdes/mechanical/elastic-plane-stress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-elastic-plane-stress.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-stress.Tpo -c -o pdes/mechanical/feenox-elastic-plane-stress.o `test -f 'pdes/mechanical/elastic-plane-stress.c' || echo '$(srcdir)/'`pdes/mechanical/elastic-plane-stress.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-stress.Tpo pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-stress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/elastic-plane-stress.c' object='pdes/mechanical/feenox-elastic-plane-stress.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-elastic-plane-stress.o `test -f 'pdes/mechanical/elastic-plane-stress.c' || echo '$(srcdir)/'`pdes/mechanical/elastic-plane-stress.c pdes/mechanical/feenox-elastic-plane-stress.obj: pdes/mechanical/elastic-plane-stress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-elastic-plane-stress.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-stress.Tpo -c -o pdes/mechanical/feenox-elastic-plane-stress.obj `if test -f 'pdes/mechanical/elastic-plane-stress.c'; then $(CYGPATH_W) 'pdes/mechanical/elastic-plane-stress.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/elastic-plane-stress.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-stress.Tpo pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-stress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/elastic-plane-stress.c' object='pdes/mechanical/feenox-elastic-plane-stress.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-elastic-plane-stress.obj `if test -f 'pdes/mechanical/elastic-plane-stress.c'; then $(CYGPATH_W) 'pdes/mechanical/elastic-plane-stress.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/elastic-plane-stress.c'; fi` pdes/mechanical/feenox-bulk.o: pdes/mechanical/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-bulk.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/mechanical/feenox-bulk.o `test -f 'pdes/mechanical/bulk.c' || echo '$(srcdir)/'`pdes/mechanical/bulk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-bulk.Tpo pdes/mechanical/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/bulk.c' object='pdes/mechanical/feenox-bulk.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-bulk.o `test -f 'pdes/mechanical/bulk.c' || echo '$(srcdir)/'`pdes/mechanical/bulk.c pdes/mechanical/feenox-bulk.obj: pdes/mechanical/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-bulk.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/mechanical/feenox-bulk.obj `if test -f 'pdes/mechanical/bulk.c'; then $(CYGPATH_W) 'pdes/mechanical/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/bulk.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-bulk.Tpo pdes/mechanical/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/bulk.c' object='pdes/mechanical/feenox-bulk.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-bulk.obj `if test -f 'pdes/mechanical/bulk.c'; then $(CYGPATH_W) 'pdes/mechanical/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/bulk.c'; fi` pdes/mechanical/feenox-expansion-orthotropic.o: pdes/mechanical/expansion-orthotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-expansion-orthotropic.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-expansion-orthotropic.Tpo -c -o pdes/mechanical/feenox-expansion-orthotropic.o `test -f 'pdes/mechanical/expansion-orthotropic.c' || echo '$(srcdir)/'`pdes/mechanical/expansion-orthotropic.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-expansion-orthotropic.Tpo pdes/mechanical/$(DEPDIR)/feenox-expansion-orthotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/expansion-orthotropic.c' object='pdes/mechanical/feenox-expansion-orthotropic.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-expansion-orthotropic.o `test -f 'pdes/mechanical/expansion-orthotropic.c' || echo '$(srcdir)/'`pdes/mechanical/expansion-orthotropic.c pdes/mechanical/feenox-expansion-orthotropic.obj: pdes/mechanical/expansion-orthotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-expansion-orthotropic.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-expansion-orthotropic.Tpo -c -o pdes/mechanical/feenox-expansion-orthotropic.obj `if test -f 'pdes/mechanical/expansion-orthotropic.c'; then $(CYGPATH_W) 'pdes/mechanical/expansion-orthotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/expansion-orthotropic.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-expansion-orthotropic.Tpo pdes/mechanical/$(DEPDIR)/feenox-expansion-orthotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/expansion-orthotropic.c' object='pdes/mechanical/feenox-expansion-orthotropic.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-expansion-orthotropic.obj `if test -f 'pdes/mechanical/expansion-orthotropic.c'; then $(CYGPATH_W) 'pdes/mechanical/expansion-orthotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/expansion-orthotropic.c'; fi` pdes/mechanical/feenox-elastic-plane-strain.o: pdes/mechanical/elastic-plane-strain.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-elastic-plane-strain.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-strain.Tpo -c -o pdes/mechanical/feenox-elastic-plane-strain.o `test -f 'pdes/mechanical/elastic-plane-strain.c' || echo '$(srcdir)/'`pdes/mechanical/elastic-plane-strain.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-strain.Tpo pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-strain.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/elastic-plane-strain.c' object='pdes/mechanical/feenox-elastic-plane-strain.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-elastic-plane-strain.o `test -f 'pdes/mechanical/elastic-plane-strain.c' || echo '$(srcdir)/'`pdes/mechanical/elastic-plane-strain.c pdes/mechanical/feenox-elastic-plane-strain.obj: pdes/mechanical/elastic-plane-strain.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-elastic-plane-strain.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-strain.Tpo -c -o pdes/mechanical/feenox-elastic-plane-strain.obj `if test -f 'pdes/mechanical/elastic-plane-strain.c'; then $(CYGPATH_W) 'pdes/mechanical/elastic-plane-strain.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/elastic-plane-strain.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-strain.Tpo pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-strain.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/elastic-plane-strain.c' object='pdes/mechanical/feenox-elastic-plane-strain.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-elastic-plane-strain.obj `if test -f 'pdes/mechanical/elastic-plane-strain.c'; then $(CYGPATH_W) 'pdes/mechanical/elastic-plane-strain.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/elastic-plane-strain.c'; fi` pdes/mechanical/feenox-bc.o: pdes/mechanical/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-bc.o -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/mechanical/feenox-bc.o `test -f 'pdes/mechanical/bc.c' || echo '$(srcdir)/'`pdes/mechanical/bc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-bc.Tpo pdes/mechanical/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/bc.c' object='pdes/mechanical/feenox-bc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-bc.o `test -f 'pdes/mechanical/bc.c' || echo '$(srcdir)/'`pdes/mechanical/bc.c pdes/mechanical/feenox-bc.obj: pdes/mechanical/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/mechanical/feenox-bc.obj -MD -MP -MF pdes/mechanical/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/mechanical/feenox-bc.obj `if test -f 'pdes/mechanical/bc.c'; then $(CYGPATH_W) 'pdes/mechanical/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/bc.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/mechanical/$(DEPDIR)/feenox-bc.Tpo pdes/mechanical/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/mechanical/bc.c' object='pdes/mechanical/feenox-bc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/mechanical/feenox-bc.obj `if test -f 'pdes/mechanical/bc.c'; then $(CYGPATH_W) 'pdes/mechanical/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/mechanical/bc.c'; fi` pdes/neutron_diffusion/feenox-currents.o: pdes/neutron_diffusion/currents.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-currents.o -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-currents.Tpo -c -o pdes/neutron_diffusion/feenox-currents.o `test -f 'pdes/neutron_diffusion/currents.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/currents.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-currents.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-currents.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/currents.c' object='pdes/neutron_diffusion/feenox-currents.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-currents.o `test -f 'pdes/neutron_diffusion/currents.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/currents.c pdes/neutron_diffusion/feenox-currents.obj: pdes/neutron_diffusion/currents.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-currents.obj -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-currents.Tpo -c -o pdes/neutron_diffusion/feenox-currents.obj `if test -f 'pdes/neutron_diffusion/currents.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/currents.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/currents.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-currents.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-currents.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/currents.c' object='pdes/neutron_diffusion/feenox-currents.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-currents.obj `if test -f 'pdes/neutron_diffusion/currents.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/currents.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/currents.c'; fi` pdes/neutron_diffusion/feenox-parser.o: pdes/neutron_diffusion/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-parser.o -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/neutron_diffusion/feenox-parser.o `test -f 'pdes/neutron_diffusion/parser.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/parser.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-parser.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/parser.c' object='pdes/neutron_diffusion/feenox-parser.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-parser.o `test -f 'pdes/neutron_diffusion/parser.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/parser.c pdes/neutron_diffusion/feenox-parser.obj: pdes/neutron_diffusion/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-parser.obj -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/neutron_diffusion/feenox-parser.obj `if test -f 'pdes/neutron_diffusion/parser.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/parser.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-parser.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/parser.c' object='pdes/neutron_diffusion/feenox-parser.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-parser.obj `if test -f 'pdes/neutron_diffusion/parser.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/parser.c'; fi` pdes/neutron_diffusion/feenox-post.o: pdes/neutron_diffusion/post.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-post.o -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-post.Tpo -c -o pdes/neutron_diffusion/feenox-post.o `test -f 'pdes/neutron_diffusion/post.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/post.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-post.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-post.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/post.c' object='pdes/neutron_diffusion/feenox-post.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-post.o `test -f 'pdes/neutron_diffusion/post.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/post.c pdes/neutron_diffusion/feenox-post.obj: pdes/neutron_diffusion/post.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-post.obj -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-post.Tpo -c -o pdes/neutron_diffusion/feenox-post.obj `if test -f 'pdes/neutron_diffusion/post.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/post.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/post.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-post.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-post.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/post.c' object='pdes/neutron_diffusion/feenox-post.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-post.obj `if test -f 'pdes/neutron_diffusion/post.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/post.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/post.c'; fi` pdes/neutron_diffusion/feenox-init.o: pdes/neutron_diffusion/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-init.o -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-init.Tpo -c -o pdes/neutron_diffusion/feenox-init.o `test -f 'pdes/neutron_diffusion/init.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-init.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/init.c' object='pdes/neutron_diffusion/feenox-init.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-init.o `test -f 'pdes/neutron_diffusion/init.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/init.c pdes/neutron_diffusion/feenox-init.obj: pdes/neutron_diffusion/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-init.obj -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-init.Tpo -c -o pdes/neutron_diffusion/feenox-init.obj `if test -f 'pdes/neutron_diffusion/init.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/init.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-init.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/init.c' object='pdes/neutron_diffusion/feenox-init.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-init.obj `if test -f 'pdes/neutron_diffusion/init.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/init.c'; fi` pdes/neutron_diffusion/feenox-bulk.o: pdes/neutron_diffusion/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-bulk.o -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/neutron_diffusion/feenox-bulk.o `test -f 'pdes/neutron_diffusion/bulk.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/bulk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-bulk.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/bulk.c' object='pdes/neutron_diffusion/feenox-bulk.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-bulk.o `test -f 'pdes/neutron_diffusion/bulk.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/bulk.c pdes/neutron_diffusion/feenox-bulk.obj: pdes/neutron_diffusion/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-bulk.obj -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/neutron_diffusion/feenox-bulk.obj `if test -f 'pdes/neutron_diffusion/bulk.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/bulk.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-bulk.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/bulk.c' object='pdes/neutron_diffusion/feenox-bulk.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-bulk.obj `if test -f 'pdes/neutron_diffusion/bulk.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/bulk.c'; fi` pdes/neutron_diffusion/feenox-bc.o: pdes/neutron_diffusion/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-bc.o -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/neutron_diffusion/feenox-bc.o `test -f 'pdes/neutron_diffusion/bc.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/bc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-bc.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/bc.c' object='pdes/neutron_diffusion/feenox-bc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-bc.o `test -f 'pdes/neutron_diffusion/bc.c' || echo '$(srcdir)/'`pdes/neutron_diffusion/bc.c pdes/neutron_diffusion/feenox-bc.obj: pdes/neutron_diffusion/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_diffusion/feenox-bc.obj -MD -MP -MF pdes/neutron_diffusion/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/neutron_diffusion/feenox-bc.obj `if test -f 'pdes/neutron_diffusion/bc.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/bc.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_diffusion/$(DEPDIR)/feenox-bc.Tpo pdes/neutron_diffusion/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_diffusion/bc.c' object='pdes/neutron_diffusion/feenox-bc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_diffusion/feenox-bc.obj `if test -f 'pdes/neutron_diffusion/bc.c'; then $(CYGPATH_W) 'pdes/neutron_diffusion/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_diffusion/bc.c'; fi` pdes/neutron_sn/feenox-parser.o: pdes/neutron_sn/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_sn/feenox-parser.o -MD -MP -MF pdes/neutron_sn/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/neutron_sn/feenox-parser.o `test -f 'pdes/neutron_sn/parser.c' || echo '$(srcdir)/'`pdes/neutron_sn/parser.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_sn/$(DEPDIR)/feenox-parser.Tpo pdes/neutron_sn/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_sn/parser.c' object='pdes/neutron_sn/feenox-parser.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_sn/feenox-parser.o `test -f 'pdes/neutron_sn/parser.c' || echo '$(srcdir)/'`pdes/neutron_sn/parser.c pdes/neutron_sn/feenox-parser.obj: pdes/neutron_sn/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_sn/feenox-parser.obj -MD -MP -MF pdes/neutron_sn/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/neutron_sn/feenox-parser.obj `if test -f 'pdes/neutron_sn/parser.c'; then $(CYGPATH_W) 'pdes/neutron_sn/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_sn/parser.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_sn/$(DEPDIR)/feenox-parser.Tpo pdes/neutron_sn/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_sn/parser.c' object='pdes/neutron_sn/feenox-parser.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_sn/feenox-parser.obj `if test -f 'pdes/neutron_sn/parser.c'; then $(CYGPATH_W) 'pdes/neutron_sn/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_sn/parser.c'; fi` pdes/neutron_sn/feenox-post.o: pdes/neutron_sn/post.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_sn/feenox-post.o -MD -MP -MF pdes/neutron_sn/$(DEPDIR)/feenox-post.Tpo -c -o pdes/neutron_sn/feenox-post.o `test -f 'pdes/neutron_sn/post.c' || echo '$(srcdir)/'`pdes/neutron_sn/post.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_sn/$(DEPDIR)/feenox-post.Tpo pdes/neutron_sn/$(DEPDIR)/feenox-post.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_sn/post.c' object='pdes/neutron_sn/feenox-post.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_sn/feenox-post.o `test -f 'pdes/neutron_sn/post.c' || echo '$(srcdir)/'`pdes/neutron_sn/post.c pdes/neutron_sn/feenox-post.obj: pdes/neutron_sn/post.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_sn/feenox-post.obj -MD -MP -MF pdes/neutron_sn/$(DEPDIR)/feenox-post.Tpo -c -o pdes/neutron_sn/feenox-post.obj `if test -f 'pdes/neutron_sn/post.c'; then $(CYGPATH_W) 'pdes/neutron_sn/post.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_sn/post.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_sn/$(DEPDIR)/feenox-post.Tpo pdes/neutron_sn/$(DEPDIR)/feenox-post.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_sn/post.c' object='pdes/neutron_sn/feenox-post.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_sn/feenox-post.obj `if test -f 'pdes/neutron_sn/post.c'; then $(CYGPATH_W) 'pdes/neutron_sn/post.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_sn/post.c'; fi` pdes/neutron_sn/feenox-init.o: pdes/neutron_sn/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_sn/feenox-init.o -MD -MP -MF pdes/neutron_sn/$(DEPDIR)/feenox-init.Tpo -c -o pdes/neutron_sn/feenox-init.o `test -f 'pdes/neutron_sn/init.c' || echo '$(srcdir)/'`pdes/neutron_sn/init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_sn/$(DEPDIR)/feenox-init.Tpo pdes/neutron_sn/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_sn/init.c' object='pdes/neutron_sn/feenox-init.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_sn/feenox-init.o `test -f 'pdes/neutron_sn/init.c' || echo '$(srcdir)/'`pdes/neutron_sn/init.c pdes/neutron_sn/feenox-init.obj: pdes/neutron_sn/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_sn/feenox-init.obj -MD -MP -MF pdes/neutron_sn/$(DEPDIR)/feenox-init.Tpo -c -o pdes/neutron_sn/feenox-init.obj `if test -f 'pdes/neutron_sn/init.c'; then $(CYGPATH_W) 'pdes/neutron_sn/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_sn/init.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_sn/$(DEPDIR)/feenox-init.Tpo pdes/neutron_sn/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_sn/init.c' object='pdes/neutron_sn/feenox-init.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_sn/feenox-init.obj `if test -f 'pdes/neutron_sn/init.c'; then $(CYGPATH_W) 'pdes/neutron_sn/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_sn/init.c'; fi` pdes/neutron_sn/feenox-bulk.o: pdes/neutron_sn/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_sn/feenox-bulk.o -MD -MP -MF pdes/neutron_sn/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/neutron_sn/feenox-bulk.o `test -f 'pdes/neutron_sn/bulk.c' || echo '$(srcdir)/'`pdes/neutron_sn/bulk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_sn/$(DEPDIR)/feenox-bulk.Tpo pdes/neutron_sn/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_sn/bulk.c' object='pdes/neutron_sn/feenox-bulk.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_sn/feenox-bulk.o `test -f 'pdes/neutron_sn/bulk.c' || echo '$(srcdir)/'`pdes/neutron_sn/bulk.c pdes/neutron_sn/feenox-bulk.obj: pdes/neutron_sn/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_sn/feenox-bulk.obj -MD -MP -MF pdes/neutron_sn/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/neutron_sn/feenox-bulk.obj `if test -f 'pdes/neutron_sn/bulk.c'; then $(CYGPATH_W) 'pdes/neutron_sn/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_sn/bulk.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_sn/$(DEPDIR)/feenox-bulk.Tpo pdes/neutron_sn/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_sn/bulk.c' object='pdes/neutron_sn/feenox-bulk.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_sn/feenox-bulk.obj `if test -f 'pdes/neutron_sn/bulk.c'; then $(CYGPATH_W) 'pdes/neutron_sn/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_sn/bulk.c'; fi` pdes/neutron_sn/feenox-bc.o: pdes/neutron_sn/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_sn/feenox-bc.o -MD -MP -MF pdes/neutron_sn/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/neutron_sn/feenox-bc.o `test -f 'pdes/neutron_sn/bc.c' || echo '$(srcdir)/'`pdes/neutron_sn/bc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_sn/$(DEPDIR)/feenox-bc.Tpo pdes/neutron_sn/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_sn/bc.c' object='pdes/neutron_sn/feenox-bc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_sn/feenox-bc.o `test -f 'pdes/neutron_sn/bc.c' || echo '$(srcdir)/'`pdes/neutron_sn/bc.c pdes/neutron_sn/feenox-bc.obj: pdes/neutron_sn/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/neutron_sn/feenox-bc.obj -MD -MP -MF pdes/neutron_sn/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/neutron_sn/feenox-bc.obj `if test -f 'pdes/neutron_sn/bc.c'; then $(CYGPATH_W) 'pdes/neutron_sn/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_sn/bc.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/neutron_sn/$(DEPDIR)/feenox-bc.Tpo pdes/neutron_sn/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/neutron_sn/bc.c' object='pdes/neutron_sn/feenox-bc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/neutron_sn/feenox-bc.obj `if test -f 'pdes/neutron_sn/bc.c'; then $(CYGPATH_W) 'pdes/neutron_sn/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/neutron_sn/bc.c'; fi` pdes/feenox-dump.o: pdes/dump.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-dump.o -MD -MP -MF pdes/$(DEPDIR)/feenox-dump.Tpo -c -o pdes/feenox-dump.o `test -f 'pdes/dump.c' || echo '$(srcdir)/'`pdes/dump.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-dump.Tpo pdes/$(DEPDIR)/feenox-dump.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/dump.c' object='pdes/feenox-dump.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-dump.o `test -f 'pdes/dump.c' || echo '$(srcdir)/'`pdes/dump.c pdes/feenox-dump.obj: pdes/dump.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-dump.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-dump.Tpo -c -o pdes/feenox-dump.obj `if test -f 'pdes/dump.c'; then $(CYGPATH_W) 'pdes/dump.c'; else $(CYGPATH_W) '$(srcdir)/pdes/dump.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-dump.Tpo pdes/$(DEPDIR)/feenox-dump.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/dump.c' object='pdes/feenox-dump.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-dump.obj `if test -f 'pdes/dump.c'; then $(CYGPATH_W) 'pdes/dump.c'; else $(CYGPATH_W) '$(srcdir)/pdes/dump.c'; fi` pdes/feenox-gradient.o: pdes/gradient.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-gradient.o -MD -MP -MF pdes/$(DEPDIR)/feenox-gradient.Tpo -c -o pdes/feenox-gradient.o `test -f 'pdes/gradient.c' || echo '$(srcdir)/'`pdes/gradient.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-gradient.Tpo pdes/$(DEPDIR)/feenox-gradient.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/gradient.c' object='pdes/feenox-gradient.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-gradient.o `test -f 'pdes/gradient.c' || echo '$(srcdir)/'`pdes/gradient.c pdes/feenox-gradient.obj: pdes/gradient.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/feenox-gradient.obj -MD -MP -MF pdes/$(DEPDIR)/feenox-gradient.Tpo -c -o pdes/feenox-gradient.obj `if test -f 'pdes/gradient.c'; then $(CYGPATH_W) 'pdes/gradient.c'; else $(CYGPATH_W) '$(srcdir)/pdes/gradient.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/$(DEPDIR)/feenox-gradient.Tpo pdes/$(DEPDIR)/feenox-gradient.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/gradient.c' object='pdes/feenox-gradient.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/feenox-gradient.obj `if test -f 'pdes/gradient.c'; then $(CYGPATH_W) 'pdes/gradient.c'; else $(CYGPATH_W) '$(srcdir)/pdes/gradient.c'; fi` pdes/modal/feenox-elastic-isotropic.o: pdes/modal/elastic-isotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-elastic-isotropic.o -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-elastic-isotropic.Tpo -c -o pdes/modal/feenox-elastic-isotropic.o `test -f 'pdes/modal/elastic-isotropic.c' || echo '$(srcdir)/'`pdes/modal/elastic-isotropic.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-elastic-isotropic.Tpo pdes/modal/$(DEPDIR)/feenox-elastic-isotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/elastic-isotropic.c' object='pdes/modal/feenox-elastic-isotropic.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-elastic-isotropic.o `test -f 'pdes/modal/elastic-isotropic.c' || echo '$(srcdir)/'`pdes/modal/elastic-isotropic.c pdes/modal/feenox-elastic-isotropic.obj: pdes/modal/elastic-isotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-elastic-isotropic.obj -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-elastic-isotropic.Tpo -c -o pdes/modal/feenox-elastic-isotropic.obj `if test -f 'pdes/modal/elastic-isotropic.c'; then $(CYGPATH_W) 'pdes/modal/elastic-isotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/elastic-isotropic.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-elastic-isotropic.Tpo pdes/modal/$(DEPDIR)/feenox-elastic-isotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/elastic-isotropic.c' object='pdes/modal/feenox-elastic-isotropic.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-elastic-isotropic.obj `if test -f 'pdes/modal/elastic-isotropic.c'; then $(CYGPATH_W) 'pdes/modal/elastic-isotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/elastic-isotropic.c'; fi` pdes/modal/feenox-parser.o: pdes/modal/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-parser.o -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/modal/feenox-parser.o `test -f 'pdes/modal/parser.c' || echo '$(srcdir)/'`pdes/modal/parser.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-parser.Tpo pdes/modal/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/parser.c' object='pdes/modal/feenox-parser.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-parser.o `test -f 'pdes/modal/parser.c' || echo '$(srcdir)/'`pdes/modal/parser.c pdes/modal/feenox-parser.obj: pdes/modal/parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-parser.obj -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-parser.Tpo -c -o pdes/modal/feenox-parser.obj `if test -f 'pdes/modal/parser.c'; then $(CYGPATH_W) 'pdes/modal/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/parser.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-parser.Tpo pdes/modal/$(DEPDIR)/feenox-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/parser.c' object='pdes/modal/feenox-parser.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-parser.obj `if test -f 'pdes/modal/parser.c'; then $(CYGPATH_W) 'pdes/modal/parser.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/parser.c'; fi` pdes/modal/feenox-elastic-orthotropic.o: pdes/modal/elastic-orthotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-elastic-orthotropic.o -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-elastic-orthotropic.Tpo -c -o pdes/modal/feenox-elastic-orthotropic.o `test -f 'pdes/modal/elastic-orthotropic.c' || echo '$(srcdir)/'`pdes/modal/elastic-orthotropic.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-elastic-orthotropic.Tpo pdes/modal/$(DEPDIR)/feenox-elastic-orthotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/elastic-orthotropic.c' object='pdes/modal/feenox-elastic-orthotropic.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-elastic-orthotropic.o `test -f 'pdes/modal/elastic-orthotropic.c' || echo '$(srcdir)/'`pdes/modal/elastic-orthotropic.c pdes/modal/feenox-elastic-orthotropic.obj: pdes/modal/elastic-orthotropic.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-elastic-orthotropic.obj -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-elastic-orthotropic.Tpo -c -o pdes/modal/feenox-elastic-orthotropic.obj `if test -f 'pdes/modal/elastic-orthotropic.c'; then $(CYGPATH_W) 'pdes/modal/elastic-orthotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/elastic-orthotropic.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-elastic-orthotropic.Tpo pdes/modal/$(DEPDIR)/feenox-elastic-orthotropic.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/elastic-orthotropic.c' object='pdes/modal/feenox-elastic-orthotropic.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-elastic-orthotropic.obj `if test -f 'pdes/modal/elastic-orthotropic.c'; then $(CYGPATH_W) 'pdes/modal/elastic-orthotropic.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/elastic-orthotropic.c'; fi` pdes/modal/feenox-post.o: pdes/modal/post.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-post.o -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-post.Tpo -c -o pdes/modal/feenox-post.o `test -f 'pdes/modal/post.c' || echo '$(srcdir)/'`pdes/modal/post.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-post.Tpo pdes/modal/$(DEPDIR)/feenox-post.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/post.c' object='pdes/modal/feenox-post.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-post.o `test -f 'pdes/modal/post.c' || echo '$(srcdir)/'`pdes/modal/post.c pdes/modal/feenox-post.obj: pdes/modal/post.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-post.obj -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-post.Tpo -c -o pdes/modal/feenox-post.obj `if test -f 'pdes/modal/post.c'; then $(CYGPATH_W) 'pdes/modal/post.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/post.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-post.Tpo pdes/modal/$(DEPDIR)/feenox-post.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/post.c' object='pdes/modal/feenox-post.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-post.obj `if test -f 'pdes/modal/post.c'; then $(CYGPATH_W) 'pdes/modal/post.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/post.c'; fi` pdes/modal/feenox-init.o: pdes/modal/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-init.o -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-init.Tpo -c -o pdes/modal/feenox-init.o `test -f 'pdes/modal/init.c' || echo '$(srcdir)/'`pdes/modal/init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-init.Tpo pdes/modal/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/init.c' object='pdes/modal/feenox-init.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-init.o `test -f 'pdes/modal/init.c' || echo '$(srcdir)/'`pdes/modal/init.c pdes/modal/feenox-init.obj: pdes/modal/init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-init.obj -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-init.Tpo -c -o pdes/modal/feenox-init.obj `if test -f 'pdes/modal/init.c'; then $(CYGPATH_W) 'pdes/modal/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/init.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-init.Tpo pdes/modal/$(DEPDIR)/feenox-init.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/init.c' object='pdes/modal/feenox-init.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-init.obj `if test -f 'pdes/modal/init.c'; then $(CYGPATH_W) 'pdes/modal/init.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/init.c'; fi` pdes/modal/feenox-elastic-plane-stress.o: pdes/modal/elastic-plane-stress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-elastic-plane-stress.o -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-elastic-plane-stress.Tpo -c -o pdes/modal/feenox-elastic-plane-stress.o `test -f 'pdes/modal/elastic-plane-stress.c' || echo '$(srcdir)/'`pdes/modal/elastic-plane-stress.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-elastic-plane-stress.Tpo pdes/modal/$(DEPDIR)/feenox-elastic-plane-stress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/elastic-plane-stress.c' object='pdes/modal/feenox-elastic-plane-stress.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-elastic-plane-stress.o `test -f 'pdes/modal/elastic-plane-stress.c' || echo '$(srcdir)/'`pdes/modal/elastic-plane-stress.c pdes/modal/feenox-elastic-plane-stress.obj: pdes/modal/elastic-plane-stress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-elastic-plane-stress.obj -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-elastic-plane-stress.Tpo -c -o pdes/modal/feenox-elastic-plane-stress.obj `if test -f 'pdes/modal/elastic-plane-stress.c'; then $(CYGPATH_W) 'pdes/modal/elastic-plane-stress.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/elastic-plane-stress.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-elastic-plane-stress.Tpo pdes/modal/$(DEPDIR)/feenox-elastic-plane-stress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/elastic-plane-stress.c' object='pdes/modal/feenox-elastic-plane-stress.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-elastic-plane-stress.obj `if test -f 'pdes/modal/elastic-plane-stress.c'; then $(CYGPATH_W) 'pdes/modal/elastic-plane-stress.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/elastic-plane-stress.c'; fi` pdes/modal/feenox-bulk.o: pdes/modal/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-bulk.o -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/modal/feenox-bulk.o `test -f 'pdes/modal/bulk.c' || echo '$(srcdir)/'`pdes/modal/bulk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-bulk.Tpo pdes/modal/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/bulk.c' object='pdes/modal/feenox-bulk.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-bulk.o `test -f 'pdes/modal/bulk.c' || echo '$(srcdir)/'`pdes/modal/bulk.c pdes/modal/feenox-bulk.obj: pdes/modal/bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-bulk.obj -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-bulk.Tpo -c -o pdes/modal/feenox-bulk.obj `if test -f 'pdes/modal/bulk.c'; then $(CYGPATH_W) 'pdes/modal/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/bulk.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-bulk.Tpo pdes/modal/$(DEPDIR)/feenox-bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/bulk.c' object='pdes/modal/feenox-bulk.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-bulk.obj `if test -f 'pdes/modal/bulk.c'; then $(CYGPATH_W) 'pdes/modal/bulk.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/bulk.c'; fi` pdes/modal/feenox-elastic-plane-strain.o: pdes/modal/elastic-plane-strain.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-elastic-plane-strain.o -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-elastic-plane-strain.Tpo -c -o pdes/modal/feenox-elastic-plane-strain.o `test -f 'pdes/modal/elastic-plane-strain.c' || echo '$(srcdir)/'`pdes/modal/elastic-plane-strain.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-elastic-plane-strain.Tpo pdes/modal/$(DEPDIR)/feenox-elastic-plane-strain.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/elastic-plane-strain.c' object='pdes/modal/feenox-elastic-plane-strain.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-elastic-plane-strain.o `test -f 'pdes/modal/elastic-plane-strain.c' || echo '$(srcdir)/'`pdes/modal/elastic-plane-strain.c pdes/modal/feenox-elastic-plane-strain.obj: pdes/modal/elastic-plane-strain.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-elastic-plane-strain.obj -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-elastic-plane-strain.Tpo -c -o pdes/modal/feenox-elastic-plane-strain.obj `if test -f 'pdes/modal/elastic-plane-strain.c'; then $(CYGPATH_W) 'pdes/modal/elastic-plane-strain.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/elastic-plane-strain.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-elastic-plane-strain.Tpo pdes/modal/$(DEPDIR)/feenox-elastic-plane-strain.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/elastic-plane-strain.c' object='pdes/modal/feenox-elastic-plane-strain.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-elastic-plane-strain.obj `if test -f 'pdes/modal/elastic-plane-strain.c'; then $(CYGPATH_W) 'pdes/modal/elastic-plane-strain.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/elastic-plane-strain.c'; fi` pdes/modal/feenox-bc.o: pdes/modal/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-bc.o -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/modal/feenox-bc.o `test -f 'pdes/modal/bc.c' || echo '$(srcdir)/'`pdes/modal/bc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-bc.Tpo pdes/modal/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/bc.c' object='pdes/modal/feenox-bc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-bc.o `test -f 'pdes/modal/bc.c' || echo '$(srcdir)/'`pdes/modal/bc.c pdes/modal/feenox-bc.obj: pdes/modal/bc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -MT pdes/modal/feenox-bc.obj -MD -MP -MF pdes/modal/$(DEPDIR)/feenox-bc.Tpo -c -o pdes/modal/feenox-bc.obj `if test -f 'pdes/modal/bc.c'; then $(CYGPATH_W) 'pdes/modal/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/bc.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pdes/modal/$(DEPDIR)/feenox-bc.Tpo pdes/modal/$(DEPDIR)/feenox-bc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdes/modal/bc.c' object='pdes/modal/feenox-bc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(feenox_CFLAGS) $(CFLAGS) -c -o pdes/modal/feenox-bc.obj `if test -f 'pdes/modal/bc.c'; then $(CYGPATH_W) 'pdes/modal/bc.c'; else $(CYGPATH_W) '$(srcdir)/pdes/modal/bc.c'; fi` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f ./$(am__dirstamp) -rm -f contrib/$(DEPDIR)/$(am__dirstamp) -rm -f contrib/$(am__dirstamp) -rm -f flow/$(DEPDIR)/$(am__dirstamp) -rm -f flow/$(am__dirstamp) -rm -f io/$(DEPDIR)/$(am__dirstamp) -rm -f io/$(am__dirstamp) -rm -f math/$(DEPDIR)/$(am__dirstamp) -rm -f math/$(am__dirstamp) -rm -f mesh/$(DEPDIR)/$(am__dirstamp) -rm -f mesh/$(am__dirstamp) -rm -f mesh/elements/$(DEPDIR)/$(am__dirstamp) -rm -f mesh/elements/$(am__dirstamp) -rm -f parser/$(DEPDIR)/$(am__dirstamp) -rm -f parser/$(am__dirstamp) -rm -f pdes/$(DEPDIR)/$(am__dirstamp) -rm -f pdes/$(am__dirstamp) -rm -f pdes/laplace/$(DEPDIR)/$(am__dirstamp) -rm -f pdes/laplace/$(am__dirstamp) -rm -f pdes/mechanical/$(DEPDIR)/$(am__dirstamp) -rm -f pdes/mechanical/$(am__dirstamp) -rm -f pdes/modal/$(DEPDIR)/$(am__dirstamp) -rm -f pdes/modal/$(am__dirstamp) -rm -f pdes/neutron_diffusion/$(DEPDIR)/$(am__dirstamp) -rm -f pdes/neutron_diffusion/$(am__dirstamp) -rm -f pdes/neutron_sn/$(DEPDIR)/$(am__dirstamp) -rm -f pdes/neutron_sn/$(am__dirstamp) -rm -f pdes/thermal/$(DEPDIR)/$(am__dirstamp) -rm -f pdes/thermal/$(am__dirstamp) -test -z "$(DEPDIR)/$(am__dirstamp)" || rm -f $(DEPDIR)/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/feenox-feenox.Po -rm -f ./$(DEPDIR)/feenox-version.Po -rm -f ./contrib/$(DEPDIR)/feenox-kdtree.Po -rm -f ./flow/$(DEPDIR)/feenox-abort.Po -rm -f ./flow/$(DEPDIR)/feenox-cleanup.Po -rm -f ./flow/$(DEPDIR)/feenox-conditional.Po -rm -f ./flow/$(DEPDIR)/feenox-define.Po -rm -f ./flow/$(DEPDIR)/feenox-error.Po -rm -f ./flow/$(DEPDIR)/feenox-getptr.Po -rm -f ./flow/$(DEPDIR)/feenox-init.Po -rm -f ./flow/$(DEPDIR)/feenox-instruction.Po -rm -f ./flow/$(DEPDIR)/feenox-run.Po -rm -f ./flow/$(DEPDIR)/feenox-step.Po -rm -f ./io/$(DEPDIR)/feenox-file.Po -rm -f ./io/$(DEPDIR)/feenox-print.Po -rm -f ./io/$(DEPDIR)/feenox-printf.Po -rm -f ./math/$(DEPDIR)/feenox-alias.Po -rm -f ./math/$(DEPDIR)/feenox-assignment.Po -rm -f ./math/$(DEPDIR)/feenox-builtin_functionals.Po -rm -f ./math/$(DEPDIR)/feenox-builtin_functions.Po -rm -f ./math/$(DEPDIR)/feenox-builtin_vectorfunctions.Po -rm -f ./math/$(DEPDIR)/feenox-dae.Po -rm -f ./math/$(DEPDIR)/feenox-expressions.Po -rm -f ./math/$(DEPDIR)/feenox-fit.Po -rm -f ./math/$(DEPDIR)/feenox-function.Po -rm -f ./math/$(DEPDIR)/feenox-matrix.Po -rm -f ./math/$(DEPDIR)/feenox-solve.Po -rm -f ./math/$(DEPDIR)/feenox-vector.Po -rm -f ./mesh/$(DEPDIR)/feenox-boundary_condition.Po -rm -f ./mesh/$(DEPDIR)/feenox-calculix.Po -rm -f ./mesh/$(DEPDIR)/feenox-cell.Po -rm -f ./mesh/$(DEPDIR)/feenox-element.Po -rm -f ./mesh/$(DEPDIR)/feenox-extrema.Po -rm -f ./mesh/$(DEPDIR)/feenox-geometry.Po -rm -f ./mesh/$(DEPDIR)/feenox-gmsh.Po -rm -f ./mesh/$(DEPDIR)/feenox-init.Po -rm -f ./mesh/$(DEPDIR)/feenox-integrate.Po -rm -f ./mesh/$(DEPDIR)/feenox-interpolate.Po -rm -f ./mesh/$(DEPDIR)/feenox-material.Po -rm -f ./mesh/$(DEPDIR)/feenox-mesh.Po -rm -f ./mesh/$(DEPDIR)/feenox-neighbors.Po -rm -f ./mesh/$(DEPDIR)/feenox-physical_group.Po -rm -f ./mesh/$(DEPDIR)/feenox-vtk.Po -rm -f ./mesh/$(DEPDIR)/feenox-vtu.Po -rm -f ./mesh/$(DEPDIR)/feenox-write.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-hexa20.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-hexa27.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-hexa8.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-line2.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-line3.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-point.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-prism15.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-prism6.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-quad4.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-quad8.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-quad9.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-tet10.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-tet4.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-triang3.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-triang6.Po -rm -f ./parser/$(DEPDIR)/feenox-auxiliary.Po -rm -f ./parser/$(DEPDIR)/feenox-parser.Po -rm -f pdes/$(DEPDIR)/feenox-blas.Po -rm -f pdes/$(DEPDIR)/feenox-build.Po -rm -f pdes/$(DEPDIR)/feenox-dirichlet.Po -rm -f pdes/$(DEPDIR)/feenox-distribution.Po -rm -f pdes/$(DEPDIR)/feenox-dump.Po -rm -f pdes/$(DEPDIR)/feenox-fem.Po -rm -f pdes/$(DEPDIR)/feenox-gradient.Po -rm -f pdes/$(DEPDIR)/feenox-init.Po -rm -f pdes/$(DEPDIR)/feenox-parse.Po -rm -f pdes/$(DEPDIR)/feenox-petsc_ksp.Po -rm -f pdes/$(DEPDIR)/feenox-petsc_snes.Po -rm -f pdes/$(DEPDIR)/feenox-petsc_ts.Po -rm -f pdes/$(DEPDIR)/feenox-reaction.Po -rm -f pdes/$(DEPDIR)/feenox-slepc_eps.Po -rm -f pdes/$(DEPDIR)/feenox-solve.Po -rm -f pdes/laplace/$(DEPDIR)/feenox-bc.Po -rm -f pdes/laplace/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/laplace/$(DEPDIR)/feenox-init.Po -rm -f pdes/laplace/$(DEPDIR)/feenox-parser.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-bc.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-elastic-isotropic.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-elastic-orthotropic.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-strain.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-stress.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-expansion-isotropic.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-expansion-orthotropic.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-init.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-linearize.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-parser.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-post.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-stress.Po -rm -f pdes/modal/$(DEPDIR)/feenox-bc.Po -rm -f pdes/modal/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/modal/$(DEPDIR)/feenox-elastic-isotropic.Po -rm -f pdes/modal/$(DEPDIR)/feenox-elastic-orthotropic.Po -rm -f pdes/modal/$(DEPDIR)/feenox-elastic-plane-strain.Po -rm -f pdes/modal/$(DEPDIR)/feenox-elastic-plane-stress.Po -rm -f pdes/modal/$(DEPDIR)/feenox-init.Po -rm -f pdes/modal/$(DEPDIR)/feenox-parser.Po -rm -f pdes/modal/$(DEPDIR)/feenox-post.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-bc.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-currents.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-init.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-parser.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-post.Po -rm -f pdes/neutron_sn/$(DEPDIR)/feenox-bc.Po -rm -f pdes/neutron_sn/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/neutron_sn/$(DEPDIR)/feenox-init.Po -rm -f pdes/neutron_sn/$(DEPDIR)/feenox-parser.Po -rm -f pdes/neutron_sn/$(DEPDIR)/feenox-post.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-bc.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-heatflux.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-init.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-parser.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-post.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/feenox-feenox.Po -rm -f ./$(DEPDIR)/feenox-version.Po -rm -f ./contrib/$(DEPDIR)/feenox-kdtree.Po -rm -f ./flow/$(DEPDIR)/feenox-abort.Po -rm -f ./flow/$(DEPDIR)/feenox-cleanup.Po -rm -f ./flow/$(DEPDIR)/feenox-conditional.Po -rm -f ./flow/$(DEPDIR)/feenox-define.Po -rm -f ./flow/$(DEPDIR)/feenox-error.Po -rm -f ./flow/$(DEPDIR)/feenox-getptr.Po -rm -f ./flow/$(DEPDIR)/feenox-init.Po -rm -f ./flow/$(DEPDIR)/feenox-instruction.Po -rm -f ./flow/$(DEPDIR)/feenox-run.Po -rm -f ./flow/$(DEPDIR)/feenox-step.Po -rm -f ./io/$(DEPDIR)/feenox-file.Po -rm -f ./io/$(DEPDIR)/feenox-print.Po -rm -f ./io/$(DEPDIR)/feenox-printf.Po -rm -f ./math/$(DEPDIR)/feenox-alias.Po -rm -f ./math/$(DEPDIR)/feenox-assignment.Po -rm -f ./math/$(DEPDIR)/feenox-builtin_functionals.Po -rm -f ./math/$(DEPDIR)/feenox-builtin_functions.Po -rm -f ./math/$(DEPDIR)/feenox-builtin_vectorfunctions.Po -rm -f ./math/$(DEPDIR)/feenox-dae.Po -rm -f ./math/$(DEPDIR)/feenox-expressions.Po -rm -f ./math/$(DEPDIR)/feenox-fit.Po -rm -f ./math/$(DEPDIR)/feenox-function.Po -rm -f ./math/$(DEPDIR)/feenox-matrix.Po -rm -f ./math/$(DEPDIR)/feenox-solve.Po -rm -f ./math/$(DEPDIR)/feenox-vector.Po -rm -f ./mesh/$(DEPDIR)/feenox-boundary_condition.Po -rm -f ./mesh/$(DEPDIR)/feenox-calculix.Po -rm -f ./mesh/$(DEPDIR)/feenox-cell.Po -rm -f ./mesh/$(DEPDIR)/feenox-element.Po -rm -f ./mesh/$(DEPDIR)/feenox-extrema.Po -rm -f ./mesh/$(DEPDIR)/feenox-geometry.Po -rm -f ./mesh/$(DEPDIR)/feenox-gmsh.Po -rm -f ./mesh/$(DEPDIR)/feenox-init.Po -rm -f ./mesh/$(DEPDIR)/feenox-integrate.Po -rm -f ./mesh/$(DEPDIR)/feenox-interpolate.Po -rm -f ./mesh/$(DEPDIR)/feenox-material.Po -rm -f ./mesh/$(DEPDIR)/feenox-mesh.Po -rm -f ./mesh/$(DEPDIR)/feenox-neighbors.Po -rm -f ./mesh/$(DEPDIR)/feenox-physical_group.Po -rm -f ./mesh/$(DEPDIR)/feenox-vtk.Po -rm -f ./mesh/$(DEPDIR)/feenox-vtu.Po -rm -f ./mesh/$(DEPDIR)/feenox-write.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-hexa20.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-hexa27.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-hexa8.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-line2.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-line3.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-point.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-prism15.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-prism6.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-quad4.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-quad8.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-quad9.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-tet10.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-tet4.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-triang3.Po -rm -f ./mesh/elements/$(DEPDIR)/feenox-triang6.Po -rm -f ./parser/$(DEPDIR)/feenox-auxiliary.Po -rm -f ./parser/$(DEPDIR)/feenox-parser.Po -rm -f pdes/$(DEPDIR)/feenox-blas.Po -rm -f pdes/$(DEPDIR)/feenox-build.Po -rm -f pdes/$(DEPDIR)/feenox-dirichlet.Po -rm -f pdes/$(DEPDIR)/feenox-distribution.Po -rm -f pdes/$(DEPDIR)/feenox-dump.Po -rm -f pdes/$(DEPDIR)/feenox-fem.Po -rm -f pdes/$(DEPDIR)/feenox-gradient.Po -rm -f pdes/$(DEPDIR)/feenox-init.Po -rm -f pdes/$(DEPDIR)/feenox-parse.Po -rm -f pdes/$(DEPDIR)/feenox-petsc_ksp.Po -rm -f pdes/$(DEPDIR)/feenox-petsc_snes.Po -rm -f pdes/$(DEPDIR)/feenox-petsc_ts.Po -rm -f pdes/$(DEPDIR)/feenox-reaction.Po -rm -f pdes/$(DEPDIR)/feenox-slepc_eps.Po -rm -f pdes/$(DEPDIR)/feenox-solve.Po -rm -f pdes/laplace/$(DEPDIR)/feenox-bc.Po -rm -f pdes/laplace/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/laplace/$(DEPDIR)/feenox-init.Po -rm -f pdes/laplace/$(DEPDIR)/feenox-parser.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-bc.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-elastic-isotropic.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-elastic-orthotropic.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-strain.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-elastic-plane-stress.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-expansion-isotropic.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-expansion-orthotropic.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-init.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-linearize.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-parser.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-post.Po -rm -f pdes/mechanical/$(DEPDIR)/feenox-stress.Po -rm -f pdes/modal/$(DEPDIR)/feenox-bc.Po -rm -f pdes/modal/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/modal/$(DEPDIR)/feenox-elastic-isotropic.Po -rm -f pdes/modal/$(DEPDIR)/feenox-elastic-orthotropic.Po -rm -f pdes/modal/$(DEPDIR)/feenox-elastic-plane-strain.Po -rm -f pdes/modal/$(DEPDIR)/feenox-elastic-plane-stress.Po -rm -f pdes/modal/$(DEPDIR)/feenox-init.Po -rm -f pdes/modal/$(DEPDIR)/feenox-parser.Po -rm -f pdes/modal/$(DEPDIR)/feenox-post.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-bc.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-currents.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-init.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-parser.Po -rm -f pdes/neutron_diffusion/$(DEPDIR)/feenox-post.Po -rm -f pdes/neutron_sn/$(DEPDIR)/feenox-bc.Po -rm -f pdes/neutron_sn/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/neutron_sn/$(DEPDIR)/feenox-init.Po -rm -f pdes/neutron_sn/$(DEPDIR)/feenox-parser.Po -rm -f pdes/neutron_sn/$(DEPDIR)/feenox-post.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-bc.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-bulk.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-heatflux.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-init.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-parser.Po -rm -f pdes/thermal/$(DEPDIR)/feenox-post.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-binPROGRAMS install-data install-data-am \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS .PRECIOUS: Makefile @INCLUDE_SLEPC_TRUE@ include $(SLEPC_DIR)/lib/slepc/conf/slepc_variables @INCLUDE_PETSC_TRUE@ include $(PETSC_DIR)/lib/petsc/conf/variables undefine DESTDIR # this variable is set by petsc somewhere and we need it empty to make install # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: feenox-1.1/ChangeLog0000644000175000017500000001137314773607166011360 00000000000000Current (under development) - … v1.1 (Apr 2025) - misc fixes for Debian packaging - steady-state writer in VTU .vtu format - skip some tests in big-endian architectures - READ_MESH can read CalculiX’s .frd output files - utils/fee2ccx converter from FeenoX’s .fee to CalculiX’s .fee - links to examples and tests in HTML manual - cleanups to create debian directory in Salsa (see https://salsa.debian.org/jtheler/feenox) - distribution binaries are dynamic instead of static - BC type adiabatic in thermal - fixed TIME_PATH with PETSc and SUNDIALS - improved vector initialization syntax - remove compilation date to allow reproducible builds - BCs as arrays instead of linked lists - option --ast - BC GROUPS to select many labels at once - cleanups to create Debian dsc - use config.h instead of version.h - compute perimeters using second-order precision - bump GSL to v2.8 - INTEGRATE expressions of nx, ny and nz - create _cog variables for points as well - fix for evaluation of derivatives at arbitrary locations - paper in FOSS: https://doi.org/10.21105/joss.05846 v1.0 (Mar 2024) - option --check - README for engineers, hackers and academics - thermal tutorial - thermal radiation tests - two-dimensional quasi-random number sequences - non-zero Neumann BCs in neutron diffusion - LABEL in now an alias for PHYSICAL_GROUP in MATERIAL - explicit fission spectrum - EIGEN_DIRICHLET_ZERO keyword - special variable mumps_ictnl_14 to control MUMPS’ over-relaxation factor - improved MPI execution - verification with MMS - PRINTF and PRINTF_ALL instructions - improved memory handling when building elemental objects - PREALLOCATE and ALLOW_NEW_NONZEROS options - choose either to fail or allow missed BCs - updated internal naming of FEM matrices to match the doc - dump element drawings, node ordering and shape functions with --elements_info - cleaned up source distributions - CI using Github actions - Los Alamos criticallity benchmarks in tests - support for reading VTK v5 files - WRITE_RESULTS keyword - split examples by problem type - YAML blocks in input file for metadata are allowed (so far they are ignored by FeenoX) - $0 (or ${0} or $(1)) expands to the base name of the main input, i.e. without the .fee extension - bracketed arguments so 11(1) is a valid string - multi-group neutron transport with discrete ordinates (S_(N) method) - mimicked-nodes BCs - read mesh fields from VTK files v0.3 (Feb 2023) - unofficial Debian/Ubuntu packages - added jacobian for temperature-dependent conductivity - updated LE10 benchmark - read time-dependent functions in .msh files - detect/handle hanging nodes - muti-dof BCs using expressions for mechanical 0=expression of space & displacements - volumetric forces in mechanical - stress linearization according to ASME VIII Div 2 Sec 5. - tangential and radial symmetry as multi-dof BCs using the penalty method - solve (small) systems of non-linear equations given as expressions - functions over meshes using vectors - argument --pdes lists the available PDEs FeenoX can solve - auto-detect PDE directories: if one adds or deletes one directory from src/pdes FeenoX will compile anyway. - faster direct inversion of 3x3 matrices using code from PETSc - separated initial conditions from initial guess v0.2 (Jan 2022) - orthotropic elasticity - orthotropic thermal expansion - compute reactions - virtual methods (function pointers) for material models - plane stress and strain - neutron diffusion problem - free-free modal analysis - multi-dimensional interpolation using Shepard’s method for point-wise functions - traction BC in mechanical - 3D thermal MMS with space-dependent conductivity v0.1 (Aug 2021) - laplace problem - compute gradients of PDE solutions only if they are used - use brackets for vectors and parenthesis for functions - find extrema of mesh-based functions at gauss points - 2d & 3d thermal MMS tests - thermal expansion in mechanical - binary .msh v4.x reader - function fitting - per-problem virtual methods - modal problem - mechanical problem - cleaner pointwise-defined functions - jacobian for non-linear thermal - check consistency between PETSc/SLEPc headers and libraries - cell-based output - check dependency of expressions and decide linearity automatically - implicit materials - thermal problem - skeleton for PDEs - ODEs - renamed branch master to main - scripts to build binaries for distribution - support for clang - regressions tests under target make check v0.0 (Dec 2020) - initial development version to move stuff from wasora/Fino/milonga to the new FeenoX repository. feenox-1.1/configure0000755000175000017500000113566514773607171011525 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for feenox 1.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: jeremy@seamplex.com about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='feenox' PACKAGE_TARNAME='feenox' PACKAGE_VERSION='1.1' PACKAGE_STRING='feenox 1.1' PACKAGE_BUGREPORT='jeremy@seamplex.com' PACKAGE_URL='' ac_unique_file="${srcdir}/src/feenox.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS DOWNLOADED_GSL_INCLUDES DOWNLOADED_GSL_LIBS INCLUDE_SLEPC_FALSE INCLUDE_SLEPC_TRUE INCLUDE_PETSC_FALSE INCLUDE_PETSC_TRUE SLEPC_DIR PETSC_ARCH PETSC_DIR am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking with_debug with_sundials with_petsc with_slepc enable_download_gsl ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS PETSC_DIR PETSC_ARCH SLEPC_DIR' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures feenox 1.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/feenox] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of feenox 1.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-download-gsl try to automatically download and compile GSL [default=no] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-debug compile with debugging symbols [default=no] --with-sundials use SUNDIALS to solve DAEs [default=check] --with-petsc use PETSc to solve PDEs [default=check] --with-slepc use PETSc to solve PDEs [default=check] Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory PETSC_DIR location of PETSc installation PETSC_ARCH PETSc architecture SLEPC_DIR location of SLEPc installation Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF feenox configure 1.1 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by feenox $as_me 1.1, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Auxiliary files required by this configure script. ac_aux_files="compile missing install-sh config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='feenox' VERSION='1.1' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # TODO: investigate #AX_CODE_COVERAGE # Check whether --with-debug was given. if test ${with_debug+y} then : withval=$with_debug; else $as_nop with_debug=no fi # AC_ARG_WITH( # [fee2ccx], # AS_HELP_STRING([--with-fee2ccx], [compile fee2ccx [default=no]]), # [], # [with_fee2ccx=no] # ) ###################### # default optimization flags if test "x$CFLAGS" = "x-g -O2" then : if test "x${with_debug}" = "xyes" then : CFLAGS="-g -O0" else $as_nop CFLAGS="-O3 -flto=auto -no-pie" fi fi ###################### # libraries # check for math { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing cos" >&5 printf %s "checking for library containing cos... " >&6; } if test ${ac_cv_search_cos+y} then : printf %s "(cached) " >&6 else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char cos (); int main (void) { return cos (); ; return 0; } _ACEOF for ac_lib in '' m do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_cos=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_cos+y} then : break fi done if test ${ac_cv_search_cos+y} then : else $as_nop ac_cv_search_cos=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cos" >&5 printf "%s\n" "$ac_cv_search_cos" >&6; } ac_res=$ac_cv_search_cos if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else $as_nop as_fn_error $? "libm not found" "$LINENO" 5 fi ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "math.h" "ac_cv_header_math_h" "$ac_includes_default" if test "x$ac_cv_header_math_h" = xyes then : else $as_nop as_fn_error $? "math.h not found" "$LINENO" 5 fi # check for sysconf() for page size ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf" if test "x$ac_cv_func_sysconf" = xyes then : printf "%s\n" "#define HAVE_SYSCONF 1" >>confdefs.h fi # check for clock_gettime() for unix time ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" if test "x$ac_cv_func_clock_gettime" = xyes then : printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h fi # check for getrusage() for memory and cpu time ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage" if test "x$ac_cv_func_getrusage" = xyes then : printf "%s\n" "#define HAVE_GETRUSAGE 1" >>confdefs.h fi # check for asprintf ac_fn_c_check_func "$LINENO" "asprintf" "ac_cv_func_asprintf" if test "x$ac_cv_func_asprintf" = xyes then : printf "%s\n" "#define HAVE_ASPRINTF 1" >>confdefs.h fi # check for feenox_likely { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_expect" >&5 printf %s "checking for __builtin_expect... " >&6; } if test ${ax_cv_have___builtin_expect+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { __builtin_expect(0, 0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_cv_have___builtin_expect=yes else $as_nop ax_cv_have___builtin_expect=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have___builtin_expect" >&5 printf "%s\n" "$ax_cv_have___builtin_expect" >&6; } if test yes = $ax_cv_have___builtin_expect then : printf "%s\n" "#define HAVE___BUILTIN_EXPECT 1" >>confdefs.h fi # some other stuff that should be pretty standard # but we comment out to have a smaller compilation string #AC_CHECK_FUNCS([floor memset pow rint sqrt strcasecmp strchr strdup strerror strncasecmp strpbrk strrchr strstr], [], []) #AC_CHECK_HEADERS(fcntl.h limits.h malloc.h stddef.h, [], []) #AC_CHECK_HEADER_STDBOOL #AC_CHECK_TYPES([ptrdiff_t]) #AC_C_INLINE #AC_FUNC_ALLOCA #AC_FUNC_MALLOC #AC_FUNC_REALLOC #AC_TYPE_SIZE_T #AC_TYPE_UINT16_T #AC_TYPE_UINT32_T #AC_TYPE_UINT8_T ###################### # check for Readline (optional) # the default is read from the macro argument, but the help string # does not expand variables so it always states that it is "check" #AC_ARG_WITH( #[readline], #AS_HELP_STRING([--with-readline], [support interactive debug mode [default=check]]), #[], #[with_readline=check] #) #have_readline="no" #AS_IF([test "x${with_readline}" != "xno"] , [ #AC_CHECK_HEADER([readline/readline.h], #[], #AS_IF([test "x${with_readline}" != "xcheck"], AC_MSG_FAILURE([--with-readline was given but test for readline headers failed])) #) #AC_CHECK_LIB([readline], [readline], #[], #AS_IF([test "x${with_readline}" != "xcheck"], #AC_MSG_FAILURE([--with-readline was given but test for readline library failed]) #) #) #]) # check if we have everything #AS_IF([test "x${ac_cv_lib_readline_readline}" = "xyes" -a \ #"x${ac_cv_header_readline_readline_h}" = "xyes" ], #[ #AC_DEFINE(HAVE_READLINE) #have_readline="yes" #], #) ###################### # check for SUNDIALS (optional) # the default is read from the macro argument, but the help string # does not expand variables so it always states that it is "check" # Check whether --with-sundials was given. if test ${with_sundials+y} then : withval=$with_sundials; else $as_nop with_sundials=check fi have_sundials="no" if test "x${with_sundials}" != "xno" then : CC_OLD=$CC CC=mpicc for ac_header in sundials/sundials_types.h ida/ida.h sundials/sundials_linearsolver.h do : as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else $as_nop if test "x${with_sundials}" != "xcheck" then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-sundials was given but test for libsundials-dev headers failed See \`config.log' for more details" "$LINENO" 5; } fi fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for IDAInit in -lsundials_ida" >&5 printf %s "checking for IDAInit in -lsundials_ida... " >&6; } if test ${ac_cv_lib_sundials_ida_IDAInit+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsundials_ida $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char IDAInit (); int main (void) { return IDAInit (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_sundials_ida_IDAInit=yes else $as_nop ac_cv_lib_sundials_ida_IDAInit=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sundials_ida_IDAInit" >&5 printf "%s\n" "$ac_cv_lib_sundials_ida_IDAInit" >&6; } if test "x$ac_cv_lib_sundials_ida_IDAInit" = xyes then : printf "%s\n" "#define HAVE_LIBSUNDIALS_IDA 1" >>confdefs.h LIBS="-lsundials_ida $LIBS" else $as_nop if test "x${with_sundials}" != "xcheck" then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-sundials was given but test for libsundials-dev library failed See \`config.log' for more details" "$LINENO" 5; } fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SUNContext_Create in -lsundials_core" >&5 printf %s "checking for SUNContext_Create in -lsundials_core... " >&6; } if test ${ac_cv_lib_sundials_core_SUNContext_Create+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsundials_core $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char SUNContext_Create (); int main (void) { return SUNContext_Create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_sundials_core_SUNContext_Create=yes else $as_nop ac_cv_lib_sundials_core_SUNContext_Create=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sundials_core_SUNContext_Create" >&5 printf "%s\n" "$ac_cv_lib_sundials_core_SUNContext_Create" >&6; } if test "x$ac_cv_lib_sundials_core_SUNContext_Create" = xyes then : printf "%s\n" "#define HAVE_LIBSUNDIALS_CORE 1" >>confdefs.h LIBS="-lsundials_core $LIBS" else $as_nop if test "x${with_sundials}" != "xcheck" then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-sundials was given but test for libsundials-dev library failed See \`config.log' for more details" "$LINENO" 5; } fi fi ac_fn_c_check_header_compile "$LINENO" "nvector/nvector_serial.h" "ac_cv_header_nvector_nvector_serial_h" "$ac_includes_default" if test "x$ac_cv_header_nvector_nvector_serial_h" = xyes then : else $as_nop if test "x${with_sundials}" != "xcheck" then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-sundials was given but test for libsundials-dev library failed See \`config.log' for more details" "$LINENO" 5; } fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for N_VNew_Serial in -lsundials_nvecserial" >&5 printf %s "checking for N_VNew_Serial in -lsundials_nvecserial... " >&6; } if test ${ac_cv_lib_sundials_nvecserial_N_VNew_Serial+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsundials_nvecserial $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char N_VNew_Serial (); int main (void) { return N_VNew_Serial (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_sundials_nvecserial_N_VNew_Serial=yes else $as_nop ac_cv_lib_sundials_nvecserial_N_VNew_Serial=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sundials_nvecserial_N_VNew_Serial" >&5 printf "%s\n" "$ac_cv_lib_sundials_nvecserial_N_VNew_Serial" >&6; } if test "x$ac_cv_lib_sundials_nvecserial_N_VNew_Serial" = xyes then : printf "%s\n" "#define HAVE_LIBSUNDIALS_NVECSERIAL 1" >>confdefs.h LIBS="-lsundials_nvecserial $LIBS" else $as_nop if test "x${with_sundials}" != "xcheck" then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-sundials was given but test for libsundials-dev library failed See \`config.log' for more details" "$LINENO" 5; } fi fi CC=$CC_OLD fi # check if we have everything if test "x${ac_cv_lib_sundials_ida_IDAInit}" = "xyes" -a \ "x${ac_cv_header_sundials_sundials_types_h}" = "xyes" -a \ "x${ac_cv_lib_sundials_nvecserial_N_VNew_Serial}" = "xyes" -a \ "x${ac_cv_header_nvector_nvector_serial_h}" = "xyes" then : printf "%s\n" "#define HAVE_SUNDIALS /**/" >>confdefs.h have_sundials="yes" fi ###################### # check for PETSc (optional) # Check whether --with-petsc was given. if test ${with_petsc+y} then : withval=$with_petsc; else $as_nop with_petsc=check fi have_petsc="no" if test "x${with_petsc}" != "xno" then : # assume we found it petsc_found=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PETSc dir" >&5 printf %s "checking for PETSc dir... " >&6; } if test -z "${PETSC_DIR}" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking empty, trying /usr/lib/petsc" >&5 printf %s "checking empty, trying /usr/lib/petsc... " >&6; } export PETSC_DIR=/usr/lib/petsc fi if test ! -d "${PETSC_DIR}" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } petsc_found=0 elif test ! -d "${PETSC_DIR}/include" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: broken" >&5 printf "%s\n" "broken" >&6; } petsc_found=0 elif test ! -f "${PETSC_DIR}/include/petscversion.h" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: broken" >&5 printf "%s\n" "broken" >&6; } petsc_found=0 else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${PETSC_DIR}" >&5 printf "%s\n" "${PETSC_DIR}" >&6; } fi if test ${petsc_found} -eq 1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PETSc arch" >&5 printf %s "checking for PETSc arch... " >&6; } if test ! -e "${PETSC_DIR}/${PETSC_ARCH}/lib/petsc/conf/petscvariables" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: broken" >&5 printf "%s\n" "broken" >&6; } as_fn_error $? "cannot find ${PETSC_DIR}/${PETSC_ARCH}/lib/petsc/conf/petscvariables. Do you have a working PETSc installation? See this page for help: https://seamplex.com/feenox/doc/compilation.html" "$LINENO" 5 petsc_found=0 else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${PETSC_ARCH}" >&5 printf "%s\n" "${PETSC_ARCH}" >&6; } fi fi if test ${petsc_found} -eq 1 then : printf "%s\n" "#define HAVE_PETSC 1" >>confdefs.h have_petsc="yes" fi fi ###################### # check for SLEPc (optional) # Check whether --with-slepc was given. if test ${with_slepc+y} then : withval=$with_slepc; else $as_nop with_slepc=check fi have_slepc="no" if test "x${have_petsc}" != "xno" -a "x${with_slepc}" != "xno" then : # assume we found it slepc_found=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SLEPc dir" >&5 printf %s "checking for SLEPc dir... " >&6; } if test -z "${SLEPC_DIR}" then : # first try to see if PETSc was configured with --download-slepc export SLEPC_DIR=${PETSC_DIR}/${PETSC_ARCH}/externalpackages/git.slepc if test ! -d ${SLEPC_DIR} then : # otherwise see if it is in the standard location as installed with apt # this works in Debian, not sure about other (it does not on Fedora) export SLEPC_DIR=/usr/lib/slepc fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking empty, trying ${SLEPC_DIR}" >&5 printf %s "checking empty, trying ${SLEPC_DIR}... " >&6; } fi if test -z "${SLEPC_DIR}" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking empty, trying /usr/lib/slepc" >&5 printf %s "checking empty, trying /usr/lib/slepc... " >&6; } export SLEPC_DIR=/usr/lib/slepc fi if test ! -d "${SLEPC_DIR}" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } slepc_found=0 elif test ! -d "${SLEPC_DIR}/include" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: broken no include" >&5 printf "%s\n" "broken no include" >&6; } slepc_found=0 elif test ! -f "${SLEPC_DIR}/include/slepcversion.h" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: broken no version" >&5 printf "%s\n" "broken no version" >&6; } slepc_found=0 elif test ! -f "${SLEPC_DIR}/${PETSC_ARCH}/lib/slepc/conf/slepcvariables" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: broken no variables" >&5 printf "%s\n" "broken no variables" >&6; } slepc_found=0 else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${SLEPC_DIR}" >&5 printf "%s\n" "${SLEPC_DIR}" >&6; } fi if test ${slepc_found} -eq 1 then : printf "%s\n" "#define HAVE_SLEPC 1" >>confdefs.h have_slepc="yes" fi fi # if slepc is found we need to include its makefile, # otherwise petsc and otherwise nothing if test "x${have_petsc}" = "xyes" -a "x${have_slepc}" = "xno"; then INCLUDE_PETSC_TRUE= INCLUDE_PETSC_FALSE='#' else INCLUDE_PETSC_TRUE='#' INCLUDE_PETSC_FALSE= fi if test "x${have_slepc}" = "xyes"; then INCLUDE_SLEPC_TRUE= INCLUDE_SLEPC_FALSE='#' else INCLUDE_SLEPC_TRUE='#' INCLUDE_SLEPC_FALSE= fi ###################### # see if we have --enable-download-gsl gslver=2.8 gsldist=gsl-${gslver} gslmirror=http://ftpmirror.gnu.org/gsl/${gsldist}.tar.gz # Check whether --enable-download-gsl was given. if test ${enable_download_gsl+y} then : enableval=$enable_download_gsl; download_gsl=yes else $as_nop download_gsl=no fi # if gsl directory does not exist, see if we have to uncompress and/or download if test ! -e ${gsldist} then : if test ! -e ${gsldist}.tar.gz then : if test "x$download_gsl" = "xyes" then : if test "x$(which wget)" != "x" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: downloading ${gslmirror}" >&5 printf "%s\n" "$as_me: downloading ${gslmirror}" >&6;} wget -c ${gslmirror} else $as_nop as_fn_error $? "file ${gsldist}.tar.gz not found and wget not installed" "$LINENO" 5 fi if test ! -e ${gsldist}.tar.gz then : as_fn_error $? "file ${gsldist}.tar.gz could not be downloaded, copy it manually and re-try." "$LINENO" 5 fi fi fi if test -e ${gsldist}.tar.gz then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: uncompressing ${gsldist}.tar.gz" >&5 printf "%s\n" "$as_me: uncompressing ${gsldist}.tar.gz" >&6;} tar xzf ${gsldist}.tar.gz fi fi # if gsl directory exists, see if we have to compile it if test -e ${gsldist} then : if test -e ${gsldist}/.libs/libgsl.a then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using already-compiled GSL library ${gsldist}/.libs/libgsl.a" >&5 printf "%s\n" "$as_me: using already-compiled GSL library ${gsldist}/.libs/libgsl.a" >&6;} else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: configuring ${gsldist}" >&5 printf "%s\n" "$as_me: configuring ${gsldist}" >&6;} cd ${gsldist} ./configure --prefix=${prefix} --host=${host} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiling ${gsldist}" >&5 printf "%s\n" "$as_me: compiling ${gsldist}" >&6;} make cd .. fi DOWNLOADED_GSL_LIBS="../${gsldist}/.libs/libgsl.a ../${gsldist}/cblas/.libs/libgslcblas.a" DOWNLOADED_GSL_INCLUDES="-I ../${gsldist} -I ../../${gsldist}" gsl_version="${gslver} (downloaded and statically linked)" else $as_nop # traditional test for GSL # check for GSL & CBLAS (required) ac_fn_c_check_header_compile "$LINENO" "gsl/gsl_vector.h" "ac_cv_header_gsl_gsl_vector_h" "$ac_includes_default" if test "x$ac_cv_header_gsl_gsl_vector_h" = xyes then : else $as_nop as_fn_error $? "GNU Scientific library headers libgsl-dev not found. Either install them with your package manager or configure with --enable-download-gsl" "$LINENO" 5 fi # TODO: the original idea is that # if we found PETSc, we use whatever BLAS it has, otherwise we use GSL's CBLAS # but this does not work in Fedora since even though the library flexiblas # that is used by PETSc does contain cblas_dgemm, it is not found by the linker #AS_IF([test "x${have_petsc}" != "xyes"], { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cblas_dgemm in -lgslcblas" >&5 printf %s "checking for cblas_dgemm in -lgslcblas... " >&6; } if test ${ac_cv_lib_gslcblas_cblas_dgemm+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lgslcblas $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char cblas_dgemm (); int main (void) { return cblas_dgemm (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_gslcblas_cblas_dgemm=yes else $as_nop ac_cv_lib_gslcblas_cblas_dgemm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gslcblas_cblas_dgemm" >&5 printf "%s\n" "$ac_cv_lib_gslcblas_cblas_dgemm" >&6; } if test "x$ac_cv_lib_gslcblas_cblas_dgemm" = xyes then : printf "%s\n" "#define HAVE_LIBGSLCBLAS 1" >>confdefs.h LIBS="-lgslcblas $LIBS" else $as_nop as_fn_error $? "GNU Scientific library CBLAS libgsl-dev not found" "$LINENO" 5 fi #) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gsl_blas_dgemm in -lgsl" >&5 printf %s "checking for gsl_blas_dgemm in -lgsl... " >&6; } if test ${ac_cv_lib_gsl_gsl_blas_dgemm+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lgsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char gsl_blas_dgemm (); int main (void) { return gsl_blas_dgemm (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_gsl_gsl_blas_dgemm=yes else $as_nop ac_cv_lib_gsl_gsl_blas_dgemm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gsl_gsl_blas_dgemm" >&5 printf "%s\n" "$ac_cv_lib_gsl_gsl_blas_dgemm" >&6; } if test "x$ac_cv_lib_gsl_gsl_blas_dgemm" = xyes then : printf "%s\n" "#define HAVE_LIBGSL 1" >>confdefs.h LIBS="-lgsl $LIBS" else $as_nop as_fn_error $? "GNU Scientific library libgsl-dev not found" "$LINENO" 5 fi gsl_version="from system" fi # give some information about the compiler in the summary compiler_command="${CC}" compiler_show="${compiler_command}" if test "x${have_petsc}" = "xyes" then : if test ! -z "$(which mpicc)" then : compiler_command="mpicc" compiler_show="$(${compiler_command} -show | sed 's/"/\\"/g')" fi fi compiler_version=$(${compiler_command} --version | head -n1 | tr -d \\n]) ###################### # create version.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: gathering versions" >&5 printf "%s\n" "$as_me: gathering versions" >&6;} printf "%s\n" "#define FEENOX_VERSION \"1.1\"" >>confdefs.h # these guys create problems with reprotest # AC_DEFINE([FEENOX_COMPILATION_DATE], ["m4_esyscmd([date +'%a %b %d %H:%M:%S %Y %z' | tr -d \\n])"], [FeenoX compilation date]) # AC_DEFINE([FEENOX_COMPILATION_USERNAME], ["m4_esyscmd([whoami | sed s/\\\\\\\\// | tr -d \\n])"], [FeenoX compilation username]) # AC_DEFINE([FEENOX_COMPILATION_HOSTNAME], ["m4_esyscmd([hostname | tr -d \\n])"], [FeenoX compilation hostname]) printf "%s\n" "#define FEENOX_GIT_VERSION \"v1.1\"" >>confdefs.h printf "%s\n" "#define FEENOX_GIT_BRANCH \"main\"" >>confdefs.h printf "%s\n" "#define FEENOX_GIT_DATE \"Thu Apr 3 19:40:37 2025 -0300\"" >>confdefs.h printf "%s\n" "#define FEENOX_GIT_CLEAN \"0\"" >>confdefs.h printf "%s\n" "#define FEENOX_COMPILER_COMMAND \"$compiler_command\"" >>confdefs.h printf "%s\n" "#define FEENOX_COMPILER_ARCH \"$host_os $host_cpu\"" >>confdefs.h printf "%s\n" "#define FEENOX_COMPILER_VERSION \"$compiler_version\"" >>confdefs.h printf "%s\n" "#define FEENOX_COMPILER_SHOW \"${compiler_show}\"" >>confdefs.h printf "%s\n" "#define FEENOX_COMPILER_CFLAGS \"${CFLAGS}\"" >>confdefs.h printf "%s\n" "#define FEENOX_COMPILER_LDFLAGS \"${LDFLAGS}\"" >>confdefs.h ###################### # create some links to pass make distcheck ac_config_links="$ac_config_links tests/abort.sh:tests/abort.sh" ac_config_links="$ac_config_links tests/airfoil.sh:tests/airfoil.sh" ac_config_links="$ac_config_links tests/algebraic_expr.sh:tests/algebraic_expr.sh" ac_config_links="$ac_config_links tests/annulus-modal.sh:tests/annulus-modal.sh" ac_config_links="$ac_config_links tests/arguments.sh:tests/arguments.sh" ac_config_links="$ac_config_links tests/azmy.sh:tests/azmy.sh" ac_config_links="$ac_config_links tests/barra.sh:tests/barra.sh" ac_config_links="$ac_config_links tests/bc-groups.sh:tests/bc-groups.sh" ac_config_links="$ac_config_links tests/beam-modal.sh:tests/beam-modal.sh" ac_config_links="$ac_config_links tests/beam-ortho.sh:tests/beam-ortho.sh" ac_config_links="$ac_config_links tests/bimetallic-strip.sh:tests/bimetallic-strip.sh" ac_config_links="$ac_config_links tests/builtin.sh:tests/builtin.sh" ac_config_links="$ac_config_links tests/bunny-diffusion.sh:tests/bunny-diffusion.sh" ac_config_links="$ac_config_links tests/bunny-modal.sh:tests/bunny-modal.sh" ac_config_links="$ac_config_links tests/bunny-sn.sh:tests/bunny-sn.sh" ac_config_links="$ac_config_links tests/bunny-thermal-mpi.sh:tests/bunny-thermal-mpi.sh" ac_config_links="$ac_config_links tests/bunny-thermal.sh:tests/bunny-thermal.sh" ac_config_links="$ac_config_links tests/circle.sh:tests/circle.sh" ac_config_links="$ac_config_links tests/clean.sh:tests/clean.sh" ac_config_links="$ac_config_links tests/cog.sh:tests/cog.sh" ac_config_links="$ac_config_links tests/cube-expansion.sh:tests/cube-expansion.sh" ac_config_links="$ac_config_links tests/cylinder-traction-force.sh:tests/cylinder-traction-force.sh" ac_config_links="$ac_config_links tests/encased_rod.sh:tests/encased_rod.sh" ac_config_links="$ac_config_links tests/exp.sh:tests/exp.sh" ac_config_links="$ac_config_links tests/expressions.sh:tests/expressions.sh" ac_config_links="$ac_config_links tests/expressions_constants.sh:tests/expressions_constants.sh" ac_config_links="$ac_config_links tests/file.sh:tests/file.sh" ac_config_links="$ac_config_links tests/fit.sh:tests/fit.sh" ac_config_links="$ac_config_links tests/func_min.sh:tests/func_min.sh" ac_config_links="$ac_config_links tests/function_algebraic.sh:tests/function_algebraic.sh" ac_config_links="$ac_config_links tests/function_data.sh:tests/function_data.sh" ac_config_links="$ac_config_links tests/function_file.sh:tests/function_file.sh" ac_config_links="$ac_config_links tests/function_mesh.sh:tests/function_mesh.sh" ac_config_links="$ac_config_links tests/function_vectors.sh:tests/function_vectors.sh" ac_config_links="$ac_config_links tests/functions.sh:tests/functions.sh" ac_config_links="$ac_config_links tests/hello_mpi.sh:tests/hello_mpi.sh" ac_config_links="$ac_config_links tests/i-beam-euler-bernoulli.sh:tests/i-beam-euler-bernoulli.sh" ac_config_links="$ac_config_links tests/iaea-pwr.sh:tests/iaea-pwr.sh" ac_config_links="$ac_config_links tests/integral.sh:tests/integral.sh" ac_config_links="$ac_config_links tests/iterative.sh:tests/iterative.sh" ac_config_links="$ac_config_links tests/lag.sh:tests/lag.sh" ac_config_links="$ac_config_links tests/laplace2d.sh:tests/laplace2d.sh" ac_config_links="$ac_config_links tests/lebesgue.sh:tests/lebesgue.sh" ac_config_links="$ac_config_links tests/los-alamos.sh:tests/los-alamos.sh" ac_config_links="$ac_config_links tests/map-cube.sh:tests/map-cube.sh" ac_config_links="$ac_config_links tests/materials.sh:tests/materials.sh" ac_config_links="$ac_config_links tests/mesh.sh:tests/mesh.sh" ac_config_links="$ac_config_links tests/moment-of-inertia.sh:tests/moment-of-inertia.sh" ac_config_links="$ac_config_links tests/nafems-le1.sh:tests/nafems-le1.sh" ac_config_links="$ac_config_links tests/nafems-le10.sh:tests/nafems-le10.sh" ac_config_links="$ac_config_links tests/nafems-le11.sh:tests/nafems-le11.sh" ac_config_links="$ac_config_links tests/nafems-t1-4.sh:tests/nafems-t1-4.sh" ac_config_links="$ac_config_links tests/nafems-t2-3.sh:tests/nafems-t2-3.sh" ac_config_links="$ac_config_links tests/neutron-fully-mirrored.sh:tests/neutron-fully-mirrored.sh" ac_config_links="$ac_config_links tests/neutron_diffusion_keff.sh:tests/neutron_diffusion_keff.sh" ac_config_links="$ac_config_links tests/neutron_diffusion_src.sh:tests/neutron_diffusion_src.sh" ac_config_links="$ac_config_links tests/ortho-expansion-alpha-of-space.sh:tests/ortho-expansion-alpha-of-space.sh" ac_config_links="$ac_config_links tests/parallelepiped.sh:tests/parallelepiped.sh" ac_config_links="$ac_config_links tests/petsc_options.sh:tests/petsc_options.sh" ac_config_links="$ac_config_links tests/pipe.sh:tests/pipe.sh" ac_config_links="$ac_config_links tests/point-kinetics.sh:tests/point-kinetics.sh" ac_config_links="$ac_config_links tests/print.sh:tests/print.sh" ac_config_links="$ac_config_links tests/qrng.sh:tests/qrng.sh" ac_config_links="$ac_config_links tests/ray-effect.sh:tests/ray-effect.sh" ac_config_links="$ac_config_links tests/reactions-elastic.sh:tests/reactions-elastic.sh" ac_config_links="$ac_config_links tests/reactions.sh:tests/reactions.sh" ac_config_links="$ac_config_links tests/reed.sh:tests/reed.sh" ac_config_links="$ac_config_links tests/solve.sh:tests/solve.sh" ac_config_links="$ac_config_links tests/spinning-disk.sh:tests/spinning-disk.sh" ac_config_links="$ac_config_links tests/statically_indeterminate_reaction.sh:tests/statically_indeterminate_reaction.sh" ac_config_links="$ac_config_links tests/symmetry.sh:tests/symmetry.sh" ac_config_links="$ac_config_links tests/t21.sh:tests/t21.sh" ac_config_links="$ac_config_links tests/thermal-1d.sh:tests/thermal-1d.sh" ac_config_links="$ac_config_links tests/thermal-2d.sh:tests/thermal-2d.sh" ac_config_links="$ac_config_links tests/thermal-3d.sh:tests/thermal-3d.sh" ac_config_links="$ac_config_links tests/thermal-radiation.sh:tests/thermal-radiation.sh" ac_config_links="$ac_config_links tests/thermal-slab-no-k.sh:tests/thermal-slab-no-k.sh" ac_config_links="$ac_config_links tests/thermal-slab-wrong-bc.sh:tests/thermal-slab-wrong-bc.sh" ac_config_links="$ac_config_links tests/transient-mesh.sh:tests/transient-mesh.sh" ac_config_links="$ac_config_links tests/trig.sh:tests/trig.sh" ac_config_links="$ac_config_links tests/two-cubes-isotropic.sh:tests/two-cubes-isotropic.sh" ac_config_links="$ac_config_links tests/two-cubes-orthotropic.sh:tests/two-cubes-orthotropic.sh" ac_config_links="$ac_config_links tests/uo2-pellet.sh:tests/uo2-pellet.sh" ac_config_links="$ac_config_links tests/vector.sh:tests/vector.sh" ac_config_links="$ac_config_links tests/wilson.sh:tests/wilson.sh" ac_config_links="$ac_config_links tests/xfail-data-variable.sh:tests/xfail-data-variable.sh" ac_config_links="$ac_config_links tests/xfail-few-properties-ortho-poisson.sh:tests/xfail-few-properties-ortho-poisson.sh" ac_config_links="$ac_config_links tests/xfail-few-properties-ortho-shear.sh:tests/xfail-few-properties-ortho-shear.sh" ac_config_links="$ac_config_links tests/xfail-few-properties-ortho-young.sh:tests/xfail-few-properties-ortho-young.sh" ac_config_links="$ac_config_links tests/2dpwr.fee:tests/2dpwr.fee" ac_config_links="$ac_config_links tests/Barra1D_a_Estac.fee:tests/Barra1D_a_Estac.fee" ac_config_links="$ac_config_links tests/Barra1D_b_Trans.fee:tests/Barra1D_b_Trans.fee" ac_config_links="$ac_config_links tests/H2O.fee:tests/H2O.fee" ac_config_links="$ac_config_links tests/Pu-239a.fee:tests/Pu-239a.fee" ac_config_links="$ac_config_links tests/Pu-239b.fee:tests/Pu-239b.fee" ac_config_links="$ac_config_links tests/U-235.fee:tests/U-235.fee" ac_config_links="$ac_config_links tests/U-Al.fee:tests/U-Al.fee" ac_config_links="$ac_config_links tests/URRa.fee:tests/URRa.fee" ac_config_links="$ac_config_links tests/abort.fee:tests/abort.fee" ac_config_links="$ac_config_links tests/airfoil.fee:tests/airfoil.fee" ac_config_links="$ac_config_links tests/algebraic_expr.fee:tests/algebraic_expr.fee" ac_config_links="$ac_config_links tests/alias.fee:tests/alias.fee" ac_config_links="$ac_config_links tests/annulus-modal.fee:tests/annulus-modal.fee" ac_config_links="$ac_config_links tests/arguments_bracketed.fee:tests/arguments_bracketed.fee" ac_config_links="$ac_config_links tests/arguments_quoted.fee:tests/arguments_quoted.fee" ac_config_links="$ac_config_links tests/arguments_self.fee:tests/arguments_self.fee" ac_config_links="$ac_config_links tests/assignment_scalar.fee:tests/assignment_scalar.fee" ac_config_links="$ac_config_links tests/atan2.fee:tests/atan2.fee" ac_config_links="$ac_config_links tests/azmy-structured.fee:tests/azmy-structured.fee" ac_config_links="$ac_config_links tests/bc-groups1.fee:tests/bc-groups1.fee" ac_config_links="$ac_config_links tests/bc-groups2.fee:tests/bc-groups2.fee" ac_config_links="$ac_config_links tests/bc-groups3.fee:tests/bc-groups3.fee" ac_config_links="$ac_config_links tests/bc-groups4.fee:tests/bc-groups4.fee" ac_config_links="$ac_config_links tests/bc-groups6.fee:tests/bc-groups6.fee" ac_config_links="$ac_config_links tests/beam-cantilever-modal-free-free.fee:tests/beam-cantilever-modal-free-free.fee" ac_config_links="$ac_config_links tests/beam-cantilever-modal.fee:tests/beam-cantilever-modal.fee" ac_config_links="$ac_config_links tests/bimetallic-strip.fee:tests/bimetallic-strip.fee" ac_config_links="$ac_config_links tests/bunny-diffusion.fee:tests/bunny-diffusion.fee" ac_config_links="$ac_config_links tests/bunny-modal-fixed.fee:tests/bunny-modal-fixed.fee" ac_config_links="$ac_config_links tests/bunny-modal-free.fee:tests/bunny-modal-free.fee" ac_config_links="$ac_config_links tests/bunny-modal-rest.fee:tests/bunny-modal-rest.fee" ac_config_links="$ac_config_links tests/bunny-modal.fee:tests/bunny-modal.fee" ac_config_links="$ac_config_links tests/bunny-sn-box.fee:tests/bunny-sn-box.fee" ac_config_links="$ac_config_links tests/bunny-sn.fee:tests/bunny-sn.fee" ac_config_links="$ac_config_links tests/bunny-thermal-mpi.fee:tests/bunny-thermal-mpi.fee" ac_config_links="$ac_config_links tests/bunny-thermal.fee:tests/bunny-thermal.fee" ac_config_links="$ac_config_links tests/circle_fit.fee:tests/circle_fit.fee" ac_config_links="$ac_config_links tests/circle_perimeter.fee:tests/circle_perimeter.fee" ac_config_links="$ac_config_links tests/circle_surface.fee:tests/circle_surface.fee" ac_config_links="$ac_config_links tests/cmp-float.fee:tests/cmp-float.fee" ac_config_links="$ac_config_links tests/cmp-zero.fee:tests/cmp-zero.fee" ac_config_links="$ac_config_links tests/convectionNL.fee:tests/convectionNL.fee" ac_config_links="$ac_config_links tests/cube-cog.fee:tests/cube-cog.fee" ac_config_links="$ac_config_links tests/cube-free-expansion-alpha-of-space-orthotropic.fee:tests/cube-free-expansion-alpha-of-space-orthotropic.fee" ac_config_links="$ac_config_links tests/cube-free-expansion-alpha-of-temperature-orthotropic.fee:tests/cube-free-expansion-alpha-of-temperature-orthotropic.fee" ac_config_links="$ac_config_links tests/cube-free-expansion-uniform-isotropic.fee:tests/cube-free-expansion-uniform-isotropic.fee" ac_config_links="$ac_config_links tests/cube-free-expansion-uniform-orthotropic.fee:tests/cube-free-expansion-uniform-orthotropic.fee" ac_config_links="$ac_config_links tests/cube-radial.fee:tests/cube-radial.fee" ac_config_links="$ac_config_links tests/cube-restrained-expansion-uniform-isotropic.fee:tests/cube-restrained-expansion-uniform-isotropic.fee" ac_config_links="$ac_config_links tests/cube-restrained-expansion-uniform-orthotropic.fee:tests/cube-restrained-expansion-uniform-orthotropic.fee" ac_config_links="$ac_config_links tests/cube-tangential.fee:tests/cube-tangential.fee" ac_config_links="$ac_config_links tests/cylinder-force.fee:tests/cylinder-force.fee" ac_config_links="$ac_config_links tests/cylinder-traction.fee:tests/cylinder-traction.fee" ac_config_links="$ac_config_links tests/default_argument_value.fee:tests/default_argument_value.fee" ac_config_links="$ac_config_links tests/diffusion-square-fully-mirrored.fee:tests/diffusion-square-fully-mirrored.fee" ac_config_links="$ac_config_links tests/encased_rod_lr.fee:tests/encased_rod_lr.fee" ac_config_links="$ac_config_links tests/encased_rod_tb.fee:tests/encased_rod_tb.fee" ac_config_links="$ac_config_links tests/exp.fee:tests/exp.fee" ac_config_links="$ac_config_links tests/expr.fee:tests/expr.fee" ac_config_links="$ac_config_links tests/expressions_cumbersome.fee:tests/expressions_cumbersome.fee" ac_config_links="$ac_config_links tests/expressions_functions.fee:tests/expressions_functions.fee" ac_config_links="$ac_config_links tests/expressions_seven.fee:tests/expressions_seven.fee" ac_config_links="$ac_config_links tests/expressions_sum.fee:tests/expressions_sum.fee" ac_config_links="$ac_config_links tests/expressions_variables.fee:tests/expressions_variables.fee" ac_config_links="$ac_config_links tests/fibo_formula.fee:tests/fibo_formula.fee" ac_config_links="$ac_config_links tests/fibo_iterative.fee:tests/fibo_iterative.fee" ac_config_links="$ac_config_links tests/fibo_vector.fee:tests/fibo_vector.fee" ac_config_links="$ac_config_links tests/file-append.fee:tests/file-append.fee" ac_config_links="$ac_config_links tests/file.fee:tests/file.fee" ac_config_links="$ac_config_links tests/find_extrema2d.fee:tests/find_extrema2d.fee" ac_config_links="$ac_config_links tests/fit1d.fee:tests/fit1d.fee" ac_config_links="$ac_config_links tests/fit1d_gradient.fee:tests/fit1d_gradient.fee" ac_config_links="$ac_config_links tests/fit1d_sigma.fee:tests/fit1d_sigma.fee" ac_config_links="$ac_config_links tests/fit2d.fee:tests/fit2d.fee" ac_config_links="$ac_config_links tests/func_min.fee:tests/func_min.fee" ac_config_links="$ac_config_links tests/function_algebraic.fee:tests/function_algebraic.fee" ac_config_links="$ac_config_links tests/function_data1d.fee:tests/function_data1d.fee" ac_config_links="$ac_config_links tests/function_data1dlinear.fee:tests/function_data1dlinear.fee" ac_config_links="$ac_config_links tests/function_data1dlinearchanged.fee:tests/function_data1dlinearchanged.fee" ac_config_links="$ac_config_links tests/function_data2d.fee:tests/function_data2d.fee" ac_config_links="$ac_config_links tests/function_file1d.fee:tests/function_file1d.fee" ac_config_links="$ac_config_links tests/function_file1d_columns.fee:tests/function_file1d_columns.fee" ac_config_links="$ac_config_links tests/function_over_mesh.fee:tests/function_over_mesh.fee" ac_config_links="$ac_config_links tests/function_vectors1d.fee:tests/function_vectors1d.fee" ac_config_links="$ac_config_links tests/geometric_series.fee:tests/geometric_series.fee" ac_config_links="$ac_config_links tests/heater-cylinder-inches.fee:tests/heater-cylinder-inches.fee" ac_config_links="$ac_config_links tests/hello.fee:tests/hello.fee" ac_config_links="$ac_config_links tests/hello_mpi.fee:tests/hello_mpi.fee" ac_config_links="$ac_config_links tests/hoc.fee:tests/hoc.fee" ac_config_links="$ac_config_links tests/i-beam-euler-bernoulli.fee:tests/i-beam-euler-bernoulli.fee" ac_config_links="$ac_config_links tests/if.fee:tests/if.fee" ac_config_links="$ac_config_links tests/implicit.fee:tests/implicit.fee" ac_config_links="$ac_config_links tests/include.fee:tests/include.fee" ac_config_links="$ac_config_links tests/initial_conditions.fee:tests/initial_conditions.fee" ac_config_links="$ac_config_links tests/integrate2d.fee:tests/integrate2d.fee" ac_config_links="$ac_config_links tests/inverse-dae.fee:tests/inverse-dae.fee" ac_config_links="$ac_config_links tests/inverse-integral.fee:tests/inverse-integral.fee" ac_config_links="$ac_config_links tests/iterative.fee:tests/iterative.fee" ac_config_links="$ac_config_links tests/la-p01-PUa-1-0-IN.fee:tests/la-p01-PUa-1-0-IN.fee" ac_config_links="$ac_config_links tests/la-p02-PUa-1-0-SL.fee:tests/la-p02-PUa-1-0-SL.fee" ac_config_links="$ac_config_links tests/la-p03-PUa-H2O_1-1-0-SL.fee:tests/la-p03-PUa-H2O_1-1-0-SL.fee" ac_config_links="$ac_config_links tests/la-p04-PUa-H2O_0.5-1-0-SL.fee:tests/la-p04-PUa-H2O_0.5-1-0-SL.fee" ac_config_links="$ac_config_links tests/la-p05-PUb-1-0-IN.fee:tests/la-p05-PUb-1-0-IN.fee" ac_config_links="$ac_config_links tests/la-p06-PUb-1-0-SL.fee:tests/la-p06-PUb-1-0-SL.fee" ac_config_links="$ac_config_links tests/la-p07-PUb-1-0-CY.fee:tests/la-p07-PUb-1-0-CY.fee" ac_config_links="$ac_config_links tests/la-p08-PUb-1-0-SP.fee:tests/la-p08-PUb-1-0-SP.fee" ac_config_links="$ac_config_links tests/la-p09-PUb-H2O_1-1-0-CY.fee:tests/la-p09-PUb-H2O_1-1-0-CY.fee" ac_config_links="$ac_config_links tests/la-p10-PUb-H2O_10-1-0-CY.fee:tests/la-p10-PUb-H2O_10-1-0-CY.fee" ac_config_links="$ac_config_links tests/la-p47-U-2-0-IN.fee:tests/la-p47-U-2-0-IN.fee" ac_config_links="$ac_config_links tests/la-p48-U-2-0-SL.fee:tests/la-p48-U-2-0-SL.fee" ac_config_links="$ac_config_links tests/la-p49-U-2-0-SP.fee:tests/la-p49-U-2-0-SP.fee" ac_config_links="$ac_config_links tests/la-p50-UAl-2-0-IN.fee:tests/la-p50-UAl-2-0-IN.fee" ac_config_links="$ac_config_links tests/la-p51-UAl-2-0-SL.fee:tests/la-p51-UAl-2-0-SL.fee" ac_config_links="$ac_config_links tests/la-p52-UAl-2-0-SP.fee:tests/la-p52-UAl-2-0-SP.fee" ac_config_links="$ac_config_links tests/la-p70-URRa-2-1-IN.fee:tests/la-p70-URRa-2-1-IN.fee" ac_config_links="$ac_config_links tests/la-p71-URRa-2-1-SL.fee:tests/la-p71-URRa-2-1-SL.fee" ac_config_links="$ac_config_links tests/lag.fee:tests/lag.fee" ac_config_links="$ac_config_links tests/lag_compact.fee:tests/lag_compact.fee" ac_config_links="$ac_config_links tests/laplace-square.fee:tests/laplace-square.fee" ac_config_links="$ac_config_links tests/logphi.fee:tests/logphi.fee" ac_config_links="$ac_config_links tests/long-bar-mechanical.fee:tests/long-bar-mechanical.fee" ac_config_links="$ac_config_links tests/long-bar-thermal.fee:tests/long-bar-thermal.fee" ac_config_links="$ac_config_links tests/map-cube-create.fee:tests/map-cube-create.fee" ac_config_links="$ac_config_links tests/map-cube.fee:tests/map-cube.fee" ac_config_links="$ac_config_links tests/map-function.fee:tests/map-function.fee" ac_config_links="$ac_config_links tests/materials.fee:tests/materials.fee" ac_config_links="$ac_config_links tests/matrix.fee:tests/matrix.fee" ac_config_links="$ac_config_links tests/maze.fee:tests/maze.fee" ac_config_links="$ac_config_links tests/mesh3d.fee:tests/mesh3d.fee" ac_config_links="$ac_config_links tests/modal-beam-cantilever.fee:tests/modal-beam-cantilever.fee" ac_config_links="$ac_config_links tests/modal-solidworks.fee:tests/modal-solidworks.fee" ac_config_links="$ac_config_links tests/modal_rectangular_beam.fee:tests/modal_rectangular_beam.fee" ac_config_links="$ac_config_links tests/moment-of-inertia.fee:tests/moment-of-inertia.fee" ac_config_links="$ac_config_links tests/nafems-le1.fee:tests/nafems-le1.fee" ac_config_links="$ac_config_links tests/nafems-le10.fee:tests/nafems-le10.fee" ac_config_links="$ac_config_links tests/nafems-le11-alpha-of-T.fee:tests/nafems-le11-alpha-of-T.fee" ac_config_links="$ac_config_links tests/nafems-le11-alpha-of-x.fee:tests/nafems-le11-alpha-of-x.fee" ac_config_links="$ac_config_links tests/nafems-le11.fee:tests/nafems-le11.fee" ac_config_links="$ac_config_links tests/nafems-t1.fee:tests/nafems-t1.fee" ac_config_links="$ac_config_links tests/nafems-t2-1d.fee:tests/nafems-t2-1d.fee" ac_config_links="$ac_config_links tests/nafems-t2-3d.fee:tests/nafems-t2-3d.fee" ac_config_links="$ac_config_links tests/nafems-t3-1d.fee:tests/nafems-t3-1d.fee" ac_config_links="$ac_config_links tests/nafems-t3-3d.fee:tests/nafems-t3-3d.fee" ac_config_links="$ac_config_links tests/nafems-t4.fee:tests/nafems-t4.fee" ac_config_links="$ac_config_links tests/open.fee:tests/open.fee" ac_config_links="$ac_config_links tests/orthotropic-beam.fee:tests/orthotropic-beam.fee" ac_config_links="$ac_config_links tests/parallelepiped-from-msh.fee:tests/parallelepiped-from-msh.fee" ac_config_links="$ac_config_links tests/parallelepiped-thermal.fee:tests/parallelepiped-thermal.fee" ac_config_links="$ac_config_links tests/parallelepiped.fee:tests/parallelepiped.fee" ac_config_links="$ac_config_links tests/parameters.fee:tests/parameters.fee" ac_config_links="$ac_config_links tests/peano.fee:tests/peano.fee" ac_config_links="$ac_config_links tests/pellet-linear-guess.fee:tests/pellet-linear-guess.fee" ac_config_links="$ac_config_links tests/pellet-linear-transient-from-initial.fee:tests/pellet-linear-transient-from-initial.fee" ac_config_links="$ac_config_links tests/pellet-linear-transient-from-ss.fee:tests/pellet-linear-transient-from-ss.fee" ac_config_links="$ac_config_links tests/pellet-linear.fee:tests/pellet-linear.fee" ac_config_links="$ac_config_links tests/pellet-nonlinear-guess.fee:tests/pellet-nonlinear-guess.fee" ac_config_links="$ac_config_links tests/pellet-nonlinear-linear-keyword.fee:tests/pellet-nonlinear-linear-keyword.fee" ac_config_links="$ac_config_links tests/pellet-nonlinear-linear-option.fee:tests/pellet-nonlinear-linear-option.fee" ac_config_links="$ac_config_links tests/pellet-nonlinear-q.fee:tests/pellet-nonlinear-q.fee" ac_config_links="$ac_config_links tests/pellet-nonlinear-transient-from-initial.fee:tests/pellet-nonlinear-transient-from-initial.fee" ac_config_links="$ac_config_links tests/pellet-nonlinear-transient-from-ss.fee:tests/pellet-nonlinear-transient-from-ss.fee" ac_config_links="$ac_config_links tests/pellet-nonlinear.fee:tests/pellet-nonlinear.fee" ac_config_links="$ac_config_links tests/pellet-nonuniform-q.fee:tests/pellet-nonuniform-q.fee" ac_config_links="$ac_config_links tests/petsc_options.fee:tests/petsc_options.fee" ac_config_links="$ac_config_links tests/pipe.fee:tests/pipe.fee" ac_config_links="$ac_config_links tests/poisson-square.fee:tests/poisson-square.fee" ac_config_links="$ac_config_links tests/powell.fee:tests/powell.fee" ac_config_links="$ac_config_links tests/print.fee:tests/print.fee" ac_config_links="$ac_config_links tests/print_function.fee:tests/print_function.fee" ac_config_links="$ac_config_links tests/print_vector.fee:tests/print_vector.fee" ac_config_links="$ac_config_links tests/printf.fee:tests/printf.fee" ac_config_links="$ac_config_links tests/qrng.fee:tests/qrng.fee" ac_config_links="$ac_config_links tests/qrng2d.fee:tests/qrng2d.fee" ac_config_links="$ac_config_links tests/qrng2d_rhalton.fee:tests/qrng2d_rhalton.fee" ac_config_links="$ac_config_links tests/qrng2d_sobol.fee:tests/qrng2d_sobol.fee" ac_config_links="$ac_config_links tests/qrng2d_sobol_offset.fee:tests/qrng2d_sobol_offset.fee" ac_config_links="$ac_config_links tests/qrng_others.fee:tests/qrng_others.fee" ac_config_links="$ac_config_links tests/radiation-as-convection-celsius.fee:tests/radiation-as-convection-celsius.fee" ac_config_links="$ac_config_links tests/radiation-as-convection-kelvin.fee:tests/radiation-as-convection-kelvin.fee" ac_config_links="$ac_config_links tests/radiation-as-heatflux-celsius.fee:tests/radiation-as-heatflux-celsius.fee" ac_config_links="$ac_config_links tests/radiation-as-heatflux-kelvin.fee:tests/radiation-as-heatflux-kelvin.fee" ac_config_links="$ac_config_links tests/ray-effect-diffusion.fee:tests/ray-effect-diffusion.fee" ac_config_links="$ac_config_links tests/ray-effect-full.fee:tests/ray-effect-full.fee" ac_config_links="$ac_config_links tests/ray-effect.fee:tests/ray-effect.fee" ac_config_links="$ac_config_links tests/reaction-displ.fee:tests/reaction-displ.fee" ac_config_links="$ac_config_links tests/reaction-elastic-lr.fee:tests/reaction-elastic-lr.fee" ac_config_links="$ac_config_links tests/reaction-elastic-lt.fee:tests/reaction-elastic-lt.fee" ac_config_links="$ac_config_links tests/reaction-force.fee:tests/reaction-force.fee" ac_config_links="$ac_config_links tests/reactivity-from-table.fee:tests/reactivity-from-table.fee" ac_config_links="$ac_config_links tests/read_mesh2d.fee:tests/read_mesh2d.fee" ac_config_links="$ac_config_links tests/read_vtk5.fee:tests/read_vtk5.fee" ac_config_links="$ac_config_links tests/readmsh_writevtk_readbackvtk.fee:tests/readmsh_writevtk_readbackvtk.fee" ac_config_links="$ac_config_links tests/rectangular_plate_with_hole.fee:tests/rectangular_plate_with_hole.fee" ac_config_links="$ac_config_links tests/reed.fee:tests/reed.fee" ac_config_links="$ac_config_links tests/reflected-src.fee:tests/reflected-src.fee" ac_config_links="$ac_config_links tests/reflected.fee:tests/reflected.fee" ac_config_links="$ac_config_links tests/rosenbrock.fee:tests/rosenbrock.fee" ac_config_links="$ac_config_links tests/single-arc.fee:tests/single-arc.fee" ac_config_links="$ac_config_links tests/sn-square-fully-mirrored.fee:tests/sn-square-fully-mirrored.fee" ac_config_links="$ac_config_links tests/sort_vector.fee:tests/sort_vector.fee" ac_config_links="$ac_config_links tests/spinning-disk-parallel-plane.fee:tests/spinning-disk-parallel-plane.fee" ac_config_links="$ac_config_links tests/spinning-disk-parallel-solid-half.fee:tests/spinning-disk-parallel-solid-half.fee" ac_config_links="$ac_config_links tests/sqrt.fee:tests/sqrt.fee" ac_config_links="$ac_config_links tests/statically_indeterminate_reaction.fee:tests/statically_indeterminate_reaction.fee" ac_config_links="$ac_config_links tests/steps.fee:tests/steps.fee" ac_config_links="$ac_config_links tests/t21.fee:tests/t21.fee" ac_config_links="$ac_config_links tests/thermal-slab-convection-as-heat-nosource.fee:tests/thermal-slab-convection-as-heat-nosource.fee" ac_config_links="$ac_config_links tests/thermal-slab-convection-nosource.fee:tests/thermal-slab-convection-nosource.fee" ac_config_links="$ac_config_links tests/thermal-slab-heat-nosource.fee:tests/thermal-slab-heat-nosource.fee" ac_config_links="$ac_config_links tests/thermal-slab-no-k.fee:tests/thermal-slab-no-k.fee" ac_config_links="$ac_config_links tests/thermal-slab-space-nosource.fee:tests/thermal-slab-space-nosource.fee" ac_config_links="$ac_config_links tests/thermal-slab-temperature-nosource.fee:tests/thermal-slab-temperature-nosource.fee" ac_config_links="$ac_config_links tests/thermal-slab-transient-mms-capacity-of-T.fee:tests/thermal-slab-transient-mms-capacity-of-T.fee" ac_config_links="$ac_config_links tests/thermal-slab-transient-mms.fee:tests/thermal-slab-transient-mms.fee" ac_config_links="$ac_config_links tests/thermal-slab-transient.fee:tests/thermal-slab-transient.fee" ac_config_links="$ac_config_links tests/thermal-slab-uniform-nosource.fee:tests/thermal-slab-uniform-nosource.fee" ac_config_links="$ac_config_links tests/thermal-slab-uniform-source-dirichlet-neumann.fee:tests/thermal-slab-uniform-source-dirichlet-neumann.fee" ac_config_links="$ac_config_links tests/thermal-slab-uniform-source.fee:tests/thermal-slab-uniform-source.fee" ac_config_links="$ac_config_links tests/thermal-slab-wrong-bc.fee:tests/thermal-slab-wrong-bc.fee" ac_config_links="$ac_config_links tests/thermal-square.fee:tests/thermal-square.fee" ac_config_links="$ac_config_links tests/thermal-two-squares-material-explicit-space.fee:tests/thermal-two-squares-material-explicit-space.fee" ac_config_links="$ac_config_links tests/thermal-two-squares-material-explicit-temperature.fee:tests/thermal-two-squares-material-explicit-temperature.fee" ac_config_links="$ac_config_links tests/thermal-two-squares-material-explicit-uniform.fee:tests/thermal-two-squares-material-explicit-uniform.fee" ac_config_links="$ac_config_links tests/thermal-two-squares-material-implicit-space.fee:tests/thermal-two-squares-material-implicit-space.fee" ac_config_links="$ac_config_links tests/thermal-two-squares-material-implicit-temperature.fee:tests/thermal-two-squares-material-implicit-temperature.fee" ac_config_links="$ac_config_links tests/thermal-two-squares-material-implicit-uniform.fee:tests/thermal-two-squares-material-implicit-uniform.fee" ac_config_links="$ac_config_links tests/time_path.fee:tests/time_path.fee" ac_config_links="$ac_config_links tests/time_path_petsc.fee:tests/time_path_petsc.fee" ac_config_links="$ac_config_links tests/time_path_raw.fee:tests/time_path_raw.fee" ac_config_links="$ac_config_links tests/time_path_sundials.fee:tests/time_path_sundials.fee" ac_config_links="$ac_config_links tests/transient-from-mesh-different-dt.fee:tests/transient-from-mesh-different-dt.fee" ac_config_links="$ac_config_links tests/transient-from-mesh-same-dt.fee:tests/transient-from-mesh-same-dt.fee" ac_config_links="$ac_config_links tests/transient-to-mesh.fee:tests/transient-to-mesh.fee" ac_config_links="$ac_config_links tests/two-cubes-isotropic-functions.fee:tests/two-cubes-isotropic-functions.fee" ac_config_links="$ac_config_links tests/two-cubes-isotropic-materials.fee:tests/two-cubes-isotropic-materials.fee" ac_config_links="$ac_config_links tests/two-cubes-isotropic-variables.fee:tests/two-cubes-isotropic-variables.fee" ac_config_links="$ac_config_links tests/two-cubes-orthotropic-functions.fee:tests/two-cubes-orthotropic-functions.fee" ac_config_links="$ac_config_links tests/two-cubes-orthotropic-materials.fee:tests/two-cubes-orthotropic-materials.fee" ac_config_links="$ac_config_links tests/two-cubes-orthotropic-variables.fee:tests/two-cubes-orthotropic-variables.fee" ac_config_links="$ac_config_links tests/ud20-1-0-sl-src-vacuum.fee:tests/ud20-1-0-sl-src-vacuum.fee" ac_config_links="$ac_config_links tests/ud20-1-0-sl-src.fee:tests/ud20-1-0-sl-src.fee" ac_config_links="$ac_config_links tests/ud20-1-0-sl-vacuum.fee:tests/ud20-1-0-sl-vacuum.fee" ac_config_links="$ac_config_links tests/ud20-1-0-sl.fee:tests/ud20-1-0-sl.fee" ac_config_links="$ac_config_links tests/var.fee:tests/var.fee" ac_config_links="$ac_config_links tests/vector.fee:tests/vector.fee" ac_config_links="$ac_config_links tests/vector_init.fee:tests/vector_init.fee" ac_config_links="$ac_config_links tests/warp.fee:tests/warp.fee" ac_config_links="$ac_config_links tests/wilson-1d.fee:tests/wilson-1d.fee" ac_config_links="$ac_config_links tests/wilson-2d.fee:tests/wilson-2d.fee" ac_config_links="$ac_config_links tests/write_mesh2d.fee:tests/write_mesh2d.fee" ac_config_links="$ac_config_links tests/xfail-data-variable.fee:tests/xfail-data-variable.fee" ac_config_links="$ac_config_links tests/xfail-few-properties-ortho-good.fee:tests/xfail-few-properties-ortho-good.fee" ac_config_links="$ac_config_links tests/xfail-few-properties-ortho-poisson.fee:tests/xfail-few-properties-ortho-poisson.fee" ac_config_links="$ac_config_links tests/xfail-few-properties-ortho-shear.fee:tests/xfail-few-properties-ortho-shear.fee" ac_config_links="$ac_config_links tests/xfail-few-properties-ortho-young.fee:tests/xfail-few-properties-ortho-young.fee" ac_config_links="$ac_config_links tests/2dpwr-eighth.geo:tests/2dpwr-eighth.geo" ac_config_links="$ac_config_links tests/2dpwr-quarter.geo:tests/2dpwr-quarter.geo" ac_config_links="$ac_config_links tests/Barra1D.geo:tests/Barra1D.geo" ac_config_links="$ac_config_links tests/PF.geo:tests/PF.geo" ac_config_links="$ac_config_links tests/annulus.geo:tests/annulus.geo" ac_config_links="$ac_config_links tests/azmy-structured.geo:tests/azmy-structured.geo" ac_config_links="$ac_config_links tests/beam-cantilever-hex20.geo:tests/beam-cantilever-hex20.geo" ac_config_links="$ac_config_links tests/beam-cantilever-hex27.geo:tests/beam-cantilever-hex27.geo" ac_config_links="$ac_config_links tests/beam-cantilever-hex8.geo:tests/beam-cantilever-hex8.geo" ac_config_links="$ac_config_links tests/beam-cantilever-tet10.geo:tests/beam-cantilever-tet10.geo" ac_config_links="$ac_config_links tests/beam-cantilever-tet4.geo:tests/beam-cantilever-tet4.geo" ac_config_links="$ac_config_links tests/beam-cantilever.geo:tests/beam-cantilever.geo" ac_config_links="$ac_config_links tests/bimetallic-strip.geo:tests/bimetallic-strip.geo" ac_config_links="$ac_config_links tests/bunny-box.geo:tests/bunny-box.geo" ac_config_links="$ac_config_links tests/bunny.geo:tests/bunny.geo" ac_config_links="$ac_config_links tests/circle.geo:tests/circle.geo" ac_config_links="$ac_config_links tests/cube-hex.geo:tests/cube-hex.geo" ac_config_links="$ac_config_links tests/cube.geo:tests/cube.geo" ac_config_links="$ac_config_links tests/cylinder.geo:tests/cylinder.geo" ac_config_links="$ac_config_links tests/encased_rod.geo:tests/encased_rod.geo" ac_config_links="$ac_config_links tests/heater-cylinder-inches.geo:tests/heater-cylinder-inches.geo" ac_config_links="$ac_config_links tests/i-beam-hex.geo:tests/i-beam-hex.geo" ac_config_links="$ac_config_links tests/i-beam-tet.geo:tests/i-beam-tet.geo" ac_config_links="$ac_config_links tests/la-IN.geo:tests/la-IN.geo" ac_config_links="$ac_config_links tests/la-p02-PUa-1-0-SL.geo:tests/la-p02-PUa-1-0-SL.geo" ac_config_links="$ac_config_links tests/la-p03-PUa-H2O_1-1-0-SL.geo:tests/la-p03-PUa-H2O_1-1-0-SL.geo" ac_config_links="$ac_config_links tests/la-p04-PUa-H2O_0.5-1-0-SL.geo:tests/la-p04-PUa-H2O_0.5-1-0-SL.geo" ac_config_links="$ac_config_links tests/la-p06-PUb-1-0-SL.geo:tests/la-p06-PUb-1-0-SL.geo" ac_config_links="$ac_config_links tests/la-p07-PUb-1-0-CY.geo:tests/la-p07-PUb-1-0-CY.geo" ac_config_links="$ac_config_links tests/la-p08-PUb-1-0-SP.geo:tests/la-p08-PUb-1-0-SP.geo" ac_config_links="$ac_config_links tests/la-p09-PUb-H2O_1-1-0-CY.geo:tests/la-p09-PUb-H2O_1-1-0-CY.geo" ac_config_links="$ac_config_links tests/la-p10-PUb-H2O_10-1-0-CY.geo:tests/la-p10-PUb-H2O_10-1-0-CY.geo" ac_config_links="$ac_config_links tests/la-p48-U-2-0-SL.geo:tests/la-p48-U-2-0-SL.geo" ac_config_links="$ac_config_links tests/la-p49-U-2-0-SP.geo:tests/la-p49-U-2-0-SP.geo" ac_config_links="$ac_config_links tests/la-p51-UAl-2-0-SL.geo:tests/la-p51-UAl-2-0-SL.geo" ac_config_links="$ac_config_links tests/la-p52-UAl-2-0-SP.geo:tests/la-p52-UAl-2-0-SP.geo" ac_config_links="$ac_config_links tests/la-p71-URRa-2-1-SL.geo:tests/la-p71-URRa-2-1-SL.geo" ac_config_links="$ac_config_links tests/long-bar-struct.geo:tests/long-bar-struct.geo" ac_config_links="$ac_config_links tests/long-bar-unstruct.geo:tests/long-bar-unstruct.geo" ac_config_links="$ac_config_links tests/map-cube.geo:tests/map-cube.geo" ac_config_links="$ac_config_links tests/maze.geo:tests/maze.geo" ac_config_links="$ac_config_links tests/nafems-le1.geo:tests/nafems-le1.geo" ac_config_links="$ac_config_links tests/nafems-le10.geo:tests/nafems-le10.geo" ac_config_links="$ac_config_links tests/nafems-le11-hex20.geo:tests/nafems-le11-hex20.geo" ac_config_links="$ac_config_links tests/nafems-le11-hex27.geo:tests/nafems-le11-hex27.geo" ac_config_links="$ac_config_links tests/nafems-le11-hex8.geo:tests/nafems-le11-hex8.geo" ac_config_links="$ac_config_links tests/nafems-le11-tet10.geo:tests/nafems-le11-tet10.geo" ac_config_links="$ac_config_links tests/nafems-le11-tet4.geo:tests/nafems-le11-tet4.geo" ac_config_links="$ac_config_links tests/nafems-le11.geo:tests/nafems-le11.geo" ac_config_links="$ac_config_links tests/nafems-t1-unstruct.geo:tests/nafems-t1-unstruct.geo" ac_config_links="$ac_config_links tests/nafems-t1.geo:tests/nafems-t1.geo" ac_config_links="$ac_config_links tests/nafems-t4.geo:tests/nafems-t4.geo" ac_config_links="$ac_config_links tests/parallelepiped.geo:tests/parallelepiped.geo" ac_config_links="$ac_config_links tests/pellet.geo:tests/pellet.geo" ac_config_links="$ac_config_links tests/pipe-sch20-2-2.geo:tests/pipe-sch20-2-2.geo" ac_config_links="$ac_config_links tests/pipe-sch27-2-2.geo:tests/pipe-sch27-2-2.geo" ac_config_links="$ac_config_links tests/pipe-sct10-2-2.geo:tests/pipe-sct10-2-2.geo" ac_config_links="$ac_config_links tests/pipe-ssh20-2-2.geo:tests/pipe-ssh20-2-2.geo" ac_config_links="$ac_config_links tests/pipe-ssh27-2-2.geo:tests/pipe-ssh27-2-2.geo" ac_config_links="$ac_config_links tests/pipe-sst10-2-2.geo:tests/pipe-sst10-2-2.geo" ac_config_links="$ac_config_links tests/pipe-uct10-2-2.geo:tests/pipe-uct10-2-2.geo" ac_config_links="$ac_config_links tests/pipe-ust10-2-2.geo:tests/pipe-ust10-2-2.geo" ac_config_links="$ac_config_links tests/ray-effect-eighth.geo:tests/ray-effect-eighth.geo" ac_config_links="$ac_config_links tests/ray-effect-full.geo:tests/ray-effect-full.geo" ac_config_links="$ac_config_links tests/ray-effect-half.geo:tests/ray-effect-half.geo" ac_config_links="$ac_config_links tests/ray-effect-quarter.geo:tests/ray-effect-quarter.geo" ac_config_links="$ac_config_links tests/rectangular_beam.geo:tests/rectangular_beam.geo" ac_config_links="$ac_config_links tests/rectangular_plate_with_hole.geo:tests/rectangular_plate_with_hole.geo" ac_config_links="$ac_config_links tests/reed.geo:tests/reed.geo" ac_config_links="$ac_config_links tests/reflected.geo:tests/reflected.geo" ac_config_links="$ac_config_links tests/single-arc.geo:tests/single-arc.geo" ac_config_links="$ac_config_links tests/slab-1d-0.1m.geo:tests/slab-1d-0.1m.geo" ac_config_links="$ac_config_links tests/slab-3d-0.1m.geo:tests/slab-3d-0.1m.geo" ac_config_links="$ac_config_links tests/slab.geo:tests/slab.geo" ac_config_links="$ac_config_links tests/slab2.geo:tests/slab2.geo" ac_config_links="$ac_config_links tests/spinning-disk-dimensions.geo:tests/spinning-disk-dimensions.geo" ac_config_links="$ac_config_links tests/spinning-disk-holed-solid-full_unstruct.geo:tests/spinning-disk-holed-solid-full_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-holed-solid-halfquarter_unstruct.geo:tests/spinning-disk-holed-solid-halfquarter_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-axisymmetric-full_unstruct.geo:tests/spinning-disk-parallel-axisymmetric-full_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-axisymmetric-half_unstruct.geo:tests/spinning-disk-parallel-axisymmetric-half_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-plane-eighth_unstruct.geo:tests/spinning-disk-parallel-plane-eighth_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-plane-full_unstruct.geo:tests/spinning-disk-parallel-plane-full_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-plane-quarter_unstruct.geo:tests/spinning-disk-parallel-plane-quarter_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-plane-sixteenth_unstruct.geo:tests/spinning-disk-parallel-plane-sixteenth_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-solid-full_unstruct.geo:tests/spinning-disk-parallel-solid-full_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-solid-half_unstruct.geo:tests/spinning-disk-parallel-solid-half_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-solid-halfeighth_unstruct.geo:tests/spinning-disk-parallel-solid-halfeighth_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-solid-halfquarter_unstruct.geo:tests/spinning-disk-parallel-solid-halfquarter_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.geo:tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.geo" ac_config_links="$ac_config_links tests/spinning-disk-unstruct.geo:tests/spinning-disk-unstruct.geo" ac_config_links="$ac_config_links tests/square-centered.geo:tests/square-centered.geo" ac_config_links="$ac_config_links tests/square-struct.geo:tests/square-struct.geo" ac_config_links="$ac_config_links tests/square.geo:tests/square.geo" ac_config_links="$ac_config_links tests/statically_indeterminate_reaction.geo:tests/statically_indeterminate_reaction.geo" ac_config_links="$ac_config_links tests/t21.geo:tests/t21.geo" ac_config_links="$ac_config_links tests/two-cubes.geo:tests/two-cubes.geo" ac_config_links="$ac_config_links tests/two-squares-quad.geo:tests/two-squares-quad.geo" ac_config_links="$ac_config_links tests/two-squares.geo:tests/two-squares.geo" ac_config_links="$ac_config_links tests/ud20-1-0-sl.geo:tests/ud20-1-0-sl.geo" ac_config_links="$ac_config_links tests/wilson-1d.geo:tests/wilson-1d.geo" ac_config_links="$ac_config_links tests/wilson-2d.geo:tests/wilson-2d.geo" ac_config_links="$ac_config_links tests/Barra1D.msh:tests/Barra1D.msh" ac_config_links="$ac_config_links tests/airfoil.msh:tests/airfoil.msh" ac_config_links="$ac_config_links tests/beam-cantilever-hex20.msh:tests/beam-cantilever-hex20.msh" ac_config_links="$ac_config_links tests/beam-cantilever-hex27.msh:tests/beam-cantilever-hex27.msh" ac_config_links="$ac_config_links tests/beam-cantilever-hex8.msh:tests/beam-cantilever-hex8.msh" ac_config_links="$ac_config_links tests/beam-cantilever-tet10.msh:tests/beam-cantilever-tet10.msh" ac_config_links="$ac_config_links tests/beam-cantilever-tet4.msh:tests/beam-cantilever-tet4.msh" ac_config_links="$ac_config_links tests/convectionbc.msh:tests/convectionbc.msh" ac_config_links="$ac_config_links tests/convectionbc2.msh:tests/convectionbc2.msh" ac_config_links="$ac_config_links tests/cube-hex.msh:tests/cube-hex.msh" ac_config_links="$ac_config_links tests/cylinder.msh:tests/cylinder.msh" ac_config_links="$ac_config_links tests/mesh2d-bin.msh:tests/mesh2d-bin.msh" ac_config_links="$ac_config_links tests/nafems-le1-1.msh:tests/nafems-le1-1.msh" ac_config_links="$ac_config_links tests/nafems-le1-2.msh:tests/nafems-le1-2.msh" ac_config_links="$ac_config_links tests/nafems-le1-3.msh:tests/nafems-le1-3.msh" ac_config_links="$ac_config_links tests/nafems-le1-4.msh:tests/nafems-le1-4.msh" ac_config_links="$ac_config_links tests/nafems-le1-5.msh:tests/nafems-le1-5.msh" ac_config_links="$ac_config_links tests/nafems-le1-6.msh:tests/nafems-le1-6.msh" ac_config_links="$ac_config_links tests/nafems-le1-7.msh:tests/nafems-le1-7.msh" ac_config_links="$ac_config_links tests/nafems-le1-8.msh:tests/nafems-le1-8.msh" ac_config_links="$ac_config_links tests/ray-effect-eighth.msh:tests/ray-effect-eighth.msh" ac_config_links="$ac_config_links tests/ray-effect-full.msh:tests/ray-effect-full.msh" ac_config_links="$ac_config_links tests/ray-effect-half.msh:tests/ray-effect-half.msh" ac_config_links="$ac_config_links tests/ray-effect-quarter.msh:tests/ray-effect-quarter.msh" ac_config_links="$ac_config_links tests/reaction.msh:tests/reaction.msh" ac_config_links="$ac_config_links tests/reflected.msh:tests/reflected.msh" ac_config_links="$ac_config_links tests/single-arc1.msh:tests/single-arc1.msh" ac_config_links="$ac_config_links tests/single-arc2.msh:tests/single-arc2.msh" ac_config_links="$ac_config_links tests/slab-1d-0.1m.msh:tests/slab-1d-0.1m.msh" ac_config_links="$ac_config_links tests/slab-3d-0.1m.msh:tests/slab-3d-0.1m.msh" ac_config_links="$ac_config_links tests/slab.msh:tests/slab.msh" ac_config_links="$ac_config_links tests/slab2.msh:tests/slab2.msh" ac_config_links="$ac_config_links tests/square.msh:tests/square.msh" ac_config_links="$ac_config_links tests/square22.msh:tests/square22.msh" ac_config_links="$ac_config_links tests/square40.msh:tests/square40.msh" ac_config_links="$ac_config_links tests/square41.msh:tests/square41.msh" ac_config_links="$ac_config_links tests/square41bin.msh:tests/square41bin.msh" ac_config_links="$ac_config_links tests/t21.msh:tests/t21.msh" ac_config_links="$ac_config_links tests/tet1.msh:tests/tet1.msh" ac_config_links="$ac_config_links tests/two-squares-bin-gmsh.msh:tests/two-squares-bin-gmsh.msh" ac_config_links="$ac_config_links tests/two-squares-bin-meshio.msh:tests/two-squares-bin-meshio.msh" ac_config_links="$ac_config_links tests/two-squares.msh:tests/two-squares.msh" ac_config_links="$ac_config_links tests/ud20-1-0-sl.msh:tests/ud20-1-0-sl.msh" ac_config_links="$ac_config_links tests/Tini.dat:tests/Tini.dat" ac_config_links="$ac_config_links tests/asme-expansion-table.dat:tests/asme-expansion-table.dat" ac_config_links="$ac_config_links tests/data1d.dat:tests/data1d.dat" ac_config_links="$ac_config_links tests/data1d_columns.dat:tests/data1d_columns.dat" ac_config_links="$ac_config_links tests/data2d.dat:tests/data2d.dat" ac_config_links="$ac_config_links tests/flux.dat:tests/flux.dat" ac_config_links="$ac_config_links tests/algebraic_expr.ref:tests/algebraic_expr.ref" ac_config_links="$ac_config_links tests/annulus-modal.ref:tests/annulus-modal.ref" ac_config_links="$ac_config_links tests/bc-groups1.ref:tests/bc-groups1.ref" ac_config_links="$ac_config_links tests/bc-groups2.ref:tests/bc-groups2.ref" ac_config_links="$ac_config_links tests/bc-groups3.ref:tests/bc-groups3.ref" ac_config_links="$ac_config_links tests/bc-groups4.ref:tests/bc-groups4.ref" ac_config_links="$ac_config_links tests/expressions_cumbersome.ref:tests/expressions_cumbersome.ref" ac_config_links="$ac_config_links tests/expressions_variables.ref:tests/expressions_variables.ref" ac_config_links="$ac_config_links tests/fibo_formula.ref:tests/fibo_formula.ref" ac_config_links="$ac_config_links tests/fibo_iterative.ref:tests/fibo_iterative.ref" ac_config_links="$ac_config_links tests/fibo_vector.ref:tests/fibo_vector.ref" ac_config_links="$ac_config_links tests/find_extrema2d.ref:tests/find_extrema2d.ref" ac_config_links="$ac_config_links tests/fit1d_gradient.ref:tests/fit1d_gradient.ref" ac_config_links="$ac_config_links tests/function_vectors1d.ref:tests/function_vectors1d.ref" ac_config_links="$ac_config_links tests/iterative.ref:tests/iterative.ref" ac_config_links="$ac_config_links tests/nafems-le10.ref:tests/nafems-le10.ref" ac_config_links="$ac_config_links tests/print_function.ref:tests/print_function.ref" ac_config_links="$ac_config_links tests/print_vector.ref:tests/print_vector.ref" ac_config_links="$ac_config_links tests/printf.ref:tests/printf.ref" ac_config_links="$ac_config_links tests/qrng.ref:tests/qrng.ref" ac_config_links="$ac_config_links tests/qrng2d_rhalton.ref:tests/qrng2d_rhalton.ref" ac_config_links="$ac_config_links tests/qrng2d_sobol.ref:tests/qrng2d_sobol.ref" ac_config_links="$ac_config_links tests/qrng_others.ref:tests/qrng_others.ref" ac_config_links="$ac_config_links tests/reaction-displ.ref:tests/reaction-displ.ref" ac_config_links="$ac_config_links tests/reaction-elastic-lr.ref:tests/reaction-elastic-lr.ref" ac_config_links="$ac_config_links tests/reaction-elastic-lt.ref:tests/reaction-elastic-lt.ref" ac_config_links="$ac_config_links tests/reaction-force.ref:tests/reaction-force.ref" ac_config_links="$ac_config_links tests/steps.ref:tests/steps.ref" ac_config_links="$ac_config_links tests/thermal-slab-uniform-source-octave.ref:tests/thermal-slab-uniform-source-octave.ref" ac_config_links="$ac_config_links tests/transient-from-mesh-different-dt.ref:tests/transient-from-mesh-different-dt.ref" ac_config_links="$ac_config_links tests/transient-from-mesh-same-dt.ref:tests/transient-from-mesh-same-dt.ref" ac_config_links="$ac_config_links tests/transient-to-mesh.ref:tests/transient-to-mesh.ref" ac_config_links="$ac_config_links tests/two-is-2.ref:tests/two-is-2.ref" ac_config_links="$ac_config_links tests/two-is-3.ref:tests/two-is-3.ref" ac_config_links="$ac_config_links tests/mesh2d-v5.vtk:tests/mesh2d-v5.vtk" ac_config_links="$ac_config_links tests/reaction-force-v5.vtk:tests/reaction-force-v5.vtk" ac_config_links="$ac_config_links tests/square.vtk:tests/square.vtk" ac_config_links="$ac_config_links tests/reed-ref.csv:tests/reed-ref.csv" ac_config_files="$ac_config_files Makefile src/Makefile" # AC_CONFIG_FILES([src/benchmark/Makefile]) # AC_CONFIG_FILES([doc/Makefile]) # AS_IF([test "x${with_fee2ccx}" = "xyes"] , [ # AC_CONFIG_FILES([utils/fee2ccx/Makefile]) # ]) printf "%s\n" "## ----------------------- ## ## Summary of dependencies ## ## ----------------------- ##" printf "%s\n" " GNU Scientific Library ${gsl_version}" # AS_ECHO( [" Readline ${have_readline}"]) printf "%s\n" " SUNDIALS ${have_sundials}" printf %s " PETSc ${have_petsc}" if test "x${have_petsc}" = "xyes" then : printf "%s\n" " ${PETSC_DIR} ${PETSC_ARCH}" else $as_nop printf "%s\n" fi printf %s " SLEPc ${have_slepc}" if test "x${have_slepc}" = "xyes" then : printf "%s\n" " ${SLEPC_DIR}" else $as_nop printf "%s\n" fi # AS_ECHO( [" Configure fee2ccx ${with_fee2ccx}"]) printf "%s\n" " Compiler ${compiler_show}" printf "%s\n" " Compiler flags ${CFLAGS}" # AS_ECHO( [" Linker flags ${LDFLAGS}"]) cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${INCLUDE_PETSC_TRUE}" && test -z "${INCLUDE_PETSC_FALSE}"; then as_fn_error $? "conditional \"INCLUDE_PETSC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${INCLUDE_SLEPC_TRUE}" && test -z "${INCLUDE_SLEPC_FALSE}"; then as_fn_error $? "conditional \"INCLUDE_SLEPC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by feenox $as_me 1.1, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_links="$ac_config_links" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration links: $config_links Configuration commands: $config_commands Report bugs to ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ feenox config.status 1.1 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "tests/abort.sh") CONFIG_LINKS="$CONFIG_LINKS tests/abort.sh:tests/abort.sh" ;; "tests/airfoil.sh") CONFIG_LINKS="$CONFIG_LINKS tests/airfoil.sh:tests/airfoil.sh" ;; "tests/algebraic_expr.sh") CONFIG_LINKS="$CONFIG_LINKS tests/algebraic_expr.sh:tests/algebraic_expr.sh" ;; "tests/annulus-modal.sh") CONFIG_LINKS="$CONFIG_LINKS tests/annulus-modal.sh:tests/annulus-modal.sh" ;; "tests/arguments.sh") CONFIG_LINKS="$CONFIG_LINKS tests/arguments.sh:tests/arguments.sh" ;; "tests/azmy.sh") CONFIG_LINKS="$CONFIG_LINKS tests/azmy.sh:tests/azmy.sh" ;; "tests/barra.sh") CONFIG_LINKS="$CONFIG_LINKS tests/barra.sh:tests/barra.sh" ;; "tests/bc-groups.sh") CONFIG_LINKS="$CONFIG_LINKS tests/bc-groups.sh:tests/bc-groups.sh" ;; "tests/beam-modal.sh") CONFIG_LINKS="$CONFIG_LINKS tests/beam-modal.sh:tests/beam-modal.sh" ;; "tests/beam-ortho.sh") CONFIG_LINKS="$CONFIG_LINKS tests/beam-ortho.sh:tests/beam-ortho.sh" ;; "tests/bimetallic-strip.sh") CONFIG_LINKS="$CONFIG_LINKS tests/bimetallic-strip.sh:tests/bimetallic-strip.sh" ;; "tests/builtin.sh") CONFIG_LINKS="$CONFIG_LINKS tests/builtin.sh:tests/builtin.sh" ;; "tests/bunny-diffusion.sh") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-diffusion.sh:tests/bunny-diffusion.sh" ;; "tests/bunny-modal.sh") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-modal.sh:tests/bunny-modal.sh" ;; "tests/bunny-sn.sh") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-sn.sh:tests/bunny-sn.sh" ;; "tests/bunny-thermal-mpi.sh") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-thermal-mpi.sh:tests/bunny-thermal-mpi.sh" ;; "tests/bunny-thermal.sh") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-thermal.sh:tests/bunny-thermal.sh" ;; "tests/circle.sh") CONFIG_LINKS="$CONFIG_LINKS tests/circle.sh:tests/circle.sh" ;; "tests/clean.sh") CONFIG_LINKS="$CONFIG_LINKS tests/clean.sh:tests/clean.sh" ;; "tests/cog.sh") CONFIG_LINKS="$CONFIG_LINKS tests/cog.sh:tests/cog.sh" ;; "tests/cube-expansion.sh") CONFIG_LINKS="$CONFIG_LINKS tests/cube-expansion.sh:tests/cube-expansion.sh" ;; "tests/cylinder-traction-force.sh") CONFIG_LINKS="$CONFIG_LINKS tests/cylinder-traction-force.sh:tests/cylinder-traction-force.sh" ;; "tests/encased_rod.sh") CONFIG_LINKS="$CONFIG_LINKS tests/encased_rod.sh:tests/encased_rod.sh" ;; "tests/exp.sh") CONFIG_LINKS="$CONFIG_LINKS tests/exp.sh:tests/exp.sh" ;; "tests/expressions.sh") CONFIG_LINKS="$CONFIG_LINKS tests/expressions.sh:tests/expressions.sh" ;; "tests/expressions_constants.sh") CONFIG_LINKS="$CONFIG_LINKS tests/expressions_constants.sh:tests/expressions_constants.sh" ;; "tests/file.sh") CONFIG_LINKS="$CONFIG_LINKS tests/file.sh:tests/file.sh" ;; "tests/fit.sh") CONFIG_LINKS="$CONFIG_LINKS tests/fit.sh:tests/fit.sh" ;; "tests/func_min.sh") CONFIG_LINKS="$CONFIG_LINKS tests/func_min.sh:tests/func_min.sh" ;; "tests/function_algebraic.sh") CONFIG_LINKS="$CONFIG_LINKS tests/function_algebraic.sh:tests/function_algebraic.sh" ;; "tests/function_data.sh") CONFIG_LINKS="$CONFIG_LINKS tests/function_data.sh:tests/function_data.sh" ;; "tests/function_file.sh") CONFIG_LINKS="$CONFIG_LINKS tests/function_file.sh:tests/function_file.sh" ;; "tests/function_mesh.sh") CONFIG_LINKS="$CONFIG_LINKS tests/function_mesh.sh:tests/function_mesh.sh" ;; "tests/function_vectors.sh") CONFIG_LINKS="$CONFIG_LINKS tests/function_vectors.sh:tests/function_vectors.sh" ;; "tests/functions.sh") CONFIG_LINKS="$CONFIG_LINKS tests/functions.sh:tests/functions.sh" ;; "tests/hello_mpi.sh") CONFIG_LINKS="$CONFIG_LINKS tests/hello_mpi.sh:tests/hello_mpi.sh" ;; "tests/i-beam-euler-bernoulli.sh") CONFIG_LINKS="$CONFIG_LINKS tests/i-beam-euler-bernoulli.sh:tests/i-beam-euler-bernoulli.sh" ;; "tests/iaea-pwr.sh") CONFIG_LINKS="$CONFIG_LINKS tests/iaea-pwr.sh:tests/iaea-pwr.sh" ;; "tests/integral.sh") CONFIG_LINKS="$CONFIG_LINKS tests/integral.sh:tests/integral.sh" ;; "tests/iterative.sh") CONFIG_LINKS="$CONFIG_LINKS tests/iterative.sh:tests/iterative.sh" ;; "tests/lag.sh") CONFIG_LINKS="$CONFIG_LINKS tests/lag.sh:tests/lag.sh" ;; "tests/laplace2d.sh") CONFIG_LINKS="$CONFIG_LINKS tests/laplace2d.sh:tests/laplace2d.sh" ;; "tests/lebesgue.sh") CONFIG_LINKS="$CONFIG_LINKS tests/lebesgue.sh:tests/lebesgue.sh" ;; "tests/los-alamos.sh") CONFIG_LINKS="$CONFIG_LINKS tests/los-alamos.sh:tests/los-alamos.sh" ;; "tests/map-cube.sh") CONFIG_LINKS="$CONFIG_LINKS tests/map-cube.sh:tests/map-cube.sh" ;; "tests/materials.sh") CONFIG_LINKS="$CONFIG_LINKS tests/materials.sh:tests/materials.sh" ;; "tests/mesh.sh") CONFIG_LINKS="$CONFIG_LINKS tests/mesh.sh:tests/mesh.sh" ;; "tests/moment-of-inertia.sh") CONFIG_LINKS="$CONFIG_LINKS tests/moment-of-inertia.sh:tests/moment-of-inertia.sh" ;; "tests/nafems-le1.sh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1.sh:tests/nafems-le1.sh" ;; "tests/nafems-le10.sh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le10.sh:tests/nafems-le10.sh" ;; "tests/nafems-le11.sh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le11.sh:tests/nafems-le11.sh" ;; "tests/nafems-t1-4.sh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t1-4.sh:tests/nafems-t1-4.sh" ;; "tests/nafems-t2-3.sh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t2-3.sh:tests/nafems-t2-3.sh" ;; "tests/neutron-fully-mirrored.sh") CONFIG_LINKS="$CONFIG_LINKS tests/neutron-fully-mirrored.sh:tests/neutron-fully-mirrored.sh" ;; "tests/neutron_diffusion_keff.sh") CONFIG_LINKS="$CONFIG_LINKS tests/neutron_diffusion_keff.sh:tests/neutron_diffusion_keff.sh" ;; "tests/neutron_diffusion_src.sh") CONFIG_LINKS="$CONFIG_LINKS tests/neutron_diffusion_src.sh:tests/neutron_diffusion_src.sh" ;; "tests/ortho-expansion-alpha-of-space.sh") CONFIG_LINKS="$CONFIG_LINKS tests/ortho-expansion-alpha-of-space.sh:tests/ortho-expansion-alpha-of-space.sh" ;; "tests/parallelepiped.sh") CONFIG_LINKS="$CONFIG_LINKS tests/parallelepiped.sh:tests/parallelepiped.sh" ;; "tests/petsc_options.sh") CONFIG_LINKS="$CONFIG_LINKS tests/petsc_options.sh:tests/petsc_options.sh" ;; "tests/pipe.sh") CONFIG_LINKS="$CONFIG_LINKS tests/pipe.sh:tests/pipe.sh" ;; "tests/point-kinetics.sh") CONFIG_LINKS="$CONFIG_LINKS tests/point-kinetics.sh:tests/point-kinetics.sh" ;; "tests/print.sh") CONFIG_LINKS="$CONFIG_LINKS tests/print.sh:tests/print.sh" ;; "tests/qrng.sh") CONFIG_LINKS="$CONFIG_LINKS tests/qrng.sh:tests/qrng.sh" ;; "tests/ray-effect.sh") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect.sh:tests/ray-effect.sh" ;; "tests/reactions-elastic.sh") CONFIG_LINKS="$CONFIG_LINKS tests/reactions-elastic.sh:tests/reactions-elastic.sh" ;; "tests/reactions.sh") CONFIG_LINKS="$CONFIG_LINKS tests/reactions.sh:tests/reactions.sh" ;; "tests/reed.sh") CONFIG_LINKS="$CONFIG_LINKS tests/reed.sh:tests/reed.sh" ;; "tests/solve.sh") CONFIG_LINKS="$CONFIG_LINKS tests/solve.sh:tests/solve.sh" ;; "tests/spinning-disk.sh") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk.sh:tests/spinning-disk.sh" ;; "tests/statically_indeterminate_reaction.sh") CONFIG_LINKS="$CONFIG_LINKS tests/statically_indeterminate_reaction.sh:tests/statically_indeterminate_reaction.sh" ;; "tests/symmetry.sh") CONFIG_LINKS="$CONFIG_LINKS tests/symmetry.sh:tests/symmetry.sh" ;; "tests/t21.sh") CONFIG_LINKS="$CONFIG_LINKS tests/t21.sh:tests/t21.sh" ;; "tests/thermal-1d.sh") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-1d.sh:tests/thermal-1d.sh" ;; "tests/thermal-2d.sh") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-2d.sh:tests/thermal-2d.sh" ;; "tests/thermal-3d.sh") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-3d.sh:tests/thermal-3d.sh" ;; "tests/thermal-radiation.sh") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-radiation.sh:tests/thermal-radiation.sh" ;; "tests/thermal-slab-no-k.sh") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-no-k.sh:tests/thermal-slab-no-k.sh" ;; "tests/thermal-slab-wrong-bc.sh") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-wrong-bc.sh:tests/thermal-slab-wrong-bc.sh" ;; "tests/transient-mesh.sh") CONFIG_LINKS="$CONFIG_LINKS tests/transient-mesh.sh:tests/transient-mesh.sh" ;; "tests/trig.sh") CONFIG_LINKS="$CONFIG_LINKS tests/trig.sh:tests/trig.sh" ;; "tests/two-cubes-isotropic.sh") CONFIG_LINKS="$CONFIG_LINKS tests/two-cubes-isotropic.sh:tests/two-cubes-isotropic.sh" ;; "tests/two-cubes-orthotropic.sh") CONFIG_LINKS="$CONFIG_LINKS tests/two-cubes-orthotropic.sh:tests/two-cubes-orthotropic.sh" ;; "tests/uo2-pellet.sh") CONFIG_LINKS="$CONFIG_LINKS tests/uo2-pellet.sh:tests/uo2-pellet.sh" ;; "tests/vector.sh") CONFIG_LINKS="$CONFIG_LINKS tests/vector.sh:tests/vector.sh" ;; "tests/wilson.sh") CONFIG_LINKS="$CONFIG_LINKS tests/wilson.sh:tests/wilson.sh" ;; "tests/xfail-data-variable.sh") CONFIG_LINKS="$CONFIG_LINKS tests/xfail-data-variable.sh:tests/xfail-data-variable.sh" ;; "tests/xfail-few-properties-ortho-poisson.sh") CONFIG_LINKS="$CONFIG_LINKS tests/xfail-few-properties-ortho-poisson.sh:tests/xfail-few-properties-ortho-poisson.sh" ;; "tests/xfail-few-properties-ortho-shear.sh") CONFIG_LINKS="$CONFIG_LINKS tests/xfail-few-properties-ortho-shear.sh:tests/xfail-few-properties-ortho-shear.sh" ;; "tests/xfail-few-properties-ortho-young.sh") CONFIG_LINKS="$CONFIG_LINKS tests/xfail-few-properties-ortho-young.sh:tests/xfail-few-properties-ortho-young.sh" ;; "tests/2dpwr.fee") CONFIG_LINKS="$CONFIG_LINKS tests/2dpwr.fee:tests/2dpwr.fee" ;; "tests/Barra1D_a_Estac.fee") CONFIG_LINKS="$CONFIG_LINKS tests/Barra1D_a_Estac.fee:tests/Barra1D_a_Estac.fee" ;; "tests/Barra1D_b_Trans.fee") CONFIG_LINKS="$CONFIG_LINKS tests/Barra1D_b_Trans.fee:tests/Barra1D_b_Trans.fee" ;; "tests/H2O.fee") CONFIG_LINKS="$CONFIG_LINKS tests/H2O.fee:tests/H2O.fee" ;; "tests/Pu-239a.fee") CONFIG_LINKS="$CONFIG_LINKS tests/Pu-239a.fee:tests/Pu-239a.fee" ;; "tests/Pu-239b.fee") CONFIG_LINKS="$CONFIG_LINKS tests/Pu-239b.fee:tests/Pu-239b.fee" ;; "tests/U-235.fee") CONFIG_LINKS="$CONFIG_LINKS tests/U-235.fee:tests/U-235.fee" ;; "tests/U-Al.fee") CONFIG_LINKS="$CONFIG_LINKS tests/U-Al.fee:tests/U-Al.fee" ;; "tests/URRa.fee") CONFIG_LINKS="$CONFIG_LINKS tests/URRa.fee:tests/URRa.fee" ;; "tests/abort.fee") CONFIG_LINKS="$CONFIG_LINKS tests/abort.fee:tests/abort.fee" ;; "tests/airfoil.fee") CONFIG_LINKS="$CONFIG_LINKS tests/airfoil.fee:tests/airfoil.fee" ;; "tests/algebraic_expr.fee") CONFIG_LINKS="$CONFIG_LINKS tests/algebraic_expr.fee:tests/algebraic_expr.fee" ;; "tests/alias.fee") CONFIG_LINKS="$CONFIG_LINKS tests/alias.fee:tests/alias.fee" ;; "tests/annulus-modal.fee") CONFIG_LINKS="$CONFIG_LINKS tests/annulus-modal.fee:tests/annulus-modal.fee" ;; "tests/arguments_bracketed.fee") CONFIG_LINKS="$CONFIG_LINKS tests/arguments_bracketed.fee:tests/arguments_bracketed.fee" ;; "tests/arguments_quoted.fee") CONFIG_LINKS="$CONFIG_LINKS tests/arguments_quoted.fee:tests/arguments_quoted.fee" ;; "tests/arguments_self.fee") CONFIG_LINKS="$CONFIG_LINKS tests/arguments_self.fee:tests/arguments_self.fee" ;; "tests/assignment_scalar.fee") CONFIG_LINKS="$CONFIG_LINKS tests/assignment_scalar.fee:tests/assignment_scalar.fee" ;; "tests/atan2.fee") CONFIG_LINKS="$CONFIG_LINKS tests/atan2.fee:tests/atan2.fee" ;; "tests/azmy-structured.fee") CONFIG_LINKS="$CONFIG_LINKS tests/azmy-structured.fee:tests/azmy-structured.fee" ;; "tests/bc-groups1.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bc-groups1.fee:tests/bc-groups1.fee" ;; "tests/bc-groups2.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bc-groups2.fee:tests/bc-groups2.fee" ;; "tests/bc-groups3.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bc-groups3.fee:tests/bc-groups3.fee" ;; "tests/bc-groups4.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bc-groups4.fee:tests/bc-groups4.fee" ;; "tests/bc-groups6.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bc-groups6.fee:tests/bc-groups6.fee" ;; "tests/beam-cantilever-modal-free-free.fee") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-modal-free-free.fee:tests/beam-cantilever-modal-free-free.fee" ;; "tests/beam-cantilever-modal.fee") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-modal.fee:tests/beam-cantilever-modal.fee" ;; "tests/bimetallic-strip.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bimetallic-strip.fee:tests/bimetallic-strip.fee" ;; "tests/bunny-diffusion.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-diffusion.fee:tests/bunny-diffusion.fee" ;; "tests/bunny-modal-fixed.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-modal-fixed.fee:tests/bunny-modal-fixed.fee" ;; "tests/bunny-modal-free.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-modal-free.fee:tests/bunny-modal-free.fee" ;; "tests/bunny-modal-rest.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-modal-rest.fee:tests/bunny-modal-rest.fee" ;; "tests/bunny-modal.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-modal.fee:tests/bunny-modal.fee" ;; "tests/bunny-sn-box.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-sn-box.fee:tests/bunny-sn-box.fee" ;; "tests/bunny-sn.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-sn.fee:tests/bunny-sn.fee" ;; "tests/bunny-thermal-mpi.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-thermal-mpi.fee:tests/bunny-thermal-mpi.fee" ;; "tests/bunny-thermal.fee") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-thermal.fee:tests/bunny-thermal.fee" ;; "tests/circle_fit.fee") CONFIG_LINKS="$CONFIG_LINKS tests/circle_fit.fee:tests/circle_fit.fee" ;; "tests/circle_perimeter.fee") CONFIG_LINKS="$CONFIG_LINKS tests/circle_perimeter.fee:tests/circle_perimeter.fee" ;; "tests/circle_surface.fee") CONFIG_LINKS="$CONFIG_LINKS tests/circle_surface.fee:tests/circle_surface.fee" ;; "tests/cmp-float.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cmp-float.fee:tests/cmp-float.fee" ;; "tests/cmp-zero.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cmp-zero.fee:tests/cmp-zero.fee" ;; "tests/convectionNL.fee") CONFIG_LINKS="$CONFIG_LINKS tests/convectionNL.fee:tests/convectionNL.fee" ;; "tests/cube-cog.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cube-cog.fee:tests/cube-cog.fee" ;; "tests/cube-free-expansion-alpha-of-space-orthotropic.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cube-free-expansion-alpha-of-space-orthotropic.fee:tests/cube-free-expansion-alpha-of-space-orthotropic.fee" ;; "tests/cube-free-expansion-alpha-of-temperature-orthotropic.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cube-free-expansion-alpha-of-temperature-orthotropic.fee:tests/cube-free-expansion-alpha-of-temperature-orthotropic.fee" ;; "tests/cube-free-expansion-uniform-isotropic.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cube-free-expansion-uniform-isotropic.fee:tests/cube-free-expansion-uniform-isotropic.fee" ;; "tests/cube-free-expansion-uniform-orthotropic.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cube-free-expansion-uniform-orthotropic.fee:tests/cube-free-expansion-uniform-orthotropic.fee" ;; "tests/cube-radial.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cube-radial.fee:tests/cube-radial.fee" ;; "tests/cube-restrained-expansion-uniform-isotropic.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cube-restrained-expansion-uniform-isotropic.fee:tests/cube-restrained-expansion-uniform-isotropic.fee" ;; "tests/cube-restrained-expansion-uniform-orthotropic.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cube-restrained-expansion-uniform-orthotropic.fee:tests/cube-restrained-expansion-uniform-orthotropic.fee" ;; "tests/cube-tangential.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cube-tangential.fee:tests/cube-tangential.fee" ;; "tests/cylinder-force.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cylinder-force.fee:tests/cylinder-force.fee" ;; "tests/cylinder-traction.fee") CONFIG_LINKS="$CONFIG_LINKS tests/cylinder-traction.fee:tests/cylinder-traction.fee" ;; "tests/default_argument_value.fee") CONFIG_LINKS="$CONFIG_LINKS tests/default_argument_value.fee:tests/default_argument_value.fee" ;; "tests/diffusion-square-fully-mirrored.fee") CONFIG_LINKS="$CONFIG_LINKS tests/diffusion-square-fully-mirrored.fee:tests/diffusion-square-fully-mirrored.fee" ;; "tests/encased_rod_lr.fee") CONFIG_LINKS="$CONFIG_LINKS tests/encased_rod_lr.fee:tests/encased_rod_lr.fee" ;; "tests/encased_rod_tb.fee") CONFIG_LINKS="$CONFIG_LINKS tests/encased_rod_tb.fee:tests/encased_rod_tb.fee" ;; "tests/exp.fee") CONFIG_LINKS="$CONFIG_LINKS tests/exp.fee:tests/exp.fee" ;; "tests/expr.fee") CONFIG_LINKS="$CONFIG_LINKS tests/expr.fee:tests/expr.fee" ;; "tests/expressions_cumbersome.fee") CONFIG_LINKS="$CONFIG_LINKS tests/expressions_cumbersome.fee:tests/expressions_cumbersome.fee" ;; "tests/expressions_functions.fee") CONFIG_LINKS="$CONFIG_LINKS tests/expressions_functions.fee:tests/expressions_functions.fee" ;; "tests/expressions_seven.fee") CONFIG_LINKS="$CONFIG_LINKS tests/expressions_seven.fee:tests/expressions_seven.fee" ;; "tests/expressions_sum.fee") CONFIG_LINKS="$CONFIG_LINKS tests/expressions_sum.fee:tests/expressions_sum.fee" ;; "tests/expressions_variables.fee") CONFIG_LINKS="$CONFIG_LINKS tests/expressions_variables.fee:tests/expressions_variables.fee" ;; "tests/fibo_formula.fee") CONFIG_LINKS="$CONFIG_LINKS tests/fibo_formula.fee:tests/fibo_formula.fee" ;; "tests/fibo_iterative.fee") CONFIG_LINKS="$CONFIG_LINKS tests/fibo_iterative.fee:tests/fibo_iterative.fee" ;; "tests/fibo_vector.fee") CONFIG_LINKS="$CONFIG_LINKS tests/fibo_vector.fee:tests/fibo_vector.fee" ;; "tests/file-append.fee") CONFIG_LINKS="$CONFIG_LINKS tests/file-append.fee:tests/file-append.fee" ;; "tests/file.fee") CONFIG_LINKS="$CONFIG_LINKS tests/file.fee:tests/file.fee" ;; "tests/find_extrema2d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/find_extrema2d.fee:tests/find_extrema2d.fee" ;; "tests/fit1d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/fit1d.fee:tests/fit1d.fee" ;; "tests/fit1d_gradient.fee") CONFIG_LINKS="$CONFIG_LINKS tests/fit1d_gradient.fee:tests/fit1d_gradient.fee" ;; "tests/fit1d_sigma.fee") CONFIG_LINKS="$CONFIG_LINKS tests/fit1d_sigma.fee:tests/fit1d_sigma.fee" ;; "tests/fit2d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/fit2d.fee:tests/fit2d.fee" ;; "tests/func_min.fee") CONFIG_LINKS="$CONFIG_LINKS tests/func_min.fee:tests/func_min.fee" ;; "tests/function_algebraic.fee") CONFIG_LINKS="$CONFIG_LINKS tests/function_algebraic.fee:tests/function_algebraic.fee" ;; "tests/function_data1d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/function_data1d.fee:tests/function_data1d.fee" ;; "tests/function_data1dlinear.fee") CONFIG_LINKS="$CONFIG_LINKS tests/function_data1dlinear.fee:tests/function_data1dlinear.fee" ;; "tests/function_data1dlinearchanged.fee") CONFIG_LINKS="$CONFIG_LINKS tests/function_data1dlinearchanged.fee:tests/function_data1dlinearchanged.fee" ;; "tests/function_data2d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/function_data2d.fee:tests/function_data2d.fee" ;; "tests/function_file1d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/function_file1d.fee:tests/function_file1d.fee" ;; "tests/function_file1d_columns.fee") CONFIG_LINKS="$CONFIG_LINKS tests/function_file1d_columns.fee:tests/function_file1d_columns.fee" ;; "tests/function_over_mesh.fee") CONFIG_LINKS="$CONFIG_LINKS tests/function_over_mesh.fee:tests/function_over_mesh.fee" ;; "tests/function_vectors1d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/function_vectors1d.fee:tests/function_vectors1d.fee" ;; "tests/geometric_series.fee") CONFIG_LINKS="$CONFIG_LINKS tests/geometric_series.fee:tests/geometric_series.fee" ;; "tests/heater-cylinder-inches.fee") CONFIG_LINKS="$CONFIG_LINKS tests/heater-cylinder-inches.fee:tests/heater-cylinder-inches.fee" ;; "tests/hello.fee") CONFIG_LINKS="$CONFIG_LINKS tests/hello.fee:tests/hello.fee" ;; "tests/hello_mpi.fee") CONFIG_LINKS="$CONFIG_LINKS tests/hello_mpi.fee:tests/hello_mpi.fee" ;; "tests/hoc.fee") CONFIG_LINKS="$CONFIG_LINKS tests/hoc.fee:tests/hoc.fee" ;; "tests/i-beam-euler-bernoulli.fee") CONFIG_LINKS="$CONFIG_LINKS tests/i-beam-euler-bernoulli.fee:tests/i-beam-euler-bernoulli.fee" ;; "tests/if.fee") CONFIG_LINKS="$CONFIG_LINKS tests/if.fee:tests/if.fee" ;; "tests/implicit.fee") CONFIG_LINKS="$CONFIG_LINKS tests/implicit.fee:tests/implicit.fee" ;; "tests/include.fee") CONFIG_LINKS="$CONFIG_LINKS tests/include.fee:tests/include.fee" ;; "tests/initial_conditions.fee") CONFIG_LINKS="$CONFIG_LINKS tests/initial_conditions.fee:tests/initial_conditions.fee" ;; "tests/integrate2d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/integrate2d.fee:tests/integrate2d.fee" ;; "tests/inverse-dae.fee") CONFIG_LINKS="$CONFIG_LINKS tests/inverse-dae.fee:tests/inverse-dae.fee" ;; "tests/inverse-integral.fee") CONFIG_LINKS="$CONFIG_LINKS tests/inverse-integral.fee:tests/inverse-integral.fee" ;; "tests/iterative.fee") CONFIG_LINKS="$CONFIG_LINKS tests/iterative.fee:tests/iterative.fee" ;; "tests/la-p01-PUa-1-0-IN.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p01-PUa-1-0-IN.fee:tests/la-p01-PUa-1-0-IN.fee" ;; "tests/la-p02-PUa-1-0-SL.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p02-PUa-1-0-SL.fee:tests/la-p02-PUa-1-0-SL.fee" ;; "tests/la-p03-PUa-H2O_1-1-0-SL.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p03-PUa-H2O_1-1-0-SL.fee:tests/la-p03-PUa-H2O_1-1-0-SL.fee" ;; "tests/la-p04-PUa-H2O_0.5-1-0-SL.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p04-PUa-H2O_0.5-1-0-SL.fee:tests/la-p04-PUa-H2O_0.5-1-0-SL.fee" ;; "tests/la-p05-PUb-1-0-IN.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p05-PUb-1-0-IN.fee:tests/la-p05-PUb-1-0-IN.fee" ;; "tests/la-p06-PUb-1-0-SL.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p06-PUb-1-0-SL.fee:tests/la-p06-PUb-1-0-SL.fee" ;; "tests/la-p07-PUb-1-0-CY.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p07-PUb-1-0-CY.fee:tests/la-p07-PUb-1-0-CY.fee" ;; "tests/la-p08-PUb-1-0-SP.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p08-PUb-1-0-SP.fee:tests/la-p08-PUb-1-0-SP.fee" ;; "tests/la-p09-PUb-H2O_1-1-0-CY.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p09-PUb-H2O_1-1-0-CY.fee:tests/la-p09-PUb-H2O_1-1-0-CY.fee" ;; "tests/la-p10-PUb-H2O_10-1-0-CY.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p10-PUb-H2O_10-1-0-CY.fee:tests/la-p10-PUb-H2O_10-1-0-CY.fee" ;; "tests/la-p47-U-2-0-IN.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p47-U-2-0-IN.fee:tests/la-p47-U-2-0-IN.fee" ;; "tests/la-p48-U-2-0-SL.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p48-U-2-0-SL.fee:tests/la-p48-U-2-0-SL.fee" ;; "tests/la-p49-U-2-0-SP.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p49-U-2-0-SP.fee:tests/la-p49-U-2-0-SP.fee" ;; "tests/la-p50-UAl-2-0-IN.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p50-UAl-2-0-IN.fee:tests/la-p50-UAl-2-0-IN.fee" ;; "tests/la-p51-UAl-2-0-SL.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p51-UAl-2-0-SL.fee:tests/la-p51-UAl-2-0-SL.fee" ;; "tests/la-p52-UAl-2-0-SP.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p52-UAl-2-0-SP.fee:tests/la-p52-UAl-2-0-SP.fee" ;; "tests/la-p70-URRa-2-1-IN.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p70-URRa-2-1-IN.fee:tests/la-p70-URRa-2-1-IN.fee" ;; "tests/la-p71-URRa-2-1-SL.fee") CONFIG_LINKS="$CONFIG_LINKS tests/la-p71-URRa-2-1-SL.fee:tests/la-p71-URRa-2-1-SL.fee" ;; "tests/lag.fee") CONFIG_LINKS="$CONFIG_LINKS tests/lag.fee:tests/lag.fee" ;; "tests/lag_compact.fee") CONFIG_LINKS="$CONFIG_LINKS tests/lag_compact.fee:tests/lag_compact.fee" ;; "tests/laplace-square.fee") CONFIG_LINKS="$CONFIG_LINKS tests/laplace-square.fee:tests/laplace-square.fee" ;; "tests/logphi.fee") CONFIG_LINKS="$CONFIG_LINKS tests/logphi.fee:tests/logphi.fee" ;; "tests/long-bar-mechanical.fee") CONFIG_LINKS="$CONFIG_LINKS tests/long-bar-mechanical.fee:tests/long-bar-mechanical.fee" ;; "tests/long-bar-thermal.fee") CONFIG_LINKS="$CONFIG_LINKS tests/long-bar-thermal.fee:tests/long-bar-thermal.fee" ;; "tests/map-cube-create.fee") CONFIG_LINKS="$CONFIG_LINKS tests/map-cube-create.fee:tests/map-cube-create.fee" ;; "tests/map-cube.fee") CONFIG_LINKS="$CONFIG_LINKS tests/map-cube.fee:tests/map-cube.fee" ;; "tests/map-function.fee") CONFIG_LINKS="$CONFIG_LINKS tests/map-function.fee:tests/map-function.fee" ;; "tests/materials.fee") CONFIG_LINKS="$CONFIG_LINKS tests/materials.fee:tests/materials.fee" ;; "tests/matrix.fee") CONFIG_LINKS="$CONFIG_LINKS tests/matrix.fee:tests/matrix.fee" ;; "tests/maze.fee") CONFIG_LINKS="$CONFIG_LINKS tests/maze.fee:tests/maze.fee" ;; "tests/mesh3d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/mesh3d.fee:tests/mesh3d.fee" ;; "tests/modal-beam-cantilever.fee") CONFIG_LINKS="$CONFIG_LINKS tests/modal-beam-cantilever.fee:tests/modal-beam-cantilever.fee" ;; "tests/modal-solidworks.fee") CONFIG_LINKS="$CONFIG_LINKS tests/modal-solidworks.fee:tests/modal-solidworks.fee" ;; "tests/modal_rectangular_beam.fee") CONFIG_LINKS="$CONFIG_LINKS tests/modal_rectangular_beam.fee:tests/modal_rectangular_beam.fee" ;; "tests/moment-of-inertia.fee") CONFIG_LINKS="$CONFIG_LINKS tests/moment-of-inertia.fee:tests/moment-of-inertia.fee" ;; "tests/nafems-le1.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1.fee:tests/nafems-le1.fee" ;; "tests/nafems-le10.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le10.fee:tests/nafems-le10.fee" ;; "tests/nafems-le11-alpha-of-T.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le11-alpha-of-T.fee:tests/nafems-le11-alpha-of-T.fee" ;; "tests/nafems-le11-alpha-of-x.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le11-alpha-of-x.fee:tests/nafems-le11-alpha-of-x.fee" ;; "tests/nafems-le11.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le11.fee:tests/nafems-le11.fee" ;; "tests/nafems-t1.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t1.fee:tests/nafems-t1.fee" ;; "tests/nafems-t2-1d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t2-1d.fee:tests/nafems-t2-1d.fee" ;; "tests/nafems-t2-3d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t2-3d.fee:tests/nafems-t2-3d.fee" ;; "tests/nafems-t3-1d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t3-1d.fee:tests/nafems-t3-1d.fee" ;; "tests/nafems-t3-3d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t3-3d.fee:tests/nafems-t3-3d.fee" ;; "tests/nafems-t4.fee") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t4.fee:tests/nafems-t4.fee" ;; "tests/open.fee") CONFIG_LINKS="$CONFIG_LINKS tests/open.fee:tests/open.fee" ;; "tests/orthotropic-beam.fee") CONFIG_LINKS="$CONFIG_LINKS tests/orthotropic-beam.fee:tests/orthotropic-beam.fee" ;; "tests/parallelepiped-from-msh.fee") CONFIG_LINKS="$CONFIG_LINKS tests/parallelepiped-from-msh.fee:tests/parallelepiped-from-msh.fee" ;; "tests/parallelepiped-thermal.fee") CONFIG_LINKS="$CONFIG_LINKS tests/parallelepiped-thermal.fee:tests/parallelepiped-thermal.fee" ;; "tests/parallelepiped.fee") CONFIG_LINKS="$CONFIG_LINKS tests/parallelepiped.fee:tests/parallelepiped.fee" ;; "tests/parameters.fee") CONFIG_LINKS="$CONFIG_LINKS tests/parameters.fee:tests/parameters.fee" ;; "tests/peano.fee") CONFIG_LINKS="$CONFIG_LINKS tests/peano.fee:tests/peano.fee" ;; "tests/pellet-linear-guess.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-linear-guess.fee:tests/pellet-linear-guess.fee" ;; "tests/pellet-linear-transient-from-initial.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-linear-transient-from-initial.fee:tests/pellet-linear-transient-from-initial.fee" ;; "tests/pellet-linear-transient-from-ss.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-linear-transient-from-ss.fee:tests/pellet-linear-transient-from-ss.fee" ;; "tests/pellet-linear.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-linear.fee:tests/pellet-linear.fee" ;; "tests/pellet-nonlinear-guess.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-nonlinear-guess.fee:tests/pellet-nonlinear-guess.fee" ;; "tests/pellet-nonlinear-linear-keyword.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-nonlinear-linear-keyword.fee:tests/pellet-nonlinear-linear-keyword.fee" ;; "tests/pellet-nonlinear-linear-option.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-nonlinear-linear-option.fee:tests/pellet-nonlinear-linear-option.fee" ;; "tests/pellet-nonlinear-q.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-nonlinear-q.fee:tests/pellet-nonlinear-q.fee" ;; "tests/pellet-nonlinear-transient-from-initial.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-nonlinear-transient-from-initial.fee:tests/pellet-nonlinear-transient-from-initial.fee" ;; "tests/pellet-nonlinear-transient-from-ss.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-nonlinear-transient-from-ss.fee:tests/pellet-nonlinear-transient-from-ss.fee" ;; "tests/pellet-nonlinear.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-nonlinear.fee:tests/pellet-nonlinear.fee" ;; "tests/pellet-nonuniform-q.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pellet-nonuniform-q.fee:tests/pellet-nonuniform-q.fee" ;; "tests/petsc_options.fee") CONFIG_LINKS="$CONFIG_LINKS tests/petsc_options.fee:tests/petsc_options.fee" ;; "tests/pipe.fee") CONFIG_LINKS="$CONFIG_LINKS tests/pipe.fee:tests/pipe.fee" ;; "tests/poisson-square.fee") CONFIG_LINKS="$CONFIG_LINKS tests/poisson-square.fee:tests/poisson-square.fee" ;; "tests/powell.fee") CONFIG_LINKS="$CONFIG_LINKS tests/powell.fee:tests/powell.fee" ;; "tests/print.fee") CONFIG_LINKS="$CONFIG_LINKS tests/print.fee:tests/print.fee" ;; "tests/print_function.fee") CONFIG_LINKS="$CONFIG_LINKS tests/print_function.fee:tests/print_function.fee" ;; "tests/print_vector.fee") CONFIG_LINKS="$CONFIG_LINKS tests/print_vector.fee:tests/print_vector.fee" ;; "tests/printf.fee") CONFIG_LINKS="$CONFIG_LINKS tests/printf.fee:tests/printf.fee" ;; "tests/qrng.fee") CONFIG_LINKS="$CONFIG_LINKS tests/qrng.fee:tests/qrng.fee" ;; "tests/qrng2d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/qrng2d.fee:tests/qrng2d.fee" ;; "tests/qrng2d_rhalton.fee") CONFIG_LINKS="$CONFIG_LINKS tests/qrng2d_rhalton.fee:tests/qrng2d_rhalton.fee" ;; "tests/qrng2d_sobol.fee") CONFIG_LINKS="$CONFIG_LINKS tests/qrng2d_sobol.fee:tests/qrng2d_sobol.fee" ;; "tests/qrng2d_sobol_offset.fee") CONFIG_LINKS="$CONFIG_LINKS tests/qrng2d_sobol_offset.fee:tests/qrng2d_sobol_offset.fee" ;; "tests/qrng_others.fee") CONFIG_LINKS="$CONFIG_LINKS tests/qrng_others.fee:tests/qrng_others.fee" ;; "tests/radiation-as-convection-celsius.fee") CONFIG_LINKS="$CONFIG_LINKS tests/radiation-as-convection-celsius.fee:tests/radiation-as-convection-celsius.fee" ;; "tests/radiation-as-convection-kelvin.fee") CONFIG_LINKS="$CONFIG_LINKS tests/radiation-as-convection-kelvin.fee:tests/radiation-as-convection-kelvin.fee" ;; "tests/radiation-as-heatflux-celsius.fee") CONFIG_LINKS="$CONFIG_LINKS tests/radiation-as-heatflux-celsius.fee:tests/radiation-as-heatflux-celsius.fee" ;; "tests/radiation-as-heatflux-kelvin.fee") CONFIG_LINKS="$CONFIG_LINKS tests/radiation-as-heatflux-kelvin.fee:tests/radiation-as-heatflux-kelvin.fee" ;; "tests/ray-effect-diffusion.fee") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect-diffusion.fee:tests/ray-effect-diffusion.fee" ;; "tests/ray-effect-full.fee") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect-full.fee:tests/ray-effect-full.fee" ;; "tests/ray-effect.fee") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect.fee:tests/ray-effect.fee" ;; "tests/reaction-displ.fee") CONFIG_LINKS="$CONFIG_LINKS tests/reaction-displ.fee:tests/reaction-displ.fee" ;; "tests/reaction-elastic-lr.fee") CONFIG_LINKS="$CONFIG_LINKS tests/reaction-elastic-lr.fee:tests/reaction-elastic-lr.fee" ;; "tests/reaction-elastic-lt.fee") CONFIG_LINKS="$CONFIG_LINKS tests/reaction-elastic-lt.fee:tests/reaction-elastic-lt.fee" ;; "tests/reaction-force.fee") CONFIG_LINKS="$CONFIG_LINKS tests/reaction-force.fee:tests/reaction-force.fee" ;; "tests/reactivity-from-table.fee") CONFIG_LINKS="$CONFIG_LINKS tests/reactivity-from-table.fee:tests/reactivity-from-table.fee" ;; "tests/read_mesh2d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/read_mesh2d.fee:tests/read_mesh2d.fee" ;; "tests/read_vtk5.fee") CONFIG_LINKS="$CONFIG_LINKS tests/read_vtk5.fee:tests/read_vtk5.fee" ;; "tests/readmsh_writevtk_readbackvtk.fee") CONFIG_LINKS="$CONFIG_LINKS tests/readmsh_writevtk_readbackvtk.fee:tests/readmsh_writevtk_readbackvtk.fee" ;; "tests/rectangular_plate_with_hole.fee") CONFIG_LINKS="$CONFIG_LINKS tests/rectangular_plate_with_hole.fee:tests/rectangular_plate_with_hole.fee" ;; "tests/reed.fee") CONFIG_LINKS="$CONFIG_LINKS tests/reed.fee:tests/reed.fee" ;; "tests/reflected-src.fee") CONFIG_LINKS="$CONFIG_LINKS tests/reflected-src.fee:tests/reflected-src.fee" ;; "tests/reflected.fee") CONFIG_LINKS="$CONFIG_LINKS tests/reflected.fee:tests/reflected.fee" ;; "tests/rosenbrock.fee") CONFIG_LINKS="$CONFIG_LINKS tests/rosenbrock.fee:tests/rosenbrock.fee" ;; "tests/single-arc.fee") CONFIG_LINKS="$CONFIG_LINKS tests/single-arc.fee:tests/single-arc.fee" ;; "tests/sn-square-fully-mirrored.fee") CONFIG_LINKS="$CONFIG_LINKS tests/sn-square-fully-mirrored.fee:tests/sn-square-fully-mirrored.fee" ;; "tests/sort_vector.fee") CONFIG_LINKS="$CONFIG_LINKS tests/sort_vector.fee:tests/sort_vector.fee" ;; "tests/spinning-disk-parallel-plane.fee") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-plane.fee:tests/spinning-disk-parallel-plane.fee" ;; "tests/spinning-disk-parallel-solid-half.fee") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-solid-half.fee:tests/spinning-disk-parallel-solid-half.fee" ;; "tests/sqrt.fee") CONFIG_LINKS="$CONFIG_LINKS tests/sqrt.fee:tests/sqrt.fee" ;; "tests/statically_indeterminate_reaction.fee") CONFIG_LINKS="$CONFIG_LINKS tests/statically_indeterminate_reaction.fee:tests/statically_indeterminate_reaction.fee" ;; "tests/steps.fee") CONFIG_LINKS="$CONFIG_LINKS tests/steps.fee:tests/steps.fee" ;; "tests/t21.fee") CONFIG_LINKS="$CONFIG_LINKS tests/t21.fee:tests/t21.fee" ;; "tests/thermal-slab-convection-as-heat-nosource.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-convection-as-heat-nosource.fee:tests/thermal-slab-convection-as-heat-nosource.fee" ;; "tests/thermal-slab-convection-nosource.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-convection-nosource.fee:tests/thermal-slab-convection-nosource.fee" ;; "tests/thermal-slab-heat-nosource.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-heat-nosource.fee:tests/thermal-slab-heat-nosource.fee" ;; "tests/thermal-slab-no-k.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-no-k.fee:tests/thermal-slab-no-k.fee" ;; "tests/thermal-slab-space-nosource.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-space-nosource.fee:tests/thermal-slab-space-nosource.fee" ;; "tests/thermal-slab-temperature-nosource.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-temperature-nosource.fee:tests/thermal-slab-temperature-nosource.fee" ;; "tests/thermal-slab-transient-mms-capacity-of-T.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-transient-mms-capacity-of-T.fee:tests/thermal-slab-transient-mms-capacity-of-T.fee" ;; "tests/thermal-slab-transient-mms.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-transient-mms.fee:tests/thermal-slab-transient-mms.fee" ;; "tests/thermal-slab-transient.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-transient.fee:tests/thermal-slab-transient.fee" ;; "tests/thermal-slab-uniform-nosource.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-uniform-nosource.fee:tests/thermal-slab-uniform-nosource.fee" ;; "tests/thermal-slab-uniform-source-dirichlet-neumann.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-uniform-source-dirichlet-neumann.fee:tests/thermal-slab-uniform-source-dirichlet-neumann.fee" ;; "tests/thermal-slab-uniform-source.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-uniform-source.fee:tests/thermal-slab-uniform-source.fee" ;; "tests/thermal-slab-wrong-bc.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-wrong-bc.fee:tests/thermal-slab-wrong-bc.fee" ;; "tests/thermal-square.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-square.fee:tests/thermal-square.fee" ;; "tests/thermal-two-squares-material-explicit-space.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-two-squares-material-explicit-space.fee:tests/thermal-two-squares-material-explicit-space.fee" ;; "tests/thermal-two-squares-material-explicit-temperature.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-two-squares-material-explicit-temperature.fee:tests/thermal-two-squares-material-explicit-temperature.fee" ;; "tests/thermal-two-squares-material-explicit-uniform.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-two-squares-material-explicit-uniform.fee:tests/thermal-two-squares-material-explicit-uniform.fee" ;; "tests/thermal-two-squares-material-implicit-space.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-two-squares-material-implicit-space.fee:tests/thermal-two-squares-material-implicit-space.fee" ;; "tests/thermal-two-squares-material-implicit-temperature.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-two-squares-material-implicit-temperature.fee:tests/thermal-two-squares-material-implicit-temperature.fee" ;; "tests/thermal-two-squares-material-implicit-uniform.fee") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-two-squares-material-implicit-uniform.fee:tests/thermal-two-squares-material-implicit-uniform.fee" ;; "tests/time_path.fee") CONFIG_LINKS="$CONFIG_LINKS tests/time_path.fee:tests/time_path.fee" ;; "tests/time_path_petsc.fee") CONFIG_LINKS="$CONFIG_LINKS tests/time_path_petsc.fee:tests/time_path_petsc.fee" ;; "tests/time_path_raw.fee") CONFIG_LINKS="$CONFIG_LINKS tests/time_path_raw.fee:tests/time_path_raw.fee" ;; "tests/time_path_sundials.fee") CONFIG_LINKS="$CONFIG_LINKS tests/time_path_sundials.fee:tests/time_path_sundials.fee" ;; "tests/transient-from-mesh-different-dt.fee") CONFIG_LINKS="$CONFIG_LINKS tests/transient-from-mesh-different-dt.fee:tests/transient-from-mesh-different-dt.fee" ;; "tests/transient-from-mesh-same-dt.fee") CONFIG_LINKS="$CONFIG_LINKS tests/transient-from-mesh-same-dt.fee:tests/transient-from-mesh-same-dt.fee" ;; "tests/transient-to-mesh.fee") CONFIG_LINKS="$CONFIG_LINKS tests/transient-to-mesh.fee:tests/transient-to-mesh.fee" ;; "tests/two-cubes-isotropic-functions.fee") CONFIG_LINKS="$CONFIG_LINKS tests/two-cubes-isotropic-functions.fee:tests/two-cubes-isotropic-functions.fee" ;; "tests/two-cubes-isotropic-materials.fee") CONFIG_LINKS="$CONFIG_LINKS tests/two-cubes-isotropic-materials.fee:tests/two-cubes-isotropic-materials.fee" ;; "tests/two-cubes-isotropic-variables.fee") CONFIG_LINKS="$CONFIG_LINKS tests/two-cubes-isotropic-variables.fee:tests/two-cubes-isotropic-variables.fee" ;; "tests/two-cubes-orthotropic-functions.fee") CONFIG_LINKS="$CONFIG_LINKS tests/two-cubes-orthotropic-functions.fee:tests/two-cubes-orthotropic-functions.fee" ;; "tests/two-cubes-orthotropic-materials.fee") CONFIG_LINKS="$CONFIG_LINKS tests/two-cubes-orthotropic-materials.fee:tests/two-cubes-orthotropic-materials.fee" ;; "tests/two-cubes-orthotropic-variables.fee") CONFIG_LINKS="$CONFIG_LINKS tests/two-cubes-orthotropic-variables.fee:tests/two-cubes-orthotropic-variables.fee" ;; "tests/ud20-1-0-sl-src-vacuum.fee") CONFIG_LINKS="$CONFIG_LINKS tests/ud20-1-0-sl-src-vacuum.fee:tests/ud20-1-0-sl-src-vacuum.fee" ;; "tests/ud20-1-0-sl-src.fee") CONFIG_LINKS="$CONFIG_LINKS tests/ud20-1-0-sl-src.fee:tests/ud20-1-0-sl-src.fee" ;; "tests/ud20-1-0-sl-vacuum.fee") CONFIG_LINKS="$CONFIG_LINKS tests/ud20-1-0-sl-vacuum.fee:tests/ud20-1-0-sl-vacuum.fee" ;; "tests/ud20-1-0-sl.fee") CONFIG_LINKS="$CONFIG_LINKS tests/ud20-1-0-sl.fee:tests/ud20-1-0-sl.fee" ;; "tests/var.fee") CONFIG_LINKS="$CONFIG_LINKS tests/var.fee:tests/var.fee" ;; "tests/vector.fee") CONFIG_LINKS="$CONFIG_LINKS tests/vector.fee:tests/vector.fee" ;; "tests/vector_init.fee") CONFIG_LINKS="$CONFIG_LINKS tests/vector_init.fee:tests/vector_init.fee" ;; "tests/warp.fee") CONFIG_LINKS="$CONFIG_LINKS tests/warp.fee:tests/warp.fee" ;; "tests/wilson-1d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/wilson-1d.fee:tests/wilson-1d.fee" ;; "tests/wilson-2d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/wilson-2d.fee:tests/wilson-2d.fee" ;; "tests/write_mesh2d.fee") CONFIG_LINKS="$CONFIG_LINKS tests/write_mesh2d.fee:tests/write_mesh2d.fee" ;; "tests/xfail-data-variable.fee") CONFIG_LINKS="$CONFIG_LINKS tests/xfail-data-variable.fee:tests/xfail-data-variable.fee" ;; "tests/xfail-few-properties-ortho-good.fee") CONFIG_LINKS="$CONFIG_LINKS tests/xfail-few-properties-ortho-good.fee:tests/xfail-few-properties-ortho-good.fee" ;; "tests/xfail-few-properties-ortho-poisson.fee") CONFIG_LINKS="$CONFIG_LINKS tests/xfail-few-properties-ortho-poisson.fee:tests/xfail-few-properties-ortho-poisson.fee" ;; "tests/xfail-few-properties-ortho-shear.fee") CONFIG_LINKS="$CONFIG_LINKS tests/xfail-few-properties-ortho-shear.fee:tests/xfail-few-properties-ortho-shear.fee" ;; "tests/xfail-few-properties-ortho-young.fee") CONFIG_LINKS="$CONFIG_LINKS tests/xfail-few-properties-ortho-young.fee:tests/xfail-few-properties-ortho-young.fee" ;; "tests/2dpwr-eighth.geo") CONFIG_LINKS="$CONFIG_LINKS tests/2dpwr-eighth.geo:tests/2dpwr-eighth.geo" ;; "tests/2dpwr-quarter.geo") CONFIG_LINKS="$CONFIG_LINKS tests/2dpwr-quarter.geo:tests/2dpwr-quarter.geo" ;; "tests/Barra1D.geo") CONFIG_LINKS="$CONFIG_LINKS tests/Barra1D.geo:tests/Barra1D.geo" ;; "tests/PF.geo") CONFIG_LINKS="$CONFIG_LINKS tests/PF.geo:tests/PF.geo" ;; "tests/annulus.geo") CONFIG_LINKS="$CONFIG_LINKS tests/annulus.geo:tests/annulus.geo" ;; "tests/azmy-structured.geo") CONFIG_LINKS="$CONFIG_LINKS tests/azmy-structured.geo:tests/azmy-structured.geo" ;; "tests/beam-cantilever-hex20.geo") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-hex20.geo:tests/beam-cantilever-hex20.geo" ;; "tests/beam-cantilever-hex27.geo") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-hex27.geo:tests/beam-cantilever-hex27.geo" ;; "tests/beam-cantilever-hex8.geo") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-hex8.geo:tests/beam-cantilever-hex8.geo" ;; "tests/beam-cantilever-tet10.geo") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-tet10.geo:tests/beam-cantilever-tet10.geo" ;; "tests/beam-cantilever-tet4.geo") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-tet4.geo:tests/beam-cantilever-tet4.geo" ;; "tests/beam-cantilever.geo") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever.geo:tests/beam-cantilever.geo" ;; "tests/bimetallic-strip.geo") CONFIG_LINKS="$CONFIG_LINKS tests/bimetallic-strip.geo:tests/bimetallic-strip.geo" ;; "tests/bunny-box.geo") CONFIG_LINKS="$CONFIG_LINKS tests/bunny-box.geo:tests/bunny-box.geo" ;; "tests/bunny.geo") CONFIG_LINKS="$CONFIG_LINKS tests/bunny.geo:tests/bunny.geo" ;; "tests/circle.geo") CONFIG_LINKS="$CONFIG_LINKS tests/circle.geo:tests/circle.geo" ;; "tests/cube-hex.geo") CONFIG_LINKS="$CONFIG_LINKS tests/cube-hex.geo:tests/cube-hex.geo" ;; "tests/cube.geo") CONFIG_LINKS="$CONFIG_LINKS tests/cube.geo:tests/cube.geo" ;; "tests/cylinder.geo") CONFIG_LINKS="$CONFIG_LINKS tests/cylinder.geo:tests/cylinder.geo" ;; "tests/encased_rod.geo") CONFIG_LINKS="$CONFIG_LINKS tests/encased_rod.geo:tests/encased_rod.geo" ;; "tests/heater-cylinder-inches.geo") CONFIG_LINKS="$CONFIG_LINKS tests/heater-cylinder-inches.geo:tests/heater-cylinder-inches.geo" ;; "tests/i-beam-hex.geo") CONFIG_LINKS="$CONFIG_LINKS tests/i-beam-hex.geo:tests/i-beam-hex.geo" ;; "tests/i-beam-tet.geo") CONFIG_LINKS="$CONFIG_LINKS tests/i-beam-tet.geo:tests/i-beam-tet.geo" ;; "tests/la-IN.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-IN.geo:tests/la-IN.geo" ;; "tests/la-p02-PUa-1-0-SL.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p02-PUa-1-0-SL.geo:tests/la-p02-PUa-1-0-SL.geo" ;; "tests/la-p03-PUa-H2O_1-1-0-SL.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p03-PUa-H2O_1-1-0-SL.geo:tests/la-p03-PUa-H2O_1-1-0-SL.geo" ;; "tests/la-p04-PUa-H2O_0.5-1-0-SL.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p04-PUa-H2O_0.5-1-0-SL.geo:tests/la-p04-PUa-H2O_0.5-1-0-SL.geo" ;; "tests/la-p06-PUb-1-0-SL.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p06-PUb-1-0-SL.geo:tests/la-p06-PUb-1-0-SL.geo" ;; "tests/la-p07-PUb-1-0-CY.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p07-PUb-1-0-CY.geo:tests/la-p07-PUb-1-0-CY.geo" ;; "tests/la-p08-PUb-1-0-SP.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p08-PUb-1-0-SP.geo:tests/la-p08-PUb-1-0-SP.geo" ;; "tests/la-p09-PUb-H2O_1-1-0-CY.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p09-PUb-H2O_1-1-0-CY.geo:tests/la-p09-PUb-H2O_1-1-0-CY.geo" ;; "tests/la-p10-PUb-H2O_10-1-0-CY.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p10-PUb-H2O_10-1-0-CY.geo:tests/la-p10-PUb-H2O_10-1-0-CY.geo" ;; "tests/la-p48-U-2-0-SL.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p48-U-2-0-SL.geo:tests/la-p48-U-2-0-SL.geo" ;; "tests/la-p49-U-2-0-SP.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p49-U-2-0-SP.geo:tests/la-p49-U-2-0-SP.geo" ;; "tests/la-p51-UAl-2-0-SL.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p51-UAl-2-0-SL.geo:tests/la-p51-UAl-2-0-SL.geo" ;; "tests/la-p52-UAl-2-0-SP.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p52-UAl-2-0-SP.geo:tests/la-p52-UAl-2-0-SP.geo" ;; "tests/la-p71-URRa-2-1-SL.geo") CONFIG_LINKS="$CONFIG_LINKS tests/la-p71-URRa-2-1-SL.geo:tests/la-p71-URRa-2-1-SL.geo" ;; "tests/long-bar-struct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/long-bar-struct.geo:tests/long-bar-struct.geo" ;; "tests/long-bar-unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/long-bar-unstruct.geo:tests/long-bar-unstruct.geo" ;; "tests/map-cube.geo") CONFIG_LINKS="$CONFIG_LINKS tests/map-cube.geo:tests/map-cube.geo" ;; "tests/maze.geo") CONFIG_LINKS="$CONFIG_LINKS tests/maze.geo:tests/maze.geo" ;; "tests/nafems-le1.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1.geo:tests/nafems-le1.geo" ;; "tests/nafems-le10.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le10.geo:tests/nafems-le10.geo" ;; "tests/nafems-le11-hex20.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le11-hex20.geo:tests/nafems-le11-hex20.geo" ;; "tests/nafems-le11-hex27.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le11-hex27.geo:tests/nafems-le11-hex27.geo" ;; "tests/nafems-le11-hex8.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le11-hex8.geo:tests/nafems-le11-hex8.geo" ;; "tests/nafems-le11-tet10.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le11-tet10.geo:tests/nafems-le11-tet10.geo" ;; "tests/nafems-le11-tet4.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le11-tet4.geo:tests/nafems-le11-tet4.geo" ;; "tests/nafems-le11.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le11.geo:tests/nafems-le11.geo" ;; "tests/nafems-t1-unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t1-unstruct.geo:tests/nafems-t1-unstruct.geo" ;; "tests/nafems-t1.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t1.geo:tests/nafems-t1.geo" ;; "tests/nafems-t4.geo") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-t4.geo:tests/nafems-t4.geo" ;; "tests/parallelepiped.geo") CONFIG_LINKS="$CONFIG_LINKS tests/parallelepiped.geo:tests/parallelepiped.geo" ;; "tests/pellet.geo") CONFIG_LINKS="$CONFIG_LINKS tests/pellet.geo:tests/pellet.geo" ;; "tests/pipe-sch20-2-2.geo") CONFIG_LINKS="$CONFIG_LINKS tests/pipe-sch20-2-2.geo:tests/pipe-sch20-2-2.geo" ;; "tests/pipe-sch27-2-2.geo") CONFIG_LINKS="$CONFIG_LINKS tests/pipe-sch27-2-2.geo:tests/pipe-sch27-2-2.geo" ;; "tests/pipe-sct10-2-2.geo") CONFIG_LINKS="$CONFIG_LINKS tests/pipe-sct10-2-2.geo:tests/pipe-sct10-2-2.geo" ;; "tests/pipe-ssh20-2-2.geo") CONFIG_LINKS="$CONFIG_LINKS tests/pipe-ssh20-2-2.geo:tests/pipe-ssh20-2-2.geo" ;; "tests/pipe-ssh27-2-2.geo") CONFIG_LINKS="$CONFIG_LINKS tests/pipe-ssh27-2-2.geo:tests/pipe-ssh27-2-2.geo" ;; "tests/pipe-sst10-2-2.geo") CONFIG_LINKS="$CONFIG_LINKS tests/pipe-sst10-2-2.geo:tests/pipe-sst10-2-2.geo" ;; "tests/pipe-uct10-2-2.geo") CONFIG_LINKS="$CONFIG_LINKS tests/pipe-uct10-2-2.geo:tests/pipe-uct10-2-2.geo" ;; "tests/pipe-ust10-2-2.geo") CONFIG_LINKS="$CONFIG_LINKS tests/pipe-ust10-2-2.geo:tests/pipe-ust10-2-2.geo" ;; "tests/ray-effect-eighth.geo") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect-eighth.geo:tests/ray-effect-eighth.geo" ;; "tests/ray-effect-full.geo") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect-full.geo:tests/ray-effect-full.geo" ;; "tests/ray-effect-half.geo") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect-half.geo:tests/ray-effect-half.geo" ;; "tests/ray-effect-quarter.geo") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect-quarter.geo:tests/ray-effect-quarter.geo" ;; "tests/rectangular_beam.geo") CONFIG_LINKS="$CONFIG_LINKS tests/rectangular_beam.geo:tests/rectangular_beam.geo" ;; "tests/rectangular_plate_with_hole.geo") CONFIG_LINKS="$CONFIG_LINKS tests/rectangular_plate_with_hole.geo:tests/rectangular_plate_with_hole.geo" ;; "tests/reed.geo") CONFIG_LINKS="$CONFIG_LINKS tests/reed.geo:tests/reed.geo" ;; "tests/reflected.geo") CONFIG_LINKS="$CONFIG_LINKS tests/reflected.geo:tests/reflected.geo" ;; "tests/single-arc.geo") CONFIG_LINKS="$CONFIG_LINKS tests/single-arc.geo:tests/single-arc.geo" ;; "tests/slab-1d-0.1m.geo") CONFIG_LINKS="$CONFIG_LINKS tests/slab-1d-0.1m.geo:tests/slab-1d-0.1m.geo" ;; "tests/slab-3d-0.1m.geo") CONFIG_LINKS="$CONFIG_LINKS tests/slab-3d-0.1m.geo:tests/slab-3d-0.1m.geo" ;; "tests/slab.geo") CONFIG_LINKS="$CONFIG_LINKS tests/slab.geo:tests/slab.geo" ;; "tests/slab2.geo") CONFIG_LINKS="$CONFIG_LINKS tests/slab2.geo:tests/slab2.geo" ;; "tests/spinning-disk-dimensions.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-dimensions.geo:tests/spinning-disk-dimensions.geo" ;; "tests/spinning-disk-holed-solid-full_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-holed-solid-full_unstruct.geo:tests/spinning-disk-holed-solid-full_unstruct.geo" ;; "tests/spinning-disk-holed-solid-halfquarter_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-holed-solid-halfquarter_unstruct.geo:tests/spinning-disk-holed-solid-halfquarter_unstruct.geo" ;; "tests/spinning-disk-parallel-axisymmetric-full_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-axisymmetric-full_unstruct.geo:tests/spinning-disk-parallel-axisymmetric-full_unstruct.geo" ;; "tests/spinning-disk-parallel-axisymmetric-half_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-axisymmetric-half_unstruct.geo:tests/spinning-disk-parallel-axisymmetric-half_unstruct.geo" ;; "tests/spinning-disk-parallel-plane-eighth_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-plane-eighth_unstruct.geo:tests/spinning-disk-parallel-plane-eighth_unstruct.geo" ;; "tests/spinning-disk-parallel-plane-full_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-plane-full_unstruct.geo:tests/spinning-disk-parallel-plane-full_unstruct.geo" ;; "tests/spinning-disk-parallel-plane-quarter_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-plane-quarter_unstruct.geo:tests/spinning-disk-parallel-plane-quarter_unstruct.geo" ;; "tests/spinning-disk-parallel-plane-sixteenth_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-plane-sixteenth_unstruct.geo:tests/spinning-disk-parallel-plane-sixteenth_unstruct.geo" ;; "tests/spinning-disk-parallel-solid-full_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-solid-full_unstruct.geo:tests/spinning-disk-parallel-solid-full_unstruct.geo" ;; "tests/spinning-disk-parallel-solid-half_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-solid-half_unstruct.geo:tests/spinning-disk-parallel-solid-half_unstruct.geo" ;; "tests/spinning-disk-parallel-solid-halfeighth_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-solid-halfeighth_unstruct.geo:tests/spinning-disk-parallel-solid-halfeighth_unstruct.geo" ;; "tests/spinning-disk-parallel-solid-halfquarter_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-solid-halfquarter_unstruct.geo:tests/spinning-disk-parallel-solid-halfquarter_unstruct.geo" ;; "tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.geo:tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.geo" ;; "tests/spinning-disk-unstruct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/spinning-disk-unstruct.geo:tests/spinning-disk-unstruct.geo" ;; "tests/square-centered.geo") CONFIG_LINKS="$CONFIG_LINKS tests/square-centered.geo:tests/square-centered.geo" ;; "tests/square-struct.geo") CONFIG_LINKS="$CONFIG_LINKS tests/square-struct.geo:tests/square-struct.geo" ;; "tests/square.geo") CONFIG_LINKS="$CONFIG_LINKS tests/square.geo:tests/square.geo" ;; "tests/statically_indeterminate_reaction.geo") CONFIG_LINKS="$CONFIG_LINKS tests/statically_indeterminate_reaction.geo:tests/statically_indeterminate_reaction.geo" ;; "tests/t21.geo") CONFIG_LINKS="$CONFIG_LINKS tests/t21.geo:tests/t21.geo" ;; "tests/two-cubes.geo") CONFIG_LINKS="$CONFIG_LINKS tests/two-cubes.geo:tests/two-cubes.geo" ;; "tests/two-squares-quad.geo") CONFIG_LINKS="$CONFIG_LINKS tests/two-squares-quad.geo:tests/two-squares-quad.geo" ;; "tests/two-squares.geo") CONFIG_LINKS="$CONFIG_LINKS tests/two-squares.geo:tests/two-squares.geo" ;; "tests/ud20-1-0-sl.geo") CONFIG_LINKS="$CONFIG_LINKS tests/ud20-1-0-sl.geo:tests/ud20-1-0-sl.geo" ;; "tests/wilson-1d.geo") CONFIG_LINKS="$CONFIG_LINKS tests/wilson-1d.geo:tests/wilson-1d.geo" ;; "tests/wilson-2d.geo") CONFIG_LINKS="$CONFIG_LINKS tests/wilson-2d.geo:tests/wilson-2d.geo" ;; "tests/Barra1D.msh") CONFIG_LINKS="$CONFIG_LINKS tests/Barra1D.msh:tests/Barra1D.msh" ;; "tests/airfoil.msh") CONFIG_LINKS="$CONFIG_LINKS tests/airfoil.msh:tests/airfoil.msh" ;; "tests/beam-cantilever-hex20.msh") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-hex20.msh:tests/beam-cantilever-hex20.msh" ;; "tests/beam-cantilever-hex27.msh") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-hex27.msh:tests/beam-cantilever-hex27.msh" ;; "tests/beam-cantilever-hex8.msh") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-hex8.msh:tests/beam-cantilever-hex8.msh" ;; "tests/beam-cantilever-tet10.msh") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-tet10.msh:tests/beam-cantilever-tet10.msh" ;; "tests/beam-cantilever-tet4.msh") CONFIG_LINKS="$CONFIG_LINKS tests/beam-cantilever-tet4.msh:tests/beam-cantilever-tet4.msh" ;; "tests/convectionbc.msh") CONFIG_LINKS="$CONFIG_LINKS tests/convectionbc.msh:tests/convectionbc.msh" ;; "tests/convectionbc2.msh") CONFIG_LINKS="$CONFIG_LINKS tests/convectionbc2.msh:tests/convectionbc2.msh" ;; "tests/cube-hex.msh") CONFIG_LINKS="$CONFIG_LINKS tests/cube-hex.msh:tests/cube-hex.msh" ;; "tests/cylinder.msh") CONFIG_LINKS="$CONFIG_LINKS tests/cylinder.msh:tests/cylinder.msh" ;; "tests/mesh2d-bin.msh") CONFIG_LINKS="$CONFIG_LINKS tests/mesh2d-bin.msh:tests/mesh2d-bin.msh" ;; "tests/nafems-le1-1.msh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1-1.msh:tests/nafems-le1-1.msh" ;; "tests/nafems-le1-2.msh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1-2.msh:tests/nafems-le1-2.msh" ;; "tests/nafems-le1-3.msh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1-3.msh:tests/nafems-le1-3.msh" ;; "tests/nafems-le1-4.msh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1-4.msh:tests/nafems-le1-4.msh" ;; "tests/nafems-le1-5.msh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1-5.msh:tests/nafems-le1-5.msh" ;; "tests/nafems-le1-6.msh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1-6.msh:tests/nafems-le1-6.msh" ;; "tests/nafems-le1-7.msh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1-7.msh:tests/nafems-le1-7.msh" ;; "tests/nafems-le1-8.msh") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le1-8.msh:tests/nafems-le1-8.msh" ;; "tests/ray-effect-eighth.msh") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect-eighth.msh:tests/ray-effect-eighth.msh" ;; "tests/ray-effect-full.msh") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect-full.msh:tests/ray-effect-full.msh" ;; "tests/ray-effect-half.msh") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect-half.msh:tests/ray-effect-half.msh" ;; "tests/ray-effect-quarter.msh") CONFIG_LINKS="$CONFIG_LINKS tests/ray-effect-quarter.msh:tests/ray-effect-quarter.msh" ;; "tests/reaction.msh") CONFIG_LINKS="$CONFIG_LINKS tests/reaction.msh:tests/reaction.msh" ;; "tests/reflected.msh") CONFIG_LINKS="$CONFIG_LINKS tests/reflected.msh:tests/reflected.msh" ;; "tests/single-arc1.msh") CONFIG_LINKS="$CONFIG_LINKS tests/single-arc1.msh:tests/single-arc1.msh" ;; "tests/single-arc2.msh") CONFIG_LINKS="$CONFIG_LINKS tests/single-arc2.msh:tests/single-arc2.msh" ;; "tests/slab-1d-0.1m.msh") CONFIG_LINKS="$CONFIG_LINKS tests/slab-1d-0.1m.msh:tests/slab-1d-0.1m.msh" ;; "tests/slab-3d-0.1m.msh") CONFIG_LINKS="$CONFIG_LINKS tests/slab-3d-0.1m.msh:tests/slab-3d-0.1m.msh" ;; "tests/slab.msh") CONFIG_LINKS="$CONFIG_LINKS tests/slab.msh:tests/slab.msh" ;; "tests/slab2.msh") CONFIG_LINKS="$CONFIG_LINKS tests/slab2.msh:tests/slab2.msh" ;; "tests/square.msh") CONFIG_LINKS="$CONFIG_LINKS tests/square.msh:tests/square.msh" ;; "tests/square22.msh") CONFIG_LINKS="$CONFIG_LINKS tests/square22.msh:tests/square22.msh" ;; "tests/square40.msh") CONFIG_LINKS="$CONFIG_LINKS tests/square40.msh:tests/square40.msh" ;; "tests/square41.msh") CONFIG_LINKS="$CONFIG_LINKS tests/square41.msh:tests/square41.msh" ;; "tests/square41bin.msh") CONFIG_LINKS="$CONFIG_LINKS tests/square41bin.msh:tests/square41bin.msh" ;; "tests/t21.msh") CONFIG_LINKS="$CONFIG_LINKS tests/t21.msh:tests/t21.msh" ;; "tests/tet1.msh") CONFIG_LINKS="$CONFIG_LINKS tests/tet1.msh:tests/tet1.msh" ;; "tests/two-squares-bin-gmsh.msh") CONFIG_LINKS="$CONFIG_LINKS tests/two-squares-bin-gmsh.msh:tests/two-squares-bin-gmsh.msh" ;; "tests/two-squares-bin-meshio.msh") CONFIG_LINKS="$CONFIG_LINKS tests/two-squares-bin-meshio.msh:tests/two-squares-bin-meshio.msh" ;; "tests/two-squares.msh") CONFIG_LINKS="$CONFIG_LINKS tests/two-squares.msh:tests/two-squares.msh" ;; "tests/ud20-1-0-sl.msh") CONFIG_LINKS="$CONFIG_LINKS tests/ud20-1-0-sl.msh:tests/ud20-1-0-sl.msh" ;; "tests/Tini.dat") CONFIG_LINKS="$CONFIG_LINKS tests/Tini.dat:tests/Tini.dat" ;; "tests/asme-expansion-table.dat") CONFIG_LINKS="$CONFIG_LINKS tests/asme-expansion-table.dat:tests/asme-expansion-table.dat" ;; "tests/data1d.dat") CONFIG_LINKS="$CONFIG_LINKS tests/data1d.dat:tests/data1d.dat" ;; "tests/data1d_columns.dat") CONFIG_LINKS="$CONFIG_LINKS tests/data1d_columns.dat:tests/data1d_columns.dat" ;; "tests/data2d.dat") CONFIG_LINKS="$CONFIG_LINKS tests/data2d.dat:tests/data2d.dat" ;; "tests/flux.dat") CONFIG_LINKS="$CONFIG_LINKS tests/flux.dat:tests/flux.dat" ;; "tests/algebraic_expr.ref") CONFIG_LINKS="$CONFIG_LINKS tests/algebraic_expr.ref:tests/algebraic_expr.ref" ;; "tests/annulus-modal.ref") CONFIG_LINKS="$CONFIG_LINKS tests/annulus-modal.ref:tests/annulus-modal.ref" ;; "tests/bc-groups1.ref") CONFIG_LINKS="$CONFIG_LINKS tests/bc-groups1.ref:tests/bc-groups1.ref" ;; "tests/bc-groups2.ref") CONFIG_LINKS="$CONFIG_LINKS tests/bc-groups2.ref:tests/bc-groups2.ref" ;; "tests/bc-groups3.ref") CONFIG_LINKS="$CONFIG_LINKS tests/bc-groups3.ref:tests/bc-groups3.ref" ;; "tests/bc-groups4.ref") CONFIG_LINKS="$CONFIG_LINKS tests/bc-groups4.ref:tests/bc-groups4.ref" ;; "tests/expressions_cumbersome.ref") CONFIG_LINKS="$CONFIG_LINKS tests/expressions_cumbersome.ref:tests/expressions_cumbersome.ref" ;; "tests/expressions_variables.ref") CONFIG_LINKS="$CONFIG_LINKS tests/expressions_variables.ref:tests/expressions_variables.ref" ;; "tests/fibo_formula.ref") CONFIG_LINKS="$CONFIG_LINKS tests/fibo_formula.ref:tests/fibo_formula.ref" ;; "tests/fibo_iterative.ref") CONFIG_LINKS="$CONFIG_LINKS tests/fibo_iterative.ref:tests/fibo_iterative.ref" ;; "tests/fibo_vector.ref") CONFIG_LINKS="$CONFIG_LINKS tests/fibo_vector.ref:tests/fibo_vector.ref" ;; "tests/find_extrema2d.ref") CONFIG_LINKS="$CONFIG_LINKS tests/find_extrema2d.ref:tests/find_extrema2d.ref" ;; "tests/fit1d_gradient.ref") CONFIG_LINKS="$CONFIG_LINKS tests/fit1d_gradient.ref:tests/fit1d_gradient.ref" ;; "tests/function_vectors1d.ref") CONFIG_LINKS="$CONFIG_LINKS tests/function_vectors1d.ref:tests/function_vectors1d.ref" ;; "tests/iterative.ref") CONFIG_LINKS="$CONFIG_LINKS tests/iterative.ref:tests/iterative.ref" ;; "tests/nafems-le10.ref") CONFIG_LINKS="$CONFIG_LINKS tests/nafems-le10.ref:tests/nafems-le10.ref" ;; "tests/print_function.ref") CONFIG_LINKS="$CONFIG_LINKS tests/print_function.ref:tests/print_function.ref" ;; "tests/print_vector.ref") CONFIG_LINKS="$CONFIG_LINKS tests/print_vector.ref:tests/print_vector.ref" ;; "tests/printf.ref") CONFIG_LINKS="$CONFIG_LINKS tests/printf.ref:tests/printf.ref" ;; "tests/qrng.ref") CONFIG_LINKS="$CONFIG_LINKS tests/qrng.ref:tests/qrng.ref" ;; "tests/qrng2d_rhalton.ref") CONFIG_LINKS="$CONFIG_LINKS tests/qrng2d_rhalton.ref:tests/qrng2d_rhalton.ref" ;; "tests/qrng2d_sobol.ref") CONFIG_LINKS="$CONFIG_LINKS tests/qrng2d_sobol.ref:tests/qrng2d_sobol.ref" ;; "tests/qrng_others.ref") CONFIG_LINKS="$CONFIG_LINKS tests/qrng_others.ref:tests/qrng_others.ref" ;; "tests/reaction-displ.ref") CONFIG_LINKS="$CONFIG_LINKS tests/reaction-displ.ref:tests/reaction-displ.ref" ;; "tests/reaction-elastic-lr.ref") CONFIG_LINKS="$CONFIG_LINKS tests/reaction-elastic-lr.ref:tests/reaction-elastic-lr.ref" ;; "tests/reaction-elastic-lt.ref") CONFIG_LINKS="$CONFIG_LINKS tests/reaction-elastic-lt.ref:tests/reaction-elastic-lt.ref" ;; "tests/reaction-force.ref") CONFIG_LINKS="$CONFIG_LINKS tests/reaction-force.ref:tests/reaction-force.ref" ;; "tests/steps.ref") CONFIG_LINKS="$CONFIG_LINKS tests/steps.ref:tests/steps.ref" ;; "tests/thermal-slab-uniform-source-octave.ref") CONFIG_LINKS="$CONFIG_LINKS tests/thermal-slab-uniform-source-octave.ref:tests/thermal-slab-uniform-source-octave.ref" ;; "tests/transient-from-mesh-different-dt.ref") CONFIG_LINKS="$CONFIG_LINKS tests/transient-from-mesh-different-dt.ref:tests/transient-from-mesh-different-dt.ref" ;; "tests/transient-from-mesh-same-dt.ref") CONFIG_LINKS="$CONFIG_LINKS tests/transient-from-mesh-same-dt.ref:tests/transient-from-mesh-same-dt.ref" ;; "tests/transient-to-mesh.ref") CONFIG_LINKS="$CONFIG_LINKS tests/transient-to-mesh.ref:tests/transient-to-mesh.ref" ;; "tests/two-is-2.ref") CONFIG_LINKS="$CONFIG_LINKS tests/two-is-2.ref:tests/two-is-2.ref" ;; "tests/two-is-3.ref") CONFIG_LINKS="$CONFIG_LINKS tests/two-is-3.ref:tests/two-is-3.ref" ;; "tests/mesh2d-v5.vtk") CONFIG_LINKS="$CONFIG_LINKS tests/mesh2d-v5.vtk:tests/mesh2d-v5.vtk" ;; "tests/reaction-force-v5.vtk") CONFIG_LINKS="$CONFIG_LINKS tests/reaction-force-v5.vtk:tests/reaction-force-v5.vtk" ;; "tests/square.vtk") CONFIG_LINKS="$CONFIG_LINKS tests/square.vtk:tests/square.vtk" ;; "tests/reed-ref.csv") CONFIG_LINKS="$CONFIG_LINKS tests/reed-ref.csv:tests/reed-ref.csv" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :L) # # CONFIG_LINK # if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then : else # Prefer the file from the source tree if names are identical. if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then ac_source=$srcdir/$ac_source fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 printf "%s\n" "$as_me: linking $ac_source to $ac_file" >&6;} if test ! -r "$ac_source"; then as_fn_error $? "$ac_source: file not found" "$LINENO" 5 fi rm -f "$ac_file" # Try a relative symlink, then a hard link, then a copy. case $ac_source in [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; *) ac_rel_source=$ac_top_build_prefix$ac_source ;; esac ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || ln "$ac_source" "$ac_file" 2>/dev/null || cp -p "$ac_source" "$ac_file" || as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 fi ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi feenox-1.1/version.m40000644000175000017500000000003614773607166011527 00000000000000define(feenoxversion, 1.1)dnl feenox-1.1/ax_gcc_builtin.m40000644000175000017500000001371014773607165013016 00000000000000# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_gcc_builtin.html # =========================================================================== # # SYNOPSIS # # AX_GCC_BUILTIN(BUILTIN) # # DESCRIPTION # # This macro checks if the compiler supports one of GCC's built-in # functions; many other compilers also provide those same built-ins. # # The BUILTIN parameter is the name of the built-in function. # # If BUILTIN is supported define HAVE_. Keep in mind that since # builtins usually start with two underscores they will be copied over # into the HAVE_ definition (e.g. HAVE___BUILTIN_EXPECT for # __builtin_expect()). # # The macro caches its result in the ax_cv_have_ variable (e.g. # ax_cv_have___builtin_expect). # # The macro currently supports the following built-in functions: # # __builtin_assume_aligned # __builtin_bswap16 # __builtin_bswap32 # __builtin_bswap64 # __builtin_choose_expr # __builtin___clear_cache # __builtin_clrsb # __builtin_clrsbl # __builtin_clrsbll # __builtin_clz # __builtin_clzl # __builtin_clzll # __builtin_complex # __builtin_constant_p # __builtin_cpu_init # __builtin_cpu_is # __builtin_cpu_supports # __builtin_ctz # __builtin_ctzl # __builtin_ctzll # __builtin_expect # __builtin_ffs # __builtin_ffsl # __builtin_ffsll # __builtin_fpclassify # __builtin_huge_val # __builtin_huge_valf # __builtin_huge_vall # __builtin_inf # __builtin_infd128 # __builtin_infd32 # __builtin_infd64 # __builtin_inff # __builtin_infl # __builtin_isinf_sign # __builtin_nan # __builtin_nand128 # __builtin_nand32 # __builtin_nand64 # __builtin_nanf # __builtin_nanl # __builtin_nans # __builtin_nansf # __builtin_nansl # __builtin_object_size # __builtin_parity # __builtin_parityl # __builtin_parityll # __builtin_popcount # __builtin_popcountl # __builtin_popcountll # __builtin_powi # __builtin_powif # __builtin_powil # __builtin_prefetch # __builtin_trap # __builtin_types_compatible_p # __builtin_unreachable # # Unsupported built-ins will be tested with an empty parameter set and the # result of the check might be wrong or meaningless so use with care. # # LICENSE # # Copyright (c) 2013 Gabriele Svelto # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 7 AC_DEFUN([AX_GCC_BUILTIN], [ AS_VAR_PUSHDEF([ac_var], [ax_cv_have_$1]) AC_CACHE_CHECK([for $1], [ac_var], [ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [ m4_case([$1], [__builtin_assume_aligned], [$1("", 0)], [__builtin_bswap16], [$1(0)], [__builtin_bswap32], [$1(0)], [__builtin_bswap64], [$1(0)], [__builtin_choose_expr], [$1(0, 0, 0)], [__builtin___clear_cache], [$1("", "")], [__builtin_clrsb], [$1(0)], [__builtin_clrsbl], [$1(0)], [__builtin_clrsbll], [$1(0)], [__builtin_clz], [$1(0)], [__builtin_clzl], [$1(0)], [__builtin_clzll], [$1(0)], [__builtin_complex], [$1(0.0, 0.0)], [__builtin_constant_p], [$1(0)], [__builtin_cpu_init], [$1()], [__builtin_cpu_is], [$1("intel")], [__builtin_cpu_supports], [$1("sse")], [__builtin_ctz], [$1(0)], [__builtin_ctzl], [$1(0)], [__builtin_ctzll], [$1(0)], [__builtin_expect], [$1(0, 0)], [__builtin_ffs], [$1(0)], [__builtin_ffsl], [$1(0)], [__builtin_ffsll], [$1(0)], [__builtin_fpclassify], [$1(0, 1, 2, 3, 4, 0.0)], [__builtin_huge_val], [$1()], [__builtin_huge_valf], [$1()], [__builtin_huge_vall], [$1()], [__builtin_inf], [$1()], [__builtin_infd128], [$1()], [__builtin_infd32], [$1()], [__builtin_infd64], [$1()], [__builtin_inff], [$1()], [__builtin_infl], [$1()], [__builtin_isinf_sign], [$1(0.0)], [__builtin_nan], [$1("")], [__builtin_nand128], [$1("")], [__builtin_nand32], [$1("")], [__builtin_nand64], [$1("")], [__builtin_nanf], [$1("")], [__builtin_nanl], [$1("")], [__builtin_nans], [$1("")], [__builtin_nansf], [$1("")], [__builtin_nansl], [$1("")], [__builtin_object_size], [$1("", 0)], [__builtin_parity], [$1(0)], [__builtin_parityl], [$1(0)], [__builtin_parityll], [$1(0)], [__builtin_popcount], [$1(0)], [__builtin_popcountl], [$1(0)], [__builtin_popcountll], [$1(0)], [__builtin_powi], [$1(0, 0)], [__builtin_powif], [$1(0, 0)], [__builtin_powil], [$1(0, 0)], [__builtin_prefetch], [$1("")], [__builtin_trap], [$1()], [__builtin_types_compatible_p], [$1(int, int)], [__builtin_unreachable], [$1()], [m4_warn([syntax], [Unsupported built-in $1, the test may fail]) $1()] ) ])], [AS_VAR_SET([ac_var], [yes])], [AS_VAR_SET([ac_var], [no])]) ]) AS_IF([test yes = AS_VAR_GET([ac_var])], [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1, [Define to 1 if the system has the `$1' built-in function])], []) AS_VAR_POPDEF([ac_var]) ]) feenox-1.1/Makefile.am0000644000175000017500000003264314773607165011644 00000000000000SUBDIRS = src dist_doc_DATA = AUTHORS \ TODO \ ChangeLog \ README \ README4engineers \ README4hackers \ README4academics \ doc/programming \ doc/compilation \ doc/FAQ \ doc/CODE_OF_CONDUCT \ doc/srs \ doc/sds \ doc/feenox-manual \ doc/feenox.xml \ doc/fee.vim dist_man_MANS = doc/feenox.1 TESTS = \ tests/abort.sh \ tests/algebraic_expr.sh \ tests/annulus-modal.sh \ tests/uo2-pellet.sh \ tests/barra.sh \ tests/airfoil.sh \ tests/arguments.sh \ tests/azmy.sh \ tests/bc-groups.sh \ tests/beam-modal.sh \ tests/beam-ortho.sh \ tests/bimetallic-strip.sh \ tests/builtin.sh \ tests/circle.sh \ tests/cog.sh \ tests/cylinder-traction-force.sh \ tests/encased_rod.sh \ tests/expressions.sh \ tests/expressions_constants.sh \ tests/exp.sh \ tests/i-beam-euler-bernoulli.sh \ tests/iaea-pwr.sh \ tests/iterative.sh \ tests/fit.sh \ tests/file.sh \ tests/func_min.sh \ tests/function_algebraic.sh \ tests/function_data.sh \ tests/function_file.sh \ tests/function_mesh.sh \ tests/function_vectors.sh \ tests/hello_mpi.sh \ tests/integral.sh \ tests/lag.sh \ tests/laplace2d.sh \ tests/lebesgue.sh \ tests/los-alamos.sh \ tests/map-cube.sh \ tests/materials.sh \ tests/mesh.sh \ tests/moment-of-inertia.sh \ tests/nafems-le1.sh \ tests/nafems-le10.sh \ tests/nafems-le11.sh \ tests/nafems-t1-4.sh \ tests/nafems-t2-3.sh \ tests/neutron_diffusion_src.sh \ tests/neutron_diffusion_keff.sh \ tests/neutron-fully-mirrored.sh \ tests/parallelepiped.sh \ tests/petsc_options.sh \ tests/pipe.sh \ tests/point-kinetics.sh \ tests/print.sh \ tests/ray-effect.sh \ tests/reactions.sh \ tests/reactions-elastic.sh \ tests/reed.sh \ tests/solve.sh \ tests/spinning-disk.sh \ tests/statically_indeterminate_reaction.sh \ tests/symmetry.sh \ tests/t21.sh \ tests/thermal-1d.sh \ tests/thermal-2d.sh \ tests/thermal-3d.sh \ tests/thermal-slab-no-k.sh \ tests/thermal-slab-wrong-bc.sh \ tests/thermal-radiation.sh \ tests/transient-mesh.sh \ tests/trig.sh \ tests/two-cubes-isotropic.sh \ tests/two-cubes-orthotropic.sh \ tests/vector.sh \ tests/wilson.sh \ tests/xfail-few-properties-ortho-young.sh \ tests/xfail-few-properties-ortho-poisson.sh \ tests/xfail-few-properties-ortho-shear.sh \ tests/xfail-data-variable.sh XFAIL_TESTS = tests/abort.sh \ tests/xfail-data-variable.sh \ tests/thermal-slab-no-k.sh \ tests/thermal-slab-wrong-bc.sh \ tests/xfail-few-properties-ortho-young.sh \ tests/xfail-few-properties-ortho-poisson.sh \ tests/xfail-few-properties-ortho-shear.sh # when getting # ERROR: files left in build directory after distclean: # when creating the source dist, add them here DISTCLEANFILES = \ config.guess \ compile \ depcomp \ install-sh \ config.sub \ test-driver \ missing \ feenox \ tests/function_vectors1d.last \ tests/nafems-le10.msh \ tests/fit1d_gradient.last \ tests/fibo_vector.last \ tests/fibo_formula.last \ tests/expressions_variables.last \ tests/nafems-le10.last \ tests/square-centered.msh \ tests/2dpwr-eighth.msh \ tests/nafems-t4.msh \ tests/find_extrema2d.last \ tests/algebraic_expr.last \ tests/2dpwr-quarter.msh \ tests/fibo_iterative.last \ tests/parallelepiped.msh \ tests/print_function.last \ tests/i-beam-tet.msh \ tests/print_vector.last \ tests/i-beam-hex.msh \ tests/iterative.last \ mesh2d.msh \ laplace-square.msh \ square-f.msh \ map-cube-4-10-dst.msh \ tests/transient-from-mesh-same-dt.last \ tests/transient-to-mesh.last \ tests/cube.msh \ tests/transient-from-mesh-different-dt.last \ map-cube-4-src.msh \ map-cube-10-4-dst.msh \ map-cube-10.msh \ map-cube-4.msh \ map-cube-10-src.msh \ two-cubes-orthotropic-variables.vtk \ nafems-le1-5.vtk \ parallelepiped-thermal.msh \ long-bar-unstruct-temperature.msh \ two-cubes-orthotropic-functions.vtk \ tests/reaction-elastic-lt.last \ tests/spinning-disk-parallel-solid-halfquarter_unstruct.msh \ tests/reaction-displ.last \ tests/nafems-le11-tet4.msh \ tests/pellet.msh \ tests/wilson-2d.msh \ tests/nafems-le11-hex27.msh \ tests/two-cubes.msh \ tests/spinning-disk-parallel-plane-quarter_unstruct.msh \ tests/spinning-disk-parallel-plane-eighth_unstruct.msh \ tests/reaction-elastic-lr.last \ tests/spinning-disk-parallel-solid-halfeighth_unstruct.msh \ tests/long-bar-struct.msh \ tests/reaction-force.last \ tests/nafems-t1.msh \ tests/long-bar-unstruct.msh \ tests/encased_rod.msh \ tests/spinning-disk-parallel-plane-sixteenth_unstruct.msh \ tests/nafems-le11-tet10.msh \ tests/statically_indeterminate_reaction.msh \ tests/wilson-1d.msh \ tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.msh \ tests/nafems-le11-hex8.msh \ tests/nafems-le11-hex20.msh \ nafems-le1-4.vtk \ nafems-le11-hex27.vtk \ nafems-le1-1.vtk \ nafems-le1-2.vtk \ long-bar-struct-temperature.msh \ nafems-le11-hex20.vtk \ nafems-le1-6.vtk \ parallelepiped-coarse.msh \ nafems-le1-8.vtk \ encased_rod_tb.vtk \ encased_rod_lb.vtk \ two-cubes-isotropic-materials.vtk \ nafems-t4-result.msh \ nafems-le1-3.vtk \ nafems-le11-tet10.vtk \ two-cubes-isotropic-functions.vtu \ nafems-le11-hex8.vtk \ two-cubes-orthotropic-materials.vtk \ two-cubes-isotropic-variables.vtk \ nafems-le1-7.vtk \ nafems-le11-tet4.vtk \ tests/annulus-modal.last \ tests/annulus.msh \ cube-radial.vtk \ mesh2d.vtk \ ./tests/expressions_cumbersome.last \ ./tests/steps.last \ ./tests/printf.last \ ./square_tmp.vtk \ ./two-is-2.txt \ ./circle_perimeter2.dat \ ./circle-1-0.4.msh \ ./circle-2-0.3.msh \ ./circle-1-0.7.msh \ ./circle-2-0.35.msh \ ./circle-1-0.5.msh \ ./circle-1-0.6.msh \ ./circle-2-0.7.msh \ ./circle-2-0.4.msh \ ./circle-1-0.3.msh \ ./circle-1-0.35.msh \ ./circle-2-0.6.msh \ ./circle-2-0.5.msh \ ./circle_perimeter1.dat \ ./orthotropic-beam-hex27.msh \ ./2dpwr-eighth.vtu \ ./poisson-square.msh \ ./ray-effect-diffusion-full.msh \ ./ray-effect-quarter-4.msh \ ./thermal-square.vtk \ ./orthotropic-beam-hex8.msh \ ./tests/la-p08-PUb-1-0-SP.msh \ ./tests/square-struct.msh \ ./tests/reed.msh \ ./tests/pipe-ust10-2-2.msh \ ./tests/la-p10-PUb-H2O_10-1-0-CY.msh \ ./tests/pipe-sch27-2-2.msh \ ./tests/PF.msh \ ./tests/la-p02-PUa-1-0-SL.msh \ ./tests/la-p06-PUb-1-0-SL.msh \ ./tests/pipe-ssh20-2-2.msh \ ./tests/azmy-structured.msh \ ./tests/la-p09-PUb-H2O_1-1-0-CY.msh \ ./tests/pipe-sct10-2-2.msh \ ./tests/la-IN.msh \ ./tests/pipe-ssh27-2-2.msh \ ./tests/la-p48-U-2-0-SL.msh \ ./tests/maze.msh \ ./tests/la-p49-U-2-0-SP.msh \ ./tests/bimetallic-strip.msh \ ./tests/la-p03-PUa-H2O_1-1-0-SL.msh \ ./tests/pipe-sst10-2-2.msh \ ./tests/heater-cylinder-inches.msh \ ./tests/la-p07-PUb-1-0-CY.msh \ ./tests/pipe-sch20-2-2.msh \ ./tests/la-p04-PUa-H2O_0.5-1-0-SL.msh \ ./tests/la-p51-UAl-2-0-SL.msh \ ./tests/pipe-uct10-2-2.msh \ ./ray-effect-full-4.msh \ ./orthotropic-beam-tet4.msh \ ./ray-effect-half-4.msh \ ./spinning-disk-parallel-plane-eighth_unstruct.vtk \ ./2dpwr-quarter.vtu \ ./ray-effect-diffusion-quarter.msh \ ./ray-effect-diffusion-half.msh \ ./orthotropic-beam-hex20.msh \ ./orthotropic-beam-tet10.msh \ ./spinning-disk-parallel-plane-quarter_unstruct.vtk \ ./reaction-force.vtu \ ./airfoil-converged.vtk \ ./spinning-disk-parallel-plane-sixteenth_unstruct.vtk \ ./heater-cylinder-inches.vtu \ ./heater-cylinder-inches.vtk \ ./heater-cylinder-inches-results.msh \ ./ray-effect-diffusion-eighth.msh \ ./airfoil-converged.msh \ ./ray-effect-eighth-4.msh \ ./tests/bc-groups1.last \ ./tests/bc-groups2.last \ ./tests/bc-groups3.last \ ./tests/bc-groups4.last \ ./bc-groups1.last \ ./bc-groups2.last \ ./bc-groups3.last \ ./bc-groups4.last \ ./tests/wilson-2d-0.vtk \ ./tests/wilson-2d-100.vtk \ ./tests/wilson-2d-10.vtk \ ./tests/wilson-2d-175.vtk \ ./tests/wilson-2d-50.vtk \ ./tests/wilson-2d-87.5.vtk \ ./wilson-2d-0.vtk \ ./wilson-2d-100.vtk \ ./wilson-2d-10.vtk \ ./wilson-2d-175.vtk \ ./wilson-2d-50.vtk \ ./wilson-2d-87.5.vtk all-local: cp -r src/feenox$(EXEEXT) . # clean-local: code-coverage-clean # distclean-local: code-coverage-dist-clean feenox-1.1/install-sh0000755000175000017500000003577614773607171011623 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 # Create dirs (including intermediate dirs) using mode 755. # This is like GNU 'install' as of coreutils 8.32 (2020). mkdir_umask=22 backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -p pass -p to $cpprog. -s $stripprog installed files. -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG By default, rm is invoked with -f; when overridden with RMPROG, it's up to you to specify -f if you want it. If -S is not specified, no backups are attempted. Email bug reports to bug-automake@gnu.org. Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; -S) backupsuffix="$2" shift;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false # The $RANDOM variable is not portable (e.g., dash). Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap ' ret=$? rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null exit $ret ' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # If $backupsuffix is set, and the file being installed # already exists, attempt a backup. Don't worry if it fails, # e.g., if mv doesn't support -f. if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: feenox-1.1/TODO0000644000175000017500000001364514773607204010273 000000000000002025-04-03 - 1 General things to do - 1.1 Tests - 1.2 Optimizations - 1.3 Wasora keywords - 1.4 Wasora-like stuff - 1.5 API - 1.6 Nice to have - 1.7 Command-line arguments - 1.8 Error handling - 1.9 Postprocessing output - 2 Meshes - 3 PDEs - 3.1 Laplace/Poisson/Helmholtz - 3.2 Heat - 3.3 Mechanical - 3.4 Modal - 3.5 Neutron - 4 V & V - 5 PDEs [1 General things to do]: #general-things-to-do [1.1 Tests]: #tests [1.2 Optimizations]: #optimizations [1.3 Wasora keywords]: #wasora-keywords [1.4 Wasora-like stuff]: #wasora-like-stuff [1.5 API]: #api [1.6 Nice to have]: #nice-to-have [1.7 Command-line arguments]: #command-line-arguments [1.8 Error handling]: #error-handling [1.9 Postprocessing output]: #postprocessing-output [2 Meshes]: #meshes [3 PDEs]: #pdes [3.1 Laplace/Poisson/Helmholtz]: #laplacepoissonhelmholtz [3.2 Heat]: #heat [3.3 Mechanical]: #mechanical [3.4 Modal]: #modal [3.5 Neutron]: #neutron [4 V & V]: #v-v [5 PDEs]: #pdes-1 General things to do - implicit call to SOLVE_PROBLEM? - for/while loops? - use DMPlex? - allocate matrices? - dump states? - choose to use it or not - FIT to mesh-based functions - FIT taking into account uncertainties - extended integration (as in reduced, full, extended) - make GSL optional - rewrite BLAS using ad-hoc routines - wrap all GSL calls inside #ifdef - use a large chunk of contiguous memory in the heap to store shape functions, gradients, etc - optimize MPI usage - variables mpi_rank, mpi_size, memory_total y memory_local(rank) - V&V - fully document tests - section for MMS Tests - use the same documentation strategy from doc/examples in tests - write a README and an explanation of each test - cell-based mesh writes and integrations - FIT ranges - more MPI tests Optimizations - if the elements are straight all the jacobians are the same and there is no need to sweep over gauss points - make two lists of elements, one for bulk and one for BCs and loop over those - re-think fem.c to store per-gauss point data in a cache-friendly way - remove branches (and replace with what?) - use ad-hoc matrices instead of gsl_matrix? - have a contiguous array of memory that stores all the per-element matrices in a row-major order - access them using macros dhdx(row,col) - mind SSE! - https://github.com/niswegmann/small-matrix-inverse - have compile-time macros that will optimize for - speed - memory - something else - create FeenoX flavors with compile-time - problem type (so we can avoid function pointers) - problem dimension (so we can hardcode sizes) - full or axi-symmetry - scalar size (float or double) - all elements are of the same type - use MatSetValuesBlocked() Wasora keywords - SEMAPHORE + SHARED_MEMORY - READ / WRITE - M4 (MUSTACHE? MACRO?) - SHELL - HISTORY - PRINT_FUNCTION PHYSICAL_ENTITY -> for dumping and reading back BCs - CALL user routines (check hash of feenox.h) Wasora-like stuff - vector & matrix assignments & DAEs - debug mode, line-by-line - run feenox with an option like -d or --debug and then present a gdb-like interface with print, and step by step advances - trap and handle signit & sigterm API - Python? - Julia? - come up with an example in C Nice to have - ask how to set OMP_NUM_THREADS=1 - logarithmic ranges for PRINT_FUNCTION - default separator after TEXT should be space, after numerical should be tab - PRINT_FUNCTION with %f in between arguments (like PRINT_VECTOR) - BLAS - BLAS a * b = s # scalar dot - BLAS a x b = c # vector cross - BLAS A * b = c # matrix-vector - BLAS a + b = c # vector - BLAS A + B = C # matrix - BLAS a - b = c - BLAS A - B = C Command-line arguments - list symbols with -l Error handling - GSL error handling - feenox_nan_error() - feenox_gsl_handler() Postprocessing output - formats - xdmf? (needs DMView() and VecView()) - frd? (to be able to use ccx’s post processor… is it worth it?) - binary msh and vtu - msh v4.1 - cgns? - med? - full tensors Meshes - expose the vectors with the node coordinates PDEs - check when the matrices do not need to be rebuilt – use constant flag - allow different material model for each volume! - so far we have a global material model, i.e. all the materials have to be orthotropic - this is wrong! - remove the need of needing an explicit SOLVE_PROBLEM - detect which variables/functions are PDE outputs and call solve_problem() the first time they are needed - benchmark MPI (read .msh with partitioning info first) - openmp to build matrices and compute stresses? not sure, we’d have to rewrite the building stuff thread safe, it should be mpi on a partitioned mesh - glue (mortar) - investigate -mpi_linear_solver_server - direct elimination for multi-freedom BCs Laplace/Poisson/Helmholtz - poisson f = 1, eta = 0 - helmholtz f = 1, eta = 1 - investigate dsyrk() instead of dgemmv() https://stackoverflow.com/questions/47013581/blas-matrix-by-matrix-transpose-multiply Heat - improve parallel runs - convection with a separate matrix? think! - explain that radiation is better off as an expression - same for total heat sources/bcs - orthotropic conductivity Mechanical - large deformation - non-linear materials - stresses: count negative jacobians and worst jacobians - strain energy density Modal - partially-unconstrained DOFs in arbitrary directions Neutron - current in BCs - FVM? - allow per-material fission spectrum (it has to be uniform and normalized) V & V - MMS PDEs - CFD? - LBM? - Electromagnetism? - FVM feenox-1.1/configure.ac0000644000175000017500000003260714773607165012076 00000000000000dnl Process this file with autoconf to produce a configure script. dnl dnl This file is free software; as a special exception the author gives dnl unlimited permission to copy and/or distribute it, with or without dnl modifications, as long as this notice is preserved. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY, to the extent permitted by law; without even the dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. m4_include([version.m4]) m4_include([ax_gcc_builtin.m4]) AC_INIT([feenox],feenoxversion,[jeremy@seamplex.com]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([${srcdir}/src/feenox.c]) AC_CANONICAL_HOST AM_INIT_AUTOMAKE AC_PROG_CC AC_PROG_INSTALL # TODO: investigate #AX_CODE_COVERAGE AC_ARG_WITH( [debug], AS_HELP_STRING([--with-debug], [compile with debugging symbols @<:@default=no@:>@]), [], [with_debug=no] ) # AC_ARG_WITH( # [fee2ccx], # AS_HELP_STRING([--with-fee2ccx], [compile fee2ccx @<:@default=no@:>@]), # [], # [with_fee2ccx=no] # ) ###################### # default optimization flags AS_IF([test "x$CFLAGS" = "x-g -O2"], AS_IF([test "x${with_debug}" = "xyes"] , [ CFLAGS="-g -O0" ],[ CFLAGS="-O3 -flto=auto -no-pie" ]) ) ###################### # libraries # check for math AC_SEARCH_LIBS([cos],[m],[],AC_MSG_ERROR([libm not found])) AC_CHECK_HEADER([math.h],[],AC_MSG_ERROR([math.h not found])) # check for sysconf() for page size AC_CHECK_FUNCS([sysconf],[],[]) # check for clock_gettime() for unix time AC_CHECK_FUNCS([clock_gettime],[],[]) # check for getrusage() for memory and cpu time AC_CHECK_FUNCS([getrusage],[],[]) # check for asprintf AC_CHECK_FUNCS([asprintf],[],[]) # check for feenox_likely AX_GCC_BUILTIN(__builtin_expect) # some other stuff that should be pretty standard # but we comment out to have a smaller compilation string #AC_CHECK_FUNCS([floor memset pow rint sqrt strcasecmp strchr strdup strerror strncasecmp strpbrk strrchr strstr], [], []) #AC_CHECK_HEADERS(fcntl.h limits.h malloc.h stddef.h, [], []) #AC_CHECK_HEADER_STDBOOL #AC_CHECK_TYPES([ptrdiff_t]) #AC_C_INLINE #AC_FUNC_ALLOCA #AC_FUNC_MALLOC #AC_FUNC_REALLOC #AC_TYPE_SIZE_T #AC_TYPE_UINT16_T #AC_TYPE_UINT32_T #AC_TYPE_UINT8_T ###################### # check for Readline (optional) # the default is read from the macro argument, but the help string # does not expand variables so it always states that it is "check" #AC_ARG_WITH( #[readline], #AS_HELP_STRING([--with-readline], [support interactive debug mode @<:@default=check@:>@]), #[], #[with_readline=check] #) #have_readline="no" #AS_IF([test "x${with_readline}" != "xno"] , [ #AC_CHECK_HEADER([readline/readline.h], #[], #AS_IF([test "x${with_readline}" != "xcheck"], AC_MSG_FAILURE([--with-readline was given but test for readline headers failed])) #) #AC_CHECK_LIB([readline], [readline], #[], #AS_IF([test "x${with_readline}" != "xcheck"], #AC_MSG_FAILURE([--with-readline was given but test for readline library failed]) #) #) #]) # check if we have everything #AS_IF([test "x${ac_cv_lib_readline_readline}" = "xyes" -a \ #"x${ac_cv_header_readline_readline_h}" = "xyes" ], #[ #AC_DEFINE(HAVE_READLINE) #have_readline="yes" #], #) ###################### # check for SUNDIALS (optional) # the default is read from the macro argument, but the help string # does not expand variables so it always states that it is "check" AC_ARG_WITH( [sundials], AS_HELP_STRING([--with-sundials], [use SUNDIALS to solve DAEs @<:@default=check@:>@]), [], [with_sundials=check] ) have_sundials="no" AS_IF([test "x${with_sundials}" != "xno"] , [ CC_OLD=$CC CC=mpicc AC_CHECK_HEADERS([sundials/sundials_types.h ida/ida.h sundials/sundials_linearsolver.h], [], AS_IF([test "x${with_sundials}" != "xcheck"], AC_MSG_FAILURE([--with-sundials was given but test for libsundials-dev headers failed])) ) AC_CHECK_LIB([sundials_ida], [IDAInit], [], AS_IF([test "x${with_sundials}" != "xcheck"], AC_MSG_FAILURE([--with-sundials was given but test for libsundials-dev library failed]) ) ) AC_CHECK_LIB([sundials_core], [SUNContext_Create], [], AS_IF([test "x${with_sundials}" != "xcheck"], AC_MSG_FAILURE([--with-sundials was given but test for libsundials-dev library failed]) ) ) AC_CHECK_HEADER([nvector/nvector_serial.h], [], AS_IF([test "x${with_sundials}" != "xcheck"], AC_MSG_FAILURE([--with-sundials was given but test for libsundials-dev library failed]) ) ) AC_CHECK_LIB([sundials_nvecserial], [N_VNew_Serial], [], AS_IF([test "x${with_sundials}" != "xcheck"], AC_MSG_FAILURE([--with-sundials was given but test for libsundials-dev library failed]) ) ) CC=$CC_OLD ]) # check if we have everything AS_IF([test "x${ac_cv_lib_sundials_ida_IDAInit}" = "xyes" -a \ "x${ac_cv_header_sundials_sundials_types_h}" = "xyes" -a \ "x${ac_cv_lib_sundials_nvecserial_N_VNew_Serial}" = "xyes" -a \ "x${ac_cv_header_nvector_nvector_serial_h}" = "xyes"], [ AC_DEFINE([HAVE_SUNDIALS], [], [SUNDIALS is available]) have_sundials="yes" ] ) ###################### # check for PETSc (optional) AC_ARG_WITH([petsc], [AS_HELP_STRING([--with-petsc], [use PETSc to solve PDEs @<:@default=check@:>@])], [], [with_petsc=check] ) have_petsc="no" AS_IF([test "x${with_petsc}" != "xno"], [ AC_ARG_VAR(PETSC_DIR, [location of PETSc installation]) AC_ARG_VAR(PETSC_ARCH, [PETSc architecture]) # assume we found it petsc_found=1 AC_MSG_CHECKING([for PETSc dir]) AS_IF([test -z "${PETSC_DIR}"], [ AC_MSG_CHECKING([empty, trying /usr/lib/petsc]) export PETSC_DIR=/usr/lib/petsc ]) AS_IF([test ! -d "${PETSC_DIR}"], [ AC_MSG_RESULT([no]) petsc_found=0 ], [test ! -d "${PETSC_DIR}/include"], [ AC_MSG_RESULT([broken]) petsc_found=0 ], [test ! -f "${PETSC_DIR}/include/petscversion.h"], [ AC_MSG_RESULT([broken]) petsc_found=0 ],[ AC_MSG_RESULT([${PETSC_DIR}]) ]) AS_IF([test ${petsc_found} -eq 1], [ AC_MSG_CHECKING([for PETSc arch]) AS_IF([test ! -e "${PETSC_DIR}/${PETSC_ARCH}/lib/petsc/conf/petscvariables"], [ AC_MSG_RESULT([broken]) AC_MSG_ERROR([cannot find ${PETSC_DIR}/${PETSC_ARCH}/lib/petsc/conf/petscvariables. Do you have a working PETSc installation? See this page for help: https://seamplex.com/feenox/doc/compilation.html]) petsc_found=0 ], AC_MSG_RESULT([${PETSC_ARCH}]) ) ]) AS_IF([test ${petsc_found} -eq 1], [ AC_DEFINE([HAVE_PETSC], [1], [PETSc is available]) have_petsc="yes" ] ) ]) ###################### # check for SLEPc (optional) AC_ARG_WITH([slepc], [AS_HELP_STRING([--with-slepc], [use PETSc to solve PDEs @<:@default=check@:>@])], [], [with_slepc=check] ) have_slepc="no" AS_IF([test "x${have_petsc}" != "xno" -a "x${with_slepc}" != "xno"], [ AC_ARG_VAR(SLEPC_DIR, [location of SLEPc installation]) # assume we found it slepc_found=1 AC_MSG_CHECKING([for SLEPc dir]) AS_IF([test -z "${SLEPC_DIR}"], [ # first try to see if PETSc was configured with --download-slepc export SLEPC_DIR=${PETSC_DIR}/${PETSC_ARCH}/externalpackages/git.slepc AS_IF([test ! -d ${SLEPC_DIR}],[ # otherwise see if it is in the standard location as installed with apt # this works in Debian, not sure about other (it does not on Fedora) export SLEPC_DIR=/usr/lib/slepc ]) AC_MSG_CHECKING([empty, trying ${SLEPC_DIR}]) ]) AS_IF([ test -z "${SLEPC_DIR}" ], [ AC_MSG_CHECKING([empty, trying /usr/lib/slepc]) export SLEPC_DIR=/usr/lib/slepc ]) AS_IF([ test ! -d "${SLEPC_DIR}" ], [ AC_MSG_RESULT([no]) slepc_found=0 ], [test ! -d "${SLEPC_DIR}/include"], [ AC_MSG_RESULT([broken no include]) slepc_found=0 ], [test ! -f "${SLEPC_DIR}/include/slepcversion.h"], [ AC_MSG_RESULT([broken no version]) slepc_found=0 ], [test ! -f "${SLEPC_DIR}/${PETSC_ARCH}/lib/slepc/conf/slepcvariables"], [ AC_MSG_RESULT([broken no variables]) slepc_found=0 ], AC_MSG_RESULT([${SLEPC_DIR}]) ) AS_IF([test ${slepc_found} -eq 1], [ AC_DEFINE([HAVE_SLEPC], [1], [SLEPc is available]) have_slepc="yes" ] ) ]) # if slepc is found we need to include its makefile, # otherwise petsc and otherwise nothing AM_CONDITIONAL([INCLUDE_PETSC], [test "x${have_petsc}" = "xyes" -a "x${have_slepc}" = "xno"]) AM_CONDITIONAL([INCLUDE_SLEPC], [test "x${have_slepc}" = "xyes"]) ###################### # see if we have --enable-download-gsl gslver=2.8 gsldist=gsl-${gslver} gslmirror=http://ftpmirror.gnu.org/gsl/${gsldist}.tar.gz AC_ARG_ENABLE([download-gsl], [AS_HELP_STRING([--enable-download-gsl], [try to automatically download and compile GSL @<:@default=no@:>@])], [download_gsl=yes], [download_gsl=no]) # if gsl directory does not exist, see if we have to uncompress and/or download AS_IF([test ! -e ${gsldist}],[ AS_IF([test ! -e ${gsldist}.tar.gz],[ AS_IF([test "x$download_gsl" = "xyes"],[ AS_IF([test "x$(which wget)" != "x"],[ AC_MSG_NOTICE([downloading ${gslmirror}]) wget -c ${gslmirror} ],[ AC_MSG_ERROR([file ${gsldist}.tar.gz not found and wget not installed]) ]) AS_IF([test ! -e ${gsldist}.tar.gz],[ AC_MSG_ERROR([file ${gsldist}.tar.gz could not be downloaded, copy it manually and re-try.]) ]) ]) ]) AS_IF([test -e ${gsldist}.tar.gz],[ AC_MSG_NOTICE([uncompressing ${gsldist}.tar.gz]) tar xzf ${gsldist}.tar.gz ]) ]) # if gsl directory exists, see if we have to compile it AS_IF([test -e ${gsldist}],[ AS_IF([test -e ${gsldist}/.libs/libgsl.a],[ AC_MSG_NOTICE([using already-compiled GSL library ${gsldist}/.libs/libgsl.a]) ],[ AC_MSG_NOTICE([configuring ${gsldist}]) cd ${gsldist} ./configure --prefix=${prefix} --host=${host} AC_MSG_NOTICE([compiling ${gsldist}]) make cd .. ]) AC_SUBST([DOWNLOADED_GSL_LIBS], ["../${gsldist}/.libs/libgsl.a ../${gsldist}/cblas/.libs/libgslcblas.a"]) AC_SUBST([DOWNLOADED_GSL_INCLUDES], ["-I ../${gsldist} -I ../../${gsldist}"]) gsl_version="${gslver} (downloaded and statically linked)" ],[ # traditional test for GSL # check for GSL & CBLAS (required) AC_CHECK_HEADER([gsl/gsl_vector.h], [], AC_MSG_ERROR([GNU Scientific library headers libgsl-dev not found. Either install them with your package manager or configure with --enable-download-gsl])) # TODO: the original idea is that # if we found PETSc, we use whatever BLAS it has, otherwise we use GSL's CBLAS # but this does not work in Fedora since even though the library flexiblas # that is used by PETSc does contain cblas_dgemm, it is not found by the linker #AS_IF([test "x${have_petsc}" != "xyes"], AC_CHECK_LIB([gslcblas],[cblas_dgemm], [], AC_MSG_ERROR([GNU Scientific library CBLAS libgsl-dev not found])) #) AC_CHECK_LIB([gsl],[gsl_blas_dgemm], [], AC_MSG_ERROR([GNU Scientific library libgsl-dev not found])) gsl_version="from system" ]) # give some information about the compiler in the summary compiler_command="${CC}" compiler_show="${compiler_command}" AS_IF([test "x${have_petsc}" = "xyes"],[ AS_IF([test ! -z "$(which mpicc)"],[ compiler_command="mpicc" compiler_show="$(${compiler_command} -show | sed 's/"/\\"/g')" ]) ]) compiler_version=$(${compiler_command} --version | head -n1 | tr -d \\n]) ###################### # create version.h AC_MSG_NOTICE([gathering versions]) AC_DEFINE([FEENOX_VERSION], "feenoxversion", [FeenoX version string]) # these guys create problems with reprotest # AC_DEFINE([FEENOX_COMPILATION_DATE], ["m4_esyscmd([date +'%a %b %d %H:%M:%S %Y %z' | tr -d \\n])"], [FeenoX compilation date]) # AC_DEFINE([FEENOX_COMPILATION_USERNAME], ["m4_esyscmd([whoami | sed s/\\\\\\\\// | tr -d \\n])"], [FeenoX compilation username]) # AC_DEFINE([FEENOX_COMPILATION_HOSTNAME], ["m4_esyscmd([hostname | tr -d \\n])"], [FeenoX compilation hostname]) m4_include(versiongit.m4) AC_DEFINE_UNQUOTED([FEENOX_COMPILER_COMMAND], ["$compiler_command"], [FeenoX compiler command]) AC_DEFINE_UNQUOTED([FEENOX_COMPILER_ARCH], ["$host_os $host_cpu"], [FeenoX compiler architecture]) AC_DEFINE_UNQUOTED([FEENOX_COMPILER_VERSION], ["$compiler_version"], [Feenox compiler version]) AC_DEFINE_UNQUOTED([FEENOX_COMPILER_SHOW], ["${compiler_show}"], [FeenoX actual compiler command]) AC_DEFINE_UNQUOTED([FEENOX_COMPILER_CFLAGS], ["${CFLAGS}"], [CFLAGS]) AC_DEFINE_UNQUOTED([FEENOX_COMPILER_LDFLAGS], ["${LDFLAGS}"], [LDFLAGS]) ###################### # create some links to pass make distcheck m4_include(auto_links.m4) AC_CONFIG_FILES([Makefile src/Makefile]) # AC_CONFIG_FILES([src/benchmark/Makefile]) # AC_CONFIG_FILES([doc/Makefile]) # AS_IF([test "x${with_fee2ccx}" = "xyes"] , [ # AC_CONFIG_FILES([utils/fee2ccx/Makefile]) # ]) AS_BOX([Summary of dependencies]) AS_ECHO( [" GNU Scientific Library ${gsl_version}"]) # AS_ECHO( [" Readline ${have_readline}"]) AS_ECHO( [" SUNDIALS ${have_sundials}"]) AS_ECHO_N([" PETSc ${have_petsc}"]) AS_IF([test "x${have_petsc}" = "xyes"], AS_ECHO([" ${PETSC_DIR} ${PETSC_ARCH}"]), AS_ECHO ) AS_ECHO_N([" SLEPc ${have_slepc}"]) AS_IF([test "x${have_slepc}" = "xyes"], AS_ECHO([" ${SLEPC_DIR}"]), AS_ECHO ) # AS_ECHO( [" Configure fee2ccx ${with_fee2ccx}"]) AS_ECHO( [" Compiler ${compiler_show}"]) AS_ECHO( [" Compiler flags ${CFLAGS}"]) # AS_ECHO( [" Linker flags ${LDFLAGS}"]) AC_OUTPUT feenox-1.1/test-driver0000755000175000017500000001141714773607171011777 00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2018-03-07.03; # UTC # Copyright (C) 2011-2021 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <"$log_file" "$@" >>"$log_file" 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>"$log_file" # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: feenox-1.1/versiongit.m40000644000175000017500000000042714773607166012237 00000000000000AC_DEFINE([FEENOX_GIT_VERSION], ["v1.1"], [FeenoX Git version string]) AC_DEFINE([FEENOX_GIT_BRANCH], ["main"], [FeenoX Git branch]) AC_DEFINE([FEENOX_GIT_DATE], ["Thu Apr 3 19:40:37 2025 -0300"], [FeenoX Git date]) AC_DEFINE([FEENOX_GIT_CLEAN], ["0"], [FeenoX Git clean]) feenox-1.1/Makefile.in0000644000175000017500000035113014773607171011645 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/version.m4 \ $(top_srcdir)/ax_gcc_builtin.m4 $(top_srcdir)/versiongit.m4 \ $(top_srcdir)/auto_links.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(dist_doc_DATA) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = tests/abort.sh tests/airfoil.sh \ tests/algebraic_expr.sh tests/annulus-modal.sh \ tests/arguments.sh tests/azmy.sh tests/barra.sh \ tests/bc-groups.sh tests/beam-modal.sh tests/beam-ortho.sh \ tests/bimetallic-strip.sh tests/builtin.sh \ tests/bunny-diffusion.sh tests/bunny-modal.sh \ tests/bunny-sn.sh tests/bunny-thermal-mpi.sh \ tests/bunny-thermal.sh tests/circle.sh tests/clean.sh \ tests/cog.sh tests/cube-expansion.sh \ tests/cylinder-traction-force.sh tests/encased_rod.sh \ tests/exp.sh tests/expressions.sh \ tests/expressions_constants.sh tests/file.sh tests/fit.sh \ tests/func_min.sh tests/function_algebraic.sh \ tests/function_data.sh tests/function_file.sh \ tests/function_mesh.sh tests/function_vectors.sh \ tests/functions.sh tests/hello_mpi.sh \ tests/i-beam-euler-bernoulli.sh tests/iaea-pwr.sh \ tests/integral.sh tests/iterative.sh tests/lag.sh \ tests/laplace2d.sh tests/lebesgue.sh tests/los-alamos.sh \ tests/map-cube.sh tests/materials.sh tests/mesh.sh \ tests/moment-of-inertia.sh tests/nafems-le1.sh \ tests/nafems-le10.sh tests/nafems-le11.sh tests/nafems-t1-4.sh \ tests/nafems-t2-3.sh tests/neutron-fully-mirrored.sh \ tests/neutron_diffusion_keff.sh tests/neutron_diffusion_src.sh \ tests/ortho-expansion-alpha-of-space.sh \ tests/parallelepiped.sh tests/petsc_options.sh tests/pipe.sh \ tests/point-kinetics.sh tests/print.sh tests/qrng.sh \ tests/ray-effect.sh tests/reactions-elastic.sh \ tests/reactions.sh tests/reed.sh tests/solve.sh \ tests/spinning-disk.sh \ tests/statically_indeterminate_reaction.sh tests/symmetry.sh \ tests/t21.sh tests/thermal-1d.sh tests/thermal-2d.sh \ tests/thermal-3d.sh tests/thermal-radiation.sh \ tests/thermal-slab-no-k.sh tests/thermal-slab-wrong-bc.sh \ tests/transient-mesh.sh tests/trig.sh \ tests/two-cubes-isotropic.sh tests/two-cubes-orthotropic.sh \ tests/uo2-pellet.sh tests/vector.sh tests/wilson.sh \ tests/xfail-data-variable.sh \ tests/xfail-few-properties-ortho-poisson.sh \ tests/xfail-few-properties-ortho-shear.sh \ tests/xfail-few-properties-ortho-young.sh tests/2dpwr.fee \ tests/Barra1D_a_Estac.fee tests/Barra1D_b_Trans.fee \ tests/H2O.fee tests/Pu-239a.fee tests/Pu-239b.fee \ tests/U-235.fee tests/U-Al.fee tests/URRa.fee tests/abort.fee \ tests/airfoil.fee tests/algebraic_expr.fee tests/alias.fee \ tests/annulus-modal.fee tests/arguments_bracketed.fee \ tests/arguments_quoted.fee tests/arguments_self.fee \ tests/assignment_scalar.fee tests/atan2.fee \ tests/azmy-structured.fee tests/bc-groups1.fee \ tests/bc-groups2.fee tests/bc-groups3.fee tests/bc-groups4.fee \ tests/bc-groups6.fee tests/beam-cantilever-modal-free-free.fee \ tests/beam-cantilever-modal.fee tests/bimetallic-strip.fee \ tests/bunny-diffusion.fee tests/bunny-modal-fixed.fee \ tests/bunny-modal-free.fee tests/bunny-modal-rest.fee \ tests/bunny-modal.fee tests/bunny-sn-box.fee \ tests/bunny-sn.fee tests/bunny-thermal-mpi.fee \ tests/bunny-thermal.fee tests/circle_fit.fee \ tests/circle_perimeter.fee tests/circle_surface.fee \ tests/cmp-float.fee tests/cmp-zero.fee tests/convectionNL.fee \ tests/cube-cog.fee \ tests/cube-free-expansion-alpha-of-space-orthotropic.fee \ tests/cube-free-expansion-alpha-of-temperature-orthotropic.fee \ tests/cube-free-expansion-uniform-isotropic.fee \ tests/cube-free-expansion-uniform-orthotropic.fee \ tests/cube-radial.fee \ tests/cube-restrained-expansion-uniform-isotropic.fee \ tests/cube-restrained-expansion-uniform-orthotropic.fee \ tests/cube-tangential.fee tests/cylinder-force.fee \ tests/cylinder-traction.fee tests/default_argument_value.fee \ tests/diffusion-square-fully-mirrored.fee \ tests/encased_rod_lr.fee tests/encased_rod_tb.fee \ tests/exp.fee tests/expr.fee tests/expressions_cumbersome.fee \ tests/expressions_functions.fee tests/expressions_seven.fee \ tests/expressions_sum.fee tests/expressions_variables.fee \ tests/fibo_formula.fee tests/fibo_iterative.fee \ tests/fibo_vector.fee tests/file-append.fee tests/file.fee \ tests/find_extrema2d.fee tests/fit1d.fee \ tests/fit1d_gradient.fee tests/fit1d_sigma.fee tests/fit2d.fee \ tests/func_min.fee tests/function_algebraic.fee \ tests/function_data1d.fee tests/function_data1dlinear.fee \ tests/function_data1dlinearchanged.fee \ tests/function_data2d.fee tests/function_file1d.fee \ tests/function_file1d_columns.fee tests/function_over_mesh.fee \ tests/function_vectors1d.fee tests/geometric_series.fee \ tests/heater-cylinder-inches.fee tests/hello.fee \ tests/hello_mpi.fee tests/hoc.fee \ tests/i-beam-euler-bernoulli.fee tests/if.fee \ tests/implicit.fee tests/include.fee \ tests/initial_conditions.fee tests/integrate2d.fee \ tests/inverse-dae.fee tests/inverse-integral.fee \ tests/iterative.fee tests/la-p01-PUa-1-0-IN.fee \ tests/la-p02-PUa-1-0-SL.fee tests/la-p03-PUa-H2O_1-1-0-SL.fee \ tests/la-p04-PUa-H2O_0.5-1-0-SL.fee \ tests/la-p05-PUb-1-0-IN.fee tests/la-p06-PUb-1-0-SL.fee \ tests/la-p07-PUb-1-0-CY.fee tests/la-p08-PUb-1-0-SP.fee \ tests/la-p09-PUb-H2O_1-1-0-CY.fee \ tests/la-p10-PUb-H2O_10-1-0-CY.fee tests/la-p47-U-2-0-IN.fee \ tests/la-p48-U-2-0-SL.fee tests/la-p49-U-2-0-SP.fee \ tests/la-p50-UAl-2-0-IN.fee tests/la-p51-UAl-2-0-SL.fee \ tests/la-p52-UAl-2-0-SP.fee tests/la-p70-URRa-2-1-IN.fee \ tests/la-p71-URRa-2-1-SL.fee tests/lag.fee \ tests/lag_compact.fee tests/laplace-square.fee \ tests/logphi.fee tests/long-bar-mechanical.fee \ tests/long-bar-thermal.fee tests/map-cube-create.fee \ tests/map-cube.fee tests/map-function.fee tests/materials.fee \ tests/matrix.fee tests/maze.fee tests/mesh3d.fee \ tests/modal-beam-cantilever.fee tests/modal-solidworks.fee \ tests/modal_rectangular_beam.fee tests/moment-of-inertia.fee \ tests/nafems-le1.fee tests/nafems-le10.fee \ tests/nafems-le11-alpha-of-T.fee \ tests/nafems-le11-alpha-of-x.fee tests/nafems-le11.fee \ tests/nafems-t1.fee tests/nafems-t2-1d.fee \ tests/nafems-t2-3d.fee tests/nafems-t3-1d.fee \ tests/nafems-t3-3d.fee tests/nafems-t4.fee tests/open.fee \ tests/orthotropic-beam.fee tests/parallelepiped-from-msh.fee \ tests/parallelepiped-thermal.fee tests/parallelepiped.fee \ tests/parameters.fee tests/peano.fee \ tests/pellet-linear-guess.fee \ tests/pellet-linear-transient-from-initial.fee \ tests/pellet-linear-transient-from-ss.fee \ tests/pellet-linear.fee tests/pellet-nonlinear-guess.fee \ tests/pellet-nonlinear-linear-keyword.fee \ tests/pellet-nonlinear-linear-option.fee \ tests/pellet-nonlinear-q.fee \ tests/pellet-nonlinear-transient-from-initial.fee \ tests/pellet-nonlinear-transient-from-ss.fee \ tests/pellet-nonlinear.fee tests/pellet-nonuniform-q.fee \ tests/petsc_options.fee tests/pipe.fee \ tests/poisson-square.fee tests/powell.fee tests/print.fee \ tests/print_function.fee tests/print_vector.fee \ tests/printf.fee tests/qrng.fee tests/qrng2d.fee \ tests/qrng2d_rhalton.fee tests/qrng2d_sobol.fee \ tests/qrng2d_sobol_offset.fee tests/qrng_others.fee \ tests/radiation-as-convection-celsius.fee \ tests/radiation-as-convection-kelvin.fee \ tests/radiation-as-heatflux-celsius.fee \ tests/radiation-as-heatflux-kelvin.fee \ tests/ray-effect-diffusion.fee tests/ray-effect-full.fee \ tests/ray-effect.fee tests/reaction-displ.fee \ tests/reaction-elastic-lr.fee tests/reaction-elastic-lt.fee \ tests/reaction-force.fee tests/reactivity-from-table.fee \ tests/read_mesh2d.fee tests/read_vtk5.fee \ tests/readmsh_writevtk_readbackvtk.fee \ tests/rectangular_plate_with_hole.fee tests/reed.fee \ tests/reflected-src.fee tests/reflected.fee \ tests/rosenbrock.fee tests/single-arc.fee \ tests/sn-square-fully-mirrored.fee tests/sort_vector.fee \ tests/spinning-disk-parallel-plane.fee \ tests/spinning-disk-parallel-solid-half.fee tests/sqrt.fee \ tests/statically_indeterminate_reaction.fee tests/steps.fee \ tests/t21.fee \ tests/thermal-slab-convection-as-heat-nosource.fee \ tests/thermal-slab-convection-nosource.fee \ tests/thermal-slab-heat-nosource.fee \ tests/thermal-slab-no-k.fee \ tests/thermal-slab-space-nosource.fee \ tests/thermal-slab-temperature-nosource.fee \ tests/thermal-slab-transient-mms-capacity-of-T.fee \ tests/thermal-slab-transient-mms.fee \ tests/thermal-slab-transient.fee \ tests/thermal-slab-uniform-nosource.fee \ tests/thermal-slab-uniform-source-dirichlet-neumann.fee \ tests/thermal-slab-uniform-source.fee \ tests/thermal-slab-wrong-bc.fee tests/thermal-square.fee \ tests/thermal-two-squares-material-explicit-space.fee \ tests/thermal-two-squares-material-explicit-temperature.fee \ tests/thermal-two-squares-material-explicit-uniform.fee \ tests/thermal-two-squares-material-implicit-space.fee \ tests/thermal-two-squares-material-implicit-temperature.fee \ tests/thermal-two-squares-material-implicit-uniform.fee \ tests/time_path.fee tests/time_path_petsc.fee \ tests/time_path_raw.fee tests/time_path_sundials.fee \ tests/transient-from-mesh-different-dt.fee \ tests/transient-from-mesh-same-dt.fee \ tests/transient-to-mesh.fee \ tests/two-cubes-isotropic-functions.fee \ tests/two-cubes-isotropic-materials.fee \ tests/two-cubes-isotropic-variables.fee \ tests/two-cubes-orthotropic-functions.fee \ tests/two-cubes-orthotropic-materials.fee \ tests/two-cubes-orthotropic-variables.fee \ tests/ud20-1-0-sl-src-vacuum.fee tests/ud20-1-0-sl-src.fee \ tests/ud20-1-0-sl-vacuum.fee tests/ud20-1-0-sl.fee \ tests/var.fee tests/vector.fee tests/vector_init.fee \ tests/warp.fee tests/wilson-1d.fee tests/wilson-2d.fee \ tests/write_mesh2d.fee tests/xfail-data-variable.fee \ tests/xfail-few-properties-ortho-good.fee \ tests/xfail-few-properties-ortho-poisson.fee \ tests/xfail-few-properties-ortho-shear.fee \ tests/xfail-few-properties-ortho-young.fee \ tests/2dpwr-eighth.geo tests/2dpwr-quarter.geo \ tests/Barra1D.geo tests/PF.geo tests/annulus.geo \ tests/azmy-structured.geo tests/beam-cantilever-hex20.geo \ tests/beam-cantilever-hex27.geo tests/beam-cantilever-hex8.geo \ tests/beam-cantilever-tet10.geo tests/beam-cantilever-tet4.geo \ tests/beam-cantilever.geo tests/bimetallic-strip.geo \ tests/bunny-box.geo tests/bunny.geo tests/circle.geo \ tests/cube-hex.geo tests/cube.geo tests/cylinder.geo \ tests/encased_rod.geo tests/heater-cylinder-inches.geo \ tests/i-beam-hex.geo tests/i-beam-tet.geo tests/la-IN.geo \ tests/la-p02-PUa-1-0-SL.geo tests/la-p03-PUa-H2O_1-1-0-SL.geo \ tests/la-p04-PUa-H2O_0.5-1-0-SL.geo \ tests/la-p06-PUb-1-0-SL.geo tests/la-p07-PUb-1-0-CY.geo \ tests/la-p08-PUb-1-0-SP.geo tests/la-p09-PUb-H2O_1-1-0-CY.geo \ tests/la-p10-PUb-H2O_10-1-0-CY.geo tests/la-p48-U-2-0-SL.geo \ tests/la-p49-U-2-0-SP.geo tests/la-p51-UAl-2-0-SL.geo \ tests/la-p52-UAl-2-0-SP.geo tests/la-p71-URRa-2-1-SL.geo \ tests/long-bar-struct.geo tests/long-bar-unstruct.geo \ tests/map-cube.geo tests/maze.geo tests/nafems-le1.geo \ tests/nafems-le10.geo tests/nafems-le11-hex20.geo \ tests/nafems-le11-hex27.geo tests/nafems-le11-hex8.geo \ tests/nafems-le11-tet10.geo tests/nafems-le11-tet4.geo \ tests/nafems-le11.geo tests/nafems-t1-unstruct.geo \ tests/nafems-t1.geo tests/nafems-t4.geo \ tests/parallelepiped.geo tests/pellet.geo \ tests/pipe-sch20-2-2.geo tests/pipe-sch27-2-2.geo \ tests/pipe-sct10-2-2.geo tests/pipe-ssh20-2-2.geo \ tests/pipe-ssh27-2-2.geo tests/pipe-sst10-2-2.geo \ tests/pipe-uct10-2-2.geo tests/pipe-ust10-2-2.geo \ tests/ray-effect-eighth.geo tests/ray-effect-full.geo \ tests/ray-effect-half.geo tests/ray-effect-quarter.geo \ tests/rectangular_beam.geo \ tests/rectangular_plate_with_hole.geo tests/reed.geo \ tests/reflected.geo tests/single-arc.geo \ tests/slab-1d-0.1m.geo tests/slab-3d-0.1m.geo tests/slab.geo \ tests/slab2.geo tests/spinning-disk-dimensions.geo \ tests/spinning-disk-holed-solid-full_unstruct.geo \ tests/spinning-disk-holed-solid-halfquarter_unstruct.geo \ tests/spinning-disk-parallel-axisymmetric-full_unstruct.geo \ tests/spinning-disk-parallel-axisymmetric-half_unstruct.geo \ tests/spinning-disk-parallel-plane-eighth_unstruct.geo \ tests/spinning-disk-parallel-plane-full_unstruct.geo \ tests/spinning-disk-parallel-plane-quarter_unstruct.geo \ tests/spinning-disk-parallel-plane-sixteenth_unstruct.geo \ tests/spinning-disk-parallel-solid-full_unstruct.geo \ tests/spinning-disk-parallel-solid-half_unstruct.geo \ tests/spinning-disk-parallel-solid-halfeighth_unstruct.geo \ tests/spinning-disk-parallel-solid-halfquarter_unstruct.geo \ tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.geo \ tests/spinning-disk-unstruct.geo tests/square-centered.geo \ tests/square-struct.geo tests/square.geo \ tests/statically_indeterminate_reaction.geo tests/t21.geo \ tests/two-cubes.geo tests/two-squares-quad.geo \ tests/two-squares.geo tests/ud20-1-0-sl.geo \ tests/wilson-1d.geo tests/wilson-2d.geo tests/Barra1D.msh \ tests/airfoil.msh tests/beam-cantilever-hex20.msh \ tests/beam-cantilever-hex27.msh tests/beam-cantilever-hex8.msh \ tests/beam-cantilever-tet10.msh tests/beam-cantilever-tet4.msh \ tests/convectionbc.msh tests/convectionbc2.msh \ tests/cube-hex.msh tests/cylinder.msh tests/mesh2d-bin.msh \ tests/nafems-le1-1.msh tests/nafems-le1-2.msh \ tests/nafems-le1-3.msh tests/nafems-le1-4.msh \ tests/nafems-le1-5.msh tests/nafems-le1-6.msh \ tests/nafems-le1-7.msh tests/nafems-le1-8.msh \ tests/ray-effect-eighth.msh tests/ray-effect-full.msh \ tests/ray-effect-half.msh tests/ray-effect-quarter.msh \ tests/reaction.msh tests/reflected.msh tests/single-arc1.msh \ tests/single-arc2.msh tests/slab-1d-0.1m.msh \ tests/slab-3d-0.1m.msh tests/slab.msh tests/slab2.msh \ tests/square.msh tests/square22.msh tests/square40.msh \ tests/square41.msh tests/square41bin.msh tests/t21.msh \ tests/tet1.msh tests/two-squares-bin-gmsh.msh \ tests/two-squares-bin-meshio.msh tests/two-squares.msh \ tests/ud20-1-0-sl.msh tests/Tini.dat \ tests/asme-expansion-table.dat tests/data1d.dat \ tests/data1d_columns.dat tests/data2d.dat tests/flux.dat \ tests/algebraic_expr.ref tests/annulus-modal.ref \ tests/bc-groups1.ref tests/bc-groups2.ref tests/bc-groups3.ref \ tests/bc-groups4.ref tests/expressions_cumbersome.ref \ tests/expressions_variables.ref tests/fibo_formula.ref \ tests/fibo_iterative.ref tests/fibo_vector.ref \ tests/find_extrema2d.ref tests/fit1d_gradient.ref \ tests/function_vectors1d.ref tests/iterative.ref \ tests/nafems-le10.ref tests/print_function.ref \ tests/print_vector.ref tests/printf.ref tests/qrng.ref \ tests/qrng2d_rhalton.ref tests/qrng2d_sobol.ref \ tests/qrng_others.ref tests/reaction-displ.ref \ tests/reaction-elastic-lr.ref tests/reaction-elastic-lt.ref \ tests/reaction-force.ref tests/steps.ref \ tests/thermal-slab-uniform-source-octave.ref \ tests/transient-from-mesh-different-dt.ref \ tests/transient-from-mesh-same-dt.ref \ tests/transient-to-mesh.ref tests/two-is-2.ref \ tests/two-is-3.ref tests/mesh2d-v5.vtk \ tests/reaction-force-v5.vtk tests/square.vtk \ tests/reed-ref.csv AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)" NROFF = nroff MANS = $(dist_man_MANS) DATA = $(dist_doc_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope check recheck distdir distdir-am dist dist-all \ distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)' RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ $(srcdir)/config.h.in $(top_srcdir)/tests/2dpwr-eighth.geo \ $(top_srcdir)/tests/2dpwr-quarter.geo \ $(top_srcdir)/tests/2dpwr.fee $(top_srcdir)/tests/Barra1D.geo \ $(top_srcdir)/tests/Barra1D.msh \ $(top_srcdir)/tests/Barra1D_a_Estac.fee \ $(top_srcdir)/tests/Barra1D_b_Trans.fee \ $(top_srcdir)/tests/H2O.fee $(top_srcdir)/tests/PF.geo \ $(top_srcdir)/tests/Pu-239a.fee \ $(top_srcdir)/tests/Pu-239b.fee $(top_srcdir)/tests/Tini.dat \ $(top_srcdir)/tests/U-235.fee $(top_srcdir)/tests/U-Al.fee \ $(top_srcdir)/tests/URRa.fee $(top_srcdir)/tests/abort.fee \ $(top_srcdir)/tests/abort.sh $(top_srcdir)/tests/airfoil.fee \ $(top_srcdir)/tests/airfoil.msh $(top_srcdir)/tests/airfoil.sh \ $(top_srcdir)/tests/algebraic_expr.fee \ $(top_srcdir)/tests/algebraic_expr.ref \ $(top_srcdir)/tests/algebraic_expr.sh \ $(top_srcdir)/tests/alias.fee \ $(top_srcdir)/tests/annulus-modal.fee \ $(top_srcdir)/tests/annulus-modal.ref \ $(top_srcdir)/tests/annulus-modal.sh \ $(top_srcdir)/tests/annulus.geo \ $(top_srcdir)/tests/arguments.sh \ $(top_srcdir)/tests/arguments_bracketed.fee \ $(top_srcdir)/tests/arguments_quoted.fee \ $(top_srcdir)/tests/arguments_self.fee \ $(top_srcdir)/tests/asme-expansion-table.dat \ $(top_srcdir)/tests/assignment_scalar.fee \ $(top_srcdir)/tests/atan2.fee \ $(top_srcdir)/tests/azmy-structured.fee \ $(top_srcdir)/tests/azmy-structured.geo \ $(top_srcdir)/tests/azmy.sh $(top_srcdir)/tests/barra.sh \ $(top_srcdir)/tests/bc-groups.sh \ $(top_srcdir)/tests/bc-groups1.fee \ $(top_srcdir)/tests/bc-groups1.ref \ $(top_srcdir)/tests/bc-groups2.fee \ $(top_srcdir)/tests/bc-groups2.ref \ $(top_srcdir)/tests/bc-groups3.fee \ $(top_srcdir)/tests/bc-groups3.ref \ $(top_srcdir)/tests/bc-groups4.fee \ $(top_srcdir)/tests/bc-groups4.ref \ $(top_srcdir)/tests/bc-groups6.fee \ $(top_srcdir)/tests/beam-cantilever-hex20.geo \ $(top_srcdir)/tests/beam-cantilever-hex20.msh \ $(top_srcdir)/tests/beam-cantilever-hex27.geo \ $(top_srcdir)/tests/beam-cantilever-hex27.msh \ $(top_srcdir)/tests/beam-cantilever-hex8.geo \ $(top_srcdir)/tests/beam-cantilever-hex8.msh \ $(top_srcdir)/tests/beam-cantilever-modal-free-free.fee \ $(top_srcdir)/tests/beam-cantilever-modal.fee \ $(top_srcdir)/tests/beam-cantilever-tet10.geo \ $(top_srcdir)/tests/beam-cantilever-tet10.msh \ $(top_srcdir)/tests/beam-cantilever-tet4.geo \ $(top_srcdir)/tests/beam-cantilever-tet4.msh \ $(top_srcdir)/tests/beam-cantilever.geo \ $(top_srcdir)/tests/beam-modal.sh \ $(top_srcdir)/tests/beam-ortho.sh \ $(top_srcdir)/tests/bimetallic-strip.fee \ $(top_srcdir)/tests/bimetallic-strip.geo \ $(top_srcdir)/tests/bimetallic-strip.sh \ $(top_srcdir)/tests/builtin.sh \ $(top_srcdir)/tests/bunny-box.geo \ $(top_srcdir)/tests/bunny-diffusion.fee \ $(top_srcdir)/tests/bunny-diffusion.sh \ $(top_srcdir)/tests/bunny-modal-fixed.fee \ $(top_srcdir)/tests/bunny-modal-free.fee \ $(top_srcdir)/tests/bunny-modal-rest.fee \ $(top_srcdir)/tests/bunny-modal.fee \ $(top_srcdir)/tests/bunny-modal.sh \ $(top_srcdir)/tests/bunny-sn-box.fee \ $(top_srcdir)/tests/bunny-sn.fee \ $(top_srcdir)/tests/bunny-sn.sh \ $(top_srcdir)/tests/bunny-thermal-mpi.fee \ $(top_srcdir)/tests/bunny-thermal-mpi.sh \ $(top_srcdir)/tests/bunny-thermal.fee \ $(top_srcdir)/tests/bunny-thermal.sh \ $(top_srcdir)/tests/bunny.geo $(top_srcdir)/tests/circle.geo \ $(top_srcdir)/tests/circle.sh \ $(top_srcdir)/tests/circle_fit.fee \ $(top_srcdir)/tests/circle_perimeter.fee \ $(top_srcdir)/tests/circle_surface.fee \ $(top_srcdir)/tests/clean.sh $(top_srcdir)/tests/cmp-float.fee \ $(top_srcdir)/tests/cmp-zero.fee $(top_srcdir)/tests/cog.sh \ $(top_srcdir)/tests/convectionNL.fee \ $(top_srcdir)/tests/convectionbc.msh \ $(top_srcdir)/tests/convectionbc2.msh \ $(top_srcdir)/tests/cube-cog.fee \ $(top_srcdir)/tests/cube-expansion.sh \ $(top_srcdir)/tests/cube-free-expansion-alpha-of-space-orthotropic.fee \ $(top_srcdir)/tests/cube-free-expansion-alpha-of-temperature-orthotropic.fee \ $(top_srcdir)/tests/cube-free-expansion-uniform-isotropic.fee \ $(top_srcdir)/tests/cube-free-expansion-uniform-orthotropic.fee \ $(top_srcdir)/tests/cube-hex.geo \ $(top_srcdir)/tests/cube-hex.msh \ $(top_srcdir)/tests/cube-radial.fee \ $(top_srcdir)/tests/cube-restrained-expansion-uniform-isotropic.fee \ $(top_srcdir)/tests/cube-restrained-expansion-uniform-orthotropic.fee \ $(top_srcdir)/tests/cube-tangential.fee \ $(top_srcdir)/tests/cube.geo \ $(top_srcdir)/tests/cylinder-force.fee \ $(top_srcdir)/tests/cylinder-traction-force.sh \ $(top_srcdir)/tests/cylinder-traction.fee \ $(top_srcdir)/tests/cylinder.geo \ $(top_srcdir)/tests/cylinder.msh \ $(top_srcdir)/tests/data1d.dat \ $(top_srcdir)/tests/data1d_columns.dat \ $(top_srcdir)/tests/data2d.dat \ $(top_srcdir)/tests/default_argument_value.fee \ $(top_srcdir)/tests/diffusion-square-fully-mirrored.fee \ $(top_srcdir)/tests/encased_rod.geo \ $(top_srcdir)/tests/encased_rod.sh \ $(top_srcdir)/tests/encased_rod_lr.fee \ $(top_srcdir)/tests/encased_rod_tb.fee \ $(top_srcdir)/tests/exp.fee $(top_srcdir)/tests/exp.sh \ $(top_srcdir)/tests/expr.fee \ $(top_srcdir)/tests/expressions.sh \ $(top_srcdir)/tests/expressions_constants.sh \ $(top_srcdir)/tests/expressions_cumbersome.fee \ $(top_srcdir)/tests/expressions_cumbersome.ref \ $(top_srcdir)/tests/expressions_functions.fee \ $(top_srcdir)/tests/expressions_seven.fee \ $(top_srcdir)/tests/expressions_sum.fee \ $(top_srcdir)/tests/expressions_variables.fee \ $(top_srcdir)/tests/expressions_variables.ref \ $(top_srcdir)/tests/fibo_formula.fee \ $(top_srcdir)/tests/fibo_formula.ref \ $(top_srcdir)/tests/fibo_iterative.fee \ $(top_srcdir)/tests/fibo_iterative.ref \ $(top_srcdir)/tests/fibo_vector.fee \ $(top_srcdir)/tests/fibo_vector.ref \ $(top_srcdir)/tests/file-append.fee \ $(top_srcdir)/tests/file.fee $(top_srcdir)/tests/file.sh \ $(top_srcdir)/tests/find_extrema2d.fee \ $(top_srcdir)/tests/find_extrema2d.ref \ $(top_srcdir)/tests/fit.sh $(top_srcdir)/tests/fit1d.fee \ $(top_srcdir)/tests/fit1d_gradient.fee \ $(top_srcdir)/tests/fit1d_gradient.ref \ $(top_srcdir)/tests/fit1d_sigma.fee \ $(top_srcdir)/tests/fit2d.fee $(top_srcdir)/tests/flux.dat \ $(top_srcdir)/tests/func_min.fee \ $(top_srcdir)/tests/func_min.sh \ $(top_srcdir)/tests/function_algebraic.fee \ $(top_srcdir)/tests/function_algebraic.sh \ $(top_srcdir)/tests/function_data.sh \ $(top_srcdir)/tests/function_data1d.fee \ $(top_srcdir)/tests/function_data1dlinear.fee \ $(top_srcdir)/tests/function_data1dlinearchanged.fee \ $(top_srcdir)/tests/function_data2d.fee \ $(top_srcdir)/tests/function_file.sh \ $(top_srcdir)/tests/function_file1d.fee \ $(top_srcdir)/tests/function_file1d_columns.fee \ $(top_srcdir)/tests/function_mesh.sh \ $(top_srcdir)/tests/function_over_mesh.fee \ $(top_srcdir)/tests/function_vectors.sh \ $(top_srcdir)/tests/function_vectors1d.fee \ $(top_srcdir)/tests/function_vectors1d.ref \ $(top_srcdir)/tests/functions.sh \ $(top_srcdir)/tests/geometric_series.fee \ $(top_srcdir)/tests/heater-cylinder-inches.fee \ $(top_srcdir)/tests/heater-cylinder-inches.geo \ $(top_srcdir)/tests/hello.fee \ $(top_srcdir)/tests/hello_mpi.fee \ $(top_srcdir)/tests/hello_mpi.sh $(top_srcdir)/tests/hoc.fee \ $(top_srcdir)/tests/i-beam-euler-bernoulli.fee \ $(top_srcdir)/tests/i-beam-euler-bernoulli.sh \ $(top_srcdir)/tests/i-beam-hex.geo \ $(top_srcdir)/tests/i-beam-tet.geo \ $(top_srcdir)/tests/iaea-pwr.sh $(top_srcdir)/tests/if.fee \ $(top_srcdir)/tests/implicit.fee \ $(top_srcdir)/tests/include.fee \ $(top_srcdir)/tests/initial_conditions.fee \ $(top_srcdir)/tests/integral.sh \ $(top_srcdir)/tests/integrate2d.fee \ $(top_srcdir)/tests/inverse-dae.fee \ $(top_srcdir)/tests/inverse-integral.fee \ $(top_srcdir)/tests/iterative.fee \ $(top_srcdir)/tests/iterative.ref \ $(top_srcdir)/tests/iterative.sh $(top_srcdir)/tests/la-IN.geo \ $(top_srcdir)/tests/la-p01-PUa-1-0-IN.fee \ $(top_srcdir)/tests/la-p02-PUa-1-0-SL.fee \ $(top_srcdir)/tests/la-p02-PUa-1-0-SL.geo \ $(top_srcdir)/tests/la-p03-PUa-H2O_1-1-0-SL.fee \ $(top_srcdir)/tests/la-p03-PUa-H2O_1-1-0-SL.geo \ $(top_srcdir)/tests/la-p04-PUa-H2O_0.5-1-0-SL.fee \ $(top_srcdir)/tests/la-p04-PUa-H2O_0.5-1-0-SL.geo \ $(top_srcdir)/tests/la-p05-PUb-1-0-IN.fee \ $(top_srcdir)/tests/la-p06-PUb-1-0-SL.fee \ $(top_srcdir)/tests/la-p06-PUb-1-0-SL.geo \ $(top_srcdir)/tests/la-p07-PUb-1-0-CY.fee \ $(top_srcdir)/tests/la-p07-PUb-1-0-CY.geo \ $(top_srcdir)/tests/la-p08-PUb-1-0-SP.fee \ $(top_srcdir)/tests/la-p08-PUb-1-0-SP.geo \ $(top_srcdir)/tests/la-p09-PUb-H2O_1-1-0-CY.fee \ $(top_srcdir)/tests/la-p09-PUb-H2O_1-1-0-CY.geo \ $(top_srcdir)/tests/la-p10-PUb-H2O_10-1-0-CY.fee \ $(top_srcdir)/tests/la-p10-PUb-H2O_10-1-0-CY.geo \ $(top_srcdir)/tests/la-p47-U-2-0-IN.fee \ $(top_srcdir)/tests/la-p48-U-2-0-SL.fee \ $(top_srcdir)/tests/la-p48-U-2-0-SL.geo \ $(top_srcdir)/tests/la-p49-U-2-0-SP.fee \ $(top_srcdir)/tests/la-p49-U-2-0-SP.geo \ $(top_srcdir)/tests/la-p50-UAl-2-0-IN.fee \ $(top_srcdir)/tests/la-p51-UAl-2-0-SL.fee \ $(top_srcdir)/tests/la-p51-UAl-2-0-SL.geo \ $(top_srcdir)/tests/la-p52-UAl-2-0-SP.fee \ $(top_srcdir)/tests/la-p52-UAl-2-0-SP.geo \ $(top_srcdir)/tests/la-p70-URRa-2-1-IN.fee \ $(top_srcdir)/tests/la-p71-URRa-2-1-SL.fee \ $(top_srcdir)/tests/la-p71-URRa-2-1-SL.geo \ $(top_srcdir)/tests/lag.fee $(top_srcdir)/tests/lag.sh \ $(top_srcdir)/tests/lag_compact.fee \ $(top_srcdir)/tests/laplace-square.fee \ $(top_srcdir)/tests/laplace2d.sh \ $(top_srcdir)/tests/lebesgue.sh $(top_srcdir)/tests/logphi.fee \ $(top_srcdir)/tests/long-bar-mechanical.fee \ $(top_srcdir)/tests/long-bar-struct.geo \ $(top_srcdir)/tests/long-bar-thermal.fee \ $(top_srcdir)/tests/long-bar-unstruct.geo \ $(top_srcdir)/tests/los-alamos.sh \ $(top_srcdir)/tests/map-cube-create.fee \ $(top_srcdir)/tests/map-cube.fee \ $(top_srcdir)/tests/map-cube.geo \ $(top_srcdir)/tests/map-cube.sh \ $(top_srcdir)/tests/map-function.fee \ $(top_srcdir)/tests/materials.fee \ $(top_srcdir)/tests/materials.sh \ $(top_srcdir)/tests/matrix.fee $(top_srcdir)/tests/maze.fee \ $(top_srcdir)/tests/maze.geo $(top_srcdir)/tests/mesh.sh \ $(top_srcdir)/tests/mesh2d-bin.msh \ $(top_srcdir)/tests/mesh2d-v5.vtk \ $(top_srcdir)/tests/mesh3d.fee \ $(top_srcdir)/tests/modal-beam-cantilever.fee \ $(top_srcdir)/tests/modal-solidworks.fee \ $(top_srcdir)/tests/modal_rectangular_beam.fee \ $(top_srcdir)/tests/moment-of-inertia.fee \ $(top_srcdir)/tests/moment-of-inertia.sh \ $(top_srcdir)/tests/nafems-le1-1.msh \ $(top_srcdir)/tests/nafems-le1-2.msh \ $(top_srcdir)/tests/nafems-le1-3.msh \ $(top_srcdir)/tests/nafems-le1-4.msh \ $(top_srcdir)/tests/nafems-le1-5.msh \ $(top_srcdir)/tests/nafems-le1-6.msh \ $(top_srcdir)/tests/nafems-le1-7.msh \ $(top_srcdir)/tests/nafems-le1-8.msh \ $(top_srcdir)/tests/nafems-le1.fee \ $(top_srcdir)/tests/nafems-le1.geo \ $(top_srcdir)/tests/nafems-le1.sh \ $(top_srcdir)/tests/nafems-le10.fee \ $(top_srcdir)/tests/nafems-le10.geo \ $(top_srcdir)/tests/nafems-le10.ref \ $(top_srcdir)/tests/nafems-le10.sh \ $(top_srcdir)/tests/nafems-le11-alpha-of-T.fee \ $(top_srcdir)/tests/nafems-le11-alpha-of-x.fee \ $(top_srcdir)/tests/nafems-le11-hex20.geo \ $(top_srcdir)/tests/nafems-le11-hex27.geo \ $(top_srcdir)/tests/nafems-le11-hex8.geo \ $(top_srcdir)/tests/nafems-le11-tet10.geo \ $(top_srcdir)/tests/nafems-le11-tet4.geo \ $(top_srcdir)/tests/nafems-le11.fee \ $(top_srcdir)/tests/nafems-le11.geo \ $(top_srcdir)/tests/nafems-le11.sh \ $(top_srcdir)/tests/nafems-t1-4.sh \ $(top_srcdir)/tests/nafems-t1-unstruct.geo \ $(top_srcdir)/tests/nafems-t1.fee \ $(top_srcdir)/tests/nafems-t1.geo \ $(top_srcdir)/tests/nafems-t2-1d.fee \ $(top_srcdir)/tests/nafems-t2-3.sh \ $(top_srcdir)/tests/nafems-t2-3d.fee \ $(top_srcdir)/tests/nafems-t3-1d.fee \ $(top_srcdir)/tests/nafems-t3-3d.fee \ $(top_srcdir)/tests/nafems-t4.fee \ $(top_srcdir)/tests/nafems-t4.geo \ $(top_srcdir)/tests/neutron-fully-mirrored.sh \ $(top_srcdir)/tests/neutron_diffusion_keff.sh \ $(top_srcdir)/tests/neutron_diffusion_src.sh \ $(top_srcdir)/tests/open.fee \ $(top_srcdir)/tests/ortho-expansion-alpha-of-space.sh \ $(top_srcdir)/tests/orthotropic-beam.fee \ $(top_srcdir)/tests/parallelepiped-from-msh.fee \ $(top_srcdir)/tests/parallelepiped-thermal.fee \ $(top_srcdir)/tests/parallelepiped.fee \ $(top_srcdir)/tests/parallelepiped.geo \ $(top_srcdir)/tests/parallelepiped.sh \ $(top_srcdir)/tests/parameters.fee \ $(top_srcdir)/tests/peano.fee \ $(top_srcdir)/tests/pellet-linear-guess.fee \ $(top_srcdir)/tests/pellet-linear-transient-from-initial.fee \ $(top_srcdir)/tests/pellet-linear-transient-from-ss.fee \ $(top_srcdir)/tests/pellet-linear.fee \ $(top_srcdir)/tests/pellet-nonlinear-guess.fee \ $(top_srcdir)/tests/pellet-nonlinear-linear-keyword.fee \ $(top_srcdir)/tests/pellet-nonlinear-linear-option.fee \ $(top_srcdir)/tests/pellet-nonlinear-q.fee \ $(top_srcdir)/tests/pellet-nonlinear-transient-from-initial.fee \ $(top_srcdir)/tests/pellet-nonlinear-transient-from-ss.fee \ $(top_srcdir)/tests/pellet-nonlinear.fee \ $(top_srcdir)/tests/pellet-nonuniform-q.fee \ $(top_srcdir)/tests/pellet.geo \ $(top_srcdir)/tests/petsc_options.fee \ $(top_srcdir)/tests/petsc_options.sh \ $(top_srcdir)/tests/pipe-sch20-2-2.geo \ $(top_srcdir)/tests/pipe-sch27-2-2.geo \ $(top_srcdir)/tests/pipe-sct10-2-2.geo \ $(top_srcdir)/tests/pipe-ssh20-2-2.geo \ $(top_srcdir)/tests/pipe-ssh27-2-2.geo \ $(top_srcdir)/tests/pipe-sst10-2-2.geo \ $(top_srcdir)/tests/pipe-uct10-2-2.geo \ $(top_srcdir)/tests/pipe-ust10-2-2.geo \ $(top_srcdir)/tests/pipe.fee $(top_srcdir)/tests/pipe.sh \ $(top_srcdir)/tests/point-kinetics.sh \ $(top_srcdir)/tests/poisson-square.fee \ $(top_srcdir)/tests/powell.fee $(top_srcdir)/tests/print.fee \ $(top_srcdir)/tests/print.sh \ $(top_srcdir)/tests/print_function.fee \ $(top_srcdir)/tests/print_function.ref \ $(top_srcdir)/tests/print_vector.fee \ $(top_srcdir)/tests/print_vector.ref \ $(top_srcdir)/tests/printf.fee $(top_srcdir)/tests/printf.ref \ $(top_srcdir)/tests/qrng.fee $(top_srcdir)/tests/qrng.ref \ $(top_srcdir)/tests/qrng.sh $(top_srcdir)/tests/qrng2d.fee \ $(top_srcdir)/tests/qrng2d_rhalton.fee \ $(top_srcdir)/tests/qrng2d_rhalton.ref \ $(top_srcdir)/tests/qrng2d_sobol.fee \ $(top_srcdir)/tests/qrng2d_sobol.ref \ $(top_srcdir)/tests/qrng2d_sobol_offset.fee \ $(top_srcdir)/tests/qrng_others.fee \ $(top_srcdir)/tests/qrng_others.ref \ $(top_srcdir)/tests/radiation-as-convection-celsius.fee \ $(top_srcdir)/tests/radiation-as-convection-kelvin.fee \ $(top_srcdir)/tests/radiation-as-heatflux-celsius.fee \ $(top_srcdir)/tests/radiation-as-heatflux-kelvin.fee \ $(top_srcdir)/tests/ray-effect-diffusion.fee \ $(top_srcdir)/tests/ray-effect-eighth.geo \ $(top_srcdir)/tests/ray-effect-eighth.msh \ $(top_srcdir)/tests/ray-effect-full.fee \ $(top_srcdir)/tests/ray-effect-full.geo \ $(top_srcdir)/tests/ray-effect-full.msh \ $(top_srcdir)/tests/ray-effect-half.geo \ $(top_srcdir)/tests/ray-effect-half.msh \ $(top_srcdir)/tests/ray-effect-quarter.geo \ $(top_srcdir)/tests/ray-effect-quarter.msh \ $(top_srcdir)/tests/ray-effect.fee \ $(top_srcdir)/tests/ray-effect.sh \ $(top_srcdir)/tests/reaction-displ.fee \ $(top_srcdir)/tests/reaction-displ.ref \ $(top_srcdir)/tests/reaction-elastic-lr.fee \ $(top_srcdir)/tests/reaction-elastic-lr.ref \ $(top_srcdir)/tests/reaction-elastic-lt.fee \ $(top_srcdir)/tests/reaction-elastic-lt.ref \ $(top_srcdir)/tests/reaction-force-v5.vtk \ $(top_srcdir)/tests/reaction-force.fee \ $(top_srcdir)/tests/reaction-force.ref \ $(top_srcdir)/tests/reaction.msh \ $(top_srcdir)/tests/reactions-elastic.sh \ $(top_srcdir)/tests/reactions.sh \ $(top_srcdir)/tests/reactivity-from-table.fee \ $(top_srcdir)/tests/read_mesh2d.fee \ $(top_srcdir)/tests/read_vtk5.fee \ $(top_srcdir)/tests/readmsh_writevtk_readbackvtk.fee \ $(top_srcdir)/tests/rectangular_beam.geo \ $(top_srcdir)/tests/rectangular_plate_with_hole.fee \ $(top_srcdir)/tests/rectangular_plate_with_hole.geo \ $(top_srcdir)/tests/reed-ref.csv $(top_srcdir)/tests/reed.fee \ $(top_srcdir)/tests/reed.geo $(top_srcdir)/tests/reed.sh \ $(top_srcdir)/tests/reflected-src.fee \ $(top_srcdir)/tests/reflected.fee \ $(top_srcdir)/tests/reflected.geo \ $(top_srcdir)/tests/reflected.msh \ $(top_srcdir)/tests/rosenbrock.fee \ $(top_srcdir)/tests/single-arc.fee \ $(top_srcdir)/tests/single-arc.geo \ $(top_srcdir)/tests/single-arc1.msh \ $(top_srcdir)/tests/single-arc2.msh \ $(top_srcdir)/tests/slab-1d-0.1m.geo \ $(top_srcdir)/tests/slab-1d-0.1m.msh \ $(top_srcdir)/tests/slab-3d-0.1m.geo \ $(top_srcdir)/tests/slab-3d-0.1m.msh \ $(top_srcdir)/tests/slab.geo $(top_srcdir)/tests/slab.msh \ $(top_srcdir)/tests/slab2.geo $(top_srcdir)/tests/slab2.msh \ $(top_srcdir)/tests/sn-square-fully-mirrored.fee \ $(top_srcdir)/tests/solve.sh \ $(top_srcdir)/tests/sort_vector.fee \ $(top_srcdir)/tests/spinning-disk-dimensions.geo \ $(top_srcdir)/tests/spinning-disk-holed-solid-full_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-holed-solid-halfquarter_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-axisymmetric-full_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-axisymmetric-half_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-plane-eighth_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-plane-full_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-plane-quarter_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-plane-sixteenth_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-plane.fee \ $(top_srcdir)/tests/spinning-disk-parallel-solid-full_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-solid-half.fee \ $(top_srcdir)/tests/spinning-disk-parallel-solid-half_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-solid-halfeighth_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-solid-halfquarter_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.geo \ $(top_srcdir)/tests/spinning-disk-unstruct.geo \ $(top_srcdir)/tests/spinning-disk.sh \ $(top_srcdir)/tests/sqrt.fee \ $(top_srcdir)/tests/square-centered.geo \ $(top_srcdir)/tests/square-struct.geo \ $(top_srcdir)/tests/square.geo $(top_srcdir)/tests/square.msh \ $(top_srcdir)/tests/square.vtk \ $(top_srcdir)/tests/square22.msh \ $(top_srcdir)/tests/square40.msh \ $(top_srcdir)/tests/square41.msh \ $(top_srcdir)/tests/square41bin.msh \ $(top_srcdir)/tests/statically_indeterminate_reaction.fee \ $(top_srcdir)/tests/statically_indeterminate_reaction.geo \ $(top_srcdir)/tests/statically_indeterminate_reaction.sh \ $(top_srcdir)/tests/steps.fee $(top_srcdir)/tests/steps.ref \ $(top_srcdir)/tests/symmetry.sh $(top_srcdir)/tests/t21.fee \ $(top_srcdir)/tests/t21.geo $(top_srcdir)/tests/t21.msh \ $(top_srcdir)/tests/t21.sh $(top_srcdir)/tests/tet1.msh \ $(top_srcdir)/tests/thermal-1d.sh \ $(top_srcdir)/tests/thermal-2d.sh \ $(top_srcdir)/tests/thermal-3d.sh \ $(top_srcdir)/tests/thermal-radiation.sh \ $(top_srcdir)/tests/thermal-slab-convection-as-heat-nosource.fee \ $(top_srcdir)/tests/thermal-slab-convection-nosource.fee \ $(top_srcdir)/tests/thermal-slab-heat-nosource.fee \ $(top_srcdir)/tests/thermal-slab-no-k.fee \ $(top_srcdir)/tests/thermal-slab-no-k.sh \ $(top_srcdir)/tests/thermal-slab-space-nosource.fee \ $(top_srcdir)/tests/thermal-slab-temperature-nosource.fee \ $(top_srcdir)/tests/thermal-slab-transient-mms-capacity-of-T.fee \ $(top_srcdir)/tests/thermal-slab-transient-mms.fee \ $(top_srcdir)/tests/thermal-slab-transient.fee \ $(top_srcdir)/tests/thermal-slab-uniform-nosource.fee \ $(top_srcdir)/tests/thermal-slab-uniform-source-dirichlet-neumann.fee \ $(top_srcdir)/tests/thermal-slab-uniform-source-octave.ref \ $(top_srcdir)/tests/thermal-slab-uniform-source.fee \ $(top_srcdir)/tests/thermal-slab-wrong-bc.fee \ $(top_srcdir)/tests/thermal-slab-wrong-bc.sh \ $(top_srcdir)/tests/thermal-square.fee \ $(top_srcdir)/tests/thermal-two-squares-material-explicit-space.fee \ $(top_srcdir)/tests/thermal-two-squares-material-explicit-temperature.fee \ $(top_srcdir)/tests/thermal-two-squares-material-explicit-uniform.fee \ $(top_srcdir)/tests/thermal-two-squares-material-implicit-space.fee \ $(top_srcdir)/tests/thermal-two-squares-material-implicit-temperature.fee \ $(top_srcdir)/tests/thermal-two-squares-material-implicit-uniform.fee \ $(top_srcdir)/tests/time_path.fee \ $(top_srcdir)/tests/time_path_petsc.fee \ $(top_srcdir)/tests/time_path_raw.fee \ $(top_srcdir)/tests/time_path_sundials.fee \ $(top_srcdir)/tests/transient-from-mesh-different-dt.fee \ $(top_srcdir)/tests/transient-from-mesh-different-dt.ref \ $(top_srcdir)/tests/transient-from-mesh-same-dt.fee \ $(top_srcdir)/tests/transient-from-mesh-same-dt.ref \ $(top_srcdir)/tests/transient-mesh.sh \ $(top_srcdir)/tests/transient-to-mesh.fee \ $(top_srcdir)/tests/transient-to-mesh.ref \ $(top_srcdir)/tests/trig.sh \ $(top_srcdir)/tests/two-cubes-isotropic-functions.fee \ $(top_srcdir)/tests/two-cubes-isotropic-materials.fee \ $(top_srcdir)/tests/two-cubes-isotropic-variables.fee \ $(top_srcdir)/tests/two-cubes-isotropic.sh \ $(top_srcdir)/tests/two-cubes-orthotropic-functions.fee \ $(top_srcdir)/tests/two-cubes-orthotropic-materials.fee \ $(top_srcdir)/tests/two-cubes-orthotropic-variables.fee \ $(top_srcdir)/tests/two-cubes-orthotropic.sh \ $(top_srcdir)/tests/two-cubes.geo \ $(top_srcdir)/tests/two-is-2.ref \ $(top_srcdir)/tests/two-is-3.ref \ $(top_srcdir)/tests/two-squares-bin-gmsh.msh \ $(top_srcdir)/tests/two-squares-bin-meshio.msh \ $(top_srcdir)/tests/two-squares-quad.geo \ $(top_srcdir)/tests/two-squares.geo \ $(top_srcdir)/tests/two-squares.msh \ $(top_srcdir)/tests/ud20-1-0-sl-src-vacuum.fee \ $(top_srcdir)/tests/ud20-1-0-sl-src.fee \ $(top_srcdir)/tests/ud20-1-0-sl-vacuum.fee \ $(top_srcdir)/tests/ud20-1-0-sl.fee \ $(top_srcdir)/tests/ud20-1-0-sl.geo \ $(top_srcdir)/tests/ud20-1-0-sl.msh \ $(top_srcdir)/tests/uo2-pellet.sh $(top_srcdir)/tests/var.fee \ $(top_srcdir)/tests/vector.fee $(top_srcdir)/tests/vector.sh \ $(top_srcdir)/tests/vector_init.fee \ $(top_srcdir)/tests/warp.fee $(top_srcdir)/tests/wilson-1d.fee \ $(top_srcdir)/tests/wilson-1d.geo \ $(top_srcdir)/tests/wilson-2d.fee \ $(top_srcdir)/tests/wilson-2d.geo \ $(top_srcdir)/tests/wilson.sh \ $(top_srcdir)/tests/write_mesh2d.fee \ $(top_srcdir)/tests/xfail-data-variable.fee \ $(top_srcdir)/tests/xfail-data-variable.sh \ $(top_srcdir)/tests/xfail-few-properties-ortho-good.fee \ $(top_srcdir)/tests/xfail-few-properties-ortho-poisson.fee \ $(top_srcdir)/tests/xfail-few-properties-ortho-poisson.sh \ $(top_srcdir)/tests/xfail-few-properties-ortho-shear.fee \ $(top_srcdir)/tests/xfail-few-properties-ortho-shear.sh \ $(top_srcdir)/tests/xfail-few-properties-ortho-young.fee \ $(top_srcdir)/tests/xfail-few-properties-ortho-young.sh \ AUTHORS COPYING ChangeLog INSTALL NEWS README TODO compile \ config.guess config.sub install-sh missing test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DOWNLOADED_GSL_INCLUDES = @DOWNLOADED_GSL_INCLUDES@ DOWNLOADED_GSL_LIBS = @DOWNLOADED_GSL_LIBS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PETSC_ARCH = @PETSC_ARCH@ PETSC_DIR = @PETSC_DIR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SLEPC_DIR = @SLEPC_DIR@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src dist_doc_DATA = AUTHORS \ TODO \ ChangeLog \ README \ README4engineers \ README4hackers \ README4academics \ doc/programming \ doc/compilation \ doc/FAQ \ doc/CODE_OF_CONDUCT \ doc/srs \ doc/sds \ doc/feenox-manual \ doc/feenox.xml \ doc/fee.vim dist_man_MANS = doc/feenox.1 TESTS = \ tests/abort.sh \ tests/algebraic_expr.sh \ tests/annulus-modal.sh \ tests/uo2-pellet.sh \ tests/barra.sh \ tests/airfoil.sh \ tests/arguments.sh \ tests/azmy.sh \ tests/bc-groups.sh \ tests/beam-modal.sh \ tests/beam-ortho.sh \ tests/bimetallic-strip.sh \ tests/builtin.sh \ tests/circle.sh \ tests/cog.sh \ tests/cylinder-traction-force.sh \ tests/encased_rod.sh \ tests/expressions.sh \ tests/expressions_constants.sh \ tests/exp.sh \ tests/i-beam-euler-bernoulli.sh \ tests/iaea-pwr.sh \ tests/iterative.sh \ tests/fit.sh \ tests/file.sh \ tests/func_min.sh \ tests/function_algebraic.sh \ tests/function_data.sh \ tests/function_file.sh \ tests/function_mesh.sh \ tests/function_vectors.sh \ tests/hello_mpi.sh \ tests/integral.sh \ tests/lag.sh \ tests/laplace2d.sh \ tests/lebesgue.sh \ tests/los-alamos.sh \ tests/map-cube.sh \ tests/materials.sh \ tests/mesh.sh \ tests/moment-of-inertia.sh \ tests/nafems-le1.sh \ tests/nafems-le10.sh \ tests/nafems-le11.sh \ tests/nafems-t1-4.sh \ tests/nafems-t2-3.sh \ tests/neutron_diffusion_src.sh \ tests/neutron_diffusion_keff.sh \ tests/neutron-fully-mirrored.sh \ tests/parallelepiped.sh \ tests/petsc_options.sh \ tests/pipe.sh \ tests/point-kinetics.sh \ tests/print.sh \ tests/ray-effect.sh \ tests/reactions.sh \ tests/reactions-elastic.sh \ tests/reed.sh \ tests/solve.sh \ tests/spinning-disk.sh \ tests/statically_indeterminate_reaction.sh \ tests/symmetry.sh \ tests/t21.sh \ tests/thermal-1d.sh \ tests/thermal-2d.sh \ tests/thermal-3d.sh \ tests/thermal-slab-no-k.sh \ tests/thermal-slab-wrong-bc.sh \ tests/thermal-radiation.sh \ tests/transient-mesh.sh \ tests/trig.sh \ tests/two-cubes-isotropic.sh \ tests/two-cubes-orthotropic.sh \ tests/vector.sh \ tests/wilson.sh \ tests/xfail-few-properties-ortho-young.sh \ tests/xfail-few-properties-ortho-poisson.sh \ tests/xfail-few-properties-ortho-shear.sh \ tests/xfail-data-variable.sh XFAIL_TESTS = tests/abort.sh \ tests/xfail-data-variable.sh \ tests/thermal-slab-no-k.sh \ tests/thermal-slab-wrong-bc.sh \ tests/xfail-few-properties-ortho-young.sh \ tests/xfail-few-properties-ortho-poisson.sh \ tests/xfail-few-properties-ortho-shear.sh # when getting # ERROR: files left in build directory after distclean: # when creating the source dist, add them here DISTCLEANFILES = \ config.guess \ compile \ depcomp \ install-sh \ config.sub \ test-driver \ missing \ feenox \ tests/function_vectors1d.last \ tests/nafems-le10.msh \ tests/fit1d_gradient.last \ tests/fibo_vector.last \ tests/fibo_formula.last \ tests/expressions_variables.last \ tests/nafems-le10.last \ tests/square-centered.msh \ tests/2dpwr-eighth.msh \ tests/nafems-t4.msh \ tests/find_extrema2d.last \ tests/algebraic_expr.last \ tests/2dpwr-quarter.msh \ tests/fibo_iterative.last \ tests/parallelepiped.msh \ tests/print_function.last \ tests/i-beam-tet.msh \ tests/print_vector.last \ tests/i-beam-hex.msh \ tests/iterative.last \ mesh2d.msh \ laplace-square.msh \ square-f.msh \ map-cube-4-10-dst.msh \ tests/transient-from-mesh-same-dt.last \ tests/transient-to-mesh.last \ tests/cube.msh \ tests/transient-from-mesh-different-dt.last \ map-cube-4-src.msh \ map-cube-10-4-dst.msh \ map-cube-10.msh \ map-cube-4.msh \ map-cube-10-src.msh \ two-cubes-orthotropic-variables.vtk \ nafems-le1-5.vtk \ parallelepiped-thermal.msh \ long-bar-unstruct-temperature.msh \ two-cubes-orthotropic-functions.vtk \ tests/reaction-elastic-lt.last \ tests/spinning-disk-parallel-solid-halfquarter_unstruct.msh \ tests/reaction-displ.last \ tests/nafems-le11-tet4.msh \ tests/pellet.msh \ tests/wilson-2d.msh \ tests/nafems-le11-hex27.msh \ tests/two-cubes.msh \ tests/spinning-disk-parallel-plane-quarter_unstruct.msh \ tests/spinning-disk-parallel-plane-eighth_unstruct.msh \ tests/reaction-elastic-lr.last \ tests/spinning-disk-parallel-solid-halfeighth_unstruct.msh \ tests/long-bar-struct.msh \ tests/reaction-force.last \ tests/nafems-t1.msh \ tests/long-bar-unstruct.msh \ tests/encased_rod.msh \ tests/spinning-disk-parallel-plane-sixteenth_unstruct.msh \ tests/nafems-le11-tet10.msh \ tests/statically_indeterminate_reaction.msh \ tests/wilson-1d.msh \ tests/spinning-disk-parallel-solid-halfsixteenth_unstruct.msh \ tests/nafems-le11-hex8.msh \ tests/nafems-le11-hex20.msh \ nafems-le1-4.vtk \ nafems-le11-hex27.vtk \ nafems-le1-1.vtk \ nafems-le1-2.vtk \ long-bar-struct-temperature.msh \ nafems-le11-hex20.vtk \ nafems-le1-6.vtk \ parallelepiped-coarse.msh \ nafems-le1-8.vtk \ encased_rod_tb.vtk \ encased_rod_lb.vtk \ two-cubes-isotropic-materials.vtk \ nafems-t4-result.msh \ nafems-le1-3.vtk \ nafems-le11-tet10.vtk \ two-cubes-isotropic-functions.vtu \ nafems-le11-hex8.vtk \ two-cubes-orthotropic-materials.vtk \ two-cubes-isotropic-variables.vtk \ nafems-le1-7.vtk \ nafems-le11-tet4.vtk \ tests/annulus-modal.last \ tests/annulus.msh \ cube-radial.vtk \ mesh2d.vtk \ ./tests/expressions_cumbersome.last \ ./tests/steps.last \ ./tests/printf.last \ ./square_tmp.vtk \ ./two-is-2.txt \ ./circle_perimeter2.dat \ ./circle-1-0.4.msh \ ./circle-2-0.3.msh \ ./circle-1-0.7.msh \ ./circle-2-0.35.msh \ ./circle-1-0.5.msh \ ./circle-1-0.6.msh \ ./circle-2-0.7.msh \ ./circle-2-0.4.msh \ ./circle-1-0.3.msh \ ./circle-1-0.35.msh \ ./circle-2-0.6.msh \ ./circle-2-0.5.msh \ ./circle_perimeter1.dat \ ./orthotropic-beam-hex27.msh \ ./2dpwr-eighth.vtu \ ./poisson-square.msh \ ./ray-effect-diffusion-full.msh \ ./ray-effect-quarter-4.msh \ ./thermal-square.vtk \ ./orthotropic-beam-hex8.msh \ ./tests/la-p08-PUb-1-0-SP.msh \ ./tests/square-struct.msh \ ./tests/reed.msh \ ./tests/pipe-ust10-2-2.msh \ ./tests/la-p10-PUb-H2O_10-1-0-CY.msh \ ./tests/pipe-sch27-2-2.msh \ ./tests/PF.msh \ ./tests/la-p02-PUa-1-0-SL.msh \ ./tests/la-p06-PUb-1-0-SL.msh \ ./tests/pipe-ssh20-2-2.msh \ ./tests/azmy-structured.msh \ ./tests/la-p09-PUb-H2O_1-1-0-CY.msh \ ./tests/pipe-sct10-2-2.msh \ ./tests/la-IN.msh \ ./tests/pipe-ssh27-2-2.msh \ ./tests/la-p48-U-2-0-SL.msh \ ./tests/maze.msh \ ./tests/la-p49-U-2-0-SP.msh \ ./tests/bimetallic-strip.msh \ ./tests/la-p03-PUa-H2O_1-1-0-SL.msh \ ./tests/pipe-sst10-2-2.msh \ ./tests/heater-cylinder-inches.msh \ ./tests/la-p07-PUb-1-0-CY.msh \ ./tests/pipe-sch20-2-2.msh \ ./tests/la-p04-PUa-H2O_0.5-1-0-SL.msh \ ./tests/la-p51-UAl-2-0-SL.msh \ ./tests/pipe-uct10-2-2.msh \ ./ray-effect-full-4.msh \ ./orthotropic-beam-tet4.msh \ ./ray-effect-half-4.msh \ ./spinning-disk-parallel-plane-eighth_unstruct.vtk \ ./2dpwr-quarter.vtu \ ./ray-effect-diffusion-quarter.msh \ ./ray-effect-diffusion-half.msh \ ./orthotropic-beam-hex20.msh \ ./orthotropic-beam-tet10.msh \ ./spinning-disk-parallel-plane-quarter_unstruct.vtk \ ./reaction-force.vtu \ ./airfoil-converged.vtk \ ./spinning-disk-parallel-plane-sixteenth_unstruct.vtk \ ./heater-cylinder-inches.vtu \ ./heater-cylinder-inches.vtk \ ./heater-cylinder-inches-results.msh \ ./ray-effect-diffusion-eighth.msh \ ./airfoil-converged.msh \ ./ray-effect-eighth-4.msh \ ./tests/bc-groups1.last \ ./tests/bc-groups2.last \ ./tests/bc-groups3.last \ ./tests/bc-groups4.last \ ./bc-groups1.last \ ./bc-groups2.last \ ./bc-groups3.last \ ./bc-groups4.last \ ./tests/wilson-2d-0.vtk \ ./tests/wilson-2d-100.vtk \ ./tests/wilson-2d-10.vtk \ ./tests/wilson-2d-175.vtk \ ./tests/wilson-2d-50.vtk \ ./tests/wilson-2d-87.5.vtk \ ./wilson-2d-0.vtk \ ./wilson-2d-100.vtk \ ./wilson-2d-10.vtk \ ./wilson-2d-175.vtk \ ./wilson-2d-50.vtk \ ./wilson-2d-87.5.vtk all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .log .test .test$(EXEEXT) .trs am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? tests/abort.sh.log: tests/abort.sh @p='tests/abort.sh'; \ b='tests/abort.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/algebraic_expr.sh.log: tests/algebraic_expr.sh @p='tests/algebraic_expr.sh'; \ b='tests/algebraic_expr.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/annulus-modal.sh.log: tests/annulus-modal.sh @p='tests/annulus-modal.sh'; \ b='tests/annulus-modal.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/uo2-pellet.sh.log: tests/uo2-pellet.sh @p='tests/uo2-pellet.sh'; \ b='tests/uo2-pellet.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/barra.sh.log: tests/barra.sh @p='tests/barra.sh'; \ b='tests/barra.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/airfoil.sh.log: tests/airfoil.sh @p='tests/airfoil.sh'; \ b='tests/airfoil.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/arguments.sh.log: tests/arguments.sh @p='tests/arguments.sh'; \ b='tests/arguments.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/azmy.sh.log: tests/azmy.sh @p='tests/azmy.sh'; \ b='tests/azmy.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/bc-groups.sh.log: tests/bc-groups.sh @p='tests/bc-groups.sh'; \ b='tests/bc-groups.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/beam-modal.sh.log: tests/beam-modal.sh @p='tests/beam-modal.sh'; \ b='tests/beam-modal.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/beam-ortho.sh.log: tests/beam-ortho.sh @p='tests/beam-ortho.sh'; \ b='tests/beam-ortho.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/bimetallic-strip.sh.log: tests/bimetallic-strip.sh @p='tests/bimetallic-strip.sh'; \ b='tests/bimetallic-strip.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/builtin.sh.log: tests/builtin.sh @p='tests/builtin.sh'; \ b='tests/builtin.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/circle.sh.log: tests/circle.sh @p='tests/circle.sh'; \ b='tests/circle.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/cog.sh.log: tests/cog.sh @p='tests/cog.sh'; \ b='tests/cog.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/cylinder-traction-force.sh.log: tests/cylinder-traction-force.sh @p='tests/cylinder-traction-force.sh'; \ b='tests/cylinder-traction-force.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/encased_rod.sh.log: tests/encased_rod.sh @p='tests/encased_rod.sh'; \ b='tests/encased_rod.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/expressions.sh.log: tests/expressions.sh @p='tests/expressions.sh'; \ b='tests/expressions.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/expressions_constants.sh.log: tests/expressions_constants.sh @p='tests/expressions_constants.sh'; \ b='tests/expressions_constants.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/exp.sh.log: tests/exp.sh @p='tests/exp.sh'; \ b='tests/exp.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/i-beam-euler-bernoulli.sh.log: tests/i-beam-euler-bernoulli.sh @p='tests/i-beam-euler-bernoulli.sh'; \ b='tests/i-beam-euler-bernoulli.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/iaea-pwr.sh.log: tests/iaea-pwr.sh @p='tests/iaea-pwr.sh'; \ b='tests/iaea-pwr.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/iterative.sh.log: tests/iterative.sh @p='tests/iterative.sh'; \ b='tests/iterative.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/fit.sh.log: tests/fit.sh @p='tests/fit.sh'; \ b='tests/fit.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/file.sh.log: tests/file.sh @p='tests/file.sh'; \ b='tests/file.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/func_min.sh.log: tests/func_min.sh @p='tests/func_min.sh'; \ b='tests/func_min.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/function_algebraic.sh.log: tests/function_algebraic.sh @p='tests/function_algebraic.sh'; \ b='tests/function_algebraic.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/function_data.sh.log: tests/function_data.sh @p='tests/function_data.sh'; \ b='tests/function_data.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/function_file.sh.log: tests/function_file.sh @p='tests/function_file.sh'; \ b='tests/function_file.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/function_mesh.sh.log: tests/function_mesh.sh @p='tests/function_mesh.sh'; \ b='tests/function_mesh.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/function_vectors.sh.log: tests/function_vectors.sh @p='tests/function_vectors.sh'; \ b='tests/function_vectors.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/hello_mpi.sh.log: tests/hello_mpi.sh @p='tests/hello_mpi.sh'; \ b='tests/hello_mpi.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/integral.sh.log: tests/integral.sh @p='tests/integral.sh'; \ b='tests/integral.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/lag.sh.log: tests/lag.sh @p='tests/lag.sh'; \ b='tests/lag.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/laplace2d.sh.log: tests/laplace2d.sh @p='tests/laplace2d.sh'; \ b='tests/laplace2d.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/lebesgue.sh.log: tests/lebesgue.sh @p='tests/lebesgue.sh'; \ b='tests/lebesgue.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/los-alamos.sh.log: tests/los-alamos.sh @p='tests/los-alamos.sh'; \ b='tests/los-alamos.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/map-cube.sh.log: tests/map-cube.sh @p='tests/map-cube.sh'; \ b='tests/map-cube.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/materials.sh.log: tests/materials.sh @p='tests/materials.sh'; \ b='tests/materials.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/mesh.sh.log: tests/mesh.sh @p='tests/mesh.sh'; \ b='tests/mesh.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/moment-of-inertia.sh.log: tests/moment-of-inertia.sh @p='tests/moment-of-inertia.sh'; \ b='tests/moment-of-inertia.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/nafems-le1.sh.log: tests/nafems-le1.sh @p='tests/nafems-le1.sh'; \ b='tests/nafems-le1.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/nafems-le10.sh.log: tests/nafems-le10.sh @p='tests/nafems-le10.sh'; \ b='tests/nafems-le10.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/nafems-le11.sh.log: tests/nafems-le11.sh @p='tests/nafems-le11.sh'; \ b='tests/nafems-le11.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/nafems-t1-4.sh.log: tests/nafems-t1-4.sh @p='tests/nafems-t1-4.sh'; \ b='tests/nafems-t1-4.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/nafems-t2-3.sh.log: tests/nafems-t2-3.sh @p='tests/nafems-t2-3.sh'; \ b='tests/nafems-t2-3.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/neutron_diffusion_src.sh.log: tests/neutron_diffusion_src.sh @p='tests/neutron_diffusion_src.sh'; \ b='tests/neutron_diffusion_src.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/neutron_diffusion_keff.sh.log: tests/neutron_diffusion_keff.sh @p='tests/neutron_diffusion_keff.sh'; \ b='tests/neutron_diffusion_keff.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/neutron-fully-mirrored.sh.log: tests/neutron-fully-mirrored.sh @p='tests/neutron-fully-mirrored.sh'; \ b='tests/neutron-fully-mirrored.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/parallelepiped.sh.log: tests/parallelepiped.sh @p='tests/parallelepiped.sh'; \ b='tests/parallelepiped.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/petsc_options.sh.log: tests/petsc_options.sh @p='tests/petsc_options.sh'; \ b='tests/petsc_options.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/pipe.sh.log: tests/pipe.sh @p='tests/pipe.sh'; \ b='tests/pipe.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/point-kinetics.sh.log: tests/point-kinetics.sh @p='tests/point-kinetics.sh'; \ b='tests/point-kinetics.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/print.sh.log: tests/print.sh @p='tests/print.sh'; \ b='tests/print.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/ray-effect.sh.log: tests/ray-effect.sh @p='tests/ray-effect.sh'; \ b='tests/ray-effect.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/reactions.sh.log: tests/reactions.sh @p='tests/reactions.sh'; \ b='tests/reactions.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/reactions-elastic.sh.log: tests/reactions-elastic.sh @p='tests/reactions-elastic.sh'; \ b='tests/reactions-elastic.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/reed.sh.log: tests/reed.sh @p='tests/reed.sh'; \ b='tests/reed.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/solve.sh.log: tests/solve.sh @p='tests/solve.sh'; \ b='tests/solve.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/spinning-disk.sh.log: tests/spinning-disk.sh @p='tests/spinning-disk.sh'; \ b='tests/spinning-disk.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/statically_indeterminate_reaction.sh.log: tests/statically_indeterminate_reaction.sh @p='tests/statically_indeterminate_reaction.sh'; \ b='tests/statically_indeterminate_reaction.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/symmetry.sh.log: tests/symmetry.sh @p='tests/symmetry.sh'; \ b='tests/symmetry.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/t21.sh.log: tests/t21.sh @p='tests/t21.sh'; \ b='tests/t21.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/thermal-1d.sh.log: tests/thermal-1d.sh @p='tests/thermal-1d.sh'; \ b='tests/thermal-1d.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/thermal-2d.sh.log: tests/thermal-2d.sh @p='tests/thermal-2d.sh'; \ b='tests/thermal-2d.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/thermal-3d.sh.log: tests/thermal-3d.sh @p='tests/thermal-3d.sh'; \ b='tests/thermal-3d.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/thermal-slab-no-k.sh.log: tests/thermal-slab-no-k.sh @p='tests/thermal-slab-no-k.sh'; \ b='tests/thermal-slab-no-k.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/thermal-slab-wrong-bc.sh.log: tests/thermal-slab-wrong-bc.sh @p='tests/thermal-slab-wrong-bc.sh'; \ b='tests/thermal-slab-wrong-bc.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/thermal-radiation.sh.log: tests/thermal-radiation.sh @p='tests/thermal-radiation.sh'; \ b='tests/thermal-radiation.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/transient-mesh.sh.log: tests/transient-mesh.sh @p='tests/transient-mesh.sh'; \ b='tests/transient-mesh.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/trig.sh.log: tests/trig.sh @p='tests/trig.sh'; \ b='tests/trig.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/two-cubes-isotropic.sh.log: tests/two-cubes-isotropic.sh @p='tests/two-cubes-isotropic.sh'; \ b='tests/two-cubes-isotropic.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/two-cubes-orthotropic.sh.log: tests/two-cubes-orthotropic.sh @p='tests/two-cubes-orthotropic.sh'; \ b='tests/two-cubes-orthotropic.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/vector.sh.log: tests/vector.sh @p='tests/vector.sh'; \ b='tests/vector.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/wilson.sh.log: tests/wilson.sh @p='tests/wilson.sh'; \ b='tests/wilson.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/xfail-few-properties-ortho-young.sh.log: tests/xfail-few-properties-ortho-young.sh @p='tests/xfail-few-properties-ortho-young.sh'; \ b='tests/xfail-few-properties-ortho-young.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/xfail-few-properties-ortho-poisson.sh.log: tests/xfail-few-properties-ortho-poisson.sh @p='tests/xfail-few-properties-ortho-poisson.sh'; \ b='tests/xfail-few-properties-ortho-poisson.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/xfail-few-properties-ortho-shear.sh.log: tests/xfail-few-properties-ortho-shear.sh @p='tests/xfail-few-properties-ortho-shear.sh'; \ b='tests/xfail-few-properties-ortho-shear.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) tests/xfail-data-variable.sh.log: tests/xfail-data-variable.sh @p='tests/xfail-data-variable.sh'; \ b='tests/xfail-data-variable.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile $(MANS) $(DATA) config.h all-local installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_docDATA install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_docDATA uninstall-man uninstall-man: uninstall-man1 .MAKE: $(am__recursive_targets) all check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ am--refresh check check-TESTS check-am clean clean-cscope \ clean-generic cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip dist-zstd distcheck distclean \ distclean-generic distclean-hdr distclean-tags distcleancheck \ distdir distuninstallcheck dvi dvi-am html html-am info \ info-am install install-am install-data install-data-am \ install-dist_docDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man1 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \ uninstall uninstall-am uninstall-dist_docDATA uninstall-man \ uninstall-man1 .PRECIOUS: Makefile all-local: cp -r src/feenox$(EXEEXT) . # clean-local: code-coverage-clean # distclean-local: code-coverage-dist-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: feenox-1.1/compile0000755000175000017500000001635014773607171011160 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN* | MSYS*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: feenox-1.1/config.sub0000755000175000017500000010511614773607171011564 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2022 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2022-01-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 basic_os=$field2 ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 basic_os= ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; convex-c1) basic_machine=c1-convex basic_os=bsd ;; convex-c2) basic_machine=c2-convex basic_os=bsd ;; convex-c32) basic_machine=c32-convex basic_os=bsd ;; convex-c34) basic_machine=c34-convex basic_os=bsd ;; convex-c38) basic_machine=c38-convex basic_os=bsd ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next case $basic_os in openstep*) ;; nextstep*) ;; ns2*) basic_os=nextstep2 ;; *) basic_os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x$basic_os != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os in linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ | linux-musl* | linux-relibc* | linux-uclibc* ) ;; uclinux-uclibc* ) ;; -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 exit 1 ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; vxworks-simlinux | vxworks-simwindows | vxworks-spe) ;; nto-qnx*) ;; os2-emx) ;; *-eabi* | *-gnueabi*) ;; -*) # Blank kernel with real OS is always fine. ;; *-*) echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: feenox-1.1/README0000644000175000017500000006460214773607176010472 00000000000000FeenoX: A cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool - 1 About FeenoX - 1.1 Extents - 1.1.1 Examples - 1.1.2 Tutorials - 1.1.3 Tests - 1.2 Capabilities - 1.3 Usefulness - 2 Documentation - 3 Quickstart - 3.1 Download - 3.2 Git repository - 4 Licensing - 4.1 Contributing - 5 Further information [DOI] [1 About FeenoX]: #about-feenox [1.1 Extents]: #extents [1.1.1 Examples]: #examples [1.1.2 Tutorials]: #tutorials [1.1.3 Tests]: #tests [1.2 Capabilities]: #capabilities [1.3 Usefulness]: #usefulness [2 Documentation]: #documentation [3 Quickstart]: #quickstart [3.1 Download]: #download [3.2 Git repository]: #git-repository [4 Licensing]: #licensing [4.1 Contributing]: #sec:contributing [5 Further information]: #further-information [DOI]: https://joss.theoj.org/papers/10.21105/joss.05846/status.svg [1]: https://doi.org/10.21105/joss.05846 About FeenoX FeenoX is a cloud-first free and open source tool to solve engineering-related problems using a computer (or many computers in parallel) with a particular design basis. Choose your background for further details about the what, how and whys: - Industry Engineer - Unix Hacker - Academic Professor See the following paper for a brief summary (and to cite FeenoX in your work): - Theler J, “FeenoX: a cloud-first finite-element(ish) computational engineering tool,” Journal of Open Source Software, vol. 9, no. 95, p. 5846, Mar. 2024, doi: 10.21105/joss.05846. News FeenoX is now in Debian! You can install FeenoX from APT sudo apt install feenox Check progress on the following pages: - https://packages.debian.org/unstable/science/feenox - https://tracker.debian.org/pkg/feenox - https://buildd.debian.org/status/package.php?p=feenox Open-source web-based UX for FeenoX. Take a look at SunCAE for an example of how to write a front end for FeenoX. IB students Remember that your first read should be the 0-th tutorial, Setting up your workspace [FeenoX]: https://seamplex.com/feenox [cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first [free and open source]: #licensing [engineering-related problems]: #extents [many computers in parallel]: https://www.seamplex.com/feenox/doc/sds.html#sec:scalability [particular design basis]: https://seamplex.com/feenox/doc/sds.html [Industry Engineer]: ./README4engineers.md [Unix Hacker]: ./README4hackers.md [Academic Professor]: ./README4academics.md [cite FeenoX in your work]: ./doc/FAQ.md#how-should-i-cite-feenox [10.21105/joss.05846]: https://doi.org/10.21105/joss.05846 [SunCAE]: https://www.seamplex.com/suncae [Setting up your workspace]: https://www.seamplex.com/feenox/doc/tutorials/000-setup/ Extents Examples - Basic mathematics - Systems of ODEs/DAEs - Laplace’s equation - Heat conduction - Linear elasticity - Modal analysis - Neutron diffusion - Neutron SN [Basic mathematics]: https://seamplex.com/feenox/examples/basic.html [Systems of ODEs/DAEs]: https://seamplex.com/feenox/examples/daes.html [Laplace’s equation]: https://seamplex.com/feenox/examples/laplace.html [Heat conduction]: https://seamplex.com/feenox/examples/thermal.html [Linear elasticity]: https://seamplex.com/feenox/examples/mechanical.html [Modal analysis]: https://seamplex.com/feenox/examples/modal.html [Neutron diffusion]: https://seamplex.com/feenox/examples/neutron_diffusion.html [Neutron SN]: https://seamplex.com/feenox/examples/neutron_sn.html Tutorials 0. Setting up your workspace 1. Overview: the tensile test case 2. Fun & games: solving mazes with PDES instead of AI 3. Heat conduction [2]: https://www.seamplex.com/feenox/doc/tutorials/000-setup [Overview: the tensile test case]: https://www.seamplex.com/feenox/doc/tutorials/110-tensile-test [Fun & games: solving mazes with PDES instead of AI]: https://www.seamplex.com/feenox/doc/tutorials/120-mazes [3]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal Tests The tests directory in the repository has hundreds of - grep-able examples - unit and regression tests, - (crude) mathematical & code verification tests (as in “are we solving right the equations?”), - subdirectories with further case studies - mms - thermal - 2d - 3d - nafems - le10 [tests]: https://github.com/seamplex/feenox/tree/main/tests [unit and regression tests]: https://seamplex.com/feenox/doc/compilation.html#sec:test-suite [mms]: https://github.com/seamplex/feenox/tree/main/tests/mms [thermal]: https://github.com/seamplex/feenox/tree/main/tests/mms/thermal [2d]: https://github.com/seamplex/feenox/tree/main/tests/mms/thermal/2d [3d]: https://github.com/seamplex/feenox/tree/main/tests/mms/thermal/3d [nafems]: https://github.com/seamplex/feenox/tree/main/tests/nafems [le10]: https://github.com/seamplex/feenox/tree/main/tests/nafems/le10 Capabilities - Both free as in “free speech” and in “free beer” - The problem to solve is defined through a syntactically-sugared self-descriptive English-like plain-text input file that should resemble the original human-friendly problem formulation as much as possible: - no need to recompile if the problem changes (FeenoX is a program, not a library) - nouns are definitions and verbs are instructions - simple problems need simple inputs - everything is an expression - 100%-defined user output (no PRINT nor WRITE_RESULTS instructions, no output) - Cloud-first design (cloud friendliness is not enough) - MPI parallelization - Leverages high-quality well-established free and open source libraries to solve… - general mathematical problems using GNU GSL - sets of ODEs/DAEs using SUNDIALS - PDEs formulated with the finite element method - reads mesh in Gmsh format - uses PETSc/SLEPc to solve - linear systems (KSP) - non-linear systems (SNES) - time-dependent systems (TS) - generalized eigen-value problems (EPS) - writes results in Gmsh’s .msh format and/or Paraview’s VTU/VTK formats - Focuses on flexibility, especially when defining non-uniform multi-solid material properties from ASME tables - Follows the Unix programming philosophy - rule of separation - rule of silence - rule of economy - Each PDE (i.e. from Laplace downward in the list of examples) is implemented in a subdirectory within src/pde of the source tree - any subdirectory can be removed if a particular PDE is not needed - any subdirectory can be used as a template to add a new PDE to the capabilities - Space, time and/or solution-dependent material properties and boundary conditions - algebraic expressions, and/or - point-wise interpolated data - Command-line argument expansion for - increased flexibility, - parametric sweeps, and/or - optimization loops - Steady-state, [quasi-static] and/or transient problems - Linear and non-linear problems - Possibility to verify the code using the Method of Manufactured Solutions - Separate repository to profile and study code performance using Google’s benchmark library [problem]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem [syntactically-sugared]: https://seamplex.com/feenox/doc/sds.html#sec:syntactic [self-descriptive English-like plain-text input file]: https://seamplex.com/feenox/doc/sds.html#sec:input [resemble the original human-friendly problem formulation]: https://seamplex.com/feenox/doc/sds.html#sec:matching-formulations [no need to recompile if the problem changes]: https://seamplex.com/feenox/doc/sds.html#sec:introduction [nouns are definitions and verbs are instructions]: https://seamplex.com/feenox/doc/sds.html#sec:nouns_verbs [simple problems need simple inputs]: https://seamplex.com/feenox/doc/sds.html#sec:simple [everything is an expression]: https://seamplex.com/feenox/doc/sds.html#sec:expression [100%-defined user output]: https://seamplex.com/feenox/doc/sds.html#sec:output [WRITE_RESULTS]: https://www.seamplex.com/feenox/doc/feenox-manual.html#write_results [Cloud-first design]: https://seamplex.com/feenox/doc/sds.html#cloud-first [MPI parallelization]: https://seamplex.com/feenox/doc/sds.html#sec:scalability [general mathematical problems]: https://seamplex.com/feenox/examples/basic.html [GNU GSL]: https://www.gnu.org/software/gsl/ [sets of ODEs/DAEs]: https://seamplex.com/feenox/examples/daes.html [SUNDIALS]: https://computing.llnl.gov/projects/sundials [PDEs]: https://github.com/seamplex/feenox/tree/main/src/pdes [finite element method]: https://en.wikipedia.org/wiki/Finite_element_method [Gmsh]: http://gmsh.info/ [PETSc]: https://petsc.org/release/ [SLEPc]: https://slepc.upv.es/ [KSP]: https://petsc.org/release/manual/ksp/ [SNES]: https://petsc.org/release/manual/snes/ [TS]: https://petsc.org/release/manual/ts/ [EPS]: https://slepc.upv.es/documentation/current/docs/manualpages/EPS/index.html [.msh]: http://gmsh.info/doc/texinfo/gmsh.html#MSH-file-format [Paraview]: https://www.paraview.org/ [VTU/VTK]: https://docs.vtk.org/en/latest/design_documents/VTKFileFormats.html [flexibility]: https://seamplex.com/feenox/doc/sds.html#sec:flexibility [non-uniform multi-solid material properties from ASME tables]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal/#from-a-steady-state [Unix programming philosophy]: https://seamplex.com/feenox/doc/sds.html#sec:unix [rule of separation]: https://seamplex.com/feenox/doc/sds.html#sec:separation [rule of silence]: https://seamplex.com/feenox/doc/sds.html#sec:silence [rule of economy]: https://seamplex.com/feenox/doc/sds.html#sec:economy [is implemented in a subdirectory]: https://seamplex.com/feenox/doc/sds.html#sec:extensibility [Space]: https://github.com/seamplex/feenox/blob/main/tests/thermal-two-squares-material-explicit-space.fee [time]: https://github.com/seamplex/feenox/blob/main/tests/nafems-t3-1d.fee [material properties]: https://github.com/seamplex/feenox/blob/main/tests/wilson-2d.fee [boundary conditions]: https://github.com/seamplex/feenox/blob/main/tests/radiation-as-convection-celsius.fee [algebraic expressions]: https://seamplex.com/feenox/examples/mechanical.html#parallelepiped-whose-youngs-modulus-is-a-function-of-the-temperature [point-wise interpolated data]: https://seamplex.com/feenox/examples/mechanical.html#temperature-dependent-material-properties [Command-line argument expansion]: https://seamplex.com/feenox/doc/sds.html#sec:run-time-arguments [increased flexibility]: https://seamplex.com/feenox/examples/basic.html#computing-the-derivative-of-a-function-as-a-unix-filter [parametric sweeps]: https://seamplex.com/feenox/doc/sds.html#sec:parametric [optimization loops]: https://seamplex.com/feenox/doc/sds.html#optimization-loops [Steady-state]: https://www.seamplex.com/feenox/doc/tutorials/120-mazes/#solving-the-steady-state-laplace-equation [transient problems]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal/#sec:transient [Linear]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal/#linear-steady-state-problems [non-linear]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal/#non-linear-state-state-problems [Method of Manufactured Solutions]: https://github.com/seamplex/feenox/tree/main/tests/mms [repository to profile and study code performance]: https://github.com/seamplex/feenox-benchmark [Google’s benchmark library]: https://github.com/google/benchmark Usefulness - CAEplex: a web-based thermo-mechanical solver running on the cloud - Non-conformal mesh mapping - ASME stress linearization for pressurized pipes and vessels - Assessment of material properties from tabulated sources - Environmentally-assisted fatigue analysis in dissimilar interfaces of nuclear pipes - Neutron transport in the cloud - Solving mazes without AI - Parametric NAFEMS LE10 benchmark: comparison of resource consumption for different FEA programs - Some Youtube videos [CAEplex]: https://www.caeplex.com [web-based thermo-mechanical solver running on the cloud]: https://www.youtube.com/watch?v=DOnoXo_MCZg [Non-conformal mesh mapping]: https://github.com/gtheler/feenox-non-conformal-mesh-interpolation [ASME stress linearization for pressurized pipes and vessels]: https://github.com/seamplex/pipe-linearize [Assessment of material properties from tabulated sources]: https://seamplex.com/feenox/examples/basic.html#on-the-evaluation-of-thermal-expansion-coefficients [Environmentally-assisted fatigue analysis in dissimilar interfaces of nuclear pipes]: https://github.com/seamplex/piping-asme-fatigue [Neutron transport in the cloud]: https://seamplex.com/thesis/html/front/abstract.html [Solving mazes without AI]: https://www.linkedin.com/feed/update/urn:li:activity:6973982270852325376/ [Parametric NAFEMS LE10 benchmark: comparison of resource consumption for different FEA programs]: https://seamplex.com/feenox/tests/nafems/le10/ [Some Youtube videos]: https://seamplex.com/feenox/doc/#sec:youtube Documentation Browse through the documentation index and/or the doc subdirectory of the Github repository for - FAQs, including what FeenoX means - Manual - Description - Software Design Requirements - Software Design Specification - Unix man page (accessible through man feenox after installation) - History - Compilation guide - Programming guide [documentation index]: doc [doc]: https://github.com/seamplex/feenox/tree/main/doc [Github repository]: https://github.com/seamplex/feenox/ [FAQs]: ./doc/FAQ.md [what FeenoX means]: https://seamplex.com/feenox/doc/FAQ.html#what-does-feenox-mean [Manual]: https://seamplex.com/feenox/doc/feenox-manual.html [Description]: https://www.seamplex.com/feenox/doc/feenox-desc.html [Software Design Requirements]: https://seamplex.com/feenox/doc/srs.html [Software Design Specification]: https://seamplex.com/feenox/doc/sds.html [Unix man page]: https://seamplex.com/feenox/doc/feenox.1.html [History]: ./doc/history.md [Compilation guide]: ./doc/compilation.md [Programming guide]: ./doc/programming.md Quickstart Download FeenoX is distributed under the terms of the GNU General Public License version 3 or (at your option) any later version. ----------------------------- ----------------------------------------------------- Debian packages https://packages.debian.org/unstable/science/feenox GNU/Linux binaries https://www.seamplex.com/feenox/dist/linux Source tarballs https://www.seamplex.com/feenox/dist/src Github repository https://github.com/seamplex/feenox/ ----------------------------- ----------------------------------------------------- - FeenoX is cloud-first. It was designed to run on servers. - Be aware that FeenoX does not have a GUI. Read the documentation, especially the description and the FAQs. Ask for help on the GitHub discussions page if you do now understand what this bullet means. - Debian/Ubuntu packages are unofficial, i.e. they are not available in apt repositories. They contain dynamically-linked binaries and their dependencies are hard-coded for each Debian/Ubuntu release. Make sure you get the right .deb for your release (i.e. bookworm/bullseye for Debian, kinetic/focal for Ubuntu). - Generic GNU/Linux binaries are provided as statically-linked executables for convenience. They do not support MUMPS nor MPI and have only basic optimization flags. Please compile from source for high-end applications. See detailed compilation instructions. - Try to avoid Windows as much as you can. The binaries are provided as transitional packages for people that for some reason still use such an outdated, anachronous, awful and invasive operating system. They are compiled with Cygwin and have no support whatsoever. Really, really, get rid of Windows ASAP. “It is really worth any amount of time and effort to get away from Windows if you are doing computational science.” https://lists.mcs.anl.gov/pipermail/petsc-users/2015-July/026388.html [GNU General Public License version 3]: https://www.gnu.org/licenses/gpl-3.0.en.html [cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first [documentation]: https://seamplex.com/feenox/doc/ [description]: https://www.seamplex.com/feenox/doc/feenox-desc.html [4]: https://seamplex.com/feenox/doc/FAQ.html [GitHub discussions page]: https://github.com/seamplex/feenox/discussions [detailed compilation instructions]: https://seamplex.com/feenox/doc/compilation.html [Cygwin]: http://cygwin.com/ Git repository To compile the Git repository, proceed as follows. This procedure does need git and autoconf but new versions can be pulled and recompiled easily. If something goes wrong and you get an error, do not hesitate to ask in FeenoX’s discussion page. 1. Install mandatory dependencies sudo apt-get update sudo apt-get install git build-essential make automake autoconf libgsl-dev If you cannot install libgsl-dev but still have git and the build toolchain, you can have the configure script to download and compile it for you. See point 4 below. 2. Install optional dependencies (of course these are optional but recommended) sudo apt-get install libsundials-dev petsc-dev slepc-dev 3. Clone Github repository git clone https://github.com/seamplex/feenox 4. Bootstrap, configure, compile & make cd feenox ./autogen.sh ./configure make -j4 If you cannot (or do not want to) use libgsl-dev from a package repository, call configure with --enable-download-gsl: ./configure --enable-download-gsl If you do not have Internet access, get the tarball manually, copy it to the same directory as configure and run again. See the detailed compilation instructions for an explanation. 5. Run test suite (optional) make check 6. Install the binary system wide (optional) sudo make install To stay up to date, pull and then autogen, configure and make (and optionally install): git pull ./autogen.sh; ./configure; make -j4 sudo make install See the download page and the compilation guide for detailed information. [discussion page]: https://github.com/seamplex/feenox/discussions [5]: compilation.md [download page]: https://seamplex.com/feenox/download.html [compilation guide]: ./doc/compilation.md Licensing FeenoX is distributed under the terms of the GNU General Public License version 3 or (at your option) any later version. The following text was borrowed from the Gmsh documentation. Replacing “Gmsh” with “FeenoX” (using Unix’s sed) gives: FeenoX is “free software”; this means that everyone is free to use it and to redistribute it on a free basis. FeenoX is not in the public domain; it is copyrighted and there are restrictions on its distribution, but these restrictions are designed to permit everything that a good cooperating citizen would want to do. What is not allowed is to try to prevent others from further sharing any version of FeenoX that they might get from you. Specifically, we want to make sure that you have the right to give away copies of FeenoX, that you receive source code or else can get it if you want it, that you can change FeenoX or use pieces of FeenoX in new free programs, and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute copies of FeenoX, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. Also, for our own protection, we must make certain that everyone finds out that there is no warranty for FeenoX. If FeenoX is modified by someone else and passed on, we want their recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation. The precise conditions of the license for FeenoX are found in the General Public License that accompanies the source code. Further information about this license is available from the GNU Project webpage http://www.gnu.org/copyleft/gpl-faq.html. FeenoX is licensed under the terms of the GNU General Public License version 3 or, at the user convenience, any later version. This means that users get the four essential freedoms:[1] 0. The freedom to run the program as they wish, for any purpose. 1. The freedom to study how the program works, and change it so it does their computing as they wish. 2. The freedom to redistribute copies so they can help others. 3. The freedom to distribute copies of their modified versions to others. So a free program has to be open source, but it also has to explicitly provide the four freedoms above both through the written license and through appropriate mechanisms to get, modify, compile, run and document these modifications using well-established and/or reasonable straightforward procedures. That is why licensing FeenoX as GPLv3+ also implies that the source code and all the scripts and makefiles needed to compile and run it are available for anyone that requires it (i.e. it is compiled with ./configure && make). Anyone wanting to modify the program either to fix bugs, improve it or add new features is free to do so. And if they do not know how to program, the have the freedom to hire a programmer to do it without needing to ask permission to the original authors. Even more, the documentation is released under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License so these new (or modified) features can be properly documented as well. Nevertheless, since these original authors are the copyright holders, they still can use it to either enforce or prevent further actions from the users that receive FeenoX under the GPLv3+. In particular, the license allows re-distribution of modified versions only if a. they are clearly marked as different from the original, and b. they are distributed under the same terms of the GPLv3+. There are also some other subtle technicalities that need not be discussed here such as - what constitutes a modified version (which cannot be redistributed under a different license) - what is an aggregate (in which each part be distributed under different licenses) - usage over a network and the possibility of using AGPL instead of GPL to further enforce freedom These issues are already taken into account in the FeenoX licensing scheme. It should be noted that not only is FeenoX free and open source, but also all of the libraries it depends on (and their dependencies) also are. It can also be compiled using free and open source build tool chains running over free and open source operating systems. [1] There are some examples of pieces of computational software which are described as “open source” in which even the first of the four freedoms is denied. The most iconic case is that of Android, whose sources are readily available online but there is no straightforward way of updating one’s mobile phone firmware with a customized version, not to mention vendor and hardware lock ins and the possibility of bricking devices if something unexpected happens. In the nuclear industry, it is the case of a Monte Carlo particle-transport program that requests users to sign an agreement about the objective of its usage before allowing its execution. The software itself might be open source because the source code is provided after signing the agreement, but it is not free (as in freedom) at all. [GNU General Public License]: http://www.gnu.org/copyleft/gpl.html [Gmsh documentation]: http://gmsh.info/doc/texinfo/gmsh.html#Copying-conditions [General Public License]: https://github.com/seamplex/feenox/blob/master/COPYING [6]: https://www.gnu.org/licenses/gpl-3.0 [the documentation]: https://seamplex.com/feenox/doc/ [Creative Commons Attribution-ShareAlike 4.0 International License]: https://creativecommons.org/licenses/by-sa/4.0/ [AGPL]: https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License Contributing Contributions from hackers and/or academics are welcome, especially new types of PDEs and new formulations of existing PDEs. For elliptic operators feel free to use the Laplace equation at src/pdes/laplace as a template. 1. Read the Programming Guide. 2. Browse Github discussions and open a new thread explaining what you want to do and/or asking for help. 3. Fork the Git repository under your Github account 4. Create a pull request, including - code, - documentation, and - tests. 5. Follow up the review procedure. Note that - It is mandatory to observe the Code of Conduct. - The contributed code has to be compatible with the GPLv3+ license. - Each author keeps the copyright of the contribution. - You can ask! [hackers]: README4hackers.html [academics]: README4academics.html [src/pdes/laplace]: https://github.com/seamplex/feenox/tree/main/src/pdes/laplace [7]: https://seamplex.com/feenox/doc/programming.html [Github discussions]: https://github.com/seamplex/feenox/discussions [Git repository]: https://github.com/seamplex/feenox/ [Code of Conduct]: https://seamplex.com/feenox/doc/CODE_OF_CONDUCT.html [GPLv3+ license]: https://www.seamplex.com/feenox/#sec:licensing Further information Home page: https://www.seamplex.com/feenox Repository: https://github.com/seamplex/feenox Bug reporting: https://github.com/seamplex/feenox/issues Discussions: https://github.com/seamplex/feenox/discussions Follow us: YouTube LinkedIn Github ------------------------------------------------------------------------ FeenoX is licensed under GNU GPL version 3 or (at your option) any later version. FeenoX is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. [YouTube]: https://www.youtube.com/channel/UCC6SzVLxO8h6j5rLlfCQPhA [LinkedIn]: https://www.linkedin.com/company/seamplex/ [Github]: https://github.com/seamplex [GNU GPL version 3]: http://www.gnu.org/copyleft/gpl.html